首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

Modbus 协议中串口数据位长度有关问题

2012-12-16 
Modbus 协议中串口数据位长度问题如题,这个长度一般用8 bit,可以使用 7 bit吗?如果使用的话,主从双方更改

Modbus 协议中串口数据位长度问题
如题,这个长度一般用8 bit,可以使用 7 bit吗?如果使用的话,主从双方更改一下数据位长度,其他参数不变,也依然可以正常通讯吗?
[解决办法]
可以,8位和7位是物理层的协议约定。和上层的结构没有关系

如果方便的时候,LZ可以去补一下关于七层协议结构模型,在日后的使用中,尽量去套这个模型,思路会清晰很多
[解决办法]
modbus 有两种字节模式:

ASCII 模式每个字节( 10 位 ) 的格式

RTU 模式每个字节( 11 位 ) 的格式
[解决办法]

引用:
modbus 有两种字节模式:

ASCII 模式每个字节( 10 位 ) 的格式

RTU 模式每个字节( 11 位 ) 的格式
我使用Modbus poll这个软件调试设备串口通讯。现在处于RTU模式下,格式为数据长度8bit,可以通讯;改为ASCII模式后,我把数据长度改为7bit,就得到超时信息,说明不通讯了。(设备中代码和软件中的数据长度是匹配的),难道还有其他一些格式要定义吗????
[解决办法]
7bit 最好加一个校验位
[解决办法]
引用:
如题,这个长度一般用8 bit,可以使用 7 bit吗?如果使用的话,主从双方更改一下数据位长度,其他参数不变,也依然可以正常通讯吗?

Modbus 协议当使用RTU模式时,数据位长度必须是8吗??
[解决办法]
7bit 最好加一个校验位
[解决办法]
这些都是硬件完成的吧
[解决办法]
引用:
7bit 最好加一个校验位
用Modbus poll调试,是用功能“读取线圈状态”,再使用Modbus poll观察发送数据窗口,发现发送的数据是1 1 0 0 0 16 61 198,看这个198 = 128 +70,当用8bit时候,198 < 2^8 = 256,所以正常通讯,然而是用7bit后,198 > 2^7  = 128,所以198被截取后7位,得到70,数据失真了,通讯失败。所以我就疑问这Modbus RTU模式下,数据为一定是8bit吗?你所说的校验位可以不需要,因为RTU模式可以使用CRC效验。
[解决办法]
问题已经解决了,不过不算理想。在RTU模式下,数据位长度必须为8.

热点排行