CMC Driver Framework
The CMC Driver Framework is an advanced framework for developing and implementing hardware abstraction layers in LabVIEW. It consists of the Driver Framework Core and any number of hardware or protocol plugins that provide additional APIs for working with a wide range of devices and instruments.
The motivation behind the CMC Driver Framework is to program for a device type once (i.e. DC Power Supply), and then never need to touch that code again when changing hardware or communication protocol. This greatly reduces total cost of ownership and speeds up time to completion. By taking advantage of simulation, development can even occur before hardware becomes available.
To illustrate the value of the CMC Driver Framework, imagine this scenario:
You have a validated test system that uses hardware that is becoming obsolete. A drop-in replacement is not available. So you will need to modify the code to use the new function set. Since you already have to edit the code, you want to take the opportunity to change from using an old GPIB interface to a USB interface so that you can reduce the overall hardware cost and improve performance. Normally, these types of modifications require code changes (sometimes substantial ones), and then an entire re-validation.
If you had written your code with the Driver Framework, your update process would be as follows:
- Purchase or write a Driver Framework driver that supports the new hardware. Copy it to your folder of Driver Framework drivers.
- Create a new .instconfig configuration file to match the settings on the old hardware. This is done using the CMC Configuration Manager.
- Select your USB resource instead of your GPIB resource.
- Run your code using the new .instconfig.
- Complete your functional validation only
The CMC Driver Framework makes it extremely easy to switch between different communication interfaces and instruments. This reduces your timeline substantially and make future maintenance more flexible.
CMC Driver Framework Core
The CMC Driver Framework Core is a free product and provides the backbone for all of the device-type APIs and protocol plugins that can be used with the Driver Framework. It's primary components are:
-
CMC Configuration Manager
The CMC Configuration Manager provides a graphical user interface to generate device and communication protocol configurations. These configurations can then be used and re-used across different applications to set up, configure, and use the associated device or communication protocol.
-
Instrument Control API
The CMC Driver Framework abstracts both hardware and the communication protocol used to communicate with the specified hardware. As such, by programming with the Instrument Control API you can switch between Serial, VISA USB, VISA LAN, TCP, GPIB and other communication protocols without changing any code. You just specify a different configuration created with the CMC Configuration Manager. All CMC Device-Type APIs and associated drivers make use of the Instrument Control API.
-
Console
The console enables you to monitor all communication between your program and the device while your program is running. It provides timing and directional (to or from device) information, as well as the ability to insert commands into the data stream during program execution.
-
Event Logger (Coming Soon)
The Event Logger is a pre-built logging tool that informs you of any errors or other events that occur in the CMC Driver Framework code. You can use the Event Logger API to integrate it into the rest of your code, enabling you to automatically log errors or simply mark events of interest during program execution for debugging purposes. The Event Logger UI can be used to review all logged events, search for specific event text, and filter by event type.
Device-Type APIs
The CMC Driver Framework driver family is constantly growing, and we continue to add new product and device-type support. Every device type (i.e. DC Power Supplies, Digital Multimeters, etc.) that we support has a unique API that is used to program that device type. Therefore, regardless of the instrument you have selected, you program for a device-type and never for a specific instrument. This enables you to switch instruments at any time without changing code. It simply requires changing which configuration you have selected.
All instrument drivers that CMC creates make use of the Driver Framework's Device-Type APIs.