摘 要:提出一種基于雙CPU架構(gòu)的微機(jī)保護(hù)裝置的設(shè)計方法與實現(xiàn)過程。以LPC2468和TMS320F2812為硬件核心,以前后臺系統(tǒng)和嵌入式操作系統(tǒng)為軟件平臺進(jìn)行微機(jī)保護(hù)裝置的設(shè)計,具體介紹了系統(tǒng)的硬件功能以及軟件流程圖。具體闡述了一種基于CPLD的雙CPU通信的軟硬件實現(xiàn)過程,解決了傳統(tǒng)單CPU處理速度慢、功能單一的缺點,使保護(hù)裝置運行更加可靠、靈敏。
關(guān)鍵詞: ARM微處理器; DSP微處理器; μC/OS-II; 微機(jī)保護(hù)
微機(jī)保護(hù)裝置對電力系統(tǒng)的安全穩(wěn)定運行起著至關(guān)重要的作用。隨著電力網(wǎng)絡(luò)的日趨龐大,尤其是算法的日趨復(fù)雜,一般的微型計算機(jī)很難滿足速度上的要求,此外隨著電力系統(tǒng)自動化水平的提高,網(wǎng)絡(luò)的通信和前沿的監(jiān)測都需要保護(hù)裝置來承擔(dān),從而對保護(hù)裝置的CPU要求越來越高。本文介紹一種基于DSP和ARM的雙CPU架構(gòu)的微機(jī)保護(hù)平臺。將DSP強(qiáng)大的數(shù)據(jù)處理能力和ARM出色的控制能力結(jié)合起來,并且通過CPLD實現(xiàn)兩CPU間的數(shù)據(jù)交換,以此保證繼電保護(hù)裝置的可靠運行。
1 硬件設(shè)計
本裝置適用于35 kV變電站及其以下電壓等級的廠站系統(tǒng),實現(xiàn)保護(hù)、測量、控制、通信監(jiān)控、故障記憶、自診斷、人機(jī)交互等功能。裝置內(nèi)部采用插件結(jié)構(gòu),各插件之間實現(xiàn)電氣聯(lián)系,裝置內(nèi)部包含五塊插件:顯示插件、CPU插件、模擬量采集插件、開入量與電源插件,以及開出量插件。系統(tǒng)框圖如圖1所示[1-2]。
該硬件平臺采用雙CPU結(jié)構(gòu),且CPU間不分主從各自獨立運行,每個CPU有單獨的電源供電,各模塊系統(tǒng)相關(guān)性少,工作運行獨立。其中ARM主要用來實現(xiàn)人機(jī)界面、電能計量、時鐘較準(zhǔn)以及通信等功能。DSP利用其自身運算速度快、擅長數(shù)字處理的特點,主要實現(xiàn)模擬量的采集、濾波、繼電保護(hù)算法以及出口控制等功能。
模擬量采集模塊共采樣12路模擬量,從現(xiàn)場互感器的二次側(cè)將電信號引入裝置內(nèi)部互感器,經(jīng)過調(diào)理濾波、多路轉(zhuǎn)換開關(guān)CD4053和模數(shù)轉(zhuǎn)換器AD7656轉(zhuǎn)換成數(shù)字信號,然后實現(xiàn)FFT運算和各種保護(hù)算法。測量信號通過調(diào)理電路直接輸入ADE7758。
開關(guān)量及電源模塊。接口電路一律采用光耦隔離,避免外界干擾進(jìn)入CPU模塊。電源模塊采用兩級供電的方式,首先經(jīng)一層AC/DC將220 V電壓轉(zhuǎn)換成直流5 V、7.5 V、24 V的電壓,然后再經(jīng)過一層DC/DC,將電壓轉(zhuǎn)換成+3.3 V和+1.8 V供器件使用。
看門狗電路以及存儲器模塊。本裝置采用雙CPU單獨復(fù)位??撮T狗采用CAT1161,因其無上電復(fù)位功能,所以在復(fù)位端應(yīng)另加RC復(fù)位電路。此外給DSP和ARM分別外擴(kuò)了一片512 K的RAM和一片256 K的鐵定存儲器FM31256。其中鐵定存儲器為I2C接口,因其非易失性用來存儲一些設(shè)定值和故障錄播數(shù)據(jù),F(xiàn)M31256內(nèi)部具有時鐘伴侶功能同時為系統(tǒng)提供實時時鐘。
通信模塊,裝置包括兩個以太網(wǎng)接口,一路485和一路CAN接口。一路以太網(wǎng)實現(xiàn)與站控層連接,另外一路可以單獨組網(wǎng)構(gòu)成故障信息傳輸專網(wǎng)。在一些網(wǎng)絡(luò)環(huán)境較差,距離較短的場合下可直接使用485,CAN總線實現(xiàn)與變電站的通信。此外為了減少時間誤差,確保裝置的可靠性,不同場站的各臺裝置都裝設(shè)GPS對時接口。
裝置除以上各模塊以外還有人機(jī)交互模塊和電能計量模塊,人機(jī)界面采用320×240大屏幕彩色LCD顯示器,配有3×2的按鍵。同時還有6個LED顯示燈來反應(yīng)裝置的運行情況。電能模塊采用ADE7758,采用SPI接口,通過校準(zhǔn)可直接讀出有功、無功和視在功率。
2軟件設(shè)計
2.1 ARM部分軟件設(shè)計
ARM部分采用嵌入式操作系統(tǒng)μC/OS-II作為軟件平臺,μC/OS-II是一種源碼公開的實時操作系統(tǒng),具有易移植、可靠穩(wěn)定等特點。圖2為ARM部分軟件框圖[3]。
μC/OS-II的移植非常簡單,只需修改下面3個文件[4]:
OS_CPU.H文件:定義數(shù)據(jù)類型和堆棧增長方向,這一部分與所使用的編譯器有關(guān)。
OS_CPU_C.C文件:該文件定義在堆棧增長方向上寄存器保存的位置,該文件還需要實現(xiàn)幾個操作系統(tǒng)所規(guī)定的hook函數(shù)。通常都設(shè)計為空函數(shù)。
OS_CPU A.S文件:該文件由匯編語言實現(xiàn),主要負(fù)責(zé)任務(wù)切換、臨界區(qū)指令定義以及時鐘中斷函數(shù)的處理。
一個任務(wù)與其他任務(wù)或者中斷服務(wù)程序之間信息的交換有兩種途徑,一是通過全局變量另一個是采用消息隊列或者消息郵箱。用全局變量時,必須保證每個任務(wù)或者中斷服務(wù)子程序獨享該變量。中斷服務(wù)中保證獨享的唯一辦法就是關(guān)中斷。如果兩個任務(wù)共享某變量,各任務(wù)實現(xiàn)獨享的方法可以是先關(guān)中斷再開中斷或者是使用信號量。任務(wù)只能通過全局變量與中斷服務(wù)程序之間通信,而任務(wù)并不知道何時全局變量被中斷,服務(wù)程序修改了,除非中斷服務(wù)程序以信號量方式向任務(wù)發(fā)信號,或者該任務(wù)不斷地周期性地查詢該變量。為避免這種情況,可考慮使用郵箱和消息隊列。任務(wù)或中斷服務(wù)程序通過內(nèi)核服務(wù),把一則消息(一個指針)放到郵箱里,一個或多個任務(wù)可以接收到該消息(指針指向的內(nèi)容就是該消息)。消息隊列實際上是郵箱陣列,遵循先進(jìn)先出原則,當(dāng)任務(wù)等待某個消息一定時限后,該任務(wù)自動進(jìn)入就緒態(tài)并開始運行,同時返回錯誤代碼。
各任務(wù)的切換通過內(nèi)核來調(diào)度,內(nèi)核的調(diào)度一般是基于優(yōu)先級的,CPU總是讓處于就緒態(tài)且任務(wù)優(yōu)先級最高的任務(wù)運行。任務(wù)的優(yōu)先級一般根據(jù)各任務(wù)間的關(guān)聯(lián)性、任務(wù)的關(guān)鍵性以及任務(wù)執(zhí)行頻繁性來選定。在系統(tǒng)運行的過程中可能發(fā)生任務(wù)調(diào)度的時機(jī)有:
(1)對任務(wù)操作時,包括創(chuàng)建或刪除任務(wù)、掛起或恢復(fù)任務(wù),改變?nèi)蝿?wù)的優(yōu)先級。
(2)任務(wù)主動使用OSTimeDly函數(shù)延時時。
(3)發(fā)送(或等待)信號量、郵箱、消息時。
(4)中斷函數(shù)返回時,優(yōu)先級最高的任務(wù)進(jìn)入運行狀態(tài)。
本系統(tǒng)總共有5個任務(wù),各任務(wù)之間的關(guān)系如圖2所示,任務(wù)功能如表1所示,系統(tǒng)通過定時中斷服務(wù)程序釋放信號量定時掃描顯示任務(wù)和電度采樣任務(wù)。因為LCD顯示的是BCD碼,所以定值設(shè)定好以后系統(tǒng)通過消息隊列通知數(shù)據(jù)處理任務(wù)將BCD碼轉(zhuǎn)換成二進(jìn)制數(shù)傳送給DSP,ARM接收到DSP傳送的信息以及ADE7758所測的電度值和上位機(jī)下發(fā)的數(shù)據(jù)包后也要通過數(shù)據(jù)處理任務(wù)解包并轉(zhuǎn)換成BCD碼顯示。當(dāng)系統(tǒng)發(fā)生故障時,DSP發(fā)送故障信息,ARM接收到故障信息以后通過信號量,主動進(jìn)行錄播、上傳以及顯示故障信息。運行人員可通過鍵盤輸入利用全局變量來設(shè)置通信端口的IP地址、MAC地址、波特率以及裝置地址等。
2.2 DSP部分軟件設(shè)計[5]
DSP部分因任務(wù)較少采用前后臺程序,運行速度快。圖3為DSP部分軟件框圖。本套裝置充分利用了DSP強(qiáng)大的中斷功能和高效的數(shù)據(jù)處理能力。在程序開始時,DSP向ARM請求定值和時間。設(shè)置采樣周期,每個周期采樣32點,以工頻50 Hz為例,采樣周期為0.625 ms。一個周期內(nèi)必須完成模擬量的采集、fft運算、算法判斷、開關(guān)量的讀入以及與ARM的通信等功能。
2.3雙CPU通信部分軟件設(shè)計[6]
雙CPU間的通信是本系統(tǒng)實現(xiàn)的關(guān)鍵,兩CPU雖然獨立運行,但運行時需要大量的數(shù)據(jù)進(jìn)行交換。因為兩CPU的運行速度不一致,而數(shù)據(jù)在傳輸過程中必須要保持同步,兩CPU間數(shù)據(jù)交換和通信是影響整個系統(tǒng)正常工作的重要環(huán)節(jié)。
CPU間的通信大致可分為:并行通信和串行通信。本裝置對實時性要求較高且數(shù)據(jù)傳輸量較大,所以采用的是一種基于CPLD的并行通信。如圖4所示,在CPLD內(nèi)部實現(xiàn)一對D觸發(fā)器(74HC74),其中DSP_H1端接DSP的GPIO口,ARM_H2接ARM的一個中斷引腳。系統(tǒng)在初始化或者復(fù)位后,DSP和ARM各空讀一次,使得DSP_H2(DSP的輸入緩沖器滿信號,圖中未畫出)和ARM_H2無效(低電平)。當(dāng)DSP開始寫時,寫選通經(jīng)過反相器后形成一個上升沿觸發(fā)D觸發(fā)器,引起ARM_H2狀態(tài)改變通知ARM寫操作完成,可以開始讀數(shù)據(jù),同時在寫完時使DSP_H1變低,為下一次寫操作做準(zhǔn)備。ARM開始讀,當(dāng)ARM將一次數(shù)據(jù)讀走后,ARM的讀選通端形成一個上升沿,觸發(fā)D觸發(fā)器,使DSP_H1狀態(tài)改變(變?yōu)楦唠娖剑┩ㄖ狣SP讀操作完成,同時將ARM_H2變低為下一次讀操作做準(zhǔn)備。ARM向DSP傳輸數(shù)據(jù)時的握手信號原理同上。
接收數(shù)據(jù)通過中斷來實現(xiàn)如圖5所示。當(dāng)進(jìn)入中斷服務(wù)程序后,CPU應(yīng)先關(guān)中斷將外部中斷引腳設(shè)置成GPIO口,通過查詢方式接收數(shù)據(jù)以避免因多次中斷造成的系統(tǒng)崩潰。數(shù)據(jù)接收完后,再將GPIO口設(shè)置為中斷引腳,開放中斷。如果CRC校驗碼驗證錯誤,接收方重新發(fā)送請求命令。發(fā)送數(shù)據(jù)是通過查詢輸出緩沖器狀態(tài)來發(fā)送數(shù)據(jù),發(fā)送數(shù)據(jù)時如果發(fā)送方輸出緩沖器在20個指令周期內(nèi)無效,則退出發(fā)送程序。
CPU間數(shù)據(jù)傳輸時,先發(fā)送命令字,高字節(jié)為數(shù)據(jù)類型如表2所示,低字節(jié)為數(shù)據(jù)長度,數(shù)據(jù)發(fā)送完后,發(fā)一個字的CRC校驗碼。如圖6所示。
無論數(shù)據(jù)接收方還是發(fā)送方均采用循環(huán)隊列作為緩沖區(qū),這樣可以避免CPU在處理數(shù)據(jù)時被新的數(shù)據(jù)沖掉,使數(shù)據(jù)交換更加可靠,其數(shù)據(jù)結(jié)構(gòu)如下:
struct CPU_IN_OUT
{
struct CPU_IN_OUT *next;
uint16 com_len;//命令字
uint16 data[120]; //數(shù)據(jù)區(qū)
uint16 CRC; //CRC校驗碼
};
上述方法在軟硬件上均已實現(xiàn),各種試驗表明本文所介紹的雙CPU間的通信方法,傳輸數(shù)據(jù)穩(wěn)定可靠。從現(xiàn)場運行的狀況來看各種功能基本實現(xiàn),動作可靠、靈敏度高、抗干擾能力強(qiáng),具有極好的推廣價值。
參考文獻(xiàn)
[1] 蔡月明,梅軍,曹曉華.CPLD在繼電保護(hù)中的應(yīng)用[J].計算機(jī)應(yīng)用,2001,27(4):4-6.
[2] 姚國強(qiáng),溫陽東.電動機(jī)微機(jī)保護(hù)及其智能監(jiān)控系統(tǒng)的研究[J]. 合肥工業(yè)大學(xué)學(xué)報(自然科學(xué)版),2000,23(4):550-554.
[3] 周立功. ARM嵌入式系統(tǒng)軟件開發(fā)實例[M].北京:北京航空航天大學(xué)出版社,2004:436,452.
[4] LABROSSE J J. MicroC/OS-II the real-time kernel second edition[M].北京:北京航空航天大學(xué)出版社,2007:72-142.
[5] 萬山明.TMS320f281x DSP原理及應(yīng)用實例[M]. 北京:北京航空航天大學(xué)出版社,2007:114,180.
[6] 黃正謹(jǐn),徐堅.CPLD系統(tǒng)設(shè)計技術(shù)與入門應(yīng)用[M].北京:電子工業(yè)出版設(shè),2001:10,20.