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