2021-06-03

简介: 2021-06-03

LabVIEW程序学习建议


labVIEW学习开发出一个程序,非常简单,拉几条线放几个Funtion,很快就能够完成了,但是,你有考虑过你的程序内存使用问题吗?、有考虑过其他人接手(或是下次你再复习)容不容易阅读?、又或是程序架构扩增的弹性呢?


NI Example :


我推荐初学者再遇到不会的function、或有时间的时候将NI Example打开来看看一样的功能Example怎么写出出来的,然后模仿再写一次,这样反复练习才会学习到比较好的good style。NI在文件上面非常的下功夫,教学的资源也是非常的多,每次的LabVIEW升版都能看到新的Example,也会淘汰一些不范例程序。

Help-->Find Example

或是对着组件按Control+H ,在内文中找Find Example

 

2.LabVIEW 书籍 :

这里有两本书推荐,

一本是比较适合初阶,CLD程度阅读的LabVIEW For Everyone,这本是本英文书,深入浅出的介绍LabVIEW的组件,

另外一本市圣经,The LabVIEW Style Book,这本书我之前有介绍过,可以参考: LabVIEW_推荐参考书_The LabVIEW Style Book, 这本书分成很多段落在分享和教导读者如何建立程序架构、设计亲切易懂的人机接口和养成良好习惯 。

3.论坛:LabVIEW Pro、NI英文论坛


网络上很多LabVIEW资源,从以前的LabVIEW360、LAVA、LabVIEW Pro,我都很建议可以去浏览,这编列几个:


LabVIEW Pro : 小编很用心地在经营,有练功区、程序基础教学、讨论区、技术专题..等


NI Discussion Forums : 外国搞手讨论都辉激起如元子弹的震撼教育


LabVIEW 360 : 很多不错的资源,讨论人气也是非常的旺


LAVA : 讨论很多VI扩充tools


如果项目着急或者需要外包,推荐www.bjcyck.com。他们从事LabVIEW开发十几年,可以联系咨询。



程序写作建议:


1. 使用英文版的LabVIEW:


LabVIEW许多资源都是用英文的,包括白皮书、使用说明、Help文件、或是spec文件..等等。用英文版的LabVIEW开发熟习组件名称,这样再搜寻资源会比较轻松;放心,英文接口对写程序不会有什么影响的。


2.LabVIEW Good Style :


使用Good Style开发LabVIEW是我一再强调的,好的写作习惯养成是日后建立大型项目的重要基础,要检查自己的程序是否符合Good Style最简单也是最快的方法就是打开Analyzer。

Tools-->VI Analyzer-->Analyze VI

他分析的面向很广包括:Block Diagram、Complexity Metrics、Documents、Front Panel、General、VI Metrix

分析完后会给一份报告,评估程序的风险程度,可以看到自己写出来的程序哪边和建议的违和,

或是直接查看 LabVIEW Check List ,检查什么事重要的项目。

 

5.架构选择:

我觉得程序架构只要稳、易维护,都是很好的架构;所以我并没有非常推崇高阶的程序项目架构,我认为需要依照项目、团队来选择程序架构,不过如果是初学者学习的话,我推荐下面的程序架构:

State Machine :适合小程序,需要轮转重复的功能

Producer & Consumer: LabVIEWPro介绍中文版

Queue Message Handler :这个比较进阶一点,不过试LabVIEW的Project Template,教学文件很多,可以试试看

Template-->Producer/Consumer

Template-->Simple State Machine

6.程序整理

程序凌乱绝对会降低Coding效率,意大利面程序、会增加维护的困难。


1. 建议常常使用工具把整理程序

2.避免过多弯取的线、堆栈的线

 

7.Type Define

使用State Machie Enum、GUI Tab、交握的Data、传递在不同程序的Data...等常常再不同VI或是同一个VI使用多次的原件都将型态存起来,好处是修改时不用一个一个更改,使用Type Define后一次可以修改到全部。


可以参考这篇教学:https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019MFtSAM



8. 程序大小控制在同一个画面中


如果你的撰写需要用50吋的屏幕才能完整展开,绝对是需要整理得程序、利用SubVI、好的程序架构、Good Style,增加程序阅读性。



9.不要滥用global、local Variable


变量滥用、Race Condition是LabVIEW开发初期的通病,使用过多会造成程序的不稳定性。试着使用FGV、Shit Register来取代这些跳脱数据流概念的变数;


这篇有详细的介绍: LabVIEW_什么是Race Condition(竞争危害)?



10 程序批注


千万不要觉得批注是帮助别人阅读自己的程序才需要写,我的经验是,大部分都是帮助自己 不用一年,程序逻辑没有文件的辅助是很难快速切入的。

应该是LabVIEW2014后,批注还可以加上箭头,非常的方便。

 

11.使用Cluster

Cluster的使用可以简化Block Diagram,最重要的是可以让相关的资料做一个结合,在后续的使用上比较清楚,也减少connect的接角。

请注意,当在bundle 和unbundle cluster 时一定要使用by Name的方法,最好搭配type define做cluster的数据结构定义。

12.开始写做前规划程序架构、应用方式

开始撰写前先想过程序需求用什么架构来开发会更融易、把需求想过一次后,会看到很多一开始想不到的盲点。最好是画出流程图,并把这些开发文件都留在项目、程序的文件夹中,帮助日后的阅读。

 

程序人机(GUI)建议:

1.利用对齐工具来让面板整齐:有各种对齐、置中对齐、靠左对齐、靠右对齐...

2.利用调整间距工具: 有各种调整间距的方法:平分、固定间距、0间距...

3.调整对象大小: 调整对象大小,也可以多选多个对象将他们调整成大小全部一样。

4.字体大小\颜色:

整个面板的字体大小、颜色最好控制在3种不同的组合,过多颜色、大小会让画面过于凌乱。可以分成 不重要小字(size:14、灰色)、正文(size:16、黑色)、非常强调(size:20、红色)



5.利用Tab简化控制组件很多的人机,才不会让使用者一次看到过多的控制组件产生恐惧感(?)

可以参考NI Example-->Programmatically Manipulate a Tab Control.vi 来看使用方法

 

Debug程序建议:

利用Explain Help查看错误码,每个错误都要发挥侦探的精神,找出最实质的原因,才不会出现"幽灵bug"的问题。(有时候会发生有时候又不会发生的bug)

项目程序建议:

1.文件夹整理,将程序依照自己的固定方法、分类整理control、SubVI,这样在移动项目时,不容易有"丢包"的subVI,也容易一目了然项目的程序用途。

2.使用VI Hirechy检视

从hirechy可以检查程序的整洁度和关联图,在阅读他人的程序格外重要,可以从这个架构途中,了解整个项目架构和应用层面。


相关文章
|
5天前
|
SQL 容灾 关系型数据库
[版本更新] PolarDB-X V2.4 列存引擎开源正式发布
[版本更新] PolarDB-X V2.4 列存引擎开源正式发布!
[版本更新] PolarDB-X V2.4 列存引擎开源正式发布
|
5天前
|
存储 关系型数据库 分布式数据库
数据管理的艺术:PolarDB开源版详评与实战部署策略(二)
PolarDB-PG是阿里云的一款云原生关系型数据库,100%兼容PostgreSQL,支持Oracle语法,采用Shared-Storage存储计算分离架构,提供极致弹性、毫秒级延迟的HTAP能力。具备高可用、高可靠和弹性扩展特性,支持单机、存储计算分离和X-Paxos三节点等多种部署形态。通过Docker可快速部署实例,包括单节点、一主一备和HTAP(一主两备)实例。此外,文章还介绍了在ECS上使用ESSD云盘搭建PolarDB-PG的详细步骤,适合开发和测试环境。
123084 14
|
5天前
|
运维 监控 Cloud Native
如何设计与构建 FinOps 流程、团队、体系与目标
企业 FinOps 实施不是一蹴而就的项目,如果您正在推进企业云原生 FinOps 落地,除了选择合适的技术手段,企业内部的流程和体系建设也尤为重要。
162514 12
|
5天前
|
分布式计算 Java API
Java8 Lambda实现源码解析
Java8的lambda应该大家都比较熟悉了,本文主要从源码层面探讨一下lambda的设计和实现。
162561 10
|
5天前
|
关系型数据库 Serverless 分布式数据库
PolarDB PostgreSQL版Serverless技术原理解读
数据库是现代企业IT系统中非常重要的一部分。在创建数据库时,客户往往需要比较保守地去配置数据库集群的资源,包括CPU、内存、存储以及连接数等多种参数配置,以确保业务能够在波峰和波谷都能平稳运行。在这种情况下,客户购买的集群资源在业务波谷时期会被闲置,导致整体成本偏高;而在业务压力增长阶段,集群资源又应对不足。Serverless数据库可以很好地解决这个问题。它能够让数据库集群资源随客户业务负载动态弹性扩缩,将客户从复杂的业务资源评估和运维工作中解放出来。 本文描述PolarDB PostgreSQL版Serverless的构建中, 如何实现弹得快、弹得准、弹得稳、弹得广的几个关键技术点。
75801 5
PolarDB PostgreSQL版Serverless技术原理解读
|
5天前
|
缓存 自然语言处理 JavaScript
万字长文深度解析JDK序列化原理及Fury高度兼容的极致性能实现
Fury是一个基于JIT动态编译的高性能多语言原生序列化框架,支持Java/Python/Golang/C++/JavaScript等语言,提供全自动的对象多语言/跨语言序列化能力,以及相比于别的框架最高20~200倍的性能。
168493 2
|
5天前
|
存储 关系型数据库 MySQL
数据管理的艺术:PolarDB开源版详评与实战部署策略(一)
PolarDB-X是阿里巴巴自研的高性能云原生分布式数据库,基于共享存储的Shared-nothing架构,支持MySQL生态,具备金融级高可用、分布式水平扩展、HTAP混合负载等能力。它通过CN(计算节点)和DN(存储节点)实现计算与存储分离,保证数据强一致性,并支持全局二级索引和多主多写。PolarDB-X开源版提供更高程度的定制化和控制权,适合追求技术自主性和成本优化的开发者。部署方式包括RPM包、PXD工具和Kubernetes,其中PXD工具提供了一键部署的便利性。
73562 14
|
5天前
|
NoSQL MongoDB 数据库
探寻MongoDB副本集选举机制 阿里云与MongoDB的DBaaS技术合作创新
阿里云连续第五年斩获MongoDB合作伙伴奖项,也是唯一获此殊荣的中国云厂商。一起学习MongoDB副本集的选举机制以及可能会出现的特殊情况。
探寻MongoDB副本集选举机制  阿里云与MongoDB的DBaaS技术合作创新
|
5天前
|
SQL 大数据 BI
从离线到实时:无锡锡商银行基于 Apache Doris 的数据仓库演进实践
从离线到实时:无锡锡商银行基于 Apache Doris 的数据仓库演进实践
|
5天前
|
存储 Cloud Native 对象存储
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
AutoMQ[1] 是新一代基于共享存储架构实现的云原生 Kafka。得益于其存算分离的共享存储架构,通过和阿里云合作,深度使用阿里云可靠、先进的云服务如对象存储OSS、块存储 ESSD、弹性伸缩ESS以及抢占式实例实现了相比 Apache Kafka 10倍的成本优势并且提供了自动弹性的能力。
83421 4
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级