Transcript Variables

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 low level 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 low level 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 multi plot 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

Pets Control Dogs Cats Boolean Array Labrador Poodle Stop LED Generic Object GObject Control 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 3 rd execute and error is output of 5 terminals, last two do not 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 Main VI Explicitly Linked Property Node Main VI 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.

2. Select

Edit»Create SubVI

; LabVIEW automatically creates the control references needed for the subVI.

SubVI Front Panel SubVI Block Diagram 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

registers - Stores data in While Loop shift •

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 once

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 Local variable Global variable Functional global Single-process shared variable Network published shared variable Scope

A single VI Multiple VIs on same computer

Notes

• Tied to a front panel control/indicator • Tied to a special global VI that has a front panel but no block diagram Multiple VIs on same computer Multiple VIs on same computer Across an Ethernet network • Implemented using a While Loop with an uninitialized shift register to store global data • Implemented using a project library in a project • Can easily convert into a network published shared variable • Implemented using a project library in a project • Often used to communicate with Real Time 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