干货!LabVIEW编程中,一定要记住这些实用技巧,打怪升级就靠它了!
扫描二维码
随时随地手机看文章
以下是一位工程师朋友分享的在使用LabVIEW进行编程的过程中,遇到的一些问题以及从中得到的心得体会,在这里分享给大家,希望对大家学习LabVIEW有所帮助。
常见错误及解决方法
Q1:一开始拿到题目,一无所知,对于系统的每一个部分,我们都不了解,不知如何下手。
这是我们组面对的最首要问题,往往这个问题是大多数人在学习一项新知识时必有的困惑,而解决问题的方法却是我们必要掌握的,要经历锻炼的。通常我会浏览官方论坛,查看NI工程师及其他人的技术文档,最后发现LabVIEW中有很多经典的范例,非常适合在有课题需要的时候学习掌握,最后在此基础上进行修改。
一方面,范例中都一定是可以运行的正确的程序,还会在关键部分有注释;另一方面,官方往往提供的都是基础的范例,比较适合初学者掌握学习,进行深度挖掘和改造。在我做地图调用的时候,我在官方的网站上down到了一个外国人调用google地图的example,受益匪浅。做工程的人,很多时候并不需要从最原始的东西开始研究,要懂得站在巨人的肩膀上眺望地平面。
Q2:字符串转换数值时,无法转换浮点小数。
需要用“分数/指数至字符串转换” 函数,该控件可从偏移量位置开始,使字符串中的下列字符:0-9、加号、减号、e、E、小数点(通常是句点)解析为工程、科学或分数格式的浮点数,通过数字返回。
Q3:串口传输数据并用波形图显示时,波形图无法实时显示连续的波形,每个数据都会掉到0再上升。
需要用到反馈节点,连接“数组插入”的n维数组脚和输出数组脚。
Q4:我们在做大作业的时候,因为控件较多,功能较复杂,当一个vi文件中出现多个while循环时,会出现有的部分程序始终不运行的情况。
只有当其中一个while循环中止后才会进入另一个while循环巡行。如果子vi中的循环不能退出,子vi节点就一直在运行。对于LabVIEW的数据流编程机制来讲,一个节点没有执行完,它的所有输出端口就不会有有效数据输出。解决方法:一是把子vi中的循环提出到主vi里来。二是使用全局变量,并在主vi中使用并行循环来控制子vi的结束。
Labview编程的主要特点是数据流形式,这便于VI大量的按照并行方式运行,优化了程序的计算性能。即使是这样,当出现循环结构时,也会出现部分程序不运行的情况。因为运行条件是输入是循环结构中的某部分局部变量。
Q5:当while循环函数内部含有for循环函数时,无法操作停止控件时while循环停止
如果停止控件放在for循环函数外while函数内,当for循环没有结束时,点击停止是无法使事件停止运行的。因为此时for循环没有结束,即使改变了停止控件的当前状态,它仍然不起作用。只用将停止控件放入for循环中,从for循环引出来连接到停止while循环的循环条件,才能有效停止。
Q6:使用串口时发生如下错误Unable to open session to “ASRL1::INSTR”
其他软件占用了串口,需要关闭其他应用程序。
Q7:每次使用时CPU占用过高,电脑卡着不能动。
循环里没有加延时。
Q8:调试GPS部分,创建数组为输入控件时,需要将数组赋特定的初值,发现每次关闭再打开vi文件时,数组中的内容会清空。
数组为输入控件时,每次打开vi文件都会初始化各个控件,在初始状态下,输入控件的值都会赋0,只有将要赋的定值设置为默认值,才会保留输入控件中想保留的数据,防止关闭软件造成的赋定值消失,不方便调试。
通过文件或注册表方式先把控件当前值存下来,再下次打开时再从文件或注册表把值读回来。使用VI Server技术在保存控件当前值为默认值,但这种方法只能处于编辑状态使用,在生成exe文件后不能使用。
Q9:当程序框图中程序很多,有的部分可以并行运行,有的部分可以顺序运行,如果将这些都放在一个while循环会出现无关的延迟。
建议使用顺序结构,按顺序结构来规定某些程序的执行顺序,这样不存在竞争。而把初始部分程序放在while循环外,特别是当初始程序中要调用比较复杂的引用时,比如3D模型的调用和初始化。
学习心得
隧道、移位寄存器、循环隧道、自动索引隧道的关系
隧道——局部变量,隧道相当于每次进来循环体之后把循环体外的值赋予循环体内的局部变量,所以不管循环体内执行几次,其结果也等同于只执行了一次。
移位寄存器——静态局部变量,每一次在循环体内执行,都会把右边移位寄存器出口的值用作左边入口的值,所以移位寄存器的值能一直保留。移位寄存器的特殊之处在于在循环结构两端的接线端是强制使用同一内存的。
因此,上一次迭代执行产生的某一值,传给移位寄存器右侧的接线端,如果下一次迭代运行需要用到这个数据,从移位寄存器左侧的接线端引出就可以了。
循环隧道——while默认下的隧道,数据传入传出的值不发生变化,是循环后的最后一直数
自动索引隧道——for循环默认下的隧道,隧道在循环内一侧会自动取出数组的元素,依顺序每次循环取出一个元素。用索引隧道传出数据,可以自动把循环内的数据组织成数组,最后输出的是一个数组的形式。
有的控件的参数可以为多个,比如0、1、2,且代表不同的意思。如何使用常量定义,使得它们有名字。
鼠标移动到相应引脚,点击创建常量,即可使用该方法下所有的类型,更加方便快捷。
还可以通过制作自定义类型的方法。
在使用簇时,总是出现数据连接类型错误。
这是因为簇中顺序可能与连接后端的顺序不一致,导致数据连接错误。
为了避免簇中用可能出现的错误,以及让簇应用起来更方便,使用簇最好遵循以下原则:
凡是用到簇的地方,就为它造一个类型自定义,在程序所有要用到这个簇的地方,都使用类型定义的实例。这样一是可以保证所有的簇都完全一致,避免图4 这种错误;二是一旦需要变动簇中的元素,只需在类型定义中更新就可以了,不必挨个 VI 修改。
凡是在需要解绑或捆绑的地方统统使用按名字解绑和按名字捆绑来实现。使用带名字的解绑和捆绑,可以直观的显示出捆绑中元素的名字,这样不会因为顺序的不同而导致错误的连线。
为了降低LabVIEW机器视觉的学习门槛,让更多人以较低的时间、经济成本学好LabVIEW机器视觉,发烧友学院联合金牌讲师汪成龙,推出了一个“老师+助教全程服务式教学”的线上训练营课程,每天仅需花30-60分钟跟班学习,课程导师+班级助教+班主任跟班教学,8周带你彻底学会LabVIEW机器视觉设计。
《八周LabVIEW视觉项目编程实战特训营》课程5月20号上线以来,第一期的30个名额已经全部报满,但是目前还是有很多学员在咨询。基于这种情况,我们决定追加5个名额,截至发稿前,名额仅剩4个,有兴趣的小伙伴,可以直接扫描下面二维码报名哦~
接下来给大家介绍一下训练营的基本情况~
1、这是个什么样的课程?
本训练营课程是目前全网唯一全面系统讲解LabVIEW视觉外测的案例视频教程。每个教程都是经过大量调查,完全从工程师就业角度量身定制,特训班为30人小班制,每天仅需花30-60分钟跟班学习,课程导师+班级助教+班主任跟班教学,8周带你彻底学会LabVIEW机器视觉设计。
2、特训班课程包含了哪些知识点?
1、 掌握视觉LabVIEW助手的主要功能算子、仿真图像算法、进行图像算法设计;
2、 根据项目需求快速确定算法流程、掌握摄像头采图、IO卡触发采集、串口、网口协议;
3、 掌握LabVIEW编写视觉软件框架、视觉检测中的定位、编写实际程序流程;
4、 掌握LabVIEW视觉实现模板匹配建立坐标系、进行ROI放射变换、检测有无算子、IO的相关知识点;
5、 巩固LabVIEW视觉助手函数使用方法、检测缺陷的方法、尺寸检测算法、外观检测的编程方法;
3、参与训练营有哪些服务?
● 特训营是一种有效的在线学习形式:
● 小班制、定制化学习计划、班主任+导师亲自带班。
● 每日学习交流、每日在线答疑、每周作业批改。
● 每周2-3次晚间语音直播(30-60min/场)。
● 8场在线直播(60-90min/场)。
● 8场以上远程教学(30-60min/场)。
● 1对1就业指导服务、结业效果考核、颁发结业证书。
4、学生或新手能不能学会?
老师团队从事LabVIEW视觉软件开发和在线教育十多年,每个新的教程都是经过大量调查完全根据初学者的心声量身定制,始终站在初学者的角度去考虑去打磨视频教程与开发课程,绝对通俗易懂,只要你肯下功夫学,加上专业的技术指导,跟着龙哥视觉培训团队的思维你一定能够掌握LabVIEW视觉软件设计思路,设计出完全属于你自己的自动化软件。
5、老手有没有必要加入训练营?
龙哥是资深的LabVIEW视觉工程师,可谓是多年的技术员经验叠加在多年的教育经验之上,在视频教程中注入了作者多年的研发与教学经验,总结了很多LabVIEW视觉方面的套路和架构,一定也能让老手耳目一新,让你在一定程度上绕开软件开发中的各种坑,扫除你的技术盲点。
想了解的详细的学习计划可以加班主任木木:18123773580的微信(备注:训练营)或者进LabVIEW群咨询哦~
(班主任微信:18123773580)
(LabVIEW群)
更多训练营详情点击阅读原文了解