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
图2是S7-200的Modbus从站通信程序。刚进入RUN模式时,执行一次MBUS_INIT(Modbus初始化)指令。S7-200的模式开关在RUN位置时(SM0.7 = 1),才能执行Modbus协议通信。模式开关切换到TERM位置(SM0.7 = 0)时,将SM30.0 复位,通信模式被设置为PPI协议。
图2
在S7-1200的数据块DB3中生成一个数据类型为Word的数组,设置该数组前3个元素的初始值。
在S7-1200的I0.0的上升沿,图1左边的指令将DB3的前3个字(DBW0~DBW4)写入S7-200的VW100~VW104。在S7-1200的I0.1的上升沿,图1右边的指令读取S7-200的VW100~VW104,然后保存到DB3的DBW6~DBW10。监控DB3,可以验证通信是否实现。
S7-200的V存储区被默认为有断电保持功能。用状态表可以看到S7-1200的数据被成功地写到了VW100~VW104。