西门子在 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。

图 1. 西门子标准指令库(STEP 7-Micro/WIN SMART)
使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及保持寄存器。
以下仍然以2台SR30(6ES7288-1SR30-0AA0),一台做主机(192.168.2.212),一台做从机(192.168.2.207)为例说明实现过程。
目的:从站I0.0/I0.1对应控制主站Q0.0/Q0.1;主站I0.0/I0.1对应控制从站Q0.0/Q0.1。
l 主站编程如下:
1. 调用 Modbus RTU 主站初始化和控制子程序
2. 调用 Modbus RTU 主站读写子程序MBUS_MSG,发送Modbus 请求
数据逻辑处理:


3. 在 CPU 的 V 数据区中为库指令分配存储区(Library Memory),Modbus Master 指令库需要一个286个字节的全局 V 存储区。 调用STEP 7 - Mciro/WIN SMART Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。
步骤:右键“程序块”——点击“库存储器”,弹出的对话框中设置。“库存储器分配”对话框中可以点击一次“建议地址”为库指令分配存储区,也可以自己填写。但是一定要注意分配的286个字节的全局 V 存储区必须检查没有在程序其他地方使用到。

l 2#从站编程如下:
1. 使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
数据逻辑处理

2. 在CPU的V数据区中分配库指令数据区(Library Memory)
Modbus Slave 指令库需要一个781个字节的全局 V 存储区。
调用STEP 7 - Mciro/WIN SMART Instruction Library(指令库)需要分配库指令数据区(Library Memory)。库指令数据区是相应库的子程序和中断程序所要用到的变量存储空间。
如果在编程时不分配库指令数据区,编译时会产生许多相同的错误。
操作步骤类似主站中分配库指令数据区步骤。
l 逻辑验证:
1. 从站I0.0/I0.1有信号,主站Q0.0/Q0.1输出;从站I0.0/I0.1无信号,主站Q0.0/Q0.1没有输出
2. 主站I0.0/I0.1有信号,从站Q0.0/Q0.1输出;主站I0.0/I0.1无信号,从站Q0.0/Q0.1没有输出