引言
近年来,微小型化的单片机技术发展日新月异,广泛应用于很多领域。在铁路行业,结合单片机技术的高可靠性系统得到了越来越多的应用和重视。安全型继电器是铁路信号设备中的重要器件之一,其可靠性和安全性是铁路运输自动控制、远程控制信号设备正常使用的必要条件[1]。因此,对于在铁路等重要场合使用的安全型继电器,需要采用高可靠性的驱动电路系统。本文利用AVR单片机设计出一种具有高可靠性的继电器驱动系统,具有实时性强、结构简洁、成本低等特点。
1 冗余结构
1.1 结构介绍
本系统需要采用一定的冗余技术来保证系统的高可靠性和高安全性。目前发展较为成熟的冗余技术主要有双机热备结构和二乘二取二冗余结构。这两种结构在可靠性、可用性、安全性等方面相比单机系统有着各自的特点和优越性[27],在铁路[59]、工业[1011]等领域有着广泛的应用。
双机热备系统一般由两个具有相同功能的子系统构成,接有可选的比较器和主备切换器,并能进行故障检测。二乘二取二冗余结构由4个子系统组成,同样有比较器和主备切换器,两两比较输出后再次比较输出,其可靠性更高;但是对于小型系统,与双机热备系统相比要耗费更多的资源,成本加倍。因此,本系统采用双机热备系统。
双机热备系统结构示意图如图1所示。它的工作方式一般有3种:主备机模式、互备模式和双机双工模式(即双机冗余模式)[3]。3种模式下的两个子系统均加电工作,每个子系统都具有故障检测和诊断功能,而且3种结构均具有主备切换功能。但主备机模式下只有一个子系统能够控制被控对象,另一个子系统处于待命状态;互备模式为两子系统之间互相备份数据,但执行的是不同的任务,在一台故障时,另一台接收故障机的任务并继续执行;双机双工模式的两个子系统均处于活动状态,均能控制被控对象,同时进行工作并完成同样的功能,在输出前进行比较,结果一致则输出,不一致则报错,而主备机模式和互备模式时,系统在运行过程中两个单元的运行结果不进行比较。
图1 双机热备系统示意图
1.2 结构选择
本系统的主要功能为利用单片机系统驱动某型号安全型继电器,可以考虑的热备工作模式为主备机模式或双机双工模式,因而需比较两种模式的可靠性。
系统的可靠性R(t)为时间和失效率的函数,指产品在规定时间内和规定条件下,完成规定功能的概率。失效率指的是在规定时间内和规定条件下的产品失效的概率,一般用λ表示。系统的可靠性常随时间的增加而减少,一般用平均无故障工作时间(MTBF)来衡量。MTBF指系统相邻两次故障间的平均工作时间,它的值为系统的可靠性R(t)的期望[1112]。
在此,假设单机系统寿命服从指数分布,则第i个子系统的寿命即可靠度函数为Ri(t)=e-λt,则可知单机的平均无故障时间为
主备机模式下,一个子系统工作,另一个不工作,它的系统可靠度和平均无故障工作时间分别为:
双机双工模式可看作两个子系统的并联,则此模式下系统的可靠性取决于两个子系统中寿命较长者,其可靠度函数和平均无故障工作时间分别为:
可以看出,相比单机系统,两种模式下的双机热备系统的可靠性均有显著提高,其中主备机模式下提高了3倍,双机双工模式下提高了1.5倍。因此,从保证系统更高可靠性的角度来看,主备机模式具有一定优势,故本系统采用主备机模式。
2 系统概述
2.1 硬件结构
本系统选用Atmel公司的AT90CAN128单片机作为主控芯片,其内部已经集成了CAN控制器,因此无需使用CAN控制器SJA1000,只需选用TJA1050作为CAN 高速收发器,大大简化了电路。其系统结构如图2所示。
图2 系统硬件结构框图
本系统采用3片AT90CAN128单片机作为核心控制芯片,其中MCUA和MCUB构成双机热备系统,MCUC用于监测和状态显示。单片机MCUA和MCUB互为主备关系,需要接收并处理上位机发送进来的CAN通信信息,对信息进行比较同步处理,进而通过驱动电路驱动某安全型继电器。驱动电路可包含多组,每一组控制一个继电器,电路由主MCU控制。MCUA和MCUB把相关监测信息通过串口通信传送给MCUC,MCUC监测A和B是否工作正常,并将其工作状态通过LED显示灯进行状态显示。3个CPU相互之间由串口进行通信,并通过CAN总线与上位主机进行通信。这样,整个系统就形成两套MCU控制回路构成主备关系,一套控制回路进行监测的系统架构。
2.2 软件结构
程序采用C语言模块化设计,C语言作为一种结构式的高级语言,具有表达方式灵活、可移植性强、代码质量高等优点,模块化的设计也增强了程序的可读性。其主程序流程图如图3所示。
图3 主程序流程图
为了满足高可靠性、安全性的要求,程序中对MCU加入了CPU自检模块,因而3个CPU共同具有的模块包括设备初始化模块、通信处理模块和CPU自检模块,并通过自定义采集量完成延时去抖等。通过在主程序中设置Flag标志位来对各个模块进行调用。对于MCUA和MCUB,由于二者互为冗余,它们的软件设计结构基本一致,另外包含同步信息处理模块和驱动模块。负责监测的MCUC则包含信息存储模块、LED显示模块。
3 模块设计
(1) 设备初始化模块
该模块主要完成系统的准备工作、系统的上电自检和自检后的处理3步。其中,准备工作主要有上电延时(约0.5 s)、MCU引脚方向寄存器的设置、数据区初始化、A/D转换器参数设置、定时器参数设置、地址码读取。系统上电自检包括MCU自检、开中断、同步电路自检、地址码自检。自检结束后处理初始化与MCUC通信的参数设置、自检故障处理或初始化CAN总线。
(2) 自检和故障处理模块
该模块主要用于对整个系统的内部自检及故障后的处理,包括MCUA和MCUB之间的CAN总线通信自检、地址校核和各个CPU的自检,CPU的自检又包括CPU自身运算符的自检和数据区的自检,自检结果若出现错误,则置位相应错误标识。
(3) 通信处理模块
该模块用于处理上位机通过CAN总线下发的通信命令,包括命令的解析、命令帧命令的合法性检查、转换成有效的驱动命令3部分。定义通信协议每一帧包括10个字节,第1个字节为板地址号,第2个字节为功能码,第3个字节为通信序号,第4~8个字节为本帧要发送的主要数据信息,帧尾(最后两个字节)为CRC校验位。其中发送的主要数据信息包括继电器的动作信息、状态信息和MCU的状态信息等。
(4) 同步处理模块
该模块主要用于主机和备机间发送和接收同步命令帧以及向MCUC发送监测信息帧,发送方对需发送的数据打包发送,接收方对同步数据的接收解包,每30 s同步一次,通过MCU之间的串口通信进行,每一帧都要进行CRC校验。
(5) 驱动模块
安全型继电器是一种新型直流24 V继电器系列,因此驱动电路选用直流24 V电源。它是一种我国自行设计和制造的信号继电器,具有结构新颖、重量轻、体积小等特点。图4所示为继电器驱动模块结构示意图。对于本多组驱动热备系统,只需将多组此结构的电路分别连接至MCUA和MCUB即可,MCUA和MCUB的硬件结构完全相同。
图4 继电器驱动模块示意图
本驱动电路由CPU控制,通过JF和JZ连接某安全型继电器。电路中由两个光电隔离器件K1和K2串联,分别通过QD1和QD2两引脚接入MCU,由单片机软件控制光电隔离的导通,并由光电隔离的导通顺序决定电容C1和C2的先后充电放电,继而导通由JF和JZ连接的继电器。QD1和QD2的高低电平先后导通时序如图5所示。
继电器正常运作过程中,驱动模块需按图5所示的导通时序多个周期反复运行。驱动时主机和备机每5个周期同步一次,根据图3(a)的主程序流程图,驱动模块在主标志位置为QD_CHECK时开始动作。根据驱动电路导通时序分别将MCU上对应的驱动引脚置为高电平或低电平。据此编写程序,驱动模块单周期软件流程图如图6所示。由于需要在测试时多次试验找出继电器动作时最恰当的占空比,在此没有采用定时器,而是用计数的方式进行延时。其中,根据图5所示的导通时序,QD2的MAX值须为QD1的两倍。
图5 驱动电路导通时序
(6) LED显示模块
该模块用于对各种状态信息的显示,包括电源指示灯、故障指示灯、继电器吸起/落下指示灯。硬件电路采用共阳极LED显示电路,软件通过MCU将相应二极管阴极置为低电平实现对该LED的导通。受单片机引脚所限,MCUA和MCUB只有各自的电源和故障灯,其他功能指示灯连接至MCUC。
(7) MCUC的存储模块
该模块用于MCUC对接收到MCUA和MCUB的监测信息帧的处理,包括接收信息、处理信息。处理信息时,如果出现异常则会在系统自检时报错。
图6 驱动模块单周期软件流程图
结语
本设计采用Atmel公司的AVR单片机AT90CAN128作为核心控制器,经过分析运算,选取了可靠性较高的双机热备结构主备机模式作为系统工作模式,建立了一个第三方监测下的双机热备结构安全型继电器驱动系统。经测试证明,本系统具有较好的工作性能,可以满足可靠性要求。