LabVIEW 2017 开箱文

精华 tomoya 1年前 2169次点击 来自 分享


(作者:吴志二)

 

LabVIEW 2017 的Software platform bundle。自从LabVIEW 2015 开始NI 就取消了DVD bundle 改成了像这样的随身碟。还蛮有质感的。但是缺点就是不再发超级方便的试用版光碟(对小编来讲试用版光碟是急救包)

 

将随身碟插入之后就跳出了LabVIEW 2017 安装画面。如果没有自动跳出来的话,请自己点选autorun。

 

这次的LabVIEW 2017 software bundle 绝对是物超所值。一种价钱、两种享受。同时可以拥有LabVIEW 2017 跟次世代的LabVIEW NXG。当然是毫不犹豫的选择"Install both LabVIEW 2017 & LabVIEW NXG 1.0"

 

对于一般的使用者,为了避免后续driver 支援的问题。一般我们会建议安装LabVIEW 2017 (32-bit)就好,LabVIEW NXG 则没得选。

 

安装环境提示在安装LabVIEW NXG 的时候会需要一些互动,因此不能按下去人就跑去休息了。

 

这次LabVIEW 2017 的主题配色是黄底黑字,一整个香蕉....不,是大黄蜂的概念。

 

 

依序安装完LabVIEW 2017 跟NI Package Manager 之后,发现LabVIEW NXG 竟然在VIPM 里面。越来越有App store 的感觉了。(未来搞不好连software bundle 随身碟都免了,直接从App store 登入帐号密码后直接下载)

 

NI 其实先前就有公布LabVIEW NXG 对于相关硬体支援,是有计划在进行的。我印象中大概3 - 5 年内就会让LabVIEW NXG 支援全系列的NI 产品。旧有的LabVIEW 开发环境产品线,未来的五年内还是会同步发行。但是NI 的研发重心就是会逐步向LabVIEW NXG 移动。

 

大家对这个画面里的内容一定不陌生,基本上就是重新拉皮的概念。但是确实现代化了很多,利用简单的线条跟配色呈现出简约的风格。

 

终于开始安装了,不过我相信一切的等待会是值得的。

 

其实NXG 安装的过程并没有想像中的久,我猜有两个原因:1. 改进了没有效率的function implement。2. 就是支援的功能还不够多,所以容量还不大。(噗~)

 

终于成功了!

 

结束之后又弹回LabVIEW 2017 的安装环境。一个back from the future 的概念。

 

所有windows 上面的软体安装结束后都会有的动作(re-boot),当然LabVIEW 也不例外。

 

License manager 一整个画面大升级, UI Layout 看起来相当的专业,分类也较旧版本清楚很多。

 

 

旧版的License manager

 

新版的License manager

接下来就让我们一起来看看LabVIEW 2017 跟先前版本有什么不同吧。

 

打开之后就会发现在front panel 的部分,取消了累赘的线条设计,改走简单时尚风。

 

旧版本LabVIEW 的control menu

 

新版本LabVIEW 的control menu

跟着小编一起切换到Block diagram逐一查看跟上一代有什么不同。第一个发现的就是Array function 里面多了几个新项目:

1. Sort 2D array
2. Shuffle 1D array
3. Shuffle 2D array
4. Increment array element
5. Decrement array element

 

其中Sort 2D array 的部分是最让小编觉得实用的功能。以往我们要排序一个2D array 我们必须要先取出其中的行/列(1D array)。然后将这个1D array 排序之后,去跟排序之前相比。找到index 移动的规则后,再利用回圈搜寻原始2D array 将里面的sub-array (1D) 取出,重新build 成新的2D​​ array。这个功能里有点像是Excel 里面的自动筛选(排序)功能一样,如果我们从column 的方向进行排列,那么同一个row 的资料也必须跟着一起移动(这一点是最麻烦的部分)。事实上,这个sort 2D array 不只能接收numeric array 还可以接收string array跟Boolean array,这点就让大家省去了很多叠砖块的时间。

 

 

 

另外还有一个相当实用的功能就是Increment/decrement array element。这个指令可以用来指定1D array 里面的某个element 自己+1。这个功能为什么实用呢?因为它可以拿来做成Counter Array。小编举两个例子:

1. 各位应该有使用Functional global variable, FGV 来制作多组计时器(Timer) 来控制程式时间的经验吧?如果你是用单一数值来制作的话,这个FGV 就不能在其他的地方使用了,因为会发生race condition。但是如果是做成Array 的话,就会发生很多index array -> increment -> replace array element。根据LabVIEW default "Pass by value"的特性,这样设计也会让程式效能变差,尤其在Real-time target 上面效能更是一个大问题。而新的Increment/decrement array element 里面则是采用in place element structure 设计,直接修改记忆体中array 的数值,省略了资料重复copy 所浪费的CPU 资源。

2. Counter array 还有一个好用的地方就是在Automatic test equipment, ATE 的系统开发上面,经常会有分BIN 的计数器,这些计数器分别记录了OK, NG, BIN1, BIN2, BIN3....等,目前处理的数量。

 

另外小编在偷看Increment array element 的implement 方式的时候,无意间发现有这个NI 正在实验性的东西叫做:Type specialization Structure,看起来是个会依照输入的资料型态去变化要执行的case 内容。上面注明了目前还在实验阶段,所以并没有正式公开。不过感觉拿来应付资料型态的多形(Data polymorphism)应该会相当好用。

 

接下来我们一起来瞧瞧comparison 函式库。里面多了一个超级好用的东西叫做Is value changed。这个功能是用来检查输入的值有没有被改变?基本上跟一个东西Signal > Point by point > Other function PtByPt > Boolean crossing 功能有点类似,常被用来检查机台的Digital input 有没有被改变?不过这个Function 强大多了,因为他不只限于Boolean,还可以用在Numeric, String 甚至Enum 等各种不同的Data Types。

 

 
 

在conversion palette 部分则是出现了本来没有的Number To Enum 功能,不过这个部分小编实在想不出来可以做什么用?因为本来你把Number 直接接到Enum 本来就是可以用的,只是会出现小红点(coercion dot),表示两个Data type 不相同,但还是可以运作。所以这一点我还想不透,比较不一样的是他有点像是type cast 一样除了数值可以输入之外,还可以输入不同的enum type。这点是要让人动态更换enum type 吗?实在是想不太出来。

 

关于新版VIPM 的部分,整个layout 都做了大幅度的改变。传统的VIPM没有做分类,看起来比较像是个open source freeware。新版的VPIM 不但有做分类,而且连LabVIEW NXG 本身都可以直接透过VIPM 进行安装。真是相当有App store 的架式。

 

传统的VIPM 画面

 

新版LabVIEW 2017 的VIPM 画面

在软体模组新增/移除的部分也更像架上商品一般。轻松的按一个键就可以安装/卸载啦。

 
 

在Data communication palette 里面,则是多出了RTI DDS toolkit。打开来里面就是一个VIPM 的连接,按下去就可以开始安装。这个RTI DDS toolkit 也是今年NI LabVIEW 2017 强力主打的两个Toolkit 之一。

 

RTI 是发明这个技术的公司名称Real-time Innovations 公司。这个DDS 全名叫做Data Distribution Service, DDS,主要是拿来实现工业物联网的一个重要工具。

 

他有别与一般的通讯架构(经常是Master-Slave 或者Server-client 架构),采用的是publish-subscribe 架构,专为Machine-to-Machine, M2M 通讯而设计。有别于传统TCP Server-client 架构,采用DDS 通讯架构并不需要设定IP address 及listen port,也不需要处理繁复的server-client 之间的封包交握(hand-shakes)。只要A 节点事先注册一个标记"temp",当其他节点(比如: B节点)将temp 这个值publish 出去之后,资讯就会直接从该节点(比如: B节点)直接传送到A节点去。这样不但省去了处理多重multi-server 加上multi-client 之间的问题,还同时避免掉server crash 掉引发的系统崩坏。

 

最后关于DDS 通讯架构还有一个最厉害的压轴绝技,就是可以跟Time sensitive network, TSN 结合,这样就可以透过设定的方式保证两个节点之间的讯息,一定可以在要求的时间内完成。有没有真的很厉害?!各位看到这边有没有觉得LabVIEW & NI RIO products 未来将在工业物联网应用上占有一席之地。

 

看到这边手就开始痒了,赶快来去下载吧!

 

今年LabVIEW 2017 还有一个重头戏那就是Analytics and Machine Learning Toolkit, AML。这个Toolkit 目前是没有办法在VIPM 里面下载的。不过没关系,我们上ni.com 搜寻一下就找到了。下载下来后发现其实容量并没有很大,大约只有180MB,不过小编认为应该demo 用的example code & raw data 应该占了大部分的空间。

 

赶快给他安装下去,安装时选择试用版,下一步按到底即可。

 

安装完成后马上回到block diagram 里面一看,多出了AML function palette,
里面除了Data Read & Write以外大致上分了四种功能:
1. Feature manipulation:这是拿来将大数据里面的特征给抓出来的工具。
2. Anomaly detection:这是透过数据分析并建立baseline model,一旦发现数据偏离baseline 就发出异常警告。
3. Clustering:分群
4. Classification:这是透过大数据建立模型,再拿来进行分类(比如:Pass/Fail)

学习怎么使用AML 的方法除了上网找一些slide 认识一下Machine learning 的原理。最好的方式就是透过example code 来了解Machine learning 的机制。

 

上述提到的四大类algorithm,在NI Example Finder 里面都有。大致上每种example 都分成两个VI。一个是用来学习(建立model用的)后方会备注(Training)。另外一种是利用已经建立好的model 档案,来进行预测、判定或者分类...等工作。事实上,在AML toolkit 的API 底下,Training 出来的model 就只是一条特别颜色的线而已,所以请大家不用害怕。

 

根据NI 官方资讯指出,今年的重头戏除了DDS跟Machine learning之外,最后一个就是Cloud Toolkit for AWS。不知道各位有没有注意到,要做到工业物联网,最需要的三件事情:

1. 节点必须要有智慧(Machine learning)
2. 节点之间必须要能够做最有效率的M2M通讯(Data distribution service)
3. 必须要能够支持云端(Cloud service)

然而这三件事情都在LabVIEW 2017 上面实现了。如此一来将LabVIEW 的价值从Desktop 开发环境提升至Internet of things 层次。废话不多说,先从VIPM 下载NI Cloud Toolkits for AWS 来看一下。

 

 

在开始使用之前,要先跟大家用最简单的方式介绍什么是云(Cloud)?大家可以把云想像成一个远端的资料库。

 

所以要跟云互动的机方式就是:
1. 建立一个储存桶(bucket)
2. 把档案或资料传送上去(object)
3. 查看档案是否在上面?
4. 从储存桶下载档案或资料
5. 删除在储存桶内的资料

 

这样简单介绍完之后,我们来看一下LabVIEW Cloud toolkits 的Amazon S3 部分。是不是就很清楚了呢?上方的蓝色的水桶图示VIs,就是拿来新增、移除储存桶用的。下方橘色方块的VIs 就是拿来上传、下载储存桶内的物件(档案、资料)。

 

提示:使用这些功能之前,必须先至Amazon 注册一组帐号密码,要用来登入云端伺服器用的。

 

 

列出目前Amazon S3云端所有储存桶的范例程式

关于SNS 的部分,全名是Simple Notification Service,是用来发布讯息给所有的订阅者(subscriber)。而这些讯息是跨平台的,其中包含:通话、简讯、网页、Messanger...等各式各样的管道。

 

 

在物联网的应用之中,经常会需要发布重要讯息给相关人员。这类讯息可能是一个紧急的事件,需要权责人员前来处理,或提醒工程师需要尽快进行设备的维护。

Amazon Simple queue service, SQS 是用来传递网路应用程式(Web applications)之间的讯息。Amazon 的SQS 服务提供了256位元的AES 加密,确保网路应用程式之间的通讯是安全的(不容易被监听或者破解)。为什么需要这样的服务呢?相信大家都很熟悉LabVIEW 的design pattern:Queue Message Handler, QMH,进阶一点的QMH 则会使用User-event 去传递QMH 之间的讯息。但是想像一下今天如果有好几个QMH 分别坐落在不同的网路节点上面,而非在同一台电脑上面,那么User-event 就发挥不了作用了。这时候各节点之间的程式物件QMH,就可以透过SQS 去传递指令+资料(Command + payload),而在LabVIEW 里面这样的组合经常是Enum + Variant。

 

关于IoT 类别的部分,先来了解一下AWS IoT 是什么?从Amazon 官方网站的讯息可以得知AWS IoT 主要的功能是提供物联网的物(Things)跟云(Clouds)之间的双向通讯,进一步可以利用云端上的功能进行数据呈现(Visualization)、资料分析(Data mining)跟预测(Prediction)...等功能。

 

 

关于Cloud 相关讯息及应用其实是个非常大的课题,光在短短一篇开箱文当中也很难描述清楚。剩下来的部分就等各位看完这篇开箱文之后,跟小编一起打开LabVIEW 2017来发掘应用吧!

 

结语:LabVIEW 经历了30个年头的发展,小编觉得可以分成四大演化阶段

1. 虚拟仪控软体:此时的LabVIEW 大家认知比较像是个仪控应用软体。
2. 图形化程式语言(PC only):初期的LabVIEW 还常听到它到底算不算是一个程式语言而争辩?后期导入Object orientation programming, OOP 之后,大家逐渐开始接受它是一个程式语言的事实。
3. 跨平台程式语言(PC, Real-time, FPGA):此阶段的LabVIEW 不但wrap 了Desktop 的C++,更进步到wrap 到embedded C 跟VHDL,越吃越多,逐渐变成一只巨兽。
4. 物联网程式语言(IoT):目前的LabVIEW 2017 即将迈入物联网程式语言阶段,由于有先前的量测、控制累积的生态圈,使得LabVIEW 较其他平台更容易与工业物联网接轨。

如果你是LabVIEW 的爱好者,那么这个时间刚号是第三代转换成第四代的开始。每一个世代转换的过程当中,经常是充满了机会。如果抢先学会使用这些重点工具的话,应该会在接下来的几年里无往不利。

如果你不是LabVIEW 的使用者,建议可以直接从LabVIEW NXG开始,它的介面变得更简单、更容易学了。虽然LabVIEW NXG 还没全面支援NI 的产品,但是NI 应该会在3 - 5 年内让LabVIEW 支援所有线上hardware,而3 - 5 年差不多可以让一个LabVIEW 幼幼班的工程师变成高手了。

目前暂无回复

©2017 Powered by LabVIEW社区 - To Be Better
Any questions please contact us:confidante@labview.help