modulebus协议发送命令失败(modbustcp通讯协议格式)

发布日期:2024-11-24 23:45:00     手机:https://m.xinb2b.cn/wenda/news44387.html    违规举报
核心提示:通讯协议是指需要通信的各方事先约定好的通讯规则,可以简单地理解为各个计算机之间进行相互会话所使用的共同语言,局域网中通常使用的通信协议主要包括TCP/iP、netbeui、ipx/spx三种协议,每个协议都有其适用的环境。 Modbus通讯

modulebus协议发送命令失败(modbustcp通讯协议格式)

通讯协议是指需要通信的各方事先约定好的通讯规则,可以简单地理解为各个计算机之间进行相互会话所使用的共同语言,局域网中通常使用的通信协议主要包括TCP/iP、netbeui、ipx/spx三种协议,每个协议都有其适用的环境。

Modbus通讯协议:

Modbus是一种串行通讯协议,(串行通讯是指在数据传输过程中,每次只有一个数据位在设备之间传输,并行通讯时指在数据传输过程中, 同时有多组数据在传输。)是工业电子设备中最常用的一种通讯协议。

一个modbus指令包含了所有准备执行命令的设备其modbus地址,发送指令时所有的设备都可以收到,但是只有指定的某个设备会回传信息。

01 03 00 01 00 02 95 CB指令中每个数字代表的含义:

第一个01:是指从站地址,简单地说就是,由于modbus通讯中,一个上位机可以连接很多台设备,具体需要哪台设备进行回传信息,通过这里来确定,01代表1号设备,此处也可以是02、03等。

第二个03:是指功能码,也就是说需要做什么动作,03代表的是读取的意思,

第三第四个00 01:代表的是寄存器地址,(仪表中存放程序的虚拟地址),这里表示要从01号寄存器中读取信息。

第五个第六个00 02 : 表示在这里需要读取几位,因为01号寄存器中,重量值存储位置为0001 和0002占据两个寄存器 ,所以输入2,

最后两位95CB代表的是校验码,意思是通过输入这些字符表示,读取的指令已经结束。这两位数字不是固定的,是通过这里计算出来的

下边以实例来说明具体该怎么进行通讯。

一、1号从站数据的读取和回传

1、首先将仪表的从站地址选择成01,该设置可以通过说明书。

2、将称体标定好,分度值设置成5,小数点设置成2位,

3、经过称量,我手机的重量为225.05g,

4、通过串口测试工具,通过查询说明书,找到重量值寄存器地址为00 01、 00 02 两个,

输入01 03 00 01 00 02 95 CB

回传信息01 03 04 00 00 57 E9 05 8D

经过计算57E9转换成10进制为22505,回传正确。

01 03 04 00 00 57 E9 05 8D该组数据的含义:01:从站地址,03:功能码,04:回传的数据从后边第四位开始读取,57E9回传的重量值(16进制),05 8D校验码(表示该组回传指令已经结束),下同。

5、读取仪表的峰值,峰值的寄存器地址为0006、0007

输入01 03 00 06 00 02 24 0A

回传 01 03 04 00 00 5F F0 C3 87

5F F0转换成10进制为24560,回传正确,因为在称台上放置手机的时候,会有向下的力,导致峰值会大于22505。

6、小数点位数的读取,小数点位数寄存器地址为00 00

输入 01 03 00 00 00 01 84 0A

回传 01 03 02 00 02 39 85

回传小数点位数为2,回传正确。

7、分度值的读取,分度值的寄存器地址为0014

输入 01 03 00 14 00 01 C4 04

回传 01 03 02 00 02 39 85

回传数据不正确。

二、5号从站数据的读取和回传

8、首先将仪表的从站地址选择成05,该设置可以通过说明书。

9、将称体标定好,分度值设置成5,小数点设置成2位,

10、经过称量,手机的重量为225.05g,

11、通过串口测试工具,通过查询说明书,找到重量值寄存器地址为 0001 0002 两个,

输入05 03 00 01 00 02 94 4F

回传信息05 03 04 00 00 58 11 44 3F

经过计算58 11转换成10进制为22596,读取的时候仪表显示重量值为22545,回传正确。

12、读取仪表的峰值,峰值的寄存器地址为0006、0007

输入05 03 00 06 00 02 25 8E

回传 05 03 04 00 00 58 CF C4 67

58 CF转换成10进制为22735,回传正确。

13、小数点位数的读取,小数点位数寄存器地址为00 00

输入 05 03 00 00 00 01 85 8E

回传 05 03 02 00 02 C8 45

14、分度值的读取,分度值的寄存器地址为0014

输入 05 03 00 14 00 01 C5 8A

回传 05 03 02 00 02 C8 45

回传数据不正确。

问题:经过反复测试,分度值无法正确的读取,每次回传的都是上一次测试的回传数据。
分析:

1. 可能是该仪表内部没有0014号寄存器地址。

2. 仪表内部程序乱了,导致无法读取正确的分度值。

 
 
本文地址:https://wenda.xinb2b.cn/news44387.html,转载请注明出处。

推荐图文
推荐问答知道
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  违规举报  |  蜀ICP备18010318号-4  |  百度地图  | 
Processed in 0.084 second(s), 91 queries, Memory 0.47 M