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

<channel>
	<title>PLC Programming Archives | DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/tag/plc-programming/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Tue, 08 Sep 2026 19:31:40 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://static.dmcinfo.com/wp-content/uploads/2025/04/site-icon-150x150.png</url>
	<title>PLC Programming 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>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>Starting a Project in GX Works3: A Beginner&#8217;s Guide</title>
		<link>https://static.dmcinfo.com/blog/16810/starting-a-project-in-gx-works3-a-beginners-guide/</link>
		
		<dc:creator><![CDATA[Wenjing Deng]]></dc:creator>
		<pubDate>Mon, 08 Jan 2024 13:14:24 +0000</pubDate>
				<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Mitsubishi PLC]]></category>
		<category><![CDATA[PLC Programming]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/16810/starting-a-project-in-gx-works3-a-beginners-guide/</guid>

					<description><![CDATA[<p>Embarking on a new project can be both exhilarating and overwhelming, especially when diving into the realm of programmable logic controllers (PLCs). If you&#8217;ve chosen GX Works3 as your development environment, you&#8217;re in for a treat. In this blog, we&#8217;ll guide you through the initial steps of starting a project in GX Works3, from installation [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/16810/starting-a-project-in-gx-works3-a-beginners-guide/">Starting a Project in GX Works3: A Beginner&#8217;s Guide</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Embarking on a new project can be both exhilarating and overwhelming, especially when diving into the realm of programmable logic controllers (PLCs).</p>



<p class="wp-block-paragraph">If you&#8217;ve chosen GX Works3 as your development environment, you&#8217;re in for a treat. In this blog, we&#8217;ll guide you through the initial steps of starting a project in GX Works3, from installation to writing your first program, setting you on the path to automation success!</p>



<p class="wp-block-paragraph"><u><a id="Table of Contents" name="Table of Contents"></a>Table of Contents:</u></p>



<ol class="wp-block-list">
<li><a href="#1. Installation">Installation</a></li>



<li><a href="#2. Importing CSP/CSPP Files for Devices">Importing CSP/CSPP Files for Devices</a></li>



<li><a href="#3. Creating a New Project">Creating a New Project</a></li>



<li><a href="#4. Navigating the Interface">Navigating the Interface</a></li>



<li><a href="#5. Hardware Configuration">Hardware Configuration</a></li>



<li><a href="#6. Writing Your First Program">Writing Your First Program</a></li>



<li><a href="#7. Simulation and Debugging">Simulation and Debugging</a></li>



<li><a href="#8. Final Thoughts">Final Thoughts</a></li>
</ol>



<h2 id="h-1-installation" class="wp-block-heading"><u><a id="1. Installation" name="1. Installation"></a>1. Installation</u></h2>



<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>



<h5 id="h-system-requirements" class="wp-block-heading">System Requirements</h5>



<p class="wp-block-paragraph">Before installing GX Works3, make sure that your system meets the following requirements:</p>



<ul class="wp-block-list">
<li>Windows 7 or later</li>



<li>At least 2 GB RAM</li>



<li>5 GB of free disk space</li>
</ul>



<p class="wp-block-paragraph"><strong>Before you can dive into creating a project, ensure that GX Works3 is installed on your system. Follow the installation wizard&#8217;s prompts&nbsp;and, once complete, launch the software.</strong></p>



<h2 id="h-2-importing-csp-cspp-files-for-devices" class="wp-block-heading"><u><a id="2. Importing CSP/CSPP Files for Devices" name="2. Importing CSP/CSPP Files for Devices"></a>2. Importing CSP/CSPP Files for Devices</u></h2>



<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>



<p class="wp-block-paragraph">CSP/CSPP files are the Mitsubishi equivalent of ‘EDS’ files (like in Rockwell). These files are usually provided on the device manufacturers website.</p>



<p class="wp-block-paragraph">Open GX Works3. <strong>Do not open a project. If you have a project open, you must close it.</strong></p>



<p class="wp-block-paragraph">In the top menu bar, click “Tool,”&nbsp;then “Profile Management,” and then “Register.”&nbsp;Select the files you want to import and then “Register.”</p>



<figure class="wp-block-image"><img decoding="async" alt="MELSOFT GX Works3 Profile Mangement" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-1-profile-management.png" width="900px" /></figure>



<h2 id="h-3-creating-a-new-project" class="wp-block-heading"><u><a id="3. Creating a New Project" name="3. Creating a New Project"></a>3. Creating a New Project</u></h2>



<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>



<h5 id="h-steps-to-create-a-new-project" class="wp-block-heading">Steps to Create a New Project</h5>



<p class="wp-block-paragraph">Click on “File” and then “New Project,”&nbsp;or on the icon circled below:</p>



<figure class="wp-block-image"><img decoding="async" alt="MELSOFT GX Works3 Navigation" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-2-navigation.png" width="900px" /></figure>



<p class="wp-block-paragraph">Choose the type and series of PLC you&#8217;re using. In our project we used an R08SF. <strong>Most of the programming will be done in ladder, so leave the Program Language as “Ladder.”</strong></p>



<figure class="wp-block-image"><img decoding="async" alt="New Series R08SF" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-3-new-series-type.png" width="900px" /></figure>



<p class="wp-block-paragraph">Name your project and select a storage location.</p>



<p class="wp-block-paragraph">Click “Finish.”</p>



<p class="wp-block-paragraph">Next, you will be prompted to set up a new user.</p>



<p class="wp-block-paragraph">You will need to re-enter your chosen username and password every time you open the program and when you go online with the PLC to read or write for the first time in an online session, so choose your username and password wisely.</p>



<p class="wp-block-paragraph">Note: You can go back to change this later if needed.</p>



<p class="wp-block-paragraph">After this, you will be prompted to name your project. Then, your new project will open.</p>



<figure class="wp-block-image"><img decoding="async" alt="Add New User" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-4-add-new-user.png" width="900px" /></figure>



<h2 id="h-4-navigating-the-interface" class="wp-block-heading"><u><a id="4. Navigating the Interface" name="4. Navigating the Interface"></a>4. Navigating the Interface</u></h2>



<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>



<p class="wp-block-paragraph">Here are some important areas of the GX Works3 interface:</p>



<h5 id="h-navigation" class="wp-block-heading">Navigation</h5>



<p class="wp-block-paragraph">This is where you&#8217;ll find all the elements related to your project&nbsp;such as programs, function blocks, devices, labels (AKA Tags), and parameters (for hardware configuration).</p>



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



<h5 id="h-workspace" class="wp-block-heading">Workspace</h5>



<p class="wp-block-paragraph">This is where you&#8217;ll write and edit your code</p>



<figure class="wp-block-image"><img decoding="async" alt="2 Step Write 1 Workspace" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-6-2-step-write-1.png" width="900px" /></figure>



<h5 id="h-output-window" class="wp-block-heading">Output Window</h5>



<p class="wp-block-paragraph">This window shows the output of compile-time or run-time actions. There are some other tabs here that are helpful for online debugging, but we will look at those later on.</p>



<figure class="wp-block-image"><img decoding="async" alt="Output" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-7-output.png" width="900px" /></figure>



<h2 id="h-5-hardware-configuration" class="wp-block-heading"><u><a id="5. Hardware Configuration" name="5. Hardware Configuration"></a>5. Hardware Configuration</u></h2>



<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>



<h5 id="h-adding-devices-and-modules" class="wp-block-heading">Adding Devices and Modules</h5>



<p class="wp-block-paragraph">To add devices and modules:</p>



<p class="wp-block-paragraph">Right-click on the “Module Information” under Parameter in the Navigation.</p>



<p class="wp-block-paragraph">Next, select “Add Module,” and choose the specific device or module you&#8217;re working with.</p>



<p class="wp-block-paragraph">It is ok to leave&nbsp;“Start I/O No. Specification” as “Not Set” if you want GX Works3 to handle assigning these values automatically based on slot number.</p>



<p class="wp-block-paragraph">If there are specific values you want a module to start at, you can choose &#8216;set&#8217; and pick your Start I/O.</p>



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



<p class="wp-block-paragraph">For this example project, we will choose a digital input card RX42C4 in slot 1 and a digital output card RY42PT1P in slot 2 to start.</p>



<p class="wp-block-paragraph">In addition, the R08SFCPU requires an&nbsp;R6SFM, a&nbsp;safety function module, which we will put in slot 0 here.</p>



<h3 id="h-plc-configuration-and-setup" class="wp-block-heading">PLC Configuration and Setup</h3>



<h5 id="h-ip-address" class="wp-block-heading">IP Address</h5>



<p class="wp-block-paragraph">Double click on “Module Parameter” under R08SFCPU or your chosen PLC series. This will open the screen below:</p>



<figure class="wp-block-image"><img decoding="async" alt="Setting Item Explanation" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-10-setting-item-explanation.png" width="900px" /></figure>



<p class="wp-block-paragraph">Here you can set the IP Address information for your PLC. Press “Apply” on the bottom right side of the screen to save.</p>



<h4 id="h-cpu-module-operation-setting-at-error-detection" class="wp-block-heading">CPU Module Operation Setting at Error Detection</h4>



<p class="wp-block-paragraph">While debugging programs later, if any of your programs encounter an operation error (ex. array index out of bounds, invalid function input data when using direct addresses), the PLC will default to a “stop” error state: which requires a full reset of the PLC to clear (sometimes includes a power cycle if there is a safety module involved).</p>



<p class="wp-block-paragraph">This can be very annoying when debugging and testing code; however, there is a setting that you can change that allows the PLC to continue running with the operation error allowing you to track down the error, make an adjustment, and continue testing.</p>



<p class="wp-block-paragraph">Double click on CPU Parameter under R08SFCPU or your chosen PLC series. This will pull up the parameter window.</p>



<p class="wp-block-paragraph">In the “Setting Item List,”&nbsp;click on “RAS Setting,” and then navigate to the “Operation Error” line item in the window on the right.<br>
&nbsp;<br>
The default setting is “Stop.”&nbsp;Click on the drop down and change it to “Continue” to prevent the PLC from stopping. Click “Apply” on the bottom right corner before exiting this tab.</p>



<figure class="wp-block-image"><img decoding="async" alt="Setting Item List" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-11-setting-item-list.png" width="900px" /></figure>



<p class="wp-block-paragraph">There are a couple of other types of execution errors here that can also be set to “Continue”&nbsp;if desired. After testing and debugging, remember to switch these settings back to “stop.”</p>



<h5 id="h-timer-setup" class="wp-block-heading">Timer Setup</h5>



<p class="wp-block-paragraph">Double click on CPU Parameter under R08SFCPU or your chosen PLC series. This will pull up the parameter window.</p>



<p class="wp-block-paragraph">In the “Setting Item List,”&nbsp;click on the “Operation Related Setting.”</p>



<p class="wp-block-paragraph">This will pull up the “Timer Limit Setting,” which controls the units that each of the three timer instructions:&nbsp;OUTL, OUTH, and OUTHS.&nbsp;</p>



<p class="wp-block-paragraph">Note: We typically set one of these to 1ms, so it is easier to keep track of how long timers are.</p>



<figure class="wp-block-image"><img decoding="async" alt="CPU Parameter" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-12-cpu-parameter.png" width="900px" /></figure>



<figure class="wp-block-image"><img decoding="async" alt="Point OUT OUTH OUTHS" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-13-out-outh-ouths.png" width="900px" /></figure>



<h4 id="h-labels-data-types-and-memory-address-mapping" class="wp-block-heading">Labels, Data Types, and Memory Address Mapping</h4>



<p class="wp-block-paragraph">Labels are what you use for your program variables. They can be defined locally in a program or function and only accessible in that particular program or function, or they can be defined globally and accessed anywhere.&nbsp;</p>



<p class="wp-block-paragraph">They are equivalent to “tags” in a Rockwell PLC.</p>



<p class="wp-block-paragraph"><strong>You can create multiple global label lists with different names, but there is no way to differentiate which global label list a global label is defined in. Each program/function can only have one local label list.</strong></p>



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



<p class="wp-block-paragraph">Here is a helpful table showing the available data types for labels:</p>



<figure class="wp-block-image"><img decoding="async" alt="Data Type Description Value Range" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-15-data-type-description-value-range.png" width="900px" /></figure>



<p class="wp-block-paragraph">In Gx Works3, you can choose to assign memory addresses to your labels explicitly or let Gx Works automatically assign them when converting your program.</p>



<p class="wp-block-paragraph"><br>
Below are the commonly used memory addresses available in Gx Works3:</p>



<ul class="wp-block-list">
<li>X: Input
 
 
<ul class="wp-block-list">
<li>Inputs coming to the PLC through any devices or modules will be mapped to the X device addresses.</li>
</ul>
</li>



<li>Y: Outputs
 
 
<ul class="wp-block-list">
<li>Outputs being sent&nbsp;from the PLC to any devices will be mapped through the Y device addresses.</li>
</ul>
</li>



<li>M: Internal Relay
 
 
<ul class="wp-block-list">
<li>These are bits internal to the PLC. These are similar to memory bits in a Siemens PLC.</li>
</ul>
</li>



<li>D: Internal Word
 
 
<ul class="wp-block-list">
<li>These are words internal to the PLC.</li>
</ul>
</li>
</ul>



<figure class="wp-block-image"><img decoding="async" alt="Setting Item Device" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Mitsubishi-16-setting-item-device.png" width="900px" /></figure>



<p class="wp-block-paragraph">Although you can reference device addresses directly in your program as normally open/closed contacts, outputs, etc., <strong>it is best practice to define helpfully named labels and use those in your program instead.</strong></p>



<p class="wp-block-paragraph">This makes it significantly easier to read and follow along whether you are revisiting your program at a later date or if another programmer is helping review your program.</p>



<figure class="wp-block-image"><img decoding="async" alt="Filter Output 1 Input 1" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Mitsubishi-17-filter-output-1-input-1.png" width="900px" /></figure>



<p class="wp-block-paragraph"><strong>One more thing to keep in mind is that, if you do wish to assign device addresses to any of your labels, you will need to keep track of how many registers each data type will take up.</strong></p>



<p class="wp-block-paragraph">For example, if you assign a float/real label a device address of D1000, since a float is 32 bits long, it will take up registers D1000 and D1001. Gx Works3 will not tell you explicitly that this is happening, so it is up to you to keep track and avoid&nbsp;unintentionally double assigning device addresses.</p>



<h2 id="h-6-writing-your-first-program" class="wp-block-heading"><u><a id="6. Writing Your First Program" name="6. Writing Your First Program"></a>6. Writing Your First Program</u></h2>



<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>



<p class="wp-block-paragraph">Now that you&#8217;re familiar with the interface, it’s time to write some code.</p>



<p class="wp-block-paragraph">First, we can start by adding a normal scan program.</p>



<p class="wp-block-paragraph">Note: We also have the option of adding other types of programs, if desired, such as&nbsp;‘Initial,’&nbsp;‘Fixed Scan,’&nbsp;‘Event,’&nbsp;etc. Right clicking on any of the other options under the ‘Program’ tree will allow you to add new data to those types of programs.</p>



<p class="wp-block-paragraph">In this blog we’ll cover the basics of ladder since that is the most frequently used.</p>



<p class="wp-block-paragraph">Right-click on the “MAIN” under the “SCAN” dropdown in the Navigation and select “Add New Data.”</p>



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



<p class="wp-block-paragraph">A “New Data” window will pop up. Here you can name your program and choose the language (ladder, ST, SFC, FBD/LD).</p>



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



<p class="wp-block-paragraph">This will open the Local Label list and Program Body for the new program. You can define any program specific labels in the Local Label List before starting to write the program.</p>



<p class="wp-block-paragraph">Alternatively, you can define your labels as your program as well. If you enter in label name that isn’t defined, it will open the dialogue window below, and you can choose to define it.</p>



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



<p class="wp-block-paragraph">If you have an undefined tag, it will be gray instead of pink.</p>



<figure class="wp-block-image"><img decoding="async" alt="Prog 1 PRG 1 LD" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-21-prog-1-prg-ld.png" width="900px" /></figure>



<p class="wp-block-paragraph">Next, to start writing your program, navigate to the “ProgramBody.”&nbsp;Make sure to set the drop down on the top left to “Write:”</p>



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



<p class="wp-block-paragraph">The “Read” option will not allow editing, and you cannot copy lines of code in “Read” mode either. “Write Mntr” and “Read Mntr” are for monitoring the program while online with the PLC.</p>



<p class="wp-block-paragraph">There are some display options that can be set to make the ladder editor easier to read. Click on “Tool” &gt; “Options.”</p>



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



<p class="wp-block-paragraph">Next, click on “Ladder Editor:”</p>



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



<p class="wp-block-paragraph">Here are some settings that I think are helpful to have on; these will display any comments you add to labels or any comments you add to your ladder rungs.</p>



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



<p class="wp-block-paragraph">One other setting that is useful to have on is the “Wrapping Ladder Display.”&nbsp;This will wrap a long label name and show the whole name.</p>



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



<p class="wp-block-paragraph">To start writing logic, you can double click on a cell or select a cell and just start typing a label name or instruction. The drop down here shows the type of basic instruction&nbsp;you can assign to a cell.</p>



<p class="wp-block-paragraph">Note: If you don’t choose anything, it will default to a normally open contact.</p>



<figure class="wp-block-image"><img decoding="async" alt="Prog 1 Input 1" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-27-prog-1-input-1.png" width="900px" /></figure>



<p class="wp-block-paragraph">The easiest way to program is to type out the instruction and labels for each cell and then press enter.</p>



<p class="wp-block-paragraph">Typically, the syntax is: Instruction Input1 Input2 …. Here is an example for a move instruction&nbsp;where an integer value 1 is moved into iCount. Here I typed: MOV K1 iCount.</p>



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



<p class="wp-block-paragraph">Each instruction might have different inputs.&nbsp;If you need details, you can right click and select&nbsp;“Open Instruction Help.”</p>



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



<p class="wp-block-paragraph">Here are some basic, commonly used shortcuts and instructions:</p>



<p class="wp-block-paragraph">F5: NO<br>
F6: NC<br>
F7: OUT</p>



<p class="wp-block-paragraph">Set: latch a Boolean</p>



<p class="wp-block-paragraph">RST: unlatch a Boolean</p>



<p class="wp-block-paragraph">Unlike Siemens and Rockwell, Gx Works3 requires different versions of instructions when using different data types. Here are some examples:</p>



<p class="wp-block-paragraph">=, &gt;=, &lt;=, &lt;&gt;, Instructions for comparing 16-bit data.</p>



<p class="wp-block-paragraph">+, -, *, /, Instructions for basic math with 16-bit data.</p>



<p class="wp-block-paragraph">MOV, to transfer 16-bit data.</p>



<p class="wp-block-paragraph">D=, D&gt;=, D&lt;=, D&lt;&gt;, Instructions for comparing 32-bit data.</p>



<p class="wp-block-paragraph">D+, D-, D*, D/, Instructions for basic math with 32-bit data.</p>



<p class="wp-block-paragraph">DMOV, to transfer 32-bit data.</p>



<p class="wp-block-paragraph">E=, E&gt;=, E&lt;=, E&lt;&gt;, Instructions for comparing single precision real numbers</p>



<p class="wp-block-paragraph">E+, E-, E*, E/, Instructions for basic math with single precision real numbers</p>



<p class="wp-block-paragraph">EMOV, to transfer single precision real numbers.</p>



<p class="wp-block-paragraph">ED=, ED&gt;=, ED&lt;=, ED&lt;&gt;, Instructions for comparing double precision real numbers</p>



<p class="wp-block-paragraph">ED+, ED-, ED*, ED/, Instructions for basic math with double precision real numbers</p>



<p class="wp-block-paragraph">EDMOV, to move double precision real numbers.</p>



<p class="wp-block-paragraph">$+, to concatenate strings.</p>



<p class="wp-block-paragraph">$MOV to transfer character strings.</p>



<p class="wp-block-paragraph">Next, we will go over basic timers.</p>



<p class="wp-block-paragraph">Earlier in this blog we set timer units in the CPU parameters. The instructions for each of the timers are OUT, OUTH, and OUTHS.</p>



<p class="wp-block-paragraph">These timers will run based on what was set earlier. OUT is the instruction for a normal output coil, but, when the first input is a label of type “Timer” and the second input is a 16-bit unsigned integer, this instruction behaves as a timer. Here is an example of how this would look like:</p>



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



<p class="wp-block-paragraph">This timer is enabled when Input1 goes high and starts counting to 100*10ms (default setting).&nbsp;When the time is reached, the label Timer1 can be used directly as a contact and will go high turning on Output1.</p>



<figure class="wp-block-image"><img decoding="async" alt="Input 1 Timer 1 OUTH" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-31-input-1-timer-1-outh-.png" width="900px" /></figure>



<p class="wp-block-paragraph">Finally, we will cover how to comment in Gx Works3.</p>



<p class="wp-block-paragraph">The&nbsp;three icons below can be toggled on and off. When toggled on, double clicking on a rung or a cell will pull up a window where you can add a comment.<br>
&nbsp;<br>
The leftmost icon allows you to comment on your labels (you can also do this in the label lists), the middle icon is for commenting an entire rung, and the last one will add a comment to an output.</p>



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



<p class="wp-block-paragraph">Adding comments to entire rungs is the most useful.</p>



<p class="wp-block-paragraph">If you check “Display in Navigation Window,”&nbsp;text you write here will become subtitles in the Navigation window:&nbsp;which can be helpful for organizing your code.</p>



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



<p class="wp-block-paragraph">You can add multiple comments above a rung, like this:</p>



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



<h2 id="h-7-simulation-and-debugging" class="wp-block-heading"><u><a id="7. Simulation and Debugging" name="7. Simulation and Debugging"></a>7. Simulation and Debugging</u></h2>



<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>



<p class="wp-block-paragraph">This section will focus on how to simulate a PLC and go online to test your program.</p>



<p class="wp-block-paragraph">We have created a basic sample program. <strong>Anything that hasn’t been compiled yet will show up as gray in the ladder editor and red in the Navigation window.</strong></p>



<figure class="wp-block-image"><img decoding="async" alt="iCount timer 1" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-35-icount-timer-1.png" width="900px" /></figure>



<p class="wp-block-paragraph">To check and compile code, click on “Convert,”&nbsp;then press the “Convert(B).”</p>



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



<p class="wp-block-paragraph">Alternatively, you can click the convert button in the tool bar shown below.</p>



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



<p class="wp-block-paragraph">If there are no errors in the code, after converting, the rungs in the ladder editor will turn white, and the titles in the Navigation will also turn white. If there are any errors, they will be displayed in the Output Window.</p>



<figure class="wp-block-image"><img decoding="async" alt="Input Trigger iCount Timer 1" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-38-input-trigger-icourt-timer-1.png" width="900px" /></figure>



<p class="wp-block-paragraph">Next, click on the “Start Simulation” icon to start a PLC simulation. The button immediately to the right is “Stop Simulation” and will end the simulated PLC.</p>



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



<p class="wp-block-paragraph">The first time you start a simulation, the program will automatically write to the simulation PLC. It will open the window below. which is the simulated PLC.</p>



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



<p class="wp-block-paragraph">Now, you can switch to “Read Mntr” or “Write Mntr” to test your programs live.</p>



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



<p class="wp-block-paragraph">If you make a change to your program, you will need to write these changes to the PLC. If you only changed your program, you could&nbsp;do an online change by pressing the icon below.</p>



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



<p class="wp-block-paragraph">If you make a change to any Structured Data Types or Parameters, you will have to rebuild/recompile your project and then do a full download. To do a download, press the red arrow icon shown below. It will open a window where you can select exactly what you want to write to the PLC.</p>



<figure class="wp-block-image"><img decoding="async" alt="Online Data Operation" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-43-online-data-operation.png" width="900px" /></figure>



<p class="wp-block-paragraph"><strong>If you have multiple people working on the same PLC, anytime someone writes a change to the PLC, all other people will need to read from the PLC to obtain that change. It doesn’t automatically update. To read from the PLC, press the blue arrow button shown below. It will open a window where you can choose what you want to read.</strong></p>



<figure class="wp-block-image"><img decoding="async" alt="Online Data Operation R08SF" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-44-online-data-operation-r08sf.png" width="900px" /></figure>



<h4 id="h-basic-debugging-and-troubleshooting" class="wp-block-heading">Basic debugging and troubleshooting</h4>



<p class="wp-block-paragraph">The last part of this blog will go over some debugging and troubleshooting tools in Gx Works3.</p>



<p class="wp-block-paragraph">After going online with the PLC and monitoring your selected program, the ladder editor will display the values in any referenced labels, and any contacts that are true will be colored blue.</p>



<p class="wp-block-paragraph">In our sample program here, Input1 is true and iCount = 1.</p>



<figure class="wp-block-image"><img decoding="async" alt="Setting 2" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-45-setting-2.png" width="900px" /></figure>



<p class="wp-block-paragraph">There are two main ways to modify labels.</p>



<p class="wp-block-paragraph">For a Boolean, you can right click on the label, go to “Debug,” then click on “Modify Value.”&nbsp;This will flip the value of the Boolean.</p>



<figure class="wp-block-image"><img decoding="async" alt="Debug" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-46-debug.png" width="900px" /></figure>



<p class="wp-block-paragraph">The other way to modify labels is to right click, go to “Register to Watch Window” and then add the label to a watch window of your choice. The selected watch window will open.</p>



<figure class="wp-block-image"><img decoding="async" alt="Register to Watch Window" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-47-watch-1.png" width="900px" /></figure>



<p class="wp-block-paragraph">If no values are being displayed on the watch window, you can right-click on a label in the watch window and click “Start Watching.”</p>



<p class="wp-block-paragraph">You can monitor and modify any label values in the watch window. After entering in the desired value, press “Enter” on your keyboard to confirm the value modification.</p>



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



<p class="wp-block-paragraph">To cross reference a tag, right click on the tag and click on “Cross Reference.”</p>



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



<p class="wp-block-paragraph">The cross-reference window will open and show all instances of the label.</p>



<figure class="wp-block-image"><img decoding="async" alt="Cross Reference 1 Reset 1" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-50-cross-reference-1-reset-1.png" width="900px" /></figure>



<p class="wp-block-paragraph">One important thing to note is that&nbsp;no matter what value is present at a certain index in an array, the GX Works3 ladder editor will show that it is -1. To see its actual value, you can use a watch window.</p>



<p class="wp-block-paragraph">In the example below, IntArray[Index] should equal 2, but the value shown in the ladder editor is -1.</p>



<figure class="wp-block-image"><img decoding="async" alt="Watch 1 Watching" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-51-watch-1-watching.png" width="900px" /></figure>



<p class="wp-block-paragraph">The icons shown below near the top right corner show the statuses of the PLC.</p>



<p class="wp-block-paragraph"><strong>If there are any errors, there will be a yellow exclamation mark present. To check on any PLC or module errors, clicking on the check mark will bring up the&nbsp;diagnostic window below.</strong></p>



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



<p class="wp-block-paragraph">One last useful tool for debugging is the Device/Buffer Memory Batch Monitor which can be accessed by pressing the icon below:</p>



<figure class="wp-block-image"><img decoding="async" alt="PRG Monitoring 66" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-53-prg-monitoring-66.png" width="900px" /></figure>



<p class="wp-block-paragraph">Here you can type a device name (ex. D10, or X100) or buffer memory unit and monitor the bits at those places in memory.</p>



<figure class="wp-block-image"><img decoding="async" alt="Device Buffer Memory Batch Monitoring" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-54-device-buffer-memory-batch-monitoring.png" width="900px" /></figure>



<p class="wp-block-paragraph"><strong>After you are done with simulating your program, make sure to stop the simulation before connecting to a real PLC.</strong></p>



<p class="wp-block-paragraph">To get connected with a real PLC, start off by pinging the PLC IP address using command prompt. After that is successful, press the icon shown below:</p>



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



<p class="wp-block-paragraph">This will open the following window:</p>



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



<p class="wp-block-paragraph">Double click on “Ethernet Board” to specify your adapter and hit OK.</p>



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



<p class="wp-block-paragraph">Double click on “PLC Module.”</p>



<p class="wp-block-paragraph"><strong>The first time you connect to the PLC, you will have to connect through the ethernet port directly on the PLC to write an IP address to the PLC.&nbsp;</strong></p>



<p class="wp-block-paragraph">Choose “Ethernet Port Direct Connection.”</p>



<p class="wp-block-paragraph">If you have connected to the PLC before, set the IP address already, and are now connected through an ethernet switch, click on “Connection via HUB” and enter in the IP address of the PLC. Next, press “OK.”</p>



<figure class="wp-block-image"><img decoding="async" alt="PLC side I/F Detailed Setting of PLC Module" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-58-plc-side-if-detailed-setting-of-plc-module.png" width="741px" /></figure>



<p class="wp-block-paragraph">Next, click on “Connection Channel List.”</p>



<p class="wp-block-paragraph">There are many different routes to connect to the PLC, the most common is “19 Ethernet Board Communication PLC Module Connection.”</p>



<p class="wp-block-paragraph">If you have a different network topology, you may need to choose a different setting here. Selecting different options will change the graphic shown to help illustrate the topology. After choosing your setting, click “OK.”</p>



<figure class="wp-block-image"><img decoding="async" alt="Connection Channel List" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/mitsubishi-59-connection-channel-list.png" width="900px" /></figure>



<p class="wp-block-paragraph">Finally, we can test our connection to the PLC by clicking on “Connection Test.”&nbsp;A dialog box will show up to display whether&nbsp;the connection is successful or not.</p>



<p class="wp-block-paragraph">If this is the first time you are connecting to a fresh PLC, make sure to write your entire project to the PLC to set the IP address of the PLC for future connections.</p>



<h2 id="h-8-final-thoughts" class="wp-block-heading"><u><a id="8. Final Thoughts" name="8. Final Thoughts"></a>8. Final Thoughts</u></h2>



<p class="wp-block-paragraph"><em><a href="#Table of Contents">Back to Table of Contents</a></em></p>



<p class="wp-block-paragraph">GX Works3 provides an integrated environment for developing and managing automation projects. While navigating and programming in GX Works3 may present challenges, mastering its key functionalities and insights can significantly alleviate the frustration, paving the way for a smoother and more efficient experience in harnessing its power for industrial automation.</p>



<p class="wp-block-paragraph">Happy programming!</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>Start Programming Mitsubishi PLCs with GX Works3</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">Explore our <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/" data-type="page" data-id="420">Automation</a> expertise in <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/mitsubishi-plc-programming-and-automation-services/" data-type="page" data-id="463">Mitsubishi PLC programming</a> with GX Works3 project setup, hardware configuration, ladder logic, simulation, and PLC debugging.</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/16810/starting-a-project-in-gx-works3-a-beginners-guide/">Starting a Project in GX Works3: A Beginner&#8217;s Guide</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using AutoHotkey in PLC Programming</title>
		<link>https://static.dmcinfo.com/blog/19517/using-autohotkey-in-plc-programming/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Mon, 04 Jan 2021 15:04:02 +0000</pubDate>
				<category><![CDATA[PLC]]></category>
		<category><![CDATA[AutoHotkey]]></category>
		<category><![CDATA[PLC Programming]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/19517/using-autohotkey-in-plc-programming/</guid>

					<description><![CDATA[<p>Oftentimes, we must perform monotonous, repetitive tasks—and just about every time, it’s mind-numbingly boring. Thankfully, though, we can make our lives saner through automation! AutoHotkey is a simple scripting tool that allows you to program custom keystrokes and commands. Though simple in design, it’s a very powerful tool; it’s able to perform tasks such as [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/19517/using-autohotkey-in-plc-programming/">Using AutoHotkey in PLC Programming</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Oftentimes, we must perform monotonous, repetitive tasks—and just about every time, it’s mind-numbingly boring. Thankfully, though, we can make our lives saner through automation!</p>



<p class="wp-block-paragraph">AutoHotkey is a simple scripting tool that allows you to program custom keystrokes and commands. Though simple in design, it’s a very powerful tool; it’s able to perform tasks such as launching apps, making mouse movements, scheduling tasks, and so much more. AutoHotkey has some great documentation for writing scripts, so I’ll cover the applications I’ve found to be the most useful and some relevant examples.</p>



<h2 id="h-comment-tag" class="wp-block-heading">Comment Tag</h2>



<p class="wp-block-paragraph">The script that I use most often is a comment tag. This script grabs the current time and date, types them out in a clean format, and adds “DMC:[my initials].” Now, you can track changes at the click of a button. For my example, It would end up looking like this:&nbsp; &nbsp;-12/06/2019-DMC:JAK-</p>


<pre class="”brush:xml”">
;CommentTag.
^!d::
FormatTime, Time,, MM/DD/YYYY h:mm
SendInput -%A_MM%/%A_DD%/%A_YYYY%-DMC:JAK-
return
</pre>


<h2 id="h-multi-device-monitoring" class="wp-block-heading">Multi-Device Monitoring</h2>



<p class="wp-block-paragraph">&nbsp;An example of when I used this script was when adding device blocks in PLC programming.&nbsp; In my use case, we had <i>hundreds</i> of devices. We wanted to link the output of the block to its instance memory, so we could monitor the status of these outputs.&nbsp;Therefore, I made a script that would paste what was in my clipboard (the base struct), append each output, and finally link it to each output of that device.&nbsp; It took me only about 90 seconds to write the script and saved me a ton of blood, sweat, and tears.</p>


<pre class="”brush:xml”">
;Simocode Motor.
^!s::
Send, ^v
Send, .bOutForward {Enter}
Send, ^v
Send, .bOutAuto {Enter}
Send, ^v
Send, .bOutAlarm {Enter}
Send, ^v
Send, .bOutPLCControl {Enter}
Send, ^v
Send, .rOutCurrent {Enter}
Send, ^v
Send, .rOutCurrent_L1 {Enter}
Send, ^v
Send, .rOutCurrent_L2 {Enter}
Send, ^v
Send, .rOutCurrent_L3 {Enter}
Send, ^v
Send, .wOutStatusWord {Enter}
Send, ^v
Send, .bOutInterlocksOK {Enter}
return
</pre>


<p class="wp-block-paragraph">&nbsp;<img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/AutoHotKey-1.png"> <img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/AutoHotKey-2.png"></p>



<h2 id="h-shortcuts" class="wp-block-heading">Shortcuts</h2>



<p class="wp-block-paragraph">Another great use case is when there are tools or functions that don&#8217;t have hotkeys. A project I was working on had a button that changed the view of the window but had no keyboard shortcut back to the main view. Since we can script mouse movements, I was able to navigate to the button and simulate a click—returning to the main view.</p>


<pre class="”brush:xml”">
;main view in GRAPH
^!q::
Send ^1
MouseMove, 71, 148, 0
MouseClick
Send ^1
return
</pre>


<p class="wp-block-paragraph">If you are using mouse movements, you can use the WindowSpy.ahk script in the installation folder to figure out where you need to move the mouse!</p>



<p class="wp-block-paragraph"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/AutoHotKey-3.png"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/AutoHotKey-4.png">&nbsp;</p>



<h2 id="h-changing-tags-while-in-run-mode" class="wp-block-heading">Changing Tags While in Run Mode</h2>



<p class="wp-block-paragraph">Another time I used this script was on a <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/allen-bradley-plc-programming" target="_blank">Rockwell</a> project. There were many of us working off the same PLC, so it had to be in run mode. This made it impossible to do a “Find and Replace” function since each rung must be put into edit mode before any changes can be made. This made my job of updating hundreds of old tag references and add g_ to the beginning (pointing to the new tag) a lot more difficult.&nbsp; Since I couldn&#8217;t use the “Replace” function, I made an AutoHotkey script to help me out. To use this script, I used the “Find” feature and once the relevant tag is found, I ran the script to edit the rung and change the tag. I didn’t even have to move the mouse off the next button!</p>


<pre class="”brush:xml”">
+\::
SendInput {Control Down}{Shift Down}{s Down}{Control Up}{Shift Up}{s up}
send {Enter}
Send {Home}
Send g
Send _
return
</pre>


<p class="wp-block-paragraph">As you can see,&nbsp;AutoHotkey is an incredibly versatile,&nbsp;essential&nbsp;tool for speeding up workflows and creating&nbsp;additional functionality to your automation tools.</p>



<p class="wp-block-paragraph"><strong>Learn more about DMC&#8217;s expertise in <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming">PLC programming</a> and <a href="https://static.dmcinfo.com/contact">contact us</a> today to get started on your next project.&nbsp;</strong></p>
<p>The post <a href="https://static.dmcinfo.com/blog/19517/using-autohotkey-in-plc-programming/">Using AutoHotkey in PLC Programming</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Connecting to an Allen-Bradley PLC through an eWON Module</title>
		<link>https://static.dmcinfo.com/blog/20106/connecting-to-an-allen-bradley-plc-through-an-ewon-module/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Wed, 11 Mar 2020 12:46:29 +0000</pubDate>
				<category><![CDATA[Allen Bradley PLC]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Allen-Bradley]]></category>
		<category><![CDATA[PLC Programming]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/20106/connecting-to-an-allen-bradley-plc-through-an-ewon-module/</guid>

					<description><![CDATA[<p>Getting the network settings correct for remote PLC connections can be tricky. Here is an easy to follow guide outlining my method for connecting to remote PLCs while using RSLogix in a VM. In this scenario, I will be using VMWare as our virtual machine software, RSLogix as our automation software, and an eWON module [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/20106/connecting-to-an-allen-bradley-plc-through-an-ewon-module/">Connecting to an Allen-Bradley PLC through an eWON Module</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Getting the network settings correct for remote PLC connections can be tricky. Here is an easy to follow guide outlining my method for connecting to remote PLCs while using RSLogix in a VM.</p>

<p class="wp-block-paragraph">In this scenario, I will be using VMWare as our virtual machine software, RSLogix as our automation software, and an eWON module as our remote access hardware. Other solutions such as Virtual Box, TIA Portal, and Tosibox should have similar setup.&nbsp;However, I will not cover them here.</p>

<h2 class="wp-block-heading">Step One:</h2>

<p class="wp-block-paragraph">Start eCatcher on your host machine and connect to your remote eWON module. This should add an additional network adapter when&nbsp;you open<strong> Network and Sharing Center</strong> in your host.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/eCatcher-1.png"  /></figure>

<p class="wp-block-paragraph">The eWON module should automatically set a static IP address. You can find this by clicking the blue text next to<strong>&nbsp;Connections</strong>.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ethernet2-1.png"  /></figure>

<h2 class="wp-block-heading">Step Two:</h2>

<p class="wp-block-paragraph">Select Properties and find <strong>Internet Protocol Version 4</strong>. Select that option and click into its properties.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/ethernet2-2.png"  /></figure>

<p class="wp-block-paragraph">You should see something like this:</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Internet_protocol_version-1.png"  /></figure>

<h2 class="wp-block-heading">Step Three:</h2>

<p class="wp-block-paragraph">Next, you will setup a NAT connection on you&nbsp;VM. To do this, open the <strong>Virtual Network Editor</strong>. It is important to set this up through the VNE because sometimes issues can result from&nbsp;simply selecting a NAT connection through the Settings tab. The example below is how it should look when set up through the VNE.</p>

<p class="wp-block-paragraph">&nbsp;</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Virtual_network_editor-1.png"  /></figure>

<h2 class="wp-block-heading">Step Four:</h2>

<p class="wp-block-paragraph">Go to the settings tab and make sure that you are connected to the VMNet that we just configured to be NAT.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/virtual_machine_settingd-1.png"  /></figure>

<p class="wp-block-paragraph">Just to double check that the network settings were properly applied, hover your mouse over the your network connection&nbsp;in the bottom right corner of your VM. You should see <strong>Network Adapter: Custom (VMNetX)</strong>&nbsp;in the tool tip.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Tool_Tip_Hover-1.png"  /></figure>

<h2 class="wp-block-heading">Step Five:</h2>

<p class="wp-block-paragraph">Go to the Network and Sharing Center of your VM to ensure that your IP settings are set to <strong>automatic</strong>. It should look like this:</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Internet_protocal_versions_4-1.png"  /></figure>

<h2 class="wp-block-heading">Step Six:</h2>

<p class="wp-block-paragraph">Open your RSLogix Project as well as RSLinx. Inside of RSLinx, go to the Communications tab and click <strong>Configure Drivers.</strong></p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configure_Drivers_1-1.png"  /></figure>

<p class="wp-block-paragraph">Add a new Ethernet Devices Driver to the Configured Drivers list.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configure_driver_AB-1.png"  /></figure>

<p class="wp-block-paragraph">Now, inside of RSLogix, click the Communications tab and select who active. Here, you should&nbsp;find the ethernet driver and the station&nbsp;you entered earlier.&nbsp;</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Who_Active-1.png"  /></figure>

<p class="wp-block-paragraph">Select the PIC to complete the process and go online.</p>

<h2 class="wp-block-heading">FAQ:</h2>

<p class="wp-block-paragraph"><strong>Q:</strong> Why is browsing the network is taking a such a long time?</p>

<p class="wp-block-paragraph"><strong>A: </strong>Try connecting to the PLC directly and not browsing the whole subnet.</p>

<p class="wp-block-paragraph"><strong>Q. </strong>My device has a yellow question mark next to it and I can&rsquo;t go online because the button is grayed out (shown below).</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Classic_Gateway-1.png"  /></figure>

<p class="wp-block-paragraph"><strong>A:</strong> This means that you do not have the EDS file installed. By right clicking the device you can select install EDS and then walk through the installation steps.</p>

<p class="wp-block-paragraph">Learn more about DMC&rsquo;s <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/allen-bradley-plc-programming">Allen Bradley PLC Programming services </a>and <a href="/contact">contact us</a> with any inquiries.&nbsp;</p>
<p>The post <a href="https://static.dmcinfo.com/blog/20106/connecting-to-an-allen-bradley-plc-through-an-ewon-module/">Connecting to an Allen-Bradley PLC through an eWON Module</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Advantages of Siemens Multiuser Commissioning Mode</title>
		<link>https://static.dmcinfo.com/blog/20120/advantages-of-siemens-multiuser-commissioning-mode/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Tue, 10 Mar 2020 07:29:18 +0000</pubDate>
				<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[Siemens PLC]]></category>
		<category><![CDATA[Multiuser Commissioning]]></category>
		<category><![CDATA[PLC Programming]]></category>
		<category><![CDATA[TIA Portal]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/20120/advantages-of-siemens-multiuser-commissioning-mode/</guid>

					<description><![CDATA[<p>In this blog, we will discuss the numerous advantages of using Siemens Multiuser Commissioning Mode. Siemens Multiuser is a powerful tool allowing for multiple engineers to edit a single program in tandem. Check out my blog on Siemens Multiuser Tips and Tricks for some additional information as well. What? Multi-User Server (MUS) Commissioning Mode is [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/20120/advantages-of-siemens-multiuser-commissioning-mode/">Advantages of Siemens Multiuser Commissioning Mode</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In this blog, we will discuss the numerous advantages of using Siemens Multiuser Commissioning Mode. Siemens Multiuser is a powerful tool allowing for multiple engineers to edit a single program in tandem. Check out my blog on <a href="https://static.dmcinfo.com/blog/20542/siemens-multiuser-tips-and-tricks/">Siemens Multiuser Tips and Tricks</a> for some additional information as well.</p>



<h2 class="wp-block-heading" id="h-what">What?</h2>



<p class="wp-block-paragraph">Multi-User Server (MUS) Commissioning Mode is a TIA Portal tool used to ease the commissioning process when multiple engineers are making online changes and downloading concurrently.</p>



<h2 class="wp-block-heading" id="h-why">Why?</h2>



<p class="wp-block-paragraph">The main advantage of using Commissioning Mode is the ability to ensure consistency between the server project and the PLC while multiple users are downloading to the PLC. This feature will also alleviate the headache of having to coordinate download efforts and ensure a consistent program between many local sessions or even single-user sessions.</p>



<p class="wp-block-paragraph">One common theme of using MUS while commissioning is the potential to see offline/online differences with the PLC when they aren’t really there. Timestamp differences are not handled automatically, so if someone performs a download to the PLC that comes with a timestamp, other engineers (even after refreshing from the server copy) will see differences between their project and the project downloaded to the PLC.</p>



<p class="wp-block-paragraph"><span style="font-size:110%;"><u><strong>Without Commissioning Mode</strong></u></span></p>



<p class="wp-block-paragraph">After downloading to the PLC from the Session B project, it shows offline/online consistency, but Session A now shows conflicts. This typically happens when the order of <strong>Download/Check-in/Refresh</strong> is not done in the correct order and is usually a result of a timestamp difference between the projects. When downloading from Session A at this point, Session B (even when up to date with the server copy) will still show online/offline differences.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/1-local-sessions-a-b.png" alt="LOCAL SESSIONS"/></figure>



<p class="wp-block-paragraph">If you complete a comparison in Project A for what’s different, it will show consistency between the online and offline projects. This can be attributed to timestamp differences that pop up depending on the order of operations mentioned above.</p>



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



<p class="wp-block-paragraph"><span style="font-size:110%;"><u><strong>Commissioning Mode Enabled</strong></u></span></p>



<p class="wp-block-paragraph">To incorporate changes made when commissioning mode is turned on, simply download the changes to the server. This will also check the changes into the server copy to ensure consistency. This process will also make time stamps consistent across projects, eliminating mystery offline/online discrepancies.</p>



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



<p class="wp-block-paragraph">When Commissioning mode is active, downloading the program will show the need to refresh the server in other local sessions.</p>



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



<h2 class="wp-block-heading" id="h-how">How?</h2>



<p class="wp-block-paragraph">You can turn on Commissioning Mode with a single click in MUS Administration, provided you meet certain conditions. Siemens lists these conditions as:</p>



<ul class="wp-block-list">
<li>All local session changes checked in and updated (current with server copy)</li>



<li>No selections (flags) are made in the local sessions</li>



<li>The PLC is downloaded with the most recent version of the server project</li>
</ul>



<p class="wp-block-paragraph">When you have met these conditions, and you click the Multiuser Commissioning, you’ll see the <span style="color:orange">operating mode</span> change to ‘Commissioning Mode.’ Siemens recommends leaving the <span style="color:red">‘Check for different data…’</span> option checked (which it is by default) and should only be deactivated if using an S7-300/400 CPU.</p>



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



<h2 class="wp-block-heading" id="h-caveats">Caveats?</h2>



<p class="wp-block-paragraph">This feature is available for TIA Portal V15.1 and will not be available for older versions of Portal. Multiuser server features go back a few versions, but this is new as of 15.1.</p>



<p class="wp-block-paragraph">Learn more about our <a href="/services/manufacturing-automation-and-intelligence/plc-programming/siemens-s7-plc-programming">Siemens Expertise</a> and <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/siemens-s7-plc-programming/">TIA Portal Development Services</a>. <a href="/contact">Contact us</a> with any project inquiries.</p>
<p>The post <a href="https://static.dmcinfo.com/blog/20120/advantages-of-siemens-multiuser-commissioning-mode/">Advantages of Siemens Multiuser Commissioning Mode</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Maximizing FactoryTalk View Site Edition Performance</title>
		<link>https://static.dmcinfo.com/blog/20445/maximizing-factorytalk-view-site-edition-performance/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Tue, 17 Dec 2019 13:03:25 +0000</pubDate>
				<category><![CDATA[HMI and SCADA]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[FactoryTalk]]></category>
		<category><![CDATA[PLC Programming]]></category>
		<category><![CDATA[Rockwell]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/20445/maximizing-factorytalk-view-site-edition-performance/</guid>

					<description><![CDATA[<p>DMC recently helped a client maximize the visual performance and response of a FactoryTalk View Site Edition (FTV SE) Local Station application talking to a Micro850 PLC, and we have some tips and tricks to share for getting the most out of your FTV SE applications! Our application had some lag when loading new screens [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/20445/maximizing-factorytalk-view-site-edition-performance/">Maximizing FactoryTalk View Site Edition Performance</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">DMC recently helped a client maximize the visual performance and response of a FactoryTalk View Site Edition (FTV SE) Local Station application talking to a Micro850 PLC, and we have some tips and tricks to share for getting the most out of your FTV SE applications!</p>

<p class="wp-block-paragraph">Our application had some lag when loading new screens because of the large amount of tags required to populate the screens. FTV SE can <a href="https://rockwellautomation.custhelp.com/app/answers/detail/a_id/607499">pull up to about 200 tags from a Micro 850 per second</a>; with larger PLC programs taking more time to send tags.</p>

<p class="wp-block-paragraph">For smaller HMI/PLC applications, all of the PLC tags from a Micro 850 can easily be pulled quickly while loading a screen. For larger applications, there may be some delay after opening a screen before all of the tags on a screen are loaded from the PLC and ready to populate their indicators.</p>

<p class="wp-block-paragraph">However, <a href="/services/manufacturing-automation-and-intelligence/hmi-and-scada-programming/rockwell-factorytalk">FactoryTalk</a> lets you load screens snappily, even when talking to smaller PLCs or when large amounts of data need to be loaded.</p>

<p class="wp-block-paragraph">A few tips and tricks are below!</p>

<ol class="wp-block-list">
 <li><strong>Decrease Maximum Tag Update Rate (per Screen)</strong> &#8211; This rate controls the shortest possible time it will take the FactoryTalk application to acquire or send a tag. This is important for buttons and indicators that need to have a fast&nbsp;response, as well as for loading screens quickly.

 <ol class="wp-block-list" style="list-style-type:lower-alpha">
  <li style="margin-bottom:10px; margin-top:10px;">To access this setting, right-click on a screen, select <strong>Display Settings</strong>, and under the <strong>Properties</strong> window, select the drop-down for <strong>Maximum Tag Update Rate</strong>. The default setting is 1 second; this may appear slow for most applications. A rate of 0.25 or 0.1 seconds will usually allow the screen to react without visible lag.<br />
  <img decoding="async" alt="max tag update" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Factory-talk-performance-step1_1.png"  /></li>
  <li style="margin-bottom:10px">This may have different levels of impact with different PLC platforms &#8211; this should be a good solution for fast performance with the Logix line of processors. We found that additional steps were needed with the smaller Micro800 line.</li>
  <li style="margin-bottom:10px">Keep in mind that your application may not be able to keep up with faster Tag Update Rate setpoints. This is dependent on the number of tags you have on the screen and the number of tags that are being fetched in the background (read on to learn more about background fetching!)</li>
 </ol>
 </li>
 <li><strong>Add Screen Caching</strong> &#8211; FactoryTalk View Site Edition&apos;s default behavior is to close any screens that aren&apos;t actively being displayed. This minimizes PC resource usage and allows you to edit screens in an active application (one of my favorite features). However, you can individually configure each screen to be cached, so that the screen is kept in memory even when it isn&apos;t shown on the screen. This greatly improves behavior for laggy screens.
 <ol class="wp-block-list" style="list-style-type:lower-alpha">
  <li style="margin-bottom:10px; margin-top:10px;">To access this setting, right-click on a screen, select <strong>Display Settings</strong>, and under the <strong>Properties</strong> window, choose <strong>Yes</strong> for <strong>Cache After Displaying</strong>.</li>
  <li style="margin-bottom:10px">You also have the option to select whether the screen is <strong>Always Updating</strong> or not. <strong>Always Updating</strong> is a good selection for screens that don&apos;t populate immediately even when cached &#8211; we found this was the best choice for most of our larger screens with lots of tags. Keep in mind that if the screen is Always Updating, it will always be polling tags from the PLC. This may influence the update rate of tags on other screens in your application.<br />
  <img decoding="async" alt="updating selection" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/factorytalk-performance-step2.png"  /></li>
 </ol>
 </li>
 <li style="Margin-botton:10px"><strong>Add Screen Pre-Caching</strong> &#8211; If Screen Caching improved your application&apos;s performance, you may also want to consider Pre-Caching your screens! Pre-Caching pre-loads the screens while the application is starting up, without displaying them on the PC. Cached screens without pre-caching&nbsp;may still be slow to load the first time they&apos;re displayed; pre-caching makes the display pull from an already cached screen the first time that it&apos;s loaded.
 <ol class="wp-block-list" style="list-style-type:lower-alpha">
  <li style="Margin-botton:10px; margin-top:10px;">This can be done via a Startup Macro. Create a macro in the <strong>Explorer</strong> pane under <strong>Logic and Control &gt; Macros</strong>. Right-click to create a <strong>New</strong> Macro.<br />
  <img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/factorytalk-performance-step3.png"  /></li>
  <li style="Margin-botton:10px">In the Macro editor, add a call to the &quot;Display&quot; function for each screen that you&apos;d like to precache. Use the \Z flag to cache a screen <strong>without</strong> marking it as Always Updating. Use the \ZA flag to cache a screen and set the screen to Always Update. (A full description of this function and possible flags is available in the FTV help files as &quot;FactoryTalk View Site Edition Help &gt; FactoryTalk View commands &gt; Graphics commands &gt; Display&quot;)<br />
  <img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/factorytalk-performance-step3B.png"  /></li>
  <li style="Margin-botton:10px">When launching or creating your FTV SE Client with the <strong>FactoryTalk View SE Client Wizard</strong>, include your macro as the <strong>Startup Macro</strong>.<br />
  <img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/factorytalk-performance-step3C.png"  /></li>
 </ol>
 </li>
</ol>

<p class="wp-block-paragraph">If you follow these tips, you should have a fast and snappy HMI!</p>

<p class="wp-block-paragraph"><strong>Learn more about <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/allen-bradley-plc-programming">DMC&apos;s Rockwell Programming Services.</a></strong></p>
<p>The post <a href="https://static.dmcinfo.com/blog/20445/maximizing-factorytalk-view-site-edition-performance/">Maximizing FactoryTalk View Site Edition Performance</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Simple Motion Control With an S7-1200 PLC and a Pulse Train Output (PTO)</title>
		<link>https://static.dmcinfo.com/blog/20563/simple-motion-control-with-an-s7-1200-plc-and-a-pulse-train-output-pto/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Mon, 11 Nov 2019 14:35:53 +0000</pubDate>
				<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[Motion Control]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Siemens PLC]]></category>
		<category><![CDATA[PLC Programming]]></category>
		<category><![CDATA[S7-1200]]></category>
		<category><![CDATA[Tips]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/20563/simple-motion-control-with-an-s7-1200-plc-and-a-pulse-train-output-pto/</guid>

					<description><![CDATA[<p>Some people might be very comfortable with setting up basic digital and analog IO on a PLC but then are a little hesitant about motion control. Often, setting up motion can require drive commissioning, proper topology connections, and a lot of other specialized knowledge beyond basic IO setup. But what if you want to spin [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/20563/simple-motion-control-with-an-s7-1200-plc-and-a-pulse-train-output-pto/">Simple Motion Control With an S7-1200 PLC and a Pulse Train Output (PTO)</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Some people might be very comfortable with setting up basic digital and analog IO on a PLC but then are a little hesitant about motion control. Often, setting up motion can require drive commissioning, proper topology connections, and a lot of other specialized knowledge beyond basic IO setup. But what if you want to spin a motor that can be controlled with minimal extra hardware and setup? Well, the Siemens S7-1200 PLC and TIA portal make it extremely simple to add some basic motion to a project. So simple that be the end of this blog, you&rsquo;ll have an axis spinning.</p>

<p class="wp-block-paragraph">We&rsquo;ll assume you have either a stepper motor or servo with a built-in encoder that can be actuated by controller pulses. First, <strong>add the PLC to the project.</strong></p>

<figure class="wp-block-image"><img decoding="async" alt="add plc to project" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/add-plc-project.png"  /></figure>

<p class="wp-block-paragraph">Once added, go to&nbsp;<strong>Device configuration </strong>to do a standard setup, like setting the IP Address, and then enable the first pulse generator, <strong>PTO1/PWM1.</strong></p>

<figure class="wp-block-image"><img decoding="async" alt="enable pulse generator" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/enable-pulse-generator.png"  /></figure>

<p class="wp-block-paragraph">Be sure this pulse generator has the <strong>PTO signal type</strong>.</p>

<figure class="wp-block-image"><img decoding="async" alt="pto signal type on pulse generator" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/pto-signal-type.png"  /></figure>

<p class="wp-block-paragraph">Note that the Pulse output will be at <strong>Q0.0,</strong> and the direction output will be located at <strong>Q0.1</strong>. We can then wire these to our motor.</p>

<p class="wp-block-paragraph">Next, we need to <strong>create a tech object</strong>. Click<strong> &ldquo;Add new object&rdquo;</strong> under the <strong>Technology objects folder,</strong> and then select <strong>&ldquo;TO_AXIS_PTO.&rdquo;</strong></p>

<figure class="wp-block-image"><img decoding="async" alt="add to axid" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/add-to-axis-pto-obeckt.png"  /></figure>

<p class="wp-block-paragraph">Next, when you create the text object, select<strong> &ldquo;Pulse_1&rdquo;</strong>. Also, be sure to choose the correct position unit; Here I&rsquo;ve chosen <strong>degrees.</strong></p>

<figure class="wp-block-image"><img decoding="async" alt="select pulse 1" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/select-pulse-1.png"  /></figure>

<p class="wp-block-paragraph">Finally, at a minimum, you should enter the pulses per motor revolution and the load movement per motor revolution into the extended parameters. This step will ensure that your commanded speeds and positions are correct.</p>

<p class="wp-block-paragraph">If you are interested, now you have the full power of the technology object to go in much greater depth with your motion control configuration. For now, we want to get this done quickly, so we&rsquo;ll leave it at the mechanics&apos; parameters.</p>

<figure class="wp-block-image"><img decoding="async" alt="pulses per revolution" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/pulses-per-revolution-add.png"  /></figure>

<p class="wp-block-paragraph">Now our tech object is configured, and we can program some motion. We can now build up a lot of complicated ladder logic, but if all we want is to make the drive spin, we only need two blocks: <strong>MC_Power to enable it, and MC_MoveVelocity to get it moving.</strong></p>

<figure class="wp-block-image"><img decoding="async" alt="ladder blocks" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/two-moving-blocks-ladder.png"  /></figure>

<p class="wp-block-paragraph">Here, for the &ldquo;Axis&rdquo; inputs, I entered the<strong> Technology object</strong>. I put a &ldquo;true&rdquo; in the enable input for MC_Power for it to&nbsp;always be on, set the Velocity to 360.0 degrees per second (60 RPM), and then wired up a pushbutton from the first PLC digital input to the execute demand. I can now download the project to the PLC, press the button, and have a spinning motor!</p>

<p class="wp-block-paragraph">Of course, in a real production setting, you&rsquo;d want to have the ability to reset the drive if there is a fault, make absolute and relative position moves, and probably want a more thought out and formal structure to your code.</p>

<p class="wp-block-paragraph">I hope this example showed you how simple it is to get basic motion working on the S7-1200, so you can avoid headaches and spend more of your engineering effort on the specifics of your own use cases. There is quite a lot of cool stuff you can do with simple motion control.&nbsp;If you&rsquo;d like help with any of your motion problems simple or complex, please feel free to <a href="/contact">contact DMC.</a></p>

<p class="wp-block-paragraph">Learn more about our&nbsp;<a href="/services/manufacturing-automation-and-intelligence/motion-control-engineering-and-servo-systems">Motion Control expertise</a>&nbsp;and <a href="/services/manufacturing-automation-and-intelligence/plc-programming">PLC programming services</a>.&nbsp;</p>
<p>The post <a href="https://static.dmcinfo.com/blog/20563/simple-motion-control-with-an-s7-1200-plc-and-a-pulse-train-output-pto/">Simple Motion Control With an S7-1200 PLC and a Pulse Train Output (PTO)</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PLC Cycle Time</title>
		<link>https://static.dmcinfo.com/blog/21150/plc-cycle-time/</link>
		
		<dc:creator><![CDATA[Joshua Zimmerle]]></dc:creator>
		<pubDate>Mon, 12 Aug 2019 14:26:39 +0000</pubDate>
				<category><![CDATA[Allen Bradley PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Siemens PLC]]></category>
		<category><![CDATA[Cycle Time]]></category>
		<category><![CDATA[PLC Programming]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/21150/plc-cycle-time/</guid>

					<description><![CDATA[<p>Modern PLCs are fast, but with only a few exceptions, they can only do one thing at a time. This is because PLCs are built around single-core processors. In this post, I&#8217;ll go over some of the low-level PLC concepts that both make PLCs versatile and limited in their capabilities. Cyclic vs. Interrupt Code Code [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21150/plc-cycle-time/">PLC Cycle Time</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Modern PLCs are fast, but with only a few exceptions, they can only do one thing at a time. This is because PLCs are built around single-core processors. In this post, I&rsquo;ll go over some of the low-level PLC concepts that both make PLCs versatile and limited in their capabilities.</p>

<h2 class="wp-block-heading">Cyclic vs. Interrupt Code</h2>

<p class="wp-block-paragraph">Code on a PLC is called either cyclically or by an interrupt. Cyclic code runs start to finish repeatedly as fast as possible, so long as the CPU is not interrupted by an interrupt call. Interrupts pause the code currently running on CPU, call the interrupt code, and then once the interrupt code is complete, resume what the CPU was doing. Most PLCs can tie interrupts to cyclic timers, startup, value changes, and/or errors. Interrupts can also interrupt other interrupts if they are of a higher priority.</p>

<figure class="wp-block-image"><img decoding="async" alt="plc cpu" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/plc-cpu.png"  /></figure>

<p class="wp-block-paragraph">The&nbsp;diagram above shows what a PLC&rsquo;s CPU spends its time doing. The pink represents cyclic code that would take the CPU 5ms to complete if it weren&rsquo;t interrupted. The green represents the communication load on the CPU taking up to 0.15ms of every 1ms, and blue is the motion control code called every 5ms by a cyclic interrupt. In this example, the motion control interrupt is the highest priority, meaning it can interrupt communication and cyclic code.</p>

<p class="wp-block-paragraph">Cyclic code is commonly referred to as the main PLC code. Siemens refers to cyclic code as a <strong>program cycle</strong> or <strong>OB1, </strong>and <a href="/services/manufacturing-automation-and-intelligence/plc-programming/allen-bradley-plc-programming">Allen-Bradley</a> calls it a <strong>continues task</strong>. Interrupts, other organizational blocks in Siemens or event tasks in Allen-Bradley, allow the designer to specify precisely when the interrupt code should run in relation to an event or a timer.</p>

<p class="wp-block-paragraph">For example, high-speed counters are typically tied to hardware interrupts, allowing a hardware input to increase the count in the PLC immediately. <a href="/latest-thinking/blog/id/9826/using-a-high-speed-counters-hardware-interrupt-to-peripherally-write-to-an-output-on-a-siemens-1200-plc">View this blog</a> for examples of high-speed counters. This means that the high-speed counter can count multiple inputs before the PLCs main code has completed a full cycle. Similarly, PID control loops and motion control code are offend tied to cyclic interrupts, with varying cycle times. Physical systems that are slow to respond can be tied to cyclic interrupts with long cycles. This, in turn, reduces the CPU load. Systems that are quick to respond can be tied to much faster cycles allowing for tighter control, at the cost of CPU load.</p>

<h2 class="wp-block-heading">Cycle Time</h2>

<p class="wp-block-paragraph"><strong>PLC cycle time</strong> is defined as the time it takes to run the cyclic code start to finish once with interrupts. Because of the number and frequency of interrupts between cycles, cycle times also very. In most cases, we are concerned with the maximum cycle time since this corresponds to how long it will take the PLC to respond. A general rule of thumb is to assume that the PLC could take as long as twice the maximum cycle time to respond. This means if we have a running signal indicator light, it could be up to twice the max cycle time between when the PLC gets the running signal and the light turns on.</p>

<p class="wp-block-paragraph">Most PLCs monitor the cycle time and will alarm if the cycle time exceeds a maximum threshold. The specific threshold should be configured based on the application and the maximum acceptable response time of the PLC. Cycle times are particularly important in safety applications where the PLC&rsquo;s response time can add to the response times of other components.</p>

<h2 class="wp-block-heading">Reducing Cycle Time</h2>

<p class="wp-block-paragraph">There are a few methods to decrease the PLC&apos;s response time if cycle times must be reduced. Firstly, consider if the PLC&rsquo;s CPU can be upgraded. A faster CPU will execute code faster and reduce the overall cycle time. This method is particularly effective for projects that have a lot of motion control and PID control loops, as these functions are generally very CPU intensive.</p>

<p class="wp-block-paragraph"><strong>Siemens 1511 CPU (14.9ms Cycle Time)</strong></p>

<p class="wp-block-paragraph"><strong><figure class="wp-block-image"><img decoding="async" alt="siemens 1511 cpu" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/siemens-1511-cpu.png"  /></figure></strong></p>

<p class="wp-block-paragraph"><strong>Siemens 1517 CPU (6.3ms Cycle Time)</strong></p>

<p class="wp-block-paragraph"><strong><figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/siemens-1517-cpu.png"  /></figure></strong></p>

<p class="wp-block-paragraph">The next aspect to consider is the communication load. Communication load is defined as how much of the CPU&rsquo;s time is spent communicating with other devices, and typically ranges from 15% to 50%. Upgrading the CPU can help reduce the communication load some, but for the most part, reducing communication load is a function of the communication method(s) and quantity. Consolidating the number of devices the PLC must communicate with and/or using communication methods with less overhead can both help but are often harder to implement.</p>

<p class="wp-block-paragraph">Another method for reducing cycle time is optimizing the code itself. Moving pieces of code that do not have to run every cycle into cyclic or other interrupts can help reduce mean cycle times, but may not have much effect on the maximum cycle time. Moving code into interrupts can also make testing the cycle time more difficult as the interrupts may or may not occur in every cycle.</p>

<h2 class="wp-block-heading">Monitoring Cycle Time</h2>

<p class="wp-block-paragraph"><u><strong>Siemens&apos; S7 TIA Portal PLCS:</strong></u></p>

<p class="wp-block-paragraph">TIA Portal has a built-in tool that allows you to monitor the cycle time of a physical PLC or a simulation of the PLC. To monitor the cycle time, first, go online with the PLC, upload the PLCs code, and then open <strong>Online &amp; Diagnostics</strong>. Under <strong>Diagnostics&gt;Cycle time</strong>, you&rsquo;ll see a bar chart with the current PLC cycle time. The light blue box represents the allowable cycle time, and a red bar indicates that cycle time has exceeded the maximum. This is shown in the diagram below.&nbsp;</p>

<figure class="wp-block-image"><img decoding="async" alt="tia portal cycle time" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/tia-portal-cycle-time.png"  /></figure>

<p class="wp-block-paragraph">To change the allowable cycle time, open the <strong>PLC&rsquo;s Device configuration </strong>and under <strong>General&gt;Cycle</strong>, update the maximum cycle time. You will have to be offline with the PLC to change this value and then redownload to the PLC for the change to take effect. Remember that the max observed cycle time may not be the actual max cycle time. This can happen if the code running on the PLC has many interrupts, or long and looping pieces of code called by interrupts.</p>

<p class="wp-block-paragraph"><u><strong>Allen-Bradley and Other PLCs:</strong></u></p>

<p class="wp-block-paragraph">Finding the cycle time of other PLCs can be done more manually, although it&rsquo;s no less relevant or useful for developing well-optimized code. The simplest way is to check the system time at the start of each cyclic call and compare the current system time to the previous system time. This method will include the overhead time the PLC takes to communicate and scan I/O. With a little more logic, you can easily find the min, max, and mean cycle times.</p>

<p class="wp-block-paragraph">Understanding cycle time, cyclic calls, and interrupt calls is key to architecting successful PLC code and just one of the areas DMC excels at. Good architecture early on in a project can save time and allow the uses of more cost-effective hardware, while still meeting project requirements explicit and implicit.</p>

<p class="wp-block-paragraph">Learn more about <a href="/services/manufacturing-automation-and-intelligence/plc-programming">DMC&apos;s PLC Programming services</a> and <a href="/contact">contact us</a> to get started on your next PLC Programming project.</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21150/plc-cycle-time/">PLC Cycle Time</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
