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