本站小編為你精心準備了網絡數據采集測試系統設計參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
摘要:
網絡化虛擬儀器是繼虛擬儀器之后儀器儀表領域出現的新的發展方向,提出了將嵌入式系統、網絡與虛擬儀器結合的技術路線,將信號的采集、處理、存儲分布于不同的網絡位置的實施方案。利用ARM嵌入式在現場采集數據,通過網絡通信將信號處理和存儲工作交給上位機負責,采用S3C44B0X為核心的開發環境,然后進行軟件系統的搭建,包括移植μC/OSⅡ嵌入式操作系統,嵌入式圖形界面系統μC/GUI,ADC及網卡的驅動程序編寫以及移植LwIP實現TCP/IP協議等。測試結果表明,該系統的功能完善、操作十分方便,完全滿足實際應用的需要,可以有效地組織和管理數據以及構架網絡數據庫。
關鍵詞:
虛擬儀器;ARM;LabVIEW;S3C44B0X;μC/OSⅡ;LwIP
虛擬儀器(VirtualInstrument)是基于計算機的儀器。計算機和儀器的密切結合是目前儀器發展的一個重要方向[1]。這種結合有兩種方式:一種是將計算機裝入儀器,其典型的例子就是所謂智能化的儀器。隨著計算機功能的日益強大以及其體積的日趨縮小,這類儀器功能也越來越強大,目前已經出現含嵌入式系統的儀器;另一種方式是將儀器裝入計算機。以通用的計算機硬件及操作系統為依托,實現各種儀器功能。虛擬儀器主要是指這種方式[2]。使用網絡化虛擬儀器技術,可以不受地點、時間的約束,獲取準確的測量信息或數據,與傳統的儀器、測量、測試相比,帶來了諸多便利[3]。在網絡化虛擬儀器中,被測對象可通過測試現場的普通儀器設備,將測得的數據通過網絡傳輸給異地的精密測量設備或高檔次的微機化儀器去分析、處理,能實現測量信息的共享,可掌握網絡節點處信息實時變化的趨勢;此外,也可通過具有網絡傳輸功能的儀器將數據傳至原端即現場。采用自動抄表系統,可提高抄表的準確性,能減少因估計或謄寫而可能出現的帳單錯誤(供用電、水、燃氣、熱能等)。管理部門因此能及時獲得準確的數據信息,用戶也不再需要與抄表員預約上門抄表時間,迅速查詢帳單。使用網絡化虛擬儀器,采用網絡測量技術,可以大幅度提高測量效率,降低監測成本以及減少計量測試工作的周期[4]。
1硬件設計
本文的目的是充分發揮分布式虛擬儀器的概念,將嵌入式系統,網絡,虛擬儀器聯系起來,將信號的采集、處理、存儲分布于不同的網絡位置。結合嵌入式系統的靈活性,避免其計算能力不強的缺點,將信號處理工作交給上位機負責。系統結構如圖1所示。下位機的虛擬儀器負責信號的采集,通過以太網將數據傳輸到上位機,利用上位機強大的計算能力和海量存儲空間完成對原始數據的后期處理。
1.1以太網設備本系統采用的網絡RTL8019AS是一種高度集成的以太網控制芯片,能簡單地實現PlugandPlay并兼容NE2000。RTL8019AS芯片內部集成了DMA控制器,ISA總線控制器和集成16KSRAM、網絡PHY收發器。用戶可以通過DMA方式把需要發送的數據寫入片內SRAM中,讓芯片自動將數據發送出去,而芯片在接收到數據后,用戶也可以通過DMA方式將其讀出。RTL8019AS的詳細介紹請見RTL8019AS數據手冊。了解了RTL8019AS所提供的資源與硬件接口,便可以設計RTL8019AS與S3C44B0X的硬件電路。在網絡通信模塊電路中,RTL8019AS與處理器S3C44B0X之間的信號連接關系如圖2所示。
1.2電源、時鐘及復位電路在本系統中,采用的是5V和3.4V的直流穩壓電源,其中,S3C44B0X核心使用2.5V電源,外圍器件需3.4V電源,另外部分器件需5V電源,5V電路加了工作指示燈,并且加了二極管對電路加以保護。晶振電路用于向CPU及其他電路提供工作時鐘。在該系統中,S3C44BOX使用常用的無源晶振,電路如圖3所示。根據S3C44B0X的最高工作頻率以及PLL電路的工作方式,系統選擇了10MHz的有源晶振,10MHz的晶振頻率經過S3C44B0X片內的PLL電路倍頻后,最高可以達66MHz。片內的PLL電路兼有頻率放大和信號提純的功能,因此,系統可以以較低的外部時鐘信號獲得較高的工作頻率,以降低因高速開關時鐘所造成的高頻噪聲。同時在系統中還有頻率為32.768kHz的實時時鐘晶振源,在USB接口芯片處也有一個48MHz的晶振。在系統中,復位電路主要完成系統的上電復位和系統在運行時用戶的按鍵復位功能。復位電路可由IMP811芯片完成,復位電路如圖4所示。該復位電路的工作原理如下:IMP811是一個可靠性很高的復位芯片,當用戶按下按鈕S1時或者RST_IN送過來一個低電平時,Reset端輸出為低電平,系統進入復位狀態,松開S1時,系統即可進入正常工作狀態。
2實時操作系統
實時操作系統,簡稱RTOS,具體指系統能及時響應來自外部事件的請求,在確定的時間處理該事件,統一控制實時任務一致運行。RTOS的開發工具允許用戶針對不同的應用對象對RTOS的內核進行裁剪、壓縮,以適應各類應用,并提供應用程序的調試環境。
2.1μC/OSⅡ的系統結構μC/OSⅡ嵌入式實時操作系統是JeanJ.Labrosse開發的一個完整的、可移植、固化、裁剪的占先式實時多任務內核,目前已經在超過40種不同架構的微處理器上運行,圖5是本系統的軟硬件體系結構。初始化程序是針對S3C44B0X使用匯編語言編寫的。在將控制權交給操作系統前,初始化最基本的硬件設備。主要工作是配置SDRAM并將操作系統代碼從FLASH拷貝到SDRAM中。
2.2小鍵盤驅動編寫系統采用智能顯示驅動芯片HD7279連接一個4×4鍵盤和S3C44B0X通信。HD7279A是一片具有串行可同時驅動8位共陰式數碼管(或64只獨立LED)的智能顯示驅動芯片,該芯片同時還可連接多達64鍵的鍵盤矩陣,單片即可完成LED顯示、鍵盤接口的全部功能。HD7279A內部含有譯碼器,可直接接收BCD碼或16進制碼,并同時具有2種譯碼方式。此外,還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。HD7279A具有片選信號可方便地實現多于8位的顯示或多于64鍵的鍵盤接口。
3硬件設計
3.1模塊總體設計整個系統的信號流程如圖6所示,信號通過ADC后以DMA方式進入兩個8MB的SDRAM,二者構成一對乒乓存儲系統,一側負責采集信號的緩存,同時另一側負責向上位機發送,二者交替工作,保證信號流采集和發送的連續。對于網絡通信模塊,由于μC/OSⅡ只是一個實時的任務調度及通信內核,缺少對網絡協議的支持,所以需要將LwIP(LightWeightIPprotocol)移植到μC/OSⅡ上,使其支持網絡功能。本章后面部分將重點介紹NE2000兼容網卡RTL8019AS驅動程序在嵌入式系統中的編寫。
3.2信號調理模塊S3C44B0X內部具有一個逐次逼近型8路模擬信號輸入的10位ADC,但是不具有保持采樣保持(S/H)電路,不能用于快速變化的信號采集,因此需要在前級信號調理電路中加入采樣保持功能。在此系統中,采用了MicrochipTechnology公司的模擬增益可編程運放(PGA)MCP6S28芯片,傳感器采集的信號接入MCP6S28的通道輸入端,輸出VOUT接入處理器內部的A/D轉換器的信號輸入端AIN管腳。MCP6S28的增益可設置為1~32V/V,它具有多路選擇輸入(MUX)模塊,共有8路輸入。MCP6S28具有SPI接口,故將其與S3C44B0X對應的SPI管腳連接即可,用于選擇增益水平和輸入通道。對MCP6S28進行操作的控制字節和數據字節均從SI引腳輸入,并在寫入數據的串行時鐘(SCK)上升沿被鎖存。
3.3A/D采樣器程序設計A/D轉換由S3C44B0X內部模/數轉換器(ADC)完成,它是一個10位、逐次逼近型的ADC,有8路模擬信號輸入,其內部結構中包括模擬輸入多路復用器,自動調零比較器,時鐘產生器,10位逐次逼近寄存器(SAR),輸出寄存器。這個ADC還提供可編程選擇的睡眠模式,以節省功耗。S3C44B0X內部有3個與A/D轉換有關的寄存器:控制寄存器ADCCON、預分頻寄存器ADCPSR、數據寄存器ADCDAT。ADCPSR中存儲預置比例因子,取值范圍是0~255,完成一次A/D轉換至少需要16個A/D時鐘周期,有:A/D轉換總時鐘數=2×(預置比例因子+1)×16A/D的最高采樣速率是100KS/s,即每個采樣周期為10μs。ARM7運行在66MHz主頻下,每個周期為15.152ns。這樣每個采樣周期包括660個主頻周期。ARM7具有0.97MIPS/MHz的指令效率,660個主頻周期可以運行約640條指令。在計數器觸發A/D采樣的情況下,處理器的工作是每采樣周期從A/D讀取一次數據并保存到RAM中,代碼如下:LDRR0,[R1]:寄存器R1中保存了A/D數據寄存器的地址,需要3周期。STRR0,[R2,#4]:寄存器R2中保存了RAM中數據存儲空間的起始地址;需要2周期。這個操作需要5個主頻周期。利用剩余的轉換時間,ARM7可以完成數據的打包發送,以及其他的任務。在進行A/D轉換時,ARM要禁止一切可屏蔽中斷。
4LabVIEW上位機模塊設計
上位機的功能有兩方面:一是負責數據的實時顯示,參數測量和存儲;二是對下位機的遠程控制。監測人員能夠直觀地獲得測試結果,很方便地對遠程數據采集系統進行控制。本系統的上位機系統利用虛擬儀器技術和LabVIEW圖形化軟件開發集成環境,設計了該數據采集系統的數據分析、存儲和遠程控制模塊。測試結果表明,該數據分析處理模塊的功能比較完善,操作十分方便,完全滿足實際應用的需要。
4.1網絡數據通信接口程序設計上位機和下位機通信的傳輸內容可以分為測控命令和數據兩種。其中下位機向PC機發送的數據,數據量大、對傳輸速度要求較高、對可靠性的要求不很嚴格。UDP是面向非連接的方式,提供的是不可靠的數據傳輸,但實現起來比較簡單,速度快、實時性好,并且支持廣播和組播,同時在單一、封閉局域網中可靠性也很高。因此用一般的UDP通信就可以達到很好的可靠性以滿足數據傳輸的要求。一個簡單的UDP數據接收、顯示程序如圖7所示。程序分為UDP打開,UDP讀取和UDP關閉三個環節。首先指定本地端口號,本文為61557,這個端口必須與下位機設置的目標遠程端口一致。在運行此程序前,必須先運行下位機程序。UDPRead節點設置UDP數據報最大字節數,最大值為548,此處設置為100,若超過本值,Windows將提示出錯信息。
4.2控制程序設計程序界面如圖8所示,觀測人員可以通過示波器的波形顯示及時調整遠端采集設備的相應參數。這樣可以充分利用A/D轉換器的最大輸入量程(2.5V),盡可能提高測量精度。另一個可以控制的參數是采樣速率,當被測信號的頻率較低時可以使用低速率采樣,在保證失真度的情況下降低數據流,避免因網絡擁擠產生數據丟失。設備重啟控制用于使下位機的系統軟件及硬件寄存器完全恢復到初始狀態。控制信號的數據量較小,對傳輸的可靠性要求嚴格,故采用TCP協議。對于LabVIEW程序的設計采用事件驅動模式,當增益水平和采樣速率的List控件值改變時,驅動主程序向下位機發送控制信號。向下位機發送的是增益水平或者采樣速率的數值。因為網絡以及系統的延時,效果通常要經過一段時間才能反映出來。
4.3下位機響應程序編寫下位機的TCP/IP協議棧是通過LwIP實現的,LwIP提供一系列函數實現IP,TCP,UDP等的操作。其中tcp_input(),tcp_process(),tcp_receive()與TCP輸入處理有關。函數netconnlisten()讓系統進入TCP監聽狀態。當TCP連接建立后,tcp_receive()把接收到的數據tcp_data傳給上級應用程序。再判斷tcp_data數值的大小,分為以下三種情況:若為0X11111111,使程序跳轉到系統初始位置,重新設置各種設備。若為1~32,調用SPI控制程序,給數據寄存器SPDR賦值,再通過MOSI發送給MCP6S28的增益寄存器。若tcp_data≤1000,則為采樣速率控制量,需修改A/D轉換預置比例因子寄存器ADCPSR,修改的值根據芯片手冊推導。
4.4數據文件儲存程序設計由于二進制文件存儲速度快,冗余數據少,格式也最為緊湊,因此在進行大量數據采集時,往往采用這種文件格式。圖9中是用底層函數實現的二進制文件的輸入VI,可以實時存儲通過UDP接收的數據,首先用Open/Creat/ReplaceFileVI新建一個文件,然后在WhileLoop中用WriteFile函數將網絡通信數據寫入文件,最后用CloseFile函數關閉文件。
5結論
本文基于分布式虛擬儀器概念,設計了網絡化數據采集和測試系統,基于ARM的下位機和基于LabVIEW的上位機通過網絡協同工作,實現了數據的實時采集、處理和存儲。首先針對基于ARM微處理器S3C44B0X的嵌入式采集系統進行整體開發,將嵌入式操作系統μC/OSII移植到本系統中,開發了網卡,數據采集模塊的底層驅動程序。同時,移植μC/GUI圖形用戶接口,編寫了鍵盤驅動,使嵌入式系統具有更友好的人機界面,本系統將虛擬儀器技術和數據庫相結合,引入LabVIEWSQL及相關模型,為有效地組織和管理數據以及構架網絡數據庫,打下了良好的基礎。
作者:徐立艷 單位:通遼職業學院