大直徑測量數據采集系統中動(dòng)態(tài)鏈接庫設計0,
Lab VIEW是一種基于圖形程序的虛擬儀器編程語(yǔ)言,Lab VIEW程序稱(chēng)為虛擬儀器程序(簡(jiǎn)稱(chēng)VI)。Lab VIEW按照模塊化編程思想,將一些特定的測試任務(wù),建立成一系列的VI,然后通過(guò)這些VI的組合來(lái)構成各種復雜的、功能強大的測試系統。Lab VIEW除了帶有各種基本的VI庫(GP-IB、VISA、VXI和串行接口儀器的驅動(dòng)程序等)和功能超強且龐大的分析函數庫外,還可以通過(guò)調用外部代碼實(shí)現Lab VIEW比較復雜的接口功能,其中就包括動(dòng)態(tài)鏈接庫調用機制。
本文引用地址:http://dyxdggzs.com/article/201701/337647.htm動(dòng)態(tài)鏈接庫可采用VB、VC++6.0等高級語(yǔ)言開(kāi)發(fā),VC++6.0編制動(dòng)態(tài)鏈接庫,首先由AppWizard生成DLL框架,用戶(hù)自己鍵入實(shí)現各種功能的代碼。DLL需要h函數聲明文件、C源文件及def定義文件。h文件的作用是聲明DLL要實(shí)現的函數原型,供DLL編譯使用,同時(shí)還提供應用程序編譯使用。C文件是實(shí)現具體文件的源文件,它有一個(gè)入口點(diǎn)函數,在DLL被初次調用時(shí)運行,完成初始化工作。def文件是DLL項目中比較特殊的文件,用于定義該DLL項目將輸出的函數,只有def文件列出的函數才能被應用函數調用,函數名列在該文件EXPORTS的關(guān)鍵字下。
多滾輪法大直徑測量的數據采集系統
多滾輪法大直徑測量原理結構
滾輪法大直徑測量原理結構主要有被測大軸、滾輪、圓光柵、信號調理與接口、計數器及大軸轉數測量標記組成。大軸直徑計算公式為
D=α*d/2τN
其中,D為被測大軸直徑;d為滾輪直徑;α為滾輪轉動(dòng)角度;N為大軸轉動(dòng)周數。滾輪采用特殊的結構設計,以減小測量過(guò)程中打滑發(fā)生的幾率。同時(shí)通過(guò)3個(gè)滾輪的冗余測量信號,可辯識出測量過(guò)程中的“打滑發(fā)生段”,并在進(jìn)行三滾輪信號合成時(shí),采用有效的數據融合技術(shù),進(jìn)一步將“打滑段”的信號剔除。通過(guò)對接觸壓力大小與滾輪直徑變化的關(guān)系作精確標定,測量時(shí)根據擬合數學(xué)模型對滾輪變形作適時(shí)修正,以消除或減小滾輪變形引起的測量誤差。為減小溫度場(chǎng)不均勻或變化所導致的測量誤差,在工件表面布置多個(gè)溫度傳感器,用以監測工件是否進(jìn)入恒溫狀態(tài)及工件溫度的變化和分布情況,以便對該溫度場(chǎng)引起的大直徑尺寸變化進(jìn)行修正。用微位移傳感器測量大軸表面形狀誤差,分離出各次諧波,用以修正測得直徑,減小形狀誤差的影響。
數據采集系統組成
多滾輪法大直徑測量系統采用的傳感器種類(lèi)和數目均較多,多參數的測量和控制由虛擬儀器測量系統實(shí)現,其結構框圖如圖1所。
圖1 數據采集系統框圖
光柵數據采集硬件主要由RENISHAW公司的RESR20圓光柵編碼器和FAGOR公司的DRO板組成,RESR20圓光柵編碼器的角分辨力可達0.01″,分度不確定度為0.5″。RGH20讀數頭輸出4路信號,DRO板對這4路信號進(jìn)行細分后轉換成數字信號輸入計算機,完成對圓光柵信號的數據采集。光電傳感器的信號由6071E板(該板為NI公司的多功能數據采集板,具有模擬量、數字量采集單元,該板同時(shí)用于位移、壓力等信號的采集)上的計數器送入計算機,作為數據采集的觸發(fā)信號。同時(shí)為減小數據采集啟停引起的誤差,通常在大軸轉動(dòng)數周過(guò)程中采集光柵信號。在編制采集軟件時(shí)設置大軸轉動(dòng)周數單元,當大軸轉動(dòng)且計數標記通過(guò)光電傳感器時(shí),計算機開(kāi)始采集數據,當大軸轉動(dòng)周數達到預設值時(shí),停止數據采集。
數據采集系統軟件設計
6071E多功能采集卡自身帶有適用于LabVIEW環(huán)境的驅動(dòng)程序,直接進(jìn)行設置即可。DRO板必須用VC++編程調用其動(dòng)態(tài)鏈接庫進(jìn)行初始化,然后將VC++的調用生成動(dòng)態(tài)鏈接庫,由Lab2VIEW調用完成對DRO板的初始化,參數的初始化包括滾壓輪標準參數、測試任務(wù)參數以及其他環(huán)境參數等。初始化結束,計算機檢測到觸發(fā)信號后開(kāi)始數據采集,數據采集部分同樣需要用VC++編程調用DRO板的動(dòng)態(tài)鏈接庫的庫函數。圓光柵信號輸入計算機后由軟件進(jìn)行數據的處理和存儲,當大軸轉動(dòng)周數等于預設值時(shí),停止采集,一次數據采集過(guò)程完成。
LabVIEW調用動(dòng)態(tài)鏈接庫,使用LabVIEW功能模板中“Advanced”子模板的“調用庫函數(Call Library Function)”結點(diǎn)。實(shí)現動(dòng)態(tài)鏈接庫調用步驟如下:
(1)在LabVIEW程序建立“調用庫函數結點(diǎn)”。其中“Call Library Function”結點(diǎn)通過(guò)選擇功能模板“Advanced”子模板的“Call Library Function”功能產(chǎn)生。
(2)配置“調用庫函數結點(diǎn)”。雙擊框圖程序窗口的“Call Library Function”結點(diǎn),在彈出的對話(huà)框中對此“調用庫函數結點(diǎn)”進(jìn)行配置。其中:在“LibraryNameor Path”項中鍵入結點(diǎn)所鏈接的DLL文件名,它由c源代碼編譯而來(lái);在“Function Name”項中鍵入結點(diǎn)相鏈接的DLL文件中函數的名稱(chēng);參數“returntype”的類(lèi)型選擇“Void”,并增加所需的其他返回參數。
(3)編輯c源文件。c源文件包括硬件初始化文件和數據采集文件。硬件初始化部分源代碼如下:
//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);
}
數據采集部分源代碼如下:
//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)運行VI。運行由上述步驟生成的LabVIEW程序。
結束語(yǔ)
LabVIEW的外部代碼擴展功能是其重要特點(diǎn)之一,調用動(dòng)態(tài)鏈接庫是LabVIEW提供的調用外部代碼的4種途徑中最通用的一種??烧{用標準共享庫和用戶(hù)自定義的庫函數,對于不附帶LabVIEW驅動(dòng)程序的硬件尤其具有使用價(jià)值。通過(guò)調用動(dòng)態(tài)鏈接庫機制可引入C語(yǔ)言的強大功能,確實(shí)是一條增強LabVIEW與其它Windows應用程序之間的數據共享能力的良好途徑。
評論