STEP 7 V13 SP1 软件版本中的 Modbus TCP 库指令目前最新的版本已升至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 6ES7 215-1AG40-0XB0 V4.1 2.CPU1212C 6ES7 212-1AE40-0XB0 V4.1 3.CSM 1277 6GK7 277-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)
DONE 最后一个作业成功完成,立即将输出参数 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 数据结构的引脚定义