陶春榮,崔恒榮,游新望
(中國船舶集團有限公司第八研究院,南京 211153)
EtherCAT總線由德國Beckhoff公司提出,是目前速度最快的工業(yè)以太網(wǎng)系統(tǒng),其組網(wǎng)結(jié)構(gòu)簡單,兼容標(biāo)準(zhǔn)以太網(wǎng),通信周期可達微秒級。該總線具有卓越的通訊性能、高精度同步節(jié)點、靈活的布線方式以及任意的節(jié)點數(shù)量,可支持任何網(wǎng)絡(luò)拓撲類型。它可以使用標(biāo)準(zhǔn)的以太網(wǎng)電纜傳輸。由于采用了保留的以太網(wǎng)幀類型0x88A4,因此該總線協(xié)議可以與其他以太網(wǎng)協(xié)議并行運行。它不需要IP協(xié)議,但是可以被封裝在UDP/IP協(xié)議中。EtherCAT總線硬件設(shè)計上采用主從式結(jié)構(gòu),其協(xié)議的處理是由從站控制器ESC內(nèi)部硬件直接實現(xiàn)的。因此,它的數(shù)據(jù)處理速度取決于硬件的處理能力。
在EtherCAT的一個網(wǎng)段網(wǎng)絡(luò)中,除主站外接入網(wǎng)絡(luò)的節(jié)點稱為從站。從站子系統(tǒng)通過從站控制器(ESC,Ether CAT Slave Controller)接入EtherCAT網(wǎng)絡(luò)。目前主要有3種接入方式:
(1) 使用授權(quán)的核心將ESC 的硬件電路以“軟核”的模式集成到FPGA 中,使得FPGA 具備ESC 這個通信模塊。目前,Xilinx公司和Altera公司都有相應(yīng)的EtherCAT授權(quán)的核心可供選用。
(2) 使用專用的ESC芯片。該芯片專門用于EtherCAT通信,設(shè)計時采用“ESC+μC”結(jié)構(gòu),即以一個ESC芯片作為EtherCAT通信的從站控制器,而從站的系統(tǒng)以微控制器μC來管理并通過過程數(shù)據(jù)接口(PDI,Process Data Interface)讀取寫入ESC。典型的ESC芯片代表是Beckhoff公司的ET1100 /ET1200芯片,以及Microchip公司的LAN9252芯片等。
(3) 使用具備EtherCAT通信功能的微處理器。該方式省去ESC芯片的使用,大大降低設(shè)計工作量。目前,具有EtherCAT通信功能的微處理器有瑞薩公司的R-IN32M3-EC、Infineon公司的XMC4800以及德州儀器的AM3359/AM4379 /AM5728等芯片。
由于本文的模塊設(shè)計為EtherCAT從站通信模塊,適合采用ESC從站專用芯片作為通信站點控制器,因此采用的是LAN9252和STM32F732芯片的EtherCAT從站的實現(xiàn)方法。
Microchip公司LAN9252 作為EtherCAT從站控制器,其內(nèi)部集成了兩個PHY 芯片,可以配置為全雙工100 Mbps 銅纜(100BASE-TX)或者100 Mbps 光纖(100BASE-FX)傳輸方式。LAN9252帶有4 KB的DPRAM、3 個現(xiàn)場總線存儲器管理單元FMMU及4 個SM 通道管理器。此外,它的內(nèi)部集成以太網(wǎng)PHY 芯片,并支持HP Auto-MDIX 功能。它帶有3個以太網(wǎng)端口,可以實現(xiàn)線性連接、星形連接以及樹形連接等多種拓撲結(jié)構(gòu)。從站啟動時需要從外部引腳和EEPROM讀入配置信息。
STM32F732芯片是意法半導(dǎo)體公司開發(fā)的32位微處理器,采用的是ARM公司的Cortex-M7高性能內(nèi)核。Cortex-M7是目前性能最強的控制器內(nèi)核,具有六級順序超標(biāo)量流水線、單雙精度浮點運算單元、指令和數(shù)據(jù)緩存以及分支預(yù)測和TCM等特性,相比之前M4內(nèi)核其性能得到極大提升。STM32F732主頻高達216 MHz,具備內(nèi)存保護單元,支持DSP指令,在執(zhí)行內(nèi)部FLASH代碼時能達到1082 Core Mark /462DMIPS性能表現(xiàn)。該內(nèi)核集成了一級緩沖(4 KB指令緩存+4 KB數(shù)據(jù)緩存),讓外部存儲器的使用性能變得卓越。同時,它具有多通道DMA、multi-AHB總線矩陣、Chrom-Art加速器、AXI總線等強大的硬件支持,極大地優(yōu)化了內(nèi)部數(shù)據(jù)連接,無需CPU干預(yù)即可完成大量數(shù)據(jù)搬遷。STM32F732有1024 KB內(nèi)部FLASH,320 KB存儲,集成AES、DES、HASH、HMAC加密硬件電路,支持多種外部存儲、多達18 通道定時器及以太網(wǎng)連接TFT控制器。
本方案采用STM32F732芯片作為從站微處理器、LAN9252作為EtherCAT從站控制器,為此可以將整個從站系統(tǒng)分為STM模塊(微處理器部分)和ESC模塊(控制器部分)兩大模塊。STM模塊的功能是實現(xiàn)應(yīng)用層協(xié)議,ESC模塊的功能是實現(xiàn)EtherCAT數(shù)據(jù)鏈路層的功能。系統(tǒng)原理框圖如圖1所示。
圖1 系統(tǒng)原理框圖
LAN9252內(nèi)部集成有上電復(fù)位電路,在芯片復(fù)位后會根據(jù)其硬件配置引腳的電平狀態(tài)將器件配置成相應(yīng)的功能。LAN9252主要的硬件配置管腳定義如表1所示。
表1 硬件配置管腳定義
當(dāng)完成硬件配置后,LAN9252通過讀取外接EEPROM中的從站配置信息完成LAN9252從站的建立。當(dāng)LAN9252自動配置完成后,微處理器便可以通過配置好的PDI(Process Data Interface,即過程數(shù)據(jù)接口)接口與LAN9252進行數(shù)據(jù)交互。LAN9252支持兩種類型的PDI接口,SPI串行模式或者MCI并行模式。串行接口適用于數(shù)據(jù)傳輸量比較小的應(yīng)用,并行接口適用于傳輸數(shù)據(jù)量較大的復(fù)雜設(shè)備。為了實現(xiàn)高速率的數(shù)據(jù)傳輸,本系統(tǒng)中采用外部總線,通過變址尋址的方案和LAN9252進行通信。LAN9252支持兩種并行通信方式,一種是總線復(fù)用模式,一種是變址尋址模式。本方案中采用16位變址尋址模式對LAN9252進行尋址。
本方案采用查詢方式和中斷相結(jié)合的數(shù)據(jù)讀取方式,所以ESC的IRQ引腳要連接至STM模塊的外部中斷引腳。由于LAN9252通過SYNC0和SYNC1引腳為從站提供精確的同步脈沖以實現(xiàn)從站同步,因此也需要將SYNC0和SYNC1引腳連接至STM模塊的外部中斷引腳。LAN9252的接口連接圖如圖2所示。
圖2 LAN9252接口連接圖
STM模塊是EtherCAT從站的控制核心。該模塊的作用是通過FSMC接口接收來自ESC模塊的控制信息,同時接收來自系統(tǒng)設(shè)備層的數(shù)據(jù)信息,將數(shù)據(jù)信息通過FSMC總線傳遞給ESC模塊,從而實現(xiàn)相關(guān)數(shù)據(jù)在EtherCAT總線上的接收和傳輸。
STM32F732芯片的FSMC接口支持多種外部存儲區(qū)擴展。該接口內(nèi)部集成了對這些存儲區(qū)的控制器,可以將系統(tǒng)AHB總線轉(zhuǎn)化成與外部存儲區(qū)復(fù)合的總線接口形式。FSMC在STM32F732芯片內(nèi)部占用大小為1 GB的內(nèi)存尋址空間。這部分內(nèi)存尋址空間分為4個大小為256 MB的Bank,其中Bank0又分為4個Region,每個Region占64 MB。Bank1和Bank2又都被分成2個Section,分別是屬性存儲空間和通用存儲空間。Bank3分成3個Section,分別是屬性存儲空間、通用存儲空間和I/O存儲空間。每個Bank和Region都有獨立的片選控制信號,也都能進行獨立的配置。具體地址映射關(guān)系如圖3所示。
圖3 FSMC地址映射關(guān)系圖
由于本方案中采用16位變址尋址模式對LAN9252進行尋址,因此FSMC模塊必須設(shè)置成16位數(shù)據(jù)寬度、PSRAM控制器模式,使用NE0作為LAN9252的片選信號。
ESC模塊有3個中斷信號需要接入STM模塊中,而對于STM32F732芯片來說其所有通用管腳均可設(shè)置為中斷觸發(fā)模式并由EXTI(中斷/事件控制器)進行檢測控制。EXTI 有3種觸發(fā)類型:上升沿觸發(fā)、下降沿觸發(fā)和任意沿觸發(fā)。根據(jù)ESC模塊的手冊本方案采用的是上升沿觸發(fā)。
軟件主要由兩部分組成,一是EEPROM中的ESC模塊配置文件,二是STM模塊軟件。ESC模塊配置文件是從站物理層的基本配置信息,而STM模塊軟件完成的是從站應(yīng)用層的相關(guān)初始化、協(xié)議解析和數(shù)據(jù)處理等工作。
ESC模塊配置文件主要是對LAN9252的PDI(Process Data Interface,即過程數(shù)據(jù)接口)接口、從站狀態(tài)機和狀態(tài)寄存器以及PDI看門狗寄存器等進行相關(guān)配置。EEPROM數(shù)據(jù)格式如圖4所示。
圖4 EEPROM配置數(shù)據(jù)信息
ESC模塊配置文件采用ETG協(xié)會提供的SSC Tool配置工具生成。根據(jù)PDI硬件接口工作模式選擇對應(yīng)的配置項、設(shè)備版本等信息,配置完成后導(dǎo)入對象字典描述文件以及數(shù)據(jù)類型,然后點擊生成便可自動生成EEPROM配置文件。
STM模塊軟件主要完成的功能為內(nèi)核初始化、FSMC接口和EXIT接口初始化、EtherCAT協(xié)議棧及相關(guān)變量數(shù)據(jù)的初始化,最終進入EtherCAT協(xié)議棧狀態(tài)機。流程如圖5所示。
圖5 軟件流程圖
STM模塊內(nèi)核初始化主要是對STM32F732芯片的時鐘進行配置,使其工作在216 MHz頻率下,并配置好EtherCAT協(xié)議棧所需的定時器資源。FSMC接口和EXIT接口的初始化是根據(jù)STM模塊與LAN9252的硬件接口關(guān)系進行相應(yīng)的配置工作。在本方案中STM模塊與LAN9252的通信接口采用FSMC接口,所以需要根據(jù)配置文件中定義好的PDI接口的特性對FSMC接口進行配置。本方案中PDI接口采用16位變址尋址模式,因此FSMC接口需配置成16位PSRAM模式。本方案中PSRAM模式使用的是BANK0區(qū)域,所有此時以0x60000000為起始地址的64 KB空間將映射為LAN9252的內(nèi)存空間。由于EtherCAT的狀態(tài)事件以及同步數(shù)據(jù)是通過中斷控制模式進行讀寫的,所以需要針對LAN9252的3個中斷對STM模塊的EXIT接口進行配置。本方案配置了EXTI1、EXTI2、EXTI3作為LAN9252的中斷接口。至此,STM模塊的初始化功能已完成。
EtherCAT協(xié)議棧主要實現(xiàn)EtherCAT狀態(tài)機的變換、數(shù)據(jù)的讀寫等功能。該協(xié)議棧由SSC Tool配置工具生成。但是,生成的協(xié)議棧不能直接在STM模塊上運行,需要根據(jù)STM模塊的硬件設(shè)計進行相應(yīng)的移植工作。首先需要對3個中斷處理函數(shù)EXTI0_IRQHandler、 EXTI1_IRQHandler、EXTI2_IRQHandler進行修改。將這3個函數(shù)與EtherCAT協(xié)議棧中斷處理函數(shù)PDI_Isr()、Sync0_Isr()以及Sync1_Isr()相關(guān)聯(lián);其次將定時器中斷函數(shù)TIM2_IRQHandler()和ECAT_CheckTimer()函數(shù)相關(guān)聯(lián),以實現(xiàn)EtherCAT協(xié)議棧運行時的定時要求;最后將FSMC接口的讀寫函數(shù)改寫到EtherCAT協(xié)議棧的4個讀寫函數(shù)HW_EscRead()、HW_EscReadIsr()、HW_EscWrite()、HW_EscWriteIsr()中便完成了EtherCAT協(xié)議棧在STM模塊上的移植工作。
傳統(tǒng)的控制系統(tǒng)一般采用RS232、CAN等通訊方式進行控制命令和數(shù)據(jù)的傳輸,控制命令和數(shù)據(jù)傳輸?shù)膶崟r性和同步性很難得到保證,無法做到實時高精度的控制。通過上述方法實現(xiàn)的基于LAN9252芯片的EtherCAT從站其優(yōu)異的通訊性能和同步特性保證了控制系統(tǒng)的精度和實時性。該EtherCAT從站已經(jīng)在某型產(chǎn)品的伺服驅(qū)動平臺上使用,應(yīng)用穩(wěn)定可靠,效果良好,具有很好的實際應(yīng)用和推廣價值。