关于Modbus TCP通讯调试过程的那些事2
关于Modbus TCP客户机多任务工作
在Modbus TCP通讯过程中,很难回避一个现实问题就是多任务工作时的工作环境,是否需要还轮询?因为,该通讯原理硬件虽然基于以太网架构下,但是通讯机制还是在Modbus类型通讯下。如果按RS485半双工通讯方式,一条通讯硬件链路上,只能有一个唯一的通讯任务,或发送或接收,不允许在同一个时刻出现多条工作任务的出现,原因也很容易理解,接收和发送无法区分、拆分各条通讯数据的信号电平。
通讯轮询的测试:
1) 创建一个测试项目,用2个s7-1200的cpu,S7-1214C DC/DC/DC版本V4.2和S7-1214C AC/DC/Relay版本V2.2,其中,V4.2作为客户机,V2.2作为服务器侧进行多任务工作测试,图示1:
创建客户机:

创建服务器:

2) 测试任务:客户机侧同时调用并触发Client指令,读取服务器40001区域数据,图示2:
用系统时钟标志位M0.5同时触发MB_Client指令的REQ管脚。
通讯任务1:

通讯任务2:

3) 创建通讯数据交互数据块,用于测试数据的交互,图示3:
客户机:

服务器:将数字1 ~ 20 分别写入DB3数据块的各变量中。

4) 分别将项目编译保存后,下载。在客户机看读取服务器DB3的数据情况,结果图示4:

2个MB_Client指令同时用系统时钟标志位M0.5触发,数据仍然能够正常交互。
5) 多个MB_Client指令调用又将如何?图示,再新建2个MB_Client指令,这样4个MB_Client指令同时被M0.5系统时钟调用的情况:

通讯数据交互仍然能够正常。
小结:
测试环境用Protal版本V15组态的CPU版本V4.2作为客户机,CPU版本V2.2作为服务器,用于Modbus TCP测试客户机多个任务同时触发时,测试项目的4个MB_Client指令同时触发,数据交互仍然能够正常。由此说明,基于以太网硬件网络的modbus通讯无需再如同半双工那样,考虑同时触发调用通讯指令的问题。当然,测试可能存在一定的局限性和片面性,只是说明了一个测试的方向的预判结果。