摘要:介紹了抽油電機變頻器變結構控制系統(tǒng)功能原理,如何利用μC/OS-II的多任務功能實現(xiàn)控制系統(tǒng)的算法結構變換,操作系統(tǒng)的移植、多任務的建立和SDK下的軟件設計;最后總結了在應用中需注意的問題。
在油田生產(chǎn)中為了節(jié)省電能并減小故障率,變頻器得到越來越多的應用。但由于油井負載的非周期大脈動性質,從能量的流向來看,變頻器有兩種運行狀態(tài)——電動運行和回饋制動。不同運行狀態(tài)的控制變量和控制方法是不同的,這就要采用所謂的變結構控制。本應用是實現(xiàn)抽油電機變頻驅動中的變結構控制,不同的控制結構通過任務間的切換實現(xiàn)。
系統(tǒng)控制核心采用DSP56F803,它是Motorola公司推出的16位DSP型微控制器,運算速度可達40MIPS,片內(nèi)資源豐富,有強大的軟件支持,是嵌入式應用的理想選擇。本系統(tǒng)應用了其SPI、SCI、PWM、鍵盤中斷及通用I/O口等功能模塊。
1 系統(tǒng)設計
1.1 μC/OS-Ⅱ的移植與配置
Motorola公司提供的軟件開發(fā)工具包SDK為使用μC/OS-Ⅱ做好了鋪墊工作,與硬件相關的文件OS_CPU.H、OS_CPU_A.SM和OS_CPU_C.C已經(jīng)給出,只需購得系統(tǒng)源代碼,然后將其考入指定的文件目錄,系統(tǒng)的移植就完成了。本文采用最新版本μC/OS-ⅡV2.51。
系統(tǒng)移植成功后,需要對操作系統(tǒng)進行配置(裁剪),把用不到的功能去掉,以最大限度地節(jié)省存儲空間。這項工作是通過os_cfg.h中的宏定義進行的,本文只用到了多任務管理、信號量、互斥量等功能。在本應用中,μC/OS-Ⅱ內(nèi)核經(jīng)過剪裁后只有3KB左右,相對DSP56F803的32KB內(nèi)部程序Flash只用了不到十分之一。需注意的另一個關鍵設置是時鐘節(jié)拍中斷頻率Os_TICKS_PER_SEC,它是系統(tǒng)多任務運行所依賴的時間基準,也決定了任務重復調(diào)用的最快頻率。這里缺省設為1000,要比文獻[3]中的推薦值高出一個數(shù)量級。但實際應用表明,DSP56F803以其高運算速度在這個設置下是完全勝任的。
1.2 系統(tǒng)功能
根據(jù)油田生產(chǎn)的要求,系統(tǒng)要實現(xiàn)以下功能:鍵盤輸入、參數(shù)顯示、三相電流采集、直流側電壓采集、溫度采集、變頻指令輸出以及保護等。系統(tǒng)對電流、電壓、溫度進行周期性采樣,采樣值經(jīng)過數(shù)字信號處理,作為控制器的參數(shù),最后由控制算法得出控制量,經(jīng)PWM和D/A轉換器發(fā)送給變頻器,形成反饋閉環(huán)控制。系統(tǒng)運行過程中實時顯示電流、溫度等參數(shù),并可以通過鍵盤對控制器進行參數(shù)在線設定。另外,高溫、過流等保護功能必不可少。系統(tǒng)原理如圖1。控制器根據(jù)直流側電容C上電壓的大小來確定以哪一種控制結構運行。當直流側電壓不超過設定值時,系統(tǒng)以電動狀態(tài)運行。超過設定值時要以回饋制動方式運行,要求兩種工作狀態(tài)要互鎖,切換要準確、及時。
1.3 任務的創(chuàng)建及變結構控制的實現(xiàn)
根據(jù)功能要求,本著盡量減少任務數(shù)以減輕CPU運行負擔的原則,本文設計了AD采集、電動運行、回饋制動和顯示四個任務。另外還設計了兩個中斷服務子程序:用PortA口的中斷功能實現(xiàn)8個鍵盤輸入,用外部中斷IrqA實現(xiàn)短路、過流、缺相保護功能。
每個任務都有自己的名稱、內(nèi)存空間和優(yōu)先級。不同的任務必須有不同的優(yōu)先級,它們可以是0~62之間的任意值,數(shù)值越小優(yōu)先級越高。優(yōu)先級的設置有不同的依據(jù),以本文為例,回饋運行任務對時間要求最苛刻,如果不能及時啟動或過早結束都會對變頻器造成危害,所以其優(yōu)先級設為最高;AD采集任務運行最頻繁,必須為其它任務提供可靠的參數(shù),優(yōu)先級設為次高;電動運行任務是常規(guī)運行狀態(tài),優(yōu)先級低于AD采集任務;顯示任務只實現(xiàn)人機交互,顯示狀態(tài)和參數(shù)對控制器性能沒有直接影響,優(yōu)先級設為最低。μC/OS-Ⅱ要求為每個任務分配OS_STK類型的堆??臻g,并且它們占用的RAM存儲空間必須是連續(xù)的。
任務延時是指任務執(zhí)行完畢處于掛起等待狀態(tài)到下一次重新運行之間的時間間隔,它的單位是時鐘中斷節(jié)拍。由于OS_TICKS_PER_SEC為1000,每一拍為lms。每個任務的調(diào)用間隔不能小于一個節(jié)拍,它將影響模擬量的采樣頻率。
各個任務的屬性定義如表1所示。
表1 各個任務的屬性定義
| 任務名稱 | 優(yōu)先級 | 內(nèi)存空間(字) | 延時(節(jié)拍) | 任務功能 |
| Task_FEBACK | 12 | 80 | 1 | 回饋運行 |
| Task_AD | 13 | 120 | 1 | AD采集 |
| Task_NORAML | 14 | 80 | 2 | 電動運行 |
| Task_SHOW | 15 | 100 | 5 | 實時顯示 |
1.4 任務間的通信
各個任務是通過搶占CPU的使用權來運行的,它們之間存在一定的邏輯關系,彼此互相聯(lián)系又互相制約。信號量、郵箱、消息隊列等功能為實現(xiàn)任務間通信提供了有力工具,它們的使用方法靈活多變,如用信號量設置事件標志,喚醒任務、用郵箱在任務間傳遞參數(shù)、用消息隊列的循環(huán)尋址功能進行模擬通道的數(shù)據(jù)采集等。本文設計了兩個信號量,在系統(tǒng)運行開始后,任務TASK_AD檢測直流側電壓的大小。當電壓未超過設定值時,發(fā)出信號DC_NORM喚醒任務Task_NORMAL;當電壓高出設定值時,發(fā)出信號DC_OVER喚醒任務Task_FEBACK。雖然這兩個任務基于不同的控制結構,采用不同的算法,但都要使用PWM輸出和SPI通信口,所以在喚醒一個任務的同時必須讓另外一個任務掛起。這里引入了互斥型信號量T_MUTEX實現(xiàn)這個功能。得到T_MUTEX信號的任務將獨自占有共享資源的使用權,兩個任務不會因資源沖突而同時掛起,解決了任務間優(yōu)先級反轉問題,避免了系統(tǒng)功能失效。任務間邏輯關系如圖2所示。
操作系統(tǒng)為任務間通信提供了多種途徑,但最簡單有效的方法是共享全局變量。本文使用共享全局變量的方法實現(xiàn)了顯示任務與鍵盤中斷服務之間的通信,代碼如下:
鍵盤中斷:
static void KeyboardISR(void)
{
UWoMl6 cpu_sr;
OS_ENTER_CRITICAL();//臨界區(qū)代碼保護
asm{
move X:$0FB7,A1 //讀鍵盤中斷狀態(tài)表
move A1,state1 //將中斷狀態(tài)放入全局變量
};
OS_EXIT_CRITICAL(); //臨界區(qū)代碼保護結束
}
這里statel是全局變量,鍵盤中斷的工作僅僅是將PORTA口中斷狀態(tài)寄存器(IESR,地址$0FB8) 讀入statel中。為防止其他任務在此期間對statel的修改,使用了臨界區(qū)代碼保護。
顯示任務的部分代碼:
switch(statel)
{case 1: //PTA_0對應的鍵被按下
…… //相應的服務程序,略
case 128: //PTA_7對應的鍵被按下
break;}
asm{move$00,X:$OFB8}; //清鍵盤中斷狀態(tài),以備下次中斷
顯示任務中采用多分支結構,
根據(jù)statel=2n,(n=0,1,2,3,,4,5,6,7),不同的值代表不同的鍵被按下,程序進行相應的處理;最后將IESR寄存器清零。用同樣的方法,兩位之間互相組合可擴展形成16個按鍵。這樣只用一個全局變量就完成了中斷與任務間的通信,程序用內(nèi)嵌匯編的C來寫,簡捷高效。
2 系統(tǒng)設計中需注意的問題
首先是存儲器分配問題。多任務、郵箱等功能的使用會增加RAM的額外開銷,在不擴展外部RAM的情況下,可用的只有片內(nèi)2KB數(shù)據(jù)RAM和512字的程序RAM,資源相對有限,存儲空間的合理分配就顯得很重要。任務堆棧所占用的RAM空間要根據(jù)實際應用來確定,必須考慮任務調(diào)用的嵌套情況、任務中函數(shù)為局部變量所分配的內(nèi)存數(shù)目。另外,它必須能保存DSR的所有22個寄存器和16個存儲器字。如果為任務分配的存儲空間富余過多則造成資源緊張,甚至會因內(nèi)存溢出導致系統(tǒng)崩潰。解決方法是調(diào)用系統(tǒng)函數(shù)OSTaskStkChk(),它可以檢測每個任務運行時使用的內(nèi)存大小,為合理分配內(nèi)存空間提供了依據(jù)。另外,可采用一些簡化方法節(jié)省RAM空間。例如SDK為AD采集的每個通道都定義一個結構體,它包括三個元素:句柄、數(shù)值長度和采樣值;如果使用五路AD采集,就得定義五個結構體。通常不進行初始化,DSP內(nèi)核在運行時將它們放入RAM空間,占用RAM較多。通常關心的只是采樣值一個元素,其他兩個只完成輔助功能。如果使用一個存放采樣值的變量代替這個結構體,或直接采用匯編語言寫這段代碼,就可大幅度地節(jié)省RAM空間。本文的AD采集程序就是用匯編完成。
SDK沒有提供在DSP56F803下使用SPI函數(shù)的例程。仿照在807中的成功應用,筆者調(diào)用spiWfite()函數(shù),通過SPI驅動D/A轉換芯片。但在編譯連接時出現(xiàn)系統(tǒng)錯誤,數(shù)據(jù)類型unsigned short與const void不匹配,在const.c中將spiWrite做強制類型轉換(void*)(&spiWrite),解決了這一問題。
利用SDK與μC/OS-Ⅱ相配合,充分發(fā)揮了DSP型控制器DSP56F803的功能,采用內(nèi)嵌匯編的C語言編程,大大提高了代碼的可讀性和可移植性,絡短了系統(tǒng)開發(fā)周期,成功實現(xiàn)了系統(tǒng)的變結構控制功能,也體現(xiàn)了操作系統(tǒng)的多任務功能在實現(xiàn)多算法結構上的優(yōu)越性。
- 系統(tǒng)設計(22755)
什么是變頻器?變頻器能實現(xiàn)哪些控制功能?
4584
用了變頻器就節(jié)能了嗎?變頻器節(jié)能終極優(yōu)化策略
2490
變頻器與電機控制器的區(qū)別
變頻器內(nèi)部結構_變頻器內(nèi)部結構圖
變頻器基礎及應用,pdf版
變頻器干擾如何解決?精選資料分享
變頻器干擾怎么輕松解決?
變頻器是怎么控制的?
變頻器有哪些設計方案?
變頻器的作用?
變頻器的電抗器選型和應用
uC/OS-Ⅱ的主要特點
μC/OS-Ⅱ在MSP430F149上怎么移植?
μC/OS-Ⅱ操作系統(tǒng)筆記總結
μC/OS-II在DSP Flash存儲器中運行的關鍵問題
μC/OS-II實現(xiàn)牙椅控制系統(tǒng)
μC/OS-Ⅱ在芯片內(nèi)Flash存儲器運行的關鍵問題分析
μC/OS-II在DSP Flash存儲器中運行有什么問題?怎么解決?
μc/os-Ⅱ移植后的時鐘SYSTICK延遲該怎么得到?
基于μC/OS-Ⅱ的通信電源監(jiān)控系統(tǒng)方案設計
基于串口服務器的變頻器遠程控制系統(tǒng)
如何去改動μc/Os-Ⅱ就緒表算法?
如何將嵌入式操作系統(tǒng)μC/OS-Ⅱ面向數(shù)控系統(tǒng)改進?
如何搭建變頻器控制電機調(diào)速系統(tǒng)看了就知道
如何采用FPGA實現(xiàn)μC/OS-Ⅱ任務管理模塊?
嵌入式實時操作系統(tǒng)μc/os-Ⅱ學習心得分享
嵌入式操作系統(tǒng)μC/OS-Ⅱ在數(shù)控系統(tǒng)應用怎么改進?
怎么實現(xiàn)基于PLC和變頻器的雙饋電動機節(jié)能控制系統(tǒng)設計?
怎么擴展存儲器通訊控制變頻器?
通用變頻器能量回饋
嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在ARM處理器上的實現(xiàn)
17直接轉矩控制系統(tǒng)的研究
65基于網(wǎng)絡結構的變頻器控制系統(tǒng)
9變頻器-PLC 在供水控制系統(tǒng)的應用
23VS-616G5變頻器在電梯調(diào)速控制系統(tǒng)中的應用
34變頻器技術工業(yè)鍋爐控制系統(tǒng)中的應用
48一種基于μC/OS-Ⅱ的IPMC開發(fā)方案
37μC/OS-Ⅱ在S3C44B0X上的移植
18移植µC/OS-Ⅱ教程
31變頻器與PLC通訊的精簡設計
2664
采用μC/OS-Ⅱ的數(shù)據(jù)采集系統(tǒng)設計與應用
1059
根據(jù)μc/Os-Ⅱ就緒表算法在ARM架構上的改動
1076
臺達VL系列變頻器電梯行業(yè)應用
3667
造紙機電控系統(tǒng)變頻器的選擇
2008
基于LabVIEW的LG變頻器控制系統(tǒng)設計
45DCS自動控制系統(tǒng)與變頻器的電磁兼容分析
6086
基于uC/OS-II的變頻器結構控制系統(tǒng)設計
1359
變頻器逆變模塊損壞的起因及處理方法
8651運用PLC與變頻器的組合應用構成自動控制系統(tǒng)
1757
基于RS-485由PLC與多臺變頻器組成的控制系統(tǒng)
6變頻器和PLC在四輥軸交流傳動控制系統(tǒng)中的應用
6基于STM32和μC/OS-Ⅱ的熱力站監(jiān)控系統(tǒng)設計
430變頻器控制方式有哪些_變頻器有幾種控制方式_變頻器的控制方式詳解
27081變頻器的結構原理與變頻器的發(fā)展過程
7198
變頻器及其結構、原理、控制方式、構成、分類、應用的詳細概述
27采用操作系統(tǒng)μC/OS-Ⅱ實現(xiàn)數(shù)控執(zhí)行控制器的系統(tǒng)設計
2177
變頻器的維護與干擾排除
4401PID控制系統(tǒng)在變頻器中的應用實例
8807變頻器的應用原理與主要作用分析
15946
如何搭建變頻器控制電機調(diào)速系統(tǒng)
6131
搭建變頻器控制系統(tǒng)的步驟
3925
基于微處理器LPC2210實現(xiàn)μC/OS-Ⅱ關鍵算法的改進設計
3546
變頻器控制系統(tǒng)的基礎知識
3565光伏變頻器的使用方法有哪些
918變頻器PID功能的使用
12849
使用PLC和變頻器設計自動旋轉門的控制系統(tǒng)
21ABB變頻器在變頻穩(wěn)壓給水設備控制系統(tǒng)的應用
1389
變頻器調(diào)速的方法與步驟?
9894基于μC/OS-Ⅱ的遠程環(huán)境監(jiān)測系統(tǒng)設計方案
0嵌入式實時操作系統(tǒng)μC/OS-Ⅱ在LPC1788上的移植及應用
0變頻器在水設備控制系統(tǒng)的應用案例
1207變頻器的基本結構與作用
2370
變頻器與編碼器的區(qū)別
3777變頻器在工業(yè)控制系統(tǒng)中的應用與選型指南
2135基于多重化整流器的變頻器系統(tǒng)設計
163
變頻器與伺服系統(tǒng)的應用
1404
電子發(fā)燒友App



評論