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