Modbus TCP
概述
S7-1200 CPU V4.1 版与 STEP 7 V13 SP1 一起,扩展了 Modbus TCP的功能,可使用增强型 T 块指令。
出于这个原因,S7-1200 支持两组 PtP 指令:
● 早期 Modbus TCP 指令 (页 1148): 这些 Modbus RTU 指令存在于 S7-1200 的 V4.0版本之前。
● Modbus TCP 指令 (页 1062): 这些 Modbus TCP 指令提供了早期指令的全部功能。
选择 Modbus TCP 指令的版本
在 STEP 7 中可使用两个版本的 Modbus TCP 指令:
● 版本 3.0 较初在 STEP 7 Basic/Professional V13 中提供。
● 版本 3.1 在 STEP 7 Basic/Professional V13 SP1 中提供。
可以从兼容性和移植便利性方面考虑,选择将相应的指令版本插入用户程序中。
不要在同一 CPU 程序中同时使用 3.0 和 3.1 指令版本。 用户程序的 Modbus TCP
指令必须具有相同的主版本号(1 1.x、2 2.y 或 V V.z)。
主版本组内的各个指令可具有不同的次版本号 (1.x x)。
单击指令树任务卡上的图标可启用指令树的标题和列。
要更改 Modbus TCP指令的版本,请从下拉列表中选择相应版本。
可以选择一组指令或分别选择各个指令。
使用指令树将 Modbus TCP 指令放入程序时,将在项目树中创建新的 FB 实例。
在项目树的“PLC_x > 程序块 > 系统块 > 程序资源”(PLC_x > Program blocks > Systemblocks > Program resources) 下可看到新的 FB 实例。
要确认程序中 Modbus TCP指令的版本,必须检查项目树的属性而不是程序编辑器中显示的框的属性。
选择项目树的 Modbus TCP FB实例,单击右键,选择“属性”(Properties),然后选择“信息”(Information) 页查看 ModbusTCP 指令的版本号。
CONNECT 参数分配用于建立 PROFINET 连接的数据
必须使用全局数据块并存储所需的连接数据,然后才能在 CONNECT 参数中引用此DB。
1. 创建新的全局 DB 或使用现有全局 DB 来存储 CONNECT 数据。 可使用一个 DB存储多个 TCON_IP_v4 数据结构。 每个 Modbus TCP 客户端或服务器连接使用
一个TCON_IP_v4 数据结构。 可在 CONNECT 参数中引用连接数据。
2. 使用有帮助的名称对 DB 和静态变量进行命名。 例如,将数据块命名为“Modbus连接”,将静态变量命名为“TCPactive_1”(针对 Modbus TCP 客户端连接
1)。
3. 在 DB 编辑器的“数据类型”(Data Type)列中为示例静态变量“TCPactive_1”分配系统数据类型“TCON_IP_v4”。
4. 扩展 TCON_IP_v4 结构,从而可以修改连接参数,如下图所示。
5. 修改 MB_CLIENT 连接的 TCON_IP_v4 结构数据。
6. 输入 MB_CLIENT CONNECT 参数的 DB 结构引用。 本示例中应为“Modbus连接”.TCPactive_1。
修改各 MB_CLIENT 连接的 TCP_IP_v4 DB 数据
● InterfaceID: 在设备组态窗口中单击 CPU PROFINET 端口图像。然后单击“常规”(General) 属性选项卡并使用该处显示的硬件标识符。
● ID: 输入一个介于 1 和 4095 之间的连接 ID 编号。使用底层TCON、TDISCON、TSEND 和 TRCV 指令建立 Modbus TCP 通信,用于OUC(开放式用户通信)。
● ConnectionType: 对于 TCP/IP,使用默认值 16#0B(十进制数 = 11)。
● ActiveEstablished: 该值必须为 1 或 TRUE。 主动连接,由 MB_CLIENT 启动Modbus 通信。
● RemoteAddress: 将目标 Modbus TCP 服务器的 IP 地址输入到四个 ADDR数组单元中。 例如,如上图所示输入 192.168.2.241。
● RemotePort: 默认值为 502。该编号为 MB_CLIENT 试图连接和通信的 Modbus服务器的 IP 端口号。 一些第三方 Modbus 服务器要求使用其它端口号。
● LocalPort: 对于 MB_CLIENT 连接,该值必须为 0。
多个客户端连接
Modbus TCP 客户端支持的并发连接数较多为 PLC 允许的开放式用户通信较大连接数。
PLC 的连接总数(包括 Modbus TCP客户端和服务器)不得**过支持的开放式用户通信较大连接数 。
单独的并发客户端连接必须遵循以下规则:
● 各 MB_CLIENT 连接必须使用一个一的背景 DB
● 必须为各 MB_CLIENT 连接分配一个一的服务器 IP 地址
● 各 MB_CLIENT 连接分配一个一的连接 ID
● 是否需要一的 IP 端口号取决于服务器组态
每个背景 DB 必须使用不同的连接 ID。 总之,背景 DB 和连接 ID成对使用,且对每个连接必须是一的。
除了上面列出的 MB_CLIENT 错误外,也可以从底层传输块通信指令(TCON、TDISCON、TSEND 和TRCV)返回错误。
CONNECT 参数分配用于建立 PROFINET 连接的数据
必须使用全局数据块并存储所需的连接数据,然后才能在 CONNECT 参数中引用此DB。
1. 创建新的全局 DB 或使用现有全局 DB 来存储 CONNECT 数据。 可使用一个 DB存储多个 TCON_IP_v4 数据结构。 每个 Modbus TCP 客户端或服务器连接使用
一个TCON_IP_v4 数据结构。 可在 CONNECT 参数中引用连接数据。
2. 使用有帮助的名称对 DB 和静态变量进行命名。 例如,将数据块命名为“Modbus连接”,将静态变量命名为“TCPpassive_1”(针对 Modbus TCP 服务器连接
1)。
3. 在 DB 编辑器的“数据类型”(Data Type)列中为示例静态变量“TCPactive_1”分配系统数据类型“TCON_IP_v4”。
4. 扩展 TCON_IP_v4 结构,从而可以修改连接参数,如下图所示。
5. 修改 MB_SERVER 连接的 TCON_IP_v4 结构数据。
6. 输入 MB_SEVER CONNECT 参数的 DB 结构引用。 本示例中应为“Modbus连接”.TCPpassive_1。
修改各 MB_SERVER 连接的 TCP_IP_v4 DB 数据
● InterfaceID: 在设备组态窗口中单击 CPU PROFINET 端口图像。然后单击“常规”(General) 属性选项卡并使用该处显示的硬件标识符。
● ID: 为该连接输入一个介于 1 和 4095 之间的一编号。 使用底层TCON、TDISCON、TSEND 和 TRCV 指令建立 Modbus TCP 通信,用于OUC(开放式用户通
信)。 较多允许八个同步 OUC 连接。
● ConnectionType: 对于 TCP/IP,使用默认值 16#0B(十进制值 = 11)。
● ActiveEstablished: 该值必须为 0 或 FALSE。 被动连接,MB_SERVER 正在等待Modbus 客户端的通信请求。
● RemoteAddress: 有两个选项。
– 使用 0.0.0.0,则 MB_CLIENT 将响应来自任何 TCP 客户端的 Modbus 请求。
– 输入目标 Modbus TCP 客户端的 IP 地址,则 MB_CLIENT 仅响应来自该客户端 IP地址的请求。 例如,如上图所示输入 192.168.2.241。
● RemotePort: 对于 MB_SERVER 连接,该值必须为 0。
● LocalPort: 默认值为 502。该编号为 MB_SERVER 试图连接和通信的 Modbus客户端的 IP 端口号。 一些第三方 Modbus 客户端要求使用其它端口号。
Modbus 和过程映像地址
MB_SERVER 允许进入的 Modbus 功能代码(1、2、4、5 和15)在输入/输出过程映像中直接对位/字进行读/写。 对于数据传输功能代码(3、6 和16),
MB_HOLD_REG 参数必须定义为大于一个字节的数据类型。 下表显示了 Modbus地址到 CPU 中过程映像的映射。
进入的 Modbus 消息功能代码(3、6 和 16)在 Modbus保持寄存器中读取/写入字,该寄存器可以在 M 存储区或数据块中。 保持寄存器的类型由MB_HOLD_REG 参
数*。
说明
MB_HOLD_REG 参数分配
Modbus 保持寄存器可以位于标准全局 DB 或 M 存储区地址中。
对于 M 存储区地址中的 Modbus 保持寄存器,使用 Any 指针格式。
其格式为P#“位地址”“数据类型”“长度”。 例如 P#M1000.0 WORD 500
下表给出了 Modbus 地址到保持寄存器的映射示例,这种映射用于 Modbus 功能代码03(读取字)、06(写入字)和 16(写入字)。 DB 地址的实际上限取决于
每种 CPU型号的较大工作存储器限值和 M 存储器限值。
多个服务器连接
可以创建多个服务器连接。 单个 PLC 可与多个 Modbus TCP 客户端建立并发连接。
Modbus TCP 服务器支持的并发连接数较多为 PLC 允许的开放式用户通信较大连接数。
PLC 的连接总数(包括 Modbus TCP客户端和服务器)不得**过支持的开放式用户通信较大连接数 。
可在客户端和服务器类型的连接之间共享 Modbus TCP 连接。
单独的并发服务器连接必须遵循以下规则:
● 各 MB_SERVER 连接必须使用一个一的背景数据块。
● 必须为各 MB_SERVER 连接分配一个一的 IP 端口号。 每个端口只能用于 1个连接。
● 必须为各 MB_SERVER 连接分配一个一的连接 ID。
● 必须为每个连接(带有各自的背景数据块)单独调用 MB_SERVER。
连接 ID 对于每个单独的连接必须是一的。 每个单独的背景 DB 必须使用单一的连接ID。 背景 DB 和连接 ID 成对使用,且对每个连接必须是一的。
MB_SERVER 变量
下表给出了存储在 MB_SERVER背景数据块中的公共静态变量(可在用户程序中使用)。
用户程序可以将数据写入 HR_Start_Offset ,控制 Modbus 服务器操作。可读取其它变量以监视 Modbus 的状态。
HR_Start_Offset
Modbus 保持寄存器地址从 40001 开始。 这些地址与保持寄存器的 PLC存储器起始地址对应。 不过,可以使用“HR_Start_Offset”变量将 Modbus
保持寄存器的起始地址定义为除 40001 外的其它数字。
例如,如果保持寄存器起始于 MW100 且长度为 100 个字, 则偏移量 20可*保持寄存器的起始地址为 40021 而不是 40001。小于 40021 和大于 40119
的任何地址都将导致寻址错误。
Modbus 保持寄存器寻址示例
HR_Start_Offset 是 MB_SERVER 背景数据块中的一个字数据,用于分配 Modbus保持寄存器的起始地址。 将 MB_SERVER放入程序后,可利用参数助手下拉列表设
置该公共静态变量。
例如,将 MB_SERVER 放入 LAD 程序段后,可以切换到上一程序段,并分配HR_Start_Offset。 必须在执行 MB_SERVER 前分配起始地址。
使用默认 DB 名称
输入 Modbus 服务器变量:
1. 将光标放在参数字段中,然后输入 m字符。
2. 从 DB名称下拉列表中选择“MB_SERVER_DB”。
3. 从 DB变量下拉列表中选择“MB_SERVER_DB.HR_Start_Offset”。
MB_SERVER 执行条件代码 1
1 除了上面列出的 MB_SERVER错误外,也可以从底层传输块通信指令(TCON、TDISCON、TSEND 和TRCV)返回错误。
CPU 1211C 1211 CPU AC/DC/Rly
1211 CPU DC/DC/DC
1211 CPU DC/DC/Rly
6ES7 211-1BE40-0XB0
6ES7 211-1AE40-0XB0
6ES7 211-1HE40-0XB0
CPU 1212C 1212 CPU AC/DC/Rly
1212 CPU DC/DC/DC
1212 CPU DC/DC/Rly
6ES7 212-1BE40-0XB0
6ES7 212-1AE40-0XB0
6ES7 212-1HE40-0XB0
CPU 1214C 1214 CPU AC/DC/Rly
1214 CPU DC/DC/DC
1214 CPU DC/DC/Rly
6ES7 214-1BG40-0XB0
6ES7 214-1AG40-0XB0
6ES7 214-1HG40-0XB0
CPU 1215C
CPU 1217C
1215 CPU AC/DC/Rly
1215 CPU DC/DC/DC
1215 CPU DC/DC/Rly
1217 CPU DC/DC/DC
6ES7 215-1BG40-0XB0
6ES7 215-1AG40-0XB0
6ES7 215-1HG40-0XB0
6ES7 217-1AG40-0XB0
数字量扩展模块 SM 1221
SM 1221
SM 1222
SM 1222
SM 1222
SM 1222
SM 1222
SM 1223
SM 1223
SM 1223
SM 1223
SM 1223
8 x 24 V DC 输入
16 x 24 V DC 输入
8 x 继电器输出
8 x 继电器双态输出
8 x 24 V DC 输出
16 x 继电器输出
16 x 24 V DC 输出
8 x 24 V DC 输入 /8 x 继电器输出
8 x 24 V DC 输入 /8 x 24 V DC 输出
16 x 24 V DC 输入 /16 x 继电器输出
16 x 24 V DC 输入 /16 x 24 V DC 输出
8 x 120/230 V AC 输入 /8 x 继电器输出
6ES7 221-1BF32-0XB0
6ES7 221-1BH32-0XB0
6ES7 222-1HF32-0XB0
6ES7 222-1XF32-0XB0
6ES7 222-1BF32-0XB0
6ES7 222-1HH32-0XB0
6ES7 222-1BH32-0XB0
6ES7 223-1PH32-0XB0
6ES7 223-1BH32-0XB0
6ES7 223-1PL32-0XB0
6ES7 223-1BL32-0XB0
6ES7 223-1QH32-0XB0
模拟量扩展模块 SM 1231
SM 1231
SM 1231
SM 1231
SM 1231
SM 1231
SM 1231
SM 1232
SM 1232
SM 1234
4 x 13 位模拟量输入
8 x 13 位模拟量输入
4 x 16 位热电阻模拟量输入
4 x 16 位热电阻模拟量输入
4 x 16 位热电偶模拟量输入
8 x 16 位热电阻模拟量输入
8 x 16 位热电偶模拟量输入
2 x 14 位模拟量输出
4 x 14 位模拟量输出
4 x 13 位模拟量输入 /2 x 14 位模拟量输出
6ES7 231-4HD32-0XB0
6ES7 231-4HF32-0XB0
6ES7 231-5ND32-0XB0
6ES7 231-5PD32-0XB0
6ES7 231-5QD32-0XB0
6ES7 231-5PF32-0XB0
6ES7 231-5QF32-0XB0
6ES7 232-4HB32-0XB0
6ES7 232-4HD32-0XB0
6ES7 234-4HE32-0XB0
信号板数字量 SB 1221
SB 1221
SB 1222
SB 1222
SB 1223
SB 1223
SB 1223
DC 200 kHz,4 x 24 V DC 输入
DC 200 kHz,4 x 5 V DC 输入
DC 200 kHz,4 x 24 V DC 输出,0.1 A
DC 200 kHz,4 x 5 V DC 输出,0.1 A
2 x 24 V DC 输入 /2 x 24 V DC 输出
DC/DC 200 kHz,2 x 24 V DC 输入 /2 x 24 V DC 输出,0.1 A
DC/DC 200 kHz,2 x 5 V DC 输入 /2 x 5 V DC 输出,0.1 A
6ES7 221-3BD30-0XB0
6ES7 221-3AD30-0XB0
6ES7 222-1BD30-0XB0
6ES7 222-1AD30-0XB0
6ES7 223-0BD30-0XB0
6ES7 223-3BD30-0XB0
6ES7 223-3AD30-0XB0
信号板模拟量 SB 1231
SB 1231
SB 1231
SB 1232
1 x 12 位模拟量输入
1 x 16 位热电阻模拟量输入
1 x 16 位热电偶模拟量输入
1 x 12 位模拟量输出
6ES7 231-4HA30-0XB0
6ES7 231-5PA30-0XB0
6ES7 231-5QA30-0XB0
6ES7 232-4HA30-0XB0
通信扩展模块 / 通信板 CM 1278
CM 1241
CM 1241
CM 1243-5
CM 1242-5
CP 1242-7
CB 1241
4 x I/O Link MASTER
RS 485/422
RS 232
PROFIBUS DP 主站模块
PROFIBUS DP 从站模块
GPRS 模块
RS 485
6ES7 278-4BD32-0XB0
6ES7 241-1CH32-0XB0
6ES7 241-1AH32-0XB0
6GK7 243-5DX30-0XE0
6GK7 242-5DX30-0XE0
6GK7 242-7KX30-0XE0
6ES7 241-1CH30-1XB0
TS 模块
TS Adapter IE Basic
TS Module Modem
TS Module ISDN
TS Module RS232
6ES7 972-0EB00-0XA0
6ES7 972-0MM00-0XA0
6ES7 972-0MD00-0XA0
6ES7 972-0MS00-0XA0
S7-1200*处理器单元(CPU)
常规规范
型号 CPU 1211C CPU 1212C CPU 1214C CPU 1215C CPU 1217C
CPU 1211C 技术规范
型号 CPU 1211C AC/DC/RLY CPU 1211C DC/DC/RLY CPU 1211C DC/DC/DC
订货号(MLFB) 6ES7211-1BE40-0XB0 6ES7211-1HE40-0XB0 6ES7211-1AE40-0XB0
型号(续) CPU 1211C AC/DC/RLY CPU 1211C DC/DC/RLY CPU 1211C DC/DC/DC
CPU 1212C 技术规范
型号 CPU 1212C AC/DC/RLY CPU 1212C DC/DC/RLY CPU 1212C DC/DC/DC
订货号(MLFB) 6ES7 212-1BE40-0XB0 6ES7 212-1HE40-0XB0 6ES7 212-1AE40-0XB0
型号(续) CPU 1212C AC/DC/RLY CPU 1212C DC/DC/RLY CPU 1212C DC/DC/DC
CPU 1214C 技术规范
型号 CPU 1214C AC/DC/RLY CPU 1214C DC/DC/RLY CPU 1214C DC/DC/DC
订货号(MLFB) 6ES7 214-1BG40-0XB0 6ES7 214-1HG40-0XB0 6ES7 214-1AG40-0XB0
型号(续) CPU 1214C AC/DC/RLY CPU 1214C DC/DC/RLY CPU 1214C DC/DC/DC
CPU 1215C 技术规范
型号 CPU 1215C AC/DC/ 继电器 CPU 1215C DC/DC/ 继电器 CPU 1215C DC/DC/DC
订货号(MLFB) 6ES7 215-1BG40-0XB0 6ES7 215-1HG40-0XB0 6ES7215-1AG40-0XB0
型号(续) CPU 1215C AC/DC/ 继电器 CPU 1215C DC/DC/ 继电器 CPU 1215C DC/DC/DC
CPU 1217C 技术规范
型号 CPU 1217C DC/DC/DC
订货号(MLFB) 6ES7 217-1AG40-0XB0
型号(续) CPU 1217C DC/DC/DC
请按订货号进行购买