275 views

Uploaded by Mike Quintero

- fieldformulas
- matlab frain intro
- Mathematics Studies Data Booklet.pdf
- 2009 Labview Exercises
- M9_Trig - 4 - Similar Right Triangles and Trig Ratios Notes
- drill1.4 of LabVIEW
- Using_Origin_from_LabVIEW_E.pdf
- geom 9 5
- Introduction to Matlab (Book)
- Topological and Primitive Impedance
- RT ADD MAT T5
- math studies info booklet
- Triangle 10
- NICE
- S14_9709_qp_13
- Assignment 1- Waves and Oscillations
- Trigratiosanysize
- PreCal Sem1 Absent-studentVersion
- PC GEOMETRY Triangle trig
- Lecture 18

You are on page 1of 47

1.1 What is LabVIEW?

At the end of this lesson, the student shall be able to:

a. explain the concept of virtual instrumentation and graphical programming; and

b. understand the uses and capabilities of LabVIEW.

LabVIEW is the short name for Laboratory Virtual Instrument Engineering Workbench. It is a

programming environment in which you create programs using a graphical notation. Unlike the traditional

text-based programming languages, like C, C++, Java, or MATLAB, you program in LabVIEW graphically,

that is functions are represented as nodes with inputs and outputs, and are wired through which data flows.

Being a programming language, LabVIEW can be used to develop applications similar to what can be

developed using text-based programming language. However, more than being a programming language,

LabVIEW can be used to do the following:

acquire data from instruments or generate data using signal generation functions;

analyze data;

process data (e.g. filtering, transforms, etc.); and

control instruments and equipment.

Engineers and scientists use LabVIEW to bring information from the outside world into a computer using

data acquisition (DAQ) devices, process these data, and present these data to the user. Thus, LabVIEW

can be used to create virtual instruments (VI).

A virtual instrument is a computer program that imitates the functionality of the real-world physical

instrument. These virtual instruments can also take in external data and do something about these data,

just as how a standard instrument will work. These VIs however has the inherent advantage of being

flexible in terms of its use. Being virtual, these instruments functionalities are being programmed, and

hence can be changed whenever wanted and needed. In most cases, virtual instrumentation also results to

lower costs, as a single set of hardware (a DAQ device, a computer, and a software) can be configured to

perform many instrumentation tasks that require multiple physical instruments.

A LabVIEW program is also called a virtual instrument or VI.

Moreover, LabVIEW can also be used to simulate processes and control external instruments and

equipment. Thus, LabVIEW is very useful in the field of instrumentation and control.

Example 1.1

1. Open LabVIEW 2012 (via the desktop shortcut or the Start menu) and on the opening window, click

Help and choose Find Examples.

2. On the NI Example Finder window, choose the Search tab, type in Simulation Tank Level in the

Enter keyword(s) field and click Search. The Simulation Tank Level.vi must appear at the results

Basic LabVIEW Concepts

Page 1

3.

4.

5.

6.

7.

Press the white arrow icon (the Run icon) on the VI to run the VI.

Click the HV102 valve to make it black and the LCV101 to make it green. This step basically opens an

input valve to let fluid flow into the tank (the green valve) and a drain valve (the black valve) to drain

fluid out of the tank. The tank has an inherent slow leak drain.

The objective of the control of the system is to keep the level of the fluid inside the tank (the process

variable PV) the same as the Setpoint (SP). The degree by which the controller reacts is indicated by

the value of the Output (the greater the difference between the PV and SV, the greater the output of

the controller). Thus, when you change the value of the setpoint, the level of the tank should follow

through (try changing the setpoint from 50 to 10 and from 10 to 70; observe how the output of the

controller changes with these).

Turn off the HV102 valve and change the setpoint from 70 down to 40. Observe how the PV value

changes as compared how it changed in the previous step.

Play around with the other parameters of the VI (like the PID parameters) and observe how the PV

changes with the changes in setpoint.

LabVIEW uses a very powerful graphical programming language which most LabVIEW users refer to as G

for graphical (the term is in reference to the C programming language). Programs are created in pictorial

form called a block diagram. One advantage it offers is that the developer does not need to know

syntactical details associated with text-based programming languages. The developer just needs to

connect functional nodes and how data flows from one node to another. However, those that are used to

working with text-based languages may need time to adjust to LabVIEWs style of programming (a personal

experience!).

Example 1.2

When you opened the Simulation Tank Level.vi, the front panel (or FP) appeared. To display the

source code or the block diagram (BD), press Ctrl+E. You need not know how does this BD works at this

point, but you can examine the composition of this BD by turning on the Context Help (via Ctrl+H), and

then hovering the mouse over the icons.

1. Find out what functional nodes do this BD contain.

2. What does the gray line that bounds the blocks represent?

Stop the VI by pressing the Abort execution icon on either the FP or the BD.

Drill Problems 1.1

1. Discuss what is meant by virtual instrumentation and how LabVIEW facilitates development of virtual

instruments. What are the advantages and disadvantages of using virtual instruments?

2. Explain what graphical programming is and how it accelerates development of systems.

3. Enumerate the uses and capabilities of LabVIEW.

Page 2

Self Assessment: Rate your level of achievement for the following outcomes:

Cant do

Marginal

Acceptable Exceptional

Outcome

Performance Performance Performance

(0)

(1)

(2)

(3)

Explain

the

concept

of

virtual

instrumentation and graphical programming

Understand the uses and capabilities of

LabVIEW.

Write your own thoughts and reflections on this topic.

1.2 The LabVIEW environment

At the end of this lesson, the student shall be able to identify parts of and navigate through the LabVIEW

environment.

When the LabVIEW is opened, a Welcome screen (or the Getting Started window in older versions)

appears, as shown below

To start using LabVIEW, one can either choose to click the Blank VI, click on the File >> New VI menu or

press Ctrl+N to open a new, blank VI. This opens up two windows: the front panel (FP) and the block

diagram (BD), as shown in the figures below:

Page 3

Each window contains different set of menus. The menus pop out when you right-click on an empty field in

a window. We first discuss the front panel and its menus.

The front panel is the window through which the user interacts with the program. This is the window where

the user would input into the VI and also where the output is displayed. When you right-click on an empty

field in the front panel, the Controls palette appears as shown in the figure below.

Basic LabVIEW Concepts

Page 4

Figure 1. 4. The controls palette with the Modern controls palette selected.

This set of menus contains the controls and indicators for the front panel. In LabVIEW, controls are used

as inputs into the VI, while indicators are used as outputs of the VI. You can pin this menu to the front

panel by clicking the pin icon on the top left corner of the menu. You can unpin it by clicking the close

button at the top right corner of the menu when it is pinned. You can also click View >> Controls Palette

on the menu bar of the front panel so that the controls palette will appear. You can use the Search button

when finding for a front panel object. To get information about a certain object, press Ctrl+H and hover the

mouse over the object you wish to have more information about.

Controls are typically knobs, push buttons, dials, sliders, and strings. Controls simulate instrument input

devices and supply data to the block diagram of the VI. Indicators are typically graphs, charts, LEDs, and

status strings. Indicators simulate instrument output devices and display data the block diagram acquires or

generates.

Example 1.3

Find and place the following objects into the front panel, and find out some information about each.

1. Numerical control and numerical indicator.

2. Horizontal and vertical slide switches.

3. A square LED and round LED.

4. A knob and a dial.

5. A string and a ring control.

Page 5

6. A string and a file path indicator.

7. A chart and a graph.

Close the VI without saving your work. Then open a new blank VI again.

The figure below shows the menu icons for running and arranging the objects in the front panel.

1. Run button this button causes the VI to run once.

2. Run Continuously button this button causes the VI to run continuously until the Stop or Pause

button is pressed.

3. Abort Execution button this button stops the running of the VI.

4. Pause button this button pauses the running of the VI.

5. Application Font button this pull-down menu displays the options for changing the size, style,

alignment, color and type of font for different fonts used in the VI. The first option causes the Font

Dialog Box to appear.

6. Align Objects button this pull-down menu displays the options for aligning objects in the front

panel with respect to different axes.

7. Distribute Objects button this pull-down menu displays the options for distributing objects, or

setting the spacing in between objects with respect to different axes.

8. Resize Objects button this pull-down menu displays the options for resizing objects.

9. Reorder button this pull-down menu displays the grouping, locking and ordering options for the

objects in the front panel.

10. Search text field and Context Help toggle button you can type in keywords here to search them

in LabVIEW. You can also use this to find objects in the Controls palette and if they exist, you can

directly drag and drop them in the front panel. The Context Help button is a toggle button that

opens and closes the Context Help window.

Example 1.4

Place the following objects in the current front panel: a waveform chart, a dial and a real matrix indicator.

Then try out the different alignment, distribution, resizing and reorder buttons to demonstrate the use of

each. Close the front panel but do not save the VI. Open a new VI.

After you create the front panel window, you add code using graphical representations of functions to

control the front panel objects. The block diagram window contains this graphical source code.

Basic LabVIEW Concepts

Page 6

Pressing the Ctrl+E while the front panel is active brings out the block diagram (BD). The block diagram is

where the functionality of the VI is defined thru function nodes and wires connecting these nodes. Block

diagram objects include terminals, subVIs, functions, constants, structures, and wires, which transfer data

among other block diagram objects. Right-clicking on an empty field inside the block diagram causes the

Functions palette to appear, as shown in the figure below.

This set of menu contains the functions, VIs and Express VIs. You then connect these nodes with wires so

that data may flow in and out of these nodes.

Objects on the front panel window appear as terminals on the block diagram. Terminals are entry and exit

ports that exchange information between the front panel and block diagram. Terminals are analogous to

parameters and constants in text-based programming languages. Types of terminals include control or

indicator terminals and node terminals.

Example 1.5

1. Place a numeric control and a knob in the front panel. Then observe the corresponding nodes that

have been placed in the block diagram.

2. Place a tank and a waveform chart in the front panel. Observe the difference between the

corresponding nodes of the controls and the indicators in the block diagram.

3. Place a color box control and a round LED indicator on the front panel. What can be said about the

corresponding nodes of the control and the indicator in the block diagram as compared to the first

Basic LabVIEW Concepts

Page 7

nodes placed?

4. Connect the knob control node with the tank indicator node and the color box control node with the

waveform chart node in the block diagram. Observe what happens.

5. Connect the numeric control node with the Boolean indicator node. What happens?

6. In the front panel, replace the numeric control with a push button. Observe what happens in the block

diagram.

7. In the front panel, replace the waveform chart with a numeric indicator. What is the difference (in

physical aspect) between the numeric control and the numeric indicator? Observe what also happens

in the block diagram.

You can run the VI continuously and experiment on adjusting the values. Then close the VI without saving

it.

There are two distinguishing characteristics between a control and an indicator terminal on the block

diagram. The first is an arrow on the terminal that indicates the direction of data flow. The controls have

arrows showing the data leaving the terminal, whereas the indicator has an arrow showing the data

entering the terminal. The second distinguishing characteristic is the border around the terminal. Controls

have a thick border and indicators have a thin border.

Figure 1.7 shows terminals in icon view. You can view these terminals without an icon by right-clicking on

the terminal icon at the block diagram and unchecking the View As Icon option. You can also automatically

place terminals on the block diagram without an icon by unchecking the Place front panel terminals as

icon option under the General options for the block diagram, which can be accessed via the Tools >>

Options menu and selecting Block Diagram under Category pane of the Options window that pops out.

Node terminals are terminal that do not appear as objects in the front panel, such as a constant.

Colors are used to represent what data types by default the nodes and the wires are carrying. Table 1.1

shows the common data types used in LabVIEW.

Page 8

Table 1. 1 Common LabVIEW data types. From Larsen, 2012

The common rule of the thumb is that you can only connect nodes of the same color, otherwise, it may

result to a broken wire and a program error. But not all lead to errors. In some cases LabVIEW does some

conversions. This is the case when you have for example, a control node carrying an integer data is

connected to an indicator node carrying a double-precision floating-point number. In such case, the

conversion is indicated by a small red dot at the node, as shown in the figure below

You transfer data among block diagram objects through wires. Each wire has a single data source, but you

can wire it to many VIs and functions that read the data. Wires are different colors, styles, and thicknesses,

depending on their data types. Table 1.2 shows different wires and how are they identified depending on

their data type.

Page 9

Table 1. 2. Wires in LabVIEW. From http://www.ni.com/gettingstarted/labviewbasics/dataflow.htm, retrieved 09-Jan-2014.

Nodes are objects on the block diagram that have inputs and/or outputs and perform operations when a VI

runs. They are analogous to statements, operators, functions, and subroutines in text-based programming

languages. Nodes can be functions, subVIs, Express VIs, or structures. Structures are process control

elements, such as Case structures, For Loops, or While Loops.

Functions are the fundamental operating elements of LabVIEW. The Add and Subtract functions are

examples of function nodes. Functions do not have front panel windows or block diagram windows but do

have connector panes. Double-clicking a function only selects the function. A function has a pale yellow

background on its icon.

After you build a VI, you can use it in another VI. A VI called from the block diagram of another VI is called

a sub-VI. You can reuse a sub-VI in other VIs. To create a sub-VI, you need to build a connector pane and

create an icon. Sub-VIs are to be discussed in the next topic.

Express VIs are nodes that require minimal wiring because you configure them with dialog boxes. Use

Express VIs for common measurement tasks. Express VIs appear on the block diagram as expandable

nodes with icons surrounded by a blue field. Express VIs are to be discussed in a future topic.

The figure below shows the menu icons available for the block diagram.

1. Run options which are the same as that in the front panel.

2. Debugging tools tools which can be used for debugging the VI.

Highlight execution displays an animation of the block diagram execution when the VI

is run.

Retain wire values saves the wire values at each point in the flow of execution so that

when probes are placed you can immediately retain the most recent value of data that

passed the wire.

Basic LabVIEW Concepts

Page 10

Step into causes the execution of a node and then pause after execution.

Step over causes the execution of a node and then pause after the execution of the next

node.

Step out finishes the execution of the entire VI.

3. Application font button which is the same as in the front panel.

4. Options for aligning, distributing, ordering and cleaning the objects in the block diagram.

5. The Search field and the Context Help toggle button which are the same as that in the front panel.

The Tools palette, which is common to both the front panel and block diagram, is shown in the figure

below. The Tools palette contains options for the cursor and is accessible thru the View >> Tools Palette.

You can also press Shift + Left click on an empty FP or BD to display the Tools palette temporarily.

Automatic Tool Selection Button this enables the cursor to change automatically as needed in

the block diagram. A green LED lit on indicates that this tool is enabled.

Operate Value Tool (finger) used to push buttons (to toggle a Boolean value, to select a menu

item, etc.

Position / Size / Select Tool (arrow) used to relocate and resize controls.

Edit Text Tool (A with cursor) used to enter text (on labels and string constants).

Connect Wire Tool (spool) used to connect wires between block outputs and inputs.

Object Shortcut Menu Tool (menu icon) opens a pop-up menu of options for controls and

programming blocks, the same as when an object or node is right-clicked.

Scroll Window Tool (cupped hand) used to drag a window (eg. to scroll to a hidden portion of a

large block diagram).

Set / Clear Breakpoint Tool (stop sign) used to set and clear breakpoints in the block diagram

which freezes the execution of the program to enable the programmer to see what is happening

within the program.

Probe Data Tool (probe symbol: yellow circle, arrow, P character) used to place probes in the

block diagram which shows the value in a wire as the program is executed.

Get Color Tool (dropper) used to set the current foreground and background colors

Page 11

Drill Problems 1.2

1. What are the main windows that pop out when a blank VI is opened? What tasks can you do with each

one?

2. How can objects be found and placed in the front panel and block diagram? Discuss the use of the

following menus: controls palette, functions palette and tools palette.

3. What is the difference between controls and indicators? In the front panel, how can you identify, just by

mere looking at them, if the object is a control or an indicator?

4. How are data types differentiated in LabVIEW? Give an example node that represents each data type

used in LabVIEW.

Self Assessment: Rate your level of achievement for the following outcomes:

Cant do

Marginal

Acceptable Exceptional

Outcome

Performance Performance Performance

(0)

(1)

(2)

(3)

Identify parts of and navigate through the

LabVIEW environment.

Write your own thoughts and reflections on this topic.

1.3 Building the virtual instrument (VI)

At the end of this lesson, the student shall be able to:

a. build virtual instruments using arithmetic and comparison functions in LabVIEW;

b. create a sub-VI out of a portion of, or all of, a VI already made; and

c. debug VIs using different debugging tools.

As an example, we build the following virtual instrument (VI) with the following front panel and block

diagram

Sum&Average1.vi

Front panel:

Block diagram:

Page 12

and save this as Sum&Average1.vi (File >> Save or File >> Save As). Put values in the Num 1 and Num

2 then click the Run button to test the functionality of the VI.

By clicking the Run button, the VI is run only once. You can use the Run continuously so that the VI

becomes interactive (it updates the results when the inputs are changed). We can make the front panel

display more attractive by using not just numerical controls and indicators. Edit Sum&Average1.vi as

shown below and save this as Sum&Average2.vi

Sum&Average2.vi

Front panel:

Block diagram:

The front panel uses vertical pointer slider as controls and meters as indicators. Take note that the limit of

the Sum meter was changed to 20 because the limits of both the inputs are 10 and therefore the maximum

sum will be 20. In the block diagram, the control and indicator nodes are viewed as simple nodes to

conserve space.

Some instruments have warning indicators in their panels. We can add this up using a round LED (light

emitting diode) that lights up whenever the average of the two numbers reach 9. Edit Sum&Average2.vi

as shown below and save this as Sum&Average3.vi.

Page 13

Sum&Average3.vi

Front panel:

Block diagram:

In this VI, annotations are added into the block diagram to provide information to the reader of the source

code. Labels are also displayed to the function nodes providing more readability to the block diagram.

Example 1.6

Build the VI AverageGrade.vi. The VI will have a front panel similar to the one below. The VI lists the

mathematics courses that an engineering student will take. The user is allowed to input numerical grades,

assuming that the input of the user will be just between 50 and 100. The VI averages the inputs and

displays the average grade rounded off to the nearest whole number using a gauge. A round LED is lit red

when the average is less than 75, and green when it is 75 or above.

Page 14

As another example, let us make a VI that would compute the mean, variance and standard deviation for a

set of five numbers. The variance for a population is computed as

=

=

1

N

1

N

where x is the ith data, is the population mean, and N is the number of data (population). To implement

this formula, we do the following steps:

1. Compute the population mean .

2. Subtract the population mean from the data and square their difference. This quantity is called the

squared error (Err ). Find the squared error for all the data.

3. Add all the error squared data. The sum is called the sum of squared error (SSE).

4. Divide the sum of squared error with the number of data. This quantity, which is a mean, is called

the mean squared error (MSE). This is also the variance of the data.

5. Take the square root of the variance. This quantity is now the standard deviation .

The StdDev1.vi shows how the five steps were implemented in LabVIEW.

Page 15

StdDev1.vi

Front panel:

Block diagram:

Page 16

Notice that the averaging part was twice done: first to determine the population mean, and second to

average the squared error terms. A more elegant block diagram can be built if sub-VIs were used. A sub-VI

is a VI that is used as part of a larger VI. Two things are needed to be defined when making sub-VIs:

1. the functionality of the sub-VI; and

2. the input and output ports of this sub-VI.

Optionally, an icon for the sub-VI can be customized. The StdDev2.vi shows the use of such sub-VIs. A VI

named Average.vi was created from the original VI and was twice used. Another VI called the

ErrSquared.vi was also created from the original VI.

StdDev2.vi

Front panel:

Block diagram:

Just like any other programming languages, you may encounter two types of errors or bugs in LabVIEW:

1. those errors or bugs that prevent the VI from running (similar to syntactical errors in text-based

programming languages); and

2. those errors or bugs that cause your VI to generate bad results or incorrect behavior.

In both cases, LabVIEW has tools to help you deal with these errors and bugs.

Basic LabVIEW Concepts

Page 17

VIs which does not run is broken or non-executable. This may be caused by any of the following:

The block diagram contains a broken wire because of a mismatch of data types or a loose,

unconnected end.

A required block diagram terminal is unwired.

A subVI is broken or you edited its connector pane after you placed its icon on the block diagram of

the VI.

A VI which cannot be run because of a programming error is indicated by a broken arrow as shown in the

figure 1.12.

To know what error has occurred, you can click the broken arrow which will display the error list.

Page 18

The list suggests that the error occurred at the ErrSquared.vi because it is not executable. You can click

the error message under the Block Diagram Errors to highlight the node which contains error/s. Opening

the subVI reveals the following block diagram

which shows that the error is caused by unconnected wires in the subVI. Correct it by making the proper

connections. With now a correct subVI, the VI is now executable. However, testing the VI with the same

sample values as before,

Page 19

We can use LabVIEWs debugging tools to troubleshoot this apparently erroneous VI. The following can be

used:

1. Single stepping execution, where the VI is run step by step.

2. Breakpoints which pauses the VI when data passes through and allows the programmer to inspect

the current state of the VI at this point.

One can animate the execution of the VI by clicking the Highlight execution button, and use Probes to

display and monitor the values passing thru a wire while the VI executes.

Example 1.7

The file StdDev2_err.vi contains errors. Use the debugging tools to correct the errors.

Drill Problems 1.3

1. Build a VI that would solve a quadratic equation of the form

ax + bx + c = 0

by using only basic arithmetic operations and comparison operators. Take note that the square root

operations return a NaN (not a number) value when it operates on negative numbers. This should not

be the case with your VI, however. It should be able to return complex numbers, but do not use

functions for complex numbers yet! Call this VI as QuadraticEquationSolver.vi

2. Use the QuadraticEquationSolver.vi to build a VI that would solve a quartic equation of the form

ax + bx + c = 0

calling this as QuarticEquationSolver.vi. Just like in the previous item, the VI should be able to return

complex numbers as answers without using functions for these.

3. Build a VI that would convert a decimal number into a 16-bit binary number, calling this as DecToBin.vi

and another VI that would convert a 16-bit binary number into its decimal form, calling this as

BinToDec.vi

4. Use the VIs built in number 3 to build DecToOct.vi (decimal-to-octal) and OctToDec.vi (octal-todecimal).

5. The VI tscore_err.vi computes the Students t-score for two sets of sampled data. The t-score of two

sets of data indicates whether there is significant difference between the means of the two sets. These

two sets of data can be dependent or independent of each other. The steps to compute the t-score are

the following:

a. Compute the means of the two data sets, calling them x! and x" (we have used the x symbol to

indicate that we are taking the mean of a sample, which says that the data at hand are part of a

larger data which is the most practical case).

b. Compute the sum of the squares of the error for the two sets of data, calling them SSE! and SSE" .

c. Determine the sample variance using the formula

SSE! + SSE"

s =

n! 1 + n" 1

where n is the number of samples for each data set.

d. Determine the standard deviation of the sampling distribution of the sample-mean differences using

the formula

Page 20

s

s

=% +

n! n"

|x! x" |

Using LabVIEWs debugging tools, troubleshoot the VI which should give the correct t-score for the

following set of fifteen data:

Data set A: 26, 26, 26, 21, 18, 21, 19, 25, 23, 29, 22, 22, 24, 23, 22

Data set B: 18, 20, 20, 26, 17, 23, 20, 16, 21, 18, 21, 29, 20, 25, 19

Self Assessment: Rate your level of achievement for the following outcomes:

Cant do

Marginal

Acceptable Exceptional

Outcome

Performance Performance Performance

(0)

(1)

(2)

(3)

Build virtual instruments using arithmetic

and comparison functions in LabVIEW

Create a sub-VI out of a portion of, or all of,

a VI already made

Debug VIs using different debugging tools

Write your own thoughts and reflections on this topic.

e. The t-score is then computed as

t=

At the end of this lesson, the student shall be able to:

a. use LabVIEWs different elementary math, statistical and complex number functions; and

b. use while loops with shift register and tunnels with different modes.

LabVIEW offers different built-in elementary mathematical, statistical and functions for complex numbers.

The following function groups are found in the Functions >> Mathematics >> Elementary and Special

Functions

Trigonometric: functions such as sin, cos, tan, etc., are under this palette.

Exponential: functions such as exp, ln, log, etc., are under this palette.

Hyperbolic: functions such as sinh, cosh, tanh, etc., are under this palette.

Remember that trigonometric functions accept radians as inputs and inverse trigonometric functions return

angles in radians.

Statistical functions such as measures of central tendencies Mean, Median and Mode are found at the

Functions >> Mathematics >> Probrability and Statistics.

Complex number functions are found at Functions >> Numeric >> Complex. Some of these functions

include Complex Conjugate, Polar to Complex, Complex to Polar, Re/Im to Complex, and so on.

Basic LabVIEW Concepts

Page 21

As an example, we build a VI that accepts input of angle in degrees and returns the sine, cosine, tangent,

cosecant, secant and cotangent values for such angle.

Trigo.vi

Front panel:

Block diagram:

Example 1.8

Build a VI that would allow the input of a value from 1 to +1 and return the angle in degrees

corresponding to the inverse sine and inverse cosine of the input value.

The While-loop is a structure in LabVIEW that depends on the mode it is run, will do the following:

a. execute a code and stop when a certain condition is met; or

b. execute a code as long as a certain condition is being met.

Figure 1.16 shows the While-loop and the iteration and condition terminals. The iteration terminal is an

output node that keeps track of the number of times the While-loop has executed. The condition terminal is

Basic LabVIEW Concepts

Page 22

an input node that requires the necessary conditions to terminate the execution of the VI. It has two modes:

Stop if True and Continue if True. The node requires a Boolean input, and depending on the mode, does

one of the two things as stated before.

Figure 1. 17. The two modes of the condition terminal of the While-loop.

Data can be communicated in, out and around the loop using tunnels and shift registers. Tunnels allow the

passage of data in and out of the While-loop. Figure 1.18 shows an input node passing a scalar data into

the loop. Tunnels are automatically made when nodes outside the While-loop are connected to the nodes

inside the While-loop.

Tunnels are to be discussed in detail on the next article. For now, it is sufficient to know that the input

tunnel (a tunnel which inputs data into the while loop) and the output tunnel (a tunnel which passes data

from the while loop to another node outside) are non-indexed by default in While-loop.

The shift register stores the result of the current iteration and passes it to the next iteration for use. Shift

register comes in pair, that is, an output shift register is paired with an input shift register. The shift register

can have an initial value by passing a data into the input shift register. This initial value is the value used by

Basic LabVIEW Concepts

Page 23

the While-loop in its first iteration of calculation. If the value of the shift register is not initialized, it uses the

value stored in the output shift register carried out from the previous execution of the VI as the initial value.

Figure 1.19 shows the While-loop with a shift register. To add a shift register to a While-loop, right-click

on the edge of the While-loop then choose Add Shift Register.

The while loop structure, as well as other execution structures in LabVIEW will be discussed in more detail

in future topics; for now, we cover the basic things one must know when using a While-loop. The next

example uses a While-loop to implement a numerical solution called the Newton-Raphson method.

Example 1.9

Given the following equations for a catenary

s = a sinh

L

a

where s is half of the rope length a is the parameter related to the mass of the rope and the acceleration

due to gravity, and L is half the distance of the posts supporting the rope. The sag of the rope is given as

L

d = a 6cosh 18

a

Given s = 58.75 and L = 50, find d using LabVIEW.

Catenary.vi

Front panel:

Page 24

Block diagram:

Example 1.10

Use the statistical functions of LabVIEW to generate the following

a. an array of 100 uniformly distributed random numbers between 0 and 1.

b. an array of 100 uniformly distributed random numbers between 1 and 1.

c. an array of 100 normally distributed random numbers.

d. an array of 100 normally distributed random numbers with a mean of 2.8 and a standard deviation

of 2.5.

In all of the cases, find the mean, standard deviation, variance, skewness and root mean square (RMS),

and then using the Histogram.vi, plot the histograms of each set of random numbers.

Page 25

Random.vi

Front panel:

Block diagram:

Page 26

Example 1.11

The front panel of your VI for the quadratic equation solver (QuadraticEquationSolver.vi, drill problem 1.3

item number 1) might looked something like the one below, with four indicators, since you are not allowed

to use complex functions.

This time, use only two indicators and use complex functions to build QuadraticEquationSolver2.vi, with

the front panel looking like the one below:

Hint: Set the indicators to display numbers using complex double precision floating-point format.

Drill Problems 1.4

1. Using the Eulers formula, the trigonometric and hyperbolic functions for the complex number z = x +

jy can be established, and will show that the two functions are actually related thru the complex

number. Derive a formula to find the following: sinh x + jy ; cosh x + jy ; sin x + jy and

cos x + jy , and then create a VI that would numerically prove your derivations. Name the VI as

TrigAndHyp.vi.

2. De Moivres theorem is a formula that is useful in finding the power and roots of complex numbers. It is

stated as

z = = x + jy = = >r cos + j sin @= = r = cos n + j sin n

For fractional n, the right-hand side expression is multivalued and becomes

+ 2k

+ 2k

+ j sin

8

z /= = x + jy /= = >r cos + j sin @ /= = r /= 6cos

n

n

where k = 0,1,2 n 1. Build a VI that computes the fourth root of a complex number. The user is

allowed to input numbers: the real part and the imaginary part of the complex number z. The VI must

solve the four roots of the number z, in complex number form. Implement the VI in two ways:

a. using trigonometric functions (name the VI as DeMoivreTrig.vi), and

b. using complex number functions (name the VI as DeMoivreComplex.vi)

3. The Taylor series expansion for the hyperbolic sine function is given as

K

xE xG xH

x =J

sinh x = x + + + + =

3! 5! 7!

2n + 1 !

= L

Page 27

x

x

xM

cosh x = 1 + + + + =

2! 4! 6!

= L

x =

2n !

where n is the number of terms to be added to the series. Create a VI that would compute the sum of

the first ten terms of the Taylor series expansion for the hyperbolic sine and hyperbolic cosine of an

input x, calling this VI as HypTaylor.vi Use While-loop, and follow the following steps:

1. Input x.

2. For the first iteration (i = 0), compute the first term of the series.

3. Store the first term into the shift register.

4. For the second iteration (i = 1), compute the second term of the series. Add this to the first term

stored in the shift register and save their sum into the shift register.

5. Repeat step 4 until the number of iterations reaches 10 (i = 9).

6. Display the sum.

For comparison, compute the hyperbolic sine and hyperbolic cosine. Notice that as x grows larger, the

discrepancy between the Taylor series generated and the function generated values grows larger.

4. Simulate the following random events by creating a VI :

a. Tossing of coins. The output should either be a Head or a Tail. Call the VI as TossCoin.vi.

b. Tossing of a dice. The output should be an integer number from 1 to 6. Call the VI as Dice.vi.

c. Selecting six numbers out of 55 numbers from 1 to 55. The output is an array of six numbers, like

picking six numbers to place a bet on the lottery. Call the VI as Lotto655.vi. Note that the VI might

return repeated numbers in an array. This will be okay for now.

5. Determine the lowest positive root of f x = 8eOP sin x 1

a. using Newton-Raphson method.

b. using fixed-point iteration. Use the fixed-point iteration formula x J = x + 8eOPQ sin x 1.

Determine the root correct to three decimal places. Also, determine how many iterations are required

for each method. Which method arrives at the answer faster?

Self Assessment: Rate your level of achievement for the following outcomes:

Cant do

Marginal

Acceptable Exceptional

Outcome

Performance Performance Performance

(0)

(1)

(2)

(3)

Use LabVIEWs different elementary math,

statistical and complex number functions

Use while loops with shift register and

tunnels with different modes

Write your own thoughts and reflections on this topic.

1.5. Matrices and arrays in LabVIEW

At the end of this lesson, the student shall be able to:

a. understand how LabVIEW groups data into a single container;

b. generate arrays and matrices using While-loop and For-loop; and

c. operate and manipulate matrices and arrays.

Page 28

LabVIEW provides three ways to group data:

Cluster a cluster is a grouping of potentially different data types; for example, information about

an individual that includes:

o Name (string)

o Birthdate (date/time)

o Age (integer numeric)

o Height and weight (floating-point numeric)

o Photograph (image)

can be stored on a single container called a cluster. We will deal with clusters later on.

Array an array is a group of data with the same data type. Arrays can have as many dimensions.

The list of scores in a quiz of a class of 30 is a one-dimensional array (can be a row vector or a

column vector). If the list contains not only the scores of a particular class, but of all classes who

took the same quiz, the list is a two-dimensional array.

Matrix a matrix is a two-dimensional array which only contains numeric data. A two-dimensional

array whose elements are all numeric can be considered a matrix, however, LabVIEW

differentiates the two by having array operations and matrix math operations. For most cases, both

operations have the same meaning and hence can be used interchangeably.

In this chapter, we will deal mostly with array manipulations and operations, which also apply to matrix

manipulations and operations. We will just mention specific cases when needed.

Example 1.12

Create an array control, a matrix control, an array indicator and a matrix indicator in the front panel.

The next example shows how a While-loop can be used to create a two-dimensional array.

Example 1.13

(a) Build a 10 5 two-dimensional array whose elements are uniformly distributed random numbers

between 0 and 30 rounded off as integers.

(b) Build a 5 10 two-dimensional array whose elements are uniformly distributed random numbers

between 0 and 30 rounded off as integers.

(c) Show how the number of columns and rows of the two-dimensional array can be controlled by the user.

Use While-loops in (a) and (b).

Page 29

ArrayUsingWhile.vi

Front panel:

Block Diagram:

Another structure that can be used in the generation of arrays is the For-loop. The For-loop executes the

code inside the structure for a number of times. A condition can also stop a For-loop from running by

inserting a condition terminal inside a For-loop. The For-loop stops when this condition is met, or when

the number of iterations has been reached, whichever comes first.

Data in and out of the For-loop can also be transferred via data tunnels. These tunnels are basically the

same as that of While-loop. The basic difference only is that the default tunnel mode for While-loop is the

latest value, while that for the For-loop, the default is indexing.

Example 1.14

(a) Build a 10 5 two-dimensional array whose elements are uniformly distributed random numbers

between 0 and 30 rounded off as integers.

(b) Build a 5 10 two-dimensional array whose elements are uniformly distributed random numbers

between 0 and 30 rounded off as integers.

(c) Show how the number of columns and rows of the two-dimensional array can be controlled by the user.

Use For-loops in (a) and (b).

Page 30

ArrayUsingFor.vi

Front Panel:

Block Diagram:

Another mode for the tunnel is the concatenating mode, which concatenates the recently generated array

into the previously generated array. The use of such mode can be demonstrated using the following

example.

Example 1.15

Given an array >1 2 3 4@, produce the following arrays:

1 2 3 4

(a) S1 2 3 4T

1 2 3 4

(b) >1 2 3 4 1 2 3 4 1 2 3 4@

Page 31

IndexingVsConcatenating.vi

Front panel:

Block diagram:

Operations on arrays and matrices. Arrays and matrices can be operated on arithmetically just like

scalars.

Example 1.16

Through an example VI, show how arithmetic operations work for scalars and arrays.

AddingArrays.vi

Front panel:

Page 32

Block diagram:

Matrices generally follow the same rules as that of array operation, except for multiplication and division.

Example 1.17

Through a VI, demonstrate the difference between array multiplication and matrix multiplication.

ArrayMultVsMatrixMult.vi

Front panel:

Page 33

Block diagram:

Example 1.18

Re-implement the VI for computing the standard deviation, improving what StdDev1.vi and StdDev2.vi can

do. This time, StdDev3.vi should be able to compute the standard deviation for any number of data.

StdDev3.vi

Front panel

Block Diagram

Page 34

Array Manipulation. LabVIEW provides various functions to manipulate arrays. Figure 1.20 shows the

Array palette which contains functions for array manipulation.

Example 1.19

Given the following arrays,

do the following:

(a) Determine the size of any one of these arrays.

(b) Create a 2D array whose elements of the first, second and third rows are the elements of 1D Array 1,

1D Array 2, and 1D Array 3, respectively. Determine the size of this 2D Array.

(c) Create a 2D array whose elements of the first, second and third columns are the elements of 1D Array

1, 1D Array 2, and 1D Array 3, respectively. Determine the size of this 2D Array.

(d) Extract the fourth, sixth and tenth element of 1D Array 1.

(e) Extract the elements at the fifth row of 2D Array in (b). Also, extract the elements of the second column

of 2D Array.

Basic LabVIEW Concepts

Page 35

(f) Extract a 7-by-2 array from 2D Array starting from the second row, first column element.

(g) Create a 5-by-6 array from 2D Array.

(h) Determine the maximum and minimum values of 2D Array as well as their positions.

ManipulatingArrays.vi

Front panel:

Block diagram:

Matrices can also be manipulated using functions under the Matrix palette. The students are expected to

try on these functions and see how they work.

Basic LabVIEW Concepts

Page 36

As an application, we try to implement the matrix multiplication via arrays. Remember that array

multiplication is different from matrix multiplication in the sense that the latter has more rules. The matrix

product of two matrices U and V whose sizes are m n and n p respectively is the expression

UV

A Z BZY

Example 1.20

Implement an algorithm for matrix multiplication using arrays only.

matrices

8 1 6

1 1

U = S3 5 7T and V = S1 2

4 9 2

1 3

1

3T

6

MatrixMultiplicationViaArrays.vi

Front panel

Block diagram

Page 37

Drill Problems 1.5

1. How does LabVIEW group data? Show how each data groups are made using a VI called

DataGroups.vi

2. Create a VI that would perform arithmetic operations (add, subtract, multiply and divide), as well as

mathematical functions (trigonometric, exponential, hyperbolic) and statistical functions to matrices and

arrays. Design your front panel as if it will look like a scientific calculator for arrays and matrices. It

would be good if the user is informed whether an operation is invalid and why. Create separate VIs for

arrays (ArrayCalculator.vi) and matrices (MatrixCalculator.vi)

3. Create your own reshape algorithm that reshapes a given 2D array into another array whose size is to

be specified by the user. Recall that the reshape function of LabVIEW reshapes an array thru row-wise

re-arrangement of elements. Your reshape function should do this column-wise. Use While-loop

(ReshapeUsingWhile.vi) and For-loop (ReshapeUsingFor.vi).

4. Two more commonly done operations on matrices, specifically on square matrices, are finding

determinants and finding the inverse. Using arrays, create a VI that would evaluate the determinant of

a 2D square array as user input; call this VI as Determinants.vi. Create a separate VI which will

evaluate the inverse of a 2D square array of numeric data using co-factors and expansion by minors;

call the VI as InverseMatrix.vi. Check your results using matrices and matrix functions (Functions >>

Mathematics >> Linear Algebra)

5. Gauss and Gauss-Jordan elimination are algorithms which reduces a matrix into an upper triangular

matrix and identity matrix respectively. Implement the two algorithms in LabVIEW (GaussElims.vi and

GaussJordanElims.vi) using matrices.

Self Assessment: Rate your level of achievement for the following outcomes:

Cant do

Marginal

Acceptable Exceptional

Outcome

Performance Performance Performance

(1)

(2)

(3)

(0)

Understand how LabVIEW groups data into

a single container;

Generate arrays and matrices using Whileloop and For-loop; and

Operate and manipulate matrices and

arrays.

Write your own thoughts and reflections on this topic.

1.6 Graphing in LabVIEW

At the end of this lesson, the student shall be able to:

a. understand the difference between LabVIEWs chart and graph;

b. display data and waveforms into a chart or graph; and

c. configure charts and graphs suitable for presenting data.

LabVIEW provides a number of charting and graphing options for producing data plots. The table below

summarizes the most commonly used chart and graph types in LabVIEW.

Page 38

Table 1. 3. Most commonly used charting and graphing types in LabVIEW.

These chart and graph indicators are available on the controls palette.

Waveform chart and waveform graphs differ by the manner they can display and update data.

A waveform chart remembers and displays a certain number of points by storing these points in a buffer.

When the buffer gets full, the chart starts overwriting the old values with the new ones. When new data

points become available, they are appended to the old ones. Waveform charts are used to display real-time

data points, though it also accepts arrays and displays the points all at once.

A waveform graph however, accepts array as an input and displays these as data points all at once. It

does not accept single value points. It is assumed that the points in the array are equally spaced when they

are accepted as an input to a waveform graph.

The following example illustrates the difference between a waveform chart and a waveform graph.

Example 1.21

Plot the function y = sin x for 0 x 2 using a waveform chart and a waveform graph.

Page 39

ChartVsGraph.vi

Front panel:

Block diagram

Strip Chart: This mode has a scrolling display that is similar to a paper tape strip chart recorder.

This mode first plots values from left to right. From here, it continues to plot new points at the

rightmost point and shifts old values to the left.

Scope Chart: This mode has a retracing display similar to an oscilloscope. As it receives each new

value, it plots the value to the right of the last value. When the plot reaches the right border of the

plotting area, it erases the plot and begins plotting again from the left border.

Page 40

Sweep Chart: This mode acts much like the scope chart, but the plot is not erased when the plot

hits the right border. Instead, a moving vertical line marks the beginning of new data and moves

across the display from left to right as it adds new data.

Example 1.22

Explore the difference between the three update modes of waveform chart.

The waveform chart and the waveform graph can be configured using the Properties dialog box.

Example 1.23

Show how charts and graphs can be configured using the Properties dialog box.

ConfiguringChartAndGraph.vi

Front panel:

Example 1.24

Plot the sine wave y = sin x and the cosine wave y = cos x for 0 x 2 on the same waveform

chart and graph.

Page 41

MultiplePlots.vi

Front panel

Block diagram:

In the foregoing discussions, the data plotted mostly are time-based data, that is, the x-axis was dedicated

to time. This is not really the case however. For waveform charts and waveform graphs, we assume that

the variable in x-axis is equally spaced. So if you are to plot a data, not necessarily time-based data, but

the data points are generated with equal spacing, waveform charts and waveform graphs provide a good

way to plot these data points. For unequally spaced x-axis, XY Graphs can be used.

Page 42

Example 1.24

Plot the polynomial f x = A + Bx + Cx + Dx E with A = 4, B = 3.7, C = 1.9 and D = 0.17 for

the following 1D arrays of x.

a. 0 x 9

b. x = >0 1.0 2.7 3.0 4.2 5.0 6.5 7.3 8.1 9.0@

PlottingUsingXYGraph.vi

Front panel

Block diagram

Example 1.25

Use graphical method to find the approximate roots of the equation x E 9.4x + 22.95x 10.602 =

0. The roots of this equation are the values of x which satisfy the equation. Note that since the degree of

the polynomial in the equation is 3, there will be three roots.

Page 43

FindingRootsGraphically.vi

Front panel

Block diagram

LabVIEW also has tools for plotting in three dimensional. In the first example, a surface plot is generated

using parametric values.

Example 1.26

Create a surface plot for a torus. A torus is a ring with two parameters: the distance between the center of

the torus to the center of the tube R, and the radius of the tube r, as shown in the figure below.

x = R + r cos u cos v

y = R + r cos u sin v

z = r sin v

Basic LabVIEW Concepts

Page 44

where u and v are parameters with range from 0 up to 2. The For R = 10 and r = 2, and using30 data

points for u and v, plot a torus in LabVIEW.

PlottingATorus.vi

Front panel

Block diagram

Page 45

Drill Problems 1.6

1. (a) Generate a Gaussian distributed random number with a mean of 10 and a standard deviation of 2.

Your VI would only stop generating a random number when a Stop button is pressed. The VI should

only generate 100 data points per second. Plot the random numbers as they are generated and after

pressing the Stop button. Name the VI as WhiteNoise.vi.

(b) A moving average filter is a kind of filter which aims to smoothen out variations in signals. It works in

the following manner: the current value and a number of previous values are averaged to generate a

new value. The number of values to be generated depends on the window size of the filter. If for

example, the window size is 10, then the current value plus 9 previous values of the input signal are

averaged. With this, create a moving average filter for the input signal generated in part (a). The

window size of the moving average filter is 5. Plot the input signal and the filtered signal on the same

set of axes. The VI should stop when a Stop button is pressed. Call this VI as the

MovingAverageFilter.vi. (Hint: Use shift registers.)

(There is a video called WhiteNoise.wmv and MovingAverageFilter.wmv which demonstrates how

these VIs should work.)

2. For a set of correlated data, a straight line that best fits the data is given as y = a x + aL , where

= P b O P b

a = = QPcQO Q c Q and aL = y a x (x and y are the means of x and y respectively). Given the

Q

PQ

data below which tries to determine if there is a relationship between the length of the tail (TLength)

of a fox in inches to the weight (Weight) of the fox in pounds.

a. Plot the data in a graph. Note that as this point, there is no relationship between the two sets of

data and therefore, the data points should not be connected in any way.

b. Using the VI, compute the line that best fits the two data sets, with the tail length the independent

variable and the weight as the dependent variable.

c. Plot the best fit line into the same axes as that of the plot in (a) with x between 0 and 35.

d. Graphically determine the approximate weight in pounds of the fox if the tail length is (i) 5 in; (ii)

12 in; (iii) 18 in; (iv) 22 in and (v) 30 in. Save these values in an array indicator.

e. Does the line make sense? Why or why not? Put your answer here as an annotation to your VI.

Call the VI as BestFitLine.vi

3. Create a VI that would plot the following functions into a chart and a graph: the exponential function

y = eP , the logarithmic function y = ln x, hyperbolic cosine function y = cosh x and the cosine

function y = cos x for 0 x 5. Choose appropriate spacing to ensure smooth plot. Choose the

appropriate scaling for the x and y axes so that the user will have an idea on how the function behaves

as x gets larger. Make sure also that the user will be able to discern which plot is which. Finally, choose

which is the better tool to plot such functions so that the user will be able to use the plots for better

understanding of the behavior of the function. Call this VI as FunctionPlotter.vi.

Basic LabVIEW Concepts

Page 46

4. The PlottingATorus.vi in the example used MathScript node to generate the needed arrays. Show

how the nodes and structures of LabVIEW can be used to accomplish such task. Make the VI

interactive too, that is the user can specify the value of R and r, as well as the spacing for the

parameters u and v. Take note that as a requirement R > r or the torus will not be the familiar torus.

Integrate this into the VI so that when the user enters a value of R and r such that R r, the arrays

will return empty. Call the VI as PlottingATorus2.vi

5. Show how the following functions can be plotted as a surface for 5 x, y 5:

a. f x, y = sinc fx + y ; The sinc x function is equal to the expression sin x /x.

b. f x, y = exp x y .

c. f x, y = cos x sin y

d. f x, y = ln x + y

e. f x, y = sinh x + cosh y

Call the VI as SurfacePlots.vi.

Page 47

- fieldformulasUploaded byapi-281761923
- matlab frain introUploaded byNguyen Thi Hoang Giang
- Mathematics Studies Data Booklet.pdfUploaded byxaenir
- 2009 Labview ExercisesUploaded byViktor_Ramirez_2115
- M9_Trig - 4 - Similar Right Triangles and Trig Ratios NotesUploaded byAndrew
- drill1.4 of LabVIEWUploaded byJinKuri
- Using_Origin_from_LabVIEW_E.pdfUploaded byLetalis Ira
- geom 9 5Uploaded byapi-232613595
- Introduction to Matlab (Book)Uploaded bymohamed
- Topological and Primitive ImpedanceUploaded byrasim_m1146
- RT ADD MAT T5Uploaded bysmkpthoe
- math studies info bookletUploaded byapi-279518091
- Triangle 10Uploaded byFrancisco De León-Sotelo Esteban
- NICEUploaded byMikhael Glen Borja Lataza
- S14_9709_qp_13Uploaded byCaterina De Luca
- Assignment 1- Waves and OscillationsUploaded byPrathamesh Dash
- TrigratiosanysizeUploaded byDaiszyBaraka
- PreCal Sem1 Absent-studentVersionUploaded byratliffj
- PC GEOMETRY Triangle trigUploaded byHector R.
- Lecture 18Uploaded byUsama Javed
- Lesson 1 - Problem SolvingUploaded bySrinivas Cheruku
- C2 revisionUploaded byEL Hassary
- 14_6.pdfUploaded byNelsonMoseM
- Mathematics TrigonometryUploaded byUdayveerSingh
- diploma syllabusUploaded byT Hari Prasad
- Yearly Lesson Plan Mathematics Form 5Uploaded byrye
- [IJCST-V4I1P12]:Vivek SolavandeUploaded byEighthSenseGroup
- Challenge_mathematics_problems_for_16-17.pdfUploaded bywill bell
- Math 125 - HW 6 SolutionsUploaded byPhuc Dang
- preCal_sem1_studentVersionUploaded byratliffj

- Pec Based Electrical Wiring Design Simulator for Commercial UnitsUploaded bynap_carino
- SP3D ModelFormats Global EnUploaded byJesus Diaz
- NHibernate - DocUploaded byghlu
- How does Owen portray the impact of war in 'Anthem for Doomed youth'Uploaded bykaitlnwalllace
- ISDP(CW2) Individual ReportUploaded byYexeon Chew
- Women of the BibleUploaded byZ
- MASTERS of TRADITION 2018 ProgrammeUploaded byThe Journal of Music
- User Exit MacroUploaded byDebebook
- Learn Enough Command Line to Be Dangerous _ Learn Enough Command Line to Be Dangerous _ SoftcoverUploaded byashishsilvers7437
- TJUSAMO 2012-2013 Number Theory 1Uploaded byChanthana Chongchareon
- Ed 477465Uploaded byLuluk Imasnuna
- How to “MAX” out your Fast Refresh Materialized Views - Blue GeckoUploaded bymary0404
- Poetic Translation (Erol Kayra)Uploaded bybillypilgrim_sfe
- DrapeUploaded byEduardo Coello Flores
- Microsoft TechNet: How to Configure IntelePeer SIP trunking for OCS Server 2007 R2Uploaded byIntelePeer Inc.
- rachel rosenberg resumeUploaded byapi-418718136
- 4th Grade Grammar GuideUploaded by1mirela
- 1 the Semantics of the Russian Verb. Review of Ju.D. Apresjan, Èksperimental'Noe Issledovanie Semantiki Russkogo Glagola 1967 [Lingua 271 53-81] 1971Uploaded byxgn
- Resume - Microsoft GarageUploaded byFerdinand Cruz
- homs section 2 chapter qsUploaded byapi-243944469
- hsie assessment criteriaUploaded byapi-211060457
- Kode Eror Mesin Canon 5075Uploaded bydonirahmat
- medievalUploaded byPamela Mabel
- fftw3Uploaded byRicardo Alonso Muñoz Canales
- ENGLISH UNIT 3.pdfUploaded byRandy Rulf Gacayan Radam
- Unit 3 6th IntroUploaded byzavijava
- Delta Ia-hmi Dop-series c en 20161202Uploaded byCanek Uno
- IBM MQ SeriesUploaded byFayaz Syed
- psat-2.0.0-b2Uploaded byYichi Zhang
- Installation procedure.txtUploaded bykazamula