基于Modbus规约的智能仪表与PC机通信技术实现

基于Modbus规约的智能仪表与PC机通信技术实现

ID:37734192

大小:24.00 KB

页数:3页

时间:2019-05-29

基于Modbus规约的智能仪表与PC机通信技术实现_第1页
基于Modbus规约的智能仪表与PC机通信技术实现_第2页
基于Modbus规约的智能仪表与PC机通信技术实现_第3页
资源描述:

《基于Modbus规约的智能仪表与PC机通信技术实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于Modbus规约的智能仪表与PC机通信技术实现2007-01-28   来源:西部工控网   浏览:828摘要:本文主要介绍ModbusRTU规约,及VB6.0编程环境下RS-485串口实现主控台PC机与智能仪表间基与该规约通信具体实现方法。关键词:ModbusRTU;通信协议;RS-485;CRC校验一、引言时代进步,越来越多企业开始向生产和管理自动化转变。各种智能仪表不断应用到生产生活各个领域。工业控制方面,RS-485总线平衡差分传输特性具有干扰性好、传输距离远、有较大级连能力等特点,非常适合于组成工业级多机通信系统。ModBusRTU规约是Modicon公司注

2、册商标,是目前国际智能化仪表普遍采用主流通讯协议之一。各个工业仪器仪表大量使用今天,ModbusRTU协议和RS-485总线到了最为广泛应用。本文主要从应用角度介绍一个工业控制系统中,实现该技术具体方案。二、ModbusRTU通讯协议简介1、ModbusRTU协议简介ModBusRTU通讯协议是Modicon公司注册商标。采用主从问答方式工作,其规范已国际互联网上公布,是目前国际智能化仪表普遍采用主流通讯协议之一。目前,国内许多生产商已他们产品和系统中遵循该协议标准。该协议有两种传输模式即RTU模式和ASCII模式。其中RTU模式信息帧中8位数据包括两个4位16进制字符,

3、相ASCII模式,RTU模式表达相同信息需要较少位数,且相同通讯速率下具有更大数据流量。通常情况下,一般工业智能仪器仪表都是采用RTU模式Modbus规约。2、Modbus通信格式数据格式:址码功能码数据区错误校检 数据长度:1字节1字节N字节16位CRC码当通讯命令由发送设备(上位机)发送至接收设备(下位机)时,符合相应址码下位机就会响应命令,并约定通信协议读取信息、数据校验执行相应功能操作。返回帧结构包含址码、功能码、数据以及CRC校验码。3、上下位机通信帧约定格式其中仪表址使用电压表中是为一个字节定义,最多到256个。下位机与上位机通信波特率一般可自由设定,但必须保

4、证上下机通信波特率对应匹配。三、上位机通信软件设计方案上位机通信软件采用VB6.0开发环境。VB6.0中对串口进行编程可以使用Mscomm控件加快开发进度。该控件主为RS-232通用串口而设计。利用PC上现有RS-232接口,通常是使用RS232/485转换器。这些转换器一般逻辑门电路控制RXD、TXD和GND三针信号,自动对半双工或全双工485串口进行控制。转换器,我们就可以像开发通用RS-232串口一样来快速开发基于RS-485串口上位机通信软件。1、初始化程序设计初始化程序中,主设定好整个帧结构命令数组、传输波特率、以及一些必须串口初始设定。具体操作如下面代码说明D

5、imTcommand(7)AsByte‘开辟命令帧帧长度数组MSComm.CommPort=1‘设定需要使用串口,当然这里可以用输入方式灵活设定。暂定为1#口MSComm.Settings="2400,n,8,1"‘设定传输波特率和校验方式MSComm.InBufferSize=1024‘开辟数据缓冲区MSComm.InputMode=comInputModeBinary‘设定为二进制数据流方式MSComm.InputLen=0‘一次全部读入所需要数据……上面代码一般都是串口初始化必须进行设定几个部分。个人需要可以VB6.0中做一个初始化界面,对各个参数(如波特率、使用串

6、口等)进行自由设定和更改,以提高初始化设定灵活性和通用性。2、命令字发送命令字发送应该严格Modbus规约所设计帧格式和上下位机该规约基础上所定义通信协议。参考表1通信协议顺序,编写如下VB代码来实现命令发送。Tcommand(0)=address‘address为设定接受址输入变量Tcommand(1)=Val("&h"+"03")……(其他通信协议,并计算CRC校验代码)Tcommand(6)=CRC(1)Tcommand(7)=CRC(0)frmcontrol.MSComm.Output=Tcommand……3、上位机接收和数据处理表2回送通信协议,上位机解析所接受

7、数据,并进行必要处理。一般而言从下位机发送上来数据都是有一定帧长度。特别是一些固化好智能仪表。最好方法是通信回送帧长度,上位机程序中分别开辟两个同样长度数组。一个作为接受数组,用来一次性接收串口缓冲区中数据;另一个为安全数组,用来复制接收数组中数据并进行解析。这样可以提高整个系统容错能力。LoopUntilfrmcontrol.MSComm.InBufferCount=9InByte=frmcontrol.MSComm.InputFori=0To(count-1)InSafeArray(i)=InByte(i)Nexti其代码

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。