当前位置:首页 > 测试测量 > 测试测量
[导读] Block diagram是其他人看懂VI如何工作的主要途径,因此它常常需要我们遵循一些简单的步骤来使Block diagram组织性更强,更易阅读。VI的Block diagram的样式是非常重要的就如前面板的样式一样。用户可能

Block diagram是其他人看懂VI如何工作的主要途径,因此它常常需要我们遵循一些简单的步骤来使Block diagram组织性更强,更易阅读。

VI的Block diagram的样式是非常重要的就如前面板的样式一样。用户可能看不到Block diagram,但是其他的开发人员可能看到。一个计划好的,格调一致的Block diagram是很容易理解以及便于修改的。

连线技术

你可以使用在工具条上的下拉菜单来排列分配目标对象在Block diagram中的对称位置。当对象被整齐的排列分配好后,你可以使用直线来连接这些对象。使用直线连接可使得Block diagram更易阅读。

下面一些好的提示,告诉你如何使得Block diagram更加整洁:

1)避免把线置于Block diagram中如子VI或结构对象之下,因为LabVIEW可能隐藏一些结果线的片断。你所画的线务必要让你清楚的看到它是否正确的连接到终端上。

2)尽可能少加弯曲,缩短线长。避免把线拉的太长,这样不容易阅读。

3)删掉无关紧要的线。

4)在你使用连线来传递数据的时候避免使用局部变量。每个读取数据的局部变量都会建立一个数据的拷贝。

5)在数据没有被用于结构之中,不要把线连通结构。

6)使平行的线间空隙均匀。

内存和速度优化

优化LabVIEW VI的使用和运行时间,你有很多需要做。当程序有大量的数组或者严格时间限制的时候,优化显得尤为重要。

虽然优化是一个非常棘手的题目,以下可以作为程序的一些基本的优化操作:

1)如果在While loop中速度不是很重要的,添加一个等待功能块,可以避免拖慢其他任务。一般来说,LabVIEW会以最快的循环速度来运行While loop中的代码,这样会很耗费系统资源,从而使得其他一些代码得不到最有效的执行。这样会看上去电脑运行的非常慢,及时它仅仅实在运行几个简单的循环。

用Wait(ms)功能块来加入稍许的延迟可以帮助电脑正常运行循环以外的其他任务,而不影响循环的正常工作。一般设置一个50到100ms的延迟完全足够了,但是程序中的其他一些因素可能影响到延迟。延迟不合任何数据发生关系,如图6所示。


图11 While Loop 50毫秒延迟

如要完全避免这一问题,使用事件结构。事件结构不会消耗处理器资源,它会等待用户界面事件发生后才进行相应的动作。

2)如果可能,尽量避免在循环中使用建立数组功能块来建立数组,因为功能块会不停的调用LabVIEW的内存管理器。建立数组一个更有效的方法是使用自动索引或者数组大小预定义并使用数组元素替换功能块来添加数据到其中。在字符串处理时同样会有这样的问题存在,因为在内存中LabVIEW是把字符串按照字符数组来处理的。

3)尽可能珍惜使用全局和局部变量。你可以使用全局和局部变量来有效的书写VI。然而,如果你滥用全局或局部变量,特别是数据类型,会增加VI的内存使用量并影响性能的表现。

除此之外,你同一个程序中同时读写全局变量的时候可能碰到紊乱的情况。这些紊乱的情况在调试的时候很难被发现,因为同一个全局变量在不同的VI中没有数据关联。

考虑使用功能全局变量来替代全局变量。功能性全局变量不会建额外的数据拷贝,并且允许如初始化,读写和置空等操作。

4)选择合适的数据类型数组来操作数据,对于控制程序在内存中使用量控制来说是很重要的。例如,如果你有100000个扩展精度的浮点数组,但是实际上只需要以单精度浮点值来进行存储,这样会出现内存不够使用的情况。使用单精度浮点值数组进行储存,可以有效的减少内存的使用量。下表可以看出不同数据类型占用内存的情况。

Array Data TypeMemory UsedArray of 100000 EXT Values1MBArray of 100000 SGL Values400KBMemory Saved600KB


5)避免强迫数值类型转换的情况出现,可以有效的降低内存的使用量和速度。强迫类型转换出现会使得LabVIEW在转换过程中再复制一份数据。特别是在你的数组特别大的时候,其效果更为明显。

6)前面板指示器数据的频繁更新会影响到VI的性能,特别是如果你在用图形或者图表显示数据的时候尤为明显。为了优化这些VI,在前面板上只显示必要的信息,并且只有在更新数据和指示器中数据不同时候才进行数据的刷新。

大小和位置

Block diagram窗口的大小会影响你LabVIEW代码的可读性。不要让Block diagram窗口的大于你的屏幕尺寸。在确保LabVIEW代码能显示完的情况下,尽量缩小Block diagram窗口的尺寸。如果代码大于窗口大小的话,会很难于阅读,因为这不得不使使用者来回拉动滚动条。如果代码实在太多了,而一个屏幕不能显示完的话,建议只在一个方向上进行滚动(推荐滚动方向为左右方向,因为LabVIEW为数据流格式传输数据,推荐的格式也是从左到右,所以我们也建议程序代码太大的情况下,左右移动为好,见下条规则)。

从左到右布局

LabVIEW使用从左到右的布局,所以Block diagram也需要遵循这一规则。因为程序中的元素不能决定执行的顺序,所以要避免从右到左的连接。只有连线和结构可以决定执行的顺序。

Block Diagram注释

对程序进行修改和维护的开发者需要一个对block diagram好的文档说明。没有这个,修改代码是一件十分耗时和容易造成新的错误根源。以下是一些对Block diagram注释的建议。

1)使用注释来帮助解释Block diagram代码的作用是什么。LabVIEW代码虽然是图形化的,但是它没有自注释功能。在功能面板上的自由标签可做block diagram注释之用,加上一定的背景颜色,可达到注释的效果。

2)不要在功能块和子VI调用上显示标签,因为他们可能会很大,而且显得十分笨拙。开发者可通过Context Help窗口看到功能块或者子VI的名字。

3)在连线上使用自由标签来确定他们作用。贴上标签的连线对于来自shift register和跨越了整个block diagram的长线线条来说十分有用。

4)在结构上使用标签来确定结构的主要功能。

5)使用标签来显示常量的特性和功能。

6)在调用库功能节点时候使用标签可以明确功能节点的作用和调用者路径。

7)用注释来解释Block diagram中运算法则的功能。如果使用某本书或者参考资料的运算法则,可用注释来提供这些参考的信息。

调用库功能节点和代码接口节点

包括调用库功能节点和代码接口节点(CINs)的VI是根据平台而定的。使用调用库功能节点来调用共享库的VI由平台而定,如果你在不同的平台下调用,可能你的到的结果是完全不同。如果你把包含调用库功能节点的VI移植到其他平台上,你必须更新节点调用共享库所用到的目录路径。

如果你写的VI含有CINs,对于不同的平台你需要不同的VI版本,因为不同的平台编译的CINs可能不同。当你移植包含CINs的VI到其他平台时,你必须重新在信的平台上重新编译代码,并重新把它加载到CIN中去。

如果VI包括调用库功能节点或者CIN,你又想在不同的平台上使用该VI,一定要考虑提供不同版本的VI来适应不同平台的调用需要。

类型定义

当你在超过一个地方使用同样的唯一的控件或者当你有非常的数据结构需要在几个VI间传递的时候,请使用类型定义。使用类型定义控件,LabVIEW会在各个VI间自动把改变传递到控件或者数据结构中。

顺序结构

少使用顺序结构,因为他们会隐藏代码。尽量靠数据流来控制运行的顺序,而不是用顺序结构。当你在顺序结构中用到顺序局部变量时,你会破坏从左到右的数据流规范。为了帮助控制数据流,你可以使用错误簇。

如果你必须使用顺序结构,尽量使用Flat顺序结构,它不会隐藏任何代码。如果你在VI中使用Stacked顺序结构,一定要把最重要的一帧显示出来。

IX.图标和连接板风格



在为VI建立图标和连接块时使用好的风格技术对那些VI的使用者来说是非常有益的。

图标


图标是VI在面板和Block diagram中VI的代表。当子VI拥有设计好的图标,开发者可以很好的理解子VI的意思,而不需要过多的文档描述。

在建立图标时,使用一下建议:

1)为每个VI分别建立一个有意义的图标。LabVIEW库中有许多设计好的图标,通过图标可以很容易理解程序的功能用途;在可用的地方使用他们作为原型。如果你没有图片,文字也是可以用来表达的。如果你局部化应用程序,同样务必局部化图标中的文字。

提示 在文字图标中8p的小字体看上去是最舒服的。

2)建立图标的时候不要使用口语化的文字。口语化的文字是很难翻译的。翻译不好可能导致用户对图标错误的理解。例如,一个数据采集的VI使用一副树枝图片或者伐木工人的图片,则不好表示其意思。

3)为关联的VI建立统一的样式。这能帮助使用者直观上上层VI和被调用子VI之间的关系。

4)如果需要打印用,则需要使用黑白图标。不是每个用户都有彩色打印机。

5)建立图标使用尺寸为32×32象素。小于该尺寸的图标在选择和连接的时候看上去会很难使用。看上去也很不舒服。

6)确保子VI图标在Block diagram上是可见的。右键点击子VI,选择可是项目》终端。确保终端选项没有被选中。子VI图标比Block diagram上的连接块更有用。

图标形象例子

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭