LabVIEW高级编程技巧PPT推荐.ppt
- 文档编号:14314569
- 上传时间:2022-10-22
- 格式:PPT
- 页数:70
- 大小:2.40MB
LabVIEW高级编程技巧PPT推荐.ppt
《LabVIEW高级编程技巧PPT推荐.ppt》由会员分享,可在线阅读,更多相关《LabVIEW高级编程技巧PPT推荐.ppt(70页珍藏版)》请在冰豆网上搜索。
研发,区域咨询,技术支持,市场,NI客户的分布,超过25,000个客户分布在多达80个国家财富500强中95的制造型企业,1.调试指示器,灵活的调试工具,可详细显示数据线上通过的数据指示器的操作可以体现VI的灵活性和强大功能传统的调试指示器存在一些缺点,如只能显示数组中的一个元素,用户定义的调试指示器,能显示各种数据类型可定制指示器外观可定制指示器处理功能设置条件断点,定制你的需求,指示器不仅仅可以显示数据将数据录入文件对两个指示器之间的执行进行定时计算总的调用次数或是每秒的调用次数,内建的定制指示器,在数据连线上点击鼠标右键菜单显示所有相关的指示器指示器存放在目录vi.lib_probesdefault下,Keepgraphicsbelowthetextandtotheright,客户指示器的结构,包含一个控件控件的数据类型就是所指示的数据线包含一个指示器Boolean,类似条件断点True=暂停执行False=继续执行,Keepgraphicsbelowthetextandtotheright,2.定时循环,精确的定时while循环多个时钟频率的定时反馈,动态定时特性多达128个循环优先级examplesgeneraltimedloop.llb,定时循环的配置,定时循环,3.基于事件的编程,管理用户界面,通常采用的方法有中断响应和事件驱动中断响应采用轮询机制处理,非常占用CPU资源,还可能会丢失用户界面的响应事件驱动无需轮询即可捕捉到相关事件,顺序处理捕捉到的所有事件,不会丢失也不会颠倒顺序,事件举例,事件结构不需要轮询就可以捕捉到自定义菜单上的用户选择ItemTag返回菜单条目MenuRef返回菜单的refnum,VirtualInstrument,事件类型,Application,事件举例:
退出应用程序超时,Control,事件举例:
关闭前面板VI上的鼠标移动,事件举例:
改变控件数值特定控件上的鼠标移动,通知事件和可滤除事件,通知事件通知LabVIEW发生了一个用户行为;
只能在EventDataNode中使用可滤除事件在用户界面处理之前验证或改变事件数据,避免影响VI;
可在EventFilterNode和EventDataNode中使用,LabVIEW7新事件,更多的用户界面事件动态注册的事件用户定义的事件ActiveX事件,事件结构的组成部分,EventSelectorLabel确定观察的事件Timeout等待事件的毫秒数;
缺省值1(无限期)DefaultedTunnels新型tunnel,允许未连线的事件案例提供缺省值DynamicEventTerminals用于动态事件的注册,事件结构的组成部分,EventDataNode确定事件发生时LV提供的数据,与UnbundleByName函数类似EventFilterNode确定EventDataNode中可提供的数据子集,可供事件案例修改,事件结构的基本使用,通常在While循环中使用每次循环只处理一次事件,其它时间休眠在事件结构的左侧边框端口上可获得事件数据,事件结构的配置,通过对话框来配置事件,右击事件结构的边框,选择“EditEventsHandledbyThisCase”,事件注册和面板锁定,包含事件结构的VI被预留以后,事件就成为已注册的已注册事件发生后,会进入队列等待直到相应的事件结构开始执行,事件不会丢失也不会出现顺序混乱默认情况下,前面板被锁定直到事件被处理完可以关闭锁定,但只针对过滤事件VI变成空闲后,事件被注销,3.1动态事件,下列情况时,需要动态注册事件:
事件注册只能发生在应用程序的某些部分在程序运行过程中需要改变哪些VIs或控件可以发生事件在subVI中处理事件,而不是仅在注册事件的VI中,动态事件,RegisterForEventsEventStructureUnregisterForEventsCreateUserEventGenerateUserEventDestroyUserEvent,编程模型,注册事件,连接到事件结构,选择动态事件,注销事件,3.2程序产生的(用户)事件,RegisterForEventsEventStructureUnregisterForEventsCreateUserEventGenerateUserEventDestroyUserEvent,用户事件编程模型,创建并注册用户事件,产生用户事件,注销用户事件,消灭用户事件,用户事件举例,3.3ActiveX事件,RegisterEventCallback,ActiveX编程模型,注册ActiveX事件,选择事件,创建和编辑CallbackVI,总结:
事件处理结构,允许在subvi中处理事件代码提供统一的,简化的事件处理机制用户界面接口控制外部代码硬件触发用户定义事件注册和非注册事件,4.改善VI的性能,改进内存使用使用高效数组函数谨慎处理字符串和数组避免不必要的复杂数据结构减少I/O开销减少I/O调用的次数减少开启和关闭资源的次数减少屏幕更新,4.1改进内存使用,LabVIEW处理了大部分内存管理的细节资源分配,复制,释放,溢出减少程序框图的大小提高可读性和稳定性内存管理自动进行,你不需要过多的干预理解LabVIEW是何时并如何为你“代劳”内存管理的可以大大提高对内存使用的效率,VI在内存中的数据结构,FrontPanelBlockDiagramCode框图编译成机器码DataSpaceControl/indicator数值Blockdiagram常量动态定义的数据,VI何时加载到内存中,始终载入data平台符合时载入Code(MacOS,Windows,Sun,Linux)Panel和Diagram在必要时载入(recompiling),MainVI,SubVI,Alwaysinmemory,Residentsometimes,FrontPanel,BlockDiagram,Code,DataSpace,FrontPanel,BlockDiagram,Code,DataSpace,内存使用情况,ToolsAdvancedProfileVIs勾选“ProfileMemoryUsage”&
“MemoryUsage”在执行应用程序之前点击“Start”状态只在程序执行完成后更新程序执行过程中内存使用情况不能被查看,监测内存使用,显示内存分配,FileToolsAdvancedShowBufferAllocations,内存优化,LabVIEW尽量减少内存再分配需要重新分配内存的函数BuildArrayConcatenateStrings,HighMemoryReallocationLowMemoryReallocation,最佳内存使用,尽量使用subVIs不要滥用全局和局部变量只在必要时打开subVI前面板高效地创建和处理数组不使用大的、复杂的数据类型,coerciondots,构建和处理数组,使用具有inplaceness特点的数组函数Inplaceness是指函数inplace操作数据,而不会另外建立一个数据备份。
子数组,LabVIEW尽可能的重用内存缓冲子数组不存储实际的数据子数组在必要时会生成真实的数组由于子数组不要对数据进行拷贝,因此提高了程序的执行速度,子数组,子数组函数返回一个7499x2的子数组这个例子程序需要执行2秒钟2GHzPentium4,子数组,在函数ArraySubset之前引线执行只需5毫秒子数组到真实数组的生成发生在循环之前,4.2减少I/O开销,I/OVIs比计算操作多花很多时间把I/O调用降低到最少每次调用传递尽可能多的数据使用多点DAQVIs而不是单点VIs,SlowMethod(manyI/Ocalls),FastMethod(OneI/Ocall),减少开启和关闭资源,SlowMethod,FastMethod,使用底层VIs来减少开启和关闭资源的次数SlowMethod中,文件被打开和关闭100次FastMethod中,文件只打开和关闭1次,保持资源的打开状态,使用底层的文件打开和关闭函数连接文件读写函数open,read/write的引用提高读速度操作系统不需检查权限、分配新的文件描述符等提高写文件的速度允许操作系统缓冲写操作,标准化,LabVIEW以“大字端”形式读写数据X86机器采用“小字端”形式存储数据选择不需要转换的数据类型如:
U8,I8,String(data),SGL,DBL可以编程转换FlattentostringTypecastManualcode,4.3减少屏幕显示的更新,使用高效的controls和indicatorsGraphs和charts在接收新数据的时候会重新画图,从而影响执行速度设计subVI的前面板在执行中保持关闭来减少显示开销使用多点更新的画图方法最小化chart更新的次数获得最高的数据显示速率,屏幕显示实例,SlowMethod(每次更新一点),FastMethod(每次更新100点),减少循环中不必要的计算,避免将产生相同结果的运算放在循环内避免在循环中不必要的访问全局变量,减少SubVI开销,每个subVI都会有一些开销(大概几十微秒);
虽然看起来不大,但如果是在一个循环结构中,就会累加出一个很大结果。
在高速运行的循环结构中,不要显示subVI的前面板如果可能,将循环结构移到subVI中完成。
全局和局部变量,每一次变量的读操作都会给数据生成一个新的缓冲区在使用大数组、字符串或复杂数据结构时会带来很大影响从内存使用和执行速度来看,使用数据线永远是更有效的方法,属性节点,使用属性节点会引起线程间的交换,从而降低效率如果只是为了更新控件的值,不要使用属性节点如果同时改变其它属性,更新数值不会造成更大损失,因为线程交换已经发生了,更新前面板控件,GoodBetterBest,创建高效的平行框图,LabVIEW周期性地在平行循环间切换使用Wait(ms)function确保不太重要的循环占用较少的处理器时间,5.共享库函数,What?
Windows中的.dll,UNIX/Linux中的.so,等等Why?
降低磁盘空间和内存占用How?
应用程序只在需要的时候调用库函数程序开始执行以后,由运行链接编辑器来处理所有调用,动态链接库(DLL),MicrosoftWindows中的一种软件模块包含可执行代码和可被Windows应用程序或其它DLL调用的数据函数和数据只有在运行状态下,被Windows应用程序或其它DLL调用时才被加载和链接一个DLL包括:
一个特殊函数(DllMain)几个编程者自定义来完成常用任务的函数,DLL特性,不能单独运行的可执行文件应用程序要求时,由操作系统加载应用程序把DLL代码作为自己二进制文件的一部分来使用应用程序不需要知道原始DLL是由什么语言编写的,也不需要清楚这些功能是如何实现的。
DLL就像一个有输出函数的黑盒子,LabVIEW中调用SharedLibrary/DLL,AdvancedCall
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LabVIEW 高级 编程 技巧
![提示](https://static.bdocx.com/images/bang_tan.gif)