中文字幕视频在线免费_日韩在线精品_日韩视频免费看_中文字幕在线三区_午夜免费视频_日韩在线大片

基于Linux-RTAI的數控軟件結構設計與實現

來源:互聯網

點擊:1766

A+ A-

所屬頻道:新聞中心

關鍵詞:數控軟件 數控系統

      Linux是一個遵循可移植操作系統接口(POSIX, Portable Operating System Interface)標準的多用戶、多任務且具有先進的網絡特性開源操作系統。基于模塊化設計思想在開放的軟硬件平臺上開發適合一定需求的專用數控系統,已成為數控領域的一個研究熱點。雖然2.6以后的內核版本是可搶占的,但實時性仍比較弱,而數控系統本身要求有明顯的實時控制、實時交互和實時監測等特性。本文首先將RTAI移植到Linux OS,使系統達到了強實時的要求,而后在此平臺上完成了數控軟件的體系結構設計。

    1 實時Linux的實現

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

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

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

    2 系統的軟件結構設計

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

    圖1數控軟件體系結構

      2.1 系統實時模塊的實現

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

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

      采用基于優先級搶占的進程調度策略,實現對數控模塊的實時調度。當位控數據緩沖區的數據量小于緩沖區大小一半時,位控輸出模塊掛起自身,喚醒次高級的模塊(位控模塊);以此類推,當插補數據緩沖區的數據量小于緩沖區大小一半時,位控模塊就掛起自身,喚醒次高優先級模塊(插補模塊)。

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

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

      2.2 模塊間的通信

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

      (1)非實時進程間通信

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

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

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

      (3)實時進程間通信

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

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

    3 應用實例

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

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

      實驗結果表明,數控軟件采用優先級搶占的調度策略實現了對數控加工任務的實時調度,能夠流暢地運行在Linux-RTAI強實時性平臺上,完成對三坐標銑床的控制。

    4 結束語

      本文在實現Linux硬實時性的基礎上,完成數控軟件模塊化設計,并通過實驗驗證其正確性。在未來研究中,應重點開發其它曲線的插補模塊,同時應進一步優化任務周期、優先級以及緩沖區的選擇,減少系統對由于參數選擇不當引起的異常任務的響應。

    (審核編輯: 智匯胡妮)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 中文字幕日韩在线 | 欧美日本韩国一区二区 | 黑人精品| 久草视频在线播放 | 国产色婷婷| 激情伊人| 国产免费天天看高清影视在线 | 自拍偷拍第一页 | 一本一道久久a久久精品逆3p | 羞羞影视 | 国产黄色片免费 | 91成人小视频 | 中文字幕在线观看一区二区三区 | 亚洲激情久久 | av午夜电影 | 一区二区三区免费观看 | 国产精品三级久久久久久电影 | 午夜精品美女久久久久av福利 | 欧美视频三区 | 草久在线视频 | 亚洲精品乱码久久久久久金桔影视 | 亚洲www啪成人一区二区 | 日韩在线视频观看 | 福利资源在线观看 | 日本少妇一区二区三区 | 日本高清不卡视频 | 成年人在线免费观看视频网站 | 国产成年人视频 | 可以看av的网站 | 一色视频 | 欧美视频精品 | 精品国产乱码久久久久久1区2区 | 成人精品一区二区 | 国产精品成av人在线视午夜片 | 超碰人人操 | 国产精品久久久久久久久久久免费看 | 中文字幕国产视频 | 欧美a级成人淫片免费看 | 国产精品中文字幕在线 | 亚洲男人皇宫 | 中文字幕日韩一区二区不卡 |