杜佐勤+++余慶漢
摘 要:EtherCAT是一種實時的工業(yè)以太網(wǎng)技術(shù),使用特殊的以太網(wǎng)類型,過程數(shù)據(jù)可以在以太網(wǎng)幀內(nèi)直接傳輸。EtherCAT數(shù)據(jù)幀在從站節(jié)點是通過硬件進行處理,只有很小的延時。文章介紹EtherCAT協(xié)議原理和特點,并通過EtherCAT主站和從站的軟硬件設(shè)計,實現(xiàn)了倒車影像的采集傳輸和顯示。倒車影像的數(shù)據(jù)量比較大,實時性要求很高,通過EtherCAT網(wǎng)絡(luò)傳輸能夠很好地解決倒車影像的實時同步顯示。
關(guān)鍵詞:EtherCAT協(xié)議;IMX6Q;可視倒車;ET1100
1 概述
隨著汽車安全監(jiān)控需求的日益增加,動態(tài)圖像信息需要實現(xiàn)同步實時傳輸,傳統(tǒng)的Ethernet、USB等通訊方式已經(jīng)滿足不了需求。EtherCAT是由德國自動化公司BECKHOFF于2003年提出的實時工業(yè)以太網(wǎng)技術(shù)[1]。EtherCAT技術(shù)傳輸速度快,延時很小,一幀EtherCAT幀可以傳輸1400多字節(jié)的數(shù)據(jù),可以滿足大數(shù)據(jù)的實時傳輸。
本文章介紹了一種采用實時以太網(wǎng)EtherCAT技術(shù),倒車影像采集器作為從站,將高度壓縮的倒車影像數(shù)據(jù)實時傳輸?shù)紼therCAT主站進行實時顯示。整個設(shè)計采用主從模式,系統(tǒng)采用飛思卡爾IMX6Q作為EtherCAT主站,采用飛思卡爾IMX6Q+Beckhoff公司的ET1100作為從站。
2 EtherCAT原理和特點
EtherCAT是目前傳輸最快的工業(yè)以太網(wǎng)之一,EtherCAT使用標(biāo)準(zhǔn)的以太網(wǎng)電纜進行傳輸。EtherCAT采用主從模式,從站節(jié)點可以連接成總線型、星型等幾乎所有的拓?fù)浣Y(jié)構(gòu)[2]。
EtherCAT節(jié)點的順序和網(wǎng)絡(luò)中的以太網(wǎng)端子的物理順序無關(guān),節(jié)點間可以通過組播、廣播和多播的方式實現(xiàn)通訊。標(biāo)準(zhǔn)的以太網(wǎng)幀可以包含一個或多個子報文,多個從站節(jié)點可以使用同一EtherCAT幀進行通訊。表1是標(biāo)準(zhǔn)的EtherCAT幀結(jié)構(gòu),其中包括目的地址、源地址、幀類型以及報文數(shù)據(jù)和幀校驗。
在EtherCAT系統(tǒng)中,通過主站發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。數(shù)據(jù)幀由主站發(fā)出,經(jīng)過第一個從站時進行解碼,后續(xù)從站不需要再進行解碼操作。數(shù)據(jù)幀經(jīng)過從站節(jié)點時,每個節(jié)點可以根據(jù)邏輯地址在屬于自己的報文中進行數(shù)據(jù)的讀取和寫入,當(dāng)節(jié)點根據(jù)報文頭中的命令成功對數(shù)據(jù)幀進行操作后,從站會將該報文的WKC寄存器進行加1。數(shù)據(jù)幀經(jīng)過所有從站節(jié)點后由EtherCAT系統(tǒng)中的末端節(jié)點將數(shù)據(jù)幀直接返回主站,主站比較返回報文中的WKC值進行校驗數(shù)據(jù)幀的正確性。
3 系統(tǒng)硬件設(shè)計
EtherCAT從站硬件平臺由兩個硬件模塊組成,一個是基于飛思卡爾IMX6Q的視頻采集模塊,另一個是EtherCAT實時數(shù)據(jù)傳輸模塊(ESC從站從站控制器)。整體設(shè)計是從站處理器IMX6Q通過CCD攝像頭從外部采集到高清視頻數(shù)據(jù)進行H264壓縮,然后將壓縮后的數(shù)據(jù)寫入EtherCAT實時傳輸模塊。EtherCAT實時傳輸模塊主要任務(wù)是將壓縮后的視頻數(shù)據(jù)嵌入到EtherCAT幀中進行傳輸。
圖像采集是基于IMX6Q的CCD攝像頭,CCD攝像頭通過TVP5150視頻采集芯片進行采集視頻數(shù)據(jù),經(jīng)過IMX6Q進行硬件H264壓縮編碼。圖1為TVP5150芯片接口電路圖,TVP5150芯片通過I2C總線進行初始化配置,數(shù)據(jù)接口連接到IMX6Q的CSI0接口。
通過CCD采集的視頻數(shù)據(jù)量比較大,進行實時網(wǎng)絡(luò)傳輸會產(chǎn)生延遲。H264圖像壓縮比大約為102:1,CCD攝像頭采集一秒為30幀視頻圖像,經(jīng)過H264壓縮后數(shù)據(jù)量大大減少,加上EtherCAT傳輸速度非???,視頻數(shù)據(jù)可以達到很好的實時傳輸和顯示效果。
ET1100從站控制芯片主要負(fù)責(zé)接收、處理和轉(zhuǎn)發(fā)主站發(fā)送的EtherCAT幀,解析主站發(fā)送的命令并執(zhí)行。ESC芯片通過內(nèi)部的硬件完成EtherCAT數(shù)據(jù)幀處理和轉(zhuǎn)發(fā),數(shù)據(jù)傳輸過程產(chǎn)生大約只有10ns的時間延遲[3]。
ESC從站控制芯片通過配置E2PROM相應(yīng)寄存器來實現(xiàn)數(shù)據(jù)接口模式。從站可以配置成I/O模式、微處理器模式和SPI模式。
I/O模式為簡單從站控制方式,ESC直接對I/O端子進行控制,可以達到非常快的刷新速度??刂?00個輸入輸出數(shù)據(jù)均為8字節(jié)的伺服軸只需要100us[4]。微處理器模式和SPI模式則是復(fù)雜從站控制模式,ESC中的數(shù)據(jù)通過微處理器進行讀寫和處理。
ET1100功能的配置是通過芯片的配置引腳來完成,引腳配置就是通過對引腳接上上拉或下拉電阻,連接上拉電阻表示配置為1,連接下拉電阻表示配置為0。ET1100芯片上電后會自動將配置引腳的信號讀取寫入到配置寄存器中,芯片掉電或復(fù)位后仍然可以讀取配置引腳的配置信息。
本設(shè)計采用ET1100作為MAC控制芯片,接口電路如圖2所示,ET1100與物理層芯片PHY之間的接口通過MII連接,MII是將不同類型的PHY與相同MAC相連接的通用總線。
EtherCAT主站控制器對硬件沒有特別的要求,只需要控制器帶有普通的以太網(wǎng)卡。主站是基于飛思卡爾I.MX6系列處理器,為高清視頻處理提供硬件編解碼。
主站除了CPU外圍基礎(chǔ)的電路之外,只需要擴展一個普通的以太網(wǎng)接口即可以配置成EtherCAT主站。顯示器采用7寸電容屏,分辨率是800*480。
4 系統(tǒng)軟件設(shè)計
4.1 從站軟件設(shè)計
EtherCAT從站軟件設(shè)計主要分為兩部分,分別是CCD攝像頭采集并進行H264壓縮和從站控制芯片ET1100的配置。
TVP5150的配置不會很復(fù)雜,主要是通過I2C來進行配置,比如色調(diào),對比度,亮度,飽和度和銳度等等。需要在內(nèi)核源碼中添加一個支持TVP5150的I2C設(shè)備,TVP5150的I2C地址由PIN11來決定,上拉為BAH,下拉為B8H。
驅(qū)動程序主要是通過I2C來對TVP5150寄存器進行設(shè)置,主要是0x03,0x15,0xca,0x04,0x0d等,通過0x1a和0x1b是設(shè)置輸入通道。
通過對TVP5150正確配置后,對設(shè)備節(jié)點video0進行操作,可以獲取視頻原始數(shù)據(jù)。
采用飛思卡爾的IMX6Q處理器,使用libvpu.so和libipu.so硬件編解碼庫可以對視頻數(shù)據(jù)進行格式轉(zhuǎn)換和H264硬件壓縮。
ET1100芯片的FMMU寄存器配置通過邏輯映射方式。EtherCAT幀從站報文最大可以包含1486字節(jié)的數(shù)據(jù),這里傳輸一路視頻的情況下,可以設(shè)置傳輸?shù)臄?shù)據(jù)長度為1480字節(jié),一路視頻數(shù)據(jù)需要使用一個SM緩存管理。對應(yīng)表2的FMMU配置,設(shè)置SM0的起始地址為0x1000,數(shù)據(jù)長度為1480Byte,主站可以通過相應(yīng)的邏輯地址對從站進行尋址并訪問。
設(shè)置從站報文頭的起始地址為0x00000000、字節(jié)長度為1480、命令為LRD(讀),就可以實現(xiàn)對視頻數(shù)據(jù)的讀取。
從站程序流程圖如圖3所示,從站主要任務(wù)是采集視頻數(shù)據(jù),接收主站數(shù)據(jù)幀,根據(jù)主站發(fā)送的命令進行數(shù)據(jù)讀寫和執(zhí)行相應(yīng)命令。
4.2 主站軟件設(shè)計
大多數(shù)EtherCAT主站都是使用第三方提供的軟件協(xié)議棧,如Koenig、Acontis、IGH等。本設(shè)計采用開源的IGH EtherCAT協(xié)議棧來實現(xiàn)主站。
IGH EtherCAT Master是基于Linux下的一套開源EtherCAT主站協(xié)議軟件,包含網(wǎng)卡驅(qū)動,主站模塊以及應(yīng)用層使用的支持庫。
IGH開源源碼在1.5版本后提供了一個EtherCAT通用網(wǎng)卡驅(qū)動,使用普通網(wǎng)卡就能夠?qū)崿F(xiàn)EtherCAT協(xié)議。為了保證傳輸?shù)膶崟r性,主站模塊插入到內(nèi)核層,實現(xiàn)對EtherCAT協(xié)議的解析,任務(wù)調(diào)度以及為應(yīng)用程序提供接口。用戶可以通過編寫內(nèi)核模塊來實現(xiàn)應(yīng)用程序,也可以通過對設(shè)備節(jié)點的操作來實現(xiàn)應(yīng)用程序。IGH開源軟件為Linux用戶提供了多種命令行工具,可以實現(xiàn)直接對EtherCAT從站的訪問和設(shè)置??梢圆榭慈鏟DO數(shù)據(jù)、SDO參數(shù)、總線配置以及從站配置參數(shù)等。
主站軟件驅(qū)動部分需要將IGH源碼移植到IMX6Q平臺,具體如下:
(1)配置源碼。
(2)編譯源碼并安裝。
(3)復(fù)制通用網(wǎng)卡驅(qū)動和主站驅(qū)動到output文件夾下。
(4)將output文件夾打包。
(5)將output.tar.bz2下的文件解壓到IMX6Q文件系統(tǒng)相應(yīng)目錄。
(6)復(fù)制ec_master.ko到/lib/modules/內(nèi)核版本號目錄下。
(7)配置rules,創(chuàng)建設(shè)備號。
至此,就完成了IGH源碼移植到IMX6Q平臺,接下來就可以通過IMX6Q來實現(xiàn)EtherCAT通訊。
主站啟動EtherCAT協(xié)議時候需要先根據(jù)主站網(wǎng)卡的MAC地址來修改主站模塊的MAC地址,然后再啟動EtherCAT協(xié)議,并安裝EtherCAT通用網(wǎng)卡驅(qū)動。
通過上面的操作加載了EtherCAT內(nèi)核模塊,就可以通過設(shè)備節(jié)點EtherCAT0來操作EtherCAT從站,主站應(yīng)用程序流程圖如圖4。主從站通過網(wǎng)線連接,在Linux命令行下輸入ethercat pdos命令,可以測試主從站軟硬件是否正常,還可以獲取到從站控制器的配置,包括幾個同步管理通道、物理起始地址、控制字ControlRegister包含該通道的傳輸方式和方向、DefaultSize表示該通道的大小、PDO的基本配置。主站應(yīng)用程序中,需要根據(jù)ethercat pdos命令輸出的信息填充相關(guān)數(shù)據(jù)結(jié)構(gòu)體,創(chuàng)建過程數(shù)據(jù)域后,需要將PDO的相關(guān)信息注冊到過程數(shù)據(jù)域中。這樣主站應(yīng)用層就可以使用EC_READ_U32()和EC_WRITE_U32()函數(shù)通過EtherCAT幀對從站進行讀寫操作。
主站控制器IMX6Q使用的系統(tǒng)是Linux3.0.35+QT4.8.5,主界面在QT上設(shè)計的,實現(xiàn)倒車影像的實時顯示。
5 結(jié)束語
本設(shè)計是為了解決汽車上的倒車影像數(shù)據(jù)實時傳輸?shù)膯栴},而提出的一種實現(xiàn)方案。主要是通過EtherCAT技術(shù)實時傳輸壓縮的倒車影像數(shù)據(jù)。
從站通過CCD進行視頻采集,經(jīng)過IMX6Q的硬件H264編碼,主從站通過EtherCAT協(xié)議進行視頻數(shù)據(jù)傳輸,主站接收數(shù)據(jù)后通過IMX6Q硬件解碼并顯示視頻數(shù)據(jù)。
參考文獻
[1]Du H, Li M, Meng J. Study of EtherCAT Network Control Technology in vision Measurement System[C].International Conference on Information System and Computation Intelligence,2011: 322-325.
[2]向乾亮.實時以太網(wǎng)EtherCAT系統(tǒng)設(shè)計及在電力系統(tǒng)中的應(yīng)用[D].北京:華北電力大學(xué),2008.
[3]德國倍福公司.實時以太網(wǎng):I/O層高速以太網(wǎng)[Z].工業(yè)以太網(wǎng)與現(xiàn)場總線.
[4]EtherCAT技術(shù)組.EtherCAT-以太網(wǎng)現(xiàn)場總線[Z].