基于不同操作系統(tǒng)的數(shù)控系統(tǒng)任務(wù)管理的特點過去,國內(nèi)的數(shù)控系統(tǒng)大多建立在DOS操作系統(tǒng)平臺和其他一些專用實時操作系統(tǒng)之上,在專用實時操作系統(tǒng)上開發(fā)數(shù)控系統(tǒng)比較方便,但價格昂貴,不適合我國數(shù)控技術(shù)的發(fā)展,也不利于數(shù)控系統(tǒng)的開放化。
在DOS平臺上開發(fā)數(shù)控系統(tǒng)比較經(jīng)濟,我國自己設(shè)計制造的數(shù)控機床主要還是依靠DOS系統(tǒng),由于DOS系統(tǒng)存在640K系統(tǒng)內(nèi)存的限制,大大的束縛了其實時開發(fā)能力。但其操作系統(tǒng)是單任務(wù)的,沒有充分利用i386體系的硬件資源,它的內(nèi)存只有640K可以利用,網(wǎng)絡(luò)功能欠缺,缺乏保護機等,要在DOS上增加實時多任務(wù)模塊比較麻煩。Windows是一個多任務(wù)操作系統(tǒng),但它不是一個實時操作系統(tǒng),因此不能直接用于數(shù)控系統(tǒng)的開發(fā)。近幾年Linux發(fā)展很快,但Linux亦不是實時系統(tǒng),應(yīng)用在數(shù)控系統(tǒng)中需將其進行改造,一般需加入實時內(nèi)核RTLinux,實現(xiàn)高優(yōu)先級任務(wù)的搶占機制,以滿足數(shù)控系統(tǒng)對硬實時性的要求,使其可以很好的應(yīng)用在數(shù)控系統(tǒng)中。
嵌入式Linux在數(shù)控系統(tǒng)中的應(yīng)用本例將嵌入式Linux技術(shù)應(yīng)用到滾軋機床中,開發(fā)基Linux平臺的滾軋機數(shù)控系統(tǒng),下面將本系統(tǒng)的開發(fā)和研究作一介紹。
系統(tǒng)建模數(shù)控滾軋機是采用數(shù)控技術(shù)的機床,它采用計算機作為控制系統(tǒng),其組成如所示。數(shù)控機床框圖現(xiàn)代數(shù)控系統(tǒng)基本上是由上層軟件、數(shù)據(jù)采集、程序解釋、PLC管理、刀補處理、插補計算、位置控制等幾部分構(gòu)成。它的大體的數(shù)據(jù)流程如所示,首先,程序解釋任務(wù)對程序加工G代碼進行解釋,歸一化處理后放到刀補緩沖區(qū),然后進行刀補處理,刀補處理后的數(shù)據(jù)存入插補緩沖區(qū)供插補任務(wù)處理,插補任務(wù)主要是在插補任務(wù)周期內(nèi)完成各個軸的位置增量計算,*后是位置控制任務(wù),它主要是發(fā)出運動指令控制各個軸的運動;PLC主要處理機床I/O,進行邏輯控制和機床輔助功能的控制、處理突發(fā)事件等。其中與實時相關(guān)的任務(wù)有數(shù)據(jù)采集、程序解釋、PLC管理、刀補處理、插補計算、位置控制等,它們需要被周期性的調(diào)用,并且各個任務(wù)之間要考慮到同步問題。
數(shù)控系統(tǒng)數(shù)據(jù)流程依據(jù)機床功能分析,我們利用嵌入式技術(shù),結(jié)合滾軋機的特點,設(shè)計的嵌入式數(shù)控系統(tǒng)軟件體系結(jié)構(gòu)如所示。Linux中的進程運行在兩種模式下:系統(tǒng)模式(核心態(tài))和用戶模式(用戶態(tài))。在實時Linux下,為了保證數(shù)控系統(tǒng)的實時任務(wù)能夠及時響應(yīng),所有和實時相關(guān)的任務(wù)都必須放在核心態(tài)下,每個任務(wù)用一個獨立的內(nèi)核進程來執(zhí)行,這包括:位置控制,插補運算,PLC管理和數(shù)據(jù)處理等。而非實時任務(wù)則放在用戶態(tài)下,它們在任何時候都不會打斷實時任務(wù)的運行,這包括:狀態(tài)顯示,人機界面,文件管理和參數(shù)設(shè)置。
核心態(tài)和用戶態(tài)下進程的通訊主要是依靠實時擴展部件RTAI提供的實時FIFO和共享內(nèi)存來完成。
系統(tǒng)實時性解決辦法從Linux進程調(diào)度的3個策略:“非實時,實時先進先出,實時基于優(yōu)先權(quán)輪轉(zhuǎn)法”可以看出,Linux對于實時任務(wù)是有特殊處理的(“軟實時”),雖然并沒有滿足“硬實時”要求,但是這種軟實時可以滿足一般嵌入式系統(tǒng)的要求。RT_Linux是能夠提供實時功能的Linux操作系統(tǒng),它是美國新墨西哥理工學(xué)院開發(fā)的。
RT_Linux提供了運行特殊實時任務(wù)和中斷句柄的能力,是一種硬實時系統(tǒng)。在X86機器上,RT_Linux執(zhí)行中斷句柄的延遲不超過15微秒,當調(diào)度一個經(jīng)常性任務(wù)時,該任務(wù)將在35微秒內(nèi)被執(zhí)行,使它可以處理實時任務(wù)。具體講,RT_Linux內(nèi)核將普通操作系統(tǒng)當作它的一個低優(yōu)先級任務(wù),它可以在需要的時候搶占普通Linux任務(wù),這是通過對中斷控制來實現(xiàn)的,因此可以滿足數(shù)控系統(tǒng)對實時性的需求。在CNC系統(tǒng)中,就要對各種任務(wù)根據(jù)實時性要求按優(yōu)先級排隊,RT_Linux和Linux相結(jié)合進行工作,按照實時性需求共同處理CNC系統(tǒng)中的任務(wù)。RT_Linux的內(nèi)核負責實時任務(wù)。而一些非實時任務(wù)可交由Linux內(nèi)核處理在兩個內(nèi)核之間可以通過多種途徑進行通信,如FIFO,共享內(nèi)存等方法,兩個內(nèi)核相互協(xié)調(diào),共同完成加工任務(wù)。