采用复杂可编程逻辑器件实现双模冗余切换管理模块的设计

可编程逻辑

1339人已加入

描述

1 引 言

在工业自动化领域中,大型化工、石化、冶金、电力等企业,对控制系统长期有效、可靠运行有着特殊的要求。冗余是重要的容错技术之一,是提高整机及系统可靠性的一种重要设计技术,特别是对于复杂的、有高可靠性和长寿命要求的大、中型设备和无法维修或要求不停机维修的控制系统或设备。由于控制器是控制系统的核心,因此控制器实现冗余对于控制系统的高可靠性有着重要作用。

针对有中心裁决器双模冗余控制器一旦裁决电路出现故障,仍然会造成控制系统停机的问题,本文对双模板热备份技术(双模冗余技术)的实现方法进行新的尝试,即在控制器上与背板接口处,使用CPLD(Complex Programmable Logic Dvice,复杂可编程逻辑器件)芯片设计冗余切换管理模块,实现对严重故障出现后冗余切换信息的管理。文中给出了一种能实现冗余功能的基于ARM的嵌入式控制器结构,以及冗余切换管理模块的设计和仿真验证。

2 双模冗余控制器与单个控制器可靠性比较

双模冗余控制器是在控制系统中增加一个控制器作为备份,两个控制器同时插在背板上,通过背板总线进行相互间以及与其它I/O模块的通信。

可修产品可靠性的主要指标有可靠度函数R(t)和平均故障间隔时间MTBF(Mean Time Between Failure) = 控制器冗余控制器的总可靠度函数是Rn(t)=1-(1- R1(t))n,其中:n=冗余度+1,R1(t)为单个控制器的可靠度函数。冗余度是指冗余部件所用的硬件数与工作部件的硬件数的比值。

设单个控制器寿命服从参数为λ的指数分布,即R1(t)=e-λt,其中0《λ《1,则由以上公式计算可得:MTBF1=1/λ,R2(t)=2e-λt- e-2λt≈e-λt(1+λ)》 e-λt=R1(t),MTBF2=3/(2λ)。由此得出结论:第一,双模冗余控制器总可靠度比单个控制器可靠度高;第二,双模冗余控制器总平均故障间隔时间是单控制器时的1.5倍,相当于使用寿命增至单个控制器的1.5倍;第三,双模冗余控制器满足控制系统对单控制器故障不停机维修的要求。

3 无中心裁决器控制器系统结构

双模冗余控制器在具体实现上分有中心裁决器和无中心裁决器两种。有中心裁决器双模冗余是在两个控制器之外加入裁决电路,将两个控制器的输出先进行比较,结果相同才输出到背板总线上,裁决电路作为两个控制器的公用电路,一旦出现故障,则整个控制系统将无法继续工作。无中心裁决器双模冗余没有裁决电路,是在每个控制器上增加冗余切换管理逻辑,使得两个控制器在物理层面完全相互独立,任何一个控制器出现故障都不会影响到整个控制系统的正常运行。

本文采用复杂可编程逻辑器件(CPLD)设计冗余切换管理模块,实现了一种无中心裁决器双模冗余控制器。在控制系统中,冗余的两个相同控制器同时工作,在任一时刻只有一个控制器(主控制器)的输出有效。控制器结构如图1,信号说明如下:

(1)冗余的两个控制器之间的互联通道有AT91M40800的串口USART0和一组冗余切换信息,这组冗余切换信息分别包括两个控制器的主用、切换和备份信息: master_I、switch_I 和backup_I接收来自另一个控制器的冗余信息,而master_O、switch_O和backup_O则送出本控制器的冗余信息。

控制器

(2) CPU送给CPLD的信号线,时钟clk、复位reset、片选cs、读read、系统检测信号test、和看门狗溢出信号nwdovf;

(3)CPLD送给CPU的信号,冗余信息向量表(data)、自检请求信号selftest_req、控制器输出控制信号output_con。

(4)其余信号,背板电路提供的槽号信号bank(低电平为‘0’号控制器,高电平为’1’号控制器)、人为复位信号reset_man、人为切换信号switch_man、3.3V和5.0V电压监控power33和power5。

4 冗余切换管理模块设计与仿真

4.1 冗余切换管理模块设计

冗余切换管理模块用来实现接收严重故障信号以及对冗余信息检测和切换管理,即当主控制器检测出故障时,冗余切换管理模块给出切换信号,备控制器的冗余切换管理模块接收到该信号后,通过output_con送给CPU进行中断处理,将当前备控制器转成为主控制器。

冗余切换管理模块如图2,其各模块功能如下:

(1)延时和切换故障向量管理模块

冗余的两个控制器在启动时为了避免相互竞争产生的不确定性,对‘1’号控制器(bank=’1’)上CPU送来的检测结果信号test进行延时处理,而将‘0’号控制器(bank=’0’)设为默认的主控制器。’1’号控制器在启动正常工作后,立刻屏蔽掉延迟电路。

控制器上可能出现的每一种需要切换的严重故障,将其监测信号线连接到CPLD上,每根信号线的状态称为一个切换故障向量,所有向量的集合称为切换故障向量表。实验系统定义的切换故障向量包括:

①CPU可控故障,指主、备控制器之间能够正常通信,主控制器在运行过程中当检测出严重故障时,能够主动正常给出切换故障信息test,送给CPLD。

②电源故障,控制器中电源管理模块对每种电源的电压进行监控和管理,power33和power5分别监控3.3V和5.0V电压。

控制器

③CPU故障,对如程序跑飞等软件因素造成的CPU故障,由看门狗通过nwdovf送来低电平脉冲。

④人为设置故障,包括人为的复位(reset_man)和切换(switch_man)。

控制器在运行期间,延时和切换故障向量管理模块根据切换故障向量表的内容,向下一级模块送出系统是否正常工作的信号sgood。

(2)切换信号产生模块

如果控制器出现故障,需要切换,此时根据备控制器是否可用(backupb)决定是否产生切换信号送给备控制器。

(3) 切换信号接收模块

当前控制器如果是备控制器,该模块时刻监控来自主控制器送过来的切换信息(switchb)是否有效,如果有效,则送给CPU一个控制器输出控制中断。

(4) 接口管理模块

存放控制器的冗余向量表,包括本控制器产生的冗余向量——MASTER_CUR、SWITCH_CUR、BACKUP_CUR和来自冗余的控制器的冗余向量——MASTER_R、SWITCH_R和BACKUP_R。CPU可以读取冗余向量表的内容。

4.2控制器的冗余切换管理模块仿真验证

CPLD编程是在Active HDL 6.1环境下,选用器件95108-7,使用VHDL语言[3]编写完成。冗余的两个控制器的切换管理模块仿真验证结果如图2,其中信号*0是‘0’号控制器的信号;信号*1是‘1’号控制器的信号。在整个仿真过程中,两个控制器各自的时钟不同步,但频率相同为16MHz。工作过程如下:

(1)双控制器同时上电启动:‘0’号控制器为默认的主控制器(master0=‘1’,backup0=‘0’), ‘1’号控制器为备用控制器(master1=‘0’,backup1=‘1’)。

(2)工作过程中,假设‘0’号控制器CPU检测到故障发生 (test_0由‘1’变成‘0’),立刻给出低电平切换脉冲(switch0= ‘0’),同时给本控制器CPU发自检请求(selftest_req=‘1’)并修改输出控制信号(output_con=‘0’),使当前‘0’号控制器不再是主控制器(master0=‘0’);而‘1’号控制器检测到低电平的switch0后成为主控制器(master1=‘1’, backup1=‘0’),同时向CPU发出输出控制中断申请(output_con=’1’)。

控制器

5 结束语

本文给出了一种基于CPLD的控制器冗余的实现方法,尝试在嵌入式控制器中加入冗余切换管理模块,对控制器上可能出现的严重故障进行监控并对冗余切换信息进行管理。

实验系统控制器CPU采用AT91M40800-33AI[4],系统时钟16MHz,CPLD芯片采用XC95108PQ100-7。在实验中,分别针对CPU能否正确给出切换故障信息的受控和非受控故障情况,设计了软件处理数据中断故障、以太网切断线路故障、看门狗溢出故障、屏蔽供电的电源掉电故障、人为切换故障、硬件人为复位和拔除主控制器故障,控制器冗余的控制系统仍然能够正常运行。

通过在实验系统中的使用表明,冗余切换管理模块的加入,首先,使得两个控制器在物理层面上完全相互独立,任何一个控制器故障都不会影响控制系统的正常运行。解决了有中心裁决器的冗余实现方法中,一旦裁决器出现故障,仍然会引起控制系统停机的问题。其次,将原先由软件探测来完成的对冗余切换信息进行管理的功能下放到硬件电路,由CPLD来完成,加快了对严重故障的检测和反应速度,缩短了冗余控制器的切换时间。第三,实现了对由于CPU故障而不能正确给出故障信息的控制器非受控故障的管理,即设计时,将凡是能引起控制器切换的、软件无法处理的硬件故障的监控信号,都连接到CPLD上,这样即使CPU因为故障而不能正确给出故障信息,CPLD还可以及时的提供切换信息。

控制器冗余功能的实现,满足了控制系统对不停机维修的需要,延长了控制系统的故障间隔时间,使得控制系统的高可靠性及长寿命得以实现。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分