Labview初学者常见问题 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1、Labview如何实现由一个事件引发其他三个事件的顺序发生,且这三次事件间的时间间隔为50ms?回答:可以引用状态机来设计程序,将触发事件作为状态机的状态控制参数,后面发生的三个事件依次作为状态机的三个顺序状态,设置状态切换时间间隔为500ms.
2、labview在主程序通过局部变量不能实时看子vi的参数回答:通过局部变量只能得到子vi运行完之后的结果。可以用control reference 方式,在子vi加一个属性节点引出一个reference。主程序里把需要显示的控件创建一个reference连到子vi的reference输入端口。另外也可以用vi server方式实现。
3、如何在一个graph或chart显示多个Y轴刻度,并且使每个通道对应每个刻度?回答:在前面板上,右键点击刻度,然后选择duplicate scales,就会创建一个新的刻度。然后再点击右键,选择swap sides,就可以让刻度显示在图的左边或右边。然后右键右上角的plot legend上的曲线plot,选择Y scales然后就可以选择与该曲线相应的Y轴SCALES。多条曲线对应多条Y轴的刻度时,是同样的方法。
4、如何从labview中打开一个pdf文件?回答:最简单的方法:用system exec.vi实现,在system exec.vi的command line 端口创建一个常量,输入adobe reader 的路径,再加上文件名等几个参数就可以实现上述要求。举例如下:如果要拉开位于c盘的1234.pdf文件可以这样写“C:\Program files\Acrobt 7.0\Acrobat\Acrobat.exe”/t “C:\1234.pdf” “username”其中C:\Program files\Adobe\Acrobt 7.0\Acrobat\Acrobat.exe是Adobe Reader 的安装路径,/t是命令参数,C:\1234.pdf则是要打开的文件名,最后的username是用户的名字
5、采集数据在graph如何显示系统时间,并且随着采集点数时间不断刷新。回答:有两种方式,一种是采集波形数据然后输出给graph,在graph上选择显示绝对时间,并且去掉ignore time stamp选项。第二种是采集数据文件,然后用获取时间的vi获取当前时间,然后把采集的数据文件和当前vibuild成波形文件再给graph.graph的设置和前种方法一样。这样就可以显示出时间虽采集点不断刷新的效果。
6、report generation里的standard和HTML究竟是什么意思?回答:STANDARD和HTML是LV本身就有的报表类型,无须安装其他的文本编辑工具就可以打印。STANDARD是LV内建的一种报表格式,可以打印但不能存盘,也就是说我们的报表没有电子版。HTML是网页格式的文件,可以用浏览器打开,其实相当于LV帮我们编写HTML代码,这种格式是不能直接打印的,需要先指定网页路径才能打印出来。还要注意,如果是一段程序是用了report generation的vi,在打包成exe文件或llb文件时,需要加入两个动态vi:_excel dynamic vi和 _word dynamic vi。如果生成的报表采样了模板需要自支持文件里添加相应模板。
7、如果要将channel名字,测的是什么信号,采样率是多少这样的数据和采得数据一起存入文件应该用什么方式比较好?回答:推荐一种以前基本被忽略的文件结构——TDM FILE格式来存,这种文件格式基于二进制的方式,而在存储过程中可以加入很多的外部信息进去,例如free text;free interger等等,所以存这样的应用还是挺合适的。
8、vi property 下execution中选项reetrant execution,选用和不选用有什么区别?回答:如果主程序执行同一个子vi,是同时两次或多次执行时,在不选用时,就会依次使用这个子vi;如果选用,则这个子vi就会并行执行,提高程序运行速度。
9、为什么把LABVIEW程序框图解密以后,就可以一直打开程序框图,如何才能实现每次打开vi都是加密的?回答:如果在LABVIEW解开程序的框图的密码,关闭以后该程序,不退出labview,这个程序如果再次被打开会一直可以查看他的框图程序,原因是lv没有关闭,所以密码会一直存在内存当中,所以再次打开会依然看到程序框图,如果要实现每次打开都是加密的,只要在一次打开后,把labview也关掉,下次再想要查看程序框图就需要输入密码。
10、使用vi server技术,如何实现从一个vi打开运行并读取另一个vi中控件的值?回答:1) 调用Open vi reference.vi ,输入子VI的路径到其VI PATH的端口;2) 调用Ivoke Node.vi并设为Open FP;3) 调用Ivoke Node.vi并设为Run VI;4) 调用Ivoke Node.vi并设为Get control Value[Variant];对Control Name端口填入子VI循环的停止按钮控件名称;Get Control Value [Variant]输入端的值通过Variant To Data .vi设为控件相对应的控件类型后,输出到前面板,这就可实现取VI控件的值;5) 最后调用Close Reference.vi关闭VI Server。
11、连续采集程序分成配置task状态和采集状态两大部分。在配置状态中得配置出有效的task。根据需要在适当的时候进入采集状态。在采集状态中使用start task 和read两个 vi并且循环执行。当程序开始后立刻报错。回答:因为采集状态中使用start task和 read 两个vi并且循环执行,当采集已经开始后再使用start task就会重复开始相同的资源,导致资源冲突产生错误。建议start部分单独作为一个状态,在循环执行的状态中只使用read.vi。
12、LV7.1在前面板突然找不到Scrollbar了,现在想看或者操作屏幕之外的控件显示件非常麻烦,怎么能够找到Scrollbar?回答:在File\VI Property\Window Appearance\Customize里有Show scrollbar的选项。
13、LV7.1如何实现将Chart的时间坐标与计算机系统时间一致?回答:Chart属性Format And Precision选Absolute Time,显示方式改System Time Format 和System Data Format。程序框图里Get Data/Time In Seconds获取当前时间,转换为双精度浮点型后输入到Waveform Chart的属性节点Xscale. Offset。属性节点Xscale. Format设为模式7。
14、LV7.1如何设计时间输出格式为小时:分:秒.毫秒?回答:用Get Data/Time In Seconds用来获得当前时间,另一个是Format Data/Time String函数,这个函数用来定义输出时间的格式,再time format string端口上输入字符串%H:%M:%S%.3u,然后time stamp连接Get Data/Time In Seconds的时间输出即可。关于时间格式的定义可以在help里看到。
15、为什么用子程序调用时pop up前面板,前面板总是自主程序后面?回答:在window appearance里面选择default floating 和modal这三项,将主程序的选项设在较低的优先级而子程序设得高一点应该可以了。
16、如何读出excel里的数据来作分析?回答:使用Excel Get Data.vi并在参数data type上使用二维字符数组可把Excel内数据以字符串的方式读出。
17、如何对Excel文件作数据续存?回答:使用Excel Get Last Row.vi先将Excel内已有数据的最后一行的行数得出,再于该行开始续存数据。
18、如何将文件保存为Excel格式1) 用ActiveX技术,将LV作为一个ActiveX服务器。可以参考National Instruments\Labview 7.1\examples\apps\freqresp.llb VI库里面的Frequency Response.vi例子程序。2)使用Report Generation工具包,它屏蔽了底层的ActiveX,使用比较简单,不过需要购买。3)保存为文本方式,后缀为.xls,这样子也可以用Excel打开,不过不能用Excel修改保存,要不然会自动修改为Excel文档,以后也不能用LV对其进行操作。
19、如何在table中既显示小数又显示整数回答:table中显示的是字符串,显示小数还是整数是在转换成字符串而未放入table之前的过程中完成的,因此可以将整数小数分别转换成字符串后再合并输出到table中即可。
20、如何制作一个边框是透明的string控件回答:选择一个classic simple string控件,使用工具模板的染色工具,在弹出的对话框中选择右上角“T”;一样的transparent,然后给这个控件染色就可以了。
21、循环采集并对采集的结果判断,前面板放置一个布尔报警灯,只保存报警的数据,并可回放,怎么实现?回答:存储vi外加一个case结构,并以布尔报警灯作为判断,如果为真值,存储,为false,不存。回放有两种形式,即:可以把试验数据存储,然后回调。也可以把graph存为图片。
22、怎样把While loop的循环次数i写入Table的行头ColHdrs[]呢?回答:创建Table的属性节点,属性ColHdrVis=T显示行头,ColHdrs[]连接一个字符串数组,需要将循环次数i加1,然后通过Number To Fractional String转化为字符类型,精度为0。添加移位寄存器,赋初值为空字符串数组,build array上端输入接移位寄存器,下端接数字,右端接ColHdrs[]和移位寄存器另外一端。
23、串口程序打包安装到一台没有LV环境的机器下,串口不可用,为什么?回答:LV7.1的版本,在Application Builder中Installer页面选择:Advanced/Serial Port Support。
24、使用CLF节点调用DLL中的函数,如果原函数中指定的数据类型为结构,那么在CLF配置过程中该如何指定数据类型?回答:可以选择数据类型(TYPE)为Adapt To Type,然后在输出或输入端口连接一个Cluster,这个Cluster的定义和原函数中结构的定义一样。选择Adapt To Type后,连接到端口的数据类型是什么,与函数接口的数据类型就是什么。
25、在子vi运行过程中,如何将数据实时传递到调用它的主vi中,而不是等待子VI运行结束后才在主VI中获得子Vi的输出数据?回答:使用带控制参量的属性节点可以实现在子VI中修改主VI属性的目的,由于控件的值(Value)也是控件的属性之一,因此可以使用控制参量是新以上要求。在子VI中,使用带有控制参量的属性节点,将要传递到主VI的数据写入这个属性(Value)中,将控制参量要设置为Control,并且在子VI的连接器中进行定义;在主VI中,为接收子VIshuju的控件建立一个控制参量,将这个控制参量连接到子VI,即可达到在主VI中实时获取子VI数据的要求。 其实以上这段话,我自己也不是很明白的,什么叫带控制参量的属性节点。这两天看了下下,发现VI SERVER的QUEUE是可以实现从SUBVI实时传递数据到MAINVI的。 |
虚拟仪器的原理及发展
摘要 虚拟仪器是一种新型的测试仪器,由于其硬件结构简单,主要依靠软件来实现各种测试功能,使用起来更加方便、功能更加强大,所以应用越来越广泛。
详细描述了虚拟仪器的发展过程、结构原理、性能特点,并阐述了虚拟仪器在各领域中的广泛应用。
0、引言
电子测试仪器是电子行业的基础,它在电子行业中长期占据着十分重要的地位,它是一个时代的电子行业发展水平的标志,并随着科学技术的发展而不断地更新变化着。传统的测试仪器由于功能固定,研制生产周期长等缺点,越来越不能满足信息时代的要求。这就给一种新型的测量仪器——虚拟仪器提供了极大的发展空间,由于其硬件结构简单,以软件为主实现各种功能,且随计算机的发展不断提高其性能,具有很强的适应性,所以越来越引起世人的高度关注。本文就虚拟仪器的产生、发展过程、结构原理、性能特点及应用等方面进行详细的介绍,使读者对虚拟仪器有更深入地了解。
1、虚拟仪器的发展
主要利用PC技术,只是添加A/D及D/A变换等少许硬件和以软件为主的仪器称为虚拟仪器。虚拟仪器通过应用程序将通用计算机与功能化硬件结合起来,用户可通过友好的图形界面来操作计算机,就像在操作自己定义、自己设计的一台仪器一样,从而完成对被测试量的采集、分析、判断、显示、数据储存等。它是在 PC技术的基础上发展起来的,能在数据导入磁盘的同时,实时地进行复杂的分析。具有高效的性能、强大的扩展功能、节约开发时间,以及完美的集成性能等技术优势。
早在八十年代初,就有人以个人计算机为基础,在微机内部增加一些插件或外附插件箱,将各种测量电路插件接于PC内部总线,加上某些软件来实现传统仪器的功能,这种仪器称为PC仪器或个人仪器。因为计算机系统的硬软件资源可代替一般自动测试系统和智能仪表中的微处理器、存储器、接口电路和显示器,因而减少了仪器的许多硬件,降低了仪器成本,而且无需对每一种新仪表都从头开始设计,所以该方案一经提出就在仪表界引起极大的轰动。
随着VXI(开放式测量系统)总线系统问世以及PC机的结构的变化,不断推动了虚拟仪表发展。VXI总线标准是一种全开放型卡式仪表标准,具有灵活适用、性能先进、高速运行、小型便携的特点,适用于模块化设计仪表。PC机微处理器CPU速度不断提高、采用流水线、RISC结构,大大地提高了测试系统的数值处理能力。近年来,由于计算机软硬件技术资源的极大丰富,数字信号处理技术,图形化界面技术和自动生成程序等技术的提高,使虚拟仪器的进一步发展有了雄厚的技术基础。
2、虚拟仪器的结构原理
虚拟仪器是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。灵活高效的软件能创建完全自定义的用户界面,模块化的硬件能方便地提供全方位的系统集成,标准的软硬件平台能满足对同步和定时应用的需求。虚拟仪器的本质是利用现有的计算机,加上特殊设计的仪器硬件和专用软件形成既有普通仪器的基本功能又有一般仪器所没有的特殊功能的高档低价的新型仪器。它是利用计算机强大的图形环境和在线帮助功能,建立虚拟仪器面板,以代替传统仪器完成对仪器的控制、数据分析和显示功能。虚拟仪器的输入输出由数据采集卡、GPIB卡等硬件模块完成,仪器的功能主要由软件构成。虚拟仪器系统框图如图1所示。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
图1 虚拟仪器系统框图
一套完整的虚拟仪器系统的结构一般来说分为四层:
1)测试管理层
用户使用虚拟仪器生产厂商开发的应用程序,组成自己的一套测试仪器。这是虚拟仪器的优点之一,它可以方便地使用户根据自己的需要,自己的风格建立自己的测试仪器。
2)应用(程序)开发层
由生产商提供的软件开发工具,如NI(NATIONAL INSTRUMENTS)公司的LabVIEW软件,LabWindows/CVI软件。用户可以用这类软件进行深层开发,以扩展仪器原有的功能。
3)仪器驱动层
由生产商开发,针对不同类型的仪器有不同的驱动程序接口。为给用户提供方便、易用的仪器驱动程序,泰克公司、惠普公司和美商国家仪器公司等35家国际上最大的仪器公司成立了VXI plug & play系统联盟,并于推出VISA(Virtu-al Instrument Software Architecture)标准。
4)I/O总线驱动层
由生产商开发,用于将不同类型的实际仪器通过相同标准的总线连接起来形成一套完整的测试系统,如得到广泛应用的VXI(开放式测量系统)总线系统。
3、虚拟仪器的性能特点
虚拟仪器彻底改变了传统仪器由生产厂家定义功能的模式,而是在少量附加硬件的基础上,由用户定义仪器功能。因为它的运行主要依赖软件,所以修改或增加功能、改善性能都非常灵活,也便于利用PC的软硬件资源和直接使用PC的外设和网络功能。虚拟仪器不但造价低,而且通过修改软件可增加它的适应性,进而延长它的生命周期,是一种具有很好发展前景的仪器。与传统仪器相比,虚拟仪器具有高效、开放、易用灵活、功能强大、性价比高、可操作性好等明显优点,具体表现为:
1)智能化程度高,处理能力强
虚拟仪器的处理能力和智能化程度主要取决于仪器软件水平。用户完全可以根据实际应用需求,将先进的信号处理算法、人工智能技术和专家系统应用于仪器设计与集成,从而将智能仪器水平提高到一个新的层次。
2)应用性强,系统费用低
应用虚拟仪器思想,用相同的基本硬件可构造多种不同功能的测试分析仪器,如同一个高速数字采样器,可设计出数字示波器、逻辑分析仪、计数器等多种仪器。这样形成的测试仪器系统功能更灵活、更高效、更开放、系统费用更低。通过与计算机网络连接,还可实现虚拟仪器的分布式共享,更好地发挥仪器的使用价值。
3)操作性强,易用灵活
虚拟仪器面板可由用户定义,针对不同应用可以设计不同的操作显示界面。使用计算机的多媒体处理能力可以使仪器操作变得更加直观、简便、易于理解,测量结果可以直接进入数据库系统或通过网络发送。测量完后还可打印、显示所需的报表或曲线。这些都使得仪器的可操作性大大提高而且易用、灵活。
4、虚拟仪器的应用
虚拟仪器的功能和性能已被不断地提高,如今在许多应用中它已成为传统仪器的主要替代方式。随着PC、半导体和软件功能的进一步更新,未来虚拟仪器技术的发展将为测试系统的设计提供一个极佳的模式,并且在测量和控制方面都有无以伦比的强大功能和灵活性。可广泛应用于电子测量、振动分析、声学分析、故障诊断、航天航空、军事工程、电力工程、机械工程、建筑工程、铁路交通、地质勘探、生物医疗、教学及科研等诸多方面。
虚拟仪器的各种优点让用户可以放心地舍弃旧的传统测量设备,接受更新型、以计算机为基础的虚拟仪器系统。由于计算机的性能价格比不断改进,使虚拟仪器的价格更为大众化,用户不必再受限于传统仪器的使用限制和昂贵的价格,进一步降低了使用成本,减少了系统的开发费用和系统的维护费用。此外,新型笔记本电脑又把虚拟仪器的便携性和强大功能推向一个新的水平。所有这些必将加快虚拟仪器的发展,使它的功能和应用领域不断增强和扩大。
文章评论(0条评论)
登录后参与讨论