徐立艷
摘 要: 網(wǎng)絡(luò)化虛擬儀器是繼虛擬儀器之后儀器儀表領(lǐng)域出現(xiàn)的新的發(fā)展方向,提出了將嵌入式系統(tǒng)、網(wǎng)絡(luò)與虛擬儀器結(jié)合的技術(shù)路線,將信號的采集、處理、存儲(chǔ)分布于不同的網(wǎng)絡(luò)位置的實(shí)施方案。利用ARM嵌入式在現(xiàn)場采集數(shù)據(jù),通過網(wǎng)絡(luò)通信將信號處理和存儲(chǔ)工作交給上位機(jī)負(fù)責(zé),采用S3C44B0X為核心的開發(fā)環(huán)境,然后進(jìn)行軟件系統(tǒng)的搭建,包括移植μC/OS?Ⅱ嵌入式操作系統(tǒng),嵌入式圖形界面系統(tǒng)μC/GUI,ADC及網(wǎng)卡的驅(qū)動(dòng)程序編寫以及移植LwIP實(shí)現(xiàn)TCP/IP協(xié)議等。測試結(jié)果表明,該系統(tǒng)的功能完善、操作十分方便,完全滿足實(shí)際應(yīng)用的需要,可以有效地組織和管理數(shù)據(jù)以及構(gòu)架網(wǎng)絡(luò)數(shù)據(jù)庫。
關(guān)鍵詞: 虛擬儀器; ARM; LabVIEW; S3C44B0X; μC/OS?Ⅱ; LwIP
中圖分類號: TN919?34; TP274 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2016)05?0024?04
0 引 言
虛擬儀器(Virtual Instrument)是基于計(jì)算機(jī)的儀器。計(jì)算機(jī)和儀器的密切結(jié)合是目前儀器發(fā)展的一個(gè)重要方向[1]。這種結(jié)合有兩種方式:一種是將計(jì)算機(jī)裝入儀器,其典型的例子就是所謂智能化的儀器。隨著計(jì)算機(jī)功能的日益強(qiáng)大以及其體積的日趨縮小,這類儀器功能也越來越強(qiáng)大,目前已經(jīng)出現(xiàn)含嵌入式系統(tǒng)的儀器;另一種方式是將儀器裝入計(jì)算機(jī)。以通用的計(jì)算機(jī)硬件及操作系統(tǒng)為依托,實(shí)現(xiàn)各種儀器功能。虛擬儀器主要是指這種方式[2]。
使用網(wǎng)絡(luò)化虛擬儀器技術(shù),可以不受地點(diǎn)、時(shí)間的約束,獲取準(zhǔn)確的測量信息或數(shù)據(jù),與傳統(tǒng)的儀器、測量、測試相比,帶來了諸多便利[3]。在網(wǎng)絡(luò)化虛擬儀器中,被測對象可通過測試現(xiàn)場的普通儀器設(shè)備,將測得的數(shù)據(jù)通過網(wǎng)絡(luò)傳輸給異地的精密測量設(shè)備或高檔次的微機(jī)化儀器去分析、處理,能實(shí)現(xiàn)測量信息的共享,可掌握網(wǎng)絡(luò)節(jié)點(diǎn)處信息實(shí)時(shí)變化的趨勢;此外,也可通過具有網(wǎng)絡(luò)傳輸功能的儀器將數(shù)據(jù)傳至原端即現(xiàn)場。采用自動(dòng)抄表系統(tǒng),可提高抄表的準(zhǔn)確性,能減少因估計(jì)或謄寫而可能出現(xiàn)的帳單錯(cuò)誤(供用電、水、燃?xì)?、熱能等)。管理部門因此能及時(shí)獲得準(zhǔn)確的數(shù)據(jù)信息,用戶也不再需要與抄表員預(yù)約上門抄表時(shí)間,迅速查詢帳單。使用網(wǎng)絡(luò)化虛擬儀器,采用網(wǎng)絡(luò)測量技術(shù),可以大幅度提高測量效率,降低監(jiān)測成本以及減少計(jì)量測試工作的周期[4]。
1 硬件設(shè)計(jì)
本文的目的是充分發(fā)揮分布式虛擬儀器的概念,將嵌入式系統(tǒng),網(wǎng)絡(luò),虛擬儀器聯(lián)系起來,將信號的采集、處理、存儲(chǔ)分布于不同的網(wǎng)絡(luò)位置。結(jié)合嵌入式系統(tǒng)的靈活性,避免其計(jì)算能力不強(qiáng)的缺點(diǎn),將信號處理工作交給上位機(jī)負(fù)責(zé)。系統(tǒng)結(jié)構(gòu)如圖1所示。
下位機(jī)的虛擬儀器負(fù)責(zé)信號的采集,通過以太網(wǎng)將數(shù)據(jù)傳輸?shù)缴衔粰C(jī),利用上位機(jī)強(qiáng)大的計(jì)算能力和海量存儲(chǔ)空間完成對原始數(shù)據(jù)的后期處理。
1.1 以太網(wǎng)設(shè)備
本系統(tǒng)采用的網(wǎng)絡(luò)RTL8019AS是一種高度集成的以太網(wǎng)控制芯片,能簡單地實(shí)現(xiàn)Plug and Play并兼容NE2000。
RTL8019AS芯片內(nèi)部集成了DMA控制器,ISA總線控制器和集成16KSRAM、網(wǎng)絡(luò)PHY收發(fā)器。用戶可以通過DMA方式把需要發(fā)送的數(shù)據(jù)寫入片內(nèi)SRAM中,讓芯片自動(dòng)將數(shù)據(jù)發(fā)送出去,而芯片在接收到數(shù)據(jù)后,用戶也可以通過DMA 方式將其讀出。RTL8019AS的詳細(xì)介紹請見RTL8019AS數(shù)據(jù)手冊。了解了RTL8019AS所提供的資源與硬件接口,便可以設(shè)計(jì)RTL8019AS與S3C44B0X的硬件電路。
在網(wǎng)絡(luò)通信模塊電路中,RTL8019AS與處理器S3C44B0X之間的信號連接關(guān)系如圖2所示。
1.2 電源、時(shí)鐘及復(fù)位電路
在本系統(tǒng)中,采用的是5 V和3.4 V的直流穩(wěn)壓電源,其中,S3C44B0X核心使用2.5 V電源,外圍器件需3.4 V電源,另外部分器件需5 V電源,5 V電路加了工作指示燈,并且加了二極管對電路加以保護(hù)。晶振電路用于向CPU及其他電路提供工作時(shí)鐘。在該系統(tǒng)中,S3C44BOX使用常用的無源晶振,電路如圖3所示。
根據(jù)S3C44B0X的最高工作頻率以及PLL電路的工作方式,系統(tǒng)選擇了10 MHz的有源晶振,10 MHz的晶振頻率經(jīng)過S3C44B0X片內(nèi)的PLL 電路倍頻后,最高可以達(dá)66 MHz。片內(nèi)的PLL電路兼有頻率放大和信號提純的功能,因此,系統(tǒng)可以以較低的外部時(shí)鐘信號獲得較高的工作頻率,以降低因高速開關(guān)時(shí)鐘所造成的高頻噪聲。
同時(shí)在系統(tǒng)中還有頻率為32.768 kHz的實(shí)時(shí)時(shí)鐘晶振源,在USB接口芯片處也有一個(gè)48 MHz的晶振。在系統(tǒng)中,復(fù)位電路主要完成系統(tǒng)的上電復(fù)位和系統(tǒng)在運(yùn)行時(shí)用戶的按鍵復(fù)位功能。復(fù)位電路可由IMP811芯片完成,復(fù)位電路如圖4所示。
該復(fù)位電路的工作原理如下:IMP811是一個(gè)可靠性很高的復(fù)位芯片,當(dāng)用戶按下按鈕S1時(shí)或者RST_IN送過來一個(gè)低電平時(shí),Reset端輸出為低電平,系統(tǒng)進(jìn)入復(fù)位狀態(tài),松開S1時(shí),系統(tǒng)即可進(jìn)入正常工作狀態(tài)。
2 實(shí)時(shí)操作系統(tǒng)
實(shí)時(shí)操作系統(tǒng),簡稱RTOS,具體指系統(tǒng)能及時(shí)響應(yīng)來自外部事件的請求,在確定的時(shí)間處理該事件,統(tǒng)一控制實(shí)時(shí)任務(wù)一致運(yùn)行。RTOS的開發(fā)工具允許用戶針對不同的應(yīng)用對象對RTOS的內(nèi)核進(jìn)行裁剪、壓縮,以適應(yīng)各類應(yīng)用,并提供應(yīng)用程序的調(diào)試環(huán)境。
2.1 μC/OS?Ⅱ的系統(tǒng)結(jié)構(gòu)
μC/OS?Ⅱ嵌入式實(shí)時(shí)操作系統(tǒng)是Jean J.Labrosse開發(fā)的一個(gè)完整的、可移植、固化、裁剪的占先式實(shí)時(shí)多任務(wù)內(nèi)核,目前已經(jīng)在超過40種不同架構(gòu)的微處理器上運(yùn)行,圖5是本系統(tǒng)的軟硬件體系結(jié)構(gòu)。
初始化程序是針對S3C44B0X使用匯編語言編寫的。在將控制權(quán)交給操作系統(tǒng)前,初始化最基本的硬件設(shè)備。主要工作是配置SDRAM并將操作系統(tǒng)代碼從FLASH拷貝到SDRAM中。
2.2 小鍵盤驅(qū)動(dòng)編寫
系統(tǒng)采用智能顯示驅(qū)動(dòng)芯片HD7279連接一個(gè)4×4鍵盤和S3C44B0X通信。HD7279A是一片具有串行可同時(shí)驅(qū)動(dòng)8位共陰式數(shù)碼管(或64只獨(dú)立LED)的智能顯示驅(qū)動(dòng)芯片,該芯片同時(shí)還可連接多達(dá)64鍵的鍵盤矩陣,單片即可完成LED顯示﹑鍵盤接口的全部功能。HD7279A內(nèi)部含有譯碼器,可直接接收BCD碼或16進(jìn)制碼,并同時(shí)具有2 種譯碼方式。此外,還具有多種控制指令,如消隱、閃爍、左移、右移、段尋址等。HD7279A具有片選信號可方便地實(shí)現(xiàn)多于8 位的顯示或多于64鍵的鍵盤接口。
3 硬件設(shè)計(jì)
3.1 模塊總體設(shè)計(jì)
整個(gè)系統(tǒng)的信號流程如圖6所示,信號通過ADC后以DMA方式進(jìn)入兩個(gè)8 MB的SDRAM,二者構(gòu)成一對乒乓存儲(chǔ)系統(tǒng),一側(cè)負(fù)責(zé)采集信號的緩存,同時(shí)另一側(cè)負(fù)責(zé)向上位機(jī)發(fā)送,二者交替工作,保證信號流采集和發(fā)送的連續(xù)。對于網(wǎng)絡(luò)通信模塊,由于μC/OS?Ⅱ只是一個(gè)實(shí)時(shí)的任務(wù)調(diào)度及通信內(nèi)核,缺少對網(wǎng)絡(luò)協(xié)議的支持,所以需要將LwIP(Light Weight IP protocol)移植到μC/OS?Ⅱ上,使其支持網(wǎng)絡(luò)功能。本章后面部分將重點(diǎn)介紹NE2000兼容網(wǎng)卡RTL8019AS驅(qū)動(dòng)程序在嵌入式系統(tǒng)中的編寫。
3.2 信號調(diào)理模塊
S3C44B0X 內(nèi)部具有一個(gè)逐次逼近型8 路模擬信號輸入的10位ADC,但是不具有保持采樣保持(S/H)電路,不能用于快速變化的信號采集,因此需要在前級信號調(diào)理電路中加入采樣保持功能。
在此系統(tǒng)中,采用了Microchip Technology公司的模擬增益可編程運(yùn)放(PGA)MCP6S28芯片,傳感器采集的信號接入MCP6S28的通道輸入端,輸出VOUT接入處理器內(nèi)部的A/D轉(zhuǎn)換器的信號輸入端AIN管腳。MCP6S28的增益可設(shè)置為1~32 V/V,它具有多路選擇輸入(MUX)模塊,共有8路輸入。MCP6S28具有SPI接口,故將其與S3C44B0X對應(yīng)的SPI管腳連接即可,用于選擇增益水平和輸入通道。對MCP6S28進(jìn)行操作的控制字節(jié)和數(shù)據(jù)字節(jié)均從SI引腳輸入,并在寫入數(shù)據(jù)的串行時(shí)鐘(SCK)上升沿被鎖存。
3.3 A/D采樣器程序設(shè)計(jì)
A/D轉(zhuǎn)換由S3C44B0X內(nèi)部模/數(shù)轉(zhuǎn)換器(ADC)完成,它是一個(gè)10位、逐次逼近型的ADC,有8路模擬信號輸入,其內(nèi)部結(jié)構(gòu)中包括模擬輸入多路復(fù)用器, 自動(dòng)調(diào)零比較器,時(shí)鐘產(chǎn)生器,10位逐次逼近寄存器(SAR),輸出寄存器。這個(gè)ADC還提供可編程選擇的睡眠模式, 以節(jié)省功耗。S3C44B0X 內(nèi)部有3個(gè)與A/D 轉(zhuǎn)換有關(guān)的寄存器:控制寄存器ADCCON、預(yù)分頻寄存器ADCPSR、數(shù)據(jù)寄存器ADCDAT。
ADCPSR中存儲(chǔ)預(yù)置比例因子,取值范圍是0~255,完成一次A/D轉(zhuǎn)換至少需要16個(gè)A/D時(shí)鐘周期,有:
A/D轉(zhuǎn)換總時(shí)鐘數(shù)=2×(預(yù)置比例因子+1)×16
A/D的最高采樣速率是100 KS/s,即每個(gè)采樣周期為10 μs。ARM7運(yùn)行在66 MHz主頻下,每個(gè)周期為15.152 ns。這樣每個(gè)采樣周期包括660個(gè)主頻周期。ARM7具有0.97 MIPS/MHz的指令效率,660個(gè)主頻周期可以運(yùn)行約640條指令。在計(jì)數(shù)器觸發(fā)A/D采樣的情況下,處理器的工作是每采樣周期從A/D讀取一次數(shù)據(jù)并保存到RAM中,代碼如下:
LDR R0,[R1]:寄存器R1中保存了A/D數(shù)據(jù)寄存器的地址,需要3周期。
STR R0,[R2,#4]:寄存器R2中保存了RAM中數(shù)據(jù)存儲(chǔ)空間的起始地址;需要2周期。
這個(gè)操作需要5個(gè)主頻周期。利用剩余的轉(zhuǎn)換時(shí)間,ARM7可以完成數(shù)據(jù)的打包發(fā)送,以及其他的任務(wù)。在進(jìn)行A/D轉(zhuǎn)換時(shí),ARM要禁止一切可屏蔽中斷。
4 LabVIEW上位機(jī)模塊設(shè)計(jì)
上位機(jī)的功能有兩方面:一是負(fù)責(zé)數(shù)據(jù)的實(shí)時(shí)顯示,參數(shù)測量和存儲(chǔ);二是對下位機(jī)的遠(yuǎn)程控制。監(jiān)測人員能夠直觀地獲得測試結(jié)果,很方便地對遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)進(jìn)行控制。
本系統(tǒng)的上位機(jī)系統(tǒng)利用虛擬儀器技術(shù)和LabVIEW 圖形化軟件開發(fā)集成環(huán)境,設(shè)計(jì)了該數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)分析、存儲(chǔ)和遠(yuǎn)程控制模塊。測試結(jié)果表明,該數(shù)據(jù)分析處理模塊的功能比較完善,操作十分方便,完全滿足實(shí)際應(yīng)用的需要。
4.1 網(wǎng)絡(luò)數(shù)據(jù)通信接口程序設(shè)計(jì)
上位機(jī)和下位機(jī)通信的傳輸內(nèi)容可以分為測控命令和數(shù)據(jù)兩種。其中下位機(jī)向PC 機(jī)發(fā)送的數(shù)據(jù),數(shù)據(jù)量大、對傳輸速度要求較高、對可靠性的要求不很嚴(yán)格。
UDP 是面向非連接的方式, 提供的是不可靠的數(shù)據(jù)傳輸,但實(shí)現(xiàn)起來比較簡單,速度快、實(shí)時(shí)性好,并且支持廣播和組播,同時(shí)在單一、封閉局域網(wǎng)中可靠性也很高。因此用一般的UDP通信就可以達(dá)到很好的可靠性以滿足數(shù)據(jù)傳輸?shù)囊蟆?/p>
一個(gè)簡單的UDP數(shù)據(jù)接收、顯示程序如圖7所示。程序分為UDP打開,UDP讀取和UDP關(guān)閉三個(gè)環(huán)節(jié)。首先指定本地端口號,本文為61557,這個(gè)端口必須與下位機(jī)設(shè)置的目標(biāo)遠(yuǎn)程端口一致。在運(yùn)行此程序前,必須先運(yùn)行下位機(jī)程序。UDP Read節(jié)點(diǎn)設(shè)置UDP數(shù)據(jù)報(bào)最大字節(jié)數(shù),最大值為548,此處設(shè)置為100,若超過本值,Windows將提示出錯(cuò)信息。
4.2 控制程序設(shè)計(jì)
程序界面如圖8所示,觀測人員可以通過示波器的波形顯示及時(shí)調(diào)整遠(yuǎn)端采集設(shè)備的相應(yīng)參數(shù)。這樣可以充分利用A/D轉(zhuǎn)換器的最大輸入量程(2.5 V),盡可能提高測量精度。另一個(gè)可以控制的參數(shù)是采樣速率,當(dāng)被測信號的頻率較低時(shí)可以使用低速率采樣,在保證失真度的情況下降低數(shù)據(jù)流,避免因網(wǎng)絡(luò)擁擠產(chǎn)生數(shù)據(jù)丟失。設(shè)備重啟控制用于使下位機(jī)的系統(tǒng)軟件及硬件寄存器完全恢復(fù)到初始狀態(tài)。
控制信號的數(shù)據(jù)量較小,對傳輸?shù)目煽啃砸髧?yán)格,故采用TCP協(xié)議。對于LabVIEW程序的設(shè)計(jì)采用事件驅(qū)動(dòng)模式,當(dāng)增益水平和采樣速率的List控件值改變時(shí),驅(qū)動(dòng)主程序向下位機(jī)發(fā)送控制信號。向下位機(jī)發(fā)送的是增益水平或者采樣速率的數(shù)值。因?yàn)榫W(wǎng)絡(luò)以及系統(tǒng)的延時(shí),效果通常要經(jīng)過一段時(shí)間才能反映出來。
4.3 下位機(jī)響應(yīng)程序編寫
下位機(jī)的TCP/IP協(xié)議棧是通過LwIP實(shí)現(xiàn)的,LwIP提供一系列函數(shù)實(shí)現(xiàn)IP,TCP,UDP等的操作。其中tcp_input(),tcp_process(),tcp_receive()與TCP輸入處理有關(guān)。函數(shù)netconn listen()讓系統(tǒng)進(jìn)入TCP監(jiān)聽狀態(tài)。當(dāng)TCP連接建立后,tcp_receive()把接收到的數(shù)據(jù)tcp_data傳給上級應(yīng)用程序。再判斷tcp_data數(shù)值的大小,分為以下三種情況:
若為0X11111111,使程序跳轉(zhuǎn)到系統(tǒng)初始位置,重新設(shè)置各種設(shè)備。
若為1~32,調(diào)用SPI控制程序,給數(shù)據(jù)寄存器SPDR賦值,再通過MOSI發(fā)送給MCP6S28的增益寄存器。
若tcp_data≤1 000,則為采樣速率控制量,需修改A/D轉(zhuǎn)換預(yù)置比例因子寄存器ADCPSR,修改的值根據(jù)芯片手冊推導(dǎo)。
4.4 數(shù)據(jù)文件儲(chǔ)存程序設(shè)計(jì)
由于二進(jìn)制文件存儲(chǔ)速度快,冗余數(shù)據(jù)少,格式也最為緊湊,因此在進(jìn)行大量數(shù)據(jù)采集時(shí),往往采用這種文件格式。圖9中是用底層函數(shù)實(shí)現(xiàn)的二進(jìn)制文件的輸入VI,可以實(shí)時(shí)存儲(chǔ)通過UDP接收的數(shù)據(jù),首先用Open/Creat/Replace File VI新建一個(gè)文件,然后在WhileLoop中用Write File函數(shù)將網(wǎng)絡(luò)通信數(shù)據(jù)寫入文件,最后用Close File函數(shù)關(guān)閉文件。
5 結(jié) 論
本文基于分布式虛擬儀器概念,設(shè)計(jì)了網(wǎng)絡(luò)化數(shù)據(jù)采集和測試系統(tǒng),基于ARM的下位機(jī)和基于LabVIEW的上位機(jī)通過網(wǎng)絡(luò)協(xié)同工作,實(shí)現(xiàn)了數(shù)據(jù)的實(shí)時(shí)采集、處理和存儲(chǔ)。首先針對基于ARM微處理器S3C44B0X的嵌入式采集系統(tǒng)進(jìn)行整體開發(fā),將嵌入式操作系統(tǒng)μC/OS?II移植到本系統(tǒng)中,開發(fā)了網(wǎng)卡,數(shù)據(jù)采集模塊的底層驅(qū)動(dòng)程序。同時(shí),移植μC/GUI圖形用戶接口,編寫了鍵盤驅(qū)動(dòng),使嵌入式系統(tǒng)具有更友好的人機(jī)界面,本系統(tǒng)將虛擬儀器技術(shù)和數(shù)據(jù)庫相結(jié)合,引入LabVIEW SQL及相關(guān)模型,為有效地組織和管理數(shù)據(jù)以及構(gòu)架網(wǎng)絡(luò)數(shù)據(jù)庫,打下了良好的基礎(chǔ)。
參考文獻(xiàn)
[1] 吳文忠,李萬磊.基于ARM和Zigbee的智能家居系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(6):1987?1990.
[2] 費(fèi)莉,王博,劉述喜.基于LabVIEW的數(shù)據(jù)采集及測試系統(tǒng)設(shè)計(jì)[J].重慶理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2012(10):38?41.
[3] 全曉莉,周南權(quán),余永輝.基于虛擬儀器技術(shù)的網(wǎng)絡(luò)實(shí)驗(yàn)系統(tǒng)的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(9):3227?3230.
[4] 王曉亮,謝朝輝.基于LabVIEW和FPGA的存儲(chǔ)器測試系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,2012,20(7):1763?1765.
[5] 陳松林,黃建萍.基于LabVIEW的網(wǎng)絡(luò)化數(shù)據(jù)采集及處理系統(tǒng)[J].現(xiàn)代電子技術(shù),2010,33(2):182?184.
[6] 張明,姜崢嶸.基于LabVIEW的網(wǎng)絡(luò)虛擬實(shí)驗(yàn)室設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2010,33(16):178?180.