关于RS485 MODBUS通讯失败的超级奇怪问题?????

我用STM32单片机做的一个控制器,用了两个串口,一个用于调试用,一个用于现场RS485总线,采用的都是MODBUS RTU协议,现在问题是,控制器与老外的电厂控制器(PLC做的)进行通讯,通讯一段时间后,不知道什么时候,电厂控制器就显示通讯失败,且无法恢复,这个时候,我用串口调试器接到AB线,再用串口调试软件查看报文,发现,电厂控制器还在下发指令,而我的控制器还在回传报文,经过判断,我回传的报文也是正确的,但是电厂控制器就是显示失败,并且40000寄存器的数全部为0。这个时候,重新启动我的单片机,没有任何作用,重新启动老外的电厂控制器就OK了,通讯恢复,但是还是会不定时通讯失败。 我用我的单片机与公司同事做的一个仿老外的电厂控制器进行通讯,就会通讯正常,而老外的电厂控制器和我们公司用PLC做的控制器连接,通讯也正常,不中断。 后来,怀疑单片机是不是受到了干扰,于是,发现,当伺服驱动器工作时,单片机与电厂控制器就会发生通讯失败,伺服不工作时,单片机与电厂控制器通讯了一天一宿也没断,说明单片机受到了干扰。这种干扰在示波器上表现为,AB线上波形略微出现了一些毛刺,毛刺不是很大,但是也比较明显。可是即便如此通讯也正常,不知道什么时候,电厂控制器会突然显示通讯失败,只要失败,就一直无法恢复,这个时候,监测报文,双方还在收发数据,感觉通讯没有中断,但是就是无法恢复,电厂控制器一重启就好了。但是为什么电厂控制器与PLC通讯就从未断过呢? 在调试中,还发现了一些我不得其解的问题,就是我的单片机的输出地(PCB有一个是系统地和一个输出地,隔离电源),与伺服驱动器的外壳如果用导线去触碰的话,会有很小的火花产生,并伴有噼啪声。后来,我把这两个地给接一起了,再用示波器看AB线波形,发现毛刺小了些,但是还是会偶尔通讯失败。 哦,整个系统没有接大地,后来,我用一个电线,从外部厂房扯了一根地线(与大地良好连接),与我的输出地和伺服外壳地接到了一起,结果AB线的波形,毛刺反而更大了。 哦,还想起来一个事儿,就是,上边说的两个地之间以后火化的现象,我把伺服驱动器侧的电控柜内部的防雷装置给撤掉了,这时我单片机的输出地与伺服外壳地就没有火花了,好奇怪。。。。。。。。 愁死了,不知道干扰来自于哪,为什么PLC和电厂控制器连,就没问题呢?而且看PLC也没用金属外壳屏蔽啊?我的PCB板目前暂时没有屏蔽就是裸露的放在电控柜内的,现在正在加屏蔽设计。。。。。。 为什么我的单片机和公司自己的电厂控制器通讯就没问题呢? 如果是有干扰,那么干扰来自于哪里呢?接地没处理好?伺服的干扰?火花怎么产生的? 现在就是一对一的通讯,距离仅有十几米,普通的双绞线(PLC与电厂控制器通讯也用的这根线)。 还有一个超级无敌的问题,就是,在测试时,发现两次通讯失败后,AB线波形出现发送波形与接收波形不再一个水平线上的问题,出现了错位(正常时,他们都在一个基准线上,形成的高低电平变化,现在发送和接收基准变了),这个时候,我用万用表去量B线对伺服外壳地,发现短路,将所有设备、系统断电,还是短路,将B线从单片机板上拆下,单独量B线与外壳地,还是短路,但是随着时间,大概几分钟,万用表短路挡的蜂鸣器出现了断续的响声(表明时通时断),一直到最后不再出声,表明无短路现象,这时,所有系统设备重新上电,通讯又恢复正常,发送与接收数据的波形也在一个水平基准点上了,超级无厘头啊! 求教超级无敌的高手,谁知道病因在哪?恳请指导我一步一步排查问题之所在,小弟不胜感激!

出现这样的问题无非是串口通讯的问题,要不然你就把485芯片外围加好隔离电路,或者加金升阳的B0505S隔离芯片,但是这个器件很贵,不知道你的成本能不能接受,哈哈。

我搜了一下RS485问题解决,看到一个这个芯片,说是不用隔离,你也可以看看。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-25
把你的单片机和PLC的地连接,通讯问题就可以解决。

整个系统出现这个现象的原因是各个设备接地不规范或者不良好造成的,并且PLC的供电电源也应该不是很好的电源。因为是串口通讯的问题,建议你在通讯不畅的时候测量串口对各个设备地线的电压,包括交流、直流,根据电压应该可以判断出不正常的地方。本回答被提问者和网友采纳
第2个回答  2013-07-30

还是干扰导致的!等电位接地不可忽视,接地电阻≯4Ω。

详见附件。

第3个回答  2013-08-01
上面有朋友提到,匹配电阻,再就得采取隔离、屏蔽措施
线用双屏蔽,线路上用485隔离器
第4个回答  2013-07-30
弱弱的问一句,你采用的是什么通讯线,两端有加装匹配电阻吗?
相似回答