<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

基于Linux的EtherCAT主站的研究

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

圖3空閑階段與操作階段程序流程

3 數據幀通訊管理的實(shí)現

主站實(shí)現通訊管理的核心是有限狀態(tài)機(FMS)理論睜J。有限狀態(tài)機又稱(chēng)為有限狀態(tài)自動(dòng)機或簡(jiǎn)稱(chēng)狀態(tài)機,是表示有限個(gè)狀態(tài)以及這些狀態(tài)之間的轉移和動(dòng)作等行為的數學(xué)模型。這一數學(xué)模型具有輸入與輸出,輸出不僅依賴(lài)于輸入而且依賴(lài)于輸入的歷史情況。作為承擔了主要數據管理工作的主站的工作內容,取決于用戶(hù)的輸入以及與從站的通訊狀態(tài),亦即通過(guò)分析用戶(hù)的輸入與接收到的來(lái)自從站的數據報文后再調用相應的函數。主站程序中包含的狀態(tài)機有:主站狀態(tài)機、從站掃描狀態(tài)機、從站配置狀態(tài)機、狀態(tài)切換狀態(tài)機(管理從站應用層的狀態(tài)切換)、讀寫(xiě)SII(從站信息)狀態(tài)機、讀寫(xiě)SDO(如COE協(xié)議中的非周期數據)等。主站狀態(tài)機(如圖4所示)又是實(shí)現其他狀態(tài)機功能的基礎,它的主要用途是:

1)監控總線(xiàn)上設備的變化。如:當有新的從站設備接入時(shí),便對其進(jìn)行掃描和配置。

2)監控從站應用層狀態(tài)。若從站狀態(tài)與要求不符便對其進(jìn)行重新配置。

3)接收用戶(hù)層的指令,進(jìn)行狀態(tài)的切換。

4)處理對SII和SDO等的請求操作。

4應用程序開(kāi)發(fā)的流程

應用程序是用戶(hù)針對自身控制系統的控制要求編寫(xiě)的控制程序模塊,運行于內核層。包括對主站和從站的配置以及周期性實(shí)時(shí)運行的任務(wù)。在實(shí)時(shí)任務(wù)程序中實(shí)現主從站間通訊以及各種數控算法。

4.1主站和從站的配置

如圖5所示,應用程序的module init()函數中首先要對主、從站的通訊進(jìn)行配置。其中的幾個(gè)關(guān)鍵技術(shù)與重要概念如下:

4.1.1數據域指針

數據域是EtherCAT過(guò)程數據(PDO)向程序中的數據結構的映射,它提供了用戶(hù)程序對總線(xiàn)上各個(gè)從站進(jìn)行數據訪(fǎng)問(wèn)的入口。當從站PDO入口注冊成功后,不同從站都將獲得一個(gè)屬于自己的地址偏移量,用戶(hù)可通過(guò)“數據域指針+地址偏移量”的方法對所需PDO進(jìn)行讀寫(xiě)操作。

4.1.2從站配置信息

主站對從站的掃描識別由四個(gè)參數決定:化名(保存在EEPROM中,可由主站修改)、位置(決定于從站在總線(xiàn)中連接的順序)、廠(chǎng)商ID號和產(chǎn)品號。這些信息構成從站配置信息。

4.1.3從站同步管理信息

這一信息可從EEPROM中的SⅡ或者廠(chǎng)商提供的設備描述文件(即xml文件)獲得。以Copley公司的Accelnet伺服驅動(dòng)器為例,其設備描述文件的一部分為:

前4行信息表明該設備擁有4個(gè)同步管理通道。前兩個(gè)為郵箱傳輸方式,用于COE協(xié)議的通訊,負責對SDO的傳輸。后兩個(gè)為過(guò)程數據傳輸方式,負責對PDO的傳輸。其中StartAddress參數為物理起始地址,即該同步管理通道在雙口RAM上的起始地址;ControlByte參數為控制字,包含了該通道的傳輸

圖4主站狀態(tài)機

方式、傳輸方向等信息。之后的三個(gè)參數規定了該通道的大小。第5行起開(kāi)始定義RxPdo,與CANopen協(xié)議類(lèi)似,EtherCAT的PDO也通過(guò)索引號和子索引號進(jìn)行識別。將x1600_——x1607定義為RxPdo(接收PDO),在這8個(gè)接收PDO中安排被主站接收的參數。將x1A00_——x1A07定義為T(mén)xPdo(發(fā)送PDO),在這8個(gè)發(fā)送PDO中安排向主站發(fā)送的參數。由于該款Accelnet伺服驅動(dòng)器支持COE,因此其原有的CAN總線(xiàn)中使用的參數可保持不變。圖6表明將控制字x6040的0號子索引,長(cháng)度為2個(gè)字節,映射到RxPd00中。應用程序將以上同步管理信息寫(xiě)入數據結構ec_sync_info_t中,作為ecrt slave config_pdos()的參數,通過(guò)調用該函數最終完成完整的PDO配置。



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>