<?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>PLC Archives | DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/category/manufacturing-automation-intelligence/plc/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Tue, 08 Sep 2026 19:31:40 +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>PLC Archives | DMC, Inc.</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Beckhoff Setup Basics: TwinCAT HMI Configuration Steps</title>
		<link>https://static.dmcinfo.com/blog/19459/getting-started-with-a-beckhoff-plc-part-three-hmi-configuration/</link>
		
		<dc:creator><![CDATA[Owen Johnson]]></dc:creator>
		<pubDate>Tue, 08 Sep 2026 19:31:30 +0000</pubDate>
				<category><![CDATA[Beckhoff PLC]]></category>
		<category><![CDATA[HMI and SCADA]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Beckhoff and TwinCAT]]></category>
		<category><![CDATA[IPC Configuration]]></category>
		<category><![CDATA[PLC Programming]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/19459/getting-started-with-a-beckhoff-plc-part-three-hmi-configuration/</guid>

					<description><![CDATA[<p>This blog is Part 3 of a multi-part series. Make sure to check out the other blogs on this topic: Term Definitions Throughout this blog series, I refer to two devices repeatedly. For clarity, those devices are as follows: Configure HMI Server First, we’ll need to configure the HMI server so we can publish to [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/19459/getting-started-with-a-beckhoff-plc-part-three-hmi-configuration/">Beckhoff Setup Basics: TwinCAT HMI Configuration Steps</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-bcadade0 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)">
<p class="wp-block-paragraph">This blog is <strong>Part 3</strong> of a multi-part series. Make sure to check out the other blogs on this topic:</p>



<ol class="wp-block-list">
<li><a href="https://static.dmcinfo.com/blog/19695/getting-started-with-a-beckhoff-plc-part-one-setup/" target="_blank" rel="noreferrer noopener">Beckhoff Setup Basics: IPC Configuration Steps</a></li>



<li><a href="https://static.dmcinfo.com/blog/19664/getting-started-with-a-beckhoff-plc-part-two-plc-configuration/" target="_blank" rel="noreferrer noopener">Beckhoff Setup Basics: Getting Started with a Beckhoff PLC</a></li>



<li><strong>Beckhoff Setup Basics: HMI Configuration Steps</strong></li>
</ol>
</div>



<h2 id="h-term-definitions" class="wp-block-heading">Term Definitions</h2>



<p class="wp-block-paragraph">Throughout this blog series, I refer to two devices repeatedly. For clarity, those devices are as follows:</p>



<ol class="wp-block-list">
<li style="padding-bottom:var(--wp--preset--spacing--40)"><strong>“Beckhoff IPC”</strong> – The industrial PC that will run the PLC and HMI server. Device configuration will occur on this device. Beckhoff sells these directly. Third-party IPCs can also be used, but licensing is more expensive.</li>



<li><strong>“Programming Computer”</strong> – A computer, such as an engineer’s laptop, where the TwinCAT XAE development environment is installed. Programming happens on this device, as well as some of the configuration of the Beckhoff IPC.</li>
</ol>



<h2 id="h-configure-hmi-server" class="wp-block-heading">Configure HMI Server</h2>



<p class="wp-block-paragraph">First, we’ll need to configure the HMI server so we can publish to it. On the Beckhoff IPC, find the HMI server tray icon, and click on it.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="68" height="50" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-1.jpg.png" alt="Beckhoff HMI server tray icon" class="wp-image-51374"/></figure>



<p class="wp-block-paragraph"><em><strong>Note: </strong>If you do not see this icon, double-check that TE2000 HMI Server is installed on the Beckhoff IPC following the instructions in Part 1 of this blog series.</em></p>



<p class="wp-block-paragraph">Select <strong>“Service Configuration.”</strong></p>



<figure class="wp-block-image size-full"><img decoding="async" width="273" height="49" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-2.jpg.png" alt="Beckhoff IPC service configuration" class="wp-image-51376"/></figure>



<p class="wp-block-paragraph">The webpage <a href="http://127.0.0.1:19800/">http://127.0.0.1:19800/</a> should open in the default browser.</p>



<p class="wp-block-paragraph">On that page, add a new Server Instance by entering the information in the form and creating an HMI administrator password.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img fetchpriority="high" decoding="async" width="1883" height="863" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-3.jpg.png" alt="Beckhoff HMI configuration Add Server Instance" class="wp-image-51381" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1200px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-3.jpg.png 1883w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-3.jpg-300x137.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-3.jpg-766x351.png 766w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-3.jpg-1024x469.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-3.jpg-1536x704.png 1536w" sizes="(max-width: 1883px) 100vw, 1883px" /></figure>



<p class="wp-block-paragraph">In the menu that appears, select the HMI Instance we created and select “Config.” (If there are issues, you may need to restart the HMI server through the same menu).</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="433" height="142" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-4.jpg.png" alt="Beckhoff HMI setup &quot;Config&quot; screen" class="wp-image-51378" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:500px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-4.jpg.png 433w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-4.jpg-300x98.png 300w" sizes="(max-width: 433px) 100vw, 433px" /></figure>



<p class="wp-block-paragraph">The default startup page will open.</p>



<p class="wp-block-paragraph">If you get a “License Expired” error page, then double-check that you have a valid or trial license for TE2000.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="658" height="252" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-5.jpg.png" alt="Beckhoff HMI setup license expired error" class="wp-image-51380" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:800px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-5.jpg.png 658w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-5.jpg-300x115.png 300w" sizes="(max-width: 658px) 100vw, 658px" /></figure>



<p class="wp-block-paragraph">In XAE Shell, ensure that TF2000 is selected and there is an active trial license.</p>



<figure class="wp-block-image size-large is-resized has-custom-border"><img decoding="async" width="1024" height="249" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-6.jpg-1024x249.png" alt="TC3 HMI Server CPU license" class="wp-image-51383" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:800px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-6.jpg-1024x249.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-6.jpg-300x73.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-6.jpg-768x187.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-6.jpg.png 1490w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="973" height="507" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-7.jpg.png" alt="Beckhoff Automation licensing" class="wp-image-51384" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:800px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-7.jpg.png 973w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-7.jpg-300x156.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-7.jpg-768x400.png 768w" sizes="(max-width: 973px) 100vw, 973px" /></figure>



<p class="wp-block-paragraph">If you have created a new trial license but still experience this error, then restart the HMI Server Instance.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="433" height="142" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-8.jpg.png" alt="Beckhoff HMI setup &quot;Restart&quot; screen" class="wp-image-51385" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:500px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-8.jpg.png 433w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-8.jpg-300x98.png 300w" sizes="(max-width: 433px) 100vw, 433px" /></figure>



<p class="wp-block-paragraph">Once the HMI Server has a valid or trial license, the Config page will show this. Enter the HMI administrator password created on the “Server Configuration” page.</p>



<figure class="wp-block-image size-large is-resized has-custom-border"><img decoding="async" width="1024" height="441" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-9.jpg-1024x441.png" alt="TwinCAT HMI server configuration" class="wp-image-51386" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1200px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-9.jpg-1024x441.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-9.jpg-300x129.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-9.jpg-766x330.png 766w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-9.jpg-1536x662.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-9.jpg.png 1912w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The configuration will open. Navigate to <strong>TcHmiSrv &gt; Webserver</strong>.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="811" height="815" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-10.jpg.png" alt="TcHmiSrv webserver endpoints" class="wp-image-51387" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:800px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-10.jpg.png 811w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-10.jpg-150x150.png 150w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-10.jpg-299x300.png 299w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-10.jpg-767x771.png 767w" sizes="(max-width: 811px) 100vw, 811px" /></figure>



<p class="wp-block-paragraph">Expand the <strong>Endpoints</strong> menu and select <strong>“Add.”</strong></p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="710" height="162" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-11.jpg.png" alt="Endpoints menu" class="wp-image-51388" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:800px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-11.jpg.png 710w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-11.jpg-300x68.png 300w" sizes="(max-width: 710px) 100vw, 710px" /></figure>



<p class="wp-block-paragraph">Add the IP address of the HMI Server where it will be accessed externally (an external browser or HMI) and use your HTTPS port.</p>



<p class="wp-block-paragraph">For this guide, we will assume the HMI server is on the Beckhoff IPC and use the URL: <strong>https://192.168.42.42:1021/</strong>.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="745" height="150" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-12.jpg.png" alt="HMI server IP address" class="wp-image-51660" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:800px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-12.jpg.png 745w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-12.jpg-300x60.png 300w" sizes="(max-width: 745px) 100vw, 745px" /></figure>



<p class="wp-block-paragraph">An <strong>“Add successful”</strong> message will appear at the top of the page if it is successful. If not, make sure the URL is correct and you’ve used <strong>https://</strong> as a prefix to the IP address.</p>



<h2 id="h-publish-hmi-program" class="wp-block-heading">Publish HMI Program</h2>



<p class="wp-block-paragraph">Now that the HMI server is configured, we can create the HMI Project in XAE Shell on the Programming PC.</p>



<p class="wp-block-paragraph">Once the HMI project is complete, we can publish it to the HMI server.</p>



<p class="wp-block-paragraph">To do this, select the HMI program in the project tree.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="386" height="385" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-13.jpg.png" alt="Beckhoff HMI program" class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-51390" style="border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:500px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-13.jpg.png 386w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-13.jpg-150x150.png 150w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-13.jpg-300x299.png 300w" sizes="(max-width: 386px) 100vw, 386px" /></figure>



<p class="wp-block-paragraph">At the top of XAE Shell, change the platform dropdown to <strong>“TwinCAT HMI.”</strong></p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="796" height="549" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-14.jpg.png" alt="TwinCAT HMI dropdown" class="wp-image-51391" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:800px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-14.jpg.png 796w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-14.jpg-300x207.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-14.jpg-767x529.png 767w" sizes="(max-width: 796px) 100vw, 796px" /></figure>



<p class="wp-block-paragraph">At the top of XAE Shell, select <strong>TwinCAT HMI &gt; Publish to TwinCAT HMI Server</strong>.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="960" height="235" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-15.jpg.png" alt="Publish to TwinCAT HMI Server" class="wp-image-51392" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:800px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-15.jpg.png 960w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-15.jpg-300x73.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-15.jpg-768x188.png 768w" sizes="(max-width: 960px) 100vw, 960px" /></figure>



<p class="wp-block-paragraph">If you have not created any profiles, TwinCAT will prompt you to enter a profile name. Different profiles can be used for different environments (ex: development, release, etc)</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="726" height="571" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-16.jpg.png" alt="Publish TwinCAT HMI Project module" class="wp-image-51393" style="border-top-left-radius:16px;border-top-right-radius:16px;border-bottom-left-radius:16px;border-bottom-right-radius:16px;width:800px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-16.jpg.png 726w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-16.jpg-300x236.png 300w" sizes="(max-width: 726px) 100vw, 726px" /></figure>



<p class="wp-block-paragraph">Enter the IP address of the HMI endpoint created earlier, the appropriate port (1020), and the administrator password for the HMI Server set up earlier in this guide.</p>



<p class="wp-block-paragraph">You can also click the <strong>“…” </strong>button to open a pop-up of available HMI servers to connect to.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="1012" height="536" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-17.jpg.png" alt="Beckhoff HMI sever connection" class="wp-image-51395" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:800px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-17.jpg.png 1012w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-17.jpg-300x159.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-17.jpg-767x406.png 767w" sizes="(max-width: 1012px) 100vw, 1012px" /></figure>



<p class="wp-block-paragraph">It’s a good idea to click <strong>“Validate Connection”</strong> to ensure all information is correct and a connection is successful. If an error occurs during validation, you will not be able to publish until you correct it.</p>



<p class="wp-block-paragraph">Then click <strong>“Publish”</strong> in the top-right corner to publish the HMI project to the Server.</p>



<p class="wp-block-paragraph">It may take a long time for the project to publish. You can track progress in the bottom bar of XAE Shell.</p>



<figure class="wp-block-image size-large is-resized has-custom-border"><img decoding="async" width="1024" height="466" src="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-18.jpg-1024x466.png" alt="HMI sever connection progress bar" class="wp-image-51396" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1200px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-18.jpg-1024x466.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-18.jpg-300x136.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-18.jpg-767x349.png 767w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-18.jpg-1536x699.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2026/09/beckhoff-hmi-configuration-image-18.jpg.png 1919w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="h-full-screen-hmi-start-in-chrome-firefox" class="wp-block-heading">Full-Screen HMI Start in Chrome/Firefox</h2>



<p class="wp-block-paragraph">When our Beckhoff IPC is booted, we usually want it to immediately open the HMI screen instead of requiring an operator to start the HMI manually. This can be accomplished with a very simple batch script.</p>



<p class="wp-block-paragraph">Open Notepad on your Beckhoff IPC and paste in the following code:</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(1 * 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">BAT (Batchfile)</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>@echo off
start "" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --kiosk -fullscreen --incognito http://127.0.0.1:1010/
exit</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">@</span><span style="color: #569CD6">echo</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">off</span></span>
<span class="line"><span style="color: #569CD6">start</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;C:\Program Files (x86)\Google\Chrome\Application\chrome.exe&quot;</span><span style="color: #D4D4D4"> --kiosk -fullscreen --incognito http://127.0.0.1:1010/</span></span>
<span class="line"><span style="color: #C586C0">exit</span></span></code></pre></div>



<p class="wp-block-paragraph">Save this file as <strong>“StartHMI.bat”</strong> in your startup folder. For convenience, if the HMI screen ever does need to be started manually, create a shortcut for this batch script and place it on the desktop.</p>



<p class="wp-block-paragraph">This will automatically open Chrome in full screen on startup. You may want to do this step after you’ve finished other setup steps, as it can be a bit of a nuisance after restarts.</p>



<p class="wp-block-paragraph">Make sure the path for Chrome in the batch file is correct. The above is the default location, but it may not be correct.</p>



<p class="wp-block-paragraph"><strong>Note:</strong> <em>Similar instructions are <a href="https://support.mozilla.org/en-US/kb/firefox-enterprise-kiosk-mode" target="_blank" rel="noreferrer noopener">available for Firefox</a>.</em></p>



<p class="wp-block-paragraph">Once the HMI is published on the server and starts in kiosk mode on startup, you are now complete with your Beckhoff PLC and HMI.</p>



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



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Learn more about DMC’s <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/beckhoff-and-twincat-3-programming/" target="_blank" rel="noopener">Beckhoff automation expertise</a> and programming, and get started modernizing your system today.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/19459/getting-started-with-a-beckhoff-plc-part-three-hmi-configuration/">Beckhoff Setup Basics: TwinCAT HMI Configuration Steps</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Beckhoff Setup Basics: Getting Started with a Beckhoff PLC</title>
		<link>https://static.dmcinfo.com/blog/19664/getting-started-with-a-beckhoff-plc-part-two-plc-configuration/</link>
		
		<dc:creator><![CDATA[Owen Johnson]]></dc:creator>
		<pubDate>Thu, 27 Aug 2026 11:00:00 +0000</pubDate>
				<category><![CDATA[Beckhoff PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Beckhoff and TwinCAT]]></category>
		<category><![CDATA[PLC Programming]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/19664/getting-started-with-a-beckhoff-plc-part-two-plc-configuration/</guid>

					<description><![CDATA[<p>This blog is Part 2 of a multi-part series. Make sure to check out the other blogs on this topic: Summary This is the second installment of a three-part blog series covering all you need to know about getting started with a Beckhoff PLC/HMI. In this blog, we&#8217;ll be covering how to configure and license [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/19664/getting-started-with-a-beckhoff-plc-part-two-plc-configuration/">Beckhoff Setup Basics: Getting Started with a Beckhoff PLC</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-bcadade0 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)">
<p class="wp-block-paragraph">This blog is <strong>Part 2</strong> of a multi-part series. Make sure to check out the other blogs on this topic:</p>



<ol class="wp-block-list">
<li><a href="https://static.dmcinfo.com/blog/19695/getting-started-with-a-beckhoff-plc-part-one-setup/" target="_blank" rel="noreferrer noopener">Beckhoff Setup Basics: IPC Configuration Steps</a></li>



<li><strong>Beckhoff Setup Basics: Getting Started with a Beckhoff PLC</strong></li>



<li><a href="https://static.dmcinfo.com/blog/19459/getting-started-with-a-beckhoff-plc-part-three-hmi-configuration/" target="_blank" rel="noreferrer noopener">Beckhoff Basics: HMI Configuration</a></li>
</ol>
</div>



<h2 id="h-summary" class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">This is the <strong>second installment of a three-part blog series</strong> covering all you need to know about getting started with a Beckhoff PLC/HMI. In this blog, we&#8217;ll be covering how to configure and license the PLC to run your code.</p>



<h2 id="h-term-definitions" class="wp-block-heading">Term Definitions</h2>



<p class="wp-block-paragraph">Throughout this blog series, I refer to two devices repeatedly. For clarity, those devices are as follows:</p>



<ol class="wp-block-list">
<li style="padding-bottom:var(--wp--preset--spacing--40)"><strong>&#8220;Beckhoff IPC&#8221;</strong>&nbsp;– The hardware, likely obtained from Beckhoff, that will run the PLC and HMI server. Device configuration will occur on this device.</li>



<li><strong>&#8220;Programming Computer&#8221;</strong>&nbsp;– A computer, such as an engineer&#8217;s laptop, where the TwinCAT XAE development environment is installed. Programming happens on this device, as well as some of the configuration of the Beckhoff IPC.</li>
</ol>



<h2 id="h-connect-to-the-ipc-via-a-programming-computer" class="wp-block-heading">Connect to the IPC Via a Programming Computer</h2>



<p class="wp-block-paragraph">First, we&#8217;ll need to check if TwinCAT XAE is able to communicate with the IPC. If you’ve done this before, feel free to skip this step.</p>



<p class="wp-block-paragraph">Next, make sure your programming computer is connected to the Programming Port on the Beckhoff IPC. On the programming computer, right-click on the TwinCAT gear icon and select <strong>Router &gt; Edit Routes</strong>.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="432" height="271" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-1.jpg.png" alt="Beckhoff PLC Programming" class="wp-image-49621" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:450px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-1.jpg.png 432w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-1.jpg-300x188.png 300w" sizes="(max-width: 432px) 100vw, 432px" /></figure>



<p class="wp-block-paragraph">On the TwinCAT Static Routes popup, select <strong>&#8220;Add.&#8221;</strong> The Add Route Dialog will appear. Check the <strong>Advanced Settings</strong> box at the bottom left to expose the full connection settings.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="872" height="635" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-2.jpg.png" alt="'Add Route Dialog' Beckhoff PLC programming" class="wp-image-49622" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:750px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-2.jpg.png 872w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-2.jpg-300x218.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-2.jpg-768x559.png 768w" sizes="(max-width: 872px) 100vw, 872px" /></figure>



<p class="wp-block-paragraph">The most reliable method to find the IPC is to enter the IP address in the field at the top, then click <strong>&#8220;Enter Host Name / IP.&#8221;</strong> If the Beckhoff IPC doesn’t appear, make sure you can ping it (if the firewall pinging rules are enabled) and check your IPC’s or network’s firewall settings.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="902" height="658" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-3.jpg.png" alt="'Add Route Dialog' Beckhoff PLC programming 'Add Route' button" class="wp-image-49623" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:750px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-3.jpg.png 902w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-3.jpg-300x219.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-3.jpg-768x560.png 768w" sizes="(max-width: 902px) 100vw, 902px" /></figure>



<p class="wp-block-paragraph">Select the Beckhoff IPC. The most reliable way to add a route is to set the address info to reference the <strong>IP address</strong>, not the hostname. This is because many plant networks don’t have DNS set up in such a way that allows access of factory devices via hostname. Select this option, then <strong>&#8220;Add Route.&#8221;</strong> Enter the proper credentials for your IPC in the popup and click <strong>&#8220;Okay.&#8221;</strong> Default credentials for Beckhoff IPCs are:</p>



<ul class="wp-block-list">
<li>User: <strong>Administrator</strong></li>



<li>Password: <strong>1</strong></li>
</ul>



<p class="wp-block-paragraph">If you have changed these, use the appropriate credentials. If the connection process succeeds, you should see an <strong>X</strong> or <strong>a small lock</strong> appear under the <strong>Connected </strong>column in the Add Route Dialog and the TwinCAT Static Routes window. You can exit these windows now.</p>



<p class="wp-block-paragraph">From within TwinCAT XAE Shell, open your project. Then use the target dropdown menu and select <strong>&#8220;Choose Target System.&#8221;</strong></p>



<p class="wp-block-paragraph"><em><strong>Note:</strong> these instructions will show screenshots from 32-bit XAE Shell, but can be followed the same in XAE Shell 64-bit.</em></p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="900" height="450" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-4.jpg.png" alt="TwinCAT XAE Shell" class="wp-image-49629" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:750px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-4.jpg.png 900w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-4.jpg-300x150.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-4.jpg-768x384.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">In the window that pops up, expand the browser tree and select the Beckhoff IPC. Click <strong>&#8220;OK.&#8221;</strong></p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="747" height="618" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-5.jpg-1.png" alt="'Choose Target System' Beckhoff IPC" class="wp-image-49632" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:650px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-5.jpg-1.png 747w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-5.jpg-1-300x248.png 300w" sizes="(max-width: 747px) 100vw, 747px" /></figure>



<p class="wp-block-paragraph">If you are prompted to change the solution platform, do so.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="651" height="278" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-6.jpg.png" alt="TcXaeShell window 'Yes' button selected" class="wp-image-49633" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:650px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-6.jpg.png 651w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-6.jpg-300x128.png 300w" sizes="(max-width: 651px) 100vw, 651px" /></figure>



<h2 id="h-set-ipc-boot-settings" class="wp-block-heading"><a name="Set IPC Boot Settings" id="Set IPC Boot Settings"></a>Set IPC Boot Settings</h2>



<p class="wp-block-paragraph">Before the TwinCAT project can be downloaded to the PLC, a few boot settings need to be configured. First, right-click on the PLC project in the solution explorer and make sure <strong>&#8220;Autostart Boot Project&#8221;</strong> is checked. This ensures the project starts automatically when the Beckhoff IPC boots.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="724" height="741" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-7.jpg.png" alt="Beckhoff TwinCAT Solution Explorer" class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-49634" style="border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:750px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-7.jpg.png 724w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-7.jpg-293x300.png 293w" sizes="(max-width: 724px) 100vw, 724px" /></figure>



<p class="wp-block-paragraph">Next, double-click on <strong>&#8220;SYSTEM&#8221;</strong> in the solution explorer, then navigate to the <strong>Settings </strong>tab. Select <strong>&#8220;Run Mode (Enable)&#8221;</strong> under <strong>Boot Settings</strong> (Target). This will make sure the PLC enters run mode on boot.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="894" height="552" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-8.jpg.png" alt="Beckhoff TwinCAT Solution Explorer Blog Demo" class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-49635" style="border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:1.619580999792574;object-fit:cover;width:750px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-8.jpg.png 894w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-8.jpg-300x185.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-8.jpg-768x474.png 768w" sizes="(max-width: 894px) 100vw, 894px" /></figure>



<p class="wp-block-paragraph">If you want to enable auto-login for the Beckhoff IPC, check the <strong>Auto Logon</strong> box. Enter the username and password for the IPC and click <strong>Apply </strong>to save the boot settings to the IPC.</p>



<h2 id="h-confirm-hardware-configuration-and-activate-configuration" class="wp-block-heading">Confirm Hardware Configuration and Activate Configuration</h2>



<p class="wp-block-paragraph">Next, we will need to activate the PLC configuration. Make sure your IO cards are powered and connected to the IPC before continuing with this step.</p>



<p class="wp-block-paragraph">To do this, first navigate to <strong>I/O &gt; Devices &gt; [YourEtherCATMasterDeviceName]</strong>. For example, in this project, the EtherCAT Master device is named “Device 1.&#8221;</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="530" height="463" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-9.jpg.png" alt="EtherCAT devices" class="has-border-color wp-image-49637" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:1.1434735706580368;object-fit:cover;width:450px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-9.jpg.png 530w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-9.jpg-300x262.png 300w" sizes="(max-width: 530px) 100vw, 530px" /></figure>



<p class="wp-block-paragraph">Double-click to open the device settings. On the Adapter tab, click <strong>&#8220;Search…&#8221;</strong></p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="626" height="565" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-10.jpg.png" alt="Beckhoff PLC Programming 'Adapter' tab" class="has-border-color wp-image-49638" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:650px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-10.jpg.png 626w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-10.jpg-300x271.png 300w" sizes="(max-width: 626px) 100vw, 626px" /></figure>



<p class="wp-block-paragraph">The pop-up window should include a list of NICs with the TwinCAT RT Ethernet Driver installed. Select the NIC that will be used to connect to IO.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="629" height="323" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-11.jpg.png" alt="EtherCAT device" class="wp-image-49639" style="border-top-left-radius:10px;border-top-right-radius:10px;border-bottom-left-radius:10px;border-bottom-right-radius:10px;width:650px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-11.jpg.png 629w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-11.jpg-300x154.png 300w" sizes="(max-width: 629px) 100vw, 629px" /></figure>



<p class="wp-block-paragraph">If no Ethernet adapters are listed, then please return to the <strong>“Install the Beckhoff Real-Time Ethernet Driver”</strong> section in <a href="https://static.dmcinfo.com/blog/19695/getting-started-with-a-beckhoff-plc-part-one-setup/" target="_blank" rel="noreferrer noopener">Part 1 of this blog series</a>.</p>



<p class="wp-block-paragraph">If EtherCAT devices are already connected to the PLC, you can add them to the I/O tree by either manually adding the devices in the correct topology or scanning for devices. To scan, right-click the EtherCAT Master and select&nbsp;<strong>“Scan.”</strong></p>



<p class="wp-block-paragraph"><em><strong>Note: </strong>Scanning is only possible when the PLC is in <strong>Config </strong>mode.</em></p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="628" height="672" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-12.jpg.png" alt="EtherCAT device scan" class="wp-image-49641" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:650px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-12.jpg.png 628w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-12.jpg-280x300.png 280w" sizes="(max-width: 628px) 100vw, 628px" /></figure>



<p class="wp-block-paragraph">Now you can activate the hardware configuration&nbsp;using the steps&nbsp;icon in the top ribbon:</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="341" height="111" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-13.jpg.png" alt="Beckhoff PLC programming" class="wp-image-49642" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:450px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-13.jpg.png 341w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-13.jpg-300x98.png 300w" sizes="(max-width: 341px) 100vw, 341px" /></figure>



<p class="wp-block-paragraph">If the button is grayed out, make sure you have selected the correct target in the TwinCAT XAE software and have a valid route.</p>



<p class="wp-block-paragraph">When the <strong>Activate Configuration</strong> confirmation window appears, click <strong>&#8220;OK.&#8221;</strong></p>



<p class="wp-block-paragraph">If issues arise during this step, you may need to troubleshoot your hardware setup and verify that your TwinCAT project is configured correctly.</p>



<p class="wp-block-paragraph">If your Beckhoff IPC does not have runtime licenses installed, which is common during an initial setup, TwinCAT XAE will prompt you to generate trial licenses. Click <strong>&#8220;Yes&#8221;</strong> and follow the prompts.</p>



<p class="wp-block-paragraph">If you have purchased full runtime licenses, you can install them in a later step to replace the trial licenses.</p>



<p class="wp-block-paragraph">Enter the Captcha required for trial licenses.</p>



<p class="wp-block-paragraph">You can now click the <strong>login</strong> button to log in to the PLC. Once logged in, you can also click the <strong>start </strong>button if you need to start the PLC’s runtime.</p>



<div class="wp-block-columns are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-0e47273b wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image aligncenter size-full has-custom-border"><img decoding="async" width="359" height="213" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-14.jpg.png" alt="Beckhoff PLC programming 'Activate Configuration' window" class="wp-image-49643" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-14.jpg.png 359w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-14.jpg-300x178.png 300w" sizes="(max-width: 359px) 100vw, 359px" /></figure>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image aligncenter size-full has-custom-border"><img decoding="async" width="502" height="204" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-15.jpg.png" alt="Beckhoff PLC programming trial license window" class="wp-image-49646" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-15.jpg.png 502w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-15.jpg-300x122.png 300w" sizes="(max-width: 502px) 100vw, 502px" /></figure>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image aligncenter size-full has-custom-border"><img decoding="async" width="413" height="161" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-16.jpg.png" alt="Beckhoff PLC programming security code" class="wp-image-49647" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-16.jpg.png 413w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-16.jpg-300x117.png 300w" sizes="(max-width: 413px) 100vw, 413px" /></figure>
</div>
</div>



<p class="wp-block-paragraph">You can now click the <strong>login</strong> button to log in to the PLC. Once logged in, you can also click the <strong>start</strong> button if you need&nbsp;to start the PLC’s runtime.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="95" height="29" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-17.jpg.png" alt="" class="wp-image-49648"/></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="93" height="27" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-18.jpg.png" alt="" class="wp-image-49649"/></figure>



<h3 id="h-activating-licenses" class="wp-block-heading">Activating Licenses</h3>



<p class="wp-block-paragraph">Activating licenses in TwinCAT can be somewhat tricky, and this walkthrough will cover the basics. For further help with licensing, your contact at Beckhoff is a great resource.</p>



<p class="wp-block-paragraph">First, you’ll need to select the proper license device. If using a USB dongle or card, it is critical that you select the right device before sending your license request file to Beckhoff. License request/response files are tied to device IDs, and so once a request has been sent and a response received, that license can only be used with that device. To change devices, you’ll have to get in touch with Beckhoff headquarters in Germany, and depending on your location, that might take some time. So try to avoid that by getting the license device correct first!</p>



<p class="wp-block-paragraph">To select the proper device, go to <strong>System &gt; License</strong>.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="563" height="426" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-19.jpg.png" alt="Beckhoff PLC programming 'License' menu" class="has-border-color wp-image-49650" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:650px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-19.jpg.png 563w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-19.jpg-300x227.png 300w" sizes="(max-width: 563px) 100vw, 563px" /></figure>



<p class="wp-block-paragraph">If you’re using a dongle and it’s already in the project, you can select it from the <strong>License Device</strong> dropdown in the <strong>&#8220;Order Information (Runtime)&#8221;</strong> tab. </p>



<p class="wp-block-paragraph">If you are not using a dongle, select <strong>Target </strong>from the dropdown to bind the licenses to the Beckhoff IPC&#8217;s hardware ID. In this case, you can skip the remaining dongle-related steps and proceed directly to generating a license request.</p>



<p class="wp-block-paragraph">We do recommend the use of a dongle when possible, so the IPC can be replaced without losing licenses.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="615" height="400" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-20.jpg.png" alt="Beckhoff PLC programming 'License Device' drop down menu" class="wp-image-49652" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:650px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-20.jpg.png 615w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-20.jpg-300x195.png 300w" sizes="(max-width: 615px) 100vw, 615px" /></figure>



<p class="wp-block-paragraph">If the dongle is not already configured in your project, click <strong>&#8220;Add…</strong>&#8221; to the right of the dropdown to add it. The dongle will then appear under <strong>License</strong> in the project tree.</p>



<p class="wp-block-paragraph">After you click <strong>&#8220;Add…&#8221;</strong>, the <strong>License Device</strong> window will open. From here, you can select the appropriate dongle on your target Beckhoff IPC by clicking <strong>&#8220;Search in I/O Configuration…&#8221;</strong> or <strong>&#8220;Search USB Dongle on Target…&#8221;</strong>.</p>



<p class="wp-block-paragraph">To use either option, TwinCAT must be in Config mode. You can switch to <strong>Config</strong> mode by clicking the blue gear icon in the TwinCAT engineering environment. After selecting the correct dongle, return TwinCAT to <strong>Run </strong>mode by clicking the green gear icon.</p>



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



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="610" height="520" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-21.jpg.png" alt="Beckhoff PLC programming 'Search in I/O Configuration...'" class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-49653" style="border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:650px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-21.jpg.png 610w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-21.jpg-300x256.png 300w" sizes="(max-width: 610px) 100vw, 610px" /></figure>



<p class="wp-block-paragraph">If the dongle doesn’t appear while searching, be sure your IO is configured correctly and the IPC recognizes the dongle. When the dongle has been selected, the <strong>dongle status</strong> information should populate.</p>



<p class="wp-block-paragraph">Now that the dongle is in your project, you can go back to the <strong>License </strong>window, and you should be able to select it in the license device dropdown. Make sure that when you select it from the dropdown, the system ID changes (indicating the dongle <strong>system ID</strong> is different from the target system ID). Also ensure the system ID of the dongle is something reasonable (e.g., not a bunch of 0s; this might indicate you’re not communicating properly with the dongle).</p>



<p class="wp-block-paragraph">If you have multiple license devices (e.g. target and a dongle), a <strong>&#8220;License Device&#8221;</strong> column will appear in the table at the bottom of the window. Make sure to select the correct device that you’d like to store each license on (most likely choose the dongle for all licenses).</p>



<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="900" height="310" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-22.jpg.png" alt="Beckhoff PLC programming license device identification" class="has-border-color wp-image-49654" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-22.jpg.png 900w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-22.jpg-300x103.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-22.jpg-768x265.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">Now that we’ve selected the correct license device, we need to generate a <strong>license request file</strong>. To do this we’ll first need to enter a <strong>license ID</strong> (provided by your contact at Beckhoff) in the license ID box. You can also enter a customer ID and a comment, but these are optional. Once you’ve entered a license ID, click <strong>&#8220;Generate File…&#8221;</strong>.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="704" height="173" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-23.jpg.png" alt="Beckhoff PLC programming 'Generate File' request" class="has-border-color wp-image-49664" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:650px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-23.jpg.png 704w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-23.jpg-300x74.png 300w" sizes="(max-width: 704px) 100vw, 704px" /></figure>



<p class="wp-block-paragraph" style="line-height:1.5">TwinCAT will prompt you to save the license request file to your programming computer. Save the file, then, when prompted to <strong>&#8220;Send license request to Beckhoff,&#8221;</strong> select <strong>&#8220;No&#8221;</strong>. We&#8217;ll send the file manually instead.</p>



<p class="wp-block-paragraph"><em><strong>Note:</strong> This is your last chance to turn back before tying licenses to a device ID! Check over your license hardware setup and make sure everything is in order. If there are&nbsp;problems, regenerate the license file with the corrected settings before sending to Beckhoff.</em></p>



<p class="wp-block-paragraph">Locate the license request <kbd>(*.tclrq)</kbd> file you just saved. Create a new email, attach the file, and send it to <strong>tclicense@beckhoff.com</strong>.</p>



<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="482" height="283" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-24.jpg.png" alt="Beckhoff PLC programming demo license email example" class="has-border-color wp-image-49666" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-24.jpg.png 482w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-24.jpg-300x176.png 300w" sizes="(max-width: 482px) 100vw, 482px" /></figure>



<p class="wp-block-paragraph">If everything is set up correctly and your license request is valid, Beckhoff will respond with an automatically generated email that has a <strong>license response file</strong> <kbd>(*.tclrs)</kbd>. Save this file to your programming computer.</p>



<p class="wp-block-paragraph">If the file is not attached to the email, the email will include whatever issues the automated system had with your license request, and you may need to work this out with your Beckhoff contact.</p>



<p class="wp-block-paragraph">Back in the license window, use the <strong>&#8220;License Response File&#8221; </strong>button to select the license response file. For the new license response to take effect, you’ll need to restart TwinCAT on the target, which you can do with the green gear icon.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="900" height="124" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-25.jpg.png" alt="Beckhoff PLC programming 'License Response File' button" class="has-border-color wp-image-49667" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:650px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-25.jpg.png 900w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-25.jpg-300x41.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-plc-programming-image-25.jpg-768x106.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">If everything worked properly, the <strong>Current Status</strong> column in the License window should be green and read <strong>valid </strong>for every license. You may need to refresh the window (close it and re-open it) to see this status change.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--40)">Now that we&#8217;ve correctly activated and configured the licenses, we are ready to configure the HMI server, which we cover in part three of this blog series.</p>



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



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Learn more about DMC’s <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/beckhoff-and-twincat-3-programming/" target="_blank" rel="noreferrer noopener">Beckhoff automation expertise</a> and programming, and get started modernizing your system today.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/19664/getting-started-with-a-beckhoff-plc-part-two-plc-configuration/">Beckhoff Setup Basics: Getting Started with a Beckhoff PLC</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Beckhoff Setup Basics: IPC Configuration Steps</title>
		<link>https://static.dmcinfo.com/blog/19695/getting-started-with-a-beckhoff-plc-part-one-setup/</link>
		
		<dc:creator><![CDATA[Owen Johnson]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 18:48:15 +0000</pubDate>
				<category><![CDATA[Beckhoff PLC]]></category>
		<category><![CDATA[HMI and SCADA]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Beckhoff and TwinCAT]]></category>
		<category><![CDATA[IPC Configuration]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/19695/getting-started-with-a-beckhoff-plc-part-one-setup/</guid>

					<description><![CDATA[<p>This blog is Part 1 of a multi-part series. Make sure to check out the other blogs on this topic: Summary This is the first&#160;installment of a three-part blog series covering all you need to know about getting started with a Beckhoff PLC/HMI.&#160;In this blog, we&#8217;ll be&#160;covering how to initially set up&#160;your Beckhoff IPC to [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/19695/getting-started-with-a-beckhoff-plc-part-one-setup/">Beckhoff Setup Basics: IPC Configuration Steps</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-bcadade0 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--50);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)">
<p class="wp-block-paragraph">This blog is <strong>Part 1</strong> of a multi-part series. Make sure to check out the other blogs on this topic:</p>



<ol class="wp-block-list">
<li><strong>Beckhoff Setup Basics: IPC Configuration Steps</strong></li>



<li><a href="https://static.dmcinfo.com/blog/19664/getting-started-with-a-beckhoff-plc-part-two-plc-configuration/" target="_blank" rel="noreferrer noopener">Beckhoff Setup Basics: Getting Started with a Beckhoff PLC</a></li>



<li><a href="https://static.dmcinfo.com/blog/19459/getting-started-with-a-beckhoff-plc-part-three-hmi-configuration/" target="_blank" rel="noreferrer noopener">Beckhoff Basics: HMI Configuration</a></li>
</ol>
</div>



<h2 id="h-summary" class="wp-block-heading">Summary</h2>



<p class="wp-block-paragraph">This is the <strong>first&nbsp;installment of a three-part blog series</strong> covering all you need to know about getting started with a Beckhoff PLC/HMI.&nbsp;In this blog, we&#8217;ll be&nbsp;covering how to initially set up&nbsp;your Beckhoff IPC to run PLC code and a TCHMI server.</p>



<p class="wp-block-paragraph">Within DMC, we often find ourselves setting up a new IPC, and it has proved very helpful to have a standardized guide to start with. So, we’ve compiled this guide to serve as a resource both within our organization and externally, and we’ve updated it for TwinCAT build 3.1.4026. <strong>Some key steps have changed significantly with build 4026</strong>, so if you are using an earlier version, please consult the version notes on the package install steps.</p>



<p class="wp-block-paragraph"><em>Note: If you aren&#8217;t planning to use TwinCAT HMI, you may disregard any steps specific to it. If you find yourself needing to use it in the future, you can perform those steps at any point.</em></p>



<p class="wp-block-paragraph">The process below was developed and documented on a Windows 10 development machine, but the process will be functionally identical for Windows 11.</p>



<h2 id="h-term-definitions" class="wp-block-heading">Term Definitions</h2>



<p class="wp-block-paragraph">Throughout this blog series, we refer to two devices repeatedly. For clarity, those devices are as follows:</p>



<ol class="wp-block-list">
<li style="padding-bottom:var(--wp--preset--spacing--30)"><strong>&#8220;Beckhoff IPC&#8221;</strong>– The industrial PC that will run the PLC and HMI server. Device configuration will occur on this device. Beckhoff sells these directly. Third-party IPCs can also be used, but licensing is more expensive.</li>



<li><strong>&#8220;Programming Computer&#8221;</strong>– A computer, such as an engineer&#8217;s laptop, where the TwinCAT XAE development environment is installed. Programming happens on this device, as well as some of the configuration of the Beckhoff IPC.</li>
</ol>



<h2 id="h-power-on-and-connection" class="wp-block-heading">Power-On and Connection</h2>



<p class="wp-block-paragraph">Most Beckhoff IPCs do not have a power button; rather, they power on as soon as power is supplied. When ready, supply power. A keyboard, mouse, and monitor will also be useful for first power-on and initial configuration.</p>



<h2 id="h-beckhoff-device-manager" class="wp-block-heading">Beckhoff Device Manager</h2>



<p class="wp-block-paragraph">If your device is a Beckhoff IPC, Beckhoff Device Manager will generally run on startup. For a basic setup, you can step through the wizard with default options, and on the last page, uncheck the box that says “Run Beckhoff Security Wizard on next startup,” so it won’t run on startup in the future.</p>



<h2 id="h-change-nic-settings" class="wp-block-heading">Change NIC Settings</h2>



<p class="wp-block-paragraph">We’ll begin with some basic network setup. Open up the IPC’s adapter settings by right-clicking on the Network Icon in the system tray and selecting <strong>“Open Network &amp; Internet settings”</strong>.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">From this window, select <strong>“Change adapter options”</strong> (<strong>“Change adapter settings”</strong> on the left side of the window in Windows 7).</p>



<figure class="wp-block-image size-full has-custom-border" style="margin-bottom:var(--wp--preset--spacing--40)"><img decoding="async" width="900" height="675" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-1.png" alt="Beckhoff IPC Configuration 'Change Adapter Options'" class="has-border-color wp-image-49459" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-1.png 900w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-1-300x225.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-1-768x576.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">This window should display the Network Interface Connections (NICs) available on your Beckhoff IPC. There are often two (though there may be more or less) – one that you can use to connect a programming computer and another that can be used to connect to IO racks/devices. Before you proceed, identify which NIC you will be using for each purpose and the IP addresses that you’d like to assign to these NICs. A helpful (but optional) step is to rename each NIC to describe its purpose.</p>



<p class="wp-block-paragraph">To do this, right-click on a NIC and select <strong>Rename</strong>. In this example, <strong>Programming Port</strong> will be used for programming, and <strong>EtherCAT Master</strong> will be used to connect to IO.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--40)">To change IP addresses for these NICs, right-click on them and select <strong>Properties</strong>. Then navigate to <strong>Internet Protocol Version 4 (TCP/IPv4)</strong> and select <strong>Properties</strong>. You can then input your selected IP addresses. For advanced network configurations, the subnet mask can also be changed at this point.</p>



<figure class="wp-block-image size-full is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--50)"><img decoding="async" width="900" height="393" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-2.png" alt="Beckhoff IPC Configuration 'Network Connections'" class="has-border-color wp-image-49460" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:2.2770398481973433;object-fit:cover;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-2.png 900w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-2-300x131.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-2-768x335.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">For this tutorial, we will be using:<br>Programming Port: 192.168.42.42<br>EtherCAT Master: 192.168.43.43</p>



<h2 id="h-optional-rename-pc" class="wp-block-heading">(Optional) Rename PC</h2>



<p class="wp-block-paragraph">While this step isn’t necessary, it can be helpful to rename your PC so if it’s connected to a network in the future, it can be easily identified. To do so, navigate to <strong>Start Menu &gt; Settings &gt; System &gt; About &gt; Rename PC</strong>.</p>



<p class="wp-block-paragraph">After you rename your IPC, it will prompt you for a restart. You may postpone this to save time, as some of the following steps will also require a restart.</p>



<h2 id="h-install-chrome-or-firefox-if-using-twincat-hmi" class="wp-block-heading"><u><a name="Download Software" id="Download Software"></a></u>Install Chrome or Firefox If Using TwinCAT HMI</h2>



<p class="wp-block-paragraph">Google Chrome and Mozilla Firefox work well with TwinCAT 3, and we’ve seen issues with other browsers in the past. So, we recommend you install one of these browsers if you’re going to be using TwinCAT 3 HMI on this IPC.</p>



<p class="wp-block-paragraph">If you’re working on an IPC that cannot be connected to the internet during setup, you will need a standalone installer.</p>



<ul style="padding-bottom:0" class="wp-block-list">
<li style="padding-bottom:var(--wp--preset--spacing--30)">Chrome requires a <a href="https://www.google.com/intl/en/chrome/?standalone=1" data-type="link" data-id="https://www.google.com/intl/en/chrome/?standalone=1">special installer</a> for this.
<ul class="wp-block-list">
<li style="padding-bottom:var(--wp--preset--spacing--30)">At the time of writing, Google does not make it clear on the webpage whether the installer is standalone or not.</li>



<li>The downloaded file from the given link should contain “Standalone” in its filename, which confirms it is correct.</li>
</ul>
</li>



<li style="padding-bottom:var(--wp--preset--spacing--30)">Firefox <a href="https://www.firefox.com/en-US/download/all/" data-type="link" data-id="https://www.firefox.com/en-US/download/all/">install files</a> are generally standalone by default.</li>
</ul>



<p class="wp-block-paragraph">Download or transfer the install files to the IPC and follow the instructions in the installer. Once installed, you may want to launch the browser and disable distracting features such as suggested homepage links or password-manager prompts.</p>



<h2 id="h-create-a-beckhoff-account" class="wp-block-heading">Create a Beckhoff Account</h2>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">If you do not already have a Beckhoff account, you must register so you can download software. Beckhoff generally requires an account for any software downloads, so this will be useful going forward as well. Go to https.www.beckhoff.com, where you can register for an account as shown below.</p>



<figure class="wp-block-image size-large is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--50)"><img decoding="async" width="1024" height="419" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-3-1024x419.png" alt="Beckhoff account registration" class="has-border-color wp-image-49463" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:2.4302295398079132;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-3-1024x419.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-3-300x123.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-3-768x315.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-3.png 1360w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="h-setup-packages" class="wp-block-heading">Setup Packages</h2>



<p class="wp-block-paragraph">The installation process has changed significantly for build 4026. Package Manager is a new feature that streamlines downloading and installing packages, and it must be used when working with 4026.</p>



<h3 id="h-legacy-4024-installation-notes" class="wp-block-heading">Legacy 4024 installation notes</h3>



<p class="wp-block-paragraph">If you are using 4024, you have two options. You may install legacy packages through Package Manager. Or, you may follow the legacy installation procedure using EXEs.</p>



<p class="wp-block-paragraph">The legacy installation procedure:</p>



<ol class="wp-block-list">
<li>Visit https://beckhoff.com/, log in, and navigate to <strong>Download finder &gt; Software and tools</strong>.</li>



<li>On your programming PC, you will need <strong>eXtended Automation Engineering (XAE) and the engineering versions of any TwinCAT functions.</strong></li>



<li>On the Beckhoff IPC, you will need <strong>eXtended Automation Runtime (XAR) and the runtime versions of any TwinCAT functions.</strong>
<ul class="wp-block-list">
<li>Note: If you require a build of 4024 not available on the website, you will need to reach out to Beckhoff support for assistance.</li>



<li>TwinCAT Functions are Beckhoff-developed applications that allow for special functionality on the PLC. They will have their own separate EXE to install.</li>



<li>Common TwinCAT Functions include the following–install the ones required based on your project; you can install more functions later if required.
<ul class="wp-block-list">
<li>TF2000: TwinCAT HMI</li>



<li>TF3300: TwinCAT Scope</li>



<li>TF5000: TwinCAT NC PTP</li>



<li>TF6100: OPC UA Server</li>



<li>TF6250: Modbus TCP</li>



<li>TF6255: Modbus RTU</li>



<li>TF6310: TCP/IP</li>
</ul>
</li>
</ul>
</li>



<li>For any Engineering EXEs, install them onto your programming PC.</li>



<li>For Runtime EXEs, transfer the EXEs to your IPC, then install them. Install XAR first, then the remaining packages.</li>
</ol>



<p class="wp-block-paragraph">You cannot use the legacy EXE installation along with the newer Package Manager-based installation. If you need to upgrade or change versions, you must carefully follow the instructions in this Infosys page before installing the other version.</p>



<h3 id="h-install-package-manager" class="wp-block-heading">Install Package Manager</h3>



<p class="wp-block-paragraph">You will need Package Manager on the IPC–it should come preinstalled with Beckhoff 4026 IPCs. You will likely also need Package Manager on your programming computer.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--40)">Once you have registered or logged in on Beckhoff.com, go to Download Finder as boxed in the figure below.</p>



<figure class="wp-block-image size-large is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--60)"><img decoding="async" width="1024" height="443" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-4-1024x443.png" alt="Beckhoff 'Download Finder'" class="has-border-color wp-image-49466" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-4-1024x443.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-4-300x130.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-4-768x333.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-4.png 1284w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Package manager should be the first option at the top of the page; if it isn’t, search for it in the download finder.</p>



<p class="wp-block-paragraph">Download the available version as an EXE, and install it on your programming computer and IPC if it is not already installed.</p>



<h3 id="h-configure-feeds" class="wp-block-heading">Configure Feeds</h3>



<p class="wp-block-paragraph">Feeds are repositories of packages that Beckhoff provides. Beckhoff provides a Stable Feed, Outdated Feed, and Testing Feed. We recommend using the Beckhoff Stable Feed for any production systems. See <a href="https://infosys.beckhoff.com/content/1033/tc3_installation/20646388747.html?id=6601972365691117656" target="_blank" rel="noreferrer noopener">this Infosys page</a> for details on each feed.</p>



<p class="wp-block-paragraph">If your IPC is (or can easily be) connected to the internet directly, you will likely find it easiest to download and install your required packages from the online feeds.</p>



<p class="wp-block-paragraph">If the IPC cannot be connected to Beckhoff’s servers, then you can follow these <a href="https://infosys.beckhoff.com/content/1033/tc3_installation/20646399115.html?id=5634929850179798270" target="_blank" rel="noreferrer noopener">instructions</a> from Beckhoff to transfer the packages onto your offline IPC. Beckhoff supports using a file directory with package files as a personal feed. Beckhoff also supports a compressed file containing all selected packages, transferred from a programming computer.</p>



<p class="wp-block-paragraph">To configure the feeds, launch Package Manager.</p>



<figure class="wp-block-image size-large is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--60)"><img decoding="async" width="1024" height="576" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-5-1024x576.png" alt="TwinCAT Package Manager 'Introduction' tab" class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-49468" style="border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-5-1024x576.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-5-300x169.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-5-768x432.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-5.png 1432w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Click the <strong>“+ Add new feed”</strong> button to add a new feed.</p>



<figure class="wp-block-image size-large is-resized has-custom-border"><img decoding="async" width="1024" height="467" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-6-1024x467.png" alt="TwinCAT Package Manager 'Feeds' tab" class="wp-image-49469" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-6-1024x467.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-6-300x137.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-6-768x351.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-6-1536x701.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-6.png 1917w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large is-resized has-custom-border"><img decoding="async" width="1024" height="469" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-7-1024x469.png" alt="TwinCAT Package Manager 'Add Feed' window" class="wp-image-49470" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-7-1024x469.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-7-300x137.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-7-768x352.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-7-1536x703.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-7.png 1917w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">As discussed, you may enter the Beckhoff online feeds if connected to the internet, or if offline, you may use any local folder as a feed.</p>



<figure class="wp-block-image size-large is-resized has-custom-border"><img decoding="async" width="1024" height="469" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-8-1024x469.png" alt="TwinCAT Package Manager 'Edit Feed' window" class="wp-image-49472" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-8-1024x469.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-8-300x137.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-8-768x352.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-8-1536x703.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-8.png 1917w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">If selecting the outdated feed, you may get a disclaimer as shown. If you are comfortable with the disclaimer, you may accept it by clicking <strong>&#8220;Yes,</strong>&#8221; and the feed will be added.</p>



<figure class="wp-block-image size-large is-resized has-custom-border"><img decoding="async" width="1024" height="576" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-9-1024x576.png" alt="TwinCAT Package Manager 'DISCLAIMER' warning" class="has-border-color wp-image-49473" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-9-1024x576.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-9-300x169.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-9-768x432.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-9.png 1432w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Multiple feeds can be added, as necessary, and will be used in the priority order displayed.</p>



<figure class="wp-block-image size-large is-resized has-custom-border"><img decoding="async" width="1024" height="576" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-10-1024x576.png" alt="TwinCAT Package Manager 'Feeds' tab" class="has-border-color wp-image-49475" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-10-1024x576.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-10-300x169.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-10-768x432.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-10.png 1432w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Package Manager will next ask to integrate with Visual Studio (if installed), or XAE Shell or XAE Shell 64-bit. XAE Shell 64-bit is a more modern, faster version of XAE Shell, newly added with the release of 4026.</p>



<figure class="wp-block-image size-large is-resized has-custom-border"><img decoding="async" width="1024" height="576" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-11-1024x576.png" alt="TwinCAT Package Manager 'Integration' tab" class="has-border-color wp-image-49476" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-11-1024x576.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-11-300x169.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-11-768x432.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-11.png 1432w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Select a location to install the TwinCAT Packages.</p>



<p class="wp-block-paragraph">Note: This is a different default location than legacy 4024 XAE/XAR installations.</p>



<figure class="wp-block-image size-large is-resized has-custom-border"><img decoding="async" width="1024" height="576" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-12-1024x576.png" alt="TwinCAT Package Manager 'Location' tab" class="has-border-color wp-image-49477" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-12-1024x576.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-12-300x169.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-12-768x432.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-12.png 1432w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 id="h-use-package-manager-to-install-twincat-packages" class="wp-block-heading">Use Package Manager to Install TwinCAT Packages</h2>



<p class="wp-block-paragraph">Once Package Manager is set up, we can now install packages onto the IPC.</p>



<p class="wp-block-paragraph">If the IPC is connected to the internet and can access the Beckhoff-hosted feeds, you will see a list of available packages to install.</p>



<p class="wp-block-paragraph">The packages can be filtered by Engineering Packages and Runtime Packages:</p>



<ul class="wp-block-list">
<li>Engineering Packages are meant to be installed on your programming computer and will allow you to connect, modify, or control the PLC.
<ul class="wp-block-list">
<li>Common examples include:
<ul class="wp-block-list">
<li>TwinCAT Standard</li>



<li>TwinCAT XAE Shell / XAE Shell 64-bit</li>



<li>TE9000: Safety Editor</li>



<li>TE1300: TwinCAT Scope</li>



<li>TE2000: TwinCAT HMI</li>
</ul>
</li>
</ul>
</li>



<li>Runtime Packages provide applications that will run on the Beckhoff IPC.
<ul class="wp-block-list">
<li>Common examples include:
<ul class="wp-block-list">
<li>TwinCAT Standard</li>



<li>TC1000: TwinCAT ADS</li>



<li>TF2000: TwinCAT HMI Server</li>



<li>TF3300: TwinCAT Scope Server</li>



<li>TF5000: TwinCAT NC PTP</li>



<li>TF6100: OPC UA Server</li>



<li>TF6250: Modbus TCP</li>



<li>TF6255: Modbus RTU</li>



<li>TF6310: TCP/IP</li>



<li>Beckhoff Device Manager</li>
</ul>
</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">Select all the packages that you need for your system. Then either click Install (Blue Download button) to install locally, or Download to send to an offline IPC (Press 3 dots button, then <strong>&#8220;Download&#8221;</strong>).</p>



<figure class="wp-block-image size-large is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--60)"><img decoding="async" width="1024" height="469" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-13-1024x469.png" alt="TwinCAT Package Manager download manager" class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-49480" style="border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1018px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-13-1024x469.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-13-300x137.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-13-768x352.png 768w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-13-1536x703.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-13.png 1917w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Once all the packages are selected, either click <strong>“Apply Modifications”</strong> to install them locally, or click <strong>“Start Download”</strong> or <strong>“Start Download as a Zip”</strong>. Please refer to <a href="https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_installation/20646399115.html&amp;id=5634929850179798270" target="_blank" rel="noreferrer noopener">Infosys</a> for more information on installing offline feeds.</p>



<h2 id="h-install-the-beckhoff-real-time-ethernet-driver" class="wp-block-heading">Install the Beckhoff Real-Time Ethernet Driver</h2>



<p class="wp-block-paragraph">Next, you will need to install the Beckhoff Real-Time Ethernet Driver on the NIC to which you plan to connect your IO. This will allow the Beckhoff IPC to communicate with said IO.</p>



<p class="wp-block-paragraph">Navigate to <strong>C:\TwinCAT\3.1\System and run TcRteInstall.exe</strong>.</p>



<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="660" height="371" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-20.png" alt="Local TwinCAT installer" class="has-border-color wp-image-49520" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-20.png 660w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-20-300x169.png 300w" sizes="(max-width: 660px) 100vw, 660px" /></figure>



<p class="wp-block-paragraph">In the Compatible devices section, select the NIC that you will use for IO (EtherCAT Master if you configured your NIC settings as described earlier) and click Install.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="609" height="451" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-21.png" alt="TwinCAT RT-Ethernet Adapters 'Install' button" class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-49524" style="border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:1.3355119825708062;width:657px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-21.png 609w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-21-300x222.png 300w" sizes="(max-width: 609px) 100vw, 609px" /></figure>



<p class="wp-block-paragraph">After the process is completed, the NIC should move to the Installed and ready-to-use devices (real-time capable) section. You can close out of the application.</p>



<h2 id="h-set-firewall-settings" class="wp-block-heading">Set Firewall Settings</h2>



<p class="wp-block-paragraph">It’s important to maintain secure firewall settings on industrial devices to avoid allowing unwanted access to an industrial network, especially if said devices will be connected to the internet. But we must allow communication to the TwinCATTwinCAT runtime/HMI server via a programming computer to download code. To do this, we will enable a few rules within the firewall. Beckhoff will pre-configure certain ports on IPCs, but we recommend going through these steps to confirm that no traffic will be blocked. You may also need to refer to this section if firewall settings are inadvertently changed or reset.</p>



<p class="wp-block-paragraph">Navigate to <strong>Start Menu &gt; Settings</strong>. In the search bar, search “firewall” and open <strong>Windows Defender Firewall</strong>.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="871" height="668" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-14.png" alt="Windows Settings 'Defender Firewall'" class="has-border-color wp-image-49484" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:871px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-14.png 871w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-14-300x230.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-14-768x589.png 768w" sizes="(max-width: 871px) 100vw, 871px" /></figure>



<p class="wp-block-paragraph">In the window that appears, select <strong>Advanced Settings</strong> on the right.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="900" height="352" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-15.png" alt="Windows Defender Firewall 'Advanced Settings'" class="has-border-color wp-image-49490" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:2.53934664726888;width:876px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-15.png 900w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-15-300x117.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-15-768x300.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">In the Windows Defender Firewall with Advanced Security window, select <strong>Inbound Rules</strong> on the left and click <strong>New Rule</strong> on the right.</p>



<figure class="wp-block-image size-full is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--50)"><img decoding="async" width="900" height="403" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-16.png" alt="Windows Defender Firewall 'New Rule...'" class="has-border-color wp-image-49491" style="border-color:#eeeeee;border-width:2px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:2.221108240465816;width:871px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-16.png 900w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-16-300x134.png 300w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-16-768x344.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">Details on important TCP/UDP ports required for TwinCAT Services can be found on <a href="https://infosys.beckhoff.com/english.php?content=../content/1033/ipc_security_wince/11019143435.html&amp;id=" data-type="link" data-id="https://infosys.beckhoff.com/english.php?content=../content/1033/ipc_security_wince/11019143435.html&amp;id=" target="_blank" rel="noreferrer noopener">Infosys</a>, but in our experience, the most important ports are:</p>



<ul class="wp-block-list">
<li>TCP 48898 (TwinCAT ADS Not Secure)</li>



<li>UDP 48899 (TwinCAT ADS Discovery)</li>



<li>TCP 8016 (TwinCAT ADS Secure)</li>



<li>TCP 1010 (TwinCAT HMI &lt;=1.12 Local)</li>



<li>TCP 1020 (TwinCAT HMI &lt;=1.12 Incoming)</li>



<li>TCP 2010 (TwinCAT HMI &gt;=1.14 Local)</li>



<li>TCP 2020 (TwinCAT HMI &gt;=1.14 Incoming)</li>
</ul>



<p class="wp-block-paragraph">Step through the wizard, using <strong>Port </strong>as the rule type, and add rules for all required ports.</p>



<h2 id="h-change-ams-net-id" class="wp-block-heading">Change AMS Net ID</h2>



<p class="wp-block-paragraph">The AMS Net ID is used by the TwinCAT XAE programming suite to identify specific PLC runtimes, and to connect to that runtime. It is made up of 6 values from 0-255, period-delimited. At DMC, we usually set the AMS Net ID to be the same as the IP address of the programming port of the Beckhoff IPC, followed by “.1.1”, for instance, “192.168.42.42.1.1”. This makes it easier to remember than using an entirely different number (though any value technically works).</p>



<p class="wp-block-paragraph">Click on the TwinCAT gear icon in the system tray and select <strong>Router &gt; Change AMS Net ID</strong>. If this gear icon does not appear in the system tray, you may need to restart your IPC first. After typing in your selected AMS Net ID and confirming, you will be prompted to restart. Now is a good time to do so.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-e8839977 wp-block-columns-is-layout-flex" style="padding-bottom:var(--wp--preset--spacing--30)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:20%">
<figure class="wp-block-image aligncenter size-full is-resized has-custom-border"><img decoding="async" width="207" height="279" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-17.png" alt="Windows settings icon" class="wp-image-49492" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:0.7333333333333333;object-fit:cover;width:159px;height:auto"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:40%">
<figure class="wp-block-image aligncenter size-full is-resized has-custom-border"><img decoding="async" width="408" height="265" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-18.png" alt="'Change AMS Netld' &gt; 'Router' menu options" class="has-border-color has-custom-black-border-color wp-image-49494" style="border-width:1px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:1.56;object-fit:cover;width:340px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-18.png 408w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-18-300x195.png 300w" sizes="(max-width: 408px) 100vw, 408px" /></figure>
</div>



<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:40%">
<figure class="wp-block-image aligncenter size-full is-resized has-custom-border"><img decoding="async" width="473" height="239" src="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-19.png" alt="AMS Router window with AMS Net Id display" class="has-border-color wp-image-49496" style="border-color:#eeeeee;border-width:1px;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:1.96921875;width:425px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-19.png 473w, https://static.dmcinfo.com/wp-content/uploads/2020/10/beckhoff-setup-image-19-300x152.png 300w" sizes="(max-width: 473px) 100vw, 473px" /></figure>
</div>
</div>



<h2 id="h-legacy-troubleshooting-steps" class="wp-block-heading">Legacy Troubleshooting Steps</h2>



<p class="wp-block-paragraph" id="h-6-nbsp-install-the-beckhoff-real-time-ethernet-driver">In the past, when using build 3.1.4024, we have sometimes seen an error message when trying to put the PLC into Run Mode:</p>



<pre class="wp-block-code has-text-color has-link-color wp-elements-1" style="color:#d50000"><code>Init4\RTime: Start Interrupt: Ticker started &gt;&gt; AdsWarning: 4115 (0x1013, RTIME: system clock setup fails)</code></pre>



<p class="wp-block-paragraph" id="h-6-nbsp-install-the-beckhoff-real-time-ethernet-driver" style="padding-bottom:var(--wp--preset--spacing--30)">We have not seen this yet with build 3.1.4026 but have preserved the resolution here. If you encounter this error, you can navigate to <strong>C:\Program Files (x86)\Beckhoff\TwinCAT\3.1\System</strong> and run win8settick.bat as administrator. This sets some TwinCAT-required clock settings and resolves the error.</p>



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



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Learn more about DMC’s <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/beckhoff-and-twincat-3-programming/">Beckhoff automation expertise</a> and programming, and get started modernizing your system today.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/19695/getting-started-with-a-beckhoff-plc-part-one-setup/">Beckhoff Setup Basics: IPC Configuration Steps</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Support Ended for InGear NET.LOGIX Driver</title>
		<link>https://static.dmcinfo.com/blog/44470/ingear-net-logix-driver-eol/</link>
		
		<dc:creator><![CDATA[Ben Harris]]></dc:creator>
		<pubDate>Tue, 19 May 2026 11:00:00 +0000</pubDate>
				<category><![CDATA[Allen Bradley PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Allen-Bradley]]></category>
		<category><![CDATA[EOL]]></category>
		<category><![CDATA[InGear]]></category>
		<category><![CDATA[PLC Communication]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=44470</guid>

					<description><![CDATA[<p>At DMC, we strive to provide our clients with stable, up-to-date solutions that stand the test of time. However, in our ever-changing world, components sometimes reach the end of their lifespans, or EOL. Such is the fate of the InGear NET.LOGIX Driver. This post explores this recent shift in the tech ecosystem; what exactly happened [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/44470/ingear-net-logix-driver-eol/">Support Ended for InGear NET.LOGIX Driver</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">At DMC, we strive to provide our clients with stable, up-to-date solutions that stand the test of time. However, in our ever-changing world, components sometimes reach the end of their lifespans, or EOL.</p>



<p class="wp-block-paragraph">Such is the fate of the InGear NET.LOGIX Driver.</p>



<p class="wp-block-paragraph">This post explores this recent shift in the tech ecosystem; what exactly happened to InGear, why support has ended, and what you should use instead if your application still relies on NET.LOGIX today.</p>



<h2 class="wp-block-heading" id="h-ingear-drivers-end-of-life">InGear Drivers End-Of-Life</h2>



<p class="wp-block-paragraph">Once a common choice for communicating between .NET software and Allen-Bradley LOGIX series PLCs, all software drivers have been fully discontinued. This isn&#8217;t a &#8220;maintenance mode&#8221; situation; driver development has stopped, and the license servers used to establish new development environments are no longer available, making ongoing support impossible.</p>



<h2 class="wp-block-heading" id="h-where-did-ingear-go">Where did InGear go?</h2>



<p class="wp-block-paragraph">InGear NET.LOGIX was designed at a time when .NET drivers were the primary method for communicating with Allen-Bradley Logix controllers. Since then, the ecosystem has evolved:</p>



<ul class="wp-block-list">
<li>Rockwell has extended its native support for other communication options.</li>



<li>Open-source libraries like libplctag have gained greater adoption among developers.</li>



<li>Security and deployment expectations have increased significantly, changing driver demands.</li>
</ul>



<p class="wp-block-paragraph">With this shift, InGear NET.LOGIX’s developer decided that it was better to focus its efforts and investments in other areas.</p>



<p class="wp-block-paragraph">And don’t feel bad if you missed the announcement that support for InGear NET.LOGIX driver has ended. There was no formal public EOL date; their website simply displays an unprotected 404 page with no documentation, downloads, or publicly available support channels.</p>



<figure class="wp-block-image aligncenter size-full is-resized has-custom-border" style="margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--60)"><img decoding="async" width="1892" height="639" src="https://static.dmcinfo.com/wp-content/uploads/2026/05/ingear-netlogix-eol-image-1.png" alt="404 page for InGear NET.LOGIX landing page." class="has-border-color wp-image-44473" style="border-color:#eeeeee;border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:2.9259755335297792;width:1200px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/05/ingear-netlogix-eol-image-1.png 1892w, https://static.dmcinfo.com/wp-content/uploads/2026/05/ingear-netlogix-eol-image-1-300x101.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/05/ingear-netlogix-eol-image-1-1024x346.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/05/ingear-netlogix-eol-image-1-768x259.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/05/ingear-netlogix-eol-image-1-1536x519.png 1536w" sizes="(max-width: 1892px) 100vw, 1892px" /></figure>



<h2 class="wp-block-heading" id="h-which-driver-should-i-use-now">Which Driver Should I Use Now?</h2>



<p class="wp-block-paragraph">If your application still relies on InGear Net.LOGIX, the good news is, you’re not stuck. We have successfully migrated systems to modern, actively maintained alternatives. In a previous post, we walked through a free and open-source option: <a href="https://static.dmcinfo.com/blog/41937/replacing-the-net-logix-ingear-driver-with-libplctag-net/">Replacing the NET.LOGIX InGear Driver with libplctag.NET</a>, including considerations to make about system architecture as well as migration tips.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--50)">This is just one of the many instances in which DMC engineers regularly modernize PLC communication layers as part of broader automation and application development projects, helping teams reduce technical debt and maintain system reliability and efficiency.</p>



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



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Take your project to the next level with engineering solutions from DMC. Learn more about our <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/">Automation and App Dev</a> support solutions or contact us to get started today!</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://static.dmcinfo.com/blog/44470/ingear-net-logix-driver-eol/">Support Ended for InGear NET.LOGIX Driver</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rockwell PLC DevOps: Modernizing Version Control</title>
		<link>https://static.dmcinfo.com/blog/43290/modern-devops-rockwell-plc-development/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Tue, 28 Apr 2026 11:00:00 +0000</pubDate>
				<category><![CDATA[Allen Bradley PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[DevOps]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=43290</guid>

					<description><![CDATA[<p>As PLC and industrial automation systems continue to scale, projects are growing larger and more complex. Increasing demands for automation, quality, and advanced features require greater oversight and automated testing of control code well before it reaches the factory floor. To address this, DMC applies modern version control, continuous integration, and continuous deployment practices widely [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/43290/modern-devops-rockwell-plc-development/">Rockwell PLC DevOps: Modernizing Version Control</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">As <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/" type="page" id="441">PLC</a> and <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" type="page" id="420">industrial automation systems</a> continue to scale, projects are growing larger and more complex. Increasing demands for automation, quality, and advanced features require greater oversight and automated testing of control code well before it reaches the factory floor.</p>



<p class="wp-block-paragraph">To address this, DMC applies modern version control, continuous integration, and continuous deployment practices widely used in traditional software development. These processes, and the software that enables these processes, seek to lower the barrier between development (Dev) and operations (Ops). This blog will review how to apply the foundational DevOps principle of version control to Rockwell PLCs.</p>



<h2 id="h-version-control-and-git" class="wp-block-heading">Version Control and Git</h2>



<p class="wp-block-paragraph">Version control systems (VCS) are essential for applying modern DevOps practices to Rockwell PLC development. These systems help create a standardized and reliable way for teams to collaboratively develop, manage, and test code efficiently.</p>



<p class="wp-block-paragraph">Git, which is a distributed version control system (DVCS) originally created by Linus Torvalds, enables effective collaboration among developers through useful features such as branching and merging. Some of the key concepts to understand in Git include the following:</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-0e47273b wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:60%">
<h3 id="h-local-remote-repository" class="wp-block-heading">Local/Remote Repository</h3>



<p class="wp-block-paragraph">A full copy of the entire code base is synchronized to a developer&#8217;s local repository. This means that each developer has their own complete version of the project on their computer. Developers can then synchronize their code changes with others by pushing their updates to the remote repository and pulling changes from it into their local repository. This process allows multiple developers to collaborate effectively by keeping their work up to date and integrated with the team&#8217;s overall progress.</p>



<h3 id="h-non-linear-development" class="wp-block-heading">Non-Linear Development</h3>
</div>



<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:40%">
<figure class="wp-block-image aligncenter size-full is-resized has-custom-border"><img decoding="async" width="316" height="245" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-1.jpg" alt="Distributed version control system architecture" class="wp-image-43319" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:1.289874209465564;object-fit:cover;width:357px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-1.jpg 316w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-1-300x233.jpg 300w" sizes="(max-width: 316px) 100vw, 316px" /></figure>
</div>
</div>



<p class="wp-block-paragraph">Multiple developers can work on different features simultaneously without interfering with each other. Git facilitates this by allowing branching, merging, and pulling code changes. It also has built-in data integrity mechanisms that help prevent lost changes and keep the history consistent</p>



<p class="wp-block-paragraph">The main branch of code is called “main” or, in legacy systems, “master”. This branch should generally be the head of development and is the only branch present when first starting a project.</p>



<p class="wp-block-paragraph" style="padding-bottom:0">Other branches of development branch off from main, usually with a focus on implementing a specific feature or fixing a specific bug. After this code is completed, it is merged back into main (which can be configured to require appropriate permissions), and then usually either deleted or compressed into a single commit.</p>



<figure class="wp-block-image aligncenter size-full is-resized" style="margin-bottom:var(--wp--preset--spacing--70)"><img decoding="async" width="925" height="388" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-2.jpg" alt="Example Git diagram" class="wp-image-43320" style="aspect-ratio:2.3841234258587725;width:935px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-2.jpg 925w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-2-300x126.jpg 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-2-768x322.jpg 768w" sizes="(max-width: 925px) 100vw, 925px" /></figure>



<h3 id="h-local-repository-command" class="wp-block-heading">Local Repository Command</h3>



<p class="wp-block-paragraph">These core Git commands interact directly with your PC&#8217;s local repository. It is important to note that these commands do not affect the remote repository, which requires a different set of commands that will be covered next.</p>



<ul class="wp-block-list">
<li><strong>Branch:</strong> This command allows you to create a copy of an existing branch, usually the main branch, so you can work on new features separately without affecting the main codebase.
<ul class="wp-block-list">
<li style="padding-bottom:var(--wp--preset--spacing--40)">This command stages your changes, preparing them for commit to the active branch. It essentially tells Git which changes you want to include in the next commit.</li>
</ul>
</li>



<li style="padding-bottom:var(--wp--preset--spacing--40)"><strong>Commit:</strong> This command saves the staged changes to the active branch, creating a new snapshot of your project at that point in time.</li>



<li style="padding-bottom:var(--wp--preset--spacing--30)"><strong>Merge:</strong> This command combines two branches into a single branch, allowing you to integrate changes from different lines of development.</li>
</ul>



<p class="wp-block-paragraph">The following additional commands are also commonly used as part of the normal git workflow. These commands are typically utilized by more experienced developers who are comfortable with advanced git operations and want to manage their code more effectively.</p>



<ul class="wp-block-list">
<li style="padding-bottom:var(--wp--preset--spacing--40)"><strong>Stash</strong>: This command allows you to temporarily save the changes you have made to your modified files in your current working branch without committing them. This is useful when you want to switch contexts or branches but are not yet ready to commit your work.</li>



<li style="padding-bottom:var(--wp--preset--spacing--40)"><strong>Switch</strong>: This command is used to move between different active branches of development within your repository. It enables you to quickly and efficiently switch your working branch, making it possible to work across features or fixes.</li>



<li><strong>Diff</strong>: This command compares two different branches and highlights the differences between the files contained in each. It is particularly useful for reviewing changes, understanding what has been modified, and preparing for merges or code reviews.</li>
</ul>



<h3 id="h-remote-repository-commands" class="wp-block-heading">Remote Repository Commands</h3>



<p class="wp-block-paragraph">These commands and concepts are commonly used to facilitate interaction between the local repository on your personal computer and a remote repository hosted on a server. They help synchronize and manage changes efficiently across different environments:</p>



<ul class="wp-block-list">
<li><strong>Fetch:</strong> This command downloads commits, branches, and tags from a remote repository into your local repository. It allows you to see changes made by others without merging them into your working branch immediately.</li>



<li><strong>Pull: </strong>This command fetches changes from the remote branch and then merges those changes directly into your current working branch. It is a convenient way to update your local branch to the latest remote changes in a single step.</li>



<li><strong>Push:</strong> This command sends your committed changes from the local working branch to the designated remote branch. It is used to share your updates with others and keep the remote repository up to date with your work.</li>
</ul>



<h3 id="h-merging" class="wp-block-heading">Merging</h3>



<p class="wp-block-paragraph">When developing, code differences and conflicts can arise when multiple developers work on the same file across different branches. When this occurs during a merge, it is called a merge conflict and must be resolved.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--40)">This is easily handled in traditional text-based programming environments using standard compare-and-merge tools like VSCode (free), which includes functionality for merging text files.</p>



<figure class="wp-block-table is-style-regular" style="padding-bottom:var(--wp--preset--spacing--50)"><table class="has-custom-white-background-color has-background" style="border-width:1px"><thead><tr><th class="has-text-align-center" data-align="center">Step</th><th>Description</th></tr></thead><tbody><tr><td class="has-text-align-center" data-align="center">1</td><td>Configure the default merge tool, usually at the global level. This only needs to be done once.<br><code><em>git config --global diff.tool vscode</em><br><em>git config --global mergetool.vscode.cmd 'code --wait --merge $REMOTE $LOCAL $BASE $MERGED'</em></code></td></tr><tr><td class="has-text-align-center" data-align="center">2</td><td>Call the mergetool with the named tool command vscode when a merge conflict occurs during a push/pull (or manual merge).<br><em><code>git mergetool -t vscode</code></em></td></tr><tr><td class="has-text-align-center" data-align="center">3</td><td>Git will automatically create temporary LOCAL, REMOTE, and BASE files based off of the branches that are being compared. It will then call VSCode with the command-line arguments specified in the configuration above.</td></tr><tr><td class="has-text-align-center" data-align="center">4</td><td>VSCode will open and highlight the differences and allow the developer to pick which changes to keep.</td></tr><tr><td class="has-text-align-center" data-align="center">5</td><td>Once merging is complete, the developer will commit their changes to the local branch and push these changes back to the remote repository.</td></tr></tbody></table></figure>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-0e47273b wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:60%">
<p class="wp-block-paragraph" style="padding-right:var(--wp--preset--spacing--50)">The following example shows a basic Python merge in VS Code. In this example, we had a main branch that was split off into another development branch, foo, which had its own function and function call added. During that time, the bar function and function call were added to our main branch. Because both branches modified the same file, a merge conflict was created. To resolve this conflict, we called <code>git mergetool -t vscode</code><em> </em>to bring up the VS Code merge functionality. Git automatically understood what files to merge and what program to call because we configured the VS Code merge tool earlier.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="padding-top:var(--wp--preset--spacing--30);flex-basis:33.33%">
<figure class="wp-block-image aligncenter size-full has-custom-border" style="margin-left:0"><img decoding="async" width="925" height="484" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-3.jpg" alt="Diagram of main branch off of development branch &quot;foo&quot;" class="wp-image-43322" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:1.9063829787234043;object-fit:cover" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-3.jpg 925w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-3-300x157.jpg 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-3-768x402.jpg 768w" sizes="(max-width: 925px) 100vw, 925px" /><figcaption class="wp-element-caption">Text-based compare</figcaption></figure>
</div>
</div>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">The image of VS Code shows both branches (left/right) being merged, as well as the final merge result at the bottom of the screen. It is important to note that the developer could have chosen to merge the calls to the foo/bar functions without actually merging the function definitions. This makes this tool very powerful, but not error-proof.</p>



<figure class="wp-block-image aligncenter size-full" style="margin-bottom:var(--wp--preset--spacing--60)"><img decoding="async" width="925" height="470" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-4.jpg" alt="VS code merge" class="wp-image-43334" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-4.jpg 925w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-4-300x152.jpg 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-4-768x390.jpg 768w" sizes="(max-width: 925px) 100vw, 925px" /></figure>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">For programs that are not text-based or are overly complicated to merge by hand, additional merge tools can be configured to simplify these conflicts.</p>



<h2 id="h-git-and-logix-designer-compare-tool" class="wp-block-heading">Git and Logix Designer Compare Tool</h2>



<p class="wp-block-paragraph">As part of their standard product offering, Rockwell provides the Logix Designer Compare Tool to allow visual merging of Rockwell PLC code and to identify differences between PLC code. See the full <a href="https://literature.rockwellautomation.com/idc/groups/literature/documents/um/ldct-um001_-en-e.pdf">Getting Results Guide</a> from Rockwell.</p>



<p class="wp-block-paragraph">This application not only offers a GUI for starting compare/merge operations, but also provides a full command-line interface to run them automatically. Based on our previous example with VS Code, the Logix Designer Compare Tool can be configured as a full git merge tool using the following commands. The path to the application can vary depending on where the tool is installed, which is accounted for by the additional path command.</p>



<p class="wp-block-paragraph"><code>git config --global merge.tool rockwell_merge</code></p>



<p class="wp-block-paragraph"><code>git config --global mergetool.rockwell_merge.path 'C:\Program Files (x86)\Rockwell Software\\'</code></p>



<p class="wp-block-paragraph"><code>git config --global mergetool.rockwell_merge.cmd 'RSLCompare.exe -m \$LOCAL \$REMOTE \$BASE'</code></p>



<p class="wp-block-paragraph">After configuring the Rockwell merge tool, the development workflow operates exactly the same as if developing with a text-based language like Python, i.e., using standard commit, branch, merge, and push/pull commands.</p>



<p class="wp-block-paragraph">Repeating the <em>foo</em> and <em>bar</em> example from earlier with Rockwell, I created a Studio 5000 ACD project with a single program/rung. From there, I created two branches of development:</p>



<ul class="wp-block-list">
<li><strong>Foo</strong> &#8211; JSR to a new Foo routine, with basic logic</li>



<li><strong>Bar</strong> &#8211; JSR to the new Bar routine, with basic logic</li>
</ul>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--50)">When merging these branches, I encountered a merge conflict because the ACD file in both branches had been modified. I can resolve this by calling <code>git mergetool -t rockwell_merge</code>. This will tell git to take the file from both branches, as well as the base file they both originated from, and perform a three-way merge. The left content is the local branches, the right content is the remote branch, and the center content is the base branch that the local/remote branches diverged from. The following images show how this merge works:</p>



<figure class="wp-block-image aligncenter size-full is-resized has-custom-border" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--50)"><img decoding="async" width="2554" height="1297" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-5.png" alt="Controller view with top-level project changes." class="wp-image-43547" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:1.9692054597331825;width:1154px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-5.png 2554w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-5-300x152.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-5-1024x520.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-5-768x390.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-5-1536x780.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-5-2048x1040.png 2048w" sizes="(max-width: 2554px) 100vw, 2554px" /><figcaption class="wp-element-caption"><em>The controller view shows all top-level changes to a project.</em></figcaption></figure>



<figure class="wp-block-image aligncenter size-full is-resized has-custom-border" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--50)"><img decoding="async" width="2548" height="1185" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-6.png" alt="Program folder with merge conflicts." class="wp-image-43548" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1154px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-6.png 2548w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-6-300x140.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-6-1024x476.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-6-768x357.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-6-1536x714.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-6-2048x952.png 2048w" sizes="(max-width: 2548px) 100vw, 2548px" /><figcaption class="wp-element-caption"><em>The program folder shows which programs have merge conflicts.</em></figcaption></figure>



<figure class="wp-block-image aligncenter size-full is-resized has-custom-border" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--50)"><img decoding="async" width="2560" height="1300" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-7.png" alt="Program folders with import parameters." class="wp-image-43549" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1154px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-7.png 2560w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-7-300x152.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-7-1024x520.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-7-768x390.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-7-1536x780.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-7-2048x1040.png 2048w" sizes="(max-width: 2560px) 100vw, 2560px" /><figcaption class="wp-element-caption"><em>When viewing a specific program, we can see the differences in the tags, as well as differences in the programs. Differences can include modifications or completely new additions. We will leave the checkmarks on the <code>Foo</code> and <code>Bar</code> routines, to import them as is to the resulting</em> <em><code>Main Program</code></em></figcaption></figure>



<figure class="wp-block-image aligncenter size-full is-resized has-custom-border is-style-default" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--50)"><img decoding="async" width="2553" height="1192" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-8.png" alt="Folder tags with defined scope tags." class="wp-image-43550" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1154px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-8.png 2553w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-8-300x140.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-8-1024x478.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-8-768x359.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-8-1536x717.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-8-2048x956.png 2048w" sizes="(max-width: 2553px) 100vw, 2553px" /><figcaption class="wp-element-caption"><em>The tags folder shows that each new branch has defined new program scope tags, which we want to import as is.</em></figcaption></figure>



<figure class="wp-block-image aligncenter size-full is-resized has-custom-border" style="margin-top:var(--wp--preset--spacing--40);margin-bottom:var(--wp--preset--spacing--50)"><img decoding="async" width="2559" height="1293" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-9.png" alt="" class="wp-image-43551" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:1154px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-9.png 2559w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-9-300x152.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-9-1024x517.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-9-768x388.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-9-1536x776.png 1536w, https://static.dmcinfo.com/wp-content/uploads/2026/04/rockwell-devops-version-controls-plcs-image-9-2048x1035.png 2048w" sizes="(max-width: 2559px) 100vw, 2559px" /><figcaption class="wp-element-caption"><em>We can select how to merge in individual lines of ladder logic across the local, remote, and base branches. Because these are just code additions, we will leave the already selected values.</em></figcaption></figure>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">After selecting all of our changes, we will select File → Save As&#8230; to save the resulting ACD file over our existing ACD file in our local repository. After we close the merge application, we can commit the merge result and push to our remote repository. Once this change is in the remote repository, other developers can use the same method to synchronize their code changes, enabling accelerated system development and programming.</p>



<h2 id="h-next-steps-in-devops" class="wp-block-heading">Next Steps in DevOps</h2>



<p class="wp-block-paragraph">This tutorial introduced the basic concepts of Git, how to configure merge tools, and how to leverage them for Rockwell-based PLC development. Over the next few blogs in this series, we will review how to leverage Git and GitLab for continuous integration and continuous deployment (CI/CD).</p>



<p class="wp-block-paragraph">In the meantime, you can work on refining your git skills and workflow with the following free resources:</p>



<ul style="padding-bottom:var(--wp--preset--spacing--40)" class="wp-block-list">
<li><a href="https://git-scm.com/learn">Git &#8211; Learn</a></li>



<li><a href="https://docs.github.com/en/get-started/start-your-journey/git-and-github-learning-resources">Git and GitHub learning resources &#8211; GitHub Docs</a></li>



<li style="padding-bottom:0"><a href="https://www.atlassian.com/git/tutorials">Git Tutorials and Training | Atlassian Git Tutorial</a></li>
</ul>



<div class="wp-block-group alignfull wp-elements-2 has-global-padding is-layout-constrained wp-container-core-group-is-layout-b68f1877 wp-block-group-is-layout-constrained" style="margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-78e40fa4 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:80%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step">Have an upcoming project? DMC can help you take the next step.</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Take your project to the next level with engineering solutions from DMC. Learn more about our <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" type="page" id="420">Automation</a> and <a href="https://static.dmcinfo.com/services/application-development/devops/" type="page" id="40125">DevOps</a> solutions or contact us to get started today!</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:20%">
<div class="wp-block-buttons is-horizontal is-content-justification-right is-layout-flex wp-container-core-buttons-is-layout-a048f62a wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/43290/modern-devops-rockwell-plc-development/">Rockwell PLC DevOps: Modernizing Version Control</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Replacing the NET.LOGIX InGear Driver with libplctag.NET</title>
		<link>https://static.dmcinfo.com/blog/41937/replacing-the-net-logix-ingear-driver-with-libplctag-net/</link>
		
		<dc:creator><![CDATA[Ben Harris]]></dc:creator>
		<pubDate>Thu, 12 Mar 2026 12:00:00 +0000</pubDate>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=41937</guid>

					<description><![CDATA[<p>DMC strives to offer stable and up-to-date solutions for our clients. InGear’s NET.LOGIX driver was once a convenient and simple option for communicating between .NET software and various types of PLCs, including Allen Bradley ControlLogix, CompactLogix, SoftLogix, and Micro800 series controllers. However, as of 2026, the NET.LOGIX driver is no longer available or supported by [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/41937/replacing-the-net-logix-ingear-driver-with-libplctag-net/">Replacing the NET.LOGIX InGear Driver with libplctag.NET</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">DMC strives to offer stable and up-to-date solutions for our clients. InGear’s NET.LOGIX driver was once a convenient and simple option for communicating between .NET software and various types of PLCs, including Allen Bradley ControlLogix, CompactLogix, SoftLogix, and Micro800 series controllers. However, as of 2026, the NET.LOGIX driver is no longer available or supported by InGear, and the development license validation is no longer available. Here, DMC discusses an alternative driver: libplctag.NET.</p>



<h2 id="h-what-is-libplctag-net" class="wp-block-heading">What is libplctag.NET?</h2>



<p class="wp-block-paragraph">libplctag is an open-source C library that enables EthernNet/IP and Modbus TCP reading and writing tags on Rockwell/Allen-Bradley ControlLogix, Micro 850, and SLC 500 and MicroLogix PLCs. libplctag.NET is its .NET wrapper and is available on NuGet. You can find the <a href="https://github.com/libplctag/libplctag" type="link" id="https://github.com/libplctag/libplctag" target="_blank" rel="noreferrer noopener">libplctag</a> repository and the <a href="https://github.com/libplctag/libplctag.NET" type="link" id="https://github.com/libplctag/libplctag.NET" target="_blank" rel="noreferrer noopener">libplctag.NET</a> repository as well.</p>



<h3 id="h-advantages-of-libplctag-net" class="wp-block-heading">Advantages of libplctag.NET</h3>



<p class="wp-block-paragraph">One of the biggest advantages of libplctag.NET is that, because it is open source, it does not cost anything! Specifically, the library is dual-licensed under the Mozilla Public License 2.0 (MPL 2.0) and the GNU Lesser/Library General Public License 2+ (LGPL 2+). As mentioned above, libplctag.NET supports EtherNet/IP and Modbus TCP. The provided API is stable and is actively being supported and upgraded. The driver is lightweight, high-performance, and low on memory usage. The documentation and wiki provided in the repositories linked above are very robust and full of examples.</p>



<h3 id="h-example-tag-read-and-write" class="wp-block-heading">Example Tag Read and Write</h3>



<p class="wp-block-paragraph">Below is an example that demonstrates reading and writing a tag to an Allen-Bradley CompactLogix/ControlLogix PLC that was taken from the libplctag.NET documentation.</p>



<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="505" height="323" src="https://static.dmcinfo.com/wp-content/uploads/2026/03/allen-bradley-compactlogix-controllogix-plc.png" alt="Allen Bradley CompactLogix ControlLogix PLC" class="wp-image-41938" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/03/allen-bradley-compactlogix-controllogix-plc.png 505w, https://static.dmcinfo.com/wp-content/uploads/2026/03/allen-bradley-compactlogix-controllogix-plc-300x192.png 300w" sizes="(max-width: 505px) 100vw, 505px" /></figure>



<p class="wp-block-paragraph">As can be seen in the above example, a new tag can be configured using a simple constructor. Read() gets the current value, and Get[Type]([default]) converts this value to [Type]; in the above example, that would be GetInt32(0), which converts the value to an int. Similarly, writing a new value is as simple as Set[Type]([default], [new_value]), which is SetInt32(0, updatedValue) in the above example, and then calling Write().</p>



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



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">DMC&#8217;s <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" data-type="page" data-id="420">Automation</a> experts can bring your next AppDev project to the next level. Learn more about our expertise in <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/" data-type="page" data-id="441">PLC</a> programming.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/41937/replacing-the-net-logix-ingear-driver-with-libplctag-net/">Replacing the NET.LOGIX InGear Driver with libplctag.NET</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Siemens S7-1200 Web Server</title>
		<link>https://static.dmcinfo.com/blog/40637/siemens-s7-1200-web-server/</link>
		
		<dc:creator><![CDATA[Michael Sidler]]></dc:creator>
		<pubDate>Mon, 19 Jan 2026 15:22:54 +0000</pubDate>
				<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=40637</guid>

					<description><![CDATA[<p>In the 13 years since Tim wrote his blog post on the Siemens embedded web server on S7-1200 and S7-1500 PLCs, a lot has changed regarding PLC security and access control. In this blog post, we will be walking through creating a user-defined web page using the latest security features in TIA Portal V20 and [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/40637/siemens-s7-1200-web-server/">Siemens S7-1200 Web Server</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In the 13 years since <a href="https://static.dmcinfo.com/about/our-team/tim-jager/">Tim</a> wrote his blog post on the <a href="https://static.dmcinfo.com/blog/28315/siemens-s7-1200-web-server-tutorial-from-getting-started-to-html5-user-defined-pages/">Siemens embedded web server on S7-1200 and S7-1500 PLCs</a>, a lot has changed regarding PLC security and access control. In this blog post, we will be walking through creating a user-defined web page using the latest security features in TIA Portal V20 and firmware v4.7.</p>



<h2 id="h-project-setup" class="wp-block-heading">Project Setup</h2>



<p class="wp-block-paragraph">We will start by creating a new project in TIA Portal, navigating to the &#8220;Devices &amp; Networks&#8221; page, and adding our chosen PLC from the catalog. For this example, we will be using a `6ES7 212-1BE40-0XB0` more commonly known as a 1212C AC/DC/RLY.</p>



<p class="wp-block-paragraph">Once the PLC is added, a pop-up will appear asking you to configure PLC security settings for the project. If you clicked cancel or had previously checked the box to prevent this pop-up from being shown, you can access it by clicking on the PLC in the Devices &amp; networks page (the actual PLC, not the gray box around it), selecting the Properties and General tabs, selecting the Protection &amp; Security dropdown, and clicking the Start security wizard button.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="268" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc.png" alt="PLC CPU" class="wp-image-40644" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-300x129.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">The first step is creating a password to protect the PLC project and data on the PLC. Both DMC and Siemens recommend setting this password to improve OT security, and since we will be enabling a web server on this device (while presumably connecting it to a larger IT network), it is a critical step towards protecting the PLC. It is important to note that once applied, this password cannot be removed &#8211; make sure it is documented in a secure place like a password manager available to everyone on your team. A Post-it on your monitor is not a great place to store this password.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="537" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-security-settings.png" alt="PLC " class="wp-image-40645" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-security-settings.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-security-settings-300x259.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">The next security setting is the mode for PG/PC and HMI communication. Unless you know you will be communicating with a legacy device, you should leave this at the default option to only allow secure communication.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="539" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-hmi-communication.png" alt="PLC HMI Communication" class="wp-image-40646" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-hmi-communication.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-hmi-communication-300x260.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">The next setting will be for setting up access control. This should be enabled to restrict who can perform actions on the PLC, such as changing the run mode or accessing our user pages.</p>



<p class="wp-block-paragraph">The &#8220;access levels&#8221; option is a legacy option that was the only security option before V20. If setting up a new project, it is recommended to leave this unchecked and use the new User Management and Access Control (UMAC) feature.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="539" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-access-protection.png" alt="PLC access protection" class="wp-image-40647" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-access-protection.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-access-protection-300x260.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">In the next step, we will create one or more administrator users. This user will be able to perform all actions on a PLC that may be restricted, such as changing the mode between run/stop, updating safety settings (if available on your selected PLC model), changing drive parameters, or downloading new programs. It is important to store the login information in a secure place, and having a backup administrator user is a good idea.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="535" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-administrator-setup.png" alt="PLC Administrator Setup" class="wp-image-40648" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-administrator-setup.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-administrator-setup-300x258.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">The next security setting is selecting whether anonymous access should be enabled. This could be useful to provide read-only access to any user without logging in, but it does reduce security slightly. For this demo, we will leave it disabled.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="540" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-anonymous-access.png" alt="PLC Anonymous Access" class="wp-image-40649" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-anonymous-access.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-anonymous-access-300x260.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">The next page will need no changes as we are not using access control levels, and the last page will provide an overview of the settings you have chosen.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="540" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-overview.png" alt="PLC Overview" class="wp-image-40650" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-overview.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-overview-300x260.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">At this point, we can click Finish and get started changing PLC settings for the web server.</p>



<h2 id="h-getting-started" class="wp-block-heading">Getting Started</h2>



<p class="wp-block-paragraph">Back in Devices &amp; Networks, open up the PLC properties. Each section below will guide you through the settings that need to be changed specifically for the web server.</p>



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



<ul class="wp-block-list">
<li>Here we can set the PLC name, plant information, and other designators.</li>
</ul>



<p class="wp-block-paragraph"><strong>PROFINET Interface [X1]</strong></p>



<ul class="wp-block-list">
<li>Here, we will need to set an IP address and Subnet Mask.</li>



<li>If this device will be accessible from an IT network, make sure the router address is set so that the PLC can be accessed outside the immediate local network.</li>



<li>If the PLC will be performing any tasks where the time of day needs to be known, or if you would like logs to have accurate timestamps, enable the time-of-day synchronization and enter NTP addresses. For this example, we will use several NIST servers located in different geographic regions.</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="381" height="217" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/time-of-day-synchronization.png" alt="NIST time-of-day synchronization" class="wp-image-40651" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/time-of-day-synchronization.png 381w, https://static.dmcinfo.com/wp-content/uploads/2026/01/time-of-day-synchronization-300x171.png 300w" sizes="(max-width: 381px) 100vw, 381px" /></figure>



<ul class="wp-block-list">
<li>At the bottom of this tab, make sure to enable the web server on this interface (we will enable the web server module later).</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="441" height="108" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/web-server-access.png" alt="Web Server Access" class="wp-image-40652" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/web-server-access.png 441w, https://static.dmcinfo.com/wp-content/uploads/2026/01/web-server-access-300x73.png 300w" sizes="(max-width: 441px) 100vw, 441px" /></figure>



<ul class="wp-block-list">
<li>Note: if your PLC has multiple interfaces, one may be set up for connecting to local devices such as drives, remote IO, or local HMIs, and the other may be configured for connection to a larger IT network. The router address, NTP server, and web server access would only be needed on the interface used for IT network access.</li>
</ul>



<p class="wp-block-paragraph"><strong>Web Server</strong></p>



<ul class="wp-block-list">
<li>Check the box to enable the web server on all modules of the device and to permit access with HTTPS only.</li>
</ul>



<figure class="wp-block-image size-full"><img decoding="async" width="502" height="111" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/web-server-general.png" alt="Web Server general" class="wp-image-40653" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/web-server-general.png 502w, https://static.dmcinfo.com/wp-content/uploads/2026/01/web-server-general-300x66.png 300w" sizes="(max-width: 502px) 100vw, 502px" /></figure>



<ul class="wp-block-list">
<li>Certificate Type: Hardware-generated
<ul class="wp-block-list">
<li>For this blog post, we will skip the differences between the two.</li>
</ul>
</li>



<li>Further updates will be made here once we create an actual web page.</li>
</ul>



<p class="wp-block-paragraph"><strong>Time of Day</strong></p>



<ul class="wp-block-list">
<li>Set the time zone and daylight savings settings according to your location.</li>
</ul>



<h2 id="h-adding-users-and-web-server-user-roles" class="wp-block-heading">Adding Users and Web Server User Roles</h2>



<p class="wp-block-paragraph">Before we download and test our setup so far, we will need to configure user roles to allow access to the web server and create some non-administrator users who can access it.</p>



<h3 id="h-user-roles" class="wp-block-heading">User Roles</h3>



<p class="wp-block-paragraph">In the project tree, open Security settings &gt; Users and roles and then select the Roles tab.</p>



<p class="wp-block-paragraph">We will create two new roles: the first is a Web Server Admin, who can perform all tasks through the web server. The existing administrator users will be added to this.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="556" height="573" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-security-settings-user-roles.png" alt="PLC security settings user-roles" class="wp-image-40682" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-security-settings-user-roles.png 556w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-security-settings-user-roles-291x300.png 291w" sizes="(max-width: 556px) 100vw, 556px" /></figure>



<p class="wp-block-paragraph">The second role will be a Web Server User role with permission to open only the user-defined pages we create.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="643" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/web-server-user-role.png" alt="Web server user role" class="wp-image-40683" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/web-server-user-role.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/web-server-user-role-291x300.png 291w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<h3 id="h-users" class="wp-block-heading">Users</h3>



<p class="wp-block-paragraph">At this point, we can go back to the Users tab. The administrator users created during the project security setup should be added to the Web Server Admin role. We will &#8220;forget&#8221; to add the second administrator user to demonstrate what the web server looks like if these permissions are not given to the administrator.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="497" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-users.png" alt="PLC users" class="wp-image-40684" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-users.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-users-300x239.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">Clicking &lt;Add a new user&gt; lets you create a new non-administrator user with only the &#8220;Web Server User&#8221; role assigned, which we created earlier.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="500" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/creating-a-new-non-administrator-user.png" alt="Creating a new non administrator user" class="wp-image-40685" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/creating-a-new-non-administrator-user.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/creating-a-new-non-administrator-user-300x241.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<h2 id="h-testing-our-setup-so-far" class="wp-block-heading">Testing our Setup So Far</h2>



<p class="wp-block-paragraph">To confirm that all our security settings are working, we can download the hardware and software to the PLC and try accessing its webpage.</p>



<p class="wp-block-paragraph">By entering the previously set IP address of our PLC in a browser window, we should be greeted by a Siemens landing page, and we can press Enter to view our PLC&#8217;s webpage. Make sure to enter `https://`/ before the IP address, and click your browser&#8217;s &#8220;accept the risk and continue&#8221; button if you&#8217;re prompted with a certificate warning.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="347" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-webpage.png" alt="PLC web page" class="wp-image-40686" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-webpage.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-webpage-300x167.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">By logging in with our first administrator login (dmcAdmin1) we can see that we can access all pages as well as change the run mode of the PLC.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="450" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-administrator-login.png" alt="PLC administration login" class="wp-image-40687" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-administrator-login.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-administrator-login-300x217.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">Logging out and back in as our “incorrectly configured” admin account shows that the user can log in, but because none of the web server runtime rights were granted, we cannot perform any actions that an authenticated user can. </p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="475" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/siemens-s7-1200.png" alt="Siemens S7 1200" class="wp-image-40688" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/siemens-s7-1200.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/siemens-s7-1200-300x229.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">Finally, by logging in as the standard user with permissions to only access the User Pages, we can see that the user can access the user defined pages tab, but is unable to perform administrator actions such as switching the PLC operating mode, downloading or backing up the program, etc.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="476" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/s7-1200-station-standard-user.png" alt="S7 1200 Station standard user" class="wp-image-40689" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/s7-1200-station-standard-user.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/s7-1200-station-standard-user-300x229.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<h2 id="h-optimization" class="wp-block-heading">Optimization</h2>



<p class="wp-block-paragraph">We have now shown that the Siemens PLC web server is enabled and secured, but if you spend any time navigating even the existing pages, you may notice that the web pages feel sluggish and slow to respond. There are two options that can be changed to speed up the pages.</p>



<h3 id="h-communication-load" class="wp-block-heading">Communication Load</h3>



<p class="wp-block-paragraph">By default, the PLC is set to spend no more than 20% of its CPU cycles performing communications. For some use cases, you may not have a large or complicated PLC project and would prefer a more responsive web server, at the cost of a slower scan time. By navigating to the PLC properties and increasing the limit from 20% to 50%, the project will become noticeably faster. During testing with one of my customers&#8217; projects, web page loading time was approximately halved, while scan times went from 3-5ms to 4-11ms.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="618" height="374" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-communication-load.png" alt="PLC communication load" class="wp-image-40690" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-communication-load.png 618w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-communication-load-300x182.png 300w" sizes="(max-width: 618px) 100vw, 618px" /></figure>



<h3 id="h-enabling-http-communications" class="wp-block-heading">Enabling HTTP Communications</h3>



<p class="wp-block-paragraph">During the web server setup process, we checked a box to enable only HTTPS (secured and encrypted) communications. Doing so requires the PLC to spend significantly more of the Communication Load time encrypting and decrypting web traffic and less time transferring web pages. Disabling this option will make the web pages load much faster. If your PLC is properly secured behind a VPN or is fully disconnected from the internet, then the decrease in security is not too severe, but keep in mind that anyone with access to the network could theoretically read the unencrypted HTTP information as it is transferred. This means that login information and everything displayed will be transferred in unsecured, plain text.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="623" height="328" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-enabling-http-communications.png" alt="Enabling HTTP communications" class="wp-image-40691" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-enabling-http-communications.png 623w, https://static.dmcinfo.com/wp-content/uploads/2026/01/plc-enabling-http-communications-300x158.png 300w" sizes="(max-width: 623px) 100vw, 623px" /></figure>



<p class="wp-block-paragraph">Changing this setting had the most significant impact on page loading time, making the PLC-hosted web page feel almost as responsive as any site on the web, but comes with the cost of the greatest impact on security.</p>



<h2 id="h-next-steps" class="wp-block-heading">Next Steps</h2>



<p class="wp-block-paragraph">At this point, our PLC project and user permissions are correctly configured to enable user-defined pages. For more details on writing custom HTML pages that interface with the PLC program, check out <a href="https://static.dmcinfo.com/blog/28315/siemens-s7-1200-web-server-tutorial-from-getting-started-to-html5-user-defined-pages/">Tim&#8217;s excellent write-up</a>, which is mentioned at the start of this post.<a id="_msocom_1"></a></p>



<figure class="wp-block-image size-full"><img decoding="async" width="466" height="303" src="https://static.dmcinfo.com/wp-content/uploads/2026/01/siemens-s7-1200-station.png" alt="Siemens S7 1200 Station" class="wp-image-40692" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/01/siemens-s7-1200-station.png 466w, https://static.dmcinfo.com/wp-content/uploads/2026/01/siemens-s7-1200-station-300x195.png 300w" sizes="(max-width: 466px) 100vw, 466px" /></figure>



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



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">DMC can help configure Siemens S7-1200 and S7-1500 web servers and implement secure remote access to your <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" data-type="page" data-id="420">Automation</a> operations. Learn more about our <a href="https://static.dmcinfo.com/our-work/category/service/manufacturing-automation-and-intelligence/siemens-plc/" data-type="work_category" data-id="682">Siemens PLC</a> programming expertise.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/40637/siemens-s7-1200-web-server/">Siemens S7-1200 Web Server</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Memory Manipulation Tips For Mitsubishi PLCs using GxWorks3 </title>
		<link>https://static.dmcinfo.com/blog/40570/memory-manipulation-tips-for-mitsubishi-plcs-using-gxworks3/</link>
		
		<dc:creator><![CDATA[Wenjing Deng]]></dc:creator>
		<pubDate>Thu, 15 Jan 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=40570</guid>

					<description><![CDATA[<p>After working&#160;with GxWorks3&#160;on several&#160;projects,&#160;I learned a few things about&#160;managing memory&#160;that were&#160;very helpful.&#160;I hope&#160;my tips on the following topics will help others as well when working&#160;with GxWorks3. Retained Memory It is straightforward to set&#160;non-device assigned labels such as local labels within a program or a global label that&#160;doesn’t&#160;have a device assignment&#160;to&#160;retain&#160;memory. Locate the label and within [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/40570/memory-manipulation-tips-for-mitsubishi-plcs-using-gxworks3/">Memory Manipulation Tips For Mitsubishi PLCs using GxWorks3 </a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After working&nbsp;with GxWorks3&nbsp;on several&nbsp;projects,&nbsp;I learned a few things about&nbsp;managing memory&nbsp;that were&nbsp;very helpful.&nbsp;I hope&nbsp;my tips on the following topics will help others as well when working&nbsp;with GxWorks3.</p>



<ol start="1" class="wp-block-list">
<li>How to set&nbsp;up&nbsp;retained&nbsp;memory for local labels, global labels&nbsp;with no device assignment,&nbsp;and&nbsp;global labels&nbsp;with device assignment&nbsp;</li>
</ol>



<ol start="2" class="wp-block-list">
<li>Adjusting&nbsp;the&nbsp;allotted device memory if you run out of a certain type of device memory&nbsp;</li>
</ol>



<ol start="3" class="wp-block-list">
<li>Minimizing&nbsp;program memory&nbsp;</li>
</ol>



<h2 id="h-retained-memory" class="wp-block-heading">Retained Memory</h2>



<p class="wp-block-paragraph">It is straightforward to set&nbsp;non-device assigned labels such as local labels within a program or a global label that&nbsp;doesn’t&nbsp;have a device assignment&nbsp;to&nbsp;retain&nbsp;memory. Locate the label and within the class drop down select ‘VAR_RETAIN’&nbsp;or ‘VAR_GLOBAL_RETAIN’&nbsp;as shown below for the two types of labels.&nbsp;&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="56" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-1.png" alt="GxWorks3 Local Program Label" class="wp-image-40578" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-1.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-1-300x27.png 300w" sizes="(max-width: 624px) 100vw, 624px" /><figcaption class="wp-element-caption"><em>Figure 1: Local Program Label</em></figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="52" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-2.png" alt="GxWorks3 Unassigned Global Label" class="wp-image-40580" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-2.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-2-300x25.png 300w" sizes="(max-width: 624px) 100vw, 624px" /><figcaption class="wp-element-caption"><em>Figure 2: Unassigned Global Label</em></figcaption></figure>



<p class="wp-block-paragraph">It takes a couple of extra steps to set a device&nbsp;assigned&nbsp;global label to&nbsp;retain.&nbsp;After you have decided on which device you want to use to assign to your label, you can assign the device to the label as normal, then select ‘VAR_GLOBAL_RETAIN.’</p>



<p class="wp-block-paragraph">In the example&nbsp;below, I have assigned&nbsp;a trend array to a device section starting at&nbsp;D12000&nbsp;up to D12399.&nbsp;&nbsp;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="900" height="388" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-3.png" alt="GxWorks3 Tag Device Assignments" class="wp-image-40581" style="width:600px" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-3.png 900w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-3-300x129.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-3-768x331.png 768w" sizes="(max-width: 900px) 100vw, 900px" /><figcaption class="wp-element-caption"><em>Figure 3: Tag Device Assignments</em></figcaption></figure>



<p class="wp-block-paragraph">Next, the D memory registers D12000-D12399 must be&nbsp;designated&nbsp;as&nbsp;retain&nbsp;memory in the ‘Device/Label Memory Area Detailed Setting’ area. To navigate here using the navigation tree,&nbsp;double-click&nbsp;on&nbsp;‘Parameter’ -&gt; ‘CPU Parameter’ -&gt; ‘Memory/Device Setting’ -&gt; ‘Device/Label Memory Area Setting’ -&gt; ‘&lt;Detailed Settings&gt;.’&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="564" height="334" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-4.png" alt="GxWorks3 Device/Label Memory Area Detailed Settings" class="wp-image-40582" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-4.png 564w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-4-300x178.png 300w" sizes="(max-width: 564px) 100vw, 564px" /><figcaption class="wp-element-caption"><em>Figure 4: Device/Label Memory Area Detailed Settings</em></figcaption></figure>



<p class="wp-block-paragraph">This will display the window shown below.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="900" height="676" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-5.png" alt="GxWorks3 Setting Devices to Retain Memory" class="wp-image-40583" style="width:600px" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-5.png 900w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-5-300x225.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-5-768x577.png 768w" sizes="(max-width: 900px) 100vw, 900px" /><figcaption class="wp-element-caption"><em>Figure 5: Setting Devices to Retain Memory</em></figcaption></figure>



<p class="wp-block-paragraph">From here,&nbsp;double-click on&nbsp;any of&nbsp;the cells&nbsp;circled in the screenshot above.&nbsp;This&nbsp;will&nbsp;open&nbsp;the Latch Range Setting, where we will&nbsp;set&nbsp;what memory registers should be&nbsp;retained&nbsp;or latched.&nbsp;&nbsp;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="590" height="650" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-6.png" alt="GxWorks3 Latch Range Setting Screen" class="wp-image-40584" style="width:400px" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-6.png 590w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-6-272x300.png 272w" sizes="(max-width: 590px) 100vw, 590px" /><figcaption class="wp-element-caption"><em>Figure 6.1: Latch Range Setting Screen</em></figcaption></figure>



<p class="wp-block-paragraph">Here,&nbsp;we can see that I have a couple of ranges set for both M and D registers including the range D12000-D12999 to include the trend array from our example. After you have set the ranges you need for your project, press ‘OK’ and then you are done.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">Note, if you assign global labels that are not set to&nbsp;retain&nbsp;registers you defined in the Latch Range Setting or vice versa, you will receive&nbsp;a&nbsp;compile error reminding you to correct this.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="900" height="55" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-6-2.png" alt="GxWorks3 Latch Range Setting Compile Error" class="wp-image-40585" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-6-2.png 900w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-6-2-300x18.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-6-2-768x47.png 768w" sizes="(max-width: 900px) 100vw, 900px" /><figcaption class="wp-element-caption"><em>Figure 6.2: Latch Range Setting Compile Error</em></figcaption></figure>



<h2 id="h-adjusting-device-memory-allotment-size" class="wp-block-heading">Adjusting Device Memory Allotment Size</h2>



<p class="wp-block-paragraph">Depending on the size of your PLC memory and the size of your project, there&nbsp;are times when you might run out of a particular device type. In this situation, if you are unable to upgrade your PLC memory, you can&nbsp;attempt&nbsp;to reallocate your device types if there are some device memory types that you are not using.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">To do this, navigate to the Device/Label Memory Area Setting Detail Settings screen as mentioned in the section above. Starting in the navigation tree, double-click on ‘Parameter’ -&gt; ‘CPU Parameter’ -&gt; ‘Memory/Device Setting’ -&gt; ‘Device/Label Memory Area Setting’ -&gt; ‘&lt;Detailed Settings&gt;.’&nbsp;</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="880" height="1024" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-7-880x1024.png" alt="GxWorks3 Reallocating Device Points" class="wp-image-40587" style="width:600px" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-7-880x1024.png 880w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-7-258x300.png 258w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-7-768x893.png 768w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-7.png 900w" sizes="(max-width: 880px) 100vw, 880px" /><figcaption class="wp-element-caption"><em>Figure 7: Reallocating Device Points</em></figcaption></figure>



<p class="wp-block-paragraph">Under the&nbsp;Device/Points column is where&nbsp;you can see the&nbsp;amount&nbsp;of points&nbsp;allocated&nbsp;to a given device. For example, for the D device, there are 20k points&nbsp;allocated&nbsp;which means the range of usable D devices spans from D0 – D20000. You can&nbsp;modify&nbsp;these allocations as needed&nbsp;as long as&nbsp;the total&nbsp;adds up&nbsp;to the ‘Total Device’ at the bottom as that is the limit of the PLC. After you are done, click on the ‘Check’ button at the bottom&nbsp;to&nbsp;verify that your new allocations are ok.&nbsp;&nbsp;</p>



<h2 id="h-minimizing-program-memory" class="wp-block-heading">Minimizing Program Memory</h2>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="900" height="272" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-8.png" alt="GxWorks3 Almost Out of Program Memory" class="wp-image-40589" style="width:600px" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-8.png 900w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-8-300x91.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-8-768x232.png 768w" sizes="(max-width: 900px) 100vw, 900px" /><figcaption class="wp-element-caption"><em>Figure 8: Almost Out of Program Memory</em></figcaption></figure>



<p class="wp-block-paragraph">The screenshot above was from&nbsp;a previous&nbsp;Mitsubishi GxWorks3 PLC project where we almost ran out of program memory. Since upgrading the PLC memory was not an option, we had to&nbsp;consider&nbsp;other ways to save memory.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">For this project, we were programming from scratch and adhering to DMC’s&nbsp;best practices by using named Global Labels and UDTs for maximum code clarity and ease of maintenance.&nbsp;However, we discovered that&nbsp;moving data directly between UDTs&nbsp;using its symbolic name&nbsp;used&nbsp;a lot of program memory compared to directly&nbsp;manipulating the data using its device memory address. In the screenshots below you can see the massive difference in program steps used between using the symbolic name vs. the direct device address in rung 17.&nbsp;&nbsp;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="900" height="269" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-9.png" alt="GxWorks3 Using symbolic name, 881 steps used" class="wp-image-40590" style="width:800px" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-9.png 900w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-9-300x90.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-9-768x230.png 768w" sizes="(max-width: 900px) 100vw, 900px" /><figcaption class="wp-element-caption"><em>Figure 9: Using symbolic name, 881 steps used</em></figcaption></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="152" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-10.png" alt="GxWorks3 Using memory address, 79 steps used" class="wp-image-40591" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-10.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/12/GxWorks3-tips-10-300x73.png 300w" sizes="(max-width: 624px) 100vw, 624px" /><figcaption class="wp-element-caption"><em>Figure 10: Using memory address, 79 steps used</em></figcaption></figure>



<p class="wp-block-paragraph">Due to the project hardware constraints, we had to sacrifice some&nbsp;code readability&nbsp;to fit the entire program within the allotted memory available. We used the instructions, BMOV (Transferring 16 – bit block data) and BLKMOV (Transferring n-bit data) on some of the bigger data transfers to help us achieve this. In the&nbsp;end,&nbsp;we were able to fit our program&nbsp;onto&nbsp;the PLC.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">I hope that you find these tips for setting up retained memory, adjusting the allotted device memory, and minimizing program memory helpful when working with GxWorks3.&nbsp;</p>



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



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">See how DMC&#8217;s <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" data-type="page" data-id="420">Automation</a> experts use GX Works3 memory manipulation techniques and more about our <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/mitsubishi-plc-programming-and-automation-services/" data-type="page" data-id="463">Mitsubishi PLC</a> programming capabilities.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/40570/memory-manipulation-tips-for-mitsubishi-plcs-using-gxworks3/">Memory Manipulation Tips For Mitsubishi PLCs using GxWorks3 </a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Getting Started with Opto 22 groov EPIC Part 3: CODESYS &#038; Ignition Edge</title>
		<link>https://static.dmcinfo.com/blog/36928/getting-started-with-opto-22-groov-epic-part-3-codesys-ignition-edge/</link>
		
		<dc:creator><![CDATA[Natalie Pippolo]]></dc:creator>
		<pubDate>Mon, 04 Aug 2025 13:00:00 +0000</pubDate>
				<category><![CDATA[Ignition]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Opto 22]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=36928</guid>

					<description><![CDATA[<p>In this blog, we will explore the “PLC” functionality of the groov EPIC, completing our three-part series. Soon you will be ready to get started on your own groov EPIC Ignition Edge project!&#160; For an overview of the&#160;groov EPIC&#160;and its features, check out the rest of this blog series. Setting Up the CODESYS Environment&#160; The [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/36928/getting-started-with-opto-22-groov-epic-part-3-codesys-ignition-edge/">Getting Started with Opto 22 groov EPIC Part 3: CODESYS &amp; Ignition Edge</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In this blog, we will explore the “PLC” functionality of the groov EPIC, completing our three-part series. Soon you will be ready to get started on your own groov EPIC Ignition Edge project!&nbsp;</p>



<p class="wp-block-paragraph">For an overview of the&nbsp;groov EPIC&nbsp;and its features, check out the rest of this blog series.</p>



<ul class="wp-block-list">
<li><a href="https://static.dmcinfo.com/blog/36186/getting-started-with-opto-22-groov-epic-part-1-groov-epic-introduction/">Part 1: groov EPIC Introduction</a></li>



<li><a href="https://static.dmcinfo.com/blog/36223/getting-started-with-opto-22-groov-epic-part-2-ignition-edge/">Part 2: Ignition Edge</a></li>
</ul>



<h2 id="h-setting-up-the-codesys-environment-nbsp" class="wp-block-heading">Setting Up the CODESYS Environment&nbsp;</h2>



<p class="wp-block-paragraph">The groov EPIC supports a handful of programming environments, including PAC Control, Node-RED, and the CODESYS IDE. In this demo, we will use CODESYS to develop a simple program for the EPIC. CODESYS is an IEC 61131-3 compliant environment commonly used across many PLC manufacturers, with a user-friendly interface and support for multiple common IEC standard languages.&nbsp;</p>



<p class="wp-block-paragraph">To enable CODESYS on the EPIC, first open the groov manager web app and enable CODESYS (Controller &gt; CODESYS Controller &gt; Runtime Enable). Note that while the CODESYS application is running, we can no longer control the outputs from the screen made in blog 2, as the outputs are being controlled from the CODESYS program instead. To switch back to controlling IO from the previous screen, simply disable the CODESYS application from groov manager. This ability to easily switch back and forth between the two modes can be a huge help during I/O checkout and testing of a large, complex system.&nbsp;</p>



<p class="wp-block-paragraph">Next, open the CODESYS development environment on a PC that is on the same network as your EPIC and configure your device connection. Create a new project and add a new device connection to your groov EPIC by entering your device IP and scanning the network. Once connected, your device connection will look something like this.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="348" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/Device-Connection-groov-EPIC.png" alt="groov EPIC device connection screen" class="wp-image-37506" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/Device-Connection-groov-EPIC.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/08/Device-Connection-groov-EPIC-300x167.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">You can now click the “Login” button on the top toolbar to go online with your EPIC and monitor tag values directly.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="126" height="84" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/login-groov-EPIC.png" alt="groov EPIC login screen" class="wp-image-37507" style="object-fit:cover"/></figure>



<h2 id="h-configuring-controller-logic-in-codesys-nbsp" class="wp-block-heading">Configuring Controller Logic in CODESYS&nbsp;</h2>



<p class="wp-block-paragraph">Our sample PLC program represents a machine that must not be left running unattended for longer than a set time interval (default of 10 seconds). PB_UPPER represents the “On” command to the machine, while PB_LOWER is an additional button that must be held down for the machine to continue running. This input could also be tied to a proximity sensor that determines whether an operator is present at the station. Our buzzer output alerts the operator if the machine has been running unattended for too long.&nbsp;</p>



<p class="wp-block-paragraph">Our simple application consists of two programs – the “main” program, PLC_PRG calls the subroutine “TurnOnBuzzer”. TurnOnBuzzer takes in both PB statuses, as well as the buzzer delay setpoint, and outputs the desired buzzer on/off state. These two programs illustrate how both text and ladder logic can be used to program your groov EPIC in CODESYS.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="216" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/groov-EPIC-CODESYS-codepng.png" alt="Program your groov EPIC in CODESYS with text" class="wp-image-37515" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/groov-EPIC-CODESYS-codepng.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/08/groov-EPIC-CODESYS-codepng-300x104.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="262" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/groov-EPIC-CODESYS-ladder-logic.png" alt="Program your groov EPIC in CODESYS with ladder logic" class="wp-image-37516" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/groov-EPIC-CODESYS-ladder-logic.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/08/groov-EPIC-CODESYS-ladder-logic-300x126.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">To map your controller, I/O to tags within your programs, configure a mapping on the “State” tag of each I/O point, as shown below. Then, add a “Symbol Configuration” object to your application. This is where you control permissions for OPC UA read &amp; write access of your PLC tags from Ignition or other applications. You can configure tags to be read-only or read/write based on the needs of your application.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="326" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/configure-IO-state-tag-1.png" alt="Screen to configure mapping on the State tag of each I/O point" class="wp-image-37517" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/configure-IO-state-tag-1.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/08/configure-IO-state-tag-1-300x157.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="316" height="386" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/configure-IO-state-tag-2.png" alt="Screen to configure mapping on the State tag of each I/O point" class="wp-image-37518" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/configure-IO-state-tag-2.png 316w, https://static.dmcinfo.com/wp-content/uploads/2025/08/configure-IO-state-tag-2-246x300.png 246w" sizes="(max-width: 316px) 100vw, 316px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="308" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/configure-IO-state-tag-3.png" alt="Screen to configure mapping on the State tag of each I/O point" class="wp-image-37519" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/configure-IO-state-tag-3.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/08/configure-IO-state-tag-3-300x148.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">Now that our CODESYS program is configured, click the “Login” button and download changes. Next, we’ll set up our Ignition Edge HMI to interact with the CODESYS program.&nbsp;</p>



<h2 id="h-using-ignition-edge-as-an-hmi-for-a-codesys-program" class="wp-block-heading">Using Ignition Edge as an HMI for a CODESYS Program</h2>



<p class="wp-block-paragraph">Now that our CODESYS OPC server is configured, add a new OPC Connection to your Ignition gateway under Config &gt; OPC Connections. Enter the discovery endpoint of the new CODESYS OPC UA server. If you are using defaults, this will be opc.tcp:https://static.dmcinfo.com/ Once this is configured, you will see the new tags you added in CODESYS Symbol Configuration available in Ignition.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="374" height="180" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/add-OPC-Connection.png" alt="Server discovery screen" class="wp-image-37523" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/add-OPC-Connection.png 374w, https://static.dmcinfo.com/wp-content/uploads/2025/08/add-OPC-Connection-300x144.png 300w" sizes="(max-width: 374px) 100vw, 374px" /></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="464" height="302" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/ignition-connected-devices.png" alt="connected devices screen" class="wp-image-37524" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/ignition-connected-devices.png 464w, https://static.dmcinfo.com/wp-content/uploads/2025/08/ignition-connected-devices-300x195.png 300w" sizes="(max-width: 464px) 100vw, 464px" /></figure>



<p class="wp-block-paragraph">For this demo, we are building onto the Ignition HMI that was developed in <a href="https://static.dmcinfo.com/blog/36223/getting-started-with-opto-22-groov-epic-part-2-ignition-edge/">part 2 of this blog series</a>, with three new pages. The “Alarm Status” page provides an interface to monitor the status of the two push buttons, and contains an indicator of machine runtime, displaying as it counts towards our “buzzer on delay” value.&nbsp;</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="683" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/alarm-condition-monitor-1024x683.png" alt="Alarm condition monitor screens" class="wp-image-37531" style="width:600px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/alarm-condition-monitor-1024x683.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2025/08/alarm-condition-monitor-300x200.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/08/alarm-condition-monitor-768x512.png 768w, https://static.dmcinfo.com/wp-content/uploads/2025/08/alarm-condition-monitor.png 1148w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">The “Config” tab provides an input field that is linked to our “buzzer on delay” PLC parameter. Here the user can configure the limit for continuous machine runtime before the buzzer is triggered. This provides an example of a tag with read/write permissions between CODESYS and Ignition.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="316" height="356" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/controller-parameters.png" alt="Controller parameters scren" class="wp-image-37533" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/controller-parameters.png 316w, https://static.dmcinfo.com/wp-content/uploads/2025/08/controller-parameters-266x300.png 266w" sizes="(max-width: 316px) 100vw, 316px" /></figure>



<p class="wp-block-paragraph">Finally, the “Trends” tab highlights the internal tag historian functionality of Ignition Edge. Without any extra database connections, tags from the groov EPIC (both PLC program tags or direct IO points) can be stored to the Edge historian and trended to monitor values over time. Here, we have configured the temperature reading from our Thermocouple and the voltage reading from our dial input as historical tags. With Ignition’s sleek and powerful trending tools, these trends can be configured and displayed in minutes.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="316" height="428" src="https://static.dmcinfo.com/wp-content/uploads/2025/08/analog-trends.png" alt="analog trends screen" class="wp-image-37535" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/08/analog-trends.png 316w, https://static.dmcinfo.com/wp-content/uploads/2025/08/analog-trends-221x300.png 221w" sizes="(max-width: 316px) 100vw, 316px" /></figure>



<p class="wp-block-paragraph">Thanks for reading this Getting Started series for Opto 22 groov EPIC! Now you’re ready to begin programming your own groov EPIC using CODESYS and Ignition Edge.&nbsp;&nbsp;</p>



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



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">New project on the horizon? Learn more about DMC’s <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" data-type="page" data-id="420">Automation</a> expertise and our <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/hmi-and-scada-programming/ignition-programming">Ignition HMI &amp; SCADA</a> services.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/36928/getting-started-with-opto-22-groov-epic-part-3-codesys-ignition-edge/">Getting Started with Opto 22 groov EPIC Part 3: CODESYS &amp; Ignition Edge</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Getting Started with Opto 22 groov EPIC Part 2: Ignition Edge</title>
		<link>https://static.dmcinfo.com/blog/36223/getting-started-with-opto-22-groov-epic-part-2-ignition-edge/</link>
		
		<dc:creator><![CDATA[Natalie Pippolo]]></dc:creator>
		<pubDate>Mon, 21 Jul 2025 13:00:00 +0000</pubDate>
				<category><![CDATA[Ignition]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Opto 22]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=36223</guid>

					<description><![CDATA[<p>This blog will provide an overview of configuring the Ignition Edge instance that ships with your groov EPIC. For an overview of the&#160;groov EPIC&#160;and its features, check out the rest of this blog series. Setting up Ignition Edge on groov EPIC&#160; The groov EPIC GRV-EPIC-PR2 model ships with a license for onboard Ignition Edge version [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/36223/getting-started-with-opto-22-groov-epic-part-2-ignition-edge/">Getting Started with Opto 22 groov EPIC Part 2: Ignition Edge</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">This blog will provide an overview of configuring the Ignition Edge instance that ships with your groov EPIC. </p>



<p class="wp-block-paragraph">For an overview of the&nbsp;groov EPIC&nbsp;and its features, check out the rest of this blog series.</p>



<ul class="wp-block-list">
<li><a href="https://static.dmcinfo.com/blog/36186/getting-started-with-opto-22-groov-epic-part-1-groov-epic-introduction/">Part 1: groov EPIC Introduction</a></li>



<li><a href="https://static.dmcinfo.com/blog/36928/getting-started-with-opto-22-groov-epic-part-3-codesys-ignition-edge/" data-type="link" data-id="https://static.dmcinfo.com/blog/36928/getting-started-with-opto-22-groov-epic-part-3-codesys-ignition-edge/">Part 3: CODESYS &amp; Ignition Edge</a></li>
</ul>



<h2 id="h-setting-up-ignition-edge-on-groov-epic-nbsp" class="wp-block-heading">Setting up Ignition Edge on groov EPIC&nbsp;</h2>



<p class="wp-block-paragraph">The groov EPIC GRV-EPIC-PR2 model ships with a license for onboard Ignition Edge version 8. This can be enabled from the groov Manage web server under http://&lt;EPIC/ address&gt;/manage/local/ignition. Toggle on “Enable Ignition Edge” and click save. It will take a few minutes for the gateway to start. &nbsp;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="608" height="656" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/ignition-edge-setup.png" alt="Ignition Edge setup screen" class="wp-image-36877" style="width:400px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/ignition-edge-setup.png 608w, https://static.dmcinfo.com/wp-content/uploads/2025/07/ignition-edge-setup-278x300.png 278w" sizes="(max-width: 608px) 100vw, 608px" /></figure>



<p class="wp-block-paragraph">Once Ignition Edge has been enabled, simply click the “Open Ignition Edge” link and follow the prompts displayed to configure your Edge gateway.&nbsp;</p>



<p class="wp-block-paragraph">Once your gateway is configured, you can add its designer in the Ignition Designer Launcher application by manually entering the gateway URL. From here, you are ready to create your first groov EPIC Ignition Edge project.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="800" height="607" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/ignition-designer-launcher-1.png" alt="Ignition Designer Launcher application" class="wp-image-36881" style="width:400px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/ignition-designer-launcher-1.png 800w, https://static.dmcinfo.com/wp-content/uploads/2025/07/ignition-designer-launcher-1-300x228.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/07/ignition-designer-launcher-1-768x583.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<h2 id="h-configuring-the-groov-epic-opc-ua-server" class="wp-block-heading">Configuring the groov EPIC OPC UA Server</h2>



<p class="wp-block-paragraph">Open the groov Manage webserver from a PC connected to the groov EPIC. From here, follow the instructions below to configure the OPC UA server.</p>



<p class="wp-block-paragraph">1. Enable public access for all desired I/O.</p>



<p class="wp-block-paragraph">a. Navigate to “I/O”, select an I/O point and click “Configure” in the top-right.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="682" height="180" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/Configure-IO-1.png" alt="configure the OPC UA server I/O screen" class="wp-image-36884" style="width:400px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/Configure-IO-1.png 682w, https://static.dmcinfo.com/wp-content/uploads/2025/07/Configure-IO-1-300x79.png 300w" sizes="(max-width: 682px) 100vw, 682px" /></figure>



<p class="wp-block-paragraph">b. Under “Public Access” turn on “State (Read)” and “Writable” then click “Save.”</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="812" height="438" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/OPC-UA-server-writable.png" alt="OPC UA server I/O public access screen" class="wp-image-36889" style="width:400px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/OPC-UA-server-writable.png 812w, https://static.dmcinfo.com/wp-content/uploads/2025/07/OPC-UA-server-writable-300x162.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/07/OPC-UA-server-writable-768x414.png 768w" sizes="(max-width: 812px) 100vw, 812px" /></figure>



<p class="wp-block-paragraph">c. Repeat the above steps for each desired I/O point. Alternatively, save time by configuring many I/O points at once under I/O &gt; I/O Services &gt; I/O Batch Operations.&nbsp;</p>



<p class="wp-block-paragraph">2. Configure data service</p>



<p class="wp-block-paragraph">a. In groov Manage, navigate to “Data Service” and click “Configure” in the top right.&nbsp;</p>



<p class="wp-block-paragraph">b. Under “Scanned Devices”, click “Add Local PAC Controller.”&nbsp;</p>



<p class="wp-block-paragraph">c. Configure desired settings (ensure OPC UA Server is on) and save.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="800" height="557" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/Device-configuration-settings-1.png" alt="OPC UA server device configuration screen" class="wp-image-36899" style="width:400px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/Device-configuration-settings-1.png 800w, https://static.dmcinfo.com/wp-content/uploads/2025/07/Device-configuration-settings-1-300x209.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/07/Device-configuration-settings-1-768x535.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">d. Navigate back to the Data Service configuration page and add an OPC UA server. Set the following settings.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="800" height="752" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/Add-OPC-UA-server.png" alt="Add OPC UA server screen" class="wp-image-36900" style="width:400px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/Add-OPC-UA-server.png 800w, https://static.dmcinfo.com/wp-content/uploads/2025/07/Add-OPC-UA-server-300x282.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/07/Add-OPC-UA-server-768x722.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">e. Return to the Data Service status page and enable Data Service Runtime.&nbsp;</p>



<h2 id="h-connecting-the-groov-epic-opc-ua-server-to-ignition" class="wp-block-heading">Connecting the groov EPIC OPC UA Server to Ignition</h2>



<p class="wp-block-paragraph">Now that we have an OPC UA server configured, we will next connect this to our local Ignition Edge gateway.&nbsp;</p>



<p class="wp-block-paragraph">1. In the Ignition Edge gateway, navigate to Config &gt; OPC Connections.&nbsp;</p>



<p class="wp-block-paragraph">2. Click “Create new OPC connection.”</p>



<p class="wp-block-paragraph">3. Copy the Discovery Endpoint from your previously configured OPC UA server into the “Endpoint URL” field.&nbsp;</p>



<p class="wp-block-paragraph">4. Follow the remaining configuration prompts to set up your connection.&nbsp;</p>



<p class="wp-block-paragraph">5. Give your connection a name and click “Save Changes.”</p>



<p class="wp-block-paragraph">Once this connection is configured, you should be able to see your new OPC UA connection under Config&gt;OPC Connections with a Status of “Connected.” You can now browse OPC UA tags from the Ignition designer and add your groov EPIC I/O tags to your Ignition project.&nbsp;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="580" height="668" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/OPC-UA-connection.png" alt="OPC UA connection screen" class="wp-image-36905" style="width:400px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/OPC-UA-connection.png 580w, https://static.dmcinfo.com/wp-content/uploads/2025/07/OPC-UA-connection-260x300.png 260w" sizes="(max-width: 580px) 100vw, 580px" /></figure>



<p class="wp-block-paragraph">From here, Ignition Edge screens can be easily developed to monitor and control the EPIC’s local I/O. In our demo setup, we monitor these I/O tags directly on the Main screen, as shown below.&nbsp;&nbsp;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="442" height="606" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/Ignition-Edge-Main-Screen.png" alt="Ignition Edge main screen wiht a temperature and dial indicator" class="wp-image-36907" style="width:400px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/Ignition-Edge-Main-Screen.png 442w, https://static.dmcinfo.com/wp-content/uploads/2025/07/Ignition-Edge-Main-Screen-219x300.png 219w" sizes="(max-width: 442px) 100vw, 442px" /></figure>



<p class="wp-block-paragraph">Ignition’s powerful scripting capabilities may be used to implement control logic directly, without a need for a PLC program. For the next part of this demo, however, the CODESYS controller onboard the EPIC was leveraged. In part 3, we will explore using CODESYS and Ignition Edge together on a groov EPIC.&nbsp;</p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step"><strong>Maximize Your Ignition Edge Investment</strong> with DMC&#8217;s Automation Pros.</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Whether you&#8217;re developing HMIs, integrating OPC UA devices, or building edge computing solutions, our <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" id="420">Automation</a> team can help you optimize <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/hmi-and-scada-programming/ignition-programming/" data-type="page" data-id="509">Ignition</a> for your results.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/36223/getting-started-with-opto-22-groov-epic-part-2-ignition-edge/">Getting Started with Opto 22 groov EPIC Part 2: Ignition Edge</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
