Modbus通讯协议在阀门电动装置测试系统中的应用(2)
发布时间:2021-06-05
发布时间:2021-06-05
EDI技术在现代物流管理中的应用
38
InstrumentTechniqueandSensor
Apr12007
的查询-响应机制,只有主站发出查询时,从站才能给出响应,从站不能主动发送数据。主站可以向某个从站发出查询,也可以向所有从站广播信息。从站只响应单独发给它的查询,而不响应广播消息[2]。
2.1.1 Modbus协议传送方式
Modbus通讯协议有2种传送方式:RTU方式和ASCII方式。RTU模式:当控制器设为在Modbus网络上以RTU(远程终端单
收到令牌后,对照令牌的地址号与该单元地址进行判断,得知令牌是该单元的
,此时总线处于接收数据状态。此单元开始发送信息,发送的信息共158个字节。第1个字节和第2个字节分别表示起始标志符和命令符,第3个字节表示数据个数,第4个到第157个字节表示采集的测试数据和CRC校验值,最后一个字节表示结束标志符。如果地址不符,则将令牌转发到下一单元。
2.2 元)模式通信,在消息中的每个8bit字节包含2个4bit的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比
ASCII方式传送更多的数据。ASCII模式:当控制器设为在Mod2bus网络上以ASCII(美国标准信息交换代码)模式通信,,基于软件
,上位机通讯子程序流程图以及
2、图3所示。
中的每个8bit字节都作为2个ASCII[3]2.1.2 ModbusModbus,而
。它描述了一站点请求访问其他站点的过程,如何回应来自其他站点的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式,在一个Modbus网络上各站点的所有设备都必须选择相同的传输模式和串口参数。使用ASCII模式时,消息以冒号字符
(ASCII码3AH)开始,以回车换行符结束(ASCII码0DH,0AH)。
其他域可以使用的传输字符是十六进制的0~9,A~F.网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域)来判断是否发给自己的。消息中字符间发送的时间间隔最长不能超过1s,否则接收的设备将认为传输错误。一个典型消息帧如下所示:
:地址功能代码数据数量数据1…数据NLRC高字节LRC低字节回车
控制中心上位PC机始终在循环发送令牌,当远端单元接
换行
收到与本机地址相同的令牌时,置接收数据标志,接收到自己的令牌后,远端单元开始上传数据到上位PC机,与此同时PC机停止发送令牌并处于接收数据状态,等到接收数据完毕并检验数据合格后发送确认命令到此远端单元,如果没收到数据或数据不合格,发送错误标志到此远端单元。如果收到的令牌与本机地址不同时,程序返回中断入口处,继续执行其他操作。这样可保证远端单元把数据准确地发送到上位PC机。
2.2.1 上位PC机通讯程序设计
使用RTU模式时,消息发送至少要以315个字符时间的停顿间隔开始。传输的第1个域是设备地址。可以使用的传输字符是十六进制的0~9,A~F.网络设备不断侦测网络总线,当第一个域(地址域)接收到,每个设备都进行解码以判断是否发给自己的。在最后一个传输字符之后,一个至少315个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。整个消息帧必须作为一连续的流传输。如果在帧完成之前有超过115个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于315个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的[4]。一典型的消息帧如下所示:
地址功能代码数据数量数据1…数据NCRC高字节
上位机利用VB6.0进行编程,用VB6.0开发串行通讯程序普遍采用2种方法:一种是利用Windows的API函数;另一种是采用VB的通讯控件MSComm.利用API函数编写串行通讯程序较为复杂,需要调用许多繁琐的API函数,而VB6.0的MSComm通讯控件提供了标准的事件处理函数、事件和方法,用户不必了解通信过程中的底层操作和API函数[4],从而比较容易高效地实现串口通信。
采用Modbus通讯协议进行数据传输时,采用了循环冗余码校验(
CRC),编写CRC校验程序有2种办法:一种为计算法;一种为查表法。管理主机一端通常使用计算法,它具有模块代码少、修改灵活、可移植性好的优点。其缺点是计算量大[5]。而现场仪表通常使用查表法,可以大大降低CPU的运算时间。计算方法是依据CRC校验码的产生原理来设计程序。程序如下:
系统的上位机通过令牌传递总线(token2passingbus)方式与远端单元进行通讯。PC机发送的信息为固定4个字节。第1个字节和第2个字节分别表示起始标志符和远端单元的具体地址号,第3个字节表示发送的是令牌还是命令,第4个字节表示结束标志符。下位机采用RTU模式上传数据,具体流程为接