虹科KPA EtherCAT主站是一款協(xié)議棧產(chǎn)品,能夠使用戶快速利用EtherCAT技術(shù)的所有好處,例如實(shí)時(shí)操作、極短的循環(huán)時(shí)間、以及最低成本的最高性能。該協(xié)議棧的先進(jìn)架構(gòu)專注于可移植到不同的操作系統(tǒng),可適配到各種硬件平臺、并且可通過基礎(chǔ)(Class B)、標(biāo)準(zhǔn)(Class A)和超值包進(jìn)行縮放。本篇文章將介紹虹科KPA EtherCAT主站軟件如何基于Xilinx ZYNQ UltraScale+做移植測試。
# Description
開發(fā)環(huán)境
#硬件開發(fā)板:Xilinx HW-Z1-ZCU102 revision1.1
#EtherCAT主站軟件開發(fā)包:
MDK_xilinx-2018.3_freertos_a53_trial_v2.4.48714.0-release.zip
HW_SAMPLE_xilinx-2018.3_freertos_a53_trial_v2.4.48714.0-release.zip
備注:由于前期軟件開發(fā)包是基于revision1.0的硬件以及vivado2018.3移植測試的,導(dǎo)致該軟件包在vivado2018.3和新版本硬件移植測試出現(xiàn)問題,具體問題是制作完boot.bin后,上電沒法啟動運(yùn)行;查了一下xilinx官網(wǎng),說是新版本硬件需要使用vivado2019.1及其以上版本,后來在vivado 2019.1重新創(chuàng)建IPcore硬件工程,工程文件是zcu102_freeRTOS,重新生成bit文件(zcu102_freertos\project_1\project_1.sdk\design_1_wrapper_hw_platform_0)和fsbl.elf文件(zcu102_freertos\project_1\project_1.sdk\fsbl\Release)覆蓋軟件包原路徑(\\externals\boot)的bit文件和fsbl.elf,問題解決;
Step1 軟件安裝
1. 安裝KPA studio軟件,Studio_v1.12.417.0_x86.zip;2. 安裝基于windows的主站插件,MRT_WIN32_TRIAL_v1.6.44171.0.msi;3. 安裝cmake環(huán)境,可到cmake官網(wǎng)下載exe安裝,安裝后查詢到cmake版本如下:參考《KPA Studio簡易操作手冊.pdf》使用EtherCAT配置軟件,導(dǎo)出網(wǎng)絡(luò)配置文件/ENI文件,可命名為master.xml或者其他名字,需與mkpa_config.h中命名保持一致,導(dǎo)出的ENI文件,格式一定要選擇null-terminated格式。
Step2 軟件編譯
MDK_xilinx-2018.3_freertos_a53_trial_v2.4.48714.0-release.zip解壓到mdk_a53文件夾下
進(jìn)入\mdk_a53\samples路徑下修改對應(yīng)樣例程序,此處每個(gè)不同的樣例程序包含不同的API,具有不同的功能,此處以24_DriveRotationCiA402為例,這是一個(gè)簡單運(yùn)行單軸伺服的樣例程序,為了適配邁信伺服驅(qū)動器,需保持C文件中的描述和ENI文件描述一致,修改后保存
進(jìn)入\mdk_a53下,打開build.bat,修改編譯器路徑,路徑是xilinx SDK安裝路徑
運(yùn)行cmd,進(jìn)入該路徑下,運(yùn)行build.bat,編譯所有樣例代碼,包括編譯24樣例,在\build\samples路徑下生成24_DriveRotationCiA402.elf文件
Step3 創(chuàng)建和運(yùn)行boot.bin
進(jìn)入mdk_a53\externals\boot路徑,根據(jù)readme文件以及24_DriveRotationCiA402.bif文件;
拷貝zcu102_freeRTOS內(nèi)vivado工程生成的design_1_wrapper.bit()文件到該路徑下,覆蓋原來bit文件;
zcu102_freertos\project_1\project_1.sdk\fsbl\Release下的fsbl.elf拷貝到該路徑下,覆蓋原來fsbl.elf文件;
拷貝\build\samples路徑下生成的24_DriveRotationCiA402.elf到該路徑下;
拷貝生成的ENI文件(master.xml)文件到該路徑下
打開Xilinx XSCT tool進(jìn)入到\externals\boot路徑下,生成boot.bin
將boot.bin文件拷貝到SD卡中,設(shè)置開發(fā)板SD卡啟動,上電運(yùn)行
Step4 性能測試
一般情況下EtherCAT主站性能測試會關(guān)注主站通訊周期,circle time是否穩(wěn)定,抖動多少,因此可以設(shè)置在不同的circle time,比如2ms,1ms,500us,250us,125us等條件下測試抖動,可以采用第三方的抓包工具+wireshark進(jìn)行報(bào)文分析,不同主站周期,需要修改代碼以及ENI文件的circle time,此處以1ms主站周期,郵箱任務(wù)周期是5ms(主站周期的5倍)抓包方式,主站和從站直接接入第三方的抓包工具,連接方式如下示意圖,可以先運(yùn)行主站,待主從通訊穩(wěn)定后,再進(jìn)行數(shù)據(jù)抓包,這樣抓出來的數(shù)據(jù)包就是pdo數(shù)據(jù)/過程數(shù)據(jù),也可以主站啟動前,開始抓包,這樣就可以把整個(gè)啟動過程的數(shù)據(jù)抓取出來,但是過濾時(shí),op前的報(bào)文數(shù)據(jù)就不是我們需要分析的數(shù)據(jù)了。
對Wireshark數(shù)據(jù)包進(jìn)行針對性分析,設(shè)置時(shí)間顯示格式如下:
使用ecat.ado == 0x130命令,過濾出從站在第幾條報(bào)文處進(jìn)入op狀態(tài)的,這里是33900,意味著33900前的報(bào)文不能用于分析circle time,因?yàn)閜do數(shù)據(jù)/周期性數(shù)據(jù)只在從站進(jìn)入op后才被發(fā)送分析周期性報(bào)文,注意到每個(gè)周期性報(bào)文包含三個(gè)子報(bào)文(邏輯尋址)以及一個(gè)DC相關(guān)的ARMW命令過濾出周期性報(bào)文,使用該指令ecat.sub1.cmd == LRD && ecat.sub1.cnt == 0,過濾出子報(bào)文1為LRD且計(jì)算器值為0(表示從主站發(fā)出,未經(jīng)過從站)的周期性報(bào)文,選擇三角進(jìn)行報(bào)文排序,可以是從小到大,或者從大到小最小周期是999.496us
最大周期1000.536us
結(jié)論:可以看出1ms主站周期下,基于zcu102開發(fā)板,測試出來的主站周期的抖動是ns級別,實(shí)際在500us和250us,125us條件下,抖動都是在ns級別。
-
測試
+關(guān)注
關(guān)注
8文章
5162瀏覽量
126469
發(fā)布評論請先 登錄
相關(guān)推薦
評論