摘 要: 本文探讨了用CPLD实现控制系统控制装置控制器的热备冗余切换和通信容错,并给出了具有冗余切换和通信容错功能的控制器结构以及冗余切换和通信容错模块的具体实现方法。
关键词: 冗余 容错 可靠性 CPLD 控制器
在工业自动化领域里的大型化工、石化、冶金、电力等企业,控制系统控制装置控制器的冗余和容错是控制系统高可靠性得以实现的保证。其中控制器要求具有完全在线冗余的功能,即系统在正常运行时,当前运行的主控制器如果出现故障可立即切换到备用控制器,然后从背板上取下故障控制器进行维修,系统在整个过程中的正常运行不受任何影响。要达到这样的要求,在二个控制器之间的快速切换是关键。
控制系统的控制器与I/O模块的通信容错是实现控制系统高可靠性的又一种重要方法。在控制器与I/O模块之间进行数据通信时,发送方对待发送的数据进行运算,获得冗余校验位;接收方则对接收到的数据和冗余校验位进行运算,并根据运算结果来判断接收到的数据的正确性,以便对错误的数据进行自动纠正。
本文对双机/双模板热备份技术(双模冗余技术)和控制器与I/O模块通信容错应用进行了新的探讨,在控制器与背板接口处通过使用复杂可编程逻辑器件(Complex Programmable Logic Dvice,CPLD)芯片增加了冗余切换模块和通信容错模块,设计实现了控制器的在线冗余和与I/O的数据通信容错。控制系统的冗余连接如图1所示。
1 无中心裁决器双模冗余容错控制器系统模型
1.1 无中心裁决器控制器双模冗余
冗余设计的思想是在系统或设备完成任务起关键作用的地方,增加一套以上功能完全相同的通道、单元或元件。当该部分出现故障时,使系统仍能正常工作[1]。以减少系统的故障率,实现系统的高可靠性。
控制器双模冗余是指控制系统中存在2个相同的控制器,它们同时工作,互为热备份,在任一时刻只有一个控制器(主控制器)在有效地输出[2]。
控制器双模冗余在具体实现上有中心裁决器双模冗余和无中心裁决器双模冗余。有中心裁决器双模冗余是在2个控制器之外加入比较电路,将2个控制器的输出进行比较,结果相同才输出到背板总线上。这样一旦比较电路出现故障,整个控制系统将无法继续工作,因此比较电路的加入限制了控制器的在线冗余能力。无中心裁决器双模冗余没有比较电路,是在每个控制器上增加冗余切换逻辑,一旦主控制器出现故障立刻切换到备用控制器,任何一个控制器出现故障都不会影响到整个控制系统的正常运行,充分体现了控制器的在线冗余能力。无中心裁决器双模冗余容错控制器的功能结构如图2所示。其模块功能说明如下。
(1)冗余切换模块:实现冗余监控和管理,即当主控制器检测出故障时,冗余切换模块给出切换信号,备用控制器的冗余切换模块接收到切换信号后,使备用控制器成为主用控制器。
(2)容错发送和接收模块:容错发送模块对控制器输出到背板总线上的数据加上冗余校验位,容错接收模块则对从背板总线上接收到的含有冗余校验位的数据进行检错和纠错。
(3)信号名称:①master_I、②switch_I、③backup_I、④master_O、⑤switch_O、⑥backup_O、⑦clk、⑧noe、⑨t_nr。
1.2 控制器与I/O模块通信容错
控制系统控制装置控制器经常工作在电磁干扰非常强的工业现场,控制器数据通过背板与其他模块进行通信时,外界的强干扰容易造成通信信息“0”和“1”的翻转,导致接收到的数据发生错误。但通过在控制器上与背板总线接口处增加错误检测与纠正(Error Detection And Correction,EDAC)模块,可以减少通信过程中因为外界电磁干扰而造成的“0”和“1”的翻转情况。
错误检测和纠错的基本原理是基于数据通信中的纠错编码。纠错编码的目的是降低误码率[3],即在控制器准备输出到背板总线上的信息码中增加一些冗余校验位,在接收端通过对接收到的信号(包括冗余位)进行运算以判断接收到的信息的正确性。如果发现数据出错,则立即纠正,再将正确的数据送给所控制的控制电路。
2 冗余切换模块
(1)冗余切换模块信号说明
clk:时钟;reset:系统复位信号(低电位复位);bank:槽号(bank=‘0’为0号控制器,否则为1号控制器);test:系统送来的模板自检信号(低电位模板无故障);sysgood:系统启动后由系统功能电路送过来系统完好情况信号(低电位表示系统完好);selftest_req:当控制器在工作过程中发生错误时,给出请求模板自检信号(此时为高电平);switch_man:人为切换信号(高电位有效)。reset_man:人为复位当前控制器(高电位复位);master_I:接收冗余控制器是否主用情况;switch_I:接收冗余控制器的切换信号;backup_I:接收冗余控制器的备用信息;master_O:当前控制器产生的主用情况;switch_O:当前控制器产生的切换信号;backup_O:当前控制器产生的的备用信息。
(2)控制器的冗余切换模块验证
2个相同控制器的切换逻辑模块验证电路图如图3所示。其中双向信号?鄢0:是0号控制器产生的输出信号,作为1号控制器的输入信号;双向信号?鄢1:是1号控制器产生的输出信号,作为0号控制器的输入信号。
仿真波形使用软件Active HDL 6.1,器件选择Xilinx公司的95108PQ100和95144PQ100,速度等级选择-7。
图3冗余切换模块的验证仿真波形如图4所示。工作过程说明如下。
①双控制器同时上电启动:0号控制器成为默认的主控制器(master0=‘1’,backup0=‘0’),1号控制器成为备用控制器(master1=‘0’,backup1=‘1’)。
②工作过程中0号控制器发生故障,切换到1号控制器。为了得到此种情况的仿真波形,这里假设:检测电路检测出故障(test_0=‘1’),0号控制器立刻给出切换脉冲(switch0=‘1’),要求自检(selftest_req=‘1’),同时当前0号控制器不再是主控制器(master0=‘0’);1号控制器接到切换信号后成为主控制器(master1=‘1’,backup1=‘0’)。
③当0号控制器自检通过后(test_0=‘0'),成为备用控制器(backup0=‘1’)。
④在整个仿真过程中,2个控制器各自的时钟不同步,但频率相同都为20MHz。
(3)冗余切换部分程序代码
①主控制器在出现故障时产生切换信号程序
if(switch_man=′1′or reset_man=′1′orreset_switch=′1′or
sysgood=′1′)
then --如果主控制器出现故障,
mos_en<=′0′;--修改变本卡的主用信息
master_en<=′0′;
switch_cur<=′1′;
if(backupback=′1′)then--如果备用控制器完好,则向备用控制器发送切换信号
switch<=′1′;
else
switch<=′0′;
end if;
else--当前主控制器完好,则保持该控制器的主用信息
mos_en<=′1′;
master_en<=′1′;
switch_cur<=′0′;
switch<=′0′;
end if;
②备用控制器接收主控制器产生的切换信号程序片断
if(switch=′1′)then--备用控制器时刻检测主控制器送过来的切换信号,如果有效则修改本控制器为主控制器
mos<=′1′;
master<=′1′;
else--如果切换信号无效,则维持本控制器的备用状态
mos<=′0′;
master<=′0′;
end if;
3 容错模块
本容错模块针对16位的数据进行处理,采用汉明SEC-DED码,增加6位校验位,接收端具有自动纠正1位错和检测出2位错的能力。
3.1 容错发送模块仿真波形
容错发送仿真波形如图5所示。其工作过程说明:待发送信息0XA9D9,经过容错发送模块发送的信息为0X07A9D9,增加的6位二进制校验位为0B000111。
容错发送模块信号功能如表1所示。容错发送模块程序略。
3.2 容错接收模块仿真波形
容错接收模块仿真波形如图6所示。其工作过程说明:接收到的信息为0X07A9D9(校验位为0B000111),经过容错接收模块后送给本控制器控制电路的是去掉校验码的信息0XA9D9。容错接收模块信号功能如表2所示。容错接收模块程序略。
本文尝试用CPLD器件设计了工业自动化控制系统控制装置控制器的热备冗余切换模块和容错模块,实现了控制系统控制装置控制器的在线冗余和控制器与I/O模块的数据通信容错。相对于现场可编程门阵列,CPLD的开关矩阵路径设计使得信号通过芯片的延迟时间可以确定,因此使CPLD更适合于控制器上的电路设计[4]。
参考文献
1 高社生,张玲霞.可靠性理论与工程应用.北京:国防工业出版社,2002
2 尹征琦.双模冗余系统及其自动切换控制逻辑.电子技术,1997;(4)
3 张宗橙.纠错编码原理和应用.北京:电子工业出版社,2003
4 Ziedman B著,赵宏图译.基于FPGA&CPLD数字IC设计方法.北京:北京航空航天大学出版社,2004