Variables

Report
Welcome!
Workshop
6 of 7
Today's Topics

Review of Workshop 5
o
Graphs & Charts
o
Error Handling
o
Debugging
o
VI Server
o
Variables
o
Race Conditions
o
Semaphores
Review Question 1
True or False?
You must create a descriptive icon for a subVI and
wire the connector pane
Review Question 1
True or False?
You must create a descriptive icon for a subVI and
wire the connector pane
FALSE
Review Question 2
On a subVI, which terminal setting causes an
error if the terminal is not wired?
a) Required
b) Recommended
c) Optional
Review Question 2
On a subVI, which terminal setting causes an
error if the terminal is not wired?
a) Required
b) Recommended
c) Optional
Review Question 3
True or False?
Descriptions appear in the Context Help window.
Review Question 3
True or False?
Descriptions appear in the Context Help window.
TRUE
Review Question 4
Which of the following forms of documentation are available
on the block diagram?
a) Free labels
b) Labels
c) Captions
d) Tip strips
Review Question 4
Which of the following forms of documentation are available
on the block diagram?
a) Free labels
b) Labels
c) Captions
d) Tip strips
Review Question 5
Which of the following statements are true about high-level
File I/O Vis?
a) High-level File I/O functions are more efficient than lowlevel I/O
b) High-level File I/O functions perform the open/create,
read/write, and close within the VI
c) High-level File I/O functions are specific to one file type
Review Question 5
Which of the following statements are true about high-level
File I/O Vis?
a) High-level File I/O functions are more efficient than lowlevel I/O
b) High-level File I/O functions perform the
open/create, read/write, and close within the VI
c) High-level File I/O functions are specific to one file type
Review Question 1
You are logging data from multiple sensors over
many hours that you will process later using VIs
written by a colleague. Which file type would
best to use?
a) Text (ASCII)
b) TDMS
c) Binary
Review Question 1
You are logging data from multiple sensors over
many hours that you will process later using VIs
written by a colleague. Which file type would
best to use?
a) Text (ASCII)
b) TDMS
c) Binary
Review Question 2

Fill in the blanks for each block
______
______
a) Close
b) Open/Create/Replace
c) Check for Errors
d) Read or Write
_____
______
Review Question 2

Fill in the blanks for each block
Open/
Create/
Replace File
Read
and/or
Write to File
a) Close
b) Open/Create/Replace
c) Check for Errors
d) Read or Write
Close
File
Check for
Errors
Review Question 3
True or False?
All instances of a polymorphic VI must have the
same connector pane.
Review Question 3
True or False?
All instances of a polymorphic VI must have the
same connector pane.
TRUE
Waveform Graphs & Charts
• Special type of
numeric indicator
that displays one or
more plots of data,
typically acquired
at a constant rate
• Displays single or
multiple plots
Graphs vs. Charts
• Chart:
• Remembers history – new point added to end of plot
• Good for inside a loop
• Graph:
• New plot of all new data
• Good for outside the loop
• Use the Context Help window
to determine how to wire multiplot data to Waveform Graphs
and XY Graphs
Graphs & Charts
Chart Update Modes
• Right-click the chart and select Advanced»Update
Mode from the shortcut menu
• Strip chart is the default update mode
• Scope chart and Sweep chart modes display plots
significantly faster than the strip chart mode
Demonstration:
Comparing Graphs and Charts
Error Handling
 Anticipation, detection, and resolution of
warnings and errors
Essential for:
• Debugging - helps to catch programming errors
• Stress testing - helps to test application boundary cases
• Robustness - helps detect errors introduced by system
and environment differences
Error Handling: Types
Automatic: if error out is left unwired, LabVIEW
will handle it automatically (dialog box)
Manual: wiring the error out terminal means
manual error handling is occuring- you decide
what to do with the error.
Remember... without a mechanism to check for errors,
you know only that the VI does not work properly
Errors vs. Warnings
Error
Status = TRUE
Warning
Status = FALSE
Code is non-zero
Error Handling: Functions
Simple Error Handler VI
• creates a pop-up dialog box to notify user of error
that has occurred
• Configurable to handle warnings, too
• Avoid using in subVIs
Merge Error VI
• combines multiple error wires into a single error wire
• error received on the top most input will be passed
out, others will be ignored
Error Handling: Detection and Reporting
• Use error wires to propagate errors along and
handle appropriately
• Merge errors from different wire paths
Error Handling: With Loops
• Use shift-registers to detect errors and warnings in
all loop iterations
• Use error status as a condition to stop a loop
• While Loops
• Conditional For Loops
Handling Errors with SubVIs
• Use a Case structure to handle errors passed into the
subVI
30
Error Code Ranges
• Refer to the LabVIEW Help for complete list of error
code ranges:
• Fundamentals » Running and Debugging Vis » How-To »
Error Codes and Messages » Ranges of LabVIEW Error
Codes
• Codes are subdivided into ranges
according to product and VI
grouping
• Most codes are unique, but some
error codes are used by more
than one product or VI grouping
Debugging
Your VI isn’t broken, but you are getting
unexpected data or behavior…
Any unwired or hidden subVIs?
Incorrect default data being used?
Undefined data being passed?
Numeric representation correct?
Node execution order correct?
32
Debugging Tools
- use highlight execution
- use probes to see the current value in
the wire
- set breakpoints
to pause execution
at a specific point in the code
- single-step through the code
Debugging Tools: Highlight Execution
• Use execution highlighting to watch the data flow
through the block diagram
• If the VI runs more slowly than expected, confirm that
you turned off execution highlighting in subVIs
34
Debugging Tools: Probes
• Use the Probe tool to
• observe intermediate data values
• check the error output of VIs and functions, especially
those performing I/O
• Values can be retained in the wires so that you can
probe wires for data after execution has finished
35
Debugging Tools: Breakpoints
• When you reach a breakpoint during execution, the
VI pauses and the Pause button appears red
• You can take the following actions at a breakpoint:
• Single-step through execution using the single-stepping
buttons
• Probe wires to check intermediate values
• Change values of front panel controls
• Click the Pause button to continue running to the next
breakpoint or until the VI finishes running
36
Debugging Tools: Single Stepping
• Single-step through the VI to view each action of
the VI on the block diagram
• Suspend the execution of a subVI to
• edit values of controls and indicators
• control the number of times it runs
• go back to the beginning of the execution of the subVI
• Open subVI and select Operate»Suspend When
Called from the shortcut menu
37
VI Server
LabVIEW organizes and operates on its parts (front panel, button,
arrays, etc.) within an architecture called VI Server, which is
object oriented.
Terminology:
A class defines what an object is able to do, what operations it
can perform (methods), and what properties it has.
An object is a member of a class.
Methods perform an operation on an object.
Properties are the attributes of an object.
VI Server: Organization
Generic
Object
GObject
Pets
Control
Control
Dogs
Labrador
Cats
Poodle
Boolean
Stop
Array
LED
Boolean
Property Nodes
• Access the properties of an object
• Enable you to modify the appearance of front panel
objects programmatically in response to certain inputs.
• For example,
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
• Execute from top to bottom
By default, if an error occurs on 3rd of 5 terminals, last two do not
execute and error is output
40
Invoke Nodes
• Use the Invoke Node to perform actions, or methods, on
referenced items (VI, Control)
• Most methods have parameters
• Examples of VI Methods:
• Front Panel: Center
• Default Values: Reinitialize all to Default
• Print: VI to HTML
Method Name
Parameters
Demonstration:
Creating Property and Invoke Nodes
Implicitly and Explicitly Linking
Invoke/Property Nodes
Explicitly Linked
(requires reference)
Implicitly Linked
(color/ label for data type/label)
Property
Node
Invoke
Node
43
Why Implicitly Link?
Implicitly Linked Property Node
Explicitly Linked Property Node
Main VI
VI
Main VI
VI
SubVI
SubVIs, References and Invoke/Property Nodes
Edit»
Create
SubVI
1. Select the portion of
the block diagram that
will be in the subVI.
SubVI Front Panel
SubVI Block Diagram
2. Select Edit»Create
SubVI; LabVIEW
automatically creates
the control references
needed for the subVI.
45
Demonstration:
Creating References for Property and
Invoke Nodes; Selecting a Class
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
47
Variables
Variables - Block diagram elements that allow you to access
or store data in another location
Types:
• Local - Stores data in front panel controls and indicators
• Global - Stores data in special repositories that can be
accessed from multiple VIs
• Functional Global - Stores data in While Loop shift
registers
• Shared - Transfers data between various distributed targets
connected together over a network
48
Variables: within a single VI
Use local variables to pass data within a single VI
NOTE: Boolean controls with associated local variables must use switch
mechanical action; boolean latch action is incompatible with local variables
49
Variables: 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
50
Single Process Shared Variables
Shared Variables: creating and configuring
• You must have a
project open to create
a shared variable
• Variable configuration
data is stored in
Project Libraries
• LabVIEW will
automatically create a
library if the variable
was not created from
an existing library
Demonstration:
Creating Variables
Using Variables: tips
• Use wires if possible
• Variables go against
LabVIEW’s data flow
paradigm, so only use when
necessary
• Variables create opportunity
for race conditions
(discussed later)
Which block diagram is easier
to determine function? This
one or….
54
Using Variables: tips
…this one?
55
Using Variables: Initialization
• 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
56
Functional Global Variables
Special subVI with purpose of storing data by using uninitialized shift
register
General form includes
- an uninitialized shift register
- a single iteration For or While Loop
uninitialized shift
register
True constant permits while loop to iterate only on
57
Functional Global Variables
• 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
58
Functional Global Variables: Timing
Very useful for performing customized elapsed
time measurements
59
Variables: Recap
Variable Type
Scope
Notes
Local variable
A single VI
• Tied to a front panel control/indicator
Global variable
Multiple VIs on • Tied to a special global VI that has a front
same
panel but no block diagram
computer
Functional
global
Multiple VIs on • Implemented using a While Loop with an
same
uninitialized shift register to store global
computer
data
Single-process
shared variable
Multiple VIs on • Implemented using a project library in a
same
project
computer
• Can easily convert into a networkpublished shared variable
Networkpublished
shared variable
Across an
Ethernet
network
• Implemented using a project library in a
project
• Often used to communicate with RealTime targets
Race Condition
A situation where the timing of events or the scheduling of
tasks may unintentionally affect an output or data value
•
Common problem for programs that execute multiple tasks in parallel and
share data between the tasks
•
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:
• Controlling shared resources
• Properly sequencing instructions
• Identifying and protecting critical sections within your code
• Reducing use of variables
61
Race Conditions: Shared Resources
62
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
63
Race Condition: 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
64
Race Condition: Critical Code
Protecting critical code with Functional Global
Inside the Functional Global
65
Semaphores
Semaphores behave like a
talking stick …
only the one with the
semaphore/stick can
talk/operator
66
Homework
LAST Homework Assignment
Turn in ALL HOMEWORK soon!!
No Class Next Week!
Wednesday ,March 21 Toomey 199, prepare for a
quiz
67
CLAD
Review: Wednesday, April 4 at 4:00
Register
STUDY
• Go through the study guides
• Old Exams
• Webcasts
68

similar documents