<?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>Keith Janson, Author at DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/author/keithj/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Tue, 07 Jul 2026 14:38:41 +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>Keith Janson, Author at DMC, Inc.</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to Use Application Code Manager (ACM) with PlantPAx Distributed Control System (DCS)</title>
		<link>https://static.dmcinfo.com/blog/17035/how-to-use-application-code-manager-acm-with-plantpax-distributed-control-system-dcs/</link>
		
		<dc:creator><![CDATA[Keith Janson]]></dc:creator>
		<pubDate>Tue, 07 Nov 2023 14:24:35 +0000</pubDate>
				<category><![CDATA[Allen Bradley PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/17035/how-to-use-application-code-manager-acm-with-plantpax-distributed-control-system-dcs/</guid>

					<description><![CDATA[<p>Rockwell&apos;s Application Code Manager (ACM) can be used with PlantPAx to rapidly generate Control Module, Equipment Module, and Phase configuration that adheres to standard templates and best practices. Here&apos;s a quick start guide on setting up your first PlantPAx project in ACM. Creating the Base Project Importing Base PlantPAx Definitions Now we have our base [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/17035/how-to-use-application-code-manager-acm-with-plantpax-distributed-control-system-dcs/">How to Use Application Code Manager (ACM) with PlantPAx Distributed Control System (DCS)</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Rockwell&apos;s Application Code Manager (ACM) can be used with PlantPAx to rapidly generate Control Module, Equipment Module, and Phase configuration that adheres to standard templates and best practices. Here&apos;s a quick start guide on setting up your first PlantPAx project in ACM.</p>

<div data-oembed-url="https://youtu.be/QEyDRuLWZJ0">
<div>
<div style="left: 0; width: 100%; height: 0; position: relative; padding-bottom: 56.25%;"><iframe allow="accelerometer *; clipboard-write *; encrypted-media *; gyroscope *; picture-in-picture *; web-share *;" allowfullscreen="" scrolling="no" src="//if-cdn.com/rCXSP0R" style="top: 0; left: 0; width: 100%; height: 100%; position: absolute; border: 0;"></iframe></div>
</div>
</div>

<h2 class="wp-block-heading">Creating the Base Project</h2>

<ol class="wp-block-list">
 <li>Go to PCDC for Rockwell and download the Version 5 Library of PlantPAx
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>Note &ndash; PlantPAx AOIs and instruction sets are now baked into the firmware of the P controllers from Rockwell and do not require downloading, but the PCDC still allows you to download some ancillary AOIs, configuration utilities, and the application code manager project.</li>
 </ol>
 </li>
 <li>Open Application Code Manager (ACM).</li>
 <li>Create a new test project (<strong>File &gt; New &gt; Project</strong>)</li>
 <li>From our Download &ndash; we have already installed the PlantPAx library &ndash; we will go ahead and open the base project provided from Rockwell by selecting it and clicking <strong>Next&gt;&gt;</strong>
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>This is what gives definition to how this project will be created.</li>
  <li>Here is where we can select how we would like our control strategies to be implemented.
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li>We are going to use Function Block (FB) diagrams here</li>
  </ol>
  </li>
 </ol>
 </li>
 <li>Give the base project a Name at the top of the Object Configuration Wizard</li>
 <li>Click <strong>Finish</strong></li>
</ol>

<h2 class="wp-block-heading">Importing Base PlantPAx Definitions</h2>

<p class="wp-block-paragraph">Now we have our base project created! This is really what is going to give us that backend for generating our .ACD file later as well as our HMI displays.</p>

<ol class="wp-block-list">
 <li>Import some of the base PlantPAx definitions (do that in order)
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>Add the Historian
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li><strong>System View &gt; Project &gt; Historian &gt; ScanClass &gt; Add </strong>

   <ol class="wp-block-list">
    <li>Select the process tab by clicking the <strong>+ </strong>and selecting the item in the line below.</li>
    <li>Click <strong>Next &gt; Finish</strong>
    <ol class="wp-block-list" style="list-style-type:lower-alpha;">
     <li>This imports the base definition.</li>
    </ol>
    </li>
   </ol>
   </li>
  </ol>
  </li>
  <li>Import the Alarm definition.
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li><strong>System View &gt; Project &gt; HMI &gt; Alarms &gt; Add</strong>
   <ol class="wp-block-list">
    <li>Select the process tab by clicking the <strong>+ </strong>and selecting the logical organizer item in one of the lines below.</li>
    <li>Click <strong>Next &gt; Finish</strong></li>
   </ol>
   </li>
  </ol>
  </li>
  <li>Import the HMI
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li><strong>System View &gt; Project &gt; HMI &gt; Displays &gt; Add</strong>
   <ol class="wp-block-list">
    <li>Select the process tab by clicking the <strong>+ </strong>and selecting the item in the line below.</li>
    <li>Click <strong>Next &gt; Next &gt; Finish</strong></li>
   </ol>
   </li>
  </ol>
  </li>
 </ol>
 </li>
</ol>

<h2 class="wp-block-heading">Additional Definitions</h2>

<p class="wp-block-paragraph">Once all of these are imported, we can go through and set up some additional definitions.</p>

<ol class="wp-block-list">
 <li>Add a Display
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li><strong>System View &gt; Project &gt; HMI &gt; Displays</strong>

  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li>Click on the project that now shows in as an item below once you click on <strong>Displays</strong></li>
   <li>Click on <strong>Displays</strong> in the center rectangular module to the right of <strong>Parameters</strong></li>
   <li>Right click on the white space of the module &gt; <strong>Add New</strong></li>
   <li>Rename the display&rsquo;s <strong>Name</strong></li>
   <li>Create a <strong>Display Title</strong></li>
  </ol>
  </li>
 </ol>
 </li>
</ol>

<p class="wp-block-paragraph">Now, we have a Display for some of our objects to reference to autogenerate some of their HMI corresponding devices.</p>

<ol class="wp-block-list">
 <li>Now that definitions are set up, we want to drag in our controller
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>Go to <strong>Registered Libraries</strong>, expand the dropdown</li>
  <li>Expand the <strong>Process Library</strong></li>
  <li>Expand <strong>Controller</strong></li>
  <li>Expand <strong>ControlLogix</strong></li>
  <li>Click and drag the <strong>Process Control</strong> version from the upper right module to the lower left <strong>Controller Preview </strong>module. Place it in the <strong>Controllers </strong>folder.
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li>This will open an Object Configuration Wizard tab.</li>
  </ol>
  </li>
 </ol>
 </li>
</ol>

<p class="wp-block-paragraph">This gives us all the configuration options available with this controller definition.</p>

<ol class="wp-block-list">
 <li>Give it a <strong>Name.</strong></li>
 <li>Give it a <strong>Description.</strong></li>
</ol>

<p class="wp-block-paragraph"><u>Parameters &gt; 01 &#8211; Controller</u></p>

<p class="wp-block-paragraph">Customize the information about this controller by clicking into the line items and modifying them.</p>

<ul class="wp-block-list">
 <li>What slot it is in</li>
 <li>The size of the back plane</li>
 <li>The version</li>
 <li>The specific ProcessorType</li>
 <li>Enable the <strong>PlantPAxTaskingModel</strong>
 <ul class="wp-block-list">
  <li>Click the dropdown in the right column of the line &gt; <strong>True</strong></li>
 </ul>
 </li>
</ul>

<p class="wp-block-paragraph"><u>Parameters &gt; 01 &ndash; HMI</u></p>

<p class="wp-block-paragraph">Set up definitions on how the FactoryTalk SE will be integrated with it.</p>

<ol class="wp-block-list">
 <li>Give it an Area</li>
 <li>Set the Path to [Plant_Controller}</li>
</ol>

<p class="wp-block-paragraph"><u>Other Items</u></p>

<p class="wp-block-paragraph">You can configure any of the rest of the items, or you can leave them as the defaults.</p>

<ol class="wp-block-list">
 <li>Click <strong>Finish</strong></li>
</ol>

<p class="wp-block-paragraph">You&rsquo;ll see that the <strong>Controller</strong> has now been dropped into the project as well. This has created our base tasking structure, as we enabled the PlantPAx tasking model. We have the <strong>Fast</strong>, <strong>Normal</strong>, <strong>Slow</strong>, and <strong>System</strong> tasks here with some of the base program definitions already laid out to do some of the backend, or the system level, functions with PlantPAx.</p>

<p class="wp-block-paragraph">The next thing we&rsquo;ll do is drop in some of our organizational folders.</p>

<ol class="wp-block-list">
 <li>Expand <strong>Organization</strong> in the <strong>Recent Libraries</strong> module on the right.

 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>Expand <strong>Folder</strong></li>
  <li>Drag the <strong>Organization_Folder</strong> to the <strong>Class View </strong>module and into the <strong>Plant_Controller</strong> folder.
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li>This will open an Object Configuration Wizard tab.</li>
  </ol>
  </li>
  <li><strong>Name</strong> the top-level folder.
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li>In the example, we named it Plant.</li>
  </ol>
  </li>
  <li>Add a <strong>Description</strong>
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li>In the example, we named it Plant.</li>
  </ol>
  </li>
  <li><strong>Next &gt; Finish</strong></li>
 </ol>
 </li>
</ol>

<p class="wp-block-paragraph">This creates an <strong>Organization_Folder </strong>with our new subfolder.</p>

<ol class="wp-block-list">
 <li>Create a Bioreactor suite.
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>Double click on <strong>Organization_Folder &gt; Add New Instances</strong></li>
  <li>Make the <strong>Name </strong>and <strong>Description </strong>say <strong>BIORX</strong></li>
  <li><strong>Next &gt; Finish</strong></li>
 </ol>
 </li>
 <li>Create a Reactor within that suite.
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>Double click on <strong>Organization_Folder &gt; Add New Instances</strong></li>
  <li>Make the <strong>Name </strong>and <strong>Description </strong>say <strong>RX_1001</strong></li>
  <li><strong>Next &gt; Finish</strong></li>
 </ol>
 </li>
</ol>

<p class="wp-block-paragraph">We can have ACM build out that hierarchy now.</p>

<ol class="wp-block-list">
 <li>Under <strong>Class View</strong>, select <strong>Plant &gt; ChildFolders</strong>

 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>Add a ChildFolder by right clicking on the white space of the module &gt; <strong>Add New</strong></li>
  <li>Click the white space in the line item under <strong>ChildFolderName</strong></li>
  <li>Click the <strong>&hellip; &gt; Project &gt; Controllers &gt; Plant Controllers &gt; Organization_Folder &gt; BIORX &gt; Finish</strong>
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li>This links it to the bioreactor folder.</li>
  </ol>
  </li>
 </ol>
 </li>
 <li>Under <strong>Class View</strong>, select <strong>BIORX </strong>(When asked to Sav Changes to Plant ? select <strong>Yes</strong>)
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li><strong>BIORX &gt; ChildFolders</strong></li>
  <li>Add a ChildFolder by right clicking on the white space of the module &gt; <strong>Add New</strong></li>
  <li>Click the white space in the line item under <strong>ChildFolderName</strong></li>
  <li>Click the <strong>&hellip; &gt; Project &gt; Controllers &gt; Plant Controllers &gt; Organization_Folder &gt; RX_1001 &gt; Finish</strong>
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li>This links our reactor instance to our bioreactor suite</li>
  </ol>
  </li>
 </ol>
 </li>
 <li>Click <strong>Apply Changes</strong></li>
</ol>

<p class="wp-block-paragraph">Now, our folder hierarchy is set!</p>

<p class="wp-block-paragraph">Next, we will drop in some example devices as well.</p>

<ol class="wp-block-list">
 <li>Open the <strong>ControlStrategies</strong> folder under the <strong>Registered Libraries</strong> module on the far right.

 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li><strong>Registered Libraries &gt;</strong> <strong>ControlStrategies &gt; Device Control</strong></li>
 </ol>
 </li>
 <li>Grab a valve and drag it into the <strong>Plant_Controller</strong> folder under the <strong>Class View</strong> module on the left.
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li><strong>Class View &gt; Controllers &gt; Plant_Controller</strong></li>
 </ol>
 </li>
</ol>

<p class="wp-block-paragraph">Now that we have created our valve, we will go ahead and assign our control module program to our bioreactor.</p>

<ol class="wp-block-list">
 <li value="3"><strong>Class View &gt; Controllers &gt; Plant_Controller &gt; Organization Folder &gt; RX_1001</strong></li>
 <li value="4">Go to the center module and click <strong>ChildFolders</strong>
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>Add a ChildFolder by right clicking on the white space of the module &gt; <strong>Add New</strong></li>
  <li>Click the white space in the line item under <strong>ChildFolderName</strong></li>
  <li>Click the <strong>&hellip; &gt; Project &gt; Controllers &gt; Plant_Controller &gt; Program &gt; RX_1001_CMs &gt; Finish</strong></li>
 </ol>
 </li>
 <li value="5">Click <strong>Apply Changes</strong></li>
</ol>

<p class="wp-block-paragraph">The last three steps:</p>

<ul class="wp-block-list">
 <li>How to link this device to a display in FactoryTalk SE
 <ul class="wp-block-list" style="list-style-type:circle;">
  <li>We can now browse to the display we made at the beginning of this tutorial by finding it in <strong>Parameters</strong> and clicking on the <strong>&hellip;</strong> on that item&rsquo;s line.</li>
 </ul>
 </li>
</ul>

<figure class="wp-block-image"><img decoding="async" alt="Browse to Display" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/browse-to-display.png"  /></figure>

<p class="wp-block-paragraph">Select the RX_1001 as our associated display.</p>

<figure class="wp-block-image"><img decoding="async" alt="Select the RX 1001 as our associated display" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/select-the-rx-1001-as-our-associated-display.png"  /></figure>

<ol class="wp-block-list">
 <li>Click <strong>Finish</strong>

 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>This brings in that pathway and makes that link on the backend.</li>
 </ol>
 </li>
</ol>

<p class="wp-block-paragraph">Now, we can generate our ACD as well as our FactoryTalk USC configuration with this display and this valve already instance on it.</p>

<p class="wp-block-paragraph"><u>Generate Our ACD </u></p>

<p class="wp-block-paragraph">This is our controller configuration.</p>

<ol class="wp-block-list">
 <li><strong>Class View &gt; Controllers </strong>and right click on <strong>Plant_Controller &gt; Generate Controller</strong></li>
 <li>Check Create ACD</li>
 <li><strong>. . . &gt; Desktop &gt; OK &gt; Generate</strong></li>
</ol>

<p class="wp-block-paragraph">This will generate all our configuration as we just defined. It goes fairly quickly because we only have a single device here. It can take a considerable amount of time with a much larger configuration, so be prepared to generate the ACD and maybe go to lunch if you have a larger project.</p>

<p class="wp-block-paragraph">Click <strong>Close</strong> once finished.</p>

<p class="wp-block-paragraph">Now, we can go and open that ACD.</p>

<p class="wp-block-paragraph"><strong>File Explorer &gt; Desktop &gt;Plant_Controller.ACD</strong></p>

<p class="wp-block-paragraph">Now that our project is open, we can see we have our PlantPAx project module defined on the left.</p>

<p class="wp-block-paragraph">If you click the <strong>Logical Organizer</strong> on the bottom right, you can expand the following folders: <strong>Plant &gt; BIORX &gt; RX_1001 &gt; RX_1001_CMs </strong>and click on the valve <strong>XV101</strong></p>

<p class="wp-block-paragraph">You will then see the valve created as defined in ACM. Now we are done creating our controller configuration!</p>

<h2 class="wp-block-heading">Generate Our HMI Display</h2>

<p class="wp-block-paragraph">Next, we will go ahead and generate our HMI display information.</p>

<ol class="wp-block-list">
 <li>Go back to ACM
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li><strong>System View &gt; Project &gt; HMI &gt; Displays &gt; FTViewSE_Server</strong></li>
  <li>Right click on <strong>FTViewSE_Server &gt; Generate Displays &gt; Generate RX_1001_display &gt; Save &gt; OK</strong></li>
 </ol>
 </li>
 <li>Go to our sample project we already have set up in <strong>FactoryTalk View Studio</strong>
 <ol class="wp-block-list" style="list-style-type:lower-alpha;">
  <li>We have a blank template <strong>Display</strong> for our <strong>RX_1001</strong>
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li>You can view this by clicking on <strong>Explorer &gt; Network &gt; PlantPAx &gt; HMI Area &gt; PlantPAxDemoSE &gt; Graphics &gt; Displays &gt; RX_1001</strong></li>
  </ol>
  </li>
  <li>We will now import our ACM configuration.
  <ol class="wp-block-list" style="list-style-type:lower-roman;">
   <li>Do so by clicking <strong>Explorer &gt; Network &gt; PlantPAx &gt; HMI Area &gt; PlantPAxDemoSE &gt; Graphics</strong>
   <ol class="wp-block-list">
    <li>Right click on <strong>Displays &gt; Import and Export&hellip; &gt; Import graphic information into displays &gt; Next &gt; No &gt; Next &gt; Single display import file &gt; Select the single display import file: &hellip; &gt; RX_1001.xml &gt; Select the display to import to: &hellip; &gt; Displays &gt; Process Graphics &gt; RX_1001 &gt; Finish &gt; X</strong> (close the pop up window)</li>
    <li>By clicking <strong>Explorer &gt; Network &gt; PlantPAx &gt; HMI Area &gt; PlantPAxDemoSE &gt; Graphics &gt; Displays &gt; RX_1001</strong>, you can see that it instance our valve that we created in ACM.
    <ol class="wp-block-list" style="list-style-type:lower-alpha;">
     <li>Right click on the instance &gt; <strong>Global Object Parameter Values</strong></li>
    </ol>
    </li>
   </ol>
   </li>
  </ol>
  </li>
 </ol>
 </li>
</ol>

<p class="wp-block-paragraph">That is all we are going to demonstrate for now. We will follow up with some additional ACM videos getting to some of the more advanced configuration as well.</p>

<h2 class="wp-block-heading">Read More About ACM</h2>

<ul class="wp-block-list">
 <li><a href="https://static.dmcinfo.com/latest-thinking/blog/id/10013/importing-and-customizing-a-library-with-application-code-manager">Importing and Customizing a Library with Application Code Manager</a></li>
 <li><a href="https://static.dmcinfo.com/latest-thinking/blog/id/10010/rockwell-library-designer-creating-customizing-and-publishing-a-library">Rockwell Library Designer: Creating, Customizing, and Publishing a Library</a></li>
</ul>

<p class="wp-block-paragraph"><strong>Learn more about </strong><a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/process-control-automation"><strong>DMC&rsquo;s Process Automation solutions and ACM</strong></a><strong> as well as our </strong><a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/allen-bradley-plc-programming"><strong>partnership with Rockwell Automation</strong></a><strong> and </strong><a href="https://static.dmcinfo.com/contact"><strong>contact us</strong></a><strong> today for your next project!</strong></p>
<p>The post <a href="https://static.dmcinfo.com/blog/17035/how-to-use-application-code-manager-acm-with-plantpax-distributed-control-system-dcs/">How to Use Application Code Manager (ACM) with PlantPAx Distributed Control System (DCS)</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>DCS &#038; MES Integration Test Case</title>
		<link>https://static.dmcinfo.com/blog/17317/dcs-mes-integration-test-case/</link>
		
		<dc:creator><![CDATA[Keith Janson]]></dc:creator>
		<pubDate>Mon, 07 Aug 2023 23:31:35 +0000</pubDate>
				<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[MES]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/17317/dcs-mes-integration-test-case/</guid>

					<description><![CDATA[<p>DMC collaborated with Dow and Siemens to create a process demonstration testbed at MxD in Chicago. As part of this testbed, DMC integrated Siemens’ PCS neo (DCS) and Opcenter (MES) platforms to demonstrate the value of cross-communication between the ISA-95 levels 2 (DCS) and 3 (MES). While both the Distributed Control System (DCS) and MES [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/17317/dcs-mes-integration-test-case/">DCS &#038; MES Integration Test Case</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">DMC collaborated with Dow and Siemens to create a process demonstration testbed at <a href="https://www.mxdusa.org/" target="_blank">MxD</a> in Chicago. As part of this testbed, DMC integrated Siemens’ PCS neo (DCS) and Opcenter (MES) platforms to demonstrate the value of cross-communication between the ISA-95 levels 2 (DCS) and 3 (MES).</p>



<p class="wp-block-paragraph">While both the Distributed Control System (DCS) and MES layers provide automation capability, they serve two very different purposes. PCS neo, our DCS, excels at device level control, sequencing, and visualization. Opcenter, our MES, is geared towards automating workflows and managing data from disparate sources.</p>



<p class="wp-block-paragraph">By integrating these two layers, we demonstrate a use case of how a complex set of operations (process actions, operator actions, data logging, lab testing, etc.) can be simplified into a repeatable, streamlined standard operating procedure.</p>



<p class="wp-block-paragraph">As a demonstration use case for the Manufacturing Execution System (MES) integration, we developed a simple scenario where a work order would perform a basic process action and then create a corresponding lab test to verify quality prior to product release. To integrate PCS neo and Opcenter, DMC used OPC UA to facilitate secure and robust bi-directional communication.</p>



<p class="wp-block-paragraph">In Opcenter, a Supervisor would create a work order instance by selecting a preconfigured template and filling out the required information. In our demo scenario, the Supervisor is manually creating the work order and filling in the required information; however, in a real-world application, this process could be further automated such that an ERP generates the work order on a scheduled period, the completion of a batch on the process control system, etc.</p>



<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="900" height="441" src="https://static.dmcinfo.com/wp-content/uploads/2023/08/image.png" alt="PCS neo MES Work Orders" class="wp-image-32633" srcset="https://static.dmcinfo.com/wp-content/uploads/2023/08/image.png 900w, https://static.dmcinfo.com/wp-content/uploads/2023/08/image-300x147.png 300w, https://static.dmcinfo.com/wp-content/uploads/2023/08/image-768x376.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">After creating the work order, the Supervisor releases it to Operations. The work order will then appear in the Task List for an Operator to start.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="900" height="440" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-operator-task-list.png" alt="Operator Task List" class="wp-image-17314" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-operator-task-list.png 900w, https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-operator-task-list-300x147.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-operator-task-list-768x375.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">The first thing our work order will do is prompt the Operator to input a level to charge the tank to. In our demonstration case, this could be thought of as a proxy for the Operator inputting or verifying batch formula information, performing any required manual actions, or completing any other general workflow items that are better managed in the MES layer.</p>



<p class="wp-block-paragraph">Once confirmed, our work order will then send the information to our PCS neo system and trigger an automated transfer of material between the tanks to the set point the Operator previously entered.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="900" height="440" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-task-execution.png" alt="Task Execution" class="wp-image-17315" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-task-execution.png 900w, https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-task-execution-300x147.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-task-execution-768x375.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">After this transfer begins in PCS neo, Opcenter generates a separate workflow in its RD&amp;L (Research, Development, and Laboratory) module to create a sample request to verify product quality.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="900" height="441" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-open-sample-wizard.png" alt="Open Sample Wizard" class="wp-image-17316" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-open-sample-wizard.png 900w, https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-open-sample-wizard-300x147.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/05/pcs-neo-mes-open-sample-wizard-768x376.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">Once the RD&amp;L results are entered, it will send a passing result back to the Opcenter work order, which allows the order to be completed and the product to be released.</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="900" height="440" src="https://static.dmcinfo.com/wp-content/uploads/2023/08/pcs-neo-mes-wp-in-progress.png" alt="WP in Progress" class="wp-image-35301" srcset="https://static.dmcinfo.com/wp-content/uploads/2023/08/pcs-neo-mes-wp-in-progress.png 900w, https://static.dmcinfo.com/wp-content/uploads/2023/08/pcs-neo-mes-wp-in-progress-300x147.png 300w, https://static.dmcinfo.com/wp-content/uploads/2023/08/pcs-neo-mes-wp-in-progress-768x375.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">In addition to the above, we also demonstrated the value of putting this on mobile platforms like <a href="https://static.dmcinfo.com/blog/18553/pcs-neo-on-ipads/" target="_blank" rel="noreferrer noopener">iPads</a>.</p>



<p class="wp-block-paragraph"><strong>Learn more about </strong><a href="https://static.dmcinfo.com/about/partners/siemens-solution-partner/" target="_blank" rel="noreferrer noopener"><strong>DMC’s Siemen’s partnership</strong></a><strong> and </strong><a href="https://static.dmcinfo.com/contact/" target="_blank" rel="noreferrer noopener"><strong>contact us</strong></a><strong> today for your next project.</strong></p>
<p>The post <a href="https://static.dmcinfo.com/blog/17317/dcs-mes-integration-test-case/">DCS &#038; MES Integration Test Case</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Use FactoryTalk View Studio Command Line</title>
		<link>https://static.dmcinfo.com/blog/17715/how-to-use-factorytalk-view-studio-command-line/</link>
		
		<dc:creator><![CDATA[Keith Janson]]></dc:creator>
		<pubDate>Fri, 10 Mar 2023 16:51:37 +0000</pubDate>
				<category><![CDATA[Allen Bradley PLC]]></category>
		<category><![CDATA[HMI and SCADA]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/17715/how-to-use-factorytalk-view-studio-command-line/</guid>

					<description><![CDATA[<p>During last&#160;year&#8217;s&#160;ROKLive event in Orlando, I learned about a feature in FactoryTalk View Site Edition that I have already begun leveraging in all my projects: the FactoryTalk View Studio Command Line. The Command Line can be accessed from the project tree under the System Folder. Clicking this opens a blank text window with an ellipsis [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/17715/how-to-use-factorytalk-view-studio-command-line/">How to Use FactoryTalk View Studio Command Line</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">During last&nbsp;year&#8217;s&nbsp;<a href="https://static.dmcinfo.com/latest-thinking/blog/id/10368/dmc-attended-rockwells-roklive-2022">ROKLive</a> event in Orlando, I learned about a feature in FactoryTalk View Site Edition that I have already begun leveraging in all my projects: the FactoryTalk View Studio Command Line.</p>



<p class="wp-block-paragraph">The Command Line can be accessed from the project tree under the System Folder. Clicking this opens a blank text window with an ellipsis button in the top right.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1707" height="391" src="https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-1.png" alt="" class="wp-image-36276" srcset="https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-1.png 1707w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-1-300x69.png 300w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-1-1024x235.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-1-768x176.png 768w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-1-1536x352.png 1536w" sizes="(max-width: 1707px) 100vw, 1707px" /></figure>



<p class="wp-block-paragraph">Clicking the ellipsis gives you access to the Command Wizard, which allows you to select and create commands similar to how you would on a button object.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1399" height="615" src="https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-2.png" alt="" class="wp-image-36277" srcset="https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-2.png 1399w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-2-300x132.png 300w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-2-1024x450.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-2-768x338.png 768w" sizes="(max-width: 1399px) 100vw, 1399px" /></figure>



<p class="wp-block-paragraph">After creating your command, it will appear in the Command Line. Hit Enter&nbsp;to execute the command, or set of commands.</p>



<p class="wp-block-paragraph">It&#8217;s usually beneficial to have the Diagnostic List up as well&nbsp;to verify that the commands were executed successfully.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1413" height="416" src="https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-3.png" alt="" class="wp-image-36278" srcset="https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-3.png 1413w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-3-300x88.png 300w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-3-1024x301.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-3-768x226.png 768w" sizes="(max-width: 1413px) 100vw, 1413px" /></figure>



<p class="wp-block-paragraph">After hitting Enter, we can see that the write was successful.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1410" height="328" src="https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-4.png" alt="" class="wp-image-36279" srcset="https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-4.png 1410w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-4-300x70.png 300w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-4-1024x238.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2023/03/ft-view-cmd-4-768x179.png 768w" sizes="(max-width: 1410px) 100vw, 1410px" /></figure>



<p class="wp-block-paragraph">I have&nbsp;leveraged this feature&nbsp;the most for&nbsp;managing bulk updates on a <a href="https://static.dmcinfo.com/latest-thinking/blog/id/10325/what-is-plantpax">PlantPAx</a> system. For instance, we recently had a system with over 100 interlock conditions that required string descriptions to be entered on a system being commissioned.</p>



<p class="wp-block-paragraph">This could be done via Rockwell&#8217;s Studio 5000 Application Code Manager (ACM)&nbsp;or individually via the PlantPAx faceplates; however,&nbsp;because the software was being commissioned and tested onsite by the customer, it was much easier and faster for us to use excel to create a list of commands. These&nbsp;could be copy-pasted by the customer into the Command Line and entered to update all the fields at once.</p>



<p class="wp-block-paragraph">The only drawback to the Command Line is that it has a limit of 5000 characters at a time, but this is pretty easily worked around by splitting up the commands you enter into groups less than that number.</p>



<p class="wp-block-paragraph"><strong>Learn more about DMC&#8217;s <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/hmi-and-scada-programming/rockwell-factorytalk">Factorytalk</a> expertise and <a href="https://static.dmcinfo.com/contact">contact us</a> for your next project.</strong></p>
<p>The post <a href="https://static.dmcinfo.com/blog/17715/how-to-use-factorytalk-view-studio-command-line/">How to Use FactoryTalk View Studio Command Line</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PCS neo on iPads</title>
		<link>https://static.dmcinfo.com/blog/18553/pcs-neo-on-ipads/</link>
		
		<dc:creator><![CDATA[Keith Janson]]></dc:creator>
		<pubDate>Sun, 08 May 2022 00:03:10 +0000</pubDate>
				<category><![CDATA[Siemens PLC]]></category>
		<category><![CDATA[Opcenter]]></category>
		<category><![CDATA[PCS neo]]></category>
		<category><![CDATA[PCS7]]></category>
		<category><![CDATA[process control]]></category>
		<category><![CDATA[Siemens]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/18553/pcs-neo-on-ipads/</guid>

					<description><![CDATA[<p>DMC recently partnered with Siemens to deliver a Process Testbed to MxD in Chicago, Illinois. A large portion of this project revolved around the concept of the &quot;Mobile Worker:&quot; an operator, supervisor, engineer, or plant manager who is no longer constrained to the confines of a control room to receive process data and perform meaningful [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/18553/pcs-neo-on-ipads/">PCS neo on iPads</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">DMC recently partnered with Siemens to deliver a Process Testbed to MxD in Chicago, Illinois. A large portion of this project revolved around the concept of the &quot;Mobile Worker:&quot; an operator, supervisor, engineer, or plant manager who is no longer constrained to the confines of a control room to receive process data and perform meaningful operations.</p>

<p class="wp-block-paragraph">Part of the process of equipping the Mobile Worker with the tools they need to successfully execute their job is integrating mobile platforms for them to interface with the processes.</p>

<p class="wp-block-paragraph">In the case of the MxD Testbed, we are using PCS neo, Siemens&apos; new,&nbsp;completely web-based&nbsp;DCS platform, along with several other web-based applications, such as Siemens&apos; MES platform Opcenter. To maintain security while using a web-based application, both PCS neo and Opcenter use Secure Sockets Layer (SSL) certificates.</p>

<p class="wp-block-paragraph">In one of our demo&apos;s applications, we used a Siemens SIPIX&nbsp;tablet to connect to our Testbed via a Siemens SCALANCE wireless access point. The SIPIX tablet runs a Windows OS, so it was straightforward to join to our local domain and automatically receive the required certificates from our Certificate Authority; however, when coming to the off-the-shelf iPad, it required a little more work to integrate.</p>

<h2 class="wp-block-heading">Integrating&nbsp;an iPad</h2>

<p class="wp-block-paragraph">Because an iPad is an iOS device, it can&apos;t fully join a Windows domain and automatically integrate into our Certificate Authority; however, we can still request a certificate from our Certificate Authority to trust as a root certificate.</p>

<p class="wp-block-paragraph">First, open Safari on the iPad and go to <strong>http://&lt;your-certificate-authority&gt;/certsrv</strong>. You will be prompted to enter domain credentials.</p>

<p class="wp-block-paragraph">After logging in, you&apos;ll be presented with a generic splash screen with some options. Select &quot;Download a CA certificate.&quot;&nbsp;</p>

<figure class="wp-block-image"><img decoding="async" alt="Generic splash screen" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Picture1_1-1.png"  /></figure>

<p class="wp-block-paragraph">This will take you to a certificate request page. On this page, select &quot;Install this CA Certificate.&quot;</p>

<figure class="wp-block-image"><img decoding="async" alt="Certificate request page" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Picture2_1-1.png"  /></figure>

<p class="wp-block-paragraph">You may be prompted to enter a password when installing. After the installation, you will have a new &quot;profile&quot; available on your iOS device.</p>

<p class="wp-block-paragraph">Go to Settings &gt; General &gt; Profile to view the installed profile.</p>

<figure class="wp-block-image"><img decoding="async" alt="Settings &gt; General &gt;Profile" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Picture3-2.png"  /></figure>

<p class="wp-block-paragraph">Drill down into the downloaded profile and install the root certificate. This will require you to enter the device&rsquo;s password.</p>

<figure class="wp-block-image"><img decoding="async" alt="Downloaded profile" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Picture4.png"  /></figure>

<figure class="wp-block-image"><img decoding="async" alt="Install profile" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Picture5.png"  /></figure>

<p class="wp-block-paragraph">Now that the root certificate is installed, you will need to enable full trust for that root certificate. In settings, go to General &gt; About &gt; Certificate Trust Settings and enable the newly installed certificate authority.</p>

<figure class="wp-block-image"><img decoding="async" alt="General &gt; About &gt; Certificate Trust Settings" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Picture6.png"  /></figure>

<figure class="wp-block-image"><img decoding="async" alt="Certificate Trust Settings" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Picture7.png"  /></figure>

<p class="wp-block-paragraph">Once everything is complete, you should be able to browse to any of your associated web-based applications without any issues. As you can see below, we were&nbsp;able to fully interface and operate with our Siemens PCS neo DCS and Opcenter MES.</p>

<figure class="wp-block-image"><img decoding="async" alt="Work order overview" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Picture8.png"  /></figure>

<figure class="wp-block-image"><img decoding="async" alt="PCS neo testbed" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Picture9_1.png"  /></figure>

<p class="wp-block-paragraph"><strong>Learn more about DMC&rsquo;s&nbsp;<a href="https://static.dmcinfo.com/about/partners/siemens-solution-partner">Siemens Solutions Partnership</a>&nbsp;and&nbsp;<a href="https://static.dmcinfo.com/contact">contact us</a>&nbsp;for your next project.&nbsp;</strong></p>
<p>The post <a href="https://static.dmcinfo.com/blog/18553/pcs-neo-on-ipads/">PCS neo on iPads</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ABB Vision-Guided Movement – These ARE the Droids You’re Looking For</title>
		<link>https://static.dmcinfo.com/blog/22600/abb-vision-guided-movement-these-are-the-droids-youre-looking-for/</link>
		
		<dc:creator><![CDATA[Keith Janson]]></dc:creator>
		<pubDate>Wed, 03 Oct 2018 14:29:46 +0000</pubDate>
				<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Vision Inspection]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/22600/abb-vision-guided-movement-these-are-the-droids-youre-looking-for/</guid>

					<description><![CDATA[<p>Of all the unanswered questions of the universe, the one that consistently keeps me up at night is this: In Star Wars: Episode IV &#8211; A New Hope, if recovering the Death Star plans were so vital to the security of the Galactic Empire, why would you send Storm Troopers to do a job that [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/22600/abb-vision-guided-movement-these-are-the-droids-youre-looking-for/">ABB Vision-Guided Movement – These ARE the Droids You’re Looking For</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Of all the unanswered questions of the universe, the one that consistently keeps me up at night is this: In Star Wars: Episode IV &#8211; A New Hope, if recovering the Death Star plans were so vital to the security of the Galactic Empire, why would you send Storm Troopers to do a job that a machine could do just as well, especially if the machine would be immune to Jedi mind tricks?&nbsp;</p>



<p class="wp-block-paragraph">To prove to myself that it could not have been an issue of technological limitations (and to have an excuse to play&nbsp;with a Cognex camera, <a href="https://new.abb.com/products/robotics/robotstudio" target="_blank">ABB&#8217;s RobotStudio</a>, and the Star Wars toys I keep on my desk), I decided to spin up a quick tutorial to show that I could, in fact, locate and retrieve the droid I was looking for.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-Cognex-Camera-and-BB8.jpg" alt="Cognex camera pointed at BB8 toy"/></figure>



<h2 class="wp-block-heading" id="h-robotstudio-integrated-vision">RobotStudio Integrated Vision</h2>



<p class="wp-block-paragraph">The ABB RobotStudio&#8217;s &#8220;Integrated Vision&#8221; feature is essentially a &#8220;Cognex In-Sight Lite,&#8221; and as of publication, this is only functional on the 32-bit version of robot studio.<br>
<br>
To access the Integrated Vision tab, expand your robot controller (physical or virtual) in the left-hand controller pane and right-click on the <strong>Vision System</strong>&nbsp;item. Right-clicking will open the <strong>Integrated Vision tab </strong>of RobotStudio.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-Integrated-Vision-Tab.jpg" alt="Screenshot of controller menu with Vision System"/></figure>



<h2 class="wp-block-heading" id="h-connecting-to-the-camera">Connecting to the Camera</h2>



<p class="wp-block-paragraph">Connect the camera to the robot controller service port switch. Once connected, the camera should appear under <strong>Vision System</strong> in the left-hand controller tree.<br>
<br>
If not, then from the vision tab, select <strong>Connect/Add Senor</strong>. In this window, you should be able to see all cameras physically connected to the network and can change network settings of the cameras accordingly.</p>



<p class="MsoNormal wp-block-paragraph">If you are connecting a camera (or an emulated camera) to a virtual robot controller, you will need to define the <strong>virtual programming port</strong>&nbsp;of the virtual controller to which the camera is connecting.<br>
<br>
To do so, find the <strong>vc_network_definition.xml </strong>file in the <strong>RobotStudio/Systems/Controller Name/Home/IV folder</strong>. In this XML file, set the <strong>IP Address/Subnet</strong> to that of the NIC connected to the camera.</p>



<p class="wp-block-paragraph">Warm restart the virtual controller you are using,&nbsp;and an unconfigured camera should appear under <strong>Vision System </strong>in the system tree.</p>



<h2 class="wp-block-heading" id="h-calibration">Calibration</h2>



<p class="wp-block-paragraph">Now that the camera is connected, you need to calibrate the images from the camera to real-world units of measurement <strong>(pixels to millimeters</strong>). The easiest way to do this is with the <strong>grid calibration</strong>&nbsp;method.<br>
<br>
To do so, select the <strong>Calibrate</strong>&nbsp;button from the top ribbon, then select <strong>Grid</strong>&nbsp;from the <strong>Calibration Type </strong>drop-down in the context menu. Selecting grid will pull up the configuration options for the grid calibration sizing.<br>
<br>
Verify the selection of <strong>Checkerboard, with fiducial</strong>&nbsp;for the grid type. The other options can be left as is (see below).<br>
<br>
The only option that may need adjustment would be the <strong>lens model</strong>. Select <strong>radial </strong>for straight-on pictures (for example, top-down) view, or choose <strong>projection </strong>if the camera is not parallel with the target object (for example, being mounted perpendicular to it).</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Abb-Blog-Congex-Calibration-Selection-Menu.jpg" alt="Vision Tool Calibration Menu - Lens Mode selection"/></figure>



<p class="wp-block-paragraph">Once the grid parameters have been set up, select <strong>Print Grid</strong>&nbsp;to print off a copy of the grid.<br>
<br>
Verify the spacing of the checkers on the grid matches the selection in the previous view.<br>
<br>
Center the grid within the field of view of the camera, and tape it in place (it&#8217;ll be important later that the grid does not move after the calibration image has been taken).<br>
<br>
Once in place, select <strong>Next</strong>&nbsp;in the context menu with the grid setup, and then select <strong>Acquire Image</strong>&nbsp;within the context menu.<br>
<br>
Once the image has been acquired, and the camera can recognize the calibration image, select the <strong>Calibrate</strong>&nbsp;button to load the calibration data into the active camera job. If the camera does not recognize the calibration image, it may require adjusting the camera <strong>position</strong>, <strong>exposure</strong>, or <strong>focus</strong>.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-Camera-Calibration-Window.jpg" alt="Calibration Window"/></figure>



<p class="wp-block-paragraph">Now that the camera is calibrated, you will need to align the <strong>origin </strong>and <strong>orientation </strong>of the camera image (defined by the location of the fiducial in the calibration grid), with a workobject defined in the robot.<br>
<br>
To do so, using a defined calibration pointing tool, define the camera workobject along the same X/Y axis as is on the taped calibration grid (only calibrate the user frame, as the object frame will then be used to shift the coordinate system to move to identified objects). At this point, the camera and robot workobject coordinate systems should be aligned.</p>



<h2 class="wp-block-heading" id="h-identifying-part-location">Identifying Part Location</h2>



<p class="wp-block-paragraph">Once the camera and robot are calibrated, you can begin setting up your part location tools to locate your target objects. Several tools are available in the <strong>Add Part Location Tool</strong>&nbsp;menu, all of which will report back <strong>part location </strong>(X,Y coordinate) and <strong>orientation </strong>(for brevity&#8217;s sake, I won&#8217;t discuss the individual configuration of each tool).<br>
<br>
Once a location tool has been selected and configured to locate the desired part, the next step is configuring the output parameters to the robot RAPID program.<br>
<br>
To do so, select the <strong>Output to Rapid</strong>&nbsp;button at the top, which will open the <strong>Setup Communication</strong>&nbsp;context menu. Using this menu, you can define which parameters (Result) of which tools (Group) you want to reference in the RAPID program.<br>
<br>
At a minimum, you should send the <strong>Fixture.X</strong>, <strong>Fixture.Y</strong>, <strong>Fixture</strong><strong>.Angle</strong>, and <strong>Pass </strong>or <strong>Fail </strong>parameters (I&#8217;ve also included the Fixture.Score parameter for reference to show how closely the tool models match the captured images).</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-Identifying-Part-Location.jpg" alt="Identifying part location"/></figure>



<h2 class="wp-block-heading" id="h-rapid-configuration">RAPID Configuration</h2>



<p class="wp-block-paragraph">Once the vision job has been set up and calibrated, and the camera workobject has been defined to align coordinate systems with the camera, the actual part identification/movement can be done.<br>
<br>
Using one of the out-of-the-box code snippets available in RobotStudio as a starting point (RAPID/Snippet/Integrated Vision), set up a procedure to execute a camera job. After the job is complete, set the camera object frame to be vision coordinates of the camera result.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e"><span style="background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e">RAPID</span></span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>  PROC MoveToDetectedObject()
      
      VAR cameratarget mycameratarget;
      VAR wobjdata mywobj;
      VAR tooldata mytool; 
      VAR robtarget myrobtarget;
      VAR string myjob := "myjob.job";
      
      CamSetProgramMode RobotCamera;
      CamLoadJob RobotCamera, myjob;
      CamSetRunMode RobotCamera;
      
      CamReqImage RobotCamera;
      CamGetResult RobotCamera, mycameratarget;
      mywobj.oframe := mycameratarget.cframe;
      
      !During the first cycle, run the program until this point,
      !then jog the tool to the desired grip position and modpos myrobtarget.
      MoveL myrobtarget, v100, fine, mytool \WObj:=mywobj;
  ENDPROC</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">  PROC MoveToDetectedObject()</span></span>
<span class="line"><span style="color: #D4D4D4">      </span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #569CD6">VAR</span><span style="color: #D4D4D4"> cameratarget mycameratarget;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #569CD6">VAR</span><span style="color: #D4D4D4"> wobjdata mywobj;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #569CD6">VAR</span><span style="color: #D4D4D4"> tooldata mytool; </span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #569CD6">VAR</span><span style="color: #D4D4D4"> robtarget myrobtarget;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #569CD6">VAR</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">string</span><span style="color: #D4D4D4"> myjob := &quot;myjob.job&quot;;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span></span>
<span class="line"><span style="color: #D4D4D4">      CamSetProgramMode RobotCamera;</span></span>
<span class="line"><span style="color: #D4D4D4">      CamLoadJob RobotCamera, myjob;</span></span>
<span class="line"><span style="color: #D4D4D4">      CamSetRunMode RobotCamera;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span></span>
<span class="line"><span style="color: #D4D4D4">      CamReqImage RobotCamera;</span></span>
<span class="line"><span style="color: #D4D4D4">      CamGetResult RobotCamera, mycameratarget;</span></span>
<span class="line"><span style="color: #D4D4D4">      mywobj.oframe := mycameratarget.cframe;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span></span>
<span class="line"><span style="color: #D4D4D4">      !During the first cycle, run the </span><span style="color: #569CD6">program</span><span style="color: #D4D4D4"> </span><span style="color: #C586C0">until</span><span style="color: #D4D4D4"> this point,</span></span>
<span class="line"><span style="color: #D4D4D4">      !</span><span style="color: #569CD6">then</span><span style="color: #D4D4D4"> jog the tool </span><span style="color: #569CD6">to</span><span style="color: #D4D4D4"> the desired grip position and modpos myrobtarget.</span></span>
<span class="line"><span style="color: #D4D4D4">      MoveL myrobtarget, v100, fine, mytool \WObj:=mywobj;</span></span>
<span class="line"><span style="color: #D4D4D4">  ENDPROC</span></span></code></pre></div>



<p class="wp-block-paragraph"><br>
In the example above, the VAR declarations are only shown for clarity, and should most likely be declared in the user module. Additionally, if only one job is being used, the camera job can be loaded (CamLoadJob) in a startup routine to cut down on job cycle time.</p>



<p class="wp-block-paragraph">To align the position of the targeted object identified by the camera to a robot position (for example, a pick or place position), you will need to run the procedure you created above through the point where the object frame of the workobject is loaded with the location data from the camera.<br>
<br>
What this will do is align the robot position you are about to teach to be relative to both the location of the camera coordinate system (defined by the calibration procedure above), as well as the recognized position of the target object within the coordinate system.<br>
<br>
You can now jog the robot to the desired position, being sure that the correct workobject and tool are loaded that will be used in your sequence, and save the position. Now, the position of the robot is defined as being relative to the identified position of the object, allowing the robot to consistently track the location and orientation of the object as it moves in the camera coordinate system.</p>



<h2 class="wp-block-heading" id="h-example">Example</h2>



<p class="wp-block-paragraph">In the pictures below, you can see how the camera is able to track the location and orientation of BB8 as he moves to various locations along a wall in our lab. To do so, I first created a part location tool called BB8_Finder. I chose to search just for his head, as I thought that would be the best way to find a consistent location and orientation for BB8.<br>
<br>
Pictured below is the reference picture used by the inspection tool, which looks like a BB8 mugshot.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-BB8-Finder_1.jpg" alt="Inspection tool reference picture"/></figure>



<p class="wp-block-paragraph">Once I had my tool configured, I took a few shots of BB8 in different positions and orientations to verify that I could successfully track his movement (and for the record, that is &#8220;The Force&#8221; holding BB8 in place and definitely not tape…). In the tables below, you can see the camera tracking the position and orientation of BB8 in each of the pictures (the origin is located in the top-left of the picture).</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-Test-Shot-1.jpg" alt=""/></figure>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-Test-Shot-1-Table-1.jpg" alt=""/></figure>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-Test-Shot-2.jpg" alt=""/></figure>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-Test-Shot-2-Table-2.jpg" alt=""/></figure>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-Test-Shot-3.jpg" alt=""/></figure>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ABB-Blog-Test-Shot-3-Table-3.jpg" alt=""/></figure>



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



<p class="wp-block-paragraph">You should now be able to track down and retrieve any droids you are looking for.&nbsp;</p>



<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/vision-inspection" target="_blank">Learn more about DMC&#8217;s Machine Vision Inspection and Integration Services.</a>&nbsp;</p>
<p>The post <a href="https://static.dmcinfo.com/blog/22600/abb-vision-guided-movement-these-are-the-droids-youre-looking-for/">ABB Vision-Guided Movement – These ARE the Droids You’re Looking For</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
