摘 要: 在傳統(tǒng)的電力系統(tǒng)諧波分析中,,多采用單任務(wù)無順序機(jī)制,,此機(jī)制使系統(tǒng)的安全性質(zhì)量得不到完全保證,, 常常出現(xiàn)安全性差的問題,。針對此問題,,引入具有強(qiáng)實(shí)時(shí)性和搶占式多任務(wù)的嵌入式操作系統(tǒng)μC/OS-II作為操作平臺、采用快速傅里葉變換(FFT)的諧波檢測方法,、通過μC/OS-II在NiosII上的移植可以使得系統(tǒng)的穩(wěn)定性和實(shí)時(shí)性有很大的改善,,從而使得諧波測量更加精確。
關(guān)鍵詞: μC/OS-II,;FFT,;NiosII;諧波分析
近年來,,隨著電力電子技術(shù)的快速發(fā)展,,各種電力電子裝置在電力系統(tǒng)、工業(yè),、交通及家庭中的應(yīng)用日益廣泛,,加之隨著高壓直流輸電技術(shù)的應(yīng)用和整流器、變頻調(diào)速器等大量非線性負(fù)載的使用,,使電網(wǎng)中產(chǎn)生了大量的高次諧波,,造成了電壓電流波形發(fā)生嚴(yán)重的畸變。當(dāng)電網(wǎng)中存在的諧波成分超過限制標(biāo)準(zhǔn)時(shí),,將嚴(yán)重影響電力系統(tǒng)和用電設(shè)備運(yùn)行的安全性,、可靠性、穩(wěn)定性和經(jīng)濟(jì)性,,同時(shí)也嚴(yán)重污染了周圍的電氣環(huán)境。而關(guān)于諧波的問題涉及許多方面,,其中諧波檢測是諧波問題的一個(gè)重要分支,,也是解決其他諧波問題的重要前提[1]。因此,,對于諧波分析裝置的研究對諧波污染的治理具有重要的意義,。
目前,在對電網(wǎng)的諧波進(jìn)行在線檢測和分析時(shí),,常采用采樣數(shù)字式分析裝置,,在其系統(tǒng)軟件設(shè)計(jì)中,多采用單任務(wù)無順序機(jī)制,。這種機(jī)制使系統(tǒng)的安全性得不到完全保證,,常常出現(xiàn)安全性差的問題[2]。而這個(gè)問題對于穩(wěn)定性,、實(shí)時(shí)性,、準(zhǔn)確性、快速性要求很高的諧波分析裝置來說是不允許的,。因此,,在系統(tǒng)設(shè)計(jì)中,,引入具有強(qiáng)實(shí)時(shí)性和搶占式多任務(wù)的嵌入式操作系統(tǒng)μC/OS-II作為操作平臺,可以使系統(tǒng)的穩(wěn)定性有很大的改善,,使應(yīng)用程序模塊化,,從而提高代碼的可讀性、可擴(kuò)展性和可移植性,,加快了程序開發(fā)的速度[3],。
本文分析了電力系統(tǒng)諧波測量要求以及μC/OS-II在NiosII上的移植來實(shí)現(xiàn)精確的諧波檢測。
1 系統(tǒng)設(shè)計(jì)
1.1 μC/OS-II實(shí)時(shí)操作系統(tǒng)簡介
μC/OS-II是基于優(yōu)先級的搶占式實(shí)時(shí)多任務(wù)內(nèi)核,,優(yōu)先級算法效率高,,任務(wù)切換速度快,其性能與其他商業(yè)內(nèi)核類似,,其特點(diǎn)與優(yōu)勢可以概括為以下幾個(gè)方面[4]:
(1)公開源代碼:源代碼清晰易讀且結(jié)構(gòu)協(xié)調(diào),,注解詳盡,組織有序,。
(2)可移植性:μC/OS-II源碼絕大部分是用移植性很強(qiáng)的ANSI C編寫的,,而與微處理器硬件相關(guān)部分則采用匯編語言編寫,并且壓到了最低限度,。只要該處理器有堆棧指針,,有CPU內(nèi)部寄存器入棧出棧指令就可以移植μC/OS-II。
(3)可裁剪:可以只使用μC/OS-II中應(yīng)用程序需要的那些系統(tǒng)服務(wù),。這種可裁剪性是靠條件編譯實(shí)現(xiàn)的,。
(4)占先式:μC/OS-II完全是占先式實(shí)時(shí)內(nèi)核,即總是運(yùn)行就緒條件下優(yōu)先級最高的任務(wù),。
(5)多任務(wù):可以管理64個(gè)任務(wù),,但系統(tǒng)保留了8個(gè)任務(wù),應(yīng)用程序最多可以有56個(gè)任務(wù),。賦予每個(gè)任務(wù)的優(yōu)先級必須是不相同的,。
(6)可確定性:全部μC/OS-II的函數(shù)調(diào)用和服務(wù)的執(zhí)行時(shí)間具有可確定性,即它們的執(zhí)行時(shí)間是可知的,,也就是說,,μC/OS-II系統(tǒng)服務(wù)的執(zhí)行時(shí)間不依賴于應(yīng)用程序任務(wù)的多少。
(7)任務(wù)棧:每個(gè)任務(wù)有自己單獨(dú)的棧,,μC/OS-II允許每個(gè)任務(wù)有不同的??臻g。
(8)系統(tǒng)服務(wù):μC/OS-II提供多種系統(tǒng)服務(wù),,如郵箱,、消息隊(duì)列、信號量,、塊大小固定的內(nèi)存的申請與釋放,、時(shí)間相關(guān)函數(shù)等,。
(9)中斷管理:中斷可使正在執(zhí)行的任務(wù)暫時(shí)掛起,中斷嵌套層數(shù)可達(dá)255層,。
(10)穩(wěn)定性與可靠性:μC/OS-II是基于μC/OS的,,μC/OS自1992年以來己有好幾百個(gè)商業(yè)應(yīng)用。
1.2 硬件平臺簡介
在本電力諧波分析系統(tǒng)中,,其中包括嵌入式微處理器(嵌入式軟核處理器NiosII),、FFT運(yùn)算單元和對采集數(shù)據(jù)進(jìn)行處理的信號處理電路,該信號處理電路包括信號獲取電路,、調(diào)理電路和采樣轉(zhuǎn)換電路,,其中:信號獲取電路包括精密電壓互感器和精密電流互感器,精密電壓電流互感器的輸入端用于接收采集的電壓電流信號,,輸出端接調(diào)理電路輸入端,,如圖1所示。
從現(xiàn)場取來的電壓和電流信號,,首先進(jìn)入精密電壓,、電流互感器組U1,電壓和電流信號經(jīng)其進(jìn)行降壓限流處理后進(jìn)入信號調(diào)理電路U2,;信號調(diào)理電路U2可由精密電阻和電位器配合高精度集成運(yùn)放AD574組成,,以完成對電壓信號的電平調(diào)整;經(jīng)過精密電壓,、電流互感器U1,、信號調(diào)理電路U2處理后,從現(xiàn)場取來的高壓,、大電流信號就轉(zhuǎn)換成適合后續(xù)電路處理的弱電信號,,接著該弱電信號進(jìn)入低通抗混疊濾波電路U3,低通抗混疊電路U3主要由低通抗混疊濾波器組成,,用于濾除高頻信號成分,使輸入到后級電路中的AD轉(zhuǎn)換器的信號為有限帶寬信號,,該電路U3是以很小的衰減讓有效的頻率信號通過,,而抑制這個(gè)頻帶以外的頻率信號,從而防止信號的頻譜發(fā)生混疊及高頻干擾,。在本系統(tǒng)中,,低通抗混疊濾波電路U3采用低通抗混疊濾波集成電路Max293低通濾波器,再由后級電路中AD轉(zhuǎn)換器本身各通道都具有內(nèi)置的抗混疊濾波器并采用∑-△以及過采樣技術(shù),,使得本系統(tǒng)具有良好的抗干擾能力和抗混疊性能,,保證了FFT運(yùn)算能夠得到準(zhǔn)確的結(jié)果。
1.3 μC/OS-II文件結(jié)構(gòu)與硬件平臺關(guān)系
μC/OS-II的內(nèi)核文件結(jié)構(gòu)與硬件平臺的關(guān)系如圖2所示,??梢钥闯?,μC/OS-II內(nèi)核介于硬件平臺和用戶應(yīng)用程序之間,通過與CPU相關(guān)的幾個(gè)模塊與硬件平臺進(jìn)行交互,,為用戶應(yīng)用程序提供良好的應(yīng)用程序接口(API)[5],。
操作系統(tǒng)把系統(tǒng)軟件和硬件部分隔離開來,這樣就使得系統(tǒng)的設(shè)備操作程序與硬件設(shè)備無關(guān),,從而大大提高了系統(tǒng)的可移植性,。而且軟硬件的測試工作都可分別基于操作系統(tǒng)來完成,使得軟硬件系統(tǒng)并行進(jìn)行測試成為可能,。
2 μC/OS-II內(nèi)核向NiosII的移植操作
所謂移植,,就是使一個(gè)實(shí)時(shí)內(nèi)核在某個(gè)微處理器或微控制器上運(yùn)行,為了方便移植,,μC/OS-II大部分的代碼用C語言寫,,但仍需要用匯編語言寫一些與處理器相關(guān)的代碼,這是因?yàn)?mu;C/OS-II在讀寫處理器寄存器時(shí)只能通過匯編語言來實(shí)現(xiàn),。
μC/OS-II可以看作是一個(gè)多任務(wù)的調(diào)度器,,在這個(gè)任務(wù)調(diào)度器上添加了和多任務(wù)操作系統(tǒng)相關(guān)的一些系統(tǒng)服務(wù)。μC/OS-II的設(shè)計(jì)分為與處理器類型無關(guān)的代碼,、與處理器類型相關(guān)的代碼和與應(yīng)用程序有關(guān)的配置代碼三部分,。這也是μC/OS-II具有良好的可移植性的原因。移植工作主要集中在多任務(wù)切換的實(shí)現(xiàn)上,。這部分代碼主要是用來保存和恢復(fù)處理器現(xiàn)場(即相關(guān)寄存器),,因此不能用C語言,只能使用特定處理器的匯編語言完成,。在NiosII上移植μC/OS-II只需修改三個(gè)和Nios體系結(jié)構(gòu)相關(guān)的文件即可[6,,7]。下面分別介紹這三個(gè)文件的移植工作,。
2.1 OS_CPU.H文件
這部分的移植是和所用的編譯器相關(guān)的,,本文使用的編譯器是nios-elf-gcc。需要定義的數(shù)據(jù)類型包括無符號和有符號的8 bit,、16 bit和32 bit整型變量等,。
因?yàn)樘幚砥鳜F(xiàn)場的寄存器在任務(wù)切換時(shí)都將被保存在當(dāng)前運(yùn)行任務(wù)的堆棧中,所以O(shè)S_STK數(shù)據(jù)類型應(yīng)該與處理器的寄存器長度一致,。
typedef unsigned int OS_STK,;
堆棧由高地址向低地址增長,這和選擇的編譯器有關(guān),。
#define OS_STK_GROWTH 1
宏定義(包括開,、關(guān)中斷的宏定義,以及進(jìn)行任務(wù)切換的宏定義):
#define OS_ENTER_CRITICAL()disable_interrupt(),;
#define OS_EXIT_CRITICAL()enable_interrupt(),;
#define OS_TASK_SW()OSCtxSw
2.2 OS_CPU_C.C文件
該文件必須實(shí)現(xiàn)任務(wù)初始化時(shí)的堆棧設(shè)計(jì),,也就是在堆棧增長方向上如何定義每個(gè)需要保存的寄存器的位置。本文將堆??臻g設(shè)計(jì)為按任務(wù)堆??臻g由高至低依次保存寄存器ra、ISTATUS,、r1~r31,。
該文件還需要實(shí)現(xiàn)幾個(gè)操作系統(tǒng)規(guī)定的hook函數(shù),通常都實(shí)現(xiàn)為空函數(shù),。
2.3 OS_CPU A.ASM文件
(1)OSStartHighRdy()函數(shù)
此函數(shù)是在OSStart()多任務(wù)啟動(dòng)后,,負(fù)責(zé)從最高優(yōu)先級任務(wù)的TCB控制塊中獲得該任務(wù)的堆棧指針sp,通過sp依次將CPU現(xiàn)場恢復(fù),。這時(shí)系統(tǒng)就將控制權(quán)交給用戶創(chuàng)建的該任務(wù)進(jìn)程,,直到該任務(wù)被阻塞或者被其他更高優(yōu)先級的任務(wù)搶占CPU。該函數(shù)僅僅在多任務(wù)啟動(dòng)時(shí)被執(zhí)行一次,,用來啟動(dòng)優(yōu)先級最高的任務(wù)執(zhí)行,,以后多任務(wù)的調(diào)度和切換就由下面的函數(shù)來實(shí)現(xiàn)。
(2)OSCtxSw()函數(shù)
任務(wù)級的上下文切換,。它是當(dāng)任務(wù)因被阻塞而主動(dòng)請求CPU調(diào)度時(shí)被執(zhí)行的,。它的工作是先將當(dāng)前任務(wù)的CPU現(xiàn)場保存到該任務(wù)堆棧中,然后獲得最高優(yōu)先級任務(wù)的堆棧指針,,從該堆棧中恢復(fù)此任務(wù)的CPU現(xiàn)場,,使之繼續(xù)執(zhí)行。
(3)OSIntCtxSw()函數(shù)中斷級的任務(wù)切換,,它是在ISR(中斷服務(wù)例程)中執(zhí)行任務(wù)切換,。當(dāng)發(fā)現(xiàn)有高優(yōu)先級任務(wù)就緒,則在中斷退出后并不返回被中斷的任務(wù),,而是直接調(diào)度就緒的最高優(yōu)先級任務(wù)執(zhí)行,。這樣做的目的是能夠盡快地讓高優(yōu)先級的任務(wù)得到響應(yīng),保證系統(tǒng)的實(shí)時(shí)性,。其原理基本上與任務(wù)級的切換相同,,但是由于進(jìn)入中斷時(shí)已經(jīng)保存過被中斷任務(wù)的CPU現(xiàn)場,因此這里就不用再保存,。
(4)OSTickISR()函數(shù)
時(shí)鐘中斷處理函數(shù)。它的主要任務(wù)是負(fù)責(zé)處理時(shí)鐘中斷,,調(diào)用系統(tǒng)實(shí)現(xiàn)的OSTimeTick函數(shù),,如果有等待時(shí)鐘信號的高優(yōu)先級任務(wù),則需要在中斷級別上調(diào)度其執(zhí)行,。
(5)OS_ENTER_CRITICAL和OS_EXIT_CRITICAL()函數(shù)
該函數(shù)分別是進(jìn)入臨界區(qū)和退出臨界區(qū)的宏指令,。主要用于在進(jìn)入臨界區(qū)之前關(guān)中斷,,在退出臨界區(qū)的時(shí)候恢復(fù)原來的中斷狀態(tài)。
本文將實(shí)時(shí)嵌入式操作系統(tǒng)μC/OS-II作為操作平臺,,實(shí)現(xiàn)在NiosII上的移植,,用于在電力系統(tǒng)諧波分析中的精確檢測。該電力諧波分析儀不但可以對電網(wǎng)進(jìn)行實(shí)時(shí)在線諧波分析,,而且可以對數(shù)據(jù)進(jìn)行遠(yuǎn)傳,,具有精度高、運(yùn)行穩(wěn)定,、實(shí)時(shí)性好,、抗干擾能力強(qiáng)、性價(jià)比高等特點(diǎn),,特別是它具有高穩(wěn)定性和強(qiáng)實(shí)時(shí)性,,為解決電力諧波問題提供了一種有效的分析裝置。
參考文獻(xiàn)
[1] 肖雁鴻,,毛筱,,周靖林,等.電力系統(tǒng)諧波測量方法綜述[J].電網(wǎng)技術(shù),,2002,,26(6):61-64.
[2] 吳茂存.基于FPGA的電力系統(tǒng)諧波檢測[D].濟(jì)南:山東科技大學(xué),2002.
[3] 潘松.SOPC技術(shù)實(shí)用教程[M].西安:西安電子科技大學(xué)出版社,,2006:220-222.
[4] 王建校,,危建國.SOPC設(shè)計(jì)基礎(chǔ)與實(shí)踐[M].北京:中國標(biāo)準(zhǔn)出版社,1993:2-13.
[5] 黃燕平.μC/OS-II ARM移植要點(diǎn)詳解[M].北京:北京航空航天大學(xué)出版社,,2005:9-18.
[6] 陳桂.μC/OS-II的內(nèi)核結(jié)構(gòu)及系統(tǒng)研究[D].重慶:重慶大學(xué),,2005.
[7] 孫愷.NiosII系統(tǒng)開發(fā)設(shè)計(jì)與應(yīng)用實(shí)例[M].北京:北京航空航天大學(xué)出版社,2007:259-262.