485总线死锁与复位

摘要:针对RS-485接口收发电路的特点,讨论RS-485总线在Polling和CSMA/CD通信方式中死锁检测和解除死锁的方法。该方法同样适用于RS-422接口。

    关键词:RS-485接口 死锁检测 死锁解除

RS-485总线传送距离远、速度快、抗干扰能力强,是工业现场广泛应用的数字通信标准。RS-485总线是一种半双工通信标准,支持总线方式多点互连,使其成为集散控制系统和现场总线控制系统中采用最多的通信和组网方法。采用RS-485总线连接的多个站点,任一时刻只能有一个站点在“说”,其它站点只能处于“听”状态。如果有多个1个的站点在“说”,数据将在通信总线上碰撞,结果是处于接收状态的站点不能收到正确的数据。在RS-485总线通信网中,必须控制好每个站点的“听、说”状态,即收发状态,以保证能及时、正确地传输数据。

图1是最常见的RS-485接口。在RS-485总线通信系统中,挂在总线上的收发电路一般大于2个。使用图1所示接收电路,如果系统中的某一个站点死机或出了问题,可能使单片机的P1.0口恒为“1”。其发送器将长期占用通信总线,产生称为RS-485总线“死锁”的状态,其它所有站点的均无法使用通信总线进行通信,这将导致整个通信系统崩溃。为了说明方便,把RS-485总线A线对地电压为称为VA,B线对地电压为称为VB;VA>VB时的死锁称为“1”死锁,VA<VB时的死锁称为“0”死锁。如果2个站点失控,其中一个是“1”死锁,另一个是“0”死锁,而系统无法及时解除该死锁状态,不但各站点间无法正常通信而且会烧坏锁站点的RS-485接口芯片,引发更大的故障。

在RS-485总线通信系统中,通常设有个功能强、工作可靠的站点作为主站,其它的作为子站。主站除了完成它的相关工作任务外,通常它还负责管理挂在RS-485总线上的其它子站。程序跑飞是所有基于微处理器系统均需面对的普遍问题。在工业测控系统中,可靠、稳定地工作是第一位的。若同时赋予主站RS-485总线死锁检测与解除的软/硬件和在所有的子站中配置相关硬件,将可以有效解决由于子站程序跑飞而引发的RS-485总线死锁问题。

一、RS-485总线死锁检测

1.查询方式的RS-485总线死锁检测

RS-485总线在发送数据时,允许同时接收刚发送的数据。RS-485总线通信系统如果工作于查询方式,主站将不断地每隔一定时间轮询各个子部。只要轮询时间不太长,如轮询时间间隔<1min,则只须软件开锁就可以满足RS-485总线死锁检测要求。主站在轮询过程中,若检测到以下两种情况,就可以初步判为RS-485死锁:

(1)主站发送的数据与接收到的不相同;

(2)在轮询某个子站时,无响应或响应的数据不正确(可能是RS-485总线死锁或子站死机,也有可能孩子站已退出运行)。

2.工作于CSMA/CD方式的RS-485总线死锁检测

采用CSMA/CD通信方式的RS-485总线,主站一般不主动轮询每个子站。此方式下,主站可以采用图2所示硬件来检测RS-485总线的死锁状态。在RS-485总线空闲时,要求信号线A至少比信号线B高0.2V以上。只要使RS-485总线空闲时0.2V<VA-VB<3V,图2所示电路就可以正常检测RS-485总线死锁。当RS-485总线发生“1”死锁时,VA-VB约等于5V,光耦输出低电平拉低主站的INT1引脚。对于“0”死锁检测,只需依靠主站的RS-485接口电路就可实现。在“0”死锁时,RS-485接口电路输出低电平拉低主站的RXD引脚。RS-485总线空闲时,INT1及RXD引脚为稳定的高电平状态。正常收发数据地,INT1及RXD引脚在一个字节内至少出现一次高低电平交替交化;“1”死锁时,INT1长期处于低电平状态,“0”死锁时,RXD长期处于低电平状态。根据以上特点只需用软件检测INT1和RXD的低电平持续时间就可判断RS-485总线的状态。

检测到INT1或RXD低电平后,通过软件用以下两个软件之一来判断RS-485总线“1”死锁或“0”死锁(假定启动发送数据后,两字节间的空隙时间小于发送1字节时间):

(1)INT1低电平持续时间>正常发送2字节时间,判为RS-485总线“1”死锁。

(2)RXD低电平持续时间>正常发送2字节时间,判为RS-485总线“0”死锁。

二、RS-485总线死锁解除

RS-485总线死锁往往是由于子站的微控制器程序跑飞,使得RS-485发送器的发送使能DE恒为高电平引起的。出现这种情况只需给相应的子站复位一下,让它重新执行初始化程序始可解决。在检测到RS-485总线死锁后,如果各子站的软/硬件无问题,可以采用复位程序跑飞的子站来解除死锁。以下介绍两类可以由主站自动复位子站的硬件电路。该电路适用于RST引脚高电平有效时复位的单片机,如国内广泛应用的51系列单片机。对于RST引脚低电平有效时复位的单片机则须将电路的逻辑取反。

1.有选择性地复位死锁子站电路

图3是具有选择性的复位死锁子站电路,是一种巧妙的解除通信总线死锁状态设计。它利用了RS-485总线死锁,则对应死锁子站的发送使能DE为“1”的特点,在子站中只用了少量的硬件开销(1个与非门、1个电阻和1只三极管),即实现了有选择性的复位死锁子站的电路。在正常工作时,主站的P1.1置为“0”,此时不管各个子站的DE为何状态,它们的与非门输出均为高电平,三极管T1截止,RST为低电平,不会复位任何子站。当检测到RS-485总线死锁时,主站只需将P1.1置为“1”,只有DE为“1”子站的与非门输出低电平,三极管T1导通,RST为高电平,相应的子站被复位。其它子站的与非门输出高电平,不会被错误地复位。

2.无选择性地复位所有子站电路

图4是一个无选择性复位子站的电路。它由主站的P1.1驱动,通过屏蔽电缆引到各子站的外复位电路T1的基极。正常运行时,主站置P1.1为“1”,此时它不影响各子站原有的复位功能。当主站检测到RS-485总线死锁或复位各子站时,只须将P1.1置为“0”,所有挂在复位总线上的T1均导通,RST输出高电平,各子站均被无条件复位。

结束语

单片机的复位电路是对干扰较为敏感的电路。施加在单片机的复位电路上一个ms级的微小毛刺干扰,就会对单片机造成极为严重的影响。若毛刺干扰持续时间大于单片机要求最小的可靠复位时间,单片机被复位;否则单片机还末完成复位过程,复位信号就被撤消,其内部寄存器将处于不确定状态,令单片机的应用中,为了可靠起见,一般不外引复位电路。在要文的应用中,需将复位电路外引,复位总线采用屏蔽线以提高抗干扰能力。

本文介绍的2种远方复位电路,各有优缺点。具有选择性的复位电路优点是:有选择性地复位锁RS-485总线的子站,而不影响其它正常的子站,满足解除RS-485总线死锁的要求。缺点是:当子站程序跑飞但并没有使得DE恒为高电平时,RS-485总线处于正常状态,主站可以和所有正常的子站通信,但主站对这个异常的子站无能为力。无选择性的复位电路优点是:主站可以复位任何类型的由于程序跑飞引起异常的子站,此外,在电路的实现上较有选择性的复位电路简单。缺点是:它的动作是无选择性的,不管子站是否异常,挂在复位总线上的所有子站均被无条件复位。

RS-422接口的电气参数要求与RS-485接口相同,主要差别在于RS-422是全双工接口,而RS-485是双工接口。本文介绍RS-485总线死锁检测方法,只需稍加修改,同样适用于RS-422总线系统,而解除死锁的方法无需任何修改即可直接应用于RS-422总线系统。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计思路: 1、系统用到AD、UART、PWM、SPI,考虑成品的体积,采用arduino nano 2、语音采样使用驻极体麦克风,经200倍前置放大,再进行8位AD采样,采样率8kHz,可达到电话音质,满足需求 3、门禁系统通信的特点是多对一,距离10~100m,通信速率要满足语音通信、控制信号传输,因此采用485通信,通信速率512Kbps 4、语音播放使用8位PWM,功放芯片采用常见的LM386(LM386数据手册) 5、显示屏采用Nokia5110,SPI通信 6、键盘采用10位ADC键盘,16个按键 7、开电路使用继电器实现 硬件设计组成: 1.Arduino Nano,主控直接采用arduino nano,ATmega328(ATmega328数据手册)由于485通信和下载程序共用0、1脚,因此要通过拨码开关切换0、1脚功能 2、电源电路,整个系统使用外部12v电源供电,用于驱动继电器和LM386,12v电源通过LM2940(LM2940数据手册)得到5v电源,Nokia5110显示屏需要3.3v供电,直接采用nano上的3.3v电源 3、ADC键盘电路,由于arduino接口较少,直接采用ADC键盘,一次挂载20个按键没有问题,每个分压电阻使用1kΩ,线性度非常不错。 4、485通信电路,使用了两片MAX485(MAX485数据手册)组成了全双工通信,实际测试,10m网线,2Mbps,完全不丢包,另外测试过2m,2Mbps的串口通信,也是完全不丢包 5、麦克风采样电路,语音采样,使用普通驻极体麦克风,经过LM358(LM358数据手册)的200倍放大后,送入ADC 6、功放电路,功放直接采用常见的LM386典型电路,PWM信号经过积分电路,再送入LM386,为了提高音量,使用12v供电,实测效果不错,5v供电时,噪音非常大,稍微一大声就失真 7、开电路,开功能可以通过电磁实现,这里只用了继电器并留出了接线口,继电器电流也不小,保险起见使用了一个9014扩流,并反向并联一个二极管吸收反向电流 附件内容包括: 门禁系统硬件电路设计原理图和PCB,用AD软件打开; 源代码; 相关电路设计说明; 相关参考设计资料;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值