A HMI Navigation Engine for LabVIEW
Overview
This document describes how the HMI Navigation Engine works and how to use it.
Table of Contents
Background and Scope
For applications where operators interact with machines, there is a natural need for a Human Machine Interface (HMI) through which operators can monitor the status and control the operation of the machine. There are several ways to implement this HMI functionality but the most common approach is to create “pages”.
Each page is implemented as a VI, and contains the user interface (UI) elements needed to control or monitor a specific machine process. The HMI functionality is divided into different UI Pages, depending on the machine functionality exposed to the operator. For more information on how to build an HMI page, refer to the Creating HMI pages for LabVIEW Touch Panel Module document.
As the UI pages are defined and implemented, there is a need for a design pattern for managing the pages and navigating between them. This document is intended for people who want to learn how to implement such an engine, specifically for HMI pages. Although this engine was created for that purpose, this engine can be used in other type of applications.
This document will explain how to use and implement the HMI Navigation Engine (HNE) Component.
Implementation
An HMI is composed of several process loops that run in parallel. One of those processes is the navigation loop, shown in Figure 1. The Navigation Engine (HNE) executes inside the navigation loop. For more information on other HMI components or the HMI architecture, refer to the document “An HMI Architecture for LabVIEW Touch Panel Module”.
Figure 1. HMI Architecture – Navigation Loop
The navigation loop VI is implemented as a case structure enclosed in a while loop. Each case contains a page VI. The case selector is wired to the HNE Page Manager (Next) VI (see below), which provides the name of the next page to display.
The HNE installs an API palette for initializing and managing the HMI pages. The following paragraphs describe this API.
Figure 2. HNE palette
HNE Page Manager (Init) – This VI initializes the HNE by setting the navigation history depth and setting the name of the first page to be displayed.
HNE Page Manager (Next) – This VI returns the name of the next page and passes it to the case structure in the HNE.
HNE Page Manager (Set) – This VI sets the name of the next page to be displayed. This VI is used within HMI pages to support navigation buttons.
HNE Page Manager (Back) – This VI returns the name of the previous page from the page history. This VI is used within HMI pages to support the operation of a “back” navigation button.
The Page Manager stores the page state and history in a functional global variable that each of these Vis accesses.
Figure 3 shows the block diagram of the example that is installed with the HNE component. This example initializes the HNE with “Home” as the initial page and a maximum history of 10 pages. Once the engine is initialized, the HNE reads the name of the next page (Home) and opens the VI under the “Home” case. The Home Page runs until the user exits the page by navigating to another page. When any page is left, the navigation loop uses the HNE Page Manager (Next) VI to get the next page name, which is used to select the corresponding case.
Figure 3. HNE example
The HNE component also installs a VI template that contains the basic structure of the HNE. This template can be used to create a new Navigation Loop. It just requires adding the HMI pages for your application.
References
Overview: An HMI Architecture Overview
Overview: An HMI Architecture for LabVIEW Touch Panel Module
Component: Creating HMI pages for LabVIEW Touch Panel Module
HNE Component Files: HMI Navigation Engine (HNE) Component
Reader Comments | Submit a comment »
Legal
This tutorial (this "tutorial") was developed by National Instruments ("NI"). Although technical support of this tutorial may be made available by National Instruments, the content in this tutorial may not be completely tested and verified, and NI does not guarantee its quality in any way or that NI will continue to support this content with each new revision of related products and drivers. THIS TUTORIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND AND SUBJECT TO CERTAIN RESTRICTIONS AS MORE SPECIFICALLY SET FORTH IN NI.COM'S TERMS OF USE (http://ni.com/legal/termsofuse/unitedstates/us/).
