S7-200 SMART多请求处理

S7-200 SMART Modbus TCP 可支持多个连接,最多可达 PLC 允许的开放式用户通信连接的最大数(八个主动(客户端)连接和八个被动(服务器)连接)。

不可避免的会出现以下情况:

1.S7-200 SMART作为服务器由多个客户端访问

2.S7-200 SMART作为客户端访问多个服务器

下面就这种多请求处理的情况作相关的介绍。

1.S7-200 SMART作为服务器由多个客户端访问

S7-200 SMART CPU作为服务器由多个客户端访问时,需要S7-200 SMART CPU多次调用 Modbus TCP 服务器库指令,并且每个服务器需要配置不同的Port口,如图1所示 。

S
图1.S7-200 SMART多服务器例程


H注意:

  1. 对应的库存储器地址需要使用建议地址不能重复使用。
  2. S7-200 SMART的开放式以太网通讯资源是8个主动资源8个被动资源。
  3. 端口号必须在 1 到 49151 的范围内。建议端口号在 2000 到 5000。
  4. 该例程使用 STEP 7-Micro/WIN SMART V2.4 编写,使用硬件是ST60:6ES7288-1ST60-0AA0 固件:V2.4 版本
  5. 该例程 Modbus TCP 服务器,响应2个客户端请求,访问不同的V存储区

Modbus TCP多服务器例程

2.S7-200 SMART作为客户端访问多个服务器

S7-200 SMART CPU作为客户端访问多个服务器,服务器连接参数必须具有不同的 IPAddr 或 IP_Port 输入参数。

情景1:S7-200 SMART 作为客户端访问多个服务器:
解决方法:确保连接富余,可以建立多个不同的连接发送请求,调用"MBUS_CLIENT",S7-200 SMART CPU内通过设置的不同的远程IP地址、端口号 尝试建立连接。
该情景的相关步骤用户根据以上原则,自行编程即可。

情景2:S7-200 SMART作为客户端,访问同一个服务器,需要进行多次读写操作;
解决方法:借助于同一个连接,考虑客户端做轮询 ,远程IP地址、端口号一致,分时调用“MBUS_CLIENT”指令,具体参考下方的轮询通信例程。

轮询原则:在任意时间,只能有一个客户机请求处于激活状态,在一个请求完成执行后,下一个请求再开始执行,循环处理。

2.1.Modbus TCP 客户端轮询例程

本例程中使用done位做轮询,相比于用定时器做轮询,不会因为定时触发时间设置的过小导致两个指令冲突,或者定时触发时间设置过大增加通信时间的问题。

注意:

1. 该例程使用 STEP 7-Micro/WIN SMART V2.4 编写,使用硬件是ST60:6ES7288-1ST60-0AA0 固件:V2.4 版本,IP地址:192.168.0.121
2. 该例程仅访问一个服务器,两个MBUS_CLIENT指令轮询执行写和读,写入和读取服务器寄存器类型地址:40001-40002共2个字,将需要写入服务器的数据放在VB700-VB703区域中,从服务器中读取的数据存储在本地的VB704-VB707区域中。

Modbus TCP 客户端轮询例程

为配合上方的客户端轮询程序,服务器的程序可参考下面的例程。

注意:

1. 该例程使用 STEP 7-Micro/WIN SMART V2.4 编写,使用硬件是SR60:6ES7288-1SR60-0AA0 固件:V2.4 版本,IP地址:192.168.0.113
2. 该例程 Modbus TCP 服务器,响应客户端请求,将数据存储在VB0-VB3的区域中,等待客户端写入和读取。

Modbus TCP 服务器例程

免责声明

本例程仅供参考,程序中的CPU版本、类型可能与用户实际使用不同,用户可能需要先对例子程序做修改和调整,才能将其用于测试。本例程的作者和拥有者对于该例程的功能性和兼容性不负任何责任,使用该例程的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持,用户不必为此联系西门子技术支持与服务部门。