MODBUS 485数据位是7或8

那该多好啊!!! 2019-08-30 11:35:47
MODBUS 485数据位是7或8是什么意思不太明白

比如RTU模式,资料上这么说
1个起始位、8个数据位、1个奇偶校验位和1个停止位(或者两个停止位)

这里说的8位数据位是8个bit还是8个byte,
如果是8个bit,那么,每发一次数据,最多只能发二个数据过去,

如果是8个byte,那么每次发送一帧数据也只能最多发送16个数据

但是和下面的说法又有冲突,因为下面的说话表示每次发送数据肯定是很大的,

寄存器起始地址高字节 寄存器起始地址低字节 读取寄存器个数高字节 读取寄存器个数低字节
CRC校验低 CRC校验高
...全文
5081 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_36051549 2021-02-03
  • 打赏
  • 举报
回复
ba_wang_mao 2019-09-02
  • 打赏
  • 举报
回复 1
[那这个8个bit的数据位具体表示是哪里 比如发送数据时,发送数据的报文表示如下,这个数据位是不是就是寄存器的起始地址加读取寄存器个数,如果是,这二个加起来就是4byte,寄存器起始地址高字节 寄存器起始地址低字节 读取寄存器个数高字节 读取寄存器个数低字节
CRC校验低 CRC校验高 ]
原来楼主在纠结8个bit的数据位具体体现在哪里呀!

1、电脑上的串口,接收数据时是1bit,1bit的接收,发送数据时是1bit,1bit的发送。

2、串口需要发送数据时,计算机程序中是1个字节,1个字节的往串口送数据,串口收到1个字节的数据后,串口内部收发器将1个字节(8位)依次分8次发送出去。

3、串口接收数据时,串口内部收发器1个bit,1个bit的接收,当收够8位后,合成一个字节让电脑读取。
4、所以 报文里不会体现“你所谓的8个bit的数据位”,报文里体现的是1个字节,1个字节的数据。
电脑发送报文时,是1个字节,1个字节的往串口送,
每个字节送到串口后,由串口内部的发送器将该字节1bit,1bit的发送出去。

这就是为什么称之为串行口(简称:串口)的来历,数据是1bit,1bit的串行向外发送或接收。
  • 打赏
  • 举报
回复
[quote=引用 2 楼 ba_wang_mao 的回复:] 楼主概念有点混。 答了那么多,其实我所问到的最重要的一点也没有回答上, 7位或8位是通信时的数据的位数,这个资料上都这么说不用怀疑, 可是这个数据具体是报文中反应在哪里呢,
  • 打赏
  • 举报
回复
引用 2 楼 ba_wang_mao 的回复:
楼主概念有点混。 1、MODBUS 只是一个工业通信协议 2、485只是一种总线模式 总线模式有2种,一种是RS232,另外一种是RS485 RS232只能一对一的通信。 RS485可以一对多的通信。 3、7位或8位是通信时的数据的位数 4、1个字节8位 5 、当使用MODBUS RTU通信协议时,数据位必须是8位 6、这里说的8位数据位是8个bit还是8个byte 是8个bit(也就是1个字节) 7、寄存器起始地址高字节 寄存器起始地址低字节 读取寄存器个数高字节 读取寄存器个数低字节 CRC校验低 CRC校验高 MODBUS协议规定:寄存器起始地址占用2字节,所以有寄存器起始地址高字节和 寄存器起始地址低字节之说。 MODBUS协议规定:CRC校验位占用2字节,所以有CRC校验低 CRC校验高之说。 MODBUS协议规定: 读取寄存器个数最多只能是125,因此用1个字节即可表示,楼主的理解有误。
那这个8个bit的数据位具体表示是哪里 比如发送数据时,发送数据的报文表示如下,这个数据位是不是就是寄存器的起始地址加读取寄存器个数,如果是,这二个加起来就是4byte, 寄存器起始地址高字节 寄存器起始地址低字节 读取寄存器个数高字节 读取寄存器个数低字节 CRC校验低 CRC校验高
ba_wang_mao 2019-08-30
  • 打赏
  • 举报
回复
也就是说:没有读取寄存器个数高字节和 读取寄存器个数低字节之说
ba_wang_mao 2019-08-30
  • 打赏
  • 举报
回复 1
楼主概念有点混。

1、MODBUS 只是一个工业通信协议
2、485只是一种总线模式
总线模式有2种,一种是RS232,另外一种是RS485
RS232只能一对一的通信。
RS485可以一对多的通信。
3、7位或8位是通信时的数据的位数

4、1个字节8位

5 、当使用MODBUS RTU通信协议时,数据位必须是8位
6、这里说的8位数据位是8个bit还是8个byte
是8个bit(也就是1个字节)

7、寄存器起始地址高字节 寄存器起始地址低字节 读取寄存器个数高字节 读取寄存器个数低字节 CRC校验低 CRC校验高
MODBUS协议规定:寄存器起始地址占用2字节,所以有寄存器起始地址高字节和 寄存器起始地址低字节之说。
MODBUS协议规定:CRC校验位占用2字节,所以有CRC校验低 CRC校验高之说。
MODBUS协议规定: 读取寄存器个数最多只能是125,因此用1个字节即可表示,楼主的理解有误。


冰川711 2019-08-30
  • 打赏
  • 举报
回复
位就是bit 8个数据位 就是 8 data bit = 1 byte

111,063

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧