1 SIMATIC S7-1500 Modbus TCP 通讯概述
S7-1500 PLC 通过 TIA Portal 软件进行组态配置。从 TIA Portal V12 SP1 开始,软件中增加了 S7-1500 的 Modbus TCP 块库 (V3.0 及以上版本),用于 S7-1500 与支持 Modbus TCP 的通信伙伴进行通信。
图 1-1 TIA Portal 中包含的 Modbus TCP 块库: 此图展示了 TIA Portal 中可用的通信块,包括 S7 通信、开放式用户通信、WEB 服务器、其他以及 Modbus TCP。Modbus TCP 部分列出了 MB_CLIENT
(作为 Modbus TCP 客户端) 和 MB_SERVER
(作为 Modbus TCP 服务器) 块,均版本为 V3.0。
使用上述指令实现 S7-1500 作为 Modbus TCP 的 Server 或 Client,与通信伙伴建立通信。在 TIA Portal 软件中,对于 CONNECT
参数的设定有两种主要方法:
- 使用
TCON_IP_v4
结构创建连接参数。 - 通过“网络视图”创建 TCP 连接后,再使用
TCON_Configured
结构创建连接参数。
说明:
- 本文中的截图来源于 TIA Portal V15。
- 本文主要描述 S7-1500 Modbus TCP 指令的管脚
CONNECT
对应的全局 DB 块配置参数的说明。 - 相关指令如何使用及如何测试通信,请参见以下链接: https://support.industry.siemens.com/cs/cn/zh/view/90974593
2 使用 TCON_IP_v4 结构
2.1 配置为 SERVER 模式
在 1500CPU 的 OB1 组织块中添加 Modbus TCP 服务器功能块 “MB_SERVER”
。软件将提示为该 FB 块增加一个背景数据块,本例中为 DB1 “MB_SERVER_DB”
。
图 2-1 添加“MB_SERVER”功能块: 此图显示了在 TIA Portal 程序编辑器中如何插入 MB_SERVER
功能块,并展示了其 EN, ENO, DISCONNECT, REQ, CONNECT 等管脚。
添加一个全局数据块用于匹配功能块 “MB_SERVER”
的管脚 “CONNECT”
。本例中为数据块 DB2 (块名称: MB_TCON
)。打开该数据块,创建变量 “MB_Server”
,手动在数据类型框中输入 “TCON_IP_v4”
,并将该变量关联到功能块 “MB_SERVER”
的管脚参数 “CONNECT”
上。
图 2-2 添加一个与管脚“CONNECT”匹配的全局数据块: 此图展示了在 TIA Portal 中创建的全局数据块 MB_TCON [DB2]
,其中变量 MB_Server
的数据类型被设置为 TCON_IP_v4
。表格列出了 TCON_IP_v4
结构中的字段,如 Interfaceld
, ID
, ConnectionType
, Active Established
, RemoteAddress
, RemotePort
, LocalPort
。
展开全局数据块变量 “MB_Server”
,“TCON_IP_v4”
数据类型的各参数设置说明如下:
结构 | 含义 | 本例为 SERVER 时 |
---|---|---|
Interfaced | 本地接口的硬件标识符 (参见图 2-3)。 | 64 |
ID | 引用该连接 (取值范围: 1 到 4095)。该参数将唯一确定 CPU 中的连接。指令 “MB_SERVER” 的每个实例必须使用唯一的 ID。该 ID 还不得被不同通信类型的其他指令同时使用。 | 1 |
ConnectionType | 对于 TCP, 选择 11 (十进制)。不允许使用其它连接类型。如果使用了其它连接类型 (如 UDP), 该指令的 STATUS 参数将输出相应的错误消息。 | 16#0B |
Active Established | 对于被动连接建立, 应选择 FALSE。 | False |
RemoteAddress | 连接伙伴的 IP 地址, 例如, 192.168.0.1: addr[1] = 192 , addr[2] = 168 , addr[3] = 0 , addr[4] = 1 。如果指令 “MB_SERVER” 要接受来自任何连接伙伴的连接请求, 应将 “0.0.0.0” 用作 IP 地址。 | 16#0 |
RemotePort | 远程连接伙伴的端口号 (取值范围: 1-49151)。如果指令 “MB_SERVER” 要接受来自远程伙伴任何端口的连接请求, 应将 “0” 用作端口号。 | 0 |
LocalPort | 本地连接伙伴的端口号 (取值范围: 1-49151)。此 IP 端口号定义 Modbus 客户端连接请求中要监视的 IP 端口。默认值为 502。 | 502 |
图 2-3 接口硬件标识: 此图展示了 TIA Portal 中用于显示和选择硬件接口标识符的界面,列出了如 Local~PROFINET_接口_1~端口_1
等接口及其硬件标识符。
2.2 配置为 CLIENT 模式
在 1500CPU 的 OB1 组织块中添加 Modbus TCP 客户端功能块 “MB_CLIENT”
。软件将提示为该 FB 块增加一个背景数据块,本例中为 DB1 “MB_CLIENT_DB”
。
图 2-4 插入一个 MB_CLIENT 功能块: 此图显示了在 TIA Portal 程序编辑器中如何插入 MB_CLIENT
功能块,并展示了其 EN, ENO, REQ, CONNECT 等管脚。
添加一个全局数据块用于匹配功能块 “MB_CLIENT”
的管脚 “CONNECT”
。本例中为数据块 DB2 (块名称: MB_TCON
)。打开该数据块,创建变量 “MB_Client”
,手动在数据类型框中输入 “TCON_IP_v4”
,并将该变量关联到功能块 “MB_CLIENT”
的管脚参数 “CONNECT”
上。
图 2-5 添加一个与管脚“CONNECT”匹配的全局数据块: 此图展示了在 TIA Portal 中创建的全局数据块 MB_TCON [DB2]
,其中变量 MB_Client
的数据类型被设置为 TCON_IP_v4
。表格列出了 TCON_IP_v4
结构中的字段,与 SERVER 模式类似,但参数值有所不同。
结构 | 含义 | 本例为 CLIENT 时 |
---|---|---|
Interfaced | 本地接口的硬件标识符 (参见图 2-3)。 | 64 |
ID | 引用该连接 (取值范围: 1 到 4095)。该参数将唯一确定 CPU 中的连接。指令 “MB_CLIENT” 的每个实例都必须使用唯一的 ID。 | 1 |
ConnectionType | 对于 TCP, 选择 11 (十进制)。不允许使用其它连接类型。如果使用了其它连接类型 (如 UDP), 该指令的 STATUS 参数将输出相应的错误消息。 | 16#0B |
Active Established | 对于主动连接建立, 应选择 TRUE。 | True |
RemoteAddress | 连接伙伴 (Modbus 服务器) 的 IP 地址, 例如, 192.168.0.1: addr[1] = 192 , addr[2] = 168 , addr[3] = 0 , addr[4] = 1 。 | addr[1] = 172 addr[2] = 22 addr[3] = 108 addr[4] = 245 |
RemotePort | 远程连接伙伴的端口号 (取值范围: 1-49151)。使用客户端通过 TCP/IP 协议与其建立连接并最终通信的服务器的 IP 端口号 (默认值: 502)。 | 502 |
LocalPort | 本地连接伙伴的端口号: 端口号: 1 至 49151。任意端口: “0”。 | 0 |
3 使用 TCON_Configured 结构
3.1 配置为 SERVER 模式
首先,在项目中组态 1500CPU,分配 IP 和添加子网。然后,在“网络视图”窗口,左上侧选择“连接”按钮,使得 CPU 变为蓝色高亮,在 1516CPU 上点击鼠标“右键”并选择“添加新连接”。
图 3-1 添加新连接: 此图展示了在 TIA Portal 网络视图中,如何通过右键菜单选择“添加新连接”来配置通信。
在“创建新连接”窗口中,右侧“类型”选择为“TCP 连接”,左侧选择“未指定”,并在窗口中部选择接口 “PLC_1, PROFINET 接口_1[X1]”
, 点击“添加”创建 TCP 连接。
图 3-2 创建 TCP 连接: 此图显示了在 TIA Portal 中创建 TCP 连接的对话框,包括选择连接伙伴、接口和连接类型。
“TCP_连接_1”
为建立的连接, 选中该连接, 在属性的“地址详细信息”中可以设置该 TCP 连接的相关信息。
图 3-3 TCP 连接设置: 此图展示了 TCP 连接的属性设置,包括本地和伙伴的 IP 地址和端口号。对于服务器,本地端口号必须填写。
在 1500CPU 的 OB1 组织块中添加 Modbus TCP 服务器功能块 “MB_SERVER”
。软件将提示为该 FB 块增加一个背景数据块,本例中为 DB1 “MB_SERVER_DB”
。
图 3-4 添加“MB_SERVER”功能块: (与图 2-1 类似) 此图显示了在 TIA Portal 程序编辑器中如何插入 MB_SERVER
功能块。
添加一个全局数据块用于匹配功能块 “MB_SERVER”
的管脚 “CONNECT”
。本例中为数据块 DB2 (块名称: MB_TCON
)。打开该数据块,创建变量 “MB_Server”
,手动在数据类型框中输入 “TCON_Configured”
,并将该变量关联到功能块 “MB_SERVER”
的管脚参数 “CONNECT”
上。
图 3-5 添加一个与管脚“CONNECT”匹配的全局数据块: 此图展示了在 TIA Portal 中创建的全局数据块 MB_TCON [DB2]
,其中变量 MB_Server
的数据类型被设置为 TCON_Configured
。
结构 | 含义 | 本例为 SERVER 时 |
---|---|---|
Interfaced | 本地接口的硬件标识符 (参见图 2-3)。 | 64 |
ID | 引用该连接 (取值范围: 1 到 4095)。输入现有连接的连接 ID (参见图 3-2)。 | 256 |
ConnectionType | 对于组态连接, 选择 254 (十进制)。 | 254 |
3.2 配置为 CLIENT 模式
首先,在项目中组态 1500CPU,分配 IP 和添加子网。然后,在“网络视图”窗口,左上侧选择“连接”按钮,使得 CPU 变为蓝色高亮,在 1516CPU 上点击鼠标“右键”并选择“添加新连接”。
图 3-6 添加新连接: (与图 3-1 类似) 此图展示了在 TIA Portal 网络视图中,如何通过右键菜单选择“添加新连接”。
在“创建新连接”窗口中,右侧“类型”选择为“TCP 连接”,左侧选择“未指定”,并在窗口中部选择接口 “PLC_2, PROFINET 接口_1[X1]”
, 点击“添加”创建 TCP 连接。
图 3-7 创建 TCP 连接: 此图显示了在 TIA Portal 中创建 TCP 连接的对话框,用于客户端配置。
“TCP_连接_2”
为建立的连接, 选中该连接, 在属性的“地址详细信息”中可以设置该 TCP 连接的相关信息。
图 3-8 TCP 连接设置: 此图展示了 TCP 连接的属性设置,包括本地和伙伴的 IP 地址和端口号。对于客户端,通信伙伴的 IP 地址和端口号必须填写。
在 1500CPU 的 OB1 组织块中添加 Modbus TCP 客户端功能块 “MB_CLIENT”
。软件将提示为该 FB 块增加一个背景数据块,本例中为 DB1 “MB_CLIENT_DB”
。
图 3-9 添加“MB_CLIENT”功能块: (与图 2-4 类似) 此图显示了在 TIA Portal 程序编辑器中如何插入 MB_CLIENT
功能块。
添加一个全局数据块用于匹配功能块 “MB_CLIENT”
的管脚 “CONNECT”
。本例中为数据块 DB2 (块名称: MB_TCON
)。打开该数据块,创建变量 “MB_Client”
,手动在数据类型框中输入 “TCON_Configured”
,并将该变量关联到功能块 “MB_CLIENT”
的管脚参数 “CONNECT”
上。
图 3-10 添加一个与管脚“CONNECT”匹配的全局数据块: 此图展示了在 TIA Portal 中创建的全局数据块 MB_TCON [DB2]
,其中变量 MB_Client
的数据类型被设置为 TCON_Configured
。
结构 | 含义 | 本例为 CLIENT 时 |
---|---|---|
Interfaced | 本地接口的硬件标识符 (参见图 2-3)。 | 64 |
ID | 引用该连接 (取值范围: 1 到 4095)。输入现有连接的连接 ID (参见图 3-7)。 | 256 |
ConnectionType | 对于组态连接, 选择 254 (十进制)。 | 254 |