Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

LabVIEW

From Wikipedia, the free encyclopedia
System-design platform and development environment
This articlemay rely excessively on sourcestoo closely associated with the subject, potentially preventing the article from beingverifiable andneutral. Please helpimprove it by replacing them with more appropriatecitations toreliable, independent sources.(May 2015) (Learn how and when to remove this message)
LabVIEW
DeveloperNational Instruments
Initial release1986; 40 years ago (1986)
Stable release
LabVIEW NXG 5.1
LabVIEW 2024 Q3 / July 2024; 1 year ago (2024-07)
Written inC,C++,C#
Operating systemCross-platform:Windows,macOS,Linux
TypeData acquisition,instrument control,test automation, analysis andsignal processing,industrial control,embedded system design
LicenseProprietary
Websitewww.ni.com/labview

Laboratory Virtual Instrument Engineering Workbench (LabVIEW)[1]: 3  is a graphicalsystem design and developmentplatform produced and distributed byNational Instruments, based on a programming environment that uses avisual programming language. It is widely used fordata acquisition,instrument control, and industrialautomation. It provides tools for designing and deploying complex test and measurement systems.[2]

The visual (aka graphical) programming language is called "G" (not to be confused withG-code). It is a dataflow language originally developed by National Instruments.[3] LabVIEW is supported on a variety ofoperating systems (OSs), includingmacOS and other versions ofUnix andLinux, as well asMicrosoft Windows.

The latest versions of LabVIEW are LabVIEW 2024 Q3 (released in July 2024) and LabVIEW NXG 5.1 (released in January 2021).[4] National Instruments released the free for non-commercial use LabVIEW and LabVIEW NXG Community editions on April 28, 2020.[5]

Dataflow programming

[edit]
Main article:Dataflow programming

The programming paradigm used in the LabVIEW "G" language is based on data availability. If there is enough data available to a function, it will execute. The execution flow is determined by the structure of a graphical block diagram (the LabVIEW-source code) on which the programmer placesnodes and connects them by drawingwires. A node can be acontrol,indicator,structure,function, or recursively,another block diagram. An example of a simple four-node block diagram is two controls and an indicator wired to the addition function, causing the indicator to display the sum of the two controls. The wires connecting nodes propagate data as variables, and any node can execute as soon as all its input variables (data) become available. Since this might be the case for multiple nodes simultaneously, LabVIEW can conceptually execute in parallel.[6]: 1–2 Multi-processing andmulti-threading hardware is exploited automatically by the built-in scheduler, whichmultiplexes multiple OS threads over the nodes ready for execution.

Graphical programming

[edit]
An example of LabVIEW code

LabVIEW integrates the creation of user interfaces (termed front panels) into the program development cycle. LabVIEW programs are collections of one or morevirtual instruments (VIs). Each VI has three components, afront panel,back panel, andconnector panel, all composed of nodes and wires represented graphically to the user. Thefront panel is built using controls and indicators. Controls are inputs, they allow a user to supply information to the VI. Indicators are outputs, they indicate or display the results based on the inputs given to the VI. Theback panel consists of ablock diagram containing the graphical source code. All of the objects placed on the front panel will appear in the back panel block diagram as terminals. The block diagram also contains structures and functions, chosen from a Functions palette, which perform operations on controls and supply data to indicators. Theconnector panel has terminals whose wires go to or come from nodes in the front and back panels, and is used to represent the VI within the back panel of upstream (calling) VIs and downstream (called) VIs to which it might be connected.

There are two ways to run a VI. It can be run by itself as a program, with the front panel serving as a user interface. Alternatively, it can be treated as a node that is dropped onto the block diagram of another VI and wired to its nodes through the connector panel. In that case it runs as a subroutine within a larger program, and the front panel controls the inputs and outputs of the VI node. Thus, each VI can be easily tested as a stand-alone program before being embedded as a subroutine into a larger program.

The "G" graphical approach allows non-programmers to easily build programs by dragging and dropping virtual representations of lab equipment with which they are already familiar. The LabVIEW programming environment includes examples and documentation to guide and simplify the creation of small applications. As with all introductory programming guides, the ease of construction of working "G" programs may cause the programmer to underestimate the expertise needed for high-quality "G" programming. For complex algorithms or large-scale code, a programmer must possess extensive knowledge of the special LabVIEW syntax and the topology of its memory management. The most advanced LabVIEW development systems offer the ability to build stand-alone applications. Furthermore, it is possible to create distributed applications that communicate using a simpleclient–server model which takes advantage of the inherently parallel nature of "G".

Common application design patterns

[edit]

Applications in LabVIEW are typically designed using well-known architectures[citation needed] known asdesign patterns. The most common design patterns for graphical LabVIEW applications are listed in the table below.

Common design patterns for LabVIEW applications
Design patternPurposeImplementation detailsUse casesLimitations
Functional Global VariableExchange information without using global variablesA shift register of awhile loop is used to store the data and the while loop runs only one iteration in a "non-reentrant" virtual instrument (VI)Exchange information with less wiringAll owning virtual instruments (VIs) are kept in memory.
State machine[7]Controlled execution that depends on past eventsCase structure inside a while loop passes anenumerated variable to a shift register, representing the next state; complex state machines can be designed using the Statechart moduleUser interfaces,

complex logic, communication protocols

All possible states must be known in advance.
Event-driven user interfaceLossless processing of user actionsGUI events are captured by an event structure queue, inside a while loop; the while loop is suspended by the event structure and resumes only when the desired events are capturedGraphical user interfaceOnly one event structure in a loop.
Master-slave[8]Run independent processes simultaneouslySeveral parallel while loops, one of which functions as the "master", controlling the "slave" loopsA simple GUI for data acquisition and visualizationAttention to and prevention ofrace conditions is required.
Producer-consumer[9]Asynchronous or multithreaded execution of loopsA master loop controls the execution of two slave loops, that communicate using notifiers, queues and semaphores; data-independent loops are automatically executed in separate threadsData sampling and visualizationOrder of execution is not obvious to control.
Queued state machine with event-driven producer-consumerHighly responsive user-interface for multithreaded applicationsAn event-driven user interface is placed inside the producer loop and a state machine is placed inside the consumer loop, communicating using queues between themselves and other parallel VIsComplex applications

Features and Resources

[edit]
This sectioncontainspromotional content. Please helpimprove it by removingpromotional language and inappropriateexternal links, and by adding encyclopedic text written from aneutral point of view.(July 2022) (Learn how and when to remove this message)

Interfacing to devices

[edit]

LabVIEW includes extensive support for interfacing to instruments, cameras, and other devices. Users interface to hardware by either writing direct bus commands (USB, GPIB, Serial) or using high-level, device-specific drivers that provide native "G" function nodes for controlling the device. National Instruments makes thousands of device drivers available for download on theirInstrument Driver Network (IDNet).[10]

LabVIEW has built-in support for other National Instruments products, such as theCompactDAQ andCompactRIO hardware platforms andMeasurement and Automation eXplorer (MAX) andVirtual Instrument Software Architecture (VISA) toolsets.

Code compiling and execution

[edit]

LabVIEW includes acompiler that translates "G" code into native code for supported CPU platforms. The graphical code is converted into Dataflow Intermediate Representation, and then translated into chunks of executablemachine code by a compiler based onLLVM. These code chunks are called by the "G"run-time engine, providing for fast, high-performance native execution of the graphical code. The LabVIEW syntax is strictly enforced during the editing process, and when "G" code is run or saved, the compiler is automatically invoked. "G" code is saved to a single binary file that contains both the source and executable code. Execution is controlled by the run-time engine, which contains some pre-compiled code to perform common tasks defined in the "G" language. The run-time engine manages execution flow, and provides a consistent interface to supported operating systems, graphic systems and hardware components. The use of a portable run-time environment makes the source code files portable across supported platforms. LabVIEW programs are slower than equivalent compiled C code, although it is often possible to mitigate speed issues with program optimizations.[11]

Large libraries

[edit]

LabVIEW includes a large number oflibraries containing functions for data acquisition, signal generation, mathematics, statistics, signal conditioning, analysis, integration, filtering, and other specialized abilities such as data capture from hardware sensors. In addition, it includesMathScript, a text-based programming component with built-in functions for signal processing, analysis, and mathematics. MathScript can be integrated with graphical programming usingscript nodes and uses a syntax that is generally compatible withMATLAB.[12]

Parallel programming

[edit]

LabVIEW is an inherentlyconcurrent language, so it is very easy to program multiple tasks that are performed in parallel via multithreading, for example by drawing two or more parallel while loops and connecting them to two separate nodes. This provides a great benefit for test system automation, where it is common practice to run processes like test sequencing, data recording, and hardware interfacing in parallel.

Ecosystem

[edit]

Due to the longevity and popularity of the LabVIEW platform and the ability for users to extend its functions, a large ecosystem of third-party add-ons has developed via contributions from the community. Most of these add-ons are available for direct download and installation into LabVIEW using the VI Package Manager (VIPM),[13] the official package manager for LabVIEW add-ons. National Instruments also hosts a marketplace for both free and paid LabVIEW add-ons, called theNI Tools Network.

User community

[edit]

There is a low-cost LabVIEW Student Edition aimed at educational institutions for learning purposes. There is also an active community of LabVIEW users who communicate through severalelectronic mailing lists (email groups) andInternet forums.

Home Bundle Edition

[edit]

National Instruments provides a low cost LabVIEW Home Bundle Edition.[14]

Community Edition

[edit]

National Instruments provides a free-for-non-commercial use version called LabVIEW Community Edition.[15] This version includes everything in the Professional Editions of LabVIEW, has no watermarks, and includes the LabVIEW NXG Web Module for non-commercial use. These editions may also be used by K-12 schools.[16]

Criticism

[edit]

LabVIEW is aproprietary product of National Instruments. Unlike common programming languages such asC orFortran, LabVIEW is not managed or standardized by any third-party standards committee.

Non-textual

[edit]

Since the "G" language is non-textual, common software tools such as versioning, side-by-side (or diff) comparison, and version code change tracking cannot be applied in the same manner as for textual programming languages. There are, however, some source code control (versioning) tools that do enable code comparison and merging, such as subversion, CVS and Perforce.[17][18][19]

Release history

[edit]

In 2005, starting with LabVIEW 8.0, major versions are released around the first week of August, to coincide with the annual National Instruments conference NI Week, and followed by a bug-fix release the following February.

In 2009, National Instruments began naming releases after the year in which they are released. A bug-fix is termed a Service Pack, for example, the 2009 service pack 1 was released in February 2010.

In 2017, National Instruments moved the annual conference to May and released LabVIEW 2017 alongside a completely redesigned LabVIEW NXG 1.0 built on Windows Presentation Foundation (WPF).

Name and versionBuild numberDateNotes
LabVIEW project beginsApril 1983
LabVIEW 1.0October 1986for Macintosh
LabVIEW 2.0January 1990
LabVIEW 2.5August 1992first release for Sun[which?] and Windows
LabVIEW 3.0July 1993Multiplatform
LabVIEW 3.0.11994first release for Windows NT
LabVIEW 3.11994
LabVIEW 3.1.11995first release with "application builder" ability
LabVIEW 4.0April 1996
LabVIEW 4.11997
LabVIEW 5.0February 1998
LabVIEW RTMay 1999Real-time
LabVIEW 6.0 (6i)6.0.0.400526 July 2000
LabVIEW 6.16.1.0.400412 April 2001
LabVIEW 7.0 (Express)7.0.0.4000April 2003
LabVIEW PDA moduleMay 2003first release of the module
LabVIEW FPGA moduleJune 2003first release
LabVIEW 7.17.1.0.40002004
LabVIEW Embedded moduleMay 2005first release
LabVIEW 8.08.0.0.4005September 2005
LabVIEW 8.20August 2006native object-oriented programming
LabVIEW 8.2.18.2.1.400221 February 2007
LabVIEW 8.58.5.0.40022007
LabVIEW 8.68.6.0.400124 July 2008
LabVIEW 8.6.18.6.0.400110 December 2008
LabVIEW 20099.0.0.40224 August 200932-bit and 64-bit
LabVIEW 2009 SP19.0.1.40118 January 2010
LabVIEW 201010.0.0.40324 August 2010
LabVIEW 2010 f210.0.0.403316 September 2010
LabVIEW 2010 SP110.0.1.400417 May 2011
LabVIEW for LEGO MINDSTORMSAugust 20112010 SP1 with some modules
LabVIEW 201111.0.0.402922 June 2011
LabVIEW 2011 SP111.0.1.40151 March 2012
LabVIEW 201212.0.0.4029August 2012
LabVIEW 2012 SP112.0.1.4013December 2012
LabVIEW 201313.0.0.4047August 2013
LabVIEW 2013 SP113.0.1.4017March 2014[20]
LabVIEW 201414.0August 2014
LabVIEW 2014 SP114.0.1.4008March 2015
LabVIEW 201515.0f2August 2015
LabVIEW 2015 SP115.0.1f1March 2016
LabVIEW 201616.0.0August 2016
LabVIEW 201717.0f1May 2017
LabVIEW NXG 1.01.0.0May 2017
LabVIEW 2017 SP117.0.1f1Jan 2018[21]
LabVIEW NXG 2.02.0.0Jan 2018[22]
LabVIEW 201818.0May 2018
LabVIEW NXG 2.12.1.0May 2018[23]
LabVIEW 2018 SP118.0.1Sep 2018[24]
LabVIEW NXG 3.03.0.0Nov 2018[25]
LabVIEW 201919.0May 2019
LabVIEW NXG 3.13.1.0May 2019[26]
LabVIEW 2019 SP119.0.1Nov 2019
LabVIEW NXG 4.04.0.0Nov 2019[27]
LabVIEW 2020 and
LabVIEW NXG 5.0 Community Edition
April 2020[28]first releases
LabVIEW 202121.0August 2021
LabVIEW 2022 Q322.3July 2022
LabVIEW 2023 Q123.1January 2023
LabVIEW 2023 Q323.3July 2023
LabVIEW 2024 Q124.1January 2024
LabVIEW 2024 Q324.3July 2024
LabVIEW 2025 Q125.1January 2025

Repositories and libraries

[edit]

OpenG and LAVA Code Repository (LAVAcr) serve as repositories for a wide range of Open Source LabVIEW applications andlibraries.SourceForge has LabVIEW listed as one of the possible languages in which code can be written.

VI Package Manager has become the standardpackage manager for LabVIEW libraries. It is very similar in purpose to Ruby'sRubyGems and Perl'sCPAN, although it provides a graphical user interface similar to theSynaptic Package Manager. VI Package Manager provides access to a repository of the OpenG (and other) libraries for LabVIEW.

Tools exist to convertMathML into "G" code.[29]

Related software

[edit]

National Instruments also offersMeasurement Studio, a product that offers many of the test, measurement, and control abilities of LabVIEW as a set of classes for use withMicrosoftVisual Studio. This allows developers to harness some of LabVIEW's strengths within the text-based.NET Framework. National Instruments also offersLabWindows/CVI as an alternative for ANSI C programmers.

When applications need sequencing, users often use LabVIEW with the National InstrumentsTestStand test management software.

TheCh interpreter is aC/C++ interpreter that can be embedded in LabVIEW for scripting.[30]

DSP Robotics' FlowStone DSP also uses a form of graphical programming similar to LabVIEW but is limited to the robotics industry.

LabVIEW has a direct node withmodeFRONTIER, a multidisciplinary and multi-objective optimization and design environment, written to allow coupling to almost anycomputer-aided engineering tool. Both can be part of the same process workflow description and can be virtually driven by the optimization technologies available in modeFRONTIER.

See also

[edit]

References

[edit]
  1. ^Jeffrey., Travis (2006).LabVIEW for everyone : graphical programming made easy and fun. Kring, Jim. (3rd ed.). Upper Saddle River, NJ: Prentice Hall.ISBN 0131856723.OCLC 67361308.
  2. ^Schneiderman, Rob (October 21, 2002)."James Truchard and Jeff Kodosky: Turning PCs into Virtual Instruments". Electronics Design. Retrieved2007-03-02.{{cite web}}:|archive-url= is malformed: timestamp (help)CS1 maint: url-status (link)
  3. ^Software synthesis from dataflow models for G and LabVIEW. Vol. 2. November 1998. pp. 1705–1709 vol.2.doi:10.1109/ACSSC.1998.751616.S2CID 7150314.
  4. ^"Upgrade LabVIEW".Forums. National Instruments.
  5. ^"NI Releases Free Editions of Flagship Software: LabVIEW".www.businesswire.com. 2020-04-28. Retrieved2020-04-28.
  6. ^Bress, Thomas J. (2013).Effective LabVIEW Programming. [S.l.]: NTS Press.ISBN 978-1-934891-08-7.
  7. ^"Application Design Patterns: State Machines".National Instruments whitepapers. 8 September 2011.Archived from the original on 22 September 2017. Retrieved21 September 2017.
  8. ^"Application Design Patterns: Master/Slave".National Instruments whitepapers. 7 October 2015.Archived from the original on 22 September 2017. Retrieved21 September 2017.
  9. ^"Application Design Patterns: Producer/Consumer".National Instruments whitepapers. 24 August 2016.Archived from the original on 22 September 2017. Retrieved21 September 2017.
  10. ^"3rd Party Instrument Drivers - National Instruments".www.ni.com.Archived from the original on 2014-11-28.
  11. ^"NI LabVIEW Compiler: Under the Hood".ni.com. 4 February 2020.
  12. ^"LabVIEW MathScript RT Module".www.ni.com.Archived from the original on 2016-08-05.
  13. ^"VIPM Desktop".www.vipm.io. Retrieved2023-06-09.
  14. ^"LabVIEW Home Bundle for Windows - National Instruments".sine.ni.com.Archived from the original on 2016-07-04.
  15. ^"LabVIEW Community Edition - National Instruments".www.ni.com. Retrieved2020-04-28.
  16. ^"LabVIEW Community Edition Usage Details - National Instruments".www.ni.com. Retrieved2020-04-28.
  17. ^"Thinking in G » Top 5 bad excuses for not using source code control".Archived from the original on 2016-10-28. Retrieved2016-10-28.
  18. ^"Software Configuration Management and LabVIEW - National Instruments".www.ni.com.Archived from the original on 2016-10-29.
  19. ^"Configuring LabVIEW Source Code Control (SCC) for use with Team Foundation Server (TFS) - National Instruments".www.ni.com.Archived from the original on 2016-10-28.
  20. ^"What's New in NI Developer Suite - National Instruments".www.ni.com. Archived fromthe original on 2014-03-31. Retrieved2014-03-31.
  21. ^"LabVIEW 2017 SP1 Patch Details - National Instruments".www.ni.com. Retrieved2018-05-28.
  22. ^"LabVIEW NXG 2.0 Readme - National Instruments".www.ni.com. Retrieved2020-04-28.
  23. ^"LabVIEW NXG 2.1 Readme - National Instruments".www.ni.com. Retrieved2020-04-28.
  24. ^"LabVIEW 2018 SP1 Readme for Windows - National Instruments".www.ni.com. Retrieved2020-04-28.
  25. ^"LabVIEW NXG 3.0 Readme - National Instruments".www.ni.com. Retrieved2020-04-28.
  26. ^"LabVIEW NXG 3.1 Readme - National Instruments".www.ni.com. Retrieved2020-04-28.
  27. ^"LabVIEW NXG 4.0 Readme - National Instruments".www.ni.com. Retrieved2020-04-28.
  28. ^"NI Releases Free Editions of Flagship Software: LabVIEW".www.businesswire.com. 2020-04-28. Retrieved2020-04-28.
  29. ^"Math Node - A new way to do math in LabVIEW".ni.com. 25 October 2010.Archived from the original on 25 February 2011.
  30. ^"Embedding a C/C++ Interpreter Ch into LabVIEW for Scripting".iel.ucdavis.edu.Archived from the original on 2011-05-15.

Further reading

[edit]
  • Bress, Thomas J. (2013).Effective LabVIEW Programming. [S.l.]: NTS Press.ISBN 978-1-934891-08-7.
  • Blume, Peter A. (2007).The LabVIEW Style Book. Upper Saddle River, NJ: Prentice Hall.ISBN 978-0-13-145835-2.
  • Travis, Jeffrey; Kring, Jim (2006).LabVIEW for Everyone : Graphical Programming Made Easy and Fun (3rd ed.). Upper Saddle River, NJ: Prentice Hall.ISBN 0-13-185672-3.
  • Conway, Jon; Watts, Steve (2003).A Software Engineering Approach to LabVIEW. Upper Saddle River, NJ: Prentice Hall PTR.ISBN 0-13-009365-3.
  • Olansen, Jon B.; Rosow, Eric (2002).Virtual Bio-Instrumentation : Biomedical, Clinical, and Healthcare Applications in LabVIEW. Upper Saddle River, NJ: Prentice Hall PTR.ISBN 0-13-065216-4.
  • Beyon, Jeffrey Y. (2001).LabVIEW Programming, Data Acquisition and Analysis. Upper Saddle River, NJ: Prentice Hall PTR.ISBN 0-13-030367-4.
  • Travis, Jeffrey (2000).Internet Applications In LabVIEW. Upper Saddle River, NJ: Prentice Hall PTR.ISBN 0-13-014144-5.
  • Essick, John (1999).Advanced LabVIEW Labs. Upper Saddle River, NJ: Prentice Hall.ISBN 0-13-833949-X.

Articles on specific uses

[edit]

Articles on education uses

[edit]

External links

[edit]
Products
Free
Discontinued
Proprietary
Retrieved from "https://en.wikipedia.org/w/index.php?title=LabVIEW&oldid=1337180765"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp