本發(fā)明涉及自動控制領(lǐng)域,具體而言涉及一種雙CPU的冗余控制器。
背景技術(shù):
20世紀90年代以來,隨著自動化技術(shù)的發(fā)展,現(xiàn)代戰(zhàn)爭對系統(tǒng)的可靠性要求變的越來越高,武器系統(tǒng)的高可靠性也成為了現(xiàn)代武器研制的關(guān)鍵技術(shù)之一。冗余技術(shù)是提高系統(tǒng)可靠性的最有效的方法之一。冗余技術(shù)就是通過增加同等功能的冗余部件,使得當系統(tǒng)出現(xiàn)故障時,其冗余部件可以接替工作,減少系統(tǒng)停機時間,保證系統(tǒng)正常工作。冗余技術(shù)的使用使得系統(tǒng)運行時不受到局部故障的影響,因此廣泛應(yīng)用于航空、航天和工業(yè)控制領(lǐng)域。根據(jù)冗余度不同,冗余技術(shù)分為雙冗余技術(shù)和多余度冗余技術(shù);根據(jù)冗余部件不同,分為處理器冗余、通信冗余、I/O冗余、電源冗余等;根據(jù)冗余實現(xiàn)方式不同,可以分為硬件冗余和軟件冗余等。隨著微電子技術(shù)和大規(guī)模集成電路制造技術(shù)的發(fā)展,微控制器在軍事和工業(yè)控制等各個領(lǐng)域內(nèi)的應(yīng)用日益廣泛和成熟。目前,國內(nèi)外各類工業(yè)控制更是廣泛應(yīng)用微控制器芯片代替系統(tǒng)傳統(tǒng)控制模式。但由于環(huán)境惡劣、電磁干擾等環(huán)境因素,使得按照工作環(huán)境要求設(shè)計的微控制器也難以保證控制系統(tǒng)的長期可靠運行,因此可采用雙CPU冗余技術(shù)。
技術(shù)實現(xiàn)要素:
本發(fā)明目的在于提供一種雙CPU的冗余控制器,采用熱備份的冗余技術(shù),保證系統(tǒng)故障時刻不間斷運行。
本發(fā)明的上述目的通過獨立權(quán)利要求的技術(shù)特征實現(xiàn),從屬權(quán)利要求以另選或有利的方式發(fā)展獨立權(quán)利要求的技術(shù)特征。
為達成上述目的,本發(fā)明提出一種雙CPU的冗余控制器,包括電源電路、主工作電路和冗余電路,電源電路用于向主工作電路和冗余電路提供工作電壓 供應(yīng),主工作電路與冗余電路之間通過CAN總線進行通信并使用跳線連接,其中:
主工作電路包括主CPU、第一A/D轉(zhuǎn)換芯片、第一D/A轉(zhuǎn)換芯片、第一CAN收發(fā)器以及第一以太網(wǎng)控制器,A/D轉(zhuǎn)換芯片、D/A轉(zhuǎn)換芯片、CAN收發(fā)器以及以太網(wǎng)控制器均與主CPU連接,一A/D轉(zhuǎn)換接口與第一A/D轉(zhuǎn)換芯片連接,一D/A轉(zhuǎn)換接口與第一D/A轉(zhuǎn)換芯片連接;
冗余電路包括從CPU、第二A/D轉(zhuǎn)換芯片、第二D/A轉(zhuǎn)換芯片、第二CAN收發(fā)器以及第二以太網(wǎng)控制器,冗余電路采用與前述主工作電路相同的結(jié)構(gòu)和連接;
主工作電路和冗余電路具有相同的系統(tǒng)輸入,并且當主工作電路正常運行時,冗余電路處于“熱備份”的冗余狀態(tài),僅由主工作電路產(chǎn)生系統(tǒng)輸出,而冗余電路不產(chǎn)生系統(tǒng)輸出;該冗余電路通過CAN總線實時監(jiān)控主CPU的工作狀態(tài),并且檢測到主CPU出現(xiàn)故障時,冗余電路自動接管主工作電路的主CPU的工作,產(chǎn)生系統(tǒng)輸出。
進一步的例子中,前述的主工作電路和冗余電路具有相同的多路模擬輸入,并且進行相同的數(shù)據(jù)運算操作,并且在主工作電路正常工作時,從CPU中處理得到的多路模擬輸出數(shù)據(jù)并不對外輸出,只是用來監(jiān)測主CPU處理得到的多路模擬輸出數(shù)據(jù)。
進一步的例子中,前述冗余電路中,從CPU通過將自身運算得到的多路模擬輸出數(shù)據(jù)與通過CAN通信得到的主CPU運算得到的多路模擬輸出數(shù)據(jù)相比較的結(jié)果是否超過設(shè)定的誤差閾值來決定是否接管主工作電路。
進一步的例子中,前述冗余電路中,響應(yīng)于前述比較結(jié)果超出設(shè)定的誤差閾值,前述從CPU通過CAN通信向主CPU發(fā)送中斷指令使其停機,并同時接管主CPU的工作,由該從CPU進行系統(tǒng)輸出。
進一步的例子中,前述冗余電路中,從CPU按照設(shè)定的采樣頻率來讀取主CPU運算得到的多路模擬輸出數(shù)據(jù),以與從CPU的運算數(shù)據(jù)進行比較。
進一步的例子中,前述主工作電路中,各電路具體包括:
主CPU STM32F107,A/D轉(zhuǎn)換芯片A/D7606BSTZ,D/A轉(zhuǎn)換芯片D/AC8544,CAN收發(fā)器SN65HVD230/231D,以太網(wǎng)控制器ENC28J60A;
冗余電路采用與前述主工作電路相同的芯片。
進一步的例子中,主工作電路采用兩路8位A/D采集電路和兩路8位D/A轉(zhuǎn)換電路,使用數(shù)據(jù)鎖存器對主CPU STM32F107端口復(fù)位使用。
本實用發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點:
1)原理簡單,體積重量小。整塊控制板的大小為80*80mm。
2)本發(fā)明采用“熱備份”冗余技術(shù),就是兩個CPU模塊同時在線工作,一個主CPU模塊,一個從CPU,主CPU按照系統(tǒng)要求正常工作,從CPU模塊處于熱備份狀態(tài),實時監(jiān)控主CPU模塊工作狀態(tài),一旦檢測到主CPU模塊出現(xiàn)故障,從CPU模塊便可自動接管主CPU模塊工作,系統(tǒng)可不受停機損失。該冗余技術(shù)中,從CPU模塊和主CPU模塊擁有完全相同的系統(tǒng)輸入,唯一區(qū)別在于從CPU模塊不具備系統(tǒng)輸出功能,只有當主CPU模塊出現(xiàn)故障時,從CPU模塊才接替主CPU模塊并產(chǎn)生系統(tǒng)輸出。“熱備份”省去了系統(tǒng)停機時間,系統(tǒng)故障時可無間斷運行,可靠性高。
3)本發(fā)明具有以太網(wǎng)接入功能,可以進行遠程的數(shù)據(jù)傳輸,實時監(jiān)測以及控制功能。
應(yīng)當理解,前述構(gòu)思以及在下面更加詳細地描述的額外構(gòu)思的所有組合只要在這樣的構(gòu)思不相互矛盾的情況下都可以被視為本公開的發(fā)明主題的一部分。另外,所要求保護的主題的所有組合都被視為本公開的發(fā)明主題的一部分。
結(jié)合附圖從下面的描述中可以更加全面地理解本發(fā)明教導(dǎo)的前述和其他方面、實施例。本發(fā)明的其他附加方面例如示例性實施方式的特征和/或有益效果將在下面的描述中顯見,或通過根據(jù)本發(fā)明教導(dǎo)的具體實施方式的實踐中得知。
附圖說明
附圖不意在按比例繪制。在附圖中,在各個圖中示出的每個相同或近 似相同的組成部分可以用相同的標號表示。為了清晰起見,在每個圖中,并非每個組成部分均被標記?,F(xiàn)在,將通過例子并參考附圖來描述本發(fā)明的各個方面的實施例,其中:
圖1為本發(fā)明冗余控制器的系統(tǒng)總體結(jié)構(gòu)圖。
圖2為本發(fā)明主工作電路CPU外圍線路圖。
圖3為本發(fā)明主工作電路A/D芯片外圍線路圖。
圖4為本發(fā)明主工作電路D/A芯片外圍線路圖。
圖5為本發(fā)明冗余電路A/D芯片外圍線路圖。
圖6為本發(fā)明冗余電路D/A芯片外圍線路圖。
圖7為本發(fā)明中以太網(wǎng)的外圍線路圖。
圖8為本發(fā)明主工作電路CAN通信電路圖。
圖9為本發(fā)明冗余電路CAN通信電路圖。
具體實施方式
為了更了解本發(fā)明的技術(shù)內(nèi)容,特舉具體實施例并配合所附圖式說明如下。
在本公開中參照附圖來描述本發(fā)明的各方面,附圖中示出了許多說明的實施例。本公開的實施例不必定意在包括本發(fā)明的所有方面。應(yīng)當理解,上面介紹的多種構(gòu)思和實施例,以及下面更加詳細地描述的那些構(gòu)思和實施方式可以以很多方式中任意一種來實施,這是因為本發(fā)明所公開的構(gòu)思和實施例并不限于任何實施方式。另外,本發(fā)明公開的一些方面可以單獨使用,或者與本發(fā)明公開的其他方面的任何適當組合來使用。
結(jié)合圖1所示,根據(jù)本發(fā)明的實施例,一種雙CPU的冗余控制器,包括電源電路、主工作電路和冗余電路,電源電路用于向主工作電路和冗余電路提供工作電壓供應(yīng)。
主工作電路與冗余電路之間通過CAN總線進行通信并使用跳線連接。
結(jié)合圖1,主工作電路包括主CPU、第一A/D轉(zhuǎn)換芯片、第一D/A轉(zhuǎn)換芯片、第一CAN收發(fā)器以及第一以太網(wǎng)控制器,A/D轉(zhuǎn)換芯片、D/A轉(zhuǎn)換芯片、 CAN收發(fā)器以及以太網(wǎng)控制器均與主CPU連接,一A/D轉(zhuǎn)換接口與第一A/D轉(zhuǎn)換芯片連接,一D/A轉(zhuǎn)換接口與第一D/A轉(zhuǎn)換芯片連接。
冗余電路包括從CPU、第二A/D轉(zhuǎn)換芯片、第二D/A轉(zhuǎn)換芯片、第二CAN收發(fā)器以及第二以太網(wǎng)控制器,冗余電路采用與前述主工作電路相同的結(jié)構(gòu)和連接。
主工作電路和冗余電路具有相同的系統(tǒng)輸入,并且當主工作電路正常運行時,冗余電路處于“熱備份”的冗余狀態(tài),僅由主工作電路產(chǎn)生系統(tǒng)輸出,而冗余電路不產(chǎn)生系統(tǒng)輸出;該冗余電路通過CAN總線實時監(jiān)控主CPU的工作狀態(tài),并且檢測到主CPU出現(xiàn)故障時,冗余電路自動接管主工作電路的主CPU的工作,產(chǎn)生系統(tǒng)輸出。
前述的主工作電路和冗余電路具有相同的多路模擬輸入,并且進行相同的數(shù)據(jù)運算操作,并且在主工作電路正常工作時,從CPU中處理得到的多路模擬輸出數(shù)據(jù)并不對外輸出,只用來監(jiān)測主CPU處理得到的多路模擬輸出數(shù)據(jù)。
尤其是作為優(yōu)選的方案,前述冗余電路中,從CPU通過將自身運算得到的多路模擬輸出數(shù)據(jù)與通過CAN通信得到的主CPU運算得到的多路模擬輸出數(shù)據(jù)相比較的結(jié)果是否超過設(shè)定的誤差閾值來決定是否接管主工作電路。
前述冗余電路中,響應(yīng)于前述比較結(jié)果超出設(shè)定的誤差閾值,前述從CPU通過CAN通信向主CPU發(fā)送中斷指令使其停機,并同時接管主CPU的工作,由該從CPU進行系統(tǒng)輸出。
前述冗余電路中,從CPU按照設(shè)定的采樣頻率來讀取主CPU運算得到的多路模擬輸出數(shù)據(jù),以與從CPU的運算數(shù)據(jù)進行比較。
結(jié)合圖2-圖9所示,下面結(jié)合前述主工作電路和冗余電路的一些具體設(shè)計,更加具體地說明本發(fā)明前述實施例提出的雙CPU冗余控制器的實現(xiàn)。
作為可選的方案,前述主工作電路中,各電路具體包括:
主CPU STM32F107,A/D轉(zhuǎn)換芯片A/D7606BSTZ,D/A轉(zhuǎn)換芯片D/AC8544,CAN收發(fā)器SN65HVD230/231D,以太網(wǎng)控制器ENC28J60A;
冗余電路采用與前述主工作電路相同的芯片。
主工作電路采用兩路8位A/D采集電路和兩路8位D/A轉(zhuǎn)換電路,使用數(shù)據(jù)鎖存器74HC573對主CPU STM32F107端口復(fù)位使用。結(jié)合圖1,以及圖2-9所示的具體電路,芯片STM32F107[U1]的97腳PE0/TIM4_ETR接芯片A/D7606BSTZ[U11]的3腳OS0_L,芯片STM32F107[U1]的98腳PE1接芯片A/D7606BSTZ[U11]的4腳OS1_L,芯片STM32F107[U1]的1腳PE2/TRACECK接芯片A/D7606BSTZ[U11]的5腳OS2_L,芯片STM32F107[U1]的2腳PE3/TRACED0接芯片A/D7606BSTZ[U11]的9腳CONVSTA_L,芯片STM32F107[U1]的3腳PE4/TRACED1接芯片A/D7606BSTZ[U11]的10腳CONVSTB_L,芯片STM32F107[U1]的4腳PE4/TRACED2接芯片A/D7606BSTZ[U11]的11腳RESET,芯片STM32F107[U1]的5腳PE4/TRACED3接芯片A/D7606BSTZ[U11]的12腳XRD_L,芯片STM32F107[U1]的38腳PE7接芯片A/D7606BSTZ[U11]的13腳XZCD_L。
芯片STM32F107[U1]的35腳PB0接芯片D/AC8544[U12]的24腳A0,芯片STM32F107[U1]的36腳PB1接芯片D/AC8544[U12]的23腳A1,芯片STM32F107[U1]的96腳PB9接芯片D/AC8544[U12]的26腳芯片STM32F107[U1]的51腳PB12接芯片D/AC8544[U12]的27腳LD/AC,芯片STM32F107[U1]的52腳PB13接芯片D/AC8544[U12]的25腳芯片STM32F107[U1]的53腳PB14接芯片D/AC8544[U12]的29腳RST,芯片STM32F107[U1]的54腳PB15接芯片D/AC8544[U12]的30腳
結(jié)合圖1以及圖2-9,主工作電路還包含8個數(shù)據(jù)鎖存器74HC573[U3]、[U4]、[U5]、[U6]、[U7]、[U8]、[U9]、[U10]和一個DM74ALS138SJ[U13]譯碼器。
主工作電路和冗余電路之間通過CAN進行通信,并用跳線進行連接。
芯片SN65HVD230/231D[U20]的1腳D接芯片STM32F107[U1]的71腳CAN1_TX,芯片SN65HVD230/231D[U20]的4腳R接芯片STM32F107[U1]的70腳CAN1_RX。芯片SN65HVD230/231D[U20]的7腳CANH接跳線W1的左 側(cè),芯片SN65HVD230/231D[U20]的6腳CANL接跳線W2的左側(cè)。
芯片SN65HVD230/231D[U41]的1腳D接芯片STM32F107[U22]的71腳CAN1_TX,芯片SN65HVD230/231D[U41]的4腳R接芯片STM32F107[U22]的70腳CAN1_RX。芯片SN65HVD230/231D[U41]的7腳CANH接跳線W1的右側(cè),芯片SN65HVD230/231D[U41]的6腳CANL接跳線W2的右側(cè)。
如圖1,主工作電路連接一以太網(wǎng)控制器,用于數(shù)據(jù)的傳輸。在另一些例子中,還可在PC上做一個上位機,經(jīng)過互聯(lián)網(wǎng)遠程監(jiān)控下位機的運行狀態(tài)。
芯片STM32F107[U1]的67腳PA8接芯片ENC28J60A[U14]的4腳芯片STM32F107[U1]的29腳PA4接芯片ENC28J60A[U14]的9腳芯片STM32F107[U1]的30腳PA5接芯片ENC28J60A[U14]的8腳SCK,芯片STM32F107[U1]的31腳PA6接芯片ENC28J60A[U14]的6腳SO,芯片STM32F107[U1]的32腳PA7接芯片ENC28J60A[U14]的7腳SI,芯片STM32F107[U1]的77腳PA15接芯片ENC28J60A[U14]的10腳
結(jié)合圖1的系統(tǒng)總體結(jié)構(gòu)圖,給主CPU上電,進行復(fù)位,各寄存器恢復(fù)到初始狀態(tài)。只有經(jīng)過初始化后,才可以開始工作。
對STM32F107[U1]的串口24腳、25腳、68腳、69腳、72腳、76腳、35腳、36腳、92腳、93腳、95腳、96腳、47腳、48腳、51腳、52腳、53腳、54腳,97腳、98腳、1腳、2腳、3腳、4腳、5腳、38腳、39腳、40腳、41腳、42腳進行初始化。
芯片AT24C02[U19]的5腳SD/A接芯片STM32F107[U1]的93腳IC1_SD/A,芯片AT24C02[U19]的6腳SCL接芯片STM32F107[U1]的92腳IC1_SCL。
對STM32F107[U1]的CAN口70腳、71腳進行初始化。
對STM32F107[U1]的I/O口15腳、16腳、17腳、18腳、33腳、34腳、63腳、64腳、65腳、66腳、78腳、79腳、80腳、7腳、8腳、9腳、81腳、82腳、83腳、84腳、85腳、86腳、87腳、88腳、55腳、56腳、57腳、58腳、 59腳、60腳、61腳、62腳進行初始化。
對STM32F107[U1]的以太網(wǎng)接口26腳、29腳、30腳、31腳、32腳、67腳、77腳進行初始化。
對冗余電路的從CPU的初始化和主工作電路的初始化是一樣的。
結(jié)合圖3,控制器開始工作時,采集的模擬信號通過HeA/Der 11X2[P4]送給主CPU芯片A/D7606BSTZ[U11]的模擬輸入引腳49腳、51腳、53腳、55腳、57腳、59腳、61腳、63腳進行模數(shù)轉(zhuǎn)換。
轉(zhuǎn)換完成的數(shù)據(jù)由芯片A/D7606BSTZ[U11]的并行輸出引腳16腳、17腳、18腳、19腳、20腳、21腳、22腳、24腳、25腳、27腳、28腳、29腳、30腳、31腳、32腳、33腳輸出到數(shù)據(jù)鎖存器74HC573[U3]、74HC573[U4]進行鎖存。
當芯片STM32F107[U1]需要數(shù)據(jù)輸入時,就會通過其39腳、40腳、41腳、42腳使能片選芯片DM74ALS138SJ[U13],讓數(shù)據(jù)鎖存器[U3]、[U4]中的數(shù)據(jù)輸入到芯片STM32F107[U1]的并行輸入引腳81腳、82腳、83腳、84腳、85腳、86腳、87腳、88腳。
結(jié)合圖4,采集的模擬數(shù)據(jù)經(jīng)A/D轉(zhuǎn)換,輸入到芯片STM32F107[U1]進行數(shù)據(jù)處理,然后由其引腳55腳、56腳、57腳、58腳、59腳、60腳、61腳、62腳輸出到數(shù)據(jù)鎖存器74HC573[U5]、[U6]中進行鎖存。
當芯片STM32F107[U1]給片選芯片DM74ALS138SJ[U13]發(fā)送使能信號后,鎖存器74HC573[U5]、[U6]就會把數(shù)據(jù)輸送給芯片D/AC8544[U12]的并行輸入引腳20腳、19腳、18腳、17腳、16腳、15腳、14腳、13腳、12腳、11腳、10腳、9腳、8腳、7腳、6腳、5腳進行數(shù)模轉(zhuǎn)換。
轉(zhuǎn)換完的數(shù)據(jù)通過芯片D/AC8544[U12]的模擬電壓輸出引腳45腳、41腳、37腳、33腳輸出至HeA/Der 11X2[P4]上。這樣就完成了一次數(shù)據(jù)采集、處理、傳輸?shù)恼麄€過程。
同樣,結(jié)合圖5,圖6,冗余電路的數(shù)據(jù)采集和處理與主工作電路原理一樣。
結(jié)合圖6,以太網(wǎng)控制器ENC28J60A[U14]通過4腳、6腳、7腳、8腳、9 腳、10腳與芯片STM32F107[U1]連接,通過HR911105A[U21]向外輸出數(shù)據(jù)。
結(jié)合圖7和8,主CPU芯片STM32F107[U1]和從CPU芯片STM32F107[U22]通過CAN進行通信。主CPU和從CPU具有相同的多路模擬輸入,進行相同的數(shù)據(jù)運算操作,所以兩者也具有相同的多路模擬輸出。但是在本控制電路中,從CPU中處理得到的多路模擬輸出數(shù)據(jù)并不對外輸出,只是用來監(jiān)測主CPU處理得到的多路模擬輸出數(shù)據(jù)。
通過事先設(shè)置誤差范圍,這里的誤差范圍設(shè)置需要根據(jù)實際使用情況來定。當主CPU和從CPU都對相同的多路模擬輸入數(shù)據(jù)進行運算操作后,從CPU通過CAN通信讀取主CPU的多路模擬輸出量,與自己處理得到的多路模擬輸出量進行比較,比較結(jié)果在正常誤差范圍內(nèi),則主CPU工作正常,從CPU不動作。如果比較結(jié)果超出正常誤差范圍,則從CPU就會判定主CPU出現(xiàn)故障,從CPU通過CAN通信發(fā)送中斷指令給主CPU,然后從CPU就會立刻“接手”主CPU的工作,省去了系統(tǒng)停機時間,系統(tǒng)故障時可無間斷運行,實現(xiàn)了冗余控制。
當然,在上述從CPU通過CAN通信讀取主CPU的多路模擬量的時候,需要通過軟件設(shè)置一下采集的頻率,這個頻率是可調(diào)的,在以后的使用過程中,可以根據(jù)實際情況,再做更改。
在某位置伺服控制系統(tǒng)中,位置平臺處于100mil的空中,需要將其調(diào)整至150mil的位置處,首先上位機中的RDC模塊先將初始位置信息,為16位I/O電平信號1011001001011101(注:1表示高電平,0表示低電平),分別傳入到HeA/Der P3和HeA/Der P8,然后分別通過74LVX4245U15、U16和74LVX4245U32、U33進行電平轉(zhuǎn)化,將5V電平轉(zhuǎn)成3.3V之后再分別輸入到主CPU和從CPU的15、16、17、18、33、34、63、64、65、66、78、79、80、7、8、9共16位I/0管腳中。
當人工手動設(shè)定了150mil的目標量后,即16位I/O信號為1011101101101111。剛開始主CPU和從CPU由外部讀入16位I/O信號是100mil位置處的,通過內(nèi)部算法程序,判斷其與預(yù)定目標150mil相差很大,于是通過相應(yīng)程序,主CPU 就會通過其81、82、83、84、85、86、87、88、55、56、57、58、59、60、61、62管腳輸出一組16位數(shù)據(jù)給D/A轉(zhuǎn)換器,由D/A轉(zhuǎn)換成模擬量后來控制伺服電機動作,調(diào)高平臺的角度。在這個過程中,主CPU輸出的這一組16位數(shù)據(jù)同樣會被從CPU通過CAN接收,然后與從CPU中通過同樣程序得到的一組16位數(shù)據(jù)進行比較,如果比較結(jié)果在預(yù)定誤差范圍內(nèi),則認為主CPU工作正常,從CPU繼續(xù)監(jiān)測。如果不在預(yù)定誤差范圍內(nèi),從CPU就會判定主CPU出現(xiàn)故障,然后從CPU就會立刻“接手”主CPU的工作。
之后每20ms,主CPU和從CPU都會從外部讀入相同的16位表示平臺位置的I/O信息,通過芯片內(nèi)部設(shè)定的循環(huán)程序算法,判斷其與預(yù)定目標150mil的誤差,當誤差小于0.5mil時,就停止循環(huán)和對外輸出,認為動作完成。
雖然本發(fā)明已以較佳實施例揭露如上,然其并非用以限定本發(fā)明。本發(fā)明所屬技術(shù)領(lǐng)域中具有通常知識者,在不脫離本發(fā)明的精神和范圍內(nèi),當可作各種的更動與潤飾。因此,本發(fā)明的保護范圍當視權(quán)利要求書所界定者為準。