Modbus+协议 - 图文(2)

2019-06-05 00:41

ASCII可打印字符便于故障检测,而且对于用高级语言(如Fortan)编程的主计算机及主PC很适宜。RTU则适用于机器语言编程的计算机和PC主机。

用RTU模式传输的数据是8位二进制字符。如欲转换为ASCII模式,则每个RTU字符首先应分为高位和低位两部分,这两部分各含4位,然后转换成十六进制等量值。用以构成报文的ASCII字符都是十六进制字符。ASCII模式使用的字符虽是RTU模式的两倍,但ASCII数据的译玛和处理更为容易一些,此外,用RTU模式时报文字符必须以连续数据流的形式传送,用ASCII模式,字符之间可产生长达1s的间隔,以适应速度较快的机器。 (2)ModBus的数据校验方式 CRC-16(循环冗余错误校验)

CRC-16错误校验程序如下:报文(此处只涉及数据位,不指起始位、停止位和任选的奇偶校验位)被看作是一个连续的二进制,其最高有效位(MSB)首选发送。报文先与X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示为二进制数11000000000000101。整数商位忽略不记,16位余数加入该报文(MSB先发送),成为2个CRC校验字节。余数中的1全部初始化,以免所有的零成为一条报文被接收。经上述处理而含有CRC字节的报文,若无错误,到接收设备后再被同一多项式(X↑16+X↑15+X↑2+1)除,会得到一个零余数(接收设备核验这个CRC字节,并将其与被传送的CRC比较)。全部运算以2为模(无进位)。

习惯于成串发送数据的设备会首选送出字符的最右位(LSB-最低有效位)。而在生成CRC情况下,发送首位应是被除数的最高有效位MSB。由于在运算中不用进位,为便于操作起见,计算CRC时设MSB在最右位。生成多项式的位序也必须反过来,以保持一致。多项式的MSB略去不记,因其只对商有影响而不影响余数。 生成CRC-16校验字节的步骤如下: ①装如一个16位寄存器,所有数位均为1。

②该16位寄存器的高位字节与开始8位字节进行“异或”运算。运算结果放入这个16位寄存器。 ③把这个16寄存器向右移一位。

第 6 页 共 33 页

④若向右(标记位)移出的数位是1,则生成多项式1010000000000001和这个寄存器进行“异或”运算;若向右移出的数位是0,则返回③。 ⑤重复③和④,直至移出8位。

⑥另外8位与该十六位寄存器进行“异或”运算。

⑦重复③~⑥,直至该报文所有字节均与16位寄存器进行“异或”运算,并移位8次。 ⑧这个16位寄存器的内容即2字节CRC错误校验,被加到报文的最高有效位。

另外,在某些非ModBus通信协议中也经常使用CRC16作为校验手段,而且产生了一些CRC16的变种,他们是使用CRC16多项式X↑16+X↑15+X↑2+1,单首次装入的16位寄存器为0000;使用CRC16的反序X↑16+X↑14+X↑1+1,首次装入寄存器值为0000或FFFFH。 LRC(纵向冗余错误校验)

LRC错误校验用于ASCII模式。这个错误校验是一个8位二进制数,可作为2个ASCII十六进制字节传送。把十六进制字符转换成二进制,加上无循环进位的二进制字符和二进制补码结果生成LRC错误校验(参见图)。这个LRC在接收设备进行核验,并与被传送的LRC进行比较,冒号(:)、回车符号(CR)、换行字符(LF)和置入的其他任何非ASCII十六进制字符在运算时忽略不计。

深圳市科立恒电子有限公司 http://www.szklh.com

详细介绍MODBUS 通讯协议的主要过程,通过DCS 系统与几种PLC 通讯的实例,介绍了MODBUS通讯接口在内蒙古岱海电厂DCS 中的应用。 关键词:

MODBUS;DCS;通讯

随着国内600MW发电机组自动化项目的实施,集散控制系统(DCS)在火电厂热工自动化领域已广泛使用,在众多的使用场合,普遍存在DCS与其他专用控制系统混合使用的情况,这些专用控制系统包括PLC、数据采集器和各种智能仪表。这种使用不仅由于DCS设备价格昂贵,更由于数据采集器,PLC等有比DCS更优的分散性、性价比和控制速度等性能,从而构成规模更大、性价比更优的控制系统,若将该混合系统融合成一个整体,使所有监视、控制都在DCS上进行,就涉及DCS与其他专用控制系统的通讯。本文着重介绍内蒙古岱海电厂#1机组使用MODBUS通讯接口实现上述通讯的方法。

第 7 页 共 33 页

控制系统之间的通讯历来让人望而生畏,如今值得欣慰的是几乎所有控制系统都具有MODBUS 通讯接口,使得系统间变得相对简单。MODBUS是GOULD INC注册的通讯协议商标,因为它有许多优点而被罗克韦尔(ROCKWELL)、通用电气(GE) 、西门子(SIEMENS)等国内外公司的产品广泛采用,作为与主系统(DCS)通讯的主要途径。 1.串行接口及MODBUS 通讯协议概述

MODBUS 通讯协议规定了2 种通讯方式。RTU(REMOTE TERMINAL UNIT)方式通讯采用8 位字节的二进制数据通讯,数据校验采用CRC 循环冗余校验,通讯速度较快;ASCII 方式采用7 位ASCII 码进行通讯,数据校验采用LRC 逻辑冗余校验,通讯速率较慢。在一个通讯系统中,只能选用一种通讯方式,两种方式不能并用。在我们的应用系统中一般使用RTU 的通讯方式,后面的叙述都是以RTU通讯方式为基础。MODBUS 通讯协议将通讯的双方规定为“主站”(MASTER)和“从站”(SLAVE)。每台从站都有自己的唯一编号,这个编号被称作从站地址,地址范围为1-255,通讯时先由主站发出通讯申请指令字符串,指令字符串由从站地址开头,从站只接受与自己地址相同的指令字符串,然后根据功能码类型,做出相应的回答,对发送给其他从站的指令字符串则不予理会。

MOSBUS 通讯时主站发出的指令字符串(报文)的通常格式如表1。

从站地址:主站指明的接收命令的从站地址。

功能码:功能码决定本次通讯要求从站执行的动作,功能码占1 个字节,表2 为MODBUS 协议规定的标准功能码,某些设备的MODBUS 协议只兼容其中的一部分功能码。

第 8 页 共 33 页

数据起始地址:通讯时读出、写入数据的起始地址。MODBUS 有多种批量数据操作功能码,可同时读出或写入多个具有连续地址的数据。数据起始地址占用2 个字节。 数据量:命令中进行读出或写入的数据数量,这些数据从起始地址开始连续地址排列,在对模拟量进行操作时,每个数据具有2 字节;在对数字量进行操作时每8 个数据为1 个字

第 9 页 共 33 页

节。数据量占用2 字节。

CRC 冗余校验:MODBUS 通讯协议采用CRC-16 冗余校验进行通讯错误校验,其校验方法是将整个通讯字符串(不包括最后两个校验字节)的所有字节进行移位并进行异或计算,接收方按同样的方法对收到的所有字符串进行校验,并将结果与收到的冗余校验结果进行比较,若一致则表明收到的字符串正确,否则接收到的字符串有错误,所传输的数据不会被采用。

MODBUS 通讯双方以寄存器地址将双方的数据对应起来,数据类型有数字量、模拟量两种,寄存器地址分下面四类。

1)内部数字量保持线圈,寄存器地址以1 开头,地址表示为1XXXX,内部数字量保持线圈(寄存器)可理解为设备的内部数字量中间寄存器,用于存放逻辑运算的中间结果,可读可写,与设备的I/O通道无关。

2)外部输入数字量线圈、继电器,寄存器地址以2 开头,寄存器地址表示为2XXXX,外部输入数字量线圈、继电器(寄存器),可理解为设备的数字量I/O 通道,每个寄存器和一个固定I/O 通道相对应,寄存器的状态代表数字量的状态,可读可写。

3)外部输入模拟量存储器,寄存器地址以3 开头,地址表示为3XXXX,外部输入模拟量存储器(寄存器) ,可理解为设备的模拟量I/O 通道,每个寄存器和一个固定I/O 通道相对应,寄存器的数值代表模拟量通道的数值,可读可写。

4)内部模拟量保持存储器,寄存器地址以4 开头,地址表示为4XXXX,内部模拟量保持存储器(寄存器) 可理解为设备的内部模拟量中间寄存器,用于存放数值运算的中间结果,可读可写,与设备的I/O 通道无关。 2. MODBUS的通讯过程

MODBUS是典型的主从式通讯协议,每个通讯网络中只能有一个主站,从站的数量不能超过255个,通讯时主站首先向从站发送通讯请求命令字符串,从站接收到命令字符串后,根据命令字符串中的命令码向主站做出相应的回答,完成一次通讯。整个的网络通讯都是由主站进行调度。下面举例说明几种常用功能码的通讯过程。

例1:假定主站要求17从站返回地址为0020~0056的内部数字量保持线圈的状态,主站发出的通讯请求命令字符串如表3。

第 10 页 共 33 页


Modbus+协议 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:六年级数学下册 我学会了教案 青岛版

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: