The main components of the MICAS-X system are the Control Program, the Acquisition Loop, Drivers, Displays, Instruments, and Utilities. The functionality of these different modules is described below. For a list of the specific modules currently available, see the MICAS-X Modules page.

Below is a schematic of MICAS-X architecture. The yellow box is the Control Program. Light green boxes are user interface Displays. Dark green boxes are Utilities that can be run inside or outside of MICAS-X. Light blue boxes are various control Modules, and darker blue boxes are Drivers instantiated by the Acquisition Module. Larger orange and green boxes on the left are Instruments, which can have an optional Display.

 
 

Control Program
The core of MICAS-X is the control program, shown in yellow in the figure above. This program contains the main MICAS-X window, which has a row of commonly-used controls across the top with a tab structure beneath. The first tab is the Control tab, and contains a wide range of controls and indicators. The specific controls and indicators that are presented varies according to the configuration, but can include a list of all the Channels with their current values, a time-series graph with any two channels displayed, Controllers (output channels), switches, triggers and alarms, and sequences. The next 14 tabs can each be configured to contain any of the various MICAS-X Displays. Displays can be generic user-interfaces with graphs and indicators, or can interface closely to a specific MICAS-X Driver or Instrument. The Utility tab follows, which is where various data review programs can be called up whenever the user wants. The MICAS-X, or Summary tab is the final tab normally seen, and contains a range of indicators that display the current state of MICAS-X, including recent errors and events. The Debug tab can optionally appear after the MICAS-X tab, and is used during development or debugging to access the inner workings of MICAS-X.

Acquisition Loop
The MICAS-X architecture is predicated on the assumption that nearly all instruments require a set of "housekeeping" channels. These are input and output channels that are typically updated at 1 Hz, though MICAS-X can run channel acquisition at 20 Hz or above, or much slower than 1 Hz. These housekeeping channels often relate to instrument health, such as temperatures, voltages, pressures, and flows. In addition, many instruments that MICAS-X works well with have all their data fit into the construct of housekeeping channels. E.g. many gas phase and aerosol measurement instruments, as well as many other laboratory and field instruments, deliver data a a rate near 1 Hz and in the form of an array of real values. Any such data fits the MICAS-X structure as housekeeping channels.
The channels within MICAS-X are divided into two types, input channels read from the instruments, and output channels, which are channels whose values MICAS-X sets. Within MICAS-X, the output channels are referred to as Controllers. The superset of all input channels and Controllers constitute the entire set of "Channels" in MICAS-X.

MICAS-X uses Drivers to read and set Channels, with a separate Driver written for each piece of hardware. The Acquisition Loop is an internal structure in MICAS-X (shown in light blue near the center of the above figure) which accesses all the Drivers at the appropriate times to read all the Channel values. This structure actually can contain any number of loops, as determined by the configuration, allowing different Drivers to be queried at different rates. This is indicated in the figure by the three loops surrounding the seven Drivers shown in darker blue. Even when two Drivers operate at nominally the same cycle time, it can be advantageous to put them into different MICAS-X Acquisition Loops, since if they operate off of different clocks, they will eventually become out of sync. An example of this is when a National Instruments Daq device is used to acquire voltages at 1 Hz, and a GPS is also being recorded at 1 Hz. Since the NI Daq device uses either its own internal clock or the computer clock to determine its 1 Hz rate, and the GPS is synchronized to the GPS satellites, if both these instruments were queried within the same loop in LabVIEW, the loop would eventually hiccup, with one of the instruments failing to yield data or giving two sets of data in one loop cycle.

Drivers
A MICAS-X Driver (shown in darker blue near the bottom of the above figure) is a module written to a defined specification which typically communicates to a piece of hardware. Additionally, some Drivers create additional data Channels from the computer clock or from calculations based on existing channels, and hence don't correspond to actual hardware. Drivers have three mechanisms for interacting with the target hardware: input channels, output channels (Controllers), and Commands. Input channels are values read from the instrument or device. Controllers are values that MICAS-X sets on the instrument or device. Commands are a more general construct that allow MICAS-X to interact with hardware in ways that don't naturally map to either input channels or Controllers.
Data from the Drivers is acquired by the Acquisition Loop, which also handles writing .csv files of various channels. The Acquisition Loop also creates a master buffer of all Channel values, usually at 1 Hz. This reference array of data contains the most recent Driver data available, hence if a Driver is running in an Acquisition Loop that is faster than 1 Hz, not every value it produces will end up in this reference array. Similarly, if a Driver is operating in a loop running slower than 1 Hz, the same value will be repeated in the reference array more than once.
Numerous mechanisms within MICAS-X allow the Controllers for each Driver to be set to new values. These Controllers can appear on the Control tab of MICAS-X, allowing the operator to enter values directly. In addition, Sequences, Triggers, and other mechanisms within MICAS-X can use the "Set" command to update any Controller channel of any Driver.
Driver Commands can also be executed in a number of ways. Sequences and Triggers are the most common ways to execute Driver Commands.

Instruments
Another standard plug-in module in MICAS-X is the Instrument. A MICAS-X Instrument has a fairly simple interface and is intended as the location for custom code for a specific application or piece of hardware. Any hardware interface that does not fit into the model of a MICAS-X Driver can be implemented as an Instrument. Often, this module will be used for data acquisition or control that requires precise or complicated timing or triggering, which involves large amounts of data, or which involve data of a more complex type than that of the Housekeeping data.
In addition to Instruments for complex data acquisition, the MICAS-X Instrument definition also allows one to create additional MICAS-X modules that fall outside of the definition of a Driver. Such a module can be instantiated into a MICAS-X configuration when needed, so that it does not create unnecessary bloat in the main MICAS-X program. Examples of this type of Instrument module are the Broadcast and Command Instruments described below.
Instruments are shown to the left of the figure above as larger boxes, one orange and one green. Instruments can have an optional user interface (as denoted by the green instrument) or can run in the background with no user interface (as denoted by the orange instrument in the figure).

Displays
Displays are the user interface element of Instruments, Drivers, or other functionality within MICAS. A Display is normally designed to fit within one of the optional tabs on the Control Program, although Displays can be instantiated outside of the Control Program as separate windows, in which case they can be any size desired. Displays are shown in light green in the figure above.

Utilities
Utilities are programs that the user can call up as needed while MICAS-X is running.These are often programs for reviewing data files, log files, etc., but can also include things like the Configuration Editor. Only one Utility can be active inside MICAS-X at any time. MICAS-X Utilities are designed in such a way that the same source code can be compiled to run as an executable program outside of MICAS-X as well. Utilities are shown in dark green in the figure above, with the dotted line indicating that they can be run either inside or outside of MICAS-X.

Configuration
The most commonly used Utility is the MICAS-X Configuration Editor. MICAS-X is extremely flexible, with many characteristics and parameters being editable by the end user to ensure that the program performs with the functionality that the specific situation needs. All of this configuration is done through a consistent graphical interface. An example of one configuration window is shown below.

 
MICAS_Config_Editor.png

MICAS-X-RT

 

With version 2.1.0 of MICAS-X, Original Code Consulting also released MICAS-X-RT, a direct port of the major functionality of MICAS-X to National Instruments' Real-Time platforms. Much of the code base of the two programs is identical, allowing MICAS-X-RT to automatically inherit the reliability and robustness of MICAS-X and for future features and bug fixes will easily integrate to both programs. As shown in the diagram below, MICAS-X-RT has a very similar architecture to MICAS-X, except that the User Interface is not present, since Real-Time embedded systems are normally headless. Other than the User Interface, the same Drivers and Control logic can operate on MICAS-X-RT as in MICAS-X for Windows. Many of the same Drivers can even be used in RT this way, assuming the Real-Time platform being used has support for the hardware or bus that the Driver uses. In addition, MICAS-X-RT Drivers are available for the RIO Scan Engine, allowing easy access to cRIO and sbRIO Daq Channels with no programming. Since MICAS-X is also supported on the myRIO platform, a myRIO Daq Driver is also available to effortlessly handle the digital and analog IO on that device as well.

The same Configuration Editor is used for MICAS-X-RT as for MICAS-X as well, and in many cases, configurations used on Windows can be deployed to RT with minimal changes. When deployed as shown below, MICAS-X-RT can be installed on the Real-Time platform and configured to run at boot-up. The configuration file can be loaded on the Real-Time platform as well, so that the whole system can run unattended whenever the Real-Time device gets power, creating a very robust, autonomous data acquisition and control system.

 
 

The real power of MICAS-X-RT is fully brought forth, however, when it is combined with MICAS-X. This type of system is shown in the figure below. In this situation, MICAS-X-RT can load and control some or all of the Drivers and can execute control logic on the robust, embedded Real-Time platform, while MICAS-X on a Windows computer can act as the User Interface and even acquire and control other IO that may not be as critical. The MICAS-XRT Driver interfaces the two systems, allowing all the channels on the Real-Time system to be viewed and controlled directly on the Windows system. Besides running control algorithms and Sequences on Windows, if desired, the MICAS-X Windows program can also directly access all the Commands and Sequences in the MICAS-X-RT program as well. The network connection between the two programs is robust and will automatically reconnect if it is interrupted, even if one of the two programs is stopped and restarted.
This fully integrated system gives an affordable, quickly implemented solution that combines the best of both platform worlds: the full configurable, graphical user interface on Windows, with the robust, reliable real-time execution on an embedded platform.