《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM_DSP架構(gòu)的嵌入式微機(jī)保護(hù)裝置的設(shè)計(jì)
基于ARM_DSP架構(gòu)的嵌入式微機(jī)保護(hù)裝置的設(shè)計(jì)
來源:微型機(jī)與應(yīng)用2011年第4期
溫陽東, 黎 明
(合肥工業(yè)大學(xué) 電氣與自動化工程學(xué)院,安徽 合肥 230009)
摘要: 提出一種基于雙CPU架構(gòu)的微機(jī)保護(hù)裝置的設(shè)計(jì)方法與實(shí)現(xiàn)過程,。以LPC2468和TMS320F2812為硬件核心,,以前后臺系統(tǒng)和嵌入式操作系統(tǒng)為軟件平臺進(jìn)行微機(jī)保護(hù)裝置的設(shè)計(jì),具體介紹了系統(tǒng)的硬件功能以及軟件流程圖,。具體闡述了一種基于CPLD的雙CPU通信的軟硬件實(shí)現(xiàn)過程,解決了傳統(tǒng)單CPU處理速度慢,、功能單一的缺點(diǎn),,使保護(hù)裝置運(yùn)行更加可靠、靈敏,。
Abstract:
Key words :

摘  要:提出一種基于雙CPU架構(gòu)的微機(jī)保護(hù)裝置的設(shè)計(jì)方法與實(shí)現(xiàn)過程,。以LPC2468和TMS320F2812為硬件核心,以前后臺系統(tǒng)和嵌入式操作系統(tǒng)為軟件平臺進(jìn)行微機(jī)保護(hù)裝置的設(shè)計(jì),,具體介紹了系統(tǒng)的硬件功能以及軟件流程圖,。具體闡述了一種基于CPLD的雙CPU通信的軟硬件實(shí)現(xiàn)過程,解決了傳統(tǒng)單CPU處理速度慢,、功能單一的缺點(diǎn),,使保護(hù)裝置運(yùn)行更加可靠、靈敏,。
關(guān)鍵詞: ARM微處理器,; DSP微處理器; μC/OS-II,; 微機(jī)保護(hù)

 微機(jī)保護(hù)裝置對電力系統(tǒng)的安全穩(wěn)定運(yùn)行起著至關(guān)重要的作用,。隨著電力網(wǎng)絡(luò)的日趨龐大,尤其是算法的日趨復(fù)雜,,一般的微型計(jì)算機(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實(shí)現(xiàn)兩CPU間的數(shù)據(jù)交換,,以此保證繼電保護(hù)裝置的可靠運(yùn)行,。
1 硬件設(shè)計(jì)
 本裝置適用于35 kV變電站及其以下電壓等級的廠站系統(tǒng),實(shí)現(xiàn)保護(hù),、測量,、控制、通信監(jiān)控,、故障記憶,、自診斷、人機(jī)交互等功能,。裝置內(nèi)部采用插件結(jié)構(gòu),,各插件之間實(shí)現(xiàn)電氣聯(lián)系,裝置內(nèi)部包含五塊插件:顯示插件,、CPU插件,、模擬量采集插件、開入量與電源插件,,以及開出量插件,。系統(tǒng)框圖如圖1所示[1-2]。

    該硬件平臺采用雙CPU結(jié)構(gòu),且CPU間不分主從各自獨(dú)立運(yùn)行,,每個CPU有單獨(dú)的電源供電,,各模塊系統(tǒng)相關(guān)性少,工作運(yùn)行獨(dú)立,。其中ARM主要用來實(shí)現(xiàn)人機(jī)界面,、電能計(jì)量、時鐘較準(zhǔn)以及通信等功能,。DSP利用其自身運(yùn)算速度快,、擅長數(shù)字處理的特點(diǎn),主要實(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ù)字信號,,然后實(shí)現(xiàn)FFT運(yùn)算和各種保護(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單獨(dú)復(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)提供實(shí)時時鐘。
 通信模塊,,裝置包括兩個以太網(wǎng)接口,,一路485和一路CAN接口。一路以太網(wǎng)實(shí)現(xiàn)與站控層連接,,另外一路可以單獨(dú)組網(wǎng)構(gòu)成故障信息傳輸專網(wǎng),。在一些網(wǎng)絡(luò)環(huán)境較差,距離較短的場合下可直接使用485,,CAN總線實(shí)現(xiàn)與變電站的通信,。此外為了減少時間誤差,確保裝置的可靠性,,不同場站的各臺裝置都裝設(shè)GPS對時接口,。
 裝置除以上各模塊以外還有人機(jī)交互模塊和電能計(jì)量模塊,人機(jī)界面采用320×240大屏幕彩色LCD顯示器,,配有3×2的按鍵,。同時還有6個LED顯示燈來反應(yīng)裝置的運(yùn)行情況。電能模塊采用ADE7758,,采用SPI接口,,通過校準(zhǔn)可直接讀出有功、無功和視在功率,。
2軟件設(shè)計(jì)
2.1 ARM部分軟件設(shè)計(jì)

 ARM部分采用嵌入式操作系統(tǒng)μC/OS-II作為軟件平臺,,μC/OS-II是一種源碼公開的實(shí)時操作系統(tǒng),具有易移植、可靠穩(wěn)定等特點(diǎn),。圖2為ARM部分軟件框圖[3],。

 μC/OS-II的移植非常簡單,只需修改下面3個文件[4]:
 OS_CPU.H文件:定義數(shù)據(jù)類型和堆棧增長方向,,這一部分與所使用的編譯器有關(guān),。
 OS_CPU_C.C文件:該文件定義在堆棧增長方向上寄存器保存的位置,該文件還需要實(shí)現(xiàn)幾個操作系統(tǒng)所規(guī)定的hook函數(shù),。通常都設(shè)計(jì)為空函數(shù),。
 OS_CPU A.S文件:該文件由匯編語言實(shí)現(xiàn),主要負(fù)責(zé)任務(wù)切換,、臨界區(qū)指令定義以及時鐘中斷函數(shù)的處理,。
 一個任務(wù)與其他任務(wù)或者中斷服務(wù)程序之間信息的交換有兩種途徑,一是通過全局變量另一個是采用消息隊(duì)列或者消息郵箱,。用全局變量時,,必須保證每個任務(wù)或者中斷服務(wù)子程序獨(dú)享該變量。中斷服務(wù)中保證獨(dú)享的唯一辦法就是關(guān)中斷,。如果兩個任務(wù)共享某變量,,各任務(wù)實(shí)現(xiàn)獨(dú)享的方法可以是先關(guān)中斷再開中斷或者是使用信號量。任務(wù)只能通過全局變量與中斷服務(wù)程序之間通信,,而任務(wù)并不知道何時全局變量被中斷,,服務(wù)程序修改了,除非中斷服務(wù)程序以信號量方式向任務(wù)發(fā)信號,,或者該任務(wù)不斷地周期性地查詢該變量,。為避免這種情況,可考慮使用郵箱和消息隊(duì)列,。任務(wù)或中斷服務(wù)程序通過內(nèi)核服務(wù),,把一則消息(一個指針)放到郵箱里,一個或多個任務(wù)可以接收到該消息(指針指向的內(nèi)容就是該消息),。消息隊(duì)列實(shí)際上是郵箱陣列,,遵循先進(jìn)先出原則,當(dāng)任務(wù)等待某個消息一定時限后,,該任務(wù)自動進(jìn)入就緒態(tài)并開始運(yùn)行,,同時返回錯誤代碼。
    各任務(wù)的切換通過內(nèi)核來調(diào)度,,內(nèi)核的調(diào)度一般是基于優(yōu)先級的,,CPU總是讓處于就緒態(tài)且任務(wù)優(yōu)先級最高的任務(wù)運(yùn)行。任務(wù)的優(yōu)先級一般根據(jù)各任務(wù)間的關(guān)聯(lián)性,、任務(wù)的關(guān)鍵性以及任務(wù)執(zhí)行頻繁性來選定,。在系統(tǒng)運(yùn)行的過程中可能發(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)入運(yùn)行狀態(tài)。
    本系統(tǒng)總共有5個任務(wù),,各任務(wù)之間的關(guān)系如圖2所示,,任務(wù)功能如表1所示,系統(tǒng)通過定時中斷服務(wù)程序釋放信號量定時掃描顯示任務(wù)和電度采樣任務(wù),。因?yàn)長CD顯示的是BCD碼,,所以定值設(shè)定好以后系統(tǒng)通過消息隊(duì)列通知數(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)行錄播,、上傳以及顯示故障信息。運(yùn)行人員可通過鍵盤輸入利用全局變量來設(shè)置通信端口的IP地址,、MAC地址,、波特率以及裝置地址等。

2.2 DSP部分軟件設(shè)計(jì)[5]
    DSP部分因任務(wù)較少采用前后臺程序,,運(yùn)行速度快,。圖3為DSP部分軟件框圖。本套裝置充分利用了DSP強(qiáng)大的中斷功能和高效的數(shù)據(jù)處理能力,。在程序開始時,,DSP向ARM請求定值和時間。設(shè)置采樣周期,,每個周期采樣32點(diǎn),,以工頻50 Hz為例,采樣周期為0.625 ms,。一個周期內(nèi)必須完成模擬量的采集,、fft運(yùn)算、算法判斷,、開關(guān)量的讀入以及與ARM的通信等功能,。

2.3雙CPU通信部分軟件設(shè)計(jì)[6]
 雙CPU間的通信是本系統(tǒng)實(shí)現(xiàn)的關(guān)鍵,,兩CPU雖然獨(dú)立運(yùn)行,但運(yùn)行時需要大量的數(shù)據(jù)進(jìn)行交換,。因?yàn)閮蒀PU的運(yùn)行速度不一致,,而數(shù)據(jù)在傳輸過程中必須要保持同步,兩CPU間數(shù)據(jù)交換和通信是影響整個系統(tǒng)正常工作的重要環(huán)節(jié),。
 CPU間的通信大致可分為:并行通信和串行通信,。本裝置對實(shí)時性要求較高且數(shù)據(jù)傳輸量較大,所以采用的是一種基于CPLD的并行通信,。如圖4所示,在CPLD內(nèi)部實(shí)現(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ù)通過中斷來實(shí)現(xiàn)如圖5所示。當(dāng)進(jìn)入中斷服務(wù)程序后,,CPU應(yīng)先關(guān)中斷將外部中斷引腳設(shè)置成GPIO口,,通過查詢方式接收數(shù)據(jù)以避免因多次中斷造成的系統(tǒng)崩潰。數(shù)據(jù)接收完后,,再將GPIO口設(shè)置為中斷引腳,,開放中斷。如果CRC校驗(yàn)碼驗(yàn)證錯誤,,接收方重新發(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校驗(yàn)碼,。如圖6所示。

     無論數(shù)據(jù)接收方還是發(fā)送方均采用循環(huán)隊(duì)列作為緩沖區(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校驗(yàn)碼
    };
    上述方法在軟硬件上均已實(shí)現(xiàn),,各種試驗(yàn)表明本文所介紹的雙CPU間的通信方法,,傳輸數(shù)據(jù)穩(wěn)定可靠。從現(xiàn)場運(yùn)行的狀況來看各種功能基本實(shí)現(xiàn),,動作可靠,、靈敏度高、抗干擾能力強(qiáng),具有極好的推廣價值,。
參考文獻(xiàn)
[1] 蔡月明,梅軍,曹曉華.CPLD在繼電保護(hù)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2001,,27(4):4-6.
[2] 姚國強(qiáng),溫陽東.電動機(jī)微機(jī)保護(hù)及其智能監(jiān)控系統(tǒng)的研究[J]. 合肥工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2000,23(4):550-554.
[3] 周立功. ARM嵌入式系統(tǒng)軟件開發(fā)實(shí)例[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)用實(shí)例[M]. 北京:北京航空航天大學(xué)出版社,,2007:114,180.
[6] 黃正謹(jǐn),徐堅(jiān).CPLD系統(tǒng)設(shè)計(jì)技術(shù)與入門應(yīng)用[M].北京:電子工業(yè)出版設(shè),,2001:10,20.

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