FreeModbus 配置串口为1/2位(停止位)数据都能正常通信, 为何?

2019-12-26 18:50发布

实验环境:
<1> FreeModbus 1.5版本.
<2> ModbusPool 作为主机, (stm32f1)单片机作为从机.
<3> 使用RS485作为媒介进行通信.
<4> 使用9600波特率.
<5> 不管上位机还是下位机, 都不使用奇偶校验.

实验缘由:
如下图所示: 协议要求如果不使用奇偶校验位的话, 必须使用2位停止位.
我之前还没有在意这个, 赶紧实验下看看, 结果更没想到...
000.png (105.25 KB, 下载次数: 0) 下载附件 2017-7-26 14:47 上传

实验现象:
<1> 上位机(Modbus Pool)配置使用1位停止, 下位机(单片机)配置使用1位停止位.
<2> 上位机(Modbus Pool)配置使用1位停止, 下位机(单片机)配置使用2位停止位.
<3> 上位机(Modbus Pool)配置使用2位停止, 下位机(单片机)配置使用1位停止位.
<4> 上位机(Modbus Pool)配置使用2位停止, 下位机(单片机)配置使用2位停止位.

实验疑问:
上述4种情况经过验证, 数据都能正常通信, 并且不出现乱码. 请问大神, 该如何解释???
12条回答
security
1楼 · 2019-12-27 02:26.采纳回答
擦鞋匠 发表于 2017-7-28 08:48
大神, 我来理解下, 您看下是否正确?

1> 字符内的校验是采取奇偶校验的, 既然没开启, 自然不会校验.

如果标准确实严格要求 11 位的长度的话,
那么你这样的情况,我只能说,设备是不符合标准的。
如果要 100% 符合标准的话,那么就是要 11 位。

但为什么这样也行,你还没看清串口传输的本质:
1、串口 line 默认是高电平,这也是 stop 位的逻辑。
2、当 line 由高到低跳变,就是 start 位,此时接收设备意识到一个新的 char 即将到来,这是第 1 个 bit 的传输单元。
3、紧接着按照波特率,分 8 个 bit 的传输单元,分别接收一个 char。
4、最后,在第 10 个 bit 的传输单元,line 要回到高电平,也就是 stop 位需要的逻辑

其中 char 数据,跟 start 位和 stop 位无关,而协议所谓的帧校验,校验的是这部分 char 数据。
stop 位需要回到高电平,后续数据的传输,才有可能重新触发 start 信号,即高到低的跳变。
也只有检测到 start,才会认为有 char 数据需要接收。所以你一个、两个停止位,line 线都是高电平,接收设备压根就不关心这个,只有下一个 char 要发送时,接收设备才会检测到 start 信号,才会开始接收。
擦鞋匠
2楼-- · 2019-12-26 21:34
坐等大神...
lingdianhao
3楼-- · 2019-12-26 22:54
实际情况是不管是从站还是主站,发送的时候都是发送设置的个数的停止位,但是接收的时候只检测第一个停止位,忽略第二个停止位。
擦鞋匠
4楼-- · 2019-12-26 22:59
 精彩回答 2  元偷偷看……
norman33
5楼-- · 2019-12-27 05:34
本帖最后由 norman33 于 2017-7-28 09:13 编辑

楼主注意看下RS485的时序 当通信结束后总线被拉高 这个时候检测停止位 所以不管你配置1位还是2位都能被检测出来是停止位 只要不是连续不断的发送破坏总线空闲的状态
请忽略那个标注错误的 TTL电平
擦鞋匠
6楼-- · 2019-12-27 10:20
感谢楼上两位大神, 看来我要学习/理解的东西还有很多啊...路慢慢长...我该何去何从...
security
7楼-- · 2019-12-27 10:32
擦鞋匠 发表于 2017-7-28 10:22
感谢楼上两位大神, 看来我要学习/理解的东西还有很多啊...路慢慢长...我该何去何从...  ...

time + insight。
如果具备好的 insight,那么 time 会很短。

说到 insight,我再给你说一个问题:
我记得以前跟你说过标点符号的问题,你现在仍是英文模式,只不过有进步,变成:英文 + space。
这仍是不对的。
如果我是你的主管,你的文档这么写,内容都不用看了,直接打回去,整理好格式再来。
你好像一直没意识到这个问题,看看网络上、身边周围的人,多数人是跟你一样?还是不一样呢?
能不能意识到正统、主流的做法,这就是 insight 的一个体现。

你如果要说这样码字快的话,我想说的是:我们不是打字员,我们是程序员!

你可以看下:
阮一峰的这篇文章:「中文技术文档的写作规范」。

一周热门 更多>