1 引 言
在电子类课程中,实验是重要的教学手段之一,学生通过实验,可以加深对所学知识的理解。
但是,由于近年来学生人数在不断增加,实验室设备和规模都难以满足需要,学生很少有机会反复熟悉常用仪表的使用,更不能为设计性实验提供条件,这对培养学生的创新精神,加强实践动手能力都十分不利,而且学校的财力也难以支付大量实验室常规设备的更新。虚拟仪器的出现很好的解决了这个问题。所谓虚拟仪器技术,就是用户在通用计算机平台上,根据测试任务的需要,来定义和设计仪器的测试功能。"软件就是仪器"反映了虚拟仪器技术的本质特征。LabVIEW(Laboratory Vir2tual Inst rumentEngineeringWorkbench ,实验室虚拟仪器工程平台) 是美国NI 公司) 推出的一种基于G语言( Graphics Language ,图形化编程语言) 的虚拟仪器软件开发工具,带有大量的内置功能,能够完成仿真、数据采集、仪器控制、测量分析和数据显示等任务,是目前应用最广、发展最快、功能最强的图形化软件开发集成环境。通过优化代码,可将程序的执行速度提高到与编译C 语言程序相当的程度。一个LabVIEW 程序分为3 部分:前面板、框图程序、图标/ 接线端口。前面板用于模拟真实仪器的前面板;框图程序则是利用图形语言对前面板上的控件对象(分为控制量和指示量两种) 进行控制;图标/ 接线端口用于把LabVIEW 程序定义成一个子程序,从而实现模块化编程。
2 电工实验中的滤波器实验
2.1 实验原理
(1) 图1 电路是利用电感L 对高频信号阻抗大、电容C 对高频信号阻抗小的特点,可滤去非正弦输入电压v1 中的高次谐波使电阻R 上的输出电压v2 接近于基波的低通滤波器。
图1 低通滤波器电路
其输入输出函数为:
也可表示为: U2 = U1 ×D ∠θ,其中:
这个函数被做成公式节点作为子VI 嵌入到程序之中, 文件名为:formula. vi , 它位于安装目录下的function 目录中,它的图标如图2 所示,框图程序如图3 所示。
图2 低通滤波器图标
图3 低通滤波器框图程序。
(2) 图4 所示为利用L 和C 并联谐振电路,在理想条件下,对谐振频率下的信号阻抗无限大的特点,滤去频率为谐振频率的谐波信号的谐振滤波器。
图4 谐振滤波器电路
谐振滤波器输入输出函数为:
也可表示为: U2 = U1 + D ∠θ:
其中:
当1/ ωL = ωC 时,电路阻抗无穷大,对指定频率波谐振。对于实验室中的自制电感L = 157mH ,C = 39μF 时对ω = 400Hz 谐振;当C = 4. 423μF时对ω = 1200Hz 谐振。
这个函数被做成公式节点作为子VI 嵌入到程序之中,文件名为:formulaParallel. vi ,它位于安装目录下的function 目录中,它的图标如图5 所示,框图程序如图6 所示。
图5 谐振滤波器图标。
图6 谐振滤波器框图程序
(3) 图7 电路是由一个运算放大器、两个电容和三个电阻构成的有源滤波器,它不用电感元件,并且一般情况下滤波效果好。
图7 有源滤波器电路。
有源滤波器的传递函数为:
衡量滤波器好坏常用幅频特性。滤波器的幅频特性是输出电压和输入电压最大值之比与其频率关系的特性,如图8 所示, f 0 称为中心频率,该幅频特性可以用实验方法测定,即在有源滤波器的输入端加一定幅度的电压信号,改变其频率,测得在不同频率下的输出电压值,就能绘出此有源滤波器的幅频特性曲线。
图8 有源带通滤波器幅频特性曲线。
2.2 实验的实现
(1) 在无滤波器的情况下,如图9 所示。系统产生400Hz 和1200Hz 的两个正弦波的叠加波形。
由于频率很高,Sine WaveForm. vi 的采样点数需要进行相应的设置,本系统采用106 .电阻和电容均乘以相应的倍率再进入运算,在"无源滤波器"和"有源滤波器"状态下,阻容值不连入输入端。而幅值和电阻电容值通过选择,存入"实验数据"簇中。
图9 滤波器实验框图程序
(2) 在选择"低通滤波器"或者"谐振滤波器"时电阻值和电容值都会连接到相应的公式节点输入端上。经过节点运算,或者说经过模拟的滤波器,滤出波形的情况将显示在示波器中。选"低通滤波器"时框图程序如图10 所示,选"谐振滤波器"时框图程序与图10 类似,只是其中的formula. vi 换成了formulaParallel. vi .
图10 低通滤波器实验框图程序
(3) 选择"有源滤波器"的情况略有不同。由于输入波形为400Hz 方波,为很多不同频率的正弦波叠加而成,不能像前两个滤波器那样由公式节点计算,需要引入LabVIEW 提供的数字滤波器。该实验的框图程序如图11 所示。
图11 有源滤波器实验框图程序
如果滤波器的输入输出都是离散的时间信号,那么该滤波器的冲击响应也必然是离散的,称这样的滤波器为数字滤波器。它的功能是把输入序列通过一定的运算编程输出序列, 同时起到滤波的作用。设h ( n) , n = 0 ,1 ,2 ??是滤波器的冲击响应,一个线性时不变因果(所谓因果性是指系统的输出仅取决于过去和现在的输入) 滤波器若对所有的n ≥N ( N 为有限正整数) ,有h ( n) = 0 ,则称其为有限冲击响应滤波器( FIR) ,否则称之为无限冲击响应滤波器( I IR) .LabVIEW 提供的数字滤波器使用方便,只需根据需要设定各参数即可。本系统中使用FIR 滤波器。在对相位信息有要求时,通常使用FIR 滤波器。因为FIR 滤波器的相频相应总是线性的,可以防止时域数据发生畸变。
系统中使用的DigitalFIRFilter. vi 在进行滤波的同时还可以输出幅频响应和相频响应。将该滤波器设定为中心频率为400Hz 的带通滤波器, 当400Hz 方波通过该滤波器时, 可以得到较好的400Hz 正弦波,并且输出幅频特性曲线。由于与前面的实验测量对象不同, 示波器控件的Xscale.
Maximum 属性需要进行相应的调节。
2.3 数据的保存
实验结束以后为了使学生可以将实验数据拷贝带出实验室,数据的保存就成了客户端不可缺少的程序。该框图程序如图12 所示。
图12 数据保存的框图程序
首先,把客户端发给服务器的数据流分解,再重新组合成存入文件的数据格式。该功能由Fil2terCreateRxSt ring. vi 完成,它位于安装目录下的function 目录中,它的图标如图13 所示。
图13 FilterCreateRxString. vi 图标
该子VI 的功能与服务器数据流处理的程序大致相同,只是组成存入文件字符串时有所不同。
它把数据分为两行,第一行为姓名、学号,第二行为实验数据。每个数据项之间加入tab 空格,数据的精度控制为3 位浮点型,每行结束添加回车换行符。这样规定数据格式的好处是最后生成的。 txt文件可以被Excel 以电子表格的形式打开,便于分类管理。生成文件字符串后,通过Write Charac2ters To File. vi 写入文件:滤波器实验数据。 txt .为使该文件的所在目录不随着客户端程序所在位置的改变而无法找到,在保存之前,先指定客户端运行所在的当前目录,也就是说该文件的目录必须是相对目录。取得当前目录功能由GetCurrentDi2rectory. vi 实现,它的框图程序如图14 所示。
图14 取得当前目录的框图程序。
在这个框图程序中使用了LabVIEW 提供的调用库函数节点(Call Library Function Node. vi) ,利用这个节点,可以在LabVIEW 中实现DLL 和API 函数的调用。
实现取得当前目录调用的是kernel32. dll 中的long GetCurrentDirectoryA() ;函数,需要在框图程序中创建调用库函数节点,添加length和buffer 两个参数,使该函数变为long GetCurrentDirectoryA(long length ,CStr buffer) ;.该函数返回值为当前目录的字符串,在其后添加滤波器实验数据。 txt ,并把这个字符串转化为文件路径,这样实验数据的文件的所在目录就变为相对路径了。指定了文件路径和文件内容,把存储类型设为"append",最后通过Write Characters To File. vi将实验数据写入到文件中。
3 结束语
在虚拟仪器的基础上开发虚拟仪器实验室,与传统的实验室相比,虚拟仪器实验室可以大大减少实验设备资金的投入。并且在一台计算机上可以实现诸如示波器、函数发生器、电压表、频谱分析仪等仪器的功能,节约了仪器成本,虚拟仪器基于软件的体系结构大大节省了开发和维护的费用。在大学教学中通过引入基于LabVIEW 虚拟仪器的教学,便于开放式管理,扩大教学规模,也可以促进虚拟仪器在教学、实验和工程领域的推广。