<?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>Openness Archives | DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/tag/openness/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Mon, 15 Jun 2026 20:53:29 +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>Openness Archives | DMC, Inc.</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Using XML Templates in TIA Openness</title>
		<link>https://static.dmcinfo.com/blog/21173/using-xml-templates-in-tia-openness/</link>
		
		<dc:creator><![CDATA[Patrick Smith]]></dc:creator>
		<pubDate>Thu, 01 Aug 2019 09:35:26 +0000</pubDate>
				<category><![CDATA[HMI and SCADA]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[Siemens PLC]]></category>
		<category><![CDATA[Function Blocks]]></category>
		<category><![CDATA[Openness]]></category>
		<category><![CDATA[TIA Portal]]></category>
		<category><![CDATA[XML]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/21173/using-xml-templates-in-tia-openness/</guid>

					<description><![CDATA[<p>In my previous post, we looked at how Openness formats the XML files that it uses to create objects in TIA Portal. After reviewing some examples, we concluded that creating code in XML can be very complicated and that it is best to use existing blocks to generate XML using Openness. On the surface, that [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21173/using-xml-templates-in-tia-openness/">Using XML Templates in TIA Openness</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="/latest-thinking/blog/id/9908/how-to-read-an-openness-xml-file">In my previous post</a>, we looked at how Openness formats the XML files that it uses to create objects in TIA Portal. After reviewing some examples, we concluded that creating code in XML can be very complicated and that it is best to use existing blocks to generate XML using Openness.</p>



<p class="wp-block-paragraph">On the surface, that doesn’t seem very useful, since writing code requires you to have already written code. However, another way to look at it is that by writing your desired code once, you can use Openness to automatically generate the code as much as needed. By creating XML templates, your Openness application can be used to quickly generate new code from an existing codebase.</p>



<h2 class="wp-block-heading" id="h-what-is-a-template-for">What is a Template For?</h2>



<p class="wp-block-paragraph">Let’s take a step back and consider when generating code from a template using Openness is more useful than creating the necessary code yourself in TIA Portal. Imagine you are in charge of maintaining the PLC code for your company’s line of modular conveyor systems. When a customer wants to order a conveyor system, they choose from the dozens of available modules and arrange them in the configuration that suits their needs. Since you’re a smart programmer, you’ve created a set of function blocks that can control each module.</p>



<p class="wp-block-paragraph">When it comes time to develop the final PLC program, you have to copy in your existing modules, link them to the appropriate inputs and outputs, create the handshakes for passing data between each module, collect each module’s fault codes and send them to the master controller, and the list can go on and on. For large systems, this can become very tedious and time-consuming. However, you can take your modules, export them to XML, and with a little tweaking, allow Openness to automatically insert the relevant data and create the code for you.</p>



<h2 class="wp-block-heading" id="h-creating-a-template">Creating a Template</h2>



<p class="wp-block-paragraph">The first step of automating your code generation is to create your template files. We’ll start by using Openness to create the XML file, and then we’ll add some modifications that will allow our Openness application to fill in data for us.</p>



<p class="wp-block-paragraph">To keep things simple, we’ll assume we have 3 modules that have been packaged into function blocks called <strong>fbModule1</strong>,<strong> fbModule2</strong>, and <strong>fbModule3</strong>. Each module has the same block interface. There’s an input for the motor feedback, an interlock signal from the upstream module, a module ID that the block uses for fault messaging, an output to turn on the motor, and an interlock sent to the downstream module.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Module-example.png" alt="fb module example"/></figure>



<p class="wp-block-paragraph">Since the modules are completely self-contained blocks, in this case, there’s no need to create templates for them. As long as they are part of the final TIA Portal project, we just need a template for creating the block calls and assigning the tags. We’ll also need a template for the instance data blocks, a template for creating the I/O tags, and a template for the global data block that will contain the handshake bits.</p>



<p class="wp-block-paragraph">Let’s start with the I/O tags. I’ve created a tag table called IO and added one input and one output.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e"><span style="background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e">XML</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>&lt;Document>
&lt;SW.Tags.PlcTagTable ID="0">
    &lt;AttributeList>
      &lt;Name>IO&lt;/Name>
    &lt;/AttributeList>
    &lt;ObjectList>
      &lt;SW.Tags.PlcTag ID="1" CompositionName="Tags">
        &lt;AttributeList>
          &lt;DataTypeName>Bool&lt;/DataTypeName>
          &lt;ExternalAccessible>true&lt;/ExternalAccessible>
          &lt;ExternalVisible>true&lt;/ExternalVisible>
          &lt;ExternalWritable>true&lt;/ExternalWritable>
          &lt;LogicalAddress>%I0.0&lt;/LogicalAddress>
          &lt;Name>I_Section1Running&lt;/Name>
        &lt;/AttributeList>
        &lt;ObjectList>
          &lt;MultilingualText ID="2" CompositionName="Comment">
            &lt;ObjectList>
              &lt;MultilingualTextItem ID="3" CompositionName="Items">
                &lt;AttributeList>
                  &lt;Culture>en-US&lt;/Culture>
                  &lt;Text>Section 1 motor running&lt;/Text>
                &lt;/AttributeList>
              &lt;/MultilingualTextItem>
            &lt;/ObjectList>
          &lt;/MultilingualText>
        &lt;/ObjectList>
      &lt;/SW.Tags.PlcTag>
	  &lt;SW.Tags.PlcTag ID="10" CompositionName="Tags">
        &lt;AttributeList>
          &lt;DataTypeName>Bool&lt;/DataTypeName>
          &lt;ExternalAccessible>true&lt;/ExternalAccessible>
          &lt;ExternalVisible>true&lt;/ExternalVisible>
          &lt;ExternalWritable>true&lt;/ExternalWritable>
          &lt;LogicalAddress>%Q0.0&lt;/LogicalAddress>
          &lt;Name>Q_Section1Run&lt;/Name>
        &lt;/AttributeList>
        &lt;ObjectList>
          &lt;MultilingualText ID="11" CompositionName="Comment">
            &lt;ObjectList>
              &lt;MultilingualTextItem ID="12" CompositionName="Items">
                &lt;AttributeList>
                  &lt;Culture>en-US&lt;/Culture>
                  &lt;Text>Run section 1 motor&lt;/Text>
                &lt;/AttributeList>
              &lt;/MultilingualTextItem>
            &lt;/ObjectList>
          &lt;/MultilingualText>
        &lt;/ObjectList>
      &lt;/SW.Tags.PlcTag>
	 &lt;/Document></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: #808080">&lt;</span><span style="color: #569CD6">Document</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">SW.Tags.PlcTagTable</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;0&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">IO</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">SW.Tags.PlcTag</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;1&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Tags&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">DataTypeName</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Bool</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">DataTypeName</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ExternalAccessible</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ExternalAccessible</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ExternalVisible</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ExternalVisible</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ExternalWritable</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ExternalWritable</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">LogicalAddress</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">%I0.0</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">LogicalAddress</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">I_Section1Running</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;2&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Comment&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;3&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Items&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">en-US</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Text</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Section 1 motor running</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Text</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">SW.Tags.PlcTag</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">SW.Tags.PlcTag</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;10&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Tags&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">DataTypeName</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Bool</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">DataTypeName</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ExternalAccessible</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ExternalAccessible</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ExternalVisible</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ExternalVisible</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ExternalWritable</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ExternalWritable</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">LogicalAddress</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">%Q0.0</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">LogicalAddress</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Q_Section1Run</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;11&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Comment&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;12&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Items&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">en-US</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Text</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Run section 1 motor</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Text</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">SW.Tags.PlcTag</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	 </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Document</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p class="wp-block-paragraph">This XML needs to be broken into 2 parts: the XML for the tag table, where we will add tags, and the XML for a tag, which we will fill in with the relevant data. To create these templates, delete the data that we will replicate, and add a placeholder that your application will use to perform the replacement. I like the syntax <strong>{Placeholder_Name}</strong>.</p>



<p class="wp-block-paragraph">Here are my templates for the tag table and tags.</p>



<p class="wp-block-paragraph"><strong>Tag Table Template:</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e"><span style="background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e">XML</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>&lt;Document>
  &lt;SW.Tags.PlcTagTable ID="0">
    &lt;AttributeList>
      &lt;Name>IO&lt;/Name>
    &lt;/AttributeList>
    &lt;ObjectList>
		{Tags}
	&lt;/ObjectList>
   &lt;/SW.Tags.PlcTagTable>
 &lt;/Document></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: #808080">&lt;</span><span style="color: #569CD6">Document</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">SW.Tags.PlcTagTable</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;0&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">IO</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">		{Tags}</span></span>
<span class="line"><span style="color: #D4D4D4">	</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">   </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">SW.Tags.PlcTagTable</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4"> </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Document</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p class="wp-block-paragraph"><strong>Tag Template:</strong></p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e"><span style="background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e">XML</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>&lt;SW.Tags.PlcTag ID="{Iterate}" CompositionName="Tags">
&lt;AttributeList>
       &lt;DataTypeName>Bool&lt;/DataTypeName>
       &lt;ExternalAccessible>true&lt;/ExternalAccessible>
       &lt;ExternalVisible>true&lt;/ExternalVisible>
       &lt;ExternalWritable>true&lt;/ExternalWritable>
	   &lt;LogicalAddress>{Address}&lt;/LogicalAddress>
	   &lt;Name>{TagName}&lt;/Name>
&lt;/AttributeList>
		&lt;ObjectList>
          &lt;MultilingualText ID="{Iterate}" CompositionName="Comment">
            &lt;ObjectList>
              &lt;MultilingualTextItem ID="{Iterate}" CompositionName="Items">
                &lt;AttributeList>
                  &lt;Culture>en-US&lt;/Culture>
                  &lt;Text>{Tag Comment}&lt;/Text>
                &lt;/AttributeList>
              &lt;/MultilingualTextItem>
            &lt;/ObjectList>
          &lt;/MultilingualText>
        &lt;/ObjectList>
&lt;/SW.Tags.PlcTag></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: #808080">&lt;</span><span style="color: #569CD6">SW.Tags.PlcTag</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{Iterate}&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Tags&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">       </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">DataTypeName</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Bool</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">DataTypeName</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">       </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ExternalAccessible</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ExternalAccessible</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">       </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ExternalVisible</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ExternalVisible</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">       </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ExternalWritable</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ExternalWritable</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	   </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">LogicalAddress</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">{Address}</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">LogicalAddress</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	   </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">{TagName}</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">		</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{Iterate}&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Comment&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{Iterate}&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Items&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">en-US</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Text</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">{Tag Comment}</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Text</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">SW.Tags.PlcTag</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p class="wp-block-paragraph">In the Openness application, for each module, we would use the tag template to fill in<strong> {Address}</strong>, <strong>{TagName}</strong>, <strong>{TagComment}</strong>, and <strong>{Iterate}</strong>. These tags would then be grouped together and inserted into the tag template at the <strong>{Tags}</strong> placeholder. How you get this data is up to you. An easy solution is to read in a user-created Excel table, such as the following.</p>



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



<p class="wp-block-paragraph">The application would create the input and output tags for each module and could be set up to give specific tag names depending on the section and module. For example, the tags for Section 1 could be named “I_Section1MotorRunning” and “Q_RunSection1Motor”. The final XML file would contain all the I/O tags, ready to be imported into the project.</p>



<p class="wp-block-paragraph">A similar process could be done for the<strong> global data block.</strong> The format is similar to that of the tag table. The resulting templates would look something like the code below.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e"><span style="background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e">XML</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>&lt;Document>
  &lt;SW.Blocks.GlobalDB ID="0">
    &lt;AttributeList>
      &lt;AutoNumber>true&lt;/AutoNumber>
      &lt;HeaderAuthor />
      &lt;HeaderFamily />
      &lt;HeaderName />
      &lt;HeaderVersion>0.1&lt;/HeaderVersion>
      &lt;Interface>
		 &lt;Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v2">
  			&lt;Section Name="Static">
			{Tags}
			&lt;/Section>
		&lt;/Sections>
	 &lt;IsOnlyStoredInLoadMemory>false&lt;/IsOnlyStoredInLoadMemory>
      &lt;IsRetainMemResEnabled>false&lt;/IsRetainMemResEnabled>
      &lt;IsWriteProtectedInAS>false&lt;/IsWriteProtectedInAS>
      &lt;MemoryLayout>Optimized&lt;/MemoryLayout>
      &lt;MemoryReserve>100&lt;/MemoryReserve>
      &lt;Name>dbHandshakes&lt;/Name>
      &lt;Number>6&lt;/Number>
      &lt;ProgrammingLanguage>DB&lt;/ProgrammingLanguage>
    &lt;/AttributeList>
    &lt;ObjectList>
      &lt;MultilingualText ID="1" CompositionName="Comment">
        &lt;ObjectList>
          &lt;MultilingualTextItem ID="2" CompositionName="Items">
            &lt;AttributeList>
              &lt;Culture>en-US&lt;/Culture>
              &lt;Text />
            &lt;/AttributeList>
          &lt;/MultilingualTextItem>
        &lt;/ObjectList>
      &lt;/MultilingualText>
      &lt;MultilingualText ID="3" CompositionName="Title">
        &lt;ObjectList>
          &lt;MultilingualTextItem ID="4" CompositionName="Items">
            &lt;AttributeList>
              &lt;Culture>en-US&lt;/Culture>
              &lt;Text />
            &lt;/AttributeList>
          &lt;/MultilingualTextItem>
        &lt;/ObjectList>
      &lt;/MultilingualText>
    &lt;/ObjectList>
  &lt;/SW.Blocks.GlobalDB>
&lt;/Document></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: #808080">&lt;</span><span style="color: #569CD6">Document</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">SW.Blocks.GlobalDB</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;0&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AutoNumber</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AutoNumber</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderAuthor</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderFamily</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderName</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderVersion</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">0.1</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">HeaderVersion</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Interface</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">		 </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Sections</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">xmlns</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;http://www.siemens.com/automation/Openness/SW/Interface/v2&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  			</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Section</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Static&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">			{Tags}</span></span>
<span class="line"><span style="color: #D4D4D4">			</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Section</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">		</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Sections</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	 </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">IsOnlyStoredInLoadMemory</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">false</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">IsOnlyStoredInLoadMemory</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">IsRetainMemResEnabled</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">false</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">IsRetainMemResEnabled</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">IsWriteProtectedInAS</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">false</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">IsWriteProtectedInAS</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MemoryLayout</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Optimized</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MemoryLayout</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MemoryReserve</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">100</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MemoryReserve</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">dbHandshakes</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Number</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">6</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Number</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ProgrammingLanguage</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">DB</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ProgrammingLanguage</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;1&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Comment&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;2&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Items&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">en-US</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Text</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;3&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Title&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;4&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Items&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">en-US</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Text</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">SW.Blocks.GlobalDB</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Document</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p class="wp-block-paragraph">The data block tags would use the tag template, and the {TagName} and {TagComment} fields would be filled in. The created tags would be used in the {Tags} placeholder in the data block template. Creating the instance data block template is very simple since each data block can be in a separate XML file. All that needs to be filled in is the function block name, the data block name, and the datablock number.</p>



<p class="wp-block-paragraph">This assumes that each module has the same block interface. If any module was different, it would need its own instance data block template. Note that I’ve hidden the Interface section in the below template to make it easier to read.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e"><span style="background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e">XML</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>&lt;Document>
&lt;SW.Blocks.InstanceDB ID="0">
    &lt;AttributeList>
      &lt;AutoNumber>false&lt;/AutoNumber>
      &lt;HeaderAuthor />
      &lt;HeaderFamily />
      &lt;HeaderName />
      &lt;HeaderVersion>0.1&lt;/HeaderVersion>
	  &lt;InstanceOfName>{FunctionBlockName}&lt;/InstanceOfName>
      &lt;Interface>
	&lt;MemoryLayout>Optimized&lt;/MemoryLayout>
      &lt;Name>{BlockName}&lt;/Name>
      &lt;Number>{BlockNumber}&lt;/Number>
      &lt;ProgrammingLanguage>DB&lt;/ProgrammingLanguage>
    &lt;/AttributeList>
	&lt;ObjectList>
      &lt;MultilingualText ID="1" CompositionName="Comment">
        &lt;ObjectList>
          &lt;MultilingualTextItem ID="2" CompositionName="Items">
            &lt;AttributeList>
              &lt;Culture>en-US&lt;/Culture>
              &lt;Text />
            &lt;/AttributeList>
          &lt;/MultilingualTextItem>
        &lt;/ObjectList>
      &lt;/MultilingualText>
      &lt;MultilingualText ID="3" CompositionName="Title">
        &lt;ObjectList>
          &lt;MultilingualTextItem ID="4" CompositionName="Items">
            &lt;AttributeList>
              &lt;Culture>en-US&lt;/Culture>
              &lt;Text />
            &lt;/AttributeList>
          &lt;/MultilingualTextItem>
        &lt;/ObjectList>
      &lt;/MultilingualText>
    &lt;/ObjectList>
  &lt;/SW.Blocks.InstanceDB>
&lt;/Document></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: #808080">&lt;</span><span style="color: #569CD6">Document</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;</span><span style="color: #569CD6">SW.Blocks.InstanceDB</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;0&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AutoNumber</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">false</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AutoNumber</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderAuthor</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderFamily</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderName</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderVersion</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">0.1</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">HeaderVersion</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">InstanceOfName</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">{FunctionBlockName}</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">InstanceOfName</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Interface</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MemoryLayout</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Optimized</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MemoryLayout</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">{BlockName}</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Name</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Number</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">{BlockNumber}</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Number</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ProgrammingLanguage</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">DB</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ProgrammingLanguage</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;1&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Comment&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;2&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Items&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">en-US</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Text</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;3&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Title&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;4&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Items&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">en-US</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Text</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">SW.Blocks.InstanceDB</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Document</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p class="wp-block-paragraph">Finally, we can create our template for the block calls. In this case, I’ll call all the modules from our PLC’s OB1. We will need 2 templates again; one for the network, and one for the constant that will be linked to the iInModuleID parameter. I’ve hidden a few sections for readability.</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">XML</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>&lt;Member Name="{Name}" Datatype="Int" Accessibility="Public">
	&lt;Comment>
	  &lt;MultiLanguageText Lang="en-US">{Comment}&lt;/MultiLanguageText>
	&lt;/Comment>
	  &lt;StartValue>{Value}&lt;/StartValue>
&lt;/Member></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: #808080">&lt;</span><span style="color: #569CD6">Member</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{Name}&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Datatype</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Int&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Accessibility</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Public&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Comment</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultiLanguageText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Lang</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;en-US&quot;</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">{Comment}</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultiLanguageText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Comment</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">StartValue</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">{Value}</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">StartValue</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Member</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e"><span style="background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e">XML</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>&lt;SW.Blocks.CompileUnit ID="{Iterate}" CompositionName="CompileUnits">
      &lt;AttributeList>
        &lt;NetworkSource>
		&lt;FlgNet xmlns="http://www.siemens.com/automation/Openness/SW/NetworkSource/FlgNet/v1">
  &lt;Parts>
    &lt;Access Scope="GlobalVariable" UId="{Iterate}">
      &lt;Symbol>
        &lt;Component Name="{MotorRunningTag}" />
      &lt;/Symbol>
    &lt;/Access>
    &lt;Access Scope="GlobalVariable" UId="{Iterate}">
      &lt;Symbol>
        &lt;Component Name="dbHandshakes" />
        &lt;Component Name="{InterlockInputTag}" />
      &lt;/Symbol>
    &lt;/Access>
    &lt;Access Scope="LocalConstant" UId="{Iterate}">
      &lt;Constant Name="{ModuleIDTag}" />
    &lt;/Access>
    &lt;Access Scope="GlobalVariable" UId="{Iterate}">
      &lt;Symbol>
        &lt;Component Name="{MotorRunTag}" />
      &lt;/Symbol>
    &lt;/Access>
    &lt;Access Scope="GlobalVariable" UId="{Iterate}">
      &lt;Symbol>
        &lt;Component Name="dbHandshakes" />
        &lt;Component Name="bSection1OK" />
      &lt;/Symbol>
    &lt;/Access>
    &lt;Call UId="26">
      &lt;CallInfo Name="fbModule3" BlockType="FB">
        &lt;Instance UId="27" Scope="GlobalVariable">
          &lt;Component Name="dbIns_Section1" />
        &lt;/Instance>
        &lt;Parameter Name="bInMotorRunning" Section="Input" Type="Bool" />
        &lt;Parameter Name="bInOkToRun" Section="Input" Type="Bool" />
        &lt;Parameter Name="iInModuleID" Section="Input" Type="Int" />
        &lt;Parameter Name="bOutRunMotor" Section="Output" Type="Bool" />
        &lt;Parameter Name="bOutModuleOK" Section="Output" Type="Bool" />
      &lt;/CallInfo>
    &lt;/Call>
  &lt;/Parts>
  &lt;Wires>
  &lt;/FigNet>
  &lt;/NetworkSource>
  &lt;ProgrammingLanguage>LAD&lt;/ProgrammingLanguage>
 &lt;/AttributeList>
	&lt;ObjectList>
&lt;/SW.Blocks.CompileUnit></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: #808080">&lt;</span><span style="color: #569CD6">SW.Blocks.CompileUnit</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{Iterate}&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;CompileUnits&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">NetworkSource</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">		</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">FlgNet</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">xmlns</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;http://www.siemens.com/automation/Openness/SW/NetworkSource/FlgNet/v1&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Parts</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Access</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Scope</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;GlobalVariable&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{Iterate}&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Component</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{MotorRunningTag}&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Access</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Access</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Scope</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;GlobalVariable&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{Iterate}&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Component</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;dbHandshakes&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Component</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{InterlockInputTag}&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Access</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Access</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Scope</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;LocalConstant&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{Iterate}&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Constant</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{ModuleIDTag}&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Access</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Access</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Scope</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;GlobalVariable&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{Iterate}&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Component</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{MotorRunTag}&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Access</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Access</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Scope</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;GlobalVariable&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;{Iterate}&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Component</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;dbHandshakes&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Component</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;bSection1OK&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Access</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Call</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;26&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">CallInfo</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;fbModule3&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">BlockType</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;FB&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Instance</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;27&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Scope</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;GlobalVariable&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Component</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;dbIns_Section1&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Instance</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Parameter</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;bInMotorRunning&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Section</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Input&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Type</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Bool&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Parameter</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;bInOkToRun&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Section</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Input&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Type</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Bool&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Parameter</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;iInModuleID&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Section</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Input&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Type</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Int&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Parameter</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;bOutRunMotor&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Section</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Output&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Type</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Bool&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Parameter</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;bOutModuleOK&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Section</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Output&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Type</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Bool&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">CallInfo</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Call</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Parts</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Wires</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">FigNet</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">NetworkSource</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ProgrammingLanguage</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">LAD</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ProgrammingLanguage</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4"> </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">SW.Blocks.CompileUnit</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p class="wp-block-paragraph">The application will use the {Name}, {Comment}, and {Value} placeholders to create the constant tags. The block calls will require filling in all the input and output parameters, as well as the function block and instance data block. Once all the code elements have been generated from templates, they can be imported into the project. If all goes well, your project is now ready to run the system!</p>



<p class="wp-block-paragraph">While setting up these templates is a difficult and time-consuming process, it can have a lot of benefits in the long run. Once the templates are created, any future projects can be created with a few lines in Excel and the click of a button. It also makes code updates easy. Any changes to a template will be reflected in all projects that are then generated from the template.</p>



<p class="wp-block-paragraph">By letting Openness handle the low-level, repetitive details of your code, you can quickly layout a project architecture that makes use of clean, reusable code.</p>



<p class="wp-block-paragraph">Learn more about our <a href="/services/manufacturing-automation-and-intelligence/plc-programming">PLC Programming</a> and <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/siemens-s7-plc-programming/">TIA Development</a> Services. <a href="/contact">Contact us</a> for more information.</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21173/using-xml-templates-in-tia-openness/">Using XML Templates in TIA Openness</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Read an Openness XML File</title>
		<link>https://static.dmcinfo.com/blog/21358/how-to-read-an-openness-xml-file/</link>
		
		<dc:creator><![CDATA[Patrick Smith]]></dc:creator>
		<pubDate>Thu, 27 Jun 2019 08:36:02 +0000</pubDate>
				<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[Siemens PLC]]></category>
		<category><![CDATA[Function Blocks]]></category>
		<category><![CDATA[Openness]]></category>
		<category><![CDATA[TIA Portal]]></category>
		<category><![CDATA[XML]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/21358/how-to-read-an-openness-xml-file/</guid>

					<description><![CDATA[<p>In my previous post, I explained what TIA Openness is and how using it can streamline your development process. Since Openness uses XML files as the basis for its import and export functions, knowing how to understand these XML files is vital for creating and modifying code with Openness. Becoming fluent in the XML structure [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21358/how-to-read-an-openness-xml-file/">How to Read an Openness XML File</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In <a href="/latest-thinking/blog/id/9877/advantages-disadvantages-of-siemens-tia-openness">my previous post</a>, I explained what <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/siemens-s7-plc-programming/">TIA Openness</a> is and how using it can streamline your development process. Since Openness uses XML files as the basis for its import and export functions, knowing how to understand these XML files is vital for creating and modifying code with Openness.</p>



<p class="wp-block-paragraph">Becoming fluent in the XML structure of Openness is not a quick and easy process; it takes time and a lot of experience. However, with the basics I’ll cover in this post, you’ll have the tools and background you need to take your first steps.</p>



<h2 class="wp-block-heading" id="h-reading-an-xml-file">Reading an XML File</h2>



<p class="wp-block-paragraph">XML stands for <strong>eXtensible Markup Language</strong> and is a language used for storing data. Like HTML, it is a markup language, and is meant to be self-descriptive. XML is great for storing complex data structures since it encodes them in a hierarchical tag structure. Let’s take a look at a simple piece of XML.</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">XML</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>&lt;email>
	&lt;to>Alice&lt;/to>
	&lt;from>Bob&lt;/from>
	&lt;subject>XML&lt;/subject>
	&lt;message>Isn't XML the best?&lt;/message>
&lt;/email></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: #808080">&lt;</span><span style="color: #569CD6">email</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">to</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Alice</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">to</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">from</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Bob</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">from</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">subject</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">XML</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">subject</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">	</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">message</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Isn&apos;t XML the best?</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">message</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #808080">&lt;/</span><span style="color: #569CD6">email</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p class="wp-block-paragraph">This code represents an email. You can see that within the Email object, it contains information for To, From, Subject, and Message. These elements are children of the Email parent. Unlike HTML, XML has no predefined tags. Having no predefined tags allows the creator of XML to make those tags as descriptive as possible. XML also relies on other programs to read and write it; it does not do anything by itself. For the sample code above, someone must have created a program to store emails. In order to do something with those stored emails, there needs to be a program that converts the XML to a more human-friendly format.</p>



<p class="wp-block-paragraph">This is all that Openness does; it takes XML files that contain all the information needed for, say, a function block, reads them, and processes that information to make a new function block. When Openness exports a function block (or other piece of code), it converts all that data to an XML format. This means that when you open an Openness XML document, it will contain many tags that have been defined by Siemens. These tags are descriptive but can be hard to understand at first glance. Here’s a snippet of a function block in XML.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e"><span style="background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e">XML</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>&lt;Document>
  &lt;SW.Blocks.FB ID="0">
    &lt;AttributeList>
      &lt;AutoNumber>true&lt;/AutoNumber>
      &lt;HeaderAuthor />
      &lt;HeaderFamily />
      &lt;HeaderName />
      &lt;HeaderVersion>0.1&lt;/HeaderVersion>
      &lt;Interface>
		  &lt;Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v2">
  			&lt;Section Name="Input">
    			&lt;Member Name="bInCondition" Datatype="Bool" Remanence="NonRetain" Accessibility="Public">
					&lt;AttributeList>
						&lt;BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false&lt;/BooleanAttribute>
						&lt;BooleanAttribute Name="ExternalVisible" SystemDefined="true">false&lt;/BooleanAttribute>
						&lt;BooleanAttribute Name="ExternalWritable" SystemDefined="true">false&lt;/BooleanAttribute>
					&lt;/AttributeList>
					&lt;Comment>
						&lt;MultiLanguageText Lang="en-US">Input condition&lt;/MultiLanguageText>
					&lt;/Comment>
				&lt;/Member>
  			&lt;/Section>
 			&lt;Section Name="Output">
    			&lt;Member Name="bOutDoSomething" Datatype="Bool" Remanence="NonRetain" Accessibility="Public">
					&lt;AttributeList>
						&lt;BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false&lt;/BooleanAttribute>
						&lt;BooleanAttribute Name="ExternalVisible" SystemDefined="true">false&lt;/BooleanAttribute>
						&lt;BooleanAttribute Name="ExternalWritable" SystemDefined="true">false&lt;/BooleanAttribute>
					&lt;/AttributeList>
					&lt;Comment>
						&lt;MultiLanguageText Lang="en-US">Output action&lt;/MultiLanguageText>
					&lt;/Comment>
				&lt;/Member>
  			&lt;/Section></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: #808080">&lt;</span><span style="color: #569CD6">Document</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">SW.Blocks.FB</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;0&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AutoNumber</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">true</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AutoNumber</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderAuthor</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderFamily</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderName</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">HeaderVersion</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">0.1</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">HeaderVersion</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Interface</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">		  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Sections</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">xmlns</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;http://www.siemens.com/automation/Openness/SW/Interface/v2&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  			</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Section</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Input&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    			</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Member</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;bInCondition&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Datatype</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Bool&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Remanence</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;NonRetain&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Accessibility</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Public&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">						</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;ExternalAccessible&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">SystemDefined</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;true&quot;</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">false</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">						</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;ExternalVisible&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">SystemDefined</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;true&quot;</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">false</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">						</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;ExternalWritable&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">SystemDefined</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;true&quot;</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">false</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">					</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Comment</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">						</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultiLanguageText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Lang</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;en-US&quot;</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Input condition</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultiLanguageText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">					</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Comment</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">				</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Member</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  			</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Section</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4"> 			</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Section</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Output&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    			</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Member</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;bOutDoSomething&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Datatype</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Bool&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Remanence</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;NonRetain&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Accessibility</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Public&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">						</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;ExternalAccessible&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">SystemDefined</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;true&quot;</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">false</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">						</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;ExternalVisible&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">SystemDefined</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;true&quot;</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">false</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">						</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;ExternalWritable&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">SystemDefined</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;true&quot;</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">false</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">BooleanAttribute</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">					</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Comment</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">						</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultiLanguageText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Lang</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;en-US&quot;</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Output action</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultiLanguageText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">					</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Comment</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">				</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Member</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  			</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Section</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p class="wp-block-paragraph">This is part of the block interface of a function block. Let’s start at the top and work our way down.</p>



<p class="wp-block-paragraph"><strong>The Document Tag</strong><br>
The first element is the ‘Document’ tag. This tag is just used to delineate the start and end of the XML file. Each XML file you create for Openness should only contain one “Document” tag. Next, we have ‘SW.Blocks.FB ID=”0”’.</p>



<p class="wp-block-paragraph"><strong>SW.Blocks.FB</strong><br>
The ‘SW.Blocks.FB’ tells Openness that we are defining a function block. In a similar fashion, we could use ‘SW.Blocks.DB’ to define a data block. The ‘ID=”0”’ part is an internal ID used by Openness. This ID is only used to identify the different data within the XML file. If you have multiple blocks defined inside one ‘Document’ tag, each block will need to have a unique ID, or the import process will fail. In the event of an error, Openness will use these ID numbers to specify where the error occurred.</p>



<p class="wp-block-paragraph">Every function block has certain attributes, which are encapsulated in the ‘AttributeList’ tag. A lot of these attributes will look similar to ones you see when you go to the properties of the function block in Portal. For example, we have a value for ‘AutoNumber’ that tells us if the function block number is set automatically or manually. The ‘HeaderAuthor’, ‘HeaderFamily’, ‘HeaderName’, and ‘HeaderVersion’ attributes can be found in the properties of the block as well. The ‘Interface’ tag is used to define the block interface of the function block.</p>



<p class="wp-block-paragraph"><strong>Sections</strong><br>
The interface contains a set of ‘Sections’. A ‘Section’ is one of the different types of data that a function block can contain. In this example, we have a section named ‘Input’ and a section named ‘Output’. These correspond to the input and output parameters of the block, respectively. To define an input parameter, we create a ‘Member’ in the ‘Input’ section. In the above image, we have an input parameter called ‘bInCondition’. A member has its own set of attributes.</p>



<p class="wp-block-paragraph"><strong>Members</strong><br>
In the ‘Member’ definition, there are ‘Name’, ‘Datatype’, ‘Remanence’, and ‘Accessibility’ attributes. These correspond to the name of the variable, its datatype, whether or not it is retentive, and who can access the variable. Additional attributes are defined in the enclosed ‘AttributeList’. These three attributes, ‘ExternalAccessible’, ‘ExternalVisible’, and ‘ExternalWritable’ correspond to the checkboxes you see in Portal: ‘Accessible from HMI’, ‘Writable from HMI’, and ‘Visible in HMI engineering’.</p>



<p class="wp-block-paragraph"><strong>The Comment Attribute</strong><br>
Finally, the ‘Member’ contains a ‘Comment’ attribute. The comment contains a ‘MultiLanguageText’ attribute that contains the actual comment value. If you are programming in multiple languages, additional ‘MultiLanguageText’ attributes would be defined, and would allow the comment to appear in multiple languages. By setting the values of these attributes, you can fully define the variable. So the XML code above translates into the following block definition.</p>



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



<p class="wp-block-paragraph"><seems a="" get="" like="" lot="" of="" simple="" so="" something="" text="" to=""> </seems></p>



<h2 class="wp-block-heading" id="h-creating-code-from-xml">Creating Code from XML</h2>



<p class="wp-block-paragraph">Let’s start by looking at a few examples. Here’s a network in our existing function block.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/fb-network-1.png" alt="FB network"/></figure>



<p class="wp-block-paragraph">And here’s the associated XML.</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e"><span style="background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e">XML</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>&lt;SW.Blocks.CompileUnit ID="3" CompositionName="CompileUnits">
        &lt;AttributeList>
          &lt;NetworkSource>
			  &lt;FlgNet xmlns="http://www.siemens.com/automation/Openness/SW/NetworkSource/FlgNet/v1">
 				&lt;Parts>
    				&lt;Access Scope="LocalVariable" UId="21">
      					&lt;Symbol>
        						&lt;Component Name="bInCondition" />
      					&lt;/Symbol>
    				&lt;/Access>
    				&lt;Access Scope="LocalVariable" UId="22">
      					&lt;Symbol>
        						&lt;Component Name="bOutDoSomething" />
     					&lt;/Symbol>
   					&lt;/Access>
    				&lt;Part Name="Contact" UId="23" />
    				&lt;Part Name="Coil" UId="24" />
  				&lt;/Parts>
  				&lt;Wires>
    				&lt;Wire UId="25">
      					&lt;Powerrail />
      					&lt;NameCon UId="23" Name="in" />
    				&lt;/Wire>
    				&lt;Wire UId="26">
      					&lt;IdentCon UId="21" />
      					&lt;NameCon UId="23" Name="operand" />
    				&lt;/Wire>
    				&lt;Wire UId="27">
     					&lt;NameCon UId="23" Name="out" />
      					&lt;NameCon UId="24" Name="in" />
    				&lt;/Wire>
    				&lt;Wire UId="28">
      					&lt;IdentCon UId="22" />
      					&lt;NameCon UId="24" Name="operand" />
    				&lt;/Wire>
  				&lt;/Wires>
			&lt;/FlgNet>
		&lt;/NetworkSource>
        &lt;ProgrammingLanguage>LAD&lt;/ProgrammingLanguage>
      &lt;/AttributeList>
        &lt;ObjectList>
          &lt;MultilingualText ID="4" CompositionName="Comment">
            &lt;ObjectList>
              &lt;MultilingualTextItem ID="5" CompositionName="Items">
                &lt;AttributeList>
                  &lt;Culture>en-US&lt;/Culture>
                  &lt;Text>This network uses an input condition to activate an output action&lt;/Text>
                &lt;/AttributeList>
              &lt;/MultilingualTextItem>
            &lt;/ObjectList>
          &lt;/MultilingualText>
          &lt;MultilingualText ID="6" CompositionName="Title">
            &lt;ObjectList>
              &lt;MultilingualTextItem ID="7" CompositionName="Items">
                &lt;AttributeList>
                  &lt;Culture>en-US&lt;/Culture>
                  &lt;Text>Simple contact/coil network&lt;/Text>
                &lt;/AttributeList>
              &lt;/MultilingualTextItem>
            &lt;/ObjectList>
          &lt;/MultilingualText>
        &lt;/ObjectList>
      &lt;/SW.Blocks.CompileUnit></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: #808080">&lt;</span><span style="color: #569CD6">SW.Blocks.CompileUnit</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;3&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;CompileUnits&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">NetworkSource</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">			  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">FlgNet</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">xmlns</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;http://www.siemens.com/automation/Openness/SW/NetworkSource/FlgNet/v1&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4"> 				</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Parts</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Access</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Scope</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;LocalVariable&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;21&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        						</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Component</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;bInCondition&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      					</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Access</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Access</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Scope</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;LocalVariable&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;22&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        						</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Component</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;bOutDoSomething&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">     					</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Symbol</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">   					</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Access</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Part</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Contact&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;23&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Part</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Coil&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;24&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  				</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Parts</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  				</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Wires</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Wire</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;25&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Powerrail</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">NameCon</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;23&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;in&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Wire</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Wire</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;26&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">IdentCon</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;21&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">NameCon</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;23&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;operand&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Wire</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Wire</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;27&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">     					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">NameCon</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;23&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;out&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">NameCon</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;24&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;in&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Wire</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Wire</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;28&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">IdentCon</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;22&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      					</span><span style="color: #808080">&lt;</span><span style="color: #569CD6">NameCon</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">UId</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;24&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">Name</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;operand&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #808080">/&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">    				</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Wire</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">  				</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Wires</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">			</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">FlgNet</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">		</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">NetworkSource</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ProgrammingLanguage</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">LAD</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ProgrammingLanguage</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;4&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Comment&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;5&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Items&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">en-US</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Text</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">This network uses an input condition to activate an output action</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Text</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualText</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;6&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Title&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">ID</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;7&quot;</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">CompositionName</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;Items&quot;</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">en-US</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Culture</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                  </span><span style="color: #808080">&lt;</span><span style="color: #569CD6">Text</span><span style="color: #808080">&gt;</span><span style="color: #D4D4D4">Simple contact/coil network</span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">Text</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">                </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">AttributeList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">              </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualTextItem</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">          </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">MultilingualText</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">ObjectList</span><span style="color: #808080">&gt;</span></span>
<span class="line"><span style="color: #D4D4D4">      </span><span style="color: #808080">&lt;/</span><span style="color: #569CD6">SW.Blocks.CompileUnit</span><span style="color: #808080">&gt;</span></span></code></pre></div>



<p class="wp-block-paragraph">The XML, while more complicated than the ladder logic view, is still relatively readable. There are attributes of the network, a section for declaring all used variables, a section that defines the ladder elements used, and a section that creates the connections between the variables and the separate ladder elements. However, while the sections stay the same, adding more complex elements quickly makes this XML extremely difficult to parse.</p>



<p class="wp-block-paragraph">Here’s an example of creating an instance of the <strong>Open Library fb_ValveSolenoid</strong> function block.</p>



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



<p class="wp-block-paragraph">While still a relatively simple network, the XML to encapsulate this network is 187 lines long (I won’t post it here to save space). Every part of the XML has to be accurately defined, or you will end up with import errors. In addition, learning the various pieces that Openness uses to define function blocks takes a lot of practice.</p>



<p class="wp-block-paragraph">For these reasons, it very rarely makes sense to start from scratch to create an XML version of a function block. You can add functions to your Openness application to export existing blocks to XML. Then, you can create your blocks in Portal, and have Openness generate the associated XML automatically. When editing these XML documents, I would recommend using a text editor that has support for proper XML formatting, such as Notepad++ or Visual Studio Code.</p>



<p class="wp-block-paragraph">While being at least somewhat familiar with Openness’ XML format is very useful for debugging purposes, we’ve seen that it can be overwhelming when trying to write code. Using Openness to generate the XML code is easy, but requires creating the desired object in Portal anyway.</p>



<p class="wp-block-paragraph">What then, you might ask, is the point of creating objects in XML? In the next post, I’ll cover how you can use Openness to automate the creation of code using XML templates.</p>



<p class="wp-block-paragraph">Learn more about <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/siemens-s7-plc-programming/">DMC&#8217;s TIA Portal Development</a> and <a href="/contact">contact us</a> for more information.</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21358/how-to-read-an-openness-xml-file/">How to Read an Openness XML File</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Advantages &#038; Disadvantages of Siemens&#8217; TIA Openness</title>
		<link>https://static.dmcinfo.com/blog/21661/advantages-disadvantages-of-siemens-tia-openness/</link>
		
		<dc:creator><![CDATA[Patrick Smith]]></dc:creator>
		<pubDate>Tue, 07 May 2019 14:04:06 +0000</pubDate>
				<category><![CDATA[HMI and SCADA]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[Siemens PLC]]></category>
		<category><![CDATA[Openness]]></category>
		<category><![CDATA[PROFINET]]></category>
		<category><![CDATA[TIA Portal]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/21661/advantages-disadvantages-of-siemens-tia-openness/</guid>

					<description><![CDATA[<p>Siemens’ TIA Openness is an API that allows you to interact with TIA Portal using a custom application. Although it is included with TIA Portal, Openness has not seen wide usage, as many programmers don’t see the use of learning a new programming language (C# .NET) on top of knowing PLC programming. However, Openness offers [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21661/advantages-disadvantages-of-siemens-tia-openness/">Advantages &#038; Disadvantages of Siemens&#8217; TIA Openness</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Siemens’ TIA Openness is an API that allows you to interact with <a href="/services/manufacturing-automation-and-intelligence/plc-programming/siemens-s7-plc-programming/">TIA Portal</a> using a custom application. Although it is included with TIA Portal, Openness has not seen wide usage, as many programmers don’t see the use of learning a new programming language (<a href="/services/application-development/pc-application-development/c-net">C# .NET</a>) on top of knowing <a href="/services/manufacturing-automation-and-intelligence/plc-programming">PLC programming</a>.</p>



<p class="wp-block-paragraph">However, Openness offers many advantages that can lead to more efficient code creation. One of the best uses of Openness is for creating modular code that can be used across many devices, with application-specific changes being made automatically. By defining some base templates, you can allow users to generate entire projects without any knowledge of PLC and <a href="/services/manufacturing-automation-and-intelligence/hmi-and-scada-programming">HMI programming</a>.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Openness-Demo-R.png" alt="TIA Openness"/></figure>



<h2 class="wp-block-heading" id="h-how-does-openness-work-nbsp">How does Openness Work?&nbsp;</h2>



<p class="wp-block-paragraph">There are <strong>two main parts</strong> of any Openness project:</p>



<ol class="wp-block-list">
<li>The C# .NET application that provides the interface to TIA Portal</li>



<li>The XML files that are used to create code in TIA Portal</li>
</ol>



<p class="wp-block-paragraph">I’ll cover the details of the XML files in a later blog post; for now, we’ll focus on the C# .NET application. All you need to get started is to add the two <strong>.dll files</strong> that Siemens provides as references to your C# .NET project. These files provide the variable types and methods needed to work with TIA Portal.</p>



<p class="wp-block-paragraph">The API provides a wide range of functions; from simple actions like compiling a project to creating and configuring technology objects on a PLC. While there are some functions that cannot be done through Openness, most common operations are available, and more are added with every new release.</p>



<p class="wp-block-paragraph">In order to see what functions are available and how to use them, open up the <strong>Help Viewer</strong> (shown below) within TIA Portal, and find the section titled <strong>“Automating projects with scripts”</strong>. This section contains documentation on the various methods available. Each entry also includes simple code examples. The <strong>“Public API” </strong>and <strong>“Export/Import” </strong>sections are where the majority of these examples are located.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Siemens-Help-R_1.png" alt="Openness Siemens"/></figure>



<h2 class="wp-block-heading" id="h-advantages-of-openness">Advantages of Openness</h2>



<p class="wp-block-paragraph">At this point, you might be thinking “That sounds pretty nice, but how is this more useful than just programming in TIA Portal?” The main answer is <strong>scalability</strong>. Using Openness allows a user to automate time-consuming and tedious processes when working on a project. For example, your company may require a standardized code architecture for PLC projects. If that standard is replicated in Openness, one click could create the project, set up the architecture, add standard blocks from custom libraries, and add all the necessary GSD files.</p>



<p class="wp-block-paragraph">If a project is being created for multiple, mostly identical machines, Openness can simplify creating each specific project. Openness can create a&nbsp;base project, and then only the individual differences need to be implemented. If the differences between the machines are well defined, Openness can further simplify development. A custom application can provide the user with a list of different modules that are assigned to a specific machine. Openness would then be able to create the base project and add in any extra modules that have been defined. With this custom application, any changes to the code are only made in one place and can be easily redeployed.</p>



<h2 class="wp-block-heading" id="h-disadvantages-of-openness">Disadvantages of Openness</h2>



<p class="wp-block-paragraph">Openness is a very powerful tool and opens up many possibilities for custom applications. However, there are some cases where it does not make sense to use Openness. Since Openness uses XML files to generate objects and code, it requires becoming familiar with the Openness XML tags and structures.</p>



<p class="wp-block-paragraph">As we will discuss later, these XML files quickly become very large and complicated and require extensive expertise to be able to create and read them. Creating the XML from scratch is a long and difficult process, so it is generally preferred to create your necessary elements in TIA Portal, export them to XML, and use that as a starting point.</p>



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



<p class="wp-block-paragraph">As I explained, Openness is a great tool for creating scalable and module code for TIA Portal. While it has a steeper learning curve than working exclusively in TIA Portal, it offers a large amount of flexibility and customization. If you find yourself creating similar projects on a regular basis, it is worth taking a look at how Openness can help you automate your process. In my next blog post, we’ll look at how to make sense of Openness’s XML files.</p>



<p class="wp-block-paragraph">Learn more about DMC&#8217;s <a href="/services/manufacturing-automation-and-intelligence/plc-programming">PLC Programming Services</a> and <a href="/services/manufacturing-automation-and-intelligence/plc-programming/siemens-s7-plc-programming/">TIA Portal Development Services</a>. <a href="/contact">Contact</a> us for help with your next project. </p>
<p>The post <a href="https://static.dmcinfo.com/blog/21661/advantages-disadvantages-of-siemens-tia-openness/">Advantages &#038; Disadvantages of Siemens&#8217; TIA Openness</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
