- {{item.name}}
和modsim进行MODBUS TCP通信
- 1
- 708
1.MB_CLIENT 介绍
“MB_CLIENT”指令作为 Modbus TCP 客户端通过 PROFINET 接口进行通信。通过“MB_CLIENT”指令,可以与 MODBUS TCP 服务器之间建立连接、发送 Modbus 请求、接收响应。
本测试基于以下测试环境,如表1-1所示
| TIA Portal 版本: | V20 |
| S7-1200 G2: | CPU 1214C DC/DC/DC 6ES7 214-1AH50-0XB0 V1.0.2 |
| MB_CLIENT 版本: | V6.0 |
通信连接如图1.1所示:

图1.1 S7-1200 G2 与 ModSim 做 Modbus TCP 通信仿真
2.MB_CLIENT 功能块调用
2.1 添加 PLC 并建立通信变量
(1)在 TIA Portal 中添加 S7-1200 G2 PLC,如图2.1.1所示。
图2.1.1 TIA Portal 中添加 S7-1200 G2
(2)设置 CPU 的 IP 地址,勾选“启用系统存储器字节”,如图2.1.2所示

图2.1.2 配置 S7-1200 G2 属性
(3)建立通信用变量,本示例通信 10 个字的数据,数据类型为 Int 数组,如图2.1.3所示


图2.1.3 创建 DB 数据块
2.2 建立通信参数 DB
(1)新加入用于通信连接参数的 DB,在 DB 块中输入数据类型为“TCON_IP_V4”的变量,生成如下 DB 变量结构,该结构需要自动生成,不能手动创建,如图2.2.1所示,具体通信连接参数参见表2.2.1所示。

图2.2.1 通信连接参数
表2.2.1 通信连接参数
| 参数 | 说明 |
| InterfaceId | 网口硬件标识符:对于本示例使用网口 64。 |
| ID | 连接 ID,本 CPU 上通信的 ID 是唯一的,取值范围 1~4095:本示例使用 1 |
| Connection Type | 连接类型:TCP 连接默认为:16#0B |
| ActiveEstablished | 该处参数设置为 1。主动连接为 1(客户端),被动连接为 0(服务器):本示例 PLC 作为 Client 主动连接,配置值为 1 |
| ADDR | 服务器侧的 IP 地址:本示例中 ModSim 所在 PC 的地址为 192.168.0.11 |
| RemotePort | 远程服务器端口号:本示例中 ModSim 使用端口号为 502 |
| LocalPort | 本地 PLC 的端口号:如果服务器没有端口要求,不需要设置,采用默认值 0,使用随机端口 |
(2)InterfaceId 可以在 CPU 的变量中查询到,查询方式如下图:

图2.2.2 通信接口硬件标识符查询
2.3 调用 MB_CLIENT 功能块
(1)从指令库中拖拽 MB_CLIENT 指令到程序段,建立背景实例,如图2.3.1所示。

图2.3.1 插入 MB_CLIENT 指令
(2)连接功能块引脚,如图2.3.2所示。

图2.3.2 MB_CLIENT 指令引脚
功能块引脚定义如下表:
表2.3.1 MB_CLIENT 指令引脚定义
| 参数 | 说明 |
| REQ | 与服务器之间的通信请求,可以上升沿触发(仅触发一次),也可以用常 1,常1时会循环触发作业 |
| DISCONNECT | 通过该参数,可以控制与 Modbus TCP 服务器建立和终止连接。 0:建立连接;1:断开连接 |
| MB_MODE | 选择 Modbus 请求模式(读取、写入或诊断) |
| MB_DATA_ADDR | 由“MB_CLIENT”指令所访问数据的起始地址 |
| MB_DATA_LEN | 数据长度: 数据访问的位或字的个数 |
| MB_DATA_PTR | 本地收发数据缓冲区的指针 |
| CONNECT | 指向连接描述结构的指针,使用 TCON_IP_v4 数据类型结构 |
| DONE | 作业完成且没错误,仅出一个周期“1” |
| BUSY | 作业状态位:0:无正在处理的“MB_CLIENT”作业;1:“MB_CLIENT”作业正在处理 |
| ERROR | 错误位:0:无错误;1:出现错误(仅在作业出错时输出一个周期),错误原因查看STATUS |
| STATUS | 指令的详细状态信息 |
注意:
- 本示例从 modbus 服务器保持性寄存器读取10个字的数据,起始地址为40001,基于此,引脚参数配置
MB_MODE 为 0
MB_DATA_ADDR 为 40001
MB_DATA_LEN 为 10。
- MB_CLIENT 引脚 MB_MODE/ MB_DATA_ADDR/ MB_DATA_LEN 参数设置,参考“10.1.4.3 MB_MODE、MB_DATA_ADDR、MB_DATA_LEN、 Modbus TCP 功能码等之间的关系”
- MB_CLIENT 引脚 DONE, ERROR,在功能块引用时,仅输出一个周期 True,使用博途软件直接监视,可能无法监视到为 True,需要抓取或者置位操作;STATUS 输出,在 ERROR 为 True 的 1个周期输出错误代码,查询错误代码需要抓取,参考第3章节。
- MB_DATA_PTR 引脚,也可以连接指针形式的参数,例如 P#DB1.DBX0.0 WORD 10,但需要注意关闭数据块属性中的“优化的块访问”。
(3)当 Modbus TCP 服务器侧需要配置 DeviceID 时,MB_CLIENT 背景参数 MB_Unit_ID 必须设置,默认为 16#FF,本示例 ModSim 作为服务器,必须使用 Device ID,ModSim 的 DeviceID 默认为 1,所以将 MB_Unit_ID 改为 1,如图2.3.3所示。

图2.3.3 MB_Unit_ID 设置
注意,MB_Unit_ID 的起始值和监视值必须同时与服务器 DeiviceID 相同

图2.3.4 ModSim 的 DeviceID 查询
2.4 通信结果
监视通信 DB 中的变量及 ModSim 软件,读取结果如图2.4.1所示。
图2.4.1 监视通信结果
3.MB_CLIENT 状态及错误代码抓取
MB_CLIENT 功能块的 Done 位,Error 位,及错误状态输出仅存在一个周期,在博途软件中通常无法直接监视,需要使用如下方法抓取查看,如图3.1和3.2所示。

图3.1 Done 位状态计数

图3.2 Error 位状态计数及错误代码抓取
错误代码查询如下表:
表3.1 协议错误代码
| STATUS (W#16#) | Modbus 服务器返回的代码 (B#16#) | 错误说明 |
| 8381 | 01 | 不支持功能代码 |
| 8382 | 03 | 数据长度错误 |
| 8383 | 02 | 数据地址错误或访问的数据超出 MB_DATA_PTR 的地址区 |
| 8384 | 03 | 数据值错误 |
| 8385 | 03 | 不支持诊断错误代码(功能代码 08) |
表3.2 参数错误代码
| STATUS (W#16#) | 错误说明 |
| 7001 | MB_CLIENT 正在等待 Modbus 服务器响应指定 TCP 端口处的连接或断开连接请求,仅在第一次执行连接或断开操作时才报告此代码 |
| 7002 | MB_CLIENT 正在等待 Modbus 服务器响应指定 TCP 端口处的连接或断开连接请求,等待连接或断开操作完成时,将针对任何后续执行报告此代码 |
| 7003 | 断开操作已成功完成(仅在一个 PLC 扫描周期内有效) |
| 80C8 | 服务器在指定的时间内无响应,请检查与 Modbus 服务器设备的连接,尝试过任何组态的重试操作后,才报告此错误 |
| 8188 | 参数 MB_MODE 的值无效 |
| 8189 | 参数 MB_DATA_ADDR 的值无效 |
| 818A | 参数 MB_DATA_LEN 的长度无效 |
| 818B | 参数 MB_DATA_PTR 中的指针无效 |
| 818C | 参数 MB_DATA_PTR 指向优化的区域,必须为“标准与 S7- 300/400 兼容”的 DB 或 M 区 |
| 8200 | 端口正在处理另一个 Modbus 请求 |
| 8380 | 接收到的 Modbus 帧有缺陷或接收到的字节太少 |
| 8387 | 指定的连接 ID 与用于先前请求的ID不同,只能有一个单个连接 ID 与每个 MB_CLIENT 背景数据块配合使用 |
| 8388 | Modbus 服务器返回一些和请求内容不同的数据,这只适合 Modbus 功能 15 或 16 |
除了上面列出的错误外,也可以从底层传输通信指令(TCON、TDISCON、TSEND和TRCV)返回错误,参考相应指令的错误代码。
4. MB_CLIENT 轮询
对同一个服务器读取超过单次读取变量数量最大值,或者同时需要读写操作时,需要做轮询处理。以下是对同一服务器,读取并同时写操作的轮询程序示例,如图4.1所示。
轮询操作需要注意以下事项:
- 所有参与轮询的功能块需要使用相同的背景数据块;
- 功能块的 REQ 需要使用上升沿,仅执行一次;
- “CONNECT”引脚,必须使用完全相同的参数;

图4.1 MB_Client 轮询示例程序
说明:ModSim 做 Modbus TCP server 测试软件,Modscan32 做 Modbus TCP Client 测试软件,两者都是第三方软件,需要用户自行从 internet 网络上下载。
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错



西门子官方商城


{{item.nickName}}