張 朋,張振東
(上海理工大學 機械工程學院,上海 200090)
在工業(yè)迅速發(fā)展的今天,計算機技術(shù)的發(fā)展也越來越快速,其中一個重要的方面就是在工業(yè)生產(chǎn)過程中需要對生產(chǎn)數(shù)據(jù)進行采集、分析和保存?,F(xiàn)在的計算機中一般都預(yù)留有一個或者幾個PCI插槽,這樣就為PCI總線設(shè)備的快速發(fā)展提供了良好的基礎(chǔ)。本文介紹的PCI-1718數(shù)據(jù)采集卡就是這樣一款基于PCI總線的設(shè)備,當然它也兼容其他總線。它是由世界工業(yè)電腦和自動化市場開發(fā)的領(lǐng)軍企業(yè)——研華公司開發(fā)的一款高效能、多功能數(shù)據(jù)采集卡?,F(xiàn)在,VB開發(fā)已經(jīng)進入了一個相對成熟的時期,采用PCI-1718采集卡在VB編程環(huán)境下可以較容易的進行數(shù)據(jù)采集系統(tǒng)的開發(fā)。
本文介紹的研華PCI-1718數(shù)據(jù)采集卡不但具有測量功能,還具有控制功能。通過數(shù)據(jù)采集卡可以將外圍器件的電信號轉(zhuǎn)換成數(shù)字信號,并能將計算機輸出的數(shù)字信號轉(zhuǎn)換成模擬信號送給外圍器件。它的數(shù)據(jù)流程如圖1所示。
圖1 數(shù)據(jù)流程圖
生產(chǎn)工程中測量的信號有時候也不是電壓信號,這時候就需要用到變送器這些標準化的設(shè)備將非電信號變成電信號,然后輸入到PCI-1718中,比如壓力信號和溫度信號,然后板卡將模擬信號變成計算機能識別的數(shù)字信號,計算機收到這些信號后就能對這些數(shù)據(jù)進行分析或者保存。如果計算機要對外圍的設(shè)備輸出指令時,PCI-1718也可以將指令輸出給外圍設(shè)備,比如繼電器或者步進電機。PCI-1718的特點主要如下:16路單端或者8路差分模擬量信號輸入,12位A/D轉(zhuǎn)換器,自動通道掃描,用于AI的板載FIFO,1路12位模擬量輸出,16路數(shù)字量輸入及輸出,PCI總線數(shù)據(jù)傳輸,還具有定時、計數(shù)器功能。
在Active DAQ技術(shù)(研華公司)沒有出現(xiàn)之前,在VB環(huán)境下用戶訪問數(shù)據(jù)采集卡一般來說有兩種途徑:1)用VB直接編寫訪問PCI設(shè)備的函數(shù);2)調(diào)用其他語言編寫的底層驅(qū)動模塊來實現(xiàn),比如用c或者c++編寫的動態(tài)鏈接庫函數(shù)。但這兩種途徑都很困難,特別是對于非計算機專業(yè)的人員來說,編寫這些函數(shù)非常地困難。研華公司提供的Active DAQ控件是一套高效的數(shù)據(jù)采集控件,它可以方便的應(yīng)用于一些支持ActiveX控件的軟件中,比如VB、VC、Delphi等。在VB中可以通過設(shè)置Active DAQ控件的屬性、事件及方法等來方便的進行編程,從而進行數(shù)據(jù)采集,主要包括模擬量的輸入輸出,數(shù)字量的輸入輸出及脈沖輸入輸出等。
本部分的硬件設(shè)置主要是PCI-1718數(shù)據(jù)采集卡的安裝、設(shè)置,Active DAQ控件的安裝。
首先運行研華公司PCI-1718驅(qū)動光盤里的DevMgr.exe程序,然后運行PCI-1718.exe程序,按照步驟安裝程序。隨后關(guān)閉電腦,將PCI-1718插在計算機的一個插槽里,這時計算機就會自動安裝板卡。注意,在安裝板卡前,要將板卡的SW1開關(guān)設(shè)置為全部是ON,將SW2開關(guān)設(shè)置為S/E,這是將板卡的Device Number設(shè)置為0,將模擬量信號的輸入模式定為16路的單端輸入模式(這些設(shè)置主要是在以后的數(shù)據(jù)采集過程中程序能認識板卡,且能正確地采集到需要的數(shù)據(jù))。完成這些設(shè)置后,就可以在Advantech Device Manager中對板卡的性能進行測試了,主要包括模擬量輸入功能測試、模擬量輸出功能測試、數(shù)字量輸入功能測試、數(shù)字量輸出功能測試和計數(shù)器功能測試。
接著運行ActiveDAQ.exe,然后指定Active DAQ的安裝路徑,將Active DAQ安裝在計算機硬盤中。安裝完成該文件后,就會在VB的部件控件選項卡中出現(xiàn)Active DAQ控件集,主要包括 Advantech Active DAQ AI control、Advantech Active DAQ DI control、Advantech Active DAQ AO control、Advantech ActiveDAQ DO control等。 下面的數(shù)據(jù)采集軟件主要是用到的Advantech Active DAQ AI control和Advantech Active DAQ DO control,兩者的作用分別是采集模擬量(壓力值和電壓值)和輸出數(shù)字量(控制繼電器的閉合)。
在VB的部件選項卡中將Advantech Active DAQ AI control、Advantech Active DAQ DO control添加到工具箱中,然后放到程序中。首先在右邊的屬性欄中將這兩個控件的DeviceNumber屬性設(shè)置為1,這時程序就會自動識別板卡。因為本次數(shù)據(jù)采集的信號為壓力信號和電信號,所以主要的程序代碼如下。
在form_load中寫入以下程序:
DAQAI1.CyclicMode = True '采用循環(huán)方式采集數(shù)據(jù)
DAQAI1.SampleRate = 100000 '設(shè)置采樣頻率
DAQAI1.DataType = adReal '模擬量輸入返回值為實型
DAQAI1.StartChannel = 0 '打開通道號0,用來采集壓力信號
DAQAI1.StartChannel = 1 '打開通道號1,用來采集電壓信號
DAQAI1.OpenDevice '打開模擬量輸入端口
DAQDO1.OpenDevice '打開數(shù)字量輸出端口
因為需要不停的采集數(shù)據(jù),所以需要添加一個timer控件,然后在timer控件的timer屬性中寫入以下程序:
u = DAQAI1.RealInput(0) '獲 取AI0通道數(shù)據(jù)(電壓值)
stapre = (Val(u) - c) * diff '標度變換(變成壓力值)
press1 = Format(stapre, "0.0000")
press(num) = press1
m1 = DAQAI1.RealInput(1) '獲取AI1(1)通道數(shù)據(jù)(電壓值)
其中u為數(shù)據(jù)采集卡采集到的電壓值,此電壓值為壓力值經(jīng)壓力變送器轉(zhuǎn)變而來(壓力變送器的接法在此就不介紹了,關(guān)鍵是輸入輸出端得正確連接及如何正確連入數(shù)據(jù)采集卡);c和diff分別為壓力變送器的參數(shù):壓力下限值和輸出線性比,比如:一個壓力變送器的輸入壓力為0—4MPa,輸出為4-20mA,在輸出上串聯(lián)一個250Ω的電阻,輸出變?yōu)?—5V,則此時電壓值P和壓力值U的關(guān)系為:
Stapre是壓力的中間值,是為了后面將保留了四位小數(shù)的壓力值能保存在DataGrid中。press(num)的作用是想保留許多壓力值,然后從中選出需要的壓力值。m1是指采集到的被測件的電壓值,如果被采集件數(shù)量多,則可以用m2、m3等,原則上PCI-1718可以采集16路的電壓值。
這時候就可以將采集到的數(shù)據(jù)放到電腦里了,為了能顯示這些數(shù)據(jù),在它的初始化中寫入[1,3]:
1)如果測試的物理量有兩種類型(壓力和電壓),為了顯示的有規(guī)律且對比正常,可以將他們用下面的方法顯示在計算機上:
在窗體中添加一個DataGrid控件,在其初始化中寫入[2,4]:
Grid(1).ColWidth(0) = 600
Grid(1).ColWidth(1) = 1000
Grid(1).ColWidth(2) = 1000
Grid(1).Col = 0
For i = 1 To 10
Grid(1).row = i
Grid(1).Text = Str$(i)
Next i
Grid(1).row = 0
Grid(1).Col = 0: Grid(1).Text = "序號 "
Grid(1).Col = 1: Grid(1).Text = "壓力值 "
Grid(1).Col = 2: Grid(1).Text = "電壓值
以上的程序主要是設(shè)置數(shù)據(jù)表格的列寬和表頭名稱。為了將數(shù)據(jù)放入DataGrid中,寫以下程序:
Grid(1).Col = 1: Grid(1).row = 1
Grid(1).Text = press1
Grid(1).Col = 1: Grid(1).row = 2
Grid(1).Text = m1
2)如果測試的物理量只有一種類型,則可以用下面的方法顯示數(shù)據(jù):
加入兩個text控件,然后將其text屬性設(shè)置為press1。測量到物理量則加幾個text控件。
圖2 程序上位機界面
程序到此為止就已經(jīng)可以將測量值顯示在電腦上了,利用VB和PCI-1718數(shù)據(jù)采集卡以及壓力傳感器,筆者成功的為上海天惠汽車零部件有限公司開發(fā)了一套汽車空調(diào)壓力開關(guān)實驗測試軟件,并起到了良好的效果。程序的上位機界面如圖2所示。
剩下的就是調(diào)用Adodc控件來將這些數(shù)據(jù)存到計算機里面,這里沒有用PCI-1718方面的知識,所以在此不介紹了。
PCI-1718在VB中利用的優(yōu)勢之處是ActiveDAQ控件的利用,它可以省去許多編程中的麻煩的代碼編寫,取而代之的是方便的控件引用和屬性的設(shè)置。利用它來控制繼電器等也很方便。VB的優(yōu)勢是容易上手,開發(fā)快。利用VB和PCI-1718數(shù)據(jù)采集卡,可以方便的進行數(shù)據(jù)的采集。
[1] 李江全, 等. Visual Basic數(shù)據(jù)采集與串口通信測控應(yīng)用實戰(zhàn)[M]. 北京:人民郵電出版社. 2010.
[2] 胡小江, 等. 21天學通visual basic[M]. 北京: 電子工業(yè)出版社. 2009.
[3] 李長林. Visual Basic串口通信技術(shù)與典型實例[M]. 北京: 清華大學出版社. 2006.
[4] 高春燕, 等. Visual Basic 控件參考大全[M]. 北京: 人民郵電出版社. 2006.