ModbusTCP协议,上位机通讯测试实例分享
目的:
寻找S7-1200作为服务端与计算机ModbusTCP通讯的具体方式,为PC端APP提供通讯依据。
需要准备的工具
S7-1200 CPU1212 DC/ DC/ DC一台,网线,24VDC电源, ProfiNet口通过交换机与PC连接。PC端用Modbus Poll客户端(目的是验证数据正确性)
协议说明
modbus tcp数据报文结构
请求:00 00 00 00 00 06 09 03 00 00 00 01
响应:00 00 00 00 00 05 09 03 02 00 00
一次modbus tcp读取保持寄存器的通信分析(省略了ip/tcp头):从左向右分析该数据报文:
请求:
00 00传输标志,两个字节长度,表示Modbus询问/应答的传输,默认是00 00;
00 00协议标识,两个字节长度,0表示Modbus,1表示UNI-TE,一般默认为00 00;
00 06数据长度,用来指示接下来数据的长度,单位字节;
09地址码,用以标识连接在串行线或者网络上的远程服务端的地址;
03功能码,此时代码03为读取保持寄存器数据;
00 00寄存器地址;
00 01寄存器数量;
响应:
00 00为此次通信事务处理标识符,应答报文要求与先前对应的请求保持一致;
00 00为协议标识符,与先前对应的请求保持一致;
00 05为数据长度,用来指示接下来数据的长度,单位字节;
09为设备地址,应答报文要求与先前对应的请求保持一致;
03为功能码,正常情况下应答报文要求与先前对应的请求保持一致,如果出错则返回80h+先前的功能码;
02指示接下来数据的字节长度;
00 00为被读取的保持寄存器中的数据值,即要求被读取的地址为00 00的保持寄存器中的数值为00 00。
其他命令码测试
a) 01 Read Coils(0x)读取输出Q地址
发送:00 09 00 00 00 06 01 01 00 00 00 01
含义:报文头00 09 00 00 00 06;00 09每帧递增;00 00 ModbusTCP;00 06是后面还有6字节数据。报文内容是读取站号01地址00 00开始的1个位地址。
回收:00 09 00 00 00 04 01 01 01 00
b) 02 Read Discrete Inputs(1x) 读取输入I地址
发送:00 09 00 00 00 06 01 02 00 00 00 01
含义:报文头00 09 00 00 00 06,00 09每帧递增,00 00ModbusTCP专属,00 06是后面还有6字节数据。报文内容是读取站号01地址00 00开始的1个输入位地址。
回收:00 09 00 00 00 04 01 02 01 00
含义:报文头00 09 00 00 00 04同上,报文内容是站号01读1个输入位地址(对应到S7-1200地址偏移范围可知是I区)返回了1个字节,结果是01。也就是I0.0是true。
发送:00 09 00 00 00 06 01 02 00 00 00 0A
回收:00 10 00 00 00 05 01 02 02 00 00
c) 03 Read Holding Registers(4x)
发送:00 09 00 00 00 06 01 03 00 00 00 01
回收:00 09 00 00 00 04 01 03 02 00 00
读取设定DataBlock的偏移为0的1个数据,返回结果是0x0000。经验证与PLC监控值相同。
#附录一
源代码资源地址,如果有问题可以给我发邮件jacky20sx@163.com,我会及时回复,互相学习
https://download.csdn.net/download/u011383812/10755005
ModbusTCP协议,上位机通讯测试实例分享相关推荐
- C# 机器视觉工控通讯------西门子PLC之S7协议上位机通讯
C# 机器视觉工控通讯------西门子PLC之S7协议上位机通讯 使用步骤 1.引入库 项目添加应用HslCommunication.dll和代码代码如下(示例): dll官方支持网站> us ...
- c语言tcp硬时事通讯程序代码,使用C语言编写基于TCP协议的Socket通讯程序实例分享...
tcp客户端示例 #include #include #include #include #include #include #include #include #include #include # ...
- modbus通讯协议编程实例_三菱PLC CC-LINK通讯编程实例分享,看完你就会了
前言:小蓝上次分享了三菱PLC编程指令文章,有一位粉丝说还有标签,FB模块,以太网通讯,MODBUS,TCP通讯这些有的学的.所以今天就给大家带来CC-LINK通讯编程实例.如果看完还是不太明白怎么办 ...
- 西门子1200程序V15版本实例,设备已经运行生产,博图V15以上可打开 包含上位机通讯,modbus485
西门子1200程序V15版本实例,设备已经运行生产,博图V15以上可打开 包含上位机通讯,modbus485,伺服等 西门子1214C控制4台步进电机: 西门子1214C与4台MS300变频器modb ...
- 物联网云平台DTU Modbus协议 上位机 下位机 源码 源代码 程序
物联网云平台DTU Modbus协议 上位机 下位机 源码 源代码 程序 一.源码的使用基本说明: 1.1 编译语言: 下位机使用C语言:上位机使用C#语言 标准Modbus Slave通信下位机源码 ...
- STM32 MPU6050与匿名上位机通讯(V2.6版)
0.系列目录 STM32 软件模拟IIC STM32 使用DMP库处理MPU6050数据 STM32 MPU6050与匿名上位机通讯(V2.6版) 1.简介 在四轴的调试中,经常要使用地面站与飞控之间 ...
- proteus中使用虚拟串口实现单片机和上位机通讯
祝大家身体健康哈,肺炎愈来愈多,希望看到这篇文章的旁友都能健健康康! 今天写一下proteus里如何使用虚拟串口仿真单片机和上位机通讯,所需要的软件有:(1)Virtual Serial Port D ...
- 欧姆龙PLC码垛程序 电机:四个雷塞闭环步进电机,四个汇川伺服电机,总共八个电机。 PLC:CP1H-EX40DT-D,八个轴就用了两个PLC,还有跟上位机通讯
欧姆龙PLC码垛程序(某上市公司设备),电机:四个雷塞闭环步进电机,四个汇川伺服电机,总共八个电机. PLC:CP1H-EX40DT-D,八个轴就用了两个PLC,还有跟上位机通讯. 图四是机台俯视图 ...
- 【代码】邮件群发机PHP实现实例分享
原理: 第一申请大量的邮箱帐号 腾讯的 126的 163的 新浪的 雅虎的 谷歌的 等等提供smtp服务的 第二:收集你要发送邮件的邮件列表 第三:遍历邮件列表,每一个邮件发送邮件 第四:用linux ...
- AS608与单片机握手失败、与上位机通讯失败
简言:本人在使用AS608模块时遇到了握手失败.通讯失败的问题,尝试网上各种方法未果后,换了一个AS608模块,问题解决. 一.与单片机握手失败 检查代码中的波特率是否为9600,再通过上位机将AS6 ...
最新文章
- 取消tableView多余的横线
- firefox不激活新标签页
- 审批流程展示html,Web企业在线审批流程系统
- JAVA NIO 简介(转)
- Docker-基本概念(镜像和容器)
- 【java学习之路】数据库连接JDBC
- 路畅安卓最新固件升级_路畅导航系统固件升级下载|路畅导航系统固件升级大全1.51 官方版_ - 极光下载站...
- 7.STC15W408AS单片机串口通信
- 【论文总结】DeepEMD:Few-Shot Image Classification with Differentiable Earth Mover’s Distance(附翻译)
- 【IoT】2023裁员潮还在继续,构建规划能力也许是一剂良方
- 学习Photoshop的一些网站以及找素材的网站
- python生成字符画_Python生成字符画 | 文艺数学君
- jquery基础学习记录
- RTP-RTCP协议分析
- 零知识证明:重要构造
- 如何使用PyDenseCRF
- 操作系统和应用程序漏洞评估
- Java 圆锥类 圆类 面积 体积
- 神经网络模型的模型假设,人工神经网络预测模型
- 【分享】一位平凡测试人的故事
热门文章
- 服务器英文系统怎么切中文,云服务器怎么把英文改成中文
- 世界最强大的UltraLAB便携图形工作站介绍
- linux kernel 摄像头驱动
- 仿铁路订票系统Gridview
- 从铁路订票系统问题看应用监控的作用
- python之小说下载器version2.0
- 配合字体图标的搜索框
- go build报错,提示错误can‘t load package: package xxx is not in GOROOT (D:\Go\Go\src\xxx)
- python 自动发邮件模块抄送_Python实现自动发送邮件
- 苹果手表GPS和蜂窝有什么区别