技术中心
 
 

LabVIEW-TCP通信总结

   日期:2016-07-29    
核心提示:波形图是每次将久数据清空,然后显示新数据,而波形图表是将新数据接到旧数据的后面。趋势图可以将新的数据添加到曲线的尾端,从而反映实时数据的变化趋势,主要用于显示实时的数据。而图表在画图之前会自动清空当前图表,然后把输入的数据画成曲线。

1、波形图是每次将久数据清空,然后显示新数据,而波形图表是将新数据接到旧数据的后面。趋势图可以将新的数据添加到曲线的尾端,从而反映实时数据的变化趋势,主要用于显示实时的数据。而图表在画图之前会自动清空当前图表,然后把输入的数据画成曲线。

2、字符串常量中的rn这里是算四个字符,而不是指转义字符。

3、通过stop按钮来停止程序的运行,可以采用while循环和事件结构,事件触发条件改为值改变,然后按键机械动作改为保持转换直到释放,保持转换直到释放相当于两次改变事件stop的值。

4、while循环是首先读入stop的值,然后在执行一次后在根据这个值来判断,当while里含有将stop改为true的语句,这个值将写入判断条件,再运行一次后再退出。

5、variant(变体)数据类型和其他的数据类型不同,它不仅能存储控件的名称和数据,而且还能携带控件的属性。labview中的任何一种数 据类型都可以使用相应的函数来转换为variant数据类型。variant数据类型主要用在ActiveX中,以方便不同程序时间的数据交互。在 labview中可以将任何数据都转换为variant数据类型。

5、局部变量只能用于一个vi的程序框图,而全局变量可 以用于同一台计算机中的多个vi。每个局部变量都对应前面板上的一个控件,一个控件可以创建多个局部变量,labview中的全局变量是以独立的vi文件 形式存在的,这个vi文件只有前面板,诶有程序框图,不能进行编程。一个全局变量的vi文件中可以包含多个不同数据类型的全局变量。

6、for循环输入和输出数组,默认情况下是数组元素逐个输入,即按照索引输入,每次输入一个数组元素进行运算,然后循环,最后将这个数组一起输 出,这种情况不需要给循环次数赋值,循环次数就是数组的个数。如果需要将数组一次性完整输入,则需要关闭索引功能,数组将一次性输入,这种情况需要制定循 环的次数,而且循环时是操作整个数组,而不是操作某一个数组元素。

7、移位寄存器,把上一次循环产生的结果移动到下一次循环的输入。任何情况下都别忘了初始化移位寄存器,移位寄存器不受数据类型的限制,也没有数量限制。

8、labview还提供了反馈节点来实现移位寄存器的功能,,使用反馈节点可以让撑血更简洁,易懂,使用方法是直接将输出与输入连接起来,这是就会自动出现一个反馈节点的符号,当然,和移位寄存器一样,最好制定反馈节点的初值。

9、如果以索引方式输入数组的话,while循环的次数并不会由数组大小控制,它仍由布尔值控制。当循环次数超过数组大小时,将以数组最后一个元素作为输入。

10、labview在执行while循环时,如果用户没有给她设定循环时间间隔,那么它以cpu的极限速度运行。所以最好给while循环加上时间间隔。有两种方法:一种是在每个循环中添加一个等待时间,只有在等待完毕后才有耐性下一个循环。另一种方法是使用定时循环。

11、条件结构中当false条件框中没有数据与b连线时,程序是不可执行的。此时数据输出端子是空心的。当条件结构为false时,没有数据流入 b,因此数据流不能正常流动,即程序是不可执行的,因此必须给该输出端子赋值。但是如果在某种情况下,如果你不关心当case为false时b为何止的 话,可以右击,选择use default if unwired选项。

12、当case结构的输入端子不是布尔变量的时候,就等价于c语言中的switch语句了。defalut是必须的。

13、当多个事件发生时会形成事件队列,知道每个事件对应的代码都被执行为止,因此不会由事件被漏掉的情况。

14、事件结构中的事件栏中的某些事件,入mouse down左侧有两种箭头:一种是绿色箭头,另一种是红色箭头。其中绿色的notify事件,即当事件发生时通知程序运行该事件所对应的代码。大部分情况下 都是使用这种事件。红色箭头表示该事件是filter事件,即当事件发生时可以选择是不是过滤该事件。

15、事件结构必须放在while循环中,否则没有意义。

16、表格实际上即使一个字符串组成的二维数组,express table用于将数据快捷地转换为表格

16、条件使能结构(labview 2010里没有这种结构):环境变量只有在工程中才能使用。通过定义整个工程的环境变量,该工程下的vi都可以被这些环境变量控制。

17、公式节点的文本编程语言的语法与c语言非常接近,但是只能实现基本的逻辑流程和运算,不能对文件或设备进行操作或通信,没有输入输出语句。

18、文件路径是labview中一种特殊的数据类型,方便用于文件的操作。但是由于它也兼具了字符串的特征,因此可以用一个很简单的vi函数实现它和字符串之间的转换。

19、树形控件编辑完后一定要右击树形控件并选择make curent values default选项,否则重新打开vi后用户千辛万苦写的东西就没了。

20、注意要控制数组控件的属性,就必须右击数组控件的边缘,而不能右击内部元素控件的边缘,若右击内部元素的控件,将弹出内部元素控件的相关右键菜单,这一点要特别注意,因为数组的边框和元素控件的边框距离非常近。

21、参考簇必须与输出的簇完全相同,可以直接右击需要赋值的簇,选择create/constant 选项来创建一个与输出簇完全相同的常量簇作为参考簇。能转换为数组的簇内部元素数据类型必须一致。把数组转换为簇时,必须指定簇的元素数目,因为 labview无法预料输入数组元素的数目。右击转换函数的图标,选择cluster size选项指定簇的大小。

22、当error in携带有错误信息时,该函数就会不做任何操作,而是直接将错误传递给error out 输出。包含一个status 布尔量代表是否有错,code代表错误代码,source 包含了错误的具体信息。

23、引用是一种特殊的数据类型,它包含了文件所有应该有的信息,如地址、类型、当前指针位置、写允许还是读允许等。

23、波形图表中,对于二维数组,默认情况下它将输入数组转置,即每一列的数据当初一条一维数组曲线。对于波形数据类型,波形图表只能显示当前的输 入数据,并不能将新数据添加到曲线尾端。这是因为波形数据包含了横坐标的数据,因此每次画出的结构和上一次结果无关,等价于波形图。

24、波形图表刷新模式在属性设置中,可用来改变刷新的方式,是带状图表还是示波器图表还是扫描图。

25、Express VI中,labview提供了动态数据类型(ddt)来携带express vi的输入和输出信号。用户可以将数值、波形或布尔数据与动态类型数据输入端相连,也可以将动态数据类型显示为图形或数值。动态数据类型能够携带单点,单 通道(一维数组)或多通道(二维数组)的数据或波形数据类型的数据。普通vi不能直接输入动态数据类型,因此需要进行数据转换。

26、配置文件,标准的windows配置文件(INI文件)。它适合用来写一些硬件配置信息。实际上也是一种文本文件。

27、表单文件实际上也是一种文本文件,只不过它的输入数据格式可以是一维或二维数据数组,数据之间自动加入了tab符或换行符。它将数据数组转化为ASCII码存放在电子表格文件中,因此用它存储数据数组非常方便。

数据记录文件实际上是一种二进制文件,输入的数据格式可以是任何数据类型。操作方法和二进制文件基本相同,只是增加了几个功能,通过这些功能可以设定或读取记录条数。

xml文件实际上是一种文本文件,但是它的输入可以是任何数据类型,它通过xml语法标记的方式将数据格式化,因此在写入xml文件之前需要将数据转换为xml文本。

lvm文件将动态类型数据按一定的格式存储在文本文件中,它会在数据前加上一些信息头。

TDM文件将动态类型的信号数据存储为二进制文件,同时可以为每一个信号都添加一些附加信息。

TDMS文件时labview对TDM文件的改进。它比TDM文件读写速度更快,属性定义的接口更简单。TDM文件盒TDMS文件可以相互转换,因此推荐使用TDMS文件代替TDM文件。

28、创建子vi有两种方法:一种是鼠标点击程序框图和前面板右上角的图标,另一种是选择程序框图中的某一段代码,然后选择编辑|创建子vi。

29、查看vi层次结构:点击主菜单查看选项,选择vi层次结构。

可重入的设置,子vi文件的 主菜单 文件|vi属性选项,在vi属性对象框中进入执行页面,选择可重入执行。当使用vi的可重入属性后,每一处对该子vi的调用都会在内存中产生子vi的一个副本,副本之间相互独立,因此这样保证调用的并行性。

需要在调用子vi时能打开子vi前面板,只需要在主vi中右击子vi图标,选择subvi node setup 选项就会弹出子vi调用属性配置对话框。选择show front panel when called 表示在调用子vi时打开子vi的前面板,suspend when called表示当子vi被调用时将弹出子vi前面板,而此时子vi处于挂起状态,知道用户单击return to caller按钮才返回到主vi,这个选项在调试的时候可以用到。

30、树形控件的编辑必须通过属性节点和方法节点才能实现。

31、用户可以定义自己的错误代码,代码可以在5000~9999之间。

32、编辑菜单栏,在edit菜单中旋转run-time menu选项会弹出菜单编辑器。菜单的响应程序还可以通过事件结构实现。它比通过get menu selection函数实现要更加简洁明了,推荐使用事件结构实现。

33、右键快捷菜单,右击控件选择advanced| run-time shorcutl menu|edit选项。菜单项编辑完成后,就可以编辑用户单击该菜单项时运行的代码。只能通过事件结构中该控件的 shortcut menu selection(user)事件来实现。若不希望某个VI中的自定义数据类型控件自动更新,则可以右击该控件取消对auto-update from type def的选择,需要时再手动更新update from type def。

34、自定义控件,右击前面板的任何控件,选择高级,自定义打开自定义控件逻辑窗口,可以编辑控件。选择的时候在控制选板选择控件里。

通过自定义数据类型可以将所有应用了的自定义控件与保存的自定义控件文件响关联,即一旦自定义控件文件改变,相应的所有VI中该控件的应用实体 都会跟着变化。自定义数据类型控件的编辑和自定义控件的编辑基本一样,唯一不同的是在自定义控件编辑窗口的工具栏的下拉菜单中选择tpye def。

自定义控制选板和函数选板:最好的方法是选择菜单栏的工具|高级|编辑选板。

35、如果while循环对于速度要求不高,可以在while 循环中添加一个等待。从而降低cpu的利用率以利于其他部分程序的执行。对于用户界面循环,50~100ms的延迟都是可以的。

对并行任务中相对不重要的任务,可以通过wait函数增加一个很小的延时,从而保证更重要的任务有更多的cpu资源。

使用事件结构来等待用户的输入,因为事件结构在等待时不会占用cpu资源。

在循环内尽量不要使用build array函数,因为这样会重复调用labview内存管理器。更有效的方法是通过auto-indexing或replace array subset函数来增加数组内容。字符串和数组类似,因此也会面临这个问题。

36、MathScript是面向数学的文本编程语言,它带有交互式的窗口和可编程的接口,通过mathscript ,喜欢文本编辑的用户可以再labview中编写并执行matlab式的文本代码并能与图形化编程无缝结合。

37、labview中某些信号处理函数的频率输入端可能是归一化频率,而不是模拟频率。归一化频率= 模拟频率/采样频率,因此它的单位是周期数/每采样。归一化频率的倒数就是信号每周期的采样次数。

常用的信号调理方法有滤波、放大、加窗

窗函数的作用包括截断信号、减小谱泄露和用于分离频率相近的大赋值信号与小赋值信号。

38、传感器感应物理信息并生成可测量的电信号。

信号调理:从传感器得到的信号可能会很微弱,或者含有大量噪声,或是非线性等,这种信号在进入采集卡之前必须经过信号调理。信号调理的方法主要是放大、衰减、隔离,多路复用、滤波、激励和数字信号调理。

39、在系统设计时,清晰的层次结构、模块化设计、通用的接口和组件等都是增强系统灵活性和可扩展性的重要手段。

可重用性需要我们在编程中尽量去抽象那些通用的功能和实现方法。这些模块可以再一个工程中重复使用,也可以在多个工程中重复使用。

可读性,必须为代码添加充分的注释,并配合详细的文档。其中可能包括功能、实现原理、结构、编程思想和接口等。

可维护性对于长期稳定运行的软件至关重要。一方面系统在长期运行过程中可能会不断增加数据或是遇到各种可能的错误,因此必须有简单的方法来挂历和处理不断 增加的数据。此外,系统必须有良好的容错能力和回复能力。另一方面是指系统可能由于环境的变化或用户需求的变化需要改变。

 
标签: LabVIEW TCP 通信
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢