使用RS485通讯不正常原因解析 点击:3880 | 回复:2



ye_w

    
  • 精华:21帖
  • 求助:1帖
  • 帖子:69帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2010-08-16 09:46:56
楼主
在RS485网络的通信中出现通信故障时,可能存在很多方面的原因,可以考虑按照下面思路进行分析:
1、通讯电缆连接不正确(包括接触不良)
物理上不通虽然是最简单的问题,但也是最容易犯错的地方。正确的电缆连接是完成通信的基础,实际的应用中要确保接线的正确。
很多时候连接器上的管脚码小,不易看清;焊接工艺上不熟练等都是容易连接错误的问题所在。
当实际的通信电缆长度大于50米时,要在总线的两端加匹配的终端电阻。当然这个50米也不是绝对值,如果大家手头上有电阻是,可以考虑都加上而不必拘泥于通信电缆的长度。
确保A、B信号线的正确连接。如果通讯电缆的A、B线接反了,将导致0和1的信号是反的,颠倒A、B线。

2、第三方设备的使用问题
当网络中使用了第三方设备,例如RS232/485转换器时,问题可能出在转换器上,或者转换器的接线不对,按照电缆连接图仔细检查,或更换转换器测试。还有一些转换器需要外部供电,也容易被忽略。

3、编程问题
在确保硬件连接没有问题的情况下,要检查程序是否有问题,包括通信参数的设置,通信功能块的使用,轮询程序等。可以通过功能块的返回信息判断错误原因,例如波特率设置错误,接收的缓冲区溢出,接收数据块设置过小,发送的数据长度为0等。
3.1 关于编程方面的问题,使用串口调试软件是最起码的。不管是单独对双方调试,还是联网调试,都可以使用串口调试软件来发送与监视报文,分析编程指令问题所在。同时也能判读指令是否有问题,接线是否有错的可能性。
3.2 编程上切忌先求全,不要一股脑全部编写完再去调试。可以将通讯部分的程序先单独调试,甚至是单独调试发送或接收;等单独调试完毕后再增加数据处理部分的程序(包括错误报文的处理)。


4、通信模板(或适配器)硬件故障
可以通过更换通信模板的方式测试。更换也是最常见的解决方法,当然也容易受“巧妇难为无米之炊”的影响。

5、干扰问题
这个也是最麻烦的问题,有的时候不知所从。由于实际的现场环境比较复杂,不可避免地存在干扰问题,所以应该在项目规划过程和安装过程中给予充分的考虑,尽量按照相关的规范进行安装、布线,并做好接地等。



饶歌

  • 精华:4帖
  • 求助:0帖
  • 帖子:330帖 | 6019回
  • 年度积分:0
  • 历史总积分:23673
  • 注册:2010年2月20日
发表于:2010-08-16 21:10:48
1楼
学习了,有一种情况提醒一下大家要碰到也需要考虑,RS485一般我们讲通讯距离都是1KM以上,但实际上有种伪RS485也就三百来米,曾经我就碰到过,差点没被整死,后来并个200多欧的电阻就行了。

ye_w

  • 精华:21帖
  • 求助:1帖
  • 帖子:69帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2010-08-16 21:20:08
2楼
在我做通讯的时候,几乎从不挑战极限。极限往往是有前提条件的,但现场情况总与理想有差距,因此推荐大家在组网的时候,留有余地,毕竟我们做的是项目,必须成功,不是研究,允许失败。当然,如果是实验室的调试,倒是可以挑战一下。

热门招聘
相关主题

官方公众号

智造工程师