文/劉明
在工業自動化領域,數據傳輸一般具有以下特點:
(1)強實時,有確定的響應周期要求;
(2)系統節點數量眾多,節點數據表現為周期性的過程數據;
(3)和IT、辦公應用相比,成本顯得尤為重要。
為了滿足上述要求,德國倍福(Beckhoff)公司提出一種開放式的基于以太網的實時現場總線系統EtherCAT。EtherCAT使用和以太網標準IEEE802.3相同的幀結構和物理層,同時又拋棄了傳統的基于TCP/IP的協議架構。在EtherCAT總線系統中,報文的發送和接收是主從式的,只有主站能夠主動發送報文,從站從上游節點接收報文,轉發到下游節點。通過這種方式,報文依次傳遞到每個從站。從站從接收到的報文中截取自己需要的數據,并在向下一個節點轉發時將數據插入到報文中。這樣,報文的延遲就只有硬件傳播延遲,而不存在軟件協議棧延遲。EtherCAT從站使用專門的控制器ESC(EtherCAT Slave Controller)實現報文接收、數據插入和轉發功能。

圖1:從站硬件系統框圖
EtherCAT從站需要通過專用的從站控制器連接到EtherCAT系統中。從站控制器既可以是芯片,也可以是IP核。本系統使用倍福公司生產的芯片ET1200作為從站控制器,使用STM32F103作為從站控制微處理器。從站硬件系統框圖如圖1所示。
為了確保EtherCAT從站在加入網絡時處于安全狀態,EtherCAT從站在啟動后需要通過一系列的狀態切換之后才能執行完整功能。EtherCAT從站狀態序列和對應功能如下:
(1)初始化,此時所有輸出功能都要置于不影響系統安全的狀態;
(2)預運行,初始化完成,可以進行Mailbox通訊;
(3)安全運行,主站可以讀取過程輸入,但從站任何輸出功能仍然關閉;
(4)運行,系統所有功能完全展開。
良好的模塊化是一個健壯的軟件系統的基礎。根據模塊功能的不同,EtherCAT從站代碼框架包括三個部分:
(1)硬件抽象層,負責處理不同的底層硬件接口;
(2)協議棧層,負責處理協議細節;
(3)應用層,負責用戶邏輯。
倍福公司提供了圖形界面配置工具SSC(Slave Stack Code)來生成一個基本的從站代碼框架,在這個框架中提供了EtherCAT協議棧和基本的應用層代碼流程。根據本系統的具體硬件連接情況,在SSC中的主要配置參數如下:
(1)打開MCI_HW,表示使用通用外部總線接口;
(2)打開CONTROLLER_32BIT,表示控制處理器是32位微處理器;
(3)打開16BIT_ACCESS,表示微處理器與ET1200之間使用16位總線接口;
(4)根據系統中使用的EEPROM容量修改ESC_EEPROM_SIZE參數
硬件配置參數修改完成后,還需要根據具體應用情況創建應用程序配置。首先在SSC配置工具中通過Tool->Application->Create New生成一個空白的應用程序配置,然后根據實際應用填入相應的描述信息。作為一個數據采集系統,至少需要兩個字段表示有效數據:第一個字段是AD輸出值;第二個字段是信號狀態,如過載、欠載等。
應用程序配置完成后,SSC就可以生成協議棧代碼。接下來我們需要根據所設計的系統功能編寫應用層代碼。應用層代碼首先調用HW_Init初始化ET1200內部寄存器,然后調用MainInit初始化協議棧,最后調用MainLoop進入協議主循環。此時,從站代碼已具備了一個完整的協議流程框架,可以根據主站指令進入或退出OP模式,但還沒有發送采集數據的功能。
協議棧通過回調函數的方式調用應用相關的功能代碼。對于本數據采集系統,應用層代碼的主要功能是將采集數據傳送給主站。相應的代碼在回調函數APPL_InputMapping(UINT16* pData)中:

倍福公司使用通用PC作為EtherCAT的主站硬件。為了實現EtherCAT協議所要求的實時性,倍福公司提供了實時網卡驅動程序,用來替換通用網卡驅動程序。替換后設備管理器里網卡型號顯示為TwinCAT-Intel,表示網卡實時驅動安裝成功。
SOEM(Simple Open EtherCAT Master)是一個開源的EtherCAT主站庫,向上層應用程序提供收發EtherCAT數據幀接口。該函數庫完全用c語言寫成,可移植性好,本系統使用SOEM作為主站軟件的底層EtherCAT函數庫。主站應用程序與SOEM之間的接口如下:


實踐表明,基于EtherCAT的數據采集系統結構靈活,可伸縮性好。每個采集點的數據在一個EtherCAT數據幀中只占3個字節,按最長EtherCAT數據幀1486字節計算,整個系統可接入近500個采集點。因此,本系統可適用于多種測點分散的數據采集場合。