技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于i.MX6處理器的EtherCAT主站的設(shè)計

基于i.MX6處理器的EtherCAT主站的設(shè)計

時間:2018-05-03 15:37:09來源:中國傳動網(wǎng)

導(dǎo)語:?工業(yè)以太網(wǎng)現(xiàn)場總線 EtherCAT越來越多地應(yīng)用到工業(yè)控制領(lǐng)域,其中將 EtherCAT 總線應(yīng)用到工業(yè)控制系統(tǒng)中的關(guān)鍵技術(shù)是構(gòu)建EtherCAT主站。

摘要:工業(yè)以太網(wǎng)現(xiàn)場總線EtherCAT越來越多地應(yīng)用到工業(yè)控制領(lǐng)域,其中將EtherCAT總線應(yīng)用到工業(yè)控制系統(tǒng)中的關(guān)鍵技術(shù)是構(gòu)建EtherCAT主站。本文設(shè)計了基于Freescalei.MX6Q處理器EtherCAT主站的解決方案。首先,在i.MX6Q處理器上構(gòu)建了Linux和Xenomai雙內(nèi)核實時操作系統(tǒng);然后使用了開源的IgHEtherCATMaster在其上構(gòu)建嵌入式實時EtherCAT主站;最后,使用設(shè)計EtherCAT主站在新時達(dá)伺服驅(qū)動器上進(jìn)行了同步時鐘功能、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)中的運(yùn)行越來越廣泛[1]。其中,EtherCAT是一種應(yīng)用于工業(yè)自動化領(lǐng)域的實時工業(yè)以太網(wǎng)技術(shù),它具有廣泛的適用性,完全符合以太網(wǎng)標(biāo)準(zhǔn),可以與其他以太網(wǎng)設(shè)備及協(xié)議并存于同一總線,從而最大化利用以太網(wǎng)寬帶進(jìn)行用戶數(shù)據(jù)傳輸。同時,EtherCAT小于100微妙數(shù)據(jù)的刷新周期使其可以用于伺服技術(shù)中底層的閉環(huán)控制。EtherCAT還具有很好的同步性能,利用“分布時鐘”機(jī)制可以實現(xiàn)各從站節(jié)點之間小于1微妙的時鐘同步精度,這在要求分布系統(tǒng)同時工作的場合顯得極為重要[2]。

與此同時,ARM嵌入式微處理器正朝著高性能、低功耗的方向發(fā)展,其主頻越來越高,接口功能越來越豐富,而價格則越來越低,因此相較于工業(yè)PC機(jī)它更靈活,功耗更小,成本更低。從軟件層面上看,一方面,嵌入式Linux操作系統(tǒng)的結(jié)構(gòu)簡單,軟件資源豐富,可靠性和重構(gòu)性都很強(qiáng),唯一的不足是它本身不具備實時性,但是經(jīng)過實時性的擴(kuò)展或改造,可以使其滿足機(jī)器人控制系統(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),并在此基礎(chǔ)上使用IgHEtherCATMaster開源組件構(gòu)建嵌入式實時EtherCAT主站,并在構(gòu)建的嵌入式EtherCAT主站上進(jìn)行了多軸同步控制性能的測試,以及SYNC中斷和PDI(ProcessDataInterface)中斷相對位置調(diào)節(jié)功能的測試。

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

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

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

1.1Xenomai實時補(bǔ)丁

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

1.2i.MX6Q處理器

i.MX6Q[5]處理器是Freescale的一款基于ARMCortex-A9的高性能四核處理器,其主頻高達(dá)1.2GHz。它具有32KB/32KB的L1指令/數(shù)據(jù)高速緩存;動態(tài)電壓頻率調(diào)節(jié);內(nèi)置電源管理模塊;強(qiáng)大的圖像加速;同時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源碼,并進(jìn)入xenomai源碼目錄,給Linux內(nèi)核打Xenomai補(bǔ)丁并配置內(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實時補(bǔ)丁的Linux內(nèi)核源碼,燒寫Linux鏡像、根文件系統(tǒng),上電啟動EtherCAT主站。使用dmesg命令檢查Xenomai實時內(nèi)核加載情況,如圖1所示,

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

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

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

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

2.1IgHEtherCATMaster

IgHEtherCATMaster[7]是一個基于Linux操作系統(tǒng)的開源EtherCAT主站軟件,使用它可以很容易的實現(xiàn)EtherCAT主站軟件。它支持RTAI、Xenomai、PREEMPT_RT等Linux的實時擴(kuò)展;此外它提供了常見以太網(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平臺設(shè)計的,默認(rèn)支持x86體系結(jié)構(gòu)的處理器和PCI接口的網(wǎng)卡,因此關(guān)鍵的技術(shù)難點是針對ARM架構(gòu)的i.MX6Q處理器和嵌入式網(wǎng)卡移植本地EtherCAT網(wǎng)卡設(shè)備驅(qū)動。

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

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

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

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

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

圖26軸同步測試平臺

2.2.2EtherCAT主站編譯移植

解壓EtherCATMaster源碼,并進(jìn)入EtherCATMaster目錄進(jìn)行配置、編譯和安裝,依次執(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實時補(bǔ)??;--with-xenomai-dir指定Xenomai庫和頭文件所在的目錄;--enable-hrtimer表示使用內(nèi)核的高分辨率定時器;--enable-fec表示使能i.MX6Q處理器的本地EtherCAT網(wǎng)絡(luò)設(shè)備驅(qū)動;--with-linux-dir指定使用的linux內(nèi)核路徑;--build和—host分別表示編譯EtherCATMaster源碼所使用的平臺和編譯后得到的鏡像在哪個平臺上運(yùn)行。

2.3EtherCAT主站同步性能測試

在機(jī)器人控制系統(tǒng)中,多軸同步性能直接決定著系統(tǒng)多軸聯(lián)動的精度。EtherCAT可以實現(xiàn)從站之間精確的時鐘同步控制,因此本文著重測試將嵌入式實時EtherCAT主站應(yīng)用到機(jī)器人控制系統(tǒng)中后的多軸同步控制性能。測試平臺如圖2所示,其中EtherCAT從站使用新時達(dá)的RS2200、RS2303伺服驅(qū)動器,主站通訊模式設(shè)置為DC模式,伺服驅(qū)動器運(yùn)行模式采用周期同步位置模式,周期為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源碼進(jìn)行修改:將EtherCAT源碼驅(qū)動中發(fā)送給ET1100產(chǎn)生SYNC中斷開始的時間tsync_start,封裝為API供用戶空間程序調(diào)用。用戶空間程序進(jìn)入周期任務(wù),經(jīng)過主站時鐘同步到參考從站時鐘算法處理,SYNC中斷和PDI中斷相對位置偏移不再變化,即EtherCAT主站時鐘已經(jīng)同步到參考從站時鐘。此時,我們可以獲取參考從站時間tref_time,則相對位置偏移Toffset可通過如下公式1計算得出,其中T為通信周期。

(1)

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

(2)

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

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

3結(jié)束語

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

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

標(biāo)簽:

點贊

分享到:

上一篇:海為PLC在面袋對縫機(jī)上的應(yīng)用

下一篇:伺服電機(jī)一直在使用,但它是...

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

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

相關(guān)資訊

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號