基于i.MX6處理器的EtherCAT主站的設計

文:2018年第二期

    摘要:工業(yè)以太網(wǎng)現(xiàn)場總線EtherCAT越來越多地應用到工業(yè)控制領域,其中將EtherCAT總線應用到工業(yè)控制系統(tǒng)中的關鍵技術是構(gòu)建EtherCAT主站。本文設計了基于Freescalei.MX6Q處理器EtherCAT主站的解決方案。首先,在i.MX6Q處理器上構(gòu)建了Linux和Xenomai雙內(nèi)核實時操作系統(tǒng);然后使用了開源的IgHEtherCATMaster在其上構(gòu)建嵌入式實時EtherCAT主站;最后,使用設計EtherCAT主站在新時達伺服驅(qū)動器上進行了同步時鐘功能、SYNC中斷和PDI中斷相對位置調(diào)節(jié)功能的開發(fā)。測試結(jié)果表明,在Freescalei.MX6Q處理器上構(gòu)建基于Linux+Xenomai雙內(nèi)核實時操作系統(tǒng)的EtherCAT主站可以滿足高精度的多軸控制系統(tǒng)的聯(lián)動控制。

    隨著高速高精度控制系統(tǒng)的迅速發(fā)展,工業(yè)以太網(wǎng)現(xiàn)場總線在控制系統(tǒng)中的運行越來越廣泛[1]。其中,EtherCAT是一種應用于工業(yè)自動化領域的實時工業(yè)以太網(wǎng)技術,它具有廣泛的適用性,完全符合以太網(wǎng)標準,可以與其他以太網(wǎng)設備及協(xié)議并存于同一總線,從而最大化利用以太網(wǎng)寬帶進行用戶數(shù)據(jù)傳輸。同時,EtherCAT小于100微妙數(shù)據(jù)的刷新周期使其可以用于伺服技術中底層的閉環(huán)控制。EtherCAT還具有很好的同步性能,利用“分布時鐘”機制可以實現(xiàn)各從站節(jié)點之間小于1微妙的時鐘同步精度,這在要求分布系統(tǒng)同時工作的場合顯得極為重要[2]。

    與此同時,ARM嵌入式微處理器正朝著高性能、低功耗的方向發(fā)展,其主頻越來越高,接口功能越來越豐富,而價格則越來越低,因此相較于工業(yè)PC機它更靈活,功耗更小,成本更低。從軟件層面上看,一方面,嵌入式Linux操作系統(tǒng)的結(jié)構(gòu)簡單,軟件資源豐富,可靠性和重構(gòu)性都很強,唯一的不足是它本身不具備實時性,但是經(jīng)過實時性的擴展或改造,可以使其滿足機器人控制系統(tǒng)苛刻的實時性要求。另一方面,成熟的開源EtherCAT主站軟件,像Etherlab的IgHEtherCATMaster,使得一個完整的EtherCAT主站很容易的構(gòu)建在嵌入式Linux系統(tǒng)之上。

    因此,本文采用嵌入式Linux和Xenomai雙內(nèi)核實時操作系統(tǒng)方案,結(jié)合高性能的嵌入式4核處理器i.MX6Q,實現(xiàn)基于i.MX6Q的嵌入式實時操作系統(tǒng),并在此基礎上使用IgHEtherCATMaster開源組件構(gòu)建嵌入式實時EtherCAT主站,并在構(gòu)建的嵌入式EtherCAT主站上進行了多軸同步控制性能的測試,以及SYNC中斷和PDI(ProcessDataInterface)中斷相對位置調(diào)節(jié)功能的測試。

1嵌入式實時Linux系統(tǒng)的實現(xiàn)

    目前改進Linux系統(tǒng)實時性的方法[3]主要有兩種,一種是采用雙內(nèi)核結(jié)構(gòu),即在標準的Linux內(nèi)核中嵌套進一個實時的內(nèi)核,將其改造成為具有雙內(nèi)核的異構(gòu)系統(tǒng)。所有實時任務都運行在微內(nèi)核上,非實時的Linux則作為實時內(nèi)核的一項優(yōu)先級最低的任務來托管所有的非實時任務,其中典型的代表有RTAI、Xenomai。另一種是直接對Linux內(nèi)核進行改造,如中斷線程化、可搶占的自旋鎖等,其中的代表為PREEMPT_RTLinux。

    在這些改進Linux實時性的技術中,RTAI雖然實時性能比較好,但對ARM的支持不夠完善;PREEMPT_RTLinux是針對標準Linux內(nèi)核設計的通用可移植的實時補丁,但其實時性較差;Xenomai支持的架構(gòu)很多,對本文中使用的Freescalei.MX6Q處理器支持也比較完善,比較適合用來構(gòu)建嵌入式實時Linux系統(tǒng)。

1.1Xenomai實時補丁

    Xenomai[4]作為一個自由軟件項目,完全遵循GNU/Linux自由軟件協(xié)議。Xenomai的實現(xiàn)主要是基于ADOES(AdaptiveDomainEnvironmentforOperatingSystems),通過在操作系統(tǒng)和硬件之間插入一個由軟件實現(xiàn)的ADOES層,來管理和分配硬件層產(chǎn)生的中斷信號。ADOES之上可以存在多個內(nèi)核域,可以對每個域的優(yōu)先級進行設置,來實現(xiàn)任務優(yōu)先處理的目的。Xenomai能提供多種針對傳統(tǒng)的實時操作系統(tǒng)的模擬器,該類模擬器可以提供對應的實時程序運行需要的API。Xenomai目前支持Vxworks、pSOS+、POSIX、VRTX等多種成熟實時操作系統(tǒng)的API。

1.2i.MX6Q處理器

    i.MX6Q[5]處理器是Freescale的一款基于ARMCortex-A9的高性能四核處理器,其主頻高達1.2GHz。它具有32KB/32KB的L1指令/數(shù)據(jù)高速緩存;動態(tài)電壓頻率調(diào)節(jié);內(nèi)置電源管理模塊;強大的圖像加速;同時Freescale為其提供了完整的Linux板級支持包,使其非常容易構(gòu)建嵌入式Linux系統(tǒng)。

1.3構(gòu)建嵌入式實時Linux系統(tǒng)

    構(gòu)建Linux+Xenomai雙內(nèi)核實時操作系統(tǒng)以i.MX6Q為硬件平臺,采用Freescale板級支持包中的imx_3.0.35_4.0.0和xenomai-2.6.3來構(gòu)建,步驟如下。

    解壓Linux內(nèi)核源碼和Xenomai源碼,并進入xenomai源碼目錄,給Linux內(nèi)核打Xenomai補丁并配置內(nèi)核,依次執(zhí)行以下命令:

$./scripts/prepare-kernel.sh\--linux=~/imx_3.0.35_4.0.0\--adeos=~/xenomai-2.6.3/ksrc/arch/arm/patches/mxc/adeos-ipipe-3.0.43-mx6q-1.18-12-pre.patch\

--arch=arm

$./scripts/prepare-kernel.sh\--linux=~/imx_3.0.35_4.0.0\

--adeos=~/xenomai-2.6.3-imx6q/ksrc/arch/arm/patches/mxc/adeos-ipipe-3.0.43-arm-1.18-13.patch\

--arch=arm

$./scripts/prepare-kernel.sh\--linux=~/imx_3.0.35_4.0.0\--adeos=~/xenomai-2.6.3-imx6q/ksrc/arch/arm/patches/mxc/adeos-ipipe-3.0.43-mx6q-1.18-12-post.patch\

--arch=arm

    構(gòu)建成功后,編譯已經(jīng)打上Xenomai實時補丁的Linux內(nèi)核源碼,燒寫Linux鏡像、根文件系統(tǒng),上電啟動EtherCAT主站。使用dmesg命令檢查Xenomai實時內(nèi)核加載情況,如圖1所示,

圖1Xenomai實時內(nèi)核打印信息

    最后進行Xenomai用戶空間實時任務調(diào)度延遲測試[6],測試結(jié)果如表1所示,

    通過測試,可以看到在Xenomai域用戶空間,實時任務的調(diào)度延遲不受Linux域負載大小的影響;任務調(diào)度最大延遲約10微妙,平均延遲約3.5微妙,實時響應性能非常出色,可以滿足高精度多軸控制系統(tǒng)的聯(lián)動控制要求。

2嵌入式EtherCAT主站的實現(xiàn)

2.1IgHEtherCATMaster

    IgHEtherCATMaster[7]是一個基于Linux操作系統(tǒng)的開源EtherCAT主站軟件,使用它可以很容易的實現(xiàn)EtherCAT主站軟件。它支持RTAI、Xenomai、PREEMPT_RT等Linux的實時擴展;此外它提供了常見以太網(wǎng)EtherCAT網(wǎng)卡驅(qū)動,同時也提供了基于Linux內(nèi)核協(xié)議棧的generic驅(qū)動;分布時鐘功能可以同步從站時鐘到參考時鐘,也可同步從站時鐘到主站時鐘;同時還支持CoE(CANopenoverEtherCAT)、EoE(EthernetoverEtherCAT)、FoE(FileAccessoverEtherCAT)、SoE(ServoProfileoverEtherCAT)等協(xié)議。

2.2構(gòu)建嵌入式EtherCAT主站

    IgHEtherCATMaster是針對通用的PC平臺設計的,默認支持x86體系結(jié)構(gòu)的處理器和PCI接口的網(wǎng)卡,因此關鍵的技術難點是針對ARM架構(gòu)的i.MX6Q處理器和嵌入式網(wǎng)卡移植本地EtherCAT網(wǎng)卡設備驅(qū)動。

2.2.1本地EtherCAT網(wǎng)卡設備驅(qū)動的移植

    如何根據(jù)本地EtherCAT網(wǎng)卡設備驅(qū)動的實現(xiàn)原理,修改i.MX6Q處理器的網(wǎng)絡設備驅(qū)動程序以兼容EtherCAT,并沒有統(tǒng)一的標準方法,只有一些通用的規(guī)則,這些規(guī)則總結(jié)如下:

    (1)對所有的EtherCAT設備必須避免調(diào)用netif_*()函數(shù),因為EtherCAT設備不經(jīng)過Linux內(nèi)核的網(wǎng)絡協(xié)議棧,所以不能調(diào)用網(wǎng)絡協(xié)議棧提供的這些接口。

    (2)EtherCAT設備驅(qū)動是在輪詢的方式下工作,對EtherCAT設備的所有操作都是在無中斷的情況下進行的,因此應避免使用中斷和調(diào)用中斷注冊程序;同時,網(wǎng)卡驅(qū)動中無中斷而使用輪詢方式,數(shù)據(jù)報文發(fā)送完成中斷處理函數(shù)和數(shù)據(jù)報文發(fā)送函數(shù)不會并發(fā)執(zhí)行,不再需要自旋鎖保護發(fā)送緩沖區(qū)。

    (3)主站在初始化的時候會分配兩個固定的套接字緩沖區(qū)(socketbuffer),在每次發(fā)送的數(shù)據(jù)報文時,會先在這個sockerbuffer填充新的EtherCAT數(shù)據(jù)幀,然后將它傳遞給ndo_start_xmit回調(diào)函數(shù)。在整個過程中不會創(chuàng)建新的socketbuffer,因此網(wǎng)絡設備驅(qū)動也不能像往常一樣釋放socketbuffer。

圖26軸同步測試平臺

2.2.2EtherCAT主站編譯移植

    解壓EtherCATMaster源碼,并進入EtherCATMaster目錄進行配置、編譯和安裝,依次執(zhí)行命令如下:

$./configure\

--prefix=~/ethercat-1.5.2/install

--enable-rtdm\

--with-xenomai-dir=~/xeno/usr/xenomai\

--enable-hrtimer\

--enable-generic=no\

--enable-8139too=no\

--enable-fec=yes\

--with-linux-dir=~/imx_3.0.35_4.0.0\

--build=i686-pc-linux-gnu\

--host=arm-linux-gnueabihf\

$make;makemodules

$makeinstall;makemodules_install

    在配置中,通過--prefix選項指定安裝路徑;--enable-rtdm表示使用Xenomai實時補??;--with-xenomai-dir指定Xenomai庫和頭文件所在的目錄;--enable-hrtimer表示使用內(nèi)核的高分辨率定時器;--enable-fec表示使能i.MX6Q處理器的本地EtherCAT網(wǎng)絡設備驅(qū)動;--with-linux-dir指定使用的linux內(nèi)核路徑;--build和—host分別表示編譯EtherCATMaster源碼所使用的平臺和編譯后得到的鏡像在哪個平臺上運行。

2.3EtherCAT主站同步性能測試

    在機器人控制系統(tǒng)中,多軸同步性能直接決定著系統(tǒng)多軸聯(lián)動的精度。EtherCAT可以實現(xiàn)從站之間精確的時鐘同步控制,因此本文著重測試將嵌入式實時EtherCAT主站應用到機器人控制系統(tǒng)中后的多軸同步控制性能。測試平臺如圖2所示,其中EtherCAT從站使用新時達的RS2200、RS2303伺服驅(qū)動器,主站通訊模式設置為DC模式,伺服驅(qū)動器運行模式采用周期同步位置模式,周期為1ms,使用雙通道示波器測試第一個伺服驅(qū)動器和最后一個伺服驅(qū)動器SYNC中斷相對時間差。

    多次測量第一個伺服驅(qū)動器和最后一個伺服驅(qū)動器SYNC中斷時間差,該差值小于60ns,滿足時鐘同步的要求,表明文本構(gòu)建的實時嵌入式EtherCAT主站可以實現(xiàn)精確的多軸同步控制。如圖3

圖3SYNC中斷時間差

2.4SYNC中斷和PDI中斷相對位置調(diào)節(jié)算法

    IgHEtherCATMaster主站源碼雖然實現(xiàn)了EtherCAT主站時鐘同步到第一個具有DC(DistributedClocks)功能的EtherCAT從站時鐘,也實現(xiàn)了EtherCAT從站時鐘同步到EtherCAT主站時鐘,但沒有實現(xiàn)伺服驅(qū)動器中ET1100EtherCAT控制器芯片中SYNC中斷和PDI相對位置偏移。本文為了實現(xiàn)該功能,對IgHEtherCATMaster源碼進行修改:將EtherCAT源碼驅(qū)動中發(fā)送給ET1100產(chǎn)生SYNC中斷開始的時間tsync_start,封裝為API供用戶空間程序調(diào)用。用戶空間程序進入周期任務,經(jīng)過主站時鐘同步到參考從站時鐘算法處理,SYNC中斷和PDI中斷相對位置偏移不再變化,即EtherCAT主站時鐘已經(jīng)同步到參考從站時鐘。此時,我們可以獲取參考從站時間tref_time,則相對位置偏移Toffset可通過如下公式1計算得出,其中T為通信周期。

(1)

     假設我們想讓PDI中斷相對于SYNC中斷偏移50%,即PDI中斷在兩個SYNC中斷中間,其中Tsleep為周期任務下個周期睡眠時間,可應用如下公式2:

(2)

    經(jīng)過多次測試表明,經(jīng)過上述算法處理后,PDI中斷相對SYNC中斷的位置,,確實在我們設定的位置,誤差范圍在-40us-40us,具體效果如圖4所示,

圖4SYNC中斷和PDI中斷相對位置圖

3結(jié)束語

     本文首先分析了Xenomai實時補丁的實現(xiàn)機制,在基于Freescalei.MX6Q處理器上采用Xenomai實時補丁擴展的方法構(gòu)建嵌入式實時

    Linux操作系統(tǒng)、同時詳細的闡述了IgHEtherCATMaster開源軟件組成模塊的功能,然后將其移植到構(gòu)建好的嵌入式實時系統(tǒng)上,實現(xiàn)了嵌入式實時EtherCAT主站,然后在構(gòu)建的嵌入式EtherCAT主站上進行了多軸同步控制性能的測試,以及SYNC中斷和PDI中斷相對位置調(diào)節(jié)功能的測試。實驗結(jié)果表明在基于Linux+Xenomai+i.MX6Q處理器上構(gòu)建的嵌入式實時EtherCAT主站具有良好的實時性和精確的多軸同步控制性能,可以滿足機器人控制系統(tǒng)的要求。

中傳動網(wǎng)版權(quán)與免責聲明:

凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.surachana.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權(quán)利。

伺服與運動控制

關注伺服與運動控制公眾號獲取更多資訊

直驅(qū)與傳動

關注直驅(qū)與傳動公眾號獲取更多資訊

中國傳動網(wǎng)

關注中國傳動網(wǎng)公眾號獲取更多資訊

熱搜詞
  • 運動控制
  • 伺服系統(tǒng)
  • 機器視覺
  • 機械傳動
  • 編碼器
  • 直驅(qū)系統(tǒng)
  • 工業(yè)電源
  • 電力電子
  • 工業(yè)互聯(lián)
  • 高壓變頻器
  • 中低壓變頻器
  • 傳感器
  • 人機界面
  • PLC
  • 電氣聯(lián)接
  • 工業(yè)機器人
  • 低壓電器
  • 機柜
回頂部
點贊 0
取消 0
往期雜志
  • 2025年第一期

    2025年第一期

    伺服與運動控制

    2025年第一期

  • 2024年第六期

    2024年第六期

    伺服與運動控制

    2024年第六期

  • 2024年第五期

    2024年第五期

    伺服與運動控制

    2024年第五期

  • 2024年第四期

    2024年第四期

    伺服與運動控制

    2024年第四期

  • 2024年第三期

    2024年第三期

    伺服與運動控制

    2024年第三期