注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

LabATSS

关注自动测试软件

 
 
 

日志

 
 

LabVIEW 实战编程代码库之自动测试调用框架  

2017-06-13 21:48:01|  分类: LabVIEW |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
LabVIEW实战编程代码库系列文章都是我个人在日常测试工作和科研项目开发中,使用LabVIEW虚拟仪器编程语言完成实际问题时的解决方案,通过写博客进行文档记录化,主要目的还是个人汇总总结,复盘提高,当然如果你碰到类似问题情景的时候,也可以予以借鉴参考,另外你也可以看看在实战项目中都涉及了那些技术基础点,对了我这里的实战指的都是能挣来白花花银子的工程实际项目应用。

自动测试调用框架是为了满足我们平时通用射频、微波和基础电参量测试任务而研发的插件式调用平台框架,支持VISA协议栈,可以对测试设备通过GPIBUSBLAN口进行计算机程控测试;它主要由调用平台架构和插件接口子VI系列两大组成部分,其中调用的核心机理就是插件架构(LabVIEW Plug-Ins Architecture),即通过编程配置VI Server 动态调用拥有统一接口(输入/输出)界面形式的插件程序VI,并将界面显示逻辑、数据报告处理及产生,配置文件保存数据库等全部测试共享功能集成到调用平台之上,从而达到框架逻辑复用的良好效果。而被调用程序VI借助虚拟仪器本身的强大硬件驱动库和自己研发的单点复测队列数据结构,自动数据判定和单位转换等辅助VI工具类软件包,可以快速便捷地完成特定的测试项目(如脉冲波形的上升时间、正弦信号的幅度平坦度、谐波虚假信号测试)研制开发,并且由于插件结构通信接口统一可以很方便的进行扩展,非常适合团队快速开发。

LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS
 
LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS
 

程序整体结构层次分为了四个层次,分别为表示层、调用层、逻辑层、驱动层,其中最上层为用户界面接口(GUI),完成测试条件和相应信息的输入,测试过程数据呈现及错误处理,主要包含的编程知识技术有多线程启动画面(Splash),用户界面事件结构,界面控件的合理应用,利用状态机和功能全局函数变量的组件开发技术(LCOD),显示控件的参考引用及动态编程修改属性节点设置值,全局变量的使用,还使用了报告生成器(Report Generationg Toolkit)及数据库连接(Database Connective Toolkit)两项LabVIEW工具包软件,最后还有关键的可执行文件EXE的生成配置(Building Config)。

LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS
 
LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS
 

LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS
 

LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS
 
 

核心调用层通过编程配置VI Server 动态调用拥有统一接口(输入/输出)形式的插件程序VI来完成调用下层插件VI层次目标,并完成调用机制的编写,按照一定的调用策略进行动态调用,编写该软件结构时我对TestStand尚不了解,实际上自己实现的功能是TestStand的调用的一个功能子集。另外在动态调用过程还实现了故障冗余设计,定时保存测试过程数据,防止计算机硬件崩溃或者误操作致使数据大量丢失。该层次所使用的编程知识技术有VI Server动态装载和运行插件子VI、使用二进制文件保存过程测试数据、目录结构函数的使用,错误集约处理,队列数据结构,多参量模态提示窗口开发。


LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS

 


LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS

 


LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS

 

LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS

 在逻辑层中主要负责编写的是被上层核心调用层调用的子VI系列,每个子VI都是针对某个特定的测试项目,子VI中按照常规的测控三段论进行大块的切分,初始化配置、循环单点复测测试、关闭,一般采用的顺序加上循环的逻辑结构,为了快速完成一项专用测试项目的VI开发,特别开发单位转换功能VI,上下限判断VI以及支持单点复测队列数据抽象类型,这些公共软件工具类VI大大提升了测试开发的效率,该层次所涉及的代码知识点主要是所用的基础概念较多,包括基本程序结构(顺序、条件、循环)及数据表达、二维数据表格化数据处理等,另外逻辑层的代码VI为了方便修改以及调试,因此是采用的源代码发布的方式。


LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS

 

LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS

 

LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS

 

LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS

 

由于分层和模块化的引入,将编程难点和大部分重复性工作从逻辑层剥离,分别提升至核心调用层和表示呈现层,大大降低了开发难度并提升了开发效率,单位内的工程师经过简单培训,在有技术基础背景领域下很快的就能独立的完成开发某项专用测试任务。

 驱动层主要是使用NI公司预先编译好的硬件设备驱动,如有不满足的情况也只需要进行少量程控命令文本直写功能即可,这也是电测试工程师选择LabVIEW的最大的优惠福利。

自动测试调用框架简要数据统计:该系统一共编写了471VI 由于采用了面向对象LVOOP的封装技术,因此相应增加了针对很多对象属性的微小读写VI,其中主程序Main.vi的调用的主要VI数目为122个。按照NI公司的程序类型划分属于中大型程序。

LabVIEW 实战编程代码库之自动测试调用框架 - labats - LabATSS

 

该项目的开发前后一共历时三个月左右的时间(200710月份至12月份),主要核心概念和思路基本上是在一个月之内完成的,但是前期我们有其他版本的积累,以及后期边测试边修补经历了大约一年的时间,后面还经历了两次LabVIEW版本本身的升级更替,分别升级到2010版本和2012版本。目前自动测试调用框架还在为工作单位创造着不菲的经济价值,并且培训了一批软件开发工程师。

本文中所使用及涉及的LabVIEW知识技术,绝大多数均是自己从LabVIEW所自带的样例例程和图书中自学修炼而来,虽然说插件结构当下在各个讲授LabVIEW图书中均有涉猎,但是我最早(十年前)却是从《LabVIEW GUI 》英文图书中看到VI Server插件结构的样例,所以说学习LabVIEW最好的方式,还是从实际项目中需求背景出发,恶补各类缺少必要的知识点,做好分解动作练习(这点虚拟仪器VI编程有得天独厚的优势,随便拖一段代码放到独立VI中跑一跑,再结合高亮显示执行,用好调试探针功能,就可以看到实际运行效果,快速理解代码段含义),将不成熟但是可用的软件代码再返回至实战项目中去,受实际测试检验,从而不断迭代动态更新软件代码,在此过程中促使自己不断学习与进步。

 

当然现在的情景和以前完全不一样了,一个项目可能很难给你充分的时间去学习各项技能及尝试各种情况,用比较时髦的话来讲就是试错成本太高难易承受,并且在实际学习LabVIEW的过程中,我也是花费了太多的无效时间和走了很多的冤枉路,如果在项目经费许可的情况下,我是支持购买必要、急需的培训和咨询服务的,还是能够节省下大量的精力和时间,起码一些专家已经走过的绝境、死路你就不用再瞎闯一回了,但是这里面有个关键因素就是给你培训和咨询的人确确实实是你涉足行业的领域专家才行,编程语言只是工具,关键还是看领域专家如何应用抽象和分解将问题用编程语言工具予以解决!

 

其实,絮絮叨叨说了这么多,关键还是先动手用LabVIEW把你的想法描绘出来,编程高手的第一步都是先要从动手模仿开始的!

  评论这张
 
阅读(57)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017