μCLinux下的變頻調(diào)速控制系統(tǒng)的設(shè)計(jì)
20世紀(jì)后半葉,變頻調(diào)速技術(shù)[1]的出現(xiàn)和日益完善,成為電力拖動(dòng)領(lǐng)域的一個(gè)重大事件。由于變頻調(diào)速技術(shù)的發(fā)展,使結(jié)構(gòu)簡單牢固、價(jià)格低廉、應(yīng)用普及的交流異步電動(dòng)機(jī)有了性能良好的調(diào)速手段。
近 10年來,隨著電力電子技術(shù)、計(jì)算機(jī)技術(shù)、自動(dòng)控制技術(shù)的迅速發(fā)展,電氣傳動(dòng)技術(shù)面臨著一場歷史革命,即交流調(diào)速取代直流調(diào)速和計(jì)算機(jī)數(shù)字控制技術(shù)取代模擬控制技術(shù)已成為發(fā)展趨勢。交流異步電機(jī)變頻調(diào)速技術(shù)是當(dāng)今節(jié)電、改善工藝流程以提高產(chǎn)品質(zhì)量和改善環(huán)境、推動(dòng)技術(shù)進(jìn)步的一種主要手段。變頻調(diào)速以其優(yōu)異的調(diào)速和起制動(dòng)性能,高效率、高功率因數(shù)和節(jié)間效果,廣泛的適用范圍及其它許多優(yōu)點(diǎn)而被國內(nèi)外公認(rèn)為最有發(fā)展前途的調(diào)速方式。
ARM技術(shù)是嵌入式系統(tǒng)方面的主流技術(shù)。目前市場上 ARM芯片速度可達(dá)幾百兆,以它為主控芯片可在硬件上實(shí)現(xiàn)高速、高精度且具有一定處理能力的變頻調(diào)速控制系統(tǒng)。本系 1統(tǒng)采用 Philips公司的 LPC2292處理器,結(jié)合嵌入式 μClinux操作系統(tǒng)來實(shí)現(xiàn)其功能。嵌入式 μClinux操作系統(tǒng)提供了豐富的驅(qū)動(dòng)資源。LPC2292處理器具有豐富的接口資源,能夠滿足變頻調(diào)速控制系統(tǒng)的設(shè)計(jì)要求。
2 系統(tǒng)硬件的工作原理
圖 2.1為變頻調(diào)速控制系統(tǒng)的硬件設(shè)計(jì)和工作原理圖。系統(tǒng)的硬件設(shè)計(jì)主要有 ARM處理器模塊、以太網(wǎng)模塊、鍵盤輸入模塊、LCD顯示屏模塊、數(shù)據(jù)采集模塊、A/D模數(shù)轉(zhuǎn)換模塊和 PWM脈寬調(diào)制模塊 7部分。 ARM處理器模塊主要包括 PLC2292處理器、FLASH、 SDRAM、電源模塊、實(shí)時(shí)時(shí)鐘模塊和其它輔助電路構(gòu)成。 ARM處理器模塊是變頻調(diào)速控制系統(tǒng)的核心處理單元,以 LPC2292為控制核心;以太網(wǎng)口接口模塊[2]主要負(fù)責(zé)變頻調(diào)速控制系統(tǒng)進(jìn)行遠(yuǎn)程控制和監(jiān)視;鍵盤模塊負(fù)責(zé)工作參數(shù)的設(shè)置輸入,以及工作狀態(tài)的切換; LCD顯示屏模塊負(fù)責(zé)當(dāng)前設(shè)置和工作狀態(tài)的顯示,同時(shí)顯示時(shí)鐘日歷等,實(shí)時(shí)時(shí)鐘通過 I2C總線與 LPC2292連接;數(shù)據(jù)采集模塊主要負(fù)責(zé)從外部采集信息; A/D模數(shù)轉(zhuǎn)換模塊主要是負(fù)責(zé)將數(shù)據(jù)采集模塊采集來的模擬信號轉(zhuǎn)換成數(shù)字信號;PWM脈寬調(diào)制模塊主要負(fù)責(zé)通過 IPM職能功率模塊對交流異步電機(jī)進(jìn)行變頻調(diào)速。
LPC2292處理器是變頻調(diào)速控制系統(tǒng)的核心處理單元。數(shù)據(jù)采集模塊采集的模擬信號經(jīng) A/D模塊量化后數(shù)據(jù)參數(shù)傳入 ROM中的嵌入式 μClinux操作系統(tǒng)的應(yīng)用程序中,應(yīng)用程序根據(jù)數(shù)據(jù)在通過 PWM脈寬調(diào)制模塊控制輸出頻率,從而再通過 IPM智能功率模塊對交流異步電機(jī)進(jìn)行變頻調(diào)速。
3 系統(tǒng)軟件平臺設(shè)計(jì)
系統(tǒng)軟件平臺設(shè)計(jì)主要使用C語言和ARM匯編語言。系統(tǒng)軟件平臺設(shè)計(jì)主要包括3個(gè)方面:啟動(dòng)引導(dǎo)程序 Bootloader;建立μ CLinux操作系統(tǒng)的開發(fā)環(huán)境; PWM脈沖寬度調(diào)制模塊驅(qū)動(dòng)程序的實(shí)現(xiàn)。
3.1 啟動(dòng)引導(dǎo)程序Bootloader
引導(dǎo)程序 Bootloader是在操作系統(tǒng)運(yùn)行之前執(zhí)行的一段程序 [3]。它主要實(shí)現(xiàn)的功能[4]包括:初始化 CPU運(yùn)行的時(shí)鐘頻率;初始化 Flash和內(nèi)存的數(shù)據(jù)寬度,讀寫訪問周期和刷新周期;初始化中斷系統(tǒng);初始化系統(tǒng)中各種片內(nèi)、片外設(shè)備和 I/O端口;初始化系統(tǒng)各種運(yùn)行模式下的寄存器和堆棧;加載和引導(dǎo)μCLinux操作系統(tǒng)。
3.2建立μCLinux操作系統(tǒng)的開發(fā)環(huán)境
μCLinux操作系統(tǒng)沿襲了傳統(tǒng) Linux操作系統(tǒng)的主要特性,包括穩(wěn)定、強(qiáng)大的網(wǎng)絡(luò)和文件系統(tǒng)支持;建立μCLinux操作系統(tǒng)的開發(fā)環(huán)境主要包括 3個(gè)步驟 [5]:建立μCLinux操作系統(tǒng)的交叉編譯環(huán)境、μCLinux操作系統(tǒng)的編譯和μCLinux操作系統(tǒng)的加載。
3.3 PWM脈寬調(diào)制驅(qū)動(dòng)程序的開發(fā)
設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和硬件之間的接口,它作為應(yīng)用設(shè)備之間的軟件層, 為應(yīng)用程序屏蔽了硬件的細(xì)節(jié)。在μ CLinux操作系統(tǒng)下開發(fā)字符設(shè)備驅(qū)動(dòng)程序,主要有如下幾個(gè)步驟[6]:(1)設(shè)置驅(qū)動(dòng)程序的設(shè)備號。(2)實(shí)現(xiàn)保存設(shè)備信息的結(jié)構(gòu)體中的部分函數(shù)。(3)實(shí)現(xiàn)驅(qū)動(dòng)程序的初始化函數(shù)和清除函數(shù)。
PWM脈寬調(diào)制驅(qū)動(dòng)程序?qū)儆谧址O(shè)備驅(qū)動(dòng)程序,因此 PWM脈寬調(diào)制驅(qū)動(dòng)程序遵循上述的開發(fā)步驟。
3.3.1設(shè)置PWM驅(qū)動(dòng)程序的設(shè)備號
PWM脈寬調(diào)制驅(qū)動(dòng)程序要先建立文件設(shè)備的主設(shè)備號和從設(shè)備號。PWM驅(qū)動(dòng)程序默認(rèn)的主設(shè)備號為125,沒有使用從設(shè)備號。因此,需要建立 1個(gè)設(shè)備文件,起主設(shè)備號為 125,從設(shè)備號可任意選擇,文件名可定為PWM。建立設(shè)備文件的程序清單如下:
程序清單3.2建立設(shè)備文件程序
mknod? /dev/PWM? c 125 0
3.3.2實(shí)現(xiàn)保存設(shè)備信息的結(jié)構(gòu)體中的部分函數(shù)
PWM驅(qū)動(dòng)程序?qū)儆谧址O(shè)備的驅(qū)動(dòng)程序。PWM驅(qū)動(dòng)程序要建立保存設(shè)備信息的結(jié)構(gòu)體。PWM驅(qū)動(dòng)程序的結(jié)構(gòu)體如下:
程序清單3.1 PWM驅(qū)動(dòng)程序操作的結(jié)構(gòu)體
struct file_operations? pwm_fops={
因?yàn)镻WM驅(qū)動(dòng)程序僅需要實(shí)現(xiàn)open( )、release( )和ioctl( )函數(shù),所以 PWM驅(qū)動(dòng)不能使用標(biāo)準(zhǔn)C的庫函數(shù)來訪問,只能使用內(nèi)核提供給應(yīng)用程序的接口函數(shù)來訪問。
從此函數(shù)接口看, 我們實(shí)現(xiàn)PWM設(shè)備的打開、釋放和控制。函數(shù) open(const char* pathname , int flags)主要實(shí)現(xiàn)對 PWM設(shè)備的打開;函數(shù)close(int fd )主要實(shí)現(xiàn)對PWM設(shè)備的關(guān)閉;函數(shù) ioctl(int fd , unsigned long int cmd , … )主要實(shí)現(xiàn)對PWM脈寬調(diào)制設(shè)備輸出頻率和占空比的控制。
PWM脈寬調(diào)制驅(qū)動(dòng)程序最重要的功能是控制PWM輸出的頻率和占空比。PWM脈寬調(diào)制驅(qū)動(dòng)程序輸出的頻率可以通過命令PWM_SET_CYC設(shè)置PWM脈寬調(diào)制頻率。實(shí)際上是以 VPB總線周期為單位設(shè)置PWM脈寬調(diào)制的周期。頻率是周期的倒數(shù),所以也就設(shè)置了頻率。 PWM脈寬調(diào)制驅(qū)動(dòng)程序知道PWM脈寬調(diào)制的輸出頻率和高電平時(shí)間,就可以計(jì)算占空比。因此,設(shè)置再設(shè)置高電平時(shí)間就可以計(jì)算占空比。PWM脈寬調(diào)制驅(qū)動(dòng)程序可以用 PWM_1_SET_DUYY、PWM_1_SET_DUYY等命令設(shè)置高電平時(shí)間。
3.3.3實(shí)現(xiàn)驅(qū)動(dòng)程序的初始化函數(shù)和清除函數(shù)
μCLinux操作系統(tǒng)在加載內(nèi)核模塊時(shí)會(huì)調(diào)用驅(qū)動(dòng)程序的初始化函數(shù),在卸載內(nèi)核模塊時(shí)調(diào)用驅(qū)動(dòng)程序的清除函數(shù)。PWM驅(qū)動(dòng)程序的初始化函數(shù)和清除函數(shù)程序代碼如下:
程序清單3.3 PWM驅(qū)動(dòng)程序初始化函數(shù)代碼
?int pwm_init(void){?? int result ;
result = register_chrdev(MAJOR, DEVICE, &pwm_fops);
? if (result<0){
printk(KERN_ERR DEVICE_NAME “: Unable to get major %d\n” , MAJOR_NR);
return(result);
}
if (MAJOR_NR = =0) MAJOR_NR = result;
? printk(KERN_INFO DEVICE_NAME”: init OK\n”);
? return (0);
}
程序清單3.4 PWM驅(qū)動(dòng)程序清除函數(shù)代碼
?void pwm_cleanup(void){
? unregister_chrdev(MAJOR_NR,DEVICE_NAME);
}
3.3.4為PWM脈寬調(diào)制驅(qū)動(dòng)程序添加中斷服務(wù)程序
μCLinux操作系統(tǒng)內(nèi)核具有中斷管理功能,因此中斷服務(wù)程序必須按照其規(guī)范使用。μ CLinux操作系統(tǒng)在使用中斷服務(wù)程序之前,需要向內(nèi)核注冊中斷服務(wù)程序;不再使用中斷服務(wù)程序時(shí),需要注銷中斷服務(wù)程序。注冊中斷服務(wù)程序通過調(diào)用函數(shù)request_irq( )實(shí)現(xiàn)。通常申請中斷返回值為0表示成功,或者返回一個(gè)負(fù)的錯(cuò)誤碼。函數(shù)返回 -EBUSY,表示另一個(gè)設(shè)備程序已使用了要申請信號線。注銷中斷服務(wù)程序通過調(diào)用free_irq( )實(shí)現(xiàn)。
3.3.5編譯和測試驅(qū)動(dòng)程序
PWM驅(qū)動(dòng)程序源代碼編寫成功后,需要把它編譯進(jìn)內(nèi)核。當(dāng)用戶需要打開設(shè)備時(shí),還需要一個(gè)在/dev目錄的設(shè)備文件名稱,這樣驅(qū)動(dòng)程序才能工作。
最后經(jīng)過編譯得到zImage 內(nèi)核壓縮文件。用引導(dǎo)程序Bootloader通過串口或者以太網(wǎng)接口將zImage文件引導(dǎo)到LPC2292處理器上片外SDRAM上進(jìn)行調(diào)試。 4 結(jié)束語
嵌入式系統(tǒng)具有低功耗、可靠性高等突出優(yōu)點(diǎn)。采用嵌入式系統(tǒng)來設(shè)計(jì)和實(shí)現(xiàn)變頻調(diào)速控制系統(tǒng),使得變頻調(diào)速控制系統(tǒng)可靠性高、性能強(qiáng)、實(shí)時(shí)性好,將以太網(wǎng)接口集成與變頻調(diào)速系統(tǒng)中,使得對變頻調(diào)速系統(tǒng)的遠(yuǎn)程控制和監(jiān)視變得簡單易行。因此,研制一個(gè)帶以太網(wǎng)接口的嵌入式變頻調(diào)速控制系統(tǒng)具有重要的科學(xué)意義和價(jià)值。
本文的主要?jiǎng)?chuàng)新點(diǎn):具體實(shí)現(xiàn)了在PLC2292+μ CLinux操作系統(tǒng)平臺下的6路PWM脈寬調(diào)制變頻調(diào)速控制系統(tǒng)的軟硬件設(shè)計(jì);詳細(xì)分析可PWM脈寬調(diào)制模塊設(shè)備在嵌入式μCLinux操作系統(tǒng)下驅(qū)動(dòng)程序結(jié)構(gòu)和開發(fā)過程,編寫出驅(qū)動(dòng)模塊,實(shí)現(xiàn)了 6路PWM脈寬調(diào)制驅(qū)動(dòng)模塊設(shè)備的控制,結(jié)合已經(jīng)完成的以太網(wǎng)接口驅(qū)動(dòng)模塊,已成功地應(yīng)用到變頻調(diào)速控制系統(tǒng)中,系統(tǒng)簡明,擴(kuò)展方便,信息處理實(shí)時(shí)性高。
參考文獻(xiàn)
[1]王樹.變頻調(diào)速系統(tǒng)設(shè)計(jì)與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2005.
[2]熊育悅,趙哲身.工業(yè)以太網(wǎng)在控制系統(tǒng)應(yīng)用前景[J].儀表技術(shù),2002, (3):37~39
[3]孫秋野,孫凱,馮健.ARM嵌入式系統(tǒng)開發(fā)典型模塊[M].北京:人民郵電出版社,2007.
[4]單承剛,戴學(xué)豐.基于ARM的嵌入式BootLoader設(shè)計(jì)與啟動(dòng)過程[J].微計(jì)算機(jī)信息,2006, 11-2:22.
[5]孫紀(jì)坤,張小全.嵌入式Linux系統(tǒng)開發(fā)技術(shù)詳解—基于ARM[M].北京:人民郵電出版社,
2006.
[6]周立功,陳明計(jì),陳渝.ARM嵌入式Linux系統(tǒng)構(gòu)建與驅(qū)動(dòng)開發(fā)范例[M].北京:北京航空航天大學(xué)出版社,2006.
評論