<?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>Beckhoff PLC Archives | DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/category/manufacturing-automation-intelligence/beckhoff-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>Beckhoff 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>Getting Started with Beckhoff TwinCAT Package Manager</title>
		<link>https://static.dmcinfo.com/blog/45335/beckhoff-twincat-package-manager-guide/</link>
		
		<dc:creator><![CDATA[Carter Silvey]]></dc:creator>
		<pubDate>Wed, 10 Jun 2026 14:45:49 +0000</pubDate>
				<category><![CDATA[Beckhoff PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[Beckhoff and TwinCAT]]></category>
		<category><![CDATA[TwinCAT 3]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=45335</guid>

					<description><![CDATA[<p>Table of Contents TwinCAT Package Manager is Beckhoff’s new innovative way of managing packages within the TwinCAT environment. Released with their latest build 4026, Package Manager allows for quick and easy downloads of TwinCAT versions and workloads (collections of one or more packages), as well as individual packages. Let’s get started with some of the [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/45335/beckhoff-twincat-package-manager-guide/">Getting Started with Beckhoff TwinCAT Package Manager</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)">
<h4 id="h-table-of-contents" class="wp-block-heading">Table of Contents</h4>



<ol class="wp-block-list">
<li><strong><a href="#twincat-installation">Installation</a></strong></li>



<li><strong><a href="#twincat-configuration">Configuration</a></strong></li>



<li><strong><a href="#twincat-workloads-and-packages">Workloads and Packages</a></strong></li>



<li><strong><a href="#conclusion">Conclusion</a></strong></li>
</ol>
</div>



<p class="wp-block-paragraph">TwinCAT Package Manager is Beckhoff’s new innovative way of managing packages within the TwinCAT environment. Released with their latest build 4026, Package Manager allows for quick and easy downloads of TwinCAT versions and workloads (collections of one or more packages), as well as individual packages. Let’s get started with some of the key features of the TwinCAT Package Manager.</p>



<h2 id="twincat-installation" class="wp-block-heading">Installation</h2>



<p class="wp-block-paragraph">Download the latest version of the TwinCAT Package Manager from the <a href="https://www.beckhoff.com/en-us/support/download-finder/search-result/?download_group=725136885" target="_blank" rel="noreferrer noopener">Beckhoff website</a>. This blog will use the full installation, which includes the UI. If you would prefer the command-line-only install, some common commands are available on <a href="https://infosys.beckhoff.com/content/1033/tc3_installation/15698626059.html?id=5147078465983576506" target="_blank" rel="noreferrer noopener">Beckhoff Infosys</a>.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1160" height="299" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-1.png" alt="Screen displaying the TwinCAT Package Manager for version 3.1 Build 4026" class="wp-image-45362" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-1.png 1160w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-1-300x77.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-1-1024x264.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-1-768x198.png 768w" sizes="(max-width: 1160px) 100vw, 1160px" /></figure>



<p class="wp-block-paragraph">Follow the installation procedure to install TwinCAT Package Manager. &nbsp;</p>



<h2 id="twincat-configuration" class="wp-block-heading">Configuration</h2>



<p class="wp-block-paragraph">Once TwinCAT Package Manager is installed successfully, open it. If this is your first time launching Package Manager, you should be greeted with the Introduction screen. If you have previously launched Package Manager, but want to follow along, you can access this screen with the Settings button (gear icon) in the bottom left.</p>



<h3 id="h-introduction" class="wp-block-heading">Introduction</h3>



<p class="wp-block-paragraph">If you’re installing Package Manager on a system with a previous build of TwinCAT already installed, there will be a migration tab instead of a location tab. We will deal with that in a later section. Click Next.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="1428" height="773" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-2.png" alt="Window displaying the TwinCAT Package Manager setup wizard, used to install, update, and manage Beckhoff software components." class="wp-image-45363" style="border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;aspect-ratio:1.8473528492050129;object-fit:cover;width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-2.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-2-300x162.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-2-1024x554.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-2-768x416.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



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



<p class="wp-block-paragraph">The next section is for configuring the feeds for Package Manager. Click the &#8220;Add new feed&#8221; button to add one of these feeds.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="1428" height="773" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-3.png" alt="Image showing the TwinCAT Package Manager setup wizard, a tool used to manage software packages for Beckhoff automation systems." class="wp-image-45364" style="border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;aspect-ratio:1.8473528492050129;object-fit:cover;width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-3.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-3-300x162.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-3-1024x554.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-3-768x416.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="856" height="593" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-4.png" alt="Beckhoff TwinCAT Package Manager dialog window used to add new software feeds for installation." class="wp-image-45365" style="border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px;aspect-ratio:1.4435149171030617;object-fit:cover;width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-4.png 856w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-4-300x208.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-4-768x532.png 768w" sizes="(max-width: 856px) 100vw, 856px" /></figure>



<p class="wp-block-paragraph">By default, Beckhoff provides three feeds: the stable feed, the outdated feed, and the testing feed. The stable feed contains officially released Beckhoff products and is typically the main feed for most workloads and packages. Select the URL that ends with “/stable” to add the stable feed. The feed name should auto-populate, but can be changed. Enter your valid myBeckhoff account credentials and click Save to add the feed. You can <a href="https://www.beckhoff.com/en-en/mybeckhoff-registration/index.aspx" type="link" id="https://www.beckhoff.com/en-en/mybeckhoff-registration/index.aspx" target="_blank" rel="noreferrer noopener">create your own myBeckhoff account</a> if you don’t already one.</p>



<p class="wp-block-paragraph">You’re also able to create your own feed, which you can access here. This would allow you to easily share custom libraries with other developers on your team. We won’t go in depth on how to do that in this blog, but the <a href="https://github.com/Beckhoff-USA-Community/AAG_Custom-TcPkg-And-Workload" target="_blank" rel="noreferrer noopener">Beckhoff community GitHub repo</a> has an example structure.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="856" height="593" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-5.png" alt="TwinCAT Package Manager interface used for configuring software feeds." class="wp-image-45366" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-5.png 856w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-5-300x208.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-5-768x532.png 768w" sizes="(max-width: 856px) 100vw, 856px" /></figure>



<p class="wp-block-paragraph">You should now see the feed added. You’re able to disable, edit, or delete the feed from this view if needed.</p>



<p class="wp-block-paragraph">The outdated feed contains previous TwinCAT builds. If you used TwinCAT prior to build 4026, this is essentially the new version of Remote Manager. The testing feed contains test versions of workloads and packages. It’s most commonly used if you need access to an unreleased feature or are testing packages with Beckhoff engineers.</p>



<p class="wp-block-paragraph">Follow the steps above for the stable feed to add the outdated and testing feeds, making sure to use their respective URLs.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1150" height="679" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-6.png" alt="TwinCAT Package Manager interface used to configure software repositories for Beckhoff products." class="wp-image-45367" style="aspect-ratio:1.6925843647519305;width:1000px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-6.png 1150w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-6-300x177.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-6-1024x605.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-6-768x453.png 768w" sizes="(max-width: 1150px) 100vw, 1150px" /></figure>



<p class="wp-block-paragraph">Once you add the outdated and testing feeds, your Feeds tab should look like the one above. You can reorder the feed priorities using the up and down arrows on the right side. It’s recommended to keep the stable feed as priority 1 since it contains the officially released packages. If you reordered the feeds, click the save button in the top right. If you click next with unsaved changes, you will get this warning.</p>



<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="760" height="190" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-7.png" alt="Screenshot of a browser alert dialog box informing you that there are unsaved changes to your feed options." class="has-border-color has-custom-black-border-color wp-image-45368" style="border-width:1px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-7.png 760w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-7-300x75.png 300w" sizes="(max-width: 760px) 100vw, 760px" /></figure>



<p class="wp-block-paragraph">If you see this warning, click “Yes” to save changes. Click “Next.”</p>



<h3 class="wp-block-heading">Integration</h3>



<p class="wp-block-paragraph">The next screen asks which versions of TwinCAT XAE to install. Since TwinCAT XAE is built on Visual Studio, it requires the same Visual Studio version (32-bit or 64-bit) to be installed. If you’re working on a project in build 4026 or newer, it’s recommended to use the 64-bit version when possible. If you’re working on a project in a build prior to 4026 or on a 32-bit computer system, the 32-bit version of TwinCAT XAE is the only option. You can always add or remove these XAE versions later, so for now, let’s install both. Click &#8220;Next.&#8221;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1150" height="679" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-8.png" alt="TwinCAT Package Manager facilitates the integration of TwinCAT Engineering into Visual Studio or a standalone TcXaeShell." class="wp-image-45369" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-8.png 1150w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-8-300x177.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-8-1024x605.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-8-768x453.png 768w" sizes="(max-width: 1150px) 100vw, 1150px" /></figure>



<h3 class="wp-block-heading">Migration</h3>



<p class="wp-block-paragraph">If you had a previous build of TwinCAT, you will be prompted to complete a Migration screen. If you did not have a previous build of TwinCAT, feel free to skip to the <a href="#location">Location </a>section.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="920" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-9.png" alt="TwinCAT Package Manager is prompting you to migrate your current TwinCAT installation to Build 4026." class="wp-image-45370" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-9.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-9-300x193.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-9-1024x660.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-9-768x495.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">The migration tool will attempt to capture existing user settings on previous versions of TwinCAT, uninstall previous versions, install the latest versions, and reapply the user settings. Let’s click &#8220;Start Migration&#8221; to get started.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="920" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-10.png" alt="Screenshot of a prompt from the TwinCAT Package Manager asking to install the TwinCAT.XAE.MigrateCli package." class="wp-image-45373" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-10.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-10-300x193.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-10-1024x660.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-10-768x495.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">When getting to step 2 of the preparation screen, you may see a notification that you need to install the MigrateCli package. Click &#8220;Yes&#8221; to continue.</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="637" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-11-1024x637.png" alt="Screenshot of TwinCAT Package Manager by Beckhoff Automation, currently displaying the Migration tab." class="wp-image-45375" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-11-1024x637.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-11-300x187.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-11-768x478.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-11.png 1478w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Once the migration tool is installed, click &#8220;Start Simulation.&#8221;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1511" height="920" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-12.png" alt="Screen displaying the TwinCAT Package Manager migration tool from Beckhoff, which lists specific software workloads to be upgraded." class="wp-image-45376" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-12.png 1511w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-12-300x183.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-12-1024x623.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-12-768x468.png 768w" sizes="(max-width: 1511px) 100vw, 1511px" /></figure>



<p class="wp-block-paragraph">Once the migration simulation runs, you should see a list of all existing products in the system and how TwinCAT Package Manager plans to upgrade them to packages and workloads.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1511" height="920" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-13.png" alt="Screenshot of Beckhoff TwinCAT Package Manager software, specifically the migration screen for upgrading existing automation systems." class="wp-image-45377" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-13.png 1511w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-13-300x183.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-13-1024x623.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-13-768x468.png 768w" sizes="(max-width: 1511px) 100vw, 1511px" /></figure>



<p class="wp-block-paragraph">Assuming all the products can be upgraded to packages and workloads, we are ready to start the migration. Click Start Migration.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1548" height="920" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-14.png" alt="Image showing a &quot;Reboot required&quot; dialog box from the Beckhoff TwinCAT Package Manager." class="wp-image-45378" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-14.png 1548w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-14-300x178.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-14-1024x609.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-14-768x456.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-14-1536x913.png 1536w" sizes="(max-width: 1548px) 100vw, 1548px" /></figure>



<p class="wp-block-paragraph">Depending on the products you have installed, you may need to reboot your system. Press Ok and the TwinCAT Package Manager should automatically start up after rebooting and continue the migration.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1548" height="920" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-15.png" alt="Screen displaying the Beckhoff TwinCAT Package Manager migrating a system by uninstalling old setups and installing new workloads." class="wp-image-45379" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-15.png 1548w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-15-300x178.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-15-1024x609.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-15-768x456.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-15-1536x913.png 1536w" sizes="(max-width: 1548px) 100vw, 1548px" /></figure>



<p class="wp-block-paragraph">Once the migration is complete, click Finish. You should see all the latest versions of the products you had previously installed on the system.</p>



<h3 id="location" class="wp-block-heading">Location</h3>



<p class="wp-block-paragraph">If you did not have a previous version of TwinCAT installed, the final screen asks where to install TwinCAT. The default location is fine unless you have a reason to install it elsewhere. Click Finish.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1150" height="679" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-16.png" alt="Image of a screen that is part of the TwinCAT Package Manager installation wizard for Beckhoff software." class="wp-image-45380" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-16.png 1150w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-16-300x177.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-16-1024x605.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-16-768x453.png 768w" sizes="(max-width: 1150px) 100vw, 1150px" /></figure>



<h2 id="twincat-workloads-and-packages" class="wp-block-heading">Workloads and Packages</h2>



<p class="wp-block-paragraph">The workload view should be the default view when opening Package Manager for the first time. It can be navigated to by hovering over the package icon with a W in the bottom right and selecting workloads.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="773" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-17.png" alt="Image of a screen showing the TwinCAT Package Manager interface for managing software packages and workloads." class="wp-image-45381" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-17.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-17-300x162.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-17-1024x554.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-17-768x416.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<h3 class="wp-block-heading">Workloads</h3>



<p class="wp-block-paragraph">Workloads are groupings of packages that closely align with Beckhoff&#8217;s licensing structure. For example, if you’re planning on using Beckhoff XTS in your solution, you can search for “XTS” to find the TF5850 | TwinCAT 3 XTS workload. This will install the necessary packages to work with XTS. If you are using XTS in your solution, check out our <a href="https://static.dmcinfo.com/blog/15666/beckhoff-xts-part-1-downloads-and-starter-project/">blog series on XTS</a> to help get started!</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="773" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-18.png" alt="Image shows the Beckhoff TwinCAT Package Manager, which is used for installing, updating, and managing modular TwinCAT 3 software packages." class="wp-image-45382" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-18.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-18-300x162.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-18-1024x554.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-18-768x416.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">The workloads in the general section are the ones we should install first. Let’s start by installing the latest version of TwinCAT Standard Engineering and the latest versions of TwinCAT XAE Shell 32-bit and 64-bit. If you’re installing the latest version, simply click on the blue download button associated with that workload.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="773" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-19.png" alt="Screenshot of TwinCAT Package Manager." class="wp-image-45383" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-19.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-19-300x162.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-19-1024x554.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-19-768x416.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">You’ll see the planned installations added to the right side of Package Manager under selected products. Click Apply Modifications to start the installation.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="856" height="593" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-20.png" alt="Image showing an installation wizard for TwinCAT 3.1, indicating a required update for version 3.16.3 of the TwinCAT.XAR.Base component." class="wp-image-45384" style="width:800px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-20.png 856w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-20-300x208.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-20-768x532.png 768w" sizes="(max-width: 856px) 100vw, 856px" /></figure>



<p class="wp-block-paragraph">Some workloads will require a restart. The TwinCAT Standard installation is one of them. Click Accept to continue.</p>



<p class="wp-block-paragraph">If a pop-up appears asking you to allow the TwinCAT Package Manager to make changes to your device, click “Yes.”</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="856" height="592" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-21.png" alt="Image showing a Beckhoff TwinCAT installer interface managing multiple software packages." class="wp-image-45385" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-21.png 856w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-21-300x207.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-21-768x531.png 768w" sizes="(max-width: 856px) 100vw, 856px" /></figure>



<p class="wp-block-paragraph">The installation may take a few minutes, but Package Manager will give you a download and installation status.</p>



<p class="wp-block-paragraph">Once the installation completes, Package Manager will show a check mark next to the workloads that were successfully installed.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="822" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-22.png" alt="Screenshot of TwinCAT Package Manager." class="wp-image-45386" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-22.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-22-300x173.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-22-1024x589.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-22-768x442.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">We didn’t explicitly install TwinCAT Standard Remote Manager or TE9000 | TwinCAT 3 Safety Editor. Why are they showing as installed? TwinCAT Package Manager will install all dependencies needed to install the selected workloads! These workloads are dependencies for TwinCAT Standard and are automatically installed for us.</p>



<h3 class="wp-block-heading">Workloads (Other Versions)</h3>



<p class="wp-block-paragraph">One of the nice things about TwinCAT Package Managers is the ability to access prior versions of all the workloads. Each workload has an ellipsis on the right side. Clicking on this provides the option to select other versions.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="775" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-23.png" alt="Screenshot of a menu in TwinCAT Package manager allowing users to browse, install, and update different workloads and packages, such as the TwinCAT Standard engineering and runtime environments" class="wp-image-45387" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-23.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-23-300x163.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-23-1024x556.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-23-768x417.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">Click on the other versions option for TwinCAT Standard.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="775" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-24.png" alt="Screenshot of TwinCAT Package Manager with TwinCAT Standard selected." class="wp-image-45388" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-24.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-24-300x163.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-24-1024x556.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-24-768x417.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">We can see that the latest version is currently installed and can be uninstalled here if needed. If we wanted to install a previous version, say 4026.21.2, we could click the icon next to that version. That icon is the downgrade icon. This would uninstall 4026.22.0 and downgrade TwinCAT Standard to 4026.21.2. &nbsp;However, TwinCAT Standard Remote Manager can be used when working on multiple solutions across different versions.</p>



<p class="wp-block-paragraph">Click the triple-dot icon next to TwinCAT Standard Remote Manager, then select other versions.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="775" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-25.png" alt="Screenshot of TwinCAT Package Manager with TwinCAT Standard Remote Manager selected." class="wp-image-45389" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-25.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-25-300x163.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-25-1024x556.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-25-768x417.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">The icons here are install icons instead of downgrade icons, even though we already have the latest version installed. This is because the TwinCAT Standard Remote Manager supports multiple versions, as indicated by the AllowMultiple attribute in the top left. Installing from here will allow both versions to coexist on the same system. To illustrate this, I’ll install version 4026.21.2.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="937" height="86" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-26.png" alt="Image of TwinCAT Standard Remote Manager, allowing users to manage and switch between multiple versions of the TwinCAT 3 development environment (Engineering) on a single PC." class="wp-image-45390" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-26.png 937w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-26-300x28.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-26-768x70.png 768w" sizes="(max-width: 937px) 100vw, 937px" /></figure>



<p class="wp-block-paragraph">The Package Manager workload for TwinCAT Standard Remote Manager now shows a [ + 1 ] to indicate multiple builds are installed.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="175" height="80" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-27.png" alt="Image of a dropdown menu in TwinCAT Package Manager allowing users to select between different versions of TwinCAT software, specifically Build 4026.22 and Build 4026.21." class="wp-image-45391"/></figure>



<p class="wp-block-paragraph">When opening TwinCAT XAE, we now have multiple builds to select from!</p>



<h3 class="wp-block-heading">Installing Pre-4026 Builds</h3>



<p class="wp-block-paragraph">If you haven’t already, make sure you’re connected to the Beckhoff outdated feed. You can configure your feeds by clicking on the settings icon in the bottom left.</p>



<p class="wp-block-paragraph">Once you have the outdated feed configured, hover over the package icon with the database in the bottom right. Select the &#8220;Beckhoff Outdated Feed.&#8221;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="775" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-28.png" alt="Screenshot of an interface allowing users to select from different feeds, including Stable, Testing, and Outdated feeds, to install, upgrade, or downgrade products." class="wp-image-45392" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-28.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-28-300x163.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-28-1024x556.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-28-768x417.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">The only workload associated with the Beckhoff Outdated Feed is the TwinCAT Standard Remote Manager. From the outdated feed, we can install pre-4026 builds of TwinCAT.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="872" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-29.png" alt="Screenshot of an interface showing TwinCAT Standard Remote Manager with multiple versions available for installation, upgrading, or downgrading." class="wp-image-45393" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-29.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-29-300x183.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-29-1024x625.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-29-768x469.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">I’ll install build 4024.75.4 to illustrate.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="176" height="98" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-30.png" alt="Screenshot of a dropdown menu part of the TwinCAT XAE Remote Manager Toolbar, which allows users to select specific TwinCAT 3 versions for loading" class="wp-image-45394"/></figure>



<p class="wp-block-paragraph">After installing build 4024.75.4 on TwinCAT Package Manager, it is now selectable in the build dropdown.</p>



<p class="has-custom-primary-blue-color has-custom-light-blue-background-color has-text-color has-background has-link-color wp-elements-3 wp-block-paragraph" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--30)"><strong>*NOTE: This is only available in the 32-bit XAE. The 64-bit version of XAE only supports builds 4026 and newer.</strong></p>



<h3 class="wp-block-heading">Packages</h3>



<p class="wp-block-paragraph">So far, we’ve been dealing with Workloads. Workloads are groupings of packages that TwinCAT organizes primarily according to Beckhoff&#8217;s licensing structure. TwinCAT projects reference packages directly. Let’s open a new TwinCAT XAE project to see this.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="143" height="76" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-31.png" alt="Image shows the References section in a Beckhoff TwinCAT 3 engineering environment." class="wp-image-45395"/></figure>



<p class="wp-block-paragraph">In the References folder of a brand new TwinCAT project, there are the Tc2_Standard, Tc2_System, and Tc3_Module packages.</p>



<p class="wp-block-paragraph">Let’s switch back to the package manager. On the left, you should be able to go to the package view menu and select Packages.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="872" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-32.png" alt="Screenshot showing a list of various Packages with different version numbers (e.g., v4.2.0, v22.22.0) available for installation or update." class="wp-image-45396" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-32.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-32-300x183.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-32-1024x625.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-32-768x469.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">This will show the individual packages that are available and installed on the system. Let’s search for Tc2_Standard.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="872" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-33.png" alt="Screenshot of TwinCAT Package Manager interface showing &quot;Selected Products&quot; panel on the right displaying actions like Install, Upgrade, or Remove for the packages chosen from the main list." class="wp-image-45397" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-33.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-33-300x183.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-33-1024x625.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-33-768x469.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">We can see that Tc2_Standard is installed.</p>



<h3 class="wp-block-heading">How To Deal with a Missing Package</h3>



<p class="wp-block-paragraph">If you have a missing package on a TwinCAT project, you will be greeted with a warning sign that looks something like this:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="145" height="73" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-34.png" alt="Screenshot of a file tree in TwinCAT Package Manager with yellow alert symbols next to folder items." class="wp-image-45398"/></figure>



<p class="wp-block-paragraph">The package with the warning symbol next to it is missing from the project. Double-clicking on the package shows that the library is not available and does not have an effective version listed.</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="635" height="101" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-35-1.png" alt="Image showing a library manager view within TwinCAT 3." class="wp-image-45400" style="border-width:1px;width:700px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-35-1.png 635w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-35-1-300x48.png 300w" sizes="(max-width: 635px) 100vw, 635px" /></figure>



<p class="wp-block-paragraph">Right-click on the missing package and open the properties window. The resolution will show the version of the package that the TwinCAT PLC project is expecting.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="601" height="301" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-36.png" alt="Image displaying the Properties window for a Beckhoff Automation GmbH library, identified as Tc2_System and a resolution version of 3.9.1.0." class="wp-image-45401" style="width:700px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-36.png 601w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-36-300x150.png 300w" sizes="(max-width: 601px) 100vw, 601px" /></figure>



<p class="wp-block-paragraph">If we go back to Package Manager and search for the Tc2_System package, we can see that although it is installed, it is not the same version the PLC project expects.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="962" height="41" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-37.png" alt="Image of a library item for Beckhoff Automation's TwinCAT 3 software suite." class="wp-image-45402" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-37.png 962w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-37-300x13.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-37-768x33.png 768w" sizes="(max-width: 962px) 100vw, 962px" /></figure>



<p class="wp-block-paragraph">Click the ellipses next to the package, then select other versions.</p>



<p class="wp-block-paragraph">Similar to Workloads, Packages have multiple versions that can be installed onto the same system. In this scenario, we have Tc2_System v3.10.1 installed already, but do not have v3.9.1. Tc2_System allows for multiple versions to be installed, indicated by the AllowMultiple tag. Let’s install v3.9.1 and see if that resolves our issue. Click the download button next to v3.9.1 and click &#8220;Apply modifications.&#8221;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1428" height="872" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-38.png" alt="TwinCAT 3 interface displaying multiple versions." class="wp-image-45403" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-38.png 1428w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-38-300x183.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-38-1024x625.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-38-768x469.png 768w" sizes="(max-width: 1428px) 100vw, 1428px" /></figure>



<p class="wp-block-paragraph">If you see a message about “TwinCAT XAE / Visual Studio stop required,” be sure to close all open XAE windows before clicking Accept. Once the package is installed successfully, we can check the previously missing package.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="856" height="672" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-39.png" alt="Screenshot of an installer window indicating that the TwinCAT XAE / Visual Studio application must be stopped before the installation can continue." class="wp-image-45404" style="width:1000px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-39.png 856w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-39-300x236.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-39-768x603.png 768w" sizes="(max-width: 856px) 100vw, 856px" /></figure>



<p class="wp-block-paragraph">The library is now available and has an effective version of v3.9.1. We have installed our missing package through Package Manager!</p>



<figure class="wp-block-image size-full is-resized has-custom-border"><img decoding="async" width="643" height="97" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-40-1.png" alt="Image displaying a list of libraries within the Beckhoff TwinCAT 3 engineering environment, specifically showing library names, namespaces, and effective versions." class="has-border-color has-custom-black-border-color wp-image-45406" style="border-width:1px;width:700px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-40-1.png 643w, https://static.dmcinfo.com/wp-content/uploads/2026/06/twincat-package-manager-40-1-300x45.png 300w" sizes="(max-width: 643px) 100vw, 643px" /></figure>



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



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--50)">The TwinCAT Package Manager is a huge improvement in how engineers can manage the various Packages and Workloads that make up a TwinCAT solution. TwinCAT Package Manager is just the start of the improvements that TwinCAT build 4026 brings to development. A complete list of changes is offered on the <a href="https://www.beckhoff.com/en-us/products/automation/twincat/twincat-3-build-4026/" target="_blank" rel="noreferrer noopener">Beckhoff website</a>. If you’re starting a project in 4026 or upgrading an existing solution to 4026, reach out to DMC and see how we can help! We have extensive experience with upgrading and developing across all TwinCAT builds.</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">Starting a TwintCAT 3 project or upgrading an existing system?</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/">Automation</a> team can help you migrate environments, manage dependencies, and streamline <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/beckhoff-and-twincat-3-programming/">Beckhoff TwinCAT development</a>. Contact DMC to get started.</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/45335/beckhoff-twincat-package-manager-guide/">Getting Started with Beckhoff TwinCAT Package Manager</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Getting Started with Beckhoff TwinCAT HMI: Simple Project Setup Tutorial</title>
		<link>https://static.dmcinfo.com/blog/42316/beckhoff-twincat-hmi-project-setup-tutorial/</link>
		
		<dc:creator><![CDATA[Andre Lopez]]></dc:creator>
		<pubDate>Wed, 13 May 2026 11:00:00 +0000</pubDate>
				<category><![CDATA[Beckhoff PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[PLC Programming]]></category>
		<category><![CDATA[Siemens HMI]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=42316</guid>

					<description><![CDATA[<p>Beckhoff&#160;TwinCAT HMI&#160;provides a responsive engineering design environment&#160;for building industrial&#160;web-based&#160;user interfaces.&#160;Because it is built on standard HTML5 technologies, TwinCAT HMI applications can run in any modern web browser. Its flexible architecture and extensive built‑in feature set make it well-suited for everything from simple operator panels to complex, scalable HMI systems.&#160;In this&#160;article,&#160;we will go over basic project [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/42316/beckhoff-twincat-hmi-project-setup-tutorial/">Getting Started with Beckhoff TwinCAT HMI: Simple Project Setup Tutorial</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Beckhoff&nbsp;<strong>TwinCAT HMI</strong>&nbsp;provides a responsive engineering design environment&nbsp;for building industrial&nbsp;web-based&nbsp;user interfaces.&nbsp;Because it is built on standard HTML5 technologies, TwinCAT HMI applications can run in any modern web browser. Its flexible architecture and extensive built‑in feature set make it well-suited for everything from simple operator panels to complex, scalable HMI systems.&nbsp;In this&nbsp;article,&nbsp;we will go over basic project setup for TwinCAT HMI by walking through a&nbsp;simple&nbsp;project.&nbsp;</p>



<h2 class="wp-block-heading" id="h-prerequisites-nbsp">Prerequisites&nbsp;</h2>



<ol start="1" class="wp-block-list">
<li>TwinCAT&nbsp;XAE installed&nbsp;</li>



<li>TwinCAT&nbsp;HMI installed&nbsp;</li>



<li>PLC&nbsp;Project&nbsp;built and running <em>(see bonus information for the&nbsp;PLC&nbsp;Code&nbsp;used in this example)</em></li>
</ol>



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



<h3 class="wp-block-heading" id="h-creating-the-project">Creating the Project</h3>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">With&nbsp;the prerequisites&nbsp;checked off, we can&nbsp;start the basic project setup for the HMI. Begin by right-clicking the solution in the <strong>Solution Explorer</strong> project tree and selecting <strong>Add&nbsp;&gt;&nbsp;New Project</strong>.&nbsp;When the <strong>Add New Project</strong> window launches, navigate to <strong>TwinCAT HMI &gt; TwinCAT HMI Project</strong> and name it whatever you like.</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-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image aligncenter size-full has-custom-border"><img decoding="async" width="754" height="487" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-1.png" alt="Context menu in Microsoft Visual Studio, a widely used integrated development environment (IDE) for software engineering." class="has-border-color wp-image-44073" style="border-color:#eeeeee" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-1.png 754w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-1-300x194.png 300w" sizes="(max-width: 754px) 100vw, 754px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image aligncenter size-full is-resized has-custom-border"><img decoding="async" width="938" height="653" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-2.png" alt="This image shows the &quot;Add New Project&quot; dialog box within the Beckhoff TwinCAT 3 engineering environment." class="has-border-color wp-image-44074" style="border-color:#eeeeee;aspect-ratio:1.4365061249334246;width:546px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-2.png 938w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-2-300x209.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-2-768x535.png 768w" sizes="(max-width: 938px) 100vw, 938px" /></figure>
</div>
</div>



<h3 class="wp-block-heading" id="h-linking-tags-nbsp">Linking Tags&nbsp;</h3>



<p class="wp-block-paragraph">The first step in setting up a&nbsp;TwinCAT&nbsp;HMI project is linking PLC symbols to the user interface. This is done by exposing symbols to the&nbsp;TwinCAT&nbsp;HMI Server and binding them directly to HMI control properties.</p>



<p class="wp-block-paragraph">Navigate to&nbsp;<strong>TwinCAT&nbsp;HMI &gt;&nbsp;Windows&nbsp;&gt;&nbsp;&nbsp;TwinCAT&nbsp;HMI Configuration</strong>.</p>



<p class="wp-block-paragraph">From <strong>TwinCAT HMI Configuration</strong>,&nbsp;navigate to&nbsp;<strong>All symbols &gt;&nbsp;ADS &gt;&nbsp;PLC</strong>,&nbsp;and wherever you have your variables defined, in my case &#8216;MAIN&#8217;.</p>



<p class="wp-block-paragraph"><strong>Note:</strong> If ADS is not appearing, check&nbsp;your ADS Route (review the bonus information to learn how).&nbsp;</p>



<p class="wp-block-paragraph">From here,&nbsp;you can right-click on a variable and hit &#8216;Map Symbol&#8217;.&nbsp;You can also simply double-click on a symbol to map it.&nbsp;We&nbsp;have&nbsp;now successfully&nbsp;pulled&nbsp;the&nbsp;PLC data&nbsp;into&nbsp;the HMI Server.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">Now,&nbsp;we can&nbsp;bind&nbsp;these tags to controls in the HMI screen.&nbsp;Navigate to&nbsp;&#8216;Desktop.view&#8217;.&nbsp;This is the main screen on which we will develop.</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-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image aligncenter size-full has-custom-border"><img decoding="async" width="771" height="384" src="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-3.png" alt="Screenshot showing the TwinCAT HMI Configuration window in Beckhoff TwinCAT 3 engineering software." class="has-border-color wp-image-44083" style="border-color:#eeeeee" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-3.png 771w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-3-300x149.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-3-768x383.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image aligncenter size-full is-resized has-custom-border"><img decoding="async" width="686" height="429" src="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-4.png" alt="Image displaying the project structure for a Beckhoff TwinCAT HMI project within Visual Studio." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44084" style="aspect-ratio:1.599119129293186;width:472px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-4.png 686w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-4-300x188.png 300w" sizes="(max-width: 686px) 100vw, 686px" /></figure>
</div>
</div>



<h2 class="wp-block-heading" id="h-creating-nbsp-controls-nbsp">Creating&nbsp;Controls&nbsp;</h2>



<p class="wp-block-paragraph">On the right pane, we have properties and&nbsp;the toolbox. These are used to add&nbsp;and edit controls within the project. We’ll&nbsp;start&nbsp;by dragging a&nbsp;<strong>Button&nbsp;</strong>into the project.</p>



<p class="wp-block-paragraph">After your&nbsp;component&nbsp;is added, you can then select it to&nbsp;edit the&nbsp;<strong>Properties&nbsp;</strong>tab.&nbsp;For a basic button, we will want to create a data binding for&nbsp;the&nbsp;state symbol.&nbsp;Click the square to the right of the text field to link tags&nbsp;and select&nbsp;&#8216;Create data binding&#8217;.</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" style="margin-right:0"><img decoding="async" width="764" height="228" src="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-5.png" alt="Image of a property configuration menu within the Beckhoff TwinCAT 3 HMI engineering environment, specifically allowing users to bind properties to data or functions" class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44092" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-5.png 764w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-5-300x90.png 300w" sizes="(max-width: 764px) 100vw, 764px" /></figure>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph" style="padding-left:var(--wp--preset--spacing--40)">This&nbsp;opens&nbsp;the symbol browser where you can select mapped PLC variables. On my screen, some variable groups include &#8216;ADS&#8217;, &#8216;PLC1&#8217;, &#8216;Global_Version&#8217;, and &#8216;MAIN&#8217;. Within the &#8216;MAIN&#8217; category, we&#8217;ll select the <strong>bRun </strong>variable. It is worth noting that you can also map symbols from this screen using the same method as in HMI configuration.</p>
</div>
</div>



<p class="wp-block-paragraph">You should now see the name for that symbol populated in the&nbsp;&#8216;StateSymbol&#8217;<strong>&nbsp;</strong>box. You can also hover over property names to see a description&nbsp;of what&nbsp;they do. Now, we will drag in an <strong>Ellipse </strong>to show how the Events tab works.</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 alignleft size-full has-custom-border" style="margin-right:0;margin-left:var(--wp--preset--spacing--20)"><img decoding="async" width="763" height="148" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-6.png" alt="Image displaying the properties for a TcHmiEllipse control within the Beckhoff TwinCAT 3 HMI Engineering environment." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44103" style="aspect-ratio:5.155652648825778" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-6.png 763w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-6-300x58.png 300w" sizes="(max-width: 763px) 100vw, 763px" /></figure>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph" style="padding-left:var(--wp--preset--spacing--40)">With your ellipse selected,&nbsp;navigate over to the&nbsp;Events tab&nbsp;indicated by&nbsp;the lightning bolt symbol. From here,&nbsp;you can see that there are many built-in events to configure, like <code>.onMouseDoubleClick</code>, <code>.onMouseEnter</code>, <code>.onMouseLeave</code>, etc. You also have the option&nbsp;to configure&nbsp;a custom event.</p>
</div>
</div>



<p class="wp-block-paragraph">Click the small square next to the <strong>Custom</strong> field to map a symbol to this control. In our case, we will select &#8216;bState&#8217;. Once that symbol is mapped, click the pencil icon to open and edit the custom event associated with the control.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">In the Events tab, you will see a drag-and-drop interface that allows you to define logic for the controller&#8217;s behavior. This visual workflow makes it easy to configure interactions without writing traditional code. For this example, we will use a <strong>Condition </strong>block. Drag the condition into the steps section, then begin populating the auto-generated fields.</p>



<figure class="wp-block-image aligncenter size-full has-custom-border" style="margin-bottom:var(--wp--preset--spacing--40)"><img decoding="async" width="1395" height="648" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-7.png" alt="This screenshot shows the Actions and Conditions Editor in Beckhoff's TwinCAT 3 HMI software" class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44107" style="aspect-ratio:2.142916934066241" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-7.png 1395w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-7-300x139.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-7-1024x476.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-7-768x357.png 768w" sizes="(max-width: 1395px) 100vw, 1395px" /></figure>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--40)">Here, we want to check whether the boolean variable <strong>bRun</strong> is set to &#8216;True&#8217;. If the condition evaluates to true, we will update the ellipse&#8217;s appearance to indicate an active state. To do this, drag the <strong>FillColor</strong> property into both the <strong>&#8216;then&#8217;</strong> and <strong>&#8216;else&#8217;</strong> branches. Set the &#8216;then&#8217; color to green to represent a running state, and the &#8216;else&#8217; color to grey to indicate that the system is not running.</p>



<figure class="wp-block-image alignleft size-large is-resized has-custom-border"><img decoding="async" width="1024" height="733" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-8-1024x733.png" alt="This image shows the Beckhoff TwinCAT HMI development environment, specifically the MAIN screen configuration area." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44108" style="aspect-ratio:1.3970697054906023;object-fit:cover;width:550px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-8-1024x733.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-8-300x215.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-8-768x549.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-8.png 1177w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="h-testing-in-live-view">Testing in Live View</h2>



<p class="wp-block-paragraph">After configuring this logic, it&#8217;s also important to establish your screen&#8217;s behavior. Return to the <strong>Desktop.View</strong>, where you will see a set of controls on the right-hand side. Click the &#8216;L&#8217;<strong> </strong>button to launch the live view.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">As you interact with the interface, observe the ellipse once again. When the button is pressed and held, the condition should evaluate to true, and the circle should toggle from red to green in real time. This confirms that your event logic is working as expected and that the control is properly responding to changes in the mapped variable.</p>



<h2 class="wp-block-heading" id="h-user-nbsp-controls-nbsp">User&nbsp;Controls&nbsp;</h2>



<p class="wp-block-paragraph">As your HMI projects grow in size and complexity, maintaining reusability and consistency becomes increasingly important. TwinCAT HMI addresses this need through <strong>User Controls</strong>, which are reusable templates that combine multiple HMI elements into configurable, modular components.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">To get started, create a new folder in your project called &#8216;UserControls&#8217;. This helps keep your project organized as your library of reusable components expands. Within this folder, add a new item and select &#8216;User Control&#8217;. From here, you can begin building a custom control that can be reused across screens, reducing development time and ensuring a consistent user interface.</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-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image aligncenter size-large is-resized has-custom-border"><img decoding="async" width="1024" height="423" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-10-1024x423.png" alt="Screenshot showing the context menu within the Beckhoff TwinCAT 3 HMI Engineering environment, specifically under the Solution Explorer with &quot;New Folder&quot; highlighted." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44118" style="aspect-ratio:2.3932057294967675;width:555px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-10-1024x423.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-10-300x124.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-10-768x317.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-10.png 1193w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image aligncenter size-large has-custom-border"><img decoding="async" width="1024" height="397" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-11-1024x397.png" alt="Image of a context menu in TwinCAT HMI Engineering within Visual Studio with &quot;New Item&quot; highlighted." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44119" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-11-1024x397.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-11-300x116.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-11-768x298.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-11.png 1037w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">Once again, on the&nbsp;right‑hand&nbsp;side of the screen, you&#8217;ll see a set of small buttons.&nbsp;Selecting the&nbsp;&#8216;P&#8217;&nbsp;button opens the User Control parameters. These parameters are configurable values that are passed into each instance of the <strong>User Control</strong>, allowing multiple instances to be created without&nbsp;modifying&nbsp;the control’s internal layout, grouping, or logic.&nbsp;</p>



<figure class="wp-block-image aligncenter size-full has-custom-border" style="margin-bottom:var(--wp--preset--spacing--40)"><img decoding="async" width="1701" height="931" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-12.png" alt="Dialog box used to define parameters for a UserControl in TwinCAT HMI, allowing for custom, reusable interface elements." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44128" style="aspect-ratio:1.8270923538088215;object-fit:cover" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-12.png 1701w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-12-300x164.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-12-1024x560.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-12-768x420.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-12-1536x841.png 1536w" sizes="(max-width: 1701px) 100vw, 1701px" /></figure>



<p class="wp-block-paragraph" style="padding-top:var(--wp--preset--spacing--30)">We are going to create two parameters:</p>



<ul class="wp-block-list">
<li style="padding-bottom:0">One for the&nbsp;<strong>HMI_PbLight</strong>&nbsp;struct</li>



<li>One&nbsp;<strong>String</strong> for&nbsp;the name of the&nbsp;component</li>
</ul>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--40)"><strong>Note: </strong>If&nbsp;your&nbsp;struct&nbsp;does not show&nbsp;up,&nbsp;try&nbsp;closing parameters,&nbsp;adding a button&nbsp;to your user control,&nbsp;and linking&nbsp;<strong>HMI_PbLight</strong>. Return to the parameters and the datatype should now appear as <strong>PLC1.HMI_PbLight</strong>, with <strong>String</strong> for <strong>sName</strong>.</p>



<figure class="wp-block-image aligncenter size-full is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--40)"><img decoding="async" width="1569" height="896" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-13.png" alt="Image shows the Edit/Define Parameters dialog window in TwinCAT HMI engineering software." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44220" style="aspect-ratio:1.7511457692044599;width:1179px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-13.png 1569w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-13-300x171.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-13-1024x585.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-13-768x439.png 768w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-13-1536x877.png 1536w" sizes="(max-width: 1569px) 100vw, 1569px" /></figure>



<p class="wp-block-paragraph">With the User Control parameters defined, we can now build the control in much the same way as before, with one key difference: instead of binding directly to PLC symbols, we bind each element to properties exposed by the User Control. The pushbutton is configured so its state and behavior reference the <strong>bRun</strong> member of the <strong>HMI_PbLight</strong> parameter, allowing each instance of the control to respond to its own data source.</p>



<p class="wp-block-paragraph">In the same way, the ellipse used as a status indicator is bound to the <strong>bState</strong> variable within the same struct, and simple logic is applied to drive its fill color, green when the run condition is true and grey when it is false. Finally, we’ll add a text element and bind its <strong>Text</strong> property to the <strong>sName </strong>string parameter, enabling each instance to display a unique label.</p>



<figure class="wp-block-image size-full has-custom-border" style="margin-bottom:var(--wp--preset--spacing--60)"><img decoding="async" width="1357" height="541" src="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-21.png" alt="Screenshot displaying a Conditional (IF/THEN/ELSE) logic block within Beckhoff TwinCAT HMI." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44599" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-21.png 1357w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-21-300x120.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-21-1024x408.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-21-768x306.png 768w" sizes="(max-width: 1357px) 100vw, 1357px" /></figure>



<figure class="wp-block-image aligncenter size-full has-custom-border"><img decoding="async" width="1239" height="668" src="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-14-1.png" alt="Screenshot shows an Actions and Conditions editor used for creating logical behavior in Beckhoff TwinCAT program." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44600" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-14-1.png 1239w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-14-1-300x162.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-14-1-1024x552.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-14-1-768x414.png 768w" sizes="(max-width: 1239px) 100vw, 1239px" /><figcaption class="wp-element-caption"><em>Color reference shown for the combobox.</em></figcaption></figure>



<p class="wp-block-paragraph" style="padding-bottom:0">Notice that none of the elements inside the User Control are bound directly to PLC symbols. Instead, each element references the variables exposed by the <strong>HMI_PbLight</strong> struct parameter. This indirection is what makes the control reusable.</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 size-full is-resized has-custom-border"><img decoding="async" width="761" height="200" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-15-e1777921687642.png" alt="Image of an HMI property configuration screen within TwinCAT program." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44222" style="aspect-ratio:3.692049507027481;width:550px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-15-e1777921687642.png 761w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-15-e1777921687642-300x79.png 300w" sizes="(max-width: 761px) 100vw, 761px" /></figure>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph">After saving the User Control, switch back to <strong>Desktop.View</strong> and you will see it appear in the toolbox alongside the standard HMI elements. From there, drag the control onto a screen, bind the <strong>HMI_PbLight</strong> parameter to a specific instance of the struct, and assign a name. Boom! With that single step, the control is fully configured, and you can now drop in as many instances as needed while maintaining consistent behavior, appearance, and logic across your HMI.</p>
</div>
</div>



<h2 class="wp-block-heading" id="bonus">Bonus Information</h2>



<h3 class="wp-block-heading" id="h-adding-a-combobox">Adding a Combobox</h3>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--30)">This section introduces a <strong>Combobox</strong> that allows the operator to change the light&#8217;s color behavior within the User Control. Rather than hard-coding the color logic, the Combobox provides a simple, configurable way to select between predefined color states at runtime.</p>



<figure class="wp-block-image alignleft size-full is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--40)"><img decoding="async" width="748" height="605" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-16-1.png" alt="Configuration dialog box for a TwinCAT HMI ComboBox control, allowing a user to add color entries for different system states." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44225" style="aspect-ratio:1.2363798654722815;object-fit:cover;width:550px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-16-1.png 748w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-16-1-300x243.png 300w" sizes="(max-width: 748px) 100vw, 748px" /></figure>



<p class="wp-block-paragraph">To add the Combobox, navigate to <strong>SrcData</strong>, click the three dots on the right-hand side, and create a new data source that will hold the selected value. This data source is then bound to the Combobox and referenced by the User Control logic, allowing the selected option to drive how the indicator is displayed. By handling the color selection this way, the control remains flexible and reusable while giving each instance the ability to behave differently based on user input.</p>



<p class="wp-block-paragraph">Next, define the selectable color options for the Combobox. Add three entries labeled <strong>Green</strong>, <strong>Yellow</strong>, and <strong>Red</strong>, and assign each one a corresponding hex color value in the <strong>Value</strong> category. These values will be used directly by the User Control logic to drive the appearance of the status indicator.</p>



<p class="wp-block-paragraph">Once the options are in place, navigate back to the ellipse inside the User Control and update its custom action. For the bRun true condition, set the fill color using a function binding that references the Combobox selection: <strong>({ color: %ctrl%TcHmiCombobox_1::SelectedValue%/ctrl% })</strong></p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--40)">This binding allows the ellipse color to be determined dynamically based on the selected Combobox value rather than fixed logic. With that complete, you can add additional instances of the User Control to your screen, bind each one to a different <strong>HMI_PbLight</strong> [HO16.1] struct instance, and select the desired color from the Combobox. Each control now behaves independently, while still leveraging the same reusable design.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-container-core-gallery-is-layout-589b94c0 wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="1247" height="830" data-id="44227" src="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-17.png" alt="Image of Beckhoff TwinCAT HMI Live-View interface displaying a red indicator." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44227" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-17.png 1247w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-17-300x200.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-17-1024x682.png 1024w, https://static.dmcinfo.com/wp-content/uploads/2026/05/beckhoff-twincat-hmi-basic-project-set-up-image-17-768x511.png 768w" sizes="(max-width: 1247px) 100vw, 1247px" /></figure>



<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="900" height="563" data-id="43978" src="https://static.dmcinfo.com/wp-content/uploads/2026/05/twincat-hmi-42.png" alt="Image of Beckhoff TwinCAT HMI Live-View interface displaying a yellow indicator." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-43978" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/05/twincat-hmi-42.png 900w, https://static.dmcinfo.com/wp-content/uploads/2026/05/twincat-hmi-42-300x188.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/05/twincat-hmi-42-768x480.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<figure class="wp-block-image size-full has-custom-border"><img decoding="async" width="900" height="566" data-id="43979" src="https://static.dmcinfo.com/wp-content/uploads/2026/05/twincat-hmi-41.png" alt="Image of Beckhoff TwinCAT HMI Live-View interface displaying a green indicator." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-43979" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/05/twincat-hmi-41.png 900w, https://static.dmcinfo.com/wp-content/uploads/2026/05/twincat-hmi-41-300x189.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/05/twincat-hmi-41-768x483.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>
</figure>



<h3 class="wp-block-heading" id="h-basic-plc-project-nbsp">Basic PLC Project&nbsp;</h3>



<p class="wp-block-paragraph">This section walks through setting up a simple PLC project to support a basic pushbutton and light, which will later be consumed by the TwinCAT HMI. Start by creating a new solution and selecting &#8216;TwinCAT XAE Project&#8217;. This initializes the TwinCAT environment and provides the framework needed to add PLC logic and HMI communication.</p>



<figure class="wp-block-image alignleft size-full is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--30)"><img decoding="async" width="549" height="346" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-18.png" alt="Image of s a Structured Text (ST) program, likely within a PLC environment like TwinCAT or CODESYS, used to control light indicators." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44228" style="width:550px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-18.png 549w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-18-300x189.png 300w" sizes="(max-width: 549px) 100vw, 549px" /></figure>



<p class="wp-block-paragraph">Once the project is created, navigate to the <strong>Solution Explorer</strong>, right-click on <strong>PLC</strong>, and add a new PLC project. This creates the runtime environment where the control logic will live. With the PLC project in place, we can define the shared data structure used by the HMI. Right-click on <strong>DUTs</strong>, select <strong>Add &gt; DUT</strong>, and choose <strong>Structure</strong>. Name this structure <strong>HMI_PbLight</strong> and add two boolean members: <strong>bRun</strong> to represent the pushbutton command, and <strong>bState</strong> to represent the resulting status of the light.</p>



<p class="wp-block-paragraph">Next, navigate to <strong>POUs &gt; MAIN (PRG)</strong> and declare an instance of the HMI_PbLight struct along with any supporting variables. Add simple logic that drives <strong>bState</strong> based on the value of <strong>bRun</strong>, mimicking the behavior of a pushbutton controlling a status light. This keeps the PLC logic intentionally straightforward while clearly demonstrating the data flow between the PLC and HMI.</p>



<p class="wp-block-paragraph">With the code in place, activate the configuration and log in to the PLC. If you are running TwinCAT on a local host, be sure to execute the required .bat script before logging in. At this point, the PLC is ready, and the <strong>HMI_PbLight</strong> structure can be bound to the HMI elements and User Controls created in the previous sections.</p>



<h3 class="wp-block-heading" id="h-updating-nbsp-to-user-mode-runtime-nbsp-ads-nbsp-route">Updating&nbsp;to User Mode Runtime&nbsp;ADS&nbsp;Route</h3>



<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 size-full is-resized has-custom-border"><img decoding="async" width="812" height="439" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-19-e1777912208951.png" alt="Image showing and ADS (Automation Device Specification) configuration screen within the TwinCAT HMI Server Configuration." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44230" style="width:550px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-19-e1777912208951.png 812w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-19-e1777912208951-300x162.png 300w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-19-e1777912208951-768x415.png 768w" sizes="(max-width: 812px) 100vw, 812px" /></figure>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph">This final step ensures that the TwinCAT HMI Server is communicating with the correct runtime by updating the ADS route to point to the User Mode Runtime. Begin by opening the <strong>TwinCAT HMI Server configuration</strong> by going to <strong>TwinCAT HMI &gt; Windows &gt; TwinCAT Server Configuration</strong>. From there, navigate to <strong>ADS &gt; Runtimes &gt; AMSNetId</strong>. This setting defines which TwinCAT runtime the HMI will connect to for symbol access and data exchange.</p>



<p class="wp-block-paragraph">Verify that the <strong>AMSNetId</strong> is set to the <strong>AmsNetId</strong> of your User Mode runtime, if that is the runtime you are using.</p>
</div>
</div>



<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 size-full is-resized has-custom-border"><img decoding="async" width="578" height="151" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-20-e1777912405127.png" alt="Image of a configuration screen for industrial network communication showing AMS Net ID field, selectable IP address options, and a setting to allow read-only access for connected devices." class="has-border-color has-custom-light-gray-neutral-2-border-color wp-image-44231" style="width:550px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-20-e1777912405127.png 578w, https://static.dmcinfo.com/wp-content/uploads/2026/04/beckhoff-twincat-hmi-basic-project-set-up-image-20-e1777912405127-300x78.png 300w" sizes="(max-width: 578px) 100vw, 578px" /></figure>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow">
<p class="wp-block-paragraph">This is especially important when running TwinCAT locally or when multiple runtimes are present, as an incorrect AMSNetId will prevent the HMI from resolving PLC symbols and binding data correctly.</p>



<p class="wp-block-paragraph">Once the AMSNetId is confirmed, the HMI and PLC are fully aligned, allowing the User Controls and bindings configured in the previous sections to function as expected at runtime.</p>
</div>
</div>



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



<p class="wp-block-paragraph">This tutorial walked through the foundational steps required to build a simple, reusable TwinCAT HMI project, starting with PLC structure design and basic HMI bindings, then expanding into User Controls and runtime configuration. By introducing the <strong>HMI_PbLight</strong> struct and gradually abstracting symbol bindings into User Control parameters, we demonstrated how to move from a single hard-coded screen toward a scalable, modular HMI architecture. The use of events, visual logic blocks, and configurable parameters highlights how TwinCAT HMI enables powerful interaction design without requiring custom scripting.</p>



<p class="wp-block-paragraph" style="padding-bottom:var(--wp--preset--spacing--40)">By the end of this project, you should have a working HMI that connects cleanly to a PLC, supports multiple instances of a reusable control, and allows runtime configuration via simple UI elements such as a Combobox. These same concepts scale directly to larger applications, where consistency, maintainability, and development speed become critical. Whether you are building a small operator interface or a plant-wide visualization system, following these patterns will help you create HMIs that are flexible, readable, and easy to extend.</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/plc-programming/beckhoff-and-twincat-3-programming/" id="457">Beckhoff programming expertise</a> and 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/42316/beckhoff-twincat-hmi-project-setup-tutorial/">Getting Started with Beckhoff TwinCAT HMI: Simple Project Setup Tutorial</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Beckhoff TwinCAT 2 to TwinCAT 3 Conversion</title>
		<link>https://static.dmcinfo.com/blog/42538/twincat-2-to-twincat-3-conversion/</link>
		
		<dc:creator><![CDATA[Kristen Stubenazy]]></dc:creator>
		<pubDate>Mon, 20 Apr 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Beckhoff PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=42538</guid>

					<description><![CDATA[<p>TwinCAT 3 is Beckhoff’s flagship software suite for configuring and programming Beckhoff’s PC-based hardware and controllers. Introduced as a significant upgrade over TwinCAT 2, it offers a wide array of technology modules, debugging tools, and Visual Studio integration to make programming even easier. With the advances in TwinCAT 3 and the eventual discontinuation of TwinCAT [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/42538/twincat-2-to-twincat-3-conversion/">Beckhoff TwinCAT 2 to TwinCAT 3 Conversion</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">TwinCAT 3 is Beckhoff’s flagship software suite for configuring and programming Beckhoff’s PC-based hardware and controllers. Introduced as a significant upgrade over TwinCAT 2, it offers a wide array of technology modules, debugging tools, and Visual Studio integration to make programming even easier.</p>



<p class="wp-block-paragraph">With the advances in TwinCAT 3 and the eventual discontinuation of TwinCAT 2 support in the coming years, now is a great time to upgrade your TwinCAT 2 projects to TwinCAT 3. TwinCAT 2 requires a 32-bit operating system, and as of early 2026, most 32-bit operating systems are nearing end-of-support. Luckily, conversion is an easy process, and most conversions can be accomplished seamlessly with just a few clicks.</p>



<p class="wp-block-paragraph">This guide provides step-by-step instructions for upgrading your TwinCAT 2 Project to TwinCAT 3, including information on converting Safety and Motion projects.</p>



<h2 id="h-section-1-hardware-selection-considerations" class="wp-block-heading">Section 1: Hardware Selection / Considerations:</h2>



<ol class="wp-block-list">
<li>Take inventory of your controls hardware, including controllers, I/O, drives, and checking support/sales status. Beckhoff publishes a list of End-of-Life products along with successor products on their <a href="https://www.beckhoff.com/en-us/support/service-products/">Service Products page</a>.
<ul class="wp-block-list">
<li>Reach out to your local Beckhoff Sales Engineer for more personalized recommendations on product upgrade paths.</li>
</ul>
</li>



<li>Upgrade any legacy K-Bus I/O to EtherCAT, which is faster, more performant, and easier to maintain. Alternatively, consider replacing any K-Bus IO couplers with the <a href="https://www.beckhoff.com/en-us/products/i-o/ethercat-terminals/ek-ec1xxx-bk1xx0-ethercat-coupler/bk1120.html">BK1120</a>, which allows an upgrade to EtherCAT without re-terminating any I/O points.</li>



<li>Consider your safety system as part of the upgrade plan. Some TwinCAT 2 systems use the KL6904 Safety Controller, which is not programmable within TwinCAT 3 and will not be convertible to a TwinCAT 3 Project.
<ul class="wp-block-list">
<li>This should be replaced with a TwinSAFE Logic-capable EtherCAT terminal, like the <a href="https://www.beckhoff.com/en-us/products/automation/twinsafe/twinsafe-hardware/el6910.html" type="link" id="https://www.beckhoff.com/en-us/products/automation/twinsafe/twinsafe-hardware/el6910.html">EL6910</a>.</li>
</ul>
</li>
</ol>



<h3 id="h-what-you-ll-need" class="wp-block-heading">What You&#8217;ll Need:</h3>



<p class="wp-block-paragraph">If you are interested in converting an entire TC2 Project (PLC project and related Motion, IO, and System information), you will need the TC2 project’s .tsm/.wsm, .pro files, and any referenced libraries. Then follow the instructions in <a href="#h-section-2-twincat-project-conversion-system-motion-io-plc" type="internal" id="#h-section-2-twincat-project-conversion-system-motion-io-plc">Section 2</a>. </p>



<p class="wp-block-paragraph">If you only wish to convert a library or a PLC project by itself, you will only need the .pro or .lib file) and to follow the instructions in <a href="#h-section-3-convert-tc2-plc-code-libraries-to-tc3-section" type="internal" id="#h-section-3-convert-tc2-plc-code-libraries-to-tc3-section">Section 3</a>.</p>



<p class="wp-block-paragraph">Please note: Beckhoff provides some&nbsp;additional&nbsp;information on restrictions and warnings on TC2 Conversion projects on&nbsp;<a href="https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_plc_intro/2526152075.html&amp;id=">Infosys</a>. These can help resolve some compilation errors.&nbsp;</p>



<h2 id="h-section-2-twincat-project-conversion-system-motion-io-plc" class="wp-block-heading">Section 2: TwinCAT Project Conversion (System, Motion, IO, PLC):</h2>



<ol class="wp-block-list">
<li>Ensure that you have the .tsm and .pro files for the TwinCAT 2 Project
<ul class="wp-block-list">
<li>The TwinCAT 2 project must successfully compile before attempting the conversion.</li>



<li>If you have a .wsm file instead of .tsm, the file can be easily converted using TwinCAT System Manager by clicking “Save As…” and choosing the .tsm file format.</li>
</ul>
</li>



<li>Ensure that you have the .lib file for any custom libraries used in the Tc2 project available for conversion
<ul class="wp-block-list">
<li>Any missing libraries will need to be re-created or replaced</li>
</ul>
</li>



<li>If you are planning on using TwinCAT 3 4026, the conversion from TwinCAT 2 MUST occur in 4024 first. After conversion, the 4024 project can then be migrated to 4026.
<ul class="wp-block-list">
<li>This guide will be for converting using TwinCAT 3 4024 installed through the Full XAE Installer.</li>



<li>Doing the conversion using an Engineering PC with TwinCAT Package Manager may be possible with the 4024 Remote Manager, but for the smoothest process, use an Engineering PC with 4024 installed.</li>
</ul>
</li>



<li>Create a new XAE Shell project for the new TC3 Project</li>



<li>Right-click the XAE Project and select “Load Project from TwinCAT 2.XX Version …”
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/twincat-2-conversion.png" alt="TwinCAT 2 Conversion"></li>



<li>Note: By loading the project here, the .tsm project will also be converted.
<ul class="wp-block-list">
<li>If you want to convert only the PLC code (.pro file), that is detailed in section 3: <a href="#h-section-3-convert-tc2-plc-code-libraries-to-tc3-section" type="internal" id="#h-section-3-convert-tc2-plc-code-libraries-to-tc3-section">“Convert TC2 PLC Code / Libraries to TC3</a><strong>.</strong></li>
</ul>
</li>
</ul>
</li>



<li>In the pop-up window, select the .tsm file of the TwinCAT 2 Project
<ul class="wp-block-list">
<li>Reminder: If you have a .wsm file, this needs to be re-saved as a .tsm file in TwinCAT System Manager (Tc2 IDE)</li>



<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/twincat2-project.png" alt="TwinCAT 2 Project"></li>
</ul>
</li>



<li>Select OK in the confirmation pop-up
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/TcXaeShell.png" alt="TcXaeShell"></li>
</ul>
</li>



<li>XAE Shell will now begin converting the project</li>



<li>If there are any custom libraries in the TC2 Project, you will receive the following warning message that it cannot find certain libraries. Please press no.
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/twincat-plc-cloud.png" alt=""></li>



<li>Any libraries with available source code (.lib file) can be converted and added to the project later in the guide.</li>
</ul>
</li>



<li>A new pop-up will appear with a list of all missing libraries
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/twincat-plc-cloud-missing-libraries.png" alt="TwinCAT PLC Cloud missing libraries"></li>
</ul>
</li>



<li>During the conversion, there may be unrestored links. Press Yes to keep this information.
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/unrestorted-variables-links-twincat.png" alt="unrestored variables links twincat"></li>



<li>Later in the guide, we will go through this list to ensure no IO is unlinked.</li>
</ul>
</li>



<li>After this, information in SYSTEM, MOTION, PLC, Visu, and I/O should be populated from the converted project.
<ul class="wp-block-list">
<li>I recommend going through the project to make sure there are no missing files or IO that were missed in the conversion.</li>
</ul>
</li>



<li>Congratulations! Most of the project is now converted. Now, we just need to resolve any issues that came from the conversion.</li>



<li>If there were any external libraries in the TC2 Project that were not converted, we will add them now.
<ul class="wp-block-list">
<li>If no external libraries need to be converted, skip to <a href="#step-20-acnchor-link" type="internal" id="#step-20-acnchor-link">Step 20</a>.</li>
</ul>
</li>



<li id="step-15">Follow the instructions in <a href="#h-section-3-convert-tc2-plc-code-libraries-to-tc3-section" type="internal" id="#h-section-3-convert-tc2-plc-code-libraries-to-tc3-section">section 3</a> “Convert TC2 PLC Code / Libraries to TC3” below to convert the library. Once complete, return to this step.</li>



<li>After converting the external library, right-click the library’s .plcproj and click “Save As Library” or “Save as Library and Install…”
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/plc-ctrl-project.png" alt="PLC Ctrl Project"></li>
</ul>
</li>



<li>You may get a warning and be asked to fill in Library Information. If so, fill out the 3 bolded sections and click Save.
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/plc-library-information-twincat.png" alt="PLC Library Information TwinCAT"></li>
</ul>
</li>



<li>Try “Save as Library …” or “Save as Library and Install …” again
<ul class="wp-block-list">
<li>After this, the library should now be installed as TwinCat 3 library and can be added to our PLC project.</li>



<li>Example of the converted library below:</li>



<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/twincat-converted-library.png" alt="TwinCAT Converted Library"></li>
</ul>
</li>



<li>Once the library has been installed, we can delete the library’s PLC project from our solution.
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/library-plc-project.png" alt="Library PLC Project"></li>
</ul>
</li>



<li id="step-20-acnchor-link">Once all external libraries have been converted and installed, we can now perform some library management.
<ul class="wp-block-list">
<li>Some of the Beckhoff-provided libraries may be obsolete and should be replaced.</li>



<li>One common replacement needed is the TcMC library. This should be upgraded to the TcMC2 Library.
<ul class="wp-block-list">
<li>Beckhoff provides great documentation on what is needed for this upgrade in the <a href="https://infosys.beckhoff.com/english.php?content=../content/1033/tcplclibmc2/458356875.html&amp;id=">Infosys</a>.</li>
</ul>
</li>
</ul>
</li>



<li>This guide does not cover any hardware changes needed, but the IO tree will need to include any changes made to the hardware configuration.</li>



<li>After this, you can attempt to compile the code and work through any errors that may come up.</li>



<li>Once the code successfully compiles, your PLC Project should be complete!</li>



<li>Please check the Safety or Motion sections of this guide to set up those sides of the project.</li>



<li>Tips and Tricks:
<ul class="wp-block-list">
<li>All GVLs will come with attribute {attribute &#8216;Tc2GvlVarNames’} and all GVL tag references will not include the GVL’s namespace.
<ul class="wp-block-list">
<li>This can make the converted code unclear, as global variables may appear as local variables.</li>



<li>I recommend that you add the GVL namespace to all global variables in the converted code if possible.</li>



<li>More info on this attribute can be found on <a href="https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_plc_intro/3107783051.html&amp;id=" target="_blank" rel="noreferrer noopener">Infosys</a>.</li>
</ul>
</li>
</ul>
</li>
</ol>



<h2 id="h-section-3-convert-tc2-plc-code-libraries-to-tc3-section" class="wp-block-heading">Section 3: Convert TC2 PLC Code / Libraries to TC3 Section:</h2>



<p class="wp-block-paragraph">This section of the guide will cover how to convert a single PLC project or a library file to TwinCAT 3.</p>



<ol class="wp-block-list">
<li>Ensure that you have the .pro or .lib file that you wish to convert. Start with the .lib files.</li>



<li>Open the TwinCAT project that you wish to add the PLC project to.</li>



<li>Right-click the PLC Project node, and select “Add Existing Item…”
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/add-existing-item-to-plc.png" alt=""></li>
</ul>
</li>



<li>Then select either the .pro file if PLC project, or the .lib file if converting a library
<ul class="wp-block-list">
<li>The default selection in the file explorer will allow both file formats.</li>



<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/plc-project-file.png" alt="PLC project file"></li>
</ul>
</li>



<li>Once added, XAE Shell will convert the code to TC3, and add it as a separate .plcproj to the solution.
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/plc-ctrl.png" alt="PLC CTRL"></li>
</ul>
</li>



<li>Look through the converted project to ensure there are no errors or mis-conversion. This should be unlikely, as XAE Shell does a good job of converting.</li>



<li>If you are converting a library, you can now return to <a href="#step-15" type="internal" id="#step-15">Step 15</a> of the TwinCAT Project conversion section to continue with the System Configuration conversion.
<ul class="wp-block-list">
<li>If you are only converting PLC code, you are done!</li>
</ul>
</li>
</ol>



<p class="wp-block-paragraph">It is possible&nbsp;even if only converting the&nbsp;.pro&nbsp;file&nbsp;that&nbsp;when importing into&nbsp;TC3&nbsp;the system will ask about converting&nbsp;libraries. You should go back and convert libraries first, then use the installed library with the second&nbsp;option&nbsp;in the dialog to avoid issues.&nbsp;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="472" height="305" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/library-reference-conversion-1.png" alt="Library reference conversion" class="wp-image-43140" style="aspect-ratio:1.5476046088538509;width:459px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/04/library-reference-conversion-1.png 472w, https://static.dmcinfo.com/wp-content/uploads/2026/04/library-reference-conversion-1-300x194.png 300w" sizes="(max-width: 472px) 100vw, 472px" /></figure>



<h2 id="h-section-4-safety-twinsafe-projects" class="wp-block-heading">Section 4: Safety / TwinSAFE Projects:</h2>



<p class="wp-block-paragraph">Safety projects are not automatically converted when converting the .tsm file covered in Section 2, so we will need to manually import the project from TwinCAT 2.</p>



<p class="wp-block-paragraph">Note: If the TwinCAT 2 Project is using the KL6904 Controller, that will need to be replaced as it is not configurable through TwinCAT 3. To see a listing of acceptable terminals with both logic and output like the KL6904, see the <a href="https://www.beckhoff.com/en-en/products/i-o/ethercat-terminals/elx9xx-twinsafe/tabular-product-overview/">TwinSAFE product overview page</a>.</p>



<ol class="wp-block-list">
<li>Open the TSM file in TwinCAT System Manager and navigate to your IO Configuration.</li>



<li>Inside your IO configuration, identify your Safety Controllers
<ul class="wp-block-list">
<li>TwinCAT 2 Compatible safety controllers are:
<ul class="wp-block-list">
<li>EL6900</li>



<li>EL6930</li>



<li>KL6904 – see note above about TC3 compatibility</li>
</ul>
</li>
</ul>
</li>



<li>From your TSM file in TwinCAT 2, open your safety controller and click the “TwinSAFE Logic” Tab. Then click the “Export…” button and save the export as an XML file.
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/TwinSAFE-Logic.png" alt="TwinSAFE Logic"></li>
</ul>
</li>



<li>With the XML export, go to the Safety Node of the TwinCAT project and select “Add Existing Item…”
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/safety-node.png" alt=""></li>
</ul>
</li>



<li>In the pop-up, select the XML export of the Safety Project(s). Make sure to change the file format options to include XMLs.
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/twincat-safety-export.png" alt="TwinCAT Safety Export"></li>
</ul>
</li>



<li>In the pop-up, select your Safety Controller
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/twincat-safety-controller.png" alt="TwinCAT safety controller"></li>
</ul>
</li>



<li>Then restore all the links in the Safety Project
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/safety-project.png" alt="Safety Project"></li>



<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/twincat-physicial-channel.png" alt="TwinCAT physical channel"></li>



<li>Finished Example:</li>



<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/restore-displayed-links.png" alt="TwinCAT restore displayed links"></li>
</ul>
</li>



<li>With the safety project converted, double-check that all connections and TwinSAFE FBs are correct.</li>
</ol>



<h2 id="h-section-5-motion" class="wp-block-heading">Section 5: Motion</h2>



<p class="wp-block-paragraph">While the Motion tasks and axes are automatically converted by XAE Shell with the TSM configuration, the PLC control of the axes may need manual adjustments. This section of the guide&nbsp;covers how to re-link the Axes to the TcMC2 data types.</p>



<ol class="wp-block-list">
<li>If the TwinCAT 2 Project used TcMC, please follow the instructions in <a href="#step-20-acnchor-link" type="internal" id="#step-20-acnchor-link">Step 20</a> of the TwinCAT Project Conversion section regarding the PLC code changes recommended by Beckhoff.
<ul class="wp-block-list">
<li>The NCTOPLC and PLCTONC AXIS_REFs have been combined into a single AXIS_REF struct</li>



<li>Old: 
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/old-axis-ref.png" alt="Old AXIS_REF"></li>
</ul>
</li>



<li>New: 
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/new-axis-ref.png" alt="New AXIS REF"></li>
</ul>
</li>
</ul>
</li>



<li>Once completed with these changes, the AXIS_REF structs will need to be linked back to the axes.
<ul class="wp-block-list">
<li>Note: If you do not see the Axis when linking, try rebuilding your PLC Project.</li>



<li>Linking:
<ul class="wp-block-list">
<li><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2026/04/twincat-conversion.png" alt="TwinCAT 2 Conversion"></li>
</ul>
</li>
</ul>
</li>
</ol>



<p class="wp-block-paragraph">Congratulations, your TwinCAT 2 Project is now ready for a TwinCAT 3 PLC!</p>



<p class="wp-block-paragraph">You can follow our other guides: <a href="https://static.dmcinfo.com/blog/19695/getting-started-with-a-beckhoff-plc-part-one-setup/">Getting Started with a Beckhoff PLC</a> to continue with your PLC upgrade. </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>Planning a TwinCAT 2 to TwinCAT 3 Upgrade?</strong> See How DMC Can Help.</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 help upgrade TwinCAT 2 projects with TwinCAT 3, TwinSAFE, and next-generation EtherCAT hardware. Learn more about our <a href="https://static.dmcinfo.com/our-work/category/service/manufacturing-automation-and-intelligence/beckhoff-twincat/" data-type="work_category" data-id="1289">Beckhoff PLC</a> 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/42538/twincat-2-to-twincat-3-conversion/">Beckhoff TwinCAT 2 to TwinCAT 3 Conversion</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Beckhoff TwinCAT HMI &#8211; Tips and Tricks</title>
		<link>https://static.dmcinfo.com/blog/40448/beckhoff-twincat-hmi-tips-and-tricks/</link>
		
		<dc:creator><![CDATA[Owen Johnson]]></dc:creator>
		<pubDate>Fri, 09 Jan 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Beckhoff PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=40448</guid>

					<description><![CDATA[<p>There are several TwinCAT HMI ‘getting started’ resources out there – maybe you’ve found one and gotten started. But as you’re designing your HMI, you might be missing out on a few easy-to-miss things that are really nice to have in your toolbox. Interface and Editing You Can Select Multiple Controls and Change the Same [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/40448/beckhoff-twincat-hmi-tips-and-tricks/">Beckhoff TwinCAT HMI &#8211; Tips and Tricks</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">There are several TwinCAT HMI ‘getting started’ resources out there – maybe you’ve found one and gotten started. But as you’re designing your HMI, you might be missing out on a few easy-to-miss things that are really nice to have in your toolbox.</p>



<h2 id="h-interface-and-editing" class="wp-block-heading">Interface and Editing</h2>



<h3 id="h-you-can-select-multiple-controls-and-change-the-same-parameter-for-all-controls-at-once" class="wp-block-heading">You Can Select Multiple Controls and Change the Same Parameter for all Controls at Once</h3>



<p class="wp-block-paragraph">Have a bunch of items in a grid, each one with the same 5% margin from the left, and suddenly you decide 3% looks much nicer? No need to click through each one nor find and replace in the HTML source files! Just select all controls and change the parameter in the properties tab. The property you changed is now changed for every control you selected.</p>



<h3 id="h-the-document-outline-is-a-great-help-when-working-on-a-screen" class="wp-block-heading">The Document Outline is a Great Help When Working on a Screen</h3>



<p class="wp-block-paragraph">Having trouble selecting a control, or is a control lost behind another? As great as the main WYSIWYG (what-you-see-is-what-you-get) editor screen is, the Document Outline provides greater visibility into nested controls (when using Grids and Containers) and invisible controls. I almost always have this pinned to my XAE layouts when developing with <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/hmi-and-scada-programming/twincat-3-hmi-programming/">TwinCAT HMI</a>.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="549" height="202" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/twincat-hmi.png" alt="TwinCAT HMI" class="wp-image-40449" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/twincat-hmi.png 549w, https://static.dmcinfo.com/wp-content/uploads/2025/12/twincat-hmi-300x110.png 300w" sizes="(max-width: 549px) 100vw, 549px" /></figure>



<h2 id="h-symbols-and-parameters" class="wp-block-heading">Symbols and Parameters</h2>



<h3 id="h-symbol-and-related-terms-to-know-when-searching-infosys" class="wp-block-heading">&#8220;Symbol&#8221; and Related Terms to Know When Searching Infosys</h3>



<p class="wp-block-paragraph"><em>Symbol</em> just refers to a tag or variable, in TwinCAT HMI. There are variations:</p>



<ul class="wp-block-list">
<li><em>Server Symbols</em> are symbols saved in the TwinCAT HMI server. Most notably <em>Mapped Symbols</em> are a type of server symbol which comes from the PLC.</li>



<li><em>Internal Symbol</em> are symbols which are limited to a single browser instance.</li>



<li><em>Symbol Expression</em> refers to the text</li>
</ul>



<h3 id="h-you-can-double-click-on-a-symbol-to-pop-up-a-nifty-binding-details-window" class="wp-block-heading">You Can Double Click on a Symbol to Pop Up a Nifty Binding Details Window</h3>



<p class="wp-block-paragraph">When you have a symbol in a data binding or function binding, you can double click on it to pop up a ‘Edit Binding’ window. This can show you some details on modes and settings and can also be used to quickly edit the symbol name. In the screenshot below, I might have a similar ‘IsAlarmLowEnabled’, and I can switch this symbol binding to that symbol more quickly than reopening the Create Data Binding window</p>



<figure class="wp-block-image size-full"><img decoding="async" width="358" height="362" src="https://static.dmcinfo.com/wp-content/uploads/2025/12/binding-window.png" alt="creating binding" class="wp-image-40450" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/12/binding-window.png 358w, https://static.dmcinfo.com/wp-content/uploads/2025/12/binding-window-297x300.png 297w" sizes="(max-width: 358px) 100vw, 358px" /></figure>



<h3 id="h-when-making-a-parameter-for-a-user-control-comments-are-very-underrated" class="wp-block-heading">When Making a Parameter for a User Control, Comments are Very Underrated</h3>



<p class="wp-block-paragraph">User controls are great for creating reusable custom controls, but they’re even better when you comment any parameters you make. Now, not only can developers that use your control (including future you, probably) hover to see your comment, they’ll also be able to hover to see the datatype!</p>



<h2 id="h-function-bindings-and-scripting" class="wp-block-heading">Function Bindings and Scripting</h2>



<h3 id="h-function-bindings-are-basically-javascript" class="wp-block-heading">Function Bindings are Basically Javascript</h3>



<p class="wp-block-paragraph">Consider a function binding as a continually evaluating single JS expression where symbol expressions get evaluated as their value and the result of the JS expression is what the parameter sees.</p>



<p class="wp-block-paragraph">Remember that the function binding accepts and evaluates <em>only a single JS expression</em>. <strong>With that in mind…</strong></p>



<h3 id="h-iife-s-are-incredibly-useful-when-you-want-multiple-expressions-in-a-function-binding-but-don-t-want-to-write-a-full-twincat-hmi-function" class="wp-block-heading">“IIFE”s are incredibly useful when you want multiple expressions in a function binding but don’t want to write a full TwinCAT HMI function</h3>



<p class="wp-block-paragraph">Custom Javascript or Typescript functions in TwinCAT HMI are an excellent tool, <em>especially</em> when you will need to run the same snippet in multiple places. But sometimes you want to have a few expressions together in a one-off function binding. Ordinarily, one can’t do the following in a function binding:</p>



<p class="wp-block-paragraph">let a = 1;</p>



<p class="wp-block-paragraph">let b = 2;</p>



<p class="wp-block-paragraph">return(a+b);</p>



<p class="wp-block-paragraph">Well, you <em>could</em> write that in a function binding, but you won’t get anything useful back. Instead, you can write this:</p>



<p class="wp-block-paragraph">(function (){</p>



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



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



<p class="wp-block-paragraph">&nbsp; return(a+b);</p>



<p class="wp-block-paragraph">})();</p>



<p class="wp-block-paragraph">I’ve grown to really love TwinCAT HMI for its power and extensibility, for industrial HMI applications from simple to complex. I hope these tips are useful as you create your design. </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>Create user-friendly operator interfaces with support from DMC&#8217;s Beckhoff experts.</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">Discover how DMC helps manufacturers build scalable operator interfaces using <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/hmi-and-scada-programming/twincat-3-hmi-programming/" data-type="page" data-id="521">Beckhoff TwinCAT HMI</a>. Explore our expertise in <a href="https://static.dmcinfo.com/our-work/category/service/manufacturing-automation-and-intelligence/hmi-and-scada/" data-type="work_category" data-id="695">HMI development</a> and <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/" data-type="page" data-id="441">PLC integration</a> for your <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" data-type="page" data-id="420">Automation</a> solutions.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/40448/beckhoff-twincat-hmi-tips-and-tricks/">Beckhoff TwinCAT HMI &#8211; Tips and Tricks</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Getting Started with Beckhoff AMP8000 Series Motors in TwinSAFE</title>
		<link>https://static.dmcinfo.com/blog/36150/getting-started-with-beckhoff-amp8000-series-motors-in-twinsafe/</link>
		
		<dc:creator><![CDATA[Kristen Stubenazy]]></dc:creator>
		<pubDate>Fri, 11 Jul 2025 15:51:42 +0000</pubDate>
				<category><![CDATA[Beckhoff PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=36150</guid>

					<description><![CDATA[<p>This walkthrough details how to configure safety for multiple Beckhoff AMP8000 series drives, but can be used for a single drive or AX8000 series drives as well. This only covers a simple STO application with the intention of the PLC handling reset of safety, drives, and error acknowledgment programmatically. We will be using the information [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/36150/getting-started-with-beckhoff-amp8000-series-motors-in-twinsafe/">Getting Started with Beckhoff AMP8000 Series Motors in TwinSAFE</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">This walkthrough details how to configure safety for multiple Beckhoff AMP8000 series drives, but can be used for a single drive or AX8000 series drives as well. This only covers a simple STO application with the intention of the PLC handling reset of safety, drives, and error acknowledgment programmatically.</p>



<p class="wp-block-paragraph">We will be using the information from <a href="https://www.youtube.com/watch?v=AWgjPmUjJ5I" target="_blank" rel="noreferrer noopener">TwinSAFE Tutorial 11: Safe Addressing for AMP and AMI</a>, and <a href="https://youtu.be/UG8Xzj9f6Sg" target="_blank" rel="noreferrer noopener">TwinSAFE Tutorial 1: SafeMotion Wizard – Creating and configuring a Safe Motion project with SLS</a>.</p>



<h2 id="h-load-in-io" class="wp-block-heading">Load In IO</h2>



<p class="wp-block-paragraph">The drives and safety IO will need to have been scanned or added into your IO tree and &nbsp;axes created in a MOTION project. After downloading the Drive Manager 2 (DM2) software from Beckhoff, a project can be added to the TwinCAT solution. See Beckhoff’s <a href="https://download.beckhoff.com/download/document/motion/tc3_drive_manager_2_en.pdf" target="_blank" rel="noreferrer noopener">Quick commissioning guide | EN TE5950 TC3 Drive Manager 2</a> for more information on setting up DM2.</p>



<p class="wp-block-paragraph">With the system still in config mode, a new DM2 project can be created by right-clicking on the solution and selecting ‘Add’. Then, in the project tree, you can select the new project, and it will search for drives. In the popup, you should see every drive currently connected to the PLC.</p>



<p class="wp-block-paragraph">In this example, DM2 was able to automatically find all of these drives shown below. You can click “Check all” at the top for both options to enable automatic scanning of the motors and have &#8216;Scan motor in Pre-Op&#8217; selection.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><a id="_msocom_1"></a></p>



<figure class="wp-block-image size-full"><img decoding="async" width="780" height="354" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/motor-scan.png" alt="motor scan" class="wp-image-36153" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/motor-scan.png 780w, https://static.dmcinfo.com/wp-content/uploads/2025/07/motor-scan-300x136.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/07/motor-scan-768x349.png 768w" sizes="(max-width: 780px) 100vw, 780px" /></figure>



<p class="wp-block-paragraph">The other setting shown will be system specific, follow the specs for your motors. Any additional gear box ratio and settings for the motor should be applied.</p>



<p class="wp-block-paragraph">Then, make sure you Activate Config to push configuration settings and scaling from the DM2 project to the motors.</p>



<h2 id="h-create-and-expose-plc-variables" class="wp-block-heading">Create and Expose PLC Variables</h2>



<p class="wp-block-paragraph">Create a PLC project if you haven’t already. Our safety program will require input from the PLC. In either a global variable list (GVL) or a program (PRG), make your four output address variables.</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">Structured Text</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>OUT_bSafetyResetSignal AT %Q*: BOOL;
OUT_bSafetyRun AT %Q*: BOOL;
OUT_bSafetyErrorAck AT %Q*: BOOL;
OUT_bSafetyDriveErrorAck AT %Q*: BOOL;</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: #9CDCFE">OUT_bSafetyResetSignal</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">AT</span><span style="color: #D4D4D4"> %</span><span style="color: #4FC1FF">Q</span><span style="color: #D4D4D4">*: </span><span style="color: #4FC1FF">BOOL</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #9CDCFE">OUT_bSafetyRun</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">AT</span><span style="color: #D4D4D4"> %</span><span style="color: #4FC1FF">Q</span><span style="color: #D4D4D4">*: </span><span style="color: #4FC1FF">BOOL</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #9CDCFE">OUT_bSafetyErrorAck</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">AT</span><span style="color: #D4D4D4"> %</span><span style="color: #4FC1FF">Q</span><span style="color: #D4D4D4">*: </span><span style="color: #4FC1FF">BOOL</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #9CDCFE">OUT_bSafetyDriveErrorAck</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">AT</span><span style="color: #D4D4D4"> %</span><span style="color: #4FC1FF">Q</span><span style="color: #D4D4D4">*: </span><span style="color: #4FC1FF">BOOL</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p class="wp-block-paragraph">Build, so that the variables generate in the instance of the PLC project and can later be used for linking.</p>



<p class="wp-block-paragraph">Every TwinSAFE program for an EL6910 or newer logics is required to have &#8220;RUN&#8221; and &#8220;ERRACK&#8221; signals linked to standard signals, which we are calling OUT_bSafetyRun and OUT_bSafetyErrorAck, as error acknowledgement is not automatic in TwinSAFE. Without these, the TwinSAFE Group our function blocks are in will not execute. Additionally, we have created a reset signal (OUT_bSafetyResetSignal) that we can use in the PLC to reset our function blocks when specific conditions are met. This could be from an external push button, an HMI screen, or some other code condition.</p>



<p class="wp-block-paragraph">Lastly, specific to the fact that we are making a safety program for Beckhoff Motors with embedded safety cards, we have a separate error acknowledgment signal (OUT_bSafetyDriveErrorAck) for the drives. This is because many types of drives require explicit error acknowledgement, and it may be that this needs to be distinct from error acknowledgment of the entire TwinSAFE group. The operating manual for your specific drive&#8217;s safety card is the best reference. </p>



<h2 id="h-creating-the-standard-el6910-safety-project" class="wp-block-heading">Creating the Standard EL6910 Safety Project </h2>



<p class="wp-block-paragraph">Click the blue cog icon in the top left of the TwinCAT toolbar to swap the system back into config mode and select yes on the popup to activate free run. This will allow for proper scanning of terminals.</p>



<p class="wp-block-paragraph">Now, a standard TwinSAFE project can be created by right clicking on the safety node and selecting ‘Add New Item’. In the window, select “TwinCAT Safety Project Preconfigured Inputs” to create a project with preconfigured inputs.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="344" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/creating-standard-EL6910-safety-project.png" alt="EL6910 Safety project " class="wp-image-36155" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/creating-standard-EL6910-safety-project.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/creating-standard-EL6910-safety-project-300x165.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">In the project’s Target System, select the terminal you will use as your safety controller. For this example, here is the relevant safety IO.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="188" height="245" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/safety-io.png" alt="safety IO" class="wp-image-36161"/></figure>



<p class="wp-block-paragraph">We have an EtherCAT coupler, a power supply terminal, a safety digital input/output card, a standard digital output card, a standard digital input card, a dedicated safety controller card, and a license key terminal followed by a bus end cap. For more information about each terminal, see <a href="https://www.beckhoff.com/en-us/products/i-o/ethercat-terminals/tabular-product-overview/" target="_blank" rel="noreferrer noopener">Beckhoff’s EtherCAT terminals overview</a>.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="231" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/solution-explorer.png" alt="solution explorer" class="wp-image-36165" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/solution-explorer.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/solution-explorer-300x111.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">After selecting the Target system from the drop down, you need to ensure the Safe Address matches the hardware address for the terminal. This example uses an EL6910, so the hardware address was set via the dipswitch on the physical terminal and, when scanned in, we see it reads the number expected in the hardware address field.</p>



<p class="wp-block-paragraph">NOTE: If you forgot to set the hardware address on any of your safety terminals (EK1914, EL2911, EL6910, or any ELx9xxx series terminals), please pause now and safely power down your system so that the physical terminals can be accessed. Read the operating manual for each terminal for information on how to set the hardware address. Remember, each address must be unique within the network and 0 is not a valid TwinSAFE address.</p>



<p class="wp-block-paragraph">To make the Safe Address match the hardware address, select the green reload button next to the hardware address box to make sure the number in the field is correct, and then the green arrow button to push the number to the safe address field.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="424" height="333" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-safe-address.png" alt="safe motion safe address" class="wp-image-36166" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-safe-address.png 424w, https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-safe-address-300x236.png 300w" sizes="(max-width: 424px) 100vw, 424px" /></figure>



<p class="wp-block-paragraph">Additionally, for this project we are going to select the two checkmarks for Connection Inputs/Outputs for visible traceability. This allows for an exact interpretation of the links.</p>



<p class="wp-block-paragraph">‘Save-All’ with CTRL+SHIFT+S or via the top menu bar before leaving this page.</p>



<h3 id="h-add-relevant-alias-devices" class="wp-block-heading">Add Relevant Alias Devices</h3>



<p class="wp-block-paragraph">With our safety controller configured to hold a project, you can now import in your PLC variables, and any additional safety terminals. Importantly, you do not want to add any of the drives to this safety project. They will instead be added via the safe motion wizard later.</p>



<p class="wp-block-paragraph">To do this, right-click on our newly created safety project’s Alias Devices folder. From here, you can click on New Item and make both of the additional digital Inputs. You should name both of them appropriately. Then, you can import any safety terminals you will use in the safety project from your IO.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="237" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/io-configuration.png" alt="io configuration" class="wp-image-36167" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/io-configuration.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/io-configuration-300x114.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">As shown above, two of the inputs we need were created already by choosing to make a preconfigured safety project. Since we already created the PLC variables we need to link to, we can do that as well. For each alias device created, open its page and click the:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="37" height="37" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/add-alias-devices-icon-1.png" alt="" class="wp-image-36616"/></figure>



<p class="wp-block-paragraph">symbol to link each to its corresponding PLC variable. </p>



<p class="wp-block-paragraph">Now, the blocks inside the standard safety project can be made.</p>



<h3 id="h-write-the-sal" class="wp-block-heading">Write the .SAL</h3>



<p class="wp-block-paragraph">First, you add a safeEStop and safeAnd block. This is for our single dual channel EStop. Then, create variables that match those below. It is important that this layout of this is not deviated from for reasons discussed below.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="297" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/estop.png" alt="estop" class="wp-image-36168" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/estop.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/estop-300x143.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">bPLCRestart and bPLCDriveErrorAck will be the two additional standard digital input variables we created. In order to have the drive error acknowledgment signal properly reset the entire safety system, it must be the first input on the safeAnd block as it is a standard input. Beckhoff has documentation on <a href="https://download.beckhoff.com/download/Document/automation/twinsafe/twinsafe-logic-fb_en.pdf" target="_blank" rel="noreferrer noopener">TwinSAFE Logic and Function Blocks</a> if you want to learn more.</p>



<p class="wp-block-paragraph">bChannelA and bChannelB represent both channels of the E-Stop, and will be physically wired through the EL2911. By clicking on the EStopIn1 port you can open the properties tab and change the channel interface from Single-Channel Both Activated to Two-Channel and set a discrepancy time.</p>



<p class="wp-block-paragraph">For now, we will not do the Variable Mapping as there is more to add in. Save All and then Verify the project. Errors are expected and can be ignored for now.</p>



<h2 id="h-safe-addressing-for-amp-and-ami" class="wp-block-heading">Safe Addressing for AMP and AMI</h2>



<p class="wp-block-paragraph">Beckhoff AMP and AMI drives have internal TwinSAFE cards that like their physical terminal counterparts, also require unique safe addresses. These drives do not have physical hardware switches though and must be set a different way. AX8xxx drives do have physical hardware switches to set and this section can be skipped for such hardware.</p>



<p class="wp-block-paragraph">With the system in config mode, and free run activated, navigate to the TwinSAFE toolbar. If you do not have this toolbar added, you can do so from right-clicking in the toolbar area and clicking to add TwinCAT Safety, or under View on the menu bar, View&gt;Toolbars&gt;TwinCAT Safety.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="345" height="80" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/download-safe-address.png" alt="download safe address" class="wp-image-36170" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/download-safe-address.png 345w, https://static.dmcinfo.com/wp-content/uploads/2025/07/download-safe-address-300x70.png 300w" sizes="(max-width: 345px) 100vw, 345px" /></figure>



<p class="wp-block-paragraph">Click ‘Download Safe Address’. In the popup, select all the drives you need to set the safe address of.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="296" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/choose-safety-device.png" alt="choose safety device" class="wp-image-36171" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/choose-safety-device.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/choose-safety-device-300x142.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">Click ’Next‘. Now you need to assign &nbsp;a unique safe address within the network for each drive. Remember, address 0 is not a valid TwinSAFE address. In this example, the Terminal number was arbitrarily decided to be made the drive’s address. When finished, click Next.</p>



<p class="wp-block-paragraph">Input the default TwinSAFE username (Administrator) and password (TwinSAFE) to the window and select all the devices to download the safe addresses.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="306" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/download-safe-address-on-devices.png" alt="download safe address on devices" class="wp-image-36172" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/download-safe-address-on-devices.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/download-safe-address-on-devices-300x147.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">Read through and finish verifying you work, closing the window with the ‘Finish’ button when you are done.</p>



<p class="wp-block-paragraph">Now, you need to power cycle your system (specifically, the drives) so that upon system startup, the drives will load the correct FSOE address.</p>



<p class="wp-block-paragraph">To check and make sure the address was set, in the IO tree navigate to any drive and go to the CoE &#8211; Online tab. Click Update All to refresh the information there. Scroll down until you see Safe Address and expand it. By default, the FSOE address was 1, it should now be what you set it to.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="212" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/io-tree-navigation.png" alt="io tree navigation" class="wp-image-36173" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/io-tree-navigation.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/io-tree-navigation-300x102.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">In this picture, we can see the FSOE was set to 4</p>



<h2 id="h-create-safe-motion-wizard-safety-project" class="wp-block-heading">Create Safe Motion Wizard Safety Project</h2>



<p class="wp-block-paragraph">If you have not followed the above steps for Safe Addressing <strong>AND</strong> powered cycled your motors for AMP or AMI systems, do not continue.</p>



<p class="wp-block-paragraph">Now that you have your standard safety project and safe addresses on your drives, you can run the Beckhoff TwinSAFE Motion Wizard. This requires &gt;=v1.3.0 of the Safety Editor. Start the wizard from the drop-down option under TwinSAFE&gt;Wizards&gt;Start Safe Motion Wizard….</p>



<figure class="wp-block-image size-full"><img decoding="async" width="596" height="624" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/beckhoff-twinsafe-motion-wizard.png" alt="beckhoff twinsafe motion wizard" class="wp-image-36174" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/beckhoff-twinsafe-motion-wizard.png 596w, https://static.dmcinfo.com/wp-content/uploads/2025/07/beckhoff-twinsafe-motion-wizard-287x300.png 287w" sizes="(max-width: 596px) 100vw, 596px" /></figure>



<p class="wp-block-paragraph">Then, in the popup that opens, select your drives under Target Type &nbsp;if they do not automatically populate. Check all of the drives as the project targets.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="371" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard.png" alt="safe motion wizard" class="wp-image-36175" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-300x178.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">Click ‘Next’. For the safety feedbacks, on the AMP8xxxx system there is only the default encoder option available for all drives, and only on channel A. Choose the option appropriate for your hardware.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="329" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safety.png" alt="safe motion wizard safety" class="wp-image-36176" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safety.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safety-300x158.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">An AX8xxx system might have options for channel A and B, as well as options on what encoder can be selected on each. If only using one channel on AX8xxxx systems, select No Safety Encoder for the unused channel.</p>



<p class="wp-block-paragraph">Click ‘Next’. For selecting safety function(s), we only desire STO functionality and will therefore touch nothing. This is auto-selected for all of our drives.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="354" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safety-function.png" alt="safe motion wizard safety function" class="wp-image-36177" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safety-function.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safety-function-300x170.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">Click ‘Next’. The project can be given a name on the configuration page. We will call it Safe Motion.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="351" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/configure-twinsafe-projects.png" alt="configure twinsafe projects" class="wp-image-36178" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/configure-twinsafe-projects.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/configure-twinsafe-projects-300x169.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">Click ‘Next’. On the assignment step, click on the “…” button to select the drives. This will create the FSOE connections in the standard safety project to allow communication between it and the safe motion project.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="236" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/assignment-of-master-target-logics.png" alt="assignment of master targets logics" class="wp-image-36180" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/assignment-of-master-target-logics.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/assignment-of-master-target-logics-300x113.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">Click ‘Next’. For the Safe Address page, a few incorrect states can be noted. As the system should be connected, you should not see the red boxes. The wizard should automatically load in the correct TwinSAFE address from the drives.</p>



<p class="wp-block-paragraph">If this is being performed offline, manually putting the FSOE addresses here would suffice.</p>



<p class="wp-block-paragraph">Troubleshooting Note: If addresses show up as zero, and we have communication to the drive under the EtherCAT master (free run turned on), it is possible that the safe addresses were not set properly either via safe addressing download or dipswitch. Cancel the wizard and perform necessary checks, do not try and continue with an FSOE address of zero on any device.</p>



<p class="wp-block-paragraph">The following is incorrect:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="355" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safe-address-selection.png" alt="safe motion wizard safe address selection incorrect" class="wp-image-36181" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safe-address-selection.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safe-address-selection-300x171.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">This is correct:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="304" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safe-address-selection-correct.png" alt="safe motion wizard safe address selection correct" class="wp-image-36182" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safe-address-selection-correct.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/safe-motion-wizard-safe-address-selection-correct-300x146.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">Click ‘Next’. Read and acknowledge the safety warning and exit the wizard by clicking the ‘Finish’ button.</p>



<p class="wp-block-paragraph">There should be a popup that the safe motion wizard project was created successfully, and the master project was updated successfully.</p>



<h2 id="h-finishing-the-standard-el6910-safety-project" class="wp-block-heading">Finishing the Standard EL6910 Safety Project</h2>



<p class="wp-block-paragraph">As promised, we now return to the standard safety project for variable mapping.</p>



<p class="wp-block-paragraph">In the standard safety project we created before, you should now see new custom FSOE connections for each of the drives. This is why we did not manually add the drives to this project earlier.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="306" height="93" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/connection-to-drive.png" alt="connection to drive safe motion wizard" class="wp-image-36185" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/connection-to-drive.png 306w, https://static.dmcinfo.com/wp-content/uploads/2025/07/connection-to-drive-300x91.png 300w" sizes="(max-width: 306px) 100vw, 306px" /></figure>



<p class="wp-block-paragraph">Open up the .SAL and click on the bottom tab for Variable Mapping. The following picture shows all the mappings with explanations of each piece to follow.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="320" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/variable-mapping.png" alt="variable mapping " class="wp-image-36189" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/variable-mapping.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/variable-mapping-300x154.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">The first two variables are the standard I/O variables from the PLC defined by the preconfigured project. They should already be mapped for you.</p>



<p class="wp-block-paragraph">Next, the bPLCRestart signal to our safeEStop block is mapped to the corresponding alias device digital input created earlier. As previously mentioned, this allows for the PLC to issue a signal for restart of the safeEstop block and ensuing error acknowledgement, presumably after an EStop press.</p>



<p class="wp-block-paragraph">bChannelA and bChannelB are the two inputs from our physical EStop, run through the EL2911 safety terminal and activate our safeEStop block.</p>



<p class="wp-block-paragraph">The EStopOut signal from the safeEStop block is mapped to a multitude of devices. Notably, both &nbsp;ChA STO and SS1 bits for each drive. You can hold down CTRL+Click to select a multitude of variables. In addition to the drives, another standard variable was created to see the EStop signal status in the PLC (not necessary for functionality), and the signal was mapped to the coupler (also not necessary). This was done for the ability to add other functionality desired later.</p>



<p class="wp-block-paragraph">The safeAnd block then takes in the EStop signal, expected to be high, with drive error acknowledgment from the PLC. This lets the PLC acknowledge drive errors and if the EStop has been reset since it was last pressed, the bSafetyErrorAck then pushes the error acknowledgment to the drive. CTRL+Click to select all the error acks on each drive.</p>



<p class="wp-block-paragraph">Save-All when done.</p>



<h2 id="h-finishing-the-safe-motion-wizard-project" class="wp-block-heading">Finishing the Safe Motion Wizard Project</h2>



<p class="wp-block-paragraph">Looking at the newly created safe motion wizard project, there is nothing in the SALs we need to touch as the wizard handles it all. For this example, since we have multiple AMP8xxx series drives, we need to do multisettings. If you only had one drive, this part is not necessary, and you can skip to the last section.</p>



<h3 id="h-multi-settings" class="wp-block-heading">Multi-Settings</h3>



<p class="wp-block-paragraph">In the safe motion wizard project, there is a last bit of configuration to be done before everything fits nicely together. If we open the Multi-settings.sms, we see all the drives we previously added. If we horizontally scroll to the right, we can see that Run and Err_Ack don’t have all the same links as the first motor.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="230" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/multi-settings-safe-motion-wizard.png" alt="multi settings safe motion wizard" class="wp-image-36191" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/multi-settings-safe-motion-wizard.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/multi-settings-safe-motion-wizard-300x111.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">You need to click the “…” on each and add the run and err ack links. Then it should look like this when it is finished.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="213" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/multi-settings.png" alt="multi settings safe motion wizard" class="wp-image-36193" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/multi-settings.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/multi-settings-300x102.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<h2 id="h-completing-and-downloading" class="wp-block-heading">Completing and Downloading</h2>



<p class="wp-block-paragraph">With the projects complete, you can now verify the main project and then perform a multi-download.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="202" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/multi-download-safe-motion-wizard.png" alt="multi download safe motion wizard" class="wp-image-36194" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/multi-download-safe-motion-wizard.png 624w, https://static.dmcinfo.com/wp-content/uploads/2025/07/multi-download-safe-motion-wizard-300x97.png 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">Now activate the configuration.</p>



<p class="wp-block-paragraph">Using the login feature on the PLC, you can now toggle the ErrAck and Run signals. You will now be able to move the motors via the MOTION project, or Drive Manager 2.</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>Accelerate Your Beckhoff Automation Projects</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">From TwinSAFE configuration and Safe Motion setup to advanced motion control systems, See how our <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" id="420">Automation</a> team helps manufacturers deploy safe and scalable <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/motion-control-engineering-and-servo-systems/beckhoff-motion-control-programming/" data-type="page" data-id="491">Beckhoff</a> solutions.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/36150/getting-started-with-beckhoff-amp8000-series-motors-in-twinsafe/">Getting Started with Beckhoff AMP8000 Series Motors in TwinSAFE</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Beckhoff XTS Part 7: Customizing Logic</title>
		<link>https://static.dmcinfo.com/blog/15346/beckhoff-xts-part-7-customizing-logic/</link>
		
		<dc:creator><![CDATA[Carter Silvey]]></dc:creator>
		<pubDate>Thu, 12 Jun 2025 14:55:56 +0000</pubDate>
				<category><![CDATA[Beckhoff PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/15346/beckhoff-xts-part-7-customizing-logic/</guid>

					<description><![CDATA[<p>In previous entries of this blog series, we went over the Mover, Station, and PositionTrigger function blocks. Now that we understand these function blocks better, let&#8217;s use them to write our own Beckhoff XTS custom logic. This blog will continue to use the Beckhoff XTS_Base GitHub and the large XTS starter kit.&#160; Beckhoff XTS Series [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/15346/beckhoff-xts-part-7-customizing-logic/">Beckhoff XTS Part 7: Customizing Logic</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In previous entries of this blog series, we went over the <a href="https://static.dmcinfo.com/blog/15357/beckhoff-xts-part-4-movers/">Mover</a>, <a href="https://static.dmcinfo.com/blog/15354/beckhoff-xts-part-5-stations/">Station</a>, and <a href="https://static.dmcinfo.com/blog/15350/beckhoff-xts-part-6-position-triggers/">PositionTrigger</a> function blocks. Now that we understand these function blocks better, let&#8217;s use them to write our own Beckhoff XTS custom logic.</p>



<p class="wp-block-paragraph">This blog will continue to use the <a href="https://github.com/Beckhoff-USA-Community/XTS_Base/tree/master">Beckhoff XTS_Base GitHub</a> and the large <a href="https://www.beckhoff.com/nl-be/products/motion/xts-linear-product-transport/xts-starter-kits/at2000-1500-0170.html">XTS starter kit</a>.&nbsp;</p>



<h2 id="h-beckhoff-xts-series" class="wp-block-heading">Beckhoff XTS Series</h2>



<ul class="wp-block-list">
<li><a href="https://static.dmcinfo.com/blog/15666/beckhoff-xts-part-1-downloads-and-starter-project/">Part 1 &#8211; Downloads and Starter Project</a></li>



<li><a href="https://static.dmcinfo.com/blog/15650/beckhoff-xts-part-2-setting-up-a-physical-xts-system/">Part 2 &#8211;&nbsp;Setting Up a Physical XTS System</a></li>



<li><a href="https://static.dmcinfo.com/blog/15598/beckhoff-xts-part-3-simulation-and-plc-logic/">Part 3 &#8211; Simulation and PLC Logic</a></li>



<li><a href="https://static.dmcinfo.com/blog/15357/beckhoff-xts-part-4-movers/">Part 4 &#8211; Movers</a></li>



<li><a href="https://static.dmcinfo.com/blog/15354/beckhoff-xts-part-5-stations/">Part 5 &#8211; Stations</a></li>



<li><a href="https://static.dmcinfo.com/blog/15350/beckhoff-xts-part-6-position-triggers/">Part 6 &#8211; Position Triggers</a></li>
</ul>



<h2 id="h-customizing-the-logic" class="wp-block-heading">Customizing the Logic</h2>



<p class="wp-block-paragraph">Let’s update this logic to customize our system a bit more. For my system, I’m going to have stations and position triggers at the following places:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="335" src="https://static.dmcinfo.com/wp-content/uploads/2025/06/customizing-logic-image1.png.webp" alt="customizing logic" class="wp-image-36425" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/06/customizing-logic-image1.png.webp 624w, https://static.dmcinfo.com/wp-content/uploads/2025/06/customizing-logic-image1.png-300x161.webp 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<h3 id="h-update-the-station-and-position-trigger-positions" class="wp-block-heading">Update the Station and Position Trigger Positions</h3>



<p class="wp-block-paragraph">Remove the existing station and position trigger definitions on lines 108-117 and replace it with the following:<br><br>// Initialize station positions<br>Station[0].Position := 5;<br>Station[1].Position := 3200;<br>Station[2].Position := 3300;<br>Station[3].Position := 3400;<br>Station[4].Position := 3500;<br><br>PositionTrigger[0].Position := 1500;<br>PositionTrigger[1].Position := 2000;<br></p>



<p class="wp-block-paragraph">This will define the stations and position triggers as shown above.</p>



<h3 id="h-updating-the-station-and-position-trigger-logic" class="wp-block-heading">Updating the Station and Position Trigger Logic</h3>



<p class="wp-block-paragraph">Next, we need to update the logic of these stations and position triggers to get them to behave as we want. For this application, let’s have the mover run at high velocity across the top rail, then go down to the low velocity around the bend. Once it clears the bend, it can go back up to the medium velocity until it reaches the next station. Once we have a mover in each of the four bottom left stations, send them all back to station 0. Replacing lines 210-265 with the following code will do that:<br><br>// Station 0 Logic<br>IF Station[0].MoverInPosition THEN<br>&nbsp;&nbsp; &nbsp;StationTimer[0](IN := TRUE, PT := T#1000MS);<br>&nbsp;&nbsp; &nbsp;IF StationTimer[0].Q THEN<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Station[0].CurrentMover.MoveVelocity(highVelocity);<br>&nbsp;&nbsp; &nbsp;END_IF<br>ELSE<br>&nbsp;&nbsp; &nbsp;StationTimer[0](IN := FALSE);<br>END_IF<br>&nbsp;&nbsp; &nbsp;// Position Trigger 0 Logic<br>IF PositionTrigger[0].MoverPassedPosition THEN<br>&nbsp;&nbsp; &nbsp;PositionTrigger[0].CurrentMover.SetVelocity(lowVelocity);<br>&nbsp;&nbsp; &nbsp;PositionTrigger[0].MuteCurrent();<br>END_IF<br>&nbsp;&nbsp; &nbsp;// Position Trigger 1 Logic<br>IF PositionTrigger[1].MoverPassedPosition THEN<br>&nbsp;&nbsp; &nbsp;PositionTrigger[1].CurrentMover.SetVelocity(mediumVelocity);<br>&nbsp;&nbsp; &nbsp;PositionTrigger[1].CurrentMover.MoveToStation(Station[nextStation]);<br>&nbsp;&nbsp; &nbsp;nextStation := nextStation &#8211; 1;<br>&nbsp;&nbsp; &nbsp;IF nextStation = 0 THEN<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;nextStation := 4;<br>&nbsp;&nbsp; &nbsp;END_IF<br>&nbsp;&nbsp; &nbsp;PositionTrigger[1].MuteCurrent();<br>END_IF<br><br>// Group of Stations 1, 2, 3, and 4 Logic<br>IF Station[1].MoverInPosition AND Station[2].MoverInPosition AND Station[3].MoverInPosition AND Station[4].MoverInPosition THEN<br>&nbsp;&nbsp; &nbsp;StationTimer[1](IN := TRUE, PT := T#750MS);<br>&nbsp;&nbsp; &nbsp;IF StationTimer[1].Q THEN<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;StationTimer[1](IN := FALSE);<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Station[1].CurrentMover.MoveToStation(Station[0]);<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Station[2].CurrentMover.MoveToStation(Station[0]);<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Station[3].CurrentMover.MoveToStation(Station[0]);<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Station[4].CurrentMover.MoveToStation(Station[0]);<br>&nbsp;&nbsp; &nbsp;END_IF<br>END_IF<br></p>



<h3 id="h-execute-the-new-code" class="wp-block-heading">Execute the New Code</h3>



<p class="wp-block-paragraph">Save the new code and activate the configuration. After logging in, you should be able to open the Controls visualization, press the Enable button, and then the Start button to start seeing the movers follow the new logic.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="234" src="https://static.dmcinfo.com/wp-content/uploads/2025/06/customizing-logic-video1.png.webp" alt="customizing logic executing the new code" class="wp-image-36427" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/06/customizing-logic-video1.png.webp 624w, https://static.dmcinfo.com/wp-content/uploads/2025/06/customizing-logic-video1.png-300x113.webp 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">This is just an example of the many customizations you can make to your XTS system. There’s even more functionality that comes with this starter project, though. In the next entry in this blog series, we will go over zones and add those to our custom logic.</p>



<p class="wp-block-paragraph">If you’d like help with the next steps for your XTS system, DMC is proud to be a Beckhoff System Integrator and has worked on multiple XTS projects and applications.</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>Turn complex machine requirements into reliable control solutions 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">From custom XTS programming to complete machine automation, DMC delivers <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" data-type="page" data-id="420">Automation</a> solutions designed for your application. Learn more about our partnership with <a href="https://static.dmcinfo.com/about/partners/beckhoff-platinum-solution-provider/" data-type="page" data-id="891">Beckhoff</a>.</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/15346/beckhoff-xts-part-7-customizing-logic/">Beckhoff XTS Part 7: Customizing Logic</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Beckhoff XTS Part 6: Position Triggers</title>
		<link>https://static.dmcinfo.com/blog/15350/beckhoff-xts-part-6-position-triggers/</link>
		
		<dc:creator><![CDATA[Carter Silvey]]></dc:creator>
		<pubDate>Mon, 02 Jun 2025 10:26:12 +0000</pubDate>
				<category><![CDATA[Beckhoff PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/15350/beckhoff-xts-part-6-position-triggers/</guid>

					<description><![CDATA[<p>The previous entry in this series went over the Station function block. Stations are excellent at holding movers while an operation is performed on their payload. Stations require a mover to stop at the station before continuing along, but what if we wanted to adjust our mover’s behavior while it’s still moving? That’s what position [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/15350/beckhoff-xts-part-6-position-triggers/">Beckhoff XTS Part 6: Position Triggers</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The previous entry in this series went over the Station function block. Stations are excellent at holding movers while an operation is performed on their payload. Stations require a mover to stop at the station before continuing along, but what if we wanted to adjust our mover’s behavior while it’s still moving? That’s what position triggers are for. This blog will go over the PositionTrigger function block that comes with the base starter project. We will see how to configure Beckhoff XTS position triggers properly and what methods we have at our disposal to use with our system.&nbsp;</p>



<p class="wp-block-paragraph">This blog will continue to use the <a href="https://github.com/Beckhoff-USA-Community/XTS_Base/tree/master">Beckhoff XTS_Base GitHub</a> and the <a href="https://www.beckhoff.com/nl-be/products/motion/xts-linear-product-transport/xts-starter-kits/at2000-1500-0170.html">large XTS starter kit</a>.&nbsp;</p>



<h2 id="h-beckhoff-xts-series" class="wp-block-heading">Beckhoff XTS Series</h2>



<ul class="wp-block-list">
<li><a href="https://static.dmcinfo.com/blog/15666/beckhoff-xts-part-1-downloads-and-starter-project/">Part 1 &#8211; Downloads and Starter Project</a></li>



<li><a href="https://static.dmcinfo.com/blog/15650/beckhoff-xts-part-2-setting-up-a-physical-xts-system/">Part 2 &#8211;&nbsp;Setting Up a Physical XTS System</a></li>



<li><a href="https://static.dmcinfo.com/blog/15598/beckhoff-xts-part-3-simulation-and-plc-logic/">Part 3 &#8211; Simulation and PLC Logic</a></li>



<li><a href="https://static.dmcinfo.com/blog/15357/beckhoff-xts-part-4-movers/">Part 4 &#8211; Movers</a></li>



<li><a href="https://static.dmcinfo.com/blog/15354/beckhoff-xts-part-5-stations/">Part 5 &#8211; Stations</a></li>



<li><a href="https://static.dmcinfo.com/blog/15346/beckhoff-xts-part-7-customizing-logic/">Part 7 &#8211; Customizing Logic</a></li>
</ul>



<h2 id="h-position-triggers" class="wp-block-heading">Position Triggers</h2>



<p class="wp-block-paragraph">Position triggers are defined positions along the XTS track that know when movers pass by. This can allow for on-the-fly redirections or changes in velocity.</p>



<h2 id="h-declaring-a-position-trigger" class="wp-block-heading">Declaring a Position Trigger</h2>



<p class="wp-block-paragraph">In MAIN, in the variable declaration we already have an array of position triggers defined with the line</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">Structured Text</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>PositionTrigger : ARRAY&#91;0..2&#93; OF PositionTrigger;</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: #C8C8C8">PositionTrigger</span><span style="color: #D4D4D4"> : </span><span style="color: #4FC1FF">ARRAY</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">0..2</span><span style="color: #D4D4D4">&#93; </span><span style="color: #4FC1FF">OF</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">;</span></span></code></pre></div>



<p class="wp-block-paragraph">This defines 3 position triggers to use. If you want to use more, you can increase the array bounds. It’s also likely worth using a global constant similar to how the stations are defined.</p>



<h2 id="h-configuring-position-triggers" class="wp-block-heading">Configuring Position Triggers</h2>



<p class="wp-block-paragraph">The existing starter project already has 3 position triggers configured, shown below.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="624" height="335" src="https://static.dmcinfo.com/wp-content/uploads/2025/06/configuring-position-triggers.webp" alt="configuring position triggers" class="wp-image-36431" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/06/configuring-position-triggers.webp 624w, https://static.dmcinfo.com/wp-content/uploads/2025/06/configuring-position-triggers-300x161.webp 300w" sizes="(max-width: 624px) 100vw, 624px" /></figure>



<p class="wp-block-paragraph">Similarly to the stations, the position definition for these position triggers is in the MS_INTIIALIZING_OBJECTIVES section of the MAIN state machine, which is at line 115.</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-start:115;--cbp-line-number-width:calc(3 * 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">Structured Text</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>PositionTrigger&#91;0&#93;.Position := 1500;
PositionTrigger&#91;1&#93;.Position := 2000;
PositionTrigger&#91;2&#93;.Position := 3500; </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: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #9CDCFE">Position</span><span style="color: #D4D4D4"> := </span><span style="color: #B5CEA8">1500</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #9CDCFE">Position</span><span style="color: #D4D4D4"> := </span><span style="color: #B5CEA8">2000</span><span style="color: #D4D4D4">;</span></span>
<span class="line"><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #9CDCFE">Position</span><span style="color: #D4D4D4"> := </span><span style="color: #B5CEA8">3500</span><span style="color: #D4D4D4">; </span></span></code></pre></div>



<p class="wp-block-paragraph">We can see that the position triggers are given positions (in mm) around the track that line up with the picture above. Changing these positions will change where along the track the position triggers exist.</p>



<p class="wp-block-paragraph">These position triggers also have CyclicLogic methods that must be called every scan and are already called for us at line 419.</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-start:419;--cbp-line-number-width:calc(3 * 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">Structured Text</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>PositionTrigger&#91;0&#93;.Cyclic();
PositionTrigger&#91;1&#93;.Cyclic();
PositionTrigger&#91;2&#93;.Cyclic();</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: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #DCDCAA">Cyclic</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #DCDCAA">Cyclic</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #DCDCAA">Cyclic</span><span style="color: #D4D4D4">();</span></span></code></pre></div>



<p class="wp-block-paragraph">If you add more position triggers, make sure to call their CyclicLogic methods as well.</p>



<p class="wp-block-paragraph">The stations also make sure to unregister movers on stopping or disabling. This happens on lines 332 and 367 by calling the UnregisterAll method for each position trigger.</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-start:332;--cbp-line-number-width:calc(3 * 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">Structured Text</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>FOR i := 0 TO SIZEOF(PositionTrigger) / SIZEOF(PositionTrigger&#91;0&#93;) - 1 DO
  PositionTrigger&#91;i&#93;.UnregisterAll();
END_FOR</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: #4FC1FF">FOR</span><span style="color: #D4D4D4"> </span><span style="color: #C8C8C8">i</span><span style="color: #D4D4D4"> := </span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">TO</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">SIZEOF</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">) / </span><span style="color: #DCDCAA">SIZEOF</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">&#93;) - </span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">DO</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #9CDCFE">i</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #DCDCAA">UnregisterAll</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #4FC1FF">END_FOR</span></span></code></pre></div>



<h3 id="h-position-trigger-logic" class="wp-block-heading">Position Trigger Logic</h3>



<p class="wp-block-paragraph">The existing starter project already has some position trigger logic. The logic for these position triggers is in the MS_RUN section of the MAIN state machine, which starts at line 250. There’s a few methods and properties about the position triggers that are useful to describe to interpret this code:</p>



<p class="wp-block-paragraph"><em>MoverPassedPosition</em></p>



<p class="wp-block-paragraph">MoverPassedPosition is a property of the position trigger object. It goes TRUE when a mover passed the configured position trigger’s position. This will allow for logic based on the position trigger to affect the mover passing by.</p>



<p class="wp-block-paragraph"><em>MuteCurrent</em></p>



<p class="wp-block-paragraph">MuteCurrent is a method of the position trigger object. It will set MoverPassedPosition to FALSE and clear out the mover being tracked by the position trigger. This can be used to indicate the position trigger logic is done and a new mover can be handled.</p>



<p class="wp-block-paragraph">With these properties and methods, let’s see what the current position triggers are doing.</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-start:250;--cbp-line-number-width:calc(3 * 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">Structured Text</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>// Position Trigger 0 Logic
IF PositionTrigger&#91;0&#93;.MoverPassedPosition THEN
  PositionTrigger&#91;0&#93;.CurrentMover.SetVelocity(lowVelocity);
  PositionTrigger&#91;0&#93;.MuteCurrent();
END_IF

// Position Trigger 1 Logic
IF PositionTrigger&#91;1&#93;.MoverPassedPosition THEN
  PositionTrigger&#91;1&#93;.CurrentMover.SetVelocity(highVelocity);
  PositionTrigger&#91;1&#93;.MuteCurrent();
END_IF

// Position Trigger 2 Logic
IF PositionTrigger&#91;2&#93;.MoverPassedPosition THEN
  PositionTrigger&#91;2&#93;.CurrentMover.SetVelocity(lowVelocity);
  PositionTrigger&#91;2&#93;.CurrentMover.MoveToStation(Station&#91;0&#93;);
  PositionTrigger&#91;2&#93;.MuteCurrent();
END_IF</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: #6A9955">// Position Trigger 0 Logic</span></span>
<span class="line"><span style="color: #4FC1FF">IF</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #9CDCFE">MoverPassedPosition</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">THEN</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #9CDCFE">CurrentMover</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetVelocity</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">lowVelocity</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #DCDCAA">MuteCurrent</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #4FC1FF">END_IF</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">// Position Trigger 1 Logic</span></span>
<span class="line"><span style="color: #4FC1FF">IF</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #9CDCFE">MoverPassedPosition</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">THEN</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #9CDCFE">CurrentMover</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetVelocity</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">highVelocity</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #DCDCAA">MuteCurrent</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #4FC1FF">END_IF</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6A9955">// Position Trigger 2 Logic</span></span>
<span class="line"><span style="color: #4FC1FF">IF</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #9CDCFE">MoverPassedPosition</span><span style="color: #D4D4D4"> </span><span style="color: #4FC1FF">THEN</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #9CDCFE">CurrentMover</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">SetVelocity</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">lowVelocity</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #9CDCFE">CurrentMover</span><span style="color: #D4D4D4">.</span><span style="color: #DCDCAA">MoveToStation</span><span style="color: #D4D4D4">(</span><span style="color: #9CDCFE">Station</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">0</span><span style="color: #D4D4D4">&#93;);</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #9CDCFE">PositionTrigger</span><span style="color: #D4D4D4">&#91;</span><span style="color: #B5CEA8">2</span><span style="color: #D4D4D4">&#93;.</span><span style="color: #DCDCAA">MuteCurrent</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #4FC1FF">END_IF</span></span></code></pre></div>



<p class="wp-block-paragraph">Position triggers 0 and 1 are doing similar things. They both wait for a mover to pass their position and then change the velocity of the mover. Position trigger 0 changes to low velocity and position trigger 1 changes to high velocity. They then both call the MuteCurrent methods to clear out the mover from the position trigger. Note that neither of these position triggers are sending a command to the mover, just changing its velocity. The mover is still obeying the MoveVelocity command from station 4.</p>



<p class="wp-block-paragraph">Position trigger 2 waits for a mover to pass its position, sets the velocity low, and then commands the mover to move to station 0. This will override the move velocity command from station 4 and so the mover will next stop at station 0. The logic then calls MuteCurrent to signal the position trigger has processed the mover.</p>



<p class="wp-block-paragraph">Now that we’ve reviewed movers, stations, and positions triggers we can not only understand the existing starter project logic but also write our own custom logic. In the next entry in this blog series, we will go over writing some custom logic for our XTS application.</p>



<p class="wp-block-paragraph">If you’d like help with the next steps for your XTS system, DMC is proud to be a Beckhoff System Integrator and has worked on multiple XTS projects and applications.</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>Looking to maximize the capabilities of your Beckhoff XTS system?</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">From position-triggered events to complete XTS system development, DMC delivers high-performance <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" data-type="page" data-id="420">Automation</a> solutions. Learn more about our <a href="https://static.dmcinfo.com/about/partners/beckhoff-platinum-solution-provider/" data-type="page" data-id="891">Beckhoff</a> Partnership.</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/15350/beckhoff-xts-part-6-position-triggers/">Beckhoff XTS Part 6: Position Triggers</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
