<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Linux的EtherCAT主站的研究

          基于Linux的EtherCAT主站的研究

          作者: 時(shí)間:2016-12-21 來源:網(wǎng)絡(luò) 收藏

          圖5應(yīng)用程序?qū)χ鲝恼镜呐渲昧鞒?p>

          圖6從站同步管理信息

          4.1.4 SDO配置

          SDO是COE協(xié)議的非周期數(shù)據(jù)傳輸方式(郵箱傳輸方式)。通過SDO可實(shí)現(xiàn)參數(shù)的設(shè)置與讀取。為了能夠在周期任務(wù)程序中直接對(duì)某個(gè)參數(shù)進(jìn)行操作,應(yīng)用程序需要在配置階段創(chuàng)建一個(gè)針對(duì)該參數(shù)的SDO請(qǐng)求,并設(shè)置請(qǐng)求超時(shí)的時(shí)間。

          4.2周期任務(wù)的實(shí)現(xiàn)

          4.2.1實(shí)時(shí)性的實(shí)現(xiàn)

          應(yīng)用程序需要一個(gè)高實(shí)時(shí)性的定時(shí)器,定時(shí)調(diào)用周期任務(wù)。在不采用RTLinux和RTAI等實(shí)時(shí)內(nèi)核的情況下,為了保證高的實(shí)時(shí)性可以采用內(nèi)核定時(shí)器。其使用方法如下:

          1)在應(yīng)用程序模塊初始化階段初始化內(nèi)核定時(shí)器

          static struct timer_list timer)//定義一個(gè)定時(shí)器列表

          init_fimer(&timer);//初始化一個(gè)內(nèi)核定時(shí)器節(jié)點(diǎn)

          timer.function=cyclic_task;/掛載周期性函數(shù)

          timer.expires=jiffies+10;//設(shè)置定時(shí)中斷的時(shí)間

          add timer(&timer);//激活內(nèi)核定時(shí)器節(jié)點(diǎn)

          2)在周期任務(wù)函數(shù)cyclic_task中重啟定時(shí)器

          timer.expires+=HZ,1000;//設(shè)置定時(shí)中斷的時(shí)間

          add_timer(&timer);//激活內(nèi)核定時(shí)器節(jié)點(diǎn)

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

          4.2.2周期任務(wù)中的工作

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


          5實(shí)驗(yàn)與結(jié)論

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


          上一頁 1 2 3 下一頁

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();