现代测试技术实验报告Word文档下载推荐.docx
《现代测试技术实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《现代测试技术实验报告Word文档下载推荐.docx(51页珍藏版)》请在冰豆网上搜索。
quit
控制退出用户程序
Numeric
VMAX
电压最大值
double
控件设计好以后,通过CVI软件生成C语言代码。
2.C语言程序设计
生成的C语言程序是模块化的,分别设计各个控件的子函数,而按键QUIT的退出函数在生成代码时已经产生,所以,产生正弦波并显示的程序块将写在“开始”按键的begin子函数中。
主要的程序代码为:
doublek[1000],vmax=0.0;
//定义数组变量k作为y轴显示值,vmax存储电压最大值
inti;
//定义i作为x轴自变量值,从1到1000变化,乘以0.01即从sin0.01显示到sin10
switch(event)
{
caseEVENT_COMMIT:
for(i=0;
i<
1000;
i++)
{k[i]=5*sin(i*0.01);
//for循环,一次给k数组中赋值,这里设电压最大值为5V
if(vmax<
k[i])vmax=k[i];
//比较大小,将大数存入vmax
}
PlotY(panelHandle,PANEL_GRAPH,k,1000,VAL_DOUBLE,VAL_THIN_LINE,VAL_EMPTY_SQUARE,VAL_SOLID,1,VAL_YELLOW);
//PlotY绘制图像的库函数,将数组k中的值绘制在GARPH中显示
SetCtrlVal(panelHandle,PANEL_VMAX,vmax);
//Numeric的赋值库函数,显示电压最大值
这样一来,在摁下开始后,将在GRAPH上显示正弦曲线,并显示电压最大值。
结果如下图所示:
图1.2实验一程序运行结果
四、思考题
1.简述NUMERIC控件的属性设置过程;
答:
首先设置常量名称ConstantName,然后是参数默认值、参数数据类型、参数最小值、参数最大值、参数增长间隔、控制类型(Hot),然后是外观的设计,还有标签Label的设计(本实验中为“电压最大值”)等。
2.简述GRAPH控件的属性设置过程;
首先设置常量名称ConstantName,然后是回调函数(本实验中无需设置),再设置控制类型(Indicator)、数据类型。
接着是对坐标轴的设置,有对应的参数类型、参数最小值、参数最大值、参数增长间隔还有外观的设计,坐标轴的标注,还有标签Label的设计等。
3.简述回调函数名的作用。
回调函数是跟控件功能紧密结合的,主要用于命令按键中,按下按键后,进入回调函数,从而运行相应的子程序,实现相应的功能
实验二LabWindows/CVI库函数的使用
一、实验目的
1.进一步熟悉CVI的集成开发环境
2.进一步学习仪器面板中控键的使用
3.学会CVI库函数使用方法
4.学习用CVI库函数进行频谱分析的步骤
1.在实验一的基础上编写一个波形显示程序,要求根据输入的幅值和波形数分别显示正弦波和方波,同时可以设置对应的幅值和周期。
2.制作一个简单仪器面板:
两个数字控件,一个用来输入正弦波的幅值,一个用来输入正弦波的周期;
三个命令控件,分别用来启动程序产生正弦波、产生方波和退出程序。
3.利用CVI的代码生成工具生成你制作的仪器面板的程序框架。
4.在用户程序中添加相应程序,运行后观察程序执行的结果。
三、设计过程简述
1.面板文件设计
图2.1实验二面板文件图
表2.1实验二控件功能表
SSIN
ssin
产生正弦波
SQUR
squr
产生方波
CLOSE
close
AMP
调节幅值
Validate
NUM
调节周期
int
2.C语言程序设计
生成的C语言程序是模块化的,分别设计各个控件的子函数,而按键CLOSE的退出函数在生成代码时已经产生,对应的,产生正弦波并显示的程序块将写在“正弦波”按键的ssin子函数中,产生方波并显示的程序块将写在“方波”按键的squr子程序中。
具体的子程序的流程图如下:
ssin:
调用GetCtrlVal库函数从AMP和NUM中获得幅值和周期
调用产生正弦波的库函数SinePattern将一段正弦波的采样值放入全局变量数组a中
调用库函数DeleteGraphPlot清屏
调用库函数PlotY显示正弦波
squr:
图2.2实验二程序设计流程图
1.简述PanelHandle和ControlID参数的作用;
答:
PanelHandle这一参数由LoadPanel库函数设置,存入的是已存储的面板文件这一对象。
ControlID对应面板文件上的各个控件,由PANEL_xxx表示,PANEL为面板名,xxx为控件对应的常量名称。
2.简述DeleteGraphPlot函数的调用和设置过程;
选择Library→UserInterface→Controls/Graphs/StripCharts→GraphsandStripCharts→GraphPlottingandDeleting→DeleteGraphPlot,调用DeleteGraphPlot函数。
设置DeleteGraphPlot函数:
PanelHandle栏输入panelHandle,ControlID栏输入PANEL_GRAPH,PlotHandle栏输入默认值-1。
3.简述GetCtrlVal函数的调用和设置过程;
选择Library→UserInterface→Controls/Graphs/StripCharts→GeneralFunctions→GetControlValue,调用GetCtrlVal函数。
设置GetCtrlVal函数:
PanelHandle栏输入panelHandle,ControlID栏输入PANEL_NUM或者PANEL_AMP即对应的数字控件的常量名称,Value栏输入对应赋值的指针的调用&
amp或&
num。
4.简述SquareWave函数的调用和设置过程;
选择Library→AdvancedAnalysisLibrary→SignalGeneration→SquareWave,调用SquareWave函数。
设置SquareWave函数:
NumberofElements栏输入需要显示的点数,这里取1000,Amplitude栏输入幅值的值即变量amp,Frequency栏输入频率值在这里为1.0/1000*num,Phase栏输入相移量&
phase,DutyCycle栏输入占空比,这里取50%即50.0,SquareWave中填入需要赋值的数组变量名,这里取为a。
实验三信号的采集及其频率和周期的测量
1.学习在CVI环境里使用非NI数据采集卡
2.学习用过零法计算被测每周期采样点数
3.学习数据采集卡采样间隔的标定
4.学习计算被测信号的频率和周期
二、实验原理
a)CVI环境里非NI数据采集卡的驱动
1.1NI数据采集卡驱动库的添加
在CVI工程文件编辑器中单击Edit菜单,选择AddFilesToProject就能弹出可以在工程文件编辑器中添加的文件类型(如图3-1所示)。
选择Library就可进入添加库文件采单(图3-2)。
选中PCI-Dask.lib文件,单击Add控件就可将库文件添加到工程文件编辑器中。
注意图3-2中第一项是被添加文件的路径。
图3.1添加库文件路径
图3.2添加库文件菜单
1.2非NI数据采集卡头文件的添加
在CVI源文件编辑环境中,在所有的“#include”行的最后,添加“#include"
Dask.h"
”。
如图3-3所示。
图3.3非NI数据采集卡头文件添加的位置
2.零计数法测频原理
不含直流分量的正弦波每个周期内都应有两个过零点。
根据每两个过零点之间的采样次数我们可以得到每周期的采样点数N。
由于采样时间间隔
是由数据采集卡决定的,是一个确定值。
所以可以得到正弦波的周期为N*
;
从而可以计算出频率f。
对被测信号x(t)进行数据采集,得到被测信号序列为x(n),n=1,2,…,k。
我们把该信号序列中上次采样为负值、本次采样为正值的点记为正过零点,两个正过零点的时间间隔t为:
(3-1)
式中
——采样时间间隔;
——两次过零点时间内采样的次数;
——两个正过零点之间的时间间隔,也即被测波形周期。
故被测波形频率f为
(3-2)
3.具有实测功能的虚拟示波器基本原理
实测是指该虚拟示波器可以测量实际信号。
这时需要数据采集卡,将所测电量信号采集到计算机中,由软件完成波形的显示。
如图3-4所示的框图说明了具有实测功能的虚拟示波器的原理框图。
虚拟示波器
计算机
LabWindows/CVI软件
采集卡
信号
图3.4具有实测功能的虚拟示波器的原理框图
在上述的框图中由计算机对采集卡发出指令,启动采集卡,计算机将采集的信号数据进行存储,处理和显示,从而实现虚拟示波器。
4.PCI_9111数采卡的使用方法
4.1PCI_9111数采卡性能指标
本节中所使用的数据采集卡的型号为PCI_9111,其性能指标为:
32位PCI数据总数;
16路单端模拟输入通道;
A/D采样速率100KHz;
模拟输入电压范围为±
10V、±
5V、±
2.5V、±
1.25V、±
0.625V;
3种A/D触发方式:
软件触发、外部脉冲出发和可编程定时触发。
使用PCI_9111数据采集卡时,将PCI_9111数据采集卡插入计算机的PCI插槽中,经过37芯排线与一转接板相连,如图5-2所示。
被测信号与转接板上相应接线插座相连,转接板上的接线插座对应数采卡的输入通道号。
数据
转接板
37芯排线
被测信号
图3.5PCI_9111数据采集卡的连接方法
本例中的被测信号是由信号发生器产生的标准正弦波信号。
4.PCI_9111数据采集卡的使用
在使用PCI_9111数采卡时,程序开始时要用Register_Card来初始化数采卡,程序结束时用Release_Card释放数采卡。
在主函数里添加以下A/D卡注册程序
CardID=Register_Card(PCI_9111DG,0);
AI_9111_Config(CardID,TRIG_INT_PACER,0,9216);
在需要进行数据采集时添加以下程序:
AI_AsyncDblBufferMode(CardID,0);
AI_ContReadChannel(CardID,channel,adRange,volt3,ReadCount,SampleRate,SyncMode);
三、程序设计要求与实验内容
1.
程序设计要求:
1.1编写一个波形采集程序,要求根据图3.4设计一个简单的仪器面板,有波形显示和信号频率显示,可以输入被测信号的输入通道。
图3.6“虚拟频率计”前面板
1.2过零法计算频率主要代码段如下:
for(i=1;
MAX/2;
i++){
if((volt5[i-1]*volt5[i]<
=0)&
&
(volt5[i-1]<
0)){
signpo[k]=i;
k++;
if(k>
8)break;
}}
sumpo=signpo[k-1]-signpo[1];
f=50000.0/sumpo*(k-2);
2.运行检验
改变信号源输出正弦信号的频率,观察“虚拟频率计”的频率输出并记录。
信号源输出频率f1
390.0
780
1.56k
3.06k
5.94k
“虚拟频率计”显示频率f2
389.76
1559.2
3056.8
5980.6
相对误差%
-0.24
-1
-3.23
-40.6
四、设计过程简述
图3.7实验三面板文件图
表3.1实验三控件功能表
CHANNEL
采集卡通道号
Int
Validata
Ring
RATE
采样速率
Double
SUMPO
波形每周期点数
FRE
波形频率(Hz)
采集波形幅值(V)
CommandButton
GENERATEWAVE
GenerateWave
生成波形
CALFFT
CalFFT
频谱分析
仪器开关
2.C语言程序设计
整个程序在于产生正弦波,然后是进行FFT变换
产生正弦波的子函数为GenerateWave,其流程为:
设置采集卡的电压范围,设置采样速率的初值
获得采集卡的通道号采样速率
设置A/D转换卡的单通道缓存,设置单通道采集
,生成新的正弦波形
利用过零点法计算频率
显示波形每周期点数,波形频率和采集波形幅值
进行频谱分析(FFT)的子函数为CalFFT,其流程为:
为虚部定义数组指针,定义循环变量,为正弦波指针开辟数组空间
对采集到的数字量进行修正,转化为电压量
调用库函数DeleteGraphPlot清上屏
,生成新的电压波形
分别为虚部、极值以及极值的相角对应的指针开辟数组空间
调用FFT频谱转换库函数进行FFT变换
进行极坐标转换,对极值进行量化处理
,生成新的FFT频谱波形
释放数组空间
五思考题
1.改变数据采集卡的采样速率,观测“虚拟频率计”的测试结果,分析其原因;
因为已知采样频率为10000Hz,当输入信号频率低于5000Hz时,满足采样定理f<
1/2ft,所测频率误差较小;
当频率超过5000Hz时,不满足采样定理,此时所测频率值具有较大误差。
2.给出你的“虚拟频率计”测量范围,提出改进方案;
由采样定理知,测量范围应为0-5000Hz。
可以通过增加采样频率来扩大输入信号的测量范围。
实验四信号的频谱分析
1.学习在使用数据采集卡进行单通道多点采集和多通道多点采集的方法
2.学习使用CVI库函数计算被测波形的有效值和平均值
3.学习使用CVI库函数对被测波形进行FFT计算
对信号进行频域分析,可以得到它频域的各种表征量,得到信号的频率组成信息。
目前,最主要的频谱分析方法就是快速傅利叶变换及其反变换,其原理参见本课程的教材。
Labwindows/CVI中的FFT函数使用了目前最有效的裂基算法,该算法的计算量是最小的。
该函数的使用方法见附录1所示。
本实验中就使用该算法进行频谱分析。
CVI中的FFT函数对信号进行变换,得到信号的幅频和相频特性。
该函数得到的是复数形式,如果需要转化为极坐标形式,可以用公式:
(4-1)
(4-2)
编程计算,也可以用CVI的函数ToPolar1D(),该函数完成由直角坐标到极坐标的转换。
函数原型说明见附录1。
本实验中用的数据采集函数是多通道多点采样函数AI_ContScanChannels,它的使用方法和实验三的数据采集函数类似,函数说明参见附录1-3中的第4点。
1.程序设计要求:
1.1编写一个波形采集程序,要求根据图4-1设计一个简单的仪器面板,有波形显示框、频谱显示框和信号频率显示,可以输入数据采集卡的采集速率。
1.2数据采集和FFT计算用不同的控件控制,程序分别添加在两个回调函数中。
数据采集函数中包括数据采集和提取一个周期信号两个部分。
波形显示框中要求只显示一个周期的波形。
计算频谱函数中包括FFT和极坐标变换两个部分。
频谱显示框显示被测信号的不同谱线的幅值。
因为数据采集和频谱计算分别在两个函数执行。
所以存放采集信号的数组应定义全局变量。
图4-1“虚拟频谱分析仪”前面板
改变信号源输出正弦信号的频率,观察“虚拟频谱分析仪”的输出并记录。
输入信号频率f1
390
输入信号有效值
0.88
数据采集卡采样速率f2
10000
每周期采样点数
256
128
64
32
16
第1条谱线的幅值
四、设计过程简述
1.面板文件设计:
面板如下图所示:
图4-2实验四面板图
对应控件的主要属性设置如下:
表4.1实验四控件功能表
波形幅值(V)
CYC
周期个数(Hz)
每周期点数
PHASE
相位
2.C程序流程设计:
和实验三比较类似,同时用到了实验二中用到的信号发生库函数。
GenerateWave子函数的主要流程为:
将设置的幅值、周期个数、每周期点数和相位的值由库函数GetCtrlVal赋入对应的变量中
计算频率值和总点数的值
为正弦波指针开辟数组空间
调用产生正弦波的库函数SinePattern将一段正弦波的采样值放入对应数组中
CalFFT子函数的主要流程为:
为虚部定义数组指针,定义循环变量,为虚部数组指针开辟数组空间,并将其清零
分别极值以及极值的相角对应的指针开辟数组空间
采样频率为10000Hz。
当输入信号频率低于5000Hz时,满足采样定理,所测频率误差较小,当频率超过5000Hz时,不满足采样定理,此时所测频率具有较大误差。
2.如果FFT结果正确,那第1条谱线和输入信号的有效值有什么关系,证明之。
第一条谱线的幅值跟输入信号的有效值相等,因为由FFT的定义式可以知道,其第一条谱线的求和公式就是求信号有效值的公式,即都是求信号的积分平均数。
实验五温度的测量
1.通过实验加深理解热电阻测温原理及热电阻调理电路;
2.握虚拟测温仪的设计及测温仪的标定方法;
3.了解热电阻温度传感器时间常数的测量方法。
1.热电阻测温的基本原理
热电阻是一种常见的测温元件,它是利用导体的电阻随温度变化的特性来测量温度的。
常用的热电阻有铂电阻和铜电阻两种。
下面就以铂电阻为例介绍其测温的基本原理。
铂电阻与温度的关系,在0~850℃范围内为
Rt=R0(1+AT+BT2)(5-1)
式中Rt——温度为t℃时的电阻值;
R0——温度为0℃时的电阻值;
T——被测温度值;
A,B——分度系数,即A=3.908×
10-3/℃,B=-5.802×
10-7/℃。
Pt100热电阻的分度表如表5-1所示。
表5-1R100/R0=1.385铂电阻Pt100分度表
温度/℃
10
20
30
40
50
60
70
80
90
电阻值/Ω
100.00
103.90
107.79
111.67
11