發(fā) EtherCAT 主站(一):EtherCAT 為什么能成為工業(yè)實(shí)時(shí)通信的主流?)
從零開(kāi)發(fā) EtherCAT 主站一EtherCAT 為什么能成為工業(yè)實(shí)時(shí)通信的主流文章目錄從零開(kāi)發(fā) EtherCAT 主站一EtherCAT 為什么能成為工業(yè)實(shí)時(shí)通信的主流前言一、工業(yè)現(xiàn)場(chǎng)總線(xiàn)的發(fā)展歷程1.1 第一代串口通信時(shí)代1.2 第二代現(xiàn)場(chǎng)總線(xiàn)時(shí)代1.3 第三代工業(yè)實(shí)時(shí)以太網(wǎng)時(shí)代二、為什么普通 Ethernet 無(wú)法滿(mǎn)足工業(yè)實(shí)時(shí)控制2.1 普通 Ethernet 的通信方式2.2 普通交換機(jī)也會(huì)帶來(lái)延遲三、EtherCAT 為什么這么快3.1 什么是 On-The-Fly3.2 一個(gè)數(shù)據(jù)幀控制整個(gè)網(wǎng)絡(luò)3.3 ESC 是 EtherCAT 的核心四、EtherCAT 的實(shí)時(shí)性到底來(lái)自哪里4.1 全雙工 Ethernet4.2 硬件直接完成數(shù)據(jù)交換4.3 Working CounterWKC五、EtherCAT 與 CAN/CAN FD 有什么區(qū)別六、總結(jié)系列文章導(dǎo)航前言隨著工業(yè)自動(dòng)化不斷向智能制造、高精度運(yùn)動(dòng)控制和多軸協(xié)同方向發(fā)展傳統(tǒng)現(xiàn)場(chǎng)總線(xiàn)已經(jīng)逐漸難以滿(mǎn)足越來(lái)越高的實(shí)時(shí)性要求。尤其是在機(jī)器人、數(shù)控機(jī)床、半導(dǎo)體設(shè)備、新能源裝備等領(lǐng)域一個(gè)控制器往往需要同時(shí)管理幾十甚至上百個(gè)從站設(shè)備并且要求數(shù)據(jù)能夠在毫秒甚至微秒級(jí)完成同步。如果你之前開(kāi)發(fā)過(guò)CAN/CAN FD、CANopen、Modbus等通信協(xié)議那么學(xué)習(xí) EtherCAT 會(huì)更加容易因?yàn)樗鼈兌际枪I(yè)通信的重要組成部分。但當(dāng)你真正接觸 EtherCAT 后會(huì)發(fā)現(xiàn)它的設(shè)計(jì)理念與傳統(tǒng)總線(xiàn)有著本質(zhì)區(qū)別。本系列文章將基于SOEMSimple Open EtherCAT Master Qt從零開(kāi)發(fā)一個(gè)完整的 EtherCAT 主站軟件包括EtherCAT 協(xié)議原理SOEM 框架源碼分析PDO 實(shí)時(shí)通信SDO 參數(shù)讀寫(xiě)FoE 固件升級(jí)Qt 主站軟件開(kāi)發(fā)完整項(xiàng)目實(shí)戰(zhàn)作為系列第一篇我們先回答一個(gè)最基礎(chǔ)的問(wèn)題EtherCAT 為什么能夠成為工業(yè)實(shí)時(shí)通信領(lǐng)域的主流協(xié)議一、工業(yè)現(xiàn)場(chǎng)總線(xiàn)的發(fā)展歷程工業(yè)通信的發(fā)展并不是一蹴而就而是隨著工業(yè)自動(dòng)化需求不斷提升逐漸演進(jìn)的。1.1 第一代串口通信時(shí)代早期工業(yè)設(shè)備主要采用RS232和RS485進(jìn)行通信。它們具有結(jié)構(gòu)簡(jiǎn)單、成本低、傳輸距離遠(yuǎn)等優(yōu)點(diǎn)因此廣泛應(yīng)用于 PLC、儀器儀表以及工業(yè)控制設(shè)備。但隨著設(shè)備數(shù)量不斷增加它們的缺點(diǎn)也越來(lái)越明顯通信速率較低擴(kuò)展能力有限多節(jié)點(diǎn)管理復(fù)雜實(shí)時(shí)性能不足。因此僅依靠串口通信已經(jīng)無(wú)法滿(mǎn)足現(xiàn)代工業(yè)控制需求。1.2 第二代現(xiàn)場(chǎng)總線(xiàn)時(shí)代隨后工業(yè)領(lǐng)域迎來(lái)了現(xiàn)場(chǎng)總線(xiàn)的發(fā)展階段。典型協(xié)議包括CANCAN FDCANopenProfibusDeviceNet這一階段最大的特點(diǎn)就是支持多節(jié)點(diǎn)總線(xiàn)通信。例如 CAN 總線(xiàn)通過(guò)消息仲裁機(jī)制讓多個(gè)節(jié)點(diǎn)共享一條總線(xiàn)大大降低了布線(xiàn)成本同時(shí)具有較高的可靠性。不過(guò)當(dāng)系統(tǒng)開(kāi)始出現(xiàn)以下需求時(shí)傳統(tǒng)現(xiàn)場(chǎng)總線(xiàn)逐漸暴露出性能瓶頸數(shù)十個(gè)伺服同時(shí)控制上百個(gè) IO 點(diǎn)實(shí)時(shí)刷新多軸同步控制亞毫秒級(jí)通信周期。1.3 第三代工業(yè)實(shí)時(shí)以太網(wǎng)時(shí)代為了兼顧高帶寬與高實(shí)時(shí)性工業(yè)通信逐漸進(jìn)入實(shí)時(shí)以太網(wǎng)時(shí)代。典型協(xié)議包括EtherCATPROFINETEtherNet/IPPOWERLINKSERCOS III其中EtherCAT 由于采用了完全不同的數(shù)據(jù)處理方式在運(yùn)動(dòng)控制領(lǐng)域逐漸成為主流解決方案。二、為什么普通 Ethernet 無(wú)法滿(mǎn)足工業(yè)實(shí)時(shí)控制很多初學(xué)者都會(huì)產(chǎn)生一個(gè)疑問(wèn)EtherCAT 本質(zhì)上也是 Ethernet它為什么還需要設(shè)計(jì)一套新的協(xié)議答案其實(shí)很簡(jiǎn)單普通 Ethernet 并不是為實(shí)時(shí)控制而設(shè)計(jì)的。2.1 普通 Ethernet 的通信方式假設(shè)主站需要向多個(gè)從站發(fā)送控制命令。傳統(tǒng) Ethernet 的通信流程通常如下Master │ ├── Frame → Slave1 ├── Frame → Slave2 ├── Frame → Slave3 ├── ... └── Frame → SlaveN每一個(gè)設(shè)備都需要單獨(dú)發(fā)送一個(gè)數(shù)據(jù)幀。隨著從站數(shù)量不斷增加Frame 數(shù)量越來(lái)越多CPU 處理負(fù)擔(dān)越來(lái)越大網(wǎng)絡(luò)帶寬不斷被占用通信周期越來(lái)越長(zhǎng)。因此很難滿(mǎn)足高實(shí)時(shí)控制需求。2.2 普通交換機(jī)也會(huì)帶來(lái)延遲普通 Ethernet 網(wǎng)絡(luò)中的交換機(jī)需要經(jīng)歷接收完整數(shù)據(jù)幀解析 MAC 地址查找轉(zhuǎn)發(fā)表再重新發(fā)送。整個(gè)過(guò)程都會(huì)引入一定延遲。對(duì)于普通辦公網(wǎng)絡(luò)來(lái)說(shuō)這點(diǎn)延遲幾乎可以忽略。但對(duì)于250μs、125μs 甚至更短周期的運(yùn)動(dòng)控制系統(tǒng)來(lái)說(shuō)這種延遲已經(jīng)無(wú)法接受。三、EtherCAT 為什么這么快EtherCAT 最大的創(chuàng)新就在于一句話(huà)數(shù)據(jù)幀經(jīng)過(guò)從站時(shí)從站即可完成數(shù)據(jù)讀寫(xiě)而無(wú)需等待整個(gè)數(shù)據(jù)幀接收完成。這就是著名的On-The-Fly邊經(jīng)過(guò)邊處理技術(shù)。3.1 什么是 On-The-Fly傳統(tǒng) Ethernet接收完整數(shù)據(jù)幀 ↓ CPU 解析數(shù)據(jù) ↓ 重新發(fā)送數(shù)據(jù)幀EtherCAT數(shù)據(jù)幀進(jìn)入 ESC ↓ 讀取屬于自己的數(shù)據(jù) ↓ 寫(xiě)入返回?cái)?shù)據(jù) ↓ 立即繼續(xù)轉(zhuǎn)發(fā)整個(gè)過(guò)程由EtherCAT Slave ControllerESC在硬件層完成。CPU 幾乎無(wú)需參與實(shí)時(shí)數(shù)據(jù)交換。這也是 EtherCAT 能夠?qū)崿F(xiàn)極低通信延遲的重要原因。3.2 一個(gè)數(shù)據(jù)幀控制整個(gè)網(wǎng)絡(luò)傳統(tǒng) EthernetMaster ├── Frame1 → Slave1 ├── Frame2 → Slave2 ├── Frame3 → Slave3 └── ...EtherCATMaster │ ▼ 一個(gè) EtherCAT Frame │ ▼ Slave1 │ ▼ Slave2 │ ▼ Slave3 │ ... │ ▼ 返回 Master整個(gè)網(wǎng)絡(luò)的數(shù)據(jù)交換通常只需要一個(gè) EtherCAT Frame。相比傳統(tǒng) Ethernet大大減少了通信開(kāi)銷(xiāo)。3.3 ESC 是 EtherCAT 的核心EtherCAT 從站內(nèi)部都會(huì)集成一個(gè)ESCEtherCAT Slave Controller。ESC 的主要職責(zé)包括識(shí)別屬于自己的數(shù)據(jù)修改返回?cái)?shù)據(jù)轉(zhuǎn)發(fā)數(shù)據(jù)幀管理 Mailbox管理同步管理器SyncManager管理 FMMU 映射。可以說(shuō)ESC 才是真正實(shí)現(xiàn) EtherCAT 高實(shí)時(shí)性的核心硬件。四、EtherCAT 的實(shí)時(shí)性到底來(lái)自哪里很多資料都會(huì)說(shuō)EtherCAT 實(shí)時(shí)性高。但真正的原因其實(shí)來(lái)自多個(gè)方面。4.1 全雙工 EthernetEtherCAT 使用標(biāo)準(zhǔn) 100 Mbps 全雙工以太網(wǎng)。相比傳統(tǒng)總線(xiàn)帶寬更高不需要總線(xiàn)仲裁不存在節(jié)點(diǎn)競(jìng)爭(zhēng)發(fā)送的問(wèn)題。4.2 硬件直接完成數(shù)據(jù)交換傳統(tǒng)通信PHY ↓ MAC ↓ CPU ↓ 協(xié)議棧 ↓ 應(yīng)用程序EtherCATPHY ↓ ESC ↓ DPRAM實(shí)時(shí)數(shù)據(jù)無(wú)需經(jīng)過(guò)復(fù)雜的軟件協(xié)議棧因此能夠獲得更低延遲。4.3 Working CounterWKCEtherCAT 數(shù)據(jù)報(bào)中包含Working CounterWKC。每經(jīng)過(guò)一個(gè)成功處理數(shù)據(jù)報(bào)的從站W(wǎng)KC 都會(huì)增加。最終主站只需要檢查 WKC 是否符合預(yù)期就能夠快速判斷是否所有從站都正常工作是否存在掉線(xiàn)設(shè)備是否發(fā)生通信異常。這一機(jī)制相比逐個(gè)查詢(xún)?cè)O(shè)備狀態(tài)更加高效。后續(xù)我們會(huì)專(zhuān)門(mén)用一篇文章詳細(xì)介紹 WKC 的工作原理。五、EtherCAT 與 CAN/CAN FD 有什么區(qū)別很多嵌入式開(kāi)發(fā)工程師都是從 CAN 開(kāi)始接觸工業(yè)通信因此這里做一個(gè)簡(jiǎn)單對(duì)比。對(duì)比項(xiàng)目CAN/CAN FDEtherCAT通信介質(zhì)CAN 總線(xiàn)標(biāo)準(zhǔn)以太網(wǎng)最大速率CAN 1 MbpsCAN FD 數(shù)據(jù)段最高可達(dá)數(shù) Mbps100 Mbps 全雙工通信方式廣播 仲裁主站統(tǒng)一調(diào)度數(shù)據(jù)交換多幀通信單幀遍歷所有從站多軸同步能力一般非常優(yōu)秀典型應(yīng)用汽車(chē)電子、分布式控制工業(yè)自動(dòng)化、機(jī)器人、運(yùn)動(dòng)控制需要注意的是兩者并不是競(jìng)爭(zhēng)關(guān)系而是面向不同應(yīng)用場(chǎng)景CAN/CAN FD更適合成本敏感、節(jié)點(diǎn)較少的控制系統(tǒng)。EtherCAT更適合高實(shí)時(shí)、高同步、高性能的工業(yè)自動(dòng)化設(shè)備。六、總結(jié)通過(guò)本文我們了解了 EtherCAT 成為工業(yè)實(shí)時(shí)通信主流的原因可以總結(jié)為以下幾點(diǎn)工業(yè)自動(dòng)化的發(fā)展推動(dòng)了工業(yè)實(shí)時(shí)以太網(wǎng)的普及。EtherCAT 采用 On-The-Fly 技術(shù)實(shí)現(xiàn)數(shù)據(jù)幀邊經(jīng)過(guò)邊處理。ESC 硬件負(fù)責(zé)實(shí)時(shí)數(shù)據(jù)交換大幅降低 CPU 負(fù)擔(dān)。一個(gè) EtherCAT Frame 即可完成整個(gè)網(wǎng)絡(luò)的數(shù)據(jù)交換提高了通信效率。Working CounterWKC進(jìn)一步保證了通信可靠性。當(dāng)然這只是認(rèn)識(shí) EtherCAT 的第一步。很多讀者可能還會(huì)產(chǎn)生新的疑問(wèn)EtherCAT 數(shù)據(jù)幀到底長(zhǎng)什么樣一個(gè) Frame 中包含哪些內(nèi)容什么是 Datagram主站又是如何知道每個(gè)從站的數(shù)據(jù)位置這些問(wèn)題我們將在下一篇文章中繼續(xù)深入分析。系列文章導(dǎo)航章節(jié)標(biāo)題狀態(tài)第一篇EtherCAT 為什么能成為工業(yè)實(shí)時(shí)通信的主流?第二篇EtherCAT 通信原理詳解數(shù)據(jù)為什么能邊經(jīng)過(guò)邊處理待更新第三篇EtherCAT 狀態(tài)機(jī)ESM完整解析待更新第四篇PDO、Mailbox、CoE、FoE 到底是什么待更新如果本文對(duì)你有所幫助歡迎點(diǎn)贊、收藏并關(guān)注本專(zhuān)欄。后續(xù)將繼續(xù)更新《從零開(kāi)發(fā) EtherCAT 主站》系列結(jié)合真實(shí)項(xiàng)目從協(xié)議原理到 SOEM 源碼再到 Qt 主站開(kāi)發(fā)一步步完成一個(gè)功能完整的 EtherCAT Master。