作者簡介
偉林,中年碼農(nóng),從事過電信、手機、安全、芯片等行業(yè),目前依舊從事Linux方向開發(fā)工作,個人愛好Linux相關(guān)知識分享,個人微博CSDN pwl999,歡迎大家關(guān)注!
文章目錄
1. 簡介
1.1 運動控制
1.2 實時以太網(wǎng)
1.3 EtherCAT
2. EtherCAT原理介紹
2.1 實時性
2.2 端口管理
2.3 EtherCAT網(wǎng)絡(luò)拓撲
2.4 EtherCAT網(wǎng)絡(luò)協(xié)議棧
2.5 EtherCAT數(shù)據(jù)幀格式
2.6 EtherCAT設(shè)備尋址方式
2.8 應(yīng)用層(Application Layer)
2.9 設(shè)備配置(Device Profile)
2.10 主站設(shè)計
2.11 從站設(shè)計
3. 應(yīng)用層(Application Layer)
3.1EtherCAT Slave Implementation (從站實現(xiàn))4. 應(yīng)用實例
4.1 主站操作系統(tǒng)(RTAI)
4.2 主站EtherCAT程序(IGH)
4.3 主站應(yīng)用開發(fā)(LinuxCNC)
4.4 ET1200
4.5 從站程序設(shè)計
4.6 實驗測試
5. 工具
5.1 TwinCAT
5.2 LinuxCNC
5.3 開源的EtherCAT Master
1. 簡介
1.1 運動控制
運動控制系統(tǒng)處理機械系統(tǒng)中一個或多個坐標(biāo)上的運動以及運動之間的協(xié)調(diào),實現(xiàn)精確的位置控制、速度和加速度控制、轉(zhuǎn)矩和力的控制等。
單軸的運動控制系統(tǒng)可分為開環(huán)、半閉環(huán)和閉環(huán)伺服系統(tǒng)。
多軸運動控制系統(tǒng)可以分成點位控制、連續(xù)軌跡控制和同步控制。
典型的運動控制系統(tǒng),從結(jié)構(gòu)上看,包括上位機控制窗口、運動控制器、驅(qū)動器、電機以及測量反饋系統(tǒng)等幾個部分組成:
1.2 實時以太網(wǎng)
實時以太網(wǎng)(RTE, Real Time Ethernet)是常規(guī)以太網(wǎng)技術(shù)的延伸,以便滿足工業(yè)控制領(lǐng)域的實時性數(shù)據(jù)通信要求。目前,國際上有多種實時工業(yè)以太網(wǎng)協(xié)議,根據(jù)不同的實時性和成本的要求使用不同的原理,大致可以分為以下三類:
(1)基于TCP/IP實現(xiàn)的工業(yè)以太網(wǎng)仍使用TCP/IP協(xié)議棧,通過上層合理的控制來解決通信過程中的不確定因素。這種方式具有較高的傳輸速率,適應(yīng)于大量數(shù)據(jù)通信,更適合作為網(wǎng)關(guān)和交換設(shè)備的應(yīng)用,不能實現(xiàn)很好的實時性。常用的通信控制方法有:合理調(diào)度,減少沖突的概率;定義幀數(shù)據(jù)的優(yōu)先級,為實時數(shù)據(jù)分配最高優(yōu)先級;使用交換式以太網(wǎng)等。使用這種方式的典型協(xié)議有Modbus/TCP和Ethernet/IP等。
(2)基于以太網(wǎng)實現(xiàn)的工業(yè)以太網(wǎng)仍然使用標(biāo)準(zhǔn)的、未修改的以太網(wǎng)通信硬件,但是不適用TCP/IP來傳輸數(shù)據(jù)。它使用特定的報文進行傳輸。TCP/IP協(xié)議棧能使用時間控制層分發(fā)一定的時間片來利用網(wǎng)絡(luò)資源。該類協(xié)議主要有Ethernet Powerlink, EPA C Ethernet for Plant Automation ), PROFINET IRT等。通過這種方式可以實現(xiàn)較好的實時性。
(3)通過修改以太網(wǎng)協(xié)議實現(xiàn)的工業(yè)以太網(wǎng),實現(xiàn)應(yīng)答時間小于lms的硬實時,從站使用特定的硬件實現(xiàn)。由實時MAC控制實時通道內(nèi)的通信,從根本上避免報文間的沖突。非實時數(shù)據(jù)依然能在通道中按原協(xié)議通信。典型協(xié)議有德國倍福的EtherCAT、西門子的PROFINET IRT等。
1.3 EtherCAT
德國BECKHOFF自動化公司于2003年開發(fā)出的EtherCAT實時以太網(wǎng)技術(shù)突破了其他以太網(wǎng)解決方案的系統(tǒng)限制:通過該項技術(shù),無需接受以太網(wǎng)數(shù)據(jù)包,將之解碼,然后再將過程數(shù)據(jù)復(fù)制到各個設(shè)備。
2. EtherCAT原理介紹
EtherCAT從站設(shè)備在報文經(jīng)過其節(jié)點時讀取相應(yīng)的數(shù)據(jù)報文,同樣輸入數(shù)據(jù)也是在報文經(jīng)過時插入到報文中。整個過程報文只有幾納秒的時間延遲,實時性獲得極大提高
EtherCAT作為一種工業(yè)以太網(wǎng)總線,充分利用了以太網(wǎng)的全雙工特性。使用主從通信模式,主站發(fā)送報文給從站,從站從中讀取數(shù)據(jù)或?qū)?shù)據(jù)插入至從站。
-
主站
可使用標(biāo)準(zhǔn)網(wǎng)卡
實現(xiàn) -
從站
選用特定的EtherCAT從站控制器
ESC(EtherCAT Slave Controller)或者FPGA實現(xiàn)
主要完成通信
和控制應(yīng)用
兩部分功能,EtherCAT物理層選用標(biāo)準(zhǔn)以太網(wǎng)物理層器件。
從站能將收到的報文直接處理,并讀取或插入有關(guān)的數(shù)據(jù),再將報文發(fā)送給下一個EtherCAT從站。最末尾的EtherCAT從站返回處理完全的報文,然后由第一個從站發(fā)送給主站。整個通信過程充運行于全雙工模式下,TX線發(fā)出的報文又通過RX線返回給主站:
2.1 實時性
-
數(shù)據(jù)包刷新時間的計算
數(shù)據(jù)包中所有從站的 Process Datarocess Datarocess Data rocess Data rocess Data rocess Datarocess Data數(shù)據(jù) 決定了數(shù)據(jù)包的長度。
一個Ethernet thernet數(shù)據(jù)包最小84 字節(jié),不足 84 字節(jié)會補齊84 字節(jié)。由于EtherCAT Frame中有一些公共開銷, 84 字節(jié)的數(shù)據(jù)包最多含18字節(jié)的過程數(shù)據(jù)??紤]到數(shù)據(jù)包必須經(jīng)過每個從站兩次才能回到主站,所數(shù)據(jù)包以固定的波特率100 Mbps在網(wǎng)絡(luò)上傳輸兩次的時間 這就是它的總線刷新時間 。
1.基于這個原則,以包含 1000路開關(guān)量信號的數(shù)據(jù)包為例,計算過程如下:
過程數(shù)據(jù)長度:1000/8=125Bytes
數(shù)據(jù)包長度:84-18+125=191Bytes=191*8 Bit= 1528 Bit
總線刷新時間:(1528Bit/100,000,000 Bps)*2=15.28us*2=30.56us
注意,通常的數(shù)字量模塊, 都是單純的輸出或者輸入模塊,而不是混合模塊。所以 1000 個數(shù)字 量信號, Frame 中就會分配 125 字節(jié)。
2.再以包含100個EtherCAT伺服驅(qū)動器過程數(shù)據(jù)的EtherCAT數(shù)據(jù)包為例,假如每個伺服的過程數(shù)據(jù)只包括控制字(2字節(jié))、狀態(tài)字(2字節(jié))、目標(biāo)位置(4字節(jié))、實際位置(4字節(jié)),其總線刷新時間的計算過程如下:
過程數(shù)據(jù)長度:100*(2+4)=600 Byte。
數(shù)據(jù)包長度:84-18+600=1266 Byte =671*8 Bit =5328 Bit
總線刷新時間:(5328Bit/100,000,000Bps)*2=100.656μs
注意,F(xiàn)rame中只為一個伺服分配了6個字節(jié),這是因為根據(jù)Beckhoff公司的控制軟件TwinCAT中關(guān)于EtherCAT的默認設(shè)置是從站的Input和Output使用同一數(shù)據(jù)段,所以數(shù)據(jù)包進入伺服驅(qū)動器時該數(shù)據(jù)段存放的是控制字和目標(biāo)位置,而出來時則存放伺服的狀態(tài)字和實際位置。
以上兩個數(shù)據(jù)30.56μs和101.28 μs就是EtherCAT官方宣傳資料中,刷新1000個數(shù)字量需要30μs,刷新100個伺服軸只需要100μs的數(shù)據(jù)由來。實際上,根據(jù)從站的類型、是否包含分布時鐘、是否啟用時鐘同步、時鐘同步的參數(shù)設(shè)置不同,在數(shù)據(jù)包中有可能還會增加8-12字節(jié)用于傳輸同步時鐘值,以及相應(yīng)的為每個從站增加一個Bit的標(biāo)記等等,會增加幾個微秒的刷新時間,暫且忽略不計。
以上計算只是數(shù)據(jù)包傳輸需要的理論時間,實際上,數(shù)據(jù)包經(jīng)過每個從站會產(chǎn)生短暫的硬件延時。100M超五類網(wǎng)線接口的從站延時約1μs,而EBus的IO模塊類從站延時約0.3μs,在毫秒級以下的控制任務(wù)中如果從站數(shù)量較多,這個時間也相當(dāng)可觀,計算刷新周期時應(yīng)該考慮進去。
2.2 端口管理
一個從站控制器最多可以有4個端口,如果一個端口關(guān)閉了,控制器主動連接下一個端口。端口可以隨著EtherCAT命令主動的打開或者關(guān)閉。邏輯端口設(shè)置決定了EtherCAT幀的處理和發(fā)送順序。
2.3 EtherCAT網(wǎng)絡(luò)拓撲
所有數(shù)據(jù)幀在網(wǎng)絡(luò)中以一種“邏輯閉環(huán)”的方式傳播,與網(wǎng)絡(luò)的硬件拓樸無關(guān),無論它是鏈?zhǔn)?、菊花鏈、星形還是樹形拓樸。
所有數(shù)據(jù)幀都由Master發(fā)出,以事前嚴(yán)格定義的順序,依次經(jīng)過網(wǎng)絡(luò)上的所有從站,走過一個完整的閉環(huán)后回到Master 。所有數(shù)據(jù)幀通過從站中的 EtherCAT Processing Unit (EtherCAT處理單元)只有 1 次。
線型拓撲:任意數(shù)目的設(shè)備成線型連接 最多65535個設(shè)備
數(shù)據(jù)處理鏈型拓撲
?
帶有分支線的數(shù)據(jù)處理鏈型拓撲
樹型拓撲:
實時星型拓撲:
冗余線纜
?
選擇冗余電纜可以滿足快速增長的系統(tǒng)可靠性需求,以保證設(shè)備更換時不會導(dǎo)致網(wǎng)絡(luò)癱瘓。您可以很經(jīng)濟地增加冗余特性,僅需在主站設(shè)備端增加使用一個標(biāo)準(zhǔn)的以太網(wǎng)端口(無需專用網(wǎng)卡或接口),并將單一的電纜從總線型拓撲結(jié)構(gòu)轉(zhuǎn)變?yōu)榄h(huán)型拓撲結(jié)構(gòu)即可(見圖7)。當(dāng)設(shè)備或電纜發(fā)生故障時,也僅需一個周期即可完成切換。因此,即使是針對運動控制要求的應(yīng)用,電纜出現(xiàn)故障時也不會有任何問題。
EtherCAT也支持熱備份的主站冗余。由于在環(huán)路中斷時EtherCAT從站控制器芯片將立刻自動返回數(shù)據(jù)幀,一個設(shè)備的失敗不會導(dǎo)致整個網(wǎng)絡(luò)的癱瘓。例如,拖鏈設(shè)備可以配置為分支拓撲以防線纜斷開。
2.4 EtherCAT網(wǎng)絡(luò)協(xié)議棧
CoE(Can over EtherCAT)
PDO(Process Data Object 過程數(shù)據(jù)對象)
SDO(Service Data Object 服務(wù)數(shù)據(jù)對象)
PDI(ProcessDataInterface過程數(shù)據(jù)接口)(uC,SSI,I/O)
ESM(EtherCAT State Machine)
ESI(EtherCAT Slave Information) (XML device description)
ENI(EtherCAT Network Information)
CTT(Conformance Test Tool 一致性測試工具)
SM(SyncManagers 同步管理器)
MDP(modulardevicedescription模塊化設(shè)備描述)
2.5 EtherCAT數(shù)據(jù)幀格式
EtherCAT數(shù)據(jù)直接嵌入在以太網(wǎng)數(shù)據(jù)幀中進行傳輸,只是采用了一種特殊的幀類型,該類型為Ox88A4, EtherCAT數(shù)據(jù)幀結(jié)構(gòu)如圖所示:
EtherCAT數(shù)據(jù)包由數(shù)據(jù)頭和數(shù)據(jù)實體兩部分組成,EtherCAT數(shù)據(jù)頭包含2個字節(jié),每個數(shù)據(jù)包里面可以只包含一個EtherCAT子報文,也可以包含多個子報文;一個EtherCAT子報文對應(yīng)著一個從站,因此一個EtherCAT數(shù)據(jù)包可以操作 多個EtherCAT從站,相應(yīng)的數(shù)據(jù)長度在44-1498字節(jié)之間,EtherCAT數(shù)據(jù)幀結(jié)構(gòu)定義:
類型
字段:
EtherCAT子報文結(jié)構(gòu)定義:
-
地址區(qū)
字段
EtherCAT 尋址:
EtherCAT 通信的實現(xiàn)是通過由主站發(fā)送至從站的 EtherCAT 數(shù)據(jù)幀來完成對從站
設(shè)備內(nèi)部存儲區(qū)
的讀寫操作, EtherCAT 報文對 ESC 內(nèi)部存儲區(qū)有多種尋址操作方式,從而可以實現(xiàn)多種通信服務(wù)。EtherCAT 段內(nèi)尋址有設(shè)備尋址和邏輯尋址兩種方式。
設(shè)備尋址是面對一個從站進行讀寫操作。
邏輯尋址是面向過程的數(shù)據(jù)操作,實現(xiàn)同一報文讀寫多個從站設(shè)備的多播功能。
具備全部尋址方式的從站稱為完整性從站
,只具備部分尋址方式的從站則稱為基本從站。
-
命令
字段
不同命令通過信息傳輸系統(tǒng)最優(yōu)化對所有存取方法的讀寫
-
WKC
字段
Working Counter。如果成功尋址了EtherCAT設(shè)備,并且成功執(zhí)行了讀操作,寫操作或讀/寫操作,則工作計數(shù)器將遞增。
可以為每個數(shù)據(jù)報分配一個工作計數(shù)器值,該值是根據(jù)預(yù)期報文通過所有設(shè)備數(shù)來設(shè)置的。通過將工作計數(shù)器的預(yù)期值與所有設(shè)備通過后的實際值進行比較,主站可以檢查EtherCAT數(shù)據(jù)報是否已成功處理。
-
同步管理器
2.6 EtherCAT設(shè)備尋址方式
在EtherCAT的每個子報文中,有32位空間用于對EtherCAT設(shè)備進行尋址。尋址方式有四種,分別為:
-
位置尋址
位置尋址方式是根據(jù)從站的連接順序,即物理位置實現(xiàn)的。在報文頭的32bit地址中,前16bit的Position用于存放地址值,Offset用于存放ESC邏輯寄存器或者內(nèi)存地址。報文每經(jīng)過一個從站設(shè)備,其Position中的地址值加1。當(dāng)一個從站接收到EtherCAT報文后,如果報文中的地址值為0,則該報文就是這個從站要要接收的報文。
在上圖中,如果需要總線上第8個設(shè)備響應(yīng)報文,則主站需要將報文的地址設(shè)為0xFFF9,當(dāng)報文經(jīng)過第1個從站時,地址為0xFFF9,不等于0,第1個從站不會響應(yīng)報文,報文地址加1,變?yōu)?xFFFA。當(dāng)報文經(jīng)過第2個從站時,地址為0XFFFA,不等于0,第2個從站不會響應(yīng)該報文,報文地址加1,變?yōu)?xFFFB。以此類推,當(dāng)報文到達第8個從站時,此時地址值為0x0000,當(dāng)前從站將接收報文。
位置尋址(Position Address / Auto Increment Address)只應(yīng)在啟動EtherCAT系統(tǒng)時用于掃描現(xiàn)場總線,以后只能偶爾使用以檢測新連接的從站。如果由熱連接或鏈接問題導(dǎo)致循環(huán)暫時關(guān)閉,使用位置尋址可能會出現(xiàn)問題。在這種情況下位置地址被移位,并且,如錯誤寄存器的值到設(shè)備的映射變得不可能,因此不能定位故障鏈路。
-
節(jié)點尋址
在啟動階段,主站通常采用位置尋址方式對總線上的從站進行尋址,之后采用節(jié)點尋址方式。
在報文中,報文頭的32bit地址,前16bit的Address用于存放站點地址值,Offset用于存放ESC邏輯寄存器或者內(nèi)存地址。
在每個從站中站點地址
保存在寄存器(0x0010) 中。
順序?qū)ぶ窌r,主站可以對每個從站的站點地址進行設(shè)置,也可以直接讀取每個從站的的站點地址。
節(jié)點尋址方式的優(yōu)點是,每個從站的地址與其在總線中的位置無關(guān)。在添加/刪除從站,甚至是改變總線拓撲結(jié)構(gòu)的時候都能對從站進行正確的訪問。
上圖是節(jié)點尋址方式的示意圖。8個從站的地址與其在總線中的位置并沒有關(guān)系。出于直觀的目的,4臺伺服驅(qū)動器的地址被設(shè)置為連續(xù)的,4個I/O模塊的地址被設(shè)置為連續(xù)的,在實際中并沒有這樣的要求。
EtherCAT從設(shè)備可以有兩個配置的站點地址,一個由主站分配(Configured Station Address),另一個存儲在SII EEPROM,并且可以由從站應(yīng)用程序更改(Configured Station Alias address)。
配置站點地址
由主站在啟動期間分配,并且不能由EtherCAT從站更改。配置站別名地址
存儲在SIIEEPROM中,可由EtherCAT從站更改。配置的站別名
必須由主站啟用。如果節(jié)點地址(NodeAddress)與配置的站地址
或配置的站點別名
匹配,將執(zhí)行相應(yīng)的命令操作。
-
邏輯尋址
EtherCAT的第三種尋址方式是邏輯尋址,首先需要了解的是FMMU。
FMMU(Fieldbus Memory Management Units)
FMMU稱為總線內(nèi)存管理單元,它存在與從站芯片ESC中,負責(zé)對從站物理地址與主站邏輯地址進行翻譯并建立映射關(guān)系。主站在總線啟動過程中對FMMU進行配置,內(nèi)容包括:
? 邏輯地址的起始地址
? 數(shù)據(jù)長度(按跨字節(jié)數(shù)計算)
? 邏輯地址的起始位
? 邏輯地址的終止位
? 從站物理地址的起始地址
? 從站物理地址的起始位
? 操作類型(只讀、只寫、讀寫)
?使能
在報文中,使用報文頭的32bit地址的全部,用來表示大小為4GB的邏輯地址空間。
以上圖為例,F(xiàn)MMU將邏輯地址中0x00012345第2位開始的,到0x00012346以第2位終止的區(qū)域,與從站物理地址中0x0010第0位開始的區(qū)域進行映射。
當(dāng)從站收到來自主站的報文時,會檢查報文中的地址是否與FMMU中的地址相符,如果有,將根據(jù)操作類型進行讀寫操作。
這種尋址方式的優(yōu)點是,在主站想對每個從站進行訪問的時候,只需要對邏輯空間中的地址進行操作,而無須關(guān)心該地址對應(yīng)的從站物理地址,減輕了主站的負擔(dān)。
所有器件讀取和寫入相同的邏輯4 GB地址空間(EtherCAT數(shù)據(jù)報中的32位地址字段)。從器件使用映射單元(FMMU,現(xiàn)場總線存儲器管理單元)將數(shù)據(jù)從邏輯過程數(shù)據(jù)映像映射到其本地地址空間。在啟動期間,主器件配置每個從器件的FMMU。從站使用FMMU的配置信息知道邏輯過程數(shù)據(jù)映像的哪些部分必須映射到哪個本地地址空間。
邏輯尋址支持逐位映射。邏輯尋址是一種強大的機制,可以減少過程數(shù)據(jù)通信的開銷,因此通常用于訪問過程數(shù)據(jù)。
當(dāng)從站設(shè)備收到的EtherCAT報文帶有邏輯尋址標(biāo)志位時,從站設(shè)備將檢查自身是否有相應(yīng)的FMMU單位地址與之匹配。
總結(jié):EtherCAT使用三種方式對設(shè)備進行尋址,在啟動過程中,使用順序?qū)ぶ贩绞綖閺恼痉峙涔?jié)點地址,然后通過節(jié)點尋址方式配置從站寄存器,將邏輯地址與從站物理地址進行映射,之后就可以使用邏輯尋址方式進行過程數(shù)據(jù)交換了。
-
Broadcast尋址
每個EtherCAT從站都被尋址。
使用廣播尋址。如果從站的預(yù)期是相同的,用于所有從站的初始化和檢查所有從站的狀態(tài)。每個從器件具有一個16位Local地址空間:
地址范圍0x0000:0x0FFF專用于EtherCAT寄存器,
地址范圍0x1000:0xFFFF用作過程數(shù)據(jù)RAM
通過EtherCAT數(shù)據(jù)報的偏移字段尋址,過程數(shù)據(jù)。
2.7 分布式時鐘(Distribute Clock)
通過分布式時鐘精確的調(diào)整,系統(tǒng)可達到精確的同步。
外部時鐘同步IEEE1588
EtherCAT設(shè)備同步
定義系統(tǒng)時間
定義一個參考時鐘:
一個EtherCAT從站被當(dāng)做參考時鐘使用
參考時鐘循環(huán)的發(fā)布它的時鐘
參考時鐘根據(jù)一個全局參考時鐘IEEE1588
2.8 應(yīng)用層(Application Layer)
應(yīng)用層AL(Application Layer) 為用戶與網(wǎng)絡(luò)之間提供接口,應(yīng)用層在EtherCAT 通信協(xié)議層次結(jié)構(gòu)中是與用戶聯(lián)系最緊密最直接的一層,它可以直接與用戶進行交互,實現(xiàn)面對具體的應(yīng)用程序和控制任務(wù)等功能, EtherCAT 應(yīng)用層為各種服務(wù)協(xié)議與應(yīng)用程序之間定義了接口, 使其能夠滿足應(yīng)用層所要求的各種協(xié)議共同工作的需求。
EtherCAT 作為網(wǎng)絡(luò)通信技術(shù),支持CAN open 協(xié)議中的CiA402,以及 SERCOS 協(xié)議的應(yīng)用層( 即 CoE 和SoE)等多種符合行規(guī)的設(shè)備和協(xié)議。
EtherCAT狀態(tài)機 設(shè)備和網(wǎng)絡(luò)的啟動
郵箱接口和協(xié)議 設(shè)備的存取變量 異步傳輸
協(xié)議:
EOE: Ethernet over EtherCAT
COE: CANopen over EtherCAT
FOE: Filetransfer over EtherCAT
SOE:ServoDriveoverEtherCAT
從站信息接口 設(shè)備特征和配置信息
-
EtherCAT狀態(tài)機
狀態(tài)機構(gòu)建于數(shù)據(jù)鏈路層
定義EtherCAT從站設(shè)備一般信息狀態(tài)
指定對EtherCAT從站設(shè)備啟用網(wǎng)絡(luò)時初始化和錯誤處理
狀態(tài)和主從站之間通信關(guān)系相一致
從站設(shè)備的請求狀態(tài)和當(dāng)前狀態(tài)反應(yīng)于應(yīng)用層和應(yīng)用層注冊中
定義了五種狀態(tài):
Init // 應(yīng)用層沒有數(shù)據(jù)交互,主站對數(shù)據(jù)傳輸信息注冊有同路
Pre-Operational // 應(yīng)用層上的郵箱通信。沒有過程數(shù)據(jù)交互
Safe-Operational // 應(yīng)用層上的郵箱通信。過程數(shù)據(jù)通信,但是僅僅是輸入被評估,輸出置于Safe狀態(tài)
Operational // 輸入和輸出都是有效的
Bootstrap // 定義了固件更新。是可選的,但是在固件必須要更新時推薦選擇
//只能和init進行狀態(tài)間轉(zhuǎn)換,沒有過程數(shù)據(jù)通信,通過應(yīng)用層的郵箱進行通信,根據(jù)需要的情況對郵箱進行配置,只能使用FoE協(xié)議。
從站設(shè)備的請求狀態(tài)和當(dāng)前狀態(tài)反應(yīng)于應(yīng)用層控制和應(yīng)用層注冊中:
應(yīng)用層控制(0x0120) 初始化設(shè)備狀態(tài)機的狀態(tài)轉(zhuǎn)換
應(yīng)用層狀態(tài)(0x0130) 設(shè)備狀態(tài)機的實際狀態(tài)
應(yīng)用層狀態(tài)代碼(0x0134)錯誤原因或者其他狀態(tài)代碼
-
郵箱傳輸
交換變量數(shù)據(jù)的標(biāo)準(zhǔn)方式 郵箱接口是可選擇的,但是推薦使用 如果過程數(shù)據(jù)是可設(shè)置的,或者有其他的非周期性服務(wù),必須郵箱通信 全雙工能力 從站可以發(fā)起一個數(shù)據(jù)交互 預(yù)留兩個同步管理器通道:Sync Manager 0(主站到從站),Sync Manager 1(從站到主站) 數(shù)據(jù)交互的早期階段,郵箱方式是可利用的(State Pre-Operational) 支持多種協(xié)議的能力
郵箱通信協(xié)議的類型:
EOE: Ethernet over EtherCAT // 通過EtherCAT傳輸?shù)臉?biāo)準(zhǔn)以太網(wǎng)幀
COE: CANopen over EtherCAT // 訪問CANopen對象字典和它的對象,CANopen緊急事件和事件驅(qū)動的PDO消息
FOE: Filetransfer over EtherCAT // 下載上傳固件和其他的一些文件
SOE:ServoDriveoverEtherCAT//存取伺服輪廓檢驗(IDN)
-
從站信息接口
強制從站信息接口SII(Slave Information Interface)由所有能被持久保持的對象組成 信息被存儲于一個EEPROM,EtherCAT從站控制器和EEPROM之間有一個SPI接口。
SII包括:
boot設(shè)置數(shù)據(jù)
設(shè)備一致性
vender id,產(chǎn)品序列號,修正號,serial no
和CoE對象0x1018里,相同的信息
應(yīng)用程序信息數(shù)據(jù)
額外的一些數(shù)據(jù)
-
AL Status Code(Application Layer Status Code)
Application Layer: Describes the highest layer of the EtherCAT slave stack which includes the EtherCAT State Machine, error handling, Mailbox protocol handling, slave application.
此可選屬性由應(yīng)用程序控制,并報告由AL的狀態(tài)控制事例檢測到的最后錯誤或ID值。AL(應(yīng)用層)狀態(tài)代碼給出從機進入錯誤狀態(tài)的原因。如果錯誤標(biāo)志(寄存器0x0130:04)為TRUE,則應(yīng)提供AL狀態(tài)代碼.
2.9 設(shè)備配置(Device Profile)
設(shè)備行規(guī)描述了設(shè)備的應(yīng)用參數(shù)和功能特性,如設(shè)備類別相關(guān)的機器狀態(tài)等。現(xiàn)場總線技術(shù)已經(jīng)為I/O設(shè)備、驅(qū)動、閥等許多設(shè)備類別提供了可利用的設(shè)備行規(guī)。用戶非常熟悉這些行規(guī)以及相關(guān)的參數(shù)和工具,因此,EtherCAT無需為這些設(shè)備類別重新開發(fā)設(shè)備行規(guī),而是為現(xiàn)有的設(shè)備行規(guī)提供了簡單的接口。該特性使得用戶和設(shè)備制造商可以輕松完成從現(xiàn)有的現(xiàn)場總線到EtherCAT技術(shù)的轉(zhuǎn)換過程。
-
EtherCAT實現(xiàn)CANopen (CoE)
CANopen設(shè)備和應(yīng)用行規(guī)廣泛用于多種設(shè)備類別和應(yīng)用,如I/O組件、驅(qū)動、編碼器、比例閥、液壓控制器,以及用于塑料或紡織行業(yè)的應(yīng)用行規(guī)等。
EtherCAT可以提供與CANopen機制[7]相同的通訊機制,包括對象字典、PDO(過程數(shù)據(jù)對象)、SDO(服務(wù)數(shù)據(jù)對象),甚至于網(wǎng)絡(luò)管理。
因此,在已經(jīng)安裝了CANopen的設(shè)備中,僅需稍加變動即可輕松實現(xiàn)EtherCAT,絕大部分的CANopen固件都得以重復(fù)利用。并且,可以選擇性地擴展對象,以便利用EtherCAT所提供的巨大帶寬。
-
EtherCAT實施伺服驅(qū)動 設(shè)備行規(guī)IEC 61491 (SoE)
SERCOS interface 是全球公認的、用于高性能實時運行系統(tǒng)的通訊接口,尤其適用于運動控制的應(yīng)用場合。
用于伺服驅(qū)動和通訊技術(shù)的SERCOS框架屬于IEC 61491標(biāo)準(zhǔn)[8] 的范疇。該伺服驅(qū)動框架可以輕松地映射到EtherCAT中,嵌入于驅(qū)動中的服務(wù)通道、全部參數(shù)存取以及功能都基于EtherCAT郵箱(參見圖12)。在此,關(guān)注焦點還是EtherCAT與現(xiàn)有協(xié)議的兼容性(IDN的存取值、屬性、名稱、單位等),以及與數(shù)據(jù)長度限制相關(guān)的擴展性。過程數(shù)據(jù),即形式為AT和MDT的SERCOS數(shù)據(jù),都使用EtherCAT從站控制器機制進行傳送,其映射與SERCOS映射相似。并且,EtherCAT從站的設(shè)備狀態(tài)也可以非常容易地映射為SERCOS協(xié)議狀態(tài)。EtherCAT從站狀態(tài)機可以很容易地映射到SERCOS協(xié)議的通信階段。
EtherCAT為這種在CNC行業(yè)中廣泛使用的設(shè)備行規(guī)提供了先進的實時以太網(wǎng)技術(shù)。這種設(shè)備行規(guī)的優(yōu)點與EtherCAT分布時鐘提供的優(yōu)點相結(jié)合,保證了網(wǎng)絡(luò)范圍內(nèi)精確時鐘同步??梢匀我鈧鬏斘恢妹?,速度命令或扭矩命令。取決于實現(xiàn)方式,甚至可能繼續(xù)使用相同的設(shè)備配置工具。
-
EtherCAT實現(xiàn)以太網(wǎng)(EoE)
EtherCAT技術(shù)不僅完全兼容以太網(wǎng),而且在“設(shè)計”之初就具備良好的開放性特征——該協(xié)議可以在相同的物理層網(wǎng)絡(luò)中包容其它基于以太網(wǎng)的服務(wù)和協(xié)議,通??蓪⑵湫阅軗p失降到最小。對以太網(wǎng)的設(shè)備類型沒有限制,設(shè)備可通過交換機端口在EtherCAT段內(nèi)進行連接。以太網(wǎng)幀通過EtherCAT協(xié)議開通隧道,這也正是VPN、 PPPoE (DSL) 等因特網(wǎng)應(yīng)用所普遍采取的方法。EtherCAT網(wǎng)絡(luò)對以太網(wǎng)設(shè)備而言是完全透明的,其實時特性也不會發(fā)生畸變(參見圖13)。
EtherCAT設(shè)備可以包容其它的以太網(wǎng)協(xié)議,因此具備標(biāo)準(zhǔn)以太網(wǎng)設(shè)備的一切特性。主站的作用與第2層交換機所起的作用一樣,可按照編址信息將以太網(wǎng)幀重新定向到相應(yīng)的設(shè)備。因此,集成萬維網(wǎng)服務(wù)器、電子郵件和FTP 傳送等所有的因特網(wǎng)技術(shù)都可以在EtherCAT的環(huán)境中得以應(yīng)用。
-
EtherCAT實現(xiàn)文件讀取(FoE)
這種簡單的協(xié)議與TFTP類似,允許存取設(shè)備中的任何數(shù)據(jù)結(jié)構(gòu)。因此,無論設(shè)備是否支持TCP/IP,都有可能將標(biāo)準(zhǔn)化固件上載到設(shè)備上。
-
ADS over EtherCAT (AoE)
ADS over EtherCAT (AoE)是由EtherCAT規(guī)范定義的客戶端-服務(wù)器郵箱協(xié)議。盡管CoE協(xié)議提供了詳盡的描述,但AoE則更適合路由與并行服務(wù)的應(yīng)用:通過網(wǎng)關(guān)設(shè)備訪問子網(wǎng)絡(luò),如EtherCAT至CANopen 或EtherCAT至IO-Link 網(wǎng)關(guān)設(shè)備。AoE使EtherCAT主站應(yīng)用(如PLC程序)可以訪問所屬CANopen 或 IOLink從站的各個參數(shù)。AoE路由機制開銷遠低于因特網(wǎng)協(xié)議(IP)所定義的開銷,并且發(fā)送方和接收方尋址參數(shù)始終包含在AoE報文中。因此,EtherCAT主站和從站端的實施更為精簡。AoE也通過EtherCAT自動化協(xié)議(EAP)進行非周期通信的標(biāo)準(zhǔn)化,從而為上位機MES系統(tǒng)或主計算機、EtherCAT主站及其從屬的現(xiàn)有設(shè)備之間提供無縫通信。同時,AoE也提供了從遠程診斷工具獲取EtherCAT網(wǎng)絡(luò)診斷信息的標(biāo)準(zhǔn)化方法。
2.10 主站設(shè)計
EtherCAT可以在單個以太網(wǎng)幀中最多實現(xiàn)1486字節(jié)的分布式過程數(shù)據(jù)通訊。其它解決方案一般是,主站設(shè)備需要在每個網(wǎng)絡(luò)周期中為各個節(jié)點處理、發(fā)送和接收幀。
而EtherCAT系統(tǒng)與此不同之處在于,在通常情況下,每周期僅需要一個或兩個幀即可完成所有節(jié)點的全部通訊,因此,EtherCAT主站不需要專用的通訊處理器。主站功能幾乎不會給主機CPU帶來任何負擔(dān),輕松處理這些任務(wù)的同時,還可以處理應(yīng)用程序,因此EtherCAT無需使用昂貴的專用有源插接卡,只需使用無源的NIC卡或主板集成的以太網(wǎng)MAC設(shè)備即可。EtherCAT主站很容易實現(xiàn),尤其適用于中小規(guī)模的控制系統(tǒng)和有明確規(guī)定的應(yīng)用場合。
例如,如果某個單個過程映像的PLC沒有超過1486 字節(jié),那么在其周期時間內(nèi)循環(huán)發(fā)送這個以太網(wǎng)幀就足夠了。因為報文頭運行時不會發(fā)生變化,所以只需將常數(shù)報文頭插入到過程映像中,并將結(jié)果傳送到以太網(wǎng)控制器即可。
EtherCAT映射不是在主站產(chǎn)生,而是在從站產(chǎn)生(外圍設(shè)備將數(shù)據(jù)插入所經(jīng)以太網(wǎng)幀的相應(yīng)位置),因此,此時過程映像已經(jīng)完成排序。該特性進一步減輕了主機CPU的負擔(dān)。可以看到,EtherCAT主站完全在主機CPU中采用軟件方式實現(xiàn),相比之下,傳統(tǒng)的慢速現(xiàn)場總線系統(tǒng)通過有源插接卡方可實現(xiàn)主站的方式則要占用更多的資源,甚至服務(wù)于DPRAM的有源卡本身也將占用可觀的主機資源。
系統(tǒng)配置工具(通過生產(chǎn)商獲取)可提供包括相應(yīng)的標(biāo)準(zhǔn) XML 格式啟動順序在內(nèi)的網(wǎng)絡(luò)和設(shè)備參數(shù)。
已經(jīng)在各種實時操作系統(tǒng)上實現(xiàn)了EtherCAT主站,包括但并不限于:eCos, INtime, MICROWARE OS-9,MQX, On Time RTOS-32, Proconos OS, Real-Time Java, RT Kernel, RT-Linux, RTX, RTXC, RTAI Linux,PikeOS, Linux with RT-Preempt, QNX, VxWin + CeWin, VxWorks, Windows CE, Windows XP/XPE with CoDeSys SP RTE, Windows NT/NTE/2000/XP/XPE/Vista with TwinCAT RTE, Windows 7 and XENOMAI Linux. 可以獲得開源主站協(xié)議棧,作為示例代碼或商業(yè)軟件。也有各種公司提供各種硬件平臺上的實施服務(wù)。可以在EtherCAT網(wǎng)站上的產(chǎn)品區(qū)找到快速增長的供應(yīng)商信息[1]。
另一種EtherCAT主站的實現(xiàn)方式是使用樣本代碼,花費不高。軟件以源代碼形式提供,包括所有的EtherCAT主站功能,甚至還包括EoE(EtherCAT實現(xiàn)以太網(wǎng))功能(見圖15)。開發(fā)人員只要把這些應(yīng)用于Windows環(huán)境的代碼與目標(biāo)硬件及所使用的RTOS加以匹配就可以了。該軟件代碼已經(jīng)成功應(yīng)用于多個系統(tǒng)。
2.11 從站設(shè)計
從站EtherCAT Processing Unit 總是位于 Port 0 之后其它端口之前,并在數(shù)據(jù)幀傳輸?shù)倪^程中提取和插入數(shù)據(jù):
DPRAM:雙端口存儲器 Dual-Ported RAM,可以分別從主站及本地微處理器uC訪問。訪問 ESC 的 Dual-Ported RAM 讀出 并/或 寫入數(shù)據(jù)。
從器件具有一個16位Local地址空間:
地址范圍0x0000:0x0FFF專用于EtherCAT寄存器,
地址范圍0x1000:0xFFFF用作過程數(shù)據(jù)RAM
SyncManagers阻止主站和從站微處理器(uC)同時訪問 ESC存儲區(qū),確保數(shù)據(jù)的一致性
→含周期性數(shù)據(jù)(ProcessData)和非周期性數(shù)據(jù)(Mailbox)
FMMUs為Lxx數(shù)據(jù)報文完成邏輯地址到物理地址的轉(zhuǎn)換
→僅對于周期性數(shù)據(jù)(ProcessData)
從站的SyncManagers 和 FMMU 是由主站在初始化階段自動配置的,該配置基于每個從站的XML文件和整個網(wǎng)絡(luò)的設(shè)置。
EtherCAT從站設(shè)備使用一個價格低廉的從站控制器芯片ESC。從站不需要微處理器就可以實現(xiàn)EtherCAT通信??梢酝ㄟ^I/O接口實現(xiàn)的簡單設(shè)備可以只由ESC和其下的PHY,變壓器和RJ45接頭。給從站的過程數(shù)據(jù)接口是32位的I/O接口。這種從站沒有可配置的參數(shù),所以不需要軟件或郵箱協(xié)議。EtherCAT狀態(tài)機由ESC處理。ESC的啟動信息從EEPROM中讀取,它也支持從站的身份識別。
更復(fù)雜的可配置從站有使用一個CPU。這個CPU和ESC之間使用8位或16位并行接口或串行SPI接口。要求的CPU性能取決于從站的應(yīng)用,EtherCAT協(xié)議軟件在其上運行。EtherCAT協(xié)議棧管理EtherCAT狀態(tài)機和應(yīng)用層協(xié)議,可以實現(xiàn)CoE協(xié)議和支持固件下載的FoE協(xié)議。EoE協(xié)議也可以實施。
從站控制器通常都有一個內(nèi)部的DPRAM(DUAL PORT RAM),并提供存取這些應(yīng)用內(nèi)存的接口范圍:
串行SPI(串行外圍接口)主要用于數(shù)量較小的過程數(shù)據(jù)設(shè)備,如模擬量I/O模塊、傳感器、編碼器和簡單驅(qū)動等。該接口通常使用8位微控制器,如微型芯片PIC、DSP、Intel 80C51等(見圖16)。
8/16位微控制器并行接口與帶有DPRAM接口的傳統(tǒng)現(xiàn)場總線控制器接口相對應(yīng),尤其適用于數(shù)據(jù)量較大的復(fù)雜設(shè)備。通常情況下,微控制器使用的接口包括Infineon 80C16x、Intel 80x86、Hitachi SH1、ST10、ARM和TI TMS320等系列(見圖16)。
32位并行I/O接口不僅可以連接多達32位數(shù)字輸入/輸出,而且也適用于簡單的傳感器或執(zhí)行器的32位數(shù)據(jù)操作。這類設(shè)備無需主機CPU(見圖17)。
PDO(過程數(shù)據(jù)對象)、SDO(服務(wù)數(shù)據(jù)對象)
報文通過從站控制器時,從站讀取出相關(guān)命令并進行對應(yīng)處理,數(shù)據(jù)處理通過硬件完成,延間約為100-_500ns,通信性能獨立于MCU的響應(yīng)時間。每個ESC最大有容量為64KB的可用的內(nèi)存編址,能進行連續(xù)或同步的讀寫。多個EtherCAT命令數(shù)據(jù)可以被嵌入到一個以太網(wǎng)報文中,每個數(shù)據(jù)對應(yīng)獨立的設(shè)備或內(nèi)存區(qū)。
EtherCAT極大提高了以太網(wǎng)的性能,比如操作1000個I/O信號的時間約為30微秒。單個報文至多容納1486字節(jié)的過程數(shù)據(jù),和12000位I/O信號相當(dāng),更新所需時間約為300微秒。控制100個伺服單元的時間約為100微秒。
在基于PC的主站中,一般使用網(wǎng)絡(luò)接口卡NIC(Network Interface Card)其中的網(wǎng)卡芯片集成了以太網(wǎng)通信控制器和物理層數(shù)據(jù)收發(fā)器。但是在嵌入式主站中,通信控制器通常集成在微處理器中。
EtherCAT從站設(shè)備同時實現(xiàn)應(yīng)用控制和數(shù)據(jù)通信兩部分功能,其組成如圖所示,由四部分組成:從站控制微處理器、EtherCAT從站控制器ESC芯片、物理層器件和其他應(yīng)用層器件。
EtherCAT報文由從站控制器來處理,使用雙端口存儲區(qū)完成主從站間的數(shù)據(jù)交換。每個從站ESC在環(huán)路上按各自的順序移位讀寫數(shù)據(jù)。當(dāng)數(shù)據(jù)幀經(jīng)過從站時,ESC從中讀取發(fā)送給自己的命令數(shù)據(jù)并放到內(nèi)部存儲區(qū),插入的數(shù)據(jù)又被從內(nèi)部 存儲區(qū)寫到子報文中。
從站控制微處理器主要負責(zé)處理EtherCAT通信和完成控制任務(wù)。微處理器從ESC獲取控制數(shù)據(jù)實現(xiàn)設(shè)備控制功能,并采樣設(shè)備的反饋數(shù)據(jù)寫入ESC。從站控制微處理器的選型根據(jù)設(shè)備控制任務(wù),可以使用ARM或DSP; 8位、16位或32位的處理器。EtherCAT從站采用MII接口模式時,需要使用標(biāo)準(zhǔn)以太網(wǎng)物理層器件:物理層芯片PHY,隔離變壓器等。采用EBUS接口時不需要任何其他芯片。
3. 應(yīng)用層(Application Layer)
3.1EtherCAT Slave Implementation (從站實現(xiàn))
-
DPRAM (雙端口存儲器)size and number of SyncManagers(同步管理 )
The DPRAM is used for exchange of cyclic and acyclic data(循環(huán)和非循環(huán)的數(shù)據(jù)交換) via the EtherCAT network. SyncManagers ensure data consistency(保證數(shù)據(jù)的一致性) within the DPRAM.
Each ESC has 4kByte ofregisters(addresses 0x0000 to 0x0FFF) which are reserved for (EtherCAT and PDI communication)configuration settings(配置設(shè)置 ).
Mailbox(郵箱) andprocess datais exchanged via additional DPRAM (also called user memory用戶存儲器 ). EtherCAT allows addressing(編址) of user memory of up to 60kBytes. ASICs provide between 1kByte and 8kByte of DPRAM, IP Cores can be configured to provide the full 60kByte of user memory.
Application Note: The standard SyncManager configuration is(標(biāo)準(zhǔn)的同步管理配置)
- 1 SyncManager per acyclic data output (mailbox out, master to slave)
- 1 SM for acyclic data input (mailbox in, slave to master)
- 1 SM for cyclic data output (process data out, master to slave)
-1SMforcyclicdatainput(processdatain,slavetomaster)
For process data, SM running in 3-buffer-mode(3緩存模式) need three times the length (3倍長度) of actual process data for physical memory(物理內(nèi)存) . The following table shows a schema(體系結(jié)構(gòu),模式) of how to allocate(分配) the length for the 4 SM.
Table 5: DPRAM Size Calculation Example( DPRAM大小計算示例)
SyncManager | Buffer Count | Length [Byte] | Total length [Byte] | |
SM0 | Output Mailbox | 1 | L_MbxOut | 1*L_MbxOut |
SM1 | Input Mailbox | 1 | L_MbxIn | + 1*L_MbxIn |
SM2 | Outputs | 3 | L_Out (TxPDO) | + 3*L_Out |
SM3 | Inputs | 3 | L_In (RxPDO) | +3*L_In |
- | - | - | - | ∑ DPRAM size |
SyncManagers are enabled(開啟) by the following settings of the master during network initialization(網(wǎng)絡(luò)初始化) .
-Physical address of ESC(ESC物理地址)
-Data length (數(shù)據(jù)長度)
-SyncManager control input(同步管理控制輸入) :
i. Operation mode【操作模式】 (mailbox-mode/3-buffer-mode)
ii. Access direction【訪問方向:讀或者寫】 (Read direction/Write direction)
iii. Interrupt settings 【中斷設(shè)置】 (Valid/Invalid 有效/無效 )
iv. SyncManager watchdog setting【同步管理看門狗定時器設(shè)置】 (Valid/Invalid)
v.SyncManagersetting(Valid/Invalid)
The default values are set in the ESI (chapter 2.4.1); the master initializes the SyncManager using the values from the ESI.(默認值在 ESI中設(shè)置,主站初始化時調(diào)用 ESI中的值)
Syncmanagers(同步管理器)
同步管理器簡稱SM用來協(xié)調(diào)應(yīng)用程序和主機的數(shù)據(jù)交互,同步管理器同步的是數(shù)據(jù)而非時間,同步管理器確保了應(yīng)用程序和主機能夠正確的寫入或讀取數(shù)據(jù)。同時同步管理器可以以中斷的形式通知主機和應(yīng)用程序發(fā)生的數(shù)據(jù)更新事件。
從站的ESC中包含多個同步管理器,每一個同步管理器都可以單獨的配置:
同步管理器的配置中包括告知同步管理器其需要管理的內(nèi)存地址的范圍,管理內(nèi)存的屬性(屬于讀或?qū)?,屬于郵箱數(shù)據(jù)或過程數(shù)據(jù))。
所以每一種數(shù)據(jù)交互方式都會有一個同步管理器來管理,應(yīng)用程序進行數(shù)據(jù)交互時,只需要更具不同的同步管理器就可以方便的區(qū)分數(shù)據(jù)的類型(PDO 或SDO、讀或?qū)懀恼驹诔跏蓟瘯r會讀取SM管理器中的配置來確定數(shù)據(jù)的存放地址。
數(shù)據(jù)的交互主要有緩沖模式和郵箱模式。緩沖模式主要應(yīng)用于周期性過程數(shù)據(jù)的傳送。
-
Number of Fieldbus Memory Management Units (FMMUs)(現(xiàn)場總線儲存管理單元)
In an EtherCAT network, the memory of all slaves can be compiled in the master(所有從站的儲存都可以在主站中編輯) to a logical memory(邏輯內(nèi)存) . This logical memory is managed by FMMUs to map(映射) logical addresses to physical addresses in the slavesFMMUs(邏輯內(nèi)存通過 的管理和從站中的物理內(nèi)存相對應(yīng)) .
For the FMMU configuration in a device, each consistent output and each consistent input block needs one FMMU and an additional FMMU for mailbox status response is necessary.
// 對于設(shè)備中的FMMU配置,每個一致的輸出和每個一致的輸入塊都需要一個FMMU,并且還需要一個用于郵箱狀態(tài)響應(yīng)的附加FMMU。
Application Note: The standard configuration is one FMMU per each, cyclic output and cyclic input data block , optionally an additional one for mapping the mailbox response availability flag into process data (thus, no polling of mailboxes is necessary). If the outputs and inputs are groupede.g. like in Table 5, 3 FMMUs are configured, see Table 6.
// 應(yīng)用說明:標(biāo)準(zhǔn)配置是每個循環(huán)輸出和循環(huán)輸入數(shù)據(jù)塊一個FMMU,還可以選擇另外一個用于將郵箱響應(yīng)可用性標(biāo)志映射到過程數(shù)據(jù)中(因此,不需要輪詢郵箱)。如果輸出和輸入被分組,例如 如表5所示,配置了3個FMMU,請參閱表6。
Table 6: FMMU Configuration
FMMU | Assigned SyncManager | Name | Length [Byte] |
1 | SM2 | Outputs | L_Out (TxPDO) |
2 | SM3 | Inputs | L_In (RxPDO) |
3 | SM0 & SM1 | Mbx-SM Status Flags | Mbx In/Out Length |
-
Distributed Clocks (DCs(同步) with other slave devices,分布式時鐘 ) for synchronization
Evaluate if the device should support high precise(支持高精度) synchronization with other slave devices. If so, DCs should be supported by the selected ESC. Distributed Clocks refer to the DC function for EtherCAT slaves (chapter 1.3.5). The times held by slaves are adjusted with this mechanism(途徑) and thus enable precise synchronization of the nodes(節(jié)點) in the EtherCAT network.
// 評估設(shè)備是否應(yīng)支持與其他從設(shè)備的高精度同步。如果是這樣,所選的ESC應(yīng)該支持DC。分布式時鐘指的是EtherCAT從站的DC功能(第1.3.5章)。通過這種機制可以調(diào)整從站保持的時間,從而實現(xiàn)EtherCAT網(wǎng)絡(luò)中節(jié)點的精確同步。
-
EEPROM(電可擦只讀存儲器)
The EEPROM is mounted(安裝) outside the ESC and connected via I2C with point-to-point link(點對點連接) . According to the size of the EEPROM the EEPROMSIZE signal should be set. For more details, refer to the Knowledge Base, chapter 11.3 d electrical Interface EEPROM an(I 2C)". For EEPROM (SII) Enhanced Link Detection setting (加強連接檢測設(shè)置) , refer to documentation of the ESC vendor. // EEPROM安裝在ESC外部,并通過I2C與點對點鏈接連接。根據(jù)EEPROM的大小,應(yīng)設(shè)置EEPROMSIZE信號。有關(guān)更多詳細信息,請參見知識庫第11.3章“電氣接口EEPROM和(I 2C)”。有關(guān)EEPROM(SII)增強鏈接檢測設(shè)置,請參閱ESC供應(yīng)商的文檔。
-
Application Controller【應(yīng)用控制】 (Host Controller, μ C)
If a local software application provides the device functionality, any 8 or 16 bit synchronous or asynchronous microcontroller(任何一個 8位或者 16位同步或者異步微控制器) can be connected to the ESC. The application controller communicates with the ESC via the Process Data Interfaces (PDI).
To adapt the application software on the host(為了和主站的應(yīng)用程序相適應(yīng) ) controller to the ESC, sample software stacks(樣本軟件棧) are available for communication implementation(通訊的實現(xiàn)), e.g. the Slave Sample Code(從站樣本代碼) (SCC). If the device is a 32 bit digital I/O interface, no application controller or additional communication software is necessary.
// 為了使主機控制器上的應(yīng)用軟件適應(yīng)ESC,可以使用示例軟件堆棧進行通信實現(xiàn),例如從機樣本代碼(SCC)。如果設(shè)備是32位數(shù)字I/O接口,則無需應(yīng)用程序控制器或其他通訊軟件。
In most cases, manufacturers(制造商) can use a familiar microcontroller type as application controller in the EtherCAT device(使用相似型號的微控制器作為應(yīng)用控制使用在 EtherCAT設(shè)備中) . If application software already exists, e.g. for a different fieldbus, it can be used for the EtherCAT device as well.
// 在大多數(shù)情況下,制造商可以在EtherCAT設(shè)備中使用熟悉的微控制器類型作為應(yīng)用程序控制器。如果應(yīng)用軟件已經(jīng)存在,例如 對于不同的現(xiàn)場總線,它也可以用于EtherCAT設(shè)備。
The source code(源代碼) for communications software on the host controller allocates(分配) about 70kByte. The following features are a typical configuration (referring to the Slave Sample Code):
EtherCAT State Machine (ESM), including error handling(錯誤處理)
Device diagnosis(設(shè)備診斷)
Master-Slave data synchronization (主從站之間的數(shù)據(jù)同步) with SyncManager event (no DCs)
Mailbox CoE
Object Dictionary (對象字典) (20 objects) for process data objects (過程數(shù)據(jù)對象)
CoEservices,includingCoEInfoservices(信息服務(wù)),nosegmentedtransfer(無分割轉(zhuǎn)換)
A list of other available sample stacks can be obtained on the product section of the ETG website.
-
Application Layer Communication Protocols (應(yīng)用層通訊協(xié)議)
In EtherCAT, several protocols are available (see chapter 1.3.6) for the application layer to implement (實施) the required specification of the product development(產(chǎn)品開發(fā)時所需的規(guī)格) . When to apply them is described here.
CAN application protocol (總線應(yīng)用協(xié)議 )over EtherCAT(CoE) To provide acyclic data exchange as well as mechanisms to configure PDOs for cyclic data exchange in a structured way, CoE (with SDO-Info support) should be implemented.
Servo drive profile(伺服驅(qū)動配置文件) over EtherCAT(SoE) SoE is an alternative drive profile to the CiA402 drive profile. It is often used by drive manufacturers which are familiar with the SERCOS interface.
Ethernet(以太網(wǎng)) over EtherCAT(EoE) EoE is usually used to provide webserver interfaces(網(wǎng)絡(luò)接口) via EtherCAT. It is also used for devices providing decentral standard Ethernet ports(分散生產(chǎn)方式的標(biāo)準(zhǔn)以太網(wǎng)端口) . ? File Access(文件存取組件) over EtherCAT(FoE) If the device should support firmware(固件)download via EtherCAT, FoE should be supported. FoE is based on TFTP. It provides fast file transfer and small protocol implementation.
ADSoverEtherCAT(AoE)小協(xié)議實施Whenplanningtocontrolthedeviceviaa.Netinterface,AoEisanoptiontoapply.
Application Note:An exemplary(典范) CoE implementation is shown below.
The user application runs the device specific software(設(shè)備專用軟件) on the μ C to implement device features(實現(xiàn)設(shè)備功能特性 ). Sample source code(protocol stacks) offered by EtherCAT stack vendors can be used to develop this application or to adapt existing software to EtherCAT.
Application Note:EtherCAT Slave Stack Code (SSC,從站堆棧代碼 ).
The SSC is a free sample codefrom Beckhoff(德國倍福自動化有限公司)(免費樣本代碼) which provides an interface to the ESC. For hardware independent software development(獨立于硬件的軟件開發(fā)) , the SSC runs on several evaluation kits(評估板) and can be customized(自定義) for implementation in accordance with the product specification. Figure 14 shows the SSC structure with the interfaces to the user specific device application(用戶特定的設(shè)備應(yīng)用) and the ESC.
Application Note:EtherCAT Slave Protocol Stack.(從站協(xié)議棧)
Hilscher(德國赫優(yōu)訊公司) offers a Slave Control Stack based on its netX hardware withDual Port Memoryinterface (DPM,雙端口記憶器 ) and it is available for the user application with an API. Figure 15 shows the protocol stack architecture(協(xié)議棧構(gòu)架) with interfaces to the ESC and the user application.
-
Device Profiles(設(shè)備配置文件)
During network initialization(網(wǎng)絡(luò)初始化期間) , parameter setup(參數(shù)設(shè)定) is necessary, where data does not need to be transmitted cyclically(周期性傳輸) but only during network initialization. Acyclic data exchange is done via mailbox protocols(非循環(huán)的數(shù)據(jù)傳輸通過郵箱協(xié)議) , usually via theCoEprotocol (see chapter 2.3.5). For devices with variable process data structure, the definition of a modular device description(MDP,模塊化設(shè)備描述 ) is available. The MDP is described in the ETG.5001 Modular Device Profile Specification(說明書) .
// 在網(wǎng)絡(luò)初始化期間,必須進行參數(shù)設(shè)置,這些數(shù)據(jù)不需要循環(huán)傳輸,而僅在網(wǎng)絡(luò)初始化期間需要傳輸。非循環(huán)數(shù)據(jù)交換是通過郵箱協(xié)議(通常通過CoE協(xié)議)完成的(請參閱第2.3.5章)。對于具有可變過程數(shù)據(jù)
結(jié)構(gòu)的設(shè)備,可以使用模塊化設(shè)備描述(MDP)的定義。EDP.5001模塊化設(shè)備配置文件規(guī)范中描述了MDP。
The MDP is based on the object dictionary defined byCoE(CAN application protocol over EtherCAT). The object dictionary can be described as a two dimensional list(二維表) . Each list entry (每個表的入口) is identified(識別) by an index(指針,索引) (0x0000–0xFFFF) which represents an object. Each object can contain up to 255 subindices(分目錄) , also called object entries. The object list is structured in different areas, see Table 7.
// MDP基于CoE(基于EtherCAT的CAN應(yīng)用協(xié)議)定義的對象字典。對象字典可以描述為二維列表。每個列表條目均由代表對象的索引(0x0000-0xFFFF)標(biāo)識。每個對象最多可以包含255個子索引,也稱為對象條目。對象列表的結(jié)構(gòu)在不同區(qū)域中,請參見表7。
The idea of the MDP is to provide a basic structure for masters(為主站提供一個基本構(gòu)架) and configuration tools(配置工具) to handle(處理) slaves with complex (modular) structure easily. The user has the advantage, that if the slave variables’(變量)s are sorted in an MDP style, he can find the different data types by identical patterns(相同的模式) .
// MDP的思想是為主機和配置工具提供基本結(jié)構(gòu),以輕松處理具有復(fù)雜(模塊化)結(jié)構(gòu)的從機。用戶的優(yōu)勢在于,如果以MDP樣式對從屬變量進行排序,則他可以通過相同的模式找到不同的數(shù)據(jù)類型。
The MDP can be applied to various types of devices. It is applicable to multiple axis(多軸) servo drive system(伺服驅(qū)動系統(tǒng)) of various functionality groups(各種功能組) , such as positioning(位置控制) , torque(扭矩控制) and velocity control(轉(zhuǎn)速控制) . It is further applicable to gateway(網(wǎng)關(guān)) between different fieldbuses, i.e., Profibus, DeviceNet. Modular devices are driven by two aspects:
// MDP可以應(yīng)用于各種類型的設(shè)備。適用于各種功能組的多軸伺服驅(qū)動系統(tǒng),例如定位,轉(zhuǎn)矩和速度控制。它進一步適用于不同現(xiàn)場總線之間的網(wǎng)關(guān),即Profibus,DeviceNet。模塊化設(shè)備由兩個方面驅(qū)動:
Comprise(包含) physically connectable modules and plurality of functionalities(多數(shù)功能) .
//包括物理上可連接的模塊和多種功能。
Comprise plurality of channels(多數(shù)通道) directly being connected to the EtherCAT network.
//包括多個直接連接到EtherCAT網(wǎng)絡(luò)的通道。
The MDP imagines slaves which consist of one or several modules. A module can be hardware which is connected/disconnected to a slave. Examples are gateways between EtherCAT and e.g. CANopen or a bus coupler(總線耦合器) between EtherCAT and a proprietary backbone bus(專用主干總線) .
// MDP設(shè)想從站由一個或幾個模塊組成。模塊可以是已連接/斷開連接到從站的硬件。示例是EtherCAT與例如CANopen或EtherCAT與專有骨干總線之間的總線耦合器。
A module can also be a logical module which describes data sets, e.g. a drive which supports a velocity controlled mode and a position controlled mode –the MDP would describe the data as two modules, one for each mode.(把數(shù)據(jù)描述成 2種模式,每個對應(yīng)相應(yīng)的模式)
// 模塊也可以是描述數(shù)據(jù)集的邏輯模塊,例如。一個支持速度控制模式和位置控制模式的驅(qū)動器-MDP將數(shù)據(jù)描述為兩個模塊,每個模式一個。
No matter what kind of module is described it needs more or less the same information categories(需要相對應(yīng)的信息分類) , which are organized in the profile specific index range (Table 7).
// 無論描述哪種模塊,它都或多或少需要相同的信息類別,這些信息類別在配置文件特定的索引范圍內(nèi)進行組織(表7)。
Application Note:Modular Device Profile Structure(模塊化設(shè)備配置文件結(jié)構(gòu)) .
// 應(yīng)用說明:模塊化設(shè)備配置文件結(jié)構(gòu)。
Consider an MDP for a line of slave device modules which are connected together on a backbone layer(主干網(wǎng)層面) via LVDS and via a coupler(耦合器) with MII. Figure 16 shows a schema how to define device profiles(如何定義設(shè)備配置文件) such that a modular profile dictionary is set up for the slave device line.
// 考慮一排從設(shè)備模塊的MDP,這些設(shè)備通過LVDS和帶有MII的耦合器在主干層上連接在一起。圖16顯示了一種模式,該模式如何定義設(shè)備配置文件,以便為從屬設(shè)備線設(shè)置模塊化配置文件字典。
For implementation of the profile (CiA402 Drive Profile) for servo drive, build the program with reference to the corresponding specifications(技術(shù)規(guī)格,說明書) . In this example, this would be the
ETG.6010 Implementation Directive(指令) for the CiA402 Drive Profile, and
IEC61800-7DriveProfilesandMappingtoEtherCAT.
4. 應(yīng)用實例
由于EtherCAT實時工業(yè)以太網(wǎng)技術(shù)具有適用范圍廣、拓撲結(jié)構(gòu)靈活、數(shù)據(jù)通信效率高、實時性強和同步性能好等多種優(yōu)點,所以特別適用于實時性要求高、通信數(shù)據(jù)量大的運動控制系統(tǒng)。
控制系統(tǒng)設(shè)計采用“PC+運動控制器”的方案,構(gòu)建多軸運動控制系統(tǒng),采用PC機為主站、ARM+MCX314為從站處理器的架構(gòu)。其核心插補與控制算法都放在工業(yè)PC中完成,運動控制器要求大為降低,其主要完成數(shù)字給定量到實際脈沖信號的轉(zhuǎn)變。該控制系統(tǒng)方案的優(yōu)勢在于簡化硬件設(shè)計工作,主要以標(biāo)準(zhǔn)化的硬件為主:上位機可以采用工業(yè)PC機、下位機使用開發(fā)的通用運動控制器,方便日后升級維護。工業(yè)PC機與運動控制器直接采用EtherCAT實時工業(yè)以太網(wǎng)進行通信連接。
4.1 主站操作系統(tǒng)(RTAI)
PC機部分軟件以LinuxCNC為基礎(chǔ),往下LinuxCNC通過HAL(硬件抽象層)與EtherCAT主站驅(qū)動之間進行通信連接,然后EtherCAT主站通過以太網(wǎng)線給從站運動控制器發(fā)控制命令;往上利用LinuxCNC提供的Python調(diào)用接口和人機界面通信,數(shù)控系統(tǒng)人機界面采用PyQt開發(fā);由于LinuxCNC需要運行實時任務(wù),需要將普通操作系統(tǒng)進行改造。因此,目前的主要工作是對Linux系統(tǒng)進行實時性改造、安裝EtherCAT主站、編寫HAL模塊、編寫人機界面。
雖然EtherCAT主站程序能夠安裝在非實時操作系統(tǒng)上,但一般情況下會對主站進行實時性改造,而且LinuxCNC中有運行實時任務(wù)的需要,所以對Linux系統(tǒng)進行實時性改造迫在眉睫。眾所周知,Linux系統(tǒng)本質(zhì)上是一個分時操作系統(tǒng),不是一個實時操作系統(tǒng)。Linux系統(tǒng)實時性不強使其在嵌入式應(yīng)用中有一定的局限性,受內(nèi)核可搶占性、進程調(diào)度方式、中斷處理機制、時鐘粒度、虛擬內(nèi)存管理等幾個方面的制約。
根據(jù)實時性系統(tǒng)要求以及Linux的特點和性能分析,對標(biāo)準(zhǔn)Linux實時性的改造存在多種方法,較為合理的兩大類方法為:直接修改Linux內(nèi)核源代碼和雙內(nèi)核法。
-
1.直接修改Linux內(nèi)核源代碼:對Linux內(nèi)核代碼進行細微修改并不對內(nèi)核作大規(guī)模的變動,在遵循GPL協(xié)議的情況下,直接修改內(nèi)核源代碼將Linux改造成一個完全可搶占的實時系統(tǒng)。核心修改面向局部,不會從根本上改變Linux內(nèi)核,并且一些改動還可以通過Linux的模塊加載來完成,即系統(tǒng)需要處理實時任務(wù)時加載該功能模塊,不需要時動態(tài)卸載該模塊。這種方法存在的問題是:很難百分之百保證,在任何情況下,GPOS(通用操作系統(tǒng))程序代碼絕不會阻礙RTOS的實時行為。也就是說,通過修改Linux內(nèi)核,難以保證實時進程的執(zhí)行不會遭到非實時進程所進行的不可預(yù)測活動的干擾。
-
2.雙內(nèi)核法:雙內(nèi)核法是在同一硬件平臺上采用兩個相互配合,共同工作的系統(tǒng)核心,通過在Linux系統(tǒng)的最底層增加一層實時核心來實現(xiàn)。其中的一個核心提供精確的實時多任務(wù)處理,另一個核心提供復(fù)雜的非實時通用功能。其優(yōu)點是可以做到硬實時,并且能很方便地實現(xiàn)一種新的調(diào)度策略。目前采用這種方案的主要有RTAT,RT-Linux和Xenomai。本課題采用RTAI實時包的方式完成對Linux系統(tǒng)的實時性改造,如圖所示。
RTAI(實時應(yīng)用接口)是Linux內(nèi)核的一個實時擴展,RTAI是基于ADEOSC Adaptive Domain Environment for Operating System)實現(xiàn),ADEOS位于Linux系統(tǒng)和硬件之間管理硬件中斷,并控制實時內(nèi)核和Linux內(nèi)核的優(yōu)先級,其中實時內(nèi)核優(yōu)先級高于Linux內(nèi)核優(yōu)先級。
-
-
RTAI安裝:
1.下載RTAI壓縮包并解壓到urs/src目錄下,輸入命令:
cd /usr/src
sudotar-bzip2-xvfrtai一3.8.tar.bz2
2.下載Linux內(nèi)核壓縮包并解壓到urs/src目錄下,輸入命令:
sudo cp suoxd/linux-2.6.37.1.tar.bz2 /usr/src
sudotar-bzip2-xvflinux一2.6.32.2.tar.bz2
3.利用RTAI源碼中的文件給內(nèi)核打補丁,未安裝p atch需安裝patch后,輸入命令:
sudopatch-pl</usr/src/rtai/base/arch/x86/patches/hal-linux-2.6.32.2-x86-2._5一OO.patch
4.配置內(nèi)核,Linux2.6.32引入新的方式用于簡化kernel的配置,使用命令拷貝當(dāng)前配置,省去很多繁瑣的內(nèi)核配置選項。
5.安裝內(nèi)核模塊,輸入命令:
sudo make clean
sudo make
sudo make modules
sudo make modules install
sudomakeinstall
6.配置RTAI,下載安裝MESA庫文件和EFLTK包,然后進入RTAI文件夾,執(zhí)行配置,輸入命令:
cd /usr/src/rtai
sudomakeconfig
7.編譯并安裝RTAI,命令行窗口的RTAI安裝結(jié)果如圖4-2所示,輸入命令:
sudo make
sudomakeinstall
8.RTAI內(nèi)核延時測試,利用RTAI源碼包中的測試案例進行測試,測試結(jié)果如下:
cd /usr/realtime/testsuite/user/latency
sudo./run
9.RTAI內(nèi)核搶占實現(xiàn)測試,測試結(jié)果如圖4-4所示,輸入命令行:
cd /usr/realtime/testsuite/user/preempt
sudo./run
4.2 主站EtherCAT程序(IGH)
本控制系統(tǒng)EtherCAT主站以實時Linux操作系統(tǒng)為基礎(chǔ),在Linux環(huán)境下開發(fā)主站有兩方面優(yōu)勢,一方面Linux為開源系統(tǒng),方便對底層進行修改;另一方面便于進行嵌入式移植。Linux下的EtherCAT主站架構(gòu)如圖所示:
Linux操作系統(tǒng)可分為內(nèi)核態(tài)和用戶態(tài)。內(nèi)核態(tài)是操作系統(tǒng)的核心,負責(zé)進程管理、內(nèi)存管理、進程間通信和設(shè)備管理和驅(qū)動等,實時性要求高。用戶態(tài)主要運行人機交互、數(shù)據(jù)監(jiān)控等實時性要求不高的程序。
EtherCAT主站模塊運行在內(nèi)核態(tài),可支持一個或多個EtherCAT主站,且同時提供應(yīng)用接口和設(shè)備接口。用戶通過應(yīng)用接口訪問主站,通過設(shè)備接口連接設(shè)備到指定主站。EtherCAT的以太網(wǎng)設(shè)備驅(qū)動模塊通過主站設(shè)備接口與主站連接,EtherCAT設(shè)備協(xié)議可直接由以太網(wǎng)幀傳送,因而主站能同時并行處理EtherCAT數(shù)據(jù)幀和通用以太網(wǎng)通信。
在Linux上安裝EtherCAT主站程序,這里選擇EtherLab開發(fā)的IgH EtherCAT Master,首先下載主站安裝文件gHEtherLab.tar.bz2,下載文件后解壓縮進入含有Makefile文件的目錄安裝主站,輸入命令:
make ethercatMaster
make ethercatMasterinstall
sudo /etc/init.d/ethercat start
ethercatmaster
若最后兩條指令運行正常則說明主站安裝成功。
4.3 主站應(yīng)用開發(fā)(LinuxCNC)
LinuxCNC是一款運行在Linux平臺下的實時開源數(shù)控軟件。起源于美國國家標(biāo)準(zhǔn)與技術(shù)研究院的增強型運動控制器EMC (Enhanced Machine Controller)研究項目,用于機床的數(shù)控系統(tǒng)。經(jīng)過十幾年的發(fā)展,LinuxCNC系統(tǒng)廣泛用于沖床、車床、3D打印機、激光切割機、等離子切割機、機器人手臂等領(lǐng)域。其主要優(yōu)點有:提供多個標(biāo)準(zhǔn)化的用戶界面、用戶也可以采用自主開發(fā)的GUI、自帶G代碼解析器、支持伺服電機控制步進電機開環(huán)控制、運動控制器功能強大、支持非笛卡爾坐標(biāo)運動系統(tǒng)、采用2.4或2.6的Linux內(nèi)核支持RT-Linux或RTAI實時補丁。LinuxCNC源代碼可以免費下載,安裝在Linux系統(tǒng)上。
LinuxCNC軟件架構(gòu)如圖所示。
LinuxCNC是一個模塊化設(shè)計的軟件,大致可以分為以下四個主要模塊:運動控制器(EmcMot)、數(shù)字I/O控制器(EmcIO )、任務(wù)控制器(EmcTask )、圖形用戶界面(GUI)。
用戶操作界面負責(zé)接收用戶命令并反饋最新狀態(tài);
任務(wù)控制器是整個系統(tǒng)的決策層,主要負責(zé)對各種命令進行決策分類、解析發(fā)送給不同的模塊;
運動控制器是實時刷新的,主要完成路徑規(guī)劃、插值運算等;
數(shù)字I/O控制器負責(zé)處理I/O信號,通過NML消息與運動控制器通信,因為不同設(shè)備I/O各不相同,這時需要硬件抽象層HAL文件建立軟邏輯電路來控制實際I/O;
-
HAL HAL硬件抽象層是LinuxCNC系統(tǒng)的關(guān)鍵技術(shù)之一,通過引入HAL機制,為用戶提供了統(tǒng)一的驅(qū)動開發(fā)接口,方便編寫驅(qū)動,還能利用配置文件將相應(yīng)的HAL模塊連成一個復(fù)雜系統(tǒng),方便數(shù)據(jù)傳遞。HAL模塊結(jié)構(gòu)圖如圖所示。
EtherCAT主站驅(qū)動與LinuxCNC之間采用HAL機制進行通信,硬件抽象層將各個底層的硬件驅(qū)動、實時算法抽象出來,構(gòu)成一個組件,組件是由函數(shù)、參數(shù)、輸入輸出引腳所組成,輸入信號包括來自LinuxCNC的控制信號、用戶配置信息,輸出信號包括提供給LinuxCNC的反饋量等。將編寫好的HAL模塊命令為ec.comp,編譯生成ec.ko,利用insmod命令將其安裝后就可以加載到線程中。
當(dāng)HAL模塊啟動的時候,需要對變量進行初始化,但完成EtherCAT主站的初始化是更重要的,只有初始化了主站,設(shè)置好參數(shù),建立起完整的通信網(wǎng)絡(luò),才能進行接下來的周期數(shù)據(jù)傳輸,其中PDO為進程數(shù)據(jù)對象、SDO為服務(wù)數(shù)據(jù)對象。如圖為EtherCAT主站的初始化流程圖。
主站初始化完成后,LinuxCNC開始正常運行。LinuxCNC在每個控制周期通過硬件抽象層下發(fā)控制命令,并獲取從站設(shè)備反饋的信息。
-
HAL周期任務(wù)流程圖如圖所示。
對于采用位置控制的伺服單元,HAL模塊每次都要計算出本控制周期的位移或目標(biāo)點,然后通過EtherCAT總線發(fā)送到從站運動控制器;
然后從站運動控制器在每個控制周期上報編碼器位置增量和I/O狀態(tài),HAL模塊計算出軸的實際位置后發(fā)送給LinuxCNC。。
-
UI界面
在Linux環(huán)境下開發(fā)用戶界面的語言有Python, C++等,圖形庫有QT, GTK等。由于控制界面運行于用戶態(tài),實時性要求不高,同時兼顧開發(fā)難度和周期,本課題采用Python語言,結(jié)合PyQT圖形庫開發(fā)沖床控制界面。Python是一種面向?qū)ο蟮哪_本語言,與其他語言相比,Python具有如下優(yōu)點:面向?qū)ο?、公開免費、跨平臺可移植、功能強大、使用簡單、模塊豐富。QT是一個功能豐富廣泛使用的GUI圖形庫,可用于Windows, Linux等平臺,具有很好的可移植性。PyQt是Python語言與Qt圖形庫相結(jié)合的產(chǎn)物,從而可以通過Python來使用Qt圖形庫,具有模塊豐富、跨平臺和使用信號與槽機制的優(yōu)點。數(shù)控界面調(diào)用LinuxCNC抽象出的Python接口與任務(wù)控制器通信,并監(jiān)視LinuxCNC狀態(tài)信息和錯誤信息。
本課題沖床數(shù)控系統(tǒng)設(shè)計加工狀態(tài)、參數(shù)設(shè)置、警告與診斷和軟件設(shè)置四個狀態(tài)界面,四個狀態(tài)界面下一共分設(shè)13個子界面,各個界面之間可以通過按鈕進行切換,數(shù)控系統(tǒng)界面結(jié)構(gòu)圖如圖所示。
系統(tǒng)的主界面由菜單欄、工作窗口、快捷工具欄和消息提示欄這四部分構(gòu)成。菜單欄可以根據(jù)不同的操作需求切換不同的工作窗口,快捷工具欄是一些常用的快捷按鈕,消息提示欄是提示快捷按鈕內(nèi)容和顯示系統(tǒng)運行狀況、錯誤信息匯報的區(qū)域,如圖所示。
2.參數(shù)設(shè)置界面:參數(shù)設(shè)置界面用于設(shè)置控制系統(tǒng)及機械的參數(shù),分設(shè)了系統(tǒng)參數(shù)設(shè)置、運動軸參數(shù)設(shè)置及模具庫參數(shù)設(shè)置這3個子界面。下面主要講解運動軸參數(shù),運動軸參數(shù)設(shè)置界面如圖所示。
3.警告與診斷界面:息記錄界面這2個子界面。警告與診斷界面下設(shè)有警告信息診斷界面、歷史警告信,如圖所示。
4.軟件設(shè)置界面:軟件設(shè)置界面用于設(shè)置軟件與外部設(shè)備的通訊參數(shù)和顯示軟件的版本等信息,設(shè)有軟件信息、外部設(shè)備通訊設(shè)置及高級設(shè)置這3個子界面。下面講解外部設(shè)備通訊設(shè)置界面,如圖所示。
4.4 ET1200
EtherCAT從站控制器ESC(EtherCAT Slave Controller)是由德國BECKHOFF自動化有限公司提供的,包括ASIC芯片和IP-Core,實現(xiàn)EtherCAT數(shù)據(jù)鏈路層協(xié)議。目前ASIC從站控制專用芯片有ET1100和ET1200,也可以使用IP-Core將EtherCAT通信功能集成到設(shè)備控制FPGA當(dāng)中,并根據(jù)需要配置功能和規(guī)模。圖為ET1200從站控制器結(jié)構(gòu)圖:
ET1200最多支持3個EtherCAT物理通信端口:
-
其中一個可以作為MII接口,用于與物理層PHY芯片交換數(shù)據(jù)。因為EtherCAT并不定義該接口的物理層,MII接口也是和傳輸介質(zhì)無關(guān)接口,因此這種接口方式下的數(shù)據(jù)鏈路層與物理層徹底隔開,從而以太網(wǎng)能夠選用任意的傳輸介質(zhì),包括無線電和光纖。
-
ET1200其余兩個接口均為EBUS接口,EBUS是德國倍福公司使用的LVDS(Low Voltage Differental Signaling)標(biāo)準(zhǔn)定義的數(shù)據(jù)傳輸標(biāo)準(zhǔn),通信速率高達100Mbit/s,能與ESC芯片直接相連,減小PCB板體積和降低成本。EBUS的傳輸距離最大為10m。
-
ET1200提供的物理設(shè)備接口有數(shù)字I/O和SPI兩種,選用ARM作為從站微處理器是一般通過SPI接口訪問ET1200。
-
ET1200采用3.3 V供電,最大工作電流約為70mA,芯片發(fā)熱量很小。ET1200的主要技術(shù)指標(biāo):
ET1200從站控制器使用外部EEPROM來存儲從站設(shè)備信息,下表是EEPROM存儲數(shù)據(jù)分布示意圖,其中0~63為基本信息,每次ESC啟動時都會從EEPROM中讀取其中的配置信息。
4.5 從站程序設(shè)計
運動控制器軟件設(shè)計包括ARM主控制程序及外圍電路驅(qū)動程序,外圍驅(qū)動程序包括ET 1200驅(qū)動程序、AD采樣芯片驅(qū)動程序、RS232驅(qū)動程序、SPI串行總線、FSMC并行總線驅(qū)動程序以及MCX314加減速控制程序設(shè)計等。運動控制器程序在STM32F427這款MCU上使用C語言開發(fā),開發(fā)環(huán)境為Windows 7下的Keil uVision_5集成開發(fā)環(huán)境。
ARM主控制程序是運動控制器的核心,需要完成各個函數(shù)初始化、參數(shù)配置、數(shù)據(jù)處理、邏輯流程控制及控制算法運算等,圖為支持查詢模式(自由運行模式)的流程圖。
ARM芯片在上電后不久進入main()函數(shù),在main()函數(shù)中最先完成一系列系統(tǒng)正常運行相關(guān)函數(shù)的初始化,如延時初始化函數(shù)、LED初始化函數(shù)、串口初始化函數(shù)、中斷向量表配置初始化函數(shù),然后完成SPI初始化函數(shù)、定時器初始化函數(shù)、EtherCAT初始化函數(shù)以及FSMC總線初始化函數(shù)等。
接著完成通信初始化工作,查詢主站的狀態(tài)控制寄存器,讀取事件請求寄存器0x220、相關(guān)配置寄存器,啟動或關(guān)斷相關(guān)通訊服務(wù)。
在完成以上工作后就進入主循環(huán)while(1),進行應(yīng)用層任務(wù)處理和周期性數(shù)據(jù)處理,周期性數(shù)據(jù)處理和應(yīng)用層任務(wù)處理有查詢模式(自由運行模式)或同步模式(中斷模式)這兩種,本程序采用同步運行模式,所以在主循環(huán)中主要處理非周期性的任務(wù)。同步運行模式下周期性數(shù)據(jù)在中斷服務(wù)程序中處理。
void main(void)
{
//--一執(zhí)行一系列初始化函數(shù)--一
Delay_Init(168); //初始化延時函數(shù)
Led_Init(); //初始化LED端口
Uart_Init(9600); //初始化串口
AD7606_Init(); //初始化AD采樣芯片
NVIC_Config(); //初始化STM32時鐘及外設(shè)
SPI_Config(); //ET 1200用SPI總線初始化配置
Timer2_Init_ Config(); //Timer2初始化配置
ET 1200_GPIO_Config(); //ET 1200 GPIO初始化配置
ECAT_Init(); //初始化通信變量和ESC寄存器
FSMC_Init(); //FSMC并行總線初始化
//--一初始化完成,進入主循環(huán)--一
while(1)
{
ET1200_AlEvent=pEsc->AlEvent; //讀應(yīng)用層事件請求寄存器,
// ET1200_AlEvent為全局變量,在頭文件中定義
if(!ET1200_IntEnabled) //處于自由運行模式(ET 1200_ IntEnabled -=0
//處于同步模式(ET1200 IntEnabled==1)
free_ run(); //處于自由運行模式時,進行周期性數(shù)據(jù)查詢
el_event(); //應(yīng)用層任務(wù)處理,包括狀態(tài)機和非周期性數(shù)據(jù)等
}
}
從站設(shè)備可以運行于同步模式或自由運行模式,在自由運行模式中使用查詢方式處理周期性過程數(shù)據(jù),在同步模式使用中斷服務(wù)程序處理性數(shù)據(jù)。
變量ET1200 IntEnabled來控制運行模式。ET1200 IntEnabled為1時,使用同步模式,ET1200 IntEnabled為0時,使用自由運行模式。
根據(jù)主站對SM的配置,在函數(shù)、參數(shù)初始化階段來初始化變量ET1200_ IntEnabled,確定當(dāng)前的運行模式。
本程序選擇同步模式,以下將按照該模式講解一個中斷服務(wù)數(shù)據(jù)處理的工作流程,如圖所示。
4.6 實驗測試
實驗測試平臺由一臺PC機、一套自主研發(fā)的沖床數(shù)控系統(tǒng)軟件、一臺自主研發(fā)的五軸高速運動控制器、一套單軸絲杠滑臺、一套二維伺服平臺、一套四軸同步測試架組成。
實驗過程中需要注意,因為目前運動控制器專為數(shù)控沖床設(shè)計,僅保留1個M II接口連接主站,且設(shè)計最多連接軸數(shù)為五軸,故連接四軸同步測試架時不能接單軸絲杠滑臺和二維伺服平臺;測試過程中工業(yè)PC機和顯示器使用筆記本代替。在平臺上測試通過后將控制系統(tǒng)接入到LX230B型數(shù)控轉(zhuǎn)塔沖床上進行測試和參數(shù)調(diào)試,最終成功開發(fā)出30T數(shù)控轉(zhuǎn)塔沖床用高速運動控制系統(tǒng)。
-
基本通信功能測試
EtherCAT主從站基本通信功能測試時首先按圖所示,使用網(wǎng)線將PC機與從站運動控制器連接起來后,在數(shù)控軟件通信設(shè)置的外部設(shè)備通信設(shè)置中找到運動控制器連接狀態(tài),點擊重新連接。使用Wireshark抓包工具抓取連接過程中主站廣播的數(shù)據(jù)包,最終連接成功時運動控制器連接狀態(tài)指示燈變?yōu)镺N,從站狀態(tài)變?yōu)椴僮鳡顟B(tài)(OP),從站狀態(tài)機啟動正常,如圖所示。
由圖可知該實驗中EtherCAT報文的格式。報文總長度60個字節(jié),前14個字節(jié)是以太網(wǎng)數(shù)據(jù)幀頭,包括6字節(jié)的目的地址(ffffff:ff ) } 6字節(jié)的源地址(7804be:6f)} 2字節(jié)的幀類型(Ox88a4);接著是2字節(jié)的EtherCAT頭,包括11位數(shù)據(jù)長度(Ox02a)}1位保留位(Ox0)}4位類型位(0x1);然后是EtherCAT數(shù)據(jù),數(shù)據(jù)為2個子報文,每個子報文包含10字節(jié)子報文頭,16字節(jié)數(shù)據(jù),2字節(jié)WKC(工作計數(shù)器)。Wireshark抓取的報文與2.1節(jié)中的EtherCAT幀格式一 致,從而主從站之間實現(xiàn)了基本通信。
-
控制系統(tǒng)基本功能測試
控制系統(tǒng)基本功能測試是驗證系統(tǒng)軟硬件功能正常的重要實驗,該項測試在單軸絲杠滑臺
完成,連接好PC機、運動控制器和單軸絲杠滑臺,如圖所示。在數(shù)控軟件的手動加工中對輸出I/O如伺服使能、緊急停止,回零點如X軸回零、Y軸回零,單軸位移控制如X+, X-, Y+, Y-進行測試,并觀察滑臺的運動情況和伺服驅(qū)動器面板顯示來判斷各項功能是否正常。經(jīng)測試,軟件上的相關(guān)按鈕都工作正常,五個軸的接口、I/O接口工作正常,產(chǎn)生的脈沖精度誤差為0。故數(shù)控系統(tǒng)軟硬件基本功能測試通過。
-
G代碼解釋、圓弧插補測試
通過二維伺服運動平臺圓弧插補實驗測試運動控制系統(tǒng)G代碼解釋、圓弧插補等功能。該項測試主要在二維伺服平臺上完成,連接PC機、運動控制器和二維伺服平臺,如圖所示,通過數(shù)控系統(tǒng)控制二維伺服運動平臺的X軸和Y軸電機做圓弧插補,利用上方橫梁固定的筆桿記錄二維平臺上白紙相對運動下的軌跡。二維平臺中的兩組伺服機絲杠的參數(shù)完全一致,絲杠螺距為20mm,設(shè)定伺服驅(qū)動器驅(qū)動電機旋轉(zhuǎn)一圈為2000個脈沖,可知絲杠走1 mm需要100個脈沖,由此設(shè)置數(shù)控軟件中的X, Y軸脈沖當(dāng)量都為1000。
使用AutoCAD設(shè)計一個直徑D為80mm的圓周,如圖所示,繪制完成后保存為.dxf格式,然后使用一體化飯金CAD/CAM編程軟件cncKad將.dxf格式的圖紙轉(zhuǎn)化為沖床數(shù)控軟件所需的.PNC文件,即G代碼。然后將G代碼文件導(dǎo)入到數(shù)控軟件中,預(yù)加工仿真運行無誤后啟動伺服,進行實際加工,最終得到實際繪制效果圖如圖_5 -6所示。繪制出的圓周尺寸精確,控制系統(tǒng)通過圓弧插補測試。
-
多軸運動的同步性能測試
多軸同步測試實驗用來測試運動控制系統(tǒng)多軸運動的同步性能。該項測試主要利用四軸同步測試架完成,如圖所示,測試架上固定安裝有A, B, C, D共4組電機和驅(qū)動器。將電機驅(qū)動器與運動控制連接,控制器通過EtherCAT總線與PC機連接,打開數(shù)控軟件,在加工狀態(tài)中選擇手動加工,控制伺服電機A, B,C, D同時做順時針運動旋轉(zhuǎn),通過長時間運行測試觀察軸上4個光盤指向分析電機運動的同步性。經(jīng)過長時間測試觀察后,電機按鈕停止伺服軸轉(zhuǎn)動,可以看到4個電機指向同一方向,驅(qū)動器面板顯示脈沖數(shù)也一致。
-
實際產(chǎn)品應(yīng)用
在上一節(jié)的一系列實驗后,控制系統(tǒng)的各項功能都順利通過測試,接下來把開發(fā)好的控制系統(tǒng)制作成便于使用的操作臺和控制柜接入到LX230B型30T的數(shù)控轉(zhuǎn)塔沖床上,取代原有的控制系統(tǒng),操作臺和控制柜如圖所示。該沖床選用安川 -7系列AC伺服電機、 -V系列AC伺服驅(qū)動器。首先調(diào)試好伺服電機與伺服驅(qū)動器之間構(gòu)成電流環(huán)、速度環(huán)的PID參數(shù),讓閉環(huán)的性能達到較好水平,再接入控制系統(tǒng),其中編碼器分頻脈沖輸出C相信號在軸回原點時使用。
為觀測控制系統(tǒng)在數(shù)控轉(zhuǎn)塔沖床上的應(yīng)用效果,需要采用非接觸測量儀測量板材運動過程中的振動曲線。根據(jù)實驗室現(xiàn)有的條件,采用由日本Keyence公司生產(chǎn)的LK-G400型激光位移傳感器和LK-GD500型控制器作為非接觸式測量工具。LK-G400的主要技術(shù)參數(shù)為:使用距離為400mm,測量范圍為士100mm,取樣率20us,鋇量精度為gum o LK-GD500型控制器主要參數(shù)為:最小顯示單位為O.Olum,顯示周期10次/秒。
在沖床大板材(1200mm X 2_SOOmm)上選取測試點W點,如圖所示。采用S型曲線加減速規(guī)劃,加速度g為6,控制板材在X軸上高速移動lOmm,運動控制器輸出的PULS(脈沖)信號局部波形如圖所示。
使用軟件LK-Navigator讀取傳感器測量的數(shù)據(jù),如圖所示。由圖分析可知調(diào)節(jié)時間為130ms(按士0.5%誤差帶)、穩(wěn)態(tài)誤差士0.0Smm,各項指標(biāo)良好,達到工業(yè)應(yīng)用要求。
5. 工具
5.1 TwinCAT
EtherCAT主站方案實現(xiàn)一般都采用倍福公司的TwinCAT, TwinCAT實現(xiàn)了強大的EtherCAT主站功能,從站XML表配置、EEPROM配置文件操作、掃描EtherCAT從站等,下圖為使用TwinCAT開發(fā)沖床數(shù)控系統(tǒng)的過程。因為TwinCAT是基于Windows風(fēng)格,擁有較好的人機交互界面,功能強大,非常適合上位機控制窗口的開發(fā),但TwinCAT運行于Windows環(huán)境下
,實時性很差,而且TwinCAT和Windows系統(tǒng)需要付費才能商業(yè)化應(yīng)用,價格較高。
在學(xué)習(xí)EtherCAT的時候,TwinCAT是必須要學(xué)習(xí)的。TwinCAT軟件其功能強大,可以寫plc程序,可以寫圖形化界面,可以觀察波形等等。初次學(xué)習(xí)時我就參考TwinCAT 3運動控制教程和TwinCAT NC PTP實用教程,把TwinCAT 3中界面的一些功能都試了一遍。另外用功能塊學(xué)著寫了凸輪、齒輪的程序,并用Visualization圖形化界面來控制。(在學(xué)習(xí)TwinCAT時,要充分利用好幫助文檔)。
因為我的任務(wù)是做一致性測試,所以關(guān)注點大部分放在了對協(xié)議的了解上,涉及到一致性測試的文檔有ETF7000.2、ETG7010。具體可以去ETG官網(wǎng)上查找相關(guān)資料。做一致性測試時需要用到ET9400,這款軟件不是免費的。目前還沒開始測這部分。
對于帶有EtherCAT伺服驅(qū)動器的性能的測試,用TwinCAT帶著簡單測過csp、csv、cst這三種模式。如果想要系統(tǒng)的測試驅(qū)動器所支持的操作模式,必須對驅(qū)動器的相關(guān)知識有一定的了解。另外就是對對象字典中對象充分了解。TwinCAT中的Process Data和CoE-Online界面是很重要的。這點我也沒有完全掌握。沒有以太網(wǎng)基礎(chǔ),對協(xié)議沒有了解,直接接觸EtherCAT這條學(xué)習(xí)之路感覺很艱難!
5.2 LinuxCNC
PC機部分軟件以LinuxCNC為基礎(chǔ),往下LinuxCNC通過HAL(硬件抽象層)與EtherCAT主站驅(qū)動之間進行通信連接,然后EtherCAT主站通過以太網(wǎng)線給從站運動控制器發(fā)控制命令;往上利用LinuxCNC提供的Python調(diào)用接口和人機界面通信,數(shù)控系統(tǒng)人機界面采用PyQt開發(fā);由于LinuxCNC需要運行實時任務(wù),需要將普通操作系統(tǒng)進行改造。因此,目前的主要工作是對Linux系統(tǒng)進行實時性改造、安裝EtherCAT主站、編寫HAL模塊、編寫人機界面。
5.3 開源的EtherCAT Master
EtherCAT的主站開發(fā)是基于EtherCAT機器人控制系統(tǒng)的開發(fā)中非常重要的環(huán)節(jié)。目前常見開源的主站代碼為的RT-LAB開發(fā)的SOEM (Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT Master。使用起來SOEM的簡單一些,而the IgH EtherCAT Master更復(fù)雜一些,但對EtherCAT的實現(xiàn)更為完整。
具體比較如下表:
原文標(biāo)題:5. 工具
文章出處:【微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
運動控制
+關(guān)注
關(guān)注
4文章
646瀏覽量
33450 -
ethercat
+關(guān)注
關(guān)注
19文章
1079瀏覽量
39788
原文標(biāo)題:5. 工具
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄

評論