最新精品久久,欧美亚洲福利,表妹免费在线观看,久久国产二区,国产三级电影网站,日本特黄久久,成人a在线视频免费观看

基于Linux-RTAI的數(shù)控軟件結(jié)構(gòu)設(shè)計與實現(xiàn)

來源:互聯(lián)網(wǎng)

點擊:1821

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞:數(shù)控軟件 數(shù)控系統(tǒng)

      Linux是一個遵循可移植操作系統(tǒng)接口(POSIX, Portable Operating System Interface)標(biāo)準(zhǔn)的多用戶、多任務(wù)且具有先進的網(wǎng)絡(luò)特性開源操作系統(tǒng)?;谀K化設(shè)計思想在開放的軟硬件平臺上開發(fā)適合一定需求的專用數(shù)控系統(tǒng),已成為數(shù)控領(lǐng)域的一個研究熱點。雖然2.6以后的內(nèi)核版本是可搶占的,但實時性仍比較弱,而數(shù)控系統(tǒng)本身要求有明顯的實時控制、實時交互和實時監(jiān)測等特性。本文首先將RTAI移植到Linux OS,使系統(tǒng)達到了強實時的要求,而后在此平臺上完成了數(shù)控軟件的體系結(jié)構(gòu)設(shè)計。

    1 實時Linux的實現(xiàn)

      提高Linux實時性,目前有兩種方法:1)直接修改Lint內(nèi)核,如:Montavista; 2 )在Linux內(nèi)核之上增加實時模塊,采用雙內(nèi)核結(jié)構(gòu),如:RTAI。

      前一種方案對開發(fā)人員的技術(shù)要求較高,需要修改大量的代碼,開發(fā)效率低。RTAI是一個遵循GNU的開源項目。RTAI采用雙內(nèi)核方法,不直接使用Lint的任何功能,而是把實時任務(wù)寫成一個驅(qū)動程序的形式,然后直接用PC時序芯片所產(chǎn)生的中斷調(diào)用這個驅(qū)動程序。RTAI在Lint上定義了一個實時硬件抽象層(RTHAL, Real Tirne Hardware Abstraction Layer),并針對RTAI開發(fā)了LXPT,讓RTAI可以調(diào)用Lint本身的系統(tǒng)調(diào)用功能。RTHAL的作’用是使RTAI能夠在實時任務(wù)需要運行的任何時刻中斷。引入RTAI后,Linux僅作為優(yōu)先級最低的任務(wù)運行,并且只有在沒有實時任務(wù)時它才能執(zhí)行。這樣做的好處在于將直接修改Linux核心的代碼減到最小,這使得將RTAI移植到Linux內(nèi)核的工作量減至最低。

      本文以PIV 2.0GHz, S12MB RAM的通用PC機作為硬件開發(fā)平臺,以Red Hat 9為操作系統(tǒng)平臺,將3.5版本的RTAI移植到版本為2.6.15.2的Linux內(nèi)核中測試操作系統(tǒng)實時性能,測試結(jié)果顯示,無論是內(nèi)核層還是用戶層都能夠滿足數(shù)控系統(tǒng)實時性的要求。需要特別指出的是,許多不可測因素會導(dǎo)致調(diào)度器的運行時間變的不確定,繼而使接下來的任務(wù)的開始時間發(fā)生相應(yīng)的變化,即產(chǎn)生了調(diào)度抖動。調(diào)度抖動對于基于通用處理器的實時系統(tǒng)來說是不可避免的。經(jīng)試驗測定,上述開發(fā)平臺的調(diào)度抖動時間在50 ms左右,能夠滿足數(shù)控系統(tǒng)的需要。

    2 系統(tǒng)的軟件結(jié)構(gòu)設(shè)計

      以集成RTAI實時內(nèi)核的Linux操作系統(tǒng)為開發(fā)平臺,基于模塊化思想將數(shù)控軟件按照實時性的要求分為用戶層模塊和內(nèi)核層實時模塊兩部分。所有與實時相關(guān)的任務(wù)都運行在內(nèi)核層下,且用一個獨立的內(nèi)核進程來執(zhí)行;所有非實時進程運行于用戶層下,它們不能打斷實時進程的運行。同時兩大模塊又劃分為不同的子模塊。采用這種模塊化結(jié)構(gòu),實質(zhì)是將功能分配給組件,這有利于軟件測試、系統(tǒng)維護以及增加新功能。該軟件體系結(jié)構(gòu)如圖1所示。

    圖1數(shù)控軟件體系結(jié)構(gòu)

      2.1 系統(tǒng)實時模塊的實現(xiàn)

      數(shù)控軟件的主程序由插補預(yù)處理任務(wù)、插補任務(wù)、位置控制任務(wù)、I/O控制任務(wù)和狀態(tài)監(jiān)測任務(wù)(圖1中未全部給出)等組成。本文將以上任務(wù)分別作為一個內(nèi)核進程,每個進程編譯成后綴為.0的模塊。數(shù)控加工過程中,G代碼是順序執(zhí)行的,每一個模塊讀取前一模塊的數(shù)據(jù),而將處理得到的數(shù)據(jù)輸出給后一模塊使用。首先,插補預(yù)處理任Pre-inter-polate ( )從I/O緩沖區(qū)中讀人G代碼,將代碼解釋為插補模塊可識別的數(shù)據(jù)結(jié)構(gòu),送入到預(yù)處理數(shù)據(jù)緩沖區(qū)prepare-fifo。而后,插補任務(wù)interpolate ( )從預(yù)處理數(shù)據(jù)緩沖區(qū)prepare-fifo中取出數(shù)據(jù),然后進行插補運算,將結(jié)果送interpolate-fifo()。最后,位置控制任務(wù)motor( )周期性地從插補緩沖區(qū)interpolated-fifo計算出下一周期的實際坐標(biāo)增量,輸出到位控數(shù)據(jù)緩沖區(qū)供伺服驅(qū)動單元(位控輸出模塊)使用。

      位控輸出模塊的優(yōu)先級別最高,運行過程中不允許其它模塊中斷。同時,它的運行周期必須匹配于伺服驅(qū)單元的運行周期。因此,將其設(shè)計成周期性RTAI進程,運行周期為20 ms,l級優(yōu)先權(quán)(級別越小,優(yōu)先級越高)。預(yù)處理模塊、插補模塊和位置控制模塊的運行較之于位控輸出模塊都要快得多,因此將他們的周期設(shè)置為5 ms,優(yōu)先級別依次為4級、3級和2級。

      采用基于優(yōu)先級搶占的進程調(diào)度策略,實現(xiàn)對數(shù)控模塊的實時調(diào)度。當(dāng)位控數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)量小于緩沖區(qū)大小一半時,位控輸出模塊掛起自身,喚醒次高級的模塊(位控模塊);以此類推,當(dāng)插補數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)量小于緩沖區(qū)大小一半時,位控模塊就掛起自身,喚醒次高優(yōu)先級模塊(插補模塊)。

      此外,在數(shù)控加工過程中,功能控制任務(wù)control()利用FIFO從用戶層向內(nèi)核層傳遞控制命令,如點動、暫停和自動等,并實現(xiàn)對I/O口的控制。狀態(tài)檢測任務(wù)monitor()將傳輸?shù)絀/O口的各個閥門,壓力表狀態(tài)保存在status-fifo中,同時負(fù)責(zé)對運行時水壓和電流等值狀態(tài)進行判斷,實時監(jiān)控機床運行狀態(tài),對機床故障進行實時響應(yīng)。這些任務(wù)采用實時中斷策略,由中斷信號觸發(fā)相應(yīng)的模塊。

      實時模塊在數(shù)控軟件啟動時就加載到Linux內(nèi)核中,實時進程和函數(shù)就可以訪問系統(tǒng)的底層資源。實時任務(wù)模塊由init-module()和cleanup -module()兩個RTAI函數(shù)聲明實現(xiàn),并且可以通過這兩個函數(shù)進行資源分配和回收。

      2.2 模塊間的通信

      數(shù)控軟件各模塊之間需要大量的數(shù)據(jù)通信。歸納起來,主要有三類:

      (1)非實時進程間通信

      這類通信主要存在于人機交互界面中,用于編輯加工代碼、設(shè)置機床和系統(tǒng)的初始值等,采用管道、消息隊列、共享內(nèi)存、信號等實現(xiàn)。

      (2)實時與非實時進程間通信

      這類通信主要完成插補主程序與系統(tǒng)界面的人機交互,動態(tài)模擬刀具軌跡,顯示加工狀態(tài),采用實時管道FIFO和共享內(nèi)存。

      (3)實時進程間通信

      這類進程主要完成數(shù)控主程序模塊之間的通信,采用FIFO和共享內(nèi)存的方式進行通信。

      數(shù)控模塊通過調(diào)用RTAI接口函數(shù)ttf-create ( )來創(chuàng)建實時管道FIFO,實現(xiàn)數(shù)據(jù)傳輸,實時管道創(chuàng)建后在目錄/dev下生成字符設(shè)備文件/devlrkf" oLinux進程通過對這些文件的操作實現(xiàn)對實時管道的操作,調(diào)用。pen ( ) , read ( )和write ( )實現(xiàn)管道打開、讀和寫操作,調(diào)用select()和poll()實現(xiàn)異步I/OoFIFO的通信是單向的,因此模塊間的信息交互必須至少創(chuàng)建兩條管道才能實現(xiàn)。

    3 應(yīng)用實例

      目前,經(jīng)濟型數(shù)控系統(tǒng)僅具有直線和圓弧插補功能。針對這一現(xiàn)狀,課題組研究了二次曲線(直線、圓、橢圓、拋物線和雙曲線)的插補方法,編寫了直接插補直線、圓、橢圓、拋物線和雙曲線的模塊,將軟件應(yīng)用于三坐標(biāo)數(shù)控銑床的控制,進行了輪廓曲線的加工試驗,如圖2所示。

      對于一條二次曲線(直線、圓、橢圓、拋物線或雙曲線),數(shù)控軟件僅需調(diào)用相應(yīng)的加工模塊一次,即可完成加工。而漸開線、擺線等復(fù)雜曲線的加工,可以應(yīng)用直線、圓、橢圓、拋物線或雙曲線進行擬合,編寫數(shù)控加工程序代碼進行加工。數(shù)控軟件首先讀取加工程序代碼,并根據(jù)插補預(yù)處理模塊的輸出信息,自動調(diào)用相應(yīng)的插補模塊完成加工。

      實驗結(jié)果表明,數(shù)控軟件采用優(yōu)先級搶占的調(diào)度策略實現(xiàn)了對數(shù)控加工任務(wù)的實時調(diào)度,能夠流暢地運行在Linux-RTAI強實時性平臺上,完成對三坐標(biāo)銑床的控制。

    4 結(jié)束語

      本文在實現(xiàn)Linux硬實時性的基礎(chǔ)上,完成數(shù)控軟件模塊化設(shè)計,并通過實驗驗證其正確性。在未來研究中,應(yīng)重點開發(fā)其它曲線的插補模塊,同時應(yīng)進一步優(yōu)化任務(wù)周期、優(yōu)先級以及緩沖區(qū)的選擇,減少系統(tǒng)對由于參數(shù)選擇不當(dāng)引起的異常任務(wù)的響應(yīng)。

    (審核編輯: 智匯胡妮)

    聲明:除特別說明之外,新聞內(nèi)容及圖片均來自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請聯(lián)系我們刪除。