Have you ever wanted a system to do something, then do something else after that first thing, then do something else after that second thing? If so, the DMCquencer may be the right tool for your system.
DMC created a powerful test executive framework in LabVIEW to provide configurability to automated processes called the DMCquencer. Our engineers leverage this platform as a foundation for implementing required process configuration and execution capabilities.
What is the DMCquencer?
The DMCquencer is a software framework for managing and performing processes that follow a sequential execution model.
This sequential execution model includes any procedure, workflow, recipe, algorithm, or routine that can be expressed as a series of steps or actions to be executed in a prescribed order.
The framework evolved to implement processes that follow a linear execution model within automated testing applications and has been deployed on numerous other test systems developed by DMC.
The DMCquencer provides end users with a powerful and flexible tool for defining/configuring automated processes and for executing these processes. Projects which employ this framework within the application leverage its significant development investment without incurring the costs it would take to build up process execution management/sequencing functionalities from scratch.
DMCquencer Design Overview
A completely open platform, the DMCquencer is regular LabVIEW source code built from the ground up. The resulting benefit is that the framework can be readily “molded” to directly suit the unique requirements of each Client’s projects.
The framework is composed of two primary software modules, the Sequence Editor and the Sequence Engine.
- Provides an intuitive user interface defining/configuring automated processes
- This can be thought of as the DMCquencer “Integrated Development Environment” (IDE)
- The user creates a library of steps/actions (Sequence Elements) that occur within a given automated process
- These steps/actions are then arranged into Sequences to describe the order in which they are to be executed
- The user defines other entities and configurations that pertain to the automated process, but are not part of the Sequence itself (i.e., Variables, Events, and configuration parameters)
- Stores user-defined DMCquencer information as a Sequence File
Example of Sequence Editor Interface or DMCquencer Framework
- Performs the actual execution of the automated processes defined within the Sequence Files that are created using the Sequence Editor
- Provides the user with the ability to:
- Load Sequence Files
- Control Sequence execution (i.e., Start, Pause, Resume, or Abort)
- Displays Sequence execution progress information in real time
- Logs Sequence execution activity to a file
Example of Sequence Engine Interface of DMCquencer Framework
Automated Sequence Engine Operation
The primary end user operating mode of the application is an automated Sequence Engine. This mode provides a powerful and flexible interface designed to support current system process requirements and to adapt to future/evolving requirements without actual program source code modifications.
In this mode of operation, the user can configure a variety of step types, enter appropriate setup parameters for each of these steps, organize these steps into a sequence, save this sequence to file, then press a single button to execute the defined sequence. All sequence configuration data is stored as text within an XML file format. Sequences can be run individually or called as subsequences by higher level sequences to enable a hierarchical organization of system automated processes/operations.
Engineering users can access a password-protected Sequence Editor screen, where they can configure relevant parameters for each defined step. These parameters define details on how that the given step should be run, and include timing parameters, selection of various operating modes or configurations, grading criteria, etc.
The user can configure as many instances of a particular step as they would like, allowing them to create as many unique variations of a step as may be required to support automated processes. By configuring all required instances of all pre-defined steps, the user can thereby establish a library of steps to draw from when defining sequences.
The DMCquencer framework includes many Sequence Element types that provide core functionalities such as those listed below:
- Controlling execution flow within the Sequence
- Managing, manipulating, and evaluating data values and variables
- Displaying information to the user or obtaining user input
- Managing Sequence execution timing
These functions of these core Sequence Element types are intended to be generic and flexible, such that they are useful and relevant to a very wide variety of applications. These core Sequence Element types may be contrasted with application-specific Sequence Element types, which provide functionalities that are needed to satisfy requirements that are unique to a particular application (such as controlling a specific model of instrument or device).
- For Loop
- While Loop
- If Statement
- Go To Statement
- Call Subsequence
- Wait (for Time or Condition)
- Wait at Rendezvous
- Wait for Notification
- Send Notification
- Display Message (to Operator)
- Sequence Control Prompt (Retest, End Test, Continue, etc.)
- Set Variable Expression
- Set Variable Value
- Set Variable to Waveform
- Run Script
- Process Data (Grade Data Value, etc.)
- Add Monitor
- Remove Monitor
Any given automated process will involve certain actions or steps that are unique or specific to the nature of the particular system/application. For example, for a particular system that includes a hydraulic pump, turning that pump on and off may be a critical part of automated processes involving that system, and thus it would be useful to have a type of Sequence step that allows this pump to be controlled. However, for a system that does not involve a hydraulic pump, a step for controlling such a pump is not relevant or necessary.
A step for controlling a hydraulic pump is an example of an application-specific action/step. To accommodate such cases, the DMCquencer provides the ability to integrate any number of application-specific steps as “plugins” to the overall framework.
These application-specific actions/steps will vary greatly from system to system, and they can’t be identified/defined a priori without direct knowledge/experience of the given system. Thus, it follows naturally that these application-specific actions/steps are not built into the DMCquencer framework as core step types, but rather employed as-needed using a plug-in approach.
Any given system in which the DMCquencer framework is utilized and deployed will include implementations of application-specific step types. The number and characteristics of these application-specific step types are naturally dependent on the requirements of the particular system and corresponding automated processes to be performed.
The DMCquencer framework has a highly organized (object-oriented) architecture that makes it possible to integrate additional step types as new code modules that easily “plug in” to the foundational framework.
Each step type is implemented as a separate code module (LabVIEW class), allowing relatively simple expansion to add new step types. This facilitates the smooth extension of system capabilities to accommodate evolving requirements.
Through the same password-protected Sequence Editor interface, the user can select any number of steps they wish to run from their library of defined steps and to organize these steps into an ordered sequence. It is possible to define multiple separate sequences within this interface and to call one sequence from another sequence to enable a hierarchical organization of automated process operations.
The Sequence Editor is a flexible and intuitive user interface with support for user-friendly operations like Drag and Drop. It allows users to choose steps to run, organize and order these steps into a sequence, and save these sequences to file.
Once the desired sequence has been configured, fully automated sequence execution may be initiated by a single command or user button press. The list of steps to run is displayed in a tree structure. The Sequence Engine application then executes each defined step one after another as defined by the sequence flow/logic. Real-time data for the current sequence is displayed as execution progresses (see example image below).
So again we ask: Have you ever wanted a system to do something, then do something else after that first thing, then do something else after that second thing?
If so, start building a DMCquencer system that to automate your process. Contact DMC to find out more.