[在线研讨会] MODBUS通讯奇葩问题

[复制链接]
999|25
 楼主 | 2019-10-17 11:56 | 显示全部楼层 |阅读模式
[img]目前有一个使用MODBUS通讯的设备,主机是欧姆龙的PLC,带了我们20台设备用MODBUS通讯控制。现在出现了一个奇葩的问题,带16台通讯一切正常,只要增加一台也就是16台以上的设备,通讯就不正常了,控制设备一切正常,但设备无法返回数据。我分析可能是485的芯片到17台的时候驱动被什么东西拖死了。但从原理上分析,所有的设备电源都是独立的,485的线又是差分线,电源与电源之间又不会形成回路,有没有熟悉这一块的帮我分析分析是怎么回事。 捕获.JPG

使用特权

评论回复
| 2019-10-17 13:14 | 显示全部楼层
这有什么奇葩的
奇葩的是你的电路设计

使用特权

评论回复
| 2019-10-17 13:29 | 显示全部楼层

使用特权

评论回复
 楼主 | 2019-10-17 13:36 | 显示全部楼层
steelen 发表于 2019-10-17 13:14
这有什么奇葩的
奇葩的是你的电路设计

奇葩在哪里,能否指出一二

使用特权

评论回复

评论

steelen 2019-10-17 16:43 回复TA
看楼下 
| 2019-10-17 13:40 | 显示全部楼层
R5、R6你用了1K电阻,17个并联后是多少?你要主机485芯片能驱动这个并联后的电阻,主机表示亚历山大啊。

使用特权

评论回复

评论

steelen 2019-10-17 16:43 回复TA
正解,我懒得解释 什么设计。。。 
 楼主 | 2019-10-17 13:43 | 显示全部楼层
cjseng 发表于 2019-10-17 13:40
R5、R6你用了1K电阻,17个并联后是多少?你要主机485芯片能驱动这个并联后的电阻,主机表示亚历山大啊。 ...

每一台的电源与电源之间是独立的啊,没有共地的问题,怎么会形成回路呢?不解。

使用特权

评论回复
| 2019-10-17 13:47 | 显示全部楼层
没有匹配电阻吗?485 A B之间要加120欧

使用特权

评论回复
 楼主 | 2019-10-17 13:58 | 显示全部楼层
18990194628 发表于 2019-10-17 13:47
没有匹配电阻吗?485 A B之间要加120欧

头尾各加了一个

使用特权

评论回复
| 2019-10-17 14:37 | 显示全部楼层
CXFLBH 发表于 2019-10-17 13:58
头尾各加了一个

在工业应用的低速率通讯中,终端电阻是可有可无的,影响并不大。
而在楼主的应用中,终端电阻还是有害的。
每个节点的1k上下拉电阻才是要命的。

使用特权

评论回复
| 2019-10-17 14:41 | 显示全部楼层
809685da80d1395778.png

128个 最多

使用特权

评论回复
 楼主 | 2019-10-17 14:44 | 显示全部楼层
fzyuan 发表于 2019-10-17 14:37
在工业应用的低速率通讯中,终端电阻是可有可无的,影响并不大。
而在楼主的应用中,终端电阻还是有害的 ...

我也是这么认为的,只是原理没想通。

使用特权

评论回复
| 2019-10-17 14:51 | 显示全部楼层

这里的128是指总线上没有任何上下拉电阻的情况。

使用特权

评论回复
| 2019-10-17 14:59 | 显示全部楼层
用示波器看看波形吧,16台以下和16台以上,示波器的波形是否正常?从这里分析一下吧,然后去掉上下拉再看看波形

使用特权

评论回复
| 2019-10-17 16:32 | 显示全部楼层
给四个建议:1.加大R5,R6,一般采用10K-20K确定电平状态的上下拉电阻;
          2.RS485一般都采用鱼贯串联方式,而不是Y型连接效果更佳。
          3.不同数量的连接,匹配电阻有可能变化,你可以采用可调电阻,比如200R可调电阻往下测试调到120R或者适合的匹配终端负载测试下;
          4.如果距离过长,建议你在技术要求允许的情况下,适当降低波特率。

使用特权

评论回复

评论

CXFLBH 2019-10-17 16:39 回复TA
多谢你的建议,电阻我准备加到3.3K,太大了抗干扰不行。 
| 2019-10-17 16:50 | 显示全部楼层
这个设计缺点
上下拉电阻小了,数量多了带不动
上下拉电阻大了,呵呵,波特率高了,电缆长了就不工作了
按下这头,浮起那头
看似简单实属奇葩的设计

使用特权

评论回复
| 2019-10-17 20:46 | 显示全部楼层
量下差分信号不就知道了

使用特权

评论回复
| 2019-10-18 10:10 | 显示全部楼层
根据我多年的仪表研发和售后服务经验来看,这个电路应该是没有问题的,最多RXD2加一个上拉电阻,如果没加的话,需要将内部上拉打开。  我原来碰到这种问题,1、最基本的是用串口调试助手监测总线数据,有时串口转换器接上就好了, 或者将PLC脱开,用电脑modscan连  2、如果线长的话,加匹配电阻,不一定是120欧,  有时用一电位器调;  3、降低波特率, 因为许多单片机用的内部RC做主频,波特率不一定很准,如果波特率误差过大,就会产生误码,4、如果还不行的话,用差分探头接入示波器,分析总线波形; 5、MODBUS要求在收到数据后延时几个位发送数据,用电脑做主机一般没问题,如果PLC的话,延时还是必须要加的,  

使用特权

评论回复
| 2019-10-18 10:37 | 显示全部楼层
上拉下拉1K,17台就是58欧姆,而且是接5V或者GND的,串联的电阻是22欧姆,可能信号就临界了。
建议加大上拉下拉电阻,甚至可以去掉的,串联电阻短路。

使用特权

评论回复
| 2019-10-18 11:27 | 显示全部楼层
问题的根源是自动切换收发的485电路。这个电路为了实现自动收发切换,其实串口的逻辑“1”并不是由485芯片发出的,而是上下拉电阻发出的。这就导致了上下拉电阻不能太小,否则从发“0”到“1”的就会很慢,无法正常通讯,而这么多的电阻并在一起又会对驱动端造成很大的负担。所以这种自动切换收发的电路最好只用在点对点的通讯应用里。如果有很多设备组网,还是应该由CPU主动控制收发切换。

使用特权

评论回复
| 2019-10-18 12:00 | 显示全部楼层
carbon 发表于 2019-10-18 11:27
问题的根源是自动切换收发的485电路。这个电路为了实现自动收发切换,其实串口的逻辑“1”并不是由485芯片 ...

顶!
除了上下拉电阻太小,AB串联22电阻可以不要以外,这个自动收发确实是大问题。

自动收发使得  设备发送 1 和 发送 0 的驱动能力不一致,一个是由芯片驱动,一个是由上下拉电阻驱动。这种方式是要不得的。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /5 下一条

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