NI LabVIEW Skills Guide

by Christina in LabVIEW, Training

One of the coolest new features of LabVIEW 2012 isn’t even in LabVIEW itself. I’m talking about the new LabVIEW Skills Guide. LabVIEW 2012 promotes this website on the Getting Started window, but you don’t need LabVIEW 2012 to access it.

The LabVIEW Skills Guide strives to be the fastest path to success with LabVIEW and National Instruments hardware. If you’re new to LabVIEW, it helps you learn the skills you need. If you’re training a colleague, it provides you with the tools to help. Even if you’ve been using LabVIEW for years, you may discover a new area of interest!

We’d love to hear your feedback on how well the LabVIEW Skills Guide works for you and suggestions for future enhancements.


NIWeek 2012 Session Picks

by Christina in NI Week

NIWeek 2012 is almost here!

There are many excellent sessions planned. You can see the complete list at ni.com/niweek, but here are the ones that I’m most excited about. Obviously I can’t attend them all, though, since some of them are at the same time! I need clones…


A Scalable Plug-In Architecture for Monitoring Distributed Real-Time Applications
Thursday, August 9 > 10:30–11:30 a.m. > Room 16A
Fabiola De la Cueva, Delacor
Watch LabVIEW Champion and LabVIEW Architects Forum Founder Fabiola De la Cueva demonstrate a scalable, configurable plug-in-based architecture for monitoring multiple distributed targets even if the targets are different system types. Examine advanced techniques like LabVIEW object-oriented programming and subpanelling and take the code home with you.

Actor Framework
Wednesday, August 8 > 3:30–5:30 p.m. > Room 18C
Stephen Mercer and Allen Smith, NI
Explore how the Actor Framework (AF), part of LabVIEW 2012, helps you build LabVIEW applications involving multiple parallel tasks that must communicate with each other. With AF, you can reuse more code and avoid many of the common deadlock and race conditions of parallel systems. Some knowledge of AF and LabVIEW object-oriented programming is helpful for this session. See ni.com/actorframework.

Build a VI Package With VI Package Manager
Tuesday, August 7 > 10:30–11:30 a.m. > Room 18C
Robert Des Rosier, NI
Learn how to set up the most efficient processes to build and distribute VIs and utilities for free. This session includes tips on how to package your LabVIEW code in reusable components that are easy to track and share with other users. In addition, see how to easily install VIs on multiple computers and versions of LabVIEW as well as license your LabVIEW packages to quickly turn your code into a commercial product.

Code Review Best Practices
Tuesday, August 7 > 10:30–11:30 a.m. > Room 18B
Nancy Hollenback and Brian Powell, NI LabVIEW R&D engineers review all (yes, ALL) code that goes into the product and encourage you to do the same. In this session, examine best practices and learn how your team can use these ideas.

Custom Code Deserves Custom Analysis
Thursday, August 9 > 1:00–2:00 p.m. > Ballroom G
Elaine Ramundo, Bloomy Controls, Inc., and Ellen Zhang, NI
Examine how to use the LabVIEW VI Analyzer Toolkit to help automate large project code reviews, especially when creating custom rules for specific code base/project needs. This session includes a demo and tutorial worksheet.

Data Communication With LabVIEW
Tuesday, August 7 > 3:30–4:30 p.m. > Room 12B
Grant Heimbach, NI
Get an overview of some of the most effective techniques for sending and receiving data and commands within a LabVIEW application. See how to stop multiple loops, send messages to an undefined number of plug-ins, set up two-way communication, communicate in a distributed embedded system, and address other common challenges.

Everything You Ever Wanted to Know About Functional Global Variables
Wednesday, August 8 > 3:30–4:30 p.m. > Room 19B
Nancy Hollenback, NI
As a longtime foundational design pattern in the LabVIEW community, the functional global variable (FGV) meets many common challenges but can also be overused. Join this discussion of best practices for global data storage and the transition from FGVs to data value references.

Explore Tools to Customize LabVIEW
Wednesday, August 8 > 2:15–3:15 p.m. > Room 18D
David Ladolcetta, NI
Customize LabVIEW by adding functions to the LabVIEW Project Explorer. Also learn to access additional resources and tools to improve the LabVIEW development environment.

Forget-Me-Not Seat Sensor Protects Children
Thursday, August 9 > 2:15–3:15 p.m. > Room 19A
Keith Schaub, Wireless SOC Test
Learn how Wireless SOC Test used LabVIEW and other tools to develop an inexpensive and highly reliable safety system to protect infants and children in car seats. This system, called Forget-Me-Not, alerts you if a child is placed in the seat, becomes unrestrained, or is inadvertently left in the vehicle.

Inside the LabVIEW 2012 Core Templates
Thursday, August 9 > 10:30–11:30 a.m. > Room 18D
Elijah Kerry, NI
Spend time with the new templates and sample projects in LabVIEW 2012 with technical experts in the room who can answer questions.

LabVIEW 2012 Advanced Design Templates and Sample Projects
Tuesday, August 7 > 3:30–4:30 p.m. > Room 19A
Elijah Kerry, NI
Focus on the more complex templates and sample projects in LabVIEW 2012 and explore concepts like how to create and add your own.

LabVIEW Classes: The State of the Art
Tuesday, August 7 > 2:15–3:15 p.m. > Room 19A
Stephen Mercer, NI
Review LabVIEW object-oriented programming (OOP) trends over the last year with LabVIEW OOP Lead Developer Stephen Mercer. This session includes interesting tricks and tips, new 2012 features, and tales from other users to educate and entertain.

Parallelizing the Unparallelizable
Wednesday, August 8 > 2:15–3:15 p.m. > Room 16A
Christian Altenbach, UCLA
LabVIEW is well suited for parallelization, but fully using a large number of cores requires smart code design. LabVIEW Champion Christian Altenbach shows you how to design code to automatically scale as more cores become available, even if the important loops are initially not directly parallelizable. Also examine benchmarks.

Secret Sauce: Non-LabVIEW Tools to Make You a Better LabVIEW Developer
Tuesday, August 7 > 10:30–11:30 a.m. > Room 12B
Justin Goeres, JKI
If you could save one hour a day by working smarter, how much more value could you create and how much less stress would you feel? LabVIEW Champion Justin Goeres shows you how to manage your code, projects, and commitments using the same free and low-cost tools JKI engineers use.

Software Engineering Best Practices for LabVIEW
Tuesday, August 7 > 4:45–5:45 p.m. > Room 19B
Elijah Kerry, NI
The complexity of today’s challenging applications requires effective software engineering, meaning development practices that ensure the scalability and maintainability of software. Learn how applying these practices correctly improves overall application quality and developer productivity as well as lowers maintenance costs.

Tips and Tricks to Speed LabVIEW Development
Thursday, August 9 > 10:30–11:30 a.m. > Ballroom E
Darren Nattinger, NI
Hear from the “world’s fastest LabVIEW programmer” about some simple techniques that can help you code more quickly. Also learn about little known LabVIEW features, advanced functions, and other tools that can help you save development time.


Also, don’t forget about the LAVA/OpenG BBQ on Tuesday night!


LabVIEW Core 3 Training Videos

by Christina in LabVIEW, Training

There is a channel on YouTube providing lessons from LabVIEW Core 3. Here’s the description:

This is a pilot project driven from National Instruments UK. Leave your comments, what you like or what you did not like, to guide future development of our course formats.

The third course of the National Instruments LabVIEW learning path, LabVIEW Core 3, increases proficiency by exposing you to best practices for designing, developing, testing, and deploying LabVIEW applications.

You need access to LabVIEW Core 3 course manual, to be able to complete the exercises and course project. If you have a current software contract (SSP) with NI, you can get all 38 modules in DVD and course manual for £179 (GPB), equivalent to 56% discount, directly from NI UK Office at sandra.taylor@ni.com or call us on +44(0)1635 572 400.

PS. As disclosure, I do work for National Instruments and I am passionate about training and improving skills of LabVIEW users.


Long time, no see!

by Christina in Administrivia

Comments closed Comments

Sorry for the long absence from the blog. I’ve been really busy for the past six months. Those of you in the LabVIEW 2012 Beta program know why!

If you’re not in the Beta program, there’s still time to request to participate. Just go to ni.com/beta and select LabVIEW 2012.


NI LabVIEW 2011

by Christina in LabVIEW

LabVIEW 2011 Panel

I am thrilled that National Instruments is now releasing LabVIEW 2011.

LabVIEW 2011 is, in my opinion, the best version of LabVIEW ever.

As you can see from my screenshot, we’ve given LabVIEW a fresh new look with a set of controls that we’ve named “Silver” controls in honor of the 25th anniversary of LabVIEW.

Also, customers have told us that they want to accelerate their productivity and we’ve made that our priority. We improved editor responsiveness. We increased test coverage. We implemented time-saving features from Idea Exchange.

And we’ve paved the way to make things even better in future versions. In our continued commitment to the stability of our platform, we’ve added a new error reporting mechanism, making it easier than ever to report crashes with accompanying information to help us diagnose issues.

Learn more about LabVIEW 2011 on ni.com.

If you’re coming to NIWeek, you can also come to my session to learn more about how Simon Hogg and I implemented those beautiful Silver controls!


LabVIEW RT and FPGA Survey

by Christina in Surveys

Comments closed Comments

My friends in Marketing want to know more about how people use LabVIEW RT and FPGA. If you’ve used one or both of these products and can spare five minutes, please take this survey. There will also be a paper version of the survey distributed at NIWeek 2011.



NIWeek 2011

It’s almost time for NIWeek 2011!

I’ve looked over the Session Catalog for this year and there are so many great choices that I’m having a hard time narrowing down my list of recommended sessions. So I’ll limit myself to the sessions relating to user interface design with LabVIEW.

First on my list is, of course, my session, co-presented with Simon Hogg: Customizing NI LabVIEW Controls and Indicators, Tuesday (August 2) at 4:45 PM in 13A/B.

You’re probably thinking, “Sounds like things I’ve heard a million times before,” right? I guarantee not! Simon and I will be demonstrating some secret, unpublished features of the Control Editor that are new in LabVIEW 2011. They’re not quite ready for “prime time,” but we’re willing to let a select few start using them!

Other sessions that I recommend include:

  • Building Quality NI LabVIEW User Interfaces, Tuesday (August 2) at 1:00 PM in 13A/B. My colleagues Nitin Thomas and Simon Hogg will cover the broader topic of user interface design in LabVIEW, skipping over customizing controls since that will be covered in my session.
  • Flexible GUI for Vibration Analysis with NI LabVIEW, Tuesday (August 2) at 2:15PM in 11B. Jeremy Weiss from Mechanical Solutions, Inc. will talk about making UIs designed for rotating machinery vibration troubleshooting, including the usage of tree controls and subpanels.
  • User Interface Tips 2.0, Wednesday (August 3) at 4:45 PM in 13A/B. Jonathan Cohn from Bloomy Controls will provide his tips for making the best user interfaces.
  • Introducing NI LabVIEW 2011, Tuesday (August 2) and Wednesday (August 3) at 10:30AM in 13A/B. See all the new features of LabVIEW 2011, including a new style of front panel controls!

Did I miss any sessions you think should be on this list? Please post them in the comments!


Replace and Paste-Replace

There are multiple ways to replace things in your VIs. Knowing your different Replace options can help you choose the one that best fits your needs.

Replace Shortcut Menu

On the front panel, you can right-click on a control and choose one of the options from the Replace menu. This method will preserve some things about the original control. Unfortunately, it’s not obvious what things will be preserved. In most cases, LabVIEW will attempt to preserve the label, caption, value and dataflow direction (control/indicator). It may also try to preserve other things, such as the numeric representation, size or color. It’s hard to say what will be preserved without actually doing the replace.

Luckily, you have Undo if a right-click replace operation doesn’t do you what you want. But what do you try next?

Paste-Replace is a method of replacing a control without preserving any of its appearance attributes. It will, however, preserve things like connector pane placement, wire connection and associated block diagram elements (e.g. local variables and implicitly-linked Property/Method nodes). (By the way, right-click Replace preserves these things as well).

To use Paste-Replace:

  1. Place the control you want.
  2. Use Edit>>Cut (from the menu, or via keyboard shortcut) to put it on the clipboard.
  3. Select the control you want to replace.
  4. Use Edit>>Paste.

Note that Paste-Replace is not available when editing the LabVIEW block diagram. On diagrams, you almost always use right-click Replace. However, some structures (such as loops) have special Replace menu options to replace them with other structures without losing their contents.

Keep reading »


For Loop Examples

by Christina in Examples, LabVIEW

Thanks for all the responses to my last post! The humble For Loop is much more complicated than it appears at first glance. (I’ll get to While Loops as well, but later).

Here’s a recap of the suggested “function” examples:

  • Contrasting the For Loop’s operation (iteration from zero to N times) with a While Loop’s operation (iteration until a condition is met).
  • Automatic indexing
    • 1D array
    • 2D array (row vs. column, how to transpose if needed)
    • Multiple indexing sources (and which will stop the loop)
  • Shift registers
    • passing data to the next iteration of the loop
    • uninitialized shift registers
    • shift registers with depth > 1
  • Reading the N terminal inside the loop
  • Conditional terminal to “break” the loop early

And the suggested “concept” examples:

  • How to stop the execution of parallel loops
  • How to control loop timing (including the Timed Loop)
  • For Loops that execute zero times – how to know when it can happen and how to handle it correctly
  • Error handling in loops
  • Data communication between loops. (I’m going to punt on this one. Anyone who heard about this year’s CLA Summit knows that Data Communication in LabVIEW is a huge topic, and not something I can address with a simple example. Rest assured, there are people working on clarifying the data communication options for our customers and I’ll keep you posted about what they come up with).
  • Performance considerations (e.g. optimizing loops), including the Parallel For Loop.

And the suggested “application” examples:

  • Filtering an array to only the elements meeting a constraint
  • Displaying progress of a loop

Whew! Well, as the saying goes, the longest journey begins with a single step, so let’s get started.

Here’s a simple For Loop example: For Loop Basics (I’m not claiming this VI is perfect; it’s just something I put together quickly).

For Loop Basics Front Panel
For Loop Basics - Example

Here are some experiments I’d like feedback about:

  1. It’s an exercise. Rather than just giving you something to run, it has steps which require you to edit the VI. Do you like examples like this?
  2. The instructions are on the panel in a String control. This approach has some advantages over a free label (e.g. it gives us a scrollbar, which handles system font changes more gracefully) and some disadvantages (e.g. you probably wouldn’t use controls for documenting “real” VIs). What do you think of this idea? Also, would you rather have the instructions on the diagram?
  3. It’s built so that it can be a VI Snippet, which means that (if you’re using a supported web browser and LabVIEW 2009 or later) you can drag it to a VI diagram. Is this useful at all?

What Does a Loop Example Need?

by Christina in Examples, LabVIEW

Loop Quandry Cartoon
The recent LabVIEW Example contest got me thinking about our example offerings. I categorize LabVIEW examples three ways:

  • Application examples. These examples are fully-functional applications that show off what LabVIEW can do. They can be great starting points for building your own, similar applications. However, they’re usually difficult to learn from because they are large and contain many different concepts. These kinds of examples seem to be popular in contests.
  • Concept examples. These are “teaching examples” that illustrate a concept. Although not VIs that you would modify and incorporate into a real application, they can present “how to” information with minimal extra code.
  • Function examples. I think these examples are the unsung heroes of the example world. With a good example, you can quickly learn what a function can do. Sometimes you can also learn what a function can’t do or common mistakes in its usage.

Even though Concept and Function examples are smaller than Application examples, they can be just as difficult to write. They require having a thorough understanding of the material without having lost sight of the new user’s point of view. In my experience, people who have taught LabVIEW are invaluable when it comes to crafting these kinds of examples.

Another recent, thought-provoking event for me was NI Tech, an NI-internal R&D conference. In two of her presentations, Nancy Hollenback (who recently re-joined NI as a Field Architect – more on that in a future post!) showed a slide illustrating several “hurdles” that LabVIEW users encounter when progressing from the “three icon demo” to large systems.

The first of these hurdles was “arrays and loops.”

Having been thus inspired, I’m now setting out to find (or build) the best possible function/concept examples for loops. There are somethings I already know they need to show:

  • how to decide if you should use a For loop or a While loop
  • array indexing on loop tunnels
  • the “zero iteration For loop” problem
  • early termination of For loops (“For loop with break”)
  • loop timing.

What other things would you expect from loop examples? Do you have any examples (from NI or elsewhere) that you recommend? Please send them my way!