<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:g-custom="http://base.google.com/cns/1.0" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
  <channel>
    <title>Test Engineering Nuggets</title>
    <link>https://www.aurumautomation.com</link>
    <description>Trends in Manufacturing Test for Electronics Manufacturing. This includes trends in both hardware  and software.</description>
    <atom:link href="https://www.aurumautomation.com/feed/rss2" type="application/rss+xml" rel="self" />
    <item>
      <title>Enhancing Automated Test Systems with Simulation: Unlocking Continuous Development and Flexibility</title>
      <link>https://www.aurumautomation.com/adding-simulation-to-strengthen-your-automated-test-systems</link>
      <description>Testing in electronics manufacturing can often be  delayed due to hardware availability or logistics. Here's how simulation capabilities to your automated hardware test system can help keep development moving forward efficiently.</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Strengthen Your Automated Test System with Simulation
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/Blog+-+Simulation+%2812%29+%281%29.png"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In electronics manufacturing, the testing process can often be delayed due to hardware availability and/or other logistical issues. These delays can hinder progress, but adding simulation capabilities to your automated hardware test system can help keep development moving forward efficiently. 
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Early Error Detection
           &#xD;
      &lt;br/&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Simulation allows for the identification and correction of design flaws early in the development process, before any physical prototypes are built. This can prevent costly revisions later and helps ensure that the hardware will function correctly under various conditions.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Cost Reduction
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Building multiple physical prototypes to test different scenarios can be expensive. Simulation offers an alternative by enabling comprehensive virtual testing without the need for additional hardware. This reduces costs and allows for more extensive testing and validation.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Testing Under Varied Conditions
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Simulations can replicate extreme conditions and stress tests that might be difficult or risky to conduct with physical hardware. This allows for thorough testing of the hardware's performance under a range of environmental and operational scenarios.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Enhanced Flexibility
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Simulated environments make it easy to adjust configurations or test parameters quickly, which is often time-consuming when working with physical hardware. This flexibility ensures that more testing scenarios can be covered, improving the robustness of the final product.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Efficient Debugging
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Simulation tools provide detailed data that can aid in diagnosing issues during development. This makes it easier to debug and optimize both hardware and software, reducing the time and resources needed for troubleshooting.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Continuity of Development
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           When physical hardware is not yet available due to long lead times or supply chain issues, simulation allows for continuous development. This ensures that projects stay on schedule and that teams can proceed with testing and refinement without delay.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Parallel Development
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Simulation enables parallel development processes, where different teams can work on software and hardware simultaneously. This synchronization reduces the overall development time and ensures that the final product is thoroughly tested and ready for deployment.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Using LabVIEW to Simulate Your Test System
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           LabVIEW provides powerful capabilities for integrating simulation into automated test systems through the use of simulation classes. These classes allow developers to model hardware behavior, enabling software development and testing to proceed without needing the actual hardware. By using simulation classes, developers can create virtual instruments that mimic the interfaces and behaviors of real-world devices.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Continuing on from our recent blog post
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="/why-every-great-automated-test-system-starts-with-a-hal"&gt;&#xD;
      
           Why Every Great Automated Test System Starts with a HAL
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      
           , we can extend the HAL capabilities to include a simulation class. Below is an example of such extension using a new "PSU SIM" LabVIEW class.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/LabVIEW2.png" alt="LabVIEW Simulation Block Diagram"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h6&gt;&#xD;
    &lt;span&gt;&#xD;
      
           LabVIEW HAL Diagram with Simulation Classes
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h6&gt;&#xD;
  &lt;h6&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h6&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           With simulation classes, you can define different operational states, inputs, and outputs for your virtual instruments, making it possible to simulate a wide range of scenarios and conditions. This is particularly useful in environments where hardware availability is a bottleneck or when testing needs to cover extreme or rare conditions that would be difficult to replicate with physical hardware.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The LabVIEW class hierarchy of simulation classes could look as follows: Each generic concrete device could extend to a more specific simulation device class. This flexibility allows you to test your entire system with or without hardware, as shown below.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/LabVIEW3.png" alt="LabVIEW Simulation Class Hierarchy"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h6&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      
           Implementing PSU Simulation Class
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h6&gt;&#xD;
  &lt;h6&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h6&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Conclusion
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            ﻿
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Incorporating simulation capabilities into your automated hardware test system can significantly enhance the efficiency and effectiveness of the development process. It allows for continuous progress, reduces costs, and improves the overall quality and reliability of the final product.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/PauloBadges.png" alt=""/&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/5b616d12/dms3rep/multi/blogpostbackground.jpg" length="47415" type="image/jpeg" />
      <pubDate>Wed, 11 Sep 2024 12:57:18 GMT</pubDate>
      <guid>https://www.aurumautomation.com/adding-simulation-to-strengthen-your-automated-test-systems</guid>
      <g-custom:tags type="string" />
      <media:content medium="image" url="https://irp.cdn-website.com/5b616d12/dms3rep/multi/Blog+-+Simulation+%282%29+%281%29.png">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/5b616d12/dms3rep/multi/blogpostbackground.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Embracing Open Source: Industry Leaders Paving the Way in AI Transparency</title>
      <link>https://www.aurumautomation.com/embracing-open-source-industry-leaders-paving-the-way-to-a-collaborative-community</link>
      <description />
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Accessible AI in Smart Manufacturing
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/iStock-1133995489.jpg"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           In our fast-evolving world of smart manufacturing, the push towards transparency in AI is more than just a trend—it's a game-changer. As technology juggernauts embrace open-source models, the landscape of Industry 4.0 is being transformed, offering new opportunities for innovation, collaboration, and efficiency. This shift towards openness is not only democratizing access to cutting-edge technology but also fostering an environment where continuous improvement and adaptability thrive. In this blog post, we'll explore how the embrace of transparency in AI is revolutionizing smart manufacturing, driving new levels of precision, and creating pathways for industries to thrive in the digital age.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Benefits for Industry 4.0 and Smart Manufacturing
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The shift towards open source is not merely a trend but a strategic move with profound implications for Industry 4.0 and smart manufacturing:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;h4&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Our Commitment
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h4&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            At
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Aurum Automation
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            , we recognize the transformative nature of open-source technology in driving the future of industrial automation and electronics testing in manufacturing. As industry leaders embrace open-source principles, we are committed to harnessing these innovations to deliver solutions that empower our clients to thrive in the era of Industry 4.0 and Smart Manufacturing.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Stay tuned for more exciting news to come!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/5b616d12/dms3rep/multi/blogpostbackground.jpg" length="47415" type="image/jpeg" />
      <pubDate>Wed, 31 Jul 2024 17:35:07 GMT</pubDate>
      <guid>https://www.aurumautomation.com/embracing-open-source-industry-leaders-paving-the-way-to-a-collaborative-community</guid>
      <g-custom:tags type="string">open source,smart manufacturing,ai</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/5b616d12/dms3rep/multi/iStock-1133995489.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/5b616d12/dms3rep/multi/blogpostbackground.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
    <item>
      <title>Why Every Great Automated Test System Starts with a HAL</title>
      <link>https://www.aurumautomation.com/why-every-great-automated-test-system-starts-with-a-hal</link>
      <description>Hardware Abstraction Layers (HALs) should be considered as an invaluable tool for your Test &amp; Measurement system in electronics manufacturing. Today we demonstrate a simple HAL using NI LabVIEW</description>
      <content:encoded>&lt;div data-rss-type="text"&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Decoupling Your Hardware Vendors in Software
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/TestMeasurementEquipment.jpg"/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Ah, the good old days of working at a top-tech company. I was tasked with retrofitting an End-Of-Line test system with a proprietary piece of in-house equipment. Part of the program involved replacing outdated equipment with a more complex device while maintaining backward compatibility with existing production lines in the field.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This was somewhat of a painstaking task when it was discovered that the existing software architecture had device calls sprinkled across various parts of the code—from the instrument level to the test sequence and the reporting mechanism. Data types for devices were even embedded into the UI!
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           The simplest solution would have been to place conditions around the existing code to determine which device to use. However, this approach would have become a maintenance nightmare, making the system difficult to understand and use. It simply wouldn’t scale and would create excessive technical debt for sustaining engineers. No bueno.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Also recall the supply chain crisis during the global pandemic, when test equipment had up to 52-week lead times! Technology leaders had to pivot quickly, substituting hardware for secondary and tertiary sources, leading to software development changes and a whole host of other propagation delays.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           These are just some scenarios where a Hardware Abstraction Layer (HAL) becomes incredibly useful. A HAL decouples the instrument drivers from the rest of your test system while providing a common API with equivalent functionality between test instruments. Great HALs can be written with a deep understanding of each test instrument, with functionality often abstracted for the most critical components. This understanding aids in making the best class hierarchy decisions in an architecture.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Today, we are going to demonstrate a simple HAL using a common test setup—a programmable power supply, digital multimeter, and switch card—implemented with none other than National Instruments LabVIEW.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Consider a simple Programmable Power Supply (PSU) instrument. A UML class diagram for a PSU class with some standard functionality might look like so:
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/HAL_PSU_UML.png" alt=""/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Using LabVIEW, we can create the classes of the base PSU class, override them in Keithley_PSU and NI_PSU, while implementing driver-specific logic in those child classes. Now you can call your common PSU API at your sequence level, without it having any knowledge of the vendor-specific device!
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Here's an example of how your block diagram may look like for setting 24V DC, 1A current limit and enabling its output:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/HAL_Class_Abstraction.png" alt=""/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Similarly, with a Digital Multimeter (DMM) and Switch card, your class design may look comparable to that of the PSU. Your UML class diagram could look something like this:
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/UML+class3.png" alt=""/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Now suppose you had a more complex device, such as a multifunction data acquisition module that was comprised of a DMM and a Switch module. How could you re-use the Switch and DMM device, combining them to create a DAQ device with LabVIEW?
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Enter Interfaces.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;a href="https://forums.ni.com/t5/Community-Documents/LabVIEW-Interfaces-The-Decisions-Behind-the-Design/ta-p/4040237#:~:text=Interfaces%20are%20a%20new%20part,a%20companion%20concept%20to%20classes" target="_blank"&gt;&#xD;
      
           National Instruments introduced Interfaces to LabVIEW in 2020
          &#xD;
    &lt;/a&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            , allowing for multiple class inheritance. This means that DMM and Switch devices could be made into interfaces, with corresponding classes using each interface. Finally a DAQ device could implement both DMM and Switch interfaces. A UML diagram might look like the following:
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/HAL_DAQ_UML.png" alt=""/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           This becomes incredibly handy if your device has multi-functions, such as connecting MUX, Matrix or Relays, taking a measurement and disconnecting. Using LabVIEW, here's how your block diagram may look:
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/HAL_Interface_Abstraction.png" alt=""/&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div data-rss-type="text"&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            In the example above, your DMM functions could come from both a DMM and DAQ device, while your Switch functions could come from either DAQ or Switch. Vendor-specific implementations would go in their corresponding classes. LabVIEW interface VIs must all be overriden by classes that implement them, and interfaces can also inherit from other interfaces.
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Just as importantly, here's
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://www.ni.com/docs/en-US/bundle/labview/page/creating-a-labview-class-or-interface.html#:~:text=Create%20a%20new%20LabVIEW%20project,Interface%20from%20the%20shortcut%20menu" target="_blank"&gt;&#xD;
      
           how to create LabVIEW classes and interfaces
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Advantages
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Test Team Familiarity
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           - Having generic device calls throughout your Test Sequences makes for simpler readability and standardization across your manufacturing test team. Your team does not require an understanding on all device specifics, but rather an understanding of the API functionality that abstracts away vendor implementation.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Updating a test sequence for a new instrument or obsolete instrument
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           - This task mainly consists of creating a new device class, implementing its vendor-specific functionality, and then adding it to your instrument selection list. No other piece of code should be touched, unless your HAL API needs to include a specific function of the new device that's not already covered. In that scenario, only configuration or database information would require updating.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Clean Code
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           - Just as importantly, not having various conditions and corner cases scattered throughout your application to handle custom logic. Keeping technical debt at an absolute minimum will help make for a happier team, especially your sustaining engineers
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      
           .
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;h3&gt;&#xD;
    &lt;span&gt;&#xD;
      
           Summary
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/h3&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           A HAL can provide a powerful, scalable software solution that will mitigate technical debt down the road. While there may be additional up-front architecture design and development time, this level of abstraction can pay significant dividends if properly designed. Consider scope changes, device obsolescence and spare part availability when designing your test system.
          &#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;br/&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      
           [Updated July 14, 2024]
          &#xD;
    &lt;/span&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;span&gt;&#xD;
        
            Code sample can be found in our company open-source repository
           &#xD;
      &lt;/span&gt;&#xD;
    &lt;/span&gt;&#xD;
    &lt;a href="https://github.com/AurumAutomation/Tools" target="_blank"&gt;&#xD;
      
           here
          &#xD;
    &lt;/a&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
  &lt;p&gt;&#xD;
    &lt;span&gt;&#xD;
      &lt;br/&gt;&#xD;
    &lt;/span&gt;&#xD;
  &lt;/p&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
  &lt;img src="https://irp.cdn-website.com/5b616d12/dms3rep/multi/PauloBadges.png" alt=""/&gt;&#xD;
&lt;/div&gt;</content:encoded>
      <enclosure url="https://irp.cdn-website.com/5b616d12/dms3rep/multi/blogpostbackground.jpg" length="47415" type="image/jpeg" />
      <pubDate>Mon, 17 Jun 2024 16:10:50 GMT</pubDate>
      <guid>https://www.aurumautomation.com/why-every-great-automated-test-system-starts-with-a-hal</guid>
      <g-custom:tags type="string">labview,hal</g-custom:tags>
      <media:content medium="image" url="https://irp.cdn-website.com/5b616d12/dms3rep/multi/TestMeasurementEquipment.jpg">
        <media:description>thumbnail</media:description>
      </media:content>
      <media:content medium="image" url="https://irp.cdn-website.com/5b616d12/dms3rep/multi/blogpostbackground.jpg">
        <media:description>main image</media:description>
      </media:content>
    </item>
  </channel>
</rss>
