<?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>Library Designer Archives | DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/tag/library-designer/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Thu, 09 Jul 2026 17:34:09 +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>Library Designer Archives | DMC, Inc.</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Rockwell Library Designer: Creating, Customizing, and Publishing a Library</title>
		<link>https://static.dmcinfo.com/blog/20724/rockwell-library-designer-creating-customizing-and-publishing-a-library/</link>
		
		<dc:creator><![CDATA[Ben Clare]]></dc:creator>
		<pubDate>Tue, 22 Oct 2019 09:09:23 +0000</pubDate>
				<category><![CDATA[Allen Bradley PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[ACM]]></category>
		<category><![CDATA[Application Code Manager]]></category>
		<category><![CDATA[Library Designer]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/20724/rockwell-library-designer-creating-customizing-and-publishing-a-library/</guid>

					<description><![CDATA[<p>Rockwell&apos;s Library Designer allows the creation of libraries that can contain tasks, programs, routines, AOIs, tags, hardware, and everything else a typical project would include. These libraries can be customized to allow an end-user to select their own configurations, tags, hardware, and other options. In this part one of this two-part blog series, I will [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/20724/rockwell-library-designer-creating-customizing-and-publishing-a-library/">Rockwell Library Designer: Creating, Customizing, and Publishing a Library</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Rockwell&apos;s Library Designer allows the creation of libraries that can contain tasks, programs, routines, AOIs, tags, hardware, and everything else a typical project would include. These libraries can be customized to allow an end-user to select their own configurations, tags, hardware, and other options.</p>

<p class="wp-block-paragraph">In this part one of this two-part blog series, I will walk through how to create, customize, and publish a library with Rockwell&apos;s Library Designer.</p>

<h2 class="wp-block-heading">Create an Example Project</h2>

<p class="wp-block-paragraph">This section covers the creation of an example project to serve as the basis for our library. This example will focus on creating some sample logic and tags for the DMC analog valve AOI.</p>

<p class="wp-block-paragraph"><strong>Step One</strong>: Create a new project with a controller of your choosing. This example will use a <strong>1756-L7</strong>3 on v28. You can choose to include a controller in your library, but we will not for this example.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-and-Example-Project-Step-One.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Two</strong>: Add some I/O for the analog valve. Use the <strong>1756-IF8 Input</strong> and the <strong>1756-OF8 Output</strong> modules. You can choose to add I/O to your library as well, but we will not for this example.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Creat-an-Example-Project-Step-Two.png"  /></figure>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-an-Example-Project-Step-Two-Picture-Two.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Three</strong>: Import <strong>aoiDvc_AnalogValve.L5X</strong> by right-clicking add-on instructions and selecting <strong>Import Add-on Instruction</strong>.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-an-Example-Project-Step-Three-Picture-One.png"  /></figure>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-an-Example-Project-Step-Three-Picture-Two.png"  /></figure>

<p class="wp-block-paragraph">Note that importing this add-on also imports data types and another AOI needed for aoiDvc_AnalogValve to function.</p>

<p class="wp-block-paragraph"><em><figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-an-Example-Project-Step-Three-Picture-Three.png"  /></figure></em></p>

<p class="wp-block-paragraph"><strong>Step Four</strong>: Create a new routine <strong>DMC_Analog_Valve</strong>&nbsp;and use a JSR in MainRoutine to jump to it.</p>

<p class="wp-block-paragraph">Note that for this example, we will not be including <strong>MainRoutine</strong>&nbsp;in our library, but it is possible to add full Programs and Tasks to libraries as well.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-an-Example-Project-Step-Four-Picture-1.png"  /></figure>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-and-Example-Project-Step-Four-b.jpg"  /></figure>

<p class="wp-block-paragraph"><strong>Step Five</strong>: Create a controller-level analog valve tag, and two local tags for an <strong>emergency stop</strong>&nbsp;boolean and a <strong>reset errors</strong>&nbsp;boolean.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-an-Example-Project-Step-Five-Image-One.png"  /></figure>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-an-Example-Project-Step-Five-Image-Two.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Six</strong>: Now, create the valve logic inside of the DMC_Analog_Valve Routine. Use the Ch0Data from our analog input as the rInSignalPosition of our Valve. Send the rStsPositionActual value from the valve to the Ch0Data of our analog output. Also, use the local Estop and Reset error tags in the AOI as well.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-an-Example-Project-Step-Six-Image-One.png"  /></figure>

<h2 class="wp-block-heading">Create the Library</h2>

<p class="wp-block-paragraph"><strong>Step One</strong>: Right-click on the controller in your Logix Designer project, go to plug-ins, and select <strong>Library Designer</strong>.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-the-Library-Step-One-Image-One.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Two</strong>: The Library Designer screen will open automatically. To create a new library, right-click on <strong>Libraries</strong>,&nbsp;and select <strong>Add &gt; Library</strong>.&nbsp;</p>

<p class="wp-block-paragraph">Note: <strong>Add Project Library</strong>&nbsp;and <strong>Add Controller Library</strong>&nbsp;will auto-create a blank library either with or without a controller.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-the-Library-Step-Two-Image-One.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Three</strong>: Match the configuration of our new library to the image below.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-the-Library-Step-Three-Image-One.png"  /></figure>

<ul class="wp-block-list">
 <li><strong>Catalog Number:</strong> This is the name of your library that will appear in the ACM library database. For this example,&nbsp;use <strong>DMC_Analog_Valve</strong>.</li>
 <li><strong>Description:</strong>&nbsp;It will also appear in the ACM library database.</li>
 <li><strong>Library Type:</strong> A mid-level <strong>category</strong>&nbsp;that appears in the ACM library database. We will use <strong>ControlModule</strong>&nbsp;in this example.</li>
 <li><strong>Content-Type:</strong> Defines what level of content this library is at (Task, Program, or Routine). For our example, we will create a Routine-level library, since we don&rsquo;t have any necessary code outside of our single routine (besides the JSR in Main).</li>
 <li><strong>Solution:</strong> This is essentially a high-level <strong>category</strong>&nbsp;that appears in the ACM library database. Use <strong>DMC Library</strong>&nbsp;for this example.</li>
 <li><strong>Category:</strong> A low-level <strong>category</strong>&nbsp;that appears in the ACM library database. Use <strong>Valves</strong>&nbsp;for this example.</li>
 <li><strong>Instantiation:</strong> Allows you to give a default name and description for the object when importing it to a project. Leave them blank as we want to specify the name and description for each of our valves manually.</li>
 <li><strong>Substitutions:</strong> This is where you define the replacement of text with either the instantiated object&rsquo;s name or description. So {ObjectName} will replace DMC_Analog_Valve anywhere in the library that you find it. This is the name given to a library object when importing it through Application Code Manager. The same is true for the description text as well.</li>
</ul>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-the-Library-Step-Three-Image-Two.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Four</strong>: Before moving objects from our program into the library, define the importing of these objects through the <strong>INCLUSIONS</strong>&nbsp;options. In this example, we will check all four options.</p>

<ul class="wp-block-list">
 <li><strong>Add Children</strong>: Adds the Children of your current selection to the library as well (ex. If you add MainTask to the Library, it will also add MainProgram, Parameters and Local Tags, MainRoutine, and the Dvc_Valve Routine.</li>
 <li><strong>Add Dependencies</strong>: Adds the dependencies of your current selection to the library as well (ex. Our Dvc_Valve routine calls aoiDvc_AnalogValve) for importing. Likewise, any global tags referenced in this routine will also be imported.</li>
 <li><strong>Allow Shared Ownership</strong>: Allows Logix content to be shared among different library object definitions if checked. Otherwise, no other library will be able to use the items that exist in this library.</li>
 <li><strong>Container Mode</strong>: Allows you to group objects within a container. Doing so means any changes such as additions or deletions made within Studio 5000 to an object which forms part of a library would automatically be included to be part of the library. You can set container mode for task, program, and routine objects residing within a library. When this command is active, all program tags and routines are added to the library object automatically. If it is inactive, the user must manually add the content to the library object.</li>
</ul>

<p class="wp-block-paragraph"><strong>Step Five</strong>: Import parts of the project into the library by dragging and dropping.</p>

<p class="wp-block-paragraph">For this example, import the <strong>Dvc_Valve</strong>&nbsp;Routine, which brings with it the Analog Valve and Error Scroller AOIs, the associated Data Types, the Local Estop and Error Reset tags, and the Analog Valve Controller tag.</p>

<p class="wp-block-paragraph">Since we chose <strong>routine</strong>&nbsp;as our library type, we exclude the task and program. After importing, the content now in the library displays in green.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-the-Library-Step-Five-Image-One.png"  /></figure>

<p class="wp-block-paragraph">Click on the <strong>DMC_Analog_Valve</strong>&nbsp;Controller tag and note the replacement of the name with {ObjectName}. We used this substitution when creating the project.&nbsp;</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-the-Library-Step-Five-Image-Two.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Six</strong>: Click on the <strong>DMC_Analog_Valve</strong>&nbsp;Routine. The name here is also {ObjectName} as well, now that the substitution is complete. Also, note the Routine preview in the bottom right &ndash; the Analog Valve tag inside the AOI is also {ObjectName} as well.</p>

<p class="wp-block-paragraph">As we defined, we will replace <strong>DMC_Analog_Valve </strong>with {ObjectName}. {ObjectName} will be defined by the user importing this library into their own project.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Create-the-Library-Six-Image-One.png"  /></figure>

<h2 class="wp-block-heading">Configuring the Library</h2>

<p class="wp-block-paragraph">Now, let&rsquo;s say that we want the local Estop and Reset Error tags to be configurable as a tag that is entered when importing this library so that they can be renamed or entered as already-existing tags. To do this, we need to replace the tag names with <strong>parameters</strong>.</p>

<p class="wp-block-paragraph"><strong>Step One</strong>: Select the bEstop tag, then click the <strong>ellipses</strong>&nbsp;<strong>&hellip;</strong>&nbsp;on the right-hand side of the <strong>Name</strong>.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-One-Image-One.png"  /></figure>

<p class="wp-block-paragraph">The <strong>substitution builder</strong>&nbsp;window will appear automatically.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-One-Image-Two.png"  /></figure>

<ul class="wp-block-list">
 <li><strong>Selected Element</strong>: Shows the current element you are configuring to be substituted.</li>
 <li><strong>Result</strong>: Shows what the new element name is after substitution.</li>
 <li><strong>Scope</strong>: Specifies how far the new substitution will check.&nbsp;<strong>Name&nbsp;</strong>will only check your current selection, while <strong>Library</strong>&nbsp;would replace all <strong>bEstop</strong>&nbsp;elements throughout the library.</li>
 <li><strong>Search For</strong>: Specifies what part of your selection will be substituted. For example, you could enter only a part of your selection, like Estop rather than bEstop to be replaced).</li>
 <li><strong>Replace With</strong>: Specifies the replacement of your selection. Use the <strong>ellipses</strong> <strong>&hellip;</strong>&nbsp;to choose.</li>
</ul>

<p class="wp-block-paragraph"><strong>Step Two</strong>: Create a substitution for our bEstop tag so that the user can enter their own tag name. To do this, enter <strong>bEstop</strong>&nbsp;in the Search for box, and then click the <strong>ellipses &hellip;</strong>&nbsp;on the right side.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Two-Image-One.png"  /></figure>

<p class="wp-block-paragraph">Doing so will bring up the <strong>member selector</strong>.&nbsp;</p>

<p class="wp-block-paragraph">To allow them to enter their own tag name, we first need to create a parameter.</p>

<p class="wp-block-paragraph"><strong>Step Three</strong>: Right-click on <strong>DMC_Analog_Valve</strong>,&nbsp;and select <strong>Add new parameter</strong>,&nbsp;which opens a new window.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Three-Image-One.png"  /></figure>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Three-Image-Two.png"  /></figure>

<ul class="wp-block-list">
 <li><strong>Name</strong>: The name of the parameter that appears in the Application Code Manager.</li>
 <li><strong>Parameter help</strong>: A help box for the parameter, shown in the Application Code Manager.</li>
 <li><strong>Data Type</strong>: Type of data entered into this parameter.</li>
 <li><strong>Reference Type</strong>: Immediate means the user will enter a direct value/string. Referenced means that the user will be able to choose a reference tag/element of the same Data type as the parameter. Calculated means that the value is set to the name or description of the selected Parameter.</li>
</ul>

<p class="wp-block-paragraph"><strong>Step Four</strong>: For this example, we will configure our <strong>bEstop&nbsp;</strong>tag to be a simple string that the user will enter, the configuration shown below.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Four-Image-One.png"  /></figure>

<p class="wp-block-paragraph">Now we can select this new parameter and use it as the substitution for our Emergency stop tag.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Four-Image-Two.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Five</strong>: Now, let&rsquo;s repeat the process, but for the <strong>bResetErrors</strong>&nbsp;tag.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Five-Image-One.png"  /></figure>

<p class="wp-block-paragraph">Now we can check the Routine to see how our substitutions have changed it.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Five-Image-Two.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Six</strong>: Even though we added a substitution, the tags in the routine did not change. This is because we never specified the scope of our tag replacements to be for the entire library, so it never checked this routine.</p>

<p class="wp-block-paragraph">To fix this, we need to go back and change the scope of both of our local tag substitutions to be <strong>library</strong>&nbsp;rather than name. Doing so results in the correct updating of the routine.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Six-Image-One.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Seven</strong>: Now, let&rsquo;s say we want the user to be able to specify whether their valve is in simulation mode or not.</p>

<p class="wp-block-paragraph">To do this, go to the controller-level <strong>DMC_Analog_Valve</strong>&nbsp;tag, right-click the <strong>bCfgSimulationActive</strong>&nbsp;tag and select <strong>Add as Parameter</strong>.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Seven-Image-One.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Eight</strong>: We will configure this parameter to be a Bool that the user can enter. See below.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Eight-Image-One.png"  /></figure>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Eight-Image-Two.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Nine</strong>: Let&rsquo;s make the Input that signals a position, and the output that reports the valve&rsquo;s position both configurable.</p>

<p class="wp-block-paragraph">Switch over to the routine, and then select the <strong>Local:1:I:Ch0Data</strong>&nbsp;inside of the MOV block, and select the <strong>ellipses &hellip; </strong>to the right of the Name.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Nine-Image-One.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Ten</strong>: Again, create a new parameter. This time, we want the user to be able to select from a list of Analog Inputs currently in the existing project.</p>

<p class="wp-block-paragraph">To do this, enter the configuration below. The Filter restricts the selection to be only Analog Inputs.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Ten-Image-One.png"  /></figure>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Ten-Image-Two.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Eleven</strong>: Next, do the same for the Analog Output, but use the filter for AO instead of AI.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-the-library-Step-Eleven-Image-One.png"  /></figure>

<p class="wp-block-paragraph">To summarize what we have configured in this library:</p>

<ul class="wp-block-list">
 <li>Controller-level Valve tag and Routine name will match the name given when a user imports the library.</li>
 <li>bEstop and bResetError tags will be manually entered by the user when importing.</li>
 <li>The &ldquo;bCfgSimulationActive&rdquo; parameter of the valve AOI will be configurable by the user.</li>
 <li>The I/O addresses used in the routine will be selectable from the existing hardware by the user.</li>
</ul>

<p class="wp-block-paragraph"><strong>Step Twelve</strong>: Now, Publish the library by hitting <strong>Apply</strong>&nbsp;(this essentially saves your current library), then right-click&nbsp;<strong>Libraries</strong>,&nbsp;and select&nbsp;<strong>Publish Library</strong>.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-The-Library-Step-Twelve_1.png"  /></figure>

<p class="wp-block-paragraph"><strong>Step Thirteen</strong>: Select <strong>Current ACM Database</strong>&nbsp;and hit ok. Then, enter a Revision Description, and apply.</p>

<figure class="wp-block-image"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Configuring-The-Library-Step-Thirteen.jpg"  /></figure>

<h2 class="wp-block-heading">Conclusion</h2>

<p class="wp-block-paragraph">In the next part of this series, you will learn to&nbsp;import and customize a library with Rockwell&apos;s Application Code Manager. Learn more about <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/plc-programming/allen-bradley-plc-programming">DMC&apos;s Allen Bradley PLC Programming services</a>.</p>
<p>The post <a href="https://static.dmcinfo.com/blog/20724/rockwell-library-designer-creating-customizing-and-publishing-a-library/">Rockwell Library Designer: Creating, Customizing, and Publishing a Library</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
