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