1. 簡介
1.1 運動控制
運動控制系統處理機械系統中一個或多個坐標上的運動以及運動之間的協調,實現精確的位置控制、速度和加速度控制、轉矩和力的控制等。
單軸的運動控制系統可分為開環、半閉環和閉環伺服系統。
多軸運動控制系統可以分成點位控制、連續軌跡控制和同步控制。
典型的運動控制系統,從結構上看,包括上位機控制窗口、運動控制器、驅動器、電機以及測量反饋系統等幾個部分組成:
1.2 實時以太網
實時以太網(RTE, Real Time Ethernet)是常規以太網技術的延伸,以便滿足工業控制領域的實時性數據通信要求。目前,國際上有多種實時工業以太網協議,根據不同的實時性和成本的要求使用不同的原理,大致可以分為以下三類:
- (1)基於TCP/IP實現的工業以太網仍使用TCP/IP協議棧,通過上層合理的控制來解決通信過程中的不確定因素。這種方式具有較高的傳輸速率,適應於大量數據通信,更適合作為網關和交換設備的應用,不能實現很好的實時性。常用的通信控制方法有:合理調度,減少沖突的概率;定義幀數據的優先級,為實時數據分配最高優先級;使用交換式以太網等。使用這種方式的典型協議有Modbus/TCP和Ethernet/IP等。
- (2)基於以太網實現的工業以太網仍然使用標准的、未修改的以太網通信硬件,但是不適用TCP/IP來傳輸數據。它使用特定的報文進行傳輸。TCP/IP協議棧能使用時間控制層分發一定的時間片來利用網絡資源。該類協議主要有Ethernet Powerlink, EPA C Ethernet for Plant Automation ), PROFINET IRT等。通過這種方式可以實現較好的實時性。
- (3)通過修改以太網協議實現的工業以太網,實現應答時間小於lms的硬實時,從站使用特定的硬件實現。由實時MAC控制實時通道內的通信,從根本上避免報文間的沖突。非實時數據依然能在通道中按原協議通信。典型協議有德國倍福的EtherCAT、西門子的PROFINET IRT等。
1.3 EtherCAT
德國BECKHOFF自動化公司於2003年開發出的EtherCAT實時以太網技術突破了其他以太網解決方案的系統限制:通過該項技術,無需接受以太網數據包,將之解碼,然后再將過程數據復制到各個設備。
2. EtherCAT原理介紹
EtherCAT從站設備在報文經過其節點時讀取相應的數據報文,同樣輸入數據也是在報文經過時插入到報文中。整個過程報文只有幾納秒的時間延遲,實時性獲得極大提高
EtherCAT作為一種工業以太網總線,充分利用了以太網的全雙工特性。使用主從通信模式,主站發送報文給從站,從站從中讀取數據或將數據插入至從站。
主站
可使用標准網卡
實現,從站
選用特定的EtherCAT從站控制器
ESC(EtherCAT Slave Controller)或者FPGA實現,
主要完成通信
和控制應用
兩部分功能,EtherCAT物理層選用標准以太網物理層器件。
從站能將收到的報文直接處理,並讀取或插入有關的數據,再將報文發送給下一個EtherCAT從站。最末尾的EtherCAT從站返回處理完全的報文,然后由第一個從站發送給主站。整個通信過程充運行於全雙工模式下,TX線發出的報文又通過RX線返回給主站:
2.1 實時性
- 數據包刷新時間的計算
數據包中所有從站的 Process Datarocess Datarocess Data rocess Data rocess Data rocess Datarocess Data數據 決定了數據包的長度。
一個Ethernet thernet數據包最小84 字節,不足 84 字節會補齊84 字節。由於EtherCAT Frame中有一些公共開銷, 84 字節的數據包最多含18字節的過程數據。考慮到數據包必須經過每個從站兩次才能回到主站,所數據包以固定的波特率100 Mbps在網絡上傳輸兩次的時間 這就是它的總線刷新時間 。
1.基於這個原則,以包含 1000路開關量信號的數據包為例,計算過程如下:
過程數據長度:1000/8=125Bytes
數據包長度:84-18+125=191Bytes=191*8 Bit= 1528 Bit
總線刷新時間:(1528Bit/100,000,000 Bps)*2=15.28us * 2 = 30.56us
注意,通常的數字量模塊, 都是單純的輸出或者輸入模塊,而不是混合模塊。所以 1000 個數字 量信號, Frame 中就會分配 125 字節。
2.再以包含100個EtherCAT伺服驅動器過程數據的EtherCAT數據包為例,假如每個伺服的過程數據只包括控制字(2字節)、狀態字(2字節)、目標位置(4字節)、實際位置(4字節),其總線刷新時間的計算過程如下:
過程數據長度:100*(2+4)=600 Byte。
數據包長度:84-18+600=1266 Byte =671*8 Bit =5328 Bit
總線刷新時間:(5328 Bit/100,000,000 Bps) *2=100.656µs
注意,Frame中只為一個伺服分配了6個字節,這是因為根據Beckhoff公司的控制軟件TwinCAT中關於EtherCAT的默認設置是從站的Input和Output使用同一數據段,所以數據包進入伺服驅動器時該數據段存放的是控制字和目標位置,而出來時則存放伺服的狀態字和實際位置。
以上兩個數據30.56µs和101.28 µs就是EtherCAT官方宣傳資料中,刷新1000個數字量需要30µs,刷新100個伺服軸只需要100µs的數據由來。實際上,根據從站的類型、是否包含分布時鍾、是否啟用時鍾同步、時鍾同步的參數設置不同,在數據包中有可能還會增加8-12字節用於傳輸同步時鍾值,以及相應的為每個從站增加一個Bit的標記等等,會增加幾個微秒的刷新時間,暫且忽略不計。
以上計算只是數據包傳輸需要的理論時間,實際上,數據包經過每個從站會產生短暫的硬件延時。100M超五類網線接口的從站延時約1µs,而EBus的IO模塊類從站延時約0.3µs,在毫秒級以下的控制任務中如果從站數量較多,這個時間也相當可觀,計算刷新周期時應該考慮進去。
2.2 端口管理
一個從站控制器最多可以有4個端口,如果一個端口關閉了,控制器主動連接下一個端口。端口可以隨着EtherCAT命令主動的打開或者關閉。邏輯端口設置決定了EtherCAT幀的處理和發送順序。
2.3 EtherCAT網絡拓撲
所有數據幀在網絡中以一種“邏輯閉環”的方式傳播,與網絡的硬件拓朴無關,無論它是鏈式、菊花鏈、星形還是樹形拓朴。
所有數據幀都由Master發出,以事前嚴格定義的順序,依次經過網絡上的所有從站,走過一個完整的閉環后回到Master 。
所有數據幀通過從站中的 EtherCAT Processing Unit (EtherCAT處理單元)只有 1 次。
- 線型拓撲:
任意數目的設備成線型連接
最多65535個設備
-
數據處理鏈型拓撲
-
帶有分支線的數據處理鏈型拓撲
-
樹型拓撲:
-
實時星型拓撲:
-
冗余線纜
選擇冗余電纜可以滿足快速增長的系統可靠性需求,以保證設備更換時不會導致網絡癱瘓。您可以很經濟地增加冗余特性,僅需在主站設備端增加使用一個標准的以太網端口(無需專用網卡或接口),並將單一的電纜從總線型拓撲結構轉變為環型拓撲結構即可(見圖7)。當設備或電纜發生故障時,也僅需一個周期即可完成切換。因此,即使是針對運動控制要求的應用,電纜出現故障時也不會有任何問題。
EtherCAT也支持熱備份的主站冗余。由於在環路中斷時EtherCAT從站控制器芯片將立刻自動返回數據幀,一個設備的失敗不會導致整個網絡的癱瘓。例如,拖鏈設備可以配置為分支拓撲以防線纜斷開。
2.4 EtherCAT網絡協議棧
CoE(Can over EtherCAT)
PDO(Process Data Object 過程數據對象)
SDO(Service Data Object 服務數據對象)
PDI(Process Data Interface 過程數據接口)(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(modular device description 模塊化設備描述 )
2.5 EtherCAT數據幀格式
EtherCAT數據直接嵌入在以太網數據幀中進行傳輸,只是采用了一種特殊的幀類型,該類型為Ox88A4, EtherCAT數據幀結構如圖所示:
EtherCAT數據包由數據頭和數據實體兩部分組成,EtherCAT數據頭包含2個字節,每個數據包里面可以只包含一個EtherCAT子報文,也可以包含多個子報文;一個EtherCAT子報文對應着一個從站,因此一個EtherCAT數據包可以操作
多個EtherCAT從站,相應的數據長度在44-1498字節之間,EtherCAT數據幀結構定義:
類型
字段:
EtherCAT子報文結構定義:
地址區
字段
EtherCAT 尋址:
EtherCAT 通信的實現是通過由主站發送至從站的 EtherCAT 數據幀來完成對從站
設備內部存儲區
的讀寫操作, EtherCAT 報文對 ESC 內部存儲區有多種尋址操作方式,從而可以實現多種通信服務。EtherCAT 段內尋址有設備尋址和邏輯尋址兩種方式。
設備尋址是面對一個從站進行讀寫操作。
邏輯尋址是面向過程的數據操作, 實現同一報文讀寫多個從站設備的多播功能。
具備全部尋址方式的從站稱為完整性從站
,只具備部分尋址方式的從站則稱為基本從站
。
命令
字段
不同命令通過信息傳輸系統最優化對所有存取方法的讀寫
WKC
字段
Working Counter。如果成功尋址了EtherCAT設備,並且成功執行了讀操作,寫操作或讀/寫操作,則工作計數器將遞增。
可以為每個數據報分配一個工作計數器值,該值是根據預期報文通過所有設備數來設置的。
通過將工作計數器的預期值與所有設備通過后的實際值進行比較,主站可以檢查EtherCAT數據報是否已成功處理。
- 同步管理器
2.6 EtherCAT設備尋址方式
在EtherCAT的每個子報文中,有32位空間用於對EtherCAT設備進行尋址。尋址方式有四種,分別為:
- 位置尋址
位置尋址方式是根據從站的連接順序,即物理位置實現的。在報文頭的32bit地址中,前16bit的Position用於存放地址值,Offset用於存放ESC邏輯寄存器或者內存地址。報文每經過一個從站設備,其Position中的地址值加1。當一個從站接收到EtherCAT報文后,如果報文中的地址值為0,則該報文就是這個從站要要接收的報文。
在上圖中,如果需要總線上第8個設備響應報文,則主站需要將報文的地址設為0xFFF9,當報文經過第1個從站時,地址為0xFFF9,不等於0,第1個從站不會響應報文,報文地址加1,變為0xFFFA。當報文經過第2個從站時,地址為0XFFFA,不等於0,第2個從站不會響應該報文,報文地址加1,變為0xFFFB。以此類推,當報文到達第8個從站時,此時地址值為0x0000,當前從站將接收報文。
位置尋址(Position Address / Auto Increment Address)只應在啟動EtherCAT系統時用於掃描現場總線,以后只能偶爾使用以檢測新連接的從站。 如果由熱連接或鏈接問題導致循環暫時關閉,使用位置尋址可能會出現問題。 在這種情況下位置地址被移位,並且,如錯誤寄存器的值到設備的映射變得不可能,因此不能定位故障鏈路。
- 節點尋址
在啟動階段,主站通常采用位置尋址方式對總線上的從站進行尋址,之后采用節點尋址方式。
在報文中,報文頭的32bit地址,前16bit的Address用於存放站點地址值,Offset用於存放ESC邏輯寄存器或者內存地址。
在每個從站中站點地址
保存在寄存器(0x0010) 中。
順序尋址時,主站可以對每個從站的站點地址進行設置,也可以直接讀取每個從站的的站點地址。
節點尋址方式的優點是,每個從站的地址與其在總線中的位置無關。在添加/刪除從站,甚至是改變總線拓撲結構的時候都能對從站進行正確的訪問。
上圖是節點尋址方式的示意圖。8個從站的地址與其在總線中的位置並沒有關系。出於直觀的目的,4台伺服驅動器的地址被設置為連續的,4個I/O模塊的地址被設置為連續的,在實際中並沒有這樣的要求。
EtherCAT從設備可以有兩個配置的站點地址,一個由主站分配(Configured Station Address),另一個存儲在SII EEPROM,並且可以由從站應用程序更改(Configured Station Alias address)。
配置站點地址
由主站在啟動期間分配,並且不能由EtherCAT從站更改。 配置站別名地址
存儲在SIIEEPROM中,可由EtherCAT從站更改。 配置的站別名
必須由主站啟用。 如果節點地址(NodeAddress)與配置的站地址
或配置的站點別名
匹配,將執行相應的命令操作。
- 邏輯尋址
EtherCAT的第三種尋址方式是邏輯尋址,首先需要了解的是FMMU。
FMMU(Fieldbus Memory Management Units)
FMMU稱為總線內存管理單元,它存在與從站芯片ESC中,負責對從站物理地址與主站邏輯地址進行翻譯並建立映射關系。主站在總線啟動過程中對FMMU進行配置,內容包括:
• 邏輯地址的起始地址
• 數據長度(按跨字節數計算)
• 邏輯地址的起始位
• 邏輯地址的終止位
• 從站物理地址的起始地址
• 從站物理地址的起始位
• 操作類型(只讀、只寫、讀寫)
• 使能
在報文中,使用報文頭的32bit地址的全部,用來表示大小為4GB的邏輯地址空間。
以上圖為例,FMMU將邏輯地址中0x00012345第2位開始的,到0x00012346以第2位終止的區域,與從站物理地址中0x0010第0位開始的區域進行映射。
當從站收到來自主站的報文時,會檢查報文中的地址是否與FMMU中的地址相符,如果有,將根據操作類型進行讀寫操作。
這種尋址方式的優點是,在主站想對每個從站進行訪問的時候,只需要對邏輯空間中的地址進行操作,而無須關心該地址對應的從站物理地址,減輕了主站的負擔。
所有器件讀取和寫入相同的邏輯4 GB地址空間(EtherCAT數據報中的32位地址字段)。 從器件使用映射單元(FMMU,現場總線存儲器管理單元)將數據從邏輯過程數據映像映射到其本地地址空間。 在啟動期間,主器件配置每個從器件的FMMU。 從站使用FMMU的配置信息知道邏輯過程數據映像的哪些部分必須映射到哪個本地地址空間。
邏輯尋址支持逐位映射。 邏輯尋址是一種強大的機制,可以減少過程數據通信的開銷,因此通常用於訪問過程數據。
當從站設備收到的EtherCAT報文帶有邏輯尋址標志位時,從站設備將檢查自身是否有相應的FMMU單位地址與之匹配。
總結:EtherCAT使用三種方式對設備進行尋址,在啟動過程中,使用順序尋址方式為從站分配節點地址,然后通過節點尋址方式配置從站寄存器,將邏輯地址與從站物理地址進行映射,之后就可以使用邏輯尋址方式進行過程數據交換了。
- Broadcast尋址
每個EtherCAT從站都被尋址。
使用廣播尋址。 如果從站的預期是相同的,用於所有從站的初始化和檢查所有從站的狀態。每個從器件具有一個16位Local地址空間:
地址范圍0x0000:0x0FFF專用於EtherCAT寄存器,
地址范圍0x1000:0xFFFF用作過程數據RAM
通過EtherCAT數據報的偏移字段尋址,過程數據。
2.7 分布式時鍾(Distribute Clock)
通過分布式時鍾精確的調整,系統可達到精確的同步。
外部時鍾同步IEEE1588
EtherCAT設備同步
定義系統時間
定義一個參考時鍾:
一個EtherCAT從站被當做參考時鍾使用
參考時鍾循環的發布它的時鍾
參考時鍾根據一個全局參考時鍾 IEEE1588
2.8 應用層(Application Layer)
應用層AL(Application Layer) 為用戶與網絡之間提供接口,應用層在EtherCAT 通信協議層次結構中是與用戶聯系最緊密最直接的一層,它可以直接與用戶進行交互,實現面對具體的應用程序和控制任務等功能, EtherCAT 應用層為各種服務協議與應用程序之間定義了接口, 使其能夠滿足應用層所要求的各種協議共同工作的需求。
EtherCAT 作為網絡通信技術,支持CAN open 協議中的CiA402,以及 SERCOS 協議的應用層( 即 CoE 和SoE)等多種符合行規的設備和協議。
EtherCAT狀態機 設備和網絡的啟動
郵箱接口和協議 設備的存取變量 異步傳輸
協議:
EOE: Ethernet over EtherCAT
COE: CANopen over EtherCAT
FOE: Filetransfer over EtherCAT
SOE: Servo Drive over EtherCAT
從站信息接口 設備特征和配置信息
- EtherCAT狀態機
狀態機構建於數據鏈路層
定義EtherCAT從站設備一般信息狀態
指定對EtherCAT從站設備啟用網絡時初始化和錯誤處理
狀態和主從站之間通信關系相一致
從站設備的請求狀態和當前狀態反應於應用層和應用層注冊中
定義了五種狀態:
Init // 應用層沒有數據交互,主站對數據傳輸信息注冊有同路
Pre-Operational // 應用層上的郵箱通信。沒有過程數據交互
Safe-Operational // 應用層上的郵箱通信。過程數據通信,但是僅僅是輸入被評估,輸出置於Safe狀態
Operational // 輸入和輸出都是有效的
Bootstrap // 定義了固件更新。是可選的,但是在固件必須要更新時推薦選擇
// 只能和init進行狀態間轉換,沒有過程數據通信,通過應用層的郵箱進行通信,根據需要的情況對郵箱進行配置,只能使用FoE協議。
從站設備的請求狀態和當前狀態反應於應用層控制和應用層注冊中:
應用層控制(0x0120) 初始化設備狀態機的狀態轉換
應用層狀態(0x0130) 設備狀態機的實際狀態
應用層狀態代碼(0x0134) 錯誤原因或者其他狀態代碼
- 郵箱傳輸
交換變量數據的標准方式
郵箱接口是可選擇的,但是推薦使用
如果過程數據是可設置的,或者有其他的非周期性服務,必須郵箱通信
全雙工能力 從站可以發起一個數據交互
預留兩個同步管理器通道: Sync Manager 0(主站到從站),Sync Manager 1(從站到主站)
數據交互的早期階段,郵箱方式是可利用的(State Pre-Operational)
支持多種協議的能力
郵箱通信協議的類型:
EOE: Ethernet over EtherCAT // 通過EtherCAT傳輸的標准以太網幀
COE: CANopen over EtherCAT // 訪問CANopen對象字典和它的對象,CANopen緊急事件和事件驅動的PDO消息
FOE: Filetransfer over EtherCAT // 下載上傳固件和其他的一些文件
SOE: Servo Drive over EtherCAT // 存取伺服輪廓檢驗(IDN)
- 從站信息接口
強制從站信息接口SII(Slave Information Interface)由所有能被持久保持的對象組成
信息被存儲於一個EEPROM,EtherCAT從站控制器和EEPROM之間有一個SPI接口。
SII包括:
boot設置數據
設備一致性
vender id,產品序列號,修正號,serial no
和CoE對象0x1018里,相同的信息
應用程序信息數據
額外的一些數據
- 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.
此可選屬性由應用程序控制,並報告由AL的狀態控制事例檢測到的最后錯誤或ID值。AL(應用層)狀態代碼給出從機進入錯誤狀態的原因。 如果錯誤標志(寄存器0x0130:04)為TRUE,則應提供AL狀態代碼.
2.9 設備配置(Device Profile)
設備行規描述了設備的應用參數和功能特性,如設備類別相關的機器狀態等。現場總線技術已經為I/O設備、驅動、閥等許多設備類別提供了可利用的設備行規。用戶非常熟悉這些行規以及相關的參數和工具,因此,EtherCAT無需為這些設備類別重新開發設備行規,而是為現有的設備行規提供了簡單的接口。該特性使得用戶和設備制造商可以輕松完成從現有的現場總線到EtherCAT技術的轉換過程。
- EtherCAT實現CANopen (CoE)
CANopen©設備和應用行規廣泛用於多種設備類別和應用,如I/O組件、驅動、編碼器、比例閥、液壓控制器,以及用於塑料或紡織行業的應用行規等。
EtherCAT可以提供與CANopen機制[7]相同的通訊機制,包括對象字典、PDO(過程數據對象)、SDO(服務數據對象),甚至於網絡管理。
因此,在已經安裝了CANopen的設備中,僅需稍加變動即可輕松實現EtherCAT,絕大部分的CANopen©固件都得以重復利用。並且,可以選擇性地擴展對象,以便利用EtherCAT所提供的巨大帶寬。
- EtherCAT實施伺服驅動 設備行規IEC 61491 (SoE)
SERCOS interface™ 是全球公認的、用於高性能實時運行系統的通訊接口,尤其適用於運動控制的應用場合。
用於伺服驅動和通訊技術的SERCOS™框架屬於IEC 61491標准[8] 的范疇。該伺服驅動框架可以輕松地映射到EtherCAT中,嵌入於驅動中的服務通道、全部參數存取以及功能都基於EtherCAT郵箱(參見圖12)。在此,關注焦點還是EtherCAT與現有協議的兼容性(IDN的存取值、屬性、名稱、單位等),以及與數據長度限制相關的擴展性。過程數據,即形式為AT和MDT的SERCOS™數據,都使用EtherCAT從站控制器機制進行傳送,其映射與SERCOS映射相似。並且,EtherCAT從站的設備狀態也可以非常容易地映射為SERCOS™協議狀態。EtherCAT從站狀態機可以很容易地映射到SERCOS™協議的通信階段。
EtherCAT為這種在CNC行業中廣泛使用的設備行規提供了先進的實時以太網技術。這種設備行規的優點與EtherCAT分布時鍾提供的優點相結合,保證了網絡范圍內精確時鍾同步。可以任意傳輸位置命令,速度命令或扭矩命令。取決於實現方式,甚至可能繼續使用相同的設備配置工具。
- EtherCAT實現以太網(EoE)
EtherCAT技術不僅完全兼容以太網,而且在“設計”之初就具備良好的開放性特征——該協議可以在相同的物理層網絡中包容其它基於以太網的服務和協議,通常可將其性能損失降到最小。對以太網的設備類型沒有限制,設備可通過交換機端口在EtherCAT段內進行連接。以太網幀通過EtherCAT協議開通隧道,這也正是VPN、 PPPoE (DSL) 等因特網應用所普遍采取的方法。EtherCAT網絡對以太網設備而言是完全透明的,其實時特性也不會發生畸變(參見圖13)。
EtherCAT設備可以包容其它的以太網協議,因此具備標准以太網設備的一切特性。主站的作用與第2層交換機所起的作用一樣,可按照編址信息將以太網幀重新定向到相應的設備。因此,集成萬維網服務器、電子郵件和FTP 傳送等所有的因特網技術都可以在EtherCAT的環境中得以應用。
- EtherCAT實現文件讀取(FoE)
這種簡單的協議與TFTP類似,允許存取設備中的任何數據結構。因此,無論設備是否支持TCP/IP,都有可能將標准化固件上載到設備上。
- ADS over EtherCAT (AoE)
ADS over EtherCAT (AoE)是由EtherCAT規范定義的客戶端-服務器郵箱協議。盡管CoE協議提供了詳盡的描述,但AoE則更適合路由與並行服務的應用:通過網關設備訪問子網絡,如EtherCAT至CANopen® 或EtherCAT至IO-Link™ 網關設備。AoE使EtherCAT主站應用(如PLC程序)可以訪問所屬CANopen® 或 IOLink™從站的各個參數。AoE路由機制開銷遠低於因特網協議(IP)所定義的開銷,並且發送方和接收方尋址參數始終包含在AoE報文中。因此,EtherCAT主站和從站端的實施更為精簡。AoE也通過EtherCAT自動化協議(EAP)進行非周期通信的標准化,從而為上位機MES系統或主計算機、EtherCAT主站及其從屬的現有設備之間提供無縫通信。同時,AoE也提供了從遠程診斷工具獲取EtherCAT網絡診斷信息的標准化方法。
2.10 主站設計
EtherCAT可以在單個以太網幀中最多實現1486字節的分布式過程數據通訊。其它解決方案一般是,主站設備需要在每個網絡周期中為各個節點處理、發送和接收幀。
而EtherCAT系統與此不同之處在於,在通常情況下,每周期僅需要一個或兩個幀即可完成所有節點的全部通訊,因此,EtherCAT主站不需要專用的通訊處理器。主站功能幾乎不會給主機CPU帶來任何負擔,輕松處理這些任務的同時,還可以處理應用程序,因此EtherCAT無需使用昂貴的專用有源插接卡,只需使用無源的NIC卡或主板集成的以太網MAC設備即可。EtherCAT主站很容易實現,尤其適用於中小規模的控制系統和有明確規定的應用場合。
例如,如果某個單個過程映像的PLC沒有超過1486 字節,那么在其周期時間內循環發送這個以太網幀就足夠了。因為報文頭運行時不會發生變化,所以只需將常數報文頭插入到過程映像中,並將結果傳送到以太網控制器即可。
EtherCAT映射不是在主站產生,而是在從站產生(外圍設備將數據插入所經以太網幀的相應位置),因此,此時過程映像已經完成排序。該特性進一步減輕了主機CPU的負擔。可以看到,EtherCAT主站完全在主機CPU中采用軟件方式實現,相比之下,傳統的慢速現場總線系統通過有源插接卡方可實現主站的方式則要占用更多的資源,甚至服務於DPRAM的有源卡本身也將占用可觀的主機資源。
系統配置工具(通過生產商獲取)可提供包括相應的標准 XML 格式啟動順序在內的網絡和設備參數。
已經在各種實時操作系統上實現了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.
可以獲得開源主站協議棧,作為示例代碼或商業軟件。也有各種公司提供各種硬件平台上的實施服務。可以在EtherCAT網站上的產品區找到快速增長的供應商信息[1]。
另一種EtherCAT主站的實現方式是使用樣本代碼,花費不高。軟件以源代碼形式提供,包括所有的EtherCAT主站功能,甚至還包括EoE(EtherCAT實現以太網)功能(見圖15)。開發人員只要把這些應用於Windows環境的代碼與目標硬件及所使用的RTOS加以匹配就可以了。該軟件代碼已經成功應用於多個系統。
2.11 從站設計
從站EtherCAT Processing Unit 總是位於 Port 0 之后其它端口之前,並在數據幀傳輸的過程中提取和插入數據:
DPRAM: 雙端口存儲器 Dual-Ported RAM,可以分別從主站及本地微處理器uC訪問。訪問 ESC 的 Dual-Ported RAM 讀出 並/或 寫入數據。
從器件具有一個16位Local地址空間:
地址范圍0x0000:0x0FFF專用於EtherCAT寄存器,
地址范圍0x1000:0xFFFF用作過程數據RAM
SyncManagers 阻止主站和從站微處理器(uC)同時訪問 ESC存儲區,確保數據的一致性
→ 含周期性數據 (Process Data) 和非周期性數據 (Mailbox)
FMMUs 為Lxx數據報文完成邏輯地址到物理地址的轉換
→ 僅對於周期性數據 (Process Data)
從站的SyncManagers 和 FMMU 是由主站在初始化階段自動配置的,該配置基於每個從站的XML文件和整個網絡的設置。
EtherCAT從站設備使用一個價格低廉的從站控制器芯片ESC。從站不需要微處理器就可以實現EtherCAT通信。可以通過I/O接口實現的簡單設備可以只由ESC和其下的PHY,變壓器和RJ45接頭。給從站的過程數據接口是32位的I/O接口。這種從站沒有可配置的參數,所以不需要軟件或郵箱協議。EtherCAT狀態機由ESC處理。ESC的啟動信息從EEPROM中讀取,它也支持從站的身份識別。
更復雜的可配置從站有使用一個CPU。這個CPU和ESC之間使用8位或16位並行接口或串行SPI接口。要求的CPU性能取決於從站的應用,EtherCAT協議軟件在其上運行。EtherCAT協議棧管理EtherCAT狀態機和應用層協議,可以實現CoE協議和支持固件下載的FoE協議。EoE協議也可以實施。
從站控制器通常都有一個內部的DPRAM(DUAL PORT RAM),並提供存取這些應用內存的接口范圍:
串行SPI(串行外圍接口)主要用於數量較小的過程數據設備,如模擬量I/O模塊、傳感器、編碼器和簡單驅動等。該接口通常使用8位微控制器,如微型芯片PIC、DSP、Intel 80C51等(見圖16)。
8/16位微控制器並行接口與帶有DPRAM接口的傳統現場總線控制器接口相對應,尤其適用於數據量較大的復雜設備。通常情況下,微控制器使用的接口包括Infineon 80C16x、Intel 80x86、Hitachi SH1、ST10、ARM和TI TMS320等系列(見圖16)。
32位並行I/O接口不僅可以連接多達32位數字輸入/輸出,而且也適用於簡單的傳感器或執行器的32位數據操作。這類設備無需主機CPU(見圖17)。
PDO(過程數據對象)、SDO(服務數據對象)
報文通過從站控制器時,從站讀取出相關命令並進行對應處理,數據處理通過硬件完成,延間約為100-_500ns,通信性能獨立於MCU的響應時間。每個ESC最大有容量為64KB的可用的內存編址,能進行連續或同步的讀寫。多個EtherCAT命令數據可以被嵌入到一個以太網報文中,每個數據對應獨立的設備或內存區。
EtherCAT極大提高了以太網的性能,比如操作1000個I/O信號的時間約為30微秒。單個報文至多容納1486字節的過程數據,和12000位I/O信號相當,更新所需時間約為300微秒。控制100個伺服單元的時間約為100微秒。
在基於PC的主站中,一般使用網絡接口卡NIC(Network Interface Card)其中的網卡芯片集成了以太網通信控制器和物理層數據收發器。但是在嵌入式主站中,通信控制器通常集成在微處理器中。
EtherCAT從站設備同時實現應用控制和數據通信兩部分功能,其組成如圖所示,由四部分組成:從站控制微處理器、EtherCAT從站控制器ESC芯片、物理層器件和其他應用層器件。
EtherCAT報文由從站控制器來處理,使用雙端口存儲區完成主從站間的數據交換。每個從站ESC在環路上按各自的順序移位讀寫數據。當數據幀經過從站時,ESC從中讀取發送給自己的命令數據並放到內部存儲區,插入的數據又被從內部
存儲區寫到子報文中。
從站控制微處理器主要負責處理EtherCAT通信和完成控制任務。微處理器從ESC獲取控制數據實現設備控制功能,並采樣設備的反饋數據寫入ESC。從站控制微處理器的選型根據設備控制任務,可以使用ARM或DSP; 8位、16位或32位的處理器。EtherCAT從站采用MII接口模式時,需要使用標准以太網物理層器件:物理層芯片PHY,隔離變壓器等。采用EBUS接口時不需要任何其他芯片。
3. 應用層(Application Layer)
3.1
3.2 EtherCAT Slave Implementation (從站實現)
- DPRAM (雙端口存儲器)size and number of SyncManagers(同步管理 )
The DPRAM is used for exchange of cyclic and acyclic data(循環和非循環的數據交換) via the EtherCAT network. SyncManagers ensure data consistency(保證數據的一致性) within the DPRAM.
Each ESC has 4kByte of registers
(addresses 0x0000 to 0x0FFF) which are reserved for (EtherCAT and PDI communication) configuration settings
(配置設置 ).
Mailbox
(郵箱) and process data
is 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(標准的同步管理配置)
- 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)
- 1 SM for cyclic data input (process data in, slave to master)
For process data, SM running in 3-buffer-mode(3緩存模式) need three times the length (3倍長度) of actual process data for physical memory(物理內存) . The following table shows a schema(體系結構,模式) 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(網絡初始化) .
-Physical address of ESC(ESC物理地址)
-Data length (數據長度)
-SyncManager control input(同步管理控制輸入) :
i. Operation mode【操作模式】 (mailbox-mode/3-buffer-mode)
ii. Access direction【訪問方向:讀或者寫】 (Read direction/Write direction)
iii. Interrupt settings 【中斷設置】 (Valid/Invalid 有效/無效 )
iv. SyncManager watchdog setting【同步管理看門狗定時器設置】 (Valid/Invalid)
v. SyncManager setting (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中設置,主站初始化時調用 ESI中的值)
Syncmanagers(同步管理器)
同步管理器簡稱SM用來協調應用程序和主機的數據交互,同步管理器同步的是數據而非時間,同步管理器確保了應用程序和主機能夠正確的寫入或讀取數據。同時同步管理器可以以中斷的形式通知主機和應用程序發生的數據更新事件。
從站的ESC中包含多個同步管理器,每一個同步管理器都可以單獨的配置:
同步管理器的配置中包括告知同步管理器其需要管理的內存地址的范圍,管理內存的屬性(屬於讀或寫,屬於郵箱數據或過程數據)。
所以每一種數據交互方式都會有一個同步管理器來管理,應用程序進行數據交互時,只需要更具不同的同步管理器就可以方便的區分數據的類型(PDO 或SDO、讀或寫)。從站在初始化時會讀取SM管理器中的配置來確定數據的存放地址。
數據的交互主要有緩沖模式和郵箱模式。緩沖模式主要應用於周期性過程數據的傳送。
- Number of Fieldbus Memory Management Units (FMMUs)(現場總線儲存管理單元)
In an EtherCAT network, the memory of all slaves can be compiled in the master(所有從站的儲存都可以在主站中編輯) to a logical memory(邏輯內存) . This logical memory is managed by FMMUs to map(映射) logical addresses to physical addresses in the slavesFMMUs(邏輯內存通過 的管理和從站中的物理內存相對應) .
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.
// 對於設備中的FMMU配置,每個一致的輸出和每個一致的輸入塊都需要一個FMMU,並且還需要一個用於郵箱狀態響應的附加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.
// 應用說明:標准配置是每個循環輸出和循環輸入數據塊一個FMMU,還可以選擇另外一個用於將郵箱響應可用性標志映射到過程數據中(因此,不需要輪詢郵箱)。 如果輸出和輸入被分組,例如 如表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(節點) in the EtherCAT network.
// 評估設備是否應支持與其他從設備的高精度同步。 如果是這樣,所選的ESC應該支持DC。 分布式時鍾指的是EtherCAT從站的DC功能(第1.3.5章)。 通過這種機制可以調整從站保持的時間,從而實現EtherCAT網絡中節點的精確同步。
- 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 EEPROM_SIZE 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 (加強連接檢測設置) , refer to documentation of the ESC vendor.
// EEPROM安裝在ESC外部,並通過I2C與點對點鏈接連接。 根據EEPROM的大小,應設置EEPROM_SIZE信號。 有關更多詳細信息,請參見知識庫第11.3章“電氣接口EEPROM和(I 2C)”。有關EEPROM(SII)增強鏈接檢測設置,請參閱ESC供應商的文檔。
- Application Controller【應用控制】 (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(為了和主站的應用程序相適應 ) controller to the ESC, sample software stacks(樣本軟件棧) are available for communication implementation(通訊的實現), 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.
// 為了使主機控制器上的應用軟件適應ESC,可以使用示例軟件堆棧進行通信實現,例如從機樣本代碼(SCC)。 如果設備是32位數字I/O接口,則無需應用程序控制器或其他通訊軟件。
In most cases, manufacturers(制造商) can use a familiar microcontroller type as application controller in the EtherCAT device(使用相似型號的微控制器作為應用控制使用在 EtherCAT設備中) . If application software already exists, e.g. for a different fieldbus, it can be used for the EtherCAT device as well.
// 在大多數情況下,制造商可以在EtherCAT設備中使用熟悉的微控制器類型作為應用程序控制器。 如果應用軟件已經存在,例如 對於不同的現場總線,它也可以用於EtherCAT設備。
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(設備診斷)
Master-Slave data synchronization (主從站之間的數據同步) with SyncManager event (no DCs)
Mailbox CoE
Object Dictionary (對象字典) (20 objects) for process data objects (過程數據對象)
CoE services, including CoE Info services(信息服務) , no segmented transfer (無分割轉換)
A list of other available sample stacks can be obtained on the product section of the ETG website.
- Application Layer Communication Protocols (應用層通訊協議)
In EtherCAT, several protocols are available (see chapter 1.3.6) for the application layer to implement (實施) the required specification of the product development(產品開發時所需的規格) . When to apply them is described here.
CAN application protocol (總線應用協議 )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(伺服驅動配置文件) 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(以太網) over EtherCAT(EoE) EoE is usually used to provide webserver interfaces(網絡接口) via EtherCAT. It is also used for devices providing decentral standard Ethernet ports(分散生產方式的標准以太網端口) . ? 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.
ADS over EtherCAT(AoE)小協議實施 When planning to control the device via a .Net interface, AoE is an option to apply.
Application Note:An exemplary(典范) CoE implementation is shown below.
The user application runs the device specific software(設備專用軟件) on the μ C to implement device features(實現設備功能特性 ). 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(獨立於硬件的軟件開發) , 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(用戶特定的設備應用) and the ESC.
Application Note:EtherCAT Slave Protocol Stack.(從站協議棧)
Hilscher(德國赫優訊公司) 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(協議棧構架) with interfaces to the ESC and the user application.
- Device Profiles(設備配置文件)
During network initialization(網絡初始化期間) , parameter setup(參數設定) is necessary, where data does not need to be transmitted cyclically(周期性傳輸) but only during network initialization. Acyclic data exchange is done via mailbox protocols(非循環的數據傳輸通過郵箱協議) , usually via theCoEprotocol (see chapter 2.3.5). For devices with variable process data structure, the definition of a modular device description(MDP,模塊化設備描述 ) is available. The MDP is described in the ETG.5001 Modular Device Profile Specification(說明書) .
// 在網絡初始化期間,必須進行參數設置,這些數據不需要循環傳輸,而僅在網絡初始化期間需要傳輸。 非循環數據交換是通過郵箱協議(通常通過CoE協議)完成的(請參閱第2.3.5章)。 對於具有可變過程數據
結構的設備,可以使用模塊化設備描述(MDP)的定義。 EDP.5001模塊化設備配置文件規范中描述了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應用協議)定義的對象字典
。 對象字典可以描述為二維列表。 每個列表條目均由代表對象的索引(0x0000-0xFFFF)標識。 每個對象最多可以包含255個子索引,也稱為對象條目。 對象列表的結構在不同區域中,請參見表7。
The idea of the MDP is to provide a basic structure for masters(為主站提供一個基本構架) 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的思想是為主機和配置工具提供基本結構,以輕松處理具有復雜(模塊化)結構的從機。 用戶的優勢在於,如果以MDP樣式對從屬變量進行排序,則他可以通過相同的模式找到不同的數據類型。
The MDP can be applied to various types of devices. It is applicable to multiple axis(多軸) servo drive system(伺服驅動系統) of various functionality groups(各種功能組) , such as positioning(位置控制) , torque(扭矩控制) and velocity control(轉速控制) . It is further applicable to gateway(網關) between different fieldbuses, i.e., Profibus, DeviceNet. Modular devices are driven by two aspects:
// MDP可以應用於各種類型的設備。 適用於各種功能組的多軸伺服驅動系統,例如定位,轉矩和速度控制。 它進一步適用於不同現場總線之間的網關,即Profibus,DeviceNet。 模塊化設備由兩個方面驅動:
Comprise(包含) physically connectable modules and plurality of functionalities(多數功能) .
//包括物理上可連接的模塊和多種功能。
Comprise plurality of channels(多數通道) directly being connected to the EtherCAT network.
//包括多個直接連接到EtherCAT網絡的通道。
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設想從站由一個或幾個模塊組成。模塊可以是已連接/斷開連接到從站的硬件。示例是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.(把數據描述成 2種模式,每個對應相應的模式)
// 模塊也可以是描述數據集的邏輯模塊,例如。一個支持速度控制模式和位置控制模式的驅動器-MDP將數據描述為兩個模塊,每個模式一個。
No matter what kind of module is described it needs more or less the same information categories(需要相對應的信息分類) , which are organized in the profile specific index range (Table 7).
// 無論描述哪種模塊,它都或多或少需要相同的信息類別,這些信息類別在配置文件特定的索引范圍內進行組織(表7)。
Application Note:Modular Device Profile Structure(模塊化設備配置文件結構) .
// 應用說明:模塊化設備配置文件結構。
Consider an MDP for a line of slave device modules which are connected together on a backbone layer(主干網層面) via LVDS and via a coupler(耦合器) with MII. Figure 16 shows a schema how to define device profiles(如何定義設備配置文件) such that a modular profile dictionary is set up for the slave device line.
// 考慮一排從設備模塊的MDP,這些設備通過LVDS和帶有MII的耦合器在主干層上連接在一起。圖16顯示了一種模式,該模式如何定義設備配置文件,以便為從屬設備線設置模塊化配置文件字典。
For implementation of the profile (CiA402 Drive Profile) for servo drive, build the program with reference to the corresponding specifications(技術規格,說明書) . In this example, this would be the
ETG.6010 Implementation Directive(指令) for the CiA402 Drive Profile, and
IEC 61800-7 Drive Profiles and Mapping to EtherCAT.
4. 應用實例
由於EtherCAT實時工業以太網技術具有適用范圍廣、拓撲結構靈活、數據通信效率高、實時性強和同步性能好等多種優點,所以特別適用於實時性要求高、通信數據量大的運動控制系統。
控制系統設計采用“PC+運動控制器”的方案,構建多軸運動控制系統,采用PC機為主站、ARM+MCX314為從站處理器的架構。其核心插補與控制算法都放在工業PC中完成,運動控制器要求大為降低,其主要完成數字給定量到實際脈沖信號的轉變。該控制系統方案的優勢在於簡化硬件設計工作,主要以標准化的硬件為主:上位機可以采用工業PC機、下位機使用開發的通用運動控制器,方便日后升級維護。工業PC機與運動控制器直接采用EtherCAT實時工業以太網進行通信連接。
4.1 主站操作系統(RTAI)
PC機部分軟件以LinuxCNC為基礎,往下LinuxCNC通過HAL(硬件抽象層)與EtherCAT主站驅動之間進行通信連接,然后EtherCAT主站通過以太網線給從站運動控制器發控制命令;往上利用LinuxCNC提供的Python調用接口和人機界面通信,數控系統人機界面采用PyQt開發;由於LinuxCNC需要運行實時任務,需要將普通操作系統進行改造。因此,目前的主要工作是對Linux系統進行實時性改造、安裝EtherCAT主站、編寫HAL模塊、編寫人機界面。
雖然EtherCAT主站程序能夠安裝在非實時操作系統上,但一般情況下會對主站進行實時性改造,而且LinuxCNC中有運行實時任務的需要,所以對Linux系統進行實時性改造迫在眉睫。眾所周知,Linux系統本質上是一個分時操作系統,不是一個實時操作系統。Linux系統實時性不強使其在嵌入式應用中有一定的局限性,受內核可搶占性、進程調度方式、中斷處理機制、時鍾粒度、虛擬內存管理等幾個方面的制約。
根據實時性系統要求以及Linux的特點和性能分析,對標准Linux實時性的改造存在多種方法,較為合理的兩大類方法為:直接修改Linux內核源代碼和雙內核法。
- 1.直接修改Linux內核源代碼:對Linux內核代碼進行細微修改並不對內核作大規模的變動,在遵循GPL協議的情況下,直接修改內核源代碼將Linux改造成一個完全可搶占的實時系統。核心修改面向局部,不會從根本上改變Linux內核,並且一些改動還可以通過Linux的模塊加載來完成,即系統需要處理實時任務時加載該功能模塊,不需要時動態卸載該模塊。這種方法存在的問題是:很難百分之百保證,在任何情況下,GPOS(通用操作系統)程序代碼絕不會阻礙RTOS的實時行為。也就是說,通過修改Linux內核,難以保證實時進程的執行不會遭到非實時進程所進行的不可預測活動的干擾。
- 2.雙內核法:雙內核法是在同一硬件平台上采用兩個相互配合,共同工作的系統核心,通過在Linux系統的最底層增加一層實時核心來實現。其中的一個核心提供精確的實時多任務處理,另一個核心提供復雜的非實時通用功能。其優點是可以做到硬實時,並且能很方便地實現一種新的調度策略。目前采用這種方案的主要有RTAT,RT-Linux和Xenomai。本課題采用RTAI實時包的方式完成對Linux系統的實時性改造,如圖所示。
RTAI(實時應用接口)是Linux內核的一個實時擴展,RTAI是基於ADEOSC Adaptive Domain Environment for Operating System)實現,ADEOS位於Linux系統和硬件之間管理硬件中斷,並控制實時內核和Linux內核的優先級,其中實時內核優先級高於Linux內核優先級。
- RTAI安裝:
1.下載RTAI壓縮包並解壓到urs/src目錄下,輸入命令:
cd /usr/src
sudo tar -bzip2 -xvf rtai一3.8.tar.bz2
2.下載Linux內核壓縮包並解壓到urs/src目錄下,輸入命令:
sudo cp suoxd/linux-2.6.37.1.tar.bz2 /usr/src
sudo tar -bzip2 -xvf linux一2.6.32.2.tar.bz2
3.利用RTAI源碼中的文件給內核打補丁,未安裝p atch需安裝patch后,輸入命令:
sudo patch -pl</usr/src/rtai/base/arch/x86/patches/hal-linux-2.6.32.2-x86-2._5一OO.patch
4.配置內核,Linux2.6.32引入新的方式用於簡化kernel的配置,使用命令拷貝當前配置,省去很多繁瑣的內核配置選項。
5.安裝內核模塊,輸入命令:
sudo make clean
sudo make
sudo make modules
sudo make modules install
sudo make install
6.配置RTAI,下載安裝MESA庫文件和EFLTK包,然后進入RTAI文件夾,執行配置,輸入命令:
cd /usr/src/rtai
sudo make config
7.編譯並安裝RTAI,命令行窗口的RTAI安裝結果如圖4-2所示,輸入命令:
sudo make
sudo make install
8.RTAI內核延時測試,利用RTAI源碼包中的測試案例進行測試,測試結果如下:
cd /usr/realtime/testsuite/user/latency
sudo ./run
9.RTAI內核搶占實現測試,測試結果如圖4-4所示,輸入命令行:
cd /usr/realtime/testsuite/user/preempt
sudo ./run
4.2 主站EtherCAT程序(IGH)
本控制系統EtherCAT主站以實時Linux操作系統為基礎,在Linux環境下開發主站有兩方面優勢,一方面Linux為開源系統,方便對底層進行修改;另一方面便於進行嵌入式移植。Linux下的EtherCAT主站架構如圖所示:
Linux操作系統可分為內核態和用戶態。內核態是操作系統的核心,負責進程管理、內存管理、進程間通信和設備管理和驅動等,實時性要求高。用戶態主要運行人機交互、數據監控等實時性要求不高的程序。
EtherCAT主站模塊運行在內核態,可支持一個或多個EtherCAT主站,且同時提供應用接口和設備接口。用戶通過應用接口訪問主站,通過設備接口連接設備到指定主站。EtherCAT的以太網設備驅動模塊通過主站設備接口與主站連接,EtherCAT設備協議可直接由以太網幀傳送,因而主站能同時並行處理EtherCAT數據幀和通用以太網通信。
在Linux上安裝EtherCAT主站程序,這里選擇EtherLab開發的IgH EtherCAT Master,首先下載主站安裝文件gHEtherLab.tar.bz2,下載文件后解壓縮進入含有Makefile文件的目錄安裝主站,輸入命令:
make ethercatMaster
make ethercatMasterinstall
sudo /etc/init.d/ethercat start
ethercat master
若最后兩條指令運行正常則說明主站安裝成功。
4.3 主站應用開發(LinuxCNC)
LinuxCNC是一款運行在Linux平台下的實時開源數控軟件。起源於美國國家標准與技術研究院的增強型運動控制器EMC (Enhanced Machine Controller)研究項目,用於機床的數控系統。經過十幾年的發展,LinuxCNC系統廣泛用於沖床、車床、3D打印機、激光切割機、等離子切割機、機器人手臂等領域。其主要優點有:提供多個標准化的用戶界面、用戶也可以采用自主開發的GUI、自帶G代碼解析器、支持伺服電機控制步進電機開環控制、運動控制器功能強大、支持非笛卡爾坐標運動系統、采用2.4或2.6的Linux內核支持RT-Linux或RTAI實時補丁。LinuxCNC源代碼可以免費下載,安裝在Linux系統上。LinuxCNC軟件架構如圖所示。
LinuxCNC是一個模塊化設計的軟件,大致可以分為以下四個主要模塊:運動控制器(EmcMot)、數字I/O控制器(EmcIO )、任務控制器(EmcTask )、圖形用戶界面(GUI)。
用戶操作界面負責接收用戶命令並反饋最新狀態;
任務控制器是整個系統的決策層,主要負責對各種命令進行決策分類、解析發送給不同的模塊;
運動控制器是實時刷新的,主要完成路徑規划、插值運算等;
數字I/O控制器負責處理I/O信號,通過NML消息與運動控制器通信,因為不同設備I/O各不相同,這時需要硬件抽象層HAL文件建立軟邏輯電路來控制實際I/O ;
- HAL
HAL硬件抽象層是LinuxCNC系統的關鍵技術之一,通過引入HAL機制,為用戶提供了統一的驅動開發接口,方便編寫驅動,還能利用配置文件將相應的HAL模塊連成一個復雜系統,方便數據傳遞。HAL模塊結構圖如圖所示。
EtherCAT主站驅動與LinuxCNC之間采用HAL機制進行通信,硬件抽象層將各個底層的硬件驅動、實時算法抽象出來,構成一個組件,組件是由函數、參數、輸入輸出引腳所組成,輸入信號包括來自LinuxCNC的控制信號、用戶配置信息,輸出信號包括提供給LinuxCNC的反饋量等。將編寫好的HAL模塊命令為ec.comp,編譯生成ec.ko,利用insmod命令將其安裝后就可以加載到線程中。
當HAL模塊啟動的時候,需要對變量進行初始化,但完成EtherCAT主站的初始化是更重要的,只有初始化了主站,設置好參數,建立起完整的通信網絡,才能進行接下來的周期數據傳輸,其中PDO為進程數據對象、SDO為服務數據對象。如圖為EtherCAT主站的初始化流程圖。
主站初始化完成后,LinuxCNC開始正常運行。LinuxCNC在每個控制周期通過硬件抽象層下發控制命令,並獲取從站設備反饋的信息。
- HAL周期任務流程圖如圖所示。
對於采用位置控制的伺服單元,HAL模塊每次都要計算出本控制周期的位移或目標點,然后通過EtherCAT總線發送到從站運動控制器;
然后從站運動控制器在每個控制周期上報編碼器位置增量和I/O狀態,HAL模塊計算出軸的實際位置后發送給LinuxCNC。
- UI界面
在Linux環境下開發用戶界面的語言有Python, C++等,圖形庫有QT, GTK等。由於控制界面運行於用戶態,實時性要求不高,同時兼顧開發難度和周期,本課題采用Python語言,結合PyQT圖形庫開發沖床控制界面。Python是一種面向對象的腳本語言,與其他語言相比,Python具有如下優點:面向對象、公開免費、跨平台可移植、功能強大、使用簡單、模塊豐富。QT是一個功能豐富廣泛使用的GUI圖形庫,可用於Windows, Linux等平台,具有很好的可移植性。PyQt是Python語言與Qt圖形庫相結合的產物,從而可以通過Python來使用Qt圖形庫,具有模塊豐富、跨平台和使用信號與槽機制的優點。數控界面調用LinuxCNC抽象出的Python接口與任務控制器通信,並監視LinuxCNC狀態信息和錯誤信息。
本課題沖床數控系統設計加工狀態、參數設置、警告與診斷和軟件設置四個狀態界面,四個狀態界面下一共分設13個子界面,各個界面之間可以通過按鈕進行切換,數控系統界面結構圖如圖所示。
系統的主界面由菜單欄、工作窗口、快捷工具欄和消息提示欄這四部分構成。菜單欄可以根據不同的操作需求切換不同的工作窗口,快捷工具欄是一些常用的快捷按鈕,消息提示欄是提示快捷按鈕內容和顯示系統運行狀況、錯誤信息匯報的區域,如圖所示。
2.參數設置界面:參數設置界面用於設置控制系統及機械的參數,分設了系統參數設置、運動軸參數設置及模具庫參數設置這3個子界面。下面主要講解運動軸參數,運動軸參數設置界面如圖所示。
3.警告與診斷界面:息記錄界面這2個子界面。警告與診斷界面下設有警告信息診斷界面、歷史警告信,如圖所示。
4.軟件設置界面:軟件設置界面用於設置軟件與外部設備的通訊參數和顯示軟件的版本等信息,設有軟件信息、外部設備通訊設置及高級設置這3個子界面。下面講解外部設備通訊設置界面,如圖所示。
4.4 ET1200
EtherCAT從站控制器ESC(EtherCAT Slave Controller)是由德國BECKHOFF自動化有限公司提供的,包括ASIC芯片和IP-Core,實現EtherCAT數據鏈路層協議。目前ASIC從站控制專用芯片有ET1100和ET1200,也可以使用IP-Core將EtherCAT通信功能集成到設備控制FPGA當中,並根據需要配置功能和規模。圖為ET1200從站控制器結構圖:
ET1200最多支持3個EtherCAT物理通信端口:
- 其中一個可以作為MII接口,用於與物理層PHY芯片交換數據。因為EtherCAT並不定義該接口的物理層,MII接口也是和傳輸介質無關接口,因此這種接口方式下的數據鏈路層與物理層徹底隔開,從而以太網能夠選用任意的傳輸介質,包括無線電和光纖。
- ET1200其余兩個接口均為EBUS接口,EBUS是德國倍福公司使用的LVDS(Low Voltage Differental Signaling)標准定義的數據傳輸標准,通信速率高達100Mbit/s,能與ESC芯片直接相連,減小PCB板體積和降低成本。EBUS的傳輸距離最大為10m。
- ET1200提供的物理設備接口有數字I/O和SPI兩種,選用ARM作為從站微處理器是一般通過SPI接口訪問ET1200。
- ET1200采用3.3 V供電,最大工作電流約為70mA,芯片發熱量很小。
ET1200的主要技術指標:
ET1200從站控制器使用外部EEPROM來存儲從站設備信息,下表是EEPROM存儲數據分布示意圖,其中0~63為基本信息,每次ESC啟動時都會從EEPROM中讀取其中的配置信息。
4.5 從站程序設計
運動控制器軟件設計包括ARM主控制程序及外圍電路驅動程序,外圍驅動程序包括ET 1200驅動程序、AD采樣芯片驅動程序、RS232驅動程序、SPI串行總線、FSMC並行總線驅動程序以及MCX314加減速控制程序設計等。運動控制器程序在STM32F427這款MCU上使用C語言開發,開發環境為Windows 7下的Keil uVision_5集成開發環境。
ARM主控制程序是運動控制器的核心,需要完成各個函數初始化、參數配置、數據處理、邏輯流程控制及控制算法運算等,圖為支持查詢模式(自由運行模式)的流程圖。
ARM芯片在上電后不久進入main()函數,在main()函數中最先完成一系列系統正常運行相關函數的初始化,如延時初始化函數、LED初始化函數、串口初始化函數、中斷向量表配置初始化函數,然后完成SPI初始化函數、定時器初始化函數、EtherCAT初始化函數以及FSMC總線初始化函數等。
接着完成通信初始化工作,查詢主站的狀態控制寄存器,讀取事件請求寄存器0x220、相關配置寄存器,啟動或關斷相關通訊服務。
在完成以上工作后就進入主循環while(1),進行應用層任務處理和周期性數據處理,周期性數據處理和應用層任務處理有查詢模式(自由運行模式)或同步模式(中斷模式)這兩種,本程序采用同步運行模式,所以在主循環中主要處理非周期性的任務。同步運行模式下周期性數據在中斷服務程序中處理。
void main(void)
{
//--一執行一系列初始化函數--一
Delay_Init(168); //初始化延時函數
Led_Init(); //初始化LED端口
Uart_Init(9600); //初始化串口
AD7606_Init(); //初始化AD采樣芯片
NVIC_Config(); //初始化STM32時鍾及外設
SPI_Config(); //ET 1200用SPI總線初始化配置
Timer2_Init_ Config(); //Timer2初始化配置
ET 1200_GPIO_Config(); //ET 1200 GPIO初始化配置
ECAT_Init(); //初始化通信變量和ESC寄存器
FSMC_Init(); //FSMC並行總線初始化
//--一初始化完成,進入主循環--一
while(1)
{
ET1200_AlEvent=pEsc->AlEvent; //讀應用層事件請求寄存器,
// ET1200_AlEvent為全局變量,在頭文件中定義
if(!ET1200_IntEnabled) //處於自由運行模式(ET 1200_ IntEnabled -=0
//處於同步模式(ET1200 IntEnabled==1)
free_ run(); //處於自由運行模式時,進行周期性數據查詢
el_event(); //應用層任務處理,包括狀態機和非周期性數據等
}
}
從站設備可以運行於同步模式或自由運行模式,在自由運行模式中使用查詢方式處理周期性過程數據,在同步模式使用中斷服務程序處理性數據。
變量ET1200 IntEnabled來控制運行模式。ET1200 IntEnabled為1時,使用同步模式,ET1200 IntEnabled為0時,使用自由運行模式。
根據主站對SM的配置,在函數、參數初始化階段來初始化變量ET1200_ IntEnabled,確定當前的運行模式。
本程序選擇同步模式,以下將按照該模式講解一個中斷服務數據處理的工作流程,如圖所示。
4.6 實驗測試
實驗測試平台由一台PC機、一套自主研發的沖床數控系統軟件、一台自主研發的五軸高速運動控制器、一套單軸絲杠滑台、一套二維伺服平台、一套四軸同步測試架組成。
實驗過程中需要注意,因為目前運動控制器專為數控沖床設計,僅保留1個M II接口連接主站,且設計最多連接軸數為五軸,故連接四軸同步測試架時不能接單軸絲杠滑台和二維伺服平台;測試過程中工業PC機和顯示器使用筆記本代替。在平台上測試通過后將控制系統接入到LX230B型數控轉塔沖床上進行測試和參數調試,最終成功開發出30T數控轉塔沖床用高速運動控制系統。
- 基本通信功能測試
EtherCAT主從站基本通信功能測試時首先按圖所示,使用網線將PC機與從站運動控制器連接起來后,在數控軟件通信設置的外部設備通信設置中找到運動控制器連接狀態,點擊重新連接。使用Wireshark抓包工具抓取連接過程中主站廣播的數據包,最終連接成功時運動控制器連接狀態指示燈變為ON,從站狀態變為操作狀態(OP),從站狀態機啟動正常,如圖所示。
由圖可知該實驗中EtherCAT報文的格式。報文總長度60個字節,前14個字節是以太網數據幀頭,包括6字節的目的地址(ff:ff:ff:ff:ff:ff ) } 6字節的源地址(78:a5:04:c0:be:6f)} 2字節的幀類型(Ox88a4);接着是2字節的EtherCAT頭,包括11位數據長度(Ox02a)}1位保留位(Ox0)}4位類型位(0x1);然后是EtherCAT數據,數據為2個子報文,每個子報文包含10字節子報文頭,16字節數據,2字節WKC(工作計數器)。Wireshark抓取的報文與2.1節中的EtherCAT幀格式一
致,從而主從站之間實現了基本通信。
- 控制系統基本功能測試
控制系統基本功能測試是驗證系統軟硬件功能正常的重要實驗,該項測試在單軸絲杠滑台
完成,連接好PC機、運動控制器和單軸絲杠滑台,如圖所示。在數控軟件的手動加工中對輸出I/O如伺服使能、緊急停止,回零點如X軸回零、Y軸回零,單軸位移控制如X+, X-, Y+, Y-進行測試,並觀察滑台的運動情況和伺服驅動器面板顯示來判斷各項功能是否正常。經測試,軟件上的相關按鈕都工作正常,五個軸的接口、I/O接口工作正常,產生的脈沖精度誤差為0。故數控系統軟硬件基本功能測試通過。
- G代碼解釋、圓弧插補測試
通過二維伺服運動平台圓弧插補實驗測試運動控制系統G代碼解釋、圓弧插補等功能。該項測試主要在二維伺服平台上完成,連接PC機、運動控制器和二維伺服平台,如圖所示,通過數控系統控制二維伺服運動平台的X軸和Y軸電機做圓弧插補,利用上方橫梁固定的筆桿記錄二維平台上白紙相對運動下的軌跡。二維平台中的兩組伺服機絲杠的參數完全一致,絲杠螺距為20mm,設定伺服驅動器驅動電機旋轉一圈為2000個脈沖,可知絲杠走1 mm需要100個脈沖,由此設置數控軟件中的X, Y軸脈沖當量都為1000。
使用AutoCAD設計一個直徑D為80mm的圓周,如圖所示,繪制完成后保存為.dxf格式,然后使用一體化飯金CAD/CAM編程軟件cncKad將.dxf格式的圖紙轉化為沖床數控軟件所需的.PNC文件,即G代碼。然后將G代碼文件導入到數控軟件中,預加工仿真運行無誤后啟動伺服,進行實際加工,最終得到實際繪制效果圖如圖_5 -6所示。繪制出的圓周尺寸精確,控制系統通過圓弧插補測試。
- 多軸運動的同步性能測試
多軸同步測試實驗用來測試運動控制系統多軸運動的同步性能。該項測試主要利用四軸同步測試架完成,如圖所示,測試架上固定安裝有A, B, C, D共4組電機和驅動器。將電機驅動器與運動控制連接,控制器通過EtherCAT總線與PC機連接,打開數控軟件,在加工狀態中選擇手動加工,控制伺服電機A, B,C, D同時做順時針運動旋轉,通過長時間運行測試觀察軸上4個光盤指向分析電機運動的同步性。經過長時間測試觀察后,電機按鈕停止伺服軸轉動,可以看到4個電機指向同一方向,驅動器面板顯示脈沖數也一致。
- 實際產品應用
在上一節的一系列實驗后,控制系統的各項功能都順利通過測試,接下來把開發好的控制系統制作成便於使用的操作台和控制櫃接入到LX230B型30T的數控轉塔沖床上,取代原有的控制系統,操作台和控制櫃如圖所示。該沖床選用安川 -7系列AC伺服電機、 -V系列AC伺服驅動器。首先調試好伺服電機與伺服驅動器之間構成電流環、速度環的PID參數,讓閉環的性能達到較好水平,再接入控制系統,其中編碼器分頻脈沖輸出C相信號在軸回原點時使用。
為觀測控制系統在數控轉塔沖床上的應用效果,需要采用非接觸測量儀測量板材運動過程中的振動曲線。根據實驗室現有的條件,采用由日本Keyence公司生產的LK-G400型激光位移傳感器和LK-GD_500型控制器作為非接觸式測量工具。
LK-G400的主要技術參數為:使用距離為400mm,測量范圍為士100mm,取樣率20us,鋇量精度為gum o LK-GD_500型控制器主要參數為:最小顯示單位為O.Olum,顯示周期10次/秒。
在沖床大板材(1200mm X 2_SOOmm)上選取測試點W點,如圖所示。采用S型曲線加減速規划,加速度g為6,控制板材在X軸上高速移動lOmm,運動控制器輸出的PULS(脈沖)信號局部波形如圖所示。
使用軟件LK-Navigator讀取傳感器測量的數據,如圖所示。由圖分析可知調節時間為130ms(按士0._5%誤差帶)、穩態誤差士0.0_Smm,各項指標良好,達到工業應用要求。
5. 工具
5.1 TwinCAT
EtherCAT主站方案實現一般都采用倍福公司的TwinCAT, TwinCAT實現了強大的EtherCAT主站功能,從站XML表配置、EEPROM配置文件操作、掃描EtherCAT從站等,下圖為使用TwinCAT開發沖床數控系統的過程。因為TwinCAT是基於Windows風格,擁有較好的人機交互界面,功能強大,非常適合上位機控制窗口的開發,但TwinCAT運行於Windows環境下
,實時性很差,而且TwinCAT和Windows系統需要付費才能商業化應用,價格較高。
在學習EtherCAT的時候,TwinCAT是必須要學習的。TwinCAT軟件其功能強大,可以寫plc程序,可以寫圖形化界面,可以觀察波形等等。初次學習時我就參考TwinCAT 3運動控制教程和TwinCAT NC PTP實用教程,把TwinCAT 3中界面的一些功能都試了一遍。另外用功能塊學着寫了凸輪、齒輪的程序,並用Visualization圖形化界面來控制。(在學習TwinCAT時,要充分利用好幫助文檔)。
因為我的任務是做一致性測試,所以關注點大部分放在了對協議的了解上,涉及到一致性測試的文檔有ETF7000.2、ETG7010。具體可以去ETG官網上查找相關資料。做一致性測試時需要用到ET9400,這款軟件不是免費的。目前還沒開始測這部分。
對於帶有EtherCAT伺服驅動器的性能的測試,用TwinCAT帶着簡單測過csp、csv、cst這三種模式。如果想要系統的測試驅動器所支持的操作模式,必須對驅動器的相關知識有一定的了解。另外就是對對象字典中對象充分了解。TwinCAT中的Process Data和CoE-Online界面是很重要的。這點我也沒有完全掌握。沒有以太網基礎,對協議沒有了解,直接接觸EtherCAT這條學習之路感覺很艱難!
5.2 LinuxCNC
PC機部分軟件以LinuxCNC為基礎,往下LinuxCNC通過HAL(硬件抽象層)與EtherCAT主站驅動之間進行通信連接,然后EtherCAT主站通過以太網線給從站運動控制器發控制命令;往上利用LinuxCNC提供的Python調用接口和人機界面通信,數控系統人機界面采用PyQt開發;由於LinuxCNC需要運行實時任務,需要將普通操作系統進行改造。因此,目前的主要工作是對Linux系統進行實時性改造、安裝EtherCAT主站、編寫HAL模塊、編寫人機界面。
5.3 開源的EtherCAT Master
EtherCAT的主站開發是基於EtherCAT機器人控制系統的開發中非常重要的環節。目前常見開源的主站代碼為的RT-LAB開發的SOEM (Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master。使用起來SOEM的簡單一些,而the IgH EtherCAT® Master更復雜一些,但對EtherCAT的實現更為完整。
具體比較如下表: