打印
[应用相关]

Modbus停止位引发的奇怪问题?求助高手

[复制链接]
6421|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
飘落枫叶|  楼主 | 2015-1-30 13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用Modbus的rtu协议,软件实现的是1个起始位,8个字节大小,无校验,1个或2个停止位。
问题:我使用Modbus poll测试时1个停止位和2个停止位都能正常通讯(南方常温下,有硬件支撑)。但是我同事在北京使用时发现2个停止位时就是无**常通讯。我立即在上海测试了下,发现1或2个停止位完成正常。
他的硬件模块,我上个月确认过,而且使用了外壳包装,不可能改变内部硬件,而且上位机软件一样。我查了些资料,真是无法理解,希望有人能帮助我。
沙发
飘落枫叶|  楼主 | 2015-2-2 08:43 | 只看该作者
都两天了,大神啊

使用特权

评论回复
板凳
crystal1987| | 2015-2-2 13:57 | 只看该作者
2个停止位无法通行,可以通过示波器查看下收发数据是怎样的。1个停止位是否能够正常通行,如果1个停止位能正常通信,那就要检查下软件啦。

使用特权

评论回复
地板
airwill| | 2015-2-2 20:03 | 只看该作者
USART 和 RS485 的通信中, 采用几个停止位,并不会影响数据的通信,特别是增加一个停止位。
温度的变化,可能导致 IC 的振荡时钟源精度发生偏差,导致通信错误,但并不能通过改变停止位得到改善。
我觉得应该从别的因素考虑(说不定问题的原因与停止位无关)。

使用特权

评论回复
5
飘落枫叶|  楼主 | 2015-2-3 09:08 | 只看该作者
crystal1987 发表于 2015-2-2 13:57
2个停止位无法通行,可以通过示波器查看下收发数据是怎样的。1个停止位是否能够正常通行,如果1个停止位能 ...

Modbus协议的RTU模式下,采用无校验,软件内部是增加一个停止位来替代原来的奇偶校验位的。我已开始也调试过,Modbus通信时分别在奇校验(一个停止位),偶校验(一个停止位),和无校验(两个停止位)下测试并看了波形的。恩,看来要重测了。

使用特权

评论回复
6
飘落枫叶|  楼主 | 2015-2-3 09:25 | 只看该作者
airwill 发表于 2015-2-2 20:03
USART 和 RS485 的通信中, 采用几个停止位,并不会影响数据的通信,特别是增加一个停止位。
温度的变化, ...

硬件,运行软件,上位机测试软件。硬件和软件环境完全一样,在收到他的问题,我立即就测试,结果我这边正常通行。波特率9600下,Modbus报文RTU帧之间间隔是>=3.5个字符,一个正常帧内的两个字符之间间隔<=1.5字符。温度变化,引起IC时钟精度发生偏差,是有可能导致 t1.5异常。做个低温测试看看结果。

使用特权

评论回复
7
飘落枫叶|  楼主 | 2015-2-3 09:28 | 只看该作者
21 - 2 = ?不是19吗,21ic上的校验问答有问题吧。

使用特权

评论回复
8
sjnh| | 2015-2-3 10:18 | 只看该作者
建议先用串口调试助手之类的现成软件测试,确认是上位机软件的问题还是电路板软硬件的问题;时钟精度不会影响这么大;
我以前发现有时候自己写的上位机软件无法初始化串口,但不报错,不过没有查为什么,后来不知改了什么地方又可以了;

使用特权

评论回复
9
henglin| | 2016-9-2 15:17 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

19

帖子

0

粉丝