,,,
(1.浙江理工大學(xué)機(jī)械與自動控制學(xué)院,浙江 杭州 310018;2.浙江新德寶機(jī)械有限公司,浙江 溫州 325000)
在過去的幾十年里,工業(yè)機(jī)器人在一些制造領(lǐng)域起著越來越重要的作用,而運(yùn)動控制器作為工業(yè)機(jī)器人重要的組成部分也越來越受到重視[1-2]?,F(xiàn)在市場上的多軸運(yùn)動控制系統(tǒng)大多采用脈沖模擬量的控制方式,但這種以脈沖模擬量控制的系統(tǒng)不適合應(yīng)用于高精度、快響應(yīng)和同步性要求高的工業(yè)場合[3]。
EtherCAT是一種將以太網(wǎng)與現(xiàn)場總線技術(shù)相結(jié)合的工業(yè)總線,具有帶寬利用率高、實(shí)時性強(qiáng)、拓?fù)浣Y(jié)構(gòu)靈活、傳輸速率高以及成本低等優(yōu)勢,并且滿足伺服運(yùn)動控制系統(tǒng)對穩(wěn)定性、快速響應(yīng)和同步性等方面的要求[4]。因此,EtherCAT是多軸運(yùn)動控制通信系統(tǒng)的良好選擇。經(jīng)過調(diào)研,目前EtherCAT主站大部分由商業(yè)軟件或開源軟件實(shí)現(xiàn)。使用商業(yè)軟件實(shí)現(xiàn)EtherCAT通信系統(tǒng)的方案,成本高昂;使用開源軟件實(shí)現(xiàn)EtherCAT通信方案,移植困難。同時,2種方案都需要技術(shù)人員對EtherCAT協(xié)議進(jìn)行大量的學(xué)習(xí),對技術(shù)人員要求高。
本文針對上述問題,提出一種基于嵌入式STM32H7平臺的EtherCAT主站方案。該方案設(shè)計使用搭載主站芯片EC-01M的嵌入式平臺實(shí)現(xiàn)EtherCAT主站功能,實(shí)現(xiàn)對2臺伺服電機(jī)以及1塊IO芯片的控制。
本文設(shè)計的系統(tǒng)總體框架如圖1所示,EC-01M芯片與STM32H743芯片通過SPI總線通信,利用STM32H743芯片控制EC-01M芯片發(fā)送EtherCAT數(shù)據(jù)幀,實(shí)現(xiàn)EtherCAT主站功能。
圖2 EtherCAT通信原理
為了實(shí)現(xiàn)多軸運(yùn)動控制系統(tǒng)的通信,采用EtherCAT協(xié)議進(jìn)行設(shè)計。EtherCAT作為一種開放的實(shí)時以太網(wǎng),最早在2003年由德國倍福公司開發(fā),EtherCAT技術(shù)突破了其他以太網(wǎng)解決方案的系統(tǒng)限制,此技術(shù)無需接收以太網(wǎng)數(shù)據(jù)包,將其解碼后再將過程數(shù)據(jù)復(fù)制到其他設(shè)備。EtherCAT從站設(shè)備在報文經(jīng)過節(jié)點(diǎn)時讀取對應(yīng)的報文,同時把需要返回給主站的數(shù)據(jù)插入到報文中,不需要以往以太網(wǎng)解決方案中需要讀取整個數(shù)據(jù)包的過程,大大提高了數(shù)據(jù)傳輸速度與實(shí)時性。EtherCAT通信原理如圖2所示,采用一主多從的結(jié)構(gòu),在網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)方面沒有任何限制,最多支持65 535個從站節(jié)點(diǎn),可以組成線型、樹型以及星型等任意拓?fù)浣Y(jié)構(gòu)[5-7]。
主站首先發(fā)出下行報文,經(jīng)過第1個從站節(jié)點(diǎn),從站設(shè)備尋址到屬于該節(jié)點(diǎn)的數(shù)據(jù)并完成數(shù)據(jù)讀取操作。將處理過的輸出數(shù)據(jù)插入到數(shù)據(jù)幀的對應(yīng)位置,同時將工作計數(shù)器(WKC)的值加1,即子報文已被從站操作1次;之后數(shù)據(jù)幀依次傳遞至下一個從站節(jié)點(diǎn),從站進(jìn)行相同操作,直到數(shù)據(jù)幀被傳至最后一個從站設(shè)備n且最后一個節(jié)點(diǎn)端口時開放端口,因全雙工特性開始將數(shù)據(jù)返回至主站,最終由主站處理返回的上行數(shù)據(jù),完成1次主從站之間的通信。在整個過程中,主站發(fā)出的數(shù)據(jù)幀均經(jīng)過每一個從站節(jié)點(diǎn),且各從站節(jié)點(diǎn)只把對應(yīng)的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行讀取和寫入操作。該方式改善了帶寬的利用率,加快了數(shù)據(jù)交換速度,1個數(shù)據(jù)幀就能完成數(shù)據(jù)通信,無需附加交換機(jī)和集線器,縮小了成本。由于主站主要負(fù)責(zé)時間控制和數(shù)據(jù)發(fā)出,主站需要保證足夠的實(shí)時性能以確保周期性數(shù)據(jù)傳輸?shù)挠行訹8-10]。
本文選用的EC-01M芯片是由NEXTW科技公司開發(fā)的EtherCAT主站控制器。主站芯片或設(shè)備可以通過SPI或USB接口與EC-01M進(jìn)行通信。EC-01M最多支持40個EtherCAT從站和支持最小250 μs的同步周期時間,并且具有精簡介質(zhì)接口RMII與外部PHY芯片相連接。
圖3 硬件接線
主站應(yīng)用程序主要由系統(tǒng)配置模塊、EtherCAT總線配置模塊、從站配置模塊和任務(wù)運(yùn)行模塊4部分組成,如圖4所示。
圖4 應(yīng)用程序流程
首先,對系統(tǒng)初始化,MCU進(jìn)行引腳以及SPI通信的初始化,建立MCU與EC-01M通信。之后MCU向EC-01M發(fā)送命令,監(jiān)測從站數(shù)量,發(fā)送、設(shè)置從站類型,以及建立主站與從站之間數(shù)據(jù)交換的通道,并且設(shè)置其中伺服從站的運(yùn)行模式(如CSP模式),設(shè)置同步時間與同步模式,同步時間目的是設(shè)置各個從站處理周期任務(wù)數(shù)據(jù)的時間。EtherCAT中規(guī)定了FreeRun、SM同步和DC同步3種不同的同步模式,EC-01M支持FreeRun和DC同步2種同步模式。之后通過配置伺服驅(qū)動器,使其進(jìn)入伺服使能狀態(tài)。
在配置過程之后,MCU可以運(yùn)行周期性任務(wù),把PDO數(shù)據(jù)通過SPI發(fā)送給EC-01M,由EC-01M將SPI接收的數(shù)據(jù)打包為EtherCAT數(shù)據(jù)幀發(fā)送至各個從站,完成周期性實(shí)時控制各從站設(shè)備執(zhí)行的任務(wù)。
EC-01M配置主要分為EtherCAT狀態(tài)機(jī)配置以及從站信息配置2個部分,可通過編寫EC-01M提供的API函數(shù)進(jìn)行配置,如圖5所示。
圖5 EC-01M配置流程
EC-01M配置過程中,STM32H743IIT6通過SPI與EC-01M進(jìn)行數(shù)據(jù)交換。上位機(jī)偵測到SPI_BUSY引腳為低電平時,表示EC-01M空閑,可以進(jìn)行數(shù)據(jù)交換;當(dāng)進(jìn)入數(shù)據(jù)交換時SPI_BUSY信號立刻升為高電平,直至通信結(jié)束后且EC-01M處理完命令封包后SPI_BUSY信號才恢復(fù)為低電平,之后STM32H743IIT6可再次通過SPI進(jìn)行數(shù)據(jù)交換,EC-01M中SPI時序如圖6所示。
圖6 SPI時序
EtherCAT狀態(tài)機(jī)(EtherCAT state machine,ESM)負(fù)責(zé)協(xié)調(diào)主站和從站應(yīng)用程序在初始化和運(yùn)行時的狀態(tài)關(guān)系。EtherCAT可分為4個執(zhí)行狀態(tài),包括Init、PreOP、SafeOP和OP,各個狀態(tài)能執(zhí)行的命令不同。在Init狀態(tài)定義了主站與從站在應(yīng)用層的初始通信關(guān)系;在PreOP狀態(tài)郵箱通信被激活,主站可以使用郵箱通信方式進(jìn)行從站類型及驅(qū)動器類型的設(shè)置;在SafeOP狀態(tài),從站應(yīng)用程序讀取輸入數(shù)據(jù),進(jìn)行非周期性數(shù)據(jù)交換;在OP狀態(tài)下,從站讀取輸入數(shù)據(jù),主站程序發(fā)出輸出數(shù)據(jù),從站設(shè)備產(chǎn)生輸出信號,主從站可進(jìn)行周期性數(shù)據(jù)交換[11-13]。
在配置PreOP至SafeOP狀態(tài)轉(zhuǎn)換期間,需要對過程數(shù)據(jù)進(jìn)行映射,以及配置同步管理器(sync manager,SM)通道和現(xiàn)場總線內(nèi)存管理單元(fieldbus memory management unit,FMMU)。在使用EC-01M配置過程中,只需要設(shè)置從站信息,設(shè)置從站信息是為了使EC-01M按照各個IO或伺服從站類型進(jìn)行PDO數(shù)據(jù)的映射以及SM與FMMU的配置。EC-01M按照標(biāo)準(zhǔn)CiA402協(xié)議提供了特有的PDO映射,如圖7所示,減少了工作人員對PDO映射配置的操作。在進(jìn)行PDO數(shù)據(jù)傳輸過程中,只需要通過API函數(shù)發(fā)送對應(yīng)的數(shù)據(jù)信息[14-16]。
指標(biāo)體系在構(gòu)建過程中,盡可能涵蓋各種可能涉及的環(huán)境影響因素。西南地區(qū)煤炭礦區(qū)規(guī)劃環(huán)評首先充分考慮到實(shí)現(xiàn)區(qū)域可持續(xù)發(fā)展、發(fā)展綠色煤都、持續(xù)推進(jìn)清潔生產(chǎn)等方面要求,有針對性地選取若干套指標(biāo)體系,并對指標(biāo)進(jìn)行可行性分析,再從煤炭礦區(qū)規(guī)劃內(nèi)容,區(qū)域發(fā)展規(guī)劃和限制煤炭礦區(qū)發(fā)展的環(huán)境因子等不同角度對初選指標(biāo)進(jìn)行篩選,得到更具全面性和可行性的指標(biāo)體系;最后經(jīng)過專家咨詢最終確立具有更高科學(xué)性和操作性的指標(biāo)體系。
圖7 CSP模式下PDO映射
伺服驅(qū)動器在啟動前,需要先將伺服驅(qū)動器上電使能。在EtherCAT協(xié)議中,需要將地址60400010h控制字寫入任意數(shù)至6至7至15的操作,才可以將伺服驅(qū)動器使能,操作復(fù)雜。使用EC-01M主站方案時,只需要執(zhí)行1條API函數(shù)即可,對控制字寫入操作交給EC-01M處理,大大精簡了代碼量。
周期性實(shí)時任務(wù)包括主站周期性實(shí)時生成控制指令、數(shù)據(jù)控制從站設(shè)備執(zhí)行周期性任務(wù)以及實(shí)現(xiàn)主從站周期性過程數(shù)據(jù)交換。
總線配置完成后主站進(jìn)入OP狀態(tài),通過調(diào)用API函數(shù),將數(shù)據(jù)通過SPI發(fā)送至EC-01M芯片。MCU通過1 ms周期時間進(jìn)行SPI通信,從而完成主從站實(shí)時數(shù)據(jù)交換。
EC-01M有一個大小為160個EtherCAT數(shù)據(jù)深度的緩沖FIFO。因?yàn)镋C-01M和STM32H743IIT6時鐘無法同步,所以STM32H743IIT6發(fā)送EtherCAT數(shù)據(jù)時會發(fā)生時鐘漂移,導(dǎo)致EC-01M中的數(shù)據(jù)FIFO為空或者溢出的現(xiàn)象。FIFO為空時會導(dǎo)致EC-01M按照周期時間發(fā)送EtherCAT數(shù)據(jù)幀時為空指令,使從站停止;FIFO溢出時則會導(dǎo)致數(shù)據(jù)丟失,且從站與MCU同步時間過大。本設(shè)計針對以上問題提出一種方案,配置流程如圖8所示,改進(jìn)MCU與EC-01M傳輸方式,使得FIFO中數(shù)據(jù)數(shù)量穩(wěn)定,提高整體系統(tǒng)同步性與穩(wěn)定性。
在進(jìn)行PDO數(shù)據(jù)傳輸之前,設(shè)置在充滿2個FIFO空間之后再進(jìn)行PDO數(shù)據(jù)傳輸,可以保證EC-01M在進(jìn)行周期性傳輸任務(wù)期間,F(xiàn)IFO中必定有值,從而避免空包發(fā)出。之后每次傳輸PDO數(shù)據(jù)時,監(jiān)測FIFO剩余的數(shù)量,如果數(shù)量小于158個,則表明FIFO中有2個以上冗余的數(shù)據(jù),這個時候需要調(diào)大一些STM32H743IIT6發(fā)送PDO數(shù)據(jù)的周期,避免FIFO中數(shù)據(jù)持續(xù)冗余導(dǎo)致FIFO溢出以及同步性降低的問題;如果數(shù)量大于158個,表明FIFO中存儲的數(shù)據(jù)小于2個,此時則調(diào)小STM32H743IIT6發(fā)送PDO數(shù)據(jù)的周期,避免出現(xiàn)FIFO中無數(shù)據(jù),PDO數(shù)據(jù)為空,伺服電機(jī)停頓的情況。
圖8 配置FIFO流程
本文根據(jù)系統(tǒng)整體方案,搭建了基于EtherCAT通信的嵌入式實(shí)驗(yàn)平臺(如圖9所示),并對所設(shè)計的系統(tǒng)進(jìn)行功能測試,驗(yàn)證系統(tǒng)設(shè)計的可行性。
圖9 實(shí)驗(yàn)平臺
根據(jù)圖1的整體框架,選擇STM32H743IIT6開發(fā)板根據(jù)SPI接口使用杜邦線與EC-01M開發(fā)板相連,EC-01M使用網(wǎng)線根據(jù)線性拓?fù)湟?guī)則將伺服驅(qū)動1、伺服驅(qū)動2和IO從站串接。伺服驅(qū)動1、2選用禾川X3E伺服驅(qū)動器與伺服電機(jī),禾川X3E伺服電機(jī)支持EtherCAT通信且支持同步周期時間1 ms。IO從站選用的是EtherCAT從站芯片AX58100開發(fā)板,AX58100是一款EtherCAT從站控制器,集成2個支持100 Mbit/s全雙工操作的快速以太網(wǎng)PHY。AX58100提供32個適用于工業(yè)實(shí)時I/O控制應(yīng)用的數(shù)字控制I/O,以及I/O Watchdog提供監(jiān)測I/O狀態(tài)來適當(dāng)處置以確保產(chǎn)品功能的安全性,所以將AX58100開發(fā)板的I/O口接入1個LED燈,通過LED的狀態(tài)來驗(yàn)證主站對AX58100開發(fā)板的控制。
運(yùn)行主站程序,實(shí)現(xiàn)數(shù)據(jù)收發(fā)后,PC通過交換機(jī)利用Wireshark網(wǎng)絡(luò)抓包軟件進(jìn)行測試和統(tǒng)計,抓取到每幀數(shù)據(jù)如圖10所示,每100 ms的收發(fā)包數(shù)量隨時間變化如圖11所示,最終測得每100 ms收發(fā)包數(shù)量如表1所示。因?yàn)镋therCAT采用得全雙工的通信方式且EC-01 M發(fā)送EtherCAT數(shù)據(jù)幀時同時發(fā)送LRD和LWR讀寫指令,按照實(shí)驗(yàn)中1 ms的周期通信,100 ms的理論收發(fā)包數(shù)為100×2×2=400個。
圖10 Wireshark軟件的EtherCAT報文截圖
圖11 系統(tǒng)收發(fā)包情況
表1 每100 ms收發(fā)包數(shù)統(tǒng)計表 包
從圖10可以看出0x910即為從站系統(tǒng)時間所在地址,在執(zhí)行FRMW命令后,工作計數(shù)器的值由0變?yōu)?,說明成功完成了讀寫操作并返回。從圖11可以看出,系統(tǒng)的接收發(fā)包數(shù)在396~404之間,較為穩(wěn)定,滿足數(shù)據(jù)傳輸穩(wěn)定性要求。
在進(jìn)入OP模式后,周期性數(shù)據(jù)開始發(fā)送,不斷監(jiān)測剩余FIFO數(shù)量,并通過串口在PC端打印出數(shù)據(jù)。由于周期性任務(wù)為1 ms傳輸1次,因?yàn)榘凑? ms采集數(shù)據(jù),則采集數(shù)據(jù)量過大,所以采用500 ms打印1次的周期進(jìn)行采集。將采集到的數(shù)據(jù)繪制圖像,如圖12和圖13所示。
圖12 未進(jìn)行補(bǔ)償剩余FIFO數(shù)量
圖13 進(jìn)行補(bǔ)償剩余FIFO數(shù)量
由圖12可以看出,在未進(jìn)行時鐘補(bǔ)償時,F(xiàn)IFO空間在周期性運(yùn)行300 s后會被充滿。整個系統(tǒng)的同步有160×1=160 ms的延時,同步性較差,如果繼續(xù)以這個狀態(tài)傳輸,那么則會導(dǎo)致有周期性數(shù)據(jù)丟失等問題。如圖13可以看出,經(jīng)過時鐘補(bǔ)償后,剩余FIFO數(shù)量在500 s之后仍然保持在158個左右,使得FIFO數(shù)量一直保持2~4個數(shù)據(jù),解決了圖12延遲越來越大和數(shù)據(jù)丟失的問題。
本文對基于EC-01M的EtherCAT嵌入式系統(tǒng)進(jìn)行了研究,著重介紹了使用EC-01M搭建EtherCAT通信系統(tǒng)方案,給出了具體的硬件、軟件設(shè)計方案。系統(tǒng)中STM32H743IIT6代碼并不過多涉及EtherCAT協(xié)議,而是將EtherCAT協(xié)議部分交給EC-01M芯片,使得整體代碼簡潔,通用性好,易學(xué)習(xí),可移植性高。實(shí)驗(yàn)根據(jù)EtherCAT協(xié)議,驗(yàn)證了該系統(tǒng)能夠?qū)崿F(xiàn)EtherCAT數(shù)據(jù)的實(shí)時傳輸和較好的通信穩(wěn)定性。同時改進(jìn)與EC-01M的傳輸規(guī)則,使得整個系統(tǒng)傳輸更穩(wěn)定,同步性更好,解決了因?yàn)闀r鐘不同步導(dǎo)致的數(shù)據(jù)丟失現(xiàn)象。為EtherCAT協(xié)議在嵌入式系統(tǒng)的應(yīng)用提供了設(shè)計方案,具有一定的參考價值。