馮 文, 張冰蔚, 趙 忠
(江蘇科技大學(xué) 機(jī)械工程學(xué)院, 江蘇 鎮(zhèn)江 212100)
進(jìn)入信息化時(shí)代以來(lái),在以太網(wǎng)和信息技術(shù)等技術(shù)的支持下,工業(yè)以太網(wǎng)技術(shù)發(fā)展迅速,其高適應(yīng)性,高可靠性及高穩(wěn)定性等特點(diǎn)十分符合工業(yè)現(xiàn)場(chǎng)復(fù)雜工作環(huán)境的要求,大大提高了工作人員的工作效率[1].
然而,現(xiàn)代網(wǎng)絡(luò)技術(shù)種類繁多,分類復(fù)雜,各種以太網(wǎng)協(xié)議使用的場(chǎng)合各不相同,尋找合適的網(wǎng)絡(luò)通信協(xié)議對(duì)工控行業(yè)極為重要[2].第一屆中國(guó)工業(yè)以太網(wǎng)發(fā)展論壇上,BECKHOFF公司開(kāi)發(fā)的EtherCAT技術(shù)因其高速處理性能受到各家企業(yè)、高校的關(guān)注,其可在30 ms內(nèi)處理完成1 000個(gè)數(shù)字量I/O,可在50 ms內(nèi)處理完成200個(gè)模擬量I/O[3].主從站之間使用網(wǎng)線連接,其同步性高,時(shí)鐘同步精度可低于1 μs[4].BECKHOFF開(kāi)發(fā)的TwinCAT系列主站軟件可以實(shí)現(xiàn)多種語(yǔ)言的控制程序編寫(xiě)[5],可于32位和64位的Windows系統(tǒng)運(yùn)行.另外,EtherLab開(kāi)發(fā)的Igh和RT-LAB開(kāi)發(fā)的SOEM開(kāi)源主站也能夠?qū)崿F(xiàn)大部分的主站控制功能[6].但是通過(guò)上位機(jī)軟件無(wú)法直觀地分析EtherCAT控制原理及步驟,因此,通過(guò)數(shù)據(jù)包的抓取與分析可以實(shí)現(xiàn)掌握EtherCAT工作原理的目的.
本實(shí)驗(yàn)采用基于EtherCAT協(xié)議的主從站通信方式,在控制電機(jī)過(guò)程中采集通信數(shù)據(jù)報(bào)文,從底層研究EtherCAT通信原理及主站對(duì)從站進(jìn)行運(yùn)動(dòng)控制的相關(guān)配置,從而實(shí)現(xiàn)對(duì)設(shè)計(jì)更多從站精確控制方法的研究.
EtherCAT(ethernet control automation technology,以太網(wǎng)自動(dòng)控制技術(shù))是一種具有高速傳輸效率的實(shí)時(shí)工業(yè)以太網(wǎng)技術(shù),于2003年由德國(guó)的BECKHOFF公司開(kāi)發(fā)并進(jìn)行推廣.EtherCAT可通過(guò)交換機(jī)拓展網(wǎng)絡(luò)接口數(shù)量,從而實(shí)現(xiàn)星型、線型、樹(shù)型等多種拓?fù)浞绞?大大提高其工作效率[7].EtherCAT的實(shí)時(shí)性能可以達(dá)到100軸0.11 ms的響應(yīng)時(shí)間,突破了工業(yè)控制系統(tǒng)的技術(shù)瓶頸.
EtherCAT通過(guò)主從站方式進(jìn)行通訊,其主站可通過(guò)PC機(jī)實(shí)現(xiàn),通過(guò)網(wǎng)絡(luò)接口與從站連接.一個(gè)完整的EtherCAT系統(tǒng)在進(jìn)行運(yùn)動(dòng)控制之前,主站首先通過(guò)網(wǎng)絡(luò)接口對(duì)該條通信鏈路上的所有從站進(jìn)行掃描,然后發(fā)送出一條下行的數(shù)據(jù)幀,依照順序經(jīng)過(guò)所有從站.當(dāng)從站成功讀取或插入本條數(shù)據(jù)幀中對(duì)應(yīng)位置的子報(bào)文時(shí),本條子報(bào)文的工作計(jì)數(shù)器(WKC)數(shù)值發(fā)生變化,數(shù)據(jù)幀繼續(xù)下行,到達(dá)各從站后流程同上,當(dāng)該條數(shù)據(jù)幀遍歷所有從站后,通信鏈路末端的從站將數(shù)據(jù)幀返回到主站[8].在此過(guò)程中,上行的數(shù)據(jù)幀無(wú)法被從站改寫(xiě),整個(gè)過(guò)程體現(xiàn)了EtherCAT的全雙工通信特性.同時(shí),當(dāng)EtherCAT數(shù)據(jù)幀到達(dá)從站時(shí),ESC(從站控制器)調(diào)用相關(guān)硬件處理EtherCAT數(shù)據(jù)幀中對(duì)應(yīng)位置的子報(bào)文,因此大大降低了數(shù)據(jù)傳輸過(guò)程中的延遲[9].EtherCAT運(yùn)行原理如圖1所示.
圖1 EtherCAT網(wǎng)絡(luò)運(yùn)行原理Fig.1 Operation principle of EtherCAT network
主站與從站之間的信息互換通過(guò)以太網(wǎng)數(shù)據(jù)幀實(shí)現(xiàn),一條完整的EtherCAT數(shù)據(jù)幀包含以太網(wǎng)幀頭,EtherCAT頭,EtherCAT數(shù)據(jù)以及幀檢測(cè)序列(FCS).以太網(wǎng)幀頭中包含以下3種信息:①?gòu)恼驹O(shè)備的MAC地址;②主站設(shè)備的MAC地址;③EtherCAT的數(shù)據(jù)幀類型(0x88A4)[10].通過(guò)識(shí)別以太網(wǎng)幀頭,可以判定該條數(shù)據(jù)幀的適用網(wǎng)絡(luò)協(xié)議,當(dāng)主站設(shè)備連接多個(gè)從站時(shí),可以通過(guò)過(guò)濾特定的MAC地址來(lái)查找特定的從站.EtherCAT數(shù)據(jù)幀結(jié)構(gòu)如圖2所示.
圖2 EtherCAT數(shù)據(jù)幀結(jié)構(gòu)Fig.2 Data frame structure of EtherCAT
EtherCAT頭和EtherCAT數(shù)據(jù)中保存了主站對(duì)從站的所有控制信息.包括狀態(tài)機(jī)轉(zhuǎn)換、時(shí)鐘同步、地址配置等關(guān)鍵信息,保證主、從站之間的通信正常[11].每個(gè)從站讀取出數(shù)據(jù)幀中的相關(guān)數(shù)據(jù),將設(shè)備信息中的軸位置等信息插入到數(shù)據(jù)幀,并且改寫(xiě)工作計(jì)數(shù)器(WKC)的值,顯示本節(jié)點(diǎn)已完成相關(guān)的讀寫(xiě)工作.工作計(jì)數(shù)器的值的改寫(xiě)遵照讀加1,寫(xiě)加2,讀寫(xiě)加3的規(guī)律,通過(guò)檢查子報(bào)文中的WKC值判斷各個(gè)從站節(jié)點(diǎn)的讀寫(xiě)狀況,同時(shí)也可以排查從站設(shè)備是否存在通訊異常.
為了實(shí)現(xiàn)EtherCAT數(shù)據(jù)幀的讀/寫(xiě)功能,在通訊過(guò)程中采用多段、多種尋址方式將從站控制器所需的數(shù)據(jù)讀/寫(xiě)到特定的存儲(chǔ)區(qū)中[12].由于EtherCAT主站與從站之間支持多種連接方式,故而通過(guò)識(shí)別EtherCAT數(shù)據(jù)中的以太網(wǎng)幀頭的內(nèi)容(即目標(biāo)設(shè)備中的MAC地址)完成數(shù)據(jù)分配,同一目的地址的設(shè)備可劃分為一個(gè)網(wǎng)段,之后分別在各個(gè)網(wǎng)段內(nèi)繼續(xù)分配控制數(shù)據(jù).
試驗(yàn)中使用安裝了TwinCAT2軟件以及NIC網(wǎng)卡的PC機(jī)作為主站,雷賽的DM3E系列驅(qū)動(dòng)器作為從站,主站與從站使用標(biāo)準(zhǔn)以太網(wǎng)網(wǎng)線進(jìn)行通訊,通過(guò)TwinCAT2 PLC軟件進(jìn)行編程,實(shí)現(xiàn)對(duì)多臺(tái)電機(jī)的同步運(yùn)動(dòng)控制,在通信過(guò)程中,EtherCAT的多軸控制是基于其應(yīng)用層協(xié)議CoE(CANopen over EtherCAT)來(lái)實(shí)現(xiàn)的,即在從站應(yīng)用層采用CANopen的CiA402子協(xié)議(驅(qū)動(dòng)和運(yùn)動(dòng)控制子協(xié)議)完成相關(guān)的控制任務(wù).
試驗(yàn)中通過(guò)TwinCAT PLC Control軟件進(jìn)行程序編寫(xiě),TwinCAT軟件支持CoDeSys Softmotion工具包,其中提供的眾多功能塊可以幫助完成對(duì)電機(jī)使能以及多軸配合等復(fù)雜動(dòng)作的控制[13].本文通過(guò)添加TC2_MC2和TC2_MC2_Camming庫(kù)文件中運(yùn)動(dòng)控制功能塊進(jìn)行PLC程序編寫(xiě),在進(jìn)行從站設(shè)備掃描時(shí),添加NC軸(虛擬軸),建立NC軸和實(shí)軸的映射關(guān)系,便于在后續(xù)的運(yùn)動(dòng)控制過(guò)程中方便改寫(xiě)電機(jī)轉(zhuǎn)速、位置等相關(guān)參數(shù).本文設(shè)計(jì)的控制系統(tǒng)通過(guò)調(diào)用MC_Power功能塊完成電機(jī)使能,為方便計(jì)算各電機(jī)的運(yùn)動(dòng)距離,調(diào)用MC_SetPosition功能塊對(duì)電機(jī)的實(shí)時(shí)位置進(jìn)行初始化,并在HMI界面上顯示軸實(shí)時(shí)位置信息.為防止在運(yùn)動(dòng)控制過(guò)程中因錯(cuò)誤操作造成的驅(qū)動(dòng)器報(bào)警,在PLC程序中調(diào)用MC_Stop和MC_Reset功能塊用于緊急停止電機(jī)運(yùn)轉(zhuǎn)及復(fù)位報(bào)警信息(僅適用于非掉電復(fù)位).控制系統(tǒng)的HMI界面如圖3所示.
圖3 HMI界面Fig.3 Interface of HMI
為明晰主站控制從站設(shè)備進(jìn)行相關(guān)運(yùn)動(dòng)的具體方法,本設(shè)計(jì)在主從站之間插入赫優(yōu)訊公司生產(chǎn)的以太網(wǎng)分析儀netANALYZER,用于截取主站發(fā)送給從站設(shè)備的控制數(shù)據(jù)包,在數(shù)據(jù)包截取期間,通過(guò)TwinCAT軟件對(duì)從站進(jìn)行了狀態(tài)及配置、對(duì)象字典改寫(xiě)以及多軸配合運(yùn)動(dòng)等操作,最后,將截取下來(lái)的數(shù)據(jù)包文件用Wireshark軟件打開(kāi)并進(jìn)行分析.
EtherCAT主站在對(duì)從站進(jìn)行控制管理時(shí), 需要配置從站狀態(tài)機(jī). 標(biāo)準(zhǔn)的EtherCAT從站需要支持4種狀態(tài): Init(初始化),Pre-operation(預(yù)運(yùn)行), Safe-operation(安全運(yùn)行)和Operation(運(yùn)行). Bootstrap(引導(dǎo))狀態(tài)可自主選用[14]. 在主站進(jìn)行運(yùn)動(dòng)控制時(shí), 通過(guò)發(fā)送狀態(tài)轉(zhuǎn)換數(shù)據(jù)幀, 使從站按照Init→Pre-operation→Safe-operation→Operation的順序進(jìn)行狀態(tài)轉(zhuǎn)換, 具體狀態(tài)轉(zhuǎn)換順序如圖4所示.
圖4 從站狀態(tài)機(jī)轉(zhuǎn)換圖Fig.4 Transition diagram of slave state machine
EtherCAT規(guī)定,在進(jìn)行狀態(tài)轉(zhuǎn)變時(shí),初始化狀態(tài)必須經(jīng)歷預(yù)運(yùn)行、安全運(yùn)行狀態(tài)才能轉(zhuǎn)換成運(yùn)行狀態(tài)且順序不可改變,從運(yùn)行狀態(tài)返回時(shí),可越級(jí)轉(zhuǎn)化[15].在不同的狀態(tài)下,主站可以對(duì)從站設(shè)備進(jìn)行不同的控制操作.
主站寫(xiě)狀態(tài)機(jī)方式如表1所示.
表1 寫(xiě)狀態(tài)機(jī)指令Table 1 Instructions of write state machine
1) Init:訪問(wèn)從站寄存器數(shù)據(jù);清除從站所有FMMU(現(xiàn)場(chǎng)總線內(nèi)存管理單元)配置;復(fù)位同步管理器SM與分布時(shí)鐘管理器;配置從站物理地址等.
2) Pre-operation:啟用郵箱通信;配置SM、FMMU;寫(xiě)入分布式時(shí)鐘系統(tǒng)時(shí)間(DC sysTime),完成主從站時(shí)間同步,循環(huán)讀取從站寄存器各地址實(shí)時(shí)數(shù)據(jù).
3) Safe-operation:發(fā)送TX-PDO(主站輸出過(guò)程數(shù)據(jù)).
4) Operation:主從站通信功能全部開(kāi)啟.
5) Bootstrap:在從站支持EtherCAT子協(xié)議FoE(file access over EtherCAT)時(shí)使用,非必須.
XML從站配置文件用于描述從站設(shè)備的生產(chǎn)商相關(guān)信息以及對(duì)設(shè)備的FMMU、PDO、SM和硬件設(shè)備接口進(jìn)行配置[16].XML文件的編寫(xiě)需符合CiA402協(xié)議的相關(guān)規(guī)定[17].試驗(yàn)中,進(jìn)行主從站連接測(cè)試之前,需要將XML從站描述文件導(dǎo)入到TwinCAT2軟件安裝目錄的IO文件夾下,否則主站無(wú)法識(shí)別雷賽DM3E系列驅(qū)動(dòng)器.
主站讀寫(xiě)設(shè)備狀態(tài)主要通過(guò)對(duì)象字典完成,支持EtherCAT通信協(xié)議的所有驅(qū)動(dòng)器的對(duì)象字典需要涵蓋CiA402和CoE的相關(guān)數(shù)據(jù)對(duì)象.
3.3.1 PDO映射數(shù)據(jù)幀
過(guò)程數(shù)據(jù)對(duì)象PDO用來(lái)反映從站設(shè)備的實(shí)時(shí)運(yùn)行狀態(tài)信息,XML文件定義了RX-PDO(主到從)和TX-PDO(從到主),PDO的傳輸方式根據(jù)主站運(yùn)行在DC模式和Free-run模式分為周期性和非周期性更新,DM3E定義了4組RX-PDO(索引0x1600~1603h)和2組TX-PDO(索引0x1a00~1a01h),其中RX-PDO包含的對(duì)象字典映射內(nèi)容為控制字、目標(biāo)位置、最大速度、加減速度和操作模式等,TX-PDO包含狀態(tài)字、實(shí)際位置、錯(cuò)誤代碼等.
通過(guò)分析抓取到的數(shù)據(jù)幀,主站配置PDO基本方式如下:以TX-PDO1為例,首先對(duì)TX-PDO1對(duì)象索引0x1a00h的子索引00進(jìn)行寫(xiě)0操作,從而可以對(duì)0x1a00h的所有子索引進(jìn)行賦值;然后對(duì)子索引01h~07h進(jìn)行賦值,賦值數(shù)據(jù)的高16位為對(duì)象字典的索引,低16位為該索引的位長(zhǎng);在完成0x1a00h的所有子索引的賦值后,重新對(duì)0x1a00h的子索引00進(jìn)行寫(xiě)操作,完成TX-PDO1的配置.范例數(shù)據(jù)幀如圖5所示.
圖5 TX-PDO數(shù)據(jù)幀F(xiàn)ig.5 Data frame of TX-PDO
3.3.2 對(duì)象字典數(shù)據(jù)改寫(xiě)
對(duì)象字典為EtherCAT應(yīng)用層協(xié)議的的一部分,是驅(qū)動(dòng)器所有可讀寫(xiě)參數(shù)和當(dāng)前狀態(tài)的集合.當(dāng)從站設(shè)備被軟主站TwinCAT掃描完成后,在CoE online界面中可以動(dòng)態(tài)顯示所有參數(shù)的值.
在本設(shè)計(jì)中,為了解主站對(duì)對(duì)象字典各索引位的操作方法,以索引0x2051h(電機(jī)運(yùn)轉(zhuǎn)方向)、0x2057h(清除報(bào)警信息)、0x2073h(電機(jī)上電自走位)為例,改寫(xiě)其參數(shù)值并同時(shí)進(jìn)行抓包:①對(duì)索引0x2073h置1,并對(duì)索引0x1010:04寫(xiě)入0x65766173完成數(shù)據(jù)保存,驅(qū)動(dòng)器重新上電后,電機(jī)進(jìn)行正轉(zhuǎn)30度后反轉(zhuǎn)15度運(yùn)動(dòng),說(shuō)明對(duì)索引0x2073h置位成功,分析數(shù)據(jù)包;②當(dāng)驅(qū)動(dòng)器ERR燈閃爍時(shí),對(duì)索引0x2057h進(jìn)行置1處理,ERR燈熄滅,說(shuō)明報(bào)警信息清除成功,分析對(duì)應(yīng)數(shù)據(jù)幀;③索引0x2051h,清0時(shí)電機(jī)按照逆時(shí)針?lè)较蜻\(yùn)轉(zhuǎn),置1時(shí)電機(jī)反方向運(yùn)轉(zhuǎn).本設(shè)計(jì)中對(duì)該索引進(jìn)行置1處理,電機(jī)使能后進(jìn)行順時(shí)針運(yùn)轉(zhuǎn),說(shuō)明置1成功,分析數(shù)據(jù)包過(guò)濾出寫(xiě)對(duì)象字典數(shù)據(jù)幀如圖6所示.
圖6 改寫(xiě)索引0x2051hFig.6 Rewrite index 0x2051h
3.3.3 運(yùn)動(dòng)位置數(shù)據(jù)實(shí)例
為了了解主站如何發(fā)送數(shù)據(jù)控制從站電機(jī)運(yùn)動(dòng),設(shè)定雷賽DM3E-556驅(qū)動(dòng)器工作在CSP(循環(huán)同步位置)模式,通過(guò)寫(xiě)從站對(duì)象字典完成運(yùn)動(dòng)模式的設(shè)定.根據(jù)CiA402子協(xié)議以及XML文件定義可知,從站運(yùn)動(dòng)模式索引地址為0x6060h,CSP模式CMD值為8,分析數(shù)據(jù)包后確定寫(xiě)數(shù)據(jù)成功,如圖7所示,數(shù)據(jù)中索引到目標(biāo)地址0x6060h,并對(duì)該地址賦值0x08h,通過(guò)WKC數(shù)值可以判定寫(xiě)數(shù)據(jù)成功.
圖7 寫(xiě)從站運(yùn)動(dòng)模式Fig.7 Writing the motion mode of the slave station
之后控制電機(jī)進(jìn)行絕對(duì)位移運(yùn)動(dòng),此操作可在TwinCAT軟件的Functions界面進(jìn)行,首先將電機(jī)當(dāng)前位置清零,然后設(shè)置目標(biāo)位置為100 mm,目標(biāo)速度為40 mm·s-1,預(yù)估運(yùn)動(dòng)時(shí)間為2.5 s.設(shè)定完成后按照上參數(shù)重復(fù)進(jìn)行5次運(yùn)動(dòng),同時(shí),對(duì)整個(gè)操作流程進(jìn)行抓包,分析其具體數(shù)據(jù).現(xiàn)對(duì)第一次運(yùn)動(dòng)數(shù)據(jù)進(jìn)行分析.
通過(guò)主站的速度規(guī)劃及目標(biāo)位置的計(jì)算,在子報(bào)文LRW中,主站將目標(biāo)地址寫(xiě)入第25 byte ,使用周期性PDO報(bào)文將下一個(gè)位置信息傳輸?shù)綇恼掘?qū)動(dòng)器,通過(guò)分析子報(bào)文中數(shù)據(jù)的具體情況,計(jì)算得出發(fā)送的第一個(gè)數(shù)據(jù)包與最后一個(gè)數(shù)據(jù)包之間的數(shù)值差額為f4240h,即十進(jìn)制數(shù)1 000 000.首末數(shù)據(jù)報(bào)文比較如圖8所示.
圖8 第一次位置信息首末數(shù)據(jù)包比較Fig.8 Comparison of the first and last data packets of location information
首末數(shù)據(jù)包時(shí)間信息如圖9所示.圖中將首位數(shù)據(jù)包用黑色框選,當(dāng)前電機(jī)運(yùn)行時(shí)間約為21.74 s,位置信息與圖8(a)中相同,黑色框選末位數(shù)據(jù)包,當(dāng)前電機(jī)運(yùn)行時(shí)間約為24.24 s,位置信息與圖8(b)中相同,此時(shí),首個(gè)數(shù)據(jù)包到最后一個(gè)數(shù)據(jù)包傳輸?shù)某掷m(xù)時(shí)間約為2.5 s,滿足預(yù)估的運(yùn)行時(shí)間.
(a) 首個(gè)位置數(shù)據(jù)包時(shí)間(b) 末端位置數(shù)據(jù)包時(shí)間圖9 第一次運(yùn)動(dòng)位置信息數(shù)據(jù)包時(shí)間Fig.9 Time of the first motion location information packet
為確認(rèn)數(shù)據(jù)信息無(wú)誤,對(duì)第二次運(yùn)動(dòng)數(shù)據(jù)進(jìn)行分析,進(jìn)行絕對(duì)值位移運(yùn)動(dòng),運(yùn)行100 mm,速度不變,第二次運(yùn)動(dòng)首末位置數(shù)據(jù)具體情況如圖10所示,數(shù)據(jù)包時(shí)間信息如圖11所示.首位置數(shù)據(jù)為0f4240h,末位置數(shù)據(jù)為1e8480h,差值為f4240h,即十進(jìn)制1 000 000.
(a) 位置信息首位數(shù)據(jù)包(b) 位置信息末位數(shù)據(jù)包圖10 第二次位置信息首末數(shù)據(jù)包比較Fig.10 Comparison of the first and last data packets of the second location information
圖11 第二次運(yùn)動(dòng)位置信息數(shù)據(jù)包時(shí)間Fig.11 Time of thesecond motion location information packet
以上列出兩次運(yùn)動(dòng)數(shù)據(jù)信息比較,后續(xù)分析了剩余3組運(yùn)動(dòng)數(shù)據(jù),發(fā)現(xiàn)數(shù)據(jù)報(bào)文發(fā)送持續(xù)時(shí)間,首末數(shù)據(jù)報(bào)文位置差值同前兩次的結(jié)果相符合,因此可以解析出主站在CSP模式下控制從站運(yùn)動(dòng)的基本方法.
本文通過(guò)抓取主從站通信過(guò)程的具體數(shù)據(jù)包來(lái)分析主站軟件對(duì)從站設(shè)備的狀態(tài)機(jī)配置、對(duì)象字典改寫(xiě)和控制電機(jī)運(yùn)動(dòng)等基本操作指令的方法,在數(shù)據(jù)鏈路層對(duì)運(yùn)動(dòng)控制報(bào)文進(jìn)行分析,從而了解主站軟件的運(yùn)行方法以及運(yùn)動(dòng)控制程序的具體結(jié)構(gòu),既透徹的解析了主從站的通信方式,也了解了主站軟件的基本框架和控制指令的基本結(jié)構(gòu),對(duì)于自行編寫(xiě)主站控制程序提供了良好的基礎(chǔ).