董海濤,朱國慶,黃麗宇
(1.廣西大學(xué) a.機械工程學(xué)院;b.信息網(wǎng)絡(luò)中心,南寧 530004;2.廣西制造系統(tǒng)與先進制造技術(shù)重點實驗室,南寧 530004)
在工業(yè)自動化領(lǐng)域,以太網(wǎng)通信因傳輸速率快、距離遠、技術(shù)成熟、性價比高等特點使工業(yè)現(xiàn)場總線技術(shù)從傳統(tǒng)現(xiàn)場總線向工業(yè)以太網(wǎng)方向發(fā)展[1]。如今Modubus/TCP、Ethernet/IP、EtherCAT、EPA、Ethernet PowerLink、SERCOS III、PROFINET IRT是應(yīng)用于工業(yè)控制領(lǐng)域的幾種工業(yè)以太網(wǎng)技術(shù)[2-3]。其中,EtherCAT因經(jīng)濟成本低、傳輸率高、拓撲靈活、安全可靠等特點受到越來越多的關(guān)注[4]。在EtherCAT網(wǎng)絡(luò)中,伺服驅(qū)動EtherCAT通信接口實現(xiàn)了從站功能。目前,從站實現(xiàn)方法主要有專用ASIC,如倍福公司的ET1100[5-6]、ET1200,英飛凌公司的XMC4800/XMC4300,Hilscher公司的NetX500[7],或在FPGA中集成IP-Core,如Altera和Xilinx公司的EtherCAT IP核[8],另外,德州儀器在AM335x的PRU-ICSS中也實現(xiàn)了EtherCAT從站功能[9]。但它們還存在一些不足,使用IP-Core將EtherCAT通信功能集成到FPGA中,用戶根據(jù)特定功能模塊進行配置,降低了開發(fā)周期,但當模塊出現(xiàn)問題時,追蹤與解決問題比較復(fù)雜,不便于后期維護。從站專用控制芯片ET1100引腳數(shù)量多,封裝難度大,且需外接PHY芯片,硬件集成度低,成本高。AM335x雖硬件集成度高,但不是傳統(tǒng)EtherCAT從站實現(xiàn)方案,軟件實現(xiàn)復(fù)雜,開發(fā)周期長。
為了解決上述不足,本文以伺服系統(tǒng)為背景,提出使用美國Microchip公司提供的從站專用芯片LAN9252和STM32F407開發(fā)伺服驅(qū)動EtherCAT通信接口的方法。該方法具有硬件尺寸小,成本低,開發(fā)周期短,易于維護等多方面的優(yōu)點。
作為實時工業(yè)以太網(wǎng),EtherCAT充分利用以太網(wǎng)全雙工特性,采用主從站通信方式,通過雙端口RAM實現(xiàn)主從站之間的數(shù)據(jù)交換。EtherCAT通信由主站發(fā)起,主站向從站發(fā)起下行數(shù)據(jù)幀,當數(shù)據(jù)幀到達各從站時,從站ESC(EtherCAT Slave Controller)根據(jù)在網(wǎng)絡(luò)拓撲中的位置,按照移位的方式從數(shù)據(jù)幀中提取數(shù)據(jù)存入內(nèi)部存儲區(qū),或?qū)⒁獋鬏斀o主站的數(shù)據(jù)插入數(shù)據(jù)幀,數(shù)據(jù)的提取與插入同時進行,由ESC硬件實現(xiàn)。當數(shù)據(jù)幀遍歷完所有從站后,最后一個從站將處理完的報文發(fā)回,由第一個從站將報文返回給主站,一次通信結(jié)束。
LAN9252包括2~3個通信端口,均采用MII通信模式,含有3個FMMU(現(xiàn)場總線內(nèi)存管理單元),4個SM(同步管理器單元),4KB的DPRAM(雙端口RAM),支持64位分布式時鐘,支持三種PDI(過程數(shù)據(jù)接口)接口:16位數(shù)字IO、串行SPI、8/16位HBI(主機總線接口),其中SPI和HBI用于連接外部MCU,組成復(fù)雜EtherCAT從站[10]。STM32F407VGT6是ST(意法)公司基于Cortex-M4核的32位微控制器,包括1MB片內(nèi)Flash和192KB片內(nèi)RAM,芯片集成定時器、ADC、I2C、USB、FSMC等多種外設(shè),其中FSMC支持SRAM、NOR和NAND Flash的擴展。
文中采用模塊化的方法設(shè)計以STM32為核心的應(yīng)用控制模塊和以LAN9252為核心的EtherCAT通信模塊,兩模塊之間基于STM32的FSMC外設(shè)與LAN9252的HBI接口進行通信,采用16位單階段鎖存的地址與數(shù)據(jù)復(fù)用尋址方式,如圖1所示為該模式下兩者之間的連接。
圖1 LAN9252與STM32之間連接
采用層次化方法設(shè)計伺服驅(qū)動EtherCAT通信接口軟件,包括驅(qū)動程序、EtherCAT協(xié)議棧及應(yīng)用程序的設(shè)計。驅(qū)動程序?qū)崿F(xiàn)STM32與LAN9252之間數(shù)據(jù)交互,EtherCAT協(xié)議棧實現(xiàn)EtherCAT狀態(tài)機、郵箱數(shù)據(jù)與過程數(shù)據(jù)通信,在應(yīng)用程序中,結(jié)合CANopen DS402伺服與運動控制行規(guī),構(gòu)成CANopen over EtherCAT(CoE)的結(jié)構(gòu),實現(xiàn)伺服通信功能。
在初始化過程中,當主站掃描到伺服從站后,在從站EEPROM存儲器中讀取配置信息,根據(jù)配置信息初始化從站接口。如圖2所示為主程序流程,其中,HW_ Init( )函數(shù)用于初始化相關(guān)GPIO引腳、FSMC外設(shè)及配置相關(guān)中斷事件,MainInit( )函數(shù)用于初始化EtherCAT從站接口和CoE對象字典。初始化完成后,進入主循環(huán)MainLoop( )函數(shù)實現(xiàn)EtherCAT通信。從站設(shè)備可在自由運行、同步模式和分布時鐘三種模式下運行,如圖2所示為自由運行模式時流程圖,其他兩種模式下,在相應(yīng)中斷服務(wù)函數(shù)中處理過程數(shù)據(jù)通信。
圖2 主程序流程
3.2.1 EtherCAT狀態(tài)機
EtherCAT狀態(tài)機協(xié)調(diào)主站與從站應(yīng)用程序在初始化和運行過程中的關(guān)系。如圖3所示,常見的總線狀態(tài)分別是初始化(Init)、預(yù)運行(PreOP)、安全運行(SafeOP)和運行(OP)狀態(tài),轉(zhuǎn)換順序一般為Init→PreOP→SafeOP→OP,逐級轉(zhuǎn)換,不能跳躍。狀態(tài)轉(zhuǎn)換由主站發(fā)起,如圖4所示為轉(zhuǎn)換流程,包括狀態(tài)請求、狀態(tài)轉(zhuǎn)換和狀態(tài)響應(yīng)三個階段。主站將要請求的狀態(tài)寫入AL控制寄存器,從站接收到請求后,讀取寄存器的值,檢查FMMU/SM等配置,判斷是否可以轉(zhuǎn)換。若配置正確,則根據(jù)當前狀態(tài)與請求狀態(tài)計算轉(zhuǎn)換參數(shù),調(diào)用轉(zhuǎn)換函數(shù)進行轉(zhuǎn)換,將結(jié)果寫入AL狀態(tài)寄存器,待主站讀取。若配置不正確或轉(zhuǎn)換不正確,則調(diào)用錯誤處理函數(shù)處理,將未能轉(zhuǎn)換的原因?qū)懭階L狀態(tài)代碼寄存器待主站讀取。主站根據(jù)AL狀態(tài)寄存器的錯誤指示位判斷是否出現(xiàn)錯誤,執(zhí)行下一步操作。
圖3 EtherCAT狀態(tài)轉(zhuǎn)換
圖4 EtherCAT狀態(tài)請求與響應(yīng)
3.2.2 周期性數(shù)據(jù)通信
文中STM32與LAN9252之間通過中斷方式通信。從站在同步模式下周期性過程數(shù)據(jù)的處理流程如圖5所示,當有SM事件時,LAN9252向STM32觸發(fā)中斷信號IRQ, STM32響應(yīng)中斷信號后,在PDI_Isr( )中斷服務(wù)函數(shù)中查詢AL事件請求寄存器,判斷是否有輸出過程數(shù)據(jù)待處理,若有,則從LAN9252的SM2緩存區(qū)復(fù)制數(shù)據(jù)至STM32,利用復(fù)制的數(shù)據(jù)進行應(yīng)用控制,將反饋數(shù)據(jù)寫入SM3緩存區(qū),等待下一個周期,主站讀取,過程數(shù)據(jù)處理完成。當設(shè)置為分布時鐘同步模式時,在Sync0Isr( )中斷服務(wù)函數(shù)中完成應(yīng)用控制與反饋數(shù)據(jù)的寫入。
圖5 PDI_Isr( )中斷服務(wù)函數(shù)流程
EtherCAT在應(yīng)用層支持CANopen協(xié)議,支持該協(xié)議中CiA402伺服和運動控制行規(guī),行規(guī)主要功能模塊如圖6所示。
圖6 伺服驅(qū)動EtherCAT接口CiA402行規(guī)
3.3.1 伺服狀態(tài)轉(zhuǎn)換
CiA402行規(guī)中伺服狀態(tài)機定義了驅(qū)動設(shè)備的控制時序,對設(shè)備狀態(tài)及轉(zhuǎn)換過程中執(zhí)行的動作進行了定義。主站通過寫控制字索引0x6040h控制設(shè)備狀態(tài)及轉(zhuǎn)換過程,在從站設(shè)備中,查詢控制字后,若有轉(zhuǎn)換請求,則執(zhí)行相應(yīng)動作,通過狀態(tài)字索引0x6041h返回當前狀態(tài)。在各狀態(tài)下,狀態(tài)機只能接收特定的指令執(zhí)行相應(yīng)的動作,其轉(zhuǎn)換過程如圖7所示。
圖7 伺服狀態(tài)機轉(zhuǎn)換
3.3.2 伺服控制模式實現(xiàn)
CiA402行規(guī)中定義了多種控制模式,每一種模式都定義了基本框架及使用的索引。本文伺服從站實現(xiàn)了周期同步位置模式,其基本框圖如圖8所示。當總線狀態(tài)由PreOP轉(zhuǎn)換為SafeOP時,主站通過郵箱服務(wù)配置運行模式0x6060h為8,使伺服運行在周期同步位置模式。該模式下,在上位機中完成軌跡規(guī)劃功能,每個總線周期,主站均向伺服從站輸出目標位置指令值,LAN9252得到位置指令值后,觸發(fā)中斷事件,在中斷服務(wù)函數(shù)中根據(jù)映射關(guān)系解析得到2字節(jié)控制字和4字節(jié)目標位置指令,同時反饋2字節(jié)狀態(tài)字和4字節(jié)實際位置值。
圖8 周期同步位置模式框圖
基于TwinCAT主站軟件與設(shè)計的伺服從站搭建一主一從的伺服驅(qū)動EtherCAT通信接口測試平臺,驗證接口功能,分析接口性能。
為了測試伺服驅(qū)動接口EtherCAT通信是否正常,在TwinCAT PLC中定義變量,用ST語言編寫程序控制STM32上LED2的狀態(tài)。當LAN9252接收到主站傳輸?shù)臄?shù)據(jù)后,經(jīng)過HBI接口傳輸至STM32,經(jīng)對應(yīng)的GPIO引腳輸出。當建立通信后,在TwinCAT中設(shè)置從站運行在 “DC”模式,在Scope view中記錄LED2的輸出模擬如圖9所示,用示波器觀察STM32上LED2對應(yīng)引腳輸出信號如圖10所示,對比圖9與圖10可知,主站傳輸?shù)男盘柵c在STM32上測量得到的一致。故LAN9252與STM32之間HBI接口能準確通信且伺服驅(qū)動接口EtherCAT通信正確。
圖9 TwinCAT中LED2輸出模擬
圖10 STM32上LED2引腳輸出
利用Wireshark軟件捕獲EtherCAT網(wǎng)絡(luò)從啟動到運行過程中的23745條報文,其中一半是主站傳輸給從站的報文,一半是從站返回給主站的,相鄰兩報文的時間間隔為EtherCAT報文刷新從站的時間。對捕獲的報文進行統(tǒng)計分析,刷新從站的時間約為16.55μs,故網(wǎng)絡(luò)通信速度快,實時性好。
在運行過程中,TwinCAT軟件可統(tǒng)計數(shù)據(jù)幀的丟失與出錯情況,當主站發(fā)送數(shù)據(jù)幀后一段時間間隔未返回,則出現(xiàn)數(shù)據(jù)幀丟失錯誤,丟失計數(shù)器將加1,當主站接收到返回的數(shù)據(jù)幀出現(xiàn)錯誤時,錯誤計數(shù)器將加1。如圖11所示為1ms通信周期下連續(xù)運行10小時的統(tǒng)計情況,由此可以看出不存在丟幀與錯幀,反映了該從站的穩(wěn)定性良好。
圖11 丟幀與錯幀統(tǒng)計
分布時鐘同步模式用于高速高精同步要求較高的控制場合,在該模式下,通常選取與主站相連的第一個具有分布時鐘功能的從站作為參考從站,其他從站和該從站進行同步。為了測試從站之間的同步性,在DC模式下,用示波器觀測兩從站SYNC0引腳電平,如圖12所示為兩從站SYNC0同步脈沖,可以看出該系統(tǒng)在200μs運行周期下,脈沖之間的抖動范圍為5ns,該接口同步性能良好,能滿足伺服控制系統(tǒng)的需求。
圖12 從站之間的同步脈沖
在周期同步位置模式下模擬電機往復(fù)運動的過程,該模式下通過設(shè)定操作模式為8使伺服運行在周期同步位置模式,設(shè)定目標位置為500mm,目標速度為50mm/s,通過索引0x6064h獲取電機實際位置,如圖13所示為電機運行過程中實際位置與給定位置曲線,由圖13可知,實際位置與給定位置曲線基本吻合,伺服從站能很好地跟隨主站傳輸?shù)闹噶钔瓿伤欧恢每刂乒δ?,驗證了伺服從站能正常工作。
圖13 周期同步位置模式測試結(jié)果
文中闡述了基于LAN9252與STM32F407實現(xiàn)伺服驅(qū)動EtherCAT通信接口的過程,結(jié)合CiA402伺服和運動控制行規(guī)實現(xiàn)應(yīng)用設(shè)計。基于TwinCAT主站軟件搭建測試系統(tǒng),驗證接口EtherCAT通信功能,對性能進行了分析。結(jié)果表明所提出方法可行,接口EtherCAT通信及伺服控制功能正常,實時性、穩(wěn)定性與同步性能均良好,為后續(xù)開發(fā)多軸EtherCAT伺服系統(tǒng)奠定了基礎(chǔ)。