技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > 基于VB的數(shù)據(jù)采集卡的應(yīng)用

基于VB的數(shù)據(jù)采集卡的應(yīng)用

時(shí)間:2009-01-09 11:26:01來源:zhangting

導(dǎo)語:?pcl-813b(簡稱813b)是臺(tái)灣研華公司推出的一款基于pc的高性能、多功能數(shù)據(jù)采集卡。
1 引言 pcl-813b(簡稱813b)是臺(tái)灣研華公司推出的一款基于pc的高性能、多功能數(shù)據(jù)采集卡。該卡不僅性能優(yōu)異,而且有完善的軟件支持,使得此卡能廣泛適用于工業(yè)自動(dòng)化系統(tǒng)、自動(dòng)化設(shè)備監(jiān)控系統(tǒng),具有廣闊的應(yīng)用前景。vb是一種高效、易學(xué)易用的開發(fā)工具。一些工業(yè)測控系統(tǒng)中,需要計(jì)算機(jī)從現(xiàn)場獲取實(shí)際數(shù)據(jù)或發(fā)出控制命令,這就需要計(jì)算機(jī)實(shí)現(xiàn)對(duì)i/o端口的控制與訪問,但是vb不具備直接對(duì)硬件地址進(jìn)行訪問的功能,可以利用vc++編寫訪問i/o接口地址的程序,創(chuàng)建動(dòng)態(tài)鏈接庫(dll),利用dll進(jìn)行調(diào)用來實(shí)現(xiàn)端口訪問與控制。本文以此卡為例,詳細(xì)介紹了在vb環(huán)境下的應(yīng)用。 2 pcl-813b數(shù)據(jù)采集卡簡介 813b是基于isa結(jié)構(gòu)的,需插在計(jì)算機(jī)的isa槽中。它采用了12位分辨率a/d轉(zhuǎn)換器(ad574),用來轉(zhuǎn)換模擬輸入,轉(zhuǎn)換時(shí)間為25μs,數(shù)據(jù)傳送速率達(dá)25kbps;輸入范圍:雙極性±5v,±2.5v,±1.25v,±0.625v。單極性0~10v,0~5v,0~2.5v, 0~1.25v; a/d轉(zhuǎn)換觸發(fā)方式為軟件觸發(fā); 813b支持32路單端隔離模擬量輸入,最大連續(xù)過壓±30v。 813b是一種通用型數(shù)據(jù)采集卡,可以滿足不同用戶的不同要求。因此卡上有一個(gè)dip開關(guān)(sw1)和1個(gè)跳線器(jp100),可由用戶自行設(shè)置,以滿足不同的需要。 813b使用16個(gè)連續(xù)的i/o地址,其i/o基地址有開關(guān)sw1選擇,有效地址從000~3f0h(十六進(jìn)制)。sw1開關(guān)共有6個(gè)微型撥碼開關(guān),其撥碼組合與對(duì)應(yīng)的基地址有關(guān)系。 輸入范圍選擇:如使用單極性輸入,把開關(guān)置在“u”位置,此時(shí)允許0~10v,0~5v,0~1.25v模擬量輸入。如放大倍數(shù)是1,允許輸入0~10v;放大倍數(shù)是2,允許輸入 0~5v;放大倍數(shù)8,允許輸入0~1.25v。放大倍數(shù)由軟件控制。 3 動(dòng)態(tài)鏈接庫dll的編寫 在vb中要利用dll進(jìn)行調(diào)用來實(shí)現(xiàn)板卡的訪問與控制,首先要編寫動(dòng)態(tài)鏈接庫dll。 在windows98 中,應(yīng)用程序采取一種成為“動(dòng)態(tài)鏈接庫”的特殊函數(shù)集來實(shí)現(xiàn)代碼和資源的共享,以最大限度地節(jié)省資源。之所以稱為“動(dòng)態(tài)”,是因?yàn)樗鼈兪窃谶\(yùn)行期間鏈接到應(yīng)用程序的,而不是在編譯期間。創(chuàng)建一個(gè)exe文件時(shí),會(huì)有許多例程鏈接到代碼并放入exe文件中。但是dll中的例程則僅僅在實(shí)際運(yùn)行時(shí)才鏈接到exe文件。按照這種方式,我們可以把幾個(gè)程序共用的代碼放到一個(gè)dll中,這樣可以節(jié)省大量的空間,提高運(yùn)行效率。同時(shí)在工業(yè)控制中對(duì)計(jì)算機(jī)的底層硬件進(jìn)行訪問,以及利用各種控制接口板進(jìn)行數(shù)據(jù)采集和控制時(shí)間,僅靠vb是無法解決的。解決這樣的問題可以間接使用動(dòng)態(tài)鏈接庫來實(shí)現(xiàn)。 3.1 創(chuàng)建dll的三個(gè)基本成分 (1) libmain函數(shù) 它是windows dll的入口點(diǎn),主要用來完成一些初始化任務(wù); (2) 出口函數(shù)wep windows的dll必須包含一個(gè)標(biāo)準(zhǔn)的出口函數(shù)。在dll最終卸出之前,windows調(diào)用該函數(shù)作一些必要的清除工作(如釋放一些資源等); (3) 自己的功能函數(shù) windows95下vb編寫的程序是32位的,與之對(duì)應(yīng)的dll也應(yīng)是32位的。對(duì)于32位的dll,16位dll中的入口函數(shù)libmain、退出函數(shù)wep被dllentrypoint所代替。dllentrypoint入口和退出兩個(gè)函數(shù)服務(wù)。在每次裝入或卸下dll時(shí),windows95調(diào)入dllentrypoint。 在vc++5.0中選擇file|new,在new對(duì)話框中選擇project workspace,再在new project workspace對(duì)話框中選擇dynamic-link library選項(xiàng),并輸入工程項(xiàng)目名,即可生成動(dòng)態(tài)鏈接庫的工作框架。 3.2 利用vc++5.0開發(fā)的dll的完整的程序清單 //dll源文件i0.cpp #include #include int far pascal outport(unsigned) short sport); int far pascal outport(unsigned short port,int databyte); //d11entrypoint函數(shù) bool winapi d11entrypoint (hinstance hd11, dworddwreason, lpvoid reserved) {   switch(dwreason) { case dll_process_attach:   {     break;  ?。? case dll_process_detach:   {     break;  ?。? } return true; } //兩個(gè)功能函數(shù) int far pascal inport(unsigned short port) {   reture(_inp(prot); ) int far pascal outport(unsigned short port,int databyte) { int a; a=_outp(port,databyte); return a; } //模塊定義文件i0.def code preload moveable discardable data preload single exports inport outport 3.3 vb中的dll調(diào)用 dll函數(shù)或過程必須在全局模塊(*.bas)中正確說明才有效。vb是用declare語句把一個(gè)dll函數(shù)引入vb中的,它告訴vb在哪里找到dll函數(shù),并且讓vb知道dll需要哪種類型的參數(shù),同時(shí)返回哪種類型的值。當(dāng)某個(gè)dll函數(shù)用declare語句正確聲明以后,就可以像使用其它函數(shù)一樣使用這個(gè)dll函數(shù)。 在vb應(yīng)用程序的全局模塊中聲明i0.dll并將其放入windows/system目錄下,這樣就可以向使用windows api一樣使用i098中的inport和outport函數(shù)了。 declare function inport lib"io.d11" ?。╞yval prot as integer)as long declare function outport lib"io.d11" ?。╞yval port as integer,byval databyte as long)as long 4 應(yīng)用實(shí)例 4.1 813b采集卡的初始化(采集卡基地址220h) (1) 選通道 向22ah寫入相應(yīng)的控制字選擇通道,寫入“0”表示0通道,寫入“1”代表1通道,依次類推 (2) 啟動(dòng)ad轉(zhuǎn)換 向22ch寫入任意值,觸發(fā)ad轉(zhuǎn)換 (3) 讀入數(shù)據(jù) 把12位數(shù)據(jù)的低8位讀入224h,把高4位讀入225h中。 4.2 vb的編程實(shí)例 利用定時(shí)器實(shí)現(xiàn)定時(shí)采集在vb中,可利用定時(shí)器的interval屬性設(shè)置每秒鐘采集的次數(shù),把采集段程序放在定時(shí)器的timer事件中來實(shí)現(xiàn)數(shù)據(jù)采集.對(duì)于一般計(jì)算機(jī)來講,由于受系統(tǒng)硬件能力的限制,定時(shí)器每秒鐘最多只能產(chǎn)生18個(gè)事件,若時(shí)間間隔設(shè)置得過小,將達(dá)不到預(yù)期效果 應(yīng)用實(shí)例下面給出數(shù)據(jù)采集軟件程序中部分主要源代碼 以采集某0~100℃的溫度信號(hào)(經(jīng)溫度變送器轉(zhuǎn)換為0~5v)為例,設(shè)定a/d板為單極性輸入方式,i/o端口基地址為220h,放大倍率為1 在module1中聲明: declare function outport lib "io.dll" (byval portasinteger,byvaldataasinteger) declare function inport lib"io.dll"(byval portasinteger asinteger) dll文件已拷貝到windows的system目錄下 采集程序部分: private sub timerwd-timer()   chwd=1 //設(shè)定溫度通道號(hào)為1 x=outport(&h22a,chwd) //輸入通道號(hào) y=outport(&h2c,0 ) //啟動(dòng)a/d轉(zhuǎn)換  j=1  dowhilej<>0 //判斷a/d轉(zhuǎn)換是否結(jié)束 j=inport&h22a and 1  loop adwl=inport(&h224) //a/d結(jié)果低8位送入變量adwh adwh=inport (&h225) //a/d結(jié)果高4位送入變量adwl adwdata=val(adwh-224)×256+val(adwl) //12位a/d轉(zhuǎn)換結(jié)果 vwd=adwdata×10/4095 //對(duì)應(yīng)的電壓  wd=100×vwd/5 //標(biāo)度變換為實(shí)際溫度  … endsub 幾點(diǎn)說明: 數(shù)據(jù)采集值是12位,放在2個(gè)地址里,其中224h存放數(shù)據(jù)的低8位(數(shù)據(jù)7~數(shù)據(jù)0),225h的低4位存放采集數(shù)據(jù)的高4位(數(shù)據(jù)11~數(shù)據(jù)8),225h的其它位自動(dòng)變?yōu)?110。
則12位ad轉(zhuǎn)換的結(jié)果為: adwdata=val(adwh-224)×256+val(adwl), 其中224表示無采集數(shù)據(jù)時(shí)的自然值(即11100000)。 12位ad經(jīng)ad轉(zhuǎn)換的最大值是212=4096 5 結(jié)束語 上述采用vb調(diào)用dll實(shí)現(xiàn)數(shù)據(jù)采集的方法有一定的通用性,上述程序全部經(jīng)過測試通過,可作為類似控制的參考。 參考文獻(xiàn) [1] 三味創(chuàng)作室. vb6.0應(yīng)用與提高[m]. 北京:科學(xué)出版社,1999. 作者簡介 張智杰(1970-) 工程師 畢業(yè)于山東科技大學(xué)電氣自動(dòng)化專業(yè),現(xiàn)主要從事計(jì)算機(jī)控制系統(tǒng)、plc應(yīng)用系統(tǒng)的科研與教學(xué)工作。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:中控WebField ECS-100控制系...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)