版權宣告:本文為本文為博主原創文章,轉載請註明出處。如有問題,歡迎指正。部落格地址:https://www.cnblogs.com/wsg1100/
這篇文章的標題雖然是關於EtherCAT EOE,但其實主要內容是關於整個EOE網路結構,屬於計算機網路原理。而EtherCAT EoE只是簡單介紹,並不是文章的重點。需要注意的是,我們的描述主要基於Linux作業系統,但在Windows或其他RTOS上的原理也是類似的,大家可以自行類比遷移。
為了避免混淆,文中將會使用"EtherNet"或"乙太網"來指代TCP/IP網路,以區分EtherCAT網路和普通的乙太網。
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等服務規範也類似。
按照ETG官方檔案中對EoE應用服務的定義,EoE服務請求規範如下:
request:EOE frameType 0x02
response: EOE frameType 0x03
request:EOE frameType 0x00
request:EOE frameType 0x02
response: EOE frameType 0x03
request:EOE frameType 0x04
response: EOE frameType 0x05
以上均是通過郵箱協定來與從站互動,關於EOE服務的資料結構規範大家可參考ETG官方檔案《ETG1000.6.應用層協定規範》5.7小節,這裡不再詳細貼出。
通過上面對EoE的描述,EtherCAT主站提供EOE功能有:
Set IP Parameter request
、Set MAC Filter request
與 SDO upload/download
請求機制類似,EtherCAT主站內部通過一系列狀態機來為應用層提供這些服務。不是本文的重點,具體大家可參考開源EtherCAT協定棧(igh、soem...雖然有些bug)原始碼和檔案,在此不再說明。
最重要的是,EtherCAT主站需要提供一個基於ETherCAT郵箱協定的EtherNet「物理層」通道,用於從站與PLC外部網路之間的通訊。本文關注的是網路層面部分,即如何處理EtherNet幀並傳遞給從站,以及從站如何處理並向外界傳送資料。對於EtherCAT主站如何進行郵箱通訊並不是本文的重點,自行查閱相關資料。
一個典型的EOE網路通常如下圖所示:PLC(或其他執行EtherCAT主站的主機)至少配備兩個網路卡。其中,一個網路卡完全由EtherCAT主站管理,連線著EtherCAT從站(假設有64個從站且全部支援EOE)。另一個網路卡則是PLC的普通乙太網網路卡,用於連線到外部網路。
基於這個結構,我們考慮如下問題(本文暫且關注基本問題):
在解決這些問題之前,我們再次看看這個網路。首先,從站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網路)介紹。