提高485总线在集饭系统中的可靠性
另外,当某个分机出现异常情况(如死机)时,若此时MAX1487的DE端电位恰好为“1”,则该分机将一直占用通信总线,造成整个系统通信的崩溃。因此,在电路中应考虑监控MAX1487的DE端的电平,如该端持续为“1”时,应使分机复位以解除异常情况。图2电路可有效地解决这种情况。此外,该电路还能咻 下不工作的窗口机(分机)能自行脱离通讯网络。
2.2 485总线输出电路部分的设计
输出电路的设计要充分考虑到线路上的各种干扰及线路特性阻抗的匹配。由于工程环境比较复杂,现场常有各种形式的干扰源,所以,485总线的传输端一定要加有保护措施。在电路设计中采用稳压管Z1、Z2组成的吸收回路,也可以选用能够抗浪涌的TVS瞬态杂波抑制器件,或者直接选用能抗雷击的485芯片(如MAX1487E等),以消除线路浪涌干扰。
考虑到线路的特殊情况(如某一台分机的485芯片被击穿短路),为防止总线中其它分机的通信受到影响,必须在其A、B输出端与485总线之间进行隔离。一种简单可行的方法是:在MAX1487的信号输出端串联两个10~30Ω的电阻R1、R2,这样一来,一方面,本机的硬件故障就不会使整个总线的通信受到影响;另一方面,与Z1、Z2配合,进一步保护了485总线通讯芯片。
在售饭系统产品的现场施工中,一般采用双绞线来连接,它的特性阻抗为120Ω左右,所以,线路设计时,在整个485网络传输线两端应各接1只120Ω的匹配电阻(如图2中R7),以减少线路上传输信号的反射。
由RS-485芯片的特性可知,接收器的检测灵敏度为±200mV,即差分输入端的电位差的绝对值大或等于200mV时,输出状态不确定。如果总线上所有发送器被禁止时,总线处于空闲状态,接收器的输出状态是不定的。如处于逻辑“0”,这会被误认为是通信帧的起始位而引起工作不正常。解决这个问题的办法是人为地使A端电位高于B端电位,这样接收端的电平在485总线不发送期间(总线空闲时(呈现唯一的高电平,8031单片机就不会被误中断而收到乱字符。通过在485电路的A、B输出端加接上拉、下拉电阻R5、R6,即可很好地解决这个问题。需要注意的是,在整个网络中只需在一处接入这两只电阻,通常在主机中接入。
有些资料中提到,在施工中不能将主机安装在网络的中间形成T型分布,而应将主机放在总线的一端。由485总线规范指出,最大通讯距离可达1.2km,笔者在现场施工中,为了增加通讯距离,将主机设置在网络的中央,由于分机间无需进行通讯,两台分机之间的最大距离可达到2.4km。实际应用中可达到2km而保证通讯正常。
3 软件的编程
RS-485通常应用于一对多点的主从应答式通信系统中,相对于RS-232等全双工总线,效率低了许多,因此选用合适的通信协议及控制方式就显得非常重要。
3.1 总线稳态控制
大多数使用者选择在数据发送前1ms将收发控制端DE置成高电平,使总线进入稳定的发送状态后才发送数据,数据发送完毕再延迟1ms后置TC端成低电平,使数据可靠发送完毕后才转入接收状态。如按这样的要求来做,系统的通讯效率将大大降低。据笔者使用的经验,DE端有10个机器周期的延时已满足要求。
3.2 通讯协议制定
评论