數控系統的操作系統平臺選擇必須滿足控制系統的實時性要求,而且在相當程度上決定了數控系統的開放程度。從數控技術的發展來看,基于實時操作系統的開放式數控系統已成為必然的趨勢。
RT-Linux是基于Linux系統并可運行于多種硬件平臺的32位硬實時操作系統(Hard real-timeoperating system)。它繼承了MERT系統的設計思想,即以通用操作系統為基礎,在同一操作系統中既提供嚴格意義上的實時服務,又提供所有的標準P()SIX服務。RT-Linux源代碼公開,易于修改,使系統成本降低,源代碼的公開使數控系統的開發擺脫了對國外軟件公司的依賴,有利于提高數控軟件國產化程度。
現介紹一種基于PC機+FireWire (IEEE1394)光纖通信接口卡+FireWire (IEEE1394)光纖信號轉接模塊+通用伺服驅動器或者I/O模塊的硬件結構的軟件伺服數控系統。重點介紹根據此模型開發的基于RT-Linux的數控系統嵌人式PI_C及其實現方法。
1 數控系統的硬件結構
系統硬件建立在通用工業PC的開放體系之上,包括工控機及其外圍設備,控制信息輸人/輸出接口,伺服驅動器設備。工控機采用RedHatLinux8.0+RTLinux3. 1操作系統,數控系統的人機界面、數控代碼處理、數控插補、位置伺服控制、位置控制指令平滑處理、運動控制補償以及PLC控制都通過工控機由軟件來實現,系統不需要運動控制卡,只需要1塊控制信息輸入/輸出接口卡(光纖通訊適配卡),這樣大大減少了數控系統對硬件的依賴,有利于提高系統的開放性。
系統的位置控制信息、位置反饋信息、I/O輸人輸出信息通過光纖實現主機與伺服接口模塊和I/O接口模塊之間的信息交換,光纖通訊基于IEEE1394協議。這種信息傳輸方式,簡化了數控系統的接引線,提高了數控系統的可靠性,也使得系統的維護更為方便。
2 數控系統的軟件結構
開放的系統硬件接口使用戶可根據需要自由選用通用的工業PC作為控制系統的硬件平臺。但是,數控系統的多任務特性和實時性要求卻限制了通用操作系統如DOS, Windows等在數控系統中的應用。近年來,RT-Linux以其優異的性能引起了越來越多的關注,并在實時控制領域得到了成功的應用。
2.1 RT-Linux的體系結構
RT-Linux是基于Linux系統并可運行于多種硬件平臺的多任務實時操作系統。通過修改Linux內核的硬件層,采用中斷仿真技術,在內核和硬件之間實現了一個小而高效的實時內核,并在實時內核的基礎上形成了小型的實時系統,而Linux內核僅作為實時系統最低優先級的任務運行。
RT-Linux按實時性不同分為實時域和非實時域。實時內核由一個核心部分和多個可選部分組成,核心部分只負責高速中斷處理,支持SMP操作且不會被底層同步或中斷例程延遲或重人。其他功能則由可動態加載的模塊擴充。而不影響系統實時性的操作(即非實時域的操作)RT-Linux均留給非實時的Linux系統完成。
2.2 基于RT-Linux的數控系統軟件結構
按照數控系統的層次劃分,數控系統的軟件分為應用單元和控制單元兩大部分,其中應用單元向用戶提供了1個應用軟件環境和1組標準的系統功能函數,包括操作界面、數據管理。而控制單元相當于1個高效的NC-PLC內核,完成基本的數控功能,包括譯碼、數學預處理、速度控制、插補、I/O處理、實時狀態監控等。
應用單元的各個模塊由總控模塊統一調度,并通過消息觸發實現與總控模塊的交互。基于消息的通信機制使應用單元獨立于控制單元,應用單元模塊根據用戶的操作發出相應的消息,總控模塊則根據消息類別生成控制單元能夠識別的指令和數據。系統各個任務之間的通信均通過Linux內核提供的進程間通信機制進行。對于有順序要求的數據交換采用先進先出隊列(包括實時FIFO和非實時FIFO),而對于容量不大的數據交換則采用共享內存的方式進行。
控制單元按照任務實時性要求的不同可以劃分為實時任務和非實時任務,對于實時性要求不高的任務如編譯、預處理、狀態監控等可以放在非實時域執行,而對于實時性要求比較高的任務如精插補、PLC控制、位置伺服等則需要在實時域執行,由RT-Linux對實時任務和非實時任務按照優先級統一調度。
3 嵌入式PLC的設計及實現
3.1 嵌入式PLC的模塊組成
如圖2所示,數控系統的PLC控制模塊實時性要求較高,因而必須在系統的實時域內運行。根據通用數控系統的PLC控制以及數控系統軟件模塊化設計的要求,將數控系統的PLC控制模塊作為RT-Linux系統的實時任務之一,其優先級和調用周期取決于數控系統各任務的實時性要求以及控制要求的響應時間。PLC控制模塊主要完成數控系統的邏輯控制,而被控制的輸人/輸出也就是I/O的輸人/輸出由光纖通信適配卡輸人/輸出模塊來完成,即完成數控系統的PLC控制需要2個RT-Linux實時任務。
圖3中,適配卡輸人/輸出主要是完成數控系統的輸人/輸出,即各軸位置控制命令的輸出、I/O的輸出、I/O輸人以及位置反饋輸人,實際上是數控系統控制卡的設備驅動模塊,其優先級在數控系統的各實時任務中為最高級,根據其硬件特征以及運動控制要求,其響應周期為100us,響應時鐘周期由光纖通信適配卡上的硬件定時器產生。根據RT-Linux系統對硬件中斷的響應機制,輸人/輸出控制任務的實時性是可以保證的,這一點在我們的數控系統已經得到驗證。
圖3中PLC控制主要是完成數控系統的PLC控制功能,其任務優先級低于適配卡輸人/輸出,同時也低于數控系統的精插補實時任務和位置伺服實時任務。根據通用數控系統的PLC控制要求,確定其響應周期為5 ms,響應周期由RT-Linux的軟件定時器產生,根據RT-Linux系統的實時多任務調度機制,PLC控制任務的實時性是可以保證的。在實際應用中也得到驗證。
3.2 嵌入式PLC的實時任務模塊數據通信
完成數控系統PLC控制的2個實時任務之間由于需要輸人/輸出的數據量(一般情況下為64輸人,64輸出,但輸人/輸出根據需要還可以擴展)不太大,因而采用共享內存的通信方式,在適配卡輸人/輸出和PLC控制2個實時任務之間開兩塊共享內存,一塊用于適配卡向PLC控制傳輸I/O口狀態信息,另一塊用于PLC控制向適配卡輸人輸出任務傳輸經PLC邏輯處理后的控制信息。
在這里,2個實時任務間不采用RT-FIFO進行通訊的原因在于:1)這2個實時任務間通訊的數據量不是很大,而且這2個實時任務運行周期差別較大,如果采用RT-FIFO傳輸數據,為了避免FIFO的阻塞相應地要增加2個任務間的協調機制,通訊效果未必比采用共享內存好。2)相對而言,共享內存的讀寫速度比FIFO要較快。
3.3 嵌入式PLC的實時任務的實現
適配卡輸人/輸出為動態可加載模塊,適配卡輸入/輸出模塊(任務)以100 }.s為周期的硬件定時中斷,完成各軸位置控制指令和I /O的輸出、各軸位置反饋值和I/O的輸人,適配卡輸出值來自于位置伺服任務和PLC控制任務,輸入值來自于適配卡的輸入接口。
PLC控制模塊(任務)同樣也是一個動態可加載模塊,它以10 ms的軟定時,周期性地從它與總控模塊通訊的RT-FIFO讀取控制信息(如M指令,S指令及T指令),同時從它與適配卡輸入/輸出模塊通訊的共享內存中讀取I/O信息,然后進行邏輯處理,最后將結果寫人共享內存供適配卡輸人/輸出模塊讀取并輸出。
前該嵌人式PLC模塊已成功應用于清華大學精儀系制造工程研究所THHP- II數控系統(基于RedHatLinux8.0十RTLinux3. 1)中,嵌人式PLC模塊可以滿足對普通數控系統和加工中心的PLC控制要求。
(審核編輯: 智匯張瑜)
分享