一、S7-1200 Modbus TCP 通信指令块

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

二、S7-1200 Modbus TCP 实验环境

下面以两台S7-1200之间进行 Modbus TCP 通信为例,详细阐述客户端与服务器侧如何编程及通信的过程。

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

CPU类型

IP地址

端口号

硬件标识符

客户端

CPU 1212C

192.168.0.6

0

64

服务器

CPU 1215C

192.168.0.4

502

64

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

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

三、S7-1200 Modbus TCP 客户端编程

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

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

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

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

表2. MB_CLIENT 各引脚定义说明

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

指令的详细状态信息。

(2)CONNECT 引脚的指针类型

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

图4. 创建全局数据块

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

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

各个引脚定义说明如下:

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

InterfaceId

硬件标识符。

ID

连接ID,取值范围1~4095

Connection Type

连接类型。TCP连接默认为:16#0B

ActiveEstablished

建立连接。主动为1(客户端),被动为0(服务器)。

ADDR

服务器侧的IP地址

RemotePort

远程端口号

LocalPort

本地端口号

本文远程服务器的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所示),需要以绝对地址的方式填写该引脚。本文以标准的数据块(默认)为例进行编程。

图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 服务器侧编程。

四、S7-1200 Modbus TCP 服务器编程

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

(1)“ 程序块-> OB 1"中调用“MB_SERVER”指令块,然后会生成相应的背景DB块,点击确定,如图11所示。

图11. 调用MB_SERVER指令块

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

表4. 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

指令的详细状态信息。

(2) CONNECT 引脚的指针类型

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

图12. 创建全局数据块

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

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

各个引脚定义说明如下:

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

InterfaceId

硬件标识符。(设备组态中查询)

ID

连接ID,取值范围1~4095

Connection Type

连接类型。TCP连接默认为:16#0B

ActiveEstablished

建立连接。主动为1(客户端),被动为0(服务器)。

ADDR

服务器侧的IP地址

RemotePort

远程端口号

LocalPort

本地端口号

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

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

(3)S7-1200 服务器侧 MB_SERVER 编程

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

图15. MB_SERVER 服务器侧编程

注意:MB_HOLD_REG 指定的数据缓冲区可以设为 DB 块或 M 存储区地址。DB 块可以为优化的数据块,也可以为标准的数据块结构。

五、S7-1200 Modbus TCP 通信调试

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

图16. 服务器侧监控表

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

图17. 客户端侧监控表

如果您需要SMART编程软件以及SMART LINE触摸屏软件,或有其他技术问题,可联系微信号:13840121680(加微信号请备注公司+姓名)

10通信端口感叹号_S71200 技术篇——MODBUS TCP通信相关推荐

  1. 西门子S7-1200与FUNUC机器人MODBUS TCP通信

    PLC与机器人MB通信时,funuc作为服务器端,1200作为客户端.1200向funuc发送读写请求,funuc应答后PLC接收funuc的数据,实现数据的传递. 注意:Modbus不能同步进行通信 ...

  2. Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)

    本篇将会以西门子PLC软件搭建ModbusTCP仿真环境,并通过仿真环境,介绍基础知识及模拟实际应用中写一个简单的通信读取PLC数据方法,并简介了编写上位机的方法. 文章目录 1. 搭建ModbusT ...

  3. 西门子S7-200 SMART(6ES7 288-1ST40-0AA0)相关与晨控智能CK-FR08-E00关于modbus tcp 通信配置指南

    西门子S7-200 SMART(6ES7 288-1ST40-0AA0)相关与晨控智能CK-FR08-E00关于modbus tcp 通信配置指南 准备阶段 软件:STEP 7-MicroWIN SM ...

  4. S7-1200PLC Modbus TCP通信

    硬件:cpu 1214C 目的:测试Modbus TCP通信 软件:Portal V14SP1 1.硬件组态 插入两台cpu,并分配IP地址 PLC_1:192.168.0.20 PLC_2:192. ...

  5. python使用pymodbus库进行modbus tcp通信

    使用pymodbus库进行modbus tcp通信 使用python解决工业通信问题是一个非常好的选择,python具有丰富的生态,可以轻松解决工业通信的各种问题.本篇主要介绍使用pymodbus库进 ...

  6. 三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法

    三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法 本次和大家分享三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法,由于汇 ...

  7. 博途1200间MODBUS TCP通信

    目录 MODBUS TCP通信 1.项目设备建立 2.建立通信数据块 3.参数配置 4.建立数据 5.指令 6.监控 MODBUS TCP通信 1.项目设备建立 新建项目,新增两台PLC设备(服务器. ...

  8. 西门子PLC-S7200smart--------------章节一modbus TCP通信

    文章目录 西门子PLC-S7200smart modbusTCP通信 一.西门子编程软件 1.西门子编程软件下载 2.软件启动和新建工程 二.modbus TCP协议 三.modbus TCP协议实践 ...

  9. 汇川AM系列 Modbus TCP通信设置

    一 .概述 单击网络组态中的PLC设备,会显示PLC内部所支持的主/从站的使能窗口,如下图所示,单击窗口中的复选框按钮来使能CPU所支持的主/从站功能,再从视图右侧的"网络设备列表" ...

最新文章

  1. Oracle442个应用场景---------PL/SQL基础
  2. Leetcode 120. 三角形最小路径和 (每日一题 20210927)
  3. 从零开始构建HTML 5 Web页面
  4. imax 6UI的按键输入子系统input 注意点
  5. @【基础测绘计算】(坐标正反算)
  6. Android客户端如何使用cookie
  7. MYS-6ULX-IOT 开发板测评——实现简单的物联网应用
  8. 使用jbe修改jar中class中的内容
  9. wsgw_android,衍宏2015最美经纪人 投票查看
  10. 浏览器野史 UserAgent列传(上)
  11. B - -- - B
  12. NOIP2017提高组总结
  13. 配置 SNAT 和NAT
  14. Libor利率查询_图表加数据Libor伦敦银行同业拆借利率
  15. php百度热门关键词小偷,火端搜索2.1源码 PHP百度+好搜小偷程序
  16. 红米note2 android版本是多少,红米Note 2有几个版本以及红米Note2手机哪个版本好用?...
  17. nonebot2调用文本API发送随机文本
  18. Python奇技淫巧
  19. mysql数据库DDL,DML,DCL操作
  20. 灰蓝色商务数据图表合集PPT模板

热门文章

  1. const char *p,char const *p, char * const p之间的区别
  2. 自动开料机器人_工业4.0智能家具无人化生产线 自动化无人化大势所趋
  3. stm32之实时时钟RTC(掉电计时保持、秒中断、闹钟中断、溢出中断)
  4. java问题的英语对话_一些表达拒绝的应用英语
  5. VS编译提示错误“....Consider using strcat_s instead.To disable deprecation, use _CRT_SECURE_NO_WARNINGS.”
  6. TCP/IP / 状态转换图
  7. oracle数据泵还原命令,Oracle Linux环境中使用数据泵的形式还原Oracle数据库
  8. php7协程通信使用,PHP7下的协程实现
  9. java maven 读写pdf_Java 在PDF中加盖骑缝章
  10. python中格式化_Python中格式化的两种方法