LabVIEW程序界面的布局

LabVIEW程序界面的布局
LabVIEW程序界面的布局

俗话说:“人靠衣装,佛靠金装”,应用程序的界面是提供给使用者的第一印象,直接影响到应用程序的用户体验。因此,有效、合理的界面能够为程序增色不少。LabVIEW 提供了丰富的界面控件供开发者选择,有经验的程序员往往能够利用这些控件做出令人称赞的界面效果。

在《LabVIEW Development Guidelines》(下载)和《The LabVIEW Style book》(介绍)书中都有专门的章节来论述LabVIEW程序界面设计规范和方法。本文主要从应用应用开发的角度描述一些通用的界面设计的方法。

1.1控件的分类和排列

在LabVIEW中,控件通常被笼统地分为控制型控件(Control)和显示型控件(Indicator)。而对某一个具体的应用而言,更需要把Control和Indicator进行细分,使得具有同样功能的控件排放在一起,甚至组成若干个Group组。

LabVIEW提供了一系列工具供程序员排列和分布控件的位置以及调整控件的大小,如图1所示。图(a)是排列对齐工具,其中的图标可以很清楚地知道各个按钮的作用。使用Ctrl+Shift+A可以重复上一次的排列方式。图(b)是位置分布工具,可以快速地分布各个控件之间的位置。图(c)是大小调整工具,可以快速地调整多个不同控件的大小(注意:部分控件的大小是不允许被调整的)。图(d)是组合和叠放次序工具,Group表示把当前选择的控件组合起来形成一个整体;Ungroup与Group相反,表示分散已经整合起来的各个控件;Lock 表示锁定当前选择的控件,此时控件将无法被编辑(包括移动控件的位置,调整控件的大小等);Unlock是解锁指令;Move Forward、Move Backward、Move to Front和Move to Back 表示修改当前选择控件的排放次序。

1 控件排列和分布工具

图2是某个测试界面的控件摆放实例,尽管这些控件都是Indicator控件,但是仍然根据显示功能和内容的不同将控件进行了分类。如果将其中的信息不经过任何分类而直接摆放在一起,则没有很好的条理性和层次性。

2 控件摆放实例

在实际应用中,需要首先将Control和Indicator分开摆放;然后在Control和Indicator 内部对控件按照功能进行分类,不同的类别之间以显著的标志进行区分;最后要合理安排控件的位置和分布,确保整个界面匀称和整洁。

1.2颜色的使用

颜色在程序中的应用有多种功能,除了能够确保界面的丰富和完善之外,还能够重点区分不同控件的功能,强调某些控件的作用和位置。LabVIEW提供了传统的取色工具和着色工具,如图3所示。取色工具是获取LabVIEW开发环境中某个点的颜色值(包括前景色和背景色),并将获取的颜色设置为当前的颜色。着色工具是将当前的颜色值(包括前景色和背景色)设置到某个控件上。

3取色工具和着色工具

【小技巧】

(1)在使用着色工具时,按住Ctrl键可以将工具暂时切换成取色工具,释放Ctrl

键后将返回着色工具。

(2)在使用着色工具时,使用“空格”键可以快速地在前景色和背景色之间切

换。

在着色工具中,右上角的“T”表示透明色,可以使用鼠标单击该图标设定当前的颜色为透明色,如图4所示。此外,LabVIEW还提供了一系列预定义的标准颜色供程序员选择,其中System的第一个颜色是Windows的标准界面颜色。

4 着色工具面板

LabVIEW允许设置一个VI窗口的透明色,在VI Property对话框中选择Windows Appearance页,单击Customize…按钮将弹出如图5所示的对话框。勾选“Windows runs transparently”选项,并设置透明度(0%~100%)。

5 Customize Windows Appearance对话框

1.3LabVIEW控件

在LabVIEW中有3种不同外观的控件可供选择,分别是:Modern、System和Classic。其中Modern控件是NI专门为LabVIEW设计的具有3D效果的控件,它能够确保在不同的操作系统下显示始终是一样的;而System是采用系统控件,它的外观与操作系统有关,不同的操作系统下控件的显示外观有所不同。大多数的程序员似乎更愿意选择System控件,理由是它可以让程序看起来不那么LabVIEW化。但是LabVIEW并不允许程序员任意自定义System控件的外观,这同时也限制了System控件的使用。

LabVIEW允许程序员在现有控件的基础上重新定义控件的外观(Type Def.和Strict Type Def.技术)。图6是使用控件自定义方法重新设计的Tank控件,程序员可以修改控件的各种显示表达方式,但是却不能修改控件的功能(可以使用XControl技术)。

6 Tank控件

1.4插入图片和装饰

程序中必要的图片不仅能够给用户直观的视觉感受,还能够描述程序的作用(当然,不能使用过量的图片)。最简单的插入图片的方式是:将准备好的图片直接拖入到VI的前面板中或者使用Ctrl +C/V粘贴到前面板中。当然,还可以使用Picture控件将图片动态地载入到Picture控件中。

此外,LabVIEW还提供了一种自定义程序背景图的方式。新建一个VI,在VI的垂直滚动条或水平滚动条上右击将弹出如图7所示的快捷菜单。

7 VI前面板快捷菜单

选择Properties,将弹出如图8所示的Pane Properties对话框。在左下方的Background 区域中内置了部分的图片供程序员选择,也可以使用Browse…按钮导入外部自定义的图片。【注意】

如果需要导入不规则的图片,可以将图片的部分背景色设置为透明并保存为png的格式。

8 Pane Properties对话框

在Controls>>Modern>>Decorations和Controls>>System中有一些装饰用控件,如图9所示,程序员可以使用这些装饰控件为应用程序增色。图10就是采用System控件中的System Recessed Frame和System Label控件设计的控件组合。

9 装饰控件选板

10 装饰控件实例

1.5界面分隔和自定义窗口大小

控件的显示效果与监视器是密切相关的,因此在程序设计时需要考虑目标监视器的颜色、分辨率等因素,并明确运行该应用程序所需要的最低硬件要求。在很多的论坛中经常会看到问题:如何才能确保应用程序的界面在更高的分辨率上运行时不会变形?这实际上是一个界面设计问题,而思考如何解决它却是应该从程序设计时就开始,而不是等到程序设计完成后再探讨解决方案。LabVIEW中并没有提供一种有效的方式或工具来解决这个问题,但是我个人认为这与LabVIEW无关,更应该把它归纳为通用的程序设计问题,解决它需要比较良好的界面设计、布局和分配作为前提。

事实上,程序往往会规定一个最低的运行分辨率,在此分辨率以上的显示器上程序界面应该能够正确地被显示出来。而在LabVIEW中,控件往往在高分辨率的显示器上被拉大

或者留有部分的空白,这使得整个界面完全扭曲了程序员最初的设计。

为了能够更加清晰问题的本质和寻求解决问题的方案,有必要对LabVIEW的前面板界面进行确认和分析。如图11所示,一个VI的窗口由几个部分组成:整个红色的区域称为一个窗口(Windows),而蓝色的区域称为一个面板(Panel)。从图中可以看出,窗口中的标题栏、菜单栏和工具栏并不属于面板。

11 VI窗口区域定义

LabVIEW允许程序员将面板(Panel)划分为若干个独立的窗格(Pane)。使用Controls>>Modern>>Containers选板中的Horizontal Splitter Bar和Vertical Splitter Bar可以将VI的面板进行任意的划分,如图12所示。

12 Containers选板

划分之后的VI前面板如图13所示,可以看出图中的Panel(蓝色区域)已经被划分为了5个窗格Pane,每一个绿色区域都被称为一个Pane。当Panel上只有一个Pane时,Panel 与Pane会重合。因此,窗口(Windows)包含整个界面,而1个窗口只有1个面板(Panel),

该面板能够被划分为若干个独立的窗格(Pane)。每个Pane都包含其特有的属性和滚动条,而Pane之间使用Splitter进行分隔。

13 划分之后的VI窗口定义

在Splitter上右击可以设置Splitter的相关属性,如图14所示。Locked属性可以设置Splitter是否被锁定,被锁定的Splitter的位置将无法被移动。与控件类似,LabVIEW提供了3种Splitter样式:Modern、System和Classic。程序员可以使用着色工具设置Modern和Classic Splitter的颜色,使用手型工具调整Splitter的位置以及使用选择工具调整Splitter的大小。

14 Splitter右键快捷菜单

现在再回头看本小节开头提到的分辨率问题,从常识上判断,当程序从低分辨率界面向高分辨率界面转移时,可以有如下的解决方案:

1、界面上的控件变大;

2、界面控件的位置重新分布,以平衡空白位;

3、界面控件的相对位置不动,留出适当的空白位。

在实际操作中,上述的3种方式似乎很难实现以满足界面大小变化带来的自适应问题。比如第3种方式看似简单,却同样存在着疑问:应该在哪里留出空白位,是现有控件的左边?右边?上边?还是下边?打开一些标准的Windows界面程序,不难看出,往往程序中结合使用了上面的3种方式。部分的控件位置和大小不变,留出适当的空白位给其它的控件,如Listbox、Graph、Tree等。因此这类控件显示的信息较多,并且外观单一,改变它们的大小对整个界面的布局不会产生影响。

因此,在程序开始设计的初级阶段就有必要设计界面的大致控件布局和分布,以明确界面在不同分辨率下的调整方式。如果界面控件过多,则可以通过其它的方式进行规避(比如对话框等),确保界面的大小调整不会影响到控件布局的变化。

【应用(下载)】

本节将以一个标准的Windows测试界面为例说明界面设计的方式和步骤。首先,需要根据程序的功能划分VI的Panel,并决定将其分为多少个Pane。图15将界面分为了8个Pane,依次为:工具栏、帮助栏、测试信息栏、波形采集栏、状态栏(登陆人员栏、说明栏、测试内容栏和测试时间栏)。

15 划分Panel

其次,在状态栏的四个区域中分别加入一个String型Indicator,并且勾选Indicator的右键快捷菜单选项:Fit Control to Pane,也就是说当Pane变化的时候String的大小也随之发生改变以确保String控件能够填充整个Pane,如图16所示。

16 在状态栏中加入Indicator控件

单击窗口的最大化按钮,可以看出整个状态栏的高度变大而最右侧子状态栏的宽度变大,如图17所示。

17 最大化之后的状态栏

事实上,当窗口(或者Pane)大小发生变化时往往不希望状态栏的高度发生改变,而只需要改变其中某一个Pane的长度就可以了。单击“还原”按钮,使窗口回到图16所示的状态。在底部的蓝色Splitter上右击,选择快捷菜单中的Splitter Stick Bottom选项,如图18所示。该选项表示在Splitter变化时始终保持底部的相对位置不变。

18 Splitter右键快捷菜单

再次最大化窗口,此时状态栏的高度将保持不变,而最右侧的子状态栏的宽度将变大,如图19所示。

19 最大化之后的状态栏

如果希望在VI窗口改变时,修改第2个子状态栏的宽度,而其它的子状态栏宽度保持不变,应该如何设置呢?单击“还原”按钮,使窗口回到图16所示的状态。如图20所示,单击图中所示的红色Splitter,勾选Splitter Sticks Right,此时再次改变窗口的大小将会改变第2个子状态栏的宽度。

20 设置Splitter属性

同理,设计工具栏如所示。图中使用的按钮都是LabVIEW自带的按钮样式,需要使用Type Def.自定义控件加以替换。程序将工具栏分为2个部分:操作按钮部分和帮助部分。而对比图19可以看出,将最上层的Splitter颜色设置为与Pane的底色一致,这样可以隐藏Splitter。

图21 设置Splitter属性

LabVIEW运行对每一个Pane设置不同的背景色,确保Pane的独立性。如图22所示,在界面上放置不同的控件以丰富界面显示效果,勾选Tab控件和Graph控件的右键快捷属性:Fit Control to Pane。因为Graph控件大小的改变对整个界面的布局没有影响,因此将界面的Splitter属性设置为当Pane变化时修改Graph的大小就可以了。

22 VI前面板

如前所述,对任一个程序而言都有一个最低的分辨率要求,同时也存在着一个最小的界面要求,确保在最小的界面上能够将所有控件完整显示出来。调整整个VI前面板窗口的大小,确保所有的控件均能够完整显示。按下Ctrl+I键打开VI Properties属性面板,选择Windows Size页,如图23所示。单击“Set to Current Panel Size”,单击OK按钮。

23 Windows Size属性页

再次改变VI的前面板大小,可以看出整个界面的布局并不受Panel大小的影响,能够正常显示。因此,界面的分辨率自适应问题的解决并不是一蹴而就的,而是需要在程序界面设计阶段就加以考虑和布局的。

在程序可接受的最低分辨率的显示器上开发;

划分Panel的区域,并且明确各个区域的功能;

尽量至少选择一种大小可伸缩的控件(ListBox、Tab、Multicolumn Listbox、Table、Tree、Chart、Graph、Picture、Sub Panel等);

尽可能地使用Splitter划分不同的区域,对部分Splitter而言可以将其背景色设置为与Pane的背景色一致以隐藏Splitter;

设置Splitter的属性,明确Splitter的变化方式;

设置Pane的属性(颜色、是否显示滚动条等);

设置Panel的最小显示大小;

结合Type Def.和Strict Type Def.控件,完善控件的摆放和显示效果;

将Splitter的Lock属性设置为True。

1.6程序中字体的使用

LabVIEW会自动调用系统中已经安装的字体,因此不同的计算机上运行的LabVIEW 程序会因为安装的字体库不同而不同。图24列出了LabVIEW可以选择的部分字体样式(如颜色、加粗、斜体等),可以使用< Ctrl > + < = >和< Ctrl > + < - >快捷键增加和减小当前选择项的字体大小。

24LabVIEW中的字体

如果字体前面加“@”则表示将文字逆时针旋转90°,图25展示了这两种字体的显示差别。

25 宋体和@宋体

为了避免不同的操作系统给字体显示带来的影响,LabVIEW提供了Application Font、System Font和Dialog Font三种预定义的字体。它们并不表示某一种确定的字体,对不同的操作系统所表示的含义不同,这样可以避免某一种字体缺失导致的应用程序界面无法正确显示的问题。此外,LabVIEW也提供了一种方式来人为地指定三种预定义的字体代表的具体含义。选择菜单栏的Tools>>Options菜单项,选择Fonts页,如图26所示。单击“Font Style…”按钮,可以显式地指定Application Font、System Font和Dialog Font所代表的字体名称和大小。

26 Options_Fonts属性设置

在默认下,LabVIEW会自动设置界面的字体为Application Font、System Font和Dialog Font,因为这可以避免应用程序移植所导致的字体缺失。但是同时也会带来分辨率的问题,因为不同的系统所表示的字体样式和大小都不相同,因此不同分辨率的监视器显示界面的字体时会发生“变形”。

为了解决这二者的矛盾以及带来的显示问题,可以将目标计算机上的Application Font、System Font和Dialog Font字体与开发计算机上的字体保持一致。

1、尽量使用通用的字体显示。如中文使用宋体,英文使用Tahoma,字号使用

13号。

2、确保目标计算机上的LabVIEW Runtime将Application Font、System Font和

Dialog Font字体与开发计算机上的字体所代表的含义保持一致。

第1点需要在程序设计时注意,而第2点可以通过程序自动指定。如前所述,LabVIEW 允许手动指定预定义字体的实际含义,这这些设置被保存在LabVIEW安装目录下的<…\National Instruments\LabVIEW 8.X\LabVIEW.ini>文件中。使用记事本打开LabVIEW.ini 文件,找到如下的三行,如图27所示。也就是说LabVIEW通过这3行来决定Application Font、System Font和Dialog Font字体表示的具体含义。

appFont="Tahoma" 13

dialogFont="Tahoma" 13

systemFont="Tahoma" 13

27 LabVIEW.ini

在生成任意一个exe时,LabVIEW会在exe文件的相同目录中自动生成一个与exe同名的ini文件。只需要在该ini文件中加入上述3行代码,则LabVIEW Runtime会自动调用相应的字体,而不会调用系统的默认字体。例如使用LabVIEW生成一个名为“计算机自动测试系统.exe”的独立应用程序,同时也会在相同目录下生成一个名为“计算机自动测试系统.ini”的文件(如果没有生成,则运行一次“计算机自动测试系统.exe”应用程序)。打开该ini文件,找到“[计算机自动测试系统]”Section文字,如图28所示(如果没有则手动键入)。在“[计算机自动测试系统]”Section下方加入上述3行代码即可。

28 计算机自动测试系统.ini

如果在程序开发中确实需要使用某种特殊的字体,而为了防止目标计算机上没有该字体,需要将所使用的字体同时发布到Installer文件中。在安装时直接将字体拷贝到目标计算机的文件夹中即可。

1.7小结

在大多数情况下,程序员并不是简单地担任着Coding的工作,一个应用程序的设计需要各种各样的人通力协作完成。而对于测试测量工程师而言,需要尽量地完善开发的应用程序,使之无论从界面上、功能上还是底层代码上都充满着“美感”。从这个角度说,程序员更像是一个艺术家,需要将感性和理性逻辑完美地结合起来。

测试测量应用程序在运行时会涉及到对UUT、测试仪器等各种硬件之间的相互通讯,因此其错误处理、逻辑控制等似乎显示更加充满变数而不可控。因此,这更加需要程序员关注细节,完善用户体验,确保应用程序的运行。如对Numeric值需要设置范围、显示精度、显示方式等等,避免用户的误操作。在程序的使用过程中,如果发生了错误而导致程序崩溃或假死,有些程序员会埋怨用户:为什么乱点呢?为什么不按要求有顺序地点击按钮呢?在数据采集过程中,为什么还要单击这个控件呢?这是不正确的,对于这种情况始终是设计者的错误,而与用户无关。设计者在程序设计和撰写的阶段就应该在程序中加入相应的防误操作机制,而不应该将错误归结为用户的不当使用。

labview简介

LabVIEW是一种程序开发环境,类似于C和BASIC开发环境,但LabVIEW与其它计算机语言的显著区别是:其它计算机语言都是采用基于文本的语言产生代码行,而LabVIEW使用图形化编程语言G语言编写程序,产生的程序是框图的形式。像C或BASIC 一样, LabVIEW也是通用的编程系统,有一个可完成任何编程任务的庞大的函数库。LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储等等。LabVIEW也有传统的程序调试工具,如设置断点、以动画形式显示数据及其通过程序(子VI)的结果、单步执行等等,便于程序的调试。 虚拟仪器,简称VI,包括三部分:前面板、框图程序和图标/连接器。程序前面板,如图一所示,用于设置输入量和观察输出量。它模拟真实仪器的前面板。其中,输入量被称为Controls(控件),用户可以通过控件向VI中设置输入参数等;输出量被称为Indicators(指示器),VI通过指示器向用户提示状态或输出数据等。用户还可以使用各种图标,如旋钮、开关、按钮、图表及图形等,使前面板易看易懂。每一个程序前面板都有相应的框图程序与之对应。框图程序,如图二所示,用图形编程语言编写,可以把它理解成传统程序的源代码。框图中的部件可以看成程序节点,如循环控制、事件控制和算术功能等。这些部件都用连线连接,以定义框图内的数据流动方向。图标/接口器件可以让用户把VI程序变成一个对象(VI子程序),然后在其他程序中像子程序一样地调用它。图标表示在其他程序中被调用的子程序,而接线端口则表示图标的输入/输出口,就像子程序的参数端口对应着VI程序前面板控件和指示器的数值。 图一图二 虚拟仪器和传统仪器的差异很大,具有很强的优势。独立的传统仪器,例如示波器和波形发生器,性能强大,但是价格昂贵,且被厂家限定了功能,只能完成一件或几件具体的工作,因此,用户通常都不能够对其加以扩展或自定义其功能。仪器的旋钮和开关、内置电路及用户所能使用的功能对这台仪器来说都是固定的。另外,开发这些仪器还必须要用专门的技术和高成本的元部件,从而使它们身价颇高且很不容易更新。基于PC机的虚拟仪器系统,诞生以来就充分利用了现成即用的PC机所带来的最新科技。这些科技和性能上的优势迅速缩短了独立的传统仪器和PC机之间的距离,包括功能强大的处理器(如Pentium4)、操作系统及微软Windows XP、NET技术和Apple Mac OSx。除了融合诸多功能强大的特性,这些平台还为用户提供了简单的联网工具。此外,传统仪器往往不便随身携带,而虚拟仪器可以在笔记本电脑上运行,充分体现了其便携特性。需要经常变换应用项目和系统要求的工程师和科学家们需要有非常灵活的开发平台以便创建适合自己的解决方案。可以使用虚拟仪器以满足特定的需要,因为有安装在PC 机上的应用软件和一系列可选的插入式硬件,无需更换整套设备,即能完成新系统的开

基于LabVIEW的摄像头视频图像实时采集

基于LabVIEW的摄像头视频图像实时采集 指导老师:李茂奎 小组成员:李化松李雷李成康乐 [摘要] 介绍了USB摄像头视频图像实时采集系统的基本原理及组成。该系统以LABVIEW为核心,通过调用windows平台的OCX控件完成系统的数据采集任务。整个系统结构清晰,构思新颖,具有一定的可操作性。 [关键词] USB摄像头;LabVIEW;视频图像实时采集 一、设计任务 1设计目标 设计一个基于LabVIEW的USB摄像头视频图像实时采集系统 2设计基本要求及发挥 1.能够实时地采集视频,并在电脑上显示出来 2.可以进行录像,拍照 3.美化程序界面,添加同步时间数码管显示功能。 二、方案论证 1.视频采集部分 方案一:采用vb语言编写的ovfw.ocx控件实现视频的实时获取,优点是使用方便,设置简单明了,同步性好,无延迟。缺点是无法实现录像功能。 方案二:采用windows平台的ezvidcap.ocx控件实现视频的实时获取,可以实现录像功能,缺点是设置繁琐,程序复杂。 鉴于此,我们选用了方案二。 https://www.360docs.net/doc/164287999.html,BVIEW程序设计 采用usb接口的摄像头读入数据,并在程序中显示出来。利用控件本身的摄像录像功能实现数据的采集存储。 3.界面美化 增加了数码管样式的时间同步显示功能,同时增加了界面透明度可调旋钮,是界面产生玻璃状的美妙效果。 三、总体方案 1.工作原理: 利用现有的摄像头获取图像,通过调用windows平台的ezvidcap.ocx控件实现图像实时显示采集存储。 2.程序设计 LABVIEW从摄像头读入数据,通过空间调用,使图像在程序界面显示,并进行拍照录像等功能。

利用LabVIEW软件进行控制设计和仿真入门

利用LabVIEW软件进行控制设计和仿真入门 这个章节将集中介绍LabVIEW软件中的控制系统设计的基本特性。我们在这里假定读者们已经熟悉了LabVIEW软件的其它部分。(如果你对LabVIEW软件的其它部分不熟悉,请参考Robert H. Bishop的‘Learning with LabVIEW’)。 每一章的专用信息会包含在那一章的简介中 在我们开始之前,请确保你的计算机上已经安装了可使用的控制设计和仿真工具包。它们不是LabVIEW 基本软件的一部分,而是需要单独购买的。 LabVIEW软件的控制设计工具包 控制设计工具包可以在结构框图的All Functions选板中找到。 下面将简要介绍控制设计选板中每个单独工具的用法。我们将介绍在子选板中出现的函数。如需进一步的描述,请查看LabVIEW软件的帮助文档。 当帮助菜单中的文字帮助窗口被打开时,你可以在相应的文字帮助窗口中看到关于每个函数的描述。 模型创建选板:

这节中的函数用于创建各种类型的模型,例如状态空间模型、传递函数模型和零点/极点/增益模型等。下面将讨论创建状态空间模型和创建传递函数模型函数。 控制设计工具包中的创建状态空间模型 函数的端子如上图所示。如果采样间隔端子没有连接,那么系统被默认为是连续采样。将一个值连到采样间隔端子上会使系统变为离散系统,它使用给定的时间作为采样间隔。状态空间模型的A、B、C、D 矩阵都有对应的端子。一旦LabVIEW软件创建了状态空间模型(其输出端子可用),该模型就可以用于其它函数并且可以转化成其它的形式,在这一节里我们将进行更加深入的讨论。 下面就是创建状态空间模型的一个例子。它的输出端可以连接到控制设计工具包中很多其它函数上,作为它们的输入端。

labview问题集合

Labview初学者常见问题以及解答(上) 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等等,所以存这样的应用还是挺合适的。

基于LABVIEW的数字电压表的设计

学号 XX 虚拟仪器 学生姓名XX 专业班级XX

基于LABVIEW的数字电压表的设计 一、设计目的 1.掌握数字电压表的基本原理和方法。 2.基于LabView设计数字电压表并实现。 二、设计原理 电压是电路中常用的电信号,通过电压测量,利用基本公式可以导出其他的参数。因此,电压测量是其他许多电参数和非电参数量的基础。测量电压相当普及的一种测量仪表就是电压表,但常用的是模拟电压表。模拟电压表根据检波方式的不同。分为峰值电压表、均值电压表和平均值电压表,它们都各自做成独立的仪表。这样,使用模拟电压表进行交流电压测量时,必须根据测量要求选择仪表。另外,多数电压表的表头是按正弦交流有效值刻度的,而测量非正弦波时,必须经过换算才能得到正确的测量结果,从而给实际工作带来不便。 采用虚拟电压表,可将表征交流电压特征的峰值、平均值和有效值集中显示在一块面板上,测量时可根据波形在面板上选择仪表,用户仅通过面板指示值就能对测量结果进行分析比较,大大简化了测量步骤。 三、设计思路 LabVIEw 8.5版本的工程技术比以往任何一个版本都丰富.它采用了英文界面,各个控件的功能一目了然。利用它全新的用户界面对象和功能,能开发出专业化、可完全自定义的前面板。LabVIEW 8.2对数学、信号处理和分析也进行了重大的补充和完善,信号处理分析和数学具有更为全面和强大的库,其中包括500多个函数。所以在LabVIEW 8.5版本下能够更方便地实现虚拟电压表的设计。 该电压表主要用于电路分析和模拟电子技术等实验课的教学和测量仪器,能够让使用者了解和掌握电压的测量和电压表对各种波形的不同响应。因此,虚拟电压表应具备电源开关控制、波形选择,以及显示峰值、有效值和平均值三种结果,且输入信号的大小可调节等功能。所以,用软件虚拟了一个信号发生器。该信号发生器可产生正弦波、方波和三角波,还可以输入公式,产生任意波形。根据需要,可调节面板上的控件来改变信号的频率和幅度等可调参数,然后检测电压表的运行情况。因此,在LabVIEW图形语言环境下设计的虚拟电压表主要分为

LabVIEW

第一章LabVIEW简介 LabVIEW是美国国家仪器公司(National Instruments Co)开发的一种图形化的编程环境。其名称含义为实验室虚拟仪器工作平台(Lab oratory V irtual I nstrument E ngineering W orkbench)。作为一种方便的数据采集和仪器控制开发软件,它可工作于Macintoshe 、Sun SPARC工作站、HP9000/700系列工作站以及PC机等各种机型,可运行于Windows 3.1、Windows9x/2000、Windows NT、UNIX等多系统下,是一种灵活有效的仪器控制和数据分析软件系统。 LabVIEW程序使用虚拟仪器(V irtual I nstrument,缩写为VI)的概念。它是指一台计算机和连接外部的端口(计算机的COM口,LPT口或内插板)在软件控制下可完全模拟替代传统的仪器。因VI功能完全是由软件定义,故在硬件系统不变的情况下,用户可通过软件开发自行改变或扩充仪器的功能,实现自己的特殊要求,或用一套硬件系统实现多种仪器的功能,从而使虚拟仪器VI不但比传统仪器更灵活有效,而且也更经济。VI的核心就是LabVIEW程序,所以在LabVIEW中,所有程序均称之为VI程序,不管它是否通过端口和外界进行通讯。每个VI程序均可作为一个功能模块被重复使用,因而使用LabVIEW来开发和扩展程序极为方便。 LabVIEW编程语言同常规的程序语言不同,它采用更易使用和理解的图形化程序语言-G语言(Graphical programming language)。G语言使用图标代替常规的一条或一组语句来实现一个功能,通过各功能图标间的逻辑连接实现程序功能。 其编程过程不是书写一行行语句,而是连接一个个代表一定功能的图标,其程序编制过程简单,不涉及复杂功能实现的算法,易于掌握。同时,因为其编程过程基于可重复使用的功能模块,故可方便地使用由专业人员编制提供的专业级别的功能模块,开发出专业水平的程序。所以,LabVIEW在世界范围内的众多领域如航空、航天、通信、汽车、半导体、化学和生物医学等得到了广泛的应用,从简单的仪器控制、数据采集到复杂的测试和数据处理,从工厂、科研院所到大学里的实验室,到处都可以发现LabVIEW的应用。在西方国家(如美国)的许多大学已将LabVIEW作为本科的教学内容,成为工程师素质培养的一个方面。由于LabVIEW虚拟仪器的强大功能,使得使用一套硬件系统就可进行多种不同要求的研究,故而可以用更小的消耗进行更多的研究,尤其适合在我国资金较少的科研单位用于研究工作。 LabVIEW6.-中,包含许多专家编写的VI供用户使用。在数据采集方面有许多采集卡(DAQ)的支持模块,使采集程序的编制不必涉及低层控制;有各种数字、模拟信号I/O模块;有对GPIB(General Purpose Interface Bus,IEEE488标准)、VXI(VME bus eXtensions for Instrumentation ,扩展IEEE1014标准)和Serial端口的支持和控制等VI。在数据处理控制方面有各种数字信号处理和产生、频谱分析、滤波、平滑窗口、概率统计等VI。 本LabVIEW简介部分主要介绍LabVIEW语言的基础知识,包括界面、菜单、工具、模板、器件、函数等,通过这一部分的学习,读者即可使用LabVIEW编程并在实际工作中进行应用。LabVIEW进阶部分将深入探讨LabVIEW的编程环境、编程技巧以及优化策略等和更多的功能,考虑到篇幅限制,本书不与介绍,感兴趣的同学可参看下列参考书继续学习,

在LabVIEW中使用千兆网相机采集图像1.2

在LabVIEW中使用千兆网相机采集图像版本控制

1目的 本手册主要目的为方便使用者基于LabVIEW开发平台,快速上手使用满足GigE Vision 的相机采集图像,为下一步的图像处理打下基础。本文档用于说明PC机第一次和相机相连的设置。 2硬件 电脑一台:带千兆网卡,一般在网卡名称中会有GBE类型的缩写,网卡支持巨帧(Jumbo Packpet),如下面右图所示。如果想要保证速度,最好使用Intel的千兆网卡。 GigE Vision相机,也称千兆网相机,主要优势为速度快,电缆够长,且能够POE供电。确保相机和电脑之间通过千兆网线相连,之间经过的网线接头、交换机越少越好。相机端最好用带螺丝的网线接头,确保连接在物理上可靠。如果非要接交换机,要考虑背板带宽。 3软件 在电脑上安装有LabVIEW和VDM(Vision Development Module)、VAS(Vision Acquisition Software),一般这三个软件版本需要一致。前者是开发平台,中间是视觉处理模块,后者是相机驱动。

1.关闭windows自带防火墙、360防火墙、杀毒一类软件。 2.打开网卡的巨帧功能。右键我的电脑》管理》设备管理器》网络适配器》选择网卡》右 键》属性》高级》属性》巨型帧/极大帧,更改值为最大,一般为9KB MTU。

3.如果网卡不支持巨帧,可以尝试调小网络包的大小。在Max中,点击相机,在获取属 性中,更改包大小packetsize,可以尝试更改为2000或者1000. 4.使用相机自带的软件先进行测试,去相机供应商的网站下载合适的相机驱动,注意电脑 操作系统的位数,32位下载X86,64位下载64位。 a)这里使用Basler的软件pylon IP Configurator。把相机的IP地址设至为与电脑同一 IP段。即IP地址前三位一样。 b)采集连续图像,在pylon Viewer中,点击一个相机进行连接。 c)方框为连接、断开相机,橙色方框为采集、连续采集、停止按钮 d)如果画面太黑或太白,将紫色方框内的用户等级改成专家(Guru),然后选择相机 属性(Basler acA1300-30gm*****)下面的Acquisition Controls》Exposure Auto,改 成自动,然后连续采集几张照片,就可以将曝光时间调整好。

基于LABVIEW的用户登录界面设计

基于LABVIEW的用户登录界面设计 Labview具有功能强大的数学工具,用在传感器设计上可大大降低软件的设计负担。对于一个实际的传感器使用,其用户数量有限,其登陆界面设计可以完全借助其数组函数与数据记录文件完成,而不就是数据库,这样既减轻了系统的重量,也减轻了系统的负荷。没有牵涉第三方的软件,系统的稳定性也大大提高。本文设计了一个简单的用户登录系统的2个模块,希望能对读者有所启发。 1)用户初始文件的建立 Labview的数据记录文件具有较强的功能,并且不能用写字本打开,因此作为一般的保密级别可以用来存储初程序运行环境数据,本文用来存储登陆系统的用户数据。 本程序采用两个套嵌while循环,用于批量产生用户名单,内While

采用三个文本输入框,分别输入用户姓名、用户初始密码、用户权限等内容,并用系统时间空间获取用户建立时间,通过数组创建函数创建成一维数组,点击确定键完成一个用户的建立,可以继续进行下一个用户的建立(当然您也可以只建立一个超级用户,在超级用户登陆后继续建立用户名单),用户建立完毕点击停止按钮完成用户名单建立,形成一个二维数组,由于点击停止键时,最后一个用户名单会重复建立,故采用数组删除函数去掉最后一行,然后创建一个文件,用数据记录函数将该名单存储在您希望的文件夹内(本例放在桌面上,面板上的数组就是为验证程序而建立的,可以去掉)。 2)登陆界面 登陆面板实际上只有两个文本输入控件:用户名与密码。程序首先将记录文件读入内存,让后将第一列(索引0列)的所有用户列出来,用一维数组搜索函数搜索该用户密码所在的行号,再用该行号将该用户的信息从记录文件索引出来。由于密码放在第二列(1列),直接从用户的记录信息索引第第二列(索引1列)取出该用户密码),直接用文本比较“等于”函数进行比较用户输入的密码就是否与其预设的密码一致。 至于修改用户名单、用户权限等内容可用“数组的删除、插入”

LabVIEW程序实例

1、Build a VI that generate a random number between zero and ten,and then divides it by an input number and diaplays the result on the front panel.If the input number is zero,the VI lights an LED to flag a “divide by zero”error 2、3-1,P43 3、Try create a VI to compute n! 4、求500个随机数中的最大值和最小值。 5、3-3,P44 6、3-4,P46 7、3-5,P49 If implement this equation using regular G arithmetic functions,the block diagram looks like the one in the following illustration.Please imolement the same equation using a Formula Node,and add event to control when the VI executes.

8、设计一个简单信号源,能选择正弦波、三角波和方波并用Waveform Graphe显示。 9、4-1,P68 10、4-5,P72 11、(1)显示一个二维数组的行数和列数(2)查找一个二维数组中最大值,以及最大值在数组中的位置。

12、5-2,P89 13、6-1,P100 14、6-3,P103 15、7-4,P120 16、7-5,P121 17、双边傅里叶

labview学习感受

学习labview有快半年了,做个总结。回顾一下自己的摸索过程。 幸运的是有个项目用到Labview,因此边学边用,由于有前一项目的经验作参考,可以说是在模仿中学习。从学习到使用给我最大感受是labview编程容易上手,帮助文档方便,就是太贵了,比较少企业会使用,特别是小企业。虽然这样,还是很推崇学习labview的。废话少说,转入正题。 其实总结自己的摸索过程也等于是在做项目总结。首先从使用的模块做总结: 1、毫无疑问的串口通信; 2、与数据采集相对应的TDMS数据存储模块; 3、报表输出(word,excel,html); 4、连续的波形显示以及从TDMS里读取显示; 5、待解决的xcontrol控件; 模块分析:1、对于串口通信:主要是要设置成有数据即读取,而不能等到接收缓冲区满时再读取。2、TDMS数据存储,关键点是数据量大的时候如何压缩存储,以及利用TDMS本身的属性设置(可以参见TDMS属性设置帮助),减小存储文件的大小。否则如果数据发送速率快的话,文件大小是很可观的,压缩数据的方式有很多种,我采用的是读取采样间隔长度的数据,提取最大最小值的方式。具体如下: 1) 中间数组存储采样间隔长度的数据;2) 提取中间数组的最大最小值;3)删除中间数组的采样间隔长度;4)将删除后剩余的数组重新赋值给中间数组,给下一次使用。3、报表输出比较简单,la bview已经将要用到的程序封装成一个个VI,只需要调用这些VI,

拼凑成你需要的报表模板形式即可。这一块参考的是方慧敏写的报表输出demo程序。4、 最近开始了上下位机的联调,涉及到了数据采集与数据处理,数据保存,数据导出四者并行执行最需关注的问题,数据同步的问题。全部数据传递都用全局变量需要在数据采集不到数据的时候让全局变量 输出空数据,这种方法显得有点麻烦,而且是多处对全局变量写。有可能会发生竞争。于是翻看labview相关书籍,关于同步技术方面的,其中队列和通知都是很好的方法,采用通知技术可以很好的解决这类问题。

致LabVIEW初学者的二十条忠告

致LabVIEW初学者的二十条忠告 1. LabVIEW是门程序设计语言,不是画图工具! 2. 不要以为LabVIEW很简单,设计个庞大工程难度不亚于C++! 3. 语言本身永远只是招式,请注意修炼内功:数据结构、算法、软件工程、数字电路等! 4. 多读书、读好书:《LabVIEW For Everyone》、《LabVIEW-Advanced Programming Techniques》! 5. 学习程序设计只有一种方法:读代码、写代码、读代码、写代码! 6. 不要以为读完一遍《LabVIEW For Everyone》你能有多大收获,请再继续读两遍! 7. 研读书上的每一个例子,他们往往是程序中的经典! 8. 对齐你的每一个控件和函数,多用弹出菜单-整理连线,不要让程序看起来乱七八糟! 9. 不要以为读完几本书你就能成高手,能力是在做项目过程中日积月累出来的!10. 看到一个LabVIEW程序,尽可能想象它在内存中是怎么执行的!11. 请重视DLL调用,并不是每个老板都舍得用Ni的产品!12. 多看LabVIEW User Manual,那里才是权威!13. 尽量减少创建全局变量,它会占用你大量内存和时间!14. 尽量将不必要的元素放在循环外!15. 尽量避免在循环内使用Build Array!16. 当速度及其重要时,尽量减少图表或图形的使用!17. 用Initialize给你的程序命名,不要用Chushihua !18. 记住:高手是长时间修炼形成的,不要指望一蹴而就!19. 拒绝浮躁,耐心看完书上每一节的内容!20. 编程是一种艺术,追求艺术极限!注:LabVIEW For Everyone译名《LabVIEW大学实用教程》电子工业出版社!补充:还有一本书,早看早好《The LabVIEW Style》,论坛上有下载:vihome/bbs/vie ... 6287&extra=page=1,描述LabVIEW编程风格的,权威类似C语言这些中的匈牙利命名法,听说有些大公司就因为LabVIEW在代码风格上很难统一,后期维护和代码重用很困难而没有使用LabVIEW的,这 本书在很大程序上可以弥补这个缺点。在自带的帮助中也有一些编程风格的说

中大型LABVIEW软件三层设计架构

通常一个VI若包含三、四十个以上的subVI(不包含LabVIEW本身在Functions中提供的VI)时,就可算是一个中大型的软件计划(software project)了。虽然比起软件工程中的一些作业环境软件(如Windows系列)或大型应用软件(如Word、Excel)等仍算是小工程,但其复杂性亦在一定程度之上,若没有事先想好在撰写程序时的一些规划与方法,想要完成这类中大型的软件绝对不是一件简单的事。尤其这类软件通常不是由一个人,而是由一个团队所共同完成的,因此整个软件的结构,就要能让团队中的每一成员都能清楚的了解,而且要够简单,才算是好的软件结构。以下将参考由Rick Bitter等人所着”LabVIEW Advanced Programming Techniques”,中之第4章的部分内容,介绍所谓软件计划中的三层式结构(the Three-Tiered Structure)的概念及其优点。 需要软件结构的主要原因,是当软件人员发展软件到某一阶段时,若没有计划或无意的创造了许多subVI,但各subVI之间有许多部分其实是重复撰写的;或各VI相互间呼叫时没有一定的纪律,使得在VI Hierarchy中所看到的各VI间的联机是错综复杂,像个盘丝洞一般,这将可能会使多人发展的软件计划增加所耗费的时间和可能出错的机会、减低程序的效率,以及增加debugging时的困难。为了改善上述的情形,所以要提倡三层式结构的概念。 三层式结构由上而下依次为:Main Level、Test Level和Driver Level,这种结构是由经验中得来的,在多人发展的软件计划中显得简单明了,当大家都能遵照这个结构来写程序时,这种结构就可以充分显现出它的优点。那这三个阶层到底如何区别呢?以通俗的比喻来说,假设我们如果要组织一个篮球队参加全国比赛,每个球员要练习基本动作及体能,如何跑、如何跳、手脚该如何放置才是正确位置等,这就相当于系统中Driver Level所做的事情;接下来,将各球员组合练习某一套防守或进攻的战术,如二三区域联防、人盯人防守,每个人该在什么位置才能正确接应等,则像是T est Level中一项项的test了;而最后比赛时,场上的战略运用,包括何时要用什么战术组合、如何更换球员、何时喊暂停、终场前是不是要故意犯规或采拖延战术等等,对照过来,就像是在Main Level中,如何将T est Level中各test 做最有效能的整合与排列组合等的工作。 简单来说,Driver Level包含了程序与所有仪器、组件、马达或其它应用软件的沟通、控制等较低阶的事情,使其可完成某一项基本的动作,例如初始化、马达走到home位置、雷射以设定的能量及频率发射光束???等。可注意到我们在这边所说的driver,并不像一般在别处所称驱动程序的那种driver那么低阶,真正最低阶的工作还是要有现成的VI来帮忙才行;在Test Level中,则是如何连接各个Driver VI的基本动作,使可做完出一套连续、有意义的流程,来执行某项测试,例如让手臂由A点走到B点,下降夹取一个螺丝,再走至C点装到某面板上,然后回到A点等待,类似这样控制一个流程的进行,便是Test VI的工作内容;Main Level则包含了使用者接口(User Interface)或称人机接口(Man-Machine Interface) ,目的是整合各项测试和例外处理(Exception Handling)等,将它们以适当的顺序及流程组合,很容易地让使用者操作。 当一个软件计划严格的遵照上述的三层结构来撰写时,最大的优点是可使程序代码的再使用(code reuse)达到最大化,在不同的T est VI中,可重复使用相同的Driver VI;而在不同程序的Main Level中,又可重复使用相同的T est VI,这将使得程序维护或修改的时间与精力大幅减少;同时当我们已有一个程序的样板(template)后,可增加软件版本更新的速度。另一个很重要的好处是,当我们在撰写某一个level中的程序时,并不需要关心在另一个level中有什么其它的程序是如何执行的,而只要专注在自己的这个level的程序上就可以了,这使得由团队来共同完成一个大型计划的工作变得容易许多。 以下将依Driver Level、Test Level、Main Level的顺序,来介绍在各level写程序时的原

基于虚拟仪器的图像采集处理及仪器控制

第32卷增刊2006年8月光学技术 O PT I C A L T E C H N I Q U E V01.32Sup pl. A u gust2006 文章编号:1002—1582(2006)S-0422.03 基于虚拟仪器的图像采集处理及仪器控制+ 周秀荣,尚凯文,崔小虹,邢冀川 (北京理工大学光电工程系,北京100081) 摘要:针对激光测距机三光轴平行度调校,提出了由C C D摄像机摄取激光光斑图像,然后用图像采集与处理方法计算白光十字线中心与光斑中心偏差的方法,并对选用的图像处理算法进行了论述。此外,采用可变固定衰减片方法测量激光测距机接收系统的灵敏度。以LabV I E W为软件平台,开发出检测激光光轴中心及控制衰减器的虚拟仪器系统。该系统具有直观形象,使用方便,可移植性强等优点。 关键词:虚拟仪器;L abV l E W;图像采集;数字图像处理;仪器控制 中图分类号:TN911.72文献标识码:A I m age acqui s i t i on and pr ocessi ng a nd i nst r um e nt cont r ol ba se d on vi r t ual i ns t r um ent Z H O U X i u—r ong,S H A N G K ai.w e n,C U I X i ao-hong,X l N G Ji.chua n (D e par t m e nt of O pt o-el ec t r oni c E nge nee r i ng,Bei j i ng I ns t i t ut e of T e chnol ogy,Bei j i ng100081,C hi na) A b st r act:I n or der t O m ea sure t he t hree-l ight.axi s paral l el it y of l as er t e l e m e t er,w e u s e C C D t o get l as er s pot i m a ge a nd t h en cap t ur e and pr o cess t he i m a ge t o cal cu l at e t he pos i ti on er r or bet w e en t he cent er of w hi t e l i ght cr os s l i ne and t hat of t he spot and exp l ai n s el ect ed i m a ge pr oces si ng ar i t hm et i cs.B esi des,di f f er ent at t enu at or s ar e appl i e d t o m ea s u r e t he s en s i t i vit y of re e ei v—el".W e s el e ct LabV l E W as so f t w ar e t O de vel op vi rt ual i nst r um ent s ys t e m s t o gai n t he cent er of l as er axi s and cont r o l t he a t te nu—at o r.T h i s s yst e m i s i ntui t i o ni s ti c a nd conve ni ent t o l i s a and ca n be r eu sed i n di f f er ent appl i cat ions. K e y w or ds:vi r t u al i nst r um ent;LabV I EW;i m age acqui si t i o n;di gi t al i m a ge pr oces si ng;i nst r um en t cont r ol 1激光测距机三轴平行度调校系统整体方案 激光三轴平行度调校系统主要由大口径离轴抛物面反射镜、激光模拟器组件、长焦距C CD摄像机、白光光源组件、衰减器、漫反射靶、电控柜、图像采集及处理分系统、光学平台及二次检校设备等构成,其组成框图如图1所示。 图1激光三轴平行度调校系统组成框图 白光光源发射白光,经析光镜透射后又经离轴抛物面镜反射,进入二次校准设备。二次校准设备主要由五棱镜和经纬仪组成,它可以进行离轴抛物面镜准直性的自检。激光测距机发射系统发射的激光束经衰减器后又经过离轴抛物面镜的反射和析光镜的透射打到白光光源前的毛玻璃或漫反射靶上,形成二次光源,经过离轴抛物面镜反射后成为平行光束,进入C C D摄像机。这样光斑图像就被拍摄下来,送人图像采集与处理分系统进行求取中心及计算偏差的处理。激光模拟器组件用于模拟发射激光的回波。为测量激光测距机接收系统的灵敏度,激光模拟器组件中包含了衰减器。衰减盘放于精密电控旋转台上,由步进电机控制器控制。为方便操作,步进电机控制器、激光模拟器控制装置以及进行图像采集处理与仪器控制的计算机统一放到电控柜中。本文主要介绍图像采集处理分系统以及衰减器组件两部分。 2图像采集与处理 首先用图像采集卡将C C D拍摄的激光光斑图像转化为数字图像,然后用数字图像处理的方法获得光斑中心,计算白光十字分划线中心与光斑中心的偏差,根据差值调整激光测距机的发射光轴,直至二者重合‘l I,具体过程如图2所示。 _收稿日期:2006—06—27E-m a i l:zx i ur ong@bi t edu.cn 作者简介:周秀荣(1982一),女,河北省人,北京理工大学硕士研究生,从事光电子技术研究。422

基于labview跑马灯设计

选题分析: 随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰已经成为一种时尚。 跑马灯是一种生活中比较常见的装饰,本文主要通过labview来设计了一个相对简单的对跑马灯的控制,实现了其有规律的亮灭,带来一定的观赏效果。 本文主要是实现了跑马灯的单个流水闪烁、双路同步流水闪烁、四路同步流水闪烁、全体同步闪烁,以此循环。本程序并控制闪烁的间隔时间,使其运行更具可观性。 方案设计: 本文主要设计了12个显示灯,并让其方形围成一圈。 运行效果: 单个流水闪烁:单个灯依次轮流闪烁 双路流水同步闪烁: 相对两灯同时依次轮流闪烁 四路同步流水闪烁:等间距四灯依次轮流闪烁 全体同步闪烁:全体灯同时闪烁 运行步骤: 单个流水闪烁→全体同步闪烁→双路流水同步闪烁 ↑↓ 全体同步闪烁←四路同步流水闪烁←全体同步闪烁 以此循环。

运行控制: 直接点击labview运行按钮进行跑马灯演示。 开关:用于结束当前操作,控制其关断。当开始运行程序时也可通过关断开关了结束程序的运行。 水平指针滑动杆:用于调节彩灯间的延时时间。通过其可调整灯闪烁的快慢。前面板的设计: 前面板主要由12个指示灯、一个开关及水平指针滑动杆构成。 水平指针滑动杆——用于调节彩灯间的延时时间。 指示灯——用以显示程序运行结果。 开关——用于结束当前操作。 对于前面板的设计相对简单,通过开关来控制其关断,水平指针滑动杆来控制其延时时间,指示灯显示程序运行的结果,观看到跑马灯的演示情况。 图1. 前面板

程序框图的设计: 设计思路: 本程序主要用到平铺式顺序结构和层叠式顺序结构顺序执行。 本程序用真假常量来控制灯亮与不亮。 本程序还用到了while循环和for循环,循环是用于达到闪烁和同步递进循环。整个程序几乎每一帧都用到了延时,单位是毫秒,延时的目地是使本程序更具有可观性。

LabVIEW小问题

LabVIEW新手5大错误 时间:2013-09-06 来源:NI 作者: 关键字:LabVIEW 虽然NI LabVIEW软件长期以来一直帮助工程师和科学家们快速开发功能测量和控制应用,但不是所有的新用户都会遵循LabVIEW编程的最佳方法。LabVIEW图形化编程比较独特,因为只需看一眼用户的应用程序,就马上可以发现用户是否遵循编码的最佳方法。有些用户会犯这些错误是因为他们没有真正理解LabVIEW框图数据流背后的原理,而有些用户则是不知道哪些特性可提高LabVIEW编程质量。 本文介绍了经验欠缺的LabVIEW程序员最经常犯的一些编程错误,同时也提供了采用正确LabVIEW编程方法的建议。 图 1. LabVIEW新手典型“杰作” 过度使用平铺式顺序结构 许多LabVIEW新手并不完全了解“数据流”执行背后的概念,而这些概念却是LabVIEW编程的基础。其中一个现象是用户往往在程序框图中过度使用平铺式顺序结构。用户经常依赖平铺式顺序结构来实现程序框图的代码串行执行,而不是使用数据流和节点之间的连线。 图 2. 用户往往过度依赖平铺式顺序结构,而没有充分理解数据流编程概念数据流编程是指只有在所需的数据输入全部到达时,框图上的节点(子VI、本原、结构等)才开始执行。这对于使用LabVIEW的程序员来说非常有用,因为独立的进程本身就可以实现并行运行,而命令式语言却需要额外的设置才能实行并行执行。随着计算机CPU的不断增多,LabVIEW可自动分解并行流程,提高代码性能,而无需用户编写任何额外代码。

而强行使用平铺式顺序结构来执行程序框图不仅会限制并行运行,还会丧失这一优势。限制程序框图中不必要的结构有助于提高整体可读性和保持更简洁的框图。 错误连线可以有效地实现程序框图上的数据流,而不需要依靠平铺式顺序结构,此外 错误连线还有助于实现错误处理策略。 何时应该使用平铺式顺序结构? 通过平铺式顺序结构来执行程序框图有助于代码性能的基准测试。通过使用框架内具 有时间计数器的顺序结构,您可以决定两个时间计数器之间代码执行所花费的时间。这是一般数据流执行所无法实现的。 图 3. 平铺式顺序结构和时间计数器VI有助于代码的基准测试关于数据流编程的更多信息,请访问在线自学培训 (https://www.360docs.net/doc/164287999.html,/self-paced-training)LabVIEW核心课程1的“数据流”。购买LabVIEW或具有标准服务项目(https://www.360docs.net/doc/164287999.html,/ SSP)会员资格的用户可以免费参加在线自学培训。 错误使用局部变量 LabVIEW编程中另一个常见的错误是过度使用局部变量。局部变量是共享内存中的一个区域,用于在计算机程序不同部分之间传递数据。局域变量通常用于文本编程语言,具有非常强大的功能,但如果出现竞争条件,就会产生问题。 对于其他编程语言来说,通过变量传递数据是必需的,而LabVIEW则提供了一种数 据流方法,可将数据从程序的一个部分移动到另一个部分。LabVIEW固有的并行性机制决定着用户不能过度使用变量,因为同一时间内通常会有多个不同的位置的程序访问共享内存。如果过度使用变量,则会出现某个读/写操作赢了“竞争”,而其他操作则输了“竞争”,丢失 数据的操作会被忽视,因此在LabVIEW中过度使用变量可能会最终导致数据丢失。 您可以通过多种方法安全地将数据从LabVIEW程序的一个部分传递到另一个部分, 包括连线、队列、事件、通知、功能全局变量等等。每个机制都是针对特定情况设计的,但都具有消除竞争条件的功能。 关于在LabVIEW程序内正确移动数据的更多信息,请访问在线自学培训 (https://www.360docs.net/doc/164287999.html,/self-paced-training)LabVIEW核心课程1的“局域变量”和LabVIEW核心课程2的“通知、队列和事件”。 忽略代码模块化 通常情况下,新LabVIEW用户创建的是“即写即忘”应用程序去完成简单的任务,而没有考虑到以后是否会用到这些代码。随着编程工作越来越多,他们会发现自己一遍又一遍地重写同一段代码。而如果在编程同时创建一个可复用于其他应用的模块化子VI,就可以节 省大量的开发时间。 如果您知道代码的特定部分将会重用于同一应用程序,或感觉该部分代码可能会用于 未来的应用程序,那么您应该花一点时间将该部分代码变成一个子VI。如果要使某部分代 码成为一个子VI,您需要做的主要是添加一个文档、使用“接线端”、禁用某些VI属性。创建子VI的最简单方法之一是高亮标记程序框图中的某部分代码,然后从菜单栏中选择“编

相关文档
最新文档