新聞中心

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

基于Linux的EtherCAT主站的研究

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

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

3 數(shù)據(jù)幀通訊管理的實(shí)現(xiàn)

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

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

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

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

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

4應(yīng)用程序開發(fā)的流程

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

4.1主站和從站的配置

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

4.1.1數(shù)據(jù)域指針

數(shù)據(jù)域是EtherCAT過程數(shù)據(jù)(PDO)向程序中的數(shù)據(jù)結(jié)構(gòu)的映射,它提供了用戶程序?qū)偩€上各個(gè)從站進(jìn)行數(shù)據(jù)訪問的入口。當(dāng)從站PDO入口注冊成功后,不同從站都將獲得一個(gè)屬于自己的地址偏移量,用戶可通過“數(shù)據(jù)域指針+地址偏移量”的方法對所需PDO進(jìn)行讀寫操作。

4.1.2從站配置信息

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

4.1.3從站同步管理信息

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

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

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

方式、傳輸方向等信息。之后的三個(gè)參數(shù)規(guī)定了該通道的大小。第5行起開始定義RxPdo,與CANopen協(xié)議類似,EtherCAT的PDO也通過索引號和子索引號進(jìn)行識別。將x1600_——x1607定義為RxPdo(接收PDO),在這8個(gè)接收PDO中安排被主站接收的參數(shù)。將x1A00_——x1A07定義為TxPdo(發(fā)送PDO),在這8個(gè)發(fā)送PDO中安排向主站發(fā)送的參數(shù)。由于該款A(yù)ccelnet伺服驅(qū)動(dòng)器支持COE,因此其原有的CAN總線中使用的參數(shù)可保持不變。圖6表明將控制字x6040的0號子索引,長度為2個(gè)字節(jié),映射到RxPd00中。應(yīng)用程序?qū)⒁陨贤焦芾硇畔懭霐?shù)據(jù)結(jié)構(gòu)ec_sync_info_t中,作為ecrt slave config_pdos()的參數(shù),通過調(diào)用該函數(shù)最終完成完整的PDO配置。



評論


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

關(guān)閉