摘 要: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)囉?/strong>
1、EtherCAT 簡(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ù)傳輸
2、EtherCAT 主從站軟硬件簡(jiǎn)介
2.1KPA EtherCAT 主站軟件介紹
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主站板具體可參考 。
圖 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)題。
?
3、KPA 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)址是
?
3.2Vivado 的下載安裝
Vivado主要是用來(lái)配置xilinx的FPGA外設(shè)的,后面生成bitstream文件時(shí)需要用,以及我們更改SOC里的外設(shè)引腳配置以及配置管腳等等時(shí)是需要用到。Vivado的下載地址
?
?
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源碼打上xenomai補(bǔ)丁后方可編譯
Linux源碼下載: https://github.com/Xilinx/linux-xlnx.git
Xenomai安裝包下載:
給linux內(nèi)核代碼打xenomai實(shí)時(shí)補(bǔ)丁,可以參看xilinx的官方文檔《Xenomai for Zynq》: +for+Zynq
3.4Linux 內(nèi)核編譯
當(dāng)xenomai補(bǔ)丁打好后,即可開(kāi)始編譯linux內(nèi)核
?
圖 6:Uboot編譯
具體的ubuntu編譯方法和編譯kernel大同小異,可以參考這篇文章: +U-Boot
3.5下載源代碼
Uboot的源碼下載地址是: https://github.com/Xilinx/u-boot-xlnx.git
評(píng)論