SIMATIC S7-1500 Modbus TCP通讯
很多工业现场的 Modbus TCP 通信应用中,常常需要一个 P LC控制器通过Modbus TCP 作为客户端访问多个服务器,且客户端和服务器之间都有读和写操作的应用需求。如图 1-1 所示,一个作为客户端的 C PU A连接了作为服务器的C PU B 和C PU C,此连接关系中,C PU A将占用两个 TCP连接资源,C PU B 和CPU C将分别占用一个 TCP连接资源。
本文以此为例子,说明客户端中该如何配置连接参数,如何简单的编程实现对两个服务器的访问。例子中的要求如下图所示:
调用多个客户端指令的方法
例程调用结构
OB1 调用分别连接 CPU B 的FC1 和连接 CPU C的F C2,FC1和FC2同时调用,无需轮询。需要注意:对于同一个连接中调用的多个 MB_C lient ,要求背景数据块相同,指令引脚 CONNECT关联的数据类型为“T CON_IP_V4”的参数必须为同一个。如图 2-1 所示:
FC1 中调用了 3 次MB_C lient ,利用 C PU属性中设置的时钟脉冲,每 0 .5 s 激活一次连续访问,根据图 1-2 所示,为“读——>写——>读”的操作。
FC2 中调用了 2 次MB_C lient ,利用 C PU属性中设置的时钟脉冲,每 0 .5 s 激活一次连续访问,根据图 1-2 所示,为“读——>写”的操作。
C PU A/B/C中,对于数据类型为“T CON_IP_V4”的连接参数,如图 2-2 所示:
程序的执行过程
以FC1程序块为例,该程序块为 CPU A访问 C PU B的连续操作(读——>写——>读),当TCP连接建立后,利用 CPU的时钟脉冲,每隔 0 .5 s 触发一次第一个MB_Client 指令的 REQ进行读操作,然后,利用其输出的 D ONE和ERROR触发第二个 MB_Client 指令的 REQ进行写操作,最后,利用第二个 MB_Client输出的 D ONE和ERROR 触发第三个 MB_Client 指令的 REQ进行读操作,(注意:本例中为 0 .5 s 触发一次连续的操作,而在实际的项目中,请根据实际的读/写操作次数和访问数据量,调整触发间隔,保证读/写操作都能正常完成);图 2-3 所示:
C PU A访问CPU C的连续操作(读——>写),同 CPU A访问 C PU B的连续操作类似,这里不再复述。
通讯测试
使用上述方法对同一个 Modbus TCP 连接,实现多个访问操作,以下是 CPU A对CPU B做的“读——>写——>读”的操作,如图 3-1 所示:
注:本文中作为 server 的两台 CPU不局限于西门子的 PLC,也可以是第三方的作为modbus TCP 服务器的设备,例如智能仪表,第三方控制器,PC中运行的modsim32测试工具。