通信协议是指需要通信的各方事先约定的通信规则,可以简单理解为计算机之间相互交谈所使用的共同语言。局域网中常用的通信协议主要有TCP/iP、netbeui、ipx/spx,每种协议都有其适用的环境。
Modbus通信协议:
Modbus是一种串行通信协议。(串行通信是指在数据传输过程中设备之间一次只传输一个数据位,而并行通信是指在数据传输过程中同时传输多组数据。)是工业电子设备中最常用的通信协议。
modbus命令包含所有准备执行该命令的设备的modbus地址。发送命令时,所有设备都可以接收到它,但只有指定的设备会发回信息。
1 03 00 01 00 02 95 CB指令中每个数字的含义:
第一个01:表示从站的地址。简单来说,在modbus通信中,一台主机可以连接多台设备。这里确定哪个设备需要发回信息。01代表1号设备,这里也可以是02,03等。
第二个03:指的是功能代码,也就是说需要做什么动作。03代表阅读,
第三和第四个00 01:代表寄存器地址,(程序在仪表中存储的虚拟地址),表示要从01号寄存器读取信息。
第五位和第六位00 02:表示此处需要读取多少位。因为权重值存储位置0001和0002占用寄存器01中的两个寄存器,输入2,
最后两位数字95CB代表校验码,表示通过输入这些字符,读指令已经结束。这两位数不是固定的,在这里计算。
这里有一个例子来说明如何沟通。
1.读取和返回1号从站的数据
1.首先选择仪器的从地址为01,可以通过手册设置。
2.校准刻度,将分度值设置为5,并将小数点设置为2位。
3.称重后,我的手机重量为225.05克,
4.通过串行测试工具,并通过查询说明手册,找到地址为00 01和00 02的两个重量值寄存器。
输入01 03 00 01 00 02 95 CB
消息返回01 03 04 00 00 57 E9 05 8D
计算57E9后,转换为十进制22505,返回正确。
1 03 04 00 00 57E9 05 8D这组数据的含义:01:从站地址,03:功能码,04:返回的数据从后面第四位开始读取,返回57E9的权值(十六进制),05 8D校验码(表示这组返回的指令已经结束),下同。
5.读取仪表的峰值。峰值的寄存器地址是0006和0007。
输入01 03 00 06 00 02 24 0A
回01 03 04 00 00 5F F0 C3 87
F0换算成十进制的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.05克,
11.通过串行测试工具,查询说明手册,找到两个地址为0001 0002的重量寄存器。
输入05 03 00 01 00 02 94 4F
消息回05 03 04 00 00 58 11 44 3F
经过计算,58 11转换成十进制的22596。读数时,计价器显示重量值为22545,返回正确。
12.读取仪表的峰值。峰值的寄存器地址是0006和0007。
输入05 03 00 06 00 02 25 8E
参见C4 67
8cf换算成十进制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.仪器内部程序出现故障,导致无法读取正确的分度值。
郑重声明:本文版权归原作者所有。转载文章只是为了传播更多的信息。如作者信息标注有误,请第一时间联系我们修改或删除。谢谢你。
转载:感谢您对网站平台的认可,以及对我们原创作品和文章的青睐。非常欢迎大家分享到个人站长或朋友圈,但转载时请注明文章来源“蝶芒网”。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)