<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LabVIEW Archives | DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/tag/labview/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Thu, 03 Sep 2026 21:47:53 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://static.dmcinfo.com/wp-content/uploads/2025/04/site-icon-150x150.png</url>
	<title>LabVIEW Archives | DMC, Inc.</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Automating RF Measurements Using LabVIEW for Keysight CXA, ENA, and EPM Instruments</title>
		<link>https://static.dmcinfo.com/blog/42297/automating-rf-measurements-using-labview/</link>
		
		<dc:creator><![CDATA[Andrew Croissant]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[Keysight]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=42297</guid>

					<description><![CDATA[<p>Automating RF measurement systems can dramatically improve test efficiency, repeatability, and accuracy, especially in environments where multiple instruments must be configured and synchronized.&#160;DMC&#160;developed a LabVIEW-based application to automate measurements for three commonly used Keysight RF test instruments: an RF Spectrum Analyzer (RFSA), an RF Network Analyzer (RFNA), and an RF Power Meter (RFPM).&#160; The application [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/42297/automating-rf-measurements-using-labview/">Automating RF Measurements Using LabVIEW for Keysight CXA, ENA, and EPM Instruments</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Automating RF measurement systems can dramatically improve test efficiency, repeatability, and accuracy, especially in environments where multiple instruments must be configured and synchronized.&nbsp;DMC&nbsp;developed a LabVIEW-based application to automate measurements for three commonly used <a href="https://static.dmcinfo.com/about/partners/keysight-solutions-partner/" type="link" id="https://static.dmcinfo.com/about/partners/keysight-solutions-partner/">Keysight</a> RF test instruments: an RF Spectrum Analyzer (RFSA), an RF Network Analyzer (RFNA), and an RF Power Meter (RFPM).&nbsp;</p>



<p class="wp-block-paragraph">The application leverages the Keysight instrument driver library to handle communication and control, while providing a user-friendly graphical interface (GUI) for remote operation. We also integrated the system with NI TestStand, creating a reusable set of custom steps that simplify sequence development.</p>



<h2 id="h-system-overview" class="wp-block-heading">System Overview</h2>



<p class="wp-block-paragraph">The goal was to design a flexible, modular system that allows an engineer or technician to:</p>



<ul class="wp-block-list">
<li>Configure measurement parameters for each instrument, using either the LabVIEW GUI or the onboard GUI of each device.</li>



<li>Execute measurements automatically or under manual supervision.</li>



<li>Collect and log results for analysis.</li>



<li>Save and recall instrument states for repeatability.</li>



<li>Integrate the entire workflow into automated TestStand sequences.</li>
</ul>



<p class="wp-block-paragraph">The core of the system is a LabVIEW application that acts as both the user interface and the instrument control framework. Each instrument is managed by its own dedicated driver class, responsible for communication, configuration, and data acquisition. All devices are connected to a controller PC that runs the LabVIEW application via LAN interface.</p>



<h2 id="h-using-keysight-instrument-drivers" class="wp-block-heading">Using Keysight Instrument Drivers</h2>



<p class="wp-block-paragraph">Keysight provides certified LabVIEW drivers for many of its instruments. The libraries used in this application are as follows:</p>



<ul class="wp-block-list">
<li><strong>RFSA:</strong> Keysight XSAn library</li>



<li><strong>RFNA:</strong> Keysight NA library</li>



<li><strong>RFPM:</strong> Agilent E441X Series library</li>
</ul>



<p class="wp-block-paragraph">These drivers implement a consistent API structure and follow the VISA standard, making them ideal for this type of automation project.</p>



<p class="wp-block-paragraph">Our application created an Initialize, Calibrate, Configure, Acquire Data, Save/Recall Device State, and Close step for each device, using a parallel structure to the Keysight API for ease of integration. While these steps mirror the basic functionality of the VIs in the libraries, they allow the application to be more customizable by controlling only the settings we need to help streamline TestStand sequence development. The functions of each step are below:</p>



<ul class="wp-block-list">
<li><strong>Initialize:</strong> This step creates an instrument handle that will be used by all other Keysight drivers in the device’s lifecycle</li>



<li><strong>Calibrate:</strong> This step allows the user to perform calibration and zeroing steps on the device (only for RFPM)</li>



<li><strong>Configure: </strong>This step allows the user to select specific settings for the measurements and sends them to the device</li>



<li><strong>Acquire Data:</strong> This step will perform a measurement using the settings specified in the previous step and export the data to the application</li>



<li><strong>Save/Recall Device State:</strong> This step allows the user to save or recall all device settings as a configuration file locally on the device’s drive (Only for RFSA/RFNA)</li>



<li><strong>Close:</strong> This step closes the VISA resource for the device to prevent any memory issues when the app closes</li>
</ul>



<h2 id="h-application-design-and-architecture" class="wp-block-heading">Application Design and Architecture</h2>



<p class="wp-block-paragraph">The LabVIEW application uses an object-oriented approach, with each device having a widget class, an abstract class, a Keysight instrument class, and a simulated class. The widget class uses APIs from the abstract class to call the basic steps listed above. Each widget also contains the GUI for device control from the LabVIEW front-end.</p>



<p class="wp-block-paragraph">The Keysight instrument class contains device-specific drivers, and the simulated class generates random data when hardware is not available. If we replaced our devices with a non-Keysight model, we could easily add another class for that device’s drivers.</p>



<div class="wp-block-group alignfull wp-elements-3 has-global-padding is-layout-constrained wp-container-core-group-is-layout-869938a1 wp-block-group-is-layout-constrained" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--40);padding-top:0;padding-right:0;padding-bottom:0;padding-left:0">
<div class="wp-block-group alignwide has-white-color has-custom-light-blue-background-color has-text-color has-background has-link-color wp-elements-4 has-global-padding is-layout-constrained wp-container-core-group-is-layout-b03e55dc wp-block-group-is-layout-constrained" style="border-radius:20px;margin-top:var(--wp--preset--spacing--60);margin-bottom:var(--wp--preset--spacing--60);padding-top:var(--wp--preset--spacing--60);padding-right:0;padding-bottom:var(--wp--preset--spacing--60);padding-left:0">
<p class="has-text-align-center wp-block-paragraph" id="h-for-more-information-on-dmc-s-labview-oo-philosophy-and-hardware-abstraction-layers-like-those-used-in-this-application-check-out-these-additional-blogs"><strong>For more information on DMC’s LabVIEW OO philosophy and hardware abstraction layers like those used in this application, check out these additional blogs:</strong></p>



<p class="has-text-align-center has-custom-primary-blue-color has-text-color has-link-color wp-elements-5 wp-block-paragraph"><a href="https://static.dmcinfo.com/blog/20433/a-simple-hardware-abstraction-using-labview-oop/" type="post" id="20433">A Simple Hardware Abstraction using LabVIEW OOP</a></p>



<p class="has-text-align-center has-custom-primary-blue-color has-text-color has-link-color wp-elements-6 wp-block-paragraph"><a href="https://static.dmcinfo.com/blog/36802/labview-oop-does-it-pay-off/" type="post" id="36802">LabVIEW OOP: Does it Pay Off?</a></p>
</div>
</div>



<h2 id="h-gui-module" class="wp-block-heading">GUI Module</h2>



<p class="wp-block-paragraph">The GUI for RFSA has 2 screens, with users able to control basic display settings or recall a state from the device’s settings on the first screen. More settings options are available on the second screen, which is accessible by selecting the “Configure” button. After the user selects their desired settings, they can conduct a measurement using the “Start” button, then set markers using the frequency control or the slider below. The positions of the markers automatically update, and their frequency and amplitude values are displayed below.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-0e47273b wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="594" height="618" src="https://static.dmcinfo.com/wp-content/uploads/2026/03/swept-SA-measurement.png" alt="main tab swept SA measurement" class="wp-image-42366" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/03/swept-SA-measurement.png 594w, https://static.dmcinfo.com/wp-content/uploads/2026/03/swept-SA-measurement-288x300.png 288w" sizes="(max-width: 594px) 100vw, 594px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="556" height="608" src="https://static.dmcinfo.com/wp-content/uploads/2026/03/RF-measurement-configuration.png" alt="configure tab RF measurement" class="wp-image-42367" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/03/RF-measurement-configuration.png 556w, https://static.dmcinfo.com/wp-content/uploads/2026/03/RF-measurement-configuration-274x300.png 274w" sizes="(max-width: 556px) 100vw, 556px" /></figure>
</div>
</div>



<p class="wp-block-paragraph">The RFNA has a similar GUI but requires fewer settings. It has one screen, allowing the user to control the frequency range and select the test type between Insertion Loss (S12) or VSWR (S11). Like the RFSA, users can recall a device state, start a measurement, and control the marker from this screen.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="596" height="613" src="https://static.dmcinfo.com/wp-content/uploads/2026/03/vswr-measurement.png" alt="VSWR measurement" class="wp-image-42368" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/03/vswr-measurement.png 596w, https://static.dmcinfo.com/wp-content/uploads/2026/03/vswr-measurement-292x300.png 292w" sizes="(max-width: 596px) 100vw, 596px" /></figure>



<p class="wp-block-paragraph">The RFPM has a different GUI because it only conducts single-channel measurements, as opposed to frequency sweeps. This GUI allows the user to perform a calibration sequence by selecting the type (Calibrate, Zero, or Calibrate &amp; Zero). The user can then select the frequency at which to conduct the measurement and set the resolution for the measurements. When the user selects the “Measure” button, the device conducts a power measurement and displays it both on the device’s onboard GUI and the LabVIEW GUI.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="604" height="291" src="https://static.dmcinfo.com/wp-content/uploads/2026/03/RF-measurement-calibration.png" alt="RF measurement calibration" class="wp-image-42369" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/03/RF-measurement-calibration.png 604w, https://static.dmcinfo.com/wp-content/uploads/2026/03/RF-measurement-calibration-300x145.png 300w" sizes="(max-width: 604px) 100vw, 604px" /></figure>



<h2 id="h-data-acquisition-and-storage" class="wp-block-heading">Data Acquisition and Storage</h2>



<p class="wp-block-paragraph">Measurements for each device can be conducted simultaneously, and the data from all three instruments can be automatically logged to local or network drives. For this application, the data is stored in a TDMS file format, but could easily be saved as a CSV or other format as well.</p>



<p class="wp-block-paragraph">DMC implemented a data tagging system that associates each measurement with metadata such as date, time, operator, device under test (DUT) ID, and test sequence name. This metadata improves traceability and simplifies post-test analysis.</p>



<h2 id="h-integration-with-ni-teststand" class="wp-block-heading">Integration with NI TestStand</h2>



<p class="wp-block-paragraph">DM added an additional layer of efficiency to the RF measurements by integrating them into NI TestStand sequences used across multiple test stations. To achieve this, we created custom TestStand steps that directly call the LabVIEW VIs controlling each instrument. Each step has a wrapper VI that is used to create a TestStand custom step. This allows the user to create sequences in TestStand the same way they would in LabVIEW, but without needing to understand the programming backend. When used in a sequence, the data plots appear in the report generated by TestStand, and the data can be used in pass/fail grading steps during the sequence itself.</p>



<p class="wp-block-paragraph">TestStand is the foundation of one of DMC’s core battery test platforms for the reasons above and can enhance the accessibility of automation when used in conjunction with well-encapsulated LabVIEW code.</p>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">This project demonstrates how combining LabVIEW, Keysight instrument drivers, and NI TestStand creates a powerful and flexible RF measurement automation platform. By automating configuration, acquisition, and reporting for the three devices, we achieved significant gains in efficiency, repeatability, and scalability. The system meets current test requirements and lays the foundation for future automation initiatives. Because of the modular LabVIEW code, we can easily scale the system to add functions, GUI elements, and devices with minimal rework.</p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step">Turn Manual Testing Into Automated Results. </h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Reduce manual effort and improve repeatability with <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/" id="428">Test &amp; Measurement solutions</a> from DMC. Learn more about our capabilities with <a href="https://static.dmcinfo.com/our-work/category/service/test-measurement-automation/labview/" data-type="work_category" data-id="685">LabVIEW</a>, <a href="https://static.dmcinfo.com/our-work/test-data-centralization-standardization-and-storage-using-python-ni-systemlink-server/" data-type="our_work" data-id="15116">NI TestStand</a>, and <a href="https://static.dmcinfo.com/about/partners/keysight-solutions-partner/" data-type="page" data-id="42353">Keysight</a> RF Instruments today.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/42297/automating-rf-measurements-using-labview/">Automating RF Measurements Using LabVIEW for Keysight CXA, ENA, and EPM Instruments</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>NASA Battery Simulator System</title>
		<link>https://static.dmcinfo.com/blog/21230/nasa-battery-simulator-system/</link>
		
		<dc:creator><![CDATA[Jesse Batsche]]></dc:creator>
		<pubDate>Fri, 08 Aug 2025 18:09:00 +0000</pubDate>
				<category><![CDATA[Battery Pack Test Systems]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[Battery]]></category>
		<category><![CDATA[NASA]]></category>
		<category><![CDATA[NI]]></category>
		<category><![CDATA[TestStand]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=21230</guid>

					<description><![CDATA[<p>DMC leveraged our established Battery Management System (BMS) Testing Platform to deliver an automated Battery Simulator System to a NASA research group. NASA needed this system to facilitate development of highly specialized battery devices. These battery systems were designed to provide mobile power for advanced electromechanical systems such as&#160;Robonaut 2, a dexterous humanoid robot created [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21230/nasa-battery-simulator-system/">NASA Battery Simulator System</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">DMC leveraged our established <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/battery-pack-and-bms-test-systems/">Battery Management System (BMS) Testing Platform</a> to deliver an automated Battery Simulator System to a NASA research group. NASA needed this system to facilitate development of highly specialized battery devices. These battery systems were designed to provide mobile power for advanced electromechanical systems such as&nbsp;<a href="http://robonaut.jsc.nasa.gov/" target="_blank">Robonaut 2</a>, a dexterous humanoid robot created to perform a wide range of tasks to assist astronauts on the International Space Station.</p>



<p class="wp-block-paragraph">The Battery Simulator System delivered by DMC provides the ability to test BMS devices using a Hardware In the Loop (HIL) testing approach. This HIL testing is performed before those devices are fully incorporated into the large battery packs they are designed to monitor and manage. The system provides software-controlled simulated signals for all input sensors connected to the BMS and provides the ability to measure relevant outputs and responses from the BMS. This makes it possible to perform fully automated testing and validation of BMS functionality across any realistic range of input conditions the device may encounter in field operation.</p>



<h2 id="h-table-of-contents" class="wp-block-heading">Table of Contents</h2>



<ul class="wp-block-list">
<li><a href="#SYSTEM INTRODUCTION">System Introduction</a></li>



<li><a href="#SYSTEM DETAILS">System Details</a>
 


 
<ul class="wp-block-list">
<li><a href="#DEFINITIONS">Definitions</a></li>
</ul>
</li>



<li><a href="#OVERVIEW OF HARDWARE SYSTEM">Overview of Hardware System</a></li>



<li><a href="#SYSTEM ENCLOSURE">System Enclosure</a></li>



<li><a href="#BATTERY STACK SIMULATION">Battery Stack Simulation</a></li>



<li><a href="#CELL VOLTAGE / CURRENT MEASUREMENT MODULE (OPTIONAL)">Cell Voltage / Current Measurement Module (Optional)</a></li>



<li><a href="#BATTERY STACK SIMULATOR CONNECTIONS">Battery Stack Simulator Connections</a></li>



<li><a href="#TEMPERATURE SENSOR SIMULATION MODULE">Temperature Sensor Simulation Module</a></li>



<li><a href="#PX CHASSIS TO CONTROLLER INTERFACE">PXI Chassis to Controller Interface</a></li>



<li><a href="#SOFTWARE DRIVER LIBRARIES FOR SYSTEM CONTROL">Software Driver Libraries for System Control</a></li>



<li><a href="#SAFETY / INTERLOCK FUNCTIONS">Safety / Interlock Functions</a></li>



<li><a href="#NATIONAL INSTRUMENTS / LABVIEW EXPERIENCE">National Instruments / LabVIEW Experience</a></li>



<li><a href="#TEST AND MEASUREMENT EXPERIENCE">Test and Measurement Experience</a></li>



<li><a href="#RELATED PAST AND CURRENT PROJECTS">Related Past and Current Projects</a></li>
</ul>


<hr />


<h2 id="h-system-introduction" class="wp-block-heading"><a id="SYSTEM INTRODUCTION" name="SYSTEM INTRODUCTION"></a>System Introduction</h2>



<p class="wp-block-paragraph">The Battery Simulator System leverages the DMC Battery Testing Platform hardware and software. DMC’s modular Battery Testing Platform incorporates open software and hardware technologies along with flexible and reliable subsystem components and instruments which are completely customized to the end user’s specifications.</p>



<p class="wp-block-paragraph">The Battery Testing Platform is built around high-quality off-the-shelf hardware assembled from a variety of vendors, including Pickering Interfaces, National Instruments (NI), Lambda, and Agilent, among others. Selection of individual instruments in the DMC system is based completely on required performance, not allegiance to a single hardware vendor.</p>



<p class="wp-block-paragraph">The system can simulate a stack of 108 battery cells in series and 50x 4-bit temperature sensors. The system was delivered with source code libraries for low-level driver functions that provide full control over the available functionalities of the Battery Simulator System. This software code is based on pre-existing software modules, which were assembled and customized to accommodate the customer’s specific test system and test application. DMC did not develop a higher-level test execution control application as the customer wished to develop their primary test control application themselves.</p>


<hr />


<h2 id="h-system-details" class="wp-block-heading"><a id="SYSTEM DETAILS" name="SYSTEM DETAILS"></a>System Details</h2>



<h3 id="h-definitions" class="wp-block-heading"><a id="DEFINITIONS" name="DEFINITIONS"></a>Definitions</h3>



<ul class="wp-block-list">
<li><strong>BMS:</strong> <em>Battery Management System</em> &#8211; An electronic system for managing a rechargeable battery by continuously monitoring the battery state, calculating and reporting data on the battery, performing safety functions in fault conditions, performing cell balancing functions, etc.</li>



<li><strong>NI:</strong> <em>National Instruments, Inc. </em></li>



<li><strong>PXI:</strong> <em>Programmable eXtensions for Instrumentation</em> &#8211; Hardware platform for test and measurement IO</li>



<li><strong>DMM:</strong> <em>Digital Multi-Meter</em> &#8211; An electronic measurement device, commonly capable of acquiring high-resolution voltage, current, resistance, or capacitance measurements, as either single-point measurements or waveform captures</li>



<li><strong>DUT: </strong><em>Device Under Test</em> &#8211; Client’s BMS device to be tested</li>
</ul>


<hr />


<h2 id="h-overview-nbsp-of-nbsp-hardware-system" class="wp-block-heading"><a id="OVERVIEW OF HARDWARE SYSTEM" name="OVERVIEW OF HARDWARE SYSTEM"></a>Overview&nbsp;of&nbsp;Hardware System</h2>



<p class="wp-block-paragraph">A high-level functional diagram of the DMC Battery Simulator System is shown below.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Functional-Diagram.png" alt="DMC battery simulation test system diagram"/></figure>


<hr />


<h2 id="h-system-enclosure" class="wp-block-heading"><a id="SYSTEM ENCLOSURE" name="SYSTEM ENCLOSURE"></a>System Enclosure</h2>



<p class="wp-block-paragraph">The Battery Simulator System is built upon the Media Director Lectern V2, a portable (wheeled) rack-mount enclosure desk, as shown below.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/V2-NASA-Cell-Simulator-Relay-Multiplexer.png" alt="Media Director Lectern V2 with battery simulator system"/></figure>



<p class="wp-block-paragraph">This mobile desk provides 32U of total rack-mount space in two separate columns for mounting primary system components, including 6U of rack-mount space in the upper portion of the lectern just beneath the desk surface.</p>


<hr />


<h2 id="h-controller-and-accessories" class="wp-block-heading"><a id="CONTROLLER AND ACCESSORIES" name="CONTROLLER AND ACCESSORIES"></a>Controller and Accessories</h2>



<p class="wp-block-paragraph">The primary controller for the Battery Simulator System is a rack mount PC. This PC serves as the primary controller for the test system and runs a LabVIEW test application developed by customer engineers.</p>



<p class="wp-block-paragraph">A listing of the performance specifications of this PC is provided below.</p>



<ul class="wp-block-list">
<li>Processor(s): Intel® i7 &#8211; 2600 (LGA1155) Quad Core Processor 3.4GHz/8MB Cache</li>



<li>&nbsp;2U Riser Card PCIe &#8211; x16, x4, x1</li>



<li>Memory &#8211; DDR3: 16 GB DDR3-1333/PC3-10600</li>



<li>Hard Drive: 2TB SATA III 7200RPM</li>



<li>Optical Drive: Plextor® PX-890SA 24x DVD±R/W</li>



<li>Video Card: PCI-EXPRESS RADEON HD6450 1GB/PCIe 2.0 (Dual Monitor)</li>



<li>Operating System: Microsoft® Windows® 7 Professional 64-bit OE</li>
</ul>



<p class="wp-block-paragraph">The system includes a license for the LabVIEW NI Developer Suite package (the most comprehensive and full-featured package offered by National Instruments) to ensure the customer has access to the complete set of LabVIEW functions, toolkits, and capabilities for their development activities. This is the package that DMC uses internally for development, so utilizing this package also ensures that the controller PC will have full access and compatibility with all supporting software provided by DMC.</p>



<p class="wp-block-paragraph">The system includes dual DellTM UltraSharpTM U2410 monitors that are mounted above the desk surface of the enclosure via a dual flat panel mounting arm.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Dual-Monitors-with-screen.png" alt="dual DellTM UltraSharpTM U2410 monitors"/></figure>



<p class="wp-block-paragraph">The system includes the Logitech Wireless Keyboard/Mouse MK710 peripheral devices for user operation of the PC.</p>


<hr />


<h2 id="h-battery-stack-simulation" class="wp-block-heading"><a id="BATTERY STACK SIMULATION" name="BATTERY STACK SIMULATION"></a>Battery Stack Simulation</h2>



<p class="wp-block-paragraph">The Battery Stack Simulation sub-system consists of Pickering PXI 41-752, 6-cell battery simulator cards placed inside a PXI chassis, providing independent cell voltage simulated outputs. The Battery Simulator System includes 18 PXI cell simulator cards, enabling simulation of a battery stack of 108 cells.</p>



<p class="wp-block-paragraph">The cell simulator current outputs and voltage sense lines from each card connect to a custom-built circuit board which configures the independent simulated cells into a full simulated battery stack. It also handles battery stack management and safety functions. Past this custom circuit board, the cell supply/sense lines route to a single high-density DUT connection on the front panel of the test stand.</p>



<p class="wp-block-paragraph">The Pickering cell simulator cards offer no direct means of reading back their output current or voltage. As a result, the cards themselves provide no direct capability for voltage supply line leakage current measurement, or for actual cell voltage measurements.</p>



<p class="wp-block-paragraph">Since these measurements are useful for the characterization and calibration of a BMS device, DMC’s Battery Simulator System provides the capability to acquire independent cell voltage and current output measurements using a high-resolution Cell Current/Voltage Measurement Module. This module consists of an active high-density relay switch matrix that enables measurement of the current flow on any cell line or of the voltage differential between any two cell lines in the battery stack. This high-resolution cell current/voltage measurement module is described in more detail later in this document.</p>



<p class="wp-block-paragraph"><strong>DMC considers the Pickering 41-752 battery simulator card to be an excellent&nbsp;tool for simulating a battery input</strong> to a BMS for the following reasons:</p>



<ol class="wp-block-list">
<li>The <strong>750V isolation barrier allows the outputs to be stacked in series </strong>without inducing unintentional ground faults or loops and without voiding the manufacturer’s warranty.</li>



<li>The cards are <strong>capable of both sourcing and sinking current, just like an actual chemical cell.</strong> Accurate testing of BMS cell balancing operations requires this current-sinking function.</li>
</ol>



<p class="wp-block-paragraph">The 750V isolation barrier of the Pickering 41-752 card allows it to be used to emulate an entire low power battery stack representative of those used for vehicle propulsion.</p>



<p class="wp-block-paragraph">The Pickering PXI 41-752 is a PXI based, 6-channel battery simulator module. Each channel of the module can supply up to 7V and 300mA to the load. Each channel is fully isolated from ground and from each other, allowing the channels to be connected in series to simulate batteries arranged in a stacked architecture. The 750V isolation barrier permits the 41-752 to be used to emulate a low power battery stack representative of those used for vehicle propulsion.</p>



<p class="wp-block-paragraph">Each battery simulator provides independent power and sense connections, allowing the battery simulator to sense a remote load and correct for wiring voltage losses. The battery simulator is designed to respond quickly to dynamic loads, minimizing the need for local decoupling capacitors at the load.</p>



<p class="wp-block-paragraph">A signal line on the user connector allows the user to shut down all battery simulator channels with a single connection. Multiple module control lines are linked together to provide an easy way of inhibiting voltage generation (E-Stop) when using many series-connected modules that provide high output voltages.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/cool2_1.png" alt="battery pack simulation specifications"/></figure>


<hr />


<h2 id="h-cell-voltage-current-measurement-module-optional" class="wp-block-heading"><a id="CELL VOLTAGE / CURRENT MEASUREMENT MODULE (OPTIONAL)" name="CELL VOLTAGE / CURRENT MEASUREMENT MODULE (OPTIONAL)"></a>Cell Voltage/Current Measurement Module (Optional)</h2>



<p class="wp-block-paragraph">The Cell Voltage/Current Measurement Module provides independent (DMM based) high-resolution measurement of the voltage between any two cells in the simulated battery stack or of the current on any given cell voltage supply line. These measurements are useful for the characterization (cell balancing functions, power consumption, leakage currents, etc.) or calibration of a BMS device. This module also enables automated calibration of the Battery Stack Simulator device itself.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Cell-Current-_Voltage-Measurement-Multiplexing-Module.jpg" alt="Cell Voltage/Current Measurement Module"/></figure>



<p class="wp-block-paragraph">To deliver this extensive range of measurements in a cost-effective manner, the module utilizes a single high-accuracy digital multimeter in conjunction with an active high-density switching matrix to connect this meter to any desired set of measurement points. The Battery Simulation system contains a NI PXI-4071 Digital Multi-Meter (DMM) installed in one of the PXI chassis. This 7 ½ digit DMM delivers the following measurement capabilities:</p>



<ul class="wp-block-list">
<li>Voltage measurements from ±10 nV to 1000 VDC</li>



<li>8 DC current ranges with sensitivity down to 1 pA</li>



<li>±500 VDC/Vrms common-mode isolation</li>



<li>Resistance measurements from 10 µΩ to 5 GΩ</li>



<li>1.8 MS/s isolated, 1000 V waveform acquisition</li>
</ul>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Cell-Current-_Voltage-Measurement-Multiplexing-Module-2.jpg" alt="Cell Voltage/Current Measurement Module"/></figure>



<p class="wp-block-paragraph">The Cell Voltage/Current Measurement Module uses a single DMM, and thus it is only possible to acquire one particular measurement at a given time (i.e. the specific probe point that the current relay multiplexer state is connecting the DMM to measure). It is very straightforward, however, to set up functions in the test control software to scan through all cell voltage or current measurement points by simply reconfiguring the relay state between each measurement acquired by the DMM.</p>



<p class="wp-block-paragraph">The switching matrix in this module also makes it possible to simulate a broken connection between a simulated cell and the BMS or to simulate a shorted connection between two adjacent cells; these can be useful fault insertion mechanisms in BMS testing regiments. Similarly, the Voltage/Current Measurement Module also provides the ability to perform complete and total disconnection of the cell simulator from the BMS device under test.</p>



<p class="wp-block-paragraph">The Cell Voltage/Current Measurement Module utilizes 5-amp relays that can handle cold switching up to 750 V and are thus more than capable of handling the expected total stack voltage generated by many simulated cells in series.&nbsp;</p>



<p class="wp-block-paragraph">The Cell Voltage/Current Measurement Module fundamentally consists of multiple removable/swappable relay multiplexing cards that are seated in a 4U (7”) high Vector card cabinet. It is designed to be located either directly above or directly below a PXI chassis containing cell simulator modules (as shown in the image below). Each relay card connects directly to a cell simulator card and handles the measurement multiplexing for those six simulated cells. This design makes it easy to scale the multiplexer module when adding or removing cell simulator cards to increase/decrease the size of the simulated cell stack.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Cell-Simulator-Module-Connected.jpg" alt="Cell Voltage/Current Measurement Module"/></figure>


<hr />


<h2 id="h-battery-stack-simulator-connections" class="wp-block-heading"><a id="BATTERY STACK SIMULATOR CONNECTIONS" name="BATTERY STACK SIMULATOR CONNECTIONS"></a>Battery Stack Simulator Connections</h2>



<p class="wp-block-paragraph">Each simulated cell has one supply and one sense line that needs to be routed independently to the Device Under Test (to allow the cell simulator modules to accurately compensate for voltage drop in harness/wiring). Therefore, the complete set of simulated cell connections consists of 108 cell voltage supply lines and 108 cell voltage sense lines. The Battery Simulator System provides two parallel connections to the simulated cells.</p>



<p class="wp-block-paragraph">Battery Stack Connection 1 is used to interface with the Device Under Test through a pair of connectors that are panel mounted in the system enclosure panel. There are separate connectors (with identical pin-out mappings for consistency) for the simulated cell voltage stack sense and supply lines, as shown below.</p>



<p class="wp-block-paragraph">Battery Stack Connection 1 utilizes 2x 160 position connectors as depicted below:</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Battery-Simulator-System.png" alt="Battery Stack Simulator Connection with 2x 160 position connectors"/></figure>



<p class="wp-block-paragraph">Battery Stack Connection 2 provides an auxiliary parallel connection to all simulated cell supply and sense lines for external monitoring, measurement, and diagnostic purposes. This parallel connection has an available standard screw terminal connection for each cell voltage supply and sense line, as depicted below. These breakout terminal connections are mounted facing out the front of the primary system enclosure to make them externally accessible.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Aux-Parallel.png" alt="Battery Stack Simulator Connection with standard screw terminal connection"/></figure>


<hr />


<h2 id="h-temperature-sensor-simulation-module" class="wp-block-heading"><a id="TEMPERATURE SENSOR SIMULATION MODULE" name="TEMPERATURE SENSOR SIMULATION MODULE"></a>Temperature Sensor Simulation Module</h2>



<p class="wp-block-paragraph">The Temperature Sensor Simulation module supports simulation of 50x 4-bit resistive temperature. To enable future flexibility, the module provides the ability to alternatively simulate 25x 8-bit with some minor reconfiguration of built-in jumper points. The figures below illustrate the simulation of either one 8-bit or two 4-bit resistor chains and how the module supports switching from 4-bit to 8-bit simulation through the installation of jumpers. An N-bit simulated temperature sensor essentially consists of N fixed resistors that can be inserted or removed from the simulated temperature sensor circuit using a relay switching matrix. The resistor values that are placed in line with the simulated temperature sensor circuit add with one another (since they are in a series configuration) to produce the desired resistance to simulate a particular temperature reading.</p>



<p class="wp-block-paragraph">For a 4-bit simulated sensor, there are a total of 2^4 = 16 discrete resistance values (including a short circuit) that can be applied by each simulated sensor. For an 8-bit simulated sensor, there are a total of 2^8 = 256 resistance values that can be generated. The actual resistor values used in the module (which thus affect the total range and the set of overall resistance values that can be generated) are fully configurable and are determined by the requirements of the test application.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Temp-Sensor.png" alt="simulation of one 8-bit resistor chain"/></figure>



<p class="wp-block-paragraph">&nbsp;</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Resistor-Chains.png" alt="simulation of two 4-bit resistor chains"/></figure>



<p class="wp-block-paragraph">The temperature sensor simulation system utilizes a modular motherboard and daughter card architecture. The actual physical resistors that comprise the simulated temperature sensors are all installed on swappable daughter cards that plug into the module’s motherboard. The motherboard handles the “infrastructure” of aggregating independent resistors into simulated temperature sensors, integrating relays to control the simulated temperature circuits, etc. By swapping in and out sets of daughter cards containing different resistor values, different types of temperature sensors or different temperature ranges can be simulated to accommodate varying testing requirements or DUT models.</p>



<p class="wp-block-paragraph">The relays that are responsible for configuring the desired output state of the simulated temperature sensors are contained on and controlled by two high-density PXI relay cards. Control of the Temperature Sensor Simulation module is accomplished through a set of LabVIEW driver VIs provided along with the system.</p>



<p class="wp-block-paragraph">The simulated temperature sensor module drivers include algorithms to automatically calculate the optimal combination of resistors that should be inserted into a given simulated temperature sensor circuit to achieve the closest possible resistance to the commanded value. Thus, the interface for controlling the temperature sensor module is simple and abstracts away the lower-level hardware operations. It is simply necessary to specify the desired resistance (corresponding to the temperature reading you want to simulate) to apply to a particular temperature sensor number.</p>



<p class="wp-block-paragraph">Each simulated thermistor requires two connection lines, and thus for a total of 50 simulated thermistors the system has 100 total connections from the Temperature Sensor Simulation Module to the DUT. The Temperature Sensor Simulation Module has a 104-position connector mounted in the front panel of its enclosure, as depicted in the image below.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Enclosure.jpg" alt="Temperature Sensor Simulation Module"/></figure>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Swappable.png" alt="Temperature Sensor Simulation Module connector"/></figure>



<p class="wp-block-paragraph">&nbsp;</p>


<hr />


<h2 id="h-px-chassis-to-controller-interface" class="wp-block-heading"><a id="PX CHASSIS TO CONTROLLER INTERFACE" name="PX CHASSIS TO CONTROLLER INTERFACE"></a>PX Chassis to Controller Interface</h2>



<p class="wp-block-paragraph">The Battery Simulator System includes two full 18-slot&nbsp;NI PXI-1045 chassis to house Cell Simulator PXI cards as well as supporting instrumentation and device control cards.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/two-18-slot-chasses.png" alt=" two full 18-slot NI PXI-1045 chassis"/></figure>



<p class="wp-block-paragraph">Both of these chassis interface to the controller PXI using an MXI Express interface. A NI PXI-PCIe8362 card is installed in an available PCIe port of the controller PC to provide two MXI interface ports. Each PXI chassis has a NI PXI-8360 MXI Interface card installed in the first slot of the chassis. The MXI ports on the controller PCI card each connect via an included three-meter, high-speed MXI cable to one of the MXI interface cards in the respective PXI chassis to effectively link both chassis to the single PC controller.</p>



<p class="wp-block-paragraph">This MXI Express interface provides a software-transparent link between the controller PC and the PXI chassis that house system instrumentation and card modules. This linkage allows the Battery Simulator hardware to effectively be available as native or directly connected instrumentation on the controller computer.</p>


<hr />


<h2 id="h-software-driver-libraries-for-system-control" class="wp-block-heading"><a id="SOFTWARE DRIVER LIBRARIES FOR SYSTEM CONTROL" name="SOFTWARE DRIVER LIBRARIES FOR SYSTEM CONTROL"></a>Software Driver Libraries for System Control</h2>



<p class="wp-block-paragraph">The Battery Simulator System includes LabVIEW driver libraries (with full unlocked source code) that provide full control over the available functionalities of the Battery Simulator System. DMC did not develop a higher-level test execution control application for this particular system, as the customer wished to develop a primary test control application internally.</p>



<p class="wp-block-paragraph">DMC has provided the following control drivers (with accompanying documentation) for use on the controller PC:</p>



<ul class="wp-block-list">
<li>DMC custom LabVIEW drivers for full simulated battery stack control and management</li>



<li>DMC custom LabVIEW drivers for control of Cell Voltage/Current Measurement Module</li>



<li>DMC custom LabVIEW drivers for control/management of simulated temperature sensors</li>



<li>DMC custom LabVIEW Digital Multi-Meter Drivers for higher-level DMM functions (waveform capture and analysis, etc.)</li>



<li>VISA (Virtual Instrument Software Architecture) driver set for direct control of individual Cell Simulator modules and Pickering relay cards</li>



<li>Direct IO driver set for direct control of individual Cell Simulator modules and Pickering relay cards</li>
</ul>


<hr />


<h2 id="h-safety-interlock-functions" class="wp-block-heading"><a id="SAFETY / INTERLOCK FUNCTIONS" name="SAFETY / INTERLOCK FUNCTIONS"></a>Safety/Interlock Functions</h2>



<p class="wp-block-paragraph">Since the Battery Simulator System can generate high voltages (as required for battery stack simulation), it contains both hardware and software-based safety features to disable all voltage output during a safety event.</p>



<ul class="wp-block-list">
<li>Large Red ESTOP button in the middle of the top desk surface of Battery Simulator System enclosure</li>



<li>External/Remote Interlock connector on the right-side panel of the enclosure</li>



<li>Software-based disable command to open PC-controlled relay that is in series with safety interlock loop</li>
</ul>



<p class="wp-block-paragraph">Activating any of these safety features will immediately turn off all voltage outputs from the Battery Stack Simulator.</p>


<hr />


<h2 id="h-company-overview-and-qualifications" class="wp-block-heading">Company Overview And Qualifications</h2>



<p class="wp-block-paragraph">DMC is a well-known and established controls engineering and consulting firm focused on the industrial automation market. We develop and implement solutions for a wide range of <a href="https://static.dmcinfo.com/industries/">industries</a> using a variety of technologies. DMC has successfully delivered solutions for hundreds of companies including 3M, Abbott Laboratories, Argonne National Labs, Bosch, BRP, Caterpillar, Chrysler, Fermilab, Ford, John Deere, UL, Wrigley, and Yaskawa. Every solution we develop is based on a solid understanding of engineering principles with the primary objective of helping our client increase profitability and productivity using world-class solutions.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/CSIA-Certified_1_1.png" alt="CSIA certified logo"/></figure>



<p class="wp-block-paragraph">DMC is a certified member of the Control Systems Integrators Association (CSIA). DMC passed a rigorous third-party audit of 200 criteria that span all aspects of business performance in the areas of:</p>



<ul class="wp-block-list">
<li>General Management</li>



<li>Human Resources Management</li>



<li>Marketing and Business Development</li>



<li>Financial Management</li>



<li>Project Management</li>



<li>System Development Lifecycle</li>



<li>Quality Assurance Management</li>
</ul>


<hr />


<h2 id="h-national-instruments-labview-experience" class="wp-block-heading"><a id="NATIONAL INSTRUMENTS / LABVIEW EXPERIENCE" name="NATIONAL INSTRUMENTS / LABVIEW EXPERIENCE"></a>National Instruments / LabVIEW Experience</h2>



<p class="wp-block-paragraph">DMC has been a <a href="https://static.dmcinfo.com/about/partners/ni-alliance-partner">National Instruments (NI) Alliance</a> member for more than 10 years with one of the largest teams of <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming">Certified LabVIEW</a> developers in the country, including several National Instruments Certified LabVIEW Architects (highest level of certification available), and multiple NI Certified LabVIEW Developers.</p>


<hr />


<h2 id="h-test-and-measurement-experience" class="wp-block-heading"><a id="TEST AND MEASUREMENT EXPERIENCE" name="TEST AND MEASUREMENT EXPERIENCE"></a>Test and Measurement Experience</h2>



<p class="wp-block-paragraph">Our <a href="https://static.dmcinfo.com/services/test-and-measurement-automation">Test and Measurement Automation</a> services help clients automate laboratory testing using the latest technologies. We have years of experience delivering world-class solutions to leaders in research, development, production, quality, and certification testing. Our flexible and collaborative approach is proven to deliver efficient, accurate, and robust test systems, as well as the tools to leverage test data for effective results analysis.</p>



<p class="wp-block-paragraph">DMC has employed LabVIEW in many industries, including product development, test and measurement engineering, R&amp;D, and high-tech manufacturing. We have developed LabVIEW solutions for hundreds of projects at dozens of customers, including:</p>



<ul class="wp-block-list">
<li>Argonne National Laboratories</li>



<li>Fermi National Accelerator Laboratory (Fermilab)</li>



<li>Bombardier Recreational Products Bosch</li>



<li>Underwriters Laboratories</li>



<li>LG</li>



<li>Bosch</li>
</ul>



<p class="wp-block-paragraph">DMC applies a disciplined and systematic approach to LabVIEW software design. Engineers at DMC employ software conventions and architectures so that code is structured and well-organized. One example of these structures is a LabVIEW state machine that builds a system based on states, events, and actions</p>



<p class="wp-block-paragraph">DMC has a vast, reliable code library that has been tested and can be used to significantly reduce the development time and risk. Leverage the work we&#8217;ve already done to reduce start-up time now and downtime later. We&#8217;ve also developed LabVIEW tools for additional features such as HTML and PDF reporting, TDMS file storage, external data viewers, and SQL databases.</p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step"><strong>Advanced Battery Testing for the Most Demanding Applications</strong>.</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Learn more about our work with <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/battery-pack-and-bms-test-systems/" data-type="page" data-id="611">Battery Management Systems</a> and our expertise with <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/" data-type="page" data-id="428">Test &amp; Measurement</a> solutions.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/21230/nasa-battery-simulator-system/">NASA Battery Simulator System</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>2025 Denver LabVIEW User Group Meeting at DMC</title>
		<link>https://static.dmcinfo.com/blog/15560/2025-denver-labview-user-group-meeting-at-dmc/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Wed, 02 Apr 2025 16:38:06 +0000</pubDate>
				<category><![CDATA[Denver]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[ALARM]]></category>
		<category><![CDATA[April 2025]]></category>
		<category><![CDATA[Emerson]]></category>
		<category><![CDATA[National Instruments]]></category>
		<category><![CDATA[NI]]></category>
		<category><![CDATA[User Group]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/15560/2025-denver-labview-user-group-meeting-at-dmc/</guid>

					<description><![CDATA[<p>DMC is excited to host this quarter&#8217;s ALARM LabVIEW User Group meeting on Thursday, April 17, 2025! The ALARM (Advanced LabVIEW Architects of the Rocky Mountains) group brings together LabVIEW enthusiasts to discuss programming techniques, design strategies, updates and share experiences. This event offers a fantastic opportunity to learn, receive updates on NI and NI [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/15560/2025-denver-labview-user-group-meeting-at-dmc/">2025 Denver LabVIEW User Group Meeting at DMC</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><p data-end="70" data-start="57">DMC is excited to host this quarter&#8217;s ALARM LabVIEW User Group meeting on Thursday, April 17, 2025! The ALARM (Advanced LabVIEW Architects of the Rocky Mountains) group brings together <a href="https://www.ni.com/en/shop/labview.html" target="_blank">LabVIEW</a> enthusiasts to discuss programming techniques, design strategies, updates and share experiences.</p></p>



<p class="wp-block-paragraph"><p data-end="388" data-start="231">This event offers a fantastic opportunity to learn, receive updates on NI and NI Software, network with professionals in the Denver area, and have fun! Food and drinks will be provided, and after the presentations, you&#8217;ll have a chance to relax on DMC&#8217;s rooftop deck or play a game of pool with the team! If you&#8217;re <a href="https://docs.google.com/forms/d/e/1FAIpQLSfPzvoawUesGZ-8n2HfLlDSBmBwuo0okjHdm9BVAi3x6RUirw/viewform">interested in attending</a>, please register here.​</p></p>



<h3 class="wp-block-heading" data-end="388" data-start="231"><strong>Agenda:</strong></h3>



<ol class="wp-block-list">
<li data-end="388" data-start="231">Meet and Greet&nbsp;(DMC Food &amp; Beverages Provided)</li>



<li data-end="388" data-start="231">Presentation 1 (Welcome and DMC Overview, Time Permitting: EtherCAT for NI)</li>



<li data-end="388" data-start="231">Presentation 2 (Pickering PXI Demo with Dan R.)</li>



<li data-end="388" data-start="231">Presentation 3 (Time Synchronization with Josh R.)</li>



<li data-end="388" data-start="231">Presentation 4 (Community Sourced)</li>



<li data-end="388" data-start="231">Closeout and socialization time.</li>
</ol>



<h3 id="h-event-logistics" class="wp-block-heading"><strong>Event Logistics:</strong></h3>



<ul class="wp-block-list">
<li data-end="386" data-start="291"><strong data-end="304" data-start="291">Location:</strong> DMC Denver, 2601 Blake St., Suite 301, Denver, CO 80205​</li>



<li data-end="480" data-start="389"><strong data-end="398" data-start="389">Date:</strong> Thursday, April 17, 2025​</li>



<li data-end="616" data-start="483"><strong data-end="492" data-start="483">Time:</strong> 6:30 PM &#8211; 8:30 PM</li>



<li><strong>Parking</strong>: The entrance to DMC’s parking lot is located on Blake St. Please refer to the image below.
 
 
<ul class="wp-block-list">
<li>The main entrance of the office building&nbsp;is outlined in&nbsp;<strong>blue</strong>.</li>



<li>Guest&nbsp;parking&nbsp;is in the&nbsp;<strong>red</strong>&nbsp;area.</li>



<li>If those are taken, it is fine to park in the outlined&nbsp;<strong>green</strong>&nbsp;area in the image below.</li>



<li>Street parking near the office is also readily available and free!</li>
</ul>
</li>
</ul>



<figure class="wp-block-image"><img decoding="async" alt="Casey_Langenbahn_0-1743453328861.png" height="718" li-bindable="" li-bypass-lightbox-when-linked="true" li-compiled="true" li-image-display-id="'345562iCF6EE4CF3890B28E'" li-image-url="https://forums.ni.com/t5/image/serverpage/image-id/345562iCF6EE4CF3890B28E?v=v2" li-message-uid="'4425298'" li-messages-message-image="true" li-use-hover-links="false" role="button" src="https://forums.ni.com/t5/image/serverpage/image-id/345562iCF6EE4CF3890B28E/image-dimensions/774x718?v=v2" tabindex="0" title="Casey_Langenbahn_0-1743453328861.png" width="774" /></figure>



<p class="wp-block-paragraph"><p data-end="616" data-start="483">We&#8217;re looking forward to a great evening with the Denver LabVIEW community. This event is a chance to connect, share ideas, and learn more about how others are using NI tools in real-world applications. Whether you&#8217;re presenting or just joining the conversation, we&#8217;re glad to have you be a part of it.&nbsp;</p></p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step">Looking to Elevate Your LabVIEW Applications? Connect With Our Experts.</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">From system architecture to test automation, DMC&#8217;s <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/" data-type="page" data-id="428">Test &amp; Measurement</a> experts are ready to advance the conversation with the <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming/" data-type="page" data-id="584">LabVIEW</a> community.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/15560/2025-denver-labview-user-group-meeting-at-dmc/">2025 Denver LabVIEW User Group Meeting at DMC</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>2024 Chicago LabVIEW User Group Meeting at DMC</title>
		<link>https://static.dmcinfo.com/blog/16197/2024-chicago-labview-user-group-meeting-at-dmc/</link>
		
		<dc:creator><![CDATA[Yamini Yedetore]]></dc:creator>
		<pubDate>Tue, 18 Jun 2024 15:56:05 +0000</pubDate>
				<category><![CDATA[Chicago]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[CLUG]]></category>
		<category><![CDATA[Emerson]]></category>
		<category><![CDATA[National Instruments]]></category>
		<category><![CDATA[NI]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/16197/2024-chicago-labview-user-group-meeting-at-dmc/</guid>

					<description><![CDATA[<p>Overview: DMC is proud to host this quarter’s Chicago LabVIEW User Group (CLUG) meeting on June 26, 2024! The CLUG is a group of LabVIEW users that meet quarterly to discuss new programming techniques, design choices, updates, and share stories about programming experiences or lessons learned. Due to the pandemic, the meetings have been hosted [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/16197/2024-chicago-labview-user-group-meeting-at-dmc/">2024 Chicago LabVIEW User Group Meeting at DMC</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading" paraeid="{8cb4b887-5299-43c4-a8b3-19089a98ea5d}{190}" paraid="1498559995"><span style="color:#28166F;">Overview</span>:</h2>



<p class="wp-block-paragraph"><p paraeid="{8cb4b887-5299-43c4-a8b3-19089a98ea5d}{190}" paraid="1498559995">DMC is proud to host this quarter’s <a href="https://forums.ni.com/t5/Chicago-LabVIEW-User-Group/gh-p/5030" rel="noreferrer noopener" target="_blank">Chicago LabVIEW User Group (CLUG)</a> meeting on June 26, 2024! The CLUG is a group of LabVIEW users that meet quarterly to discuss new programming techniques, design choices, updates, and share stories about programming experiences or lessons learned. Due to the pandemic, the meetings have been hosted online for the past few years, but we are kicking off the summer season with a long-awaited in person meeting hosted at DMC Chicago! Back in <a href="https://static.dmcinfo.com/latest-thinking/blog/id/9907/chicago-labview-user-group-meeting-at-dmc" rel="noreferrer noopener" target="_blank">2019</a>, DMC hosted a CLUG meeting, and we are so excited to invite everyone to this event again.&nbsp;&nbsp;</p></p>



<p class="wp-block-paragraph">This will be a <a href="https://marketing.testforce.com/acton/fs/blocks/showLandingPage/a/35013/p/p-0187/t/page/fm/0" data-type="link" data-id="https://marketing.testforce.com/acton/fs/blocks/showLandingPage/a/35013/p/p-0187/t/page/fm/0" target="_blank" rel="noreferrer noopener">fantastic opportunity</a> to learn, get updates regarding NI and NI Software, network with other professionals in the Chicago area and have fun! Food and drink will be provided, and after the presentations you will have a chance to relax on the DMC rooftop deck.</p>



<p class="wp-block-paragraph"><p paraeid="{8cb4b887-5299-43c4-a8b3-19089a98ea5d}{206}" paraid="1871400280">This quarter’s user group will consist of some exciting presentations and discussions!</p></p>



<h2 class="wp-block-heading" paraeid="{8cb4b887-5299-43c4-a8b3-19089a98ea5d}{206}" paraid="1871400280"><span style="color:#28166F;">Agenda</span>:</h2>



<ul class="wp-block-list">
<li>3:00-3:30 Arrive and settle in</li>



<li>3:30-5:30 Welcome &amp; Presentations
 
 
<ul class="wp-block-list">
<li>Inspirations from NI Connect &#8211; <a href="https://www.linkedin.com/in/kevin-shirey?utm_source=share&amp;utm_campaign=share_via&amp;utm_content=profile&amp;utm_medium=ios_app" rel="noreferrer noopener" target="_blank">Kevin Shirey</a>, LabVIEW Champion and DMC Project Engineer</li>



<li>NI Software Roadmap &#8211; <a href="https://www.linkedin.com/in/elijahkerry" rel="noreferrer noopener" target="_blank">Eli Kerry</a>, NI Software Director</li>



<li>Little LabVIEW Stories &#8211;&nbsp;<a href="https://www.linkedin.com/in/jeff-debuhr-0509559/" rel="noreferrer noopener" target="_blank">Jeff DeBuhr</a>, Staff Engineer at Chamberlain Group</li>



<li><a href="https://www.linkedin.com/pulse/recap-challenge-labview-champions-niglobal-8xmmc/?trackingId=JSgDSnvTkNVT%2FzORbwNVmw%3D%3D">Challenge of Champions</a> &#8211; Eli Kerry</li>
</ul>
</li>



<li>5:30-6:00 Networking and roof time</li>
</ul>



<h2 class="wp-block-heading" paraeid="{8cb4b887-5299-43c4-a8b3-19089a98ea5d}{249}" paraid="1459481958"><span style="color:#28166F;">Event Logistics:</span></h2>



<p class="wp-block-paragraph"><p paraeid="{8cb4b887-5299-43c4-a8b3-19089a98ea5d}{249}" paraid="1459481958"><strong>Location</strong>: DMC Chicago &#8211;&nbsp;2222 N Elston Ave Ste 200&nbsp;Chicago, IL 60614</p></p>



<p class="wp-block-paragraph"><p paraeid="{8cb4b887-5299-43c4-a8b3-19089a98ea5d}{249}" paraid="1459481958"><strong>Date/Time</strong>: Wednesday, June 26 from 3:30-5:30pm</p></p>



<p class="wp-block-paragraph"><p paraeid="{8cb4b887-5299-43c4-a8b3-19089a98ea5d}{249}" paraid="1459481958"><strong>Arrival:</strong> Please try to arrive and get settled in before 3:30pm so we can start on time</p></p>



<figure class="wp-block-image size-full"><img decoding="async" width="830" height="604" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/DMC-parking-map.png" alt="DMC parking map" class="wp-image-16198" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/05/DMC-parking-map.png 830w, https://static.dmcinfo.com/wp-content/uploads/2025/05/DMC-parking-map-300x218.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/05/DMC-parking-map-768x559.png 768w" sizes="(max-width: 830px) 100vw, 830px" /></figure>



<p class="wp-block-paragraph"><strong>Parking:</strong>&nbsp;There is a parking lot adjacent to the north side of our building for DMC visitors. If it is full, there’s free street parking in the surrounding area on Elston, Honore, Lister, and Webster.</p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step">Join a Community of Innovators! See DMC at Our LabVIEW Event.</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Work alongside <a href="https://static.dmcinfo.com/our-work/category/service/test-measurement-automation/labview/" id="685">LabVIEW</a> experts and industry leaders on innovative projects across a wide range of technologies and capabilities. Learn more about our <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/" id="428">Test &amp; Measurement</a> expertise.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/16197/2024-chicago-labview-user-group-meeting-at-dmc/">2024 Chicago LabVIEW User Group Meeting at DMC</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Creating Custom AI Tools to Analyze LabVIEW Code</title>
		<link>https://static.dmcinfo.com/blog/16249/creating-custom-ai-tools-to-analyze-labview-code/</link>
		
		<dc:creator><![CDATA[Fadil Eledath]]></dc:creator>
		<pubDate>Wed, 05 Jun 2024 14:25:52 +0000</pubDate>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/16249/creating-custom-ai-tools-to-analyze-labview-code/</guid>

					<description><![CDATA[<p>In the field of test and measurement&#160;we do tons of work with NI hardware and software. Clients often lean on DMC engineers as experts of the NI stack to help them figure out what’s going wrong and how to make things right with their test systems. Hardware experts don&#8217;t always have hours of time to [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/16249/creating-custom-ai-tools-to-analyze-labview-code/">Creating Custom AI Tools to Analyze LabVIEW Code</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In the field of <a href="https://static.dmcinfo.com/services/test-and-measurement-automation">test and measurement</a>&nbsp;we do tons of work with NI hardware and software. Clients often lean on DMC engineers as experts of the NI stack to help them figure out what’s going wrong and how to make things right with their test systems.</p>



<p class="wp-block-paragraph">Hardware experts don&#8217;t always have hours of time to invest in staying updated on the latest in LabVIEW like we do at DMC. Understandably, this can result in code that doesn’t follow standard architecture or best practices.</p>



<p class="wp-block-paragraph">We&#8217;ve seen every kind of graphical code structure under the sun. It takes time to follow the hundreds of wires and many parallel loops to figure out what makes a program behave the way that it does.</p>



<p class="wp-block-paragraph"><p align="center"><img decoding="async" alt="" height="362" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/pepe-labview.png" width="482"><br>
Me analyzing LabVIEW code for the first time</p></p>



<h2 id="h-using-openai-and-labview" class="wp-block-heading">Using OpenAI and LabVIEW</h2>



<p class="wp-block-paragraph">Text-based languages have benefitted from recent advancements&nbsp;in tools used to analyze and write code&nbsp;like Python with tools like GitHub Copilot. NI has been hard at work too, as evidenced by their recent demo of <a href="https://www.youtube.com/live/Bk-dmXEp5xk?si=7aURtiBINJvDBGEg&amp;t=3070">Nigel</a>, but they haven’t yet released it.</p>



<p class="wp-block-paragraph">In the meantime, I thought I could try something rudimentary to achieve a similar outcome using the GPT API from OpenAI with a few tricks to make it work on VI files (files for LabVIEW written in their G language). I wanted to see if I could use GPT to describe LabVIEW code.</p>



<p class="wp-block-paragraph">Here are the steps:</p>



<ol class="wp-block-list">
<li>Convert the LabVIEW graphical code to text-based code.</li>



<li>Pass the text-based code to GPT and ask it to analyze the code.</li>
</ol>



<h2 id="h-converting-graphical-code-to-text-based-code" class="wp-block-heading">Converting Graphical Code to Text-Based Code</h2>



<p class="wp-block-paragraph">Step 1 basically describes a transpiler which is a compiler that takes code in one language and produces equivalent code in a target language, though as we’ll see that’s easier said than done. For my purposes, I decided to target Python-like code&nbsp;since it isn’t strictly typed and would let me get away with leaving out a lot of information about data types. It’s also likely that GPT is trained on tons of Python code and trying to use a language more equivalent to LabVIEW code would mean implementing more programming constructs in the transpiler or creating a proprietary intermediary language as NI has been doing with Nigel.</p>



<p class="wp-block-paragraph">The first major hurdle is the fact that LabVIEW code isn’t written as a series of sequential statements.&nbsp;Instead, it is a data-flow language which uses “wires” to transfer information from block to block. This makes it especially great for simple-looking implementations of multi-threaded applications but annoying for our purposes. Luckily, this construct maps well onto the concept of computational graphs and we can try to move from code to a more abstract graph to make our life simpler. We can think of LabVIEW code as a “directed acyclic graph” with a set of start nodes (controls) and end nodes (indicators) connected by edges (wires).</p>



<p class="wp-block-paragraph"><p align="center"><img decoding="async" alt="" height="245" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Untitled-Diagram_drawio2.png" width="454"></p></p>



<p class="wp-block-paragraph">But how do we convert LabVIEW code to a computational graph? Using VI Scripting of course! NI has a library of tools that lets you find all instances of a specified type of LabVIEW programming construct and if we look for all wires and note what pair of objects each one joins, we can build our graph.</p>



<p class="wp-block-paragraph"><p align="center"><img decoding="async" alt="" height="347" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/VISight-Snippet.png" width="1112"></p></p>



<p class="wp-block-paragraph">We then take the graph and use a custom scheduler algorithm to create a sequence of operations for each of the code blocks and finally use the metadata of each wire’s two terminals to provide some additional data in the transpiled code.</p>



<p class="wp-block-paragraph"><p style="text-align: center;"><img decoding="async" alt="" height="517" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Screenshot-2024-05-09-161224.png" width="339"> &nbsp;&nbsp;<img decoding="async" alt="" height="517" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Screenshot-2024-05-09-161333.png" width="329"></p></p>



<h2 id="h-ask-gpt-to-analyze-the-code" class="wp-block-heading">Ask GPT to Analyze the Code</h2>



<p class="wp-block-paragraph">Add in some logic to avoid accidentally using the variable names in multiple places using UIDs and we’re basically done! All we do now is ask GPT to describe the code in terms of what it represents and not the actual variables themselves and we have a crude AI-powered VI analysis tool.</p>



<p class="wp-block-paragraph"><p style="text-align: center;"><img decoding="async" alt="" height="110" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/GPT-prompt_1.png" width="654"></p></p>



<p class="wp-block-paragraph"><p style="text-align: center;"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/VISight.gif"></p></p>



<p class="wp-block-paragraph">Except that it doesn’t work for:</p>



<ul class="wp-block-list">
<li>For loops</li>



<li>While loops</li>



<li>Broken code</li>



<li>Cases where there are orphaned blocks</li>



<li>Feedback loops</li>



<li>Analyzing sub-VIs</li>



<li>Etc.</li>
</ul>



<p class="wp-block-paragraph">You get the idea. Perhaps with a more structured approach to VI scripting and fine-tuning with example code, it might be possible to get more out of this idea, but I think this serves as a useful demo to see what might one day possible!</p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step"><strong>Bring AI-Powered Analysis to LabVIEW Code</strong>.</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">See more about our <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/" data-type="page" data-id="428">Test &amp; Measurement</a> capabilities and <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming/" data-type="page" data-id="584">LabVIEW</a> solutions for code analysis, architecture evaluation, and custom AI tool development.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/16249/creating-custom-ai-tools-to-analyze-labview-code/">Creating Custom AI Tools to Analyze LabVIEW Code</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>DMC&#8217;s Test &#038; Measurement Team Makes LabVIEW Holiday Ornaments</title>
		<link>https://static.dmcinfo.com/blog/16970/dmcs-test-measurement-team-makes-labview-holiday-ornaments/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Fri, 15 Dec 2023 11:21:15 +0000</pubDate>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[holiday]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/16970/dmcs-test-measurement-team-makes-labview-holiday-ornaments/</guid>

					<description><![CDATA[<p>DMC&#8217;s Test and Measurement Automation&#160;team got into the holiday spirit and put their LabVIEW Icon Editor skills to the test with an ornament-making event! LabVIEW has an icon editor, typically used for labeling code, but the possibilities of a 32&#215;32 box of pixels are seemingly endless. After a four-year hiatus, the Test and Measurement team [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/16970/dmcs-test-measurement-team-makes-labview-holiday-ornaments/">DMC&#8217;s Test &#038; Measurement Team Makes LabVIEW Holiday Ornaments</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">DMC&#8217;s <a href="https://static.dmcinfo.com/services/test-and-measurement-automation">Test and Measurement Automation</a>&nbsp;team got into the holiday spirit and put their LabVIEW Icon Editor skills to the test with an ornament-making event! LabVIEW has an icon editor, typically used for labeling code, but the possibilities of a 32&#215;32 box of pixels are seemingly endless.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/conference-group-photo.jpg" alt="DMC Chicago's Test and Measurement Team Conference Room Group Photo"/></figure>



<p class="wp-block-paragraph">After a four-year hiatus, the Test and Measurement team was back at it again to create this season&#8217;s best LabVIEW ornaments.</p>



<p class="wp-block-paragraph">&#8220;Four years ago, they had a very similar event, and I think that one was spontaneous. They had a Teams meeting one day and said, &#8216;oh wow, we could actually make these into ornaments!'&#8221; <a href="https://static.dmcinfo.com/about/employee-bios/roman-cyliax">Roman Cyliax</a>, Systems Engineer in Chicago, said. &#8220;<a href="https://static.dmcinfo.com/about/employee-bios/rachel-hughes">Rachel</a> is the one who brought it back, and we want to make it an annual event.&#8221; </p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/hanging-lights-on-the-tree-photo-1.jpg" alt="Team Members Hanging Christmas Lights on the Tree"/></figure>



<p class="wp-block-paragraph">The holiday ornament-making event was not exclusive to Chicago&#8217;s Test and Measurement team, as other regional office team members were included.</p>



<p class="wp-block-paragraph">&#8220;There were approximately 10 people from Chicago, and we had a few team members join in virtually from Texas and Seattle,&#8221; <a href="https://static.dmcinfo.com/about/employee-bios/milos-popovic">Milos Popovic</a>, Chicago Systems Engineer, said. &#8220;We used the LabVIEW Development Environment. You can make icons for programs; you draw with this very clunky little icon editor, and you can make a 32&#215;32 pixel image, so it&#8217;s very pixelated and grainy, but normally it&#8217;s enough information to say what a file does.&#8221; </p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/cutting-ornaments-photo.jpg" alt="Test and Measurement Team Cutting Ornaments"/></figure>



<p class="wp-block-paragraph">The team got to work and spent a few hours brainstorming, designing, printing, laminating, cutting, and finally adorning the tree with their festive icons.</p>



<p class="wp-block-paragraph">&#8220;We probably made close&nbsp;to 30 ornaments,&#8221; Milos said. &#8220;We reused&nbsp;a few from the last time we did it just to fill out the tree.&#8221;&nbsp;</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/decorating-tree-1.jpg" alt="Decorating the Christmas Tree with LabVIEW Ornaments"/></figure>



<p class="wp-block-paragraph">From beginning to end, the ornaments took an extensive period of time to curate.</p>



<p class="wp-block-paragraph">&#8220;You make them in the LabVIEW Icon Editor, which is not necessarily the most intuitive place to make an ornament,&#8221; Roman said. &#8220;You may spend about an hour drafting ideas and making ornaments. It took another hour and a half to cut and laminate the ornaments. In total, I think it took&nbsp;around 3 hours for our team to make the ornaments.&#8221;&nbsp;</p>



<p class="wp-block-paragraph"><p style="text-align: center;"></p></p>



<p class="wp-block-paragraph">With dozens of&nbsp;ornaments made, a few stood out from the crowd.</p>



<p class="wp-block-paragraph">&#8220;The ornament was a Christmas Constructor. In LabVIEW, you have classes. You construct a class, and it&#8217;s kind of like a one-function block. Usually, we have a stock image that&#8217;s like a construct and there&#8217;s maybe a little star next to it,&#8221; Roman said. &#8220;Rose made one that had the star being the point of a tree, so it was a Christmas Constructor. It was creative!&#8221; </p>



<p class="wp-block-paragraph"><p style="text-align: center;"></p></p>



<p class="wp-block-paragraph"><p style="text-align: center;"></p></p>



<p class="wp-block-paragraph">Another favorite was in reference to a quirk in LabVIEW.</p>



<p class="wp-block-paragraph">&#8220;There is this quirk in the Icon Editor itself where you can make stuff transparent, but it doesn&#8217;t have a transparency button. There is one specific shade of off white that it interprets as transparency. You can accidentally choose this shade of white, and you think it&#8217;s going to be a white background, and then it just ends up being transparent,&#8221; Milos said. &#8220;There is an icon that has the RGB color code for that shade of white. Someone took the time to take an X-acto knife and cut out each pixel that is that shade of white, so it is see-through only on the text. That one&#8217;s pretty good!&#8221; </p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/decorated-tree-group-photo-1.jpg" alt="Group Photo Around the Decorated Tree"/></figure>



<p class="wp-block-paragraph">After an evening of fun and team bonding, it&#8217;s clear that this is an event that the team wants to turn&nbsp;into an annual tradition.</p>



<p class="wp-block-paragraph">&#8220;I think we want to make it an annual thing,&#8221; Roman said.&nbsp;&#8220;It&#8217;d be very fun to do it again next year!&#8221;&nbsp;</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/stand-alone-tree-decorated.jpg" alt="Final Decorated Tree"/></figure>



<p class="wp-block-paragraph"><strong>Learn more about DMC&#8217;s&nbsp;<a href="https://static.dmcinfo.com/services/test-and-measurement-automation">Test and Measurement</a>&nbsp;services and our company <a href="https://static.dmcinfo.com/latest-thinking/blog/articletype/categoryview/categoryid/13/culture">culture</a>!</strong></p>
<p>The post <a href="https://static.dmcinfo.com/blog/16970/dmcs-test-measurement-team-makes-labview-holiday-ornaments/">DMC&#8217;s Test &#038; Measurement Team Makes LabVIEW Holiday Ornaments</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Parallel Programming with Two CCS Programmers</title>
		<link>https://static.dmcinfo.com/blog/17789/parallel-programming-with-two-ccs-programmers/</link>
		
		<dc:creator><![CDATA[Alex Huang]]></dc:creator>
		<pubDate>Fri, 10 Feb 2023 14:49:23 +0000</pubDate>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[CCS]]></category>
		<category><![CDATA[Parallel]]></category>
		<category><![CDATA[PIC]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/17789/parallel-programming-with-two-ccs-programmers/</guid>

					<description><![CDATA[<p>Recently, when working on an end of line calibration machine project, I found myself working to achieve parallel programming&#160;using two CCS programmers. During&#160;the process, I ran into several specific quirks and challenges. Below is a tutorial and troubleshooting guide that may help others who find themselves in similar positions. In this document, I will cover [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/17789/parallel-programming-with-two-ccs-programmers/">Parallel Programming with Two CCS Programmers</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Recently, when working on an end of line calibration machine project, I found myself working to achieve parallel programming&nbsp;using two CCS programmers. During&nbsp;the process, I ran into several specific quirks and challenges. Below is a tutorial and troubleshooting guide that may help others who find themselves in similar positions. In this document, I will cover everything needed to get the programmers to work independently, and then&nbsp;address the weird nuances of parallel. &nbsp;</p>



<h2 class="wp-block-heading" id="h-background">Background</h2>



<p class="wp-block-paragraph">The system we tested on had/did&nbsp;the following:</p>



<ul class="wp-block-list">
<li>Two <a href="http://www.ccsinfo.com/ccs-buy-programmers.php" target="_blank">PICC Programmers from Custom Computer Services, Inc. (CCS)</a>, ICD-U80 and Prime8</li>



<li>They programmed 1 and 8 devices respectively:&nbsp;for a total of 9 devices programmed</li>



<li>Windows 10</li>



<li>LabVIEW 2019 SP1 (the version should not actually matter)</li>
</ul>



<h2 class="wp-block-heading" id="h-methods">Methods</h2>



<p class="wp-block-paragraph">There are two main methods you can use to communicate with the programmers: CCSLoad.exe and Windows command line.</p>



<h3 class="wp-block-heading" id="h-ccsload-exe">CCSLoad.exe</h3>



<p class="wp-block-paragraph">CCSLoad is the driver interface that allows you to execute operations with the programmers. I highly recommend starting with this to verify that everything is in working order.</p>



<ol class="wp-block-list">
<li>In the Diagnostics tab, check that software and hardware versions are fully up to date according to CCS’s website. You can also update firmware/software directly from the tab.</li>



<li>You should be able to perform read/write operations using the programmers at this stage.
<ul class="wp-block-list">
<li>One common issue we noticed with older firmware versions of the Prime 8 was the slow speed of programming all 8 slots. The solution was to update to the latest firmware version.</li>



<li>The ICDU80 did not give us any issues.</li>
</ul>
</li>



<li>If you have any issues performing actions with the driver, check the following:
<ul class="wp-block-list">
<li>If you are not connecting to the device, check your USB connection.</li>



<li>If you are failing to write, check your target file. Make sure that the chip type is specified in the file and that it matches the target.</li>



<li>&#8216;Erase&#8217; and &#8216;Read&#8217; functions should work as long as the chip is functional, both may be useful for troubleshooting the target chip itself.</li>
</ul>
</li>



<li>Once you can successfully read, write, or perform actions without any issues, you are ready to move on to the windows command line. With the CCLoad program, you can only operate one programmer at a time. It must disconnect from one before connecting to another. With the windows command line you will be able to operate them both in parallel. You should be able to perform read/write operations using the programmers at this stage.</li>
</ol>



<h2 class="wp-block-heading" id="h-windows-command-line">Windows Command Line</h2>



<p class="wp-block-paragraph">Full documentation of Command Line Usage can be found here:</p>



<p class="wp-block-paragraph"><strong>C:\Program Files (x86)\PICC\ccsload.chm (Windows User Interface &#8211;> Command Line Usage)</strong></p>



<p class="wp-block-paragraph">This page provides a comprehensive list of all commands and their associated actions. I will be covering all commands that we used&nbsp;— which were&nbsp; a very small subset of all the available ones.</p>



<p class="wp-block-paragraph">Because we are using LabVIEW, we will use System Exec.vi to call the windows command line and send commands this way; however, the process should be the exact same as long as you are using something to call the command line.</p>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/System-Exec-image_1.png" alt="System Exec.vi Windows command line" style="width:561px;height:auto"/></figure>



<p class="wp-block-paragraph">The only three input parameters relevant for us are “command line”,” wait until completion?”, and “run minimized?”.</p>



<ul class="wp-block-list">
<li>&#8220;Command line&#8221; is the input string that determines the operation you want to perform.</li>



<li>&#8220;Wait until completion&#8221; delays the transfer of information downstream until this VI has finished executing.</li>



<li>&#8220;Run minimized&#8221; determines whether you want the command line window to pop up on execution or stay hidden in the background.</li>
</ul>



<p class="wp-block-paragraph">Here is an example of an erase command we are sending using LabVIEW.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Example-ERASE-Command.png" alt="erase command"/></figure>



<p class="wp-block-paragraph">Some things worth noting:</p>



<ol class="wp-block-list">
<li>The first line is the path to the ccsloader.exe command line.
<ul class="wp-block-list">
<li>We are using the windows command line to call this new command line — which is then responsible for communication to the programmers.   </li>
</ul>
</li>



<li>We specify the Port/Device because we will eventually be programming with two. If you are only using one Port/Device, this is not necessary as it should auto detect.
<ul class="wp-block-list">
<li>The nickname/alias for each device can be set manually here: &#8220;C:\Users\[your windows username]\AppData\Roaming\PICC\pcw.ini&#8221;</li>
</ul>
</li>



<li>We always specify the device. I’ve found when you don’t specify, it can fail.</li>



<li>+ERASE is the actual operation we want — which erases the chip. The first 3 lines are all setup, and the following line(s) is the operation. </li>
</ol>



<p class="wp-block-paragraph"><em><u>When starting out, I highly recommend disabling ‘run minimized’ and enabling ‘wait until completion.’&nbsp; This opens the command line on execution, and it also shows you exactly what it’s doing:&nbsp;like connecting, erase/read/write operations, and any errors it encounters. When it does error, it only briefly shows the error before it closes the window, so I recommend taking a video or recording it somehow to go back and replay what error it showed.</u></em> Any other combination of these settings will not give you live feedback.</p>



<p class="wp-block-paragraph">Here&#8217;s another example, except,&nbsp;this time, we are using the Prime 8 and performing a write action:</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Example-FLASH-Command.png" alt="write action"/></figure>



<p class="wp-block-paragraph">Notice that everything is the same except for the difference of PORT, DEVICE, and an additional line that defines the SLOT. For the Prime 8, since it is a multi-device programmer, you have to specify which slots you’d like to perform actions on. You can also see the format used for writing a target hex file.</p>



<p class="wp-block-paragraph">The last example will be a read operation. Reading back from the device is important because we need to know if our operation was successful. It’s nice when the command window tells us, but it’s also good to verify the code itself. So, I recommend reading from the device both after erasing and writing. After erasing, the hex file should be full of 00 or FF, and you should be able to observe the difference post-write.</p>



<p class="wp-block-paragraph">Here is an example of a command reading from all 8 slots of the Prime 8. Notice how we have to specify a different file for each slot&nbsp;since we need to verify all 8 slots are working.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Example-READ-Command.png" alt="command reading for all 8 slots"/></figure>



<p class="wp-block-paragraph">Using these three commands, you should now be able to erase, write, and read using the windows command line: just like the CCSLoad driver interface. Once you get that, it’s time to move onto the last two steps: +STAYOPEN and parallel programming.&nbsp;</p>



<h3 class="wp-block-heading" id="h-stayopen">+STAYOPEN</h3>



<p class="wp-block-paragraph">At this point, while performing operations,&nbsp;you may have noticed that&nbsp;the compiler&nbsp;must always&nbsp;connect to the device before starting its operation, and it closes automatically&nbsp;after it finishes.&nbsp;This is quite time-consuming&nbsp;as the time taken to connect to the device(s) often takes longer than the operation itself. The solution for this is to incorporate the command +STAYOPEN. This establishes a connection to the device and leaves it open&nbsp;—&nbsp;allowing you to send future commands without needing to connect over and over again. You essentially front-load the connection time once at the beginning and never have to worry about it again. The downside is&nbsp;you lose the ability to see the compiler updates from your commands&nbsp;— which is why it was important to establish everything was working before we got here.</p>



<p class="wp-block-paragraph">It’s also important to know that if you use +STAYOPEN, you must also use +CLOSE to close the connection after, since it will not auto-close anymore. These commands look like this:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="513" height="189" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Example-STAYOPEN-CLOSE-Commands.png" alt="+STAYOPEN" class="wp-image-17786" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/05/Example-STAYOPEN-CLOSE-Commands.png 513w, https://static.dmcinfo.com/wp-content/uploads/2025/05/Example-STAYOPEN-CLOSE-Commands-300x111.png 300w" sizes="(max-width: 513px) 100vw, 513px" /></figure>



<p class="wp-block-paragraph">I recommend performing the following series of operations with each programmer to verify that everything is working properly before moving onto parallel programming.</p>



<ol class="wp-block-list">
<li>Open connection</li>



<li>Erase chip (verify that it is erased)</li>



<li>Read from chip</li>



<li>Write hex file to chip</li>



<li>Read from chip (verify that it is no longer erased)</li>



<li>Close connection</li>
</ol>



<h3 class="wp-block-heading" id="h-parallel-programming">Parallel Programming</h3>



<p class="wp-block-paragraph">Using multiple programmers in parallel is not an explored space according to CCS, but they have worked with me to get it working. That means, for the following steps, <u>your mileage may vary</u>. CCS support may be a useful tool in case you find your system reacts differently. We did perform parallel testing successfully with multiple computers, so there is some level of consistency present.</p>



<p class="wp-block-paragraph">There are two categories of parallel programming: with and without the use of +STAYOPEN. I will first cover parallel programming without using +STAYOPEN.</p>



<p class="wp-block-paragraph">The first thing you will have to do is make a copy of the ccsloader.exe application. You can simply CTRL+C CTRL+V it, and rename it something&nbsp;like this:</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ccsloader-copy.png" alt="CSS Loader"/></figure>



<p class="wp-block-paragraph">We will now need two instances of it,&nbsp;one for each programmer.</p>



<p class="wp-block-paragraph">The ‘trick’ I’ve found&nbsp;is to duplicate the LabVIEW calls at this step: one for each programmer. Make sure to change the target compiler and the PORT. When you call them, do not call them at the same time. You should actually delay the calls about a half second apart. I found the secret recipe is:</p>



<ol class="wp-block-list">
<li>Send a command to the ICDU80</li>



<li>Wait ~500ms</li>



<li>Send a command to the Prime 8</li>
</ol>



<p class="wp-block-paragraph">This looks something like this:</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Example-Parallel-Command_1.png" alt="duplicate  LabVIEW calls"/></figure>



<p class="wp-block-paragraph">Notice how:</p>



<ol class="wp-block-list">
<li>They are not wired in series. Remember, we want ‘wait until completion’ to be true.</li>



<li>We are calling both instances of ccsloader/ccsloader1 and specifying different port values.&nbsp;</li>
</ol>



<p class="wp-block-paragraph">You should observe both compiler windows opening (slightly staggered), then both connecting successfully and performing the operation.</p>



<p class="wp-block-paragraph">If this fails, you can try the following troubleshooting steps below:</p>



<ol class="wp-block-list">
<li>If one fails to connect, open in driver interface to try to ‘reset’ the connection.</li>



<li>Swap the order of the programmer calls.</li>



<li>Fiddle with timing between device calls.</li>
</ol>



<p class="wp-block-paragraph">You should now be able to erase, write, and read using BOTH devices at the same time! The final issue to address is to incorporate +STAYOPEN, since we are still losing a lot of time connecting to the programmers.</p>



<h3 class="wp-block-heading" id="h-parallel-programming-with-stayopen">Parallel Programming with +STAYOPEN</h3>



<p class="wp-block-paragraph">In a perfect world, we would be able to copy the same line of logic as when we used +STAYOPEN using a single programmer, but, unfortunately, it is not that easy. Initially, according to CCS support, the ccsloader program does not support two ‘STAYOPEN’ sessions on the same machine. &nbsp;</p>



<p class="wp-block-paragraph">When +STAYOPEN is used, the process creates a Windows server that can communicate with a client. That server has a fixed ID number built into the program. So, when we try to send two instances of the same ID, it doesn’t work; however, CCS were able to get back to me and send over another version of the ccsloader application that, instead, uses the full path and filename as part of the ID. This means that, with our ccsloader and ccsloader1, they should generate two unique IDs.</p>



<p class="wp-block-paragraph">If you are at this point, you will need to ask <a href="mailto:support@ccsinfo.com">support@ccsinfo.com</a> for this version&nbsp;as I am unable to provide it here.</p>



<p class="wp-block-paragraph">The following steps assume&nbsp;you do have this new version (simply replace the ccsloader and ccsloader1 with copies of the newer version).</p>



<ol class="wp-block-list">
<li>You can now replicate the calls we did in ‘Parallel Programming without STAYOPEN’.
<ul class="wp-block-list">
<li>Delay the calls by 500ms.</li>
</ul>
</li>



<li>Any future commands do not need to be delayed; they can be sent purely in parallel or in series with &#8216;wait until completion&#8217; set to false.
<ul class="wp-block-list">
<li>There is no need to set &#8216;wait until completion&#8217; to true anymore, since you will not get live compiler updates either way. Only the original +STAYOPEN command can give updates, but it will not give updates on future commands</li>
</ul>
</li>



<li>Test and verify that the command order still works (Open, Erase, Read, Write, Read), and you’re done!</li>
</ol>



<p class="wp-block-paragraph">You have now successfully performed parallel programming using two programmers AND included the usage of STAYOPEN&nbsp;— &nbsp;which has made the overall process more time efficient.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Learn more about <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming">DMC&#8217;s LabVIEW Programming</a>, and <a href="https://static.dmcinfo.com/contact">contact us</a> today for your next project.</strong></p>
<p>The post <a href="https://static.dmcinfo.com/blog/17789/parallel-programming-with-two-ccs-programmers/">Parallel Programming with Two CCS Programmers</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Communicate with a VeriStand Custom Device Using LabVIEW</title>
		<link>https://static.dmcinfo.com/blog/18525/how-to-communicate-with-a-veristand-custom-device-using-labview/</link>
		
		<dc:creator><![CDATA[Eric Voigt]]></dc:creator>
		<pubDate>Wed, 11 May 2022 08:17:56 +0000</pubDate>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Custom Device Messaging]]></category>
		<category><![CDATA[NI]]></category>
		<category><![CDATA[TestStand]]></category>
		<category><![CDATA[VeriStand]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/18525/how-to-communicate-with-a-veristand-custom-device-using-labview/</guid>

					<description><![CDATA[<p>Table of Contents: Why Should We Configure Custom Device Messaging? Back to Table of Contents Creating Custom Devices in VeriStand is a powerful tool that allows developers to package and deploy code for a device simply by adding the Custom Device to a system definition file. There are two primary methods for transferring data to [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/18525/how-to-communicate-with-a-veristand-custom-device-using-labview/">How to Communicate with a VeriStand Custom Device Using LabVIEW</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph"><u><a id="Table of Contents" name="Table of Contents"></a>Table of Contents:</u></p>

<ol class="wp-block-list">
 <li><a href="#Why Should We Configure Custom Device Messaging?">Why Should We Configure Custom Device Messaging?</a></li>
 <li><a href="#How to Send Messages between a Custom Device and LabVIEW">How to Send Messages between a Custom Device and LabVIEW</a>
 <ol class="wp-block-list">
  <li><a href="#Step 1: Pass Engine Event Ref into Custom Device Engine">Step 1: Pass Engine Event Ref into Custom Device Engine</a></li>
  <li><a href="#Step 2: Create Event Structures in Asynchronous Loop to Receive Messages">Step 2: Create Event Structures in Asynchronous Loop to Receive Messages</a></li>
  <li><a href="#Step 3: Create LabVIEW Code Module to Send Message">Step 3: Create LabVIEW Code Module to Send Message</a></li>
 </ol>
 </li>
</ol>

<h2 class="wp-block-heading"><u><a id="Why Should We Configure Custom Device Messaging?" name="Why Should We Configure Custom Device Messaging?"></a>Why Should We Configure Custom Device Messaging?</u></h2>

<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>

<p class="wp-block-paragraph">Creating Custom Devices in <a href="https://www.ni.com/en-us/shop/data-acquisition-and-control/application-software-for-data-acquisition-and-control-category/what-is-veristand.html?cid=Paid_Search-7013q000001UgkyAAC-Consideration-GoogleSearch_106892618128" target="_blank">VeriStand</a> is a powerful tool that allows developers to package and deploy code for a device simply by adding the Custom Device to a system definition file.</p>

<p class="wp-block-paragraph">There are two primary methods for transferring data to and from a custom device: channels and messages. Channels are typically used to read or write data in a control loop, and they can be interacted with by a user through a VeriStand screen once deployed. On the other hand, Messages generate events to configure and command custom device actions or properties.</p>

<p class="wp-block-paragraph">Messages to Custom Devices are sent through <a href="https://www.ni.com/en-us/shop/labview.html?cid=Paid_Search-7013q000001UgkyAAC-Consideration-GoogleSearch_102713974313&amp;s_kwcid=AL!6304!3!449107487685!e!!g!!ni%20labview&amp;gclid=CjwKCAjwve2TBhByEiwAaktM1AKnkuxVWP8HHCUrwBUDeFguaV8Lp2KOu7twThV-RJW1w0Wo02ojGhoCv3EQAvD_BwE#" target="_blank">LabVIEW</a> code modules. There are many advantages to communicating with a Custom Device using messages from LabVIEW:</p>

<ul class="wp-block-list">
 <li>Messaging data allows for more flexibility in the types of data sent to a Custom Device engine
 <ul class="wp-block-list">
  <li>VeriStand channels only support DBL numeric data, while messaging supports other data types</li>
  <li>The number of channels is fixed by the system definition file, so data structures, like arrays, need to have a fixed size</li>
 </ul>
 </li>
 <li>Because most Custom Devices are deployed through VeriStand onto RT systems, the ability to send messages between the Custom Device and LabVIEW allows for communication with a PC-based LabVIEW application</li>
 <li>LabVIEW code modules for Custom Device messaging can be used in TestStand steps to develop large sequencing and test applications with a Custom Device<br />
 &nbsp;</li>
</ul>

<h2 class="wp-block-heading"><u><a id="How to Send Messages between a Custom Device and LabVIEW" name="How to Send Messages between a Custom Device and LabVIEW"></a>How to Send Messages between a Custom Device and LabVIEW</u></h2>

<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>

<h2 class="wp-block-heading"><u><a id="Step 1: Pass Engine Event Ref into Custom Device Engine" name="Step 1: Pass Engine Event Ref into Custom Device Engine"></a>Step 1: Pass Engine Event Ref into Custom Device Engine</u></h2>

<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>

<p class="wp-block-paragraph">When messages are sent between LabVIEW and a VeriStand Custom Device, the Custom Device engine treats the message as a user event. Before handling this user event in the async loop(s) of the Custom Device, all asynchronous loops should be passed the reference to the Custom Device engine events. This reference contains the events associated with Custom Device messaging in the engine and can be obtained with<strong> NI VeriStand &#8211; Register Custom Device Events.vi</strong>. Below is an example implementation of <strong>RT Driver.vi</strong> with the engine event reference being passed as an initialization parameter into the code that starts the asynchronous Custom Device process.</p>

<p class="wp-block-paragraph"><figure class="wp-block-image"><img decoding="async" alt="Example implementation of RT Driver.vi with the engine event reference being passed as an initialization parameter into the code that starts the asynchronous Custom Device process" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo-1.png"  /></figure>&nbsp;</p>

<h2 class="wp-block-heading"><u><a id="Step 2: Create Event Structures in Asynchronous Loop to Receive Messages" name="Step 2: Create Event Structures in Asynchronous Loop to Receive Messages"></a>Step 2: Create Event Structures in Asynchronous Loop to Receive Messages</u></h2>

<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>

<p class="wp-block-paragraph">Now that the Custom Device engine events reference is accessible from the asynchronous loops, event structures may be created to handle message events. There are two messaging events within the engine event reference: <strong>Message (String) </strong>and<strong> Message (Byte Array)</strong>. Both events contain a <strong>Command</strong>, <strong>Data</strong>, and a <strong>Response Event</strong>. The difference between the two user events is the format of <strong>Data</strong>.</p>

<ul class="wp-block-list">
 <li><strong>Command:</strong> the name or type of message being sent</li>
 <li><strong>Data:</strong> the data associated with the command</li>
 <li><strong>Response Event:</strong> an event reference to send back data to LabVIEW; consider using this to send back data processed by the Custom Device or a confirmation that the message was received</li>
</ul>

<p class="wp-block-paragraph">As shown below in the example code, a case structure may be implemented to handle each type of incoming message to the Custom Device. Each case contains logic to handle the message <strong>Data </strong>as well as generate a response and error message (if applicable). The response and error are bundled as a message response and sent back to LabVIEW through the <strong>Response Event</strong>.</p>

<figure class="wp-block-image"><img decoding="async" alt="Example code, a case structure may be implemented to handle each type of incoming message to the Custom Device" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo-2.png"  /></figure>

<p class="wp-block-paragraph">One limitation of messaging between VeriStand Custom Devices and LabVIEW is that messages can only be formatted as strings or byte arrays; however, messages of any type may be flattened to a text string and converted into a byte array. Below is an example of how message <strong>Data</strong> could be handled within a case to receive data of a type associated with the message <strong>Command</strong> and send any type of response data back to LabVIEW as a byte array. In LabVIEW, message <strong>Data</strong> and responses can be converted to or from a byte array in a similar manner.</p>

<figure class="wp-block-image"><img decoding="async" alt="An example of how message Data could be handled within a case to receive data of a type associated with the message Command and send any type of response data back to LabVIEW as a byte array" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo-3.png"  /></figure>

<h2 class="wp-block-heading"><u><a id="Step 3: Create LabVIEW Code Module to Send Message" name="Step 3: Create LabVIEW Code Module to Send Message"></a>Step 3: Create LabVIEW Code Module to Send Message</u></h2>

<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>

<p class="wp-block-paragraph">After setting up event structures to handle messages sent to the Custom Device, the final step is to send messages and receive responses in LabVIEW. This is made simple by the <strong>Custom Device Communication Palette.</strong></p>

<ul class="wp-block-list">
 <li>First, use <strong>NI VeriStand &#8211; Open Custom Device Reference</strong> to open a reference to the Custom Device specified by <strong>Custom Device Path</strong> (also known as <strong>Node Path</strong>) and <strong>Gateway IP Address</strong> that can be used to send messages</li>
 <li>Next, call <strong>NI VeriStand &#8211; Send Custom Device Message</strong> to send the formatted message&rsquo;s <strong>Command </strong>and <strong>Data</strong>, ensuring that the <strong>Data </strong>sent is of the type expected by the engine</li>
 <li>When a response from the Custom Device is received, call <strong>NI VeriStand &#8211; Close Custom Device Reference</strong> to close the messaging reference.</li>
</ul>

<p class="wp-block-paragraph">.<figure class="wp-block-image"><img decoding="async" alt="Create LabVIEW Code Module to Send Message" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Photo-4.png"  /></figure></p>

<p class="wp-block-paragraph">Scripting VIs based on a VeriStand system definition file can programmatically obtain references to Custom Devices and return properties such as the <strong>Node Path</strong> which is used in the VeriStand messaging VIs to open a messaging reference to a Custom Device. Stay tuned for more VeriStand tutorials and blog posts &mdash; including how to create a system definition scripting library!</p>

<p class="wp-block-paragraph">Learn more about our <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming">LabVIEW Programming</a>, and <a href="https://static.dmcinfo.com/contact">contact us</a> today for your next project!</p>
<p>The post <a href="https://static.dmcinfo.com/blog/18525/how-to-communicate-with-a-veristand-custom-device-using-labview/">How to Communicate with a VeriStand Custom Device Using LabVIEW</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>DMC Flex Framework: A Flexible LabVIEW Toolset</title>
		<link>https://static.dmcinfo.com/blog/21055/dmc-flex-framework-a-flexible-labview-toolset/</link>
		
		<dc:creator><![CDATA[Jesse Batsche]]></dc:creator>
		<pubDate>Tue, 27 Aug 2019 13:16:56 +0000</pubDate>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[Flex Blocks]]></category>
		<category><![CDATA[Flex Coordinators]]></category>
		<category><![CDATA[NI]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/21055/dmc-flex-framework-a-flexible-labview-toolset/</guid>

					<description><![CDATA[<p>DMC Test and Measurement’s Flex Framework is a toolset and design pattern collection based on LabVIEW Object-Oriented&#160;architectures and principles.&#160;The Flex Framework serves as a re-usable code base through which DMC can deliver solutions based on a vetted architecture which has been tested proven on many systems. Table of Contents Customer Benefits Open Solution: DMC can [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21055/dmc-flex-framework-a-flexible-labview-toolset/">DMC Flex Framework: A Flexible LabVIEW Toolset</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">DMC Test and Measurement’s <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming/flex-framework">Flex Framework</a> is a toolset and design pattern collection based on <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming">LabVIEW</a> Object-Oriented&nbsp;architectures and principles.&nbsp;The Flex Framework serves as a re-usable code base through which DMC can deliver solutions based on a vetted architecture which has been tested proven on many systems.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/flex-big-1.png" alt="flex framework"/></figure>


<hr />


<h2 class="wp-block-heading" id="h-table-of-contents">Table of Contents</h2>



<ul class="wp-block-list">
<li><a href="#h-customer-benefits">Customer Benefits</a></li>



<li><a href="#h-flex-blocks-and-flex-coordinators">Flex Blocks and Flex Coordinators</a></li>



<li><a href="#h-ethos-behind-the-flex-framework">Ethos Behind the Flex Framework</a></li>



<li><a href="#h-standout-flex-blocks-and-code-features">Standout Flex Blocks and Code Features</a></li>



<li><a href="#h-dmc-module">DMC Module</a></li>



<li><a href="#h-dmc-device">DMC Device</a></li>



<li><a href="#h-typical-application-module-device-lifecycle">Typical Application Module/Device Lifecycle</a></li>
</ul>


<hr />


<h2 class="wp-block-heading" id="h-customer-benefits"><a id="Customer Benefits" name="Customer Benefits"></a>Customer Benefits</h2>



<p class="wp-block-paragraph"><strong>Open Solution</strong>: DMC can provide clients with license-free source code, allowing clients to extend or explore the code.</p>



<p class="wp-block-paragraph"><strong>Extensible</strong>: DMC’s Flex Framework is based on a proven, scalable, LabVIEW Object-Oriented architecture.&nbsp; This allows for DMC engineers or clients to add pieces/functionality to an application while keeping the overarching application architecture managed and maintained, enabling faster development.</p>



<p class="wp-block-paragraph"><b>Re-Usable CodeBase</b>: Solutions start from a vetted architecture and drivers proven out over multiple projects, instead of re-creating integration logic.&nbsp; Projects also get the benefit of improved supportability as&nbsp;DMC continues to advance and improve the Framework, which can benefit any project that uses the architecture.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Modular Design:&nbsp;</strong>The Flex Framework consists of a collection of stand-alone software packages, which have the potential to be utilized outside of the Flex Framework or extended within the Framework.&nbsp;</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/pyramid_1.png" alt=""/></figure>


<hr />


<h2 class="wp-block-heading" id="h-flex-blocks-and-flex-coordinators"><a id="Flex Blocks and Flex Coordinators" name="Flex Blocks and Flex Coordinators"></a>Flex Blocks and Flex Coordinators</h2>



<p class="wp-block-paragraph">DMC’s Flex Framework consists of two key elements:</p>



<ul class="wp-block-list">
<li>Flex Blocks
<ul class="wp-block-list">
<li>Component pieces that perform an action in an application. Some examples are:
<ul class="wp-block-list">
<li>Digital Multimeters</li>



<li>Power Supplies</li>



<li>Graphing Displays</li>



<li>DAQmx cards</li>



<li>XNET/CAN cards</li>



<li>HMIs</li>
</ul>
</li>
</ul>
</li>



<li>Flex Coordinators
<ul class="wp-block-list">
<li>Constructs which integrate, manage, and build the Flex Blocks into a focused solution</li>
</ul>
</li>
</ul>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Coordinators-and-Blocks.png" alt=""/></figure>



<p class="wp-block-paragraph">Flex Coordinators, such as the Test Stand class, pull from the library of Flex Blocks to create a tailored solution for each client.&nbsp; Flex Coordinators are the ‘brains’ behind the application and serve as the string that ties the Flex Blocks into a functioning software package.</p>



<p class="wp-block-paragraph">Flex Blocks modularize one task, device, or feature set, and are designed to be agnostic of other Flex Blocks wherever possible.</p>


<hr />


<h2 class="wp-block-heading" id="h-ethos-behind-the-flex-framework"><a id="Ethos Behind the Flex Framework" name="Ethos Behind the Flex Framework"></a>Ethos Behind the Flex Framework</h2>



<p class="wp-block-paragraph">The Flex Framework provides a tested and proven starting point for projects&nbsp;eliminating the development time it would take to build up these capabilities from scratch. Furthermore, it establishes a modular design pattern which enables developers to adapt and expand the Flex Framework to client requirements.</p>



<p class="wp-block-paragraph"><strong>Common Code</strong></p>



<p class="wp-block-paragraph">Common code, such as device drivers, do not need to be re-written for each new solution or project.&nbsp;Instead, DMC has developed this code once to be shared and improved in a single location so many of our clients and projects can benefit from future changes or feature additions.</p>



<p class="wp-block-paragraph"><strong>Hardware Abstraction Layer</strong></p>



<p class="wp-block-paragraph">It’s common to have many different brands and types of COTS devices in a test system, but many of them do nearly the same thing.&nbsp;For this reason, interaction with individual devices (i.e. Digital Multimeters (DMMs), Power Supplies (PS))&nbsp;has been abstracted in more general classes.&nbsp;Children of these LabVIEW abstract classes implement specific methods to add device-specific functionality and meaning to the parent’s method.&nbsp;For example, an abstract parent “_Power Supply” class provides a common interface for all Power Supplies, but the children of this class (Agilent HVPS, Lambda ZUP power supply, RMX power supply, etc.) implement the hardware-specific drivers and communication protocols through which the interface acts.</p>



<p class="wp-block-paragraph"><strong>Multi-project interface coherence</strong></p>



<p class="wp-block-paragraph">Each test system may have unique characteristics, but it’s usually desirable to retain commonality in the underlying code modules, LabVIEW user interfaces/user experience (LabVIEW UI/UX), and system design.&nbsp;This enables users to have a consistent experience when moving from one test station to another (i.e. EOL Test Station, R&amp;D Test Station).&nbsp;There are also programming benefits since ramp-up on a new project that leverages the Flex Framework is quicker and lowers overall development cost.</p>



<p class="wp-block-paragraph"><strong>Code Modularity</strong></p>



<p class="wp-block-paragraph">The Flex Framework has code modules that are as independent as possible, allowing them to be re-used without dragging unwanted dependencies into a project.&nbsp;DMC Flex Blocks are agnostics of the existence of other Flex Blocks.&nbsp;Only the Flex Coordinator knows about each Flex Block included in the application.&nbsp;This software encapsulation and modularity keeps code more maintainable over time, which provides greater value to end-users of the Flex Framework.</p>


<hr />


<h2 class="wp-block-heading" id="h-standout-flex-blocks-and-code-features"><a id="Standout Flex Blocks and Code Features" name="Standout Flex Blocks and Code Features"></a>Standout Flex Blocks and Code Features</h2>



<p class="wp-block-paragraph">DMC’s Flex Framework has many Flex Blocks and features which we have explained in separate case studies:</p>



<ul class="wp-block-list">
<li><a href="https://static.dmcinfo.com/our-work/custom-alarm-handling-toolkit-for-labview/">Alarm Handling</a>
<ul class="wp-block-list">
<li>Provides traceability for system faults and notifications</li>



<li>Allow for system recovery from faults or errors</li>



<li>Standalone toolkit</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/adding-user-authentication-to-your-labview-project/">User Access Levels</a>
<ul class="wp-block-list">
<li>Easy to integrate toolset which keeps track of user permission levels</li>



<li>Simple to extend and tailor to customer&#8217;s user role definitions</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/flexible-logging-with-the-labview-results-manager/">Data Logging/Reporting Capabilities</a>
<ul class="wp-block-list">
<li>Flexible logging utility</li>



<li>Live feedback of user-configured, graded, testing parameters in LabVIEW</li>



<li>Standalone toolkit</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/labview-ui-customization-with-grid-viewer/">DMC Grid Viewer</a>
<ul class="wp-block-list">
<li>Dynamic test interface configuration</li>



<li>Subpanels any LabVIEW VI and allows for drag-and-drop interface configuration</li>



<li>Standalone toolkit</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/customizable-ui-in-dmcs-flex-framework/">Tailored User Workflows</a>
<ul class="wp-block-list">
<li>Application-specific interfaces and implementations to tailor the Flex Framework to exact customer needs</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/automatic-and-manual-automation-modes-in-dmcs-flex-framework/">Manual/Automatic Control Modes</a>
<ul class="wp-block-list">
<li>LabVIEW Testing automation abstractions</li>



<li>Automated running of pre-configured testing routines</li>



<li>Manual testing support, for in-depth engineering diagnostics</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/efficient-configuration-management-with-flex-framework/">Configuration Management with Workspaces and DUT construct</a>
<ul class="wp-block-list">
<li>Configuration Management</li>



<li>Single click switching of Device Under Test (DUT)-specific configurations</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/flexible-automated-test-system-with-dmcquencer/">Test Execution with the DMCquencer</a>
<ul class="wp-block-list">
<li>LabVIEW Test Execution Engine</li>



<li>Test automation</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming/llama-an-extensible-logging-framework-for-labview/">Built-In Diagnostics</a>
<ul class="wp-block-list">
<li>I/O Checkout Routines</li>



<li>System self-diagnostic check</li>



<li>Diagnostic Logging</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/streamline-hardware-configuration-with-the-hardware-abstraction-layer/">Hardware Abstraction Layer</a>
<ul class="wp-block-list">
<li>Test stand hardware hot-swap support</li>



<li>LabVIEW design pattern</li>
</ul>
</li>
</ul>


<hr />


<h2 class="wp-block-heading" id="h-dmc-module"><a id="DMC Module" name="DMC Module"></a>DMC Module</h2>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="70" height="68" src="https://static.dmcinfo.com/wp-content/uploads/2019/08/Module-1.png" alt="module 1" class="wp-image-36467" style="width:133px;height:auto"/></figure>



<p class="wp-block-paragraph">DMC Flex Framework’s LabVIEW Object-Oriented architecture is based on a lightweight class named the DMC Module.&nbsp; Most of the classes in the Flex Blocks group are grandchildren of the DMC Module class.&nbsp; Modules are independent pieces of code responsible for a particular function.</p>



<p class="wp-block-paragraph">DMC Modules introduce the concept of a ‘Module Command.’&nbsp; These commands are used to capture a&nbsp;given Module’s API usage, keep track of the data modified by those API calls, and provide a level of traceability to an application.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="65" height="69" src="https://static.dmcinfo.com/wp-content/uploads/2019/08/Module-2.png" alt="Module 2" class="wp-image-36468" style="width:118px;height:auto"/></figure>



<p class="wp-block-paragraph">Additionally, the Module class allows for the definition of daemons and/or interfaces which the Module may use to meter out tasks, maintain heartbeat communication with a device, or provide a user interface for an operator.</p>



<p class="wp-block-paragraph">DMC Modules are typically software constructs which don’t have physical manifestations (i.e. database loggers, file writers, and data processing tools)</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Module-Palette_1.png" alt="module palette"/></figure>


<hr />


<h2 class="wp-block-heading" id="h-dmc-device"><a id="DMC Device" name="DMC Device"></a>DMC Device</h2>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="68" height="64" src="https://static.dmcinfo.com/wp-content/uploads/2019/08/Module-3.png" alt="module 3" class="wp-image-36470" style="width:118px;height:auto"/></figure>



<p class="wp-block-paragraph">The DMC Device class inherits from the DMC Module class and is its most commonly used child.&nbsp; DMC Devices add one additional piece of functionality: variable publishers. &nbsp;Most classes in the Flex Blocks group are children of the DMC Device class.&nbsp; Like Modules, Devices are meant to be independent pieces of code (i.e. they do not interact with or know about the existence of other DMC Devices).</p>



<p class="wp-block-paragraph">Variable publishers are used in the Device Command architecture (which draws from the DMC Module Command architecture).&nbsp; If a device API is called with the Device Command constructs, then the class is able to post ‘modified’ variables to a registered variable publisher.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="69" height="68" src="https://static.dmcinfo.com/wp-content/uploads/2019/08/Module-4.png" alt="module 4" class="wp-image-36471" style="width:117px;height:auto"/></figure>



<p class="wp-block-paragraph">Keeping track of modified variables allows for a single place in an application to monitor variables (an example of this could be a Current Value Table).&nbsp; DMC uses this collection of device variable values to monitor the health of a test system, abort automated testing if a variable violates a safe operating range, and centralize reporting of system variables through the application’s lifecycle.</p>



<p class="wp-block-paragraph">DMC Devices are usually classes which interact with physical hardware (i.e. digital multimeters, power supplies, relay modules, DAQmx hardware).&nbsp;</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Device-Palette_1.png" alt="device palette"/></figure>


<hr />


<h2 class="wp-block-heading" id="h-typical-application-module-device-lifecycle"><a id="Typical Application Module/Device Lifecycle" name="Typical Application Module/Device Lifecycle"></a>Typical Application Module/Device Lifecycle</h2>



<p class="wp-block-paragraph">Many of the projects which utilize the DMC Flex Framework follow a common pattern:</p>



<ol class="wp-block-list">
<li>Application is launched</li>



<li>User configures settings</li>



<li>The user chooses to run an automatic test or manually interact with the system (Manual Mode or Automatic Mode)</li>



<li>The testing Mode (Manual or Automatic) is active until the test finishes or the user clicks &#8216;Abort&#8217;</li>



<li>The system goes to an idle state</li>



<li>Repeat Steps 2-5 as needed</li>



<li>Application is closed</li>
</ol>



<p class="wp-block-paragraph">To accommodate this application lifecycle, a corresponding Module/Device lifecycle is managed by the Flex Coordinators by breaking the Modules/Devices into two groups:</p>



<ul class="wp-block-list">
<li>Eternal Modules/Devices
<ul class="wp-block-list">
<li>Active through the entire application lifecycle</li>



<li>Examples include interlock monitoring devices, database connection modules, etc.</li>
</ul>
</li>



<li>Session Modules/Devices
<ul class="wp-block-list">
<li>Active during the testing mode only. Constructed/initialized when the test begins and terminated/disposed of when the test mode completes</li>



<li>These are typically constructed on application start and parameters pulled from a System Parameters file, but then are disposed of and re-constructed when a test begins
<ul class="wp-block-list">
<li>This is done to capture any settings (and subsequent System Parameter file) modifications prior to starting a test </li>
</ul>
</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">An example lifecycle of both Eternal and Session Modules/Devices are shown below.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Lifecycle.png" alt=""/></figure>


<hr />


<h2 class="wp-block-heading" id="h-national-instruments-labview-experience">National Instruments / LabVIEW Experience</h2>



<p class="wp-block-paragraph">DMC has been a&nbsp;<a href="https://static.dmcinfo.com/about/partners/ni-alliance-partner">National Instruments (NI) Alliance</a>&nbsp;member for over 10 years with one of the largest teams of&nbsp;<a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming">Certified LabVIEW</a>&nbsp;developers in the country, including several National Instruments’ Certified LabVIEW Architects (highest level of certification available), and multiple NI Certified LabVIEW Developers.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="900" height="400" src="https://static.dmcinfo.com/wp-content/uploads/2019/08/image.png" alt="" class="wp-image-33023" srcset="https://static.dmcinfo.com/wp-content/uploads/2019/08/image.png 900w, https://static.dmcinfo.com/wp-content/uploads/2019/08/image-300x133.png 300w, https://static.dmcinfo.com/wp-content/uploads/2019/08/image-768x341.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">DMC is proud to be recognized as a National Instruments Alliance Partner.&nbsp;<a href="https://static.dmcinfo.com/about/partners/ni-alliance-partner">Learn more about DMC&#8217;s National Instruments partnership</a>&nbsp;and <a href="https://static.dmcinfo.com/contact">contact us today</a> to find the&nbsp;Flex Framework solution that&#8217;s right for you.</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21055/dmc-flex-framework-a-flexible-labview-toolset/">DMC Flex Framework: A Flexible LabVIEW Toolset</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Chicago LabVIEW User Group Meeting at DMC</title>
		<link>https://static.dmcinfo.com/blog/21364/chicago-labview-user-group-meeting-at-dmc/</link>
		
		<dc:creator><![CDATA[Darren Jones]]></dc:creator>
		<pubDate>Wed, 26 Jun 2019 12:52:04 +0000</pubDate>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Chicago]]></category>
		<category><![CDATA[Culture]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Locations]]></category>
		<category><![CDATA[Special Events]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[CLUG]]></category>
		<category><![CDATA[Meeting]]></category>
		<category><![CDATA[National Instruments]]></category>
		<category><![CDATA[Programming]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/21364/chicago-labview-user-group-meeting-at-dmc/</guid>

					<description><![CDATA[<p>The Chicago&#160;LabVIEW&#160;Users Group (CLUG)&#160;met at DMCs&#160;Chicago office to discuss&#160;National Instruments Week&#160;2019, and package management systems from NI and JKI. These user groups meet regularly across the country to address various LabVIEW programming techniques, technologies, application design patterns, and much more.&#160; This meeting began with Pizza and networking between DMCers and LabVIEW users from the Chicagoland [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21364/chicago-labview-user-group-meeting-at-dmc/">Chicago LabVIEW User Group Meeting at DMC</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">The Chicago&nbsp;<a href="/services/test-and-measurement-automation/labview-programming">LabVIEW</a>&nbsp;Users Group (CLUG)&nbsp;met at DMCs&nbsp;Chicago office to discuss&nbsp;<a href="/latest-thinking/blog/id/9887/niweek-2019-highlights">National Instruments Week&nbsp;2019</a>, and package management systems from NI and JKI. These user groups meet regularly across the country to address various <strong><a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming">LabVIEW programming</a></strong> techniques, technologies, application design patterns, and much more.&nbsp;</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/1-LabVIEW-Chicago_1.jpg"  /></figure>

<p class="wp-block-paragraph">This meeting began with Pizza and networking between DMCers and LabVIEW users from the Chicagoland area.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/2-LabVIEW-Chicago_1.png"  /></figure>

<p class="wp-block-paragraph">We kicked off the user group meeting by highlighting some of the most exciting features that were released at NI week this year.</p>

<p class="wp-block-paragraph"><strong><a href="//www.slideshare.net/DMCChicago/ni-week-2019-overview" target="_blank" title="NI Week 2019 Overview">NI Week 2019 Overview</a></strong></p>

<p class="wp-block-paragraph"><iframe loading="lazy" allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/4G2hUhgaIIPH53" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" width="595"></iframe></p>

<h2 class="wp-block-heading"><strong>DMC Presentations on LabVIEW Programming</strong></h2>

<p class="wp-block-paragraph">Systems Engineer Ryan Yu presented an overview of NI Package Manager, with content initially developed by National Instruments and presented by Allen Hsu.&nbsp; Yu showed LabVIEW users the workflow for installing, upgrading, and managing NI software. &nbsp;He then highlighted the workflow of both NI Package Manager and SystemLink, when used in conjunction with LabVIEW. Users exchanged ideas with Yu and asked questions on use cases, versioning, and SystemLink feeds.</p>

<p class="wp-block-paragraph"><strong><a href="//www.slideshare.net/DMCChicago/best-practices-for-building-and-distributing-componentized-lab-view-applications" target="_blank" title="NI Package Manager">NI Package Manager</a></strong></p>

<p class="wp-block-paragraph"><iframe loading="lazy" allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/pEv5LqGRLWFZh9" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" width="595"></iframe></p>

<p class="wp-block-paragraph">Systems Engineer Kyle Mitchell demonstrated JKI&rsquo;s VI Package Manager, a reasonably popular tool among the user group. Mitchell gave a walkthrough on&nbsp;how to build and deploy packages within LabVIEW, and users shared their experiences and tips about VIPM.</p>

<p class="wp-block-paragraph"><strong><a href="//www.slideshare.net/DMCChicago/vi-package-manager" target="_blank" title="VI package manager">VI package manager</a> </strong></p>

<p class="wp-block-paragraph"><iframe loading="lazy" allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/pYYPptQ1O4Kzqk" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" width="595"></iframe></p>

<h2 class="wp-block-heading"><strong>Sharing LabVIEW Stories</strong></h2>

<p class="wp-block-paragraph">This section of the meeting is devoted to&nbsp;short topics (max of 10 minutes) talking about a neat project, cool tool, or&nbsp;challenging problem users&nbsp;need help solving.&nbsp;</p>

<p class="wp-block-paragraph">Users shared stories about creating a custom VI to update UI elements through property nodes more effectively, warned&nbsp;about big arrays affecting the search feature, and one&nbsp;user shared a story about how to do LabVIEW translations effectively.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/3-LabVIEW-Chicago.jpg"  /></figure>

<p class="wp-block-paragraph">There was also a shoutout to the&nbsp;<a href="https://labviewwiki.org/wiki/Home">LabVIEW wiki</a>&nbsp;that the community is currently constructing.</p>

<p class="wp-block-paragraph">Thanks to our friends in the LabVIEW user group who made it to the event!</p>

<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/about/partners/ni-alliance-partner">Learn more about DMC&apos;s partnership with National Instruments.</a></p>
<p>The post <a href="https://static.dmcinfo.com/blog/21364/chicago-labview-user-group-meeting-at-dmc/">Chicago LabVIEW User Group Meeting at DMC</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
