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 数据同时包含 RemoteAddress 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 地址均相同。CONNECT IP 地址数据分配目标 Modbus TCP 服务器的 IP 地址。
在任意给定时间内,只能有一个 MB_CLIENT 处于激活状态。一个客户端完成执行后,下一个客户端才能开始执行。由程序逻辑负责执行顺序逻辑。
本示例所示为两个客户端从单个 Modbus 客户端读取远程数据并将数据传送至 Modbus 客户端 CPU(从 M1000.0 起始的M 存储器)。并捕获返回的错误(可选)。
程序段 1:Modbus 功能 1 - 从使用“Modbus 连接”.TCPactive_1 中所分配的 IP 地址的 Modbus TCP 服务器中读取 16 位输出位。
程序段 2:Modbus 功能 2 - 从使用“Modbus 连接”.TCPactive_1 中所分配的 IP 地址的 Modbus TCP 服务器中读取 32 位输入位。
示例:MB_CLIENT 3:输出映像写入请求
本示例所示为 Modbus 客户端请求将位数据从本地 CPU 存储区(起始地址为 M1000.0)传送至远程 Modbus TCP 服务器。
程序段 1:Modbus 功能 15 - 在 Modbus 服务器中写入输出位
示例:MB_CLIENT 4:协调多个请求
必须确保各个 Modbus TCP 请求都完成执行。必须由程序逻辑来控制执行顺序。下面的示例显示了首个和第二个客户端请求输出如何控制执行顺序。
该示例所示为两个客户端使用同一 CONNECT 连接数据(不同时使用)。
客户端将保持寄存器数据从同一远程 Modbus TCP 服务器传送至同一本地 CPU 存储区 M 地址。此外,还捕获了返回的错误,这是可选的。
程序段 1:Modbus 功能 3 - 读取 Modbus TCP 服务器保持寄存器字
程序段 2:Modbus 功能 3 - 读取 Modbus TCP 服务器保持寄存器字
审核编辑:刘清
-
cpu
+关注
关注
68文章
10825浏览量
211147 -
ModBus协议
+关注
关注
3文章
174浏览量
33388 -
TCP通信
+关注
关注
0文章
146浏览量
4217
原文标题:S7 1200-Modbus TCP 示例
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论