조선대학교 기계공학과
지능메카트로닉스 실험실
LabVIEW Basic
LabVIEW Graphical Development System
Graphical Programming Environment Compile code for multiple OS and devices Useful in a broad range of applications
Applications of Virtual Instrument
• Design
– Signal and Image Processing – Embedded System Programming – Simulation and Prototyping – And more…
• Control
– Industrial Automatic Controls – Mechatronics and Robotics – And more…
• Tests and Measurements – Circuits and Electronics
– Measurements and Instrumentation – And more…
NI LabVIEW Robotics Starter Kit
• NI sbRIO-9632 임베디드 컨트롤러 • LabVIEW Robotics, LabVIEW
Real-Time 및 LabVIEW FPGA 소프트웨어
• 초음파 센서, 엔코더, 모터, 배터리 및
충전기 포함
NI myRIO Mechatronics Kit
• 엔코더가 있는 2개의 DC 기어 모터 • H-bridge 드라이버 • 가속도계 • 3축 자이로 • 적외선 근접 센서 • 주변 광 센서 • 초음파 거리 센서 • 나침반 • Hobby 서보 모터
Section I - Hardware and LabVIEW Usage
A. Getting Data into your Computer • Data Acquisition Devices
– NI-DAQ
– Simulated Data Acquisition – Sound Card
B. LabVIEW Environment
• Front Panel / Block Diagram • Toolbar /Tools Palette
C. Components of a LabVIEW Application • Creating a VI
• Data Flow Execution D. Additional Help
• Finding Functions
• Tips for Working in LabVIEW
MAX
• MAX stands for Measurement & Automation Explorer. • MAX configures and organizes all your National Instruments
DAQ, PCI/PXI instruments, GPIB, IMAQ, IVI, Motion, VISA, and VXI devices.
• Used for configuring and testing devices.
Icon Found on Windows Desktop
Start » All Programs » National Instruments LabVIEW
Startup Screen:
»
Start from a Blank VI: New
» Blank VI
Start from an Example: Examples
» Find Examples…
LabVIEW 실행
Each VI has 2 Windows
Front Panel - User Interface (UI) – Controls Inputs(입력) – Indicators Outputs(출력)
Block Diagram - Graphical Code – 블록다이어그램
– 프런트패널과 항시 동반 – 순서도와 유사한 소스 코드
– 모든 컴포넌트(함수+객체)는 와이어링 됨
Controls Palette (
Controls
&
Indicators
)
(Place items on the Front Panel Window)
Indicator: Numeric Slide Control: Numeric Customize Palette View
Functions (and Structures) Palette
(Place items on the Block Diagram Window)Tools Palette
Block Diagram Window Front Panel Window
Creating a VI
Input Terminals Output Terminal Boolean Control Graph Indicator• But in most cases, look for a match in colors.
Controlshave an arrow on the right side and have a thick border.
Indicatorshave an arrow on the left and a thin border. • Logic rules apply to wiring in LabVIEW:
Each wire must have one (but only one) source (or control), and each wire may have multiple destinations (or indicators).
• Block diagram execution
– Dependent on the flow of data – Block diagram does NOT
execute right to left. • Node executes when data is
available to ALL input terminals. • Nodes supply data to all output
terminals when done.
Debugging Techniques
• Finding Errors
• Execution Highlighting
• Probes
Click on broken Run button.
Windowshowing error appears.
Click on Execution Highlighting button; data flow is animated using bubbles. Values are
displayed on wires.
Right-click on wireto display probe and it shows data as it flows through wire segment.
You can also select Probe tool from Tools palette and click on wire.
Context Help Window
• Help»Show Context Help, press the <Ctrl+H> keys
• Hover cursor over object to update window
Additional Help
– Right-Click on the VI icon
and choose Help, or
– Choose “Detailed Help.” on
the context help window
Tips for Working in LabVIEW
• Keystroke Shortcuts
– <Ctrl+H> – Activate/Deactivate Context Help Window – <Ctrl+B> – Remove Broken Wires From Block Diagram – <Ctrl+E> – Toggle Between Front Panel and Block Diagram – <Ctrl+Z> – Undo (Also in Edit Menu)
• Tools » Options… – Set Preferences in LabVIEW
• File » VI Properties – Configure VI Appearance, Documentation, etc
.
Section II – Elements of Typical Programs
A. Loops • While Loop • For Loop • Wait Functions • Shift Register • Numeric Conversion B. Functions and SubVIs
• Types of Functions
• Modulizing Custom Functions (SubVI) • Functions Palette & Searching
C. Decision Making and File IO • Case Structure
Loops
Functions»Programming»Structures
• While Loops
– terminal counts iteration – Always runs at least once – Runs until stop condition is
met
• For Loops
– i terminal counts iterations – Run according to input N of
count terminal – i starts from 0
Drawing a Loop
1. Select the structure2. Enclose code to be repeated
Select the Loop Condition
• Click the Conditional Terminal with the Operating tool to define when the loop stops
• Default: Stop if True
Iteration Terminal Conditional Terminal
Structure Tunnels
• Tunnels feed data into and out of structures.
• The tunnel is a block that appears on the border; the color of the block is related to the data type wired to the tunnel.
• When a tunnel passes data into a loop, the loop executes only after data arrive at the tunnel.
Wait Functions
Wait Until Next msFunctions»Programming»Timing palette
가정된 소요시간
Wait Functions
Wait (ms)Time Delay
Working the same way in both functions
Shift Register
• Available at left or right border of loop structures • Right-click the border and select Add Shift Register • Right terminal stores data on completion of iteration
• Left terminal provides stored data at beginning of next iteration
Before Loop Begins First Iteration Second Iteration Last Iteration Value ? Initial Value: 0
Additional Shift Register Elements
Latest value is passed to right terminal Right-click the left terminal to add new elements
Previous values are available at the left terminals
Right-click the border for a new shift register 1 loop ago 2 loops ago 3 loops ago
[피드백 노드]
• For 루프나 While 루프에서 노드나 노드 그룹의 출력을 그 노드나 노드 그룹의 입력으로 연결할 루프가 한 반복을 끝내면 데이터를 저장하고, 다음 반복의 루프에 그 값을 전 달 한다. • 화살표는 데이터 값이 어느 방향으로 와이어를 따라 흐르는지 나타냅니다. • 데이터 흐름 방향이 변경되는 경우 화살표는 자동으로 방향을 바꿉니다.[시프트 레지스트]
• 이전 반복의 값을 루프를 통해 다음 반복으로 전달하고자 할 때 사용. • 루프 오른쪽의 터미널에는 윗방향 화살표가 있고, 반복이 끝날 때마다 데이터를 저장. • 레지스터의 오른쪽에 연결된 데이터를 다음 반복으로 전달. • 루프가 실행된 후에 루프의 오른쪽의 터미널 은 시프트 레지스터에 저장된 마지막 값을 반환.Feedback Node
Uninitialized Shift Registers & Feedback Nodes
Run Once VI stops execution Run Again
Output = 8 Output = 4
Equivalent Presentation
Numeric Conversion
• Numerics default to double-precision (8 bytes) or long integer (4 bytes) • LabVIEW automatically converts to different representations
• For Loop count terminal always converts to a long integer • Red coercion dot on terminal indicates conversion
conversion mark
Numeric Conversion
• LabVIEW chooses the representation that uses more bits. • If the number of bits is the same,
LabVIEW chooses unsigned over signed. • To choose the representation,
right-click on the terminal and select “Representation”.
• When LabVIEW converts floating-point numerics to integers, it rounds to the nearest integer. LabVIEW rounds x.5 to the nearest even integer.
For example, LabVIEW rounds 2.5 to 2 and 3.5 to 4.
3 Types of Functions
Express VIs: interactive VIs with configurable dialog page (blue border)
Standard VIs: modularized VIs customized by wiring (customizable)
Functions: fundamental operating elements of LabVIEW; no front panel or block diagram (yellow) – building block
What Types of Functions are Available?
• Input and Output
– Signal and Data Simulation
– Acquire and Generate Real Signals with DAQ – Instrument I/O Assistant (Serial & GPIB) – ActiveX for communication with other programs • Analysis
– Signal Processing – Statistics
– Advanced Math and Formulas – Continuous Time Solver • Storage
– File I/O
Searching for Controls, VIs, and Functions
• Palettes are filled with hundreds of VIs• Press the search button to index the all VIs for text searching • Click and drag an item from the search window to the block diagram • Double-click an item to open the owning palette
Modularity in LabVIEW – SubVIs
Convert repeated functions and VIs with a single VI
Create SubVI
• Enclose area to be converted into a subVI. • Select Edit»Create SubVI from the Edit Menu.
Icon and Connector Pane
• Use this connector pane layout as a standard• Top terminals are usually reserved for references, such as a file reference
• Bottom terminals are usually reserved for errorclusters
Icon and Connector Pane – Create Icon
• Create custom icons by right-clicking the icon in the upper rightcorner of the front panel or block diagram and selecting Edit Iconor by double-clicking the icon
• You also can drag a graphic from anywhere in your file system and drop it on the icon
• Refer to the
Icon Art Glossaryat ni.com for standard graphics to use in a VI icon
LabVIEW Functions and SubVIs operate like
Functions in other languages
Function Pseudo Code
function average (in1, in2, out) {
out = (in1 + in2)/2.0; }
SubVI Block Diagram
Calling Program Pseudo Code main
{
average (in1, in2, pointavg) }
Calling VI Block Diagram
How Do I Make Decisions in LabVIEW?(1)
Case Structures
Functions » Programming » Structures » Case Structure
• Right-click the structure boarder to add or delete cases • Use the labeling tool to enter values in the selector
(a) (b)
(a) Boolean input: Simple if-then case
(b) Numeric input: if out of range, the default is chosen
• selector terminal에연결된 값에 따라 어떤 케이스가 실행되는지 결정하며, 그 값은boolean, string, integer, enumerated type 등이 됨
How Do I Make Decisions in LabVIEW?(2)
Select
Functions » Programming » Comparison » Select
• Depending on s, return a value wired to tfor true or ffor false
Communicating between loops
• Communicating between loops using data flow is not possible – The left loop will execute completely before the right loop
Local Variables
• Local Variables allow data to be passed between parallel loops. • A single control or indicator can be read or written to from more than
one location in the program
– Local Variables break the dataflow paradigm and should be used sparingly
Producer/Consumer Design Pattern
File » New and navigate to VI » From Template » Frameworks » Design Patterns Design pattern to share data between loops
State Machines(
응용분야: user interface/process testing)
state(상태): 시간에 따라 변하는 객체값(시작, 상태전이, 끝) static sequence: 수 많은 algorithm의 sequence dynamic sequence: 각 algorithm을 상태로 정의
① While Loop ② Shift Register: 다음 상태를 저장 ③ Case Structure: - 각각의 상태를 가지고, 내부 코드의 연산결과에 따라 다음상태가 결정됨 1 2 3
<Statechart Diagram for phone with Notation>
State Machines Transitions
Several programming techniques exist for transitioning from state to state in LabVIEW using State Machines
① case structure: Default transition implies that after one state, another state always follows
② select function: Transitions between two potential states can be handled
File I/O
• File I/O – Allows recording or reading data in a file. • LabVIEW creates or uses the following file formats:
– Binary: underlying file format of all other file formats – ASCII: regular text files
– LVM: LabVIEW measurement data file(*.lvm), EXCEL format – TDM: created for NI products, binary format(*.tdm)
High Level File I/O Functions
• Easy to use• High Level of abstraction
Programming Model (File I/O)
Open/ Create/ Replace File Read and/or Write to File Close File Check for Errors- This same programming model applies to data acqusition,
instrument control, file I/O, and most other communication schemes. - In most instances, you will open the file or communication channel,
read and write multiple times, and then the communication will be closed or ended.
Spreadsheet Formatting
• Spreadsheet files are ASCII files with a certain formatting – Usually tabs between columns and end of line constants
between rows(CSV-format)
– LabVIEW includes VIs that perform this formatting or a string can be concatenated
Write to Spreadsheet File: 1D or 2D arrays of numeric data file with formated data.
Section III – Presenting your Results
A. Displaying Data on the Front Panel
• Controls and Indicators • Graphs and Charts • Loop Timing
B. Signal Processing
• MathScript • Arrays
• Clusters (eg. Class 및 struct와 유사)
Controls and Indicators
• Numeric Data
– Number input and display – Analog Sliders, Dials, and Gauges • Boolean Data
– Buttons and LEDs • Array & Matrix Data – Numeric Display – Chart
– Graph – XY Graph – Intensity Graph
– 3D graph: point, surface, and model
• Decorations – Tab Control – Arrows • Other
– Strings and text boxes – Picture/Image Display – ActiveX Controls
Express Controls Palette
Control & Indicator Properties
• Properties are characteristics or qualities about an object• Properties can be found by right clicking on a Control or Indicator • Properties Include: – Size – Color – Plot Style – Plot color • Features include: – Cursors – Scaling
Charts
– Add 1 data point at a time with history
Waveform chart
• special numeric indicator that can display a history of values • Chart updates with each individual
point it receives
Graphs
– Display many data points at once
Waveform graph
• special numeric indicator that displays an array of data • Graph updates after all points have been collected • May be used in a loop if VI collects buffers of data
Functions » Express » Graph Indicators » Graph
Wiring to Charts
Single-Plot Chart Multiple-Plot Chart
Uniform X axis: X0= 0.0, ∆X = 1.0 Uniform X axis
you specify point spacing
Single-Plot Waveform Graphs
Multiple-Plot Waveform Graphs
Each row is a separate plot: X0 = 0 ∆X = 1 Each row is a separate plot: Bundle specifies point spacing of the X axis Hold “Ctrl” or Auto• Non-uniform X axis
• Separate X and Y arrays
define data points
How Do I Time a Loop?
1. Loop Time Delay– Configure the Time Delay Express VI for seconds to wait each iteration of the loop (works on For and While loops).
2. Timed Loops
– Configure special timed(multi-rate timing) While loop for desired dt.
Timed Loop Time Delay
Textual Math in LabVIEW
• Integrate existing scripts with LabVIEW for faster development • Interactive, easy-to-use, hands-on learning environment
• Develop algorithms, explore mathematical concepts, and analyze results using a single environment
• Freedom to choose the most effective syntax, whether graphical or textual within one VI
Supported Math Tools:
MathScript script node MathSoft software Mathematica software MATLAB®software
Math with the MathScript Node
• Implement equations textually in the interactive MathScript Node
• Input and Output variables created at the border by right-clicking
• Generally compatible with popular m-file script language (MATLAB)
• Terminate statements with a semicolon to disable immediate output
Programming » structures » MathScript
MathScript Window
• Interactively and rapidly develop and test algorithms • Share Scripts and Variables with the Node
• View /Modify Variable content in 1D, 2D, and 3D
Output Window Variable Workspace View/Modify Variable Contents m-file Script
• Collection of data elements that are of same type
• One or more dimensions, up to 2 elements per dimension
• Elements accessed by their index; first element is index 0
31
index
10-element array 1.2 3.2 8.2 8.0 4.8 5.1 6.0 1.0 2.5 1.7
0 1 2 3 4 5 6 7 8 9
2D array
Five row by seven column array of 35 elements
0 1 2 3 4 5 6 0 1 2 3 4
Arrays
Creating an Array (Step 1 of 2)
Controls » Modern » Array, Matrix, and Cluster » Array • drag a control or indicator into the array shellDrop it on the Front Panel.
Create an Array (Step 2 of 2)
1. Place an Array Shell.
2. Insert data type(“Numeric Control”) into the shell.
Add Dimension
for 2D arrays
Row Index
Column Index
1. Select Array Constant shell from the Array subpalette
2. Place the data object in the array shell
Creating Array Constants
67
Array Size
Initialize Array
Common Array Functions
Array Subset
68
The Build Array Function
Building a higher dimension array
Concatenate Inputs
69
The Index Array Function
Extracting an Element
Extracting an Element of a Row
Extracting a Row
• Function inputs can be of different types
• All LabVIEW arithmetic functions are polymorphic(not matrix arithmetic)
Scalar + Scalar Array + Scalar Combination Result Scalar Array Array Array + Array Array + Array Array
Polymorphism
• For / While Loops can accumulate arrays at their boundaries with auto-indexing
• For Loops auto-index by default
• While Loops output only the
final valueby default
• Right-click tunneland enable/disable auto-indexing
Building Arrays with Loops (Auto-Indexing)
Wire becomes thicker
Wire remains the same size
Auto-Indexing Disabled Auto-Indexing Enabled
Only one value (last iteration) is passed out of the loop 1D Array
0 1 2 3 4 5
5
tunnel
• Inner loop creates column elements • Outer loop stacks them into rows
Creating 2D Arrays
1D Array 0 1 2 3 4 5
Introduction to Clusters
• Data structure that groups data together
• Data may be of different types
• Analogous to struct in C
•
Elements must be either
all controls
or
all indicators
• Thought of as wires bundled into a cable
• Order is important
Creating a Cluster
Creating Cluster Constants
1. Select Cluster Constant shell from the Cluster subpalette
2. Place objects in the Cluster shell
Cluster Order
• Elements have a logical order (start with 0)
• To change order, right-click the border and select Reorder Controls in Cluster...
Cluster Functions - Bundle
• In the Cluster & Variant subpalette of the Programming palette • Can also be accessed by right-clicking the cluster terminal
Bundle
(Terminal labels reflect data type)
Bundle By Name –update specificcluster object
Cluster Functions - Unbundle
Using Arrays and Clusters with Graphs
The Waveform Datatype contains 3 pieces ofdata:
• t0 = Start Time
• dt = Time between Samples • Y = Array of Y magnitudes
Two ways to create a Waveform Cluster:
Build Waveform (absolute time) Cluster (relative time)
CASE STRUCTURE
If…then…else
콜라판매 자판기
50원, 100원 및 500원 동전을 사용할 수 있으며, 500원하는 콜라판매 자판기 프로그램개발(design patternState Machines)
statechart diagram 작성: 동전투입, 제품구입, 환불 등의동사기반으로 상태전이가 발생
EVENT Structure : 대기 응답대기, case구조와 유사하게 작성됨 Enum(열거형 데이터): 정의한 데이터중 하나를 선택할 때 활용됨 Type definition(타입정의)
– .ctl파일이 생성됨
내용 정리
• 변수 - 컨트롤(입력), 인디케이터(출력) • 배열변수 • 상수 • 수식연산 • 논리연산 • 비교연산 • while loop • for loop • 시간지연 • 상태머신 • 파일저장APPENDIX 1 - 컨트롤, 인디케이터의 데이터 타입
•정수형(I64, I32, I16, I8)
•부호없는 정수형(U64, U32, U16, U8) •실수형(EXT, DBL, SGL)