吳 焱
(安徽工貿(mào)職業(yè)技術(shù)學(xué)院 機(jī)械與汽車工程系,安徽 淮南 232001)
NDIR+PID傳感器氣體檢測(cè)系統(tǒng)硬件結(jié)構(gòu)如圖1所示,包括信號(hào)處理模塊、數(shù)據(jù)處理模塊和通信模塊等。對(duì)NDIR傳感器,信號(hào)處理模塊包括紅外光源和增益濾波電路。ADuCM360控制紅外光源發(fā)出光脈沖,NDIR傳感器根據(jù)檢測(cè)到的光信號(hào)輸出對(duì)應(yīng)的電壓值,本文采用的熱電堆傳感器輸出最大mV級(jí)的電壓信號(hào),再經(jīng)過(guò)增益濾波后傳輸給數(shù)據(jù)處理模塊的AD7190采樣。對(duì)PID傳感器,信號(hào)處理模塊包括帶增益的IV轉(zhuǎn)換和低通濾波電路。因?yàn)檩敵龅氖俏⑷蹼娏餍盘?hào),微弱電流經(jīng)IV轉(zhuǎn)換放大成合適的電壓信號(hào),經(jīng)過(guò)低通濾波后送給數(shù)據(jù)處理模塊的AD7190采樣。AD7190把采樣數(shù)據(jù)傳給ADuCM360處理并通過(guò)通信接口傳輸。通信模塊包括串口、USB和4~20mA的標(biāo)準(zhǔn)工業(yè)信號(hào)接口,可滿足各種場(chǎng)合的應(yīng)用。軟件結(jié)構(gòu)如圖2所示,包括上位機(jī)與下位機(jī)兩部分。下位機(jī)運(yùn)行在檢測(cè)硬件上,執(zhí)行AD采樣、DA輸出和傳輸?shù)裙δ?。上位機(jī)運(yùn)行在客戶端,java存儲(chǔ)程序存儲(chǔ)采樣數(shù)據(jù)到hsqldb數(shù)據(jù)庫(kù),LabVIEW監(jiān)控程序顯示采樣信息。
圖1 系統(tǒng)硬件結(jié)構(gòu)圖
圖2 系統(tǒng)軟件結(jié)構(gòu)圖
2.1.1 紅外光源驅(qū)動(dòng)電路
采用MR3-1089為紅外光源,驅(qū)動(dòng)電壓為5V時(shí)的驅(qū)動(dòng)電流達(dá)到150mA可使紅外輻射最大化以獲得最佳性能。光源關(guān)閉時(shí)的燈絲阻值較低,這時(shí)光源開(kāi)啟會(huì)產(chǎn)生瞬間的電流浪涌,且紅外光源的驅(qū)動(dòng)電流較大,要避免燈的電流回路流經(jīng)熱電堆回路產(chǎn)生的電壓失調(diào)誤差。為解決上述問(wèn)題,采用帶軟啟動(dòng)功能的穩(wěn)壓器ADP7105給光源單獨(dú)供電,電路如圖3所示。斬波頻率范圍從0.1Hz~5Hz,本文設(shè)為0.25Hz。ADP7105外接10nF的電容,軟啟動(dòng)時(shí)間約12.2ms,是100ms最小斬波階躍時(shí)間的0.122倍,電路可正常工作。
圖3 熱電堆信號(hào)處理電路
2.1.2 增益濾波電路
采用NDIR原理的熱電堆氣體傳感器輸出電壓在幾百微伏到幾毫伏,后端連接的運(yùn)放電路要具備高可調(diào)增益和很低的漂移和噪聲,避免直流誤差。本文采用最大偏置電流僅1pA的AD8605,電壓噪聲8nV/√Hz,低于熱電堆46nV/√Hz的電壓噪聲。電流噪聲10fA/√Hz,熱電堆內(nèi)部電阻84kΩ,電流流過(guò)的噪聲為840pV/√Hz,影響極低。
熱電堆電路如圖3所示,ACT和REF分別是測(cè)量和參考輸出,84kΩ內(nèi)部堆電阻與電容8.2nF的CACT1組成低通濾波電路,-3dB截止頻率約231Hz。RACT1、RACT2、CACT2與AD8605構(gòu)成同相放大電路,CACT2是濾波電容,對(duì)低頻信號(hào)電容可看作開(kāi)路,對(duì)高頻信號(hào)電容看作短接,此時(shí)的電路相當(dāng)于一個(gè)電壓跟隨器,避免了對(duì)高頻信號(hào)的放大,取值約15nF。該電路的截止頻率為241.3Hz,22位階躍函數(shù)建立時(shí)間10ms。NDIR最大斬波頻率是5Hz,半個(gè)周期的脈沖寬度最小值100ms,同相放大電路的階躍函數(shù)建立時(shí)間是它的0.1倍,電路可以使用。熱電堆的滿量程輸出電壓為1mVp-p,AD7190基準(zhǔn)電壓為2.5V,RACT1和RACT2取值236Ω和47kΩ,同相放大電路增益200,后續(xù)AD7190采樣電路內(nèi)部PGA設(shè)置為8,獲得約1.6V的采樣輸入電壓。如果要調(diào)整同相電路增益,可調(diào)節(jié)RACT1阻值,不建議調(diào)整RACT2,會(huì)影響電路主極點(diǎn)的頻率。
針對(duì)上述問(wèn)題,參考傳統(tǒng)LNG氣化站設(shè)計(jì)理念,以小型撬裝式氣化站為主體,充分考慮空間的局限,采用管道分析軟件CAESARⅡ?qū)η搜b式LNG氣化站管線進(jìn)行應(yīng)力分析,以保證小型撬裝式LNG氣化站能夠安全運(yùn)行。
圖4 NTC電路
2.2.1 IV轉(zhuǎn)換電路+低通濾波電路
電流輸出型傳感器常采用IV轉(zhuǎn)換和可編程增益以最大程度提高動(dòng)態(tài)范圍,PID傳感器的輸出電流非常小,可看作電流源并聯(lián)分流電容和分流電阻,電容和電阻的典型值在150pF和600MΩ。通過(guò)IV轉(zhuǎn)換的反饋電阻RF把電流轉(zhuǎn)換成電壓,RF取值1MΩ。RF會(huì)在反饋環(huán)路中產(chǎn)生一個(gè)低頻極點(diǎn)導(dǎo)致運(yùn)算放大器振蕩。為了保持電路穩(wěn)定需要并聯(lián)一個(gè)反饋電容CF。CF會(huì)影響電路的最高帶寬,選擇小電容可以帶來(lái)高的帶寬和低的相位裕量,但可能會(huì)導(dǎo)致輸出振蕩,本文取值4.7pF,信號(hào)帶寬34kHz。
為實(shí)現(xiàn)IV轉(zhuǎn)換后的電壓信號(hào)放大,有兩種常用方法:
(1)IV轉(zhuǎn)換+PGA,如圖5(A)所示。
(2)帶可調(diào)增益的IV轉(zhuǎn)換,如圖5(B)所示。
不使用PGA,采用1MΩ+4.7pF(PGA=1)和10MΩ+0.47pF(PGA=10)兩種情況進(jìn)行對(duì)比,帶寬依然是34kHz。前者最終的總噪聲依然是50μVrms,后者因?yàn)镽F阻值較大,相應(yīng)的三種噪聲源數(shù)值也增加,分別為NCURRENT≈114uVrms,NRF≈93uVrms,fp1≈70kHz,NOP≈791uVrms,,總噪聲約805uVrms,經(jīng)RC低通濾波后總噪聲約460uVrms。所以,采用帶增益的IV轉(zhuǎn)換電路噪聲表現(xiàn)優(yōu)于IV轉(zhuǎn)換+PGA的組合電路方式。
圖5 PID信號(hào)處理模塊
本文采用圖5(B)的電路。
2.3.1 ADC
AD7190是24位,具有片內(nèi)極低噪聲可編程增益的AD,可直接采樣小信號(hào)數(shù)據(jù)。具有四個(gè)偽差分(單極性)或兩個(gè)差分(雙極性)模擬量輸入通道,每個(gè)通道都可以被配置為緩沖或無(wú)緩沖模式。無(wú)緩沖模式時(shí)輸入通道的模擬輸入電流會(huì)導(dǎo)致動(dòng)態(tài)的負(fù)載,需要合理選擇電阻電容數(shù)值降低增益誤差,如表1所示。本文選擇無(wú)緩沖模式,模擬量輸入通道前接電壓跟隨器。AIN1-AIN2是熱電堆輸入,AIN4是PID傳感器輸入,AINCOM是參考端。AD7190與MCU的通信通過(guò)CS、DIN、DOU/RDY和SCLK完成,CS是器件選擇引腳,DIN引腳用于向寄存器寫入數(shù)據(jù),DOUT/RDY用于指示采樣完成和讀取采樣數(shù)據(jù),SCLK是時(shí)鐘引腳,AD7190的所有操作都是基于SCLK時(shí)鐘進(jìn)行的。AD7190片內(nèi)包含多種寄存器,對(duì)它的操作是通過(guò)配置寄存器實(shí)現(xiàn)的,關(guān)鍵的寄存器有:(1)通信寄存器,對(duì)AD7190的操作從通信寄存器開(kāi)始,寫入通信寄存器的數(shù)據(jù)指示下一步要操作的對(duì)象和讀寫操作狀態(tài)。(2)狀態(tài)寄存器(000),只讀寄存器,讀取AD7190的各種狀態(tài),如是否就緒,是否發(fā)生錯(cuò)誤。(3)模式寄存器(001),用于設(shè)置AD7190的工作模式,如連續(xù)轉(zhuǎn)換、單次轉(zhuǎn)換等。(4)配置寄存器(010),用于設(shè)置AD7190是單極性還是雙極性,是否使能緩沖器,PGA增益等。(5)數(shù)據(jù)寄存器(011),只讀寄存器,讀取AD采樣的結(jié)果。以連續(xù)轉(zhuǎn)換模式為例,AD7190上電后默認(rèn)是該模式,CS拉低選中AD7190,向DIN寫入0x58指示下一步從數(shù)據(jù)寄存器讀取采樣數(shù)據(jù),當(dāng)DOUT/RDY為低電平,指示轉(zhuǎn)換完成,從DOUT/RDY讀取采樣數(shù)據(jù),完畢后DOUT/RDY為高電平,表明讀取操作完成。如果要設(shè)置為單次轉(zhuǎn)換,流程如下:向DIN寫入0x08,指示下一步要寫入模式寄存器(001),之后向DIN寫入0x280060,把模式寄存器的MR23-MR21位置為001,AD7190為單次轉(zhuǎn)換模式,在一次轉(zhuǎn)換完成后,DOUT/RDY變?yōu)榈碗娖剑駾INI寫入0x58,指示下一步要讀取數(shù)據(jù)寄存器,然后從DOUT/RDY讀取采樣數(shù)據(jù),完成后DOUT/RDY變?yōu)楦唠娖?,操作結(jié)束,AD7190進(jìn)入省電模式。上述模式的特點(diǎn)在于每次讀取前都要向寄存器寫入數(shù)據(jù)進(jìn)行配置,操作較為繁瑣。AD7190提供了連續(xù)讀取模式,該模式下只需要配置一次,之后的采樣結(jié)果會(huì)自動(dòng)放置在DOUT/RDY上。向DIN寫入0×5C,配置通信寄存器的CR2位為1,激活連續(xù)讀取模式,DOUT/RDY為低采樣完成,數(shù)據(jù)讀取完成DOUT/RDY為高,等到下一次采樣結(jié)果可用時(shí)DOUT/RDY為低,可直接讀取。要注意,所有操作都要在SCLK的時(shí)鐘信號(hào)下進(jìn)行。
以熱電堆傳感器采樣為例,向通信寄存器寫入0x10指示下一步操作配置寄存器,然后向配置寄存器寫入0x00F00B,通道選擇AIN1到AIN4,增益8,單端輸入。之后向通信寄存器寫入0x08指示下一步操作模式寄存器,向模式寄存器寫入0x0003FF配置時(shí)鐘、輸出速率和連續(xù)采樣模式。根據(jù)數(shù)據(jù)手冊(cè),熱電堆數(shù)據(jù)采樣速率設(shè)置在3.5~483Hz可獲得最佳噪聲性能,本文AD采樣速率設(shè)置為10Hz,熱電堆的輸出數(shù)據(jù)在2s半周期內(nèi)的后1.5s以10Hz采樣率獲得,可以保證信號(hào)的完整性。最后向通信寄存器寫入0x58讀取數(shù)據(jù)寄存器的采樣數(shù)據(jù),完成操作。
2.3.2 通信模塊
考慮到可能的應(yīng)用場(chǎng)合,提供了串口、USB和4~20mA標(biāo)準(zhǔn)輸出三種接口。串口和USB分別采用ADM3202和MCP2200,這里不再贅述。AD5420+AD5700提供了4~20mA的標(biāo)準(zhǔn)輸出且兼容HART的通信接口,可方便接入包含變送器的應(yīng)用場(chǎng)合。HART是雙向數(shù)字通信,它改變了傳統(tǒng)4~20mA每次只能進(jìn)行一個(gè)過(guò)程變量的單向通信的限制,通過(guò)在4~20mA信號(hào)上調(diào)制一個(gè)1mA p-p FSK信號(hào)實(shí)現(xiàn),包含1200Hz和2200Hz移頻。電路如圖6所示,AD5420是一款16位電流輸出DAC,AD5700是一款低功耗HART調(diào)制解調(diào)器,AD5700的HART_OUT引腳輸出HART信號(hào),交流耦合到AD5420的CAP2引腳,之后HART信號(hào)就會(huì)出現(xiàn)在AD5420的IOUT輸出端。CAP2與HART_OUT和AVDD間的電容要確保FSK輸出沒(méi)有失真,C2和C3取值分別為2.2nF和22nF。AVDD采用24V現(xiàn)場(chǎng)供電,旁路電容采用10uF+0.1uF并聯(lián)形式,10uF采用鉭電容,0.1uF采用低ESR和ESI的陶瓷電容,可以較好的處理內(nèi)部邏輯開(kāi)關(guān)引起的瞬態(tài)電容。如果驅(qū)動(dòng)負(fù)載難以確定,IOUT和GND之間要外接0.01uF電容,能保證驅(qū)動(dòng)超過(guò)50mH的負(fù)載??紤]到工業(yè)環(huán)境可能的瞬態(tài)高電壓,采用電阻、鉗位二極管和TVS保護(hù)AD5420,電阻取值要考慮IOUT流過(guò)的壓降在AVDD-2.5V以內(nèi),這里取值18Ω,最大降壓0.36V。IOUT和AVDD都外接了TVS,IOUT與AVDD和GND間配置鉗位二極管。AD5700采用外接帶通濾波器將電流限制在能夠滿足本質(zhì)安全的水平,電阻取值150kΩ。
圖6 4~20mA輸出電路
AD5420的操作涉及到多個(gè)寄存器,24位移位寄存器由地址字節(jié)+數(shù)據(jù)字組成,DB15-DB0是數(shù)據(jù)字,DB23-DB16是地址字節(jié),確定要操作的對(duì)象,如控制寄存器、數(shù)據(jù)寄存器等。如果要激活回讀功能,DB23-DB16設(shè)置為00000010,此時(shí)的DB1-DB0是讀取地址,取值范圍從00~10,分別表示讀取狀態(tài)寄存器、數(shù)據(jù)寄存器和控制寄存器。以回讀數(shù)據(jù)寄存器為例,寫入0x020001到移位寄存器,設(shè)置讀取數(shù)據(jù)寄存器,接著寫入NOP條件0x000000,在該寫操作期間,數(shù)據(jù)寄存器中的數(shù)據(jù)可在SDO上讀取。向移位寄存器DB23-DB16寫入0x55可尋址控制寄存器,DB15-DB0可設(shè)置各種功能:DB15-DB14取值00,DB13是REXT,用于選擇外部電流設(shè)置電阻。DB12是OUTEN,置1輸出使能。DB11-DB8是SLEW RATE數(shù)字壓擺率時(shí)鐘,DB7-DB5是SR步進(jìn),DB4是SREN,使能SR,DB3是DCEN,使能daisy chain,DB2-DB0選擇輸出范圍,設(shè)置為101輸出4~20mA電流。向移位寄存器的DB23-DB16寫入0x01尋址數(shù)據(jù)寄存器,DB15-DB0是要寫入的數(shù)據(jù)。AD5420的配置流程如圖7所示,首先向移位寄存器寫入0x551005配置控制寄存器,不選擇外部電流設(shè)置電阻,輸出使能,禁用數(shù)字壓擺率控制,輸出4~20mA電流。之后再把AD采樣數(shù)據(jù)寫入數(shù)據(jù)寄存器,完成配置。
圖7 AD5420配置流程圖
圖8 下位機(jī)流程圖
3.2.1 hsqldb數(shù)據(jù)庫(kù)
采用java內(nèi)置的hsqldb數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)功能,hsqldb提供了服務(wù)器、standalone、內(nèi)存和web服務(wù)等四種模式。standalone的數(shù)據(jù)保存在本地文件,跟隨java虛擬機(jī)啟動(dòng),JDBC實(shí)例是jdbc:hsqldb:file:數(shù)據(jù)庫(kù)文件路徑。內(nèi)存模式的數(shù)據(jù)都保存在內(nèi)存中,程序結(jié)束的同時(shí)數(shù)據(jù)也被銷毀,JDBC實(shí)例是jdbc:hsqldb:mem:數(shù)據(jù)庫(kù)名稱。服務(wù)器模式下hsqldb與其他數(shù)據(jù)庫(kù)一樣,JDBC實(shí)例是jdbc:hsqldb:hsql://localhost:端口號(hào)/數(shù)據(jù)庫(kù)名稱。Web服務(wù)同服務(wù)器模式類似,只是通過(guò)http協(xié)議傳輸數(shù)據(jù),本文采用服務(wù)器模式。
hsqldb安裝流程如下:(1)安裝數(shù)據(jù)庫(kù):在hsqldb官網(wǎng)下載并解壓數(shù)據(jù)包,在PC端合適位置建立數(shù)據(jù)庫(kù)文件夾hsqldb,在hsqldb建立database、data和lib目錄,把解壓縮數(shù)據(jù)包的libhsqldb.jar復(fù)制到該目錄。(2)創(chuàng)建數(shù)據(jù)庫(kù):首先要保證java已經(jīng)配置到path路徑下,在cmd命令行模式下進(jìn)入hsqldbdata目錄,執(zhí)行java-cp../lib/hsqldb.jar org.hsqldb.Server-datatbase qitijiance,在data目錄下創(chuàng)建了qitijiance數(shù)據(jù)庫(kù)。此時(shí)的data目錄下有3個(gè)新建的文件,其中.properties是qitijiance數(shù)據(jù)庫(kù)的配置文件,可根據(jù)需要修改端口號(hào)等信息。.lck是鎖狀態(tài),.log是運(yùn)行和操作的歷史記錄信息。之后進(jìn)入database目錄,建立runmanager、runmanagerswing和runserver2.bat文件,執(zhí)行runserver2.bat啟動(dòng)hsqldb數(shù)據(jù)庫(kù)。(3)配置數(shù)據(jù)庫(kù):執(zhí)行runmanager.bat打開(kāi)GUI界面,配置數(shù)據(jù)庫(kù)的詳細(xì)內(nèi)容,如驅(qū)動(dòng)名稱、JDBC連接、用戶名、密碼、服務(wù)器模式等。之后點(diǎn)擊OK確認(rèn),連接到qitijiance數(shù)據(jù)庫(kù)。(4)操作數(shù)據(jù)庫(kù),執(zhí)行SQL語(yǔ)句進(jìn)行創(chuàng)建表等操作。
3.2.2 基于java的數(shù)據(jù)存儲(chǔ)
3.2.2.1 基于串口的通信
采用java實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)功能[7,8],在eclipse環(huán)境下開(kāi)發(fā)。串口下的java包有3類,第1類是SUN提供的comm2.0和comm3.0,前者支持Windows,后者支持Linux。第2類是IBM提供的串口API。第3類是其他開(kāi)源的API。本文采用comm2.0jar包,在eclipse環(huán)境下開(kāi)發(fā),把win32com.dll、comm.jar和javax.comm.properties分別復(fù)制到bin和jrein目錄、lib和jrelibext目錄、lib和jrelib目錄下。如果要在64位環(huán)境下開(kāi)發(fā),可以采用rxtxjar包。eclipse環(huán)境的JRE指定為JDK的安裝路徑并導(dǎo)入hsqldb.jar、comm.jar包。串口讀取并存儲(chǔ)的操作流程如下:(1)獲取本地串口:列舉出本地所有的串口并打開(kāi)需要的串口,涉及到serialport和commportidentifier類,通過(guò)getPortIdentifiers靜態(tài)方法獲取本地串口,Enumeration> allPorts = CommPortIdentifier.getPortIdentifiers(); com1 = CommPortIdentifier.getPortIdentifier(“COM1”);再通過(guò)open方法打開(kāi),serialcom1=(SerialPort)com1.open(“OpenerAndCloser”, 1000); setSerialPortParams方法用于設(shè)置串口的參數(shù)。(2)從串口讀取數(shù)據(jù),一般有輪詢和事件監(jiān)聽(tīng)兩種模式,前者在固定的時(shí)間間隔掃描串口,有數(shù)據(jù)就執(zhí)行讀取操作,后者注冊(cè)串口事件監(jiān)聽(tīng)類,有數(shù)據(jù)就自動(dòng)觸發(fā)事件,在響應(yīng)方法中讀取數(shù)據(jù)。本文采用事件監(jiān)聽(tīng)模式,實(shí)現(xiàn)serialporteventlistense類,重寫serialevent方法,實(shí)現(xiàn)監(jiān)聽(tīng)邏輯。定義輸入流datastream= serialcom1.getInputStream(),添加監(jiān)聽(tīng)事件對(duì)象serialcom1.addEventListener(this),serialcom1.notifyOnDataAvailable(true),重寫監(jiān)聽(tīng)方法,定義讀取數(shù)據(jù)緩存數(shù)組byte[]datacache,如果串口有可用數(shù)據(jù)event.getEventType()==SerialPortEvent.DATA_AVAILABLE,把串口數(shù)據(jù)保存到緩存數(shù)組中datastream.read(datacache)。(3)把數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù),初始化hsqldb的jdbc驅(qū)動(dòng),class.forname(“org.hsqldb.jdbcDriver”),獲取hsqldb數(shù)據(jù)庫(kù)的連接,connection hsqldb_c=drivermanager.getconnection(“jdbc:hsqldb:hsql://localhost:端口號(hào)/qitijiance”,”用戶名”,”密碼”),如果采用其他模式,JDBC的實(shí)例語(yǔ)句也要做修改。statement exec_st= hsqldb_c.createstatement(),執(zhí)行exec_st.execute(SQL語(yǔ)句)把串口數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。
3.2.2.2 基于USB的通信
采用libusbjava實(shí)現(xiàn)基于USB通信的數(shù)據(jù)存儲(chǔ),libusbjava是對(duì)libusb的java封裝包,首先要安裝libusb,在官網(wǎng)下載libusbjava支持的1.0.19源碼解壓縮,復(fù)制libusb-1.0.dll到c:windowssystem32。之后安裝libusbjava,下載最新版本源代碼,復(fù)制libusbjava-*.dll到c:windowssystem32,復(fù)制liggcc_s_seh-1.dll等mingw c++標(biāo)準(zhǔn)庫(kù)到c:windowssystem32,如果已經(jīng)安裝了mingw就不用復(fù)制了。導(dǎo)入libusbjava.jar到當(dāng)前工程文件,如果是java8版本,復(fù)制libusbjava.jar到c:windowssunjavalibext,如果是9或更新的版本,安裝eclipse的libusbjava插件。安裝完成就可以在java項(xiàng)目利用libusbjava讀取USB數(shù)據(jù)并存儲(chǔ)了:(1)初始化libusb,創(chuàng)建一個(gè)新的context,usb_ctx=new Context()。(2)根據(jù)VID、PID查找USB設(shè)備,VID和PID數(shù)值要與下位機(jī)一致usb_dev=Device.search(usb_ctx,VID,PID)。(3)打開(kāi)設(shè)備,申明希望的接口,usb_dev.open(),usb_dev.claimInterface(interface number)。(4)從USB讀取數(shù)據(jù),保存到數(shù)據(jù)庫(kù)中。usb_dev.readBulk(endpoint,data,length,0),之后的保存操作同3.2.2.1節(jié)的(3)步。(5)釋放接口,關(guān)閉設(shè)備,usb_dev.releaseInterface(interface number),usb_dev.close()。
3.2.3 基于LabVIEW的上位機(jī)
因?yàn)長(zhǎng)abVIEW沒(méi)有提供數(shù)據(jù)庫(kù)訪問(wèn)功能,采用第三方插件labsql實(shí)現(xiàn)基于ODBC的數(shù)據(jù)庫(kù)操作。該插件應(yīng)用簡(jiǎn)單,只需把解壓后的文件夾保存到LabVIEW安裝目錄下的user.lib文件夾下即可。這里需要注意,hsqldb從2.0版本開(kāi)始提供ODBC訪問(wèn)功能,支持所有的SQL語(yǔ)句操作,但是暫時(shí)還不支持元數(shù)據(jù)。可通過(guò)安裝PostgreSQL ODBC驅(qū)動(dòng)實(shí)現(xiàn),推薦11及以上版本。安裝PostgreSQL ODBC version11,打開(kāi)管理員工具進(jìn)入ODBC,添加PostgreSQL數(shù)據(jù)源并配置:data source就是ODBC數(shù)據(jù)源的名稱,labsql就是根據(jù)這個(gè)名稱找到數(shù)據(jù)對(duì)象的,一定要保證正確。database是本機(jī)上hsqldb數(shù)據(jù)庫(kù)的名稱。server是本機(jī)的名稱,可以寫localhost。user name和password是hsqldb數(shù)據(jù)庫(kù)的用戶名和密碼,ssl mode暫時(shí)還不支持。之后點(diǎn)擊test進(jìn)行連通性測(cè)試,完成配置。LabVIEW的操作流程如下:首先執(zhí)行ADO Create Conn.vi創(chuàng)建connection對(duì)象,把connection和DSN參數(shù)傳給ADO Open Conn.vi實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接,DSN要與ODBC中的配置一致。ADO SQL Execute.vi執(zhí)行select語(yǔ)句,從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)傳給控件顯示,最后執(zhí)行ADO Connection Close.vi關(guān)閉連接。
采用海曼CO2熱電堆傳感器+S1226+串口通信進(jìn)行系統(tǒng)測(cè)試,CO2傳感器測(cè)量滿量程50ppm的CO2氣體,已進(jìn)行過(guò)校正處理,上位機(jī)顯示如圖9所示。PID傳感器輸出微弱電流信號(hào),采用S1226光電二極管模擬,最大輸出500pA,采樣顯示如圖10所示。本文設(shè)計(jì)了基于NDIR和PID傳感器的氣體檢測(cè)系統(tǒng),詳細(xì)介紹了傳感器采樣電路的基本原理和關(guān)鍵參數(shù)選擇,AD采樣和4-20mA輸出的配置流程。采用java+hsqldb實(shí)現(xiàn)了串口、USB通信的數(shù)據(jù)存儲(chǔ),基于LabVIEW+ labsql+ PostgreSQL ODBC實(shí)現(xiàn)了數(shù)據(jù)庫(kù)讀取和顯示功能。測(cè)試表明系統(tǒng)具有良好的穩(wěn)定性和可靠性,滿足應(yīng)用需求。
圖9 C02采樣圖
圖10 S1226采樣圖