为什么人们不将LabVIEW用于数据采集和虚拟化以外的目的?

时间:2009-08-04 02:59:18

标签: virtualization labview data-acquisition

这被标记为一个主观问题,我希望尽管我不会得到太多的选票。

LV似乎为传统的基于文本的编程提供了一个很好的图形替代方案。据我所知,它不是一种公正的虚拟化/数据采集编程语言。尽管如此,似乎这种范式与其创作者的名字挂钩。

我的问题出现了,因为它似乎并没有被广泛用于多用途应用程序。我不是任何类型的LV专家,我更像是一个学习者。我还是习惯了LV。

14 个答案:

答案 0 :(得分:27)

如果您拥有NI硬件,并希望进行获取,绘图和记录数据等操作,Labview非常棒。

当您开始连接到自定义设备时,模块之间的连接变得复杂,必须对输入和输出到设备进行所有字符串操作工作。

在我的工作地点,我们发现我们不得不制作大量复杂的VI来与设备连接并开始用.NET编写它们并将它们连接到Labview。

最后,我们最终将Labview全部报废,并使用NI Measurement Studio for Visual Studio为我们提供所有可爱的NI控件(波形图,槽,仪表,开关等),并具有C#的灵活性。

总之,即使有两个24英寸的屏幕,有时候Labview代码的连接也会变得太复杂,无法对任何未来的更改进行评论,调试和扩展。我建议看一下Measurement Studio for Visual Studio,并使用您喜爱的.NET语言和漂亮的NI控件。

答案 1 :(得分:18)

我对“基于传统文本编程的图形替代”的两次体验非常糟糕。我发现这些语言使用起来很慢,难以编辑,而且表现不佳。调试它们是一场噩梦。它们没有提供任何真正的优势。

可以肯定的是,我看了一段时间已经有很长一段时间了,但我对其他人的看法只是温暖,所以我从来没有花时间再看一遍。欢迎再次观看的原因将在船上进行......

答案 2 :(得分:13)

Labview可用于编写大型复杂的软件项目。毫无疑问,Labview比基于语法的语言更有趣。我使用labview编写了数学上密集的动态模拟。较新版本的Labview包含许多令人兴奋的功能,特别是对于使用多个处理器。我非常喜欢Labview。但我不建议任何人。

不幸的是,除了简单的采集和显示之外,它绝对是一场噩梦。有朝一日可能会被认为是基于文本的语言的可行替代方案。然而,NI的开发人员一直选择忽视困扰labview的三个基本问题。

1)它不稳定,充满了虫子。有几千个错误已发布到labview支持论坛,尚未修复。其中一些非常严重,例如内存泄漏或基本功能中的数学错误。

2)文档非常糟糕。通常情况下,当您在本地帮助文件中查找labview函数的帮助时,您会发现一个句子,它只是重述您试图找到某些细节的项目的名称。例如用户在纹理过滤器模式设置中查找帮助文件,并且帮助文件中唯一写入的内容是“纹理过滤模式 - 选择用于纹理过滤的模式”。哎呀,谢谢。那清除了事情,不是吗?问题更加深刻;通常,当您要求国家仪器的技术代表提供关于labview功能或数学函数的特定行为的关键细节时,他们根本不知道他们自己的库中的功能如何工作。这听起来有点夸张,但相信我,不是。

3)虽然保持图形代码清洁并且记录良好并非不可能,但Labview旨在使这些任务既困难又低效。为了防止代码变得混乱,混乱,你必须定期(每几个操作)使用集群,sub-vis和巨型定义控件(可以在大型项目中扩展多个屏幕)等结构。这些结构通过迫使labview在内存中制作多个数据副本并执行无偿操作来消耗内存并破坏性能 - 所有这些都是为了使图形图看起来像彩虹色的意大利面条,在任何地方都没有任何评论或文字。在labview中编程就像在玩魔鬼一样。想象一下,你的巨型软件项目是一个墙壁大小的流程图,根本没有任何文字。现在想象所有的线都相互交叉了一千次,这样跟踪数据流是完全不可能的。您刚刚设想了在labview中编程的最自然,最有效的方法。

Labview很酷。每个新版本的Labview都会越来越好。如果NI不断改进它,那么作为通用编程语言有一天会很棒。目前,作为大型或逻辑复杂项目的软件开发平台,这是一个非常糟糕的选择。

答案 3 :(得分:9)

我已经在LabVIEW中写了差不多20年了。我开发了自动化测试系统。我开发了RF,Vison,高速数字和许多不同风格的混合信号测试系统。在我切换到LabVIEW之前,我是一名“C”程序员。

确实,您可以在LabVIEW中快速构建一些程序,但就像任何其他语言一样,需要进行大量培训才能学习构建一个易于使用可重用代码轻松维护的大型应用程序。 20年来,我从来没有一个LabVIEW错误阻止我完成一个项目。

在当天,NIWEEK每年都会举行软件枪战。 LabVIEW和LabWINDOWS(NI的“C”版本)程序员都会遇到同样的问题,并且可以看到哪个组首先完成。每一年,所有LabVIEW程序员都在第一个LabWINDOWs人员完成之前完成。我挑战了许多专注于文本的编程朋友对枪战的挑战,他们都承认他们没有机会,即使我让他们定义软件问题。

所以,我觉得LabVIEW是一个很棒的编程工具。如果您与任何类型的NI硬件接口,这绝对是您的选择。这不是一切的答案,但我确信有很多人不使用它只是因为他们不认为LabVIEW是一种“真正的编程语言”。毕竟,我们只是将一堆块连接在一起吗?我觉得有趣的是,有多少基于文本的程序员在这里嗤之以鼻,因为他们为他们创建的只有他们能够理解的文本代码感到骄傲。任何语言的优秀程序员都应该编写其他人可以轻松阅读的代码。编写无法遵循的过于复杂的代码并不能使程序员成为一个天才。这意味着程序员是一个“compliator”(一个可以解决一个简单问题并使其复杂化的人)。我相信KISS原则(保持简单愚蠢)。

无论如何,这是我的两分钱!**

答案 4 :(得分:6)

我认为LabVIEW是FPGA编程的梦想。独立的可执行块只是...工作。一般来说,我使用LabVIEW来处理与我的DAQ和FPGA硬件接口的各种任务,但这就是它。似乎(对我而言)这是LabVIEW的优点及其构建的原因,但在该领域之外,它感觉“麻烦”。就完成任务而言,它就像任何其他具有学习曲线的语言一样 - 一旦你弄清楚它对于完成工作并不是太糟糕。我之前看到有几个人放弃了,认为学习曲线是永久的或者其他东西。

挑选一台30英寸的显示器带来了巨大的变化。

我知道一个人不喜欢的是版本控制集成。

编辑:LabVIEW /硬件 hella 价格昂贵,仅供“玩乐”使用。我在他们的硬件(学生价格)上花了1万美元,并从学校免费获得了在家里制作玩具的软件。

答案 5 :(得分:6)

我们公司在过去10年中使用LabVIEW来测量,监控和报告我们的主题(火车) 最近我们开始使用LabVIEW作为具有大量数据的数据库的GUI,具有最新功能的LabVIEW(Classes,XControls)的功能允许用于创建这些类型的GUI,以便在其他平台上获得一小部分开发成本。虽然我们不需要咨询率的外部程序员。

答案 6 :(得分:3)

我第一次开始在大学物理实验室使用Labview。最初,我认为与其他基于文本的语言相比,这是缓慢而繁琐的。创建复杂的逻辑非常困难,而且代码变得邋real快速(无处不在)。

然后,几年后,我学会了使用sub-vi和bundle。有什么区别!此时,我正在使用labview进行非常高级的功能。我正在从相机中获取原始输入,使用各种图像滤镜和处理来最终解析道路中的线条,这样车辆就可以在没有驾驶员的情况下沿着这条路行驶 - 这是DARPA URBAN CHALLENGE。我还从文本航点数据生成地图,制作高级解析函数,以及与输入设备处理数据无关的大量其他应用程序。这真的很有趣。和快。

离开大学后,我现在回到使用基于文本的语言。我一直在使用:PHP,Javascript,VBA,C#,VBscript,VB.net,Matlab,Epson RC +,Codeigniter,各种API,我相信其他一些。为了以任何显着的速度编程,我经常会记住我必须记住的语法量非常沮丧。我觉得必须根据我使用的语言切换思想流派很烦人...当所有的编程语言基本上都做同样的事情!我需要第二台显示器才能随时获得帮助,这样我就能找到不同语言中相同功能的语法。我非常想念Labview,它太糟糕了,它太贵了,否则我会把它用于一切。

基于图形的编程我认为具有巨大的潜力。通过不受语法约束,您可以专注于逻辑而不是代码。 Labview本身在支持和调试方面可能仍处于起步阶段,但我认为从概念上来说它在竞争中胜出。这是一种更直观的编程方式。

答案 7 :(得分:2)

我们使用LabVIEW运行终端测试设备,是数据采集和控制的理想选择。通常测量15到80个差分电压并控制环境室,质量流量控制器和各种串行设备LabVIEW非常有能力。

使用NI仪器驱动程序向导创建可重复使用的VI,可以极大地简化与自定义设备的连接,如果需要,可以与自定义dll连接。在许多项目中,我们为自定义硬件创建了这样的驱动程序,一旦创建,就可以在未来的项目中重复使用而无需修改。

使用事件驱动结构用户界面是响应式的,我们经常使用LabVIEW应用程序与数据库连接。

无论您选择哪种编程环境,都是设计最重要的应用程序的过程。我同意你可以在LabVIEW中创建一些非常糟糕且难以理解的方框图,但是你也可以在Visual Studio中创建不可读的代码。只需稍加思考和规划,就可以在一个24英寸的显示器上安装LabVIEW程序框图,并有足够的空间来添加注释。

对于大多数项目,我会在Visual Studio上使用LabVIEW。

答案 8 :(得分:2)

但人们确实将LabView用于除数据采集和虚拟化之外的其他目的。当然,LabVIEW主要用于实验室和生产环境,因为它是(或曾经)NI的主要客户目标之一。

然而,您可以使用LabVIEW执行许多各种操作,例如编程可执行大量图像分析的机器人,然后发布结果。看看来自NI Week 2009的视频,您会看到这个工具有多强大。例如,可以编写代码并将其部署到ARM MCU(参见2009年8月的Dev Monkey article)。

最后检查一下LabVIEW DIY group

答案 9 :(得分:1)

几十年来我一直在思考这个问题(是的,自1989年以来......)

与所有编程语言一样,LabVIEW是一种用于操纵电子流的高级工具。除非你是纯粹主义者,否则拒绝使用除面包板和电线以外的任何东西;晶体管,集成电路和编程语言可能是一件好事,如果你想建立任何后果。

但是像所有高级工具一样,只使用一个工具并不会让你成为一名专业工匠。回到焊铁,运算放大器和UART的那一天,在创建一个实际运行的系统之前,需要进行大量的仔细研究。基于文本的语言的现代领域过于由语法主导,程序员必须在编译和运行之前就已经得到它。为了编写有效的代码,程序员必须提高他们的技能水平,以创建比“Hello World”大得多的系统。

LabVIEW不受语法支配,而是数据流。回到当天,找到流程图模板并开发一个均衡的信息系统图是这项工作的艺术和美容部分。只有在您掌握了经过审核的流程图之后,您才会考虑在编写代码时苦苦挣扎。 (是的......打卡)

LabVIEW是一个开发系统,允许程序员使用流程图工具绘制完整的信息系统图并按“运行”...... LabVIEW“打出代码”并为您编译。无需通过文本语言A或语言B的语法进行战斗。

借助如此强大的工具,新手可以快速构建大型的工作程序 - 这意味着一定程度的专业工艺。但是,如果系统没有优雅地执行,或者源代码图很乱,那不是LabVIEW的错误。

人们经常指出“LabVIEW只对开发大型数据采集系统有利。”也许这些人应该考虑从事数据采集的科学家和工程师的专业性。如果他们足够了解传感器和传感器的实际导线,那么他们也很擅长开发LabVIEW接线图。

答案 10 :(得分:0)

使用LabView 在家,因为它是我儿子喜欢的Lego Mindstorms的一部分。我真的很喜欢这样组成系统的方法。

然而,在我的工作(嵌入式系统)中,通常是限制性的。但是在这里,我正试图提升抽象: - 控制和状态行为:基于模型的设计(即狂想曲) - 数据算法等Simulink

有时,图形模型可能需要比一段代码更多的点击次数。但这也包括一个优秀的程序员在设计和工作中需要做的工作。文件;不只是代码输入。图形符号会带来许多麻烦,如果该工具足够强大以满足手头的复杂性,通常要快得多。所以我希望这些工具在接下来的几年里会越来越受欢迎,因为它们已经成熟并且人们会熟悉它们。

答案 11 :(得分:0)

我使用LabVIEW大约两年时间来开发自动化。如果给予应有的注意和适当的设计,我们肯定可以在LabVIEW中开发可维护且非常好看的应用程序。我认为这对于所有其他语言都是一样的。我在LabVIEW中看到同样糟糕的代码主要来自那些只使用它来开发快速和肮脏的工作自动化的人。恕我直言,如果正确完成,图形编程更容易编码和理解。但是,我觉得基于文本的编程“感觉”更强大! LabVIEW主要面向工业自动化市场,对许多NI硬件具有固有支持,您可以非常快速地使用第三方硬件。我认为这就是你在自动化领域看到它的原因。此外它非常昂贵,你被NI锁定,因为如果你不从他们那里购买软件,你甚至无法打开你的代码!

答案 12 :(得分:0)

我使用LabView已有10年了。科学的prorgamming就像Matlab或Simulink一样出色,但要好10倍。如果您遇到问题,那么您做错了什么。学习任何语言都需要时间。至于使用.Net - 这些人甚至在同一个星球上吗?当你可以说上拉FFT等并使用alread编写的代码时,你为什么要从头开始编写eveything呢? .NET适用于简单的程序,但对于Scientific处理则不太好。是的,你可以做到,但不是没有大量的图形附加组件等.G中的Prorgamming比基于科学问题的文本容易​​得多。如果你正在连接并使用dll,你当然可以用c编程。现在有一些我不会使用LabView的东西 - 例如语音识别可能有点乱。更重要的是,为什么人们喜欢在有一个简单的替代方案时使用过时的文本编程。好像人们想让事情变得复杂,从而以某种方式证明自己的工作是正当的。简化简化!

答案 13 :(得分:0)

有人说LabView只在自动化领域被起诉。根本就不写。它在数字信号处理,控制系统,通信,网络,数学,图像处理等领域有着广泛的应用。它起初是一种数据采集方法,他们发明了虚拟仪器这个名称,但它现在远远超出了它。它是一种科学编程语言,具有首屈一指的图形界面。它超越了Simulink,如果你喜欢Matlab,那么它就有一种内置的Matlab脚本,适合喜欢这种编程方式的人。它一直在不断发展。我发现困难的一件事是为Compact Rio编写代码 - 棘手但比替代方案容易得多。这是昂贵的,但你得到一个优质的产品。我个人在普通编程中没有发现任何错误。它是一种工程师语言,但任何人都可以用它来编程。