Vous êtes sur la page 1sur 34

LabVIEW Basics II

What You Need To Get Started

LabVIEW Basics II: Development

LabVIEW Basics II Course Manual


LabVIEW Basics II Course CD
Multifunction DAQ device
DAQ Signal Accessory, wires, and cable

Computer running
LabVIEW 8.6 or later
and Windows 2000 or later

11500 North Mopac Expressway


Austin, Texas 78759
ni.com/training

ni.com/training

File Locations

Instructional Methods

The course installer places the course files in the following


location:

Lecture gives a foundation


in the topic
Instructor reinforces
Lecture
Topic
foundation through
demonstrations and quizzes
Use concept exercises to further explore a topic

Root Directory

e c ses
Exercises
<or>
Solutions

LabVIEW
Basics II

Demonstrations
Quizzes

Concept
Exercise

Development
Exercise

Watch a simulation, experiment with example VIs

Use development exercises to gain hands-on experience


Demonstration of a finished development exercise further
reinforces the learning process
ni.com/training

ni.com/training

Courses

Getting The Most Out Of This Course


Experiment with hands-on exercises to understand the
methods used
Implementations explore a possible solutionyou may find
a better one
Do not come to class prepared to develop an outside
application; concentrate on the exercises given to build a
good foundation

New User

Experienced User

Advanced User

LabVIEW Basics I

LabVIEW Intermediate I

LabVIEW Advanced I

LabVIEW Basics II
Skills learned:
LabVIEW environment
navigation
Basics application creation
using LabVIEW
Basics of data acquisition and
instrument control

Skills learned:
Large application design
Advanced development
techniques
Implementing multideveloper
projects

Certifications

Certified LV Associate
Developer Exam
Skills tested:
LabVIEW environment
knowledge

ni.com/training

LabVIEW Intermediate II
Skills learned:
Modular application
development
Structured design and
development practices
Inter-application
communication and
connectivity techniques

Certified LabVIEW
Developer Exam
Skills tested:
LabVIEW application
development expertise

Certified LabVIEW
Architect Exam
Skills tested:
LabVIEW application
development mastery

ni.com/training
6

Course Learning Map

Course Goals

Lesson 1

Lesson 5

Common Design Techniques

Controlling the User Interface

Lesson 2

Lesson 6

Communicating Among Multiple Loops

Advanced File I/O

Lesson 3

Lesson 7

Event Programming

Creating & Distributing an Executable

This course prepares you to:


Design, implement and distribute stand-alone applications
Apply single and multiple loop design patterns
Use event programming effectively
Programmatically control user interface objects
Apply data management techniques
Optimize reuse of existing code for your projects

Lesson 4

Improving an Existing VI

ni.com/training

ni.com/training

Lesson 1
Common Design Techniques

A. Single Loop Architectures


Simple
Single VI that takes a measurement, performs calculations,
and either displays the results or records them to disk
Usuallyy does not require a specific start or stop action from
the user

TOPICS
A.
B.
C.
D.
E.

Single Loop Architectures


Parallelism
Multiple Loop Architectures
Events
Timing a Design Pattern
ni.com/training

ni.com/training
10

A. Single Loop Architectures

A. Single Loop Architectures

General VI
Three phases: Start-up, Main Application, and Shut-down

General VI

ni.com/training

ni.com/training
11

12

A. Single Loop Architectures

A. Single Loop Architectures

State Machine
Usually has a start-up and shut-down state, but also
contains other states

State Machine

ni.com/training

ni.com/training
13

14

B. Parallelism

B. Parallelism

Execute multiple tasks at the same time

Passing data among parallel loops is a challenge


How do the loops stop in this example?

ni.com/training

ni.com/training
15

16

B. Parallelism

B. Parallelism

How do the loops stop in this example?

Read the Stop button from a file


Each loop independently accesses the file
However, reading and writing to files can consume much
pprocessor time

ni.com/training

ni.com/training
17

18

C. Multiple Loop Architectures

C. Multiple Loop Architectures


Producer/Consumer

Parallel Loop

ni.com/training

ni.com/training
19

D. Events

20

D. Events

What are events?


Influence block diagram execution with events
Events are an asynchronous notification indicating that
somethingg occurred
Events originate from the user interface, external I/O, or
other parts of the program

Why use events?


User Actions on the Front Panel
Sy
ynchronize

Block Diagram Execution


ni.com/training

ni.com/training

D. Events

E. Timing a Design Pattern - Execution

Event Programming

Execution Timing
Provides the design pattern with a function that specifically
allows the processor time to complete other tasks
In some cases, a function is not necessaryy
Execution

ni.com/training

ni.com/training
23

24

E. Timing a Design Pattern Execution

E. Timing a Design Pattern Software Control


Software Control Timing
Consider implementing a state machine design pattern for
a data acquisition system
q
data for 5 minutes, yyou could remain in
If yyou must acquire
the acquisition state until the 5 minutes elapses
However, during that time you cannot process any user
interface actions such as stopping the VI
To process user interface actions, you must implement
timing so that the VI continually executes for the specified
time

ni.com/training

ni.com/training
25

E. Timing a Design Pattern

26

SummaryQuiz
Execution Timing

Are the following statements True or False?


Software control timing allows the processor time to
complete other tasks.
Execution timingg allows the processor time to complete
other tasks.
You can use a wire to pass data among parallel loops.

Software Control Timing


ni.com/training

ni.com/training
27

28

SummaryQuiz Answers
Are the following statements True or False?
False. Software control timing is a method for monitoring a
real-time clock.
True. Execution timingg allows the pprocessor time to
complete other tasks.
False. If you pass data between two loops with a wire, the
loops no longer run in parallel.

ni.com/training
29

Lesson 2
Communicating Among Multiple Loops

A. Variables
Cannot pass data between parallel loops with a wire
Variables allow you to circumvent normal dataflow by
passing data from one place to another without connecting
the two places with a wire

TOPICS
A.
B.
C.
D.

Variables
Functional Global Variables
Race Conditions
Synchronizing Data
ni.com/training

ni.com/training
2

A. Variables

A. Variables Using in a Single VI

Variables are block diagram elements that allow you to


access or store data in another location
Variables can be of the following types:

Use local variables to pass data within a single VI

Local: store data in front panel controls and indicators


Global: store data in special repositories that can be
accessed from multiple VIs
Functional Global: store data in While Loop shift registers
Shared: transfers data between various distributed targets
connected together over a network
ni.com/training

ni.com/training
3

Demo: Creating Local Variables

A. Variables Using Between VIs


Use a global variable or a single process shared variable to
share data between multiple VIs
Use a global variable to share data among VIs on the same
computer, especially if you do not use a project file
Use a single process shared variable if you may need to
share the variable information among VIs on multiple
computers in the future

GOAL

Create and use local variables.

ni.com/training

ni.com/training
5

Demo: Creating Global Variables

Demo: Creating Shared Variables

GOAL

Create and use single process shared variables.

GOAL

Create and use global variables.

ni.com/training

ni.com/training
7

A. Variables Using Carefully

A. Variables Using Carefully

ni.com/training

ni.com/training
9

A. Variables Initializing

10

A. Variables Initializing

Verify that variables contain known data values before the


VI runs
If you do not initialize
the variable before the
VI reads it for the
first time, it contains the
default value of the
associated front
panel object
ni.com/training

ni.com/training
11

12

B. Functional Global Variables

B. Functional Global Variables

The general form of a functional global variable includes


an uninitialized shift register (1) with a single iteration For
or While Loop

A functional global variable usually has an action input


parameter that specifies which task the VI performs
The VI uses an uninitialized shift register in a While
Loop to hold the result of the operation

ni.com/training

ni.com/training
13

B. Functional Global Variables Timing

14

Exercise 2-1: Variables VI

Very useful for performing customized elapsed time


measurements

GOAL

Use variables to write to and read from a control.

ni.com/training

ni.com/training
15

GOAL

Exercise 2-2: Global Data Project

16

C. Race Conditions
A race condition is a situation where the timing of events or
the scheduling of tasks may unintentionally affect an output
or data value
Race conditions are a common problem for programs that
execute multiple tasks in parallel and share data between
the tasks

OPTIONAL
Create a project containing multiple VIs that share data
using a single process shared variable.

ni.com/training

ni.com/training
17

18

Demo: Race Conditions

C. Race Conditions
Race conditions are very difficult to identify and debug
Often, code with a race condition can return the same
result thousands of times in testing, but still be capable of
returning a different result
Avoid race conditions by:

GOAL

Watch the instructor demonstrate race conditions.

Controlling shared resources


Properly sequencing instructions
Identifying and protecting critical sections within your code
Reducing use of variables

C:/Exercises/LabVIEW Basics II/Demonstrations

ni.com/training

ni.com/training
20

19

C. Race Conditions Shared Resources

C. Race Conditions Critical Code


A critical section of code is code that may behave
inconsistently if some shared resource is altered while it is
running
If one loop interrupts another loop while it is executing
critical code, then a race condition can occur
Eliminate race conditions by identifying and protecting
critical code with:
Functional Global Variables
Semaphores

ni.com/training

ni.com/training
21

C. Race Conditions Critical Code

22

C. Race Conditions Critical Code


Functional Global Variable used
to protect critical code:

ni.com/training

ni.com/training
23

24

C. Race Conditions Critical Code

C. Race Conditions Sequencing


What is the final value?
Four possible outcomes:
Value = (Value * 5) +2
Value = (Value + 2) * 5
Value = Value * 5
Value = Value +2

ni.com/training

ni.com/training
25

Exercise 2-3: Bank VI

26

D. Synchronizing the Transfer of Data

GOAL

Variables are one method for passing data between


parallel processes
Using variables breaks the LabVIEW dataflow paradigm,
allows for race conditions, and incurs more overhead
than passing the data by wire
Eliminate a race condition by protecting a critical section
of code.

ni.com/training

ni.com/training
28

27

Demo: Notifiers

GOAL

D. Synchronizing the Transfer of Data

ni.com/training

Open the Master/Slave Design Pattern template in


LabVIEW and explore the operation of Notifiers.

ni.com/training
29

30

D. Synchronizing the Transfer of Data

D. Synchronizing the Transfer of Data

The following benefits result from using Notifiers to transfer


data between parallel loops:
Both loops are synchronized to the master loopthe slave
loop only executes when the master loop sends a
notification
You can use Notifiers to create globally available data,
making it possible to send data with a notification
Using Notifiers creates efficient codethere is no need to
poll to determine when data is available from the master
loop

Notifier disadvantages:
A notifier does not buffer data
If the master loop sends another piece of data before the
first ppiece of data has been read byy the slave loops,
p that
data is overwritten and lost

ni.com/training

ni.com/training
31

D. Synchronizing the Transfer of Data

32

D. Synchronizing the Transfer of Data

Queues are similar to notifiers, except that a queue can


store multiple pieces of data
By default, queues work in a FIFO (first in, first out) manner
Use a queue when yyou want to process all data placed in
the queue
Use a notifier if you only want to process the current data

ni.com/training

ni.com/training
33

Demo: Weather Station

Open the Producer/Consumer Design Pattern (data)


template in LabVIEW and explore the operation of
Queues.

GOAL

GOAL

Demo: Queues

34

Demonstrate the use of queues for data transfer and


synchronization of parallel loops.
C:/Exercises/LabVIEW Basics II/Demonstrations/Case
Study - Queue

ni.com/training

ni.com/training
35

36

Exercise 2-4: Queues vs Local Variables VI

SummaryQuiz

GOAL

1. You should use variables in your VI where ever possible.


a) True
b) False

Examine a built-in producer/consumer design pattern VI


that uses queues to avoid race conditions and
synchronize the data transfer between two independent
parallel loops.
ni.com/training

ni.com/training
38

37

SummaryQuiz Answer

SummaryQuiz

1. You should use variables in your VI where ever possible.


a) True
b) False

2. Which cannot transfer data?


a) Semaphores
b) Functional global variables
c) Notifiers
d) Queues
Q

ni.com/training

ni.com/training
39

40

SummaryQuiz Answer

SummaryQuiz

2. Which cannot transfer data?


a) Semaphores
b) Functional global variables
c) Notifiers
d) Queues
Q

3. Which can you use only within a project?


a) Local variable
b) Global variable
c) Functional global variable
d) Single-process
Si l
shared
h d variable
i bl

ni.com/training

ni.com/training
41

42

SummaryQuiz Answer

SummaryQuiz

3. Which can you use only within a project?


a) Local variable
b) Global variable
c) Functional global variable
d) Single-process
Si l
shared
h d variable
i bl

4. Which cannot be used to pass data between multiple VIs?


a) Local variable
b) Global variable
c) Functional global variable
d) Single-process
Si l
shared
h d variable
i bl

ni.com/training

ni.com/training
43

44

SummaryQuiz Answer
4. Which cannot be used to pass data between multiple VIs?
a) Local variable
b) Global variable
c) Functional global variable
d) Single-process
Si l
shared
h d variable
i bl

ni.com/training
45

Lesson 3: Event Programming

Parts of an Event Structure (continued)


Event Data Node identifies the data LabVIEW provides when the
event occurs; similar to the Unbundle By Name function
Event Filter Node identifies the subset of data available in the
Event Data Node that the event case can modify

TOPICS
A. Event Driven Programming
B. Event Based Design Patterns

ni.com/training

ni.com/training

The Event Structure

Event Structure Basic Usage

Examples of User Interface


(Static) Events

Pressing a button on the


mouse
Pressing a ke
key on the
keyboard
Value (Signaling) Property can
generate a programmatic event

Normally used in a While Loop


Sleeps and handles exactly one event per iteration
Event Data available in terminals on structures left border
Can right
right-click
click on Event
Data and show only the
terminals you need

ni.com/training

Parts of an Event Structure

ni.com/training

Event Structure Configuration

Event Selector Label identifies event case viewed


Timeout value in ms to wait for events; default value is 1
(indefinite)
Dynamic Event Terminals used for dynamic event registration
Default Tunnel Values
new type of tunnel which
allows unwired cases to
provide default values

ni.com/training

Use a dialog box to configure events by


right-clicking the Event structure border and
selecting Edit Events Handled by This Case
from the shortcut menu
ni.com/training

Exercise 3-1: Experiment with Event


Structures

Edit Events Dialog


1. Configured Events

2. Event Sources

GOAL

3. Events
Concept
Experiment with the operation of the Event Structure in a
VI.

ni.com/training

Notify and Filter Events

ni.com/training

Event-Based Design Pattern

Notify Events (green arrow)


Notifies LabVIEW that a user action has
already occurred; available only in the Event
Data Node

Use the user interface event handler design pattern for


detecting when a user changes the value of a control,
moves or clicks the mouse, or presses a key
The user interface event handler allows you to minimize
processor use without sacrificing interactivity

Filter Events (red arrow)


Validates or changes the event data before
the user interface can process it; available
in the Event Filter Node and Event Data
Node
ni.com/training

ni.com/training

Event Registration and Panel Locking

User Interface Event Handler

Events are registered when a VI with an Event structure on


its block diagram becomes reserved
When a registered event occurs, it is queued until the
Event structure(s) configured for it executes
It is not possible to miss events or process them out of
order
By default, the front panel is locked until the event is
handled

1. Event StructureConfigure the Event structure to have one frame


for each category of event you want to detect
2. While Loop
3. Timeout Terminalallows you to control when the Timeout event
executes
3
4. Event Data Node
2
1
4

You can turn off locking, but only for Notify Events

Events are unregistered when the VI becomes idle


ni.com/training

ni.com/training

Producer/Consumer (Events)

SummaryQuiz Answer

Benefits
Efficiently
responds
asynchronously
to the user
interface
Queues can
transfer any
data type

1. Event Structures are normally used in While Loops.


True.

ni.com/training

ni.com/training
16

GOAL

Exercise 3-2: Experiment with Event-Based


Design Patterns

SummaryQuiz
2. Which of the following are examples of user interface
events?
a) Mouse click
b)) Keystroke
y
c) Event Filter Node
d) Value change of a control

Concept
Observe the functionality and design of event-based
LabVIEW design patterns

ni.com/training

ni.com/training
17

SummaryQuiz

SummaryQuiz Answer

1. True or False? Event Structures are normally used in


While Loops.

2. Which of the following are examples of user interface


events?
a) Mouse click
b)) Keystroke
y
c) Event Filter Node
d) Value change of a control

ni.com/training

ni.com/training
15

18

SummaryQuiz
3. True or False? Using user interface events allows you to
synchronize user actions on the front panel with block
diagram execution.

ni.com/training
19

SummaryQuiz Answer
3. Using user interface events allows you to synchronize
user actions on the front panel with block diagram
execution. True.

ni.com/training
20

Lesson 4
Controlling the User Interface

A. VI Server Architecture
VI Server performs many functions; however, this lesson
concentrates on using VI Server to control front panel objects
and edit the properties of a VI

TOPICS
A.
B.
C.
D.

VI Server Architecture
Property Nodes
Control References
Invoke Nodes
ni.com/training

ni.com/training
2

A. VI Server Architecture

A. VI Server Architecture Example

Terminology:
An object is a member of a class
A class defines what an object is able to do, what
operations it can perform ((methods),
) and what properties it
has

Control

Boolean

Boolean Sub-Class
S b Class
Property: Boolean Text

Control Class
Property: Visible
Method: Reinitialize to Default

Array

Array Sub
Class
Sub-Class
Property: Number of Rows

Methods perform an operation on an object


Properties are the attributes of an object

Stop

Stop Object
Visible: Yes
Reinitialize to Default: No
Boolean Text: Stop

ni.com/training

ni.com/training
3

A. VI Server Architecture

B. Property Nodes

Control Classes

Property Nodes access the properties of an object


In some applications, you might want to modify the
appearance of front panel objects programmatically in
response to certain inputs

LabVIEW front panel objects inherit properties and methods


from a specific control class

VI Class

If a user enters an invalid password, you might want a red


LED to start blinking
If a data point is above a certain value, you might want to
show a red trace instead of a green one

Your VI belongs to the VI Class and has its own properties and
methods associated with it
Example Methods: abort your VI, adjust the position of the front
panel, get an image of the block diagram
Example Properties: change the title of your front panel
window, retrieve the size of the block diagram, hide the abort
button

Property Nodes allow you to make these modifications


programmatically

ni.com/training

ni.com/training
5

Demo: Property Nodes

B. Property Nodes Execution Order

GOAL

Property Nodes execute in order from top to bottom


If an error occurs on a terminal, the node stops at that
terminal, returns an error, and does not execute any further
terminals
Create a Property Node for a front panel object, choose a
property to set and choose a property to read.

ni.com/training

ni.com/training
8

Exercise 4-1: Temperature Limit VI

C. Control References Implicit vs. Explicit


Implicitly Linked Property Node

Explicitly Linked Property Node

GOAL

Main VI

Use Property Nodes to change the properties of front


panel objects programmatically.

VI

Main VI

VI

ni.com/training

SubVI

ni.com/training
9

C. Control References

C. Control References Create SubVI

A control reference is a reference to a front panel object


Wire control references to
generic Property Nodes
Pass control references
to subVIs

To create explicitly-linked Property Nodes in a subVI:


1. Create your VI
2. Select the portion of the block
diagram
g
that will be in the subVI
3. Select EditCreate SubVI;
LabVIEW automatically creates
the control references needed
for the subVI
4. Customize and save the subVI

ni.com/training

ni.com/training
11

12

C. Control References Create SubVI

C. Control References Create yourself


Control Reference

S bVI F
SubVI
Frontt Panel
P l

S bVI Bl
SubVI
Blockk Di
Diagram

S bVI F
SubVI
Frontt Panel
P l

S bVI Bl
SubVI
Blockk Diagram
Di

Ctl Refnum
ni.com/training

ni.com/training
13

14

C. Control References Selecting Class

C. Control References Selecting Class

After you place a Control Refnum on the front panel of a


subVI, specify the VI Server class of the control

Specifying a more specific class for the refnum makes the


subVI more restrictive

Right-click and select VI Server Class from the shortcut


menu

For example, you can select Digital as the class, and the
subVI can only accept references
to numeric controls of the class Digital

Specifies the type of control references that the subVI


accepts
In the previous example, Control was the VI Server class

Selecting a more generic class for a control refnum allow it


to accept a wider range of objects but limits the properties
available

Allows the VI to accept a reference to any type of front panel


control
ni.com/training

ni.com/training
15

Exercise 4-2: Set Plot Names

D. Invoke Nodes
Invoke Nodes access the methods of an object
Use the Invoke Node to perform actions, or methods, on an
application or VI
Unlike the Property
p y Node, a single
g Invoke Node executes
only a single method on an application or VI

Set Plots.vi

GOAL

16

Use control references to create a subVI that modifies


graph or chart properties.

ni.com/training

ni.com/training
17

18

Invoke Nodes

Exercise 4-3: Front Panel Properties VI

GOAL

To create an implicitly-linked Invoke Node, right-click the


control and select CreateInvoke Node and choose a
method
An example of a method that is common to all controls is
the Reinitialize to Default method
The Waveform Graph has the
method Export Image:

Learn how to affect the attributes of a VI by using


Property Nodes and Invoke Nodes.

ni.com/training

ni.com/training
19

20

SummaryQuiz

SummaryQuiz Answer

1. For each of the following items, determine whether they


operate on a VI class or a Control class.

1. For each of the following items, determine whether they


operate on a VI class or a Control class.

a.
b.
c.
d.

Format and Precision


Blinking
Reinitialize to Default Value
Show Tool Bar

a.
b.
c.
d.

Format and Precision: Control


Blinking: Control
Reinitialize to Default Value: Control
Show Tool Bar: VI

ni.com/training

ni.com/training
21

22

SummaryQuiz

SummaryQuiz Answer

2. You have a GraphChart control refnum in a subVI.


Which control references could you wire to the
control refnum terminal of the subVI? (multiple answers)

2. You have a GraphChart control refnum in a subVI.


Which control references could you wire to the
control refnum terminal of the subVI? (multiple answers)

a.
b.
c.
d.

control reference of an XY Graph


control reference of a Numeric Array
control reference of a Waveform Chart
control reference of a Boolean

a.
b.
c.
d.

ni.com/training

control reference of an XY Graph


control reference of a Numeric Array
control reference of a Waveform Chart
control reference of a Boolean

ni.com/training
23

24

Lesson 5
Advanced File I/O Techniques

A. File Formats
At their lowest level, all files written to your computers hard
drive are a series of bits

TOPICS
A. File Formats
B. Binary Files
C. TDMS Files

ASCII
TDMS
Binary

ni.com/training

ni.com/training
2

A. File Formats

B. Binary Files

ASCII

TDMS

Direct Binary

Numeric
Precision

Good

Best

Best

Share
data

Best (Any program easily) Better (NI Programs


easily)

Good (only with


detailed metadata)

Efficiency

Good

Best

Best

Ideal Use

Share data with other


programs when file space
and numeric precision are
not important

Share data with


programs when
storing simple array
data and metadata

Store numeric data


compactly with
ability to random
access

Use Binary File functions to interact directly with a binary


file

ni.com/training

ni.com/training
4

B. Binary FilesBits/Bytes?

B. Binary FilesStoring Boolean Values

A bit is a single binary value

LabVIEW represents Boolean values as 8-bit values in a


binary file
Eight zeroes represents False [00000000], and any
other value represents True [00000001], [01000111],
[11111111], and so on
Files are divided into byte-sized chunks, making them
much easier to read and process

Each bit is either on or off and is represented by a 1 or a 0

A byte is a series of 8 bits

0
00000000

bit
byte

ni.com/training

ni.com/training
5

B. Binary FilesStoring Boolean Values

B. Binary FilesStoring Integers

File Contents
Method A
00000001 00000001
00000000 00000001
00000000 00000001

Binary Value
00000000
00000001
00000010
11111111

U8 Value
0
1
2
255

Method B
00101011

ni.com/training

ni.com/training
7

B. Binary FilesStoring Integers

B. Binary FilesStoring Other Data Types

Multi-byte integers are broken into separate bytes and are


stored in files in either little-endian or big-endian byte order
Using the Write to Binary File functions, you can choose
whether you store your data in little-endian or big-endian
format

Strings are stored as a series of unsigned 8-bit integers,


each of which has a value in the ASCII Character Code
Equivalents Table

U32 Value

Little-endian Value

Big-endian Value

00000001
00000000
00000000
00000000

00000000
00000000
00000000
00000001

This means that no difference exists between writing strings


with
ith th
the Binary
Bi
File
Fil Functions
F ti
andd writing
iti them
th with
ith the
th Text
T t
File Functions

Clusters are best represented in binary files by using


Datalog Files

ni.com/training

ni.com/training
9

10

B. Binary FilesStoring Arrays

B. Binary FilesSequential/Random Access

Arrays are represented as a sequential list of the elements


Element representation depends upon the element type
A header contains a 32-bit integer representing the size of
each dimension
Example
A 2D array with a
header contains:
row integer,
column integer,
then array data

Two methods of accessing data:


Sequential AccessRead each item in order, starting at
the beginning of a file
Random AccessAccess data at an arbitraryy ppoint within
the file

ni.com/training

ni.com/training
11

12

B. Binary FilesSequential Access

B. Binary FilesRandom Access

To sequentially access all of the data in a file, you can call


the Get File Size function and use the result to calculate
the number of items in the file, based upon the size of each
item and the layout of the file
You can then wire the number of items to the count
terminal of the Read from Binary File function

Use the Set Position VI to set the read offset to the point in
the file you want to begin reading
The offset is in bytes; therefore, you must calculate the
offset based upon the layout of the file

ni.com/training

ni.com/training
13

B. Binary FilesDatalog

14

B. Binary FilesDatalog Random Access

Datalog is a specific type of binary file, designed for storing


a list of records to a file
Each record is represented by a cluster and can contain
multiple pieces of data with any data type

ni.com/training

ni.com/training
15

Exercise 5-1: Bitmap File Writer VI

16

C. TDMS Files
TDMS
Technical Data Management Streaming
Use TDMS files for the following purposes:
To store test or measurement data
To create a structure for grouping your data
To store information about your data
To read and write data at high speeds

GOAL

Use Binary File I/O to write a file with a specified format.

ni.com/training

ni.com/training
17

18

C. TDMS Files

C. TDMS FilesData Hierarchy

TDMS file format:


TDMS file

Channel
Stores measurement signals or raw data in a TDMS file
Each channel can have properties describing the data
The data stored in the signal is stored as binary data on disk to
conserve di
diskk space andd iimprove efficiency
ffi i

Binary file (.tdms) that contains data and stores properties


about the data

TDMS_Index file

Channel Group

Binary index file (*.tdms_index) that provides consolidated


information on all the attributes and pointers in the TDMS file
Speeds up access to the data while reading
Automatically regenerated if lost

Segment of a TDMS file that contains properties and one or more


channels
Use channel groups to organize your data and to store information
that applies to multiple channels

TDMS file format internal structure is publicly documented


ni.com/training

ni.com/training

19

C. TDMS Files

20

C. TDMS FilesTDM Streaming API

Use TDMS Files in the following ways:


Use the Write to Measurement File and Read from
Measurement File Express VIs
Allow you to quickly save and retrieve data from TDMS format
Very little control over your data grouping and properties

Use the TDM Streaming API


Set of functions for opening, writing to, reading from, and
closing TDMS files
Allows you to organize your data into channel groups and
channels
ni.com/training

ni.com/training
21

22

C. TDMS FilesWrite Data

C. TDMS FilesRead Data

Streams data to the specified TDMS file

Reads the specified TDMS file and returns data from the
specified channel and/or channel group

Data subset to write is determined by group name and


channel name(s) inputs

ni.com/training
23

ni.com/training
24

C. TDMS FilesSet Properties

C. TDMS FilesGet Properties

Sets the properties of the TDMS file, channel group, or


channel

Returns the properties of the TDMS file, channel group, or


channel

ni.com/training

ni.com/training
25

26

C. TDMS FilesFile Viewer

C. TDMS FilesGrouping Data

Opens TDMS file and presents the file data in the


TDMS File Viewer dialog box

Carefully consider the best way to group your data,


because the data grouping can have a significant impact
on both the execution speed and implementation
complexity of writes and reads
Things you should consider when choosing a grouping
scheme include the original format of your data and how
you want to process or view the data

ni.com/training

ni.com/training
27

Exercise 5-2: TDMS Reader VI

28

SummaryQuiz
1. You need to store test results and organize the data into
descriptive groups. In the future, you need to efficiently view the
test results by group. Which file storage format should you use?
a) Tab-delimited ASCII
b) Custom binary format
c) TDMS
d) Datalog

GOAL

Learn how to read data from a TDMS file.

ni.com/training

ni.com/training
29

30

SummaryQuiz Answer

SummaryQuiz

1. You need to store test results and organize the data into
descriptive groups. In the future, you need to efficiently view the
test results by group. Which file storage format should you use?
a) Tab-delimited ASCII
b) Custom binary format
c) TDMS
d) Datalog

2. You need to write a program which saves Portable Network


Graphics (PNG) image files. Which file storage method should
you use?
a) Storage file VIs
b) Binary file functions
c) ASCII file VIs
d) Datalog file VIs

ni.com/training

ni.com/training
31

32

SummaryQuiz Answer

SummaryQuiz

2. You need to write a program which saves Portable Network


Graphics (PNG) image files. Which file storage method should
you use?
a) Storage file VIs
b) Binary file functions
c) ASCII file VIs
d) Datalog file VIs

3. You need to store data that other engineers will later analyze with
Microsoft Excel. Which file storage format should you use?
a) Tab-delimited ASCII
b) Custom binary format
c) TDMS
d) Datalog

ni.com/training

ni.com/training
33

34

SummaryQuiz Answer

SummaryQuiz

3. You need to store data that other engineers will later analyze with
Microsoft Excel. Which file storage format should you use?
a) Tab-delimited ASCII
b) Custom binary format
c) TDMS
d) Datalog

4. Which of the following is a little-endian representation of an


unsigned 32-bit integer (U32) with a value of 10?
a) 00001010
00000000
00000000
00000000
b) 00000000
00000000
00000000
00001010

ni.com/training

c) 00001010
d) 01010000
00000000
00000000
00000000

ni.com/training
35

SummaryQuiz Answer

SummaryQuiz

4. Which of the following is a little-endian representation of an


unsigned 32-bit integer (U32) with a value of 10?

5. True or False? You can use the Binary File Functions to


read ASCII files.

a) 00001010
00000000
00000000
00000000
b) 00000000
00000000
00000000
00001010

c) 00001010
d) 01010000
00000000
00000000
00000000

ni.com/training

ni.com/training
38

SummaryQuiz Answer

SummaryQuiz

5. You can use the Binary File Functions to read ASCII


files. True.

6. True or False? TDMS Files store properties only at the


channel or channel group level.

ni.com/training

ni.com/training
39

40

SummaryQuiz Answer
6. TDMS Files store properties only at the channel or
channel group level. False.

ni.com/training
41

Lesson 6
Improving an Existing VI

A. Refactoring Inherited Code


Inherited VIs may be poorly designed, making it difficult to
add features later in the life of the VI
Refactoring:
Process of redesigning
g g software to make it more readable
and maintainable so that the cost of change does not
increase over time
Changes the internal structure of a VI to
make it more readable and maintainable,
without changing its observable behavior

TOPICS
A. Refactoring Inherited Code
B. Typical Issues

ni.com/training

ni.com/training
2

A. Refactoring Inherited Code

A. Refactoring Inherited Code

ni.com/training

ni.com/training
3

A. Refactoring vs. Performance Optimization

A. When to Refactor

Changes that optimize the performance of a VI are not the


same as refactoring
Refactoring specifically changes the internal structure of a
VI to make it easier to read, understand, and maintain

When you are adding a feature to a VI or debugging it


There is value in a VI that functions, even if the block
diagram is not readable
Good candidates for complete
p
rewrites:
VIs that do not function
VIs that satisfy only a small portion of your needs

versus

ni.com/training

ni.com/training
5

B. Typical Issues
When you refactor to improve the
block diagram, make small
cosmetic changes before tackling
larger issues

B. Typical Issues
The following issues can make it difficult to work with an
inherited VI:
Too disorganized
Uses incorrect object
j names and ppoor icons
Uses unnecessary logic
Has duplicated logic
Does not use data flow programming
Has complicated algorithms
Is too big

Improve Block Diagram

Test VI

For example, it is easier to find


duplicated code if the block
diagram is well organized and
the terminals are well labeled

Is VI Acceptable?

No

Yes
Add Features or Use VI

ni.com/training

ni.com/training
7

B. Typical Issues - Disorganized

B. Typical Issues

The block diagram is too disorganized

The block diagram uses incorrect object names and poor


icons

Move objects within the block diagram


Create subVIs for sections of the VI that are
disorganized
Place comments to improve readability

Better

Best

Good
10

ni.com/training

ni.com/training
9

B. Typical Issues

B. Typical Issues

The block diagram uses unnecessary logic

The block diagram uses duplicate logic


Refactor the VI by creating a subVI for the duplicated logic

ni.com/training

ni.com/training
11

12

B. Typical Issues

B. Typical Issues

The block diagram does not use dataflow programming


Replace Sequence structures with state machines if
appropriate
Delete local variables and wire directlyy to controls or
indicators if possible

The block diagram has complicated algorithms

Simplify:

ni.com/training

ni.com/training
13

B. Typical Issues

14

Exercise 6-1: Typical Issues

GOAL

The block diagram is too big (larger than the screen size)
Refactor the VI to make it smaller
Create subVIs for sections of code within the block diagram

ni.com/training

Concept Exercise
Improve an existing VI that is poorly designed.

ni.com/training
15

16

SummaryJob Aid
Use the following refactoring checklist to help determine if you
should refactor a VI:

The block diagram is too disorganized


The block diagram contains incorrect object names and poor icons
Th bl
The
blockk diagram
di
contains
t i unnecessary llogic
i
The block diagram contains duplicated logic
The block diagram does not use dataflow programming
The block diagram contains complicated algorithms
The block diagram is too big

ni.com/training
17

Lesson 7
Creating and Distributing Applications
TOPICS
A. LabVIEW Features for Managing Project Development
B. Preparing the Application
C. Building the Application and Installer

ni.com/training

A. Managing Project Development


VI History
Use the History window in each VI to display the
development history of the VI, including revision numbers
The revision number starts at zero and increases
incrementally every time you save the VI
Record and track the changes you make to the VI in the
History window as you make them
Select EditVI Revision History to display
You also can print the revision history
2

ni.com/training

A. Managing Project Development

A. Managing Project Development

VI Hierarchy

Comparing VIs

Displays a graphical representation of all open LabVIEW


projects and application instances, as well as the calling
hierarchy for all VIs in memory, including type definitions
and global variables

A utility to determine the differences between two VIs


loaded into the memory

ni.com/training

GOAL

Exercise 7-1: LabVIEW Project Management


Tools

Concept Exercise
Examine some of the built-in LabVIEW features for project
management.

ni.com/training

ni.com/training

B. Preparing the Application


To create a professional, stand-alone application for your
VIs, you must consider several programming issues:
Use of outside code
Use of relative ppath names
Quit LabVIEW function

ni.com/training

C. Building the Application and Installer

C. Building the Application and Installer

Use Build Specifications in LabVIEW to create stand-alone


applications and to create installers
Stand-alone applicationsUse stand-alone applications to
provide other users with executable versions of VIs; this is
useful when you want users to run VIs without installing the
LabVIEW development system
InstallersUse installers to distribute stand-alone
applications, shared libraries, and source distributions that
you create with the Application Builder; you can include the
LabVIEW Run-Time Engine

System Requirements
Applications that you create with Build Specifications
generally have the same system requirements as the
LabVIEW development system used to create the VI or
application
Memory requirements vary depending on the size of the
application created

ni.com/training

Exercise 7-2: Creating an Application

ni.com/training

Summary
The Application Builder enables you to create stand-alone
applications and installers

GOAL

The Application Builder is available in the LabVIEW


Professional Development System, or as an add-on package

Creating a professional, stand-alone application with your


VIs involves four areas of understanding:

Concept Exercise
Create a stand-alone application with LabVIEW.

The architecture of your application


The programming issues particular to the application
The application building process
The installer building process
ni.com/training

ni.com/training

Courses

Continuing Your LabVIEW Education


Instructor Led Training
LabVIEW Intermediate I: Learn about developing large
projects and event programming
Hardware courses such as Data Acquisition
q
and Signal
g
Processing
Online courses such as Machine Vision and LabVIEW
Real-Time
Self-Paced: a variety of instructional packages and tools
designed to educate you at your own pace
11

ni.com/training

New User

Experienced User

Advanced User

LabVIEW Basics I

LabVIEW Intermediate I

LabVIEW Advanced I

LabVIEW Basics II
Skills learned:
LabVIEW environment
navigation
Basics application creation
using LabVIEW
Basics of data acquisition and
instrument control

LabVIEW Intermediate II
Skills learned:
Modular application
development
Structured design and
development practices
Inter-application
communication and
connectivity techniques

Skills learned:
Large application design
Advanced development
techniques
Implementing multideveloper
projects

Certifications

Certified LV Associate
Developer Exam
Skills tested:
LabVIEW environment
knowledge
12

Certified LabVIEW
Developer Exam
Skills tested:
LabVIEW application
development expertise

Certified LabVIEW
Architect Exam
Skills tested:
LabVIEW application
development mastery

ni.com/training

How To Learn More Out Of The Classroom


ni.com/support
Access product manuals, KnowledgeBases, example code,
tutorials, application notes and discussion forums
Request technical support

Please complete the course survey


and retrieve your course CD.

Info-LabVIEW: www.info-labview.org
Alliance Program: ni.com/alliance
Publications: ni.com/reference/books/
Practice!

13

THANK YOU!
ni.com/training

ni.com/training

Vous aimerez peut-être aussi