• {{item.name}}
{{item.name}}
{{item2.name}}
更多

Modbus_TCP_V4 服务器

star star star star star
0 分
  • 使用操作
发布时间:2024年01月22日
  • 0
  • 27
Modbus_TCP_V4 服务器

S7-1200 Modbus TCP 通信服务器指令块 MB_SERVER

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

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

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

A screenshot of a computer

Description automatically generated

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

V4.0 作为 Modbus TCP 新版指令的第一个基础版本。

旧版指令主要应用于固件版本 V4.0 及其以前的 CPU:

S7-1200 Modbus TCP 实验环境

下面以两台 S7-1200 之间进行 Modbus TCP 通信为例,详细阐述客户端与服务器侧如何编程及通信的过程,本文档只介绍服务器部分组态编程,客户端部分参见客户端文档。

表 1 列出了具体的实验环境,表 2 列出了双方 CPU 通信所需主要参数。

操作系统WIN7 SP1 专业版 64 位
编程软件STEP 7 Professional V13 SP1 Update 5
系统硬件1. CPU1212C 6ES7212-1AE40-0XB0 V4.1
2. CPU1215C 6ES7215-1AG40-0XB0 V4.1

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

CPU类型IP 地址端口号硬件标识符
客户端CPU 1212C192.168.0.6064
服务器CPU 1215C192.168.0.450264

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

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

A screenshot of a computer

Description automatically generated

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

S7-1200 Modbus TCP 服务器编程

“MB_SERVER”指令将处理 Modbus TCP 客户端的连接请求、接收并处理 Modbus 请求并发送响应。

1. 调用 MB_SERVER

将 MB_SERVER 指令块在“ 程序块 > OB1 ”中的程序段里调用,调用时会自动生成背景 DB ,点击确定即可,如图 3 所示。

A computer screen shot of a computer

Description automatically generated with medium confidence

图 3. 调用 MB_SERVER 指令块

该功能块各个引脚定义如表 3 所示:

参数说明
DISCONNET0(默认):被动建立与客户端的通信连接;1:终止连接。
MB_HOLD_REG指向 Modbus 保持寄存器的数据区。可以设为数据块或 M 存储区地址。数据块可以为优化的数据块,也可以为非优化的数据块。对于优化数据块只能是基本数据类型的数组。对于非优化的数据块没有要求,一般通过 P# 指针的形式输入。具体参见表 4。
CONNECT指向连接描述结构的指针。使用 TCON_IP_v4 数据类型。
NDR0:无新写入的数据;1:Modbus 客户端写入了新的数据。
DR0:未读取数据;1: Modbus 客户端读取了数据
ERROR错误位:0:无错误;1:出现错误,错误原因查看 STATUS。
STATUS指令的详细状态信息。

表 3. MB_SERVER 各个引脚定义说明

Modbus TCP 服务器数据区定义,参见表 4。

地址区定义说明
输出位Q0.0 开始•  Q0.0 为地址 1,Q0.1 为地址 2,Q0.7 为地址 8,Q1.0 为地址 9...
输入位I0.0 开始•  I0.0 为地址 10001,I0.1 为地址 10002,I0.7 为地址 10008,I1.0 为地址 10009...
输入寄存器IW0 开始•  IW0 为地址 30001,IW2 为地址 30002,IW4 为地址 30003...
保持寄存器由 MB_HOLD_REG 定义•  指针指向的第一个字为 40001,第二个字为 40002...
•  例如:MB_HOLD_REG 为 P#M100.0 WORD 8,则 MW100 为 40001,MW102 为 40002,MW104 为 40003...MW114 为 40008
•  例如:MB_HOLD_REG 为 优化 DB 中 INT 数组[0..7],数组名为 “XXX”.AA,则 “XXX”.AA[0] 为 40001,“XXX”.AA[1] 为 40002,“XXX”.AA[2] 为 40003...“XXX”.AA[7] 为 40008

表 4. 数据区定义

注意:数据区从指令库版本 V5.0 开始,可以自由定义,方法参见Modbus TCP V5.0 文档。

2. CONNECT 引脚的指针类型

第一步,先创建一个新的全局数据块 DB2,如图 4 所示:

A screenshot of a computer

Description automatically generated

图 4. 创建全局数据块

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

A screenshot of a computer

Description automatically generated

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

各个参数定义说明如表 4 所示:

参数说明
InterfaceId网口硬件标识符,对于本体网口为 64,即16#40。
ID连接 ID,取值范围 1~4095
Connection Type连接类型。TCP 连接默认为:16#0B
ActiveEstablished建立连接。主动为 1(客户端),被动为 0(服务器)。
ADDR服务器侧的 IP 地址
RemotePort远程端口号
LocalPort本地端口号

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

客户端侧的 IP 地址为 192.168.0.6,端口号为 0,所以 MB_SERVER 服务器侧该数据结构的各项值如图 6 所示。

A screenshot of a computer

Description automatically generated

图 6. MB_SERVER 服务器侧的 CONNECT 数据结构定义

注意:

  • CONNECT 引脚的填写需要用符号寻址的方式。
  • TCON_IP_v4 是系统数据类型,不是在 PLC 数据类型中创建的。
  • RemotePort 一般使用默认值 0,意思是不指定客户端端口。
  • RemoteAddress 可以不指定,意思是不指定客户端 IP 地址。也可以像图 6 所示指定客户端地址。

3. S7-1200 服务器侧 MB_SERVER 编程

调用 MB_SERVER 指令块,实现被客户端读取 2 个保持寄存器的值,如图7所示。

A computer screen shot of a computer

Description automatically generated

图7. MB_SERVER 服务器侧编程

S7-1200 MODBUS TCP 通信调试

S7-1200 MODBUS TCP 服务器侧准备数据,用于客户端读访问,如图8所示。

A screenshot of a computer

Description automatically generated

图8. 服务器侧监控表

S7-1200 MODBUS TCP 客户端侧,给 MB_CLIENT 指令块中 REQ 引脚一个上升沿,监控数据读取成功。如图9所示。

A screenshot of a computer

Description automatically generated

图9. 客户端侧监控表

剩余80%未阅读,请登录查看大全章节内容

  • 评论
更多
  • 分享

    扫码分享

扫码进入移动端

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。