基于Linux的EtherCAT主站的研究
圖3空閑階段與操作階段程序流程
3 數據幀通訊管理的實現
主站實現通訊管理的核心是有限狀態(tài)機(FMS)理論睜J。有限狀態(tài)機又稱為有限狀態(tài)自動機或簡稱狀態(tài)機,是表示有限個狀態(tài)以及這些狀態(tài)之間的轉移和動作等行為的數學模型。這一數學模型具有輸入與輸出,輸出不僅依賴于輸入而且依賴于輸入的歷史情況。作為承擔了主要數據管理工作的主站的工作內容,取決于用戶的輸入以及與從站的通訊狀態(tài),亦即通過分析用戶的輸入與接收到的來自從站的數據報文后再調用相應的函數。主站程序中包含的狀態(tài)機有:主站狀態(tài)機、從站掃描狀態(tài)機、從站配置狀態(tài)機、狀態(tài)切換狀態(tài)機(管理從站應用層的狀態(tài)切換)、讀寫SII(從站信息)狀態(tài)機、讀寫SDO(如COE協議中的非周期數據)等。主站狀態(tài)機(如圖4所示)又是實現其他狀態(tài)機功能的基礎,它的主要用途是:
1)監(jiān)控總線上設備的變化。如:當有新的從站設備接入時,便對其進行掃描和配置。
2)監(jiān)控從站應用層狀態(tài)。若從站狀態(tài)與要求不符便對其進行重新配置。
3)接收用戶層的指令,進行狀態(tài)的切換。
4)處理對SII和SDO等的請求操作。
4應用程序開發(fā)的流程
應用程序是用戶針對自身控制系統的控制要求編寫的控制程序模塊,運行于內核層。包括對主站和從站的配置以及周期性實時運行的任務。在實時任務程序中實現主從站間通訊以及各種數控算法。
4.1主站和從站的配置
如圖5所示,應用程序的module init()函數中首先要對主、從站的通訊進行配置。其中的幾個關鍵技術與重要概念如下:
4.1.1數據域指針
數據域是EtherCAT過程數據(PDO)向程序中的數據結構的映射,它提供了用戶程序對總線上各個從站進行數據訪問的入口。當從站PDO入口注冊成功后,不同從站都將獲得一個屬于自己的地址偏移量,用戶可通過“數據域指針+地址偏移量”的方法對所需PDO進行讀寫操作。
4.1.2從站配置信息
主站對從站的掃描識別由四個參數決定:化名(保存在EEPROM中,可由主站修改)、位置(決定于從站在總線中連接的順序)、廠商ID號和產品號。這些信息構成從站配置信息。
4.1.3從站同步管理信息
這一信息可從EEPROM中的SⅡ或者廠商提供的設備描述文件(即xml文件)獲得。以Copley公司的Accelnet伺服驅動器為例,其設備描述文件的一部分為:
前4行信息表明該設備擁有4個同步管理通道。前兩個為郵箱傳輸方式,用于COE協議的通訊,負責對SDO的傳輸。后兩個為過程數據傳輸方式,負責對PDO的傳輸。其中StartAddress參數為物理起始地址,即該同步管理通道在雙口RAM上的起始地址;ControlByte參數為控制字,包含了該通道的傳輸
圖4主站狀態(tài)機
方式、傳輸方向等信息。之后的三個參數規(guī)定了該通道的大小。第5行起開始定義RxPdo,與CANopen協議類似,EtherCAT的PDO也通過索引號和子索引號進行識別。將x1600_——x1607定義為RxPdo(接收PDO),在這8個接收PDO中安排被主站接收的參數。將x1A00_——x1A07定義為TxPdo(發(fā)送PDO),在這8個發(fā)送PDO中安排向主站發(fā)送的參數。由于該款Accelnet伺服驅動器支持COE,因此其原有的CAN總線中使用的參數可保持不變。圖6表明將控制字x6040的0號子索引,長度為2個字節(jié),映射到RxPd00中。應用程序將以上同步管理信息寫入數據結構ec_sync_info_t中,作為ecrt slave config_pdos()的參數,通過調用該函數最終完成完整的PDO配置。
評論