[应用相关] Modbus停止位引发的奇怪问题?求助高手

[复制链接]
6871|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 的振荡时钟源精度发生偏差,导致通信错误,但并不能通过改变停止位得到改善。
我觉得应该从别的因素考虑(说不定问题的原因与停止位无关)。
 楼主| 飘落枫叶 发表于 2015-2-3 09:08 | 显示全部楼层
crystal1987 发表于 2015-2-2 13:57
2个停止位无法通行,可以通过示波器查看下收发数据是怎样的。1个停止位是否能够正常通行,如果1个停止位能 ...

Modbus协议的RTU模式下,采用无校验,软件内部是增加一个停止位来替代原来的奇偶校验位的。我已开始也调试过,Modbus通信时分别在奇校验(一个停止位),偶校验(一个停止位),和无校验(两个停止位)下测试并看了波形的。恩,看来要重测了。
 楼主| 飘落枫叶 发表于 2015-2-3 09:25 | 显示全部楼层
airwill 发表于 2015-2-2 20:03
USART 和 RS485 的通信中, 采用几个停止位,并不会影响数据的通信,特别是增加一个停止位。
温度的变化, ...

硬件,运行软件,上位机测试软件。硬件和软件环境完全一样,在收到他的问题,我立即就测试,结果我这边正常通行。波特率9600下,Modbus报文RTU帧之间间隔是>=3.5个字符,一个正常帧内的两个字符之间间隔<=1.5字符。温度变化,引起IC时钟精度发生偏差,是有可能导致 t1.5异常。做个低温测试看看结果。
 楼主| 飘落枫叶 发表于 2015-2-3 09:28 | 显示全部楼层
21 - 2 = ?不是19吗,21ic上的校验问答有问题吧。
sjnh 发表于 2015-2-3 10:18 | 显示全部楼层
建议先用串口调试助手之类的现成软件测试,确认是上位机软件的问题还是电路板软硬件的问题;时钟精度不会影响这么大;
我以前发现有时候自己写的上位机软件无法初始化串口,但不报错,不过没有查为什么,后来不知改了什么地方又可以了;
henglin 发表于 2016-9-2 15:17 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部