Modbus TCP 示例:
示例:MB_SERVE 多TCP 连接
可以拥有多个 Modbus TCP 服务器连接。为此,必须为每个连接单独执行 MB_SERVER。每个连接必须使用单独的背景数据块、连接 ID 和IP 端口。S7-1200 仅允许每个 IP 端口进行一个连接。
为了达到最佳性能,应在每个程序周期为各个连接执行 MB_SERVER。CONNECT 参数使用系统数据类型 TCON_IP_V4。这些数据结构的相关示例位于名为“Modbus 连接”的数据块中。“Modbus 连接”数据块包含两个 TCON_IP_V4 结构:“TCPpassive_1”(针对连接 1)和“TCP_passive_2”(针对连接 2)。程序段注释中描述的连接属性 ID 和LocalPort 为存储在 CONNECT 数据结构中的数据元素。TCON_IP_V4 CONNECT 数据同时包含 RemoAddress ADDR 数组中的 IP 地址。TCPpassive_1 和TCP_passive_2 内的 IP 地址分配对建立 TCP 服务器连接没有影响,但是会决定哪些 Modbus TCP 客户端可通过与各 MB_SERVER 连接进行通信。MB_SERVER 被动侦听 modbus 客户端消息,并将进入消息的 IP 地址与存储在相应 RemoteAddress ADDR 数组中的 IP 地址进行比较。
两个 MB_SERVER 指令可使用以下三种 MB_SERVER IP 地址变量:
IP 地址 = 0.0.0.0
各MB_SERVER 将响应使用任意 IP 地址的所有 Modbus TCP 客户端。
IP 地址 = TCPpassive_1 和TCPpassive_2 中的 IP 地址相同
两个 MB_SERVER 连接仅响应来自该 IP 地址的 Modbus 客户端。
IP 地址 = TCP_passive_1 和TCP_passive_2 中的 IP 号不同
各MB_SERVER 仅响应来自其 TCON_IP_V4 数据中存储的 IP 地址的 Modbus 客户端。程序段 1:连接 #1,背景 DB =“MB_SERVER_DB”、“Modbus connections.TCPpassive_1”内(ID = 1 且LocalPort = 502)
程序段 2:连接 #2,背景 DB =“MB_SERVER_DB_1”、“Modbus connections.TCPpassive_2”内(ID = 2 且LocalPort = 503)
示例:MB_CLIENT 1:通过公共 TCP 连接发送多个请求
多个 Modbus 客户端请求可通过同一连接发送。为此,必须使用相同的背景数据块、连接 ID 和端口号。
因为两个 MB_CLIENT 框使用相同的 CONNECT 参数 TCON_IP_v4 数据结构 “Modbus_connections”.TCPactive_1),因此连接 ID、端口号和 IP 地址均相同。