韩 炬(煤科总院太原分院,山西太原 030006)
摘要:总线故障对CAN系统是一种极大的威胁,因此解决好这一问题十分重要。文章在简要介绍CAN的特点之后就总线故障对系统的影响进行了论述并提出了一种解决方法。
主题词:CAN总线;故障;防治;计算机
1 引言
FCS(现场总线控制系统)以总线为核心,集计算机技术、控制技术及通信技术为一体,有着传统DCS(分布式控制系统)无法比拟的优越性,因而得到了迅速地发展和广泛的应用,其中CAN(控制器局域网)以其优越的性能、简单的结构和良好的使用性而更加引人注目。但是,与一般工业现场的情况相比,煤矿井下尤其是工作面的恶劣环境给CAN的使用造成了一些麻烦,其中,电缆因遭受拉、压、砸、挤等造成损坏的情况时有发生,这对于以总线为核心的CAN系统是一种极大的威胁。因此,解决好这一问题是CAN应用中的一个重要问题。
2 CAN的特点
CAN是一种现场总线,是全分散、智能化、多点互联的双向串行数字通信网。CAN系统的基本结构为线型(总线式),也可通过转储———重发形成分支。主要特点:
(1)广播方式,接受“过滤” 每个节点都可以发送报文,每个发送到总线上的报文都供所有节点同时接收。但是,接收并不意味着接受,每个节点是否接受一个报文取决于该报文是否与己相关,相关则接受,无关就不用。判断相关与否的过程就是接受“过滤”。
(2)报文传递 与其它网络不同,CAN的通信本身不使用节点数或节点地址等有关系统构成方面的信息,因此,各节点对系统的构成情况不敏感,它们之间的联系不是依靠相互之间的寻址而是通过报文传递来实现的,即通过接受“过滤”,在发送节点与接受节点之间建立起联系。这种联系是很灵活的,可以使发送节点与接受节点间形成一(发送)对一(接受)的联系,也可以形成一对多或者多种一对多的联系。此外,每个节点都可以接受不同节点发送的报文,甚至有些节点可以接受所有报文。这一特征为系统的构成、修改或提高带来了很大的方便,一般情况下,新节点的加入或原有节点的摘除都不会对系统运行产生很大影响。
(3)多主工作 在总线空闲时,任何节点都可以主动向总线发送报文。
(4)总线竞争协议 CAN采用总线竞争协议,如果发生总线冲突则使用一种非破坏性的总线仲裁技术进行处理,使高优先级报文顺利通过,而低优先级报文只能等到下一次总线空闲时重发。CAN的报文优先级分2032种。
(5)短报文 数据帧可包含0~8个数据字节。
(6)远地帧 请求远地节点发送相关的数据帧。
(7)错误及故障处理(自动关闭故障节点)。
(8)速度(传输距离) 1Mbps(40m)、125kbps(500m)、50kbps(1km)、5kbps(10km)。
(9)通信介质为双绞线或同轴电缆等,无特殊要求。
(10)用户接口简单,编程方便,CPU与CAN总线控制器集成为一体,如51系列的8XC592等。
3 总线故障
电缆的损坏造成总线故障会影响到整个系统的运行,但故障不同其影响程度也不同。如上所述,各节点对系统的构成情况不敏感,一般也没有一一对应的呼应确认关系,并且系统运行中不使用有关系统构成方面的信息,也不需要对节点进行登记或建立逻辑链等等,因此,即使系统总线发生断路故障,系统或节点也有可能发现不到或者不会及时发现到,这时的系统仍可以不间断地持续运行下去(带故障运行)。不过,因为断路使原来的系统一分为二,因而其运行区域发生了变化,节点可以在各自的小区域内运行,但无法跨越故障断点。在某些情况下,这种故障还是可以暂时容忍的,但是,总线的短路故障却是灾难性的,一旦发生短路,通信功能全部丧失,各节点之间的联系全部被切断,系统将完全处于瘫痪状态。
4 解决方法
由于井下工作面的电缆故障发生率远远高于节点的故障发生率,因此,解决总线故障可以采用“部分冗余”法,这种方法使用两条总线电缆,每个节点内部使用两个总线驱动器,但只有一个总线控制器(在8XC592内部),此外,在总线控制器与两个总线驱动器之间设置一判断电路,如图1所示。
图1
部分冗余方法当节点发送时,总线控制器通过两个总线驱动器同时向两条总线发送相同的报文(不管其中一条总线是否发生故障)。在接收过程中,判断电路自动选择两个总线中的一个并将其中的报文送入总线控制器。由于两个总线在传输延时上不会严格一致,两个报文的到达时间有先有后,因此,判断电路以时间优先为选择原则,即抢先到达者被选中,其报文送入总线控制器。正常情况下,两个总线上传送的报文是相同的,因此,无论选择哪一个,这一报文都能被送到总线控制器去。如果一个总线发生故障,则关闭它与总线控制器之间的信号通道,而正常总线上的报文仍能顺利送往总线控制器。此外,当发生总线故障时,将自动向CPU发出总线故障中断,这时,CPU发送一个总线故障报警信号,通过非故障总线通知整个系统。
判断电路中含有两个分别与各自总线对应的可重复触发的单稳态电路(74LS123)和由两个与非门构成的RS触发器。它们负责完成两个报文的抢先———滞后的比较及选择。当总线空闲时,单稳态的输出为低电平,一旦出现报文,帧起始位将会在单稳态的输入端产生一个触发下降沿,随即单稳态将产生一个高电平脉冲输出,这个脉冲在单次触发下的输出宽度不小于报文中连续12位的持续时间(主动错误标志的最大可能时间)。由于正常情况下报文中连续出现相同逻辑位的位数不超过5位,所以,经报文中对应下降沿的不断触发,这个高电平脉冲从报文帧起始位下降沿开始一直持续到报文结束。这两个单稳态的输出脉冲的上升沿表示出了两个报文到达的先后关系,抢先到达者被RS触发器选中而滞后者被拒绝。如果其中一个总线因发生故障而无报文时,对应的单稳态就不会被触发,自然也不会输出脉冲,因此被作为滞后者处理。所以对应的信号通道始终被RS触发器封锁。此外,当发生总线故障时,两个单稳态中只有一个产生脉冲输出,因而,异或门将会产生总线故障中断信号。当CPU收到中断后,通过I/O口分别查询两个单稳态的输出即可对故障定位。
部分冗余法尽管同时使用两条总线,但只有一个总线控制器,因此,在正常运行状态下即使发生总线冲突也不会造成两个总线的混乱,所以,完全能够满足CAN协议的要求。
5 结语
综上所述,部分冗余法是解决总线故障的一种行之有效的方法,而且具有发现故障的能力强、及时性好等优点。此外,在操作方面,选择总线的任务由判断电路自动完成而不需要CPU过多干预。当然,部分冗余使功耗增加了,这是为了解决总线故障问题不得不付出的代价。此外,由于增加了判断电路等环节,实际通信速度低于原指标的规定值,不过,仍可满足井下尤其是工作面的应用需求。
作者简介:韩 炬(1958-),男,高级工程师,毕业于中国矿业大学自动化专业。现在煤科总院太原分院从事煤矿电气控制等方面的研制工作,发表过多篇论文。