基于PIC18F系列單片機的嵌入式系統(tǒng)設計
嵌入式系統(tǒng)是指以應用為中心,以計算機技術為基礎,軟、硬件可裁剪,適應應用系統(tǒng)對功能、體積、成本、可靠性、功耗嚴格要求的專用計算機系統(tǒng)。嵌入式系統(tǒng)是面向應用的,系統(tǒng)的硬件選型和軟件開發(fā)模式都必須根據具體的應用確定。
永磁無刷直流電動機是電機控制研究領域的熱點之一,這與其自身固有的技術優(yōu)勢密切相關:以電子換相取代了有刷直流電動機的機械換相。從根本上革除了普通有刷直流電動機由于電刷換相帶來的火花、噪音、高故障率等一系列問題,同時又使系統(tǒng)的性能能夠與普通有刷直流電動機相媲美,因此得到了廣泛的應用。永磁無刷直流電動機的電子換相離不開電機的轉子位置信號,傳統(tǒng)的方法是采用霍爾器件或其他位置傳感器檢測位置信號,這使得系統(tǒng)的維護和制造都不方便,并且由于傳感器的工作特性不穩(wěn)定,給系統(tǒng)的安全運行帶來了一些隱患。因此,無位置傳感器方案引起了人們的極大興趣。
本文結合無位置傳感器永磁無刷直流電動機控制系統(tǒng)的開發(fā),以Microchip公司的PIC18F452單片機為主控器件,并采用嵌入式實時操作系統(tǒng)μC/OS-II作為軟件開發(fā)平臺,詳細討論了嵌入式系統(tǒng)的開發(fā)模式與流程。
2.系統(tǒng)硬件平臺設計
嵌入式系統(tǒng)設計的第一步是結合具體的應用,綜合考慮系統(tǒng)對成本、性能、可擴展性、開發(fā)周期等各個方面的要求,確定系統(tǒng)的主控器件,并以之為核心搭建系統(tǒng)硬件平臺。
無位置傳感器永磁無刷直流電動機控制系統(tǒng)的關鍵問題是位置檢測。目前已經有了很多位置檢測方案,其中,反電勢法由于簡單實用而得以廣泛采用。反電勢法的原理是:基于電機的三相端電壓,通過硬件檢測電路或軟件算法得到三相反電勢過零信號,然后用軟件移相得到換相時刻,并在換相時刻按換相邏輯完成換相,觸發(fā)逆變橋以合適的導通時序工作,從而保證了電機的正常運行。
反電勢法的永磁無刷直流電動機無位置傳感器控制對系統(tǒng)硬件提出了更高的要求:
① 三個外部中斷輸入引腳,便于捕捉三相反電勢過零信號;
② 至少一個PWM模塊,實現電機的斬波調速;
③ 豐富的定時器資源,完成軟件移相、測速等功能;
④ 多通道的AD轉換模塊,能夠采樣速度給定及主電路的電流、電壓信號;
⑤ 硬件乘法器,保證速度、電流調節(jié)器的快速性;
⑥ 足夠的程序和數據存儲器,便于系統(tǒng)擴展;
⑦ 高速的系統(tǒng)工作頻率,保證系統(tǒng)的強實時性;
⑧ 豐富的通信模塊,便于系統(tǒng)與其他嵌入式系統(tǒng)的互連。
對于無位置傳感器永磁無刷直流電動機控制系統(tǒng)的設計,有很多專用芯片可供選用,但為了進一步提高系統(tǒng)性能,增強設計的靈活性,多采用DSP或專用單片機等智能器件。但是,這樣在提高系統(tǒng)性能的同時卻增加了系統(tǒng)開發(fā)成本。為了設計一個高性能、低成本的開發(fā)平臺,針對應用對系統(tǒng)硬件的要求,考慮到PIC18F452單片機的高性價比,選用其作為主控器件。
PIC18F452是Microchip公司推出的一款增強型8位單片機,采用精簡指令集(RISC)的設計,有兩級流水線,最高運行頻率可達到10MIPS,能夠滿足系統(tǒng)對實時性的要求;指令總線16位寬,數據總線8位寬;單片機內部有32K字節(jié)的FLASH程序存儲器,1.5K字節(jié)的數據存儲器和256字節(jié)的EEPROM,便于系統(tǒng)的擴展;自帶8×8硬件乘法器;中斷資源豐富,提供18個中斷源,兩個中斷優(yōu)先級,并且中斷優(yōu)先級可配置。PIC18F452單片機配備了豐富的外圍模塊,極大地簡化了單片機外圍電路的設計。同時,Microchip公司為PIC18F系列單片機提供了功能強大的指令集,共77條指令,絕大部分指令為單字(2個字節(jié))存儲,單周期執(zhí)行,應用代碼的存儲壓縮率高,指令執(zhí)行效率高。
以PIC18F452為主控器件構成的系統(tǒng)硬件框圖如圖1所示。
值得說明的是:
① 系統(tǒng)中的換相邏輯由可編程邏輯器件完成,主要是為了提高系統(tǒng)的可靠性,從功能上講,完全可由單片機實現;
② 電機的速度檢測,可根據位置信號利用軟件計算得來,故省略了速度傳感器;
③ 模擬輸入為電機的速度給定信號。
3.嵌入式系統(tǒng)軟件開發(fā)模式
對于簡單的應用系統(tǒng),系統(tǒng)的軟件開發(fā)模式通常如圖2所示,稱為前后臺系統(tǒng)(也叫無限循環(huán)系統(tǒng))。
前后臺系統(tǒng)中,應用程序就是一個無限循環(huán)。循環(huán)中調用函數完成相應的操作,這些操作稱為后臺任務;中斷服務程序處理異步事件,這部分稱為前臺行為。因為中斷服務程序提供的信息一直要等到后臺程序運行到該處理這個信息時才得到處理,所以最壞情況下的任務響應時間等于整個循環(huán)的執(zhí)行時間。因為后臺循環(huán)的執(zhí)行周期不是常數,所以基于前后臺模式的應用軟件開發(fā),雖然設計過程簡單,但系統(tǒng)的實時性得不到保障。
為了提高系統(tǒng)的實時性,可以采用基于嵌入式實時操作系統(tǒng)(RTOS)的軟件開發(fā)模式。RTOS分為兩類:非可剝奪型內核和可剝奪型內核,一般商用的都是可剝奪型內核,所以本文只討論此類RTOS,其內核結構如圖3所示。
RTOS將整個應用細分為多個任務,每個任務完成特定的功能,并被賦予一定的優(yōu)先級,擁有自己的任務控制塊和??臻g。一般地,每個任務在程序結構上都是一個無限循環(huán),它有多個狀態(tài)——休眠態(tài)、就緒態(tài)、運行態(tài)、掛起態(tài)和中斷態(tài)等。系統(tǒng)內核總是讓就緒態(tài)的高優(yōu)先級任務先運行,中斷服務程序可搶占CPU,中斷服務程序完成時,系統(tǒng)內核讓此時就緒態(tài)中優(yōu)先級最高的任務運行(不一定是被中斷的任務)??梢姡?SPAN lang=EN-US xml:lang="EN-US">RTOS的軟件開發(fā)模式使系統(tǒng)的任務響應時間得到了最優(yōu)化。更重要的是,這種開發(fā)模式將以往面向功能的應用開發(fā)轉化為面相任務的應用開發(fā),簡化了系統(tǒng)設計的邏輯結構;同時,由于有了RTOS,屏蔽了應用軟件對底層硬件的可見性,將以往軟件系統(tǒng)的兩層結構轉化為三層結構(如圖4所示),極大地方便了系統(tǒng)的軟件擴展與硬件升級。
對于PIC18F系列單片機,目前常用的嵌入式實時操作系統(tǒng)有:μC/OS-II、Salvo、CMX、PIC18OS等。它們都是可剝奪型的實時內核,詳細的比較如表1所示。
結合本文的具體應用,綜合考慮系統(tǒng)硬件資源及上述幾種實時操作系統(tǒng)的特點,最終選用基于操作系統(tǒng)的軟件開發(fā)模式,并選擇μC/OS-II作為系統(tǒng)軟件平臺。
4.基于μC/OS-II的應用軟件開發(fā)
μC/OS-II是一個可移植、可固化、可裁剪及可剝奪型的多任務實時內核,應用開發(fā)時首先必須完成其在特定硬件上的移植。μC/OS-II在編寫的過程中就充分考慮到了可移植性,它的絕大部分代碼都由ANSI C寫成,與處理器相關的代碼集中在OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C這三個文件中,因此只要針對具體的硬件改寫這些文件,就可以完成移植工作。
表1 適用于PIC18F系列單片機的幾種嵌入式實時操作系統(tǒng)
名稱 |
μC/OS-II |
Salvo |
CMX |
PIC18OS |
版權 |
源碼公開的免費實時內核 |
商用實時內核 |
商用實時內核 |
源碼公開的免費實時內核 |
可靠性 |
可靠性高。通過了美國FAA認證。 |
可靠性高。 |
可靠性高。 |
未測試。 |
內核大小 |
可裁剪。內核ROM占用量最少2K,RAM需求由具體應用而定。 |
內核小,可裁剪。RAM需求很小,一般每個任務需4~12bytes,每個事件需3~4bytes。 |
較大。 |
非常小。內核ROM占用量小于1K,RAM最少需求約120bytes。 |
系統(tǒng)服務 |
豐富。最多支持64個任務。支持信號量、事件標志組、消息郵箱、消息隊列、時間管理、內存管理等。 |
較豐富。 |
非常豐富。支持信號量、事件管理、消息郵箱、消息隊列、內存管理、設備管理、TCP/IP協議棧等。 |
少。最多支持8個任務,目前僅支持事件標志,最多支持8個事件。 |
適用 硬件 平臺 |
非常廣泛,已經被移植到了40多種CPU上(包括PIC18F系列單片機)。 |
較為廣泛,適用于8051系列單片機、Microchip的8位單片機、TI的2000系列DSP等。 |
非常廣泛,適用于多種型號的8位、16位、32位、64位處理器,支持大部分DSP。 |
目前僅支持Microchip公司的PIC18F系列單片機。 |
調試工具 |
較少 |
一般 |
非常豐富 |
少 |
備注 |
實際開發(fā)過程中可針對具體硬件優(yōu)化內核,從而進一步減少內核代碼,提高系統(tǒng)實時性。 |
有三個版本,Salvo Lite為免費測試版,Salvo SE為標準版,Salvo PRO為增強版。 |
有兩個版本,CMX-RTX為完全版,CMX-TINY+為簡化版本。 |
基于OSEK/VDX標準,但目前僅實現了其Operating System部分。 |
移植成功之后,就可以開始應用程序的編寫工作。RTOS將面向功能的應用開發(fā)轉化為了面相任務的應用開發(fā),因此軟件開發(fā)的過程就是將應用系統(tǒng)按照功能細分為多個任務,然后實現每個任務,并為任務確定合適的優(yōu)先級;對于實時性要求高的操作,需要編寫相關的中斷服務程序。
永磁無刷直流電動機正常運行的基本條件是:在最佳換相時刻按最佳換相邏輯換相。這個過程對實時性要求很高,所以由中斷服務程序完成。反電勢過零時,程序進入反電勢過零中斷服務程序,該中斷服務程序根據當前的電機速度設定軟件移相定時器的溢出值;當軟件移相定時器溢出中斷時,程序進入移相定時器中斷服務程序,顯然,此時即最佳換相時刻。因此,在移相定時器中斷服務程序中按最佳換相邏輯完成換相,就能保證電機的正常運行。此外,對于過流、過壓、欠壓等緊急故障的處理也必須由相應的中斷服務程序完成。系統(tǒng)還要完成的功能有:定時采樣速度給定,并將采樣結果經過調節(jié)器轉化為PWM波的占空比;響應鍵盤輸入;顯示電機的速度、PWM波占空比等系統(tǒng)狀態(tài)信息;與上位PC機串口通信;系統(tǒng)非緊急故障的處理等等。這些功能對實時性的要求不是很高,故由任務級完成。應用系統(tǒng)的任務如表2所示。
表2 應用系統(tǒng)任務列表
任務名稱 |
TaskAD |
TaskKey |
TaskShow |
TaskErr |
TaskCom |
TaskIdle |
任務優(yōu)先級 |
2 |
3 |
4 |
1 |
5 |
7 |
任務描述 |
處理AD采用結果,更新PWM占空比 |
鍵盤任務 |
顯示任務 |
系統(tǒng)非緊急故障處理任務 |
與上位PC機進行串行通訊 |
操作系統(tǒng)的缺省任務 |
系統(tǒng)運行時,首先進行系統(tǒng)初始化操作,并創(chuàng)建任務。所有新創(chuàng)建的任務都被置為就緒態(tài),操作系統(tǒng)內核首先調用就緒態(tài)中優(yōu)先級最高的任務運行。系統(tǒng)運行過程中,始終保證運行任務的優(yōu)先級高于就緒態(tài)中的所有任務。當運行著的任務因等待某一事件或延時而被掛起,或者有更高優(yōu)先級的任務進入了就緒態(tài),則內核中止當前運行著的任務,把CPU的使用權交給就緒態(tài)中優(yōu)先級最高的任務。當中斷發(fā)生時,系統(tǒng)運行中斷服務程序,中斷返回時,系統(tǒng)內核將進行任務調度,將優(yōu)先級最高的就緒態(tài)任務轉為運行態(tài)。例如,系統(tǒng)運行過程中發(fā)生了AD采樣完成中斷,程序進入AD采樣完成中斷服務程序;中斷服務程序向郵箱ADResult發(fā)送AD采樣結果,由于任務TaskAD早先因等待郵箱ADResult而被掛起,所以此時任務TaskAD的狀態(tài)被轉為就緒態(tài);中斷返回時,內核進行任務調度,由于TaskAD是就緒態(tài)中優(yōu)先級最高的任務(系統(tǒng)正常運行時TaskErr任務始終為掛起態(tài)),因此不管原先被中斷的任務是什么,系統(tǒng)都將運行任務TaskAD,這就保證了任務TaskAD具有足夠快的任務響應速度。TaskAD執(zhí)行一個循環(huán)后,又因等待郵箱ADResult而轉為掛起態(tài),內核再次進行任務調度,調用就緒態(tài)中的最高優(yōu)先級任務運行。
5. 結論
本文結合無位置傳感器永磁無刷直流電動機控制系統(tǒng)的設計,針對系統(tǒng)具體要求,確定了以PIC18F452單片機為主控器件,μC/OS-II作為軟件平臺的開發(fā)方案。實際的開發(fā)過程證明了這種開發(fā)模式能夠滿足系統(tǒng)高性能、低成本的設計要求,同時具備了較強的可擴展性和一定技術前瞻性。
值得說明的是,在嵌入式系統(tǒng)中使用RTOS,增強了系統(tǒng)實時性,簡化了系統(tǒng)軟件設計;同時,也增加了系統(tǒng)的開發(fā)成本。一方面,操作系統(tǒng)本省會耗費一定的硬件資源(例如程序存儲器、數據存儲器、定時器資源等等),增加了系統(tǒng)的硬件成本;另一方面,若購買商用的實時操作系統(tǒng),需要額外的軟件支出,即使是使用免費的實時內核,也要求開發(fā)者對內核本省有深入的理解,需要投入相當的精力。所以,雖然使用RTOS會給開發(fā)過程帶來一定的便利,但針對具體的應用,是否使用RTOS,若使用,具體選擇那種RTOS,都是制定系統(tǒng)方案時值得慎重考慮的問題。
參考文獻:
[1] 周意成,朱平平,張相軍.無位置傳感器的方波無刷直流電機壓縮機負載的控制.電氣自動化,2000 (3):16-19.
[2] 3-Phase BLDC Motor Control with Sensorless Back EMF Zero Crossing Detection Using DSP56F80X (Motorola Order No. AN1914/D). Motorola Inc.,U.S.,2001.
[3] PIC18FXX2 Data Sheet (DS39564B). Microchip Technology Inc.,U.S.,2002.[4] Labrosse Jean J.嵌入式實時操作系統(tǒng)μC/OS-II(第2版).邵貝貝譯.北京:北京航空航天大學出版社,2003