西门子S7-1500Modbus TCP通信

modbus协议是一项应用层报文传输协议,包括ascii、rtu、tcp三种报文类型。标准的modbus协议物理层接口有rs232、rs422、rs485和以太网接口,采用master/slave方式通信。modbus设备可分为主站(master)和从站(slave),主站只有一个,从站有多个,主站向各从站发送请求帧,从站给予响应。在使用tcp通信时,主站为client端,主动建立连接;从站为server端,等待连接。对于这三种通信在数据模型和功能调用上都是相同的,只有封装方式是不同的。modbus tcp协议是一个运行在tcp/ip网络连接中的一种协议,与传统的串口方式相比,modbus tcp插入一个标准的modbus报文头到 tcp报文中,不再带有差错校验和地址域,如下图所示。mbap为报文头,长度为7字节。
一、simatic s7-1500 modbustcp 通信使用要求
从tia portal v12 sp1开始软件中增加了s7-1500的modbus tcp块库(v3.0及以上版本),用于s7-1500与支持modbus tcp的通信伙伴进行通信。s7-1500支持modbustcp指令的所有库版本,在用户程序中调用和参数化mb_client和mb_server指令。 mb_client指令通过cpu 或 cm/cp 的本地接口作为modbustcp客户端进行通信,无需要任何额外的硬件支持。使用mb_client指令在客户端和服务器之间建立连接,发送请求和接收响应,并控制断开连接。 mb_server指令通过cpu 或 cm/cp 的本地接口作为modbustcp服务器进行通信,无需要任何额外的硬件支持。mb_server指令处理modbustcp客户端的连接请求,接收modbus客户端的请求并发送响应消息。
软件需求:
tia v16 professionalmodbus pollmodbus slave
硬件需求:
cpu 1511-1 pn v2.8cp 1543-1 v2.2
二、modbus tcp 通信程序
1、打开 tia portal v16软件,新建一个项目命名为 modbustcp,在项目中添加 cpu1511-1pn v2.8 及cp1543-1 v2.2,为cp1543-1以太网接口新建一个子网并设置 ip地址为 192.168.0.3。
2、在 cpu1511-1pn的 ob1组织块中添加modbus tcp server功能块 mb_server,软件将提示会为该 fb块增加一个背景数据块,本例中为 db1mb_server_db,如下图所示。接下来为指令块分配引脚,各引脚的具体含义如下图所示。
3、保持性寄存器存储区与mb_server管脚参数mb_hold_reg进行映射,对于线圈、离散输入、输入寄存器等通过功能块均已经与 s7-1500的过程映像区进行了映射,其映射地址对应如下图所示。
4、使用上述指令实现cp1543-1为modbus tcp的 server与通信伙伴建立通信,通过表2可知connect参数的设定有两种方式,下面分别介绍这两种方式如何创建connect参数。
1)使用tcon_ip_v4结构创建连接参数。
添加一个全局数据块用于匹配功能块mb_server的管脚connect,本例中为数据块db2(块名称:mb_connect),打开该数据块,创建变量 mb_server,手动在数据类型框中输入tcon_ip_v4,并将该变量关联到功能块mb_server的管脚参数connect上。
2)通过网络视图创建tcp连接后,再使用tcon_configured结构创建连接参数。
在网络视图窗口,左上侧选择连接按钮,选择”tcp连接“,然后在cpu上点击鼠标右键并选择添加新连接。在添加新连接窗口中,类型选择为tcp连接,伙伴选择未指定,本地接口选择cp1543-1,以太网接口_1[x1],分配本地连接id,服务器为被动连接,点击 添加创建tcp 连接。
tcp_连接_1为建立的连接,选中该连接,在属性的地址详细信息中可以设置该tcp 连接的相关信息。
添加一个全局数据块用于匹配功能块mb_server的管脚connect,本例中为数据块db2(块名称:mb_connect),打开该数据块,创建变量 mb_server,手动在数据类型框中输入tcon_configured,并将该变量关联到功能块mb_server的管脚参数connect上。