摘 要: 本文探討了用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