MODBUS在过程控制系统中的应用
■ 错误检查
设备地址是一个从0到247的数字。发送给地址0(广播讯息)的讯息可以被所有从设备接收到,但是数字1到247是特定设备的地址。在这个讯息广播当中有一个例外,有一个从设备总是会对MODBUS讯息作出反应,这样主设备就知道这条讯息已经被从设备接收到了。
功能代码定义了从设备应该执行的命令,例如读取数据、接受数据、报告状态等等(参见表1)。功能代码为从1到255的数字。有些功能代码还拥有子功能代码。
数据为读取功能定义了在设备存储器映射当中的地址,它包括被写入设备存储器的数据值,或是包括其它根据功能代码的要求需要被执行的信息。
错误检查是一个描述循环冗余校验(CRC)的16-bit数值。循环冗余校验码(CRC)由主设备产生(通过一个包括对数据进行“或”运算以及移位运算的复杂程序产生),并且由接收设备进行检查。如果CRC值不符,这个设备就会要求重新传送讯息。在有些系统里面,还要对数据进行奇偶校验。
当从设备执行了所要求的功能,它会返回一条讯息给主设备。这条返回的讯息包含了从设备的地址、所要求的功能代码(这样主设备就知道是谁在作出反应)、所要求的数据以及一个错误检查值。
MODBUS存储器映射
每一个MODBUS设备都有存储器,在存储器里面保存着过程变量数据。MODBUS的配置决定了数据怎样被恢复以及什么类型的数据能够被恢复。不过,MODBUS配置并没有规定设备供应商必须怎样映射这些数据以及必须把这些数据映射在存储器的哪个部分。下面是一个比较常见的例子,用来说明理论上一个供应商可能怎样映射不同类型的过程变量数据。
离散量输入和输出是1-bit数值,并且每一个这种变量都有一个明确的地址。模拟量输入(也被称为“输入寄存器”)被存储在16-bit寄存器里面。只需利用这些寄存器当中的两个寄存器,MODBUS就可以支持IEEE 32-bit浮点格式。保持寄存器也是16-bit内部寄存器,可以支持浮点格式。
MODBUS配置定义了在寄存器映射里面的数据。假定设备供应商遵从了MODBUS规格书的要求(并非所有设备供应商都如此),那么MODBUS主设备就可以很容易的获取所有遵从规格书规定的数据。在很多案例当中,设备供应商公布了存储器的映射位置(参见表2),这样就使得编程人员可以很
容易的为主设备与从设备之间的通讯进行编程。

表2:大多数MODBUS兼容设备(例如来自于Moore Industries公司的TMZ温度变送器)的说明书或者操作手册都公布了关键变量在存储器映射里面的地址。TMZ温度变送器的地址遵守了MODBUS规格书的要求。
读取和写入数据
MODBUS拥有最多255个功能代码,但是01(读取输出量)、02(读取离散输入)、03(读取保持寄存器)以及04(读取输入寄存器)是最为常用的读取功能代码,这些代码被用来从MODBUS从设备采集数据。
假如设备遵从了MODBUS配置的要求,那么设定主设备读取和写入数据、检查状态、获取诊断信息以及执行各种控制和监视功能的编程任务就变得非常简单了。
在大多数工厂里,现场仪表采用单独的控制室直连对绞线电缆连接到控制系统(见下图)。当仪表设备被连接到一种分散式I/O系统(例如来自于Moore Industries公司NCS系统)的时候(见中图),你可以增加更多的现场设备,但是仅仅需要一根对绞线电缆就可以把所有数据传送到MODBUS主站。在多个NCS系统以MODBUS网络的方式组网连接的时候(见下图),整个工厂的连接都能够从对绞线电缆控制室直连的方式转变成为MODBUS连接方式。

图2:控制室直连电缆 vs MODBUS
电流变送器相关文章:电流变送器原理
评论