Jump to content

LabVIEW: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
mNo edit summary
No edit summary
 
(46 intermediate revisions by 40 users not shown)
Line 1: Line 1:
{{Short description|System-design platform and development environment}}
{{third-party|date=May 2015}}
{{third-party|date=May 2015}}
{{Infobox Software
{{Infobox Software
Line 7: Line 8:
| developer = [[National Instruments]]
| developer = [[National Instruments]]
| released = {{Start date and age|1986|df=yes}}
| released = {{Start date and age|1986|df=yes}}
| latest release version = LabVIEW NXG 5.1
| latest release version = LabVIEW NXG 5.1<br/>LabVIEW 2024 Q3
| latest release date = {{Start date and age|2024|07}}
LabVIEW 2021
| latest release date = {{Start date and age|2021|08}}
| operating system = [[Cross-platform]]: [[Microsoft Windows|Windows]], [[macOS]], [[Linux]]
| operating system = [[Cross-platform]]: [[Microsoft Windows|Windows]], [[macOS]], [[Linux]]
| genre = [[Data acquisition]], [[instrument control]], [[test automation]], analysis and [[signal processing]], [[Industrial control system|industrial control]], [[embedded system]] design
| genre = [[Data acquisition]], [[instrument control]], [[test automation]], analysis and [[signal processing]], [[Industrial control system|industrial control]], [[embedded system]] design
| license = [[Proprietary software|Proprietary]]
| license = [[Proprietary software|Proprietary]]
| website = {{URL|https://www.ni.com/labview}}
| website = {{URL|https://www.ni.com/labview}}
| programming language = C, C++
| programming language = [[C (programming language)|C]], [[C++]], [[C Sharp (programming language)|C#]]
}}
}}
'''Laboratory Virtual Instrument Engineering Workbench''' ('''LabVIEW''')<ref name=kring2006>{{Cite book|title=LabVIEW for everyone : graphical programming made easy and fun.|last=Jeffrey.|first=Travis|date=2006|publisher=Prentice Hall|others=Kring, Jim.|isbn=0131856723|edition=3rd|location=Upper Saddle River, NJ|oclc=67361308}}</ref>{{rp|3}} is a system-design platform and development environment for a [[visual programming language]] from [[National Instruments]].
'''Laboratory Virtual Instrument Engineering Workbench''' ('''LabVIEW''')<ref name=kring2006>{{Cite book|title=LabVIEW for everyone : graphical programming made easy and fun.|last=Jeffrey.|first=Travis|date=2006|publisher=Prentice Hall|others=Kring, Jim.|isbn=0131856723|edition=3rd|location=Upper Saddle River, NJ|oclc=67361308}}</ref>{{rp|3}} is a graphical ''system design and development'' ''platform'' produced and distributed by [[National Instruments]], based on a programming environment that uses a [[visual programming language]]. It is widely used for [[data acquisition]], [[instrument control]], and industrial [[automation]]. It provides tools for designing and deploying complex test and measurement systems.


The graphical language is named "G"; not to be confused with [[G-code]]. The G dataflow language was originally developed by Labview,<ref>{{cite document|url=https://ieeexplore.ieee.org/document/751616|title=Software synthesis from dataflow models for G and LabVIEW|doi=10.1109/ACSSC.1998.751616|s2cid=7150314}}</ref> LabVIEW is commonly used for [[data acquisition]], [[instrument control]], and industrial [[automation]] on a variety of [[operating system]]s (OSs), including [[Microsoft Windows]] as well as various versions of [[Unix]], [[Linux]], and [[macOS]].
The visual (aka graphical) programming language is called "G" (not to be confused with [[G-code]]). It is a dataflow language originally developed by National Instruments.<ref>{{cite book|url=https://ieeexplore.ieee.org/document/751616|title=Software synthesis from dataflow models for G and LabVIEW|date=November 1998 |volume=2 |pages=1705–1709 vol.2 |doi=10.1109/ACSSC.1998.751616|s2cid=7150314}}</ref> LabVIEW is supported on a variety of [[operating system]]s (OSs), including [[macOS]] and other versions of [[Unix]] and [[Linux]], as well as [[Microsoft Windows]].


The latest versions of LabVIEW are LabVIEW 2021 (released in August 2021) and LabVIEW NXG 5.1 (released in January 2021).<ref>{{cite web|title=Upgrade LabVIEW|url=https://www.ni.com/en-us/shop/labview/upgrade.html|url-status=live|website=Forums|publisher=National Instruments}}</ref> NI released the free for non-commercial use LabVIEW and LabVIEW NXG Community editions on April 28th, 2020.<ref>{{Cite web|url=https://www.businesswire.com/news/home/20200428005266/en/NI-Releases-Free-Editions-Flagship-Software-LabVIEW|title=NI Releases Free Editions of Flagship Software: LabVIEW|date=2020-04-28|website=www.businesswire.com|language=en|access-date=2020-04-28}}</ref>
The latest versions of LabVIEW are LabVIEW 2024 Q3 (released in July 2024) and LabVIEW NXG 5.1 (released in January 2021).<ref>{{cite web|title=Upgrade LabVIEW|url=https://www.ni.com/en-us/shop/labview/upgrade.html|website=Forums|publisher=National Instruments}}</ref> National Instruments released the free for non-commercial use LabVIEW and LabVIEW NXG Community editions on April 28, 2020.<ref>{{Cite web|url=https://www.businesswire.com/news/home/20200428005266/en/NI-Releases-Free-Editions-Flagship-Software-LabVIEW|title=NI Releases Free Editions of Flagship Software: LabVIEW|date=2020-04-28|website=www.businesswire.com|language=en|access-date=2020-04-28}}</ref>


== Dataflow programming ==
== Dataflow programming ==
The programming paradigm used in LabVIEW, sometimes called G, is based on data availability. If there is enough data available to a subVI or function, that subVI or function will execute. Execution flow is determined by the structure of a graphical block diagram (the LabVIEW-source code) on which the programmer connects different function-nodes by drawing wires. These wires propagate variables and any node can execute as soon as all its input data become available. Since this might be the case for multiple nodes simultaneously, LabVIEW can execute inherently in parallel.<ref name=bress2013>{{cite book|last1=Bress|first1=Thomas J.|title=Effective LabVIEW Programming|date=2013|publisher=NTS Press|location=[S.l.]|isbn=978-1-934891-08-7}}</ref>{{rp|1–2}} [[Multi-processing]] and [[Thread (computer science)|multi-threading]] hardware is exploited automatically by the built-in scheduler, which [[multiplexing|multiplexes]] multiple OS threads over the nodes ready for execution.
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 places ''nodes'' and connects them by drawing ''wires''. A node can be a ''control'', ''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.<ref name=bress2013>{{cite book|last1=Bress|first1=Thomas J.|title=Effective LabVIEW Programming|date=2013|publisher=NTS Press|location=[S.l.]|isbn=978-1-934891-08-7}}</ref>{{rp|1–2}} [[Multi-processing]] and [[Thread (computer science)|multi-threading]] hardware is exploited automatically by the built-in scheduler, which [[multiplexing|multiplexes]] multiple OS threads over the nodes ready for execution.


== Graphical programming ==
== Graphical programming ==
[[File:Labview code example.png|thumb]]
[[File:Labview code example.png|thumb|An example of Labview code]]
LabVIEW integrates the creation of user interfaces (termed front panels) into the development cycle. LabVIEW programs-subroutines are termed virtual instruments (VIs). Each VI has three components: a block diagram, a front panel, and a connector pane. The last is used to represent the VI in the block diagrams of other, calling VIs. The front 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. The back panel, which is a block diagram, contains the graphical source code. All of the objects placed on the front panel will appear on the back panel as terminals. The back panel also contains structures and functions which perform operations on controls and supply data to indicators. The structures and functions are found on the Functions palette and can be placed on the back panel. Collectively controls, indicators, structures, and functions are referred to as nodes. Nodes are connected to one another using wires, e.g., two controls and an indicator can be wired to the addition function so that the indicator displays the sum of the two controls. Thus a virtual instrument can be run as either a program, with the front panel serving as a user interface, or, when dropped as a node onto the block diagram, the front panel defines the inputs and outputs for the node through the connector pane. This implies each VI can be easily tested before being embedded as a subroutine into a larger program.
LabVIEW integrates the creation of user interfaces (termed front panels) into the program development cycle. LabVIEW programs are collections of one or more ''virtual instruments'' (VIs). Each VI has three components, a ''front panel'', ''back panel'', and ''connector panel'', all composed of nodes and wires represented graphically to the user. The ''front 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. The ''back panel'' consists of a ''block 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. The ''connector 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 graphical approach also allows nonprogrammers to build programs by dragging and dropping virtual representations of lab equipment with which they are already familiar. The LabVIEW programming environment, with the included examples and documentation, makes it simple to create small applications. This is a benefit on one side, but there is also a certain danger of underestimating the expertise needed for high-quality G programming. For complex algorithms or large-scale code, it is important that a programmer possess an 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, which communicate by a [[client–server model]], and are thus easier to implement due to the inherently parallel nature of G.


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 simple [[client–server model]] which takes advantage of the inherently parallel nature of "G".
=== Widely-accepted design patterns ===

Applications in LabVIEW are usually designed using well-known architectures, known as [[design pattern]]s. The most common design patterns for graphical LabVIEW applications are listed in the table below.
== Common application design patterns ==
Applications in LabVIEW are typically designed using well-known architectures{{citation needed|date=November 2021}} known as [[design pattern]]s. The most common design patterns for graphical LabVIEW applications are listed in the table below.
{| class="wikitable"
{| class="wikitable"
|+Common design patterns for LabVIEW applications
|+Common design patterns for LabVIEW applications
Line 47: Line 49:
|All owning virtual instruments (VIs) are kept in memory.
|All owning virtual instruments (VIs) are kept in memory.
|-
|-
|[[State machine (LabVIEW programming)|State machine]]<ref>{{cite web |url=http://www.ni.com/white-paper/3024/en/ |title=Application Design Patterns: State Machines |date=8 September 2011 |website=National Instruments whitepapers |accessdate=21 September 2017 |url-status=live |archiveurl= https://web.archive.org/web/20170922002635/http://www.ni.com/white-paper/3024/en/ |archivedate=22 September 2017}}</ref>
|State machine<ref>{{cite web |url=http://www.ni.com/white-paper/3024/en/ |title=Application Design Patterns: State Machines |date=8 September 2011 |website=National Instruments whitepapers |accessdate=21 September 2017 |url-status=live |archiveurl= https://web.archive.org/web/20170922002635/http://www.ni.com/white-paper/3024/en/ |archivedate=22 September 2017}}</ref>
|Controlled execution that depends on past events
|Controlled execution that depends on past events
|[[Switch statement|Case structure]] inside a while loop pass an [[Enumerated type|enumerated variable]] to a shift register, representing the next state; complex state machines can be designed using the Statechart module
|[[Switch statement|Case structure]] inside a while loop passes an [[Enumerated type|enumerated variable]] to a shift register, representing the next state; complex state machines can be designed using the Statechart module
|User interfaces,
|• User interfaces<br/>• Complex logic<br/>• Communication protocols<!--Avoid line breaks here to prevent layout issues.-->
complex logic,
communication protocols
|All possible states must be known in advance.
|All possible states must be known in advance.
|-
|-
Line 66: Line 70:
|-
|-
|Producer-consumer<ref>{{cite web |url=http://www.ni.com/white-paper/3023/en/ |title=Application Design Patterns: Producer/Consumer |author=<!--Not stated--> |date=24 August 2016 |website=National Instruments whitepapers |access-date=21 September 2017 |url-status=live |archive-url=https://web.archive.org/web/20170922002635/http://www.ni.com/white-paper/3023/en/ |archive-date=22 September 2017 }}</ref>
|Producer-consumer<ref>{{cite web |url=http://www.ni.com/white-paper/3023/en/ |title=Application Design Patterns: Producer/Consumer |author=<!--Not stated--> |date=24 August 2016 |website=National Instruments whitepapers |access-date=21 September 2017 |url-status=live |archive-url=https://web.archive.org/web/20170922002635/http://www.ni.com/white-paper/3023/en/ |archive-date=22 September 2017 }}</ref>
|Asynchronous of multithreaded execution of loops
|Asynchronous or multithreaded execution of loops
|A master loop controls the execution of two slave loops, that communicate using notifiers, queues and semaphores; data-independent loops are automatically executed in separate threads
|A master loop controls the execution of two slave loops, that communicate using notifiers, queues and semaphores; data-independent loops are automatically executed in separate threads
|Data sampling and visualization
|Data sampling and visualization
Line 78: Line 82:
|}
|}


== Benefits ==
== Features and Resources ==
{{Advert section|date=July 2022}}

=== Interfacing to devices ===
=== Interfacing to devices ===
LabVIEW includes extensive support for interfacing to devices such as 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 LabVIEW function nodes for controlling the device.
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 their ''Instrument Driver Network'' (IDNet).<ref>{{cite web |title=3rd Party Instrument Drivers - National Instruments |url=http://www.ni.com/downloads/instrument-drivers/ |url-status=live |archive-url=https://web.archive.org/web/20141128134304/http://www.ni.com/downloads/instrument-drivers/ |archive-date=2014-11-28 |website=www.ni.com}}</ref>

LabVIEW includes built-in support for NI hardware platforms such as [[CompactDAQ]] and [[CompactRIO]], with a large number of device-specific blocks for such hardware, the ''Measurement and Automation eXplorer'' (MAX) and ''Virtual Instrument Software Architecture'' (VISA) toolsets.


LabVIEW has built-in support for other National Instruments products, such as the [[CompactDAQ]] and [[CompactRIO]] hardware platforms and ''Measurement and Automation eXplorer'' (MAX) and ''Virtual Instrument Software Architecture'' (VISA) toolsets.
National Instruments makes thousands of device drivers available for download on the NI Instrument Driver Network (IDNet).<ref>{{cite web|url=http://www.ni.com/downloads/instrument-drivers/|title=3rd Party Instrument Drivers - National Instruments|website=www.ni.com|url-status=live|archive-url=https://web.archive.org/web/20141128134304/http://www.ni.com/downloads/instrument-drivers/|archive-date=2014-11-28}}</ref>


=== Code compiling ===
=== Code compiling and execution ===
LabVIEW includes a [[compiler]] that produces native code for the CPU platform. The graphical code is converted into Dataflow Intermediate Representation, and then translated into chunks of executable [[machine code]] by a compiler based on [[LLVM]]. Run-time engine calls these chunks, allowing better performance. The LabVIEW syntax is strictly enforced during the editing process and compiled into the executable machine code when requested to run or upon saving. In the latter case, the executable and the source code are merged into a single binary file. The execution is controlled by LabVIEW [[Run-time system|run-time]] engine, which contains some pre-compiled code to perform common tasks that are defined by the G language. The run-time engine governs execution flow, and provides a consistent interface to various operating systems, graphic systems and hardware components. The use of run-time environment makes the source code files portable across supported platforms. LabVIEW programs are slower than equivalent compiled C code, though like in other languages, program optimization often allows to mitigate issues with execution speed.<ref>{{cite web|url=https://www.ni.com/pl-pl/support/documentation/supplemental/10/ni-labview-compiler--under-the-hood.html#section-1599648034|title=NI LabVIEW Compiler: Under the Hood|date=4 February 2020|website=ni.com}}</ref>
LabVIEW includes a [[compiler]] 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 executable [[machine code]] by a compiler based on [[LLVM]]. These code chunks are called by the "G" [[Run-time system|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.<ref>{{cite web|url=https://www.ni.com/pl-pl/support/documentation/supplemental/10/ni-labview-compiler--under-the-hood.html#section-1599648034|title=NI LabVIEW Compiler: Under the Hood|date=4 February 2020|website=ni.com}}</ref>


=== Large libraries ===
=== Large libraries ===
Many [[Library (computing)|libraries]] with a large number of functions for data acquisition, signal generation, mathematics, statistics, signal conditioning, analysis, etc., along with numerous for functions such as integration, filters, and other specialized abilities usually associated with data capture from hardware sensors is enormous. In addition, LabVIEW includes a text-based programming component named MathScript with added functions for signal processing, analysis, and mathematics. MathScript can be integrated with graphical programming using ''script nodes'' and uses a syntax that is compatible generally with [[MATLAB]].<ref>{{cite web|title=LabVIEW MathScript RT Module|url=http://www.ni.com/labview/mathscript/|website=www.ni.com|url-status=live|archive-url=https://web.archive.org/web/20160805161725/http://www.ni.com/labview/mathscript/|archive-date=2016-08-05}}</ref>
LabVIEW includes a large number of [[Library (computing)|libraries]] 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 includes ''MathScript'', a text-based programming component with built-in functions for signal processing, analysis, and mathematics. MathScript can be integrated with graphical programming using ''script nodes'' and uses a syntax that is generally compatible with [[MATLAB]].<ref>{{cite web|title=LabVIEW MathScript RT Module|url=http://www.ni.com/labview/mathscript/|website=www.ni.com|url-status=live|archive-url=https://web.archive.org/web/20160805161725/http://www.ni.com/labview/mathscript/|archive-date=2016-08-05}}</ref>


=== Parallel programming ===
=== Parallel programming ===
LabVIEW is an inherently [[concurrent language]], so it is very easy to program multiple tasks that are performed in parallel via multithreading. For example, this is done easily by drawing two or more parallel while loops and connecting them to two separate nodes. This is 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.
LabVIEW is an inherently [[concurrent 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 ===
=== Ecosystem ===
Due to the longevity and popularity of the LabVIEW language, and the ability for users to extend its functions, a large ecosystem of third party add-ons has developed via contributions from the community. This ecosystem is available on the LabVIEW Tools Network, which is a marketplace for both free and paid LabVIEW add-ons.
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),<ref>{{Cite web|url=https://www.vipm.io/desktop|title=VIPM Desktop|website=www.vipm.io|access-date=2023-06-09}}</ref> the official package manager for LabVIEW add-ons. National Instruments also hosts a marketplace for both free and paid LabVIEW add-ons, called the ''NI Tools Network''.


=== User community ===
=== User community ===
Line 103: Line 105:


===Home Bundle Edition===
===Home Bundle Edition===
[[National Instruments]] provides a low cost LabVIEW Home Bundle Edition.<ref>{{cite web|url=http://sine.ni.com/nips/cds/view/p/lang/en/nid/213095|title=LabVIEW Home Bundle for Windows - National Instruments|website=sine.ni.com|url-status=live|archive-url=https://web.archive.org/web/20160704163634/http://sine.ni.com/nips/cds/view/p/lang/en/nid/213095|archive-date=2016-07-04}}</ref>
National Instruments provides a low cost LabVIEW Home Bundle Edition.<ref>{{cite web|url=http://sine.ni.com/nips/cds/view/p/lang/en/nid/213095|title=LabVIEW Home Bundle for Windows - National Instruments|website=sine.ni.com|url-status=live|archive-url=https://web.archive.org/web/20160704163634/http://sine.ni.com/nips/cds/view/p/lang/en/nid/213095|archive-date=2016-07-04}}</ref>


=== Community Edition ===
=== Community Edition ===
Line 109: Line 111:


== Criticism ==
== Criticism ==
LabVIEW is a [[proprietary software|proprietary]] product of [[National Instruments]]. Unlike common programming languages such as [[C Programming Language|C]] or [[Fortran]], LabVIEW is not managed or specified by any third party standards committee such as [[American National Standards Institute]] (ANSI), [[Institute of Electrical and Electronics Engineers]] (IEEE), [[International Organization for Standardization]] (ISO).
LabVIEW is a [[proprietary software|proprietary]] product of National Instruments. Unlike common programming languages such as [[C Programming Language|C]] or [[Fortran]], LabVIEW is not managed or standardized by any third-party standards committee.


=== Non-textual ===
=== Non-textual ===
Since G language is non-textual, 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 some additional tools to make comparison and merging of code with source code control (versioning) tools such as subversion, CVS and Perforce.
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.<ref>{{cite web |title=Thinking in G » Top 5 bad excuses for not using source code control |url=http://thinkinging.com/2007/06/17/top-5-bad-excuses-for-not-using-source-code-control/ |url-status=live |archive-url=https://web.archive.org/web/20161028215453/http://thinkinging.com/2007/06/17/top-5-bad-excuses-for-not-using-source-code-control/ |archive-date=2016-10-28 |access-date=2016-10-28}}</ref><ref>{{cite web |title=Software Configuration Management and LabVIEW - National Instruments |url=http://www.ni.com/white-paper/4114/en/ |url-status=live |archive-url=https://web.archive.org/web/20161029043345/http://www.ni.com/white-paper/4114/en/ |archive-date=2016-10-29 |website=www.ni.com}}</ref><ref>{{cite web |title=Configuring LabVIEW Source Code Control (SCC) for use with Team Foundation Server (TFS) - National Instruments |url=http://www.ni.com/tutorial/14304/en/ |url-status=live |archive-url=https://web.archive.org/web/20161028215645/http://www.ni.com/tutorial/14304/en/ |archive-date=2016-10-28 |website=www.ni.com}}</ref>
<ref>{{cite web |url=http://thinkinging.com/2007/06/17/top-5-bad-excuses-for-not-using-source-code-control/ |title=Archived copy |access-date=2016-10-28 |url-status=live |archive-url=https://web.archive.org/web/20161028215453/http://thinkinging.com/2007/06/17/top-5-bad-excuses-for-not-using-source-code-control/ |archive-date=2016-10-28 }}</ref><ref>{{cite web|url=http://www.ni.com/white-paper/4114/en/|title=Software Configuration Management and LabVIEW - National Instruments|website=www.ni.com|url-status=live|archive-url=https://web.archive.org/web/20161029043345/http://www.ni.com/white-paper/4114/en/|archive-date=2016-10-29}}</ref><ref>{{cite web|url=http://www.ni.com/tutorial/14304/en/|title=Configuring LabVIEW Source Code Control (SCC) for use with Team Foundation Server (TFS) - National Instruments|website=www.ni.com|url-status=live|archive-url=https://web.archive.org/web/20161028215645/http://www.ni.com/tutorial/14304/en/|archive-date=2016-10-28}}</ref>

=== No zoom function ===
There is no ability to zoom in to (or enlarge) a virtual instrument (VI) which will be hard to see on a large high-resolution monitor. However, the ability to zoom has been added into LabVIEW NXG.<ref>{{Cite web|url=https://www.ni.com/documentation/en/labview/5.0/nxg-gs/control-zoom-mouse-wheel/|title=Customizing Mouse Wheel Behavior - LabVIEW NXG 5.0 Manual - National Instruments|website=www.ni.com|access-date=2020-04-28}}</ref>


== Release history ==
== Release history ==
Line 352: Line 350:
|21.0
|21.0
|August 2021
|August 2021
|-
|LabVIEW 2022 Q3
|22.3
|July 2022
|-
|LabVIEW 2023 Q1
|23.1
|January 2023
|-
|LabVIEW 2023 Q3
|23.3
|July 2023
|-
|LabVIEW 2024 Q1
|24.1
|January 2024
|-
|LabVIEW 2024 Q3
|24.3
|July 2024
|}
|}


==Repositories and libraries==
==Repositories and libraries==
[[OpenG]], as well as LAVA Code Repository (LAVAcr), serve as repositories for a wide range of Open Source LabVIEW applications and [[Library (computing)|libraries]]. [[SourceForge]] has LabVIEW listed as one of the possible languages in which code can be written.
[[OpenG]] and LAVA Code Repository (LAVAcr) serve as repositories for a wide range of Open Source LabVIEW applications and [[Library (computing)|libraries]]. [[SourceForge]] has LabVIEW listed as one of the possible languages in which code can be written.


VI Package Manager has become the standard [[package manager]] for LabVIEW libraries. It is very similar in purpose to Ruby's [[RubyGems]] and Perl's [[CPAN]], although it provides a graphical user interface similar to the [[Synaptic Package Manager]]. VI Package Manager provides access to a repository of the OpenG (and other) libraries for LabVIEW.
VI Package Manager has become the standard [[package manager]] for LabVIEW libraries. It is very similar in purpose to Ruby's [[RubyGems]] and Perl's [[CPAN]], although it provides a graphical user interface similar to the [[Synaptic Package Manager]]. VI Package Manager provides access to a repository of the OpenG (and other) libraries for LabVIEW.


Tools exist to convert [[MathML]] into G code.<ref>{{cite web|url=https://decibel.ni.com/content/docs/DOC-13859|title=Math Node - A new way to do math in LabVIEW|date=25 October 2010|website=ni.com|url-status=live|archive-url=https://web.archive.org/web/20110225172619/http://decibel.ni.com/content/docs/DOC-13859|archive-date=25 February 2011}}</ref>
Tools exist to convert [[MathML]] into "G" code.<ref>{{cite web|url=https://decibel.ni.com/content/docs/DOC-13859|title=Math Node - A new way to do math in LabVIEW|date=25 October 2010|website=ni.com|url-status=live|archive-url=https://web.archive.org/web/20110225172619/http://decibel.ni.com/content/docs/DOC-13859|archive-date=25 February 2011}}</ref>


==Related software==
==Related software==
National Instruments also offers a product named [[Measurement Studio]], which offers many of the test, measurement, and control abilities of LabVIEW, as a set of classes for use with [[Microsoft]] [[Visual Studio]]. This allows developers to harness some of LabVIEW's strengths within the text-based [[.NET Framework]]. National Instruments also offers [[LabWindows/CVI]] as an alternative for ANSI C programmers.
National Instruments also offers [[Measurement Studio]], a product that offers many of the test, measurement, and control abilities of LabVIEW as a set of classes for use with [[Microsoft]] [[Visual Studio]]. This allows developers to harness some of LabVIEW's strengths within the text-based [[.NET Framework]]. National Instruments also offers [[LabWindows/CVI]] as an alternative for ANSI C programmers.


When applications need sequencing, users often use LabVIEW with the TestStand test management software, also from National Instruments.
When applications need sequencing, users often use LabVIEW with the National Instruments ''TestStand'' test management software.


The [[Ch interpreter]] is a [[C (programming language)|C]]/[[C++]] interpreter that can be embedded in LabVIEW for scripting.<ref name="chlabview">{{cite web|url=http://iel.ucdavis.edu/projects/chlabview/|title=Embedding a C/C++ Interpreter Ch into LabVIEW for Scripting|website=iel.ucdavis.edu|url-status=live|archive-url=https://web.archive.org/web/20110515065700/http://iel.ucdavis.edu/projects/chlabview/|archive-date=2011-05-15}}</ref>
The [[Ch interpreter]] is a [[C (programming language)|C]]/[[C++]] interpreter that can be embedded in LabVIEW for scripting.<ref name="chlabview">{{cite web|url=http://iel.ucdavis.edu/projects/chlabview/|title=Embedding a C/C++ Interpreter Ch into LabVIEW for Scripting|website=iel.ucdavis.edu|url-status=live|archive-url=https://web.archive.org/web/20110515065700/http://iel.ucdavis.edu/projects/chlabview/|archive-date=2011-05-15}}</ref>


DSP Robotics' FlowStone DSP also uses a form of graphical programming similar to LabVIEW, but is limited to the robotics industry respectively.
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 with [[modeFRONTIER]], a multidisciplinary and multi-objective optimization and design environment, written to allow coupling to almost any [[computer-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.
LabVIEW has a direct node with [[modeFRONTIER]], a multidisciplinary and multi-objective optimization and design environment, written to allow coupling to almost any [[computer-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 ==
== See also ==
Line 376: Line 394:
* [[Dataflow programming]]
* [[Dataflow programming]]
* [[Fourth-generation programming language]]
* [[Fourth-generation programming language]]
* [[Graphical programming]]
* [[Visual programming language]]
* [[Graphical system design]]
* [[Graphical system design]]


;
;Related software titles
;Related software titles
* [[Lego Mindstorms NXT]], whose programming environment NXT-G is based on LabVIEW, and can be programmed within LabVIEW.
* [[Lego Mindstorms NXT]], whose programming environment NXT-G is based on LabVIEW and can be programmed within LabVIEW.
* [[20-sim]]
* [[20-sim]]
* [[LabWindows/CVI]]
* [[LabWindows/CVI]]
Line 389: Line 408:
* [[TOMVIEW]]
* [[TOMVIEW]]


;
;Free and open-source packages
;Free and open-source packages
* [[PWCT (software)|PWCT]] &mdash; GPL license
* [[PWCT]] &mdash; GPL license
* [[DRAKON]] &mdash; public domain, with some open-source components
* [[DRAKON]] &mdash; public domain, with some open-source components


Line 576: Line 596:


{{DEFAULTSORT:Labview}}
{{DEFAULTSORT:Labview}}
[[Category:Numerical software]]
[[Category:Cross-platform software]]
[[Category:Visual programming languages]]
[[Category:Numerical programming languages]]
[[Category:Numerical analysis software for Linux]]
[[Category:Numerical analysis software for Linux]]
[[Category:Numerical analysis software for MacOS]]
[[Category:Numerical analysis software for macOS]]
[[Category:Numerical analysis software for Windows]]
[[Category:Numerical analysis software for Windows]]
[[Category:Cross-platform software]]
[[Category:Numerical programming languages]]
[[Category:Numerical software]]
[[Category:Pedagogic integrated development environments]]
[[Category:Pedagogic integrated development environments]]
[[Category:Synchronous programming languages]]
[[Category:Software modeling language]]
[[Category:Software modeling language]]
[[Category:Synchronous programming languages]]
[[Category:Visual programming languages]]
[[Category:Programming languages supporting units of measure]]

Latest revision as of 01:21, 7 September 2024

LabVIEW
Developer(s)National Instruments
Initial release1986; 38 years ago (1986)
Stable release
LabVIEW NXG 5.1
LabVIEW 2024 Q3 / July 2024; 4 months ago (2024-07)
Written inC, C++, C#
Operating systemCross-platform: Windows, macOS, Linux
TypeData acquisition, instrument control, test automation, analysis and signal processing, industrial control, embedded system design
LicenseProprietary
Websitewww.ni.com/labview

Laboratory Virtual Instrument Engineering Workbench (LabVIEW)[1]: 3  is a graphical system design and development platform produced and distributed by National Instruments, based on a programming environment that uses a visual programming language. It is widely used for data acquisition, instrument control, and industrial automation. It provides tools for designing and deploying complex test and measurement systems.

The visual (aka graphical) programming language is called "G" (not to be confused with G-code). It is a dataflow language originally developed by National Instruments.[2] LabVIEW is supported on a variety of operating systems (OSs), including macOS and other versions of Unix and Linux, as well as Microsoft Windows.

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

Dataflow programming

[edit]

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 places nodes and connects them by drawing wires. A node can be a control, 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.[5]: 1–2  Multi-processing and multi-threading hardware is exploited automatically by the built-in scheduler, which multiplexes 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 more virtual instruments (VIs). Each VI has three components, a front panel, back panel, and connector panel, all composed of nodes and wires represented graphically to the user. The front 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. The back panel consists of a block 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. The connector 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 simple client–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 as design patterns. The most common design patterns for graphical LabVIEW applications are listed in the table below.

Common design patterns for LabVIEW applications
Design pattern Purpose Implementation details Use cases Limitations
Functional Global Variable Exchange information without using global variables A shift register of a while 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 wiring All owning virtual instruments (VIs) are kept in memory.
State machine[6] Controlled execution that depends on past events Case structure inside a while loop passes an enumerated variable to a shift register, representing the next state; complex state machines can be designed using the Statechart module User interfaces,

complex logic, communication protocols

All possible states must be known in advance.
Event-driven user interface Lossless processing of user actions GUI 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 captured Graphical user interface Only one event structure in a loop.
Master-slave[7] Run independent processes simultaneously Several parallel while loops, one of which functions as the "master", controlling the "slave" loops A simple GUI for data acquisition and visualization Attention to and prevention of race conditions is required.
Producer-consumer[8] Asynchronous or multithreaded execution of loops A master loop controls the execution of two slave loops, that communicate using notifiers, queues and semaphores; data-independent loops are automatically executed in separate threads Data sampling and visualization Order of execution is not obvious to control.
Queued state machine with event-driven producer-consumer Highly responsive user-interface for multithreaded applications An 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 VIs Complex applications

Features and Resources

[edit]

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 their Instrument Driver Network (IDNet).[9]

LabVIEW has built-in support for other National Instruments products, such as the CompactDAQ and CompactRIO hardware platforms and Measurement and Automation eXplorer (MAX) and Virtual Instrument Software Architecture (VISA) toolsets.

Code compiling and execution

[edit]

LabVIEW includes a compiler 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 executable machine code by a compiler based on LLVM. 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.[10]

Large libraries

[edit]

LabVIEW includes a large number of libraries 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 includes MathScript, a text-based programming component with built-in functions for signal processing, analysis, and mathematics. MathScript can be integrated with graphical programming using script nodes and uses a syntax that is generally compatible with MATLAB.[11]

Parallel programming

[edit]

LabVIEW is an inherently concurrent 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),[12] the official package manager for LabVIEW add-ons. National Instruments also hosts a marketplace for both free and paid LabVIEW add-ons, called the NI 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 several electronic mailing lists (email groups) and Internet forums.

Home Bundle Edition

[edit]

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

Community Edition

[edit]

National Instruments provides a free-for-non-commercial use version called LabVIEW Community Edition.[14] 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.[15]

Criticism

[edit]

LabVIEW is a proprietary product of National Instruments. Unlike common programming languages such as C or Fortran, 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.[16][17][18]

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 version Build number Date Notes
LabVIEW project begins April 1983
LabVIEW 1.0 October 1986 for Macintosh
LabVIEW 2.0 January 1990
LabVIEW 2.5 August 1992 first release for Sun[which?] and Windows
LabVIEW 3.0 July 1993 Multiplatform
LabVIEW 3.0.1 1994 first release for Windows NT
LabVIEW 3.1 1994
LabVIEW 3.1.1 1995 first release with "application builder" ability
LabVIEW 4.0 April 1996
LabVIEW 4.1 1997
LabVIEW 5.0 February 1998
LabVIEW RT May 1999 Real-time
LabVIEW 6.0 (6i) 6.0.0.4005 26 July 2000
LabVIEW 6.1 6.1.0.4004 12 April 2001
LabVIEW 7.0 (Express) 7.0.0.4000 April 2003
LabVIEW PDA module May 2003 first release of the module
LabVIEW FPGA module June 2003 first release
LabVIEW 7.1 7.1.0.4000 2004
LabVIEW Embedded module May 2005 first release
LabVIEW 8.0 8.0.0.4005 September 2005
LabVIEW 8.20 August 2006 native object-oriented programming
LabVIEW 8.2.1 8.2.1.4002 21 February 2007
LabVIEW 8.5 8.5.0.4002 2007
LabVIEW 8.6 8.6.0.4001 24 July 2008
LabVIEW 8.6.1 8.6.0.4001 10 December 2008
LabVIEW 2009 9.0.0.4022 4 August 2009 32-bit and 64-bit
LabVIEW 2009 SP1 9.0.1.4011 8 January 2010
LabVIEW 2010 10.0.0.4032 4 August 2010
LabVIEW 2010 f2 10.0.0.4033 16 September 2010
LabVIEW 2010 SP1 10.0.1.4004 17 May 2011
LabVIEW for LEGO MINDSTORMS August 2011 2010 SP1 with some modules
LabVIEW 2011 11.0.0.4029 22 June 2011
LabVIEW 2011 SP1 11.0.1.4015 1 March 2012
LabVIEW 2012 12.0.0.4029 August 2012
LabVIEW 2012 SP1 12.0.1.4013 December 2012
LabVIEW 2013 13.0.0.4047 August 2013
LabVIEW 2013 SP1 13.0.1.4017 March 2014[19]
LabVIEW 2014 14.0 August 2014
LabVIEW 2014 SP1 14.0.1.4008 March 2015
LabVIEW 2015 15.0f2 August 2015
LabVIEW 2015 SP1 15.0.1f1 March 2016
LabVIEW 2016 16.0.0 August 2016
LabVIEW 2017 17.0f1 May 2017
LabVIEW NXG 1.0 1.0.0 May 2017
LabVIEW 2017 SP1 17.0.1f1 Jan 2018[20]
LabVIEW NXG 2.0 2.0.0 Jan 2018[21]
LabVIEW 2018 18.0 May 2018
LabVIEW NXG 2.1 2.1.0 May 2018[22]
LabVIEW 2018 SP1 18.0.1 Sep 2018[23]
LabVIEW NXG 3.0 3.0.0 Nov 2018[24]
LabVIEW 2019 19.0 May 2019
LabVIEW NXG 3.1 3.1.0 May 2019[25]
LabVIEW 2019 SP1 19.0.1 Nov 2019
LabVIEW NXG 4.0 4.0.0 Nov 2019[26]
LabVIEW 2020 and
LabVIEW NXG 5.0 Community Edition
April 2020[27] first releases
LabVIEW 2021 21.0 August 2021
LabVIEW 2022 Q3 22.3 July 2022
LabVIEW 2023 Q1 23.1 January 2023
LabVIEW 2023 Q3 23.3 July 2023
LabVIEW 2024 Q1 24.1 January 2024
LabVIEW 2024 Q3 24.3 July 2024

Repositories and libraries

[edit]

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

VI Package Manager has become the standard package manager for LabVIEW libraries. It is very similar in purpose to Ruby's RubyGems and Perl's CPAN, although it provides a graphical user interface similar to the Synaptic Package Manager. VI Package Manager provides access to a repository of the OpenG (and other) libraries for LabVIEW.

Tools exist to convert MathML into "G" code.[28]

[edit]

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

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

The Ch interpreter is a C/C++ interpreter that can be embedded in LabVIEW for scripting.[29]

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 with modeFRONTIER, a multidisciplinary and multi-objective optimization and design environment, written to allow coupling to almost any computer-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]
Related software titles
Free and open-source packages
  • PWCT — GPL license
  • DRAKON — public domain, with some open-source components

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. ^ 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.
  3. ^ "Upgrade LabVIEW". Forums. National Instruments.
  4. ^ "NI Releases Free Editions of Flagship Software: LabVIEW". www.businesswire.com. 2020-04-28. Retrieved 2020-04-28.
  5. ^ Bress, Thomas J. (2013). Effective LabVIEW Programming. [S.l.]: NTS Press. ISBN 978-1-934891-08-7.
  6. ^ "Application Design Patterns: State Machines". National Instruments whitepapers. 8 September 2011. Archived from the original on 22 September 2017. Retrieved 21 September 2017.
  7. ^ "Application Design Patterns: Master/Slave". National Instruments whitepapers. 7 October 2015. Archived from the original on 22 September 2017. Retrieved 21 September 2017.
  8. ^ "Application Design Patterns: Producer/Consumer". National Instruments whitepapers. 24 August 2016. Archived from the original on 22 September 2017. Retrieved 21 September 2017.
  9. ^ "3rd Party Instrument Drivers - National Instruments". www.ni.com. Archived from the original on 2014-11-28.
  10. ^ "NI LabVIEW Compiler: Under the Hood". ni.com. 4 February 2020.
  11. ^ "LabVIEW MathScript RT Module". www.ni.com. Archived from the original on 2016-08-05.
  12. ^ "VIPM Desktop". www.vipm.io. Retrieved 2023-06-09.
  13. ^ "LabVIEW Home Bundle for Windows - National Instruments". sine.ni.com. Archived from the original on 2016-07-04.
  14. ^ "LabVIEW Community Edition - National Instruments". www.ni.com. Retrieved 2020-04-28.
  15. ^ "LabVIEW Community Edition Usage Details - National Instruments". www.ni.com. Retrieved 2020-04-28.
  16. ^ "Thinking in G » Top 5 bad excuses for not using source code control". Archived from the original on 2016-10-28. Retrieved 2016-10-28.
  17. ^ "Software Configuration Management and LabVIEW - National Instruments". www.ni.com. Archived from the original on 2016-10-29.
  18. ^ "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.
  19. ^ "What's New in NI Developer Suite - National Instruments". www.ni.com. Archived from the original on 2014-03-31. Retrieved 2014-03-31.
  20. ^ "LabVIEW 2017 SP1 Patch Details - National Instruments". www.ni.com. Retrieved 2018-05-28.
  21. ^ "LabVIEW NXG 2.0 Readme - National Instruments". www.ni.com. Retrieved 2020-04-28.
  22. ^ "LabVIEW NXG 2.1 Readme - National Instruments". www.ni.com. Retrieved 2020-04-28.
  23. ^ "LabVIEW 2018 SP1 Readme for Windows - National Instruments". www.ni.com. Retrieved 2020-04-28.
  24. ^ "LabVIEW NXG 3.0 Readme - National Instruments". www.ni.com. Retrieved 2020-04-28.
  25. ^ "LabVIEW NXG 3.1 Readme - National Instruments". www.ni.com. Retrieved 2020-04-28.
  26. ^ "LabVIEW NXG 4.0 Readme - National Instruments". www.ni.com. Retrieved 2020-04-28.
  27. ^ "NI Releases Free Editions of Flagship Software: LabVIEW". www.businesswire.com. 2020-04-28. Retrieved 2020-04-28.
  28. ^ "Math Node - A new way to do math in LabVIEW". ni.com. 25 October 2010. Archived from the original on 25 February 2011.
  29. ^ "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]
[edit]