10通信端口感叹号_S71200 技术篇——MODBUS TCP通信
一、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通信相关推荐
- 西门子S7-1200与FUNUC机器人MODBUS TCP通信
PLC与机器人MB通信时,funuc作为服务器端,1200作为客户端.1200向funuc发送读写请求,funuc应答后PLC接收funuc的数据,实现数据的传递. 注意:Modbus不能同步进行通信 ...
- Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)
本篇将会以西门子PLC软件搭建ModbusTCP仿真环境,并通过仿真环境,介绍基础知识及模拟实际应用中写一个简单的通信读取PLC数据方法,并简介了编写上位机的方法. 文章目录 1. 搭建ModbusT ...
- 西门子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 ...
- S7-1200PLC Modbus TCP通信
硬件:cpu 1214C 目的:测试Modbus TCP通信 软件:Portal V14SP1 1.硬件组态 插入两台cpu,并分配IP地址 PLC_1:192.168.0.20 PLC_2:192. ...
- python使用pymodbus库进行modbus tcp通信
使用pymodbus库进行modbus tcp通信 使用python解决工业通信问题是一个非常好的选择,python具有丰富的生态,可以轻松解决工业通信的各种问题.本篇主要介绍使用pymodbus库进 ...
- 三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法
三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法 本次和大家分享三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法,由于汇 ...
- 博途1200间MODBUS TCP通信
目录 MODBUS TCP通信 1.项目设备建立 2.建立通信数据块 3.参数配置 4.建立数据 5.指令 6.监控 MODBUS TCP通信 1.项目设备建立 新建项目,新增两台PLC设备(服务器. ...
- 西门子PLC-S7200smart--------------章节一modbus TCP通信
文章目录 西门子PLC-S7200smart modbusTCP通信 一.西门子编程软件 1.西门子编程软件下载 2.软件启动和新建工程 二.modbus TCP协议 三.modbus TCP协议实践 ...
- 汇川AM系列 Modbus TCP通信设置
一 .概述 单击网络组态中的PLC设备,会显示PLC内部所支持的主/从站的使能窗口,如下图所示,单击窗口中的复选框按钮来使能CPU所支持的主/从站功能,再从视图右侧的"网络设备列表" ...
最新文章
- Oracle442个应用场景---------PL/SQL基础
- Leetcode 120. 三角形最小路径和 (每日一题 20210927)
- 从零开始构建HTML 5 Web页面
- imax 6UI的按键输入子系统input 注意点
- @【基础测绘计算】(坐标正反算)
- Android客户端如何使用cookie
- MYS-6ULX-IOT 开发板测评——实现简单的物联网应用
- 使用jbe修改jar中class中的内容
- wsgw_android,衍宏2015最美经纪人 投票查看
- 浏览器野史 UserAgent列传(上)
- B - -- - B
- NOIP2017提高组总结
- 配置 SNAT 和NAT
- Libor利率查询_图表加数据Libor伦敦银行同业拆借利率
- php百度热门关键词小偷,火端搜索2.1源码 PHP百度+好搜小偷程序
- 红米note2 android版本是多少,红米Note 2有几个版本以及红米Note2手机哪个版本好用?...
- nonebot2调用文本API发送随机文本
- Python奇技淫巧
- mysql数据库DDL,DML,DCL操作
- 灰蓝色商务数据图表合集PPT模板
热门文章
- const char *p,char const *p, char * const p之间的区别
- 自动开料机器人_工业4.0智能家具无人化生产线 自动化无人化大势所趋
- stm32之实时时钟RTC(掉电计时保持、秒中断、闹钟中断、溢出中断)
- java问题的英语对话_一些表达拒绝的应用英语
- VS编译提示错误“....Consider using strcat_s instead.To disable deprecation, use _CRT_SECURE_NO_WARNINGS.”
- TCP/IP / 状态转换图
- oracle数据泵还原命令,Oracle Linux环境中使用数据泵的形式还原Oracle数据库
- php7协程通信使用,PHP7下的协程实现
- java maven 读写pdf_Java 在PDF中加盖骑缝章
- python中格式化_Python中格式化的两种方法