新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Linux的EtherCAT主站的研究

        基于Linux的EtherCAT主站的研究

        作者: 時間:2016-12-21 來源:網絡 收藏

        圖5應用程序對主從站的配置流程

        圖6從站同步管理信息

        4.1.4 SDO配置

        SDO是COE協議的非周期數據傳輸方式(郵箱傳輸方式)。通過SDO可實現參數的設置與讀取。為了能夠在周期任務程序中直接對某個參數進行操作,應用程序需要在配置階段創建一個針對該參數的SDO請求,并設置請求超時的時間。

        4.2周期任務的實現

        4.2.1實時性的實現

        應用程序需要一個高實時性的定時器,定時調用周期任務。在不采用RTLinux和RTAI等實時內核的情況下,為了保證高的實時性可以采用內核定時器。其使用方法如下:

        1)在應用程序模塊初始化階段初始化內核定時器

        static struct timer_list timer)//定義一個定時器列表

        init_fimer(&timer);//初始化一個內核定時器節點

        timer.function=cyclic_task;/掛載周期性函數

        timer.expires=jiffies+10;//設置定時中斷的時間

        add timer(&timer);//激活內核定時器節點

        2)在周期任務函數cyclic_task中重啟定時器

        timer.expires+=HZ,1000;//設置定時中斷的時間

        add_timer(&timer);//激活內核定時器節點

        其中jiffies為系統自啟動到當前時刻為止系統時鐘產生的滴答數。timer.expires為定時中斷啟動的預期時刻,以滴答數為單位。宏定義HZ記錄了系統時鐘所要求的可編程定時器產生滴答數的頻率。其值可在內核配置選項CONFIG_HZ選配。最大值則決定于硬件特性。假設HZ為1000則(2)中定時中斷的時間為1毫秒。由于cyclic_task函數被掛載在timer.function上,因此每到該內核定時器節點達到預設定的中斷時間便進行中斷調用,而調用cyclic_task函數中又再次預設定了timer的中斷時間,故而形成周期為1毫秒的周期性任務。

        4.2.2周期任務中的工作

        如圖3(C)所示,周期任務用于通過主站實時發送和獲取從站的信息,并對信息進行實時的處理,如邏輯控制中邏輯運算和運動控制中的各種算法。處理的信息包括過程數據對象PDO和郵箱傳輸方式的數據對象(如COE中的SDO)。其中PDO通過“數據域指針+地址偏移量”方式直接讀寫;SDO訪問方法(以讀SDO為例)如下:


        5實驗與結論

        圖7為研究基于Linux的EtherCAT主站的實驗平臺。IPC(工業級計算機)主頻為1.2G,運行linux系統為Fedora 8。ARM開發板采用PAX270,運行linux-2.6.9內核,交叉編譯器為arrn—linux—gcc-3.4.3。EtherCAT從站設備包括Beckhoff公司出品的EK1100和Copley公司的Accelnet伺服驅動器。在此平臺的基礎上開發出了基于ARM的嵌入式運動控制器。由于ARM中Linux內核版本較低,周期任務的最快速度目前為10ms。若直接采用IPC進行控制,則速度可達1ms。


        上一頁 1 2 3 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 长春市| 凤山县| 铁力市| 武隆县| 庆云县| 富川| 福清市| 四子王旗| 公安县| 越西县| 伊吾县| 竹溪县| 福鼎市| 肥东县| 南召县| 越西县| 邛崃市| 荆州市| 资溪县| 白水县| 蒲城县| 鹤山市| 荥经县| 齐河县| 北安市| 香格里拉县| 广灵县| 衡东县| 四平市| 天全县| 涞水县| 正安县| 太原市| 连州市| SHOW| 邹城市| 古浪县| 铅山县| 阳山县| 富源县| 韩城市|