最新labview内部资料.doc
《最新labview内部资料.doc》由会员分享,可在线阅读,更多相关《最新labview内部资料.doc(125页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、精品资料labview内部资料.分享LabVIEW内部交流资料开发机上激活以后,如果开发机升级了或者换了或者增加新的配置了等等,难道要重新购买一套8.2吗? 回答更改了配置,那么lisence manager里的机器码肯定会变,所以需要重新向NI申请激活码激活. NI的IVI驱动的来源? 回答=由于NI开发的IVI驱动程序库已经包含了仪器的Class Driver,因此,程序员只要按照IVI的规范开发自己仪器的Specific Driver,就可以实现仪器的互换性。LV和CVI的专用驱动可以从NI的网站下载,源代码是用c编写的32位的DLL形式,这就保证驱动可以直接在你的开发环境中使用(LV,
2、CVI,VC等)。 在运行过程中LabVIEW能否添加控件? 回答=不能,只能在编辑状态是做。不过可以事先多创建几个控件,然后隐藏。再需要使用的时候使用属性节点来操作。编写的LV的GPIB通讯程序,从示波器读取数据。单独可以正常执行,但放置在一个事件结构的一个WHILE循环里时,运行程序后,程序会变得不相应,而且前面板不可控制。 回答查看客户程序,GPIB程序并没什么问题,但是作为一个子程序放在事件结构里就会存在问题,而且子程序运行时,主界面默认的是不响应的。如果要解决这个问题,需要选择事件结构编辑面板最下方有一个默认选项,用于设置是否在事件结构执行完成之前锁定前面板,默认为锁定,取消即可。I
3、VI的分类。 回答=因为所有的仪器不可能具有相同的功能,因此不可能建立一个单一的编程接口。因此,IVI的驱动分为两类。(1) 类驱动程序( Class Drive):它们是在特定类中编写仪器软件的标准接口。这意味着软件开发者能重复使用他们的软件系统而不会由于低层硬件更改而被迫重新测试软件系统。目前,IVI驱动程序库可用于下列几类仪器:示波器数字化仪表、开关多路复用器、数字万用表、任意波形发生器函数发生器等。(2) 设备类驱动程序(Specific Drive):每种牌号和类型的仪器均有相应的专用驱动程序。用户通过替换仪器的专用驱动程序就可以简单地互换仪器,而无需改动类驱动程序库或它们的测试程序
4、源代码。使用迅捷VI 做多点数据采集并进行带通滤波时出错? 回答=客户程序使用单通道多点采集,采集到1D DBL数据。由于带通滤波是对频率的滤波,因此输入数据需要带有时间信息。需要单通道多点采集,得到waveform形式即可。如何在调用DLL时解决数组传递的问题,DLL中的数组都是用指针来表示的。比如在LV中向DLL中的一个函数输入一个数组,在该函数中进行数据处理,最后再将处理后的数组返回到LV中。 回答=在编写C代码时,将函数的返回类型设置为Void,而输入数组和输出数组都以指针的方式出现在参数列表中。也就是说该函数是以传索引的方式返回数据,而不是以传值的方式。在LabVIEW中调用CLF节
5、点,将参数的数据类型定义为Array,传递方式是Array Data Pointer,然后在CLF节点左侧输入原始数组,右侧输出的就如何在LabVIEW中产生一个对数函数的波形? 回答=可以利用公式节点和For循环来产生一组对数函数数据。在公式节点中创建一个对数算法,该算法的自变量由For循环的计数器 i来产生。公式节点的输出就对应对数波形上的数据。每次运行程序,CPU使用率都达到100%;甚至只运行一个简单的循环也是如此。为什么会出现这种情况。回答=循环里面如果没加延时,就会有这种现象发生,因为CPU一直在执行循环,不能抽出空闲时间做其它任务。如果要检查系统中为什么会有这样的现象,可以从各个
6、VI入手,察看问题. 仪器驱动器的概念及VISA的特点。 回答=仪器驱动器是指使用标准化的IO函数仪器设备进行通信的程序,主要用于对仪器进行程控操作。在LabVIEW编程语言中,仪器驱动器是指由VISA标准和仪器程控指令共同构成的仪器控制程序的应用程序接口(API)。仪器驱动器采用VISA标准编程,从而可避开许多复杂而低级的仪器程控命令。VISA是虚拟仪器体系结构的简称,它的特点有:1)面向对象编程;2)VISA是当前所有仪器接口类型功能函数的超集,且十分简洁。3)VISA作为标准函数,与仪器的I/O接口类型无关;4)VISA程序与操作系统与编程语言无关。 检测所采集的信号的波形有没超出上下限
7、波形范围,如何快速实现。 回答=使用Limit Testing.vi,可以监控波形是否超出所设定的波形上下限范围。要注意的是upper limit和lower limit是以簇的形式填写。 如何选择高速CAN卡和低速CAN卡的使用? 回答=通常来讲,高速CAN设备和低速CAN设备是不能运行于同一个CAN网络中的。一般我们的CAN设备,如果是serials 2的CAN设备那么是有两个port分别可以做高速CAN和低速CAN的,而且是通过软件来设置的,直接在MAX里对找到的CAN设备选择相应的port的属性设置,就可以更改是高速还是低速CAN。如果是serials1的就需要一个端子,从一个CANp
8、ort里分出两个port分别做高速CAN和低速CAN,也是在MAX里设置的,和前面所讲的设置方式一样。CAN网络的高速和低速是什么意思? 回答=高速CAN提供5Kbit/s到1Mbit/s的波特率。而且高速CAN网络需要在每个网络端点端接一个120欧姆的电阻。低速CAN提供5Kbit/s到125Kbit/s的波特率。而且是具备容错特性的。也就是说,当CAN网络或其某一节点发生故障时,总线通信不受影响,能够继续运行。如何自定义我的控件? 回答=点击右键选择advance-custom可以自定义控件,也可以在网上找一些openG的控件,网上有很多这样的控件可以用.使用FFT.vi,最后输出FFTX
9、是什么含义?如何从中获得信号频率信息? 回答=输出FFTX表示的是一个复数,是FFT变换的结果X,用Complex to Polar函数可以将r和分开。r越大,表示X序列在此处对应的频率成分越高。X序列之间的频率间隔df=fs/N,其中fs表示信号的采样率,N表示采样点数。因此由r序列的最大值对应的Index和df就可以确定该信号中哪个频率下的谐波成分最高,该频率f=df*r序列中最大值对应的Index。使用Listbox时,如何响应双击Multicolumn Listbox中的行数据? 回答=方法1:可以使用事件结构,并添加Events为Double,然后在对应的事件结构内编写相应响应代码。
10、方法2:创建Invoke Node,并选择Get Clicked Col Row。当没双击时返回值为-2,当双击后则返回当前的双击行值。 Tank 显示控件显示的数据,怎么让它只显示两位小数 回答=在Data Range中,设置Increment为0.01,就可以显示两位小数了,后面的Out of range action可以设四舍五入,进一位,舍去等不同的方式。这个方式不光适用于Tank,其他的显示控件同样适用。在LabVIEW中如何使用VISA不断读取串口的数据?并且串口上每次传来的字符串数量不同,但是希望每次读的数据都是刚刚从外设传输过来的数据,而不是一个固定的字符数量? 回答=可以在循
11、环中调用VISA Read函数来实现不断读取串口数据;如果希望读取串口上已经存在的信息,可以先通过VISA Bytes at Serial Port函数先获得串口字节信息,然后将这个内容传递给VISA Read函数就可以了。使用LabVIEW对采集的数据以二进制数据类型数组格式存储,需要了解数据的编排存储格式,以便其他软件读取该文件作后面的工作。 回答=根据存储数据的类型(如位数,精度等),判断数据单元,最前面两个单元为数组的行列值,即对于数组大小的定义,接下来的数据单元就是逐行罗列数组元素。如何使用Read Text File函数从文本文件中逐行读取数据? 回答=在Read Text Fil
12、e函数的输入输出端口无法设置读取行的功能,只有用鼠标右键点击该函数,从弹出的快捷菜单中选择Read Lines才能实现读取行的操作。将这个函数放到一个循环里,就可以实现逐行读取的目的了。用LabVIEW写的串口程序,生成EXE文件后却不能在没有LabVIEW的机器上运行,这台机器已经装好了相应的LabVIEW Run-Time。为什么? 回答=如果串口程序是使用VISA写的,就需要在目标机器上安装相应的VISA驱动。可以在目标机器上单独安装VISA驱动,也可在LabVIEW中使用打包功能将VISA驱动和应用程序一起做成一个安装文件,统一安装到目标机器上。如何实现LV与单片机通信 回答=可以通过
13、单片机的串口与台机的串口进行通信,这样的话,可以使用LV中的串口读写例程为基础来编写与单片机通信程序。当然单片机那端还是得用汇编或Keil C编。如何在labview中使用非NI的板卡 回答=使用dll节点来调用板卡提供的函数,一般分为三步。1:板卡初始化 2:读取数据 3:释放资源一般调用相关的函数来实现。 LabVIEW8.0程序中执行多个不同的任务,如何提高程序执行的效率? 回答=建议程序中这几个不同的任务采用并行结构(发了一个并行结构的例程给客户)。如果任务间需要数据传递,可以应用局部变量,但应用时应该注意防止竞争与冒险。LabVIEW8.0如何实现当程序执行完成以后前面板自动关闭?
14、回答=可以通过调用一个属性节点来实现。方法如下:1、调用Application Control里面的property node节点。2、右击该节点,并选择select classVI servervivi。3、再次右击该节点并选择change all to write。4、点击该节点选择front panel windowstate。5、最后在该节点的左面输入端创建一个常量,选择close即可。如何用Labview与可编程仪器通信,该仪器没有GPIB接口,但有com口,问能否用LV操作。 回答=可以通过LV的串口通信来解决仪器控制的问题。具体参看find example的Basic 2 Por
15、t Serial Write and Read.vi。 LV如何对Excel文件作数据续存? 回答=使用Excel Get Last Row.vi,先将Excel内已有数据的最后一行的行数得出,再于该行开始续存数据. labview8.0如何生成run-time安装文件? 回答=1、打开已经创建的工程项目在Build Specifications上右击,并选择创建一个installer。2、在弹出的对话框里选择additional installer,再选择run-time,最后点击OK关闭该对话框。3、在my installer上右键,选择build就可以了. LV当用鼠标点击Graph时,
16、该graph的大小变化了,当鼠标离去后graph的大小恢复到原来情况? 回答=可以应用一个Event structure来做,添加两个事件(一个是鼠标点击,另一个是鼠标离去).通过在这两个事件中分别赋给graph的PlotArearSize属性节点不同的值,来改变graph的大小.Labview如何实现由一个事件引发其他三个事件的顺序发生,且这三次事件间的时间间隔为500ms? 回答=可以引用状态机来设计程序,将触发事件作为状态机的状态控制参数,后面发生的三个事件依次作为状态机中的三个顺序状态.设置状态切换的时间间隔为500ms. 2.如何将EventStruct中捕获的事件传递到State
17、Diagram? 回答=在LV中,使用EventStruct捕获面板事件后,将不同的事件对应于不同的字符串和其它,再通过Queue将EventStruct中的字符串传递到StateDiagram中,再根据得到的字符串执行相应的处理。为什么在LabVIEW8.0 或者LabVIEW7.1下,在前面板添加Waveform Chart其相应的时间坐标轴会显示错误的绝对时间,如1904/01/01。 回答=首先,Chart所显示的曲线含有两个意义,可以看作是一个随时间变化的函数,因此这两个相关的量应该是成对出现,并且是从数据源而来,chart仅仅是一种表现形式。所以想要在横轴出现绝对时间除了直接在pr
18、operties/format and precision中将type改作absolute time外,具体的相关时间还需来自实际的信号源,对于虚拟的信号源快捷VI,其中也有Time Stamps需要设定为Absolute(date and time)。对于这种现象可以解释为:当一个chart未与任何数据源相连接的时候,默认的x轴为Floating point,并且properties/scale页面中关于x-axis的最大最小值的默认设定也为0和100,其意义是在一屏内显示100个点(并连接成曲线)。这样一个没有与任何数据源建立联系的图标,直接通过更改属性中的类型为绝对时间将会把proper
19、ties/scale页面中默认的最大最小值(0,100)以秒(或者是毫秒,这点并未得到考证。试验证明更改默认值到一定大小的时候与日期格式呈线性关系)为单位量化为时间轴上的两点,这显然是与absolute time不符,于是程序产生一个错误的时间内容在横轴上。使用Write to Binary File函数向二进制文件中写入一个一维数组,为什么在使用Read From Binary File将文件中的数据读取出来时,会多读出4个字节数据呢? 回答=因为写入数据的时候加入了头信息,多出的4个字节就是头信息,代表了数组或字符串的长度。在Write to Binary File中的Append Arr
20、ay or Sting Size这个输入端口中设置,其默认值为T,代表加入头信息;如果将其改为F,就不会多出这4个字节了。卸载LabVIEW 7.1时出现错误1603,接着出现错误1722或者1721,程序询问是否继续卸载操作。怎样消除该错误并正确卸载LabVIEW7.1? 回答=该错误通常出现在试图卸载某些共享组件的时候。按照以下步骤可以解决该问题。1.注意当错误发生的时候是在卸载哪一部分组件。一般来讲是在卸载LabVIEW核心部分或者LabVIEW Runtime Engine 的时候容易出现。2.当出现错误代码1603,弹出对话框提示继续卸载操作的时候,点击Yes按钮。3.如果卸载完成之
21、后提示需要重新启动计算机,点击No按钮。4.对于卸载过程中产生的错误,从CD中相应的文件夹中手动运行相应的MSI文件,路径如下:componentslvcorefulllvcorefull.msi或者componentslvruntimeenglvruntimeeng.msi点击修复按钮。5.修复之后再次运行这些msi,选择卸载按钮。这样,LabVIEW7.1就可以完全卸载如何用LabVIEW编程检测U盘? 回答=需要调用Windows API函数GetDriveTypeA,其函数返回值盘符类型的数据类型为长整型,输入参数为检测盘符。调用Call Library Function Node.v
22、i,选择windowssystem32kernel32.dll,选择GetDriveTypeA,设置return type为Numeric Signed 32-bit Integer;再添加参数nDrive,设置参数类型为STRING和格式为C String Pointer。运行时在输入端填上要检测的U盘盘符,返回结果为2时表示为DRIVE_REMOVABLE即为可移动的U盘。LV7如何实现FOR循环时点击前面板自设定的停止按钮,让VI停止运行,退出运行状态。 回答=FOR循环内放置Stop.vi,再由自设定的停止按钮控制,让VI停止运行。 如何在MAX中的VI Logger Tasks中配置
23、参数实现测试数据的记录? 回答=打开MAX,在VI Logger Tasks目录下单击鼠标右键,并选择Creat New。在弹出的窗口中选择NI-DAQ Task,点击Finish键。注意到在VI Logger Tasks目录下多出相应的Task目录,并且MAX右边的配置窗口出现了相关的配置界面。该界面下方分了不同的页面书签,默认为Task Attribution页,在该页的Acquisition Setting项中的Device栏选择相应的硬件,其他的参数诸如filter frequency, buffer setting等则根据具体的应用需求而定。切换到Virtual Channel页,单
24、击该页上方的Creat Channel按钮,弹出配置过程窗口,为任务的采集通道命名(注意,命名不得为ch*,其中*为数字),接下来的信号类型,输入信号范围等依具体情况依次设置。完成后窗口会自动关闭,同时在左边的Data Neighborhood中,Traditional NI-DAQ Virtual Channel下出现对应的通道名。在此点击VI Logger Tasks,并选择Virtual Channel标签页,发现新建的通道以及一些相应参数以表格的形式罗列,勾选左起第二列的Log Enable,在工具栏上点击磁盘图标Save Task。注意到工具栏最左端的箭头有灰色断裂状便成了白色完整装
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 labview 内部 资料
限制150内