關(guān)鍵詞: 開放式數(shù)控系統(tǒng),;CPLD;ARM,;Windows CE,;中斷控制
隨著工業(yè)自動化技術(shù)和數(shù)控技術(shù)的飛速發(fā)展,數(shù)控系統(tǒng)的功能得到了極大的擴展,。用戶對數(shù)控系統(tǒng)提出可聯(lián)網(wǎng),、開放性等更高的要求。開放性是數(shù)控系統(tǒng)未來的發(fā)展趨勢,。開放式數(shù)控系統(tǒng)的核心是建立一種對數(shù)控系統(tǒng)的軟硬件開發(fā)商,、機床制造商和最終用戶都開放的體系結(jié)構(gòu)和標(biāo)準(zhǔn),使數(shù)控系統(tǒng)不依賴于特定的廠家,,達到可互聯(lián),、可互操作、可重組和可互換的目的[1],?;诠I(yè)PC的開放式數(shù)控系統(tǒng)已得到廣泛運用,它能夠快速開發(fā)出獨具特色的軟件系統(tǒng),,具有良好的人機界面,但資源利用率不高,、體積較大,、攜帶不方便。ARM,、CPLD和DSP等微處理器的快速發(fā)展,,為開放式數(shù)控系統(tǒng)的發(fā)展提供了新的實現(xiàn)方法[2]。
ARM具有較強的事務(wù)管理功能,,可以運行具有良好人機界面的多線程應(yīng)用程序,,其優(yōu)勢主要體現(xiàn)在程序控制上。CPLD具有較強的邏輯運算能力,,可用于進行插補運算及運動控制等,。Windows CE是嵌入式實時操作系統(tǒng),其獨特體系結(jié)構(gòu)和運行機制使其能夠快速響應(yīng)外部中斷,并調(diào)度相關(guān)程序進行處理[3],,可以滿足數(shù)控系統(tǒng)的實時性要求,。本文提出一種基于ARM9和CPLD的開放式數(shù)控系統(tǒng)。該系統(tǒng)中ARM9移植了Windows CE嵌入式操作系統(tǒng),,通過開發(fā)應(yīng)用程序?qū)崿F(xiàn)信息輸入,、運動顯示和粗插補等功能; CPLD實現(xiàn)精插補和運動控制,。整個系統(tǒng)具有結(jié)構(gòu)緊湊,、集成度高、可靠性強和友好人機交互等特點,。
1 系統(tǒng)設(shè)計
1.1 系統(tǒng)硬件設(shè)計
本系統(tǒng)ARM采用SAMSUNG公司的S3C2410,,CPLD采用ALTERA公司FLEX6000系列的EPF6016。系統(tǒng)硬件結(jié)構(gòu)如圖1所示,。
S3C2410內(nèi)部資源豐富,,可嵌入Windows CE操作系統(tǒng),并進行復(fù)雜的信息處理,。系統(tǒng)以LCD和觸摸屏為人機交互裝置,,采用10 MB的以太網(wǎng)接口芯片CS8900A,可連接到Internet或局域網(wǎng),。在PC機上生成的CAD文件通過以太網(wǎng)或SD卡輸入到處理器中,。系統(tǒng)采用NANDFLASH存儲數(shù)據(jù)和程序。
EPF6016是ALTERA公司為大容量設(shè)計提供的一種低成本可編程交織式門陣列,,共有16 000個可用門,、1 320個邏輯單元、117個I/O引腳,,每個I/O引腳都有獨立的三態(tài)輸出使能控制,。EPF6016接收ARM的插補指令進行精插補,輸出控制信號,,并采集編碼器的反饋信號和限位開關(guān)零點開關(guān)的狀態(tài)信號,。
本系統(tǒng)將EPF6016直接連接到S3C2410的存儲總線上。S3C2410與EPF6016之間依靠24位數(shù)據(jù)總線和8位地址總線進行指令和數(shù)據(jù)的傳輸,,提高了通信效率,。S3C2410與EPF6016之間的總線還包括了片選信號線、讀寫控制信號線和中斷信號線,。
1.2 系統(tǒng)軟件開發(fā)
本系統(tǒng)軟件開發(fā)包括Windows CE應(yīng)用程序開發(fā)和CPLD程序開發(fā),。采用C#語言開發(fā)Windows CE應(yīng)用程序,采用VHDL語言開發(fā)CPLD程序,。系統(tǒng)軟件結(jié)構(gòu)如圖2所示,。
Windows CE應(yīng)用程序是基于多線程的。應(yīng)用程序包括信息輸入、譯碼,、運動顯示,、故障管理、電機啟動停止和插補等功能模塊,,每個功能模塊都是一個獨立的線程,。信息輸入、譯碼是非實時任務(wù),,線程優(yōu)先級設(shè)為默認值251,;故障管理、電機啟動停止是實時非周期性任務(wù),,屬于弱實時任務(wù),,線程優(yōu)先級設(shè)為247,即用戶態(tài)實時級別,;插補,、運動顯示是實時周期性任務(wù),屬于強實時任務(wù),,線程優(yōu)先級設(shè)為3,,即核心態(tài)實時級別。
CPLD外接40 MHz時鐘,,程序中使用的所有時序均由該時鐘分頻而得,。本系統(tǒng)采用基于數(shù)據(jù)采樣法的粗精兩級插補結(jié)構(gòu),插補周期為8 ms,,采樣周期為4 ms,。因此中斷程序和精插補程序基于125 Hz時序運行;數(shù)據(jù)采樣,、故障監(jiān)測和速度位置控制基于250 Hz時序運行,。
系統(tǒng)數(shù)據(jù)傳遞如圖3所示。插補是本系統(tǒng)的一個重要環(huán)節(jié),,因為插補直接影響系統(tǒng)的實時性,、運動控制和加工精度。從圖3可見粗插補計算結(jié)果從應(yīng)用程序傳遞到操作系統(tǒng)內(nèi)核,,再由內(nèi)核發(fā)送到CPLD進行精插補運算,。由于插補是一項硬實時任務(wù),,因此數(shù)據(jù)傳遞必須實時準(zhǔn)確,。ARM與CPLD之間以中斷方式保證通信的實時性。而應(yīng)用程序和操作系統(tǒng)內(nèi)核通信的實時性則由操作系統(tǒng)的實時性保證,。
2 系統(tǒng)中斷控制
本系統(tǒng)采用基于數(shù)據(jù)采樣法的粗精兩級插補結(jié)構(gòu),,插補周期為8 ms,采用中斷方式保證通信的實時性。中斷信號由CPLD每隔8 ms定時產(chǎn)生,。當(dāng)接收到CPLD的中斷信號時,,ARM把粗插補計算結(jié)果寫入CPLD的固定地址。CPLD從固定地址讀取數(shù)據(jù)計算脈沖數(shù),,輸出脈沖信號,,完成運動控制。本系統(tǒng)的中斷控制分成3部分:Windows CE中斷服務(wù),、應(yīng)用程序中斷響應(yīng)程序和CPLD程序,。
2.1 Windows CE中斷服務(wù)
Windows CE是實時操作系統(tǒng),其實時性體現(xiàn)在6個方面:(1)具有256個線程優(yōu)先級,;(2)應(yīng)用程序可以控制提供給每個線程的時間片,,計時器精確到1 ms;(3)優(yōu)先級倒置處理機制,;(4)支持嵌套中斷,;(5)中斷延遲時間短;(6)更細粒度的內(nèi)存管理控制[4-5],。Windows CE以上機制特別是中斷體系保證了數(shù)控系統(tǒng)的實時性,。
Windows CE的中斷體系包括核心態(tài)的中斷例程ISR和用戶態(tài)的中斷線程IST兩部分。ISR主要響應(yīng)中斷請求,,識別中斷源,,給操作系統(tǒng)內(nèi)核返回相應(yīng)的中斷標(biāo)識。ISR具有最高的優(yōu)先級,。本系統(tǒng)采用ISR完成中斷服務(wù),。進入ISR以后,系統(tǒng)中所有的同級或下級中斷均被屏蔽,。為了不降低系統(tǒng)執(zhí)行多任務(wù)的性能,,ISR應(yīng)非常短小精干,以使其他中斷也能夠獲得及時的服務(wù),。
定制Windows CE中斷服務(wù)程序步驟如下:
(1)在操作系統(tǒng)內(nèi)核中注冊事件hMotor,,用于操作系統(tǒng)和應(yīng)用程序中斷響應(yīng)的同步。
(2)在操作系統(tǒng)內(nèi)核中注冊插補中斷標(biāo)識號SYSINTR_PWM_READY,。
(3)調(diào)用函數(shù)InterruptInitialize,,使中斷請求和hMotor事件掛鉤,當(dāng)接收到中斷請求時操作系統(tǒng)自動將事件置為有信號,,退出ISR時將事件置為無信號,。
(4)編寫ISR程序。ISR程序框架如下:
if(IntPendVal==INTSRC_EINT1)//判斷中斷是否來自CPLD
{
s2410INT|=BIT_EINT1,;//清除中斷請求
if(PWM_FINISH==TRUE)
return(SYSINTR_PWM_READY),;
//向內(nèi)核返回中斷標(biāo)識號
rADDR=*pulse_buf,;//向CPLD寫數(shù)據(jù)
}
當(dāng)ARM接收到由CPLD發(fā)出的中斷請求,操作系統(tǒng)將調(diào)用ISR,,并將hMotor事件置為有信號,。在ISR中將粗插補計算結(jié)果寫入CPLD,并向操作系統(tǒng)內(nèi)核返回中斷標(biāo)識號,。退出ISR時,,操作系統(tǒng)將hMotor事件置為無信號。整個ISR程序非常精短,,保證了系統(tǒng)其他程序的正常運行,。
2.2 應(yīng)用程序中斷響應(yīng)程序
應(yīng)用程序無法直接獲知是否有中斷請求。利用hMotor事件使操作系統(tǒng)中斷服務(wù)與應(yīng)用程序中斷響應(yīng)程序達到同步,。通過調(diào)用WaitForSingleObject函數(shù)查詢該事件狀態(tài),,應(yīng)用程序可獲知是否有中斷請求并及時響應(yīng)中斷。中斷響應(yīng)程序框架結(jié)構(gòu)如下:
while(!IsEnd)//判斷插補是否結(jié)束
{
……//粗插補計算
WaitForSingleObject(hMotor,,INFINITE),;//無限期等待
//hMotor事件狀態(tài)變?yōu)橛行盘?br />
DeviceIoControl();//向操作系統(tǒng)傳遞
//粗插補計算結(jié)果,,即位置增量
}
插補線程啟動后進行插補計算,,調(diào)用WaitForSingleObject函數(shù)阻塞插補線程,等待hMotor事件狀態(tài)變?yōu)橛行盘?。?dāng)操作系統(tǒng)接收到中斷請求后調(diào)度ISR,,將事件置為有信號。此時WaitForSingleObject函數(shù)被返回,,插補線程阻塞狀態(tài)解除,。通過調(diào)用DeviceIoControl函數(shù)將插補結(jié)果傳遞到驅(qū)動層,再由操作系統(tǒng)將數(shù)據(jù)發(fā)送到CPLD,。插補運算時間遠小于插補周期,,因此插補線程經(jīng)常處于阻塞狀態(tài)。WaitForSingleObject函數(shù)雖然會阻塞當(dāng)前線程,,但是不會占用任何CPU資源,,因此即使插補線程優(yōu)先級較高,當(dāng)其被阻塞時也不會影響其他線程的正常運行,。
2.3 CPLD程序
CPLD程序的邏輯如圖4所示,。
通過40 MHz時鐘分頻,CPLD內(nèi)部產(chǎn)生125 Hz(周期8 ms)的脈沖序列,。當(dāng)接收到啟動指令時,,CPLD將該脈沖序列發(fā)送到ARM作為中斷信號。ARM的中斷觸發(fā)模式為沿觸發(fā),,上升沿為有效中斷請求,。ARM接收到中斷請求后,向CPLD傳送數(shù)據(jù),。CPLD內(nèi)部建立2個數(shù)據(jù)緩沖區(qū),,設(shè)置標(biāo)志FLAG。當(dāng)FLAG為0時,,CPLD將ARM傳送的數(shù)據(jù)寫入緩沖區(qū)1,,讀取緩沖區(qū)2的數(shù)據(jù)進行計算輸出;當(dāng)FLAG為1時則反之,。設(shè)定2個數(shù)據(jù)緩沖區(qū)可以保證數(shù)據(jù)讀寫的準(zhǔn)確性和運動控制的連續(xù)性,。CPLD接收到結(jié)束指令后,不再向ARM發(fā)送中斷信號,,整個系統(tǒng)的中斷控制停止,。
3 實驗
本系統(tǒng)已經(jīng)運用于激光沉積焊接機,并成功進行了實物加工,。圖5是該系統(tǒng)的激光焊接圖,。該焊接軌跡由
正方形和圓形組成。在操作系統(tǒng)ISR中寫入檢測程序,,記錄中斷情況,。在實驗中,所有中斷信號均被正確處理,,hMotor事件狀態(tài)切換正常,,沒有丟失中斷和事件的情況,即應(yīng)用程序與操作系統(tǒng),、ARM與CPLD的通信狀態(tài)良好,。該系統(tǒng)的中斷控制能保證系統(tǒng)實時性,直線加工和圓弧加工均能很好地滿足加工精度,。
本系統(tǒng)充分利用了Windows CE的良好實時性,、ARM的管理能力和CPLD的邏輯計算能力,硬件組成簡單,,軟件開發(fā)方便,,具有開放性強、實時性好,、穩(wěn)定性高,、人機交互友好和性價比高等優(yōu)點,可滿足高速度和高精度的加工要求,。本系統(tǒng)設(shè)計方案已實際運用于激光沉積焊接數(shù)控系統(tǒng)中,,運行狀態(tài)良好,加工精度較高,。本系統(tǒng)可運用于各種機床數(shù)控系統(tǒng),,具有廣泛使用價值,。
參考文獻
[1] 劉傳剛.基于Windows CE.net的開放式數(shù)控系統(tǒng)研究[J]. 機應(yīng)與液壓,2006(10):186-188.
[2] 王孫安,,張進華,,吳時軍.基于ARM的開放式數(shù)控系統(tǒng)的研究[J].現(xiàn)代制造工程,2007(9):54-57.
[3] 周毓林,,寧楊,,陸貴強,等.Windows CE.NET內(nèi)核定制及應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,,2005.
[4] 馬躍,,劉瑞,吳文江.基于Windows CE.NET的數(shù)控系統(tǒng)實時性能測試與分析[J].小型微型計算機系統(tǒng),,2007,,12(8):2208-2211.
[5] 胡朝斌,王治森,,董伯麟,,等.基于Windows CE的數(shù)控系統(tǒng)中斷控制[J].中國機械工程,2005,,16(9):761-764.