www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]本文介紹了抽油電機(jī)變頻器變結(jié)構(gòu)控制系統(tǒng)功能原理,如何利用uC/OS-II的多任務(wù)功能實(shí)現(xiàn)控制系統(tǒng)的算法結(jié)構(gòu)變換,操作系統(tǒng)的移植、多任務(wù)的建立和SDK下的軟件設(shè)計(jì),最后總結(jié)了

 

本文介紹了抽油電機(jī)變頻器變結(jié)構(gòu)控制系統(tǒng)功能原理,如何利用uC/OS-II的多任務(wù)功能實(shí)現(xiàn)控制系統(tǒng)的算法結(jié)構(gòu)變換,操作系統(tǒng)的移植、多任務(wù)的建立和SDK下的軟件設(shè)計(jì),最后總結(jié)了在應(yīng)用中需注意的問題。

在油田生產(chǎn)中為了節(jié)省電能并減小故障率,變頻器得到越來越多的應(yīng)用。但由于油井負(fù)載的非周期大脈動性質(zhì),從能量的流向來看,變頻器有兩種運(yùn)行狀態(tài)—電動運(yùn)行和回饋制動。不同運(yùn)行狀態(tài)的控制變量和控制方法是不同的,這就要采用所謂的變結(jié)構(gòu)控制。本應(yīng)用是實(shí)現(xiàn)抽油電機(jī)變頻驅(qū)動中的變結(jié)構(gòu)控制,不同的控制結(jié)構(gòu)通過任務(wù)間的切換實(shí)現(xiàn)。

系統(tǒng)控制核心采用DSP56F803,它是Motorola公司推出的16位DSP型微控制器,運(yùn)算速度可達(dá)40MIPS,片內(nèi)資源豐富,有強(qiáng)大的軟件支持,是嵌入式應(yīng)用的理想選擇。本系統(tǒng)應(yīng)用了其SPI、SCI、PWM、鍵盤中斷及通用I/O口等功能模塊。

1 系統(tǒng)設(shè)計(jì)

1.1 uC/OS-II的移植與配置

Motorola公司提供的軟件開發(fā)工具包SDK為使用uCC/OS-II做好了鋪墊工作,與硬件相關(guān)的文件OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C已經(jīng)給出,只需購得系統(tǒng)源代碼,然后將其考入指定的文件目錄,系統(tǒng)的移植就完成了。本文采用最新版本uCC/OS-II V2.51。

系統(tǒng)移植成功后,需要對操作系統(tǒng)進(jìn)行配置(裁剪),把用不到的功能去掉,以最大限度地節(jié)省存儲空間。這項(xiàng)工作是通過os_cfg.h中的宏定義進(jìn)行的,本文只用到了多任務(wù)管理、信號量、互斥量等功能。在本應(yīng)用中,uCC/OS-II內(nèi)核經(jīng)過剪裁后只有3KB左右,相對DSP56F803的32KB內(nèi)部程序Flash只用了不到十分之一。需注意的另一個關(guān)鍵設(shè)置是時鐘節(jié)拍中斷頻率OS_TICKS_PER_SEC,它是系統(tǒng)多任務(wù)運(yùn)行所依賴的時間基準(zhǔn),也決定了任務(wù)重復(fù)調(diào)用的最快頻率。這里缺省設(shè)為1000,要比文獻(xiàn)[3]中的推薦值高出一個數(shù)量級。但實(shí)際應(yīng)用表明,DSP56F803以其高運(yùn)算速度在這個設(shè)置下是完全勝任的。

1.2 系統(tǒng)功能

根據(jù)油田生產(chǎn)的要求,系統(tǒng)要實(shí)現(xiàn)以下功能:鍵盤輸入、參數(shù)顯示、三相電流采集、直流側(cè)電壓采集、溫度采集、變頻指令輸出以及保護(hù)等。系統(tǒng)對電流、電壓、溫度進(jìn)行周期性采樣,采樣值經(jīng)過數(shù)字信號處理,作為控制器的參數(shù),最后由控制算法得出控制量,經(jīng)PWM和D/A轉(zhuǎn)換器發(fā)送給變頻器,形成反饋閉環(huán)控制。系統(tǒng)運(yùn)行過程中實(shí)時顯示電流、溫度等參數(shù),并可以通過鍵盤對控制器進(jìn)行參數(shù)在線設(shè)定。另外,高溫、過流等保護(hù)功能必不可少。系統(tǒng)原理如圖1.控制器根據(jù)直流側(cè)電容C上電壓的大小來確定以哪一種控制結(jié)構(gòu)運(yùn)行。當(dāng)直流側(cè)電壓不超過設(shè)定值時,系統(tǒng)以電動狀態(tài)運(yùn)行。超過設(shè)定值時要以回饋制動方式運(yùn)行,要求兩種工作狀態(tài)要互鎖,切換要準(zhǔn)確、及時。

1.3 任務(wù)的創(chuàng)建及變結(jié)構(gòu)控制的實(shí)現(xiàn)

根據(jù)功能要求,本著盡量減少任務(wù)數(shù)以減輕CPU運(yùn)行負(fù)擔(dān)的原則,本文設(shè)計(jì)了AD采集、電動運(yùn)行、回饋制動和顯示四個任務(wù)。另外還設(shè)計(jì)了兩個中斷服務(wù)子程序:用PortA口的中斷功能實(shí)現(xiàn)8個鍵盤輸入,用外部中斷IrqA實(shí)現(xiàn)短路、過流、缺相保護(hù)功能。

每個任務(wù)都有自己的名稱、內(nèi)存空間和優(yōu)先級。不同的任務(wù)必須有不同的優(yōu)先級,它們可以是0~62之間的任意值,數(shù)值越小優(yōu)先級越高。優(yōu)先級的設(shè)置有不同的依據(jù),以本文為例,回饋運(yùn)行任務(wù)對時間要求最苛刻,如果不能及時啟動或過早結(jié)束都會對變頻器造成危害,所以其優(yōu)先級設(shè)為最高;AD采集任務(wù)運(yùn)行最頻繁,必須為其它任務(wù)提供可靠的參數(shù),優(yōu)先級設(shè)為次高;電動運(yùn)行任務(wù)是常規(guī)運(yùn)行狀態(tài),優(yōu)先級低于AD采集任務(wù);顯示任務(wù)只實(shí)現(xiàn)人機(jī)交互,顯示狀態(tài)和參數(shù)對控制器性能沒有直接影響,優(yōu)先級設(shè)為最低。uCC/OS-II要求為每個任務(wù)分配OS_STK類型的堆??臻g,并且它們占用的RAM存儲空間必須是連續(xù)的。

任務(wù)延時是指任務(wù)執(zhí)行完畢處于掛起等待狀態(tài)到下一次重新運(yùn)行之間的時間間隔,它的單位是時鐘中斷節(jié)拍。由于OS_TICKS_PER_SEC為1000,每一拍為1ms。每個任務(wù)的調(diào)用間隔不能小于一個節(jié)拍,它將影響模擬量的采樣頻率。各個任務(wù)的屬性定義如表1所示。

1.4 任務(wù)間的通信

各個任務(wù)是通過搶占CPU的使用權(quán)來運(yùn)行的,它們之間存在一定的邏輯關(guān)系,彼此互相聯(lián)系又互相制約。信號量、郵箱、消息隊(duì)列等功能為實(shí)現(xiàn)任務(wù)間通信提供了有力工具,它們的使用方法靈活多變,如用信號量設(shè)置事件標(biāo)志,喚醒任務(wù)、用郵箱在任務(wù)間傳遞參數(shù)、用消息隊(duì)列的循環(huán)尋址功能進(jìn)行模擬通道的數(shù)據(jù)采集等。本文設(shè)計(jì)了兩個信號量,在系統(tǒng)運(yùn)行開始后,任務(wù)TASK_AD檢測直流側(cè)電壓的大小。當(dāng)電壓未超過設(shè)定值時,發(fā)出信號DC_NORM喚醒任務(wù) Task_NORMAL;當(dāng)電壓高出設(shè)定值時,發(fā)出信號DC_OVER喚醒任務(wù)Task_FEBACK。雖然這兩個任務(wù)基于不同的控制結(jié)構(gòu),采用不同的算法,但都要使用PWM輸出和SPI通信口,所以在喚醒一個任務(wù)的同時必須讓另外一個任務(wù)掛起。這里引入了互斥型信號量T_MUTEX實(shí)現(xiàn)這個功能。得到 T_MUTEX信號的任務(wù)將獨(dú)自占有共享資源的使用權(quán),兩個任務(wù)不會因資源沖突而同時掛起,解決了任務(wù)間優(yōu)先級反轉(zhuǎn)問題,避免了系統(tǒng)功能失效。任務(wù)間邏輯關(guān)系如圖2所示。

操作系統(tǒng)為任務(wù)間通信提供了多種途徑,但最簡單有效的方法是共享全局變量。本文使用共享全局變量的方法實(shí)現(xiàn)了顯示任務(wù)與鍵盤中斷服務(wù)之間的通信,代碼如下:

鍵盤中斷:

static void KeyboardISR(void)

{

UWord16 cpu_sr;

OS_ENTER_CRITICAL(); //臨界區(qū)代碼保護(hù)

asm{

move X:$0FB7,A1//讀鍵盤中斷狀態(tài)表

move A1,state1 //將中斷狀態(tài)放入全局變量

};

OS_EXIT_CRITICAL(); //臨界區(qū)代碼保護(hù)結(jié)束

}

這里state1是全局變量,鍵盤中斷的工作僅僅是將PORTA口中斷狀態(tài)寄存器(IESR,地址$0FB8)讀入state1中。為防止其他任務(wù)在此期間對state1的修改,使用了臨界區(qū)代碼保護(hù)。

顯示任務(wù)的部分代碼:

switch(state1)

{case 1: //PTA_0對應(yīng)的鍵被按下

…… //相應(yīng)的服務(wù)程序,略

case 128: //PTA_7對應(yīng)的鍵被按下

break; }

asm{move $00,X:$0FB8}; //清鍵盤中斷狀態(tài), 以備下次中斷

顯示任務(wù)中采用多分支結(jié)構(gòu),根據(jù)statel=2n,(n=0,1,2,3,,4,5,6,7),不同的值代表不同的鍵被按下,程序進(jìn)行相應(yīng)的處理;最后將IESR寄存器清零。用同樣的方法,兩位之間互相組合可擴(kuò)展形成16個按鍵。這樣只用一個全局變量就完成了中斷與任務(wù)間的通信,程序用內(nèi)嵌匯編的C來寫,簡捷高效。

2 系統(tǒng)設(shè)計(jì)中需注意的問題

首先是存儲器分配問題。多任務(wù)、郵箱等功能的使用會增加RAM的額外開銷,在不擴(kuò)展外部RAM的情況下,可用的只有片內(nèi)2KB數(shù)據(jù)RAM和512字的程序RAM,資源相對有限,存儲空間的合理分配就顯得很重要。任務(wù)堆棧所占用的RAM空間要根據(jù)實(shí)際應(yīng)用來確定,必須考慮任務(wù)調(diào)用的嵌套情況、任務(wù)中函數(shù)為局部變量所分配的內(nèi)存數(shù)目。另外,它必須能保存DSP的所有22個寄存器和16個存儲器字。如果為任務(wù)分配的存儲空間富余過多則造成資源緊張,甚至?xí)騼?nèi)存溢出導(dǎo)致系統(tǒng)崩潰。解決方法是調(diào)用系統(tǒng)函數(shù)OSTaskStkChk(),它可以檢測每個任務(wù)運(yùn)行時使用的內(nèi)存大小,為合理分配內(nèi)存空間提供了依據(jù)。另外,可采用一些簡化方法節(jié)省RAM空間。例如SDK為AD采集的每個通道都定義一個結(jié)構(gòu)體,它包括三個元素:句柄、數(shù)值長度和采樣值;如果使用五路AD采集,就得定義五個結(jié)構(gòu)體。通常不進(jìn)行初始化,DSP內(nèi)核在運(yùn)行時將它們放入RAM空間,占用RAM較多。通常關(guān)心的只是采樣值一個元素,其他兩個只完成輔助功能。如果使用一個存放采樣值的變量代替這個結(jié)構(gòu)體,或直接采用匯編語言寫這段代碼,就可大幅度地節(jié)省RAM空間。本文的AD采集程序就是用匯編完成。

SDK沒有提供在DSP56F803下使用SPI函數(shù)的例程。

仿照在807中的成功應(yīng)用,筆者調(diào)用spiWrite()函數(shù),通過SPI驅(qū)動D/A轉(zhuǎn)換芯片。但在編譯連接時出現(xiàn)系統(tǒng)錯誤,數(shù)據(jù)類型unsigned short與const void不匹配,在const.c中將spiWrite做強(qiáng)制類型轉(zhuǎn)換(void*)(&spiWrite),解決了這一問題。

利用SDK與uC/OS-II相配合,充分發(fā)揮了DSP型控制器DSP56F803的功能,采用內(nèi)嵌匯編的C語言編程,大大提高了代碼的可讀性和可移植性,縮短了系統(tǒng)開發(fā)周期,成功實(shí)現(xiàn)了系統(tǒng)的變結(jié)構(gòu)控制功能,也體現(xiàn)了操作系統(tǒng)的多任務(wù)功能在實(shí)現(xiàn)多算法結(jié)構(gòu)上的優(yōu)越性。

0次

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

無論是在統(tǒng)治NLP屆的Transformer,還是最近視覺領(lǐng)域的新秀Vision Transformer,我們都能在模型中看到Transpose/Permute算子的身影,特別是在多頭注意力機(jī)制(Multi-Head A...

關(guān)鍵字: se rc os

在六個服務(wù)領(lǐng)域表現(xiàn)出顯著提升;從2021年的第7位躍居第2位 印度班加羅爾2022年4月11日 /美通社/ -- 下一代數(shù)字服務(wù)和咨詢領(lǐng)域的全球領(lǐng)軍者Infosys(印度國家證券交易所、孟買證券交易所和紐約證券交易所代...

關(guān)鍵字: Group os

(全球TMT2022年4月11日訊)下一代數(shù)字服務(wù)和咨詢領(lǐng)域的全球領(lǐng)軍者Infosys近期宣布,在Everest Group PEAK Matrix?2022年度 IT服務(wù)提供商獎中排名第二。在第六屆PEAK Matr...

關(guān)鍵字: Group os

香港2022年3月29日 /美通社/ -- 在傳統(tǒng)與創(chuàng)新的十字路口,一些人不僅記錄了歷史,而且潛心打造未來?;仡橳oshiba TV第一次屏幕閃爍的那一刻,創(chuàng)新便已深植于公司的“血液”,致力于真實(shí)...

關(guān)鍵字: os

北京2022年3月21日 /美通社/ -- 微美全息軟件有限公司(納斯達(dá)克: WIMI)(以下簡稱為“微美全息”或“公司”),一家全球領(lǐng)先的增強(qiáng)現(xiàn)實(shí)(“AR”)服務(wù)提供商,今天宣布宣布被納入Proshares Metav...

關(guān)鍵字: os

Infosys 元宇宙工坊(Infosys metaverse foundry)是 Infosys Living Labs 不可或缺的一部分,它正在推動企業(yè)的數(shù)字創(chuàng)新議程,以適應(yīng)新興的優(yōu)先事項(xiàng)和市場趨勢。 Infosys...

關(guān)鍵字: os

Chronos芯片將搭載于Ouster面向量產(chǎn)車推出的DF系列固態(tài)數(shù)字激光雷達(dá)上,提高其性能與功效...

關(guān)鍵字: 芯片 激光雷達(dá) os

(全球TMT2022年3月11日訊)2022年3月11日,高分辨率數(shù)字激光雷達(dá)供應(yīng)商Ouster發(fā)布最新Chronos 芯片,這是一款車規(guī)級、完全定制化的數(shù)字激光雷達(dá)接收芯片,將搭載于其DF系列固態(tài)激光雷達(dá)上。Chro...

關(guān)鍵字: 芯片 激光雷達(dá) os

上海2022年3月10日 /美通社/ -- 中國上海,2022年3月,柏中(Bossard)宣布推出Smart Vending Cloud幫助客戶解決MRO耗材管理問題,進(jìn)一步升級“智能工廠物流”服務(wù)。此舉也意味著柏中在...

關(guān)鍵字: 全自動 os

(全球TMT2022年2月22日訊)孚昇電子(Fusion Worldwide)收購了位于新加坡的大型電子元件測試公司Prosemi Mfg Pte Ltd。由于供應(yīng)鏈經(jīng)歷了歷史性的限制,導(dǎo)致周轉(zhuǎn)時間過長,此次收購將進(jìn)...

關(guān)鍵字: os se 電子元件
關(guān)閉