新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于μC/OS-II的數字化UPS設計與實現方案

        基于μC/OS-II的數字化UPS設計與實現方案

        作者: 時間:2012-10-16 來源:網絡 收藏

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

        3 μ在LF2407A上的移植

        μ的硬件和軟件體系結構如圖2所示。

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

        圖2 μ的硬件和軟件體系結構圖

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

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

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

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

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

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

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

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

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

        軟中斷函數的

        void SWI_Exception(int SWI_Num, int *Regs)

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

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

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

        5 實驗結果

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

        (1)市電輸入380V,負載變化:輸出相電壓穩定度220V±1%,U 相頻率穩定度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)逆變應急長時間工作,輸出電壓情況測試與系統穩定性驗證:電池513V開始放電,帶3.75KW爐絲額定負載,運行約80分鐘,IGBT及散熱器溫度始終低于32℃,系統工作正常且穩定,測試參數如表2所示。

        表2 逆變運行溫升測試

        表2 逆變運行溫升測試

        6 結論

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

        鎖相環相關文章:鎖相環原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 襄垣县| 桓仁| 肥东县| 寻乌县| 巍山| 城口县| 曲麻莱县| 大厂| 镇原县| 连州市| 平原县| 浮梁县| 溧水县| 门头沟区| 清水县| 宜城市| 建平县| 九龙县| 万全县| 巫山县| 宕昌县| 张家港市| 临江市| 深圳市| 山阳县| 壶关县| 甘南县| 德阳市| 雅江县| 台北县| 英吉沙县| 顺昌县| 林州市| 广元市| 达州市| 常德市| 三门峡市| 郓城县| 桓台县| 伊春市| 临泽县|