<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 大直徑測(cè)量數(shù)據(jù)采集系統(tǒng)中動(dòng)態(tài)鏈接庫(kù)設(shè)計(jì)0,

          大直徑測(cè)量數(shù)據(jù)采集系統(tǒng)中動(dòng)態(tài)鏈接庫(kù)設(shè)計(jì)0,

          作者: 時(shí)間:2017-01-12 來(lái)源:網(wǎng)絡(luò) 收藏
          虛擬儀器是現(xiàn)代計(jì)算機(jī)技術(shù)、儀器儀表技術(shù)及現(xiàn)代計(jì)算機(jī)輔助測(cè)試(CAT)技術(shù)相結(jié)合的產(chǎn)物,廣泛應(yīng)用于數(shù)據(jù)采集和自動(dòng)測(cè)試領(lǐng)域。

          Lab VIEW是一種基于圖形程序的虛擬儀器編程語(yǔ)言,Lab VIEW程序稱為虛擬儀器程序(簡(jiǎn)稱VI)。Lab VIEW按照模塊化編程思想,將一些特定的測(cè)試任務(wù),建立成一系列的VI,然后通過(guò)這些VI的組合來(lái)構(gòu)成各種復(fù)雜的、功能強(qiáng)大的測(cè)試系統(tǒng)。Lab VIEW除了帶有各種基本的VI庫(kù)(GP-IB、VISA、VXI和串行接口儀器的驅(qū)動(dòng)程序等)和功能超強(qiáng)且龐大的分析函數(shù)庫(kù)外,還可以通過(guò)調(diào)用外部代碼實(shí)現(xiàn)Lab VIEW比較復(fù)雜的接口功能,其中就包括動(dòng)態(tài)鏈接庫(kù)調(diào)用機(jī)制。

          本文引用地址:http://www.ex-cimer.com/article/201701/337647.htm

          動(dòng)態(tài)鏈接庫(kù)可采用VB、VC++6.0等高級(jí)語(yǔ)言開發(fā),VC++6.0編制動(dòng)態(tài)鏈接庫(kù),首先由AppWizard生成DLL框架,用戶自己鍵入實(shí)現(xiàn)各種功能的代碼。DLL需要h函數(shù)聲明文件、C源文件及def定義文件。h文件的作用是聲明DLL要實(shí)現(xiàn)的函數(shù)原型,供DLL編譯使用,同時(shí)還提供應(yīng)用程序編譯使用。C文件是實(shí)現(xiàn)具體文件的源文件,它有一個(gè)入口點(diǎn)函數(shù),在DLL被初次調(diào)用時(shí)運(yùn)行,完成初始化工作。def文件是DLL項(xiàng)目中比較特殊的文件,用于定義該DLL項(xiàng)目將輸出的函數(shù),只有def文件列出的函數(shù)才能被應(yīng)用函數(shù)調(diào)用,函數(shù)名列在該文件EXPORTS的關(guān)鍵字下。

          多滾輪法大直徑測(cè)量數(shù)據(jù)采集系統(tǒng)

          多滾輪法大直徑測(cè)量原理結(jié)構(gòu)
          滾輪法大直徑測(cè)量原理結(jié)構(gòu)主要有被測(cè)大軸、滾輪、圓光、信號(hào)調(diào)理與接口、計(jì)數(shù)器及大軸轉(zhuǎn)數(shù)測(cè)量標(biāo)記組成。大軸直徑計(jì)算公式為
          D=α*d/2τN
          其中,D為被測(cè)大軸直徑;d為滾輪直徑;α為滾輪轉(zhuǎn)動(dòng)角度;N為大軸轉(zhuǎn)動(dòng)周數(shù)。滾輪采用特殊的結(jié)構(gòu)設(shè)計(jì),以減小測(cè)量過(guò)程中打滑發(fā)生的幾率。同時(shí)通過(guò)3個(gè)滾輪的冗余測(cè)量信號(hào),可辯識(shí)出測(cè)量過(guò)程中的“打滑發(fā)生段”,并在進(jìn)行三滾輪信號(hào)合成時(shí),采用有效的數(shù)據(jù)融合技術(shù),進(jìn)一步將“打滑段”的信號(hào)剔除。通過(guò)對(duì)接觸壓力大小與滾輪直徑變化的關(guān)系作精確標(biāo)定,測(cè)量時(shí)根據(jù)擬合數(shù)學(xué)模型對(duì)滾輪變形作適時(shí)修正,以消除或減小滾輪變形引起的測(cè)量誤差。為減小溫度場(chǎng)不均勻或變化所導(dǎo)致的測(cè)量誤差,在工件表面布置多個(gè)溫度傳感器,用以監(jiān)測(cè)工件是否進(jìn)入恒溫狀態(tài)及工件溫度的變化和分布情況,以便對(duì)該溫度場(chǎng)引起的大直徑尺寸變化進(jìn)行修正。用微位移傳感器測(cè)量大軸表面形狀誤差,分離出各次諧波,用以修正測(cè)得直徑,減小形狀誤差的影響。

          數(shù)據(jù)采集系統(tǒng)組成
          多滾輪法大直徑測(cè)量系統(tǒng)采用的傳感器種類和數(shù)目均較多,多參數(shù)的測(cè)量和控制由虛擬儀器測(cè)量系統(tǒng)實(shí)現(xiàn),其結(jié)構(gòu)框圖如圖1所。


          圖1 數(shù)據(jù)采集系統(tǒng)框圖

          光柵數(shù)據(jù)采集硬件主要由RENISHAW公司的RESR20圓光柵編碼器和FAGOR公司的DRO板組成,RESR20圓光柵編碼器的角分辨力可達(dá)0.01″,分度不確定度為0.5″。RGH20讀數(shù)頭輸出4路信號(hào),DRO板對(duì)這4路信號(hào)進(jìn)行細(xì)分后轉(zhuǎn)換成數(shù)字信號(hào)輸入計(jì)算機(jī),完成對(duì)圓光柵信號(hào)的數(shù)據(jù)采集。光電傳感器的信號(hào)由6071E板(該板為NI公司的多功能數(shù)據(jù)采集板,具有模擬量、數(shù)字量采集單元,該板同時(shí)用于位移、壓力等信號(hào)的采集)上的計(jì)數(shù)器送入計(jì)算機(jī),作為數(shù)據(jù)采集的觸發(fā)信號(hào)。同時(shí)為減小數(shù)據(jù)采集啟停引起的誤差,通常在大軸轉(zhuǎn)動(dòng)數(shù)周過(guò)程中采集光柵信號(hào)。在編制采集軟件時(shí)設(shè)置大軸轉(zhuǎn)動(dòng)周數(shù)單元,當(dāng)大軸轉(zhuǎn)動(dòng)且計(jì)數(shù)標(biāo)記通過(guò)光電傳感器時(shí),計(jì)算機(jī)開始采集數(shù)據(jù),當(dāng)大軸轉(zhuǎn)動(dòng)周數(shù)達(dá)到預(yù)設(shè)值時(shí),停止數(shù)據(jù)采集。

          數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)

          6071E多功能采集卡自身帶有適用于LabVIEW環(huán)境的驅(qū)動(dòng)程序,直接進(jìn)行設(shè)置即可。DRO板必須用VC++編程調(diào)用其動(dòng)態(tài)鏈接庫(kù)進(jìn)行初始化,然后將VC++的調(diào)用生成動(dòng)態(tài)鏈接庫(kù),由Lab2VIEW調(diào)用完成對(duì)DRO板的初始化,參數(shù)的初始化包括滾壓輪標(biāo)準(zhǔn)參數(shù)、測(cè)試任務(wù)參數(shù)以及其他環(huán)境參數(shù)等。初始化結(jié)束,計(jì)算機(jī)檢測(cè)到觸發(fā)信號(hào)后開始數(shù)據(jù)采集,數(shù)據(jù)采集部分同樣需要用VC++編程調(diào)用DRO板的動(dòng)態(tài)鏈接庫(kù)的庫(kù)函數(shù)。圓光柵信號(hào)輸入計(jì)算機(jī)后由軟件進(jìn)行數(shù)據(jù)的處理和存儲(chǔ),當(dāng)大軸轉(zhuǎn)動(dòng)周數(shù)等于預(yù)設(shè)值時(shí),停止采集,一次數(shù)據(jù)采集過(guò)程完成。

          LabVIEW調(diào)用動(dòng)態(tài)鏈接庫(kù),使用LabVIEW功能模板中“Advanced”子模板的“調(diào)用庫(kù)函數(shù)(Call Library Function)”結(jié)點(diǎn)。實(shí)現(xiàn)動(dòng)態(tài)鏈接庫(kù)調(diào)用步驟如下:

          (1)在LabVIEW程序建立“調(diào)用庫(kù)函數(shù)結(jié)點(diǎn)”。其中“Call Library Function”結(jié)點(diǎn)通過(guò)選擇功能模板“Advanced”子模板的“Call Library Function”功能產(chǎn)生。

          (2)配置“調(diào)用庫(kù)函數(shù)結(jié)點(diǎn)”。雙擊框圖程序窗口的“Call Library Function”結(jié)點(diǎn),在彈出的對(duì)話框中對(duì)此“調(diào)用庫(kù)函數(shù)結(jié)點(diǎn)”進(jìn)行配置。其中:在“LibraryNameor Path”項(xiàng)中鍵入結(jié)點(diǎn)所鏈接的DLL文件名,它由c源代碼編譯而來(lái);在“Function Name”項(xiàng)中鍵入結(jié)點(diǎn)相鏈接的DLL文件中函數(shù)的名稱;參數(shù)“returntype”的類型選擇“Void”,并增加所需的其他返回參數(shù)。

          (3)編輯c源文件。c源文件包括硬件初始化文件和數(shù)據(jù)采集文件。硬件初始化部分源代碼如下:
          //FirstInittheBoardConfigandAxisConfigData
          BoardConfig.NumberOfAxes=4;
          do
          {
            printf(“Selectsignaltype(0=TTL,1=1Vpp):”);
            signal_type=getch();
          }while((signal_type<‘0’)(signal_type>‘1’));
          signal_type=signal_type-‘0’;
          //Enteryourownvalues,theseareonlyasample.
          for(i=0;i {
            AxisConfigData[i].Resolution=0.005;
            AxisConfigData[i].CountDirection=0;
            AxisConfigData[i].SignalType=signal_type;
            AxisConfigData[i].TTLWaveMultiply=0;
            AxisConfigData[i].SineWaveMultiply=0;
            AxisConfigData[i].MachineErrorComp=0;
            AxisConfigData[i].I0Type=0;
            AxisConfigData[i].EncoderFactor=1000;
            AxisConfigData[i].EncoderOffset=0;
            AxisConfigData[i].ExternalMultiply=1;
          }
          //CallingtoIniBoardfunction.
          if(IniBoard(&BoardConfig,&AxisConfigData[0])==0)
          {
            printf(“Errorduringinicialization”);
            exit(0);
          }
          數(shù)據(jù)采集部分源代碼如下:
          //CounterTest
          voidCounterTest(void)
          {
            ReadAllCounters(&AxisValuesData);
          Axis_X=AxisValuesData.AxisDisplayValue[0];
          Axis_Y=AxisValuesData.AxisDisplayValue[1];
          Axis_Z=AxisValuesData.AxisDisplayValue[2];
          Axis_W=AxisValuesData.AxisDisplayValue[3];
          printf(“X=%4.4f”,Axis_X);       //PrintthevalueofAxisX
          printf(“Y=%4.4f”,Axis_Y);
          printf(“Z=%4.4f”,Axis_Z);
          printf(“W=%4.4f”,Axis_W);
          printf(“”);
          }

          (4)編譯c源代碼。將c源文件編譯成DLL文件,使用VC++6.0完成。

          (5)運(yùn)行VI。運(yùn)行由上述步驟生成的LabVIEW程序。

          結(jié)束語(yǔ)

          LabVIEW的外部代碼擴(kuò)展功能是其重要特點(diǎn)之一,調(diào)用動(dòng)態(tài)鏈接庫(kù)是LabVIEW提供的調(diào)用外部代碼的4種途徑中最通用的一種??烧{(diào)用標(biāo)準(zhǔn)共享庫(kù)和用戶自定義的庫(kù)函數(shù),對(duì)于不附帶LabVIEW驅(qū)動(dòng)程序的硬件尤其具有使用價(jià)值。通過(guò)調(diào)用動(dòng)態(tài)鏈接庫(kù)機(jī)制可引入C語(yǔ)言的強(qiáng)大功能,確實(shí)是一條增強(qiáng)LabVIEW與其它Windows應(yīng)用程序之間的數(shù)據(jù)共享能力的良好途徑。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();