《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于μC/OS-II的數(shù)字化UPS設計與實現(xiàn)
基于μC/OS-II的數(shù)字化UPS設計與實現(xiàn)
摘要: 針對數(shù)字化UPS,給出了系統(tǒng)總體設計框圖,,為提高系統(tǒng)控制程序的實時性,提出一種基于實時操作系統(tǒng)μC/OS-II的嵌入式UPS系統(tǒng)控制方案,。通過對UPS控制系統(tǒng)結構與功能的分析,,實現(xiàn)了μC/OS-II在TMS320LF2407A上的移植,對UPS系統(tǒng)控制項目以任務的形式進行設計并實現(xiàn)調度,,給出了部分參數(shù)設定和主程序清單,。實驗結果證明,本文的設計有效的增強了系統(tǒng)控制軟件的模塊性,、實時性,,提高了系統(tǒng)運行的可靠性與穩(wěn)定性。
Abstract:
Key words :

1 引言

隨著信息技術的發(fā)展,,不間斷應急電源(UPS)向著數(shù)字化,、智能化,、網(wǎng)絡化,、大容量多機冗余化和綠色化的方向發(fā)展,。高性能專用DSP芯片為UPS的數(shù)字化提供了良好的硬件基礎,而嵌入式實時軟件操作系統(tǒng)是數(shù)字化產品的核心,。

針對數(shù)字化UPS,本文給出了一種基于實時多任務操作系統(tǒng)μC/OS-II 的系統(tǒng)控制設計,。設計采用μC/OS-II為內核,實現(xiàn)其在TMS320LF2407A上的移植,,通過對UPS控制系統(tǒng)結構與功能的分析,,各部分控制功能劃分為不同優(yōu)先級的任務來調度實現(xiàn),給出了部分參數(shù)設定和主程序清單,。實踐證明,,基于μC/OS-II 的數(shù)字化UPS 系統(tǒng)提高了控制系統(tǒng)的實時性以及系統(tǒng)運行的可靠性及穩(wěn)定性。

2 數(shù)字化UPS控制系統(tǒng)結構

TMS320LF2407A 是TI 推出的專門針對工業(yè)控制領域的16 位高性能微控制器,,其運算速度高,、片內資源豐富,能夠很好的滿足數(shù)字化UPS電源控制系統(tǒng)功能的需要,。數(shù)字化UPS 系統(tǒng)總體設計框圖如圖1 所示,,虛線框內為主控制模塊,按功能劃分為A/D轉換,、PWM(Pulse Wide Modulate)逆變控制,、鎖相控制、保護控制,、鍵盤及液晶顯示,、通信接口、實時時鐘等功能模塊,。

4 數(shù)字化UPS任務設計及調度

控制軟件主程序流程圖如圖3 所示,。通過對UPS控制系統(tǒng)結構與功能的分析,各部分控制功能劃分為不同優(yōu)先級的任務,,由μC/OS-II實時內核進行調度,,實現(xiàn)多任務并行執(zhí)行。

 

圖 3 主程序流程圖

圖 3 主程序流程圖

(1)數(shù)字化UPS 任務設計:如表1 所示,,采用層次化,、模塊化的設計思想,根據(jù)各個任務的重要性和實時性,,把用戶程序分成9 個不同優(yōu)先級的任務,,包括數(shù)據(jù)采集及PWM 波計算、鎖相同步,、通信處理,、系統(tǒng)參數(shù)計算、系統(tǒng)狀態(tài)檢測及處理,、鍵盤掃描,、鍵盤處理、液晶顯示,、空閑任務,。任務越重要,實時性越強,,任務優(yōu)先級越高,。空閑任務不執(zhí)行任何功能,,一直處于就緒狀態(tài),,只有其他任務空閑時才執(zhí)行。

表1 數(shù)字化UPS任務功能及其描述

 

表1 數(shù)字化UPS任務功能及其描述

(2) μC/OS-II 任務調度:完成任務在運行態(tài),、就緒態(tài),、掛起態(tài)、休眠態(tài)以及中斷態(tài)之間的轉換,,是實時多任務操作系統(tǒng)運作的核心功能,,流程如圖4所示。μC/OS-II 的任務調度是基于優(yōu)先級的搶占式調度算法,,系統(tǒng)共有9個任務和3個中斷,。系統(tǒng)在任務控制塊(OS_TCB)中分配一個字(OSTCBPrio)來表示每個任務的優(yōu)先級,數(shù)值越小優(yōu)先級越高,。當發(fā)生任務調度時,,系統(tǒng)通過任務就緒表查找到優(yōu)先級最高的任務后,調用函數(shù)OS_TASK_SW()完成任務切換,。

(3) 數(shù)字化UPS 中斷:設計3 個硬件中斷,,一個是AD 采樣中斷,優(yōu)先級最高,,采用自適應頻率方式每周期采樣32 個點;另一個是系統(tǒng)時鐘節(jié)拍中斷,,優(yōu)先級次之,每10ms中斷一次作為系統(tǒng)時鐘;最后是通信中斷,,優(yōu)先級低,,當接收到外部數(shù)據(jù)時,便發(fā)生中斷并對接收的數(shù)據(jù)進行處理,。

(4)任務間通信與同步:采用訪問共享數(shù)據(jù)資源的方式實現(xiàn)多任務間的通信,,采用信號量進行任務間的同步。為實現(xiàn)任務間的同步,,本軟件系統(tǒng)建立了3個信號量:

數(shù)據(jù)計算信號量OSPWMCntSem,用于任務1和數(shù)據(jù)采集PWM 波計算子程序通信,。每完成一次中斷采樣便發(fā)出這個信號量,告訴任務1對 采集數(shù)據(jù)和PWM波進行計算處理,。

 

圖4 任務調度流程圖,。

圖4 任務調度流程圖,。

通信信號量OSComSem,用于任務3 和通信中斷子程序進行通信。一旦接收到上位機發(fā)過來的信號,,中斷子程序就發(fā)出這個信號量,,告訴任務4對接收數(shù)據(jù)進行處理。

鍵盤信號量OSKeySem,用于任務6 和任務7 通信,,一旦掃描到有鍵按下則發(fā)出該信號量告訴任務7做鍵盤處理,。

 

圖 1 數(shù)字化UPS系統(tǒng)總體框圖

圖 1 數(shù)字化UPS系統(tǒng)總體框圖

(1)A/D轉換:完成對市電輸入的交流電壓、電流信號,、逆變輸出的交流電壓,、電流信號、電池電壓和電流信號的采樣,,是系統(tǒng)數(shù)字化控制實現(xiàn)以及UPS遠程監(jiān)控功能的基礎,。根據(jù)LF2407A A/D轉換電平要求,被采樣信號必須通過信號檢測模塊變換為0~3V直流電平,。為提高系統(tǒng)性能,,對輸入/輸出電壓、電流進行瞬時值采樣,,采樣頻率為10kHz.

(2) PWM 逆變控制:PWM 逆變控制算法是UPS系統(tǒng)控制的核心算法,,它決定了UPS系統(tǒng)輸出性能。

逆變算法利用LF2407A 強大的數(shù)值運算性能以及高速計算能力實時在線計算出PWM信號脈寬,,然后由A事件管理模塊(EVA)的全比較單元輸出4 路帶死區(qū)控制的PWM 信號(PWM1~4),,這4 路PWM 信號經隔離驅動模塊驅動逆變器。

(3) 鎖相控制接口:利用LF2407A的事件捕獲端口CAP1 和CAP2,將市電輸入和逆變輸出經降壓及波形變換后送入CAP1 和CAP2,由LF2407A 通過軟件鎖相環(huán)算法實現(xiàn)逆變輸出電壓與市電電壓的同頻同相,。

(4) 通信接口:為實現(xiàn)對UPS 的實時監(jiān)控功能,,主機需對UPS電源的各模擬參量采樣數(shù)據(jù)及表示工作狀態(tài)的開關量數(shù)據(jù)進行實時高速采集。利用LF2407A的SCI 異步通訊接口,,采用RS-485 物理標準協(xié)議,,實現(xiàn)UPS與主機的遠程通訊,以便對UPS設備狀態(tài),、各項參數(shù)及故障信息進行查詢,。

(5) 鍵盤操作及液晶顯示:提供人機對話平臺,用戶通過鍵盤操作可設置運行模式,、設備通信地址等信息;液晶顯示屏以圖文方式顯示工作狀態(tài)和參數(shù)信息,,提供可視化菜單。

(6) 實時時鐘:利用串行外設接口SPI 實現(xiàn)與LF2407A控制器的通信,,為整個系統(tǒng)提供統(tǒng)一,、標準的時鐘基準,另外,利用時鐘芯片的存儲器來存儲系統(tǒng)掉電保護參數(shù),。

3 μC/OS-II在LF2407A上的移植

μC/OS-II的硬件和軟件體系結構如圖2所示,。

 

圖2 <a class=μC/OS-II的硬件和軟件體系結構圖" height="314" src="http://files.chinaaet.com/images/2012/10/19/3d74d5bc-5674-4c73-800e-f649c01ac1f6.jpg" width="442" />

圖2 μC/OS-II的硬件和軟件體系結構圖

要使μC/OS-II正常運行,LF2407A滿足以下要求:處理器的C編譯器能產生可重入代碼,,支持可擴展和可鏈接匯編語言模塊;用C語言就可打開和關閉中斷;處理器支持中斷,,并能產生定時中斷;處理器有將堆棧指針以及其他CPU寄存器的內容讀出、并存儲到堆?;騼却嬷腥サ闹噶睢?/p>

由于μC/OS-II 是源碼公開的操作系統(tǒng),,且其結構化設計便于把與處理器相關的部分分離出來,,因此μC/OS-II在LF2407A處理器上移植的主要工作是修改與處理器相關部分的代碼。由圖2 可以看出,,它們主要集中在三個文件中:頭文件OS_CPU.H,、C 文件OS_CPU_C.C、匯編文件OS_CPU_A.ASM.

(1) 修改OS_CPU.H:其中包含兩部分的代碼,,數(shù)據(jù)類型定義代碼和與處理器相關的代碼,。LF2407A的堆棧數(shù)據(jù)類型定義為:typedef unsigned intOS_STK;所有的堆棧用OS_STK 聲明,地址由高向低遞減,,OS_STK_GROWTH設置為1.

OS_CPU.H 剩下部分是移植必須定義底層函數(shù)的聲明,,為使低層接口函數(shù)與處理器狀態(tài)無關,同時使任務調用相應的函數(shù)不需知道函數(shù)位置,,采用軟中斷指令SWI作為底層接口,,使用不同的功能號來區(qū)分各函數(shù)。其定義格式如下:

__swi (0x00) void OS_TASK_SW(void);//任務切換函數(shù)

其中,,swi 為軟中斷標志,,0x00 是分配的中斷號,OS_TASK_SW 是函數(shù)名,,兩個void 分別表示返回類型和參數(shù)類型,。其它的底層函數(shù)接口定義與此相似。

(2)修改OS_CPU_C.C:初始化任務堆棧函數(shù)和軟中斷函數(shù)的實現(xiàn),。修改OSTaskStkInit()函數(shù),,代碼如下:

OS_STK *OSTaskStkInit (void (*task)(void*pd), void *pdata, OS_STK *ptos, INT16U opt)

{ 模擬帶參數(shù)(pdata)的函數(shù)調用;定義任務堆棧;使用滿棧遞減方式初始化任務堆棧結構;返回堆棧結構;}

軟中斷函數(shù)的實現(xiàn):

void SWI_Exception(int SWI_Num, int *Regs)

{ /*根據(jù)不同Num 值(功能號)跳轉到不同的底層服務函數(shù)地址,,如:*/ case 0x00:任務切換函數(shù)OS_TASK_SW;}

(3)修改OS_CPU_A.S:包括4 個簡單的匯編語言函數(shù):OSStartHighRdy():使就緒態(tài)任務中優(yōu)先級最高的任務開始運行;OSCtxSw():實現(xiàn)任務級的任務切換功能;OSIntCtxSw():在中斷級實現(xiàn)任務間的切換;OSTickISR():時鐘節(jié)拍中斷服務子程序,。

(5) μC/OS-II主程序框架:調用任何服務之前,μC/OS-II 要求首先調用系統(tǒng)函數(shù)OSInit()初始化所有變量和數(shù)據(jù)結構,,同時建立一個空閑任務,。多任務的啟動通過OSStart()實現(xiàn),但啟動前至少需建立一個應用任務。當調用OSStart()時,,OSStart()從任務就緒表中找出用戶建立的優(yōu)先級最高任務的任務控制塊,,然后調用任務啟動函數(shù),接下來就完全交給實時操作系統(tǒng)來管理,,實時內核不斷地對任務進行切換調度,,管理各個應用任務和系統(tǒng)資源。系統(tǒng)主程序清單如下:

 

 

5 實驗結果

根據(jù)前述控制系統(tǒng)設計,,成功研制了一臺3.75KVAUPS 樣機,。以下為該樣機實時性、可靠性,、穩(wěn)定性測試運行情況,,測試設備與儀表包括:泰克TDS3043B 數(shù)字示波器、Gad-2016 失真度測試儀,、FLUKE189 數(shù)字萬用表,、FLUKE36 鉗型電流表、紅外線溫度計,、負載三相3KW 燈泡(約3.75KW爐絲),。

(1)市電輸入380V,負載變化:輸出相電壓穩(wěn)定度220V±1%,U 相頻率穩(wěn)定度50Hz±0.4%,波形失真度<2%,其他兩相與U 相基本相同,任何兩相相位差120°±1°,。圖5 為空載與滿載逆變輸出波形,。

 

(a) 空載

(a) 空載

 

(b) 滿載

(b) 滿載

圖5 U相輸出逆變電壓波形。

(2)市電逆變互切,,切換時間及可靠性測試:市電輸入384V,電池電壓490V,3.75KW額定負載運行,,市電斷電或按下"強起"按鈕,逆變器帶負載正常啟動,,啟動時間約60ms.市電,、逆變切換時間經多次反復試驗,均小于120ms.圖6 所示為市電到逆變的切換波形,,切換時間約60ms,圖中波形經檢測變壓器隔離降壓;市電來電,,逆變器立即停止工作。

 

圖6 市電到逆變的切換波形

圖6 市電到逆變的切換波形

(3)逆變應急長時間工作,,輸出電壓情況測試與系統(tǒng)穩(wěn)定性驗證:電池513V開始放電,,帶3.75KW爐絲額定負載,運行約80分鐘,,IGBT及散熱器溫度始終低于32℃,,系統(tǒng)工作正常且穩(wěn)定,測試參數(shù)如表2所示,。

表2 逆變運行溫升測試

 

表2 逆變運行溫升測試

6 結論

本文針對數(shù)字化UPS,給出了基于LF2407A 的系統(tǒng)總體設計結構,,實現(xiàn)了實時操作系統(tǒng)μC/OS-II在LF2407A 上的移植,對UPS系統(tǒng)任務進行設計和實現(xiàn)調度,給出了部分參數(shù)設定和主程序清單,。該設計方案已經成功應用于青島創(chuàng)統(tǒng)3.75KVA 數(shù)字化UPS 的設計項目中,。實踐證明,μC/OS-II 在嵌入式UPS 控制系統(tǒng)中的應用有效地提高了系統(tǒng)控制的實時性以及系統(tǒng)整體可靠性與穩(wěn)定性,。

此內容為AET網(wǎng)站原創(chuàng),,未經授權禁止轉載。