首页 理论教育 深入了解Modbus RTU协议

深入了解Modbus RTU协议

时间:2023-06-15 理论教育 版权反馈
【摘要】:Modbus远程终端单元协议可以将驱动程序配置为Modbus RTU主站或Modbus RTU从站。Modbus RTU主站可以使用MSG指令与Modbus RTU从站之间进行数据文件的传输。Modbus协议在字段中不能一致地执行。Modbus规范要求寻址范围以1开始,但是某些设备从0开始寻址。本例中设定0通道为Modbus主站。

深入了解Modbus RTU协议

Modbus远程终端单元(Modbus Remote Terminal Unit,Modbus RTU)协议可以将驱动程序配置为Modbus RTU主站或Modbus RTU从站。Modbus RTU从站驱动程序将4种Modbus数据类型(线圈、触点、输入寄存器和保持寄存器)映射到用户创建的4个二进制数据表文件和/或整数数据表文件。

1.Modbus RTU主站

MicroLogix1200 FRN8版本及以上处理器或MicroLogix1500 FRN9版本及以上处理器才可被配置才Modbus RTU主站。

Modbus RTU主站可以使用MSG指令与Modbus RTU从站之间进行数据文件的传输。

Modbus寻址范围为每个内存组的16位数据,地址范围为1~65536。有4个内存组,每个功能一个内存组:线圈(通常地址为Oxxxx)、触点(1xxxx)、输入寄存器(3xxxx)和保持寄存器(4xxxx)。

例如,控制器的线圈数据被存储在B10文件中,在配置Modbus RTU从站时,选择Mod-bus数据文件表中的线圈文件号为10,则Modbus地址0001对应于控制器B10/0位的状态,Modbus地址4096对应于控制器B10/4095位的状态。如保持寄存器文件号被定义为N11,则40001对应于N11:0,40256对应于N11:255。

线圈和触点是对位进行寻址。线圈即为输出,可以被读取和写入。触点即为输入,只能被读。输入寄存器和保持寄存器是对字进行寻址。输入寄存器通常用于内部存储的输入值,为只读属性。保持寄存器是通用的,可通过通信指令被读/写。

地址的最高位被视为前缀,并且在配置消息指令时不输入Modbus数据地址字段。在发送消息时,地址减量为1并转换为要通过网络传送的4字符十六进制数字(范围为O~FFFFH);从站以1为单位增加地址,并基于Modbus功能选择合适的内存组。

Modbus协议在字段中不能一致地执行。Modbus规范要求寻址范围以1开始,但是某些设备从0开始寻址。为了正确地访问Modbus从站内存,可能需要将消息设置屏幕中的Mod-bus数据地址增加1,这取决于从站执行的内存寻址。

用于Modbus主站的MSG指令设置如图9-12所示。

978-7-111-47412-8-Chapter09-13.jpg

图9-12 用于Modbus主站的MSG指令

“该控制器(This Controller)”参数说明如下:

1)Channel:通道号。本例中设定0通道为Modbus主站。

2)Modbus Command:Modbus命令码。01代表读取线圈状态(0xxxx),02代表读取输入状态(1xxxx),03代表读取保持寄存器(4xxxx),04代表读取输入寄存器(3xxxx),05代表写入单个线圈(0xxxx),06代表写入单个寄存器(4xxxx),15代表写入多个线圈(0xxxx),16代表写入多个寄存器(4xxxx)。

3)Data Table Address:数据表地址。本地文件类型必须为Modbus命令的二进制(B)或整数(N)。启动线圈/输入位命令(01、02、05和15)的数据表地址需要一个位地址。启动寄存器命令的数据表地址(03、04、06和16)需要一个字地址。

4)Size in Elements:元素大小。元素大小的默认值为“1”。对于线圈/输入命令(01、02、05和15)来说,元素以位为单位。对寄存器(03、04、06和16)来说,元素以字为单位。(www.xing528.com)

“目标设备参数(Target Device)”:参数说明如下:

1)Message Timeout:消息超时。消息超时指定以秒为单位。如果目标在时间范围内没有响应,消息指令就会产生一个具体的错误。可接受的时间数量应该以应用需求与网络容量/加载能力为基础。2s消息超时通常是足够的。如果设定为0,则取消消息超时。

2)MB Data Address:Modbus数据地址(十进制)。默认Modbus数据地址为1。范围为1~65536。

3)Slave Node Address:从站节点地址(十进制)。默认从站节点地址为1。读命令时,范围为1~247;写命令时,范围为0~247。0是Modbus广播地址,只对Modbus写入命令(05、06、15和16)有效。

2.Modbus RTU从站

由于控制器最多可配置256个数据表文件,因此线圈和触点文件在每个寄存器中最多包含4096个线圈或触点。同样,每个输入寄存器和保持寄存器文件最多可以包含256个寄存器。勾选“扩展”(Expanded)复选框后,可以对控制器进行专门配置,可将最多6个256字数据表文件用于总共1536个Modbus保持寄存器。

Modbus从站配置界面如图9-13所示。

配置界面中,大部分对话框的内容与前面所述内容一致,在此不再重复,仅对不同的内容加以说明。

1)Modbus Data Table File Numbers:Modbus数据文件表。可在此范围内输入Modbus数据表文件编号,选择“扩展”(Expansion)复选框来使用多个保持寄存器数据文件。控制器默认设置是一个数据文件(256个寄存器)。选择“扩展”(Expansion)复选框可以使用附加5个文件和1280个保持寄存器。5个附加表无需单独定义,但按照第一个整数或位文件排序。例如,如果第一个文件是N10(或B10),则附加5个文件将为N11(或B11)、N12(或B12)、N13(或B13)、N14(或B14)和N15(或B15)。输入文件号后,会自动创建B或N类型的文件。如果选择了“扩展”复选框,在数据文件树中并不会显示附加的5个文件。

2)Coils(0XXXX):线圈(离散输出。Modbus地址为0001~4096),输入范围为3~255,0表示没有文件。

3)Contacts(1XXXX):触点(离散输入。Modbus地址为10001~14096),输入范围3~255,0表示没有文件。

978-7-111-47412-8-Chapter09-14.jpg

图9-13 Modbus从站配件界面

4)Input Registers(3XXXX):输入寄存器(只读。Modbus地址为30001~30256),输入范围为3~255,0表示没有文件。

5)Holding Registers(4XXXX):保持寄存器(读/写。Modbus地址为40001~40256),输入范围为3~255,0表示没有文件。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈