Modbus通信无法正确接收应答的问题处理

文章讲述了现场出现的Modbus网关无法正确读取就地设备温度信息的问题,分析了通讯波形和串口信号,发现终端设备应答过快导致起始位识别错误。解决方案是确保发送时RXD的高电平时间足够长以正确接收数据。
摘要由CSDN通过智能技术生成
问题现象:

现场反馈,modbus网关无法正确读取就地设备的温度信息。使用PC连接就地设备可以正常读取。

问题调查:

拿到末端设备后,故障现象可重复,不过使用PC的USB转485适配器也无法正常读取数据。

如下图:通过示波器查看AB线上面的通讯波形,可以看到发送和应答波形。不过发送和应答数据之间的间隔非常短,展开后只有大约100us,因为使用的波特率是9600bps,1bit的传输时间大约100us。

初步断定是末端设备的应答时间不符合要求,应答太快造成的。

可是现场反馈,使用其他品牌的网关可正常连接末端设备。然后又继续调查,查看485隔离芯片内部靠近cpu端的RXD上面的波形,看是否和AB线上面一致。如下图:黄色为内部RXD的波形,绿色为AB线波形。

可以看到黄色探针能够测量到接收到的数据。不过有一个现象,在网关发送轮询数据时,RXD的电平是拉低状态。不知道这个现象是否正常,继续追踪这个问题,把RXD的波形展开,如下图:

可以看到RXD的波形在发送数据和接收数据中间有一个极短的上升时间,大约200ns。紧跟着后面就开始接收数据。在串口起始位开始要有一段高电平时间,可能和这个高电平时间太短有关系。RXD的波形为何在发送时,被拉低也不明原因。检查驱动,对RXD进行内部上拉后,可以正常接收到数据了。

问题总结:

经过调查,可以认为,这个问题是由于在串口发送时,RXD被拉低,当接收的串口数据传过来时,没有正确识别起始位,造成的。应该在起始位前有一段足够长的高电平。最少要满足3.5个字符的时间间隔。此次的终端设备,应答速度极快,刚接收完马上就应答数据,造成modbus主设备没有正确接收数据。

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值