基于RTOS與DSPs的微機(jī)保護(hù)裝置
1 引言
本文引用地址:http://www.biyoush.com/article/150325.htm我國電力系統(tǒng)的微機(jī)型保護(hù)得到迅速發(fā)展,已在電力系統(tǒng)得到了廣泛應(yīng)用。從早期的8位機(jī),到現(xiàn)在16/32位機(jī),性能得到了提高,運(yùn)算能力也大大加強(qiáng)了。
微機(jī)保護(hù)的性能及其可靠性取決于軟、硬件,因此軟件的編寫和硬件的選擇是一項(xiàng)關(guān)鍵性的工作。我們在編寫軟件時(shí),通常先畫好流程圖,然后按著流程圖來編程,一般是一個(gè)無限循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)(子程序)完成相應(yīng)的操作(稱為后臺行為或任務(wù)級);用中斷來處理隨機(jī)事件(稱為前臺行為或中斷級)。程序流程如圖1所示。任務(wù)的響應(yīng)時(shí)間取決于后臺循環(huán)執(zhí)行的時(shí)間(在不同的狀態(tài)或運(yùn)行方式下,執(zhí)行時(shí)間不同),程序經(jīng)過某一點(diǎn)的時(shí)間不能確定,程序修改了,循環(huán)時(shí)序就受到影響。這種編程方法,使得程序開發(fā)周期長,修改困難,任何一處受到破壞,就會(huì)死機(jī)。在8位機(jī)時(shí)代,還不算明顯,隨著16/32位機(jī)的使用及系統(tǒng)復(fù)雜性的增加,表現(xiàn)的越來越明顯了。這種傳統(tǒng)的前臺/后臺程序開發(fā)機(jī)制已不能滿足日益復(fù)雜和多樣化的微機(jī)保護(hù)的應(yīng)用需求,采用RTOS來開發(fā)微機(jī)保護(hù)應(yīng)用程序,現(xiàn)已成為開發(fā)人員的發(fā)展方向。
目前運(yùn)行的微機(jī)保護(hù)裝置大多數(shù)為16位單片機(jī),對于常規(guī)的保護(hù)其性能基本能滿足。但16位單片機(jī)往往受到運(yùn)算速度等因素的影響,不易實(shí)現(xiàn)更復(fù)雜的算法和更高采樣速率。隨著微電子和半導(dǎo)體技術(shù)的發(fā)展,DSPs已運(yùn)用在了眾多領(lǐng)域。由于DSPs的強(qiáng)大數(shù)字信號處理能力,越來越受到開發(fā)人員的青睞。
2 關(guān)于RTOS(Real Time Operating System)實(shí)時(shí)操作系統(tǒng)
實(shí)時(shí)操作系統(tǒng)是一段在系統(tǒng)啟動(dòng)后,首先執(zhí)行的背景程序。用戶的應(yīng)用程序是運(yùn)行于RTOS之上的各個(gè)任務(wù),RTOS根據(jù)各個(gè)任務(wù)的要求,進(jìn)行資源管理、消息管理、任務(wù)調(diào)度,異常處理等工作。實(shí)時(shí)多任務(wù)內(nèi)核是RTOS的關(guān)鍵部分,基本功能包括任務(wù)管理、定時(shí)器管理、存儲管理、資源管理、事件管理、系統(tǒng)管理、消息管理等。RTOS與其它OS相比主要特征是規(guī)模小、可裁剪、微內(nèi)核。
在RTOS機(jī)制下開發(fā)多任務(wù)程序,CPU的運(yùn)行時(shí)間被劃分為許多小的時(shí)間片,RTOS按照某種調(diào)度算法分別分配給不同的任務(wù),多個(gè)任務(wù)分別在自己的時(shí)間片內(nèi)訪問CPU,達(dá)到微觀上輪流運(yùn)行,宏觀上并發(fā)運(yùn)行的多任務(wù)效果。程序流程如圖2所示。
任務(wù)是單線程序列指令形成的一個(gè)無限循環(huán),它有五種狀態(tài):休眠、就緒、運(yùn)行、等待和中斷。實(shí)時(shí)內(nèi)核是通過任務(wù)控制塊(TCB)來管理任務(wù)的。程序調(diào)用內(nèi)核服務(wù)創(chuàng)建任務(wù),并在任務(wù)中分配一個(gè)任務(wù)控制塊,進(jìn)行初始化,使任務(wù)進(jìn)入就緒狀態(tài)。實(shí)時(shí)內(nèi)核以事件為基礎(chǔ),根據(jù)任務(wù)執(zhí)行的狀態(tài),對任務(wù)進(jìn)行切換,狀態(tài)也隨之變化。在實(shí)時(shí)任務(wù)中,內(nèi)存中存在多個(gè)任務(wù)控制模塊,以及各個(gè)任務(wù)獨(dú)立的私有堆棧。
任務(wù)進(jìn)行切換,首先要保存CPU寄存器內(nèi)容到當(dāng)前任務(wù)的任務(wù)控制塊中,然后從新任務(wù)的任務(wù)控制塊裝載堆棧指針,并將新任務(wù)的上下文裝載到CPU寄存器中,這樣就從一個(gè)任務(wù)切換到另一個(gè)任務(wù)運(yùn)行。
評論