基于WinCE的數(shù)控系統(tǒng)掉電保護(hù)的設(shè)計(jì)及實(shí)現(xiàn)
點(diǎn)擊:1153
A+ A-
所屬頻道:新聞中心
數(shù)控機(jī)床加工時(shí),若突然發(fā)生斷電,常常要求數(shù)控系統(tǒng)能準(zhǔn)確地保存一些重要參數(shù),如加工速度、斷電位置、主軸速度、加工行數(shù)等,以便在來(lái)電時(shí)能在斷點(diǎn)位置以相同的參數(shù)繼續(xù)加工。這不僅可縮短加工時(shí)間,更重要的是能保證產(chǎn)品質(zhì)量。Windows CE是Microsoft為多種嵌入式系統(tǒng)而設(shè)計(jì)的一種緊湊、高效的模塊化操作系統(tǒng),支持多進(jìn)程、多線程、搶先式多任務(wù)操作,能滿足實(shí)時(shí)控制的要求。數(shù)控系統(tǒng)掉電保護(hù)是強(qiáng)實(shí)時(shí)性的任務(wù),可以通過(guò)觸發(fā)中斷的方式來(lái)獲得Windows CE操作系統(tǒng)的服務(wù)。
本文介紹的方法是用ARM9系統(tǒng)芯片S3C2410在Windows CE構(gòu)建的嵌入式平臺(tái)上實(shí)現(xiàn)的。整個(gè)掉電保護(hù)實(shí)現(xiàn)的基本思路是:產(chǎn)生掉電信號(hào)、捕捉掉電信號(hào)、處理掉電信號(hào)以及掉電信息恢復(fù)和文件處理。
1 系統(tǒng)的硬件平臺(tái)
本系統(tǒng)采用三星公司的基于ARM9體系結(jié)構(gòu)的S3C2410微處理器。SDRAM是一種易失性存儲(chǔ)器作為程序的運(yùn)行空間,類(lèi)似于PC機(jī)的內(nèi)存;Flash作為程序存儲(chǔ)空間是非易失性的。程序運(yùn)行過(guò)程中的數(shù)據(jù)往往緩存在SDRAM中,在系統(tǒng)掉電時(shí)必須將文件寫(xiě)到Hash中。
本系統(tǒng)采用3.3 V和5 V的直流穩(wěn)壓電源,其中S3C2410及部分外圍器件需3.3 V電源,另外部分器件需5 V電源供電。掉電保護(hù)電路采用MAX708S芯片,MAX708S具備掉電監(jiān)控功能,電源電壓低至4.5 V時(shí),產(chǎn)生掉電信號(hào),通知系統(tǒng)做好掉電保護(hù)工作。
正常工作時(shí),Pn的電壓Va=5×1.8/(4.7+1.8)=1.385 V。通過(guò)MAX708S模塊輸入電壓PFI與1.25 V比較,這樣MAX708S模塊輸出電壓PFO為高電平。突然掉電時(shí),5 V信號(hào)掉到4.5 V以下時(shí),PFI的電壓為4.5×1.8/(4.7+1.8)=1.246V<1.25 V。這樣MAX708S模塊輸出電壓為低電平,產(chǎn)生掉電中斷預(yù)警信號(hào),通過(guò)外部中斷引腳EIN0產(chǎn)生中斷,接下來(lái)可以進(jìn)行一些重要數(shù)據(jù)保護(hù)。
2 掉電保護(hù)的軟件實(shí)現(xiàn)
2.1 Windows CE中斷驅(qū)動(dòng)設(shè)計(jì)
數(shù)控系統(tǒng)掉電保護(hù)是強(qiáng)實(shí)時(shí)性的任務(wù),可以通過(guò)觸發(fā)中斷的方式來(lái)獲得Windows CE操作系統(tǒng)的服務(wù)。本驅(qū)動(dòng)引入的中斷主要是為了讓CPU知道機(jī)床運(yùn)動(dòng)過(guò)程出現(xiàn)突然掉電的問(wèn)題,應(yīng)當(dāng)及時(shí)保存一些重要數(shù)據(jù)。
在Windows CE系統(tǒng)中,所有用戶空間進(jìn)程通過(guò)系統(tǒng)調(diào)用來(lái)請(qǐng)求內(nèi)核服務(wù),所有設(shè)備通過(guò)外部中斷來(lái)請(qǐng)求內(nèi)核服務(wù),中斷處理是流接口驅(qū)動(dòng)程序中直接和硬件打交道的部分。中斷處理過(guò)程如圖3所示。中斷發(fā)生后,信號(hào)發(fā)往異常處理器,并且中斷支持處理器調(diào)用OAL函數(shù)OEMInterruptDisable,關(guān)閉來(lái)自該硬件的中斷。中斷服務(wù)例程ISR被內(nèi)核調(diào)用并返回結(jié)果,且通過(guò)內(nèi)核設(shè)置Event事件來(lái)觸發(fā)中斷服務(wù)線程IST。IST被喚醒后調(diào)用各種I/O函數(shù)完成中斷處理并返回In.terruptDone通知內(nèi)核。內(nèi)核調(diào)用OEMInterruptDone重新開(kāi)啟中斷。
2.2 掉電保存實(shí)現(xiàn)
Windows CE是一個(gè)搶占式多任務(wù)的操作系統(tǒng),調(diào)度程序使用基于優(yōu)先級(jí)的時(shí)間片算法對(duì)線程進(jìn)行調(diào)度。本系統(tǒng)實(shí)現(xiàn)掉點(diǎn)及時(shí)保存功能主要采用兩個(gè)線程:驅(qū)動(dòng)的外部中斷0線程和應(yīng)用程序的掉電中斷監(jiān)控線程。應(yīng)用程序的掉電中斷監(jiān)控線程是為了更好利用應(yīng)用程序資源(如一些運(yùn)動(dòng)控制接口函數(shù)),并設(shè)置為高優(yōu)先級(jí),以便掉電中斷時(shí)操作系統(tǒng)會(huì)立刻切換至監(jiān)控掉電中斷線程執(zhí)行。兩個(gè)線程是通過(guò)事件IntterruptEvent同步。
如圖4所示,系統(tǒng)上電后,外部中斷0線程和掉電中斷監(jiān)控線程都是掛起狀態(tài)。當(dāng)?shù)綦姳O(jiān)控電路檢測(cè)到電壓下降(即突然掉電),則通過(guò)外部中斷引腳EIN0產(chǎn)生中斷,喚醒外部中斷0的處理線程EINT0_In-trThread,設(shè)置同步事件為通知狀態(tài)。掉電中斷監(jiān)控線程等到同步事件后,機(jī)床馬上急停,獲取當(dāng)前機(jī)床位置、進(jìn)給速度、加工行數(shù)及主軸參數(shù),并及時(shí)將參數(shù)寫(xiě)入掉電保存文件DropInt.txt中。
2.3 掉電信息恢復(fù)及文件處理
機(jī)床恢復(fù)電源后,系統(tǒng)自動(dòng)檢測(cè)NandFlash里面是否存在掉電保存文件DropInt.txt。如果存在的話,進(jìn)入加工界面時(shí),系統(tǒng)打開(kāi)掉電保存文件,讀取各種參數(shù)重新賦值,并會(huì)提醒“存在掉電保存文件,是否恢復(fù)斷點(diǎn)”。若需要從掉電瞬間的斷點(diǎn)位置以相同的參數(shù)繼續(xù)加工,則點(diǎn)擊恢復(fù)斷點(diǎn),加工頭將勻速移動(dòng)到斷點(diǎn)位置。
由于中斷響應(yīng)及線程切換存在時(shí)延,機(jī)床高速加工急停存在慣性。我們需要對(duì)掉電保存文件信息進(jìn)行處理:機(jī)床坐標(biāo)為工件原點(diǎn)的絕對(duì)坐標(biāo),作為重新定位點(diǎn);根據(jù)不同的機(jī)械特性,經(jīng)過(guò)實(shí)際測(cè)試回退10—20行加工代碼;獲取文件中進(jìn)給速度和主軸速度,重新加工時(shí),設(shè)置為進(jìn)給速度和主軸速度20%左右,并在3 s內(nèi)均勻提升到掉電保存文件中的進(jìn)給速度值和主軸速度值。
3 結(jié)語(yǔ)
本課題的掉電保護(hù)設(shè)計(jì)方法是基于ARM和Windows CE構(gòu)建的系統(tǒng)平臺(tái),在32位嵌入式數(shù)控系統(tǒng)開(kāi)發(fā)中具有典型代表意義?;谠摲桨冈O(shè)計(jì)的嵌入式數(shù)控雕刻機(jī)、數(shù)控切割機(jī)在實(shí)際加工過(guò)程中,掉電保護(hù)功能完備,實(shí)現(xiàn)恢復(fù)電源后無(wú)痕加工。因此在嵌入式數(shù)控系統(tǒng)設(shè)計(jì)中具有很大推廣價(jià)值及應(yīng)用空間。
(審核編輯: 智匯胡妮)
分享