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



























評論