《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計應(yīng)用 > SSPA電源工作狀態(tài)遠(yuǎn)程監(jiān)測系統(tǒng)設(shè)計
SSPA電源工作狀態(tài)遠(yuǎn)程監(jiān)測系統(tǒng)設(shè)計
來源:微型機(jī)與應(yīng)用2013年第18期
李長春,武 麗
(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽621000)
摘要: 設(shè)計了一種功率放大器電源工作狀態(tài)遠(yuǎn)程監(jiān)測系統(tǒng),實現(xiàn)了137路電源的監(jiān)測。該系統(tǒng)以ARM7處理器、μC/OS-II實時操作系統(tǒng)和uIP協(xié)議棧為核心,并在PC上設(shè)計了上位機(jī)監(jiān)控軟件。經(jīng)驗證,系統(tǒng)能正確接收多點監(jiān)測,可以及時反映電源工作情況,并提供報警信息。
Abstract:
Key words :

摘  要: 設(shè)計了一種功率放大器電源工作狀態(tài)遠(yuǎn)程監(jiān)測系統(tǒng),實現(xiàn)了137路電源的監(jiān)測。該系統(tǒng)以ARM7處理器、μC/OS-II實時操作系統(tǒng)和uIP協(xié)議棧為核心,并在PC上設(shè)計了上位機(jī)監(jiān)控軟件。經(jīng)驗證,系統(tǒng)能正確接收多點監(jiān)測,可以及時反映電源工作情況,并提供報警信息。
關(guān)鍵詞: 電源監(jiān)測;ARM7;μC/OS-II;uIP協(xié)議;VC

    固態(tài)功率放大器SSPA(Solid State Power Amplifier)具有體積小、重量輕、工作電壓低、穩(wěn)定性高等優(yōu)點,被廣泛用于各個領(lǐng)域中,在通信系統(tǒng)中也占據(jù)著越來越重要的地位。固態(tài)功率放大器需要將多路功率器件進(jìn)行合成,這就需要多路電源進(jìn)行穩(wěn)定供電,在工作中需要對每一路電源的工作狀態(tài)進(jìn)行監(jiān)測,主要監(jiān)測電源的工作電流。對固態(tài)功率放大器工作時的電源工作狀態(tài)進(jìn)行監(jiān)測,并通過網(wǎng)絡(luò)發(fā)送至遠(yuǎn)程主機(jī)進(jìn)行分析和處理,以確保系統(tǒng)能夠正常工作。
1 系統(tǒng)硬件結(jié)構(gòu)
    SSPA遠(yuǎn)程監(jiān)測系統(tǒng)由電源模塊、模擬開關(guān)、嵌入式處理器AT91SAM7X256和DM9161網(wǎng)卡等構(gòu)成。多路電源的工作電流經(jīng)過電路轉(zhuǎn)換為電壓,輸入到系統(tǒng)中,系統(tǒng)通過模擬開關(guān)的切換實現(xiàn)分時采樣,得到137路電源的工作電流數(shù)據(jù),并將數(shù)據(jù)打包,然后DM9161通過網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送至遠(yuǎn)程主機(jī),實現(xiàn)了遠(yuǎn)程采集和監(jiān)測功能,當(dāng)采集的工作參數(shù)超過設(shè)定值時實現(xiàn)報警,確保系統(tǒng)工作正常。監(jiān)測系統(tǒng)構(gòu)成如圖1所示。

2 系統(tǒng)軟件設(shè)計
2.1
μC/OS-II系統(tǒng)移植
    μC/OS-II是一個優(yōu)秀的嵌入式實時操作系統(tǒng),應(yīng)用中首先應(yīng)完成系統(tǒng)的移植。所謂移植,就是使一個實時內(nèi)核運(yùn)行在某個微控制器或微處理器上,并對與處理器相關(guān)的代碼進(jìn)行修改。系統(tǒng)移植主要包括以下幾個內(nèi)容:
    (1)在OS_CPU.H頭文件中完成配置和定義。其中主要包括與編譯無關(guān)的數(shù)據(jù)類型的定義;OS_ENTER_CRI-TICAL、OS_EXIT_CRITICAL、OS_TASK_SW 3個宏的定義,這3個宏定義分別表示進(jìn)入中斷、退出中斷和任務(wù)切換;還需要完成堆棧生長方向的定義[1]。
    (2)編寫OS_CPU_C.C,其中主要的工作是編寫6個C語言的函數(shù)。其中OSTaskStkInit()是任務(wù)堆棧初始化函數(shù),這是進(jìn)行移植時必須重視的函數(shù),其他5個函數(shù)都是Hook函數(shù),供系統(tǒng)內(nèi)核擴(kuò)展。
    (3)編寫OS_CPU_A.ASM,主要需要編寫3個匯編語言函數(shù),分別是高優(yōu)先級就緒任務(wù)啟動函數(shù)OSStartHighRdy()、任務(wù)級的切換函數(shù)OSCtxSw()和中斷下的任務(wù)切換函數(shù)OSIntCtxSw()[2]。
2.2 uIP網(wǎng)絡(luò)協(xié)議移植
    uIP由瑞典計算機(jī)科學(xué)學(xué)院(網(wǎng)絡(luò)嵌入式系統(tǒng)小組)的Adam Dunkels開發(fā),是一種免費(fèi)的、可實現(xiàn)的、極小的TCP/IP協(xié)議棧。它可以看作是一個代碼庫,通過一系列函數(shù)為系統(tǒng)底層和應(yīng)用程序之間提供通信,對于系統(tǒng)本身,它內(nèi)部的協(xié)議是透明的,提高了協(xié)議的適用性[3]。
    uIP使用前需要進(jìn)行移植,移植的主要內(nèi)容就是修改網(wǎng)絡(luò)驅(qū)動部分的內(nèi)容,包括以下幾個步驟:
    (1)編寫EMAC網(wǎng)絡(luò)接口庫,該庫文件中主要提供了一系列對ARM控制器中EMAC接口進(jìn)行操作的函數(shù),控制器對網(wǎng)卡的操作都是通過該接口進(jìn)行,包括了EMAC模塊的初始化工作以及與網(wǎng)卡芯片的通信函數(shù)等。
    EMAC_Init(AT91C_ID_EMAC,MacAddress.addr,EMAC_CAF_ENABLE, EMAC_NBC_DISABLE);//初始化EMAC接口
    ……
    (2)編寫網(wǎng)卡芯片DM9161的驅(qū)動程序,包括了DM9161的芯片初始化以及數(shù)據(jù)發(fā)送和數(shù)據(jù)接收操作等。
    MACB_Init(pMacb, BOARD_EMAC_PHY_ADDR);
//初始化DM9161
    ……
    (3)完成本系統(tǒng)uIP的配置選項,包括數(shù)據(jù)存儲方式、緩存區(qū)大小、IP地址、MAC地址、默認(rèn)路由、子網(wǎng)掩碼、uIP 1 s時間所需要的中斷數(shù)和一些基本數(shù)據(jù)類型的定義,以及最大連接數(shù)、數(shù)據(jù)包長度以及應(yīng)用層協(xié)議的支持等[4]。
    (4)編寫應(yīng)用層函數(shù)UIP_APPCALL,uIP協(xié)議在接收到底層數(shù)據(jù)之后,需要上層函數(shù)處理時,會調(diào)用函數(shù)UIP_APPCALL。本系統(tǒng)中通過使用宏定義#define UIP_
APPCALL sample_appcall將該函數(shù)定向到sample_appcall。該函數(shù)通過查詢當(dāng)前狀態(tài)來實現(xiàn)各種處理機(jī)制。當(dāng)遠(yuǎn)程主機(jī)建立一個連接后,初始化緩存區(qū)給當(dāng)前連接使用;有新數(shù)據(jù)到達(dá)時讀取數(shù)據(jù)包,分析數(shù)據(jù)包的信息后,返回給遠(yuǎn)程主機(jī)所需要的信息。當(dāng)連接輪詢次數(shù)達(dá)到設(shè)定值時,中止當(dāng)前連接,當(dāng)遠(yuǎn)程主機(jī)發(fā)出斷開連接命令或連接超時后,斷開當(dāng)前連接[5]。uIP協(xié)議棧通過調(diào)用該函數(shù)實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)。
2.3 系統(tǒng)任務(wù)設(shè)計
    系統(tǒng)的實際任務(wù)有啟動任務(wù)AppStartTask()、AD采集任務(wù)AD_sampleTask()、網(wǎng)絡(luò)主任務(wù)Network_MainTask()、網(wǎng)絡(luò)周期任務(wù)Network_PerioTask()及網(wǎng)絡(luò)數(shù)據(jù)包接收任務(wù)Network_PollTask(),其優(yōu)先級從高到低。
    AppStartTask()是在開始時啟動其他任務(wù)以及在系統(tǒng)運(yùn)行時通過LED燈指示系統(tǒng)是否正常工作。AD_sample-
Task()是采樣任務(wù),負(fù)責(zé)各監(jiān)測點數(shù)據(jù)的獲取和處理工作。Network_PollTask()、Network_MainTask()和Network_PerioTask() 3個任務(wù)是網(wǎng)絡(luò)部分的內(nèi)容,并且使用一個信號量pNetwork_newdata來實現(xiàn)任務(wù)之間的通信。
    數(shù)據(jù)包接收任務(wù)Network_PollTask()是3個網(wǎng)絡(luò)任務(wù)中優(yōu)先級最低的一個,負(fù)責(zé)監(jiān)聽在指定的端口上是否有連接請求或數(shù)據(jù)請求,當(dāng)一個新的請求到達(dá)該監(jiān)聽端口后,該任務(wù)將收到的數(shù)據(jù)包緩存到uip_buf中,設(shè)置數(shù)據(jù)長度變量uip_len,然后該任務(wù)會發(fā)送一個信號量pNetwork_newdata給網(wǎng)絡(luò)主任務(wù)Network_MainTask()。
    網(wǎng)絡(luò)主任務(wù)Network_MainTask()是網(wǎng)絡(luò)任務(wù)中優(yōu)先級最高的,完成網(wǎng)絡(luò)數(shù)據(jù)處理并向應(yīng)用層分發(fā)。平時一直處于掛起的狀態(tài),當(dāng)收到數(shù)據(jù)包發(fā)送任務(wù)發(fā)送的信號量之后,該任務(wù)調(diào)用函數(shù)uip_process()處理數(shù)據(jù)包信息,根據(jù)不同信息完成數(shù)據(jù)包的發(fā)送,然后繼續(xù)被掛起。
    Network_PerioTask()則是周期性運(yùn)行的任務(wù),其優(yōu)先級處于另兩個任務(wù)之間,用于對連接的管理,處理連接超時數(shù)據(jù)包重發(fā)。這3個任務(wù)互相協(xié)作,實現(xiàn)了網(wǎng)絡(luò)的通信[6]。
3 上位機(jī)設(shè)計
    上位機(jī)部分是基于VC6.0編寫的,主要運(yùn)用網(wǎng)絡(luò)套接字和多線程編程技術(shù)等實現(xiàn)。上位機(jī)運(yùn)行時,首先讀取注冊表中保存的設(shè)定值,然后對保存的指定IP的指定端口發(fā)送連接請求,連接建立后,向下位機(jī)發(fā)送數(shù)據(jù)請求包,并且在主線程之外創(chuàng)建一個接收線程,接收線程通過Socket套接字接收上傳的網(wǎng)絡(luò)數(shù)據(jù),主線程中實現(xiàn)各個監(jiān)測點的數(shù)據(jù)顯示以及報警信息等,并可以發(fā)送相應(yīng)的功能命令給下位機(jī),以達(dá)到一些簡單的控制功能。上位機(jī)運(yùn)行界面如圖2所示。

 

 

    本系統(tǒng)實現(xiàn)了μC/OS-II操作系統(tǒng)和uIP網(wǎng)絡(luò)協(xié)議的結(jié)合,并運(yùn)用到電源監(jiān)測系統(tǒng)中。本系統(tǒng)經(jīng)調(diào)試,軟硬
件工作均正常。實際運(yùn)行結(jié)果證明,本監(jiān)測系統(tǒng)在穩(wěn)定性和實時性方面都有很好的表現(xiàn),完全適用于實際系統(tǒng)的應(yīng)用。隨著嵌入式技術(shù)以及網(wǎng)絡(luò)技術(shù)的發(fā)展,未來數(shù)據(jù)監(jiān)測系統(tǒng)的發(fā)展和應(yīng)用將會有更大的空間。
參考文獻(xiàn)
[1] 邵貝貝.μC/OS-II—源代碼公開的實時嵌入式操作系統(tǒng) [M].北京:中國電力出版社,2001.
[2] 趙偉國,李文軍,梁國偉.實時嵌入式操作系統(tǒng)μC/OS-II  在AT91上的移植[J].中國計量學(xué)院學(xué)報,2005,16(2):137-139.
[3] DUNKELS A.The uIP 1.0 reference manual[D].Swedish:Swedish Institute of Computer Science,2006.
[4] DUNKELS A.uIP-A free small TCP/IP stack[Z].2004.
[5] 張永濤,黃丹丹,李歐.uIP協(xié)議分析及其應(yīng)用[J].信息工程大學(xué)學(xué)報,2006,7(2):147-149.
[6] 劉春風(fēng),張代遠(yuǎn).?滋C/OS-II下協(xié)議棧uIP的移植與應(yīng)用[J].計算機(jī)技術(shù)與發(fā)展,2012,22(9):143-145.

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