Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

CLAD Study Guide of Introduction to Engineering With Labview | ENGE 2514, Study notes of Engineering

CLAD Study Guide Material Type: Notes; Class: Intro Engineering With Labview; Subject: Engineering Education; University: Virginia Polytechnic Institute And State University; Term: Spring 2013;

Typology: Study notes

2012/2013

Uploaded on 05/06/2013

klonatlong
klonatlong đŸ‡ș🇾

2 documents

1 / 45

Toggle sidebar

Related documents


Partial preview of the text

Download CLAD Study Guide of Introduction to Engineering With Labview | ENGE 2514 and more Study notes Engineering in PDF only on Docsity! CLAD Study Guide Prepared by LabVIEW Student Ambassadors: Julian Ferrer-Rios Kristen Heck Francesca Ramadori Kelvin Tang Table of Contents Section 1: LabVIEW Programming Concepts...........................................................................................2 Section 2: LabVIEW Environment............................................................................................................6 Section 3: Software Constructs in LabVIEW............................................................................................9 Section 4: Programming Vis and functions..............................................................................................16 Section 5: Data Communication and Synchronization VIs and Functions..............................................18 Section 6: VI Server and Functions.........................................................................................................21 Section 7: Errors handling VI’s and Functions........................................................................................25 Section 8: VI Design Patterns..................................................................................................................28 Section 9: SubVI Design..........................................................................................................................36 Section 10: Debugging VI’s.....................................................................................................................38 Section 11: VI Design and Documentation..............................................................................................42 Section 12: Memory, Performance, and Determinism.............................................................................44 -1- Section 1: LabVIEW Programming Concepts Data Flow LabVIEW follows a dataflow model for running Vis. A block diagram node executes when all its inputs are available. When a node completes execution, it supplies data to its output terminals and passes the output data to the next node in the dataflow path. Visual Basic, C++, JAVA, and most other text-based programming languages follow a control flow model of program execution. In control flow, the sequential order of program elements determines the execution order of a program. Consider the block diagram above. It adds two numbers and then multiplies by 2 from the result of the addition. In this case, the block diagram executes from left to right, not because the objects are placed in that order but because one of the inputs of the Multiply function is not valid until the Add function has finished executing and passed the data to the Multiply function. Remember that a node executes only when data are available at all of its input terminals, and it supplies data to its output terminals only when it finishes execution. In the second piece of code, the Simulate Signal Express VI receives input from the controls and passes its result to the graph. You may consider the add-multiply and the simulate signal code to coexist on the same block diagram in parallel. This means that they begin executing at the same time and run independently of one another. If the computer running this code had multiple processors, these two pieces of code could run independently of one another (each on its own processor) without any additional coding. -2- 6. In the following VI, what will be the execution order of functions? a. b. c. d. Section 1 Answers 1. C 2. D 3. B 4. B 5. C 6. C -5- Section 2: LabVIEW Environment LabVIEW programs are called virtual instruments (Vis). Controls are inputs and indicators are outputs. Each VI contains three main parts: Front panel – How the user interacts with the VI Block diagram – The code that controls the program Icon/connector – The means of connecting a VI to other Vis In LabVIEW, you build a user interface by using a set of tools and objects. The user interface is known as the front panel. You then add code using graphical representations of functions to control the front panel objects. The block diagram contains this code. In some ways, the -6- block diagram resembles a flowchart. You interact with the front panel when the program is running. You can control the program, change inputs, and see data updated in real time. Controls are used for inputs such as adjusting a slide control to set an alarm value, turning a switch on or off, or stopping a program. Indicators are used as outputs. Thermometers, lights, and other indicators display output values from the program. These may include data, program states, and other information. Every front panel control or indicator has a corresponding terminal on the block diagram. When you run a VI, values from controls flow through the block diagram, where they are used in the functions on the diagram, and the results are passed into other functions or indicators through wires. Controls Palette Use the Controls palette to place controls and indicators on the front panel. The Controls palette is available only on the front panel. To view the palette, select View»Controls Palette. You also can display the Controls palette by right-clicking an open area on the front panel. Tack down the Controls palette by clicking the pushpin on the top left corner of the palette. Functions Palette Use the Functions palette to build the block diagram. The Functions palette is available only on the block diagram. To view the palette, select View»Functions Palette. You also can display the Functions palette by right-clicking an open area on the block diagram. Tack down the Functions palette by clicking the pushpin on the top left corner of the palette. Tools Palette You can view the Tools Palette on both the front panel and block diagram. To view the palette, select View»Tools Palette. You also can display the Tools palette by holding shift+ right-clicking an open area on the front panel or block diagram. If you enable the automatic selection tool and you move the cursor over objects on the front panel or block diagram, LabVIEW automatically selects the corresponding tool from the Tools -7- Automatic Selection Tool in/out (shift + click for zoom out) c. drag mode – click and drag plot view around- scale auto updates ii.Update modes 1. Chart adds point each iteration- maintains history a. Strip chart – entire plot redrawn each iteration in order for plot to appear to scroll to the left b. Scope chart- points plotted until end of xscale reached, then plot clears, and plot begins at far left again c. Sweep chart – red line that indicates the front edge of new data being plotted over old data. 2. Graph redraws point(s) each iteration- a. Use a chart inside a loop to see full set of data (dynamically updates) b. Use a graph outside a loop to see full set of data iii. Legends 1. Plot legend a. Shows color of each plot and plot name 2. Scale legend a. Shows x- and y-scale titles, can lock scales, show full data range, and edit the format of the numbers 3. Cursor legend a. Only available for graphs b. Lists cursors and coordinates c. Can create cursors from here d. Mechanical action of Boolean objects [really helpful example VI: “Mechanical Action of Booleans.vi” in the Example Finder- search “mechanical”] i. Switch – 1. When pressed- value change on down click of left mouse button 2. When released- value change on release of left mouse button 3. Until released- value chance on down click and release of left mouse button ii.Latch – has to be read by LV and returns to its original state 1. When pressed- value change on down click of left mouse button 2. When released- value change on release of left mouse button 3. Until released- value chance on down click and release of left mouse button e. Property nodes i. Access properties of an object (item) ii.Allow you to modify objects appearance or behavior (for example) -10- programmatically iii. Operate top to bottom iv. By default, if error occurs half-way down, remaining property modifications will not execute and error will be output 2. Data types and data structures [for more details (more than covered on CLAD) - >http://zone.ni.com/reference/en-XX/help/371361B-01/lvexcodeconcepts/ manager_data_types/ ] a. Numeric – i. represent numbers ii.choose representation = number of bits used to store the number (more bits, more precision possible); ie I32, U8, DBL iii. Orange (DBL), Blue (Integer), Gray (FXP) b. String i. Sequence of ASCII characters ii.Tables, text entry, labels are examples of string objects iii. Change display format: Normal, ‘\’Codes, Password, Hex iv. Pink c. Boolean i. True/False ii.Green iii. Mechanical action (see above) d. Enumerated Control/Constant/Indicator (Enum) i. Pairs of string and numeric in defined list ii.Useful because easier to manipulate numbers than strings sometimes (state machines) e. path data type i. platform (OS) independent; the file manager (low level LV) determines how the data type is defined f. Array and cluster data types i. Arrays 1. Composed of elements (data) and dimension (size) 2. All elements must be of same data type- defined when created (placing numerical control in an array shell control creates a numeric array control) g. Waveform i. Three parts to it 1. t0: time zero 2. delta_t: time increment 3. Y: value, intensity, voltage, etc. h. Timestamp data type -11- i. time zone-independent number of seconds that have elapsed since 12:00 a.m., Friday, January 1, 1904, Universal Time. If year and month are out of range, the results are unpredictable. If year is before 1904, time stamp is negative. i. Variant data type i. Allows you to handle data in a general way 3. Working with objects and data types on front panel windows a. Ranges, formats, representation, and scaling i. Appropriate use 1. Example: if you are measuring the angle of a half rotation the range should be 0-180 b. Customizing controls i. Custom control 1. Single instance of unique control or indicator ii.Type definitions 1. Linked to file so changes to file will be seen in each instance of type deffed control/indicator 2. Appearance is not linked to file- data type (I32, U8, list of enum, string) iii. Strict type definitions 1. Linked to file so changes to file will be seen in each instance of type deffed control/indicator 2. Appearance IS linked so EVERYTHING except label, description, and default value changes 4. Program control structures and data storage a. Looping structures (for loops and while loops) i. For Loop 1. Executes set number of times- defined by N terminal or indexed tunnel 2. Possible execute zero times 3. Tunnels automatically output an array of data ii.While Loop 1. Stops executing based on the value at the conditional terminal 2. Must run at least once (do-while loop) 3. Tunnels automatically output last value iii. Indexing on loop boundaries 1. Input: one element in the array will be passed in with each loop iteration 2. Output: an element is added to the array with each loop iteration, the entire array will be passed out iv. Shift registers -12- ii.Global 1. VI-to-VI 2. Looks like a front-panel-only VI that stores the values iii. Functional Global 1. VI-to-VI 2. FP and BD- uninitialized shift register used to store data 3. Protects data from two instances trying access at same time and causing race condition iv. Shared 1. VI-to-VI across a network 2. Deployed to network for use by multiple VIs on the network -15- Section 4: Programming Vis and functions 1. Numeric, Boolean, string, path, and variant a) (see above) 2. Conversion, comparison, and manipulation a) Functions specifically for converting: num-> string, string -> num, path -> string, string -> path, etc b) Functions specifically for manipulating certain data types: build path, strip path, concatenate string, bool -> num array, etc 3. Arrays and clusters a) Both have shells b) Arrays 1. must be same data type 2. dimension and data 3. index element from array c) Clusters 1. Grouping of many data types (including arrays and other clusters) 2. Unbundle and bundle cluster elements 4. Timing a) Wait timers 1. Wait 1. Will wait until the specified time has elapsed 2. When in a loop, runs in parallel to other code inside loop (assuming no dependencies on other code in loop)- if code takes longer than the wait time, next loop iteration will begin immediately, otherwise the wait will complete and then next loop iteration will begin 2. Wait until next millisecond multiple 1. Will wait until a multiple of the time specified is reached 2. When in a loop and assuming no dependency on other code in loop, it will run in parallel- if 20 ms is wired to it, imagine marks along a time line every 20 ms. If the code runs 45 ms, the next loop iteration cannot begin until the next mark, which would be at 60 ms. b) tick count (ms) 1. starts at zero (cannot convert into real date/time) 2. max value = (2^32)-1; therefore can rollover back to zero if allowed to count past its max -> bad information c) date/time functions d) Timing functions related to timed structures 5. file I/O formats a) ASCII 1. Text file -16- 2. Good to use when want to open with another program (notepad, text edit, word, etc) b) Binary 1. Takes least amount of memory 2. Efficient 3. Cannot be easily read by user or opened by another program 4. Must know how to decode the file c) Datalog 1. Type of binary file 2. Used to write clustered data to file d) Storage(.tdm) 1. Internal structure publicly documented (created by NI) 2. Type of binary file with an index file for faster I/O performance 3. Able to apply properties to file at different levels: file, group, channel e) Waveform f) XML (Extensible Markup Language-standardized) 1. Set of functions specifically for XML 2. Platform independent g) Configuration 1. ini file 2. Set of functions specifically for config files 3. Platform independent 6. Waveform and waveform file I/O a) Storage VIs used to write waveform data to binary measurement files (.tdm) 7. Dynamic and user events a) (see above) -17- 2. Which of the following illustrates an advantage of a global variable over a local variable? a. A global variable can pass data between two independent VIs running simultaneously b. Only the global variable can pass array data, local variables cannot c. Global variables follow the dataflow model, and therefore cannot cause race conditions d. Global variables do not require owned labels to operate Section 5 Answers 1. A 2. A -20- Section 6: VI Server and Functions In LabVIEW programming, a VI Server can be use to programmatically control front panel objects, VIs, and LabVIEW, and to dynamically load, edit, and run VIs on a computer or remotely across a network. You can control browser access to the VIs and configure which VIs remote applications can control. Configuring the VI Server Page Select Tools»Options to display the Options dialog box and select VI Server from the Category list to display this page. If a target in a LabVIEW project supports the VI Server, you also can right-click the target, such as My Computer, select Properties from the shortcut menu, and select VI Server from the Category list to display this page. To configure VI Server options for the main application instance, display this page from the Options dialog box. To configure VI Server options for a target, display this page from the Properties dialog box for the target. To configure VI Server settings for a project application instance, right-click the target in the Project Explorer window. The VI Server page includes the following components:  Protocols—Use this section to configure the VI Server. The default VI Server settings are ActiveX enabled and TCP/IP disabled. o TCP/IP—Enables VI server support for TCP/IP. If you allow remote applications to connect using TCP/IP, you also should specify which machine addresses can access the VI Server in the Machine Access section of this page. This checkbox does not contain a checkmark by default.  Port—Sets the TCP/IP port at which the VI server listens for requests. From Tools»Options this port number is 3363, by default, which is a registered port number reserved for use by LabVIEW. For targets, the default is 0 causing the operating system to dynamically select a port. If you want to run multiple application instances on the machine, each with its own VI Server running, you must have a unique VI Server port number. You also can use the Server:Port property to set the LabVIEW VI Server port programmatically.  Service name—Sets the service name for the VI Server TCP Instance. To retrieve an application reference without the port number, use Service name in conjunction with the Open Application Reference function by wiring a Service name to the polymorphic port number or Service name input. If you display this page from the Options dialog box, this service name is Main Application Instance/VI Server by default. If you display this page from the Properties dialog box for a target, the service name is target name/VI Server by default. You can use the Server:Service Name property to set the service name programmatically.  Use default—Sets Service name to its default value. This -21- checkbox contains a checkmark by default. To edit Service name, remove the checkmark from the checkbox. o ActiveX—(Windows) Enables VI server support for ActiveX Automation. This checkbox is available only from the Tools»Options navigation. This checkbox contains a checkmark by default.  VI Scripting—Use this section to enable VI Scripting. o Show VI Scripting functions, properties and methods—Enables VI Scripting functions on the VI Scripting palette and additional VI Server properties and methods. All functions, properties, and methods you enable through VI Scripting display as blue.  Display additional VI Scripting information in Context Help window— Displays connector pane terminal numbers in the Context Help window. Place a checkmark in the Show VI Scripting functions, properties and methods checkbox to enable this option.  Accessible Server Resources—Use this section to indicate the tasks that remote applications can accomplish. o VI calls—Allows remote applications to call VIs exported through the VI Server. If you allow remote applications access to VIs, specify which VIs can be exported. This checkbox contains a checkmark by default. o VI properties and methods—Allows remote applications to read and set the properties of VIs and to call methods for VIs through the VI Server. If you allow remote applications access to VIs, specify which VIs can be exported. This checkbox contains a checkmark by default. o Application properties and methods—Allows remote applications to read and set the properties of the application instance and to call methods for the application instance through the VI Server. This checkbox contains a checkmark by default. o Control properties and methods—Allows remote applications to read and set the properties of controls and to call methods for controls through the VI Server. This checkbox contains a checkmark by default.  Machine Access—Use this section to control machine access to VIs through the VI Server. o Machine access list—Lists machines that do and do not have access to the VI Server. You also can use the Server:TCP/IP Access List property to list programmatically the TCP/IP addresses of machines that may access the VI server. Note: If you change the Machine access list, machines that are currently connected to the VI server will not be disconnected even if they are no longer allowed access to the server. o Machine name/address—Enter the name or IP address of the machine you want to add to the Machine access list. o Allow access—Allows access to the machine(s) selected in Machine access list. o Deny access—Denies access to the machine(s) selected in Machine access list. o Add—Adds a new entry to the Machine access list. The new entry appears -22- Section 7: Errors handling VI’s and Functions Have you ever wonder what is the lowest line in most of the VI’s? That line is an special line called Error In/Out. This line is an special cluster Type called Error cluster, which consists of: 1. Boolean: Indicating if there is an error. 2. 32-bit Integer: Indicating the code of the error. 3. String: Indicating the source of the error, i.e. the cause of the error. This cluster has the same properties of any other clusters, however it has other special features. The first of them is that this line is usually used to guarantee sequence. Following the LabVIEW rule that establishes that any subVI or function needs to have all its inputs in order to run, if the output error line is connected to the input of another subVI, the second subVI won’t run until the previous ends. Another characteristic of the error cluster is that, when connected to a case structure, it will create two cases: Error and No Error, which can be used to skip steps that can’t be executed unless everything else has no errors. Also is used to guarantee sequence when there are functions or VI’s that doesn’t have error line. There are two different ways of handling errors, automatic and manually.  Automatic: When LabVIEW is configured to handle the VI’s automatically (File> VI Properties>Execution>Enable Automatic Error Handling), when it encounters a unwired Error line, it will halt the execution and highlight where the error occurred.  Manual: To handle erros manually there are certain VI’s meant to do it which are present at the Programming>Dialog&UserInterface: -25- o Simple Error handler and General Error Handler: Displays when an error occurred, showing the cause of the error and optionally an error dialog box, the difference between the simple and the general is that the general also accepts custom error codes. o Merging, creating, clearing and searching error VI’s: also the user may need to clear errors if the program solves the problem by itself, also, when building SubVI’s it is important to add the previous errors to the errors that can be added from the subVI, and after several subVI’s adding error, is useful to search for the first error, since the error handler VI’s shows the error with most priority. o User interface Dialog Boxes: This VI’s are used to inform the user whenever an error occurred and also to allow the user to decide the action to implement if the program requires it. When creating VI’s, we might produce errors that LabVIEW doesn’t interpret them as errors. For example, when we have a division by 0: -26- LabVIEW will give infinite as result, however, for some application that means that an error occurred. For those cases, it is possible to create your own error codes and implement them in labVIEW. To do so, it is necessary to create a *-error.txt file. Fortunately LabVIEW has an interface meant to help creating this file: Tools>Advanced>Edit Error Codes. It will ask you if you want to create a new file or edit one, either way you can add or edit errors. All the errors are saved at <National Instruments Location> >Shared>Errors. -27- Parallel Loop & Master/Slave Design Pattern Parallel Loop Design Pattern Above block diagram illustrates the parallel loop design pattern. The error cluster wires are used to execute both while loops in parallel. However, this design pattern is not efficient as there might be a race condition when implementing data accessing mechanism where there may be multiple loops accessing the data at the same instance of time. A solution to this would be using the master/slave design pattern as depicted in block diagram below. Master/Slave Design Pattern -30- The master/slave design pattern is used for executing two or more processes simultaneously and pass data among processes. This design pattern may consist multiple parallel loops, each running at different rates. There will be a loop acts as the master which controls all the other loops known as the slave loops. The race condition is avoided by using a notifies to pass data from the master to the slave. Benefits of using notifies in master/slave design pattern is that all slave loops are synchronized to the master loop. Slave loop executes only when the master loop sends a notification. Producer/Consumer (Data) Design Pattern Producer/Consumer (Data) Design Pattern This design pattern enhances the data sharing among multiple loops running at different rates. The parallel loops are separated into 2 categories: the loop producing data (producer) and the loop consuming data (consumer). Main benefits: -Process multiple sets of data in order. -Queues data in the consumer loop. Basically, the data is continuously queued by the producer into the consumer loop queue and is processed by the consumer loop at its own pace. User Interface Event Handler Design Pattern The event-based design pattern benefits in terms of efficiency as they only respond when an event occurs. It consists of following block diagram components: -31- 1. Event Structure: Contains program code for each detected user interface event. 2. While Loop: Monitor user interface event continuously. 3. Timeout Terminal: Controls when the timeout event executes. 4. Event Data Node. User Interface Event Handler Design Pattern -32- Design Patterns Table of Comparison Design Pattern Use Pros Cons General Standard control flow Distinct initialize, run and stop phases Unable to return to a previous state State Machine State sequence system control Controls sequences Does not store future sequences to execute Queued Message Handler Enhanced state machine with storing of future sequences to execute (message) Stores future sequences to execute Does not use memory efficiently Parallel Loop Multiple task processing in a VI Efficient use of computing resources Bad synchronization and have race condition Master/Slave Parallel loops with synchronization Passes messages and handles loop synchronization Does not lend itself well to passing data Producer/ Consumer (Data) Data producing and processing in parallel Stores data for later processing Does not provide loop synchronization User Interface Event Handler Responds to user interface event Handles user interface messages Does not allow for intensive processing applications Producer/ Consumer (Event) Producer/ Consumer (Data) which responds to user interface event Separates the user interface from processor- intensive code Does not integrate non- user interface events well -35- Section 9: SubVI Design Modularity is the property of scaling a VI in sub modules which have special features and can be recycled in other VI’s. These modules are called subVI’s, and, since a SubVI is a VI modified into a small block visualization, double clicking it will open a front panel and a block diagram. Every SubVI needs an Icon and a Connector pane to be called SubVI: a. Icon: Graphical representation of a VI. Customizable (double click) b. Connector Pane: Map of the terminals of a VI. Inputs to the left, Outputs to the right (accessing via right click>Show Connector) The icon must be modified in order to represent what does the SubVI does, for this reason the Icon Editor has a built in paint window to modify the image: The connector Pane represents the Inputs and Outputs of a SubVI. There are many types of connectors suited for any application. It is important to note that, for convention, Inputs goes left and Outputs goes Right. To link the terminal with the I/O: – First Click the terminal in the conector Pane – The click on the Input or Output, the terminal will change color as a confirmation – Finally choose if the connector is Required, Recommended or Optional by Right Clicking the terminal > This Connection is> -36- When designing SubVI’s, it is important to consider the previous errors as the errors that the SubVI is adding, one of the most common error handling methods in SubVI is the next one: A polymorphic VI is an special VI that accepts several Data Types, an example could be the multiply function, since it can accept any data Type. In order to create a polymorphic VI is necessary to create all the VI’s that are going to be part of the polymorphic VI with the same connector pane configuration. After that go to: File>New>Polymorphic VI. A new window will prompt, where you will have to add all the VI’s. The icon of this VI will also need to be created by clicking into the Edit Icon. This VI will automatically decide which instance of the VI’s added to use. -37- ‱ Single Stepping: Executes only one step of the VI. Used with the Highlighted Execution provides an incredible debugging tool. ‱ Probing Tools: Shows the value over a wire. In Highlighting execution or Single Stepping. Click on the Wire ‱ Breakpoints: Pause the execution whenever there is new Data At a Wire. -40- ‱ Suspend when Executed: This works as a Breakpoing for SubVI’s. Once the SubVI is executed it will pause the whole VI. And will open the front panel of the SubVI. -41- Section 11: VI Design and Documentation 1. User interface and block diagram layout a. UI i. One monitor or less 1. Tabs to organize and condense if too many controls/indicators to limit to one monitor ii.Group controls and indicators logically 1. Related items should be grouped together 2. Use decorations to clarify or emphasize groupings iii. Font and color 1. Use bright colors sparingly and only for things that need to stand out (i.e. stop button) 2. Font should be uniform 3. Bold text for grouping titles or heading 4. Text size should be logical a. larger text for headings or important information, b. text should be sized to the control – fill buttons, but not overwhelm the front panel b. block diagram i. minimize wire crossings and bends ii.data flow should go left to right iii. terminals should be aligned : inputs on the left, outputs on the right 2. Modular and hierarchical design a. Use subVIs when code is repeated b. Complex code that achieves a single function can be placed in a subVI 3. subVI icons and connector pane layout a. connector pane layout (only accessible from front panel) i. Left = inputs, Right= outputs ii.Bottom terminals on sides are usually reserved for error wires iii. Top terminals on side are usually reserved for reference wires b. Icons i. Picture should describe what the VI does ii.Should have border- no “floating” wire connections
confuses programmer iii. Related subVIs should have a related icons (example: DAQmx has bar at top that says DAQmx) 4. VI properties a. Documentation i. Shows up in context help b. Password protect i. If distributing code to others, you can put a password on the block diagram so they can’t reuse or recreate it c. Window appearance i. Basically allows you to select the “window type” – the main difference between them is the number of menu bars visible. -42-
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved