基于PIC單片機的永磁無(wú)刷直流電動(dòng)機控制系統的開(kāi)發(fā)
表1 適用于PIC18F系列單片機的幾種嵌入式實(shí)時(shí)操作系統
結合本文的具體應用,綜合考慮系統硬件資源及上述幾種實(shí)時(shí)操作系統的特點(diǎn),最終選用基于操作系統的軟件開(kāi)發(fā)模式,并選擇μC/OS-II作為系統軟件平臺。
4.基于μC/OS-II的應用軟件開(kāi)發(fā)
μC/OS-II是一個(gè)可移植、可固化、可裁剪及可剝奪型的多任務(wù)實(shí)時(shí)內核,應用開(kāi)發(fā)時(shí)首先必須完成其在特定硬件上的移植。μC/OS-II在編寫(xiě)的過(guò)程中就充分考慮到了可移植性,它的絕大部分代碼都由ANSI C寫(xiě)成,與處理器相關(guān)的代碼集中在OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C這三個(gè)文件中,因此只要針對具體的硬件改寫(xiě)這些文件,就可以完成移植工作。
移植成功之后,就可以開(kāi)始應用程序的編寫(xiě)工作。RTOS將面向功能的應用開(kāi)發(fā)轉化為了面相任務(wù)的應用開(kāi)發(fā),因此軟件開(kāi)發(fā)的過(guò)程就是將應用系統按照功能細分為多個(gè)任務(wù),然后實(shí)現每個(gè)任務(wù),并為任務(wù)確定合適的優(yōu)先級;對于實(shí)時(shí)性要求高的操作,需要編寫(xiě)相關(guān)的中斷服務(wù)程序。
永磁無(wú)刷直流電動(dòng)機正常運行的基本條件是:在最佳換相時(shí)刻按最佳換相邏輯換相。這個(gè)過(guò)程對實(shí)時(shí)性要求很高,所以由中斷服務(wù)程序完成。反電勢過(guò)零時(shí),程序進(jìn)入反電勢過(guò)零中斷服務(wù)程序,該中斷服務(wù)程序根據當前的電機速度設定軟件移相定時(shí)器的溢出值;當軟件移相定時(shí)器溢出中斷時(shí),程序進(jìn)入移相定時(shí)器中斷服務(wù)程序,顯然,此時(shí)即最佳換相時(shí)刻。因此,在移相定時(shí)器中斷服務(wù)程序中按最佳換相邏輯完成換相,就能保證電機的正常運行。此外,對于過(guò)流、過(guò)壓、欠壓等緊急故障的處理也必須由相應的中斷服務(wù)程序完成。系統還要完成的功能有:定時(shí)采樣速度給定,并將采樣結果經(jīng)過(guò)調節器轉化為PWM波的占空比;響應鍵盤(pán)輸入;顯示電機的速度、PWM波占空比等系統狀態(tài)信息;與上位PC機串口通信;系統非緊急故障的處理等等。這些功能對實(shí)時(shí)性的要求不是很高,故由任務(wù)級完成。應用系統的任務(wù)如表2所示。
表2 應用系統任務(wù)列表
系統運行時(shí),首先進(jìn)行系統初始化操作,并創(chuàng )建任務(wù)。所有新創(chuàng )建的任務(wù)都被置為就緒態(tài),操作系統內核首先調用就緒態(tài)中優(yōu)先級最高的任務(wù)運行。系統運行過(guò)程中,始終保證運行任務(wù)的優(yōu)先級高于就緒態(tài)中的所有任務(wù)。當運行著(zhù)的任務(wù)因等待某一事件或延時(shí)而被掛起,或者有更高優(yōu)先級的任務(wù)進(jìn)入了就緒態(tài),則內核中止當前運行著(zhù)的任務(wù),把CPU的使用權交給就緒態(tài)中優(yōu)先級最高的任務(wù)。當中斷發(fā)生時(shí),系統運行中斷服務(wù)程序,中斷返回時(shí),系統內核將進(jìn)行任務(wù)調度,將優(yōu)先級最高的就緒態(tài)任務(wù)轉為運行態(tài)。例如,系統運行過(guò)程中發(fā)生了AD采樣完成中斷,程序進(jìn)入AD采樣完成中斷服務(wù)程序;中斷服務(wù)程序向郵箱ADResult發(fā)送AD采樣結果,由于任務(wù)TaskAD早先因等待郵箱ADResult而被掛起,所以此時(shí)任務(wù)TaskAD的狀態(tài)被轉為就緒態(tài);中斷返回時(shí),內核進(jìn)行任務(wù)調度,由于TaskAD是就緒態(tài)中優(yōu)先級最高的任務(wù)(系統正常運行時(shí)TaskErr任務(wù)始終為掛起態(tài)),因此不管原先被中斷的任務(wù)是什么,系統都將運行任務(wù)TaskAD,這就保證了任務(wù)TaskAD具有足夠快的任務(wù)響應速度。TaskAD執行一個(gè)循環(huán)后,又因等待郵箱ADResult而轉為掛起態(tài),內核再次進(jìn)行任務(wù)調度,調用就緒態(tài)中的最高優(yōu)先級任務(wù)運行。
5. 結論
本文結合無(wú)位置傳感器永磁無(wú)刷直流電動(dòng)機控制系統的設計,針對系統具體要求,確定了以PIC18F452單片機為主控器件,μC/OS-II作為軟件平臺的開(kāi)發(fā)方案。實(shí)際的開(kāi)發(fā)過(guò)程證明了這種開(kāi)發(fā)模式能夠滿(mǎn)足系統高性能、低成本的設計要求,同時(shí)具備了較強的可擴展性和一定技術(shù)前瞻性。
值得說(shuō)明的是,在嵌入式系統中使用RTOS,增強了系統實(shí)時(shí)性,簡(jiǎn)化了系統軟件設計;同時(shí),也增加了系統的開(kāi)發(fā)成本。一方面,操作系統本省會(huì )耗費一定的硬件資源(例如程序存儲器、數據存儲器、定時(shí)器資源等等),增加了系統的硬件成本;另一方面,若購買(mǎi)商用的實(shí)時(shí)操作系統,需要額外的軟件支出,即使是使用免費的實(shí)時(shí)內核,也要求開(kāi)發(fā)者對內核本省有深入的理解,需要投入相當的精力。所以,雖然使用RTOS會(huì )給開(kāi)發(fā)過(guò)程帶來(lái)一定的便利,但針對具體的應用,是否使用RTOS,若使用,具體選擇那種RTOS,都是制定系統方案時(shí)值得慎重考慮的問(wèn)題。
評論