0. 引言
斷路器的智能操作是斷路器智能化發(fā)展過程中的一個全新的概念。智能控制器是實現(xiàn)智能操作的核心部件[1],其基本任務是通過對電網(wǎng)參數(shù)的采集和處理,給出相應的控制信息。此外,智能控制器通過現(xiàn)場總線可以和計算機連接,進行遠程監(jiān)控管理。智能控制器的核心部分是軟件設計。目前,我國的大多數(shù)控制器的軟件設計都是采用主循環(huán)程序和中斷服務程序相配合的設計方法。而近年來嵌入式系統(tǒng)的使用越來越成熟,其中us/OS-II嵌入式操作系統(tǒng)由于源代碼公開化,內(nèi)核體積小,可移植性好等原因,受到廣泛的應用。本文采用了TI公司的DSP芯片TMS320LF2407A作為嵌入式系統(tǒng)硬件,將us/OS-II嵌入式操作系統(tǒng)移植到DSP芯片中,提高了系統(tǒng)的運行效率和可靠性。
1. us/OS-II嵌入式操作系統(tǒng)
嵌入式系統(tǒng)是執(zhí)行專用功能并被內(nèi)部計算機控制的設備或系統(tǒng),操作系統(tǒng)以及應用軟件集成于計算機硬件系統(tǒng)之中,即系統(tǒng)的應用軟件和系統(tǒng)的硬件一體化,嵌入式系統(tǒng)具有軟件代碼少,高度自動化,響應速度快等特點,特別是適合于要求實時和多任務處理的情況。
us/OS-II嵌入式操作系統(tǒng)是一個完整的、源代碼公開的、可移植的、固化的、可裁剪的占先式實時多任務內(nèi)核,它是一種不可剝奪型內(nèi)核,所以在任務調(diào)度是必須先設定任務的優(yōu)先級。us/OS-II包括以下幾個部分:內(nèi)核管理、任務管理、時間管理、事件控制塊、信號量管理、郵箱管理等。
us/OS-II中創(chuàng)建的任務有5種狀態(tài)[2],分別是:睡眠態(tài)、等待態(tài)、就緒態(tài)、運行態(tài)、中斷服務態(tài)。us/OS-II是占先式內(nèi)核,每個任務都要設置優(yōu)先級,優(yōu)先級最高的任務可以先進入CPU運行,其它任務只能先在就緒狀態(tài)中等待。us/OS-II最多可以創(chuàng)建多達64個任務(實際可以使用的是56個,因為前4個和后4個任務優(yōu)先級被保留做系統(tǒng)升級用)。
2. 嵌入式系統(tǒng)的硬件設計
2.1 智能控制器總體結(jié)構(gòu)及工作原理
智能控制器硬件系統(tǒng)的總體結(jié)構(gòu)如圖1所示。該控制器的主要任務是采集電網(wǎng)上的電流和電壓信號,經(jīng)過信號處理電路的調(diào)理后,使信號變換成DSP的輸入標準電壓0到3.3V,DSP控制器通過對采集來的信號進行分析,正確的發(fā)出動作指令,并通過CAN總線向監(jiān)控計算機發(fā)送相關數(shù)據(jù),實現(xiàn)遠程監(jiān)控管理。系統(tǒng)構(gòu)成主要包括DSP及其外圍電路所構(gòu)成的最小系統(tǒng)、A/D信號采集與處理電路,液晶顯示電路,電源,脫扣電路等部分。DSP的外圍電路包括晶振、濾波回路和片外RAM連接選擇存儲空間時使用的一些門電路。
2.2 TMS320LF2407A芯片及其開發(fā)環(huán)境CCS2.2簡介
TMS320LF2407A是專為基于控制的應用而設計的,它將高性能的DSP內(nèi)核和豐富的微控制器的外設集成于單片中,從而成為傳統(tǒng)的微控制器的理想替代。TMS320LF2407A DSP控制器的外設包括[3]:①事件管理器②CAN接口③A/D通道模數(shù)轉(zhuǎn)換④SPI串行外設接口⑤SCI串行通信接口⑥通用雙向I/O引腳。CCS2.2是CCS系列中的最新版本,有很多既方便又強大的功能。主要包括:①支持同時載入多個工程文件②增加了單步調(diào)試命令③編譯器有所加強,對語法的檢查更加嚴格④通過建立庫工程,支持編譯函數(shù)文件成為庫文件
3. 嵌入式系統(tǒng)的軟件設計
3.1 us/OS-II在2407上的移植
us/OS-II在2407上的實現(xiàn)移植是嵌入式系統(tǒng)軟件設計的關鍵所在,主要工作是對移植相關的OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C三個文件的編寫以及對OS_CFG.H配置的正確設定。
在對OS_CFG.H配置中根據(jù)嵌入式實時系統(tǒng)的實際需要,對最低優(yōu)先級OS_LOWEST_PRIO、最多任務控制塊OS_MAX_EVENTS、最多任務數(shù)OS_MAX_TASKS進行設置,對需要使用的功能進行選擇置位。[!--empirenews.page--]
對OS_CPU.H文件的編寫主要包括對以下4個宏進行設置:
?、?OS_ENTER_CRITICAL()
?、?OS_EXIT_ CRITICAL()
?、?OS_STK_GROWTH
?、?OS_TASK_SW()
其中,OS_ENTER_CRITICAL()和OS_EXIT_ CRITICAL()是關于關中斷和開中斷的設置,由于在TMS320LF2407A中C編譯器可以嵌入?yún)R編語言,所以本文設置:
#define OS_ENTER_CRITICAL() asm(" SETC INTM") //關中斷
#define OS_EXIT_CRITICAL() asm(" CLRC INTM") //開中斷
OS_STK_GROWTH是關于堆棧的使用方式,由于TMS320LF2407A中堆棧是從低地址向高地址遞增的,所以本文設置:
#define OS_STK_GROWTH 0
OS_TASK_SW()是在任務切換中使用的,任務切換其實就是將原來任務的相關寄存器值入棧保存,以便以后這個任務被再次調(diào)用時可以恢復原先的相關寄存器值。本文設置OS_TASK_SW()作為中斷調(diào)用軟中斷指令OSCtxSw。
對OS_CPU_C.C文件的編寫包括編寫以下10個C語言函數(shù):
?、?OSTaskStkInit()② OSTaskCreatHook()③ OSTaskDelHook()④ OSTaskSwHook()
?、?OSTaskIdleHook()⑥ OSTaskStatHook()⑦ OSTimeTickHook()⑧ OSIintHookBegin()
?、?OSInitHookEnd()⑩ OSTCBInitHook()
在本文的實時嵌入式系統(tǒng)設計中,只對OSTaskStkInit()函數(shù)進行了編寫,OSTaskStkInit()函數(shù)的作用是初始化任務的棧結(jié)構(gòu),將任務所有寄存器的值都保存到堆棧中。OSTaskStkInit()函數(shù)的示意性代碼如下所示。
OS_STK *OSTaskStkInit(void (*task)(void *pd),
void *pdata,
OS_STK *ptos,
INT16U opt)
?。?/p>
opt = opt;
?。猵tos++ = (OS_STK)pdata; /* augument */
?。猵tos++ = (OS_STK)0; /* blank */
*ptos++ = (OS_STK)0x27FC;/* ST1 */
?。猵tos++ = (OS_STK)0x2600;/* ST0 */
*ptos++ = (OS_STK)0; /* ACCH */
?。猵tos++ = (OS_STK)0; /* ACCL */
*ptos++ = (OS_STK)0; /* PH */
*ptos++ = (OS_STK)0; /* PL */
?。猵tos++ = (OS_STK)0; /* T */
?。猵tos++ = (OS_STK)0; /* AR0 */
?。猵tos++ = (OS_STK)0; /* AR2 */
?。猵tos++ = (OS_STK)0; /* AR3 */
?。猵tos++ = (OS_STK)0; /* AR4 */
*ptos++ = (OS_STK)0; /* AR5 */[!--empirenews.page--]
?。猵tos++ = (OS_STK)0; /* AR6 */
?。猵tos++ = (OS_STK)0; /* AR7 */
… … …
return ptos;
}
其余9個C語言函數(shù)只進行了聲明,沒有包含代碼或者為了防止C編譯器誤發(fā)警告只編寫了簡單的指針自我賦值程序。
對OS_CPU_A.ASM文件的編寫包括編寫以下4個匯編語言函數(shù):
?、?OSStartHighRdy()② OSCtxSw()③ OSIntCtxSw()④ OSTickISR()
其中,調(diào)用OSStartHighRdy()是用來使就緒態(tài)任務中優(yōu)先級最高的任務開始運行。OSCtxSw()是用來實現(xiàn)任務切換,中斷服務子程序、陷阱或異常處理的向量地址必須指向OSCtxSw()。OSIntCtxSw()也是用來實現(xiàn)任務切換的,所不同的是OSIntCtxSw()是在中斷服務程序中實現(xiàn)任務切換。OSTickISR()是用來實現(xiàn)時鐘節(jié)拍功能。
將以上這些函數(shù)編寫好以后,如果能編譯通過并且裝載入2407或外部RAM中,則說明us/OS-II在2407上移植成功。移植成功以后就要進行測試,可以編寫例如點亮指示燈這樣的小程序作為任務,裝載入DSP運行,如果運行成功,就在此程序基礎上進行嵌入式系統(tǒng)的軟件開發(fā)。
3.2 智能控制器軟件設計
本文在進行軟件設計時根據(jù)需要,編寫了以下幾個功能程序,主要包括液晶顯示程序、A/D采樣轉(zhuǎn)換程序、保護算法、瞬動判斷保護程序、濾波算法及有效值計算、CAN通信的發(fā)送和接受等[4]。在各個功能程序編寫好以后,創(chuàng)建多個任務,每個任務包含一個功能程序。對各個任務要根據(jù)不同的實際情況賦予不同的優(yōu)先級,其中A/D采樣轉(zhuǎn)換和瞬動判斷保護由于對實時性的要求比較高,應賦予較高的優(yōu)先權(quán),液晶顯示由于為了人們讀取的視覺需要,延時時間比較長,賦予的優(yōu)先權(quán)最低。任務優(yōu)先級的安排如下:
A/D采樣轉(zhuǎn)換程序 > 瞬動判斷保護程序 > 濾波算法及有效值計算 > 保護算法> CAN通信的發(fā)送和接受 > 液晶顯示
任務通過函數(shù)OSTaskCreateExt()來創(chuàng)建,創(chuàng)建一個任務的示例代碼如下:
//創(chuàng)建任務:
INT8U OSTaskCreate (void (*task) (void *pd), void *pdata, OS_STK *ptos, INT8U prio)
其中task是指向任務代碼的指針;pdata是任務開始執(zhí)行時,傳遞給任務的參數(shù)指針;ptos是分配給任務的堆棧的棧頂指針;prio是分配給任務的優(yōu)先級。
//任務示例代碼:
void Task (void *pdata)
{ While (1)
?。?***根據(jù)實際功能編寫的代碼**/
OSTimeDly(INT16U ticks); //任務延時
?。?/p>
?。?/p>
當任務被剝奪CPU的使用后,us/OS-II用任務控制塊OS_TCB來保存該任務的狀態(tài)。
4. 實驗
本文設計的實驗樣機首先在實驗室進行調(diào)試,然后再到企業(yè)試驗站進行現(xiàn)場調(diào)試。主要試驗項目包括液晶顯示、測量、保護特性測試、上位機和控制器之間的CAN總線通信等。試驗結(jié)果表明:本文設計的智能控制器實現(xiàn)了測量、保護、通信和監(jiān)控等功能,實時性好,指標達到預期要求。
5. 結(jié)束語
本文為了實現(xiàn)低壓斷路器的可通信與智能化,研制了一種基于DSP和嵌入式實時操作系統(tǒng)us/OS-II的新型智能控制器,不僅實現(xiàn)了斷路器的基本功能,而且由于采用了us/OS-II嵌入式實時操作系統(tǒng),提高了DSP的運行效率和控制器的可靠性。
Lua RTOS 是一個實時操作系統(tǒng),設計在嵌入式系統(tǒng)上運行,對 FLASH 和 RAM 內(nèi)存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平臺,并可以輕松移植到其他32位...
關鍵字: Lua RTOS 操作系統(tǒng) 嵌入式系統(tǒng)今天下午,一則重磅消息。路透社報道,谷歌一直被詬病壟斷的操作系統(tǒng):安卓,或?qū)⑹召M。
關鍵字: 谷歌 操作系統(tǒng) 安卓亞當?格羅塞爾(Adam Grosser)希望讓人員、貨物和能源的運輸對每個人來說更快速、更高效。因此,早期風險投資基金UP Partners的這位董事長兼合伙人正在對多個交通運輸項目進行投資。這些項目包括貝塔科技公司的...
關鍵字: 貨物 能源 操作系統(tǒng)北京2022年10月8日 /美通社/ -- 日前,全球領先的IT基礎設施提供商浪潮信息加入龍蜥社區(qū)并成為理事單位,致力于攜手社區(qū)生態(tài)伙伴,共同推動開源操作系統(tǒng)的全產(chǎn)業(yè)鏈協(xié)同創(chuàng)新和產(chǎn)業(yè)化應用。 龍蜥社區(qū)成立于2020...
關鍵字: 開源 操作系統(tǒng) 通信 大數(shù)據(jù)(全球TMT2022年10月8日訊)IT基礎設施提供商浪潮信息加入龍蜥社區(qū)并成為理事單位,致力于攜手社區(qū)生態(tài)伙伴,共同推動開源操作系統(tǒng)的全產(chǎn)業(yè)鏈協(xié)同創(chuàng)新和產(chǎn)業(yè)化應用。 龍蜥社區(qū)成立于2020年9月,是國內(nèi)...
關鍵字: 操作系統(tǒng) 開源 通信 裝機量