一、数据解析

上一文介绍了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的功能是:写单个线圈或单个离散输出,具体的功能,将在后续文章中分析。

modbus-poll和modbus-slave工具的学习使用——modbus协议功能码1的解析的更多相关文章

  1. modbus-poll和modbus-slave工具的学习使用——modbus协议功能码3的解析(及欧姆龙温控器调试笔记)

    最近的项目中使用到了欧姆龙的温控器,里面有很多的通信方式,我们使用的常见的modbus——RTU方式,其他方式我们不使用,其中通信手册上面有很多通信的实例,欧姆龙modbus还区分4字节模式和2字节模 ...

  2. modbus-poll和modbus-slave工具的学习使用——modbus协议功能码2的解析

    功能码2的功能是:读从机离散量输入信号的 ON/OFF 状态.可读取1-2000个连续的离散量输入状态,如果离散输入的数量个数不是8的整数倍,则用0填充最后数据字节的剩余位,功能码2的查询信息规定了要 ...

  3. Modbus仿真器 Modbus Poll 和Modbus Slave详细图文教程

    Modbus Poll 是Witte Software公司开发的的Modbus主机仿真器,用于测试和调试Modbus从设备.软件支持ModbusRTU.ASCII.TCP/IP协议.支持多设备监控,可 ...

  4. Modbus测试工具 :Modbus Poll,Modbus Slave

    源:http://blog.sina.com.cn/s/blog_49352090010138e7.html Modbus测试工具 :Modbus Poll,Modbus Slave

  5. Modbus软件开发实战指南 之 开发自己的Modbus Poll工具 - 1

    在开发Modbus程序的过程中,也可以发现经常需要使用诸如Modbus Poll和Modbus Slave等辅助调试工具, 用于验证MODBUS通讯消息是否正确.但是,Modbus Poll和Modb ...

  6. Modbus软件开发实战指南 之 开发自己的Modbus Poll工具 - 2

    接上一篇文章的内容. 看了前面需求提到的复杂的命令行解析功能,很多人立马开始发怵,其实大可不必. 我们都知道,Linux下的程序往往都提供了复杂的命令行参数处理机制,因为这是与 其他程序或用户进行交互 ...

  7. Modbus tcp 格式说明 通讯机制 附C#测试工具用于学习,测试

    前言: 之前的博客介绍了如何用C#来读写modbus tcp服务器的数据,文章:http://www.cnblogs.com/dathlin/p/7885368.html 当然也有如何创建一个服务器文 ...

  8. Modbus软件开发实战指南 之 开发自己的Modbus Poll工具 - 3

    Modbus-RTU 一.数据分析       两个设备(单片机)通讯,用的是Modbus协议.      在单片机中拿出一部分内存(RAM)进行两个设备通讯,例如: 说明: OX[20]   代表是 ...

  9. Modbus调试利器 Modbus Poll

    Modbus Poll是一个非常不错的工具,支持TCP/串口 下载地址:http://pan.baidu.com/share/link?shareid=2880213929&uk=248325 ...

随机推荐

  1. SpringBoot配置多数据源Mysql+Sqlite

    ​ 配置了一下druid的多数据源配置,尝试了很多方法,Spring boot关于对Mysql和Sqlite多数据源的配置,记录下来: 涉及技术点: Springboot + Druid + Mysq ...

  2. Delphi TButton.OnClick 匿名函数用法

    type TNotifyEventRef = reference to procedure(Sender: TObject); function AnonymousEvent(const Proc: ...

  3. lcd12864菜单

    最近一段时间学习了一下lcd12864屏幕的驱动(本人使用的是带字库的st7920驱动芯片). 1.该屏幕可以是串行驱动,或者并行驱动. 2.该屏幕的显示分为2部分,文字显示区DDRAM,图像显示区G ...

  4. Kafka启用SASL_PLAINTEXT动态配置JAAS文件的几种方式

    Kafka是广泛使用消息服务,很多情况下关于认证部分我都是默认的配置,也就是不需要用户名/密码,也不配置证书.在内网或者在项目组内部可以,但是设计的跨部门时一般处于安全考虑都需要加上认证,防止kafk ...

  5. Udp客户端与服务通讯

    使用UDP与服务端通讯时候,同样需要先启用udp服务端监控,当服务端启动成功,在启动客户端 首先UDP服务端类,代码如下: public class UdpServerTest { public vo ...

  6. 2019 乐逗游戏java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.乐逗游戏等公司offer,岗位是Java后端开发,因为发展原因最终选择去了乐逗游戏,入职一年时间了,也成为了面 ...

  7. Sqlmap注入工具

    Sqlmap注入工具 http://sqlmap.org/ Sqlmap是国外的一个免费的注入工具,基于python开发,支持现在几乎所有的数据库,支持get.post.cookie注入,可以添加co ...

  8. 【转载】PC端微信设置操作快捷键方法

    在电脑上使用微信的时候,有时候我们需要自定义PC版微信快捷键操作,支持自定义微信快捷键设置的有:发送消息快捷键.截屏快捷键.打开微信快捷键以及检测快捷键热键是否与其他软件设置冲突.并且自定义设置PC微 ...

  9. 软工作业 wc-java

    项目要求: 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能 -c 返回文件字符数 -w 返回词的数目 -l 返回行数 扩展 ...

  10. Linux环境变量设置declare/typeset

    形而上,质在内!形形色色,追寻本质! declare/typeset declare 或 typeset 是一样的功能,就是在宣告变数的属性 declare 后面并没有接任何参数,那么bash 就会主 ...