modbus-poll和modbus-slave工具的学习使用——modbus协议功能码1的解析
一、数据解析
上一文介绍了modbus工具的基本使用情况,但是还没用说明modbus中的协议的具体意义,
1、左边是slave,id=1,说明地址是1,f=01说明是功能码01,功能码是一个字节,说明理论上最多可以是256个功能码。
2、右边是poll,tx是发送的次数,err是错误数量,id是从机地址,f=01,说明是功能码01,sr=1000ms,说明poll 端是1s发送一次数据。
alias是其实是modbus的协议地址(个人理解的),第二列是数值,即寄存器中的value
这里摘取了slave端部分通信的真实数据:
Rx:000008-01 01 00 00 00 0A BC 0D ,其实是poll-slave系统中的tx
Tx:000009-01 01 02 12 00 B5 5C ,其实是poll-slave系统中的rx
这里摘取了poll端部分通信的真实数据:
Tx:052-01 01 00 00 00 0A BC 0D
Rx:053-01 01 02 12 00 B5 5C
解析poll端为例:
主要看-后面的hex数据
TX-01(从机地址01) 01(功能码01) 00(起始地址高位) 00(起始地址低位) 00(寄存器数高位) 0A(寄存器数低位,000a,=总共是10个,和上文一致。) BC(crc16的低位) 0D (crc16的高位)
其中,crc16的两个字节是低位先发送的,组合起来就是0dbc,涉及到大小端的知识,这里不详细展开了。
Rx:01(从机地址01) 01(功能码01) 02 (字节数量为2)12 (数据1)00(数据2) B5(crc16的低位) 5C(crc16的高位)
这里详细说明一下:12 (数据1)00(数据2),同时在poll端读取到的数据一次从上往下是:
0100 1000 00
用excel展开为:
数据1(0x12)先发,紧跟数据2(0x00)
功能码1是位操作指令,最小单位是1bit。功能码01的功能是:读取线圈状态/离散量输出状态,即各DO(discrete output,离散输出)的on/off状态。
二、RTU、 ASCII方式区别
软件中,我使用了rtu模式,效率更加高,ascii模式是使用ascii字符来表示数据,举个例子:
rtu中的0x12,在ascii中,使用0x31,0x32来表示。
下面做个实例:
connect中分别选择ascii模式,
运行后,得到:
Tx:074-3A 30 31 30 31 30 30 30 30 30 30 30 41 46 34 0D 0A
Rx:075-3A(“;”帧头) 30 31(从机地址0x01) 30 31 (功能码0x01)30 32(字节数量为2) 31 32(数据1) 30 30(数据2)45 41(LRC) 0D 0A(帧尾CR/LF).
这里看到,ascii是有帧头帧尾的,单片机可以根据这个来判断,而rtu是没有的。rtu的起始位和结束符:一帧数据和另一帧数据之前,前后都至少有 3.5 个字节的时间间隔,起始位和结束符实际上没有任何数据,T1-T2-T3-T4 代表的是时间间隔 3.5 个字节以上的时间,而真正有意义的第一个字节是设备地址。说白了,就是单片机在3ms内接受到数据,则认为是是一帧数据的,如果成多3ms及以上,说明一帧数据已经结束,进而进行处理。
LRC的计算方式还不懂,因此从通信效率上来看,rtu的方式是最高效的,在单片机开发过工程中,通常使用rtu方式。
三、修改slave端的数据
在slave端更新某一位,就可以在poll端查看到,引用到实际嵌入式中,可以将某一位映射到mos管的输出到低电平,上位机可以通过功能码1来查看mos的工作状态。
四、poll端数据的设置
在poll也是可以设置slave的数据的,如下所示,其实这里的设定已经使用了功能码5,好比,上位机将某一个mos管的输出进行更改高低电平。功能码5的功能是:写单个线圈或单个离散输出,具体的功能,将在后续文章中分析。
相关文章
- 学习ASP.NET MVC(八)——“Code First Migrations ”工具
- 最全深度学习训练过程可视化工具(附github源码)
- Tamperdata工具使用(登陆时就修改用户名),篡改post数据
- [转] 程序员画图工具总结
- 使用vs自带的wcf配置工具
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
- modbus-poll和modbus-slave工具的学习使用——modbus协议功能码3的解析(及欧姆龙温控器调试笔记)
- modbus-poll和modbus-slave工具的学习使用——环境搭建
- 模型转换、模型压缩、模型加速工具
- 使用 XMPP 构建一个基于 web 的通知工具
- CogIPOneImageTool工具 图像处理工具
- CogIntersectCircleTool工具 几何交叉工具
- 无线认证信息抓包工具hcxdumptool常用命令集合大学霸IT达人
- 从CTF比赛真题中学习压缩包伪加密与图片隐写术【文中工具已打包】
- Git学习笔记--- diff工具 kdiff3
- android 打印工具类
- JMeter学习-035-JMeter调试工具之二---Debug PostProcessor
- JMeter学习-034-JMeter调试工具之一---HTTP Mirror Server
- Java学习-041-颜色工具类(RGB,HEX)
- vue的调试工具 vue-devtools 的安装和使用
- java学习-加载.properties工具类
- 静态代码检查工具-PMD刚開始学习的人入门篇
- 粤语 之 粤语学习的一些学习网站和工具整理
- kali linux 网络渗透测试学习笔记(一)Nmap工具进行端口扫描
- Vue学习第24天——Vuex开发者工具的使用
- 25个Java机器学习工具&库--转载
- 学习软件测试(七)非功能测试与抓包工具Fiddler简单使用、项目非功能测试、测试报告