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