摘 要:EtherCAT 是開放的實時以太網(wǎng)通訊協(xié)議,由德國倍福自動化有限公司研發(fā)。EtherCAT 具有高性能、低成本、容易使用等特點,目前在工業(yè)自動化領(lǐng)域有著廣泛的應(yīng)用。Zynq-7000 是賽靈思公司(Xilinx)推出的行業(yè)第一個全可編程 SoC 產(chǎn)品, 它將雙核 ARM Cortex-A9 處理器,低功耗可編程邏輯以及常用的外設(shè)緊密集成在一起。ZedBoard 是基于 XC7Z020 器件的低成本開發(fā)板,此板可以運行基于 Linux,Android,WinCE 或其他嵌入式 OS/ RTOS 的設(shè)計。
KPA EtherCAT 主站是一套質(zhì)量穩(wěn)定、知名度和性價比較高的 EtherCAT 協(xié)議棧,有較大參考價值。本文將介紹 KPA EtherCAT 主站在 Zynq 平臺的移植與測試。
目錄
第一節(jié) EtherCAT 簡介
第二節(jié) KPA EtherCAT 軟件包簡介和使用
第三節(jié) KPA EtherCAT 主站簡介和移植
第四節(jié) EtherCAT 主站程序測試
第五節(jié) EtherCAT 測試程序分析
第六節(jié) 主站開發(fā)包申請試用
1、EtherCAT 簡介
EtherCAT(以太網(wǎng)控制自動化技技)是一種用于確定性以太網(wǎng)的高性能工業(yè)通信協(xié)議,它擴展了 IEEE 802.3 以太網(wǎng)標(biāo)準(zhǔn),使得數(shù)據(jù)傳輸中具有可預(yù)測性定時及高精度同步等特點。這個開放性標(biāo) 準(zhǔn)作為 IEC 61158 的組成部分,常用于機械設(shè)計及運動控制等應(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 實現(xiàn)了 CANopen 協(xié)議,在 CANopen 中周期性的數(shù)據(jù)通過 PDO(過程數(shù)據(jù)對象)來傳輸,PDO 優(yōu)先級較高,可用于實時傳輸。非周期性的數(shù)據(jù)比如配置參數(shù)和對象字典等則通過 SDO(服務(wù)數(shù)據(jù)對象)來傳輸。
每個 PDO 都包含單個或多個從設(shè)備的地址,這種數(shù)據(jù)加地址的結(jié)構(gòu)(附帶用于校驗的傳輸計數(shù)位)組成了 EtherCAT 的報文。每個 Ethernet 幀可能包含數(shù)個報文,而一個周期中可能需要多幀來傳送所需的所有報文。
傳統(tǒng)的以太網(wǎng)通信解決方案從站先接受以太網(wǎng)數(shù)據(jù)包,然后解釋和復(fù)制過程數(shù)據(jù),最后轉(zhuǎn)發(fā)數(shù)據(jù)。而EtherCAT 以太網(wǎng)幀在特殊的硬件模塊的幫助下可以實現(xiàn)在傳輸?shù)耐瑫r被處理。每個從節(jié)點都有 FMMU(現(xiàn)場總線存儲管理單元),F(xiàn)MMU 會對經(jīng)過的數(shù)據(jù)包進行地址分析,發(fā)現(xiàn)是本節(jié)點的 數(shù)據(jù)就會讀取,同時報文轉(zhuǎn)發(fā)給下一個設(shè)備。同樣在報文通過的時候也可以插入需要傳輸?shù)臄?shù)據(jù)。讀取/插入/轉(zhuǎn)發(fā)數(shù)據(jù)的整個過程,報文只有幾納秒的延遲。如圖 2 所示,設(shè)想以太網(wǎng)的幀就像行駛中的火車,EtherCAT 報文是每節(jié)火車車廂,PDO 數(shù)據(jù)的比特就是車廂內(nèi)的乘客,這些數(shù)據(jù)可以被提取并插入到合適的從設(shè)備中。整輛火車不停止地穿越所有從設(shè)備,在末端從設(shè)備處又掉頭,重新反向穿越所有從設(shè)備。(注:EtherCAT不僅支持主從通訊,也支持從從通訊即S2S)
圖 2: EtherCAT 數(shù)據(jù)傳輸
2、EtherCAT 主從站軟硬件簡介
2.1KPA EtherCAT 主站軟件介紹
KPA EtherCAT主站軟件根據(jù)功能不同,提供了Basic,Standard,Premium以及Extension四個版本主站協(xié)議棧,因此除了支持ETG1500定義了Class A和Class B兩種主站類型外,KPA還支持一些拓展功能比如:Data- and Frame-Logger(記錄數(shù)據(jù)和報文)、Access Rights(設(shè)置不同的訪問權(quán)限)Multi Master(多主站,冗余)、Cable Redundancy (線纜冗余)、Hot-Connect(熱插拔)、其他。
提供了基于多種不同硬件平臺和OS的現(xiàn)成開發(fā)包,支持SoC(ARM+FPGA)/ARM/X86 /PowerPC等主流硬件平臺,支持Linux(Xenomai/RT-preempt)/ Windows(INtime/RTX)/ QNX/ Ucos/ Vxworks等。幾乎滿足目前所有用戶主站開發(fā)要求的一款主站方案。
KPA主站協(xié)議棧采用模塊化的架構(gòu),可以實現(xiàn)每個特殊的項目應(yīng)用。它使得主站可以自由擴展以適應(yīng)不同大小的應(yīng)用程序、可以移植不同的操作系統(tǒng)和各種各樣的硬件平臺。每個模塊可以單獨定制化或者二次開發(fā),而且不會破壞其他模塊的完整性。主站結(jié)構(gòu)如圖3
?
圖 3: KPA EtherCAT主站構(gòu)架
KPA主要功能模塊為:
1) 應(yīng)用層:應(yīng)用層負責(zé)與各種不同的編程/配置環(huán)境交互,負責(zé)與不同的應(yīng)用或設(shè)備交互。確保在應(yīng)用或過程任務(wù)端順利訪問主站功能函數(shù);與主站通過Remote Procedure Calls服務(wù)交互,提供了TCP/IP以及UDP連接,比如:通過UDP與從站設(shè)備進行mailbox相關(guān)的通訊。
2) Mailbox Module:EtherCAT主站核心mailbox模塊利用不同的協(xié)議處理服務(wù)數(shù)據(jù)對象(SDP),數(shù)據(jù)傳輸以及數(shù)據(jù)交換。支持CoE,FoE,EoE,SoE,VoE,AoE等郵箱服務(wù)。
3) Process Image Module過程映像模塊:Process Image簡稱PI,它的地址是由EtherCAT network information (ENI) 文件提出的,ENI文件可由配置工具KPA Studio自動生成。從控制/過程任務(wù)訪問過程映像是由主站接口執(zhí)行的。
4) Distribution Clock分布時鐘模塊:使得所有的EtherCAT設(shè)備(包括主站和從站)總是能夠共享相同的EtherCAT系統(tǒng)時間。這是通過補償編譯和漂移時間來實現(xiàn)的。
5) Frame Schedule Module幀調(diào)度模塊:不同PDO采用不同的掃描周期。在配置工具KPA Studio里,用戶可以單獨定義每個從站的掃描速率。幀調(diào)度表模塊管理EtherCAT幀速率,轉(zhuǎn)發(fā)它們到EtherCAT網(wǎng)絡(luò)驅(qū)動。
6) OSAL操作系統(tǒng)抽象層模塊:包含與操作系統(tǒng)相關(guān)的功能函數(shù)的包裝,比如處理線程、計時器、互斥量等;包括網(wǎng)絡(luò)適配驅(qū)動器模塊:從底層的網(wǎng)絡(luò)實現(xiàn)提取主站堆棧的core核心
2.2KPA EtherCAT 主站硬件介紹
主站硬件主要由三部分組成見圖4:PC端、Zedboard主站開發(fā)板以及外擴的FMC網(wǎng)卡。PC通過串口終端來實現(xiàn)操作系統(tǒng)指令輸入,PC端上的EtherCAT網(wǎng)絡(luò)診斷配置工具KPA EtherCAT Studio通過RPC服務(wù)連接Zedboard主站板,可以實現(xiàn)對主站和從站的配置,掃描生成網(wǎng)絡(luò)配置文件。Zedboard作為EtherCAT主站板具體可參考 。
圖 4:硬件架構(gòu)圖
?
?
圖 5:硬件內(nèi)部架構(gòu)
另外,KPA利用主站板的FPGA資源,獨立外擴網(wǎng)卡,而不是使用主站板ARM上的網(wǎng)卡驅(qū)動,主站開發(fā)包中提供的Timer IP Core和NIC IPCore,利用邏輯單元PL,構(gòu)建針對EtherCAT優(yōu)化的MAC,提供了針對EtherCAT優(yōu)化的NIC驅(qū)動,IP Core提供了Shift Sending Time設(shè)置,從端口降低有操作系統(tǒng)引起的數(shù)據(jù)幀抖動,從而優(yōu)化了數(shù)據(jù)在收發(fā)時的抖動的問題。
?
3、KPA EtherCAT 主站移植
本方案基于Zynq平臺的EtherCAT主站實現(xiàn),系統(tǒng)采用改進后的實時linux系統(tǒng),即在標(biāo)準(zhǔn)的linux操作系統(tǒng)內(nèi)核中嵌套進一個微小、實時內(nèi)核,改造成具有雙內(nèi)核的異構(gòu)系統(tǒng),所有實時任務(wù)都運行在微內(nèi)核上,非實時的Linux 則作為實時內(nèi)核的一項優(yōu)先級最低的任務(wù)來托管所有的非實時任務(wù),采用Linux3.8.13和Xenomai2.6.3,下面介紹怎么搭建Zedboard主站。
3.1Vivado 與 Xilinx SDK 工具安裝
我們主要用到SDK里的交叉編譯器,以及用它來生成FSBL與BOOT.BIN文件。
我分別在ubuntu和windows上都安裝了xilinx的SDK。其中windows上的xilinx SDK不需要單獨安裝,等在安裝Vivado的時候勾選下就可以了。 Ubuntu上的xilinx SDK安裝文件網(wǎng)址是
?
3.2Vivado 的下載安裝
Vivado主要是用來配置xilinx的FPGA外設(shè)的,后面生成bitstream文件時需要用,以及我們更改SOC里的外設(shè)引腳配置以及配置管腳等等時是需要用到。Vivado的下載地址
?
?
3.3給 Linux 內(nèi)核代碼打 Xenomai 實時補丁
zedboard上運行的linux內(nèi)核可不是普通的linux內(nèi)核源碼,而是打了xenomai補丁的實時嵌入式操作系統(tǒng)。需要先給linux源碼打上xenomai補丁后方可編譯
Linux源碼下載: https://github.com/Xilinx/linux-xlnx.git
Xenomai安裝包下載:
給linux內(nèi)核代碼打xenomai實時補丁,可以參看xilinx的官方文檔《Xenomai for Zynq》: +for+Zynq
3.4Linux 內(nèi)核編譯
當(dāng)xenomai補丁打好后,即可開始編譯linux內(nèi)核
?
圖 6:Uboot編譯
具體的ubuntu編譯方法和編譯kernel大同小異,可以參考這篇文章: +U-Boot
3.5下載源代碼
Uboot的源碼下載地址是: https://github.com/Xilinx/u-boot-xlnx.git
評論
查看更多