售饭系统中怎么提供485通信的可靠性 添加日期: 2009/8/31
就食堂售饭管理系统中采用485总线易出现的问题,分析了产生的原因并给出了解决问题的方案和措施。
关键词:RS-485总线,售饭系统,串行异步通信
1 问题的提出
在分布系统的设计中,RS-485半双工异步通信总线是被各个厂家广泛采用的数据通信总线。在售饭管理系统的设计中也不例外,它往往应用在主控机房与各个食堂的分机之间。系统拓扑结构如图1所示。
由于实际工程中,分机数量较多,分布较远,所处的环境较恶劣,现场的各种干扰也较大,所以,往往通信的可靠性及质量不高,再加上软硬件设计得不完善,使得实际工程应用中485总线的通信质量总是不尽人意。
在使用RS-485总线时,如果简单地按常规方式设计电路,在实际应用中可能会出现以下两个问题:一是数据传输的可靠性问题;二是在多机通信方式下,一个节点发生故障往往会导致整个系统的通信陷入瘫痪,而且故障点的定位也非常不容易,给系统维护带来困难。
针对上述问题,我们对485总线的软件和硬件分别采取了一些必要的改进措施。
2 硬件电路的设计
现以8031单片机、单片机监控芯片MAX691A,外接485总线通讯芯片MAX1487为例。电路原理图如图2所示。在电路设计中注意了上述两个问题。
2.1 MAX1487 485芯片DE控制端的设计
由于在售饭系统中,主控机房与各个食堂相隔较远,而分机系统上电复位又常常不是在同一个时刻完成。8031在复位期间,I/O口输出高电平,此时该分机的MAX1487的DE端电位为“1”,那么它将会处于发送状态,也就是占用了通信总线,这样,就影响其它分机与主机进行通信。因此,在电路设计时,应保证系统上电复位时不占用总线。图2电路的接法可以有效地解决复位期间分机“拉死”总线的问题。
另外,当某个分机出现异常情况(如死机)时,若此时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 通讯协议制定
由于485总线是半双工异步通信总线,在某一个时刻,总线只可能呈现一种状态,所以,这种方式一般适用于主机对分机的查询方式通信,总线上必然有一台始终处于主机地位的设备在巡检其它的分机,所以需要制定一套合理的通信协议来协调总线的分时共用。这里采用的是数据包通信方式。为保证数据传输质量,对每个字节进行校验的同时,应尽量减少特征字和校验字。惯用的数据包括格式由引导码、长度码、地址码、命令码、数据、校验码、尾码组成,每个数据包长度达20~30字节。在RS-485系统中这样的协议不太简练,笔者采用了如下协议:上位机数据包格式由地址码、长度码、命令(或数据)码、CRC校验码组成;下位机应答帧由长度码、状态码、数据码和CRC校验码组成。实际使用效果良好。
4 结束语
经过上述的软硬件共同处理,485总线在售饭系统应用中的可靠性大大提高,在食堂比较恶劣的环境条件下,系统的通信始终处于正常状态,整机性能满足了现场工程的需要。
由于485总线是一种半双工通讯总线,往往用于主从式通讯系统。在这样的系统中,通常只有一台主机,一旦主机出现故障,或者通讯电缆损坏,会使整个系统的通信陷于瘫痪,因此,还应考虑分机能实现脱机(离线)工作。
尽管485总线存在一些缺陷,但由于它的线路设计简单、价格低廉、控制方便,只要合理地使用,仍然能发挥良好的作用。
相关资讯
- 4种现在常用的证件卡制卡技术
- 智能卡与安防行业息息相关应用
- IC卡和ID有哪些区别?
- IC卡考勤、食堂售饭、门禁控制系统方案
关键词:RS-485总线,售饭系统,串行异步通信
1 问题的提出
在分布系统的设计中,RS-485半双工异步通信总线是被各个厂家广泛采用的数据通信总线。在售饭管理系统的设计中也不例外,它往往应用在主控机房与各个食堂的分机之间。系统拓扑结构如图1所示。
由于实际工程中,分机数量较多,分布较远,所处的环境较恶劣,现场的各种干扰也较大,所以,往往通信的可靠性及质量不高,再加上软硬件设计得不完善,使得实际工程应用中485总线的通信质量总是不尽人意。
在使用RS-485总线时,如果简单地按常规方式设计电路,在实际应用中可能会出现以下两个问题:一是数据传输的可靠性问题;二是在多机通信方式下,一个节点发生故障往往会导致整个系统的通信陷入瘫痪,而且故障点的定位也非常不容易,给系统维护带来困难。
针对上述问题,我们对485总线的软件和硬件分别采取了一些必要的改进措施。
2 硬件电路的设计
现以8031单片机、单片机监控芯片MAX691A,外接485总线通讯芯片MAX1487为例。电路原理图如图2所示。在电路设计中注意了上述两个问题。
2.1 MAX1487 485芯片DE控制端的设计
由于在售饭系统中,主控机房与各个食堂相隔较远,而分机系统上电复位又常常不是在同一个时刻完成。8031在复位期间,I/O口输出高电平,此时该分机的MAX1487的DE端电位为“1”,那么它将会处于发送状态,也就是占用了通信总线,这样,就影响其它分机与主机进行通信。因此,在电路设计时,应保证系统上电复位时不占用总线。图2电路的接法可以有效地解决复位期间分机“拉死”总线的问题。
另外,当某个分机出现异常情况(如死机)时,若此时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 通讯协议制定
由于485总线是半双工异步通信总线,在某一个时刻,总线只可能呈现一种状态,所以,这种方式一般适用于主机对分机的查询方式通信,总线上必然有一台始终处于主机地位的设备在巡检其它的分机,所以需要制定一套合理的通信协议来协调总线的分时共用。这里采用的是数据包通信方式。为保证数据传输质量,对每个字节进行校验的同时,应尽量减少特征字和校验字。惯用的数据包括格式由引导码、长度码、地址码、命令码、数据、校验码、尾码组成,每个数据包长度达20~30字节。在RS-485系统中这样的协议不太简练,笔者采用了如下协议:上位机数据包格式由地址码、长度码、命令(或数据)码、CRC校验码组成;下位机应答帧由长度码、状态码、数据码和CRC校验码组成。实际使用效果良好。
4 结束语
经过上述的软硬件共同处理,485总线在售饭系统应用中的可靠性大大提高,在食堂比较恶劣的环境条件下,系统的通信始终处于正常状态,整机性能满足了现场工程的需要。
由于485总线是一种半双工通讯总线,往往用于主从式通讯系统。在这样的系统中,通常只有一台主机,一旦主机出现故障,或者通讯电缆损坏,会使整个系统的通信陷于瘫痪,因此,还应考虑分机能实现脱机(离线)工作。
尽管485总线存在一些缺陷,但由于它的线路设计简单、价格低廉、控制方便,只要合理地使用,仍然能发挥良好的作用。
相关资讯
- 4种现在常用的证件卡制卡技术
- 智能卡与安防行业息息相关应用
- IC卡和ID有哪些区别?
- IC卡考勤、食堂售饭、门禁控制系统方案