S7-1200作主站的modbus RTU通信 S7-200和 S7-1200可以实现
modbus RTU通信,它们可以作通信中的主站,也可以作从站。S7-1200需要增加一块RS485通信模块。
在下面的例子中,S7-1200作主站,S7-200作从站。
在S7-1200的初始化组织块OB100中调用MB_COMM_LOAD指令(FB1080),来组态通信接口,设置通信的波特率、奇偶校验方式。
MB_MASTER指令(FB1081)用于主站的
modbus通信。在REQ输入(见图1)的上升沿,将数据发送到从站。
MB_ADDR是站地址,MODE用于选择
modbus功能的类型,DATA_ADDR是要访问的从站数据的起始地址。MODE和DATA_ADDR一起确定报文中的功能代码。
DATA_LEN是要访问的数据长度,DATA_PTR是要读取或写入数据时用到的本站的源地址或目标地址。DONE为1表示操作已完成,BUSY为1表示正在处理任务。

图1
下面是S7-200的
modbus从站通信程序:
LD SM0.1
CALL MBUS_INIT:SBR1, 1, 2, 19200, 0, +0, +128, +32, +200, &VB100, M0.1, MB1
LD SM0.7
CALL MBUS_SLAVE:SBR2, M0.2, MB2
LDN SM0.7
EU //若转换为TEAM模式,则设置为PPI协议(SM30.0=0)
R SM30.0, 1
在S7-1200的数据块DB3中生成一个数据类型为Word的数组,设置该数组前3个元素的初始值(见图2)。

图2
接通和断开S7-1200的I0.0外接的小开关,图1左边的指令将DB3的前3个字(见图2)写入S7-200的VW100~VW104。接通和断开S7-1200的I0.1外接的小开关,图1右边的指令读取S7-200的VW100~VW104,然后保存到图2下面的3个字中。
S7-200的V存储区被默认为有断电保持功能。用状态表可以看到S7-1200的数据被成功地写到了VW100~VW104。