曹 玉,李子華
(中國鐵道科學(xué)研究院 標(biāo)準(zhǔn)計(jì)量研究所,北京100081)
基于嵌入式以太網(wǎng)的輪重傳感器信號采集系統(tǒng)設(shè)計(jì)
曹 玉,李子華
(中國鐵道科學(xué)研究院 標(biāo)準(zhǔn)計(jì)量研究所,北京100081)
針對輪重檢測系統(tǒng)多傳感器和大數(shù)據(jù)量傳輸?shù)奶攸c(diǎn)及現(xiàn)有模擬信號傳輸方式的不足,為實(shí)現(xiàn)軌道輪重檢測傳感器信號的實(shí)時遠(yuǎn)距離傳輸,設(shè)計(jì)一種基于嵌入式以太網(wǎng)技術(shù)的輪重檢測傳感器信號實(shí)時采集與傳輸方法。選用STM32F103VET作為控制芯片,選用ENC28J60作為以太網(wǎng)控制器。使用STM32F103VET芯片片內(nèi)的ADC外設(shè)實(shí)現(xiàn)準(zhǔn)確的雙AD同步采樣,同時采用DMA功能轉(zhuǎn)移經(jīng)ADC轉(zhuǎn)換后的數(shù)據(jù),以提高數(shù)據(jù)采集的效率。完成STM32F103VET與ENC28J60的接口設(shè)計(jì),移植uIP協(xié)議棧實(shí)現(xiàn)TCP/IP協(xié)議,使用UDP協(xié)議實(shí)現(xiàn)采樣數(shù)據(jù)在以太網(wǎng)上的實(shí)時傳輸。實(shí)驗(yàn)結(jié)果表明:該系統(tǒng)具有成本低廉、布線簡單、傳輸距離遠(yuǎn)、抗干擾性強(qiáng)等特點(diǎn),能夠滿足輪重檢測系統(tǒng)信號實(shí)時采集與傳輸?shù)囊蟆?/p>
輪重檢測;以太網(wǎng);數(shù)據(jù)采集;UDP
研究輪重檢測傳感器信號的采集與傳輸在軌道輪重檢測裝置中有重要的應(yīng)用價值。輪重檢測裝置通常由多組輪重檢測傳感器組成,其信號采集系統(tǒng)的數(shù)據(jù)采集量大,信號實(shí)時性高,輪重檢測傳感器信號的采集系統(tǒng)需要將數(shù)據(jù)傳輸?shù)竭h(yuǎn)離軌道現(xiàn)場的操作室中。傳統(tǒng)的傳輸方式是通過模擬信號來傳輸,即傳感器輸出信號直接通過模擬信號線,以電壓或電流傳輸方式引入操作室的計(jì)算機(jī)數(shù)據(jù)采集卡中。使用這種方式實(shí)時性強(qiáng),但長距離模擬信號的傳輸極易受到干擾[1,2]。并且由于每個傳感器的信號線都要單獨(dú)引入操作室,會造成信號線過多,從而導(dǎo)致安裝復(fù)雜,維護(hù)困難。因此,如何有效的防止干擾并且實(shí)時高效的把輪重檢測信號數(shù)據(jù)傳輸?shù)讲僮魇业挠?jì)算機(jī)上一直是一個值得研究的問題。
為解決使用傳統(tǒng)傳輸方法的不足,同時根據(jù)軌道輪重檢測傳感器信號傳輸數(shù)據(jù)量大,傳輸距離遠(yuǎn)的特點(diǎn)。提出一種使用STM32F103VET控制和使用其自帶的ADC轉(zhuǎn)換外設(shè)對傳感器信號進(jìn)行就近采集,并使用以太網(wǎng)傳輸方式將采集到的信號進(jìn)行遠(yuǎn)距離實(shí)時傳輸?shù)姆椒?。這種方法具有抗干擾性強(qiáng),結(jié)構(gòu)簡單、成本低廉、維護(hù)簡單的特點(diǎn)。
研究所使用的輪重檢測傳感器輸出兩路電壓信號,對每個電壓信號的采樣頻率為10 k Hz,采樣精度要求大于0.5%。假設(shè)AD轉(zhuǎn)換數(shù)據(jù)的位數(shù)為12位,其最高的采樣精度為0.025%,可以滿足系統(tǒng)的要求。以12位AD轉(zhuǎn)換精度,采樣速率為10 k Hz計(jì)算,每個傳感器信號的數(shù)據(jù)傳輸速率至少為240 kb/s,由6組傳感器組成的檢測系統(tǒng)的數(shù)據(jù)傳輸速率大于1.44 Mb/s,數(shù)據(jù)的傳輸速率較高。
方案選用STM32F103VET作為控制芯片,STM32F103VET是一款基于Cortex-M3內(nèi)核的微控制芯片,其最高運(yùn)行頻率為72 MHz。本系統(tǒng)中的輪重傳感器要求的采樣頻率為10 k Hz,采樣精度為0.5%。STM32F103VET片內(nèi)集成有3個ADC轉(zhuǎn)換外設(shè),采樣位數(shù)12位,即最高的采樣精度為0.025%,可以滿足本系統(tǒng)的要求。STM32F103VET片內(nèi)集成的ADC轉(zhuǎn)換外設(shè)最高采樣頻率可達(dá)1 MHz,也遠(yuǎn)大于系統(tǒng)要求的最高的采樣頻率。同時STM32F103VET片內(nèi)集成有2個SPI同步串行接口,最高通信速度為18 Mb/s,可簡便的控制本系統(tǒng)選用的以太網(wǎng)控制器,同時通信速率也遠(yuǎn)大于系統(tǒng)要求的傳輸速率。
方案選用Microchip公司生產(chǎn)的ENC28J60作為以太網(wǎng)控制器,其具有結(jié)構(gòu)簡單、體積小、價格低廉等特點(diǎn)。該芯片的引腳數(shù)僅有28個,可簡化相關(guān)設(shè)計(jì),節(jié)省空間。ENC28J60與STM32F103VET的通信通過兩個中斷引腳和SPI接口實(shí)現(xiàn),SPI接口的數(shù)據(jù)傳輸速率可以高達(dá)10 Mb/s。
圖1 硬件系統(tǒng)結(jié)構(gòu)圖
方案的硬件系統(tǒng)結(jié)構(gòu)如圖1所示。使用STM32F103VET芯片片內(nèi)集成的AD轉(zhuǎn)換外設(shè)ADC1和ADC3對傳感器產(chǎn)生的電壓信號進(jìn)行采集。使用STM32F103VET的DMA功能將ADC轉(zhuǎn)換的數(shù)據(jù)轉(zhuǎn)存到其片內(nèi)的SRAM中,再通過STM32F103VET片內(nèi)的SPI接口將SRAM中的AD轉(zhuǎn)換數(shù)據(jù)發(fā)送到以太網(wǎng)控制器,以太網(wǎng)控制器再將數(shù)據(jù)發(fā)送到以太網(wǎng)上,通過以太網(wǎng)將數(shù)據(jù)傳送到目的主機(jī)。STM32F103VET就近布置在傳感器附近,這樣可以減少電壓信號的傳輸距離,可以提高信號的抗干擾性。電壓信號轉(zhuǎn)換為數(shù)字信號后使用以太網(wǎng)傳輸,如果使用雙絞線作為以太網(wǎng)的傳輸介質(zhì),傳輸距離可以達(dá)到100 m,使用網(wǎng)絡(luò)路由器后可以將數(shù)據(jù)傳輸?shù)礁h(yuǎn)的距離[3]。
由于需要對傳感器的兩路電壓輸出進(jìn)行同步采樣,本方案應(yīng)用STM32F103VET芯片內(nèi)部自帶的12位AD轉(zhuǎn)換器ADC1和ADC3分別對兩個電壓信號進(jìn)行采樣。ADC1和ADC3都可以使用STM32F103VET片內(nèi)定時器1的TIM1_CC3事件作為外部觸發(fā)轉(zhuǎn)換來源。設(shè)定TIM1_CC3事件的發(fā)生頻率為10 k Hz,同時設(shè)定TIM1_ CC3為ADC1和ADC3的外部觸發(fā)來源,可以實(shí)現(xiàn)準(zhǔn)確的10 k Hz雙AD同步采樣。為提高STM32F103VET的效率,本方法使用STM32F103VET的直接存儲器存取功能(DMA)對AD轉(zhuǎn)換得到的數(shù)據(jù)進(jìn)行存儲轉(zhuǎn)移,DMA功能可以在無CPU干預(yù)的情況下,將ADC1和ADC3轉(zhuǎn)換的數(shù)據(jù)通過DMA通道快速地移動到指定的內(nèi)存地址中,這將節(jié)省CPU的資源,以便進(jìn)行其他操作[4]。
在本方法中,ADC1使用DMA1的通道1進(jìn)行數(shù)據(jù)轉(zhuǎn)移,ADC3使用DMA2的通道5進(jìn)行數(shù)據(jù)轉(zhuǎn)移。設(shè)定每個DMA轉(zhuǎn)移數(shù)據(jù)滿256個后,進(jìn)入各自的中斷服務(wù)函數(shù)。在DMA中斷服務(wù)函數(shù)中將其轉(zhuǎn)移來的數(shù)據(jù)轉(zhuǎn)存到AD轉(zhuǎn)換數(shù)據(jù)數(shù)組中,然后分別將AD轉(zhuǎn)換完成標(biāo)志ADC1_flag和ADC3_flag置為1,AD轉(zhuǎn)換完成標(biāo)志將作為程序向以太網(wǎng)發(fā)送AD轉(zhuǎn)換得到數(shù)據(jù)的標(biāo)志位。最后清除DMA中斷標(biāo)志位,DMA繼續(xù)進(jìn)行下一輪數(shù)據(jù)轉(zhuǎn)存。
3.1 STM32F103VET和ENC28J60的接口
ENC28J60是帶有SPI接口的獨(dú)立以太網(wǎng)控制器。本方案使用STM32F103VET的SPI1外設(shè)接口引腳PA4~PA7與ENC28J60連接實(shí)現(xiàn)數(shù)據(jù)通信,通過引腳PA1實(shí)現(xiàn)中斷控制,引腳PE1用于完成系統(tǒng)硬件上電復(fù)位。構(gòu)成的以太網(wǎng)通信硬件系統(tǒng)如圖2所示。
圖2 以太網(wǎng)通信硬件系統(tǒng)示意圖
3.2 TCP/IP協(xié)議
以太網(wǎng)通信的關(guān)鍵是實(shí)現(xiàn)TCP/IP網(wǎng)絡(luò)傳輸協(xié)議。TCP/IP協(xié)議棧是以太網(wǎng)最基本的協(xié)議[5],其采用4層層級結(jié)構(gòu),每一層都使用下一層提供的服務(wù),4個層分別為:網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層。UDP協(xié)議屬于TCP/IP協(xié)議的傳輸層,UDP協(xié)議的全稱是用戶數(shù)據(jù)報協(xié)議。其主要作用是將網(wǎng)絡(luò)數(shù)據(jù)以數(shù)據(jù)報的形式在以太網(wǎng)上傳輸。由于UDP在傳輸數(shù)據(jù)報前不用在客戶機(jī)與服務(wù)器之間建立連接,且沒有超時重發(fā)等機(jī)制,故而傳輸速度較快。UDP數(shù)據(jù)報的格式如圖3所示,源端口和目標(biāo)端口字段指定了兩個16位長的端口號。長度字段表示整個UDP數(shù)據(jù)報的字節(jié)數(shù),包含UDP頭部和數(shù)據(jù)部分。UDP校驗(yàn)和字段是用來保證UDP數(shù)據(jù)報的完整性?;赨DP傳輸速度快等特點(diǎn),本方法使用UDP協(xié)議在以太網(wǎng)上傳輸數(shù)據(jù)。
圖3 UDP數(shù)據(jù)報的格式
3.3 uIP協(xié)議棧
通過移植uIP協(xié)議棧可以快速可靠的實(shí)現(xiàn)TCP/IP協(xié)議。uIP協(xié)議棧是一種適用于小型嵌入式系統(tǒng)的TCP/IP協(xié)議棧。它為網(wǎng)絡(luò)通信提供一系列必要的協(xié)議,可以實(shí)現(xiàn)TCP/IP協(xié)議棧中的IP、ICMP、TCP、ARP和UDP協(xié)議。uIP協(xié)議棧具有移植的通用性,其通過接口實(shí)現(xiàn)與底層硬件和頂層應(yīng)用程序間的通信。這種方式使得uIP具有很高的通用性和獨(dú)立性,可以方便的移植到不同系統(tǒng)和實(shí)現(xiàn)不同的應(yīng)用,體現(xiàn)TCP/IP協(xié)議平臺無關(guān)性的特點(diǎn)。
uIP協(xié)議棧與應(yīng)用程序、系統(tǒng)底層之間的接口關(guān)系如圖4所示。uIP與系統(tǒng)底層的網(wǎng)絡(luò)設(shè)備驅(qū)動和系統(tǒng)定時器分別有接口函數(shù)。網(wǎng)絡(luò)設(shè)備驅(qū)動程序主要對ENC28J60的寄存器進(jìn)行操作,包括讀取接收緩存區(qū)的數(shù)據(jù)、發(fā)送緩存區(qū)數(shù)據(jù)、網(wǎng)絡(luò)設(shè)備硬件配置及初始化以及讀取和發(fā)送網(wǎng)絡(luò)數(shù)據(jù)報等操作。TCP/IP協(xié)議要處理多個定時事件,所以uIP協(xié)議棧需要定義一個系統(tǒng)定時器,本程序使用STM32F103VET內(nèi)部的系統(tǒng)滴答定時器(systick)作為uIP的系統(tǒng)定時器。在應(yīng)用中,用戶程序的主循環(huán)中必須插入處理uIP的事件,主要包括Uip Pro()和eth_poll()函數(shù)。Uip Pro()的功能是中斷觸發(fā)讀取網(wǎng)絡(luò)接收緩存。eth_poll()的主要功能是定時查詢TCP及UDP連接收發(fā)狀態(tài),ARP表更新及響應(yīng)。uIP協(xié)議棧定義有UDP應(yīng)用回調(diào)函數(shù),將這個函數(shù)定義為UDP發(fā)送的函數(shù),就可以在這個函數(shù)中將發(fā)送數(shù)據(jù)寫入發(fā)送緩沖區(qū),uIP再將緩沖區(qū)的數(shù)據(jù)發(fā)送出。
圖4 uIP協(xié)議棧接口
程序的工作流程如圖5所示。首先完成雙AD同步采樣設(shè)置,初始化GPIO和SPI。接著設(shè)定AD轉(zhuǎn)換完成標(biāo)志位ADC1_flag和ADC 3_flag為0。由于使用STM32F103VET內(nèi)部的DMA功能,ADC1和ADC3轉(zhuǎn)換滿256個數(shù)據(jù)后進(jìn)入DMA中斷程序,在中斷程序中將AD轉(zhuǎn)換完的數(shù)據(jù)轉(zhuǎn)存到AD轉(zhuǎn)換數(shù)據(jù)數(shù)組中,并將AD轉(zhuǎn)換完成標(biāo)志位置為1。在后期的UDP發(fā)送程序中通過判斷AD轉(zhuǎn)換完成標(biāo)志位來發(fā)送AD轉(zhuǎn)換數(shù)據(jù)數(shù)組。然后初始化網(wǎng)絡(luò)設(shè)置,主要包括設(shè)置IP地址、MAC地址、UDP連接參數(shù)。
下一步進(jìn)入程序的主循環(huán)中,主循環(huán)中主要運(yùn)行uIP提供的事件函數(shù)Uip Pro()和eth_poll()。Uip Pro()函數(shù)主要功能是中斷觸發(fā)讀取網(wǎng)絡(luò)接收緩存,如果ENC28J60的接收中斷引腳為高電平則說明收到網(wǎng)絡(luò)數(shù)據(jù)報。讀取和處理數(shù)據(jù)報后,如果接收到的字符串是開始傳輸命令start,則將開始傳輸標(biāo)志位start_flag置為1;如果接收到的字符串是停止傳輸命令stop,則將開始傳輸標(biāo)志位start_flag置為0。接著運(yùn)行eth_ poll()函數(shù),如果AD轉(zhuǎn)換完成標(biāo)志位ADC1_flag和ADC3_flag的值都為1,則進(jìn)入TCP及UDP連接收發(fā)狀態(tài),ARP表更新及響應(yīng),這樣可以及時的發(fā)送AD轉(zhuǎn)換數(shù)據(jù)。接著在uIP協(xié)議棧定義的UDP應(yīng)用回調(diào)函數(shù)中判斷開始傳輸標(biāo)志位是否為1,如果為1則將AD轉(zhuǎn)換數(shù)據(jù)數(shù)組發(fā)送到以太網(wǎng),uIP協(xié)議棧會將數(shù)據(jù)通過以太網(wǎng)控制器發(fā)送到以太網(wǎng)上,目的主機(jī)就可以接收到包含AD轉(zhuǎn)換數(shù)據(jù)的UDP數(shù)據(jù)報。
圖5 信號采集與以太網(wǎng)傳輸程序流程圖
方案通過測量車輪經(jīng)過軌道時鋼軌的曲率變化,從而達(dá)到檢測輪重的目的。具體的實(shí)現(xiàn)過程是:在鋼軌同一側(cè)面的兩個位置分別安裝一個激光發(fā)射器和一個光電位置探測器,激光發(fā)射器發(fā)射的光斑投射在光電位置探測器上。當(dāng)車輪經(jīng)過鋼軌時,鋼軌會產(chǎn)生微小的曲率彎曲,這將會導(dǎo)致光電位置探測器上光斑位置發(fā)生變化。傳感器輸出的兩個電壓Va、Vb與光斑位置偏離光電位置探測器中心的距離X及光電位置探測器感應(yīng)區(qū)長度L有如式(1)所示的關(guān)系。因此系統(tǒng)需滿足對兩路電壓進(jìn)行同步采集的要求,以保證對光斑位置進(jìn)行準(zhǔn)確的計(jì)算。圖6為使用曲率檢測方法實(shí)現(xiàn)軌道動態(tài)輪重檢測的結(jié)構(gòu)示意圖。
圖6 曲率檢測方法的結(jié)構(gòu)示意圖
通過在STM32F103VET控制芯片的程序中移植uIP協(xié)議,實(shí)現(xiàn)了TCP/IP中的IP協(xié)議,所以在多點(diǎn)測試中,只需給每個測試節(jié)點(diǎn)設(shè)置不同的IP地址,就可以實(shí)現(xiàn)多點(diǎn)同時測量。
圖7為在計(jì)算機(jī)上運(yùn)行的接收測試軟件,其使用Labview軟件編寫。測試中對6個測試節(jié)點(diǎn)進(jìn)行同時測量,以太網(wǎng)使用的傳輸介質(zhì)為雙絞線,傳輸距離為30 m。經(jīng)測試,本系統(tǒng)測量得到的結(jié)果誤差在0.97%以內(nèi),并與使用數(shù)據(jù)采集卡采集信號進(jìn)行對比,結(jié)果表明本系統(tǒng)可以有效降低因長距離傳輸所導(dǎo)致的信號波動。
(1)系統(tǒng)在傳感器現(xiàn)場將傳感器信號轉(zhuǎn)化為數(shù)字信號,使用以太網(wǎng)傳輸信號,比傳統(tǒng)模擬信號傳輸方式具有更強(qiáng)的抗干擾能力。
(2)系統(tǒng)實(shí)現(xiàn)了以太網(wǎng)TCP/IP協(xié)議,可以快速組成網(wǎng)絡(luò)化數(shù)據(jù)采集系統(tǒng),該系統(tǒng)的可擴(kuò)展性高于傳統(tǒng)模擬信號傳輸方式。
圖7 數(shù)據(jù)接收測試軟件
(3)試驗(yàn)證明系統(tǒng)工作穩(wěn)定、可靠,可以解決傳統(tǒng)模擬信號傳輸方式布線復(fù)雜、傳輸距離短、易受干擾的問題,具有廣闊的應(yīng)用前景。
[1] 謝志江,胡應(yīng)鵬,朱明星,堯 鵬.基于DSP的機(jī)械振動信號實(shí)時以太網(wǎng)數(shù)據(jù)傳輸技術(shù)[J].重慶大學(xué)學(xué)報,2006,29(2):6-8.
[2] 黃志輝,涂開武,程鑫鑫.AD693在掃掠力信號調(diào)理中的應(yīng)用[J].測控技術(shù),2013,32(1):19-22.
[3] 林雅嬌.基于以太網(wǎng)網(wǎng)關(guān)的電力參數(shù)遠(yuǎn)程監(jiān)測系統(tǒng)[D].江蘇:江蘇大學(xué),2011.
[4] 喻金錢,喻 斌.STM32F系列ARMCortex-M3核微控制器開發(fā)與應(yīng)用[M].北京:清華大學(xué)出版社,2011.
[5] 柴 毅,王玉堂,陳 禾.基于以太網(wǎng)數(shù)據(jù)采集與控制模塊的設(shè)計(jì)與應(yīng)用[J].計(jì)算機(jī)測量與控制,2004,12(12):1188-1191.
Design of Wheel Load Detection Sensor Signal Acquisition System Based on Embedded Ethernet
CAO Yu,LI Zihua
(Standard&Metrology Research Institute,China Academy of Railway Sciences,Beijing 100081,China)
Aiming at the disadvantages of present analog signal transmission mode used in wheel load detection system,satisfying the multiple sensors and large transmission data rate of wheel load detection system,and in order to realize the real time remote transmission of wheel load detection sensor's signal,a real-time acquisition and Ethernet transmission scheme was proposed.In this scheme,STM32F103VET was used as main control chip,and ENC28J60 was used as Ethernet physical transceiver.Double ADC synchronous sampling was realized by the peripherals ADC in STM32F103VET.The AD conversion data were transferred by DMA.The Interface between STM32F103VET and ENC28J60 was designed.TCP/IP protocol was realized by transportation of uIP,and the sample data were transported in real time by Ethernet using UDP protocol.This scheme has the advantages of lower cost,simple in wiring,far transmitting range and stronger anti-interference ability.This scheme can satisfy the signal acquisition and real-time transmission requirements of wheel load detection system.
wheel load detection;Ethernet;data acquisition;UDP
U285.5+3
A
10.3969/j.issn.1008-7842.2016.06.04
1008-7842(2016)06-0014-04
?)女,工程師(
2016-07-19)