找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
开启左侧

西门子S7-1200 Modbus TCP通信指令块 MB_SERVER即Modbus TCP服务器从站指令块使用实例

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
西门子S7-1200Modbus TCP 通信指令块
MB_SERVERModbus TCP服务器(从站)指令块使用实例
[size=21.3333px]Modbus TCP服务器从站指令块使用实例编程实例下载地址
详细操作说明下载地址(回复本帖可见)
游客,如果您要查看本帖隐藏内容请回复
Modbus TCP客户端主站指令块编程实例下载地址:http://www.jx-auto.cn/thread-11438-1-1.html
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 POLL作为客户端即主站之间进行Modbus TCP 通信为例,详细阐述客户端与服务器侧如何编程及通信的过程。表格列出了具体的实验环境:
  
操作系统
  
  
WIN7 SP1 专业版 64位
  
  
编程软件
  
  
STEP 7 Professional V13 SP1 Update 7
  
  
系统硬件
  
  
1.CPU1214C 6ES7 214-1BG40-0XB0  V4.1
  
表1.Modbus TCP 通信的实验环境
  
CPU类型
  
  
IP地址
  
  
端口号
  
  
硬件标识符
  
  
客户端
  
  
Modbus POLL
  
  
192.168.31.228
  
  
0
  
  
64
  
  
服务器
  
  
CPU 1214C
  
  
192.168.31.12
  
  
502
  
  
64
  
表2.Modbus TCP 通信双方的基本配置
硬件标识符是在“设备组态”中,双击 PROFINET 接口,然后在“属性”中的“硬件标识符”中查看。

图2.S7-1200设备的PROFINET接口硬件标识符
S7-1200 Modbus TCP 服务器编程
“MB_SERVER”指令将处理 Modbus TCP 客户端的连接请求、接收并处理 Modbus 请求并发送响应。
1. 在“ 程序块->OB 1"中调用“MB_SERVER”指令块,然后会生成相应的背景DB块,点击确定,如图3所示。

图3.调用MB_SERVER指令块
该功能块的各个引脚定义如下:
  
DISCONNET
  
  
为0代表被动建立与客户端的通信连接;为1代表终止连接。
  
  
MB_HOLD_REG
  
  
指向 Modbus 保持寄存器的指针。
  
  
CONNECT
  
  
指向连接描述结构的指针。TCON_IP_v4(S7-1200)
  
  
NDR
  
  
为0代表无数据;为1代表从 Modbus 客户端写入新的数据。
  
  
DR
  
  
为0代表无读取的数据;为1代表从 Modbus 客户端读取的数据
  
  
ERROR
  
  
错误位:0:无错误;1:出现错误,错误原因查看STATUS。
  
  
STATUS
  
  
指令的详细状态信息。
  
表3.MB_SERVER 各个引脚定义说明
2. CONNECT 引脚的指针类型
第一步,先创建一个新的全局数据块DB3,并命名为MB_SERVER_TCON,如图4所示(注:图中编号可根据实际需要更改,在我们这实例中已经改为DB3):

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

图5.创建 MB_SERVER 中的 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.31.228,端口号为0,所以 MB_SERVER 服务器侧该数据结构的各项值如图6所示。

图6.MB_SERVER 服务器侧的 CONNECT 数据结构定义
3. S7-1200 服务器侧 MB_SERVER 编程
调用MB_SERVER指令块,实现被客户端读取1000个保持寄存器的值,如图7所示。

图7.MB_SERVER 服务器侧编程
注意:MB_HOLD_REG 指定的数据缓冲区可以设为 DB 块或 M 存储区地址。DB 块可以为优化的数据块,也可以为标准的数据块结构。我们这个测试实例中新建了一个DB2的数据块,并在数据块里面建了一个数组,从而实现客户端能访问1000个保持寄存器。

图8.MB_HOLD_REG数据块
S7-1200 MODBUS TCP 通信调试
S7-1200 MODBUS TCP 服务器侧准备数据,因为初始化中配置的一些数据是0,所以在监控的时候需要将一些配置数据在监控表中写入进去如图9所示:
图中的502服务器端口号,16#0040是硬件标示符的16进制表示方式,16#0001是从站号。

图9配置值写入
客户端连接参数配置,选择TCP/IP,并设定IP地址和端口号,如图10:

图10.客户端连接参数配置
点击确定之后,再点击菜单栏中的安装选择POLL定义,在弹出来如图11中的画面中配置ID号既功能码、起始地址和长度。

11
之后就显示如图12,图12中已经将4000140002的值更改:

在服务器中显示的值如图12

12.服务器数据监视

这个时候只要在客户端或者服务器段更改数据另外一端就会跟着变化,如此MB_SERVER就测试成功了。

楼主热帖
明天会是怎么样的一天呢》?期待中......

大神点评120

klll 2017-2-6 11:26:04 显示全部楼层
1231131412313
whyslc 2017-2-19 09:38:20 显示全部楼层
正需要这个,感谢分享!!
vipvop 2017-2-26 19:24:58 显示全部楼层
西门子S7-1200 Modbus TCP通信指令块
cocoon2006 2017-3-4 23:53:50 显示全部楼层
看着modbus有点头痛,看看有没有启发
hw958 2017-3-27 16:17:38 显示全部楼层
谢谢,请给予下载这个程序的权限。
Cortex 2017-4-1 11:24:28 显示全部楼层
也让让他挥戈退日忽然
hgb32001 2017-4-17 17:13:21 显示全部楼层
西门子S7-1200 Modbus TCP通信指令块 MB_CLIENT即Modbus TCP客户端主站指令块实例下载