您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 10年Labview编程经验
当我开始在键盘上敲打出这句话的时候,我已经使用LabVIEW7年了。7年的时间,就算天赋平平也可以积攒下一箩筐可供参考的经验了。所以我打算利用今后的闲暇时间写一些这方面的东西,既可以同大家交流,也是作为自己这七年工作的总结。还是在上大学的时候,有一次老师让编写一段软件,用来模拟一个控制系统:给它一个激励信号,然后显示出它的输出信号。那时我就想过,可以把每一个简单的传递函数都做成一个个小方块,使用的时候可以选择需要的函数模块,用线把它们连起来,这样就可以方便地搭建出各种复杂系统。后来,我第一次看到别人给我演示的LabVIEW编程,就是把一些小方块用线连起来,完成了一段程序。我当时就感觉到,这和我曾经有过的想法多么相似啊。一种亲切感油然而生,从此我对LabVIEW的喜爱就一直胜过其他的编程语言。LabVIEW的第一个版本发布于1986年,是在Macintosh机上实现的,后来才移植到了PC机上,并且LabVIEW从未放弃过对跨平台的支持。这也给LabVIEW带来了一些麻烦。最明显的就是LabVIEW开发环境的界面风格。它总是与一般的Windows应用程序有些格格不入:面板是深灰色的,按键钮是看起来别别扭扭的3D模样。还有一些可能不太容易发现:比如对于整数的存储,LabVIEW即便是运行在x86系统上,采用的也是高地址位存高位数据(big-ending)。这与我们习惯了的x86CPU使用的格式正相反,这往往给编写存取二进制文件带来了不多不少的麻烦。我接触过的最早的LabVIEW版本是4.0版,发布包是一个装有十几张三寸软盘的大盒子。安装的时候要按顺序把软盘一个一个塞到计算机里。尽管当时LabVIEW的界面不是很好看,但我还是非常喜欢它。真方便呐!比如说要画一个开关,用LabVIEW一拖就行了。如果要自己动手用C语言设计一个好看的开关,,那得费多少时间啊!我尤其喜欢它通过连线来编程的方式,尽管很多熟悉了文本编程语言的人刚开始时会对这种图形化编程方式非常不适应。从4.0到现在的8.2,LabVIEW的一些技术革新给我留下了非常深的印象。比如说LabVIEW5中实现了多线程运行;LabVIEW6里漂亮的3D控件,和对事件响应的支持;LabVIEW7中的ExpressVI以及LabVIEW8中的工程库。这些新特性都已成为了现在LabVIEW版本中富有特色并不可缺少的一部分了。我对使用LabVIEW编程的认识在这些年里经历了不少转变。刚开始接触LabVIEW的时候,第一印象就是觉得这东西编程序比C语言简单多了,尤其在设计界面时确实方便简易。LabVIEW是一种真正意义上的图形化编程语言。与文本编程语言,如C、Basic等相比,它在编程过程中有更详细的提示信息,如函数的功能、参数类型等等,程序员再不需要去记忆这些枯燥的信息了。编写风格良好的图形程序代码要比文本代码更加清晰直观,便于阅读。刚开始用LabVIEW编程时,我连一本相关的书籍都没读过,差不多完全靠自己摸索。当时,市面上几乎没有有关LabVIEW的中文书籍,而阅读英文资料又感觉得太累。但是,靠自己摸索的方法也有好处,最明显的就是有成就感:自己琢磨着解决了一个问题,比模仿别人的方法做更令人兴奋。再者,他人的方案并不一定是最佳的,自己独自思索就不至于被他人的方案局限住思路。当然,我不会满足于只用LabVIEW编写一些简单的程序。我还希望能够用它来编写大型的软件,并且提高自己的开发效率。这时,自己的编程水平有一个质的提高,不阅读相关的书籍资料就不行了。有些问题,不读书,自己可能永远都得不到最佳的答案。同样,有些LabVIEW的功能,如果不阅读原始资料,自己也许永远都掌握不了。于是,我把能得到的LabVIEW的中高级教程都看了一遍。因为自己有了一定的基础,我就可以在读书的过程中反思自己以前的编程方法是否合理,高效。我觉得最好的LabVIEW教程还是NI自己编写的LabVIEW中高级教程。但书本中一般原理讲得多,具体的编程技巧涉及得少,所以还必须大量阅读别人的代码,才能学习到更多更好的编程方法。随着时间的流逝,我慢慢地产生了LabVIEW应当进一步改善的想法。作为一名忠实的LabVIEW语言的使用者,我衷心地期望着LabVIEW在日后也可以成为一种被广为使用的通用编程语言,能够在更广泛的领域与C,Java等争得一席之地。LabVIEW虽然有它独特的优势,但其不足之处也很明显。我在编程过程中就曾感觉到它很多的使用不方便之处。下一步,我追求的目标就是能尽自己所能,对LabVIEW作一些改进和完善,使它更适应于通用编程之用。如何学习LabVIEW根据我自己的观察,学习LabVIEW一般有以下三种方式:系统型学习方法、探索型学习方法和目标驱动型学习方法。这三种方法之间并不矛盾,可以在不同的时段使用不同的方法。每个人可以根据自己的个性特点和所处环境选择一个适合自己的学习方案。系统型学习方案是传统的学习方法,学生学习多是按此方法。它是指按照别人制定好的学习方案一步一步学习掌握一门知识。学习效果如何,主要取决于教师和教材的水平。若选此方案学习LabVIEW,最高效的方法莫过于参加NI公司的LabVIEW培训课程。基本上,完全没接触过LabVIEW的学员可以在一星期的时间内达到编写简单程序的程度。此外,现在很多大学都开有LabVIEW课程,方便了在校生学习。自学也可以采用此方案。找一本教程类的书籍,按照书中指导一步一步学习。教程类的书籍应当侧重于解释LabVIEW的编程思想以及原理;有些书仅偏重于罗列LabVIEW中每个函数或VI的功能,则不适合用于此种学习方案。探索型学习方法适合喜好自己钻研的人。同样一个技巧,如果是自己发现的,比从他人那里的来会更有成就感。任何一个教程都不可能覆盖到LabVIEW的全部功能,有心得学员不妨自己打开书中未曾介绍到的那些菜单或者函数选板,尝试一下它们都是做什么用的。在真正动手摆弄每个新东西之前,打开LabVIEW的即时帮助窗口,阅读一下相关说明可以大大加快学习过程。比如,打开“应用程序控制”函数选板,发现这里有一项“选板编辑”。好像没有任何一本书里介绍过这个功能嘛,这是干啥用的呢?如果没任何提示,也是无从下手去尝试的。打开LabVIEW的及时帮助,可以看到它对这个功能的简单介绍。进入“详细帮助信息”,会得到更全面的说明。再自己动手实践一下,就基本可以掌握此功能了。阅读他人代码也是一个很好的学习方法。自己的探索总是有思维局限性的,他人解决问题的方法可以大大拓宽自己思路。我介绍过的编程经验中,很大一部分都不是我自己凭空想出来的,而是借鉴与别人的LabVIEW代码。目标驱动型学习方法是公司员工中最常见的学习方式了。工作后,如果不是个人有兴趣,多数人不会浪费时间去学习工作中用不到的知识。等老板布置了具体项目或者工作任务后再学习相关知识,效率更高。学也只要够解决眼前问题就行了。针对这种情况,请教身边牛人或者公司前辈是最好的学习方法。如果周围的人不能解决问题,到论坛上发贴,寻求更广泛的帮助。推荐一个论坛。首先是NI的官方论坛,这里会有NI的技术支持和研发工程师来回答问题。如果英文够好,最好是到它的英文版面去提问,英文讨论区人气更旺,容易找到答案。LAVA是官方之外最大的LabVIEW社区,也是寻求帮助的好地方。如果平时用WindowsLiveMessenger,可以加入,这是个msn讨论LabVIEW的群。在它上面讨论问题最大的好处是可以及时得到回应。我见过几个工程师在项目中遇到了难题,于是来报名参加LabVIEW的培训课程,以为上完课可以解决自己的问题。但实际上完全误解了培训课程的意义,培训课程是为了帮助那些想要系统学习LabVIEW知识的人,而不专注于任何一个具体问题。LabVIEW工程资源管理器从8.0开始,LabVIEW增加了一个工程资源管理器功能。LabVIEW工程资源管理器就是一个可以方便查看、调整程序系统结构的工作区。与VC,VB等语言中的project,workspace相类似。Project的出现使得LabVIEW对于大项目的管理更加方便。图1:LabVIEW工程资源管理器要想充分利用LabVIEW工程资源管理器带来的好处,那就需要我们改变一些以往的LabVIEW编程习惯。譬如说,在开始一个新的项目的时候,在LabVIEW8以前的版本中,我们最先创建的是程序的主VI;而现在,我们首先创建的应该是一个空的工程(Project),再在这个工程中添加相应的VI和各种组件。工程管理器还有如下优点:工程的树形结构表示了程序中VI的调用层次关系,利用VI的快捷菜单可以查看到调用该VI的程序,以及该VI的子程序,而不必再使用VIHierarchy来查看。在工程资源管理器的File页就可以直接调整文件存放的磁盘位置,而不必再另外打开操作系统提供的文件浏览器。在工程资源管理器中集成源代码管理功能,不需要再使用源代码管理工具提供的界面了。(源代码管理工具是用来进行软件源代码版本控制的。大型软件开发通常需要这样的工具,用来记录每一次代码的修改、同时开发同一软件的不同版本、方便多人同时对同一段代码进行修改等。)一、工程的结构图1是一个工程资源管理器的截图。它用一个树形的结构来表示工程中所有的VI、各种组件和文件设置等。树形结构的最顶层是工程的名称。第二层是工程运行的目标机器。假如我的机器上只装了普通台式机版本的LabVIEW,大家只能看到一个目标:“MyComputer”。假如我的计算机上还装了LabVIEWRT,FPGA等用于其它硬件环境的LabVIEW,那么在这一层还会出现其它那些目标设备。第三层以下就是工程中所有使用到的文件了。用户可以添加虚拟文件夹,按自己的喜好组织文件结构。LabVIEW从8.0起,文件及其它组件种类一下子丰富了许多。以前基本就只有VI和控件两种文件,现在又多了Library,Class,XControl,XNode,共享变量等等。安装了其他功能模块,组件的种类还会更多。右击树状结构中的每个条目,还可看到针对他们的更多设置。在LabVIEW8之前,若要把VI源文件构建成可执行文件,必须使用Tools菜单下的APPBuilder工具。现在这个工具也被集成到了工程管理器中。在目标机器的最后一个条目“BuildSpecification”中包含了把源代码配置成为EXE,DLL等的信息。在旧版本LabVIEW中,保存VI时的一些高级选项,比如添加密码、移除VI前面板,程序框图等选项;以及其它一些与运行有关的选项,例如禁止调试,自动弹出错误框等选项,也都被合并到此处了。在BuildSourceDistribution中可以找到相应的设置。在旧版本LabVIEW中,是绝对不允许把两个文件名相同,但内容不同的VI同时装入内存的。这也可以理解,VI就好比是C语言中的函数,如果两个函数名相同,那到时究竟应该使用哪一个呢?但这毕竟不方便,比如我们需要同时运行两个程序,他们当中都有排序的功能。为了方便,VI的名字都起名为“Sort.vi”,但是他们的代码其实并不相同。为了让两个程序同时正常工作,我们应该允许在这两个程序内分别使用两个文件名相同,但内容不同的VI。在版本8中,LabVIEW对此作了两点改进,一是引进了库的概念,类似给VI增加了名字空间。在不同的库中的VI,即时文件名相同,它们的VI名字实际上也是不同的,因为VI名还包括库名作为前缀。(可以参考:!5852D4F797C53FB6!783.entry)二是增加了运行环境的概念。LabVIEW中,每一个工程都是一个独立的运行环境。为每一个的程序建立一个单独的工程,它们就有了一个独立的运行环境。一个运行环境中的VI不会影响到其它运行环境中的程序。这样,同时运行分属不同工程的两个程序,它们之间即便用到了同名的VI,也不会相互影响。但在单个工程中,还是不允许出现同名又不在库中的VI
本文标题:10年Labview编程经验
链接地址:https://www.777doc.com/doc-3056759 .html