加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
全国服务热线15267534595

广东省佛山市SIEMENS华南地区代理商-西门子(授权)自动化与驱动代理商-西门子变频器-西门子PLC工业模块

更新时间
2024-07-04 09:10:00
价格
请来电询价
变频器
西门子代理商
触摸屏
西门子一级代理
伺服电机
西门子一级总代理
联系电话
18126392341
联系手机
15267534595
联系人
梁涛
立即询价

详细介绍
S7-1200 Modbus TCP 通信指令块

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

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

2. 固件版本:S7-1200 CPU 的固件版本V4.1及其以上

图片

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

S7-1200 Modbus TCP 实验环境

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

操作系统

WIN7 SP1 专业版 64位

编程软件

STEP 7 Professional V13 SP1 Update 5

系统硬件

1.CPU1215C   6ES7215-1AG40-0XB0   V4.1

2.CPU1212C   6ES7212-1AE40-0XB0   V4.1

3.CSM1277    6GK7277-1aa10-0aa0

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


CPU类型

IP地址

端口号

硬件标识符

客户端

CPU 1212C

192.168.0.6

0

64

服务器

CPU 1215C

192.168.0.4

502

64

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

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

图片

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

S7-1200 Modbus TCP 客户端编程

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

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

图片

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

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

REQ与服务器之间的通信请求,上升沿有效。
DISCONNECT

通过该参数,可以控制与 Modbus TCP服务器建立和终止连接。0(默认):建立连接;1:断开连接。

MB_MODE

选择 Modbus 请求模式(读取、写入或诊断)。0:读;1:写。

MB_DATA_ADDR

由“MB_CLIENT”指令所访问数据的起始地址。

MB_DATA_LEN数据长度:数据访问的位或字的个数。
MB_DATA_PTR指向 Modbus 数据寄存器的指针。
CONNECT

指向连接描述结构的指针。TCON_IP_v4(S7-1200)

DONEZui后一个作业成功完成,立即将输出参数 DONE 置位为“1”。
BUSY作业状态位:0:无正在处理的“MB_CLIENT”作业;1:“MB_CLIENT”作业正在处理。
ERROR错误位:0:无错误;1:出现错误,错误原因查看STATUS。
STATUS

指令的详细状态信息。

表4. MB_CLIENT 各引脚定义说明

2. CONNECT 引脚的指针类型

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

图片

图4. 创建全局数据块

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

图片

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

各个引脚定义说明如下:

InterfaceId硬件标识符。
ID

连接ID,取值范围1~4095

Connection Type连接类型。TCP连接默认为:16#0B
ActiveEstablished建立连接。主动为1(客户端),被动为0(服务器)。
ADDR服务器侧的IP地址
RemotePort远程端口号
LocalPort本地端口号

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

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

图片

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

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

3. 创建 MB_DATA_PTR 数据缓冲区

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

图片

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

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

图片

图8. MB_DATA_PTR 数据缓冲区结构

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

图片

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

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

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

图片

图10. MB_CLIENT 指令块编程

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

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


相关产品

联系方式

  • 电  话:18126392341
  • 联系人:梁涛
  • 手  机:15267534595
  • 微  信:15267534595