三、ModbusRTU从站组态与编程
1.ModbusRTU从站的组态过程与ModbusRTU主站的组态过程一致,可参照S7-1200的Modbus通信(一);
2.ModbusRTU从站编程需要调用Modbus_Comm_Load指令和Modbus_Slave指令,其中Modbus_Comm_Load指令通过ModbusRTU协议对通信模块进行组态,Modbus_Slave指令可通过由Modbus_Comm_Load指令组态的端口作为Modbus从站进行通信,Modbus_Comm_Load指令的MB_DB参数必须连接到Modbus_Slaver指令的(静态)MB_DB参数。
3.双击“项目树”下的添加新块,弹出添加新块对话框,在对话框中选择“DB数据块”,修改数据块的名称,单击“确定”按钮,如下图所示。

4.Modbus_Master指令的“DATA_PTR”参数用于指向要进行数据写入或数据读取的数据区域地址,该数据区域支持优化访问的数据块或者非优化(标准的)数据块,建议采用非优化访问的数据块。
本例中使用的数据区为非优化访问的数据块,在数据块的属性中取消“优化的块访问”即可将数据块修改为非优化访问的数据块(鼠标右键数据块,选择“属性”,取消“优化的块访问”),如下图所示。

5.在数据块中分别创建如下图所示的数据。

6.双击“OB1”,打开程序编辑工作区,从右侧“指令”选项卡中找到“通信”-“通信处理器”-“MODBUS(RTU)”,将Modbus_Common_Load指令拖拽到OB1中,如下图所示。

7.Modbus_Comm_Load指令背景数据块中的静态变量“MODE”用于描述PTP模块的工作模式,如下图所示,有效的工作模式包括:
(1)0=全双工(RS232)
(2)1=全双工(RS422)四线制模式(点对点)
(3)2=全全双工(RS422)四线制模式(多点主站,CMPtP(ET200SP))
(4)3=全全双工(RS422)四线制模式(多点从站,CMPtP(ET200SP))
(5)4=半双工(RS485)二线制模式