打印

MODBUS通讯奇葩问题

[复制链接]
2610|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CXFLBH|  楼主 | 2019-10-17 11:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
[img]目前有一个使用MODBUS通讯的设备,主机是欧姆龙的PLC,带了我们20台设备用MODBUS通讯控制。现在出现了一个奇葩的问题,带16台通讯一切正常,只要增加一台也就是16台以上的设备,通讯就不正常了,控制设备一切正常,但设备无法返回数据。我分析可能是485的芯片到17台的时候驱动被什么东西拖死了。但从原理上分析,所有的设备电源都是独立的,485的线又是差分线,电源与电源之间又不会形成回路,有没有熟悉这一块的帮我分析分析是怎么回事。

使用特权

评论回复

相关帖子

沙发
steelen| | 2019-10-17 13:14 | 只看该作者
这有什么奇葩的
奇葩的是你的电路设计

使用特权

评论回复
板凳
tyw| | 2019-10-17 13:29 | 只看该作者

使用特权

评论回复
地板
CXFLBH|  楼主 | 2019-10-17 13:36 | 只看该作者
steelen 发表于 2019-10-17 13:14
这有什么奇葩的
奇葩的是你的电路设计

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

使用特权

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

使用特权

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

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

使用特权

评论回复
7
18990194628| | 2019-10-17 13:47 | 只看该作者
没有匹配电阻吗?485 A B之间要加120欧

使用特权

评论回复
8
CXFLBH|  楼主 | 2019-10-17 13:58 | 只看该作者
18990194628 发表于 2019-10-17 13:47
没有匹配电阻吗?485 A B之间要加120欧

头尾各加了一个

使用特权

评论回复
9
fzyuan| | 2019-10-17 14:37 | 只看该作者
CXFLBH 发表于 2019-10-17 13:58
头尾各加了一个

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

使用特权

评论回复
10
hobbye501| | 2019-10-17 14:41 | 只看该作者


128个 最多

使用特权

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

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

使用特权

评论回复
12
fzyuan| | 2019-10-17 14:51 | 只看该作者

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

使用特权

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

使用特权

评论回复
14
autooy| | 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,太大了抗干扰不行。 
15
steelen| | 2019-10-17 16:50 | 只看该作者
这个设计缺点
上下拉电阻小了,数量多了带不动
上下拉电阻大了,呵呵,波特率高了,电缆长了就不工作了
按下这头,浮起那头
看似简单实属奇葩的设计

使用特权

评论回复
16
Leeone| | 2019-10-17 20:46 | 只看该作者
量下差分信号不就知道了

使用特权

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

使用特权

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

使用特权

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

使用特权

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

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

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

使用特权

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

本版积分规则

1

主题

37

帖子

2

粉丝