RS-485总线通信系统的可靠性措施

RS-485 总线通信系统的可靠性措施

来源:网络

更新时间:2008-11-13 9:21:36

浏览次数:2603

1 问题的提出 在工业控制及测量领域较为常用的网络之一就是物理层采用 RS-485 通信接口所组成的工控设备网 络。这种通信接口可以十分方便地将许多设备组成一个控制网络。从目前解决单片机之间中长距离通 信的诸多方案分析来看,RS-485 总线通信模式由于具有结构简单、价格低廉、通信距离和数据传输 速率适当等特点而被广泛应用于仪器仪表、智能化传感器集散控制、楼宇控制、监控报警等领域。但 RS485 总线存在自适应、自保护功能脆弱等缺点,如不注意一些细节的处理,常出现通信失败甚至系 统瘫痪等故障,因此提高 RS-485 总线的运行可靠性至关重要。

2 硬件电路设计中需注意的问题 2.1 电路基本原理 某节点的硬件电路设计如图 1 所示,在该电路中,使用了一种 RS-485 接口芯片 SN75LBC184,它采用 单一电源 Vcc,电压在+3~+5.5 V 范围内都能正常工作。与普通的 RS-485 芯片相比,它不但能抗

雷电的冲击而且能承受高达 8 kV 的静电放电冲击,片内集成 4 个瞬时过压保护管,可承受高达 400 V 的瞬态脉冲电压。因此,它能显著提高防止雷电损坏器件的可靠性。对一些环境比较恶劣的现场,可 直接与传输线相接而不需要任何外加保护元件。该芯片还有一个独特的设计,当输入端开路时,其输 出为高电平,这样可保证接收器输入端电缆有开路故障时,不影响系统的正常工作。另外,它的输入 阻抗为 RS485 标准输入阻抗的 2 倍(≥24 kΩ),故可以在总线上连接 64 个收发器。芯片内部设计 了限斜率驱动,使输出信号边沿不会过陡,使传输线上不会产生过多的高频分量,从而有效扼制电磁 干扰。在图 1 中,四位一体的光电耦合器 TLP521 让单片机与 SN75LBC184 之间完全没有了电的联系, 提高了工作的可靠性。基本原理为:当单片机 P1.6=0 时,光电耦合器的发光二极管发光,光敏三极 管导通,输出高电压(+5 V),选中 RS485 接口芯片的 DE 端,允许发送。当单片机 P1.6=1 时,光 电耦合器的发光二极管不发光,光敏三极管不导通,输出低电压(0 V),选中 RS485 接口芯片的 RE 端,允许接收。SN75LBC184 的 R 端(接收端)和 D 端(发送端)的原理与上述类似。 2.2 RS-485 的 DE 控制端设计 在 RS-485 总线构筑的半双工通信系统中,在整个网络中任一时刻只能有一个节点处于发送状态并向 总线发送数据,其他所有节点都必须处于接收状态。如果有 2 个节点或 2 个以上节点同时向总线发送 数据,将会导致所有发送方的数据发送失败。因此,在系统各个节点的硬件设计中,应首先力求避免 因异常情况而引起本节点向总线发送数据而导致总线数据冲突。以 MCS51 系列的单片机为例,因其在 系统复位时,I/O 口都输出高电平,如果把 I/O 口直接与 RS-485 接口芯片的驱动器使能端 DE 相连, 会在 CPU 复位期间使 DE 为高,从而使本节点处于发送状态。如果此时总线上有其他节点正在发送数 据,则此次数据传输将被打断而告失败,甚至引起整个总线因某一节点的故障而通信阻塞,继而影响 整个系统的正常运行。考虑到通信的稳定性和可靠性,在每个节点的设计中应将控制 RS485 总线接口 芯片的发送引脚设计成 DE 端的反逻辑,即控制引脚为逻辑“1”时,DE 端为“0”;控制引脚为逻辑 “0”时,DE 端为“1”。在图 1 中,将 CPU 的引脚 P1.6 通过光电耦合器驱动 DE 端,这样就可以使控 制引脚为高或者异常复位时使 SN75LBC184 始终处于接收状态,从而从硬件上有效避免节点因异常情 况而对整个系统造成的影响。这就为整个系统的通信可靠奠定了基础。 此外, 电路中还有 1 片看门狗 MAX813L, 能在节点发生死循环或其他故障时, 自动复位程序, 交出 RS-485

总线控制权。这样就保证整个系统不会因某一节点发生故障而独占总线,导致整个系统瘫痪。 2.3 避免总线冲突的设计 当一个节点需要使用总线时,为了实现总线通信可靠,在有数据需要发送的情况下先侦听总线。在硬 件接口上, 首先将 RS-485 接口芯片的数据接收引脚反相后接至 CPU 的中断引脚 INT0。 在图 1 中, INT0 是连至光电耦合器的输出端。当总线上有数据正在传输时,SN75LBC184 的数据接收端(R 端)表现为 变化的高低电平, 利用其产生的 CPU 下降沿中断 (也可采用查询方式) 能得知此时总线是否正 , “忙” , 即总线上是否有节点正在通信。如果“空闲”,则可以得到对总线的使用权限,这样就较好地解决了 总线冲突的问题。在此基础上,还可以定义各种消息的优先级,使高优先级的消息得以优先发送,从 而进一步提高系统的实时性。采用这种工作方式后,系统中已经没有主、从节点之分,各个节点对总 线的使用权限是平等的,从而有效避免了个别节点通信负担较重的情况。总线的利用率和系统的通信 效率都得以大大提高,从而也使系统响应的实时性得到改善,而且即使系统中个别节点发生故障,也 不会影响其他节点的正常通信和正常工作。这样使得系统的“危险”分散了,从某种程度上来说增强 了系统的工作可靠性和稳定性。 2.4 RS-485 输出电路部分的设计 在图 1 中, VD1~VD4 为信号限幅二极管,其稳压值应保证符合 RS-485 标准, 和 VD3 取 12 V,VD2 和 VD1 VD4 取 7 V,以保证将信号幅度限定在-7~+12 V 之间,进一步提高抗过压的能力。考虑到线路的特殊 情况 (如某一节点的 RS-485 芯片被击穿短路)为防止总线中其他分机的通信受到影响, SN75LBC184 , 在 的信号输出端串联了 2 个 20 Ω的电阻 R1 和 R2,这样本机的硬件故障就不会使整个总线的通信受到 影响。在应用系统工程的现场施工中,由于通信载体是双绞线,它的特性阻抗为 120 Ω左右,所以 线路设计时,在 RS485 网络传输线的始端和末端应各接 1 个 120 Ω的匹配电阻(如图 1 中的 R3), 以减少线路上传输信号的反射。 2.5 系统的电源选择 对于由单片机结合 RS-485 组建的测控网络,应优先采用各节点独立供电的方案,同时电源线不能 与 RS-485 信号线共用同一股多芯电缆。RS-485 信号线宜选用截面积 0.75 mm2 以上的双绞线而不是 平直线,并且选用线性电源 TL750L05 比选用开关电源更合适。TL750L05 必须有输出电容,若没有输

出电容,则其输出端的电压为锯齿波形状,锯齿波的上升沿随输入电压变化而变化,加输出电容后, 可以抑制该现象。 3 软件的编程 SN75LBC184 在接收方式时,A、B 为输入,R 为输出;在发送方式时,D 为输入,A、B 为输出。 当传送方向改变一次后,如果输入未变化,则此时输出为随机状态,直至输入状态变化一次,输出状 态才确定。显然,在由发送方式转入接收方式后,如果 A、B 状态变化前,R 为低电平,在第一个数 据起始位时,R 仍为低电平,CPU 认为此时无起始位,直到出现第一个下降沿,CPU 才开始接收第一 个数据,这将导致接收错误。由接收方式转入发送方式后,D 变化前,若 A 与 B 之间为低电压,发送 第一个数据起始位时,A 与 B 之间仍为低电压,A、B 引脚无起始位,同样会导致发送错误。克服这种 后果的方案是:主机连续发送两个同步字,同步字要包含多次边沿变化(如 55H ,0AAH),并发送两 次(第一次可能接收错误而忽略) ,接收端收到同步字后,就可以传送数据了,从而保证正确通信。 为了更可靠地工作,在 RS485 总线状态切换时需要适当延时,再进行数据的收发。具体的做法是 在数据发送状态下,先将控制端置“1”,延时 0.5 ms 左右的时间,再发送有效数据,数据发送结束 后,再延时 0.5 ms,将控制端置“0”。这样的处理会使总线在状态切换时,有一个稳定的工作过程。 数据通信程序基本流程图如图 2 所示。 单片机通信节点的程序基本上可以分为 6 个主要部分, 分别为预定义部分、 初始化部分、 主程序部分、 设备状态检测部分、帧接收部分和帧发送部分。预定义部分主要定义了通信中使用的握手信号,用于 保存设备信息的缓冲区和保存本节点设备号的变量。设备状态检测部分应能在程序初始化后,当硬件 发生故障时,作出相应的反应。主程序部分应能接收命令帧,并根据命令内容作出相应的回应。为缩 短篇幅,这里仅给出主程序部分的代码。如下所示: /* 主程序流程 */ while(1) { //主循环

if(recv_cmd(&type)==0) //发生帧错误或帧地址与本机 //地址不符,丢弃当前帧后返回 continue;

switch(type) { case __ACTIVE_: //主机询问从机是否存在

send_data(__OK_, 0,dbuf);//发送应答信息 break; case __GETDATA_: len = strlen(dbuf); send_data(__STATUS_, len,dbuf);//发送状态信息 break; default: break; } } //命令类型错误,丢弃当前帧后返回

4 结论 RS-485 由于使用了差分电平传输信号,传输距离比 RS-232 更长,最多可以达到 3000 m,因此很 适合工业环境下的应用。但与 CAN 总线等更为先进的现场工业总线相比,其处理错误的能力还稍显逊 色,所以在软件部分还需要进行特别的设计,以避免数据错误等情况发生。另外,系统的数据冗余量 较大,对于速度要求高的应用场所不适宜用 RS-485 总线。虽然 RS-485 总线存在一些缺点,但由于它 的线路设计简单、价格低廉、控制方便,只要处理好细节,在某些工程应用中仍然能发挥良好的作用。 总之,解决可靠性的关键在于工程开始施工前就要全盘考虑可采取的措施,这样才能从根本上解决问 题,而不要等到工程后期再去亡羊补牢。


相关文档

基于RS-485总线的数据通信与远程控制
基于RS-485总线主从通信协议及其实现
球型摄像机机RS485总线接线常识
基于RS485总线实现蔬菜大棚温湿度监控系统(三个大棚)
RS-485总线的理论与实践(1)答辩
IVC2L-RS485总线设备布线规范
基于RS485总线的多机通信系统设计
RS-485串行数据通信协议及其应用
多台台达PLC-RS485通信说明
基于RS-485的单片机通信系统设计
电脑版