LabVIEW课程设计题目包括:“基础题”和“设计题”两大部分。未曾选修过“虚拟仪器技术”的同学仅需完成“基础题”部分;选修过“虚拟仪器技术”的同学在完成“基础题”部分内容的基础上,必须选做“设计题”之一内容。
第一部分 基础题(必做)
1、用LabVIEW的基本运算函数编写以下算式的程序代码:
(1)
(2)
28+57×21007−683
;+
102−25÷631+5×63
253
178+
1+381×7.2−8.1÷32
求华氏温度2、利用摄氏温度与华氏温度的关系°C=5(°F−32)/9编写一个程序,
(°F)为32°,64°,4°,98.6°,6°,104°,212°,时的摄氏温度。
3、创建一个2行3列的二维数组控制件,为数组成员赋值如下:
1.002.003.004.005.006.00
4、用数组创建函数创建一个二维数组显示件,成员为: 123456
234561
345612
456123
编程将上述创建的数组转置为:
1
123423453456456 1
56126123
5、创建一个簇控制件,成员分别为字符型控制件姓名,数值型控制件学号,布尔型控制件注册。从这个簇控制件中提取出簇成员注册,显示在前面板上。
6、创建一个字符串显示件,程序运行后显示当前系统日期、时间和自己的班级、
姓名。
7、将范围0—10的5个随机数转换为一个字符串显示在前面板上,要求保留2位小数,每个数之间用逗号分隔。
8、用for循环产生4行100列二维数组,数组成员如下: 1,2,3………100 100,99,98………..1 6,7,8………….105 105,104,103………6
从这个数组中提取出2行50列的二维数组,成员如下:
50,49,48…………1 56,57,58…………105
将这两个数组用数组显示件显示在前面板上。
9、产生100个随机数,求其最小值和平均值。
10、程序开始运行后要求用户输入一个口令,口令正确时滑钮显示件显示一个
0—100的随机数,否则程序立即停止。
2
11、编写一个程序测试自己在程序前面板上输入以下字符所用的时间,A virtual
instrument is a program in the graphical programming language.
12、编写计算以下等式的程序: y1=x3−x2+5
y2=m×x+b
X的范围是0—100,y1和y2用数组显示件显示在前面板上。
13、编程求Josephus问题:m个小孩围成一圈,从第一个小孩开始顺时针方向
每数到第n个小孩时这个小孩就离开,最后剩下的一个小孩是胜利者。求第几个小孩是胜利者。
14、猴子吃桃子,每天吃全部桃子的一半零一个,第十天剩下一个桃子,编程求
第一天猴子摘了多少个桃子。
。“水仙花数”指一个3位数,它的各个数字立方和等于15、编程求“水仙花数”
它本身。例如:371=33+73+13。
。“完数”指一个数恰好等于它本身的因子之16、编程求成1000以内的“完数”
和。例如:28=14+7+4+2+1
17、在一个chart中显示3条曲线,分别用红、绿、蓝3中颜色表示范围0—1,
0—5和0—10的3个随机数。
18、在一个Graph中用2种不同的线宽显示1条正弦曲线和一条余弦曲线。每条
曲线长度为128个点。正弦曲线X0=0,△X=1,余弦曲线X0=2,△X=10。
19、用一个Graph显示下列计算的结果:
3
y1=x3−x2+5
y2=m×x+b
X的范围是0—100
20、用XYgraph显示一个半径为10的圆。
21、产生一个又10行10列的二维数组,数组成员为0—100 的任意整型数,用
强度图显示出来。
22、在程序前面板上创建一个数值型控制件,为它输入一个数值:把这个数值乘
以一个比例系数,再由同一个控件上显示出来。
23、产生若干个周期的正弦波数据,以当前系统日期和自己的姓名为文件名,分
别存储为文本文件、二进制文件和电子表文件。再用windows计事本或写字板将上述文件读出来。
24、将一组随机信号数据加上时间标记存储为数据记录文件,然后在LabVIEW程序将存储
的数据读出并显示在前面板上。
25、产生矩形波脉冲数据并记录为波形文件。
26、计算节点Y=X3在区间[0,10]上的积分。
27、求一个矩阵的行列式,并计算它与另一个矩阵的乘积。
28、计算一个输入序列的均方根和标准方差。
29、计算函数Z=sin(3x)×cos(3y)的值并显示出函数曲线。
4
30、建立一个自变量序列和一个因变量序列,对其进行直线拟合,返回拟合参数。
第二部分 设计题(5选1)
只给出大致任务的题目,其软件具体功能可自行设计并实现。 (1)设计一个VI程序模拟一个电压测量采样过程(随机数发生),从10ms开始每隔50ms采集一个点,共采集30个点,电压在采样前经过了一个信号处理电路的10倍衰减。要求程序的显示能够反映出实际的采样时间及电压值。
(2)设计一个VI程序,测量一个信号的电压值(可用随机数发生器模拟)并进行滤波处理,以前3点的平均值作为滤波方法,要求共测量30个点,不仅要显示出实际的信号波形,同时还要显示滤波后的信号波形。
(3)设计一个VI程序,实现按帐号和密码登陆的人机界。若输入的帐号和密码相符,则显示欢迎登陆对话框,按“确定”退出程序;若输入的帐号和密码不相符,则显示出错对话框,按“确定”返回程序。 (4)虚拟相敏检波器的设计(具体方法见附录一)。 (5)虚拟数字示波器的设计(具体方法见附录二)。
5
附录一 虚拟相敏检波器的设计
一、设计目的:
1. 熟悉虚拟仪器的编程环境及数据操作中的各图标(端口)。 2、了解相敏检波器的工作原理、组成结构。 3、了解相敏检波器在微弱信号检测中的作用。
2. 运用LabVIEW图形编程语言的强大功能构建虚拟仪器相敏检波器。
二、设计原理:
信号处理是信号测试的一个重要环节,尤其对于伴随高强度噪声的信号的处理更是至关重要。无论是物理,化学,生物,还是天文,通信及电子技术等领域,都存在亟待检测的各种微弱信号,这些信号单独存在的概率相当小,往往被噪声深深覆盖淹没。对于伴随噪声的非周期微弱信号,通常采样滤波器减小系统的噪声带宽,对于深埋于噪声中的周期性信号,则采取锁相放大法,即使用相敏检波和低通滤波构筑的相敏检波器对被测信号进行相关检测。
相敏检波器由移相网络,乘法器,积分器,方波参考信号源(其频率与检测信号相同)构筑而成。移相网络的作用是使被测信号与方波参考信号同相,两种信号经乘法器和积分器运算后获得最大直流分量的全波整流信号,由于噪声的随机性,与参考信号同频同相的概率极小,经低通滤波器的积分运算后,高频分量的绝大部分噪声被滤除,因此,相敏检波器具有极强的抑制噪声的功能。相敏检波器仿真仪程序流程见图1。
图1 虚拟相敏检波器程序流程
三、所用设备
计算机、LABVIEW软件
四、设计步骤
4.1 前面板设计
⑴ 设置四个波形显示器,可同时观察方波参考信号,正弦被测信号,正弦波和随机噪声的叠加信号波形。执行四次Controls>>Graph>>Waveform Graph操作,调用图形控件Graph。 ⑵ 设置一个输出显示型数字控件,显示相位差测量结果。
⑶ 设置四个数字控件,用于正弦波和方波发生器设置采样频率,采样点数,信号频率。
6
⑷ 设置一个旋钮型控件,用它来控制正弦波和方波信号的相位差。 ⑸ 设置一个开关型控件,控制仪器的运行或关闭。
4.2 流程图设计
⑴ 调用Functions>>Structures>>while Loop,选择While循环结构,使整个程序周而复始地运行,按下停止按钮可中止程序的执行。
⑵ 调用Functions>>Signal Processing>>Signal Generation>>Sine Wave.VI, Square Wave.VI,Uniform White Noise.VI.作为正弦波和方波及随机噪声的信号发生器。
在前面板数字控件上设置正弦波和方波信号频率均为5Hz,振幅均为1。正弦波初相取默认值0度,方波参考信号相位由位于前面板的模拟电位器控制,电位器与方波发生器组建成移相网络。用于调整方波和正弦波信号的相位差。
设置随机噪声的幅度为100。
⑶ 调用Functions>>Signal Processing>>Filter>>Butterworth.VI。选择三个巴特沃斯滤波器,其中一个作为高通滤波器使用,其Low Cutoff Freq设为100,其他两个均作为低通滤波器使用,Low Cutoff Freq设为20。
⑷ 调用Functions>>Signal Processing>>Measurement>>Amplitude and phase Spectrum。VI.设置两个图标,与前面板上的电位器组合构建相位差计,有了相位差计就可以实时监控正弦波和方波参考信号的相位关系。
⑸ 调用Functions>>Cluster>>Bundle合成簇函数.设置四个图标,用于集合不同类型的数据成员。
⑹ 调用Functions>>Array>>Build Array.VI.并增加一个输入,将两个一维数组合并成一个二维数组。
⑺ 正确连线后流程图如图2所示(仅仅供参考)。
7
图2相敏检波器仿真仪流程图
4.3 虚拟相敏检波器的运行
随机噪声图标首先与巴特沃斯高通滤波器连接,滤波器的Low cutoff Freq预设值为100,即滤除随机噪声中频率小于100的低频分量,生成高频噪声,尔后与正弦信号叠加,如图3(a)所示,叠加后的信号已不见正弦波的踪影,它完全被随机噪声笼罩。此时运用巴特沃斯低通滤波器对叠加信号进行预处理,低通滤波器的Low cutoff Freq预设值为20,即滤除频率大于20Hz的信号,由于随机噪声频率是大于100的高频信号,而正弦波的频率是5Hz,所以叠加信号通过该级低通滤波器后,随机噪声基本滤除殆尽,正弦波清晰可见,它与方波信号进行模拟乘法运算,得到输入信号与参考信号的和频分量和差频分量。最后还须连接一个巴特沃斯低通滤波器,通过两次互相关运算,滤除信号的和频分量,相敏检波器最后检测的信号是正弦波和方波信号的差频电压。由于两种信号的振幅均为1,则方波参考信号展开为傅氏级数:
Ur=
1
sin{(2n+1)(2πf2t+ϕ2)} ⑴ ∑πn=02n+1
4
∞
设正弦波信号的数学表达式为:
Us=sin(2πf1t+ϕ1) ⑵ 则相敏检波器的输出电压为:
8
∞
22
cos{2π[f1−(2n+1)f2]t+[ϕ1−(2n+1)ϕ2]}−∑U0=∑
n=0(2n+1)πn=0(2n+1)πcos{2π[f1+(2n+1)f2]t+[ϕ1+(2n+1)ϕ2]}
∞
⑶
式中f1,f2分别是正弦波和方波信号的频率,n是谐波数,ϕ1,ϕ2分别是正弦波和方波信号的初相角。
4.3.1 正弦波和方波参考信号同频同相
调节虚拟相敏检波器前面板的模拟电位器,使相位差计示值为0度,此时正弦波和方波参考信号的频率均为5Hz,相位也相同,从图1.3(a)我们可以清晰地看到虚拟相敏检波器输出的是全波整流信号,幅值为+1,而且盈含恒定分量的正极值。
图3 (a)正弦波和方波信号同频同相 (b)正弦波和方波信号同频反相 (c)正弦波和方波信
号同频相位差30度
在“相敏输出信号”的屏幕上我们丝毫看不到随机噪声的踪迹,随机噪声得到有效抑制。
从虚拟相敏检波器前面板也注意到一个现象,正弦波和方波参考信号同频同相时,方波相位旋钮的指针指向-45度,这意味正弦波相位也滞后45度,而不是原先的默认值0度,原因是正弦波和随机噪声的叠加信号通过巴特沃斯低通滤波器时相位要迁移滞后,这一现象是相频响应引起的相移,其公式是:
ϕ(ω)=−arctg
ω/(ωnQ)
⎛ω1−⎜⎜ω⎝n
⎞⎟⎟⎠
2
⑷
其中ωn=
1
为特征角频率,Q为等效品质因素。 RC
4.3.2 正弦波和方波参考信号同频反相
调节电位器,使方波参考信号与正弦波的相位差示值180度,此时两个信号同频反相,虚拟相敏检波器的输出波形仍是全波整流波形,但幅度为-1,盈含恒定分量的负极值。见图3(b)。由此证明相敏检波器也具有鉴相特性。 4.3.3 正弦波和方波参考信号同频不同相
9
调节方波相位电位器,使方波参考信号与正弦波的相位差示值分别为30度,如图3(c)所示。仿真仪输出的是交流信号,显然输出与两信号的相位差具有相关性,正弦波和方波参考信号同频不同相时虚拟相敏检波器输出信号中的恒定分量为:2cos(ϕ1−ϕ2)4.3.4 正弦波和方波参考信号不同频率
仿真仪前面板“正弦波频率”,由原来的5Hz上升为30Hz,调节“方波频率”,使其示值为3 Hz,采用以上方法分析虚拟相敏检波器输出信号。
π。
五.设计报告内容:
1、分析相敏检波器的设计原理及其在微弱信号检测中的作用。
2、分析采用LABVIEW设计移相器的方法,分析移相器及低通滤波器在相敏检波中的作用。
3、讨论采用LABVIEW设计虚拟相敏检波器的方法,写出设计程序并分析程序功能。 4、分析参考信号(方波)和输入信号(正弦波)相位差为90度时相敏检波器输出信号。5、分析参考信号(方波)和输入信号(正弦波)频率不同时的相敏检波器输出信号。
10
附录一 虚拟数字示波器的设计
一、电子示波器的工作原理
电子示波器的核心部件是阴极射线示波管(CRT)。示波管主要由电子枪、偏转系统和荧光屏三部分组成。电子枪产生电子束,经聚焦后高速打在荧光屏上,使得相应的部位产生荧光,偏转系统形成的电场,控制电子束打在荧光屏上的位置。涂有磷光物质的荧光屏就像画图的纸,电子枪产生的电子束就像是一支画笔,垂直偏转和水平偏转系统就像握笔的手,在荧光屏上真实、直观地描绘出一幅幅生动的波形图。电子示波器的工作原理如图1所示。
图 1 电子示波器工作原理
在不加任何偏转电压的情况下,电子枪产生的电子束将打在圆形荧光屏的中央位置,形成一个聚焦的光点。在X轴偏转板X1、X2上施加电压时,水平电场将使光点在水平方向左、右运动;在Y轴偏转板Y1、Y2上施加电压时,垂直电场将使光点在垂直方向上、下运动;如果X轴偏转板和Y轴偏转板上同时施加电压,则光点沿X方向和Y方向合成运动的方向偏转,如图1-1(b)所示,光点显示的最终位置和X、Y方向的电场力大小有关,即
z=x2+y2。如,设uy=Umsinωt,ux=Umcosωt,示波管X方向和Y方向的偏转
灵敏度分别为Sx和Sy,假设Sx=Sy=1,则z=
(Umsinωt)+(Umcosωt)22=Um,这说
明光点运动的轨迹是半径为Um的圆,以上的分析即为电子示波器的作为X-Y显示仪使用的工作原理。如果只是要显示 Y轴输入信号Uy的波形,则应该在X轴放大器输入由示波器内部产生的随时间t线形变化的电压(常用锯齿波电压),此电压也称为“扫描电压”这种方式也叫做“扫描”工作方式,是电子示波器最大量使用的工作方式。其原理如图2 所示。
在图2中Y方向施加正弦波电压,X 方向施加锯齿波电压,假如二者周期相等,则根据合成运动的分析,荧光屏上将显示出如图2所示的一个完整周期的正弦波形。并且由于锯齿波重复出现,所以正弦波的第2个周期、第3个周期……将重叠显示在荧光屏上相同的位置,形成稳定的波形。
如果Y方向无任何电压,只在X方向施加锯齿波电压,则将显示出一条水平线,称之为“扫描线”或“基时线” 。因为锯齿波的电压和时间成线形关系,而光点在水平方向的偏转距离又和电压成线形关系,所以水平方向的偏转距离就和时间成线形关系,这就是说在水平方向的单位距离将代表某一个单位时间,这就是“时间基准”的概念。有了时间基准就相当于有了一把时间尺,可以用它去测量被测波形的上升、下降时间、周期等时间参数。
11
图2 波形显示原理
二、虚拟数字示波器的设计
(一)前面板的设计
前面板程序用来提供用户与虚拟示波器的接口,它产生一个友好的图形界面,用于显示测量和处理的结果,另一方面,用户也可以通过控制前面板上的开关和按钮,模拟传统仪器的操作,通过键盘和鼠标,实现对虚拟示波器的控制。本文设计的虚拟示波器软面板如图3所示。
图3 虚拟示波器前面板
这个前面板上包含了实时波形显示窗口,可以显示实时采样波形。右上边的暗框里面可以直接得到采样数据的最大值、最小值、平均值、被测信号的频率。右边中间部分是信号调整部分,它包括x轴调整和y轴调整两个旋钮,可以调整实时波形在屏幕上的显示效果。在显示频域波形窗口的右边是一些按钮,包括保存波形,打开波形,频域分析。其中存储按钮可以将波形自动的以电子表格的形式进行保存,并以每天的日期作为文件名称。另外面板上
12
还有通道选择框、工作方式和采样结束按钮,用于选择通道、进行波形显示或打开波形以及结束采样。
特别注意的是,在这里我们所选用的用来显示实时波形的窗口的VI是XY Graph。由于Waveform Chart和Waveform Graph的横坐标都是均匀分布的,因而在使用上有一定的限制,例如不能描绘出均匀采样得到的数据。而XY Graph的输入数据需要包含两个一维数组,并将两个数组组合成一个簇,使其分别包含数据点横坐标的数值和纵坐标的数值。
(二)程序设计 1 程序功能划分
根据示波器的工作原理和设计要求,可以将软件分为以下功能模块:数据采集、波形显示与控制、参数测量、及数据存储与回放等4大模块。接下来即可对每个模块进行程序设计,然后将各模块进行程序连接。
2 数据采集模块设计
数据采集主要包括模拟量的输入输出。模拟输入将是将电压、电流、温度、压力等物理量转换为数字量并传递到计算机中的过程;模拟输出则是将计算机中的数字量转换成模拟电压(或电流)输出到各种仪表或执行机构的过程。基于LabVIEW的数据采集系统如图4所示。
图4 基于LabVIEW的数据采集系统
在此,我们选用的数据采集硬件为PCI-DAQ数采卡。为了使数采卡正常工作,在软件驱动前必须根据需要对一些参数进行正确的设置。主要包括:
A、模拟信号输入
主要是设置信号的输入方式:单端还是双端,单极性还是双极性等。还要根据输入信号幅值和分辨率要求进行放大增益设置。此外,根据输入信号的不同极性设置合适的量程。
B、A/D转换
要设定信号输入的通道号,还要设定采样点数、采样速率、采样结果的输出方式(是放在一个数组中还是放在一个缓冲区内)、采样触发方式(外触发、定时触发、软件触发)等。 C、 D/A 转换
主要是设置D/A转换后输出模拟信号的通道号以及输出信号的幅值、数值刷新的速率等。
以上参数正确设置后,就可以利用LabVIEW自带的驱动程序,完成测试采集任务。 在把模拟信号连接到采集卡端子上时,有三种连接方法: (1) 差分输入方式
输入信号的正负极分别接入DAQ设备的两个通道,所有输入信号各自有自己的参考点。此种接法能抑制接地回路的感应误差,而且也能在一定程度上抑制接收的环境噪声,是较理想的接法。这种测试系统较适合测量小于1V的低电平信号,且信号电缆较长或无护套,
13
环境噪声较大,任何一个输入信号要求单独的参考点等条件。
差分输入方式比单端输入方式多用一倍的通道。当所有的信号在信号源可以共享一个公共参考点,并且信号的电平值大于1V的较高电平,输入电缆较短(一般小于5米),或有合适的护套,无环境噪声时,就可以采用单端输入方式,单端输入方式分为参考单端输入方式和非参考单端输入方式。
(2) 参考单端输入方式
参考单端输入方式用于测试浮动信号,它把信号的公共参考点和测试仪器模拟输入地连接起来。
(3) 非参考单端输入方式
此种方法用于测试已经接地的信号,因为所有输入信号都已经接地,所以无须再和仪器放大器的模拟输入地连接。
信号连接完成后,就可以使用LabVIEW中的数据采集VI进行数据采集了。数据采集VI主要完成数据采集的控制,包括触发控制、通道选择控制、时基控制等,其中:
(1)包括触发电平、触发斜坡控制;
(2)通道选择主要控制单通道或双通道测量;
(3)时基控制主要控制采集卡采样率和采样点数。
数据采集模块可以说是虚拟示波器的核心部分,只有将数据采集进来以后才能进行分析显示等工作。其实,数据采集就是把外界的模拟电信号(可能经过信号调理)通过A/D转换成数字信号,或直接的数字量变成数组输入计算机。
在LabVIEW的流程面板中,在Functions/Data Acquisition/Analog Input中有所需要的模拟输入模块,如图5所示。
模拟输入模块分为4类:简易VIs、中级VIs、实用VIs和高级VIs。因为在示波器中要使模拟输入模块工作在很高的刷新率下,而且还要其他功能,特别是要使用触发功能,所以要使用中级VIs来进行数据采集。下面是对部分中级VIs的一些简单介绍。
AI Config模块,其作用是对模拟输入的器件和端口进行设置,同时,设置缓存区的大小。
AI Start模块,其作用是开始数据采集,同时,设置每个通道的采样率。这个模块还可以设置触发方面的内容。不过很可惜,这里设置的触发问题都是硬件触发的。
AI Read模块,其作用是从缓存区读入数据。这个模块同样也是有触发功能的,不过这个触发很像软件触发。
图5 模拟输入模块
因为在采集过程中,并不需要对硬件设置进行调整,所以也用不到高级VIs,于是数据采集模块的程序如下:使用AI Config 进行硬件的设置,AI Config在主循环的外边,这也就说明在程序运行后就不能更改缓存区的大小;然后是AI Strat 和AI Read,和模拟输出不
14
同的是,模拟输出是先将数据输到缓存区中,然后再开始转换,而模拟输入是先进行转换再读入缓存区。在程序的最后是使用AI Clear将硬件设置清除。数据采集模块程序如图6。
图6 数据采集模块
3 波形显示与控制模块
在通常情况的示波器中,显示波形都是利用锯齿波电压来扫描的,锯齿波在这里提供了一个时间的概念,有了锯齿波,就形成了以时间为参数的两个参数方程,一个是输入信号随时间变化的方程,另一个是锯齿波随时间变化的方程,两个方程合起来在就把输入信号随时间变化的情况变成了随空间(横坐标)变化的情况。在程序对于波形的显示过程中,横坐标代表时间,锯齿波实际上就是为每个采样点的数据匹配上一个时间的坐标。当然,我们在波形发生模块中有锯齿波发生器,但是他们所发生出来的是“实实在在的锯齿波” ,而我们所需要的其实是一个横坐标,所以这些锯齿波发生器在这里使用起来不是很方便。另外在进行双踪显示的时候,普通示波器只能有一个纵向扫描电压和一个横向扫描电压,所以要采用交替断续等方式来实现双踪显示,还可以使两个显示波形不仅来自不同的源,同时还可以用不同的频率进行扫描,完全和两个示波器一样。
在前面我们说过用于显示波形的模块-----XY Graph,它是输入一个一个点的二维坐标。所以,如果得到了1000个点的数据,那么想让这1000个数据显示在控件上就需要提供1000个横坐标信息。锯齿波发生模块如图7所示。
图7 锯齿波发生模块
15
在这个图中,For循环的作用是产生一组均匀的点来作为时间基准,,就好象是对时钟
进行均匀的采样,只不过是在图象上。其余的部分,是为了给整个坐标加权,使之能更好的显示波形。图中的软件开关Knob用来调节1大格所代表的时间,相当于调节扫描速度。如果需要混合扫描,或者对数扫描,只需要对这个程序的加权部分进行更改就可以了。
当然,锯齿波发生器只能用来作为提供一个时间概念,不能用于产生波形。前面我们已经说过对于输入的数据波形,用一个正弦波来代替。并与用于调整纵向波形的y轴调整按钮相乘,然后与锯齿波发生模块形成的数组组合成一个簇,再在XY Graph上显示出来。这样我们就可以得到一个较为简单实用的波形显示与控制模块的程序。如图8所示。
图8 波形显示与控制模块
4参数测量模块
该模块主要模拟示波器 的参数测量功能,完成对于波形的幅值大小,电压参数值和波形的周期、频率等参数的测量并显示其测量结果。具体为,我们先将显示得到的波形分解为分别为横向和纵向(即x和y轴)的两个数组,由于幅值、电压等参数是与y轴有关的,故我们把用于测量其数值的VI与y轴上的数组向连。同样,对于要测量的周期、频率等是与x轴相关的,我们就将用于测量周期、频率的VI与x轴相连。
5 波形存储和回放模块
一个功能模块在主程序流程中的位置对模块程序的编制有很大的影响。首先因为功能模块不在主程序的关键流程之中,所以可以有不同的位置;然后是它所接受的数据组织方式是不同的,对于不同的组织方式编程是不同的。数据存储与回放模块就是这样。
如图4所示的示波器前面板,我们提供了“是否保存”和“是否打开”两个按钮。当按下“是否保存”按钮时,显示的波形将以电子表格的形式,根据每个点的位置在电子表格中用具体的数字保存起来。另外我们还事先设定了波形的保存路径,并以每天的日期作为文件名来保存。
在这里我们用的是底层函数来保存电子表格文件的,如图9所示。
16
图9 数据保存模块
程序中用 Open/Create/Replace File VI新建了一个文件*.xls,在 For循环中用Write File函数将数据写入文件,最后用Close File函数关闭文件。
其中数据文件的格式为首先写入数据序号,然后加入一个TAB定位符号,接着写入正弦波幅值数据,最后行加上终止符号。每次循环将这样一行的数据写入文件,经过由原波形所含有点数的次数的循环,数据文件就按照电子表格文件的格式写好了。
因为保存的时候是以锯齿波所产生的时间变化为基准来保存的,所以在数据回放的时候就只能以保存时的锯齿波来扫描波形。
图10 波形回放模块
当按下“是否打开”按钮时,一旦开始读取波形数据操作,立刻就会弹出一个读取数据文件对话框,该对话框如图12所示,在该对话框中可以选择要读取数据文件的路径、文件名及文件类型等(我们这里限为电子表格文件)。该对话框完全仿照Windows风格,操作简便,可以很快将所需数据读出。
17
图11 读取数据文件时弹出的对话框
该功能尤其适用于因特殊原因不能实时处理数据,或数据对以后的研究具有重要的参考价值,此时可以先把数据保存下来,日后再把原来保存的数据文件读出来,这时读出的数据就和实时采集的数据一样,也能够进行自动参数测量,频谱分析等操作。
程序中采用的是Read From Spreadsheet File VI,在指定了读取文件的路径和读取数据的列数后, VI可以读取电子表格文件中的数据。需要注意的是Read From Spreadsheet File VI默认的读取数据定位符号是TAB,如果在写电子表格文件时用了其他的定位符号,则需要在Read From Spreadsheet File VI的delimiter数据端口加以设置。在这里我们设置为-1,意思为读取全部列数。然后我们提取出原电子表格的第二列,即为y轴的数据值,并与产生的锯齿波数组组成一个二维数组,最后在XY Graph上显示出来。另外,我们通过对x或y轴旋钮的设置,可对读出的波形进行调整。
该功能尤其适用于因特殊原因不能实时处理数据,或数据对以后的研究具有重要的参考价值,此时可以先把数据保存下来,日后再把原来保存的数据文件读出来,这时读出的数据就和实时采集的数据一样,也能够进行自动参数测量,频谱分析等操作。
程序中采用的是Read From Spreadsheet File VI,在指定了读取文件的路径和读取数据的列数后, VI可以读取电子表格文件中的数据。需要注意的是Read From Spreadsheet File VI默认的读取数据定位符号是TAB,如果在写电子表格文件时用了其他的定位符号,则需要在Read From Spreadsheet File VI的delimiter数据端口加以设置。在这里我们设置为-1,意思为读取全部列数。然后我们提取出原电子表格的第二列,即为y轴的数据值,并与产生的锯齿波数组组成一个二维数组,最后在XY Graph上显示出来。另外,我们通过对x或y轴旋钮的设置,可对读出的波形进行调整。 6模块连接、总体调试及所遇问题的解决办法
在模块都完成了之后就可以对模块进行连接了,在连接模块的时候可以分为很多步进行,先连接关键性的模块,在调试基本成功之后在连接其他功能模块。
我们需要将波形的显示、波形的存储和波形的回放放到一个选择结构中,并用一个总开关来控制。当开关扳向上时,可以进行正常的波形显示、参数测量、频域分析等。开关扳向下时,可以进行读取文件的操作。如图12所示。
18
(a)
(b)
图12 虚拟示波器程序框图
图(a) 、(b)为调试后的程序框图,由图中,我们可以发现,该框图由一个主VI和若干个子VI组成,使虚拟示波器是分层次和模块化的,即可以把主VI当作顶层程序,将其它子VI当作自身的子程序,这样用户就可以把一个复杂的应用任务分解为一系列的、多层次的子任务,并为每一个子任务设置一个子虚拟仪器(简称“子VI”),通过图标连接器供其上层调用。
19
因篇幅问题不能全部显示,请点此查看更多更全内容