“会用LabVIEW,但是却没有听说TestStand,好像有点说不过去吧!(上)

有小伙伴在后台让大叔推荐一下TestStand的学习资源,其实我接触TestStand也很晚,在这里只是分享一下我所掌握的一下资讯内容,内容有点长,分为上下两篇,大家可以共同提高!

我接触和使用LabVIEW比较早,2001年从LabVIEW 6i 版本开始上手摸着石头过河式开发,断断续续,分分合合与LabVIEW的开发缘分倒也一致都在!

“会用LabVIEW,但是却没有听说TestStand,好像有点说不过去吧!(上)

特别警示:文章非常的冗长和啰嗦,如果只对TestStand感兴趣可只看第3部分内容。

01 关于框架的你要先了解的一些事

“编程工作从大体上来分,你不是在开发自己的框架中,就是在别人的框架下进行着开发。”

在测量测控以及计量检测长期开发过程中,随着开发被测类型种类的增多,开发范围的扩展,你就会发现:除了使用到的LabVIEW编程语言提供的编程结构,字符串,界面提示框等基础库函数外,在不同的业务类型的测试测控中都会有重复的代码段,并且重复的主要表现形式有两种,一种是低层的明显可以识别出的显式共用基础功能代码段,另外一种是隐式且较为抽象的高层算法策略,为了消除重复冗余,显式低层的共用基础功能代码段可以封装为功能函数子Vi,并且进一步按较大的功能模块分组形成打包库(lvlib)结构或者是基础功能类,也即基础性框架(Framework),而隐式高层算法策略要着眼于“关注点分离”的概念,按照分层、分块的思想切分成不同逻辑单元,应用不同的面向过程和面向对象编程范型形成可以复用的高层逻辑框架,不管是高层模块还是底层支持代码都提供了的贯穿于多种相似的应用程序的能力,即表现出一致性,这都是框架代码的体现形式。

这一篇文章主要是讲述Framework框架的概念、层次划分、测量测控主流软件框架应用、调用框架的展示,以及如何开发自己的类库和我们自己以往的相关开发经验,由于内容较多故分解成为上下两个部分。

首先,让我们先从框架(Framework)的基本概念、三层分类以及设计三特性开始学习,“Framework”在英文字典中的意思是骨架、框架,而在软件工程领域中,“Framework指的是一组同时具备一致性、可重用性、可扩展性三准则的类库。

框架(Framework)提供了一种构建软件系统所必需的复用基本架构及功能,协助软件开发者快速开发应用程序,并且能够显著降低出错率,明显提升开发效率,能够提供显著的规模经济效益,自从有了框架,开发人员就无须从头开始编写应用程序。

框架 (Framework)会提供大部分部件,这些部件经过开发人员的定制和拼装,快速实现设计;但是,框架(特别是领域专属框架)也相应的用规定套路固限住了开发人员的思维,强制大家遵循规定的规范来开发应用程序。

图片

在了解了框架的三个层次分类后,让我们再进一步学习一下框架设计的三个设计准则:一致性、可重用性、可扩展性;一致性是指框架代码在被应用时不受外界协作通信代码的影响而始终如一的提供设计之初的功能,一致性体现在接口服务的一致性,用户界面的一致性,代码使用场景的一致性等等具体方面上;而可重用性则是程序代码从重复的片段到逐渐封装成功能函数,进而根据职责内聚封装为模组(类库)的程序进化的最大内驱力。

从另外一个角度考虑也是代码经济学的最重要的体现,可重用性可以体现为代码重用,也可以提供为概念重用,在面向对象编程范型中,更加强调的是概念重用,是面向对象设计原则中依赖反转的核心思想;框架可扩展性是提供灵活、适用的代码结构所必需具备的能力,也是可重用性的重要技术保障手段,常常通过插件结构提供扩展能力。

02 自己的“玩具”框架

上面主要是概念性的框架分类介绍,下面结合我们自己的编程经历,讲讲对框架(Framework)开发认知过程:记得我们刚刚开始接触LabVIEW编程时,那时候的版本还是6i,毫无软件工程和程序框架(Program Framework)的任何的概念,只是心急火燎的想把手头的重复体力工作通过编程映射、转换为可以自动测试的应用程序,最开始从LabVIEW系统自带的硬件设备驱动和编程范例样程直接改造,以适应我们的测试具体要求.

因为是自产自销的开发模式,所以那时候根本就不明白啥叫用户界面,如何发布应用程序,就在开发编辑环境下边修改边直接运行,所有的数据采集完成后就通过一个第三方基于(ActiveX)的Excel工具函数包写入到定制好的Excel被测设备标准模板当中去,Excel电子表格文件即是我们的运行时界面,即呈现数据采集过程,又是最终测试完成后数据保存的文档载体,程序主框图代码虽然也是按照被测项目的项目封装要求具体分解成独立子VI调用函数,但是调用过程却是直接写死在顺序帧结构节点中,有时候测试项目需要定制,就通过与项目一一对应布尔判断来选择,各个子程序Vi中到处都是Crtl+C/V的重复代码片段,杂乱无序的高底层逻辑代码混叠交织在一起,维护和修改代码痛苦不堪,虽然程序代码逻辑现在回想起来,简直是惨不忍睹,不堪入目,就更不要提什么封装性、复用性、一致性、可扩展性等等这些阳春白雪的软件工程名词了,但是由于是自己开发自己改,所以的的确确是能用,就像一辆二十年的老旧拖拉机也比人跑的快,因此也就实打实的提高了我们的工作效率。

后来,我们使用LabVIEW 8.2版本提供的项目管理的能力结合自己慢慢认知到的初级的软件工程概念,使用NI公司提供的报告生成器(RGT)及数据库连接工具包(DCT)软件后,开始着手花费很大的精力、资源对原先的代码进行了全面的重构梳理,封装共用函数到功能模组中形成可重用的工具驱动包,按照关注点分离、功能分组的逻辑结构将共用的功能提取出来分层处理,引入人机操作使用界面和测试过程与证书报告分离的流程切分,特别是使用动态调用功能完成对测试项目的灵活调用,详细的框架情况请参考我知乎的介绍文章。

图片

从性能特点与功能对比表上来看,两者经过十几年的不断更新,都能够满足自动化产线所需要综合测试平台的测试序列管理通用要求,所以从功能列表中很难得出谁是王中王的地位,并且最为有意思的一点是:也都能通过微软公司的通用对象组件技术(COM/ActiveX)提供对竞争对象的主流图形化软件编程环境开发的测试序列支持,其中NI的TestStand支持竞争对手Keysight公司的类似的图形化编程软件VEE,同样的TestExec SL也支持了NI公司的当家花旦LabVIEW,两家公司很好的诠释了什么是竞合关系。

虽然TestStand和TestExec SL不好直接对比得出谁强谁弱的结论,但是图形化编程环境VEE和LabVIEW还是是很容易对比得出结论的,从国内发表的论文、出版的图书和论坛讨论帖子的数量均是LabVIEW占有绝对的优势地位,在测控行业中国外也有类似的调查图表显示LabVIEW(47%)相比VEE(8%)遥遥领先。

图片

参考文献:

《Framework的设计与应用—基于Windows Forms的应用开发实践》,黄忠成,电子工业出版社,2006年。

《TestStand工业自动化测试管理》,胡典钢,电子工业出版社,2016年

《Keysight TestExec SL 6.1 技术资料.pdf》,Keysight Corporation, 2014年


LabVIEW易学难精,我是李时珍,也是一名LabVIEW编程开发的的持续学习者、兼搬砖爱好者,知乎上讲解LabVIEW内容最啰嗦的中年油腻大叔,没有之一!

“会用LabVIEW,但是却没有听说TestStand,好像有点说不过去吧!(上)

大家共同成长与进步!

如果,感觉对你有帮助的话请点赞,分享转发,没关注的加个关注!

在学习的道路上你我不孤单。

你的支持与关注是我持续输出最大的动力!

来源:知乎李时珍

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年5月21日
下一篇 2022年5月21日

相关推荐