曹 玉,李子華
(中國鐵道科學研究院 標準計量研究所,北京100081)
基于嵌入式以太網的輪重傳感器信號采集系統設計
曹 玉,李子華
(中國鐵道科學研究院 標準計量研究所,北京100081)
針對輪重檢測系統多傳感器和大數據量傳輸的特點及現有模擬信號傳輸方式的不足,為實現軌道輪重檢測傳感器信號的實時遠距離傳輸,設計一種基于嵌入式以太網技術的輪重檢測傳感器信號實時采集與傳輸方法。選用STM32F103VET作為控制芯片,選用ENC28J60作為以太網控制器。使用STM32F103VET芯片片內的ADC外設實現準確的雙AD同步采樣,同時采用DMA功能轉移經ADC轉換后的數據,以提高數據采集的效率。完成STM32F103VET與ENC28J60的接口設計,移植uIP協議棧實現TCP/IP協議,使用UDP協議實現采樣數據在以太網上的實時傳輸。實驗結果表明:該系統具有成本低廉、布線簡單、傳輸距離遠、抗干擾性強等特點,能夠滿足輪重檢測系統信號實時采集與傳輸的要求。
輪重檢測;以太網;數據采集;UDP
研究輪重檢測傳感器信號的采集與傳輸在軌道輪重檢測裝置中有重要的應用價值。輪重檢測裝置通常由多組輪重檢測傳感器組成,其信號采集系統的數據采集量大,信號實時性高,輪重檢測傳感器信號的采集系統需要將數據傳輸到遠離軌道現場的操作室中。傳統的傳輸方式是通過模擬信號來傳輸,即傳感器輸出信號直接通過模擬信號線,以電壓或電流傳輸方式引入操作室的計算機數據采集卡中。使用這種方式實時性強,但長距離模擬信號的傳輸極易受到干擾[1,2]。并且由于每個傳感器的信號線都要單獨引入操作室,會造成信號線過多,從而導致安裝復雜,維護困難。因此,如何有效的防止干擾并且實時高效的把輪重檢測信號數據傳輸到操作室的計算機上一直是一個值得研究的問題。
為解決使用傳統傳輸方法的不足,同時根據軌道輪重檢測傳感器信號傳輸數據量大,傳輸距離遠的特點。提出一種使用STM32F103VET控制和使用其自帶的ADC轉換外設對傳感器信號進行就近采集,并使用以太網傳輸方式將采集到的信號進行遠距離實時傳輸的方法。這種方法具有抗干擾性強,結構簡單、成本低廉、維護簡單的特點。
研究所使用的輪重檢測傳感器輸出兩路電壓信號,對每個電壓信號的采樣頻率為10 k Hz,采樣精度要求大于0.5%。假設AD轉換數據的位數為12位,其最高的采樣精度為0.025%,可以滿足系統的要求。以12位AD轉換精度,采樣速率為10 k Hz計算,每個傳感器信號的數據傳輸速率至少為240 kb/s,由6組傳感器組成的檢測系統的數據傳輸速率大于1.44 Mb/s,數據的傳輸速率較高。
方案選用STM32F103VET作為控制芯片,STM32F103VET是一款基于Cortex-M3內核的微控制芯片,其最高運行頻率為72 MHz。本系統中的輪重傳感器要求的采樣頻率為10 k Hz,采樣精度為0.5%。STM32F103VET片內集成有3個ADC轉換外設,采樣位數12位,即最高的采樣精度為0.025%,可以滿足本系統的要求。STM32F103VET片內集成的ADC轉換外設最高采樣頻率可達1 MHz,也遠大于系統要求的最高的采樣頻率。同時STM32F103VET片內集成有2個SPI同步串行接口,最高通信速度為18 Mb/s,可簡便的控制本系統選用的以太網控制器,同時通信速率也遠大于系統要求的傳輸速率。
方案選用Microchip公司生產的ENC28J60作為以太網控制器,其具有結構簡單、體積小、價格低廉等特點。該芯片的引腳數僅有28個,可簡化相關設計,節省空間。ENC28J60與STM32F103VET的通信通過兩個中斷引腳和SPI接口實現,SPI接口的數據傳輸速率可以高達10 Mb/s。

圖1 硬件系統結構圖
方案的硬件系統結構如圖1所示。使用STM32F103VET芯片片內集成的AD轉換外設ADC1和ADC3對傳感器產生的電壓信號進行采集。使用STM32F103VET的DMA功能將ADC轉換的數據轉存到其片內的SRAM中,再通過STM32F103VET片內的SPI接口將SRAM中的AD轉換數據發送到以太網控制器,以太網控制器再將數據發送到以太網上,通過以太網將數據傳送到目的主機。STM32F103VET就近布置在傳感器附近,這樣可以減少電壓信號的傳輸距離,可以提高信號的抗干擾性。電壓信號轉換為數字信號后使用以太網傳輸,如果使用雙絞線作為以太網的傳輸介質,傳輸距離可以達到100 m,使用網絡路由器后可以將數據傳輸到更遠的距離[3]。
由于需要對傳感器的兩路電壓輸出進行同步采樣,本方案應用STM32F103VET芯片內部自帶的12位AD轉換器ADC1和ADC3分別對兩個電壓信號進行采樣。ADC1和ADC3都可以使用STM32F103VET片內定時器1的TIM1_CC3事件作為外部觸發轉換來源。設定TIM1_CC3事件的發生頻率為10 k Hz,同時設定TIM1_ CC3為ADC1和ADC3的外部觸發來源,可以實現準確的10 k Hz雙AD同步采樣。為提高STM32F103VET的效率,本方法使用STM32F103VET的直接存儲器存取功能(DMA)對AD轉換得到的數據進行存儲轉移,DMA功能可以在無CPU干預的情況下,將ADC1和ADC3轉換的數據通過DMA通道快速地移動到指定的內存地址中,這將節省CPU的資源,以便進行其他操作[4]。
在本方法中,ADC1使用DMA1的通道1進行數據轉移,ADC3使用DMA2的通道5進行數據轉移。設定每個DMA轉移數據滿256個后,進入各自的中斷服務函數。在DMA中斷服務函數中將其轉移來的數據轉存到AD轉換數據數組中,然后分別將AD轉換完成標志ADC1_flag和ADC3_flag置為1,AD轉換完成標志將作為程序向以太網發送AD轉換得到數據的標志位。最后清除DMA中斷標志位,DMA繼續進行下一輪數據轉存。
3.1 STM32F103VET和ENC28J60的接口
ENC28J60是帶有SPI接口的獨立以太網控制器。本方案使用STM32F103VET的SPI1外設接口引腳PA4~PA7與ENC28J60連接實現數據通信,通過引腳PA1實現中斷控制,引腳PE1用于完成系統硬件上電復位。構成的以太網通信硬件系統如圖2所示。

圖2 以太網通信硬件系統示意圖
3.2 TCP/IP協議
以太網通信的關鍵是實現TCP/IP網絡傳輸協議。TCP/IP協議棧是以太網最基本的協議[5],其采用4層層級結構,每一層都使用下一層提供的服務,4個層分別為:網絡接口層、網絡層、傳輸層、應用層。UDP協議屬于TCP/IP協議的傳輸層,UDP協議的全稱是用戶數據報協議。其主要作用是將網絡數據以數據報的形式在以太網上傳輸。由于UDP在傳輸數據報前不用在客戶機與服務器之間建立連接,且沒有超時重發等機制,故而傳輸速度較快。UDP數據報的格式如圖3所示,源端口和目標端口字段指定了兩個16位長的端口號。長度字段表示整個UDP數據報的字節數,包含UDP頭部和數據部分。UDP校驗和字段是用來保證UDP數據報的完整性。基于UDP傳輸速度快等特點,本方法使用UDP協議在以太網上傳輸數據。

圖3 UDP數據報的格式
3.3 uIP協議棧
通過移植uIP協議棧可以快速可靠的實現TCP/IP協議。uIP協議棧是一種適用于小型嵌入式系統的TCP/IP協議棧。它為網絡通信提供一系列必要的協議,可以實現TCP/IP協議棧中的IP、ICMP、TCP、ARP和UDP協議。uIP協議棧具有移植的通用性,其通過接口實現與底層硬件和頂層應用程序間的通信。這種方式使得uIP具有很高的通用性和獨立性,可以方便的移植到不同系統和實現不同的應用,體現TCP/IP協議平臺無關性的特點。
uIP協議棧與應用程序、系統底層之間的接口關系如圖4所示。uIP與系統底層的網絡設備驅動和系統定時器分別有接口函數。網絡設備驅動程序主要對ENC28J60的寄存器進行操作,包括讀取接收緩存區的數據、發送緩存區數據、網絡設備硬件配置及初始化以及讀取和發送網絡數據報等操作。TCP/IP協議要處理多個定時事件,所以uIP協議棧需要定義一個系統定時器,本程序使用STM32F103VET內部的系統滴答定時器(systick)作為uIP的系統定時器。在應用中,用戶程序的主循環中必須插入處理uIP的事件,主要包括Uip Pro()和eth_poll()函數。Uip Pro()的功能是中斷觸發讀取網絡接收緩存。eth_poll()的主要功能是定時查詢TCP及UDP連接收發狀態,ARP表更新及響應。uIP協議棧定義有UDP應用回調函數,將這個函數定義為UDP發送的函數,就可以在這個函數中將發送數據寫入發送緩沖區,uIP再將緩沖區的數據發送出。

圖4 uIP協議棧接口
程序的工作流程如圖5所示。首先完成雙AD同步采樣設置,初始化GPIO和SPI。接著設定AD轉換完成標志位ADC1_flag和ADC 3_flag為0。由于使用STM32F103VET內部的DMA功能,ADC1和ADC3轉換滿256個數據后進入DMA中斷程序,在中斷程序中將AD轉換完的數據轉存到AD轉換數據數組中,并將AD轉換完成標志位置為1。在后期的UDP發送程序中通過判斷AD轉換完成標志位來發送AD轉換數據數組。然后初始化網絡設置,主要包括設置IP地址、MAC地址、UDP連接參數。
下一步進入程序的主循環中,主循環中主要運行uIP提供的事件函數Uip Pro()和eth_poll()。Uip Pro()函數主要功能是中斷觸發讀取網絡接收緩存,如果ENC28J60的接收中斷引腳為高電平則說明收到網絡數據報。讀取和處理數據報后,如果接收到的字符串是開始傳輸命令start,則將開始傳輸標志位start_flag置為1;如果接收到的字符串是停止傳輸命令stop,則將開始傳輸標志位start_flag置為0。接著運行eth_ poll()函數,如果AD轉換完成標志位ADC1_flag和ADC3_flag的值都為1,則進入TCP及UDP連接收發狀態,ARP表更新及響應,這樣可以及時的發送AD轉換數據。接著在uIP協議棧定義的UDP應用回調函數中判斷開始傳輸標志位是否為1,如果為1則將AD轉換數據數組發送到以太網,uIP協議棧會將數據通過以太網控制器發送到以太網上,目的主機就可以接收到包含AD轉換數據的UDP數據報。

圖5 信號采集與以太網傳輸程序流程圖
方案通過測量車輪經過軌道時鋼軌的曲率變化,從而達到檢測輪重的目的。具體的實現過程是:在鋼軌同一側面的兩個位置分別安裝一個激光發射器和一個光電位置探測器,激光發射器發射的光斑投射在光電位置探測器上。當車輪經過鋼軌時,鋼軌會產生微小的曲率彎曲,這將會導致光電位置探測器上光斑位置發生變化。傳感器輸出的兩個電壓Va、Vb與光斑位置偏離光電位置探測器中心的距離X及光電位置探測器感應區長度L有如式(1)所示的關系。因此系統需滿足對兩路電壓進行同步采集的要求,以保證對光斑位置進行準確的計算。圖6為使用曲率檢測方法實現軌道動態輪重檢測的結構示意圖。


圖6 曲率檢測方法的結構示意圖
通過在STM32F103VET控制芯片的程序中移植uIP協議,實現了TCP/IP中的IP協議,所以在多點測試中,只需給每個測試節點設置不同的IP地址,就可以實現多點同時測量。
圖7為在計算機上運行的接收測試軟件,其使用Labview軟件編寫。測試中對6個測試節點進行同時測量,以太網使用的傳輸介質為雙絞線,傳輸距離為30 m。經測試,本系統測量得到的結果誤差在0.97%以內,并與使用數據采集卡采集信號進行對比,結果表明本系統可以有效降低因長距離傳輸所導致的信號波動。
(1)系統在傳感器現場將傳感器信號轉化為數字信號,使用以太網傳輸信號,比傳統模擬信號傳輸方式具有更強的抗干擾能力。
(2)系統實現了以太網TCP/IP協議,可以快速組成網絡化數據采集系統,該系統的可擴展性高于傳統模擬信號傳輸方式。

圖7 數據接收測試軟件
(3)試驗證明系統工作穩定、可靠,可以解決傳統模擬信號傳輸方式布線復雜、傳輸距離短、易受干擾的問題,具有廣闊的應用前景。
[1] 謝志江,胡應鵬,朱明星,堯 鵬.基于DSP的機械振動信號實時以太網數據傳輸技術[J].重慶大學學報,2006,29(2):6-8.
[2] 黃志輝,涂開武,程鑫鑫.AD693在掃掠力信號調理中的應用[J].測控技術,2013,32(1):19-22.
[3] 林雅嬌.基于以太網網關的電力參數遠程監測系統[D].江蘇:江蘇大學,2011.
[4] 喻金錢,喻 斌.STM32F系列ARMCortex-M3核微控制器開發與應用[M].北京:清華大學出版社,2011.
[5] 柴 毅,王玉堂,陳 禾.基于以太網數據采集與控制模塊的設計與應用[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)