Ethernet over EtherCAT (EoE) 是一種通信協議,它允許通過網路連接訪問從站設備的參數,以便配置和診斷從站設備。EoE 允許將常見的互聯網協議(如 HTTP、FTP 等)的數據插入到 EtherCAT 協議數據中,而不影響 EtherCAT 過程數據 ,那ETherCAT主站... ...
版權聲明:本文為本文為博主原創文章,轉載請註明出處。如有問題,歡迎指正。博客地址:https://www.cnblogs.com/wsg1100/
目錄這篇文章的標題雖然是關於EtherCAT EOE,但其實主要內容是關於整個EOE網路結構,屬於電腦網路原理。而EtherCAT EoE只是簡單介紹,並不是文章的重點。需要註意的是,我們的描述主要基於Linux操作系統,但在Windows或其他RTOS上的原理也是類似的,大家可以自行類比遷移。
為了避免混淆,文中將會使用"EtherNet"或"乙太網"來指代TCP/IP網路,以區分EtherCAT網路和普通的乙太網。
一、EoE
EtherCAT是一種實時乙太網匯流排協議,是以乙太網為基礎的現場匯流排系統,EtherCAT已成為工業自動化領域中最受歡迎的匯流排協議之一,被廣泛應用於機器人、自動化生產線、運動控制等場景。
EtherCAT使用標準的IEEE802.3乙太網幀,單從乙太網角度看,ETherCAT是二層網路,常說的MAC層,乙太網幀頭使用乙太網類型0x88A4
來和其他乙太網幀相區別。
一個完整EtherCAT幀如下所示。
EtherCAT採用主從結構進行訪問控制,通信關係始終由主站發起。主站使用標準的乙太網介面,從站使用專門的ETherCAT從站控制器ESC(Ethercat Slave Controller)晶元來處理子報文。
整個EtherCAT網路形成一個環狀,主站向各個從站發送EtherCAT乙太網幀,該幀的數據區包含了多個ETherCAT子報文。這些子報文包含地址信息,用於定位每個從站,主站通過這些子報文與每個從站進行交互。每個從站ESC可以從數據幀中提取或插入數據。
工業通信必須滿足不同要求的數據傳輸特性,這些數據大致可分為兩類,一類是對通信時間要求嚴格的過程數據(實時數據),另一類是對時間要求相對不重要的非過程數據(非實時數據),如參數數據、診斷數據、批量數據等,EtherCAT支持多種服務和協議來滿足這些不同的要求。支撐這兩類數據的底層硬體主要是ESC的郵箱(SM)和FMMU。
因為ETherCAT修改了原來的二層乙太網網路,為了實現從站接入普通乙太網,有了EoE。EOE是EtherNet Over EtherCAT(EtherCAT上的乙太網)的縮寫,它是一種將標準乙太網幀通過EtherCAT傳輸的解決方案。使用EOE技術,可以將EtherCAT從站接入互聯網,並使其能夠與其他設備通過互聯網進行交互,具體能用通過從站EtherNet來做什麼,就看各位的想象力了。
這裡說到郵箱,簡答介紹一下郵箱報文的結構,詳細的請查閱ETG相關文檔
EOE使用郵箱協議傳輸,ETherCAT中不僅有EOE,還有CoE(CANopen Over EtherCAT)、FoE(File Over EtherCAT)、SoE(SERCOR Over EtherCAT)、VoE等非實時數據通信,其底層都是是通過EtherCAT郵箱交互數據。主站通過一個個ETherCAT子報文讀寫郵箱,不同的協議數據類型通過郵箱(mailbox)協議來區別,郵箱協議數據在子報文數據區中,結構如下。
郵箱協議數據包含郵箱頭和郵箱數據,郵箱頭主要表示郵箱數據區的數據類型,結構如下:
在郵箱數據區中,進一步包含有COE、EOE、FOE等協議規範的數據。以EOE為例,通常情況下,EtherNet幀的大小為1514/1518位元組(不包括前導碼和FCS校驗)。但從站的郵箱大小有限,每次傳輸只能傳輸幾百位元組的數據。因此,在通過郵箱協議傳輸EtherNet幀之前,需要將其分成多個段傳輸,這就需要一定的協議和規範。此外,從站EtherNet網路還設計MAC、IP、網關地址等參數配置,也需要通過郵箱進行配置,統一需要一定的協議和規範。因此,ETG定義了EoE服務規範來應對這些需求,它被放置在郵箱數據區中。整個ETherCAT數據幀就和TCP/IP網路幀一樣分層,像套娃一樣,一層協議套一層協議。其他的COE、FOE、VOE等服務規範也類似。
二、EoE服務規範
按照ETG官方文檔中對EoE應用服務的定義,EoE服務請求規範如下:
- 初始化EoE請求(Initiate EoE),部分從站需要主站發送Initiate EoE來觸發從站初始化從站EOE,如網路協議棧初始化等等,請求-響應模式(主站發起請求,然後查詢從站響應,根據響應確定從站是否執行成功)。
request:EOE frameType 0x02
response: EOE frameType 0x03
- EoE幀傳輸請求(EoE Fragment),用於傳輸主站與從站的標準乙太網數據,只有請求,沒有響應。
request:EOE frameType 0x00
- 設置IP參數請求(Set IP Parameter),設置從站的IP地址、網關等配置信息,請求-響應模式。
request:EOE frameType 0x02
response: EOE frameType 0x03
- 設置MAC過濾器請求(Set MAC Filter),請求-響應模式。暫未見到應用場景。
request:EOE frameType 0x04
response: EOE frameType 0x05
以上均是通過郵箱協議來與從站交互,關於EOE服務的數據結構規範大家可參考ETG官方文檔《ETG1000.6.應用層協議規範》5.7小節,這裡不再詳細貼出。
EtherCAT主站如何提供EoE服務?
通過上面對EoE的描述,EtherCAT主站提供EOE功能有:
- 為每個從站配置IP、MAC、網關等IP參數。
- 外部發送給從站的EtherNet 幀,需要主站通過EoE Fragment發送給從站;同時主站要接收從站發送的EtherNet 幀,然後向外發送。
- 可選的MAC過濾器請求、初始化EoE請求。
Set IP Parameter request
、Set MAC Filter request
與 SDO upload/download
請求機制類似,EtherCAT主站內部通過一系列狀態機來為應用層提供這些服務。不是本文的重點,具體大家可參考開源EtherCAT協議棧(igh、soem...雖然有些bug)源碼和文檔,在此不再說明。
最重要的是,EtherCAT主站需要提供一個基於ETherCAT郵箱協議的EtherNet“物理層”通道,用於從站與PLC外部網路之間的通信。本文關註的是網路層面部分,即如何處理EtherNet幀並傳遞給從站,以及從站如何處理並向外界發送數據。對於EtherCAT主站如何進行郵箱通信並不是本文的重點,自行查閱相關資料。
三、EoE網路
EOE網路
一個典型的EOE網路通常如下圖所示:PLC(或其他運行EtherCAT主站的主機)至少配備兩個網卡。其中,一個網卡完全由EtherCAT主站管理,連接著EtherCAT從站(假設有64個從站,且全部支持EOE)。另一個網卡則是PLC的普通乙太網網卡,用於連接到外部網路。
基於這個結構,我們考慮如下問題(本文暫且關註基本問題):
- 如何將各個從站的網路和外部網路連接起來?
- 外部網路作為服務端如何才能連接?
- 從站作為服務端時,客戶端在外部網路,如何才能連接?
- 如何實現EtherCAT網路中,從站與從站之間通過EtherNet相互通信?
- ETherCAT網路中的從站會經常拔插(創建、刪除)如何靈活管理?
- 從站作為服務端接入外部網路,如何保障基本安全?
在解決這些問題之前,我們再次看看這個網路。首先,從站EOE就像一個完整的EtherNet設備。ESC EOE郵箱相當於網卡,每個EOE從站則相當於網卡+TCP/IP協議棧。在TCP/IP協議棧的上層,是具體的Ethernet應用程式(如TFTP、HTTP等)。
從PLC的角度看,PLC與這64個EOE從站直接'連接',只不過這64個網口共用一條EtherCAT網線作為匯流排,說到這大家有沒有聯想到什麼?
這種網路結構讓人想起了在電腦上創建虛擬機時使用的網路結構,就和我們在電腦上創建幾個虛擬機的網路結構是一樣的!看下麵這個圖你就明白了。
網路結構上,PLC中的EtherCAT EOE網路與我們在電腦上創建多個虛擬機的網路結構非常相似!PLC相當於我們的物理機,而EOE從站則相當於物理機里創建的虛擬機。每個虛擬機都有自己的網卡,並且安裝有操作系統,每個虛擬機對外要互聯互通。
在自己電腦上創建虛擬機只是多種虛擬化技術和應用場景之一。
因此,EtherCAT主站EOE網路的工作機制與虛擬化場景下的網路工作機制類似,EtherCAT主站EOE網路問題可以使用類似虛擬化場景下的網路解決方式去解決。不同之處在於數量上存在差異,由於ETherCAT網路有多個ETherCAT從站,需要靈活管理(如創建、刪除),在EtherCAT上會根據應用場景簡化處理。
虛擬化網路底層原理是電腦網路技術和操作系統技術,這方面的知識這部分內容留到下篇文章(淺談EtherCAT主站EOE(下)-虛擬化網路與EOE網路)介紹。
作者:wsg1100 出處:http://www.cnblogs.com/wsg1100/ 本文版權歸作者和博客園共有,歡迎轉載,但必須給出原文鏈接,並保留此段聲明,否則保留追究法律責任的權利。