aix 查询db2客户端版本_S7-1200 MODBUS TCP客户端指令使用方法

S7-1200 Modbus TCP 通信指令块

  STEP 7 V13 SP1 软件版本中的 Modbus TCP 库指令目前最新的版本已升至V4.0,该版本的使用需要具备以下两个条件:

1. 软件版本:STEP 7 V13 SP1及其以上

2. 固件版本:S7-1200 CPU 的固件版本V4.1

76f5703c6eac3e3a22d3d1cfb7daf2a1.png

图1. Modbus TCP V4.0 版本指令块

S7-1200 Modbus TCP 实验环境

  下面以两台S7-1200之间进行 Modbus TCP 通信为例,详细阐述客户端与服务器侧如何编程及通信的过程。表格列出了具体的实验环境:

4c376ad0888b939c01c16150ab794cf3.png

表1. Modbus TCP 通信的实验环境

5b79428c92d274b23b7d7b14f43a5fa3.png

表2. Modbus TCP 通信双方的基本配置

  硬件标识符是在“设备组态”中,双击 PROFINET 接口,然后在“属性”中的“硬件标识符”中查看。

06551f18435bb9b91f2870198568779b.png

图2. S7-1200设备的PROFINET接口硬件标识符

S7-1200 Modbus TCP 客户端编程

  S7-1200 客户端侧需要调用MB_CLIENT指令块,该指令块主要完成客户机和服务器的TCP连接、发送命令消息、接收响应以及控制服务器断开的工作任务。

  1. 将MB_CLIENT 指令块在“ 程序块 -> OB1 ”中的程序段里调用,调用时会自动生成背景DB ,点击确定即可。

f46b41600c09f15ade8b7f768e4d1e88.png

图3. Modbus TCP 客户端侧指令块

该功能块各个引脚定义如下:

9e043c5e0279ef9fc195c5aee2e417b2.png

表4. MB_CLIENT 各引脚定义说明

  2. CONNECT 引脚的指针类型

  第一步,先创建一个新的全局数据块 DB2:

052781ee205024228588c6db8ceb1e02.png

图4. 创建全局数据块

  第二步,双击打开新生成的DB块,定义变量名称为“aa",数据类型为“TCON_IP_v4”(可以将 TCON_IP_v4 拷贝到该对话框中),然后点击“回车”按键。该数据类型结构创建完毕。如图5所示:

66490756d8a4c766873dc855163a9d4f.png

图5. 创建 MB_CLIENT 中的TCP连接结构的数据类型

  各个引脚定义说明如下:

58f1fb59438d8e727f2d3196b2e3595b.png

表4. TCON_IP_v4 数据结构的引脚定义

  本文远程服务器的IP地址为192.168.0.4,远程端口号设为502。所以客户端侧该数据结构的各项值为:

160a0bab956599c00ba171005bac4040.png

图6. MB_CLIENT 侧 CONNECT 引脚数据定义

注意: CONNECT引脚的填写需要用符号寻址的方式。

  3. 创建 MB_DATA_PTR 数据缓冲区

  第一步,创建一个全局数据块 DB3,创建方法可以参考上面的图3,数据块的名称如图7所示:

ce35b03c33717379b4ef2dd7387400c6.png

图7. 生成的两个DB块名称

  第二步,建议一个数组的数据类型,以便通信中存放数据,请参考图8所示:

e4b9b3543f81e96e41e95ba0f85109ae.png

图8. MB_DATA_PTR 数据缓冲区结构

  注意:MB_DATA_PTR指定的数据缓冲区可以为DB块或M存储区地址中。DB块可以为优化的数据块,也可以为标准的数据块结构。若为优化的数据块结构,编程时需要以符号寻址的方式填写该引脚;若为标准的数据块结构(可以右键单击DB块,“属性”中将“优化的块访问”前面的勾去掉,如下图9所示),需要以绝对地址的方式填写该引脚。本文以标准的数据块(默认)为例进行编程。

266c4b74f351f99821816c2471a2ef83.png

图9. 修改 DB 块属性为标准的块结构

  4. 客户端侧完成指令块编程

  调用 MB_CLIENT 指令块,实现从 Modbus TCP 通信服务器中读取2个保持寄存器的值,如图10所示:

95870990e7049d255d03bf2a0944288e.png

图10. MB_CLIENT 指令块编程

  5. 将整个项目下载到S7-1200

  待Modbus TCP 服务器侧准备就绪,给MB_CLIENT指令块的REQ引脚一个上升沿,将读取到的数据放入 MB_DATA_PTR引脚指定的DB 块中。具体的实验结果可以查看S7-1200 服务器侧编程。

常见问题

56b9e7a2801811beeef6336246b606a1.png

MB_CLIENT 指令的背景数据块中的 "MB_Unit_ID" 有什么功能?

  S7-1200 CPU 作为 Modbus TCP 客户端与 Modbus TCP 服务器通信,当尝试访问比 Modbus TCP 服务器更低端的串行子网中的设备,会有报错 "无法建立连接"。

  这种情况下, Modbus TCP 服务器作为 Modbus RTU 协议中的网关,"MB_Unit_ID" 参数相当于 Modbus RTU 协议中的从站地址。

  Modbus TCP 客户端直接向 Modbus TCP 服务器发送请求,Modbus TCP 服务器通过识别 "MB_UNIT_ID" 参数,将请求转发到从站设备。

  在 S7-1200 项目中,选择系统块,双击打开 MB_CLIENT 指令的背景数据块“MB_CLIENT_DB”, 在静态变量Static下可以找到 MB_Unit_ID (默认起始值16#FF,等于十进制 255)。如下图 11 所示:

6c1aa738375a263647719327a48bce38.png

图 11. MB_Unit_ID

  例如,当 S7-1200 做客户端与电脑上的 Modbus TCP 调试软件 Modsim 通信时,会遇到如上“无法建立连接”的问题。

  这时,修改调试软件 Modsim 中Device Id 为255,使之等于 MB_Unit_ID 的值,即可建立联系。如下图 12 所示:

a75ead5ffa38fd03ac806403535c9b27.png

图 12. Device Id

2f418c2fc7907e721a0ff4c304d1ce1e.png

注意:如果 Modbus TCP 服务器无法更改 Device Id 的值, 则修改S7-1200 项目中MB_Unit_ID数值, 使双方的参数一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值