摘 要: 介紹了基于ARM-WinCE的電機(jī)監(jiān)控系統(tǒng),硬件以ARM9微處理器S3C2410為核心,軟件基于Windows CE操作系統(tǒng)并使用了ActiveX控件建立界面,實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)和直流電機(jī)表面溫度、轉(zhuǎn)速和運(yùn)行時(shí)間等指標(biāo)的監(jiān)控。詳細(xì)介紹了該系統(tǒng)的系統(tǒng)功能設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)、硬件電路設(shè)計(jì)、軟件設(shè)計(jì)及測(cè)試的過(guò)程和結(jié)果。
關(guān)鍵詞: Windows CE;S3C2410;ActiveX
嵌入式系統(tǒng)是當(dāng)今自動(dòng)化領(lǐng)域技術(shù)發(fā)展的熱點(diǎn)之一,它的出現(xiàn)為工業(yè)控制設(shè)備的實(shí)時(shí)、智能化提供了強(qiáng)有力的技術(shù)支持[1]。ARM微處理器是嵌入式處理器的典型代表,已經(jīng)滲透到各個(gè)領(lǐng)域。作為32位的RISC架構(gòu),基于ARM核的微控制器芯片不但占據(jù)了高端微控制器市場(chǎng)的大部分市場(chǎng)份額,同時(shí)也逐漸向低端微控制器應(yīng)用領(lǐng)域擴(kuò)展。Windows CE操作系統(tǒng)具有很高的實(shí)時(shí)性,已經(jīng)在汽車(chē)工業(yè)、航空工業(yè)、工業(yè)控制、安全防護(hù)等領(lǐng)域中得到了廣泛應(yīng)用。Windows CE能從閃存啟動(dòng),從而避免了暴露在灰塵、高溫和震動(dòng)環(huán)境下,使它可以適應(yīng)惡劣的生產(chǎn)環(huán)境。因此Windows CE在工業(yè)控制領(lǐng)域有著很好的應(yīng)用前景[2]。
1 系統(tǒng)概述
本系統(tǒng)是一個(gè)電機(jī)監(jiān)控系統(tǒng),運(yùn)行在S3C2410硬件平臺(tái)上,軟件運(yùn)行環(huán)境為Windows CE 5.0操作系統(tǒng);由ActiveX控件構(gòu)成電機(jī)監(jiān)控軟件界面。系統(tǒng)運(yùn)行溫度在0~100 ℃之間。通過(guò)界面,可以直觀地看出當(dāng)前直流電機(jī)和步進(jìn)電機(jī)的轉(zhuǎn)速以及電機(jī)運(yùn)行時(shí)間和表面的溫度,當(dāng)溫度超過(guò)75℃時(shí)立即控制電機(jī)停止運(yùn)轉(zhuǎn);還可以控制電機(jī)的啟動(dòng)、停止、加速和減速。通過(guò)這些實(shí)現(xiàn)電機(jī)的監(jiān)控。
2 硬件設(shè)計(jì)
硬件電路采用的是ARM9內(nèi)核微處理器S3C2410A,擴(kuò)展有64 MB SDRAM、64 MB NAND Flash、2 MB NOR Flash等存儲(chǔ)器,可運(yùn)行Windows CE 5.0操作系統(tǒng)。外設(shè)主要是直流電機(jī)、步進(jìn)電機(jī)、溫度傳感電路、液晶屏等,硬件框如圖1所示。
步進(jìn)電機(jī)采用了達(dá)林頓管驅(qū)動(dòng)芯片ULN2003來(lái)驅(qū)動(dòng)四相步進(jìn)電機(jī)。溫度傳感器和TFT液晶屏的驅(qū)動(dòng)電路比較簡(jiǎn)單,下面重點(diǎn)介紹一下直流電機(jī)的驅(qū)動(dòng)電路。
直流電機(jī)驅(qū)動(dòng)電路如圖2所示。直流電機(jī)控制使用了H橋驅(qū)動(dòng)電路[3],控制口線為GPB0、GPH9(GPG0與GPH9為連接S3C2410A核心板時(shí)的引腳連接,圖中標(biāo)出的是連接S3C2410A核心板的引腳編號(hào))。JP17可以斷開(kāi)直流電機(jī)控制電路與S3C2410A的連接。當(dāng)GPB0輸出高電平時(shí)(即ZDJ_A點(diǎn)為3.3 V),則Q2、Q3導(dǎo)通Q6導(dǎo)通MOTOR_B點(diǎn)為MGV+,Q6導(dǎo)通,MOTOR_A點(diǎn)為GND,此時(shí)直流電機(jī)將會(huì)正轉(zhuǎn)。由于Q6的集電極通過(guò)一個(gè)二極管D7連接到H橋的另一個(gè)控制端ZDJ_B,將ZDJ_B控制端電壓鉗在1.0 V以下,因此不管GPH9輸出是高電平還是低電平,Q4、Q5都會(huì)截止Q8截止,不會(huì)造成H橋短路故障。當(dāng)GPB0輸出為低電平(即ZDJ_A點(diǎn)為0 V)時(shí),則Q3、Q6截止,Q7截止,GPH9的輸出電平可以控制電機(jī)反轉(zhuǎn)或停機(jī)。若GPH9輸出高電平(即ZDJ_B點(diǎn)為3.3 V),則Q4、Q5導(dǎo)通Q8導(dǎo)通MOTOR_A點(diǎn)為MGV+,Q5導(dǎo)通MOTOR_B點(diǎn)為GND,此時(shí)直流電機(jī)將會(huì)反轉(zhuǎn)。當(dāng)GPH9輸出低電平時(shí),Q4、Q5都會(huì)截止Q8截止,電機(jī)停機(jī)。二極管D8~D11為續(xù)流二極管,用于釋放電機(jī)線圈上產(chǎn)生的反電動(dòng)勢(shì)。電阻R162、R163為限流/保護(hù)電阻。PWM0輸出信號(hào)通過(guò)一個(gè)電阻連接到一個(gè)電容上,信號(hào)通過(guò)R82和C127進(jìn)行濾波,從而實(shí)現(xiàn)一個(gè)簡(jiǎn)單的DAC控制電路,將輸出連接接到直流電機(jī)驅(qū)動(dòng)電路,從而實(shí)現(xiàn)直流電機(jī)驅(qū)動(dòng)[4]。
3 軟件設(shè)計(jì)
軟件設(shè)計(jì)是基于Windows CE操作系統(tǒng)之上構(gòu)建的,軟件框圖如圖3所示。
3.1 驅(qū)動(dòng)部分
首先是定時(shí)器的分配。S3C2410A提供了5個(gè)定時(shí)器Timer0~Timer4,Timer4分配作為操作系統(tǒng)時(shí)鐘Tick,將Timer3分配給觸摸屏。PWM定時(shí)器驅(qū)動(dòng)程序用Timer0和Timer1得到PWM輸出信號(hào)。PWM定時(shí)器根據(jù)正弦函數(shù)sinx的值不斷改變PWM的占空比,就可以輸出一個(gè)正弦方波。
在本系統(tǒng)中會(huì)使用到GPIO、PWM等驅(qū)動(dòng),當(dāng)使用這些驅(qū)動(dòng)時(shí),流式接口驅(qū)動(dòng)程序把設(shè)備抽象成文件系統(tǒng)進(jìn)行操作。首先電機(jī)監(jiān)控器程序使用API對(duì)設(shè)備進(jìn)行訪問(wèn),文件API被操作系統(tǒng)轉(zhuǎn)發(fā)到FileSys.exe進(jìn)程中;然后FileSys.exe發(fā)現(xiàn)是對(duì)設(shè)備進(jìn)行操作,就會(huì)把執(zhí)行交到設(shè)備管理器,接著設(shè)備管理器根據(jù)具體的請(qǐng)求,調(diào)用不同的流式接口驅(qū)動(dòng)程序中暴露的接口;最終,驅(qū)動(dòng)程序負(fù)責(zé)與硬件交互。
3.2 線程部分
Windows CE的調(diào)度嚴(yán)格按照優(yōu)先級(jí)來(lái)進(jìn)行。具有最高優(yōu)先級(jí)的線程如果處于就緒狀態(tài),總會(huì)被調(diào)度系統(tǒng)選中;如果系統(tǒng)中存在多個(gè)優(yōu)先級(jí)相同的就緒任務(wù),這些進(jìn)程以時(shí)間片輪算法調(diào)度;如果線程的時(shí)間片大小被設(shè)置為0,那它會(huì)一直占有處理器,直到線程結(jié)束后進(jìn)入阻塞掛起或休眠狀態(tài)[5]。
主線程(流程圖如圖4所示):主要響應(yīng)各種窗口消息事件??紤]到軟件要能及時(shí)響應(yīng)用戶(hù)發(fā)出的各種事件,主線程的優(yōu)先級(jí)設(shè)為T(mén)HREAD_PRIORITY_HIGHEST(高于正常優(yōu)先級(jí)2級(jí))。
監(jiān)控功能主要通過(guò)3個(gè)線程實(shí)現(xiàn)。溫度監(jiān)控線程:實(shí)現(xiàn)對(duì)兩個(gè)電機(jī)溫度的監(jiān)控,一旦溫度超過(guò)預(yù)定值,立刻停止電機(jī)轉(zhuǎn)動(dòng),從而保護(hù)電機(jī)。因?yàn)榇诉M(jìn)程的任務(wù)必須及時(shí)處理,溫度監(jiān)控線程的優(yōu)先級(jí)設(shè)為T(mén)HREAD_ PRIORITY_TIME_CRITICAL(高于正常優(yōu)先級(jí)3級(jí),具有這個(gè)優(yōu)先級(jí)的線程不會(huì)被搶占)。步進(jìn)電機(jī)轉(zhuǎn)動(dòng)控制線程:步進(jìn)電機(jī)控制口線為GPC0、GPC5、GPC6、GPC7,只有不停地控制時(shí)序,才可以控制電機(jī)轉(zhuǎn)動(dòng),電機(jī)運(yùn)行監(jiān)控器軟件單獨(dú)使用一個(gè)線程來(lái)實(shí)現(xiàn)控制電機(jī)的轉(zhuǎn)動(dòng)。步進(jìn)電機(jī)轉(zhuǎn)動(dòng)控制線程的優(yōu)先級(jí)設(shè)為T(mén)HREAD_ PRIORITY_NORMAL,擁有正常優(yōu)先級(jí)。電機(jī)狀態(tài)顯示線程:電機(jī)運(yùn)行監(jiān)控器軟件中有溫度計(jì),LED時(shí)鐘,轉(zhuǎn)速表3個(gè)控件分別用來(lái)顯示電機(jī)的狀態(tài),任務(wù)量比較大,占用時(shí)間比較多,為了不影響電機(jī)運(yùn)行監(jiān)控器軟件的實(shí)時(shí)性,電機(jī)狀態(tài)顯示線程的優(yōu)先級(jí)設(shè)為T(mén)HREAD_ PRIORITY_BELOW_NORMA L(低于正常優(yōu)先級(jí)一級(jí))。
3.3 界面部分
設(shè)計(jì)虛擬儀器面板。根據(jù)實(shí)物,在虛擬面板上放置設(shè)計(jì)好的ActiveX控件,在對(duì)象監(jiān)視器中對(duì)各個(gè)控件的參數(shù)進(jìn)行修改,使其與實(shí)際相符。再對(duì)各個(gè)控件進(jìn)行編程,使其實(shí)現(xiàn)實(shí)際控件所具備的功能及各個(gè)控件之間的邏輯控制關(guān)系。LED數(shù)碼管控件通過(guò)矩形背景繪制和數(shù)碼管的繪制產(chǎn)生;溫度計(jì)控件通過(guò)水銀柱的繪制和刻度的繪制產(chǎn)生;圓形儀表盤(pán)控件通過(guò)一個(gè)儀表盤(pán)繪制和一個(gè)刻度的繪制產(chǎn)生;大字體按鈕控件通過(guò)一個(gè)立體矩形的繪制和一個(gè)大字體的繪制產(chǎn)生??紤]到刷新可能對(duì)界面產(chǎn)生的影響,在繪制控件過(guò)程中均采用雙緩沖技術(shù)。
4 系統(tǒng)測(cè)試
將軟件與硬件聯(lián)系起來(lái),得到一個(gè)完整的系統(tǒng)。對(duì)系統(tǒng)的各項(xiàng)功能進(jìn)行測(cè)試,可以達(dá)到預(yù)期的效果。對(duì)電機(jī)的運(yùn)行時(shí)間、轉(zhuǎn)速、表面溫度等各個(gè)指標(biāo)進(jìn)行了監(jiān)控,效果圖如圖5所示。
本文設(shè)計(jì)的是基于Windows CE操作系統(tǒng)的電機(jī)監(jiān)控系統(tǒng)。由于硬件的限制,直流電機(jī)轉(zhuǎn)速測(cè)量是根據(jù)PWM得到的估測(cè)值,如要得到比較理想的結(jié)果,可以使用轉(zhuǎn)速傳感器來(lái)實(shí)現(xiàn)測(cè)速。盡管如此,整個(gè)系統(tǒng)安全可靠,實(shí)時(shí)性和穩(wěn)定性高,硬件成本低,軟件界面友好,具有一定的推廣前景,方便以后移植到實(shí)際工控設(shè)備中。
參考文獻(xiàn)
[1] 吳晨曦,蔣嶸,伍新,等.電機(jī)運(yùn)行監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)械工程與自動(dòng)化,2012(2):147-148.
[2] 王大鵬,范惠林,陳丹強(qiáng),等.基于ARM-WinCE的某型航空發(fā)動(dòng)機(jī)溫控盒檢測(cè)儀設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2013,39(5):8-11.
[3] 鄒中華,吳陳,曾慶軍.基于S3C2410的直流電機(jī)PWM調(diào)速系統(tǒng)[J].微計(jì)算機(jī)信息,2008(24):130-131.
[4] 周立功.ARM&WINCE實(shí)驗(yàn)與實(shí)踐—基于S3C2410[M].北京:北京航天航空大學(xué)出版社,2007.
[5] 何宗鍵.WindowsCE嵌入式系統(tǒng)[M].北京:北京航天航空大學(xué)出版社,2007.