劉星宇 張春雷 劉冠宸
(四川大學(xué) 機(jī)械工程學(xué)院 四川成都610065)
制造業(yè)升級(jí)極大地帶動(dòng)了工控領(lǐng)域的發(fā)展,近幾年網(wǎng)絡(luò)技術(shù)發(fā)展迅猛,傳統(tǒng)的現(xiàn)場(chǎng)總線技術(shù)已無法滿足新的工控需求,如今的工業(yè)現(xiàn)場(chǎng)總線技術(shù)正朝著實(shí)時(shí)以太網(wǎng)的方向不斷發(fā)展。全球許多公司推出了自己的工業(yè)以太網(wǎng)現(xiàn)場(chǎng)總線協(xié)議:Modbus/TCP、EtherNet/IP、Ethernet Power link、EPA、PROFINET RT、EtherCAT、SERCOS-Ⅲ[1]。其中,由德國(guó)BeckHoff公司提出的EtherCAT實(shí)時(shí)工業(yè)以太網(wǎng)技術(shù)以其眾多的優(yōu)勢(shì)脫穎而出:兼容TCP/IP數(shù)據(jù)包、實(shí)時(shí)性強(qiáng)、數(shù)據(jù)傳輸高速穩(wěn)定、網(wǎng)絡(luò)拓?fù)潇`活多樣。
目前,網(wǎng)上有兩套開源的EtherCAT主站框架。SOEM 對(duì) EtherCAT功能的實(shí)現(xiàn)相對(duì)簡(jiǎn)單;IgH EtherCAT Master對(duì)EtherCAT功能的實(shí)現(xiàn)則相對(duì)完善,不僅支持RTAI、Xenomai等多種實(shí)時(shí)擴(kuò)展,還支持分布時(shí)鐘功能,顯著提高了主從站通訊的實(shí)時(shí)性和從站運(yùn)行的同步性,更適合應(yīng)用于 EtherCAT主站控制器的開發(fā)。對(duì)于IgH EtherCAT主站的研究,張克華[2]等人將其應(yīng)用于 LinuxCNC開放式數(shù)控系統(tǒng)中,系統(tǒng)的實(shí)時(shí)響應(yīng)時(shí)間在微秒級(jí)別;蔣杰[3]等人基于X86平臺(tái)設(shè)計(jì)EtherCAT主站,通信最大抖動(dòng)為88μs;馬春敏[4]等人研究IgH EtherCAT主站架構(gòu)、通信等基礎(chǔ)知識(shí),周期任務(wù)采用內(nèi)核定時(shí)器的方式,周期任務(wù)最快速度為10ms;還有很多學(xué)者基于開源IgH EtherCAT做了豐富的研究,但實(shí)時(shí)性的實(shí)現(xiàn)都不是太高。
為了提高實(shí)時(shí)性,本設(shè)計(jì)不僅使用了 Xenomai實(shí)時(shí)擴(kuò)展,還對(duì)協(xié)議棧收發(fā)數(shù)據(jù)幀的接口進(jìn)行了修改,在高性能的ZYNQ硬件平臺(tái)上基于IgH開發(fā)嵌入式EtherCAT主站,并對(duì)實(shí)時(shí)性進(jìn)行實(shí)驗(yàn)測(cè)試。
本設(shè)計(jì)搭建基于IgH 的EtherCAT主站包括四部分的內(nèi)容:移植Linux系統(tǒng)到ZYNQ硬件平臺(tái)、修改數(shù)據(jù)幀收發(fā)接口、移植IgH EtherCAT Master for Linux開源框架和添加Xenomai實(shí)時(shí)擴(kuò)展。
IgH EtherCAT開源框架是基于Linux操作系統(tǒng)開發(fā)的,因此在使用它之前首先要將Linux操作系統(tǒng)移植到基于ARM的硬件平臺(tái)ZYNQ上。移植的主要流程如下:
1)修改設(shè)備樹文件
(1)下載并解壓linux-xlnx-xilinx-v14.5.tar.gz文件;
(2)修改設(shè)備樹文件zynq-zc702.dts中memory的大小,使之匹配硬件平臺(tái)的內(nèi)存;
(3)在參數(shù)chosen選項(xiàng)中,增加maxcpus=1,使Linux系統(tǒng)運(yùn)行在單核上;
(4)增加emmc設(shè)備樹;
(5)編譯設(shè)備樹文件為devicetree.dtb文件。
2)修改內(nèi)核
(1)修改menuconfig中塊設(shè)備的大小為65536,以匹配文件系統(tǒng)大小,否則內(nèi)核啟動(dòng)時(shí)會(huì)報(bào)錯(cuò);
(2)在 arch/arm/Kconfig 中 修 改CONFIG_HZ=1000,細(xì)化時(shí)鐘粒度,增大時(shí)鐘分辨率為優(yōu)化實(shí)時(shí)性做準(zhǔn)備;
(3)編譯內(nèi)核文件為uImage文件。
(4)創(chuàng)建文件系統(tǒng)并將其編譯為uramdisk.image.gz。
(5)將 U-Boot引導(dǎo)程序下載到 ZYNQ上的FLASH中并啟動(dòng),使用tftp網(wǎng)絡(luò)引導(dǎo)工具將編譯后的 uImage、uramdisk.image.gz、devicetree.dtb文件加載到ZYNQ的內(nèi)存上,利用”bootm”指令引導(dǎo)文件啟動(dòng)。
為降低數(shù)據(jù)幀傳輸時(shí)的抖動(dòng),本設(shè)計(jì)對(duì)協(xié)議棧收發(fā)數(shù)據(jù)幀的通道進(jìn)行了改造。最初的數(shù)據(jù)幀收發(fā)通道通過數(shù)據(jù)幀收發(fā)接口連接緩沖區(qū)、ARM裸核、網(wǎng)口的方式實(shí)現(xiàn)數(shù)據(jù)幀的讀寫,在1ms的周期下測(cè)得的EtherCAT通訊抖動(dòng)為6~7 μs。因?yàn)镕PGA是依靠硬件來實(shí)現(xiàn)所有功能,因此相比于ARM裸核有更高的穩(wěn)定性。用FPGA代替ARM裸核能進(jìn)一步降低 EtherCAT通訊時(shí)的抖動(dòng),改造后的數(shù)據(jù)幀收發(fā)通道如圖1所示。
圖1 修改后的IgH數(shù)據(jù)幀收發(fā)接口設(shè)計(jì)
移植 IgH EtherCAT是主站開發(fā)過程中最重要的一步,其主要流程如下:
(1)下載并解壓ethercat-1.5.2tar.bz2文件;
(2)運(yùn)行“configure”指令對(duì) IgH EtherCAT進(jìn)行安裝前的配置;
(3)多次運(yùn)行“make”指令完成對(duì) IgH EtherCAT各模塊的編譯和安裝,并把相關(guān)文件復(fù)制到指定的文件夾;
(4)重新編譯文件系統(tǒng);
(5)上電啟動(dòng)硬件平臺(tái),在文件系統(tǒng)根目錄執(zhí)行ecat腳本便能啟動(dòng)IgH EtherCAT協(xié)議棧。
EtherCAT通訊的優(yōu)勢(shì)之一是高實(shí)時(shí)性,但Linux系統(tǒng)本身不具備實(shí)時(shí)性,所以必須對(duì) Linux系統(tǒng)進(jìn)行實(shí)時(shí)改造,本設(shè)計(jì)采用Xenomai實(shí)時(shí)擴(kuò)展。完成實(shí)時(shí)性改造后,主站的系統(tǒng)軟件結(jié)構(gòu)如圖2所示。
圖2 IgH EtherCAT主站系統(tǒng)軟件結(jié)構(gòu)
EtherCAT的實(shí)時(shí)任務(wù)通過協(xié)議棧的 API由Xenomai實(shí)時(shí)輔助內(nèi)核執(zhí)行,其他非實(shí)時(shí)任務(wù)直接由Linux內(nèi)核執(zhí)行。因?yàn)長(zhǎng)inux內(nèi)核的的優(yōu)先級(jí)要低于實(shí)時(shí)輔助內(nèi)核,即便在Linux內(nèi)核處理非實(shí)時(shí)任務(wù)時(shí),一旦需要執(zhí)行實(shí)時(shí)任務(wù),實(shí)時(shí)輔助內(nèi)核便可搶占Linux運(yùn)行,使系統(tǒng)的實(shí)時(shí)性得以保證[5]。
主站啟動(dòng)與從站建立通訊大致可分為兩個(gè)階段,分別為主從站之間的各種初始化配置和周期實(shí)時(shí)任務(wù),如圖3所示,涉及對(duì)多個(gè)IgH應(yīng)用接口函數(shù)的按序調(diào)用。”
圖3 主站程序流程
初始化完成后首先要請(qǐng)求一個(gè)主站實(shí)例,這是配置的開始;然后進(jìn)行總線配置,使主站能根據(jù)從站信息與從站建立連接并獲取從站的拓?fù)湫畔?;接著配置主從站通訊方式,EtherCAT通訊分為 PDO(過程數(shù)據(jù)對(duì)象)周期性實(shí)時(shí)通訊和SDO(服務(wù)數(shù)據(jù)對(duì)象)非周期性郵箱通訊;通過配置分布時(shí)鐘使各從站的本地時(shí)鐘同步到參考時(shí)鐘,令各個(gè)從站的控制任務(wù)能夠同步執(zhí)行;完成配置后便可激活主站,創(chuàng)建和運(yùn)行周期實(shí)時(shí)任務(wù),實(shí)現(xiàn) EtherCAT周期性實(shí)時(shí)通訊的核心功能。
周期實(shí)時(shí)任務(wù)的作用是實(shí)現(xiàn)主站和從站之間過程數(shù)據(jù)的實(shí)時(shí)通信,即主站周期性生成控制指令(邏輯運(yùn)算指令和運(yùn)動(dòng)控制算法)發(fā)送給從站,從站執(zhí)行指令后周期性返回運(yùn)行狀態(tài)[6]。
各項(xiàng)配置完成后激活主站,通過調(diào)用Xenomai實(shí)時(shí)擴(kuò)展的應(yīng)用接口函數(shù) rt_intr_create(…)創(chuàng)建中斷;調(diào)用 rt_intr_enable(…)使能中斷;調(diào)用中斷服務(wù)函數(shù) irq_server (…)執(zhí)行周期實(shí)時(shí)任務(wù);調(diào)用rt_intr_delete(…)可結(jié)束周期實(shí)時(shí)任務(wù)。
主站應(yīng)用程序設(shè)計(jì)完成之后,運(yùn)行應(yīng)用程序便能實(shí)現(xiàn)主站與從站間的通訊。EtherCAT技術(shù)最重要的就是通訊的實(shí)時(shí)性,任何一款開發(fā)的主站都需對(duì)其實(shí)時(shí)性進(jìn)行測(cè)試,實(shí)時(shí)性最重要的指標(biāo)是通信時(shí)的抖動(dòng)量。本測(cè)試方案使用ET2000和Wireshark網(wǎng)絡(luò)分析工具對(duì)主從站通信時(shí)總線上的數(shù)據(jù)幀進(jìn)行抓取分析,同步周期設(shè)置為1ms,從站運(yùn)行CSP(周期同步位置)模式。每條數(shù)據(jù)幀末尾都帶有被ET2000添加的分辨率為納秒的時(shí)間戳,通過分析數(shù)據(jù)幀的內(nèi)容與時(shí)間戳便能方便地計(jì)算出主站通信時(shí)的抖動(dòng)量,從而反映出主站實(shí)時(shí)性的強(qiáng)弱。IgH主站實(shí)時(shí)性的測(cè)試方案如圖4所示。
首先將 ET2000串聯(lián)到主從站之間,其次將ET2000的千兆網(wǎng)口連接到 PC;PC端再運(yùn)行Wireshark網(wǎng)絡(luò)分析工具;最后通過使用Wireshark對(duì)總線上的數(shù)據(jù)幀進(jìn)行抓取并存儲(chǔ)在PC上以便進(jìn)一步分析。測(cè)試實(shí)驗(yàn)平臺(tái)如圖5所示。
圖4 IgH主站實(shí)時(shí)性測(cè)試方案
圖5 IgH主站測(cè)試實(shí)驗(yàn)平臺(tái)
使用ET2000和Wireshark網(wǎng)絡(luò)分析工具抓取到通信數(shù)據(jù)幀后,首先篩選出主站發(fā)出的 PDO數(shù)據(jù)幀;再利用Wireshark的tshark命令將所有篩選出的PDO數(shù)據(jù)幀的時(shí)間戳導(dǎo)出;最后利用Excel統(tǒng)計(jì)出相鄰兩數(shù)據(jù)幀發(fā)送的時(shí)間間隔。
此時(shí)間間隔與設(shè)定的同步周期的偏移量便是IgH主站通信的抖動(dòng)量,偏移量越小說明本文開發(fā)的主站實(shí)時(shí)性越強(qiáng)。為較全面地分析主站的實(shí)時(shí)性,使用開發(fā)好的IgH主站分別與單臺(tái)E28H1型I/O從站、單臺(tái)松下從站、單臺(tái)A1E從站和4臺(tái)A1E從站通訊并測(cè)試其抖動(dòng),測(cè)試結(jié)果如圖6~圖9所示。
圖6 單臺(tái)E28H1型I/O從站周期實(shí)時(shí)任務(wù)抖動(dòng)
圖7 單臺(tái)松下伺服從站周期實(shí)時(shí)任務(wù)抖動(dòng)
圖8 單臺(tái)A1E從站周期實(shí)時(shí)任務(wù)抖動(dòng)
圖9 4臺(tái)A1E伺服從站周期實(shí)時(shí)任務(wù)抖動(dòng)
對(duì)測(cè)試結(jié)果做進(jìn)一步分析,本文開發(fā)的IgH主站的實(shí)時(shí)性測(cè)試統(tǒng)計(jì)結(jié)果如表1所示。
表1 IgH主站實(shí)時(shí)性測(cè)試統(tǒng)計(jì)
由統(tǒng)計(jì)數(shù)據(jù)可知,此主站周期實(shí)時(shí)任務(wù)的抖動(dòng)較低,與單臺(tái)I/O從站通訊時(shí)的抖動(dòng)處于納秒級(jí)別,與伺服從站通訊時(shí)的抖動(dòng)要稍高一些,但也維持在了很低的微秒級(jí)別;與不同類型的伺服從站通訊時(shí)的抖動(dòng)略有差別;與四臺(tái)A1E伺服電機(jī)通訊的最大抖動(dòng)為2μs,僅占整個(gè)通訊周期的0.2%,說明主站運(yùn)行良好且具備較高的實(shí)時(shí)性。
本文介紹了基于IgH EtherCAT Master開源框架開發(fā) EtherCAT主站的簡(jiǎn)要流程;研究了主站應(yīng)用程序的設(shè)計(jì)流程和主站周期任務(wù)的實(shí)現(xiàn)方式;對(duì)開發(fā)完成的主站進(jìn)行了系列性能測(cè)試實(shí)驗(yàn);測(cè)試結(jié)果表明本文設(shè)計(jì)開發(fā)的 EtherCAT主站運(yùn)行正常,且實(shí)時(shí)性較高,與從站通訊時(shí)的抖動(dòng)控制在了幾微秒的范圍內(nèi),再加以優(yōu)化和進(jìn)一步開發(fā)能夠應(yīng)用于多種對(duì)實(shí)時(shí)性要求較高的工控領(lǐng)域。