陶春榮,崔恒榮,游新望
(中國船舶集團有限公司第八研究院,南京 211153)
EtherCAT總線由德國Beckhoff公司提出,是目前速度最快的工業以太網系統,其組網結構簡單,兼容標準以太網,通信周期可達微秒級。該總線具有卓越的通訊性能、高精度同步節點、靈活的布線方式以及任意的節點數量,可支持任何網絡拓撲類型。它可以使用標準的以太網電纜傳輸。由于采用了保留的以太網幀類型0x88A4,因此該總線協議可以與其他以太網協議并行運行。它不需要IP協議,但是可以被封裝在UDP/IP協議中。EtherCAT總線硬件設計上采用主從式結構,其協議的處理是由從站控制器ESC內部硬件直接實現的。因此,它的數據處理速度取決于硬件的處理能力。
在EtherCAT的一個網段網絡中,除主站外接入網絡的節點稱為從站。從站子系統通過從站控制器(ESC,Ether CAT Slave Controller)接入EtherCAT網絡。目前主要有3種接入方式:
(1) 使用授權的核心將ESC 的硬件電路以“軟核”的模式集成到FPGA 中,使得FPGA 具備ESC 這個通信模塊。目前,Xilinx公司和Altera公司都有相應的EtherCAT授權的核心可供選用。
(2) 使用專用的ESC芯片。該芯片專門用于EtherCAT通信,設計時采用“ESC+μC”結構,即以一個ESC芯片作為EtherCAT通信的從站控制器,而從站的系統以微控制器μC來管理并通過過程數據接口(PDI,Process Data Interface)讀取寫入ESC。典型的ESC芯片代表是Beckhoff公司的ET1100 /ET1200芯片,以及Microchip公司的LAN9252芯片等。
(3) 使用具備EtherCAT通信功能的微處理器。該方式省去ESC芯片的使用,大大降低設計工作量。目前,具有EtherCAT通信功能的微處理器有瑞薩公司的R-IN32M3-EC、Infineon公司的XMC4800以及德州儀器的AM3359/AM4379 /AM5728等芯片。
由于本文的模塊設計為EtherCAT從站通信模塊,適合采用ESC從站專用芯片作為通信站點控制器,因此采用的是LAN9252和STM32F732芯片的EtherCAT從站的實現方法。
Microchip公司LAN9252 作為EtherCAT從站控制器,其內部集成了兩個PHY 芯片,可以配置為全雙工100 Mbps 銅纜(100BASE-TX)或者100 Mbps 光纖(100BASE-FX)傳輸方式。LAN9252帶有4 KB的DPRAM、3 個現場總線存儲器管理單元FMMU及4 個SM 通道管理器。此外,它的內部集成以太網PHY 芯片,并支持HP Auto-MDIX 功能。它帶有3個以太網端口,可以實現線性連接、星形連接以及樹形連接等多種拓撲結構。從站啟動時需要從外部引腳和EEPROM讀入配置信息。
STM32F732芯片是意法半導體公司開發的32位微處理器,采用的是ARM公司的Cortex-M7高性能內核。Cortex-M7是目前性能最強的控制器內核,具有六級順序超標量流水線、單雙精度浮點運算單元、指令和數據緩存以及分支預測和TCM等特性,相比之前M4內核其性能得到極大提升。STM32F732主頻高達216 MHz,具備內存保護單元,支持DSP指令,在執行內部FLASH代碼時能達到1082 Core Mark /462DMIPS性能表現。該內核集成了一級緩沖(4 KB指令緩存+4 KB數據緩存),讓外部存儲器的使用性能變得卓越。同時,它具有多通道DMA、multi-AHB總線矩陣、Chrom-Art加速器、AXI總線等強大的硬件支持,極大地優化了內部數據連接,無需CPU干預即可完成大量數據搬遷。STM32F732有1024 KB內部FLASH,320 KB存儲,集成AES、DES、HASH、HMAC加密硬件電路,支持多種外部存儲、多達18 通道定時器及以太網連接TFT控制器。
本方案采用STM32F732芯片作為從站微處理器、LAN9252作為EtherCAT從站控制器,為此可以將整個從站系統分為STM模塊(微處理器部分)和ESC模塊(控制器部分)兩大模塊。STM模塊的功能是實現應用層協議,ESC模塊的功能是實現EtherCAT數據鏈路層的功能。系統原理框圖如圖1所示。

圖1 系統原理框圖
LAN9252內部集成有上電復位電路,在芯片復位后會根據其硬件配置引腳的電平狀態將器件配置成相應的功能。LAN9252主要的硬件配置管腳定義如表1所示。

表1 硬件配置管腳定義
當完成硬件配置后,LAN9252通過讀取外接EEPROM中的從站配置信息完成LAN9252從站的建立。當LAN9252自動配置完成后,微處理器便可以通過配置好的PDI(Process Data Interface,即過程數據接口)接口與LAN9252進行數據交互。LAN9252支持兩種類型的PDI接口,SPI串行模式或者MCI并行模式。串行接口適用于數據傳輸量比較小的應用,并行接口適用于傳輸數據量較大的復雜設備。為了實現高速率的數據傳輸,本系統中采用外部總線,通過變址尋址的方案和LAN9252進行通信。LAN9252支持兩種并行通信方式,一種是總線復用模式,一種是變址尋址模式。本方案中采用16位變址尋址模式對LAN9252進行尋址。
本方案采用查詢方式和中斷相結合的數據讀取方式,所以ESC的IRQ引腳要連接至STM模塊的外部中斷引腳。由于LAN9252通過SYNC0和SYNC1引腳為從站提供精確的同步脈沖以實現從站同步,因此也需要將SYNC0和SYNC1引腳連接至STM模塊的外部中斷引腳。LAN9252的接口連接圖如圖2所示。

圖2 LAN9252接口連接圖
STM模塊是EtherCAT從站的控制核心。該模塊的作用是通過FSMC接口接收來自ESC模塊的控制信息,同時接收來自系統設備層的數據信息,將數據信息通過FSMC總線傳遞給ESC模塊,從而實現相關數據在EtherCAT總線上的接收和傳輸。
STM32F732芯片的FSMC接口支持多種外部存儲區擴展。該接口內部集成了對這些存儲區的控制器,可以將系統AHB總線轉化成與外部存儲區復合的總線接口形式。FSMC在STM32F732芯片內部占用大小為1 GB的內存尋址空間。這部分內存尋址空間分為4個大小為256 MB的Bank,其中Bank0又分為4個Region,每個Region占64 MB。Bank1和Bank2又都被分成2個Section,分別是屬性存儲空間和通用存儲空間。Bank3分成3個Section,分別是屬性存儲空間、通用存儲空間和I/O存儲空間。每個Bank和Region都有獨立的片選控制信號,也都能進行獨立的配置。具體地址映射關系如圖3所示。

圖3 FSMC地址映射關系圖
由于本方案中采用16位變址尋址模式對LAN9252進行尋址,因此FSMC模塊必須設置成16位數據寬度、PSRAM控制器模式,使用NE0作為LAN9252的片選信號。
ESC模塊有3個中斷信號需要接入STM模塊中,而對于STM32F732芯片來說其所有通用管腳均可設置為中斷觸發模式并由EXTI(中斷/事件控制器)進行檢測控制。EXTI 有3種觸發類型:上升沿觸發、下降沿觸發和任意沿觸發。根據ESC模塊的手冊本方案采用的是上升沿觸發。
軟件主要由兩部分組成,一是EEPROM中的ESC模塊配置文件,二是STM模塊軟件。ESC模塊配置文件是從站物理層的基本配置信息,而STM模塊軟件完成的是從站應用層的相關初始化、協議解析和數據處理等工作。
ESC模塊配置文件主要是對LAN9252的PDI(Process Data Interface,即過程數據接口)接口、從站狀態機和狀態寄存器以及PDI看門狗寄存器等進行相關配置。EEPROM數據格式如圖4所示。

圖4 EEPROM配置數據信息
ESC模塊配置文件采用ETG協會提供的SSC Tool配置工具生成。根據PDI硬件接口工作模式選擇對應的配置項、設備版本等信息,配置完成后導入對象字典描述文件以及數據類型,然后點擊生成便可自動生成EEPROM配置文件。
STM模塊軟件主要完成的功能為內核初始化、FSMC接口和EXIT接口初始化、EtherCAT協議棧及相關變量數據的初始化,最終進入EtherCAT協議棧狀態機。流程如圖5所示。

圖5 軟件流程圖
STM模塊內核初始化主要是對STM32F732芯片的時鐘進行配置,使其工作在216 MHz頻率下,并配置好EtherCAT協議棧所需的定時器資源。FSMC接口和EXIT接口的初始化是根據STM模塊與LAN9252的硬件接口關系進行相應的配置工作。在本方案中STM模塊與LAN9252的通信接口采用FSMC接口,所以需要根據配置文件中定義好的PDI接口的特性對FSMC接口進行配置。本方案中PDI接口采用16位變址尋址模式,因此FSMC接口需配置成16位PSRAM模式。本方案中PSRAM模式使用的是BANK0區域,所有此時以0x60000000為起始地址的64 KB空間將映射為LAN9252的內存空間。由于EtherCAT的狀態事件以及同步數據是通過中斷控制模式進行讀寫的,所以需要針對LAN9252的3個中斷對STM模塊的EXIT接口進行配置。本方案配置了EXTI1、EXTI2、EXTI3作為LAN9252的中斷接口。至此,STM模塊的初始化功能已完成。
EtherCAT協議棧主要實現EtherCAT狀態機的變換、數據的讀寫等功能。該協議棧由SSC Tool配置工具生成。但是,生成的協議棧不能直接在STM模塊上運行,需要根據STM模塊的硬件設計進行相應的移植工作。首先需要對3個中斷處理函數EXTI0_IRQHandler、 EXTI1_IRQHandler、EXTI2_IRQHandler進行修改。將這3個函數與EtherCAT協議棧中斷處理函數PDI_Isr()、Sync0_Isr()以及Sync1_Isr()相關聯;其次將定時器中斷函數TIM2_IRQHandler()和ECAT_CheckTimer()函數相關聯,以實現EtherCAT協議棧運行時的定時要求;最后將FSMC接口的讀寫函數改寫到EtherCAT協議棧的4個讀寫函數HW_EscRead()、HW_EscReadIsr()、HW_EscWrite()、HW_EscWriteIsr()中便完成了EtherCAT協議棧在STM模塊上的移植工作。
傳統的控制系統一般采用RS232、CAN等通訊方式進行控制命令和數據的傳輸,控制命令和數據傳輸的實時性和同步性很難得到保證,無法做到實時高精度的控制。通過上述方法實現的基于LAN9252芯片的EtherCAT從站其優異的通訊性能和同步特性保證了控制系統的精度和實時性。該EtherCAT從站已經在某型產品的伺服驅動平臺上使用,應用穩定可靠,效果良好,具有很好的實際應用和推廣價值。