以前看S7-1200的帮助手册,成功做了S7-1200做客户端(主站),和其他上位机做服务器(从站)的程序。但是最近碰到个用户提出来一个问题,就是使用同一个S7-1200的PLC,然后需要和多个上位机进行Modbus TCP通讯。我查了一下S7-1200的系统手册,这个好像是可行的。那么就实际编程测试一下。
首先肯定也是要划分谁是主,谁是从。这里就规化S7-1200做客户端,使用客户端Client指令。其他上位机做服务器。因为这里我没那么多上位机和PLC。所以用了1台笔记本,使用Modbus Slave软件,通过切换IP的方式来实现多个服务器的模拟。
程序编写:
(1)编写多个客户端程序。这里以2个为例。编写Client1程序和Client2程序时,需要用到不同的DB块,可以使用【多重背景】功能。

(2)两个指令需要建立2个独立的TCON_IP_v4数据类型



程序调试:
(1)使用Modbus Slave调试助手,修改本地IP和Modbus Slave的参数。也可以使用多台电脑或多个虚拟机进行测试。
Client1测试时


Client2测试时


程序测试监控:
状态字显示16#7002,说明:通讯待机成功。
状态字显示16#7006,说明:与上位机建立连接成功,这个时候就可以读写字节,因为这里用的是客户端指令,所以程序里读,写命令用单独的Client指令,使用同一个DB,但是要使用“轮询”。


S7-1200系统手册参考内容:
