摘 要
EtherCAT 是開(kāi)放的實(shí)時(shí)以太網(wǎng)通訊協(xié)議,由德國(guó)倍福自動(dòng)化有限公司研發(fā)。EtherCAT 具有高性能、低成本、容易使用等特點(diǎn),目前在工業(yè)自動(dòng)化領(lǐng)域有著廣泛的應(yīng)用。Zynq-7000 是賽靈思公司(Xilinx)推出的行業(yè)第一個(gè)全可編程 SoC 產(chǎn)品, 它將雙核 ARM Cortex-A9 處理器,低功耗可編程邏輯以及常用的外設(shè)緊密集成在一起。ZedBoard 是基于 XC7Z020 器件的低成本開(kāi)發(fā)板,此板可以運(yùn)行基于 Linux,Android,WinCE 或其他嵌入式 OS/ RTOS 的設(shè)計(jì)。
KPA EtherCAT 主站是一套質(zhì)量穩(wěn)定、知名度和性價(jià)比較高的 EtherCAT 協(xié)議棧,有較大參考價(jià)值。本文將介紹 KPA EtherCAT 主站在 Zynq 平臺(tái)的移植與測(cè)試。
目錄
第一節(jié)EtherCAT 簡(jiǎn)介
第二節(jié)KPA EtherCAT 軟件包簡(jiǎn)介和使用
第三節(jié)KPA EtherCAT 主站簡(jiǎn)介和移植
第四節(jié)EtherCAT 主站程序測(cè)試
第五節(jié)EtherCAT 測(cè)試程序分析
第六節(jié)主站開(kāi)發(fā)包申請(qǐng)?jiān)囉?/p>
1EtherCAT 簡(jiǎn)介
EtherCAT(以太網(wǎng)控制自動(dòng)化技技)是一種用于確定性以太網(wǎng)的高性能工業(yè)通信協(xié)議,它擴(kuò)展了 IEEE 802.3 以太網(wǎng)標(biāo)準(zhǔn),使得數(shù)據(jù)傳輸中具有可預(yù)測(cè)性定時(shí)及高精度同步等特點(diǎn)。這個(gè)開(kāi)放性標(biāo) 準(zhǔn)作為 IEC 61158 的組成部分,常用于機(jī)械設(shè)計(jì)及運(yùn)動(dòng)控制等應(yīng)用中。EtherCAT 采用標(biāo)準(zhǔn)的 IEEE802-3 以太網(wǎng)幀,幀結(jié)構(gòu)如圖 1。EtherCAT 協(xié)議直接用標(biāo)準(zhǔn)以太網(wǎng)的幀格式傳輸數(shù)據(jù),并不修改其基本結(jié)構(gòu)。
圖 1: EtherCAT 數(shù)據(jù)幀
EtherCAT 實(shí)現(xiàn)了 CANopen 協(xié)議,在 CANopen 中周期性的數(shù)據(jù)通過(guò) PDO(過(guò)程數(shù)據(jù)對(duì)象)來(lái)傳輸,PDO 優(yōu)先級(jí)較高,可用于實(shí)時(shí)傳輸。非周期性的數(shù)據(jù)比如配置參數(shù)和對(duì)象字典等則通過(guò) SDO(服務(wù)數(shù)據(jù)對(duì)象)來(lái)傳輸。
每個(gè) PDO 都包含單個(gè)或多個(gè)從設(shè)備的地址,這種數(shù)據(jù)加地址的結(jié)構(gòu)(附帶用于校驗(yàn)的傳輸計(jì)數(shù)位)組成了 EtherCAT 的報(bào)文。每個(gè) Ethernet 幀可能包含數(shù)個(gè)報(bào)文,而一個(gè)周期中可能需要多幀來(lái)傳送所需的所有報(bào)文。
傳統(tǒng)的以太網(wǎng)通信解決方案從站先接受以太網(wǎng)數(shù)據(jù)包,然后解釋和復(fù)制過(guò)程數(shù)據(jù),最后轉(zhuǎn)發(fā)數(shù)據(jù)。而EtherCAT 以太網(wǎng)幀在特殊的硬件模塊的幫助下可以實(shí)現(xiàn)在傳輸?shù)耐瑫r(shí)被處理。每個(gè)從節(jié)點(diǎn)都有 FMMU(現(xiàn)場(chǎng)總線存儲(chǔ)管理單元),F(xiàn)MMU 會(huì)對(duì)經(jīng)過(guò)的數(shù)據(jù)包進(jìn)行地址分析,發(fā)現(xiàn)是本節(jié)點(diǎn)的 數(shù)據(jù)就會(huì)讀取,同時(shí)報(bào)文轉(zhuǎn)發(fā)給下一個(gè)設(shè)備。同樣在報(bào)文通過(guò)的時(shí)候也可以插入需要傳輸?shù)臄?shù)據(jù)。讀取/插入/轉(zhuǎn)發(fā)數(shù)據(jù)的整個(gè)過(guò)程,報(bào)文只有幾納秒的延遲。如圖 2 所示,設(shè)想以太網(wǎng)的幀就像行駛中的火車,EtherCAT 報(bào)文是每節(jié)火車車廂,PDO 數(shù)據(jù)的比特就是車廂內(nèi)的乘客,這些數(shù)據(jù)可以被提取并插入到合適的從設(shè)備中。整輛火車不停止地穿越所有從設(shè)備,在末端從設(shè)備處又掉頭,重新反向穿越所有從設(shè)備。(注:EtherCAT不僅支持主從通訊,也支持從從通訊即S2S)
圖 2: EtherCAT 數(shù)據(jù)傳輸
2EtherCAT 主從站軟硬件簡(jiǎn)介
2.1KPAEtherCAT主站軟件介紹
KPA EtherCAT主站軟件根據(jù)功能不同,提供了Basic,Standard,Premium以及Extension四個(gè)版本主站協(xié)議棧,因此除了支持ETG1500定義了Class A和Class B兩種主站類型外,KPA還支持一些拓展功能比如:Data- and Frame-Logger(記錄數(shù)據(jù)和報(bào)文)、Access Rights(設(shè)置不同的訪問(wèn)權(quán)限)Multi Master(多主站,冗余)、Cable Redundancy (線纜冗余)、Hot-Connect(熱插拔)、其他。
提供了基于多種不同硬件平臺(tái)和OS的現(xiàn)成開(kāi)發(fā)包,支持SoC(ARM+FPGA)/ARM/X86 /PowerPC等主流硬件平臺(tái),支持Linux(Xenomai/RT-preempt)/ Windows(INtime/RTX)/ QNX/ Ucos/ Vxworks等。幾乎滿足目前所有用戶主站開(kāi)發(fā)要求的一款主站方案。
KPA主站協(xié)議棧采用模塊化的架構(gòu),可以實(shí)現(xiàn)每個(gè)特殊的項(xiàng)目應(yīng)用。它使得主站可以自由擴(kuò)展以適應(yīng)不同大小的應(yīng)用程序、可以移植不同的操作系統(tǒng)和各種各樣的硬件平臺(tái)。每個(gè)模塊可以單獨(dú)定制化或者二次開(kāi)發(fā),而且不會(huì)破壞其他模塊的完整性。主站結(jié)構(gòu)如圖3
圖 3: KPA EtherCAT主站構(gòu)架
KPA主要功能模塊為:
1) 應(yīng)用層:應(yīng)用層負(fù)責(zé)與各種不同的編程/配置環(huán)境交互,負(fù)責(zé)與不同的應(yīng)用或設(shè)備交互。確保在應(yīng)用或過(guò)程任務(wù)端順利訪問(wèn)主站功能函數(shù);與主站通過(guò)Remote Procedure Calls服務(wù)交互,提供了TCP/IP以及UDP連接,比如:通過(guò)UDP與從站設(shè)備進(jìn)行mailbox相關(guān)的通訊
2) Mailbox Module:EtherCAT主站核心mailbox模塊利用不同的協(xié)議處理服務(wù)數(shù)據(jù)對(duì)象(SDP),數(shù)據(jù)傳輸以及數(shù)據(jù)交換。支持CoE,FoE,EoE,SoE,VoE,AoE等郵箱服務(wù)。
3) Process Image Module過(guò)程映像模塊:Process Image簡(jiǎn)稱PI,它的地址是由EtherCAT network information (ENI) 文件提出的,ENI文件可由配置工具KPA Studio自動(dòng)生成。從控制/過(guò)程任務(wù)訪問(wèn)過(guò)程映像是由主站接口執(zhí)行的。
4) Distribution Clock分布時(shí)鐘模塊:使得所有的EtherCAT設(shè)備(包括主站和從站)總是能夠共享相同的EtherCAT系統(tǒng)時(shí)間。這是通過(guò)補(bǔ)償編譯和漂移時(shí)間來(lái)實(shí)現(xiàn)的。
5) Frame Schedule Module幀調(diào)度模塊:不同PDO采用不同的掃描周期。在配置工具KPA Studio里,用戶可以單獨(dú)定義每個(gè)從站的掃描速率。幀調(diào)度表模塊管理EtherCAT幀速率,轉(zhuǎn)發(fā)它們到EtherCAT網(wǎng)絡(luò)驅(qū)動(dòng)。
6) OSAL操作系統(tǒng)抽象層模塊:包含與操作系統(tǒng)相關(guān)的功能函數(shù)的包裝,比如處理線程、計(jì)時(shí)器、互斥量等;包括網(wǎng)絡(luò)適配驅(qū)動(dòng)器模塊:從底層的網(wǎng)絡(luò)實(shí)現(xiàn)提取主站堆棧的core核心
2.2KPA EtherCAT 主站硬件介紹
主站硬件主要由三部分組成見(jiàn)圖4:PC端、Zedboard主站開(kāi)發(fā)板以及外擴(kuò)的FMC網(wǎng)卡。PC通過(guò)串口終端來(lái)實(shí)現(xiàn)操作系統(tǒng)指令輸入,PC端上的EtherCAT網(wǎng)絡(luò)診斷配置工具KPA EtherCAT Studio通過(guò)RPC服務(wù)連接Zedboard主站板,可以實(shí)現(xiàn)對(duì)主站和從站的配置,掃描生成網(wǎng)絡(luò)配置文件。Zedboard作為EtherCAT主站板具體可參考http://zedboard.org/product/zedboard。
圖 4:硬件架構(gòu)圖
圖 5:硬件內(nèi)部架構(gòu)
另外,KPA利用主站板的FPGA資源,獨(dú)立外擴(kuò)網(wǎng)卡,而不是使用主站板ARM上的網(wǎng)卡驅(qū)動(dòng),主站開(kāi)發(fā)包中提供的Timer IP Core和NIC IPCore,利用邏輯單元PL,構(gòu)建針對(duì)EtherCAT優(yōu)化的MAC,提供了針對(duì)EtherCAT優(yōu)化的NIC驅(qū)動(dòng),IP Core提供了Shift Sending Time設(shè)置,從端口降低有操作系統(tǒng)引起的數(shù)據(jù)幀抖動(dòng),從而優(yōu)化了數(shù)據(jù)在收發(fā)時(shí)的抖動(dòng)的問(wèn)題。
3KPA EtherCAT 主站移植
本方案基于Zynq平臺(tái)的EtherCAT主站實(shí)現(xiàn),系統(tǒng)采用改進(jìn)后的實(shí)時(shí)linux系統(tǒng),即在標(biāo)準(zhǔn)的linux操作系統(tǒng)內(nèi)核中嵌套進(jìn)一個(gè)微小、實(shí)時(shí)內(nèi)核,改造成具有雙內(nèi)核的異構(gòu)系統(tǒng),所有實(shí)時(shí)任務(wù)都運(yùn)行在微內(nèi)核上,非實(shí)時(shí)的Linux 則作為實(shí)時(shí)內(nèi)核的一項(xiàng)優(yōu)先級(jí)最低的任務(wù)來(lái)托管所有的非實(shí)時(shí)任務(wù),采用Linux3.8.13和Xenomai2.6.3,下面介紹怎么搭建Zedboard主站
3.1Vivado 與 Xilinx SDK 工具安裝
我們主要用到SDK里的交叉編譯器,以及用它來(lái)生成FSBL與BOOT.BIN文件。
我分別在ubuntu和windows上都安裝了xilinx的SDK。其中windows上的xilinx SDK不需要單獨(dú)安裝,等在安裝Vivado的時(shí)候勾選下就可以了。 Ubuntu上的xilinx SDK安裝文件網(wǎng)址是http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html
3.2Vivado 的下載安裝
Vivado主要是用來(lái)配置xilinx的FPGA外設(shè)的,后面生成bitstream文件時(shí)需要用,以及我們更改SOC里的外設(shè)引腳配置以及配置管腳等等時(shí)是需要用到。Vivado的下載地址
http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html
3.3給 Linux 內(nèi)核代碼打 Xenomai 實(shí)時(shí)補(bǔ)丁
zedboard上運(yùn)行的linux內(nèi)核可不是普通的linux內(nèi)核源碼,而是打了xenomai補(bǔ)丁的實(shí)時(shí)嵌入式操作系統(tǒng)。需要先給linux源碼打上x(chóng)enomai補(bǔ)丁后方可編譯
Linux源碼下載:https://github.com/Xilinx/linux-xlnx.git
Xenomai安裝包下載:http://download.gna.org/xenomai/stable/xenomai-2.6.3.tar.bz2
給linux內(nèi)核代碼打xenomai實(shí)時(shí)補(bǔ)丁,可以參看xilinx的官方文檔《Xenomai for Zynq》:http://www.wiki.xilinx.com/Xenomai+for+Zynq
3.4Linux 內(nèi)核編譯
當(dāng)xenomai補(bǔ)丁打好后,即可開(kāi)始編譯linux內(nèi)核
圖 6:Uboot編譯
3.5下載源代碼
3.6編譯 U-Boot
命令是$make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed
可以看看u-boot源碼文件夾目錄下的boards.cfg文件。里面有各種平臺(tái)的配置表。將編譯好的u-boot文件改名為u-boot.elf文件。我們生存boot.bin時(shí)要用它
3.7文件系統(tǒng)編譯
現(xiàn)在直接用的xilinx和KPA官方提供給我的文件系統(tǒng)“uramdisk.image.gz”。
從xilinx網(wǎng)上下載arm_ramdisk.image.gz文件。
這個(gè)文件是xilinx提供給我們做模板用的。可以把它解壓開(kāi),然后在它基礎(chǔ)上改改,再打包,就能用的。
3.8設(shè)備樹(shù)編譯
設(shè)備樹(shù)的編譯方法參考文檔。
3.9KPA NIC 模塊
直接用的KPA的“kpa_mac.ko文件”。
KPA這部分不用去動(dòng),現(xiàn)在也不用改,這部分文件放在我們SD卡的第二分區(qū)了即可。然后設(shè)備樹(shù)上加上mac的配置部分即可。
3.10Vivado 生成 bitstream 文件
基于kpa給的Vivado工程“zedboard_redundancy”和兩個(gè)ipcore,來(lái)產(chǎn)生bitstream文件。
圖 7:生成bitstream文件
3.11Xilinx SDK 生成 FSBL
圖 8:生成的FSBL
3.12制作 BOOT.BIN 文件
利用xilinx SDK,看到,BOOT.BIN文件其實(shí)是將U-boot,Vivado生成的Bitstream文件,SDK生成的FSBL文件以及SDK自動(dòng)生成的的boot.bif四合一打包生成的一個(gè)啟動(dòng)文件。BOOT.BIN下一節(jié)會(huì)放到SD卡中,作用主要是初始化zedboard硬件和加載linux內(nèi)核。
圖 9:生成BOOT.BIN文件
3.13燒錄 SD 卡
在ubuntu環(huán)境下,將一張4G的SD卡格式化為兩分區(qū),第一分區(qū)1.1G為FAT格式;第二分區(qū)為2.9G為Ext4格式。
圖 10:SD卡分區(qū)
然后將前面準(zhǔn)備的BOOT.BIN文件,設(shè)備樹(shù)文件devicetree.dtb,文件系統(tǒng)文件uramdisk.image.gz文件,linux內(nèi)核鏡像uImage這四個(gè)文件拷貝到第一分區(qū)。不難看出第一分區(qū)全部是和操作系統(tǒng)相關(guān)的文件。第二分區(qū)里則是三個(gè)文件,全由KPA提供Master: KPA的EtherCat主站相關(guān)的所有文件;
圖 11:SD卡中Master內(nèi)容
Xenomai:xenomai依賴的一些庫(kù)文件,這個(gè)可以官網(wǎng)下載xenomai對(duì)應(yīng)的版本如2.6.3。然后在根目錄下make后會(huì)生成這個(gè)庫(kù)文件。
Mod:該文件夾下則主要是kpa_mac.ko,也就是KPA提供的那個(gè)網(wǎng)卡驅(qū)動(dòng)。
如下圖:
圖 12:SD卡中Xenomai文件
到此SD卡也做成了。SD卡插到板子上既可以運(yùn)行了。
4 EtherCAT 主站程序測(cè)試
實(shí)驗(yàn)平臺(tái)包括三個(gè)組成部分:待測(cè)試的EtherCAT系統(tǒng)、實(shí)時(shí)數(shù)據(jù)獲取單元和離線的實(shí)驗(yàn)數(shù)據(jù)分析單元,如下圖所示。主站為構(gòu)建的嵌入式實(shí)時(shí)EtherCAT 主站,從站為兩套松下交流伺服驅(qū)動(dòng)器MADHT系列。測(cè)試的內(nèi)容為在周期時(shí)間為250us下,帶DC功能和不帶DC功能的測(cè)試數(shù)據(jù)對(duì)比。
4.1實(shí)時(shí)數(shù)據(jù)獲取單元
實(shí)時(shí)數(shù)據(jù)獲取單元采用的是虹科的網(wǎng)絡(luò)分析儀Profishark 100M或Profishark 1G,兩個(gè)網(wǎng)口為標(biāo)準(zhǔn)的100M/1Gbps 以太網(wǎng)接口。支持單獨(dú)捕獲上行和下行數(shù)據(jù),并且可以將捕獲的數(shù)據(jù)包供Wireshark /Profishark Manager等軟件進(jìn)行數(shù)據(jù)分析。此外,它捕獲數(shù)據(jù)包時(shí)間戳的分辨率可以達(dá)到5ns,保證了實(shí)驗(yàn)數(shù)據(jù)的精確性,如下圖:
圖 13:實(shí)時(shí)數(shù)據(jù)單元示意圖
4.2離線數(shù)據(jù)分析單元
離線數(shù)據(jù)分析單元是由PC 機(jī)運(yùn)行開(kāi)源軟件Wireshark 實(shí)現(xiàn)的,在實(shí)驗(yàn)的最后,所有捕獲的的實(shí)驗(yàn)數(shù)據(jù)都會(huì)交給離線數(shù)據(jù)單元進(jìn)行處理和分析。
圖 14:EtherCAT網(wǎng)絡(luò)實(shí)驗(yàn)圖
利用wireshark分別抓取數(shù)據(jù)(帶DC)
圖 15:基于Wireshark的EtherCAT數(shù)據(jù)幀(含DC)
利用wireshark分別抓取數(shù)據(jù)(不帶DC):
圖 16:基于Wireshark的EtherCAT數(shù)據(jù)幀(含DC)
表 1:EtherCAT數(shù)據(jù)測(cè)試結(jié)果 單位:us(統(tǒng)計(jì)至個(gè)位)
總結(jié):
可以看出,基于Zynq平臺(tái)的主站設(shè)計(jì)方案circle time完全可以做到250us級(jí)別,帶兩軸從站的情況下加DC功能,基本沒(méi)有抖動(dòng)存在,但是不帶DC的話,周期時(shí)間不穩(wěn)定,抖動(dòng)也相對(duì)較大。
5 EtherCAT 測(cè)試程序分析
KPA EtherCAT主站協(xié)議棧提供了多種功能的程序模板如下,包括ETG協(xié)議規(guī)定的幾種模式,寫應(yīng)用時(shí),可以在這些代碼模板上進(jìn)行編程測(cè)試,本文作者基于01異步模式進(jìn)行測(cè)試程序的分析
圖 17:KPA開(kāi)發(fā)包的功能模塊(部分)
5.1利用 KPA Studio 掃描網(wǎng)絡(luò)
先掃描從站信息,利用KPA Studio導(dǎo)出從從站信息的頭文件,定義了從站地址,數(shù)據(jù)長(zhǎng)度。
圖 18:KPA Studio掃描從站頭文件
5.2Main 函數(shù)重要部分介紹
(1)main函數(shù)里面,首先主站初始化。包括獲取網(wǎng)卡,指定網(wǎng)絡(luò)配置文件路徑,設(shè)置周期時(shí)間,等操作
圖 19:Main函數(shù)中的主站初始化部分
(2)加載PRC服務(wù)功能,方便利用KPA Studio進(jìn)行調(diào)試
圖 20:加載RPC遠(yuǎn)程調(diào)試功能
(3)切換主站狀態(tài)
圖 21:切換主站狀態(tài)
(4)設(shè)置控制字,進(jìn)行PI數(shù)據(jù)的讀寫,從而控制從站
圖 22:讀寫PI
其中數(shù)據(jù)的讀取都要遵循先調(diào)用EcatStartReadInputs/EcatDoneWriteOutputs 函數(shù),獲取輸入輸出PI,中間再調(diào)用EcatSetVariable進(jìn)行數(shù)據(jù)的交互,最后再調(diào)用EcatDoneWriteOutputs獲取數(shù)據(jù)讀寫的應(yīng)答,結(jié)束讀寫。
-
以太網(wǎng)通信
+關(guān)注
關(guān)注
2文章
54瀏覽量
11234 -
設(shè)備
+關(guān)注
關(guān)注
2文章
4623瀏覽量
71376 -
Vivado
+關(guān)注
關(guān)注
19文章
826瀏覽量
68028
發(fā)布評(píng)論請(qǐng)先 登錄
基于全志T507-H的Igh EtherCAT主站案例分享
基于全志T507-H的Linux-RT + Igh EtherCAT主站案例分享
EtherCAT主站代碼和方案-含ZedBoard測(cè)試數(shù)據(jù)對(duì)比
EtherCAT通信開(kāi)發(fā)平臺(tái)包括應(yīng)用手冊(cè)
基于Sitara AM57x千兆位以太網(wǎng)EtherCAT主接口解決方案
開(kāi)源IgH EtherCAT主站方案,基于IMX8、ZYNQ、AM335x、T3等平臺(tái)
開(kāi)源!ZYNQ IgH EtherCAT主站方案分享
如何移植鴻蒙系統(tǒng)到xilinx zynq平臺(tái)上
基于Zynq平臺(tái)的EtherCAT主站方案實(shí)現(xiàn)

KPA EtherCAT主站軟件如何做移植測(cè)試
虹科干貨 | 虹科KPA EtherCAT主站軟件在Xilinx ZYNQ UltraScale+上移植測(cè)試

【虹科干貨】使用Profishark進(jìn)行EtherCAT主站性能測(cè)試

虹科干貨 | 虹科KPA EtherCAT主站軟件在Xilinx ZYNQ UltraScale+上移植測(cè)試

開(kāi)源!ZYNQ IgH EtherCAT主站方案分享

評(píng)論