欢迎来到天天文库
浏览记录
ID:51781976
大小:26.00 KB
页数:6页
时间:2020-03-15
《RS-485总线的死锁检测与解除.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、此文档收集于网络,如有侵权,请联系网站删除RS-485总线的死锁检测与解除作者:(广州)增城市电力局 黄沛芳来源:《单片机与嵌入式系统应用》 摘要:针对RS-485接口收发电路的特点,讨论RS-485总线在Polling和CSMA/CD通信方式中死锁检测和解除死锁的方法。该方法同样适用于RS-422接口。 关键词:RS-485接口 死锁检测死锁解除 RS-485总线传送距离远、速度快、抗干扰能力强,是工业现场广泛应用的数字通信标准。RS-485总线是一种半双工通信标准,支持总线方式多点互连,使其成为集散控制系统和现场总线控制系统中采用最多的通
2、信和组网方法。采用RS-485总线连接的多个站点,任一时刻只能有一个站点在“说”,其它站点只能处于“听”状态。如果有多个1个的站点在“说”,数据将在通信总线上碰撞,结果是处于接收状态的站点不能收到正确的数据。在RS-485总线通信网中,必须控制好每个站点的“听、说”状态,即收发状态,以保证能及时、正确地传输数据。 图1是最常见的RS-485接口。在RS-485总线通信系统中,挂在总线上的收发电路一般大于2个。使用图1所示接收电路,如果系统中的某一个站点死机或出了问题,可能使单片机的P1.0口恒为“1”。其发送器将长期占用通信总线,产生称为RS-485总线“死锁”的状态,其它
3、所有站点的均无法使用通信总线进行通信,这将导致整个通信系统崩溃。为了说明方便,把RS-485总线A线对地电压为称为VA,B线对地电压为称为VB;VA>VB时的死锁称为“1”死锁,VA4、系统均需面对的普遍问题。在工业测控系统中,可靠、稳定地工作是第一位的。若同时赋予主站RS-485总线死锁检测与解除的软/硬件和在所有的子站中配置相关硬件,将可以有效解决由于子站程序跑飞而引发的RS-485总线死锁问题。 此文档仅供学习与交流此文档收集于网络,如有侵权,请联系网站删除 一、RS-485总线死锁检测 1.查询方式的RS-485总线死锁检测 RS-485总线在发送数据时,允许同时接收刚发送的数据。RS-485总线通信系统如果工作于查询方式,主站将不断地每隔一定时间轮询各个子部。只要轮询时间不太长,如轮询时间间隔<1min,则只须软件开锁就可以满足RS-45、85总线死锁检测要求。主站在轮询过程中,若检测到以下两种情况,就可以初步判为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.2V6、-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-7、485总线的状态。 检测到INT1或RXD低电平后,通过软件用以下两个软件之一来判断RS-485总线“1”死锁或“0”死锁(假定启动发送数据后,两字节间的空隙时间小于发送1字节时间): (1)INT1低电平持续时间>正常发送2字节时间,判为RS-485总线“1”死锁。 (2)RXD低电平持续时间>正常发送2字节时间,判为RS-485总线“0”死锁。 二、RS-485总线死锁解除 此文档仅供学习与交流此文档收集于网络,如有侵权,请联系网站删除 RS-48
4、系统均需面对的普遍问题。在工业测控系统中,可靠、稳定地工作是第一位的。若同时赋予主站RS-485总线死锁检测与解除的软/硬件和在所有的子站中配置相关硬件,将可以有效解决由于子站程序跑飞而引发的RS-485总线死锁问题。 此文档仅供学习与交流此文档收集于网络,如有侵权,请联系网站删除 一、RS-485总线死锁检测 1.查询方式的RS-485总线死锁检测 RS-485总线在发送数据时,允许同时接收刚发送的数据。RS-485总线通信系统如果工作于查询方式,主站将不断地每隔一定时间轮询各个子部。只要轮询时间不太长,如轮询时间间隔<1min,则只须软件开锁就可以满足RS-4
5、85总线死锁检测要求。主站在轮询过程中,若检测到以下两种情况,就可以初步判为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.2V6、-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-7、485总线的状态。 检测到INT1或RXD低电平后,通过软件用以下两个软件之一来判断RS-485总线“1”死锁或“0”死锁(假定启动发送数据后,两字节间的空隙时间小于发送1字节时间): (1)INT1低电平持续时间>正常发送2字节时间,判为RS-485总线“1”死锁。 (2)RXD低电平持续时间>正常发送2字节时间,判为RS-485总线“0”死锁。 二、RS-485总线死锁解除 此文档仅供学习与交流此文档收集于网络,如有侵权,请联系网站删除 RS-48
6、-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-
7、485总线的状态。 检测到INT1或RXD低电平后,通过软件用以下两个软件之一来判断RS-485总线“1”死锁或“0”死锁(假定启动发送数据后,两字节间的空隙时间小于发送1字节时间): (1)INT1低电平持续时间>正常发送2字节时间,判为RS-485总线“1”死锁。 (2)RXD低电平持续时间>正常发送2字节时间,判为RS-485总线“0”死锁。 二、RS-485总线死锁解除 此文档仅供学习与交流此文档收集于网络,如有侵权,请联系网站删除 RS-48
此文档下载收益归作者所有