《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于CPLD的控制器冗余切換和通信容錯的研究
基于CPLD的控制器冗余切換和通信容錯的研究
王 劍1,2,趙海燕1
1.中國科學(xué)院沈陽自動化研究所 自動控制系統(tǒng)研究室,遼寧 沈陽110016;2.中國科學(xué)院研究生院,
摘要: 本文探討了用CPLD實(shí)現(xiàn)控制系統(tǒng)控制裝置控制器的熱備冗余切換和通信容錯,并給出了具有冗余切換和通信容錯功能的控制器結(jié)構(gòu)以及冗余切換和通信容錯模塊的具體實(shí)現(xiàn)方法。
關(guān)鍵詞: FPGA 冗余 容錯 可靠性 CPLD 控制器
Abstract:
Key words :

摘   要: 本文探討了用CPLD實(shí)現(xiàn)控制系統(tǒng)控制裝置控制器的熱備冗余切換和通信容錯,并給出了具有冗余切換和通信容錯功能的控制器結(jié)構(gòu)以及冗余切換和通信容錯模塊的具體實(shí)現(xiàn)方法。
關(guān)鍵詞: 冗余  容錯  可靠性  CPLD  控制器

  在工業(yè)自動化領(lǐng)域里的大型化工、石化、冶金、電力等企業(yè),控制系統(tǒng)控制裝置控制器的冗余和容錯是控制系統(tǒng)高可靠性得以實(shí)現(xiàn)的保證。其中控制器要求具有完全在線冗余的功能,即系統(tǒng)在正常運(yùn)行時,當(dāng)前運(yùn)行的主控制器如果出現(xiàn)故障可立即切換到備用控制器,然后從背板上取下故障控制器進(jìn)行維修,系統(tǒng)在整個過程中的正常運(yùn)行不受任何影響。要達(dá)到這樣的要求,在二個控制器之間的快速切換是關(guān)鍵。
  控制系統(tǒng)的控制器與I/O模塊的通信容錯是實(shí)現(xiàn)控制系統(tǒng)高可靠性的又一種重要方法。在控制器與I/O模塊之間進(jìn)行數(shù)據(jù)通信時,發(fā)送方對待發(fā)送的數(shù)據(jù)進(jìn)行運(yùn)算,獲得冗余校驗(yàn)位;接收方則對接收到的數(shù)據(jù)和冗余校驗(yàn)位進(jìn)行運(yùn)算,并根據(jù)運(yùn)算結(jié)果來判斷接收到的數(shù)據(jù)的正確性,以便對錯誤的數(shù)據(jù)進(jìn)行自動糾正。
本文對雙機(jī)/雙模板熱備份技術(shù)(雙模冗余技術(shù))和控制器與I/O模塊通信容錯應(yīng)用進(jìn)行了新的探討,在控制器與背板接口處通過使用復(fù)雜可編程邏輯器件(Complex Programmable Logic Dvice,CPLD)芯片增加了冗余切換模塊和通信容錯模塊,設(shè)計實(shí)現(xiàn)了控制器的在線冗余和與I/O的數(shù)據(jù)通信容錯。控制系統(tǒng)的冗余連接如圖1所示。

1  無中心裁決器雙模冗余容錯控制器系統(tǒng)模型
1.1 無中心裁決器控制器雙模冗余
  冗余設(shè)計的思想是在系統(tǒng)或設(shè)備完成任務(wù)起關(guān)鍵作用的地方,增加一套以上功能完全相同的通道、單元或元件。當(dāng)該部分出現(xiàn)故障時,使系統(tǒng)仍能正常工作[1]。以減少系統(tǒng)的故障率,實(shí)現(xiàn)系統(tǒng)的高可靠性。
  控制器雙模冗余是指控制系統(tǒng)中存在2個相同的控制器,它們同時工作,互為熱備份,在任一時刻只有一個控制器(主控制器)在有效地輸出[2]。
  控制器雙模冗余在具體實(shí)現(xiàn)上有中心裁決器雙模冗余和無中心裁決器雙模冗余。有中心裁決器雙模冗余是在2個控制器之外加入比較電路,將2個控制器的輸出進(jìn)行比較,結(jié)果相同才輸出到背板總線上。這樣一旦比較電路出現(xiàn)故障,整個控制系統(tǒng)將無法繼續(xù)工作,因此比較電路的加入限制了控制器的在線冗余能力。無中心裁決器雙模冗余沒有比較電路,是在每個控制器上增加冗余切換邏輯,一旦主控制器出現(xiàn)故障立刻切換到備用控制器,任何一個控制器出現(xiàn)故障都不會影響到整個控制系統(tǒng)的正常運(yùn)行,充分體現(xiàn)了控制器的在線冗余能力。無中心裁決器雙模冗余容錯控制器的功能結(jié)構(gòu)如圖2所示。其模塊功能說明如下。

  (1)冗余切換模塊:實(shí)現(xiàn)冗余監(jiān)控和管理,即當(dāng)主控制器檢測出故障時,冗余切換模塊給出切換信號,備用控制器的冗余切換模塊接收到切換信號后,使備用控制器成為主用控制器。
  (2)容錯發(fā)送和接收模塊:容錯發(fā)送模塊對控制器輸出到背板總線上的數(shù)據(jù)加上冗余校驗(yàn)位,容錯接收模塊則對從背板總線上接收到的含有冗余校驗(yàn)位的數(shù)據(jù)進(jìn)行檢錯和糾錯。
  (3)信號名稱:①master_I、②switch_I、③backup_I、④master_O、⑤switch_O、⑥backup_O、⑦clk、⑧noe、⑨t(yī)_nr。
1.2 控制器與I/O模塊通信容錯
  控制系統(tǒng)控制裝置控制器經(jīng)常工作在電磁干擾非常強(qiáng)的工業(yè)現(xiàn)場,控制器數(shù)據(jù)通過背板與其他模塊進(jìn)行通信時,外界的強(qiáng)干擾容易造成通信信息“0”和“1”的翻轉(zhuǎn),導(dǎo)致接收到的數(shù)據(jù)發(fā)生錯誤。但通過在控制器上與背板總線接口處增加錯誤檢測與糾正(Error Detection And Correction,EDAC)模塊,可以減少通信過程中因?yàn)橥饨珉姶鸥蓴_而造成的“0”和“1”的翻轉(zhuǎn)情況。
  錯誤檢測和糾錯的基本原理是基于數(shù)據(jù)通信中的糾錯編碼。糾錯編碼的目的是降低誤碼率[3],即在控制器準(zhǔn)備輸出到背板總線上的信息碼中增加一些冗余校驗(yàn)位,在接收端通過對接收到的信號(包括冗余位)進(jìn)行運(yùn)算以判斷接收到的信息的正確性。如果發(fā)現(xiàn)數(shù)據(jù)出錯,則立即糾正,再將正確的數(shù)據(jù)送給所控制的控制電路。
2  冗余切換模塊
      (1)冗余切換模塊信號說明
  clk:時鐘;reset:系統(tǒng)復(fù)位信號(低電位復(fù)位);bank:槽號(bank=‘0’為0號控制器,否則為1號控制器);test:系統(tǒng)送來的模板自檢信號(低電位模板無故障);sysgood:系統(tǒng)啟動后由系統(tǒng)功能電路送過來系統(tǒng)完好情況信號(低電位表示系統(tǒng)完好);selftest_req:當(dāng)控制器在工作過程中發(fā)生錯誤時,給出請求模板自檢信號(此時為高電平);switch_man:人為切換信號(高電位有效)。reset_man:人為復(fù)位當(dāng)前控制器(高電位復(fù)位);master_I:接收冗余控制器是否主用情況;switch_I:接收冗余控制器的切換信號;backup_I:接收冗余控制器的備用信息;master_O:當(dāng)前控制器產(chǎn)生的主用情況;switch_O:當(dāng)前控制器產(chǎn)生的切換信號;backup_O:當(dāng)前控制器產(chǎn)生的的備用信息。
  (2)控制器的冗余切換模塊驗(yàn)證
  2個相同控制器的切換邏輯模塊驗(yàn)證電路圖如圖3所示。其中雙向信號?鄢0:是0號控制器產(chǎn)生的輸出信號,作為1號控制器的輸入信號;雙向信號?鄢1:是1號控制器產(chǎn)生的輸出信號,作為0號控制器的輸入信號。
  仿真波形使用軟件Active HDL 6.1,器件選擇Xilinx公司的95108PQ100和95144PQ100,速度等級選擇-7。
  圖3冗余切換模塊的驗(yàn)證仿真波形如圖4所示。工作過程說明如下。

 ?、匐p控制器同時上電啟動:0號控制器成為默認(rèn)的主控制器(master0=‘1’,backup0=‘0’),1號控制器成為備用控制器(master1=‘0’,backup1=‘1’)。
 ?、诠ぷ鬟^程中0號控制器發(fā)生故障,切換到1號控制器。為了得到此種情況的仿真波形,這里假設(shè):檢測電路檢測出故障(test_0=‘1’),0號控制器立刻給出切換脈沖(switch0=‘1’),要求自檢(selftest_req=‘1’),同時當(dāng)前0號控制器不再是主控制器(master0=‘0’);1號控制器接到切換信號后成為主控制器(master1=‘1’,backup1=‘0’)。
 ?、郛?dāng)0號控制器自檢通過后(test_0=‘0'),成為備用控制器(backup0=‘1’)。
 ?、茉谡麄€仿真過程中,2個控制器各自的時鐘不同步,但頻率相同都為20MHz。
  (3)冗余切換部分程序代碼
 ?、僦骺刂破髟诔霈F(xiàn)故障時產(chǎn)生切換信號程序
  if(switch_man=′1′or reset_man=′1′orreset_switch=′1′or
                     sysgood=′1′)
  then --如果主控制器出現(xiàn)故障,
       mos_en<=′0′;--修改變本卡的主用信息
       master_en<=′0′;
       switch_cur<=′1′;
         if(backupback=′1′)then--如果備用控制器完好,則向備用控制器發(fā)送切換信號
           switch<=′1′;
        else
           switch<=′0′;
        end if;
  else--當(dāng)前主控制器完好,則保持該控制器的主用信息
        mos_en<=′1′;
        master_en<=′1′;
        switch_cur<=′0′;
        switch<=′0′;
  end if;
  ②備用控制器接收主控制器產(chǎn)生的切換信號程序片斷
  if(switch=′1′)then--備用控制器時刻檢測主控制器送過來的切換信號,如果有效則修改本控制器為主控制器

  mos<=′1′;
     master<=′1′;
  else--如果切換信號無效,則維持本控制器的備用狀態(tài)
         mos<=′0′;
         master<=′0′;
  end if;
3  容錯模塊
  本容錯模塊針對16位的數(shù)據(jù)進(jìn)行處理,采用漢明SEC-DED碼,增加6位校驗(yàn)位,接收端具有自動糾正1位錯和檢測出2位錯的能力。
3.1 容錯發(fā)送模塊仿真波形
  容錯發(fā)送仿真波形如圖5所示。其工作過程說明:待發(fā)送信息0XA9D9,經(jīng)過容錯發(fā)送模塊發(fā)送的信息為0X07A9D9,增加的6位二進(jìn)制校驗(yàn)位為0B000111。


  容錯發(fā)送模塊信號功能如表1所示。容錯發(fā)送模塊程序略。

3.2 容錯接收模塊仿真波形
  容錯接收模塊仿真波形如圖6所示。其工作過程說明:接收到的信息為0X07A9D9(校驗(yàn)位為0B000111),經(jīng)過容錯接收模塊后送給本控制器控制電路的是去掉校驗(yàn)碼的信息0XA9D9。容錯接收模塊信號功能如表2所示。容錯接收模塊程序略。

  本文嘗試用CPLD器件設(shè)計了工業(yè)自動化控制系統(tǒng)控制裝置控制器的熱備冗余切換模塊和容錯模塊,實(shí)現(xiàn)了控制系統(tǒng)控制裝置控制器的在線冗余和控制器與I/O模塊的數(shù)據(jù)通信容錯。相對于現(xiàn)場可編程門陣列,CPLD的開關(guān)矩陣路徑設(shè)計使得信號通過芯片的延遲時間可以確定,因此使CPLD更適合于控制器上的電路設(shè)計[4]。
參考文獻(xiàn)
1   高社生,張玲霞.可靠性理論與工程應(yīng)用.北京:國防工業(yè)出版社,2002
2   尹征琦.雙模冗余系統(tǒng)及其自動切換控制邏輯.電子技術(shù),1997;(4)
3   張宗橙.糾錯編碼原理和應(yīng)用.北京:電子工業(yè)出版社,2003
4   Ziedman B著,趙宏圖譯.基于FPGA&CPLD數(shù)字IC設(shè)計方法.北京:北京航空航天大學(xué)出版社,2004

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。