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