Lab 1 - Studio 5000® Application Code Manager Project Execution and Library Management

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 329

Studio 5000® Application Code Manager

Project Execution and Library Management


c
Important User Information
This documentation, whether, illustrative, printed, “online” or electronic (hereinafter “Documentation”) is intended for use only as
a learning aid when using Rockwell Automation approved demonstration hardware, software and firmware. The Documentation
should only be used as a learning tool by qualified professionals.

The variety of uses for the hardware, software and firmware (hereinafter “Products”) described in this Documentation, mandates
that those responsible for the application and use of those Products must satisfy themselves that all necessary steps have been
taken to ensure that each application and actual use meets all performance and safety requirements, including any applicable
laws, regulations, codes and standards in addition to any applicable technical documents.

In no event will Rockwell Automation, Inc., or any of its affiliate or subsidiary companies (hereinafter “Rockwell Automation”) be
responsible or liable for any indirect or consequential damages resulting from the use or application of the Products described in
this Documentation. Rockwell Automation does not assume responsibility or liability for damages of any kind based on the
alleged use of, or reliance on, this Documentation.

No patent liability is assumed by Rockwell Automation with respect to use of information, circuits, equipment, or software
described in the Documentation.

Except as specifically agreed in writing as part of a maintenance or support contract, equipment users are responsible for:
• properly using, calibrating, operating, monitoring and maintaining all Products consistent with all Rockwell Automation
or third-party provided instructions, warnings, recommendations and documentation;
• ensuring that only properly trained personnel use, operate and maintain the Products at all times;
• staying informed of all Product updates and alerts and implementing all updates and fixes; and
• all other factors affecting the Products that are outside of the direct control of Rockwell Automation.

Reproduction of the contents of the Documentation, in whole or in part, without written permission of Rockwell Automation is
prohibited.

Throughout this manual we use the following notes to make you aware of safety considerations:

Identifies information about practices or circumstances


that can cause an explosion in a hazardous environment,
which may lead to personal injury or death, property damage, or economic loss.

Identifies information that is critical for successful application and understanding of the product.

Identifies information about practices or circumstances that can lead to personal injury or death, property
damage, or economic loss. Attentions help you:
• identify a hazard
• avoid a hazard
• recognize the consequence

Labels may be located on or inside the drive to alert people that dangerous voltage may be present.

Labels may be located on or inside the drive to alert people that surfaces may be dangerous temperatures.
Studio 5000® Application Code Manager
Project Execution and Library Management: Lab

Contents
Before you begin ........................................................................................................................................... 4

Lab 1 – Explore a Sample ACM Project ....................................................................................................... 5

Lab 2 – ACM Export and Import using MS Excel ....................................................................................... 41

Lab 3 – Create a Project Using Linked Libraries ........................................................................................ 48

Lab 4 – Create a Project Using the ACM Command Line .......................................................................... 67

Lab 5 – Create a Motion Project using the Machine Builder Libraries ........................................................ 76

Lab 6 – Create a Library Object: Valve Control Code with I/O References .............................................. 102

Lab 7 – Create a Library Object: Kinetix 5500 I/O Drive........................................................................... 190

Lab 8 – Create a Library Object using Linked Libraries ............................................................................ 219

Lab 9 – How to add FTViewSE Content to an Existing Object ................................................................. 265

Lab 10 - How to add FTHistorian Content to an Existing Object .............................................................. 304

Lab 11 – Get Library Object from ACM to Edit ......................................................................................... 324

3 of 329
Before you begin

About this lab


Attendees can choose Studio 5000 Application Code Manager (ACM) topics that are of the most interest in a free form
environment. Available topics include: Introduction to ACM using an existing project, creating a new library object, creating a
new ACM project from scratch, exploring new product features sections (i.e. command line interface, re-constituting ACD) and
an advanced topic section to cover features such adding FTViewSE visualization objects to a library object and more.

Tools & prerequisites

Software
 Studio 5000 Application Code Manager (ACM) V3
 Logix Designer V31 and V32
 Logix Emulate V32
 FactoryTalk View V11
Hardware
 No Logix hardware is required for this lab
Lab Files
 The files required for this lab have been placed on the desktop of the ACM image.

 ACM Libraries
 (RA-LIB) Machine Builder Library
 (RA-LIB) Process 3.5 Library
 (RA-LIB) Process 4.0 Library
 myAdd-On libraries
 ACM Project
 myPS1
 FTViewSE Project
 Local Station “Template_ProcessLib_40_ACM”
 Logix Designer Project (v31)
 “myValve.ACD” and “K5500Example.ACD”

4 of 329
Project Execution

Lab 1 – Explore a Sample ACM Project

This section will review how to quickly build your automation projects using reusable code stored in libraries. See how
configuration, not programming, is used by selecting library objects (control modules, equipment modules, etc.) and providing
configuration data, such as object name and descriptions, equipment set points, control interlocks, etc., required for your project.
Once all the configuration, not programming, is provided the project will be built (ACD file) which can be downloaded to a
controller.

Launch Application Code Manager (ACM)

5 of 329
The following window appears.

By default it opens the last opened project, which in this case is myPS1.

Expand the project content in the Class View so that you can see the various components.

Library Object
(Class) with
Version

Specific instances of
the Class library
object

Controller Preview shows what content will be generated in the final ACD from the configured Class View
library objects.
Class View shows all the configured library objects as well as all the instances. Looking at the Valve in the
Class View shows five (5) instances of the valve object.

6 of 329
Click on the myCLX library object in the Class View to see the associated parameters in the middle window.

Click in the size selection box “17” to show the dropdown button. Use the dropdown to see the possible selections.

Do the same with the Software Revision to see available revisions. Keep the selection set to “v31”.

7 of 329
Notice that the shortcut paths for View SE and View ME are specified. This is required when ACM generates
the HMI content since the shortcut path is required as part of the HMI addresses.

Example:

View SE Global Object Addressing

The historian needs the shortcut too, but also needs RSLinx Enterprise and the application. This is the fully
qualified path.

8 of 329
Click on XV100 in the Class View to see Parameter details of this instance.

9 of 329
Notice when XV100 is highlighted. In the controller preview there are boxes around the
Task_D_500
Task_D_MainProgram
MainRoutine
Valves
This indicates that there is content coming from the XV100 library object. You will need to expand the trees
to see all the items.
Looking further down the project tree you can also see the associated Add-On Instructions and Data Types.
This is a nice feature …..

10 of 329
Turning our attention to the Parameters window, we can see the configuration details for this instance of the
object.
All of these parameters are have been specified by the creator of this library object, or commonly referred to
as the “Librarian”. The Librarian dictates all aspects of the library object such as parameters, Logix content
to include routine language used (Rung Ladder Logic, Structure Text, Sequential Function Charts, Function
Blocks and Sequence Manager), Visualization content, etc..

Examples . . .
Options: - There are options associated with limit switches (LS), Interlocks (Intlk), Permissives (Perm) and
statistics (Stats). It appears that XV100 does not have limit switches, interlocks or permissives, but the
project does have HaveStatsObj to see the statistics related to this valve.
Alarms: - Specifies if there are interlocks, open or close time failures, etc.
Historian Configuration: - There are Historian points associated with this valve and they have been
selected. Sts - stands for status, meaning is the valve opened or closed. The second historian point keeps
track of faulted status.
HMI Configuration: - There are both View SE and View ME displays associated with this object. We will
concentrate on the View SE displays. We set it up so the orientation is up, this is the P_ValveSO option. The
naming is based on the View GlobalObject.
P_ValveSO=up, P_Valve_SO1=down, P_Valve_SO2= right and P_Valve_SO3=left.
The correct orientation can then be selected and placed on any appropriate P&ID display for the operator.

11 of 329
Click on LT100 and examine the parameters associated with it.

Click on COP01 and examine its parameters.

12 of 329
Click on the Linked Libraries tab.
Linked Libraries allows the Librarian to manage dependencies between library objects. In this case linked libraries consists of a
set of control modules linked (or referenced) to the Process Object library which are required by the COP object.

If we were going to make a change we would click and use the pull-down to see what options we have.

Click on the first row and using the pull-down, select Link to Existing Instance.

13 of 329
It will then show you all the existing valves that you can choose from.

Click on Cancel at the bottom of the window.

What if we needed to create a new valve?

Again use the drop-down, but this time select the Create New Instance option.

14 of 329
Now the Object Configuration Wizard appears.

Let’s create a new Valve XV200.


Notice that in this case the “Water Valve” description has been automatically set for you.

Insert the Name and Location (Task and Program).

15 of 329
We can set the parameters as needed. In this case, the only parameter we are going to change from the
defaults is SEAssocDisplay located under HMI Configuration.

Click the row for SEAssoc Display and then click on ellipsis .

Select FTViewSE Server in the middle window. Click the Displays tab on the right pane, select Valves.

Click the Finish button. The window should look like this.

Go ahead and click Finish to create the valve.

It’s very easy to add and configure additional objects.

16 of 329
The COP Linked Libraries window should look like this.

Click Apply Changes to save change to COP01.

17 of 329
As a reminder, if you select an object in the Class View all associated objects in the Controller Preview are
identified.
It also works the other way around. If you select something from the Controller Preview it will identify the
associated objects in the Class View.

Click on P_Alarm under Controller Preview to see what class objects are associated with P_Alarm into our controller.

Let’s generate the ACD file for our controller. Right click on CLX and select Generate Controller.

Click on the Generate button. Note that we will save this to the Logix Folder on the desktop.

18 of 329
It will take a short period to generate the ACD file.

Notice the ACM Project Data box. It is checked by default for V27 and greater. The checked box indicates
that the library information will be stored as part of the ACD file.
TIP: Under Tool > Setting, you can change the default selections

Once you get a status of myCLX.ACD file Successful, click Close.

19 of 329
Go to the desktop folder “Logix” and open the myCLX project.

Compare the generated project with the Controller Preview in ACM. They should be roughly the same.

NOTE: Logix Designer organizes the routines alphabetically A-Z, however, ACM organizes by the Jump-to-
Subroutine (JSR) order. This is useful in cases where you need to ensure a certain order execution in your
logic.
ACM display order = Logix Designer JSR Order

20 of 329
Open up each of the MainRoutines.

Notice that ACM automatically puts in the appropriate JSRs.


Also notice that the PlantPAx 4.0 libraries also include a TaskMonitor instruction by default too!

ACM can generate content for any Routine types (Ladder Logic, Function Block, Structure Text and
Sequential Function Charts.
SequenceManager is also available if using v30 Logix or higher

21 of 329
Open COP01 to see the logic.

Feel free to browse through the routines.

All the appropriate transmitters and valves are included and addressed correctly in the logic as shown.

22 of 329
Next, let’s get ready to download and run the application.

23 of 329
Launch Studio 5000 Logix Emulator (located on the desktop)

Minimize Logix Emulator

Next, using Studio 5000 Logix Designer, go ahead and download the project to the Emulate controller.

24 of 329
Put the controller into RUN mode if it isn’t already running.

25 of 329
Minimize Logix Designer and close the Logix folder.

What have we done so far?


• Opened an existing ACM project and modified it slightly by adding a different valve to COP01
• Explored the parameters of the existing Examples library
• Generated an ACD file for this project and downloaded it

Let’s go back to ACM.

In the System View, expand the HMI folder as shown and select FTViewSE Server.

26 of 329
Select the Displays tab.

There are four different displays associated with this project.

Right click on FTViewSE_Server and select Generate Displays > All Displays.

27 of 329
Select the folder called FTView and click OK.

Click OK for Generation Complete.

Open the FTView folder on the desktop.

Notice that four display xml files were created. Also note that a BatchImport file was created. The
BatchImport file will allow us to bring in the displays all at once instead of having to bring them in individually.

Open FTView Studio by clicking the Factory Talk View Studio Icon in the Start Menu or Desktop.

28 of 329
Select View Site Edition (Local Station) and Continue.

Note: ACM generated the displays for FTView, and these will need to be imported into the FTView SE
project.

Open the lab project Template_ProcessLib_40_ACM.

Right click on Displays and select Import and Export.

29 of 329
Select Import graphic information into display and click Next.

Select No to backup and click Next.

Select multiple displays and click Next.

30 of 329
Click on the ellipsis button to select the batch import file.

Select the BatchImport file we just created and click Open.

Click Finish.

Close this Display Import summary.

31 of 329
Expand the Displays folder in FTView Studio and double click on AIs to open this display.

The faceplate were created for both LT100 and TT100. The Engineer would then select the graphic they
want and copy it onto an operator display.

Double click on the Motors display.

All the motor graphics are provided.

Open the Valves display.

All the valves graphics are provided.

32 of 329
Open the COP01 display.

This created a complete graphic for the COP01 system.

Right click on the Water Supply XV200 (Water Supply) valve and select Global Object Parameter Values.

33 of 329
The values are configured to the appropriate tag and path.

Click OK to close this window.

We have already created a client for you.

Launch the client by clicking the Client button and then clicking Run.

34 of 329
The client is setup to open the COP display. Note that all the objects are communicating to the appropriate
tags in the controller.

35 of 329
Click on LT100 to bring up its faceplate.

Open the faceplates for the pump and any of the valves.

36 of 329
Click on the Simulation Disabled button to start a simulation so it turns green as shown.

Click on the Start button to run the procedure.

The sequence starts, and will run through a cleaning cycle.

37 of 329
Go to the LT100 faceplate.

38 of 329
Click on the trend button and confirm that we are see live data in the controller changing.

Feel free to explore any of the faceplates. When you are done exploring, close the client and move on to the
next section. The point of this section is to show how easy it is to generate and use content from libraries.

What have we done after generating the ACD?


• Generated displays associated with COP01 which includes all the required control module global objects
• Generated a batch import file to allow us to bring all the displays into our View SE project with one import
• Imported the displays into our View SE project
• Checked that the display objects were correctly tied to the AOIs in the ACD via the global object parameter values
• Explored/tested the functionality of the control module faceplates and the COP01 logic

Let’s go ahead and generate content for Historian.

39 of 329
Close out of FTView and navigate back to ACM.

Expand Historian all the way. Right click FTHistorianSE_Server and select Generate Historian -> All Controllers

Go ahead and save the file to the Desktop.


Once the generation is complete, open the file via the Desktop.

These are all of the tags that can be directly imported into FactoryTalk Historian. We will not be using
Historian in this lab, but we can see that tags that are available to it.

Close the spreadsheet.

What did we do after creating the ACD file?


• Generated associated displays
• Imported the displays into a FTViewSE project
• Tested the displays
• Generated associated Historian tags
That completes this lab section

40 of 329
Lab 2 – ACM Export and Import using MS Excel

This section will review how to add content easily to an ACM project using its Export and Import Capabilities via MS Excel.

Open the myPS1 project in ACM

41 of 329
Let’s export the entire controller.

42 of 329
Excel Opens up

Let’s say we wanted to create some additional spare valves, we can do this right in Excel.

Select the entire row for XV104 by clicking on the number “9” of the valves worksheet

NOTE: If you did the exercise in Lab 1 you will have an XV200 in row 10 – thats OK, still use XV104 as shown below.

With row 9 selected, hold down the Shift Key and select row 12

43 of 329
Use CTRL-D funtion in Excel to perform a copy of the first row to the selected rows

Select XV104 in cell A9

This time drag the + from the lower right hand corner of cell A9 down to row 12, this will automatcially increment the
valve numbers

44 of 329
Next, scroll over the the Addresses, select cell ED9

Lets do the same thing we did above, drag the + from the lower right hand corner of cell ED9 down to row 12, this will
automatcially increment the address numbers

45 of 329
Save the file and close Excel

Lets go ahead and select the import tab in ACM, and fill in as shown.

Click the Import button.

This import should report no errors.

Click Next to finish the import.

46 of 329
Verify that the valves now exist in ACM and that they contain the configuration we gave them in Excel.

Feel free to try more export/ imports.

That completes this lab section.

47 of 329
Lab 3 – Create a Project Using Linked Libraries

When working within the Application Code Manager (ACM) application, it is often necessary to link to multiple objects together to
create a functional unit. With the release of version 3.0 of ACM, the library object can be configure so that users can
automatically create the required linked objects with a single button click. In this section of the lab, you will automatically create
content using linked libraries.
This will be demonstrated when creating the initial project and when creating a Clean-Out-Place (COP) system within the project.

Double-click the Application Code Manager shortcut on the desktop of your image:

In the top ribbon menu, expand File, New, and select Project:

In the Object Configuration Wizard, expand Project, select the myAdd-On (RA-LIB) Process 4.0 project Solution, and click
the Next button:

The “myAdd-On (RA-LIB) Process 4.0 library > Basic_Project” contains linked content to a ControlLogix Controller, FTViewSE

48 of 329
and FTHistorianSE system, which will work well for this particular application.
Type ‘COP_Project’ for the Name:

With the 4.0 release of the Library of Process Objects, we are able to choose languages other than Function Block Diagram for
our logic.

In the Misc section of the Parameters, change the Lgc_Lng_Valves parameter value to Ladder Logic (LD):

49 of 329
Upon choosing the Ladder Logic language, we are also provided the option of creating the logic in a single routine, or breaking
the logic into multiple routines. In this example, we will simply choose the default single routine
For the Project_Selection parameter value, maintain the default Create Single Routine option and click the Next button:

At this point, we need to link to supporting objects. Prior to version 3.0 of the ACM application, this would have been done on an
individual basis. For example, in this case we need to link to three objects. So, we would have had to work through the linking
process three times. With the release of version 3.0, we now have the option of automatically generating all of the necessary
linked objects with a single button click.

Click the Auto Create button:

50 of 329
In the Auto Create Linked Objects window that appears, we are able to modify the object names as desired.
Modify the Object Name for each of the linked objects as shown below and click the OK button:

Verify that the new linked objects are applied and click the Finish button:

In this example, the Auto Create button has saved us an enormous amount of time by creating all three linked objects with a
single button click.

51 of 329
Once the new project is created, go to the Class View pane and expand Program and Task.
Notice that, with the Library of Process Objects version 4.0, our project contains preconfigured tasks and main programs:

Furthermore, the preconfigured tasks and programs will be instantiated in the controller as shown under the Controllers Preview.

Go to the Controller Preview pane and expand Tasks, Task_D_500ms, and Task_D_MainProgram:

52 of 329
Let’s go ahead and add the Clean-Out-Place (COP) object to this task.

Within the Controller Preview pane, right-click Task_D_MainProgram and select Add New… :

In the Object Configuration Wizard, scroll down, expand the Specialty category, select the COP object for version 4.0, and
click the Next button:

53 of 329
Maintain the default Parameters configuration and click the Next button:

We are again confronted with the task of linking to other objects, eight in this example. Let’s use the Auto Create button to once
again save some time in our project creation.

Click the Auto Create button:

54 of 329
We are presented with a list of several valve objects, a motor object, and a couple of analog input objects that are required by
the COP object. If desired, we can now modify object names, as well as where the objects reside (i.e., within which task and
which program). For this example, we will maintain the default selections.

Maintain the default configurations and click the OK button:

Verify that the linked objects are applied and click the Finish button:

55 of 329
Notice the new objects that have been added to our project with just a few mouse clicks:

We will also require an HMI display to go along with our new objects, so let’s add that now.

From the System View pane, expand HMI and Displays, and select FTViewSE_Server:

56 of 329
Within the central configuration pane, go to the Displays tab, right-click in the white space, and select
Add New:

For this example, we will provide a descriptive name for the display and maintain the default
configuration.

Change the Name to COP_Display, click away from that cell, and click the Apply Changes… button:

Now that the display has been created, we need to associate it with the COP object.

57 of 329
Within the Controller Preview pane, select the COP01 routine:

Within the central configuration pane, select the field next to SEAssocDisplay and click the ellipsis
button:

In the right pane of the Select a Reference window, go to the Displays tab, select the new
COP_Display, and click the Finish button:

58 of 329
Now that the display has been associated with the object, click the Apply Changes… button:

If we wanted separate displays for our linked objects such as the valves in the exact same manner, we could
also create those too. We only want to show the COP for this lab, so we will not create separate valve
displays for this example. For now, let’s generate everything and see how it runs.

Since we have a V31 controller set up in Emulate, we need to set this project to match.

Change the Controller “SoftwareRevision” to V31 and set the controller to 1756-L75
And Apply Changes….

59 of 329
Right click on the controller and choose the Generate Controller option

Click the Generate button

Open the folder and open the myPAC.ACD.

60 of 329
Verify that we have various routines as shown

Start Studio 5000 Logix Emulate if it’s not already running.

Bring up the Who Active screen in Studio 5000 Logix Designer and download the project to the Emulate controller.

Click Change Type when prompted and say Yes to confirm and click download again.

61 of 329
Go ahead and put the controller into run mode.

Let’s go back to ACM and generate the display(s) as shown.


Right click on FTViewSE_Sever -> Generate Displays -> All Displays

And save it to the FTView folder

62 of 329
Let’s open FTView SE

Select Local

Right click on Displays -> Import and Export…

Choose the Import option and Next

On the next screen chose NO and Next

63 of 329
Select Multiple displays and Next

Select the BatchImport.xml file we just created as shown, and click Finish.

Notepad should open saying successfully loaded.

Close Notepad.

64 of 329
If there is already a COP01 display from Lab 1, go ahead and delete it.

Since the SE client is configured to use the display “COP01”, let’s rename the COP_Display to COP01

The display should now show as COP01 as shown

65 of 329
Go ahead and click the Launch SE Client button

Click on the Run client buttone

Go ahead click around on the screen to your satisfaction that the screen and code are up and running.

We can now see the power of ACM! In just a few clicks, we have created a working project, working code,
and have an operating HMI screen with very little effort.
Just think how much time this can save you on your projects!!!.

That completes this lab section.

66 of 329
Lab 4 – Create a Project Using the ACM Command Line

In this section you are going to experiment with the Command Line interface to ACM. Leveraging the command line console you
will export an existing ACM project to Excel. Once exported, using Excel you will make a small change and then save. Next,
again using the command line console you will then import the Excel project into ACM creating a new ACM project from the
updated Excel file.

Minimize the ACM window if it is open.

Launch ACM Console from the desktop or start menu.

67 of 329
Type help, then hit enter to get a list of all commands.

Take a quick look at the various commands that are available by scrolling through the window.

For more information about any specific command type Help and the name of the command. If you only
know that first part of a command, the tab key can be used to find the rest.

68 of 329
Type help export <tab key>

A list of commands that begin with export pop up.

Type help exportproject, then press Enter.

Type exportproject myps1 C:\Documents\myps1 false and hit Enter

69 of 329
Go to the C:\Documents and double click on the file myps1.xlsx.

The Excel window opens.

Go to the “Basic_Project(2.1)” tab

70 of 329
Let’s create a new project. First change the two names to myPS2.

71 of 329
Goto to the “Motor(2.0)” tab.

Select Rows 5 to 9

Type CTRL-D to fill in all of the rows.

Note, using the Excel method of click dragging the entire row to create more rows may auto-increment other
columns ending with numbers which may not be desired.

72 of 329
Next click on the first P100 cell and place the cursor over the lower right dot.

Drag down to row 9 to auto number the motor pumps

Make some changes, for example, change the descriptions.

Notice the tabs at the bottom. These are the various objects that exist in the project. We would be able to edit
any of them if desired. For now, we will not, but feel free to look through them.

Save and exit.

Close the folder.

Go back to the ACM Console

Type help import <Tab Key>

Since there was only one import choice, it is auto filled with help importproject

73 of 329
Hit Enter to see the help.

Type importproject “” c:\Documents\myps1 new and Hit Enter

This will create Existing_COP2 project, the name that we had specified in the excel file.

Go ahead and close ACM Console

74 of 329
Bring up ACM and open the myPS2 project that should now exist.

Expand the controller and Motors.

The additional Pumps we added should show up.

Feel free to look around and explore the changes you made.

What did you do using the command line console (CLC)?


• Used CLC to export an existing ACM project as an XML file.
• Used Excel to modify the ACM project XML file
• Imported the project using CLC
• Opened the revised project in ACM and confirmed the changes

That completes this lab section.

75 of 329
Lab 5 – Create a Motion Project using the Machine Builder Libraries

We are going to create a sample Motion project, we will configure 2 Axis (Infeed and Clamp) for a Kinetics 5500 along with 3
basic control elements for each we call methods, they are Energize, De-energize and Clear.

Open ACM

Click OK for the notification if it appears.

Select File > New > Project.

The Object Configuration Wizard opens.

Expand Project and select Basic_Project.

76 of 329
Click Next.

Name it ‘myProject_Motion’ and click Finish.

Right click on Controllers and select Add New.

77 of 329
Expand ControlLogix and select the MachineBuilder_Controller library Controller object.

Click Next.

Now you have the Object Configuration Wizard open.


Make the following changes:
Name = ‘Motion’
Slot =3
Software Revision = 31
Processor Type = L75
Motion Configuration = True
Motion Group Name = MG01

Click Finish once the configuration is complete.

Expand the tasks as shown below.

78 of 329
Note:
ms = millisecond periodic task rate. The defaults are 08, 16, 48 and 64 milliseconds.
p = priority. The defaults are 08, 10, 12 and 14.

Right click on the ms48 task and select Add New.

Expand the Device handler- CIP Motion, select the K5500 option and click Next.

The Object Configuration Wizard opens.

79 of 329
Change the name to ‘DH_Infeed’.

Note: The AxisName was automatically updated to match. But they don’t have to match.

Change the AxisName to ‘Ax_Infeed’.

The CreatePHYAxis is asking whether there is an existing physical axis or whether we need to generate one.
Since we are starting from scratch there is no existing axis and it is True that we need to generate one.

Click Next. The Object Configuration Wizard Link Libraries tab will open.

80 of 329
We could use the autocreate button if we wanted to quickly create the objects. This will put all the objects in
the same location. However, if we wanted greater control, such as putting one of these in another task, we
can create these individually.

Click in the SysIni field, click on the ellipsis and select Create New Instance.

81 of 329
Click Finish.

We also need to create a new instance of the language pack.

Give the name LP_K5500.

82 of 329
Using the pulldown, select a 64ms task and click Finish.

The device handler configuration is set.

Click Finish
.

Click Finish

83 of 329
Expand the controller to see:
SysIni – system initialization
DH_Infeed – Infeed Device Handler
LP_K5500 – Language pack for the K5500

Let’s add some methods like Clear, Energize and DeEnergize.

Right click on the 16ms task and select Add New Program.

Change the name to ‘Infeed_Methods’.

84 of 329
Click Finish.

The new program has been added.

Let’s start adding some methods. Right click on Infeed_Methods and select Add New.

85 of 329
The Object Configuration window opens.

Expand General Motion and select Energize_CD. Click Next.

Change the Name and RoutineName as shown:

86 of 329
Click in the Handler field and then click on the ellipsis.

There is only one handler to select, the DH_Infeed. Select the DH_Infeed as shown and click Finish.

Click Finish again to finalize this configuration.

Now we have a method for Energize.

Let’s add another method.

Right click on Infeed_Methods and select Add New.

This time select DeEnergize and click Next.

87 of 329
Change the Name and RoutineName as before.

Click on the Handler ellipsis and select DH_Infeed as shown. Click Finish when the configuration is complete.

88 of 329
Now we have added the DeEnergize method.

Let’s add the “Clear” operation.

Right click on Infeed_Methods and select Add New.

Expand General Motion and select Clear_CD. Click Next.

Once again, change the names and select the handler. Click Finish when done.

89 of 329
We now have the three methods we wanted.

Let’s create another device handler - Clamp.

Right click on ms48p12 and select Add New.

90 of 329
Select DeviceHandler- CIP Motion, then select the item for DH_K5500 and click Next.

As expected the Object Configuration Wizard opens.

Change the name and axis name as shown. Click Next.

Choose Link to Existing Instance for the DHLP_K5500. Click Finish.

Click Finish again to close the window.

Now we have both DH_Infeed and DH_Clamp.

91 of 329
Now we need to add some methods for the Clamp.

Right click on the ms16p10 task and select Add New Program.

The Object Configuration Wizard opens.

Change the name to Clamp_Methods and click Finish.

92 of 329
Let’s add the first method – Energize.

You probably know the steps by now, but we’ll give you a few pictorial reminders.

Change the Names and select the data handler.

93 of 329
You’ve added the Energize method.

Now add the DeEnergize method.

Change the Names as usual. Select the data handler.

94 of 329
The DeEnergize method has been added.

One more to add – Clear.

Make the usual Name changes and data handler selection.

95 of 329
All three methods have now been added for the Clamp.

96 of 329
After just a few minutes we now have a couple of device handlers and Methods for each.

Right click on Motion and select Generate Controller, or right click on Controllers and select Generate Controllers if you had
multiple controllers.

Click Generate. Since we have only one controller there is only one listed.

Wait for the Status to show Successful.

97 of 329
Click Open Folder.

98 of 329
Double click on Motion.ACD to open the Logix Designer project.

The project is now pretty well set. The only thing we didn’t add was the drives.
Expand the project to see the Methods and data handlers. Motion group MG01 is there with both the physical and virtual items.

Checking the MainRoutines we see that all the appropriate JSRs have been included.

99 of 329
Click on the Verify Controller button.

You will see that we get a couple of errors and a few warnings.

Examining the errors we see that they are associated with the missing drives.

Double click one of the errors to see the details of what is missing – the module which we did not add.

100 of 329
The warnings are also associated with things that are missing due to the missing drives.

That completes this lab section.

101 of 329
Library Management

Lab 6 – Create a Library Object: Valve Control Code with I/O References

The slide above shows the design and publishing portions of ACM.
For this section, we will focus on steps 2 and 3 using material from step one that has already been created
for us (learning Logix code development is not the aim of this lab).
Step 1: Create Content to be Libraried
We will use the Logix content that has already been prepared upfront.
Step 2: Group and Parameterize Library Content
In this part of the lab we will parameterize the provided Logix project content to turn it into a configurable
ACM library object.
Step 3: Publish
This lab part will exercise publishing the library to the ACM database, so it can be instantiated in projects.

102 of 329
Step 1: Create content to be Libraried

Open myValve.ACD file in the Lab Files folder.

Open the Valves routine.

The rungs 0 to 4 of the Valves routine represent the content that we are going to transform into our Library
Object. It is basically P_ValveSO AOI from the Rockwell Automation Library of Process Objects
It has a tagname of myValve and a description of myDescription. In order to make the exercise as simple as
possible, the logic covers mapping of only 3 input/output tags: myValve.Inp_OpenLS, myValve.Inp_ClosedLS
and myValve.Out. While all three are tied to physical inputs/outputs in our source file, we will change these
to be selectable in the final object.
For this exercise, we want our library object to include the routines with the rungs providing the I/O mapping
and AOI execution, necessary Add-On instructions, Data Types, and tags.

103 of 329
The following is what we want to achieve:
1. All the logic for all the valve instances to be placed in a single ladder logic routine.
2. Have “myValve” be replaced with the name of our choice (i.e. XV100 – Water Valve)
3. Have Limit Switch feedback input rungs included as or exclude as desired, if included, have the inputs
for those rungs tied to user selected inputs
4. Have the output rung tied to a selected output as configured by the user.

104 of 329
Step 2: Group and Parameterize Library Content

Launch the Library Designer by right clicking on the Controller myExample and selecting Plug-Ins -> Library Designer.

The Library Designer window opens.


It shows the source Logix project file representation in the left pane (title Selected Objects) and library object
contents in the middle pane (title Library Objects - which is empty, as nothing has been added from the
project yet)

Take some time and explore the Selected Objects area (expand / browse the containers to verify that it reflects the Logix project
we started with)

105 of 329
Configure Inclusions and Dependencies

We will start with configuration of Inclusions. Inclusions control what by default is included when an object is
created.

Click on the dropdown for Inclusions:

Add Children: This means that all sub-folders and sub items are included when an object is selected. In
this case if we select myValve the Parameters and Local Tags, MainRoutine and Valves routine will all be
included.
Add Dependencies: This means that all associated items such as Add-On Instructions, Data Types, and
Controller Tags are automatically included.
Allow Shared Ownership: This means ACM will allow Logix content (such as Add-On Instructions and Data
Types) to be shared among different library object definitions. If not checked, ACM will prevent AOIs and
UDTs sharing, which would mean that content items may be added to one library object only. If any of these
items is selected and added to another library object, the Library Designer plug-in does not allow the
association to take place and displays a warning.
Container Mode: This means that all Logix content will automaticlaly be added to the container type.
Container types are Task, Program and Rouitnes.

For this lab we do want all the Inclusions. Check them all to be on.

106 of 329
Define the basic properties of the library object

Expand the Tasks / Main Task containers in the Selected Objects pane. Drag the myValve Program folder from the Selected
Objects pane and drop it on the Libraries folder of the Library Objects pane.

A window for creating a new library item is opened.

107 of 329
Let’s start by giving it a Catalog Number and Description as shown:

The Catalog Number is the name that will be shown in the ACM library database.

We will continue with definition of the remaining configurable attributes (explanations later on the next page):

Solution: This is user defined, this is the highest organizational level in the ACM library database..
Type in “Examples”.

Library Type: This can be user defined (can be typed in). As we are creating a control module (to control a single device), pick
ControlModule.

Category: This can be user defined (can be typed in). We will stick to the existing Categories. Use the dropdown to select the
most meaningful category for the object. Select Valve.

108 of 329
The combination of Solution / Library Type / Category defines the library object placement in the ACM
database hierarchy. So in our example, the final placement (once the library is published, will look like this:
Examples / ControlModule / Valve / myValve:

Content Type: This allows to define a granularity of the library object. As we want our library object to be defined on the routine
level only, select Routine for our example. (This implies that the Task / Program will have to be added elsewhere outside of this
object),

Remove myValve as the Instantiation name.

The Instantiation section allows you to give a default name and description for the object when it is dropped
into a project. This makes sense when you are only going to create a few instances. But if you are going to
create many instances, then having a default name just means you have many name/description changes to
make. We will leave these fields blank.

109 of 329
Do not change anything in the Substitutions section for now.

Substitutions: This is where you define the Search and Replace capabilities of the object. We will leave it as
shown, as we want to change the text “myValve” to the objects instantiated name. NOTE: additional
substitutions can be applied later using the “Substitution” Tab

Click OK to create the new object.

110 of 329
Click OK to the Warning notice (the warning is in compliance with what we defined earlier as a Content Type: Routine)

Expand the Libraries folder and the myValve folder to see the content.

Since we defined this library object Content Type as Routine (above), observe that, just as the Warning told
us, there are only routines. Any task and program folders have been removed from the object.

111 of 329
Expand the Controller Tags and click on the tag myValve to see the details for the tag.

Notice the name “{ObjectName}”. This represents that the tag name will be changed to the object name.
The braces indicate a substitution operation, and the text shows what will be substituted. We’ll see more on
this later.
This has already been set up due to the Substitution settings that we defined during object creation (see
previous page)

112 of 329
The Add-On Instructions, Data Types, and Controller tags were included because we selected Add
Dependencies earlier using the Inclusions option,

Adding Parameters and Substitutions

We have created our library object and configured its basic properties. Now we will add parameters and
define additional substitutions to add desired configurability (description, I/O connections, etc).

113 of 329
First, let’s review which substitutions have already been defined. Click on the myValve library object at the top of the list and then
go to the Substitutions tab.

This indicates that every “myValve” occurence will be replaced by the {ObjectName}. So any Controller Tags
that contain “myValve” will be created specific to the object name used.

Let’s review once again the myValve tag. Click on the Controller Tag myValve.

Notice that the Name has already been setup for substitution (that was done when we were defining the
library attributes), but not the Description.

114 of 329
Substitution of Object Description
Let’s define the substation for Description. Click on the myValve library object and go back to the Substitutions tab and click on
the “+” to add a new substitution.

The Substitution Builder will come up. Type in myDescription into the Original field.
In the Replacement field click on the ellipsis to bring up the Member Selector.

Substitutions can be defined for different scopes. Here we start with the easiest and the most common one:
The entire library object. It does not provide low level granularity but ensures that every occurrence of the
search text within the library is replaced – resulting in a valid generated code once instantiated.

115 of 329
Click on the Predefined tab and scroll down to find ObjectDescription.

Select the Local ObjectDescription and click OK to close the Member Selector and get back to the Substitution Builder.

Now we see that the Substitution Builder is set for replacing myDescription.

Click OK to confirm to close the Substitution Builder.

116 of 329
The list in the Substitutions tab now shows both ObjectName and ObjectDescription with scope being the
whole myValve library object, which was the aim.

Let’s review the effect of the substitutions that we have defined so far:
In the Library Objects, click on Controller Tag myValve.

Notice that the Description of the object is now as a substituted value {ObjectDescription}.

117 of 329
Let’s also review how the substitution affects the ladder logic.
Click on the Valves routine.

Notice that the substitution of the object name has been incorporated into the logic too.

We also want a mapping of the I/O points. We will define additional substitutions and create parameters to
make the I/O mapping configurable.

118 of 329
Substitution using a parameter – Output I/O point
Let’s start the I/O mapping configuration by defining substitution for the output mapping.
Double click the Local:2:O.Data.0 tag name on last rung of the logic. This will bring up the Substitution Builder

Once in the Substitution Builder, click on the Local:2:O.Data.0 value in the Selected Element field to get the value copied into
the Search for: field.
Change the Scope from Rung to Library

119 of 329
We have just selected the output channel address ( Local:2:O.Data.0 ) to be the search string, which the
substitution will search for. We are also telling the search to operate on the entire library. Although we can
scope a substitution to a specific rung, we should use that option sparingly, as the original object code should
be designed with object level substitution in mind to ease maintenance and object updates.
If we keep substitution at the rung level, we must remember that other rungs and tags will not be affected by
those substitutions. This could pose a higher demand on the librarian, as substitution of any potential new
occurrence (e.g. a code update to the source library object) of the given text needs to be handled
individually. This could result in non-valid code being generated if not all single occurrences of the given text
are covered, causing the librarian to need to make addition library changes.

Now we will configure the replacement string.

Click on the ellipsis button next to the Replace with: field.

The Member Selector window will open.

We want to be able to assign an I/O point for the digital output to the instance of the library object. In order to
do that, the I/O point needs to be defined as a parameter. We will create a parameter named DO_Address
for this purpose (the choice of name is up to the designer of the library).

We need to add a new parameter, so click on the “+” sign. The Add new Parameter dialog pops up.

120 of 329
Type DO_Address in the Name field (and then click on the ellipsis for the Reference Type).

If the Reference Type was left as Immediate, the user would need to type in the DO address manually,
whereas the Reference selection will provide an interface to choose an I/O channel to populate the
parameter value.

Let’s change the Reference Type to Reference, which will allow the user to select the I/O channel.

In order to offer only the relevant references, it will be useful to limit the I/O channel selection to digital
outputs for this object. We will use the Filter option to achieve the limitation.

Click on the ellipsis button next to the Filter field.

121 of 329
The following window appears

Scroll down to the SubObject.Type and double click on DO.

122 of 329
Note that the expression now shows SubObject.Type= ‘DO’.

Click OK to confirm the expression.

123 of 329
The Filter is now defined.

NOTE: It is possible to add an explanation into the Parameter Help field as shown in the screenshot above
(not necessary).

Click OK again to finalize editing of the parameters.

124 of 329
Select the newly created DO_Address parameter in the Member Selector window and click OK.

The Substitution Builder now reflects the changes we have made. Click the OK button to accept the changes.

The last rung of the code is now fully parameterized.

125 of 329
Substitution using a parameter – Input I/O points
Now it is time for you to try what you have just learned – create two new parameters:
• DI_Address_OpenLS
• DI_Address_CosedLS
And use them for substitution of the XIC instruction arguments on rungs 1 and 2 of the object’s logic. Refer to the previous
section of this lab manual (Substitution using a parameter – Output I/O point) if in doubt on how to proceed.

Be careful about the Filter setting of the parameters.


The ‘DO’ will be changed to ‘DI’, so the expression will be SubObject.Type = 'DI'.

The final logic (Valves routine) and configuration of one of the parameters are shown below:

126 of 329
Set tag values by parameters – Cfg_Has**LS

The P_ValveSO Add-On Instruction that we are using in this example contains multiple configuration tags
that are available for every instance of the AOI. We will now pick two of these to configure for this lab:
• Cfg_HasOpenLS
• Cfg_HasClosedLS

We will create parameters that will allow us to set initial values of these tags for every AOI instance.

Click on myValve object, then again click “+” to add a parameter.

127 of 329
Configure the new parameter as shown below:

128 of 329
Click OK to confirm. The HasOpenLS appears below.

Add another parameter as shown below:

So we have created two additional parameters, but at this time they have no functionality. Now we need to
define the function we want them to serve – setting the values of Cfg_HasOpenLS and Cfg_HasClosedLS,
as explained at the beginning of this section.
We’ll do this next.

129 of 329
Click on the Controller Tag myValve, then click into the Tags pane and scroll down to find the tag element Cfg_HasOpenLS as
shown below:

Right click anywhere on this line and select Add/Edit Expression.

130 of 329
The Expression Builder window appears.

Double click on HasOpenLS to copy it to the expression window.

131 of 329
Click on the Validate button to make sure the expression is good.

It should come back as Passed. Click OK to close.

Repeat the process to add a Cfg_HasClosedLS parameter.

132 of 329
If we discover a typo and want to change the name of a parameter, here’s how we can correct a parameter
name. Let’s say we had accidentally typed HasCloseLS but really wanted HasClosedLS:

Right click on HasCloseLS and select Add/Edit Expression

Right click on the parameter and select Edit.

Change the name

Click OK.

133 of 329
Set tag values by predefined parameters – Cfg_Tag, Cfg_Label, Cfg_Desc

There are a couple of more tag elements of the P_ValveSO Add-On Instruction that we want to add as an
expression.
The following three elements that contain tag name and description to be displayed on the HMI
• Cfg_Tag
• Cfg_Label
• Cfg_Desc

Setting the values of these three tags by using the predefined {ObjectName} and {ObjectDescription} will
significantly speed up the configuration of the instances.

Scroll down almost to the end of the list to Cfg_Tag and right click to Add/Edit Expression.

134 of 329
We want to set the value of Cfg_Tag STRING to be the object name during the instantiation, so go to the Predefined tab and
select ObjectName. As usual, double click to add it to the Expression window. Click Validate.

Click OK if validation passed.

You should already know the procedure, so go ahead and make the next two changes to accomplish the configuration as shown
below:

The three expressions that we have just defined will ensure that the name of the object instance and the
description of the object instance will be written as string values into the respective tag elements of the
instance.

Parameter User Interface – Visibility

As we defined the “HasClosedLS” and “HasOpenLS” parameters, we will use their values to set visibility of
the “DI_Address_ClosedLS” and “DI_Address_OpenLS” parameter fields in the ACM user interface. This will
ease the project configuration, as it does not make sense to have I/O configuration field available for a limit
switch that does not exist.

135 of 329
Click on the myValve object in the Library Objects tree once again, then go to the Parameters pane, right click on
DI_Address_OpenLS and select Edit

The Edit Parameter windows pops up.


Select the Visible field in the “04 UserInterface” group and click on the ellipsis button.

136 of 329
The Expression Builder window comes up.
Delete the “True” statement from the expression.
Double click on the HasOpenLS parameter, so the parameter name gets copied to the Expression window.
Validate the Expression.

Click the OK button to accept the expression and close the Expression Builder.

The visibility condition is now set as pictured below:

Click OK to finalize the parameter editing

Next, configure visibility of DI_Address_ClosedLS similarly.


Use HasClosedLS as the condition.

137 of 329
Instantiation rules – Usage – Include Once vs Once Per Object

You might have already noticed earlier (when we were defining substitutions in logic) that routines and rungs
have Instantiation Rules. This allows the library creator to define how the logic will be structured in the
controller.
First we will focus on Usage. The options are Include Once and One per object and depending on the
choice of element, these settings can be applied to any routine and/or individual rungs.

• Include Once – the selected element will only be added once – an example for such usage can be
program’s Main Routine
• One per object – every instance of the generated library will add one instance of the selected element –
an example could be calls of AOI’s for the individual library instances
We will see the usage in the following section

138 of 329
Click on the MainRoutine and then click on Rung 0

Notice Rung 0 will be created “One per Object”, meaning if we create 100 valves, we would get this JSR 100
times, however we only want a single JSR to the Valves Routine, hence set the Usage to “Include Once”.
This way we get this JSR to the Valves routine only once as shown below.
TIP: The instantiation rules can be set independently for the entire routine and individual rungs. Be careful
which context you apply the rules to.

Set the Usage for Rung 0 to Include Once.

Click Apply.

139 of 329
NOTE:
It would be appropriate to also set Usage of the MainRoutine and Valves routine (if you review the settings,
both are set to “One per Object” – which is not what we intent.
But due to the fact that both of these two routines have a fixed name (there is no substitution), they will be
really only generated once (like if the setting was “Include Once”), as ACM will not be able to create multiple
instances of the element with the same names.
The Name setting will “override” the Usage setting.

Instantiation rules – Condition

The Instantiation Rules can also be used to conditionally include parts of the code (Tasks / Programs /
Routines / Rungs) in the generated project. It is achieved by using the Condition field.
We will use this setting to include rungs for mapping of valve’s Closed and/or Open limit switches only under
the condition that the valve really has these switches (we will use the parameters “HasClosedLS” and
“HasOpenLS” that we created earlier).

140 of 329
Click on the Valves routine and then click on Rung 1

Click the ellipsis button next to the Condition field. This opens the Expression Builder.

Double click on the HasOpenLS parameter, so the parameter name gets copied to the Expression window.
Validate the Expression.

Click the OK button to accept the expression and close the Expression Builder.

141 of 329
Rung 1 is now configured to be included based on condition defined by the HasOpenLS.

Perform similar steps in order to define condition for rung 2 as shown below (the condition will be “HasClosedLS”):

Click Apply.

142 of 329
What steps have we taken so far to create a new library object?
• Opened the ACD file which contained the logic for our object
• Open Library Designer to build the new object
• Dragged the code from the ACD into the Library Designer
• Added the following parameters to the object
o Substitution for name and description
o Selectable DO and DI addresses
o Configurability for having an open or closed limit switch
o Substitution for tag, label and description
• Configured instantiation rules:
o Limited the object to one JSR per routine
o Conditionally include rungs for limit switches mappings based on the instance configuration

Now we need to publish our work.

143 of 329
Step 3: Publish

Publishing means storing the library object in the ACM database, so it becomes available for instantiation in
projects.

Right click on myValve and select Publish Library.

Select the Current ACM Database and click OK.

144 of 329
We are still evaluating this object and haven’t really tested it. If we publish it and then need to make a
change we would have to change the revision.
If we publish it as pending then we don’t have to change the revision for any future testing edits.

145 of 329
Change this object to Pending Status and click Apply.

Click OK in the Library Published window.

146 of 329
Exploring the ACM Library Objects Database

Open ACM and*- see that the new object is there. In case the object does not show up (if ACM was already open), right click
Registered Libraries and click Refresh.

Click on myValve.

You can see information about the valve we created by clicking on the different tabs. Go ahead and feel free
to explore

147 of 329
Test the Library Object in a New Project

Click on File -> New -> Project.

The Object Configuration Wizard window will open. Expand the Project by clicking on the “+”.

Select the ACM2.0 Basic Project listed and click Next.

Notice that ACM is library-centric. Even the project structure is defined as a library object.

Name it Valve_Test and click Finish.

148 of 329
Add a controller

In the Class View, right click on Controllers -> Add New.

The first step is to add a controller to the project. There are several libraries available, the main difference
among those being the Tasks / Programs structure.
Controllers from the “default” (RA-LIB) ACM 2.00 solution do not contain any pre-defined Tasks.
Controllers that are part of the (RA-LIB) MachineBuilder and (RA-LIB) Process solutions bring to the project
the Task / Program hieararchy and configuration.

Select ControlLogix -> (RA-LIB) ACM 2.0 ControlLogix Controller and click Next.

149 of 329
Configure the controller as shown below:

Click Finish.

Due to the fact that we are using controller library object from the “default” (RA-LIB) ACM 2.00 solution, there
are no pre-defined Tasks and Programs. Let’s create our Task and Program manually.

Add Task and Program

Expand the controller myValve_Test and right click on Tasks and select Add New Task.

150 of 329
Accept the default settings for Task and click Finish.

Right click on Task and select Add New Program.

151 of 329
Accept the default settings for the new program and click Finish.

Add one instance of myValve object

Now we will add the new valve object.

Right click on Program and select Add New.

152 of 329
Expand Valve and select myValve as shown and click Next.

Give the valve a name of V100 and click Finish.

Note: We are not selecting any of the limit switch options at this time. Also, we are not assigning a DO
address yet because our project doesn’t have any I/O yet.

153 of 329
Add I/O Modules

To be able to map the inputs and outputs of our valve module, we will need to have I/O modules defined in
the project.
Let’s add some I/O, we will start with digital outputs.

Expand the I/O Configuration and right click on the backplane and select Add New.

Select Digital and then 1756-OA16 module and click Next.

154 of 329
Accept the defaults and click Finish.

Use the same steps to add 1756-IA16 to Slot 5.

Map I/O points to the myValve object

Now we can go back to the V100 valve and assign I/O.

In the Class View, click on V100 and then click in the DO_Address box and the ellipsis.

155 of 329
Select the module, I/O channel and SubObject Reference as shown below.

Click Finish.

See that the DO_Address has been assigned an I/O address.


Notice that there are no fields visible to assign DI points for Open Limit Switch and Closed Limit Switch. This
is due to the fact that we configured visibility of these fields based on the “HasOpenLS” and “HasClosedLS”
parameters.

Let’s assign an input channel to Open Limit Switch.


Click on the arrow in the HasOpenLS field and change the value to True:

156 of 329
Notice that the “DI_Address_OpenLS” appears, as shown below.

Configure the DI_Address_OpenLS to be linked to a channel of the digital input module in slot 5.

Once done, click on Apply Changes.

Export / Import features

Let’s create a second valve.


We will use the benefits of the ACM’s built-in import/export capabilities to speed up the project configuration
process.

157 of 329
Select V100, right click and select Export.

Click Export and Open.

158 of 329
Click Save to accept the default of saving it to the desktop.

Here is the excel spreadsheet.

159 of 329
Select the entire row for V100 by clicking on the number “5”.

Grab the small square just under the “V”. You will get a plus sign. Drag it down through line 11.

The Excel auto-increment feature increments most text ending in values for each column. Note that the valve
name and DO Address were incremented by Excel.
However, the Description stayed the same for all copies.
We can now fixup the columns as desired.

160 of 329
Change each of the descriptions just for the sake of clarity.
And Let’s leverage the configurability of the object. Change V101 to have both opened and closed limit switches. Also add
addresses to V101 and delete P_DI_Address_OpenLS values from valves V102 to V106, as shown below”

Save and close the Excel spreadsheet.

You are now back at the Import Export Manager.

Go to the Import tab.

161 of 329
Click on the ellipsis and select the file we created which is on the desktop and click Open.

Select Update and then click Import.

The details of the import are shown.

162 of 329
Click Next.

Click Finish.

163 of 329
Click OK in the dialog that appears.

Remember that we only published our library object as “Pending” – That’s why we receive the above
mentioned warning message.
Let’s review the results of our bulk generation of the myValve object instances.

Expand the Class View to shows the newly created valves.

164 of 329
Click 1756-OA16 -> Local_04 -> DO to see the references.

Explore and do the same for 1756-IA16.

Generate controller project file

Now when we are done with the project configuration, let’s generate a Logix project file.

Right click on MyValve_Test and click Generate Controller to create an updated ACD file.

165 of 329
Click Generate.

Once finished, click Open Folder.

Double click on myValve_Test.ACD to open the project in Logix Designer. It may take a minute to open the project.

166 of 329
When the project opens, explore the project to see what was added.

Scroll through the Valves Routine to see that all the valves were added.

167 of 329
You will notice that some valves do have rungs for limit switches I/O mapping, as we defined in the ACM project.

Also confirm the configuration of the Cfg_HasOpenLS and Cfg_HasClosedLS: Open the configuration dialog of V100.

Scroll down to see that this instance does have Open limit switches configured and no Closed limit switch.

Check the other valves, which we changed in the Excel spreadsheet, to see that the settings match with our configuration.

Go ahead and Close the myValve_Test.ACD and folder. (Keep the myValve ACD that we first used open)

168 of 329
What steps have we taken after creating the new library object?
• Published it to the Examples library so we could use it in a project
• Created a new project titled Valve_Test
• Created a controller with the new project
• Added one instance of the myValve object to the controller
• Added I/O to the controller and tied myValve to the I/O
• Used Export, Excel and Import to create multiple valves, leveraged their configuration options, automatically tied the
valve to I/O
• Generated the ACD file and confirmed that all logic was created for all valves as expected

169 of 329
Extra Credit Bonus Material
This section is optional.

Calculated Parameters

Recall back in ACM that when we were assigning I/O points we had to select not only the data channel, but
also the Data (or Fault) tag as well. If we had been using both the data and fault channels we would have
had to select each channel individually.

Let’s change it so we only need to select the channel to assign both tags. We are now going to create an
additional parameter to pick the data (and/or fault) tag automatically for the selected channel.

170 of 329
Return to the Library designer of myValve.ACD.

Click on the myValve library object.

Let’s add a new parameter. Click on the “+” to Add New.

171 of 329
Add the name DO_Channel of type Reference…as shown below:

172 of 329
Next, set the filter to DO as shown. Click OK twice.

173 of 329
We now have a new parameter that can point to a channel.

Now we want to have the channel parameters address propagated to the address tag.

Double click on DO_Address to open the Edit Parameters window.

174 of 329
Change the reference type to Calculated.

175 of 329
Using the pulldown, change the linked parameter to myValve.DO_Channel.

Use the pulldown in the reference field and select Browse to library…

The following window appears.

Our ACD file does not contain info about I/O-specific reference fields (used to select the correct parameter
values during project configuration), so we have to get these from the ACM database.

176 of 329
Click on the Connect to Database button.

Select “Use Windows Authentication” radio button and click Test Connection

Click OK to close the Test results pop-up and then OK again to connect to the ACM database.

177 of 329
The following window appears.

Use the filter to find the 1756-OA module. Click on the 1756-OA16 module.

Click on the External References tab. Click on the Address and then click OK

178 of 329
Review the setup.

We should remove the filter since this parameter is being auto populated by the Channel parameter.

Then click OK

179 of 329
Click Apply.

Let’s add the channel fault as well just as we did the other one.

Click the Add New button.

180 of 329
Fill in the fault parameter as shown using the same previous steps

Click OK.

We should now see the following two new parameters

You can adjust the DI_Address_ClosedLS and DI_Address_OpenLS similarly (just use 1756-IA16 reference).
And add DI_ChFault_ClosedLS and DI_ChFault _OpenLS if you want to exercise what we have just learned.

181 of 329
Parameter User Interface - re-ordening and grouping
The parameters can also be reordered to better organize them by using the up and down arrows or by right clicking on
them.

or

Re-order as follows:

The parameters can also be grouped together to provide more intuitive configuration dialogues. The grouping
does not affect code generation, but only the way the configuration is displayed.

182 of 329
Double click on HasOpenLS to open its properties

Type the word Options in the group field.

Click OK.

The HasOpenLS parameter has now moved to its own area.

183 of 329
Repeat this for HasClosedLS

Now the two limit switch options are grouped together as shown.
There is also a group column that indicates what group the options are in.

184 of 329
The groups are shown alphabetically. If a specific order is desired, it is common to precede the group name
by a number. I.E., instead of “Options”, use “1 IO”, “2 Options”, “3 More Options” as example group names
and they will be listed in alphanumeric order. Feel free to play with the grouping.

Let’s go ahead and publish our library.

Click Apply.

Publish to Library
Right click on myValve and select Publish Library.

185 of 329
Click OK to Library Destination.

Let’s imagine that we have done all the necessary testing of the module and we are going to publish it not
without the Pending status.
Setting the library object as Published will automatically increase the revision number and will also require
us to fill in the Revision Description to help track the library object changes.

186 of 329
Change the status to Published and enter a Revision Description in the Library Import Configuration.

Note: You can see the automatically assigned revision number when you scroll down in the Library Import
Configuration window.

Click Apply.

Click OK to Library Published.

Click OK to close the Library Designer window.


Close myValve.acd Studio 5000 project (Yes to Save).

187 of 329
Go back to ACM and click on the valve V100 and it should look something like the following

Go ahead and select an address for DO_Channel.

Note: Since we modified the Address to be a “Calculated” parameter, we do not go down to SubObject
References anymore, but rather select the DO Channel only

Click Finish.

188 of 329
Notice that the DO_Address and DO_ChFault auto populate when you do this.

We could now go back and add logic to make use of the channel fault.
We could also add additional fields for more complex modules that have additional fields.
We could also export this to excel to finish populating the remaining valves.
At this time we will not make any further changes as the main point of populating multiple fields has been
demonstrated.

What did you do in the Bonus Material section?


• Expanded and refined the connectivity of the myValve object to the I/O
• Explored the User Interface settings (order and grouping) of parameters

That completes this lab section.

189 of 329
Lab 7 – Create a Library Object: Kinetix 5500 I/O Drive

In this section you are going use ACM Library Designer to create a reusable Kinetix 5500 drive object.
You will publish this object to ACM, and then instantiate the drive using ACM. This will include the axis for the
drive as well.

Minimize any open windows.

From the Desktop, Open the Lab Files folder.

Select and Open the K5500Example.ACD.

190 of 329
Notice that this ACD contains an existing K5500 drive an associated Axis

Associated Axis

Existing K5500 Drive

To begin the creation of a Library Designer Object with a unique Axis name, Drive name and associated parameters,
Right Click on the Controller folder and Drill Down to the Library Designer Plug-In.

191 of 329
In the far left Pane Expand the I/O Configuration folder. Then Drag and Drop the 2198-H003-ERS my2198 on to the word
Libraries in the middle Pane. This will bring up the Assign to/Create New Library window.

Fill in the window as shown below.


Remove the name that is there and fill in the name under instantiation as myKinetixDrive_IP100
Select OK.

Click on our newly created Object and Expand the window for better visibility.

192 of 329
Double Click on the ChassisName parameter to bring up the Edit Parameter window.
Change the Data Default Value to: Chassis_IP100
Change the Parameter Help to: Please enter a unique Chassis Name,
Select OK.

Since a drive is not located in another chassis, we need to make changes so that it can be stand alone. We
remove the reference to the parent chassis and just use a unique name since ACM requires a
“ChassisName” for I/O modules. We’ll manage this later on when adding more drives by using Excel
autoincrement.

193 of 329
Let’s go ahead and make the IP address configurable by adding a parameter for it..

Fill in the screen as follows and accept the information

194 of 329
The IP field should show as follows.

Next we will associate our drive with an axis. To do this we will drag and drop an axis from the project to the Kinetix 5500 drive
object.
Expand the Motion Groups folder in the far left.
Drag and Drop the myAxis_IP100 axis onto our newly created drive object 2198-H003-ERS.
Select Yes when you see the Do you want to parameterize the AxisID on tag myAxis_IP100? prompt.

195 of 329
Expand the myCIP Paramteres at the bottom of the window.
Right Click on the MotionModule Parameter and Select Add/Edit Expression.

Enter {ObjectName}:Ch1 as the expression

196 of 329
{ObjectName}:Ch1 should now show as the expression

Let’s also Parametrize the name of the axis.

197 of 329
Click on the “Selected Element” entry to populate the search for field.
Click on the ellipsis for the replace with field.

Click on the + to add a new parameter

198 of 329
Add the parameter “Axis_Name” with a description and default value of “myAxis_IP100”

It should show up as the follow. Go ahead and select the Axis_Name entry.

199 of 329
The window should now be populated as follows.

Go ahead and OK the window and the Axis should now look like the following

200 of 329
Change the Expression to {ObjectName}:Ch1

201 of 329
Lastly, we need to configure the parent module for the drive as follows.

202 of 329
Click on the selected element to populate myEN2TR into the Search for field.
Set to the replace with field to {ParentName] and click ok.

203 of 329
Lastly, change the RPI on the drive object to 100

We will not be using the RPI parameter for this drive as it does not need one. But we will enter a valid value
for it since the minimum is defined as 2ms.

204 of 329
Now the drive should look like this. Double check all fields.

The Axis should look like this.

205 of 329
And the object should look like this.

Let’s go ahead and publish our object as pending.

Scroll Down to the Upstream Keys row.


Type CommsType=’Ethernet’.

206 of 329
(Must use single quotes, NOT double quotes).
Select Apply

Make sure to fill in the Upstream Keys as shown. It must be filled in with commstype=’ethernet’ exactly as
shown. This tells ACM that the module can be put on Ethernet

Say OK to the Library Designer windows, close and save the Logix Designer project.

TIP - If you select Pending you allow future changes of this object to not cause object revision changes. If
you select Publish, the object will create a new revision every time you make a change to the object
TIP - By entering CommsType=’Ethernet’ in the Upstream Keys box you are informing the object that it is an
Ethernet I/O object. This step is necessary to be able to add the object on Ethernet. Without this step, the
object will not show up as available to add.

Select OK to the Library Publication prompt that indicates the object is published.

207 of 329
Let’s go ahead and use the object we created. Let’s see how easy it is to now add multiple drives.

Go back to ACM and create a new Project.

This time we will choose (RA-LIB) Process 4.0 and click next.

208 of 329
Call it my_Motion_Project and click Finish

Right click on the project folder and select Add New

209 of 329
Select the ControlLogix Process 4.0 Controller

Fill in the Wizard as shown. Make sure name the controller, select an L85E, and enable configure motion

210 of 329
Notice that tasks the Process Library recommends are created for us.

Right click on the Ethernet in the Controller Preview and select Add New

211 of 329
Change the Axis ID to 100, leave the other fields at default as shown.

Click Finish

The module should now show in the window under the Ethernet port

Let’s create some more modules in Excel.

212 of 329
In the class view, export the drive

Go ahead and save and open the export

Let’s go ahead and create 10 more drives in Excel.


Click on line 5 to highlite that row.

213 of 329
Click on the dot as shown and drag down to create an additional 10 rows as shown below.
Verify that autoincrement has changed the lines as shown.

We also need to do the same thing on the HW modules tab.


Go ahead and create 10 additional row by selecting rwo 4 and using the excel to drag down the dot to create an additional 10

214 of 329
rows as shown.

Close and save the excel file.


Let’s save the Excel file and now let’s go ahead and import it.

215 of 329
We should have no errors

Verify that the drives show in ACM.


Feel free to take a look at the various settings.

216 of 329
Let’s go ahead and generate our controller so we can view our resutls

Open the ACD file

217 of 329
In the ACD file we can see now that we have all of our drives and they are already associated with the correct axis. Feel free to
look and explore around to verify the configurations.

That completes this lab section.

218 of 329
Lab 8 – Create a Library Object using Linked Libraries

Often, when we are creating new library objects for use in the Application Code Manager (ACM) application, we need to link the
object to other libraries that are related to the object. In this section of the lab, you will create a new Clean Out of Place (COP)
object that contains linking to other libraries.

Create the COP Library Object

Double-click the Lab Files shortcut on the desktop of your image:

Locate and open the COP.ACD file.

This project contains logic for a COP application that contains new logic specific to the application, as well as several related
objects from the Library of Process Objects. We would like to create an object in the ACM application for this COP logic so that
we may reuse it in future projects. The steps taken in this logic are summarized below, and a piping and instrumentation sketch
shows the overall process:

As we can see, there are many elements related to the process that we would like to link to the COP object itself. For example,
there are five valves, two analog inputs, and a pump (motor) that may all be handled by standard objects found within the Library
of Process Objects. Thus, when we instantiate a COP object, we want the ability to link to existing objects (assuming they have
already been added to the ACM project), or link to newly created objects. This is where linked libraries come into play.

219 of 329
Whenever we create new objects for use in ACM, we should consider using a naming convention that allows for substitution
when we instantiate the object. In this example, the routine and the controller tags all have specific names that we should
generalize to enable substitution.

Within the Tasks folder of the Controller Organizer, expand Task_D_500ms and Task_D_MainProgram.

The COP01 routine contains the logic that we want to create as a library object.

Right-click the COP01 routine and select Properties:

220 of 329
Change the Routine Name to COPx, and click the OK button:

In the top ribbon menu, expand Search and select Replace… :

221 of 329
In the search window, set Find What to COP01, Replace With to COPx, Find Where to Current Tags and Controller Tags,
and click the Replace All button:

In the Search Results, you should see seven instances wherein COP01 was replaced with COPx:

Click the Close button to close the search window.

Now that we have our naming prepared for the desired substitution behavior, we may begin creating our object.

Right-click the Controller COP folder, expand Plug-Ins, and select Library Designer… :

222 of 329
When the plug in opens, using the INCLUSIONS dropdown, check all four of the options:

Expand Tasks, Task_D_500ms, and Task_D_MainProgram:

223 of 329
Drag the COPx routine from the Selected Objects pane and drop it into the Libraries found within the Library Objects pane:

In the Assign to/Create New window, type ‘COP_Example’ for the Catalog Number:

For the Library Type, select Design Pattern, and for the Solution, select Examples:

224 of 329
Select Specialty for the Category:

Change the Instantiation Name to COP01 and click the OK button:

225 of 329
When the COP_Example has been added to the Libraries, select it:

Let’s begin by adding parameters that will allow the user to configure the object during instantiation. We know that we will want
the ability to reference an HMI display, so we will add that parameter first.

Within the Library Attributes, go to the Parameters tab:

We want the user to have the ability to configure the temperature settings, so let’s add object parameters for that. We will want
the user to configure the engineering units, the maximum value in engineering units, and the failure high limit.

Right-click on COP, and select Add New Parameter:

226 of 329
Configure the New Parameter as shown below and click the OK button (use Alt + 0176 to get the degree symbol):

Right-click COP [Temperature Settings] and select Add New Parameter:

227 of 329
Configure the New Parameter as shown below and click the OK button:

Right-click COP [Temperature Settings] and select Add New Parameter:

228 of 329
Configure the New Parameter as shown below and click the OK button:

Your object Parameters should appear as follows:

Now that we have added the required object parameters, let’s move on to adding linked libraries.

Go to the Linked Libraries tab:

Here we are able to specify to which libraries the user should be able to link the object upon instantiation. We know that we need
links to five valve objects, two analog input objects, and one motor object, so let’s add them now.

229 of 329
Right-click in the link table and select Add New Link:

We are going to use objects that currently exist in our database, so let’s connect to the database so that we may browse to the
desired object.

In the Add New Linked Library dialog, click the Connect to Database button:

230 of 329
Select the Use Windows Authentication radio button and click the OK button:

Once you are connected to the database, type ‘Valve’ in the Filter box and then select the (RA-LIB) Process 4.0 Valve object:

231 of 329
Configure the linked library as shown below and click the OK button:

Right-click in the link table and select Add New Link:

232 of 329
Type ‘Valve’ in the Filter box and then select the (RA-LIB) Process 4.0 Valve object:

Configure the linked library as shown below and click the OK button:

233 of 329
Right-click in the link table and select Add New Link:

Type ‘Valve’ in the Filter box and then select the (RA-LIB) Process 4.0 Valve object:

234 of 329
Configure the linked library as shown below and click the OK button:

235 of 329
Right-click in the link table and select Add New Link:

Type ‘Valve’ in the Filter box and then select the (RA-LIB) Process 4.0 Valve object:

236 of 329
Configure the linked library as shown below and click the OK button:

237 of 329
Right-click in the link table and select Add New Link:

Type ‘Valve’ in the Filter box and then select the (RA-LIB) Process 4.0 Valve object:

238 of 329
Configure the linked library as shown below and click the OK button:

239 of 329
Right-click in the link table and select Add New Link:

Type ‘Motor’ in the Filter box and then select the (RA-LIB) Process 4.0 Motor object:

240 of 329
Configure the linked library as shown below and click the OK button:

241 of 329
Right-click in the link table and select Add New Link:

Type ‘AIn’ in the Filter box and then select the (RA-LIB) Process 4.0 AIn object:

242 of 329
Configure the linked library as shown below and click the OK button:

243 of 329
Right-click in the link table and select Add New Link:

Type ‘AIn’ in the Filter box and then select the (RA-LIB) Process 4.0 AIn object:

244 of 329
Configure the linked library as shown below and click the OK button:

For this last link, we want to pass our object temperature parameters into the linked object. We configure these in the table
below.

245 of 329
Verify that the Temperature AIn is selected:

In the Parameter Links table, click the green plus sign:

Within the Parameter browser, select the Temperature_EU Parameter and click the OK button:

Click the ellipsis button in the Parameters in the linked library cell:

246 of 329
Click the ellipsis button next to the Library Catalog Number:

Click the OK button to select the default AIn selection:

247 of 329
In the FindPartial box, type ‘cfg’, then select the Cfg_EU Parameter and click the OK button:

In the Parameter Links table, click the green plus sign:

248 of 329
Within the Parameter browser, select the Temperature_PVEUMax Parameter and click the OK button:

Click the ellipsis button in the Parameters in the linked library cell:

249 of 329
Click the ellipsis button next to the Library Catalog Number:

Click the OK button:

250 of 329
In the FindPartial box, type ‘cfg’, then select the Cfg_PVEUMax Parameter and click the OK button:

In the Parameter Links table, click the green plus sign:

251 of 329
Within the Parameter browser, select the Temperature_FailHiLimit Parameter and click the OK button:

Click the ellipsis button in the Parameters in the linked library cell:

252 of 329
Click the ellipsis button next to the Library Catalog Number:

Click the OK button:

253 of 329
In the FindPartial box, type ‘cfg’, then select the Cfg_FailHiLimit Parameter and click the OK button:

We now have all of the required linked libraries. Now these linked libraries need to be populated in the Substitution tab.

Go to the Substitution tab:

Right-click on COP_Example and select Add New Substitution:

254 of 329
In the Original box, type ‘XV100’ and then click the ellipsis button next to the Replacement cell:

Go to the Linked Libraries tab, select the Water_Valve, and click the OK button:

Click the OK button:

255 of 329
Continue adding substitutions in a similar manner until your table appears as follows:

This completes the configuration of the new object.

Click the Apply button:

256 of 329
Within the Library Objects pane, right-click the COP_Example library and select Publish Library:

Verify that the LOM Repository radio button is selected and click the OK button:

257 of 329
Change the Status to Pending – this will allow you to make a modification if required after testing and not be required to
increment the major or minor version number.

Type a Description of ‘Clean Out of Place System’, and click the Apply button:

Click the OK button:

Our new object is now available for instantiation, and, when it is instantiated, the user will be able to link to the appropriate
content.

258 of 329
Test Newly Created COP Linked Library Object

Double-click the Application Code Manager shortcut on the desktop of your image:

In the top ribbon menu, expand File, New, and select Project:

In the Object Configuration Wizard, expand Project, select the myAdd-On (RA-LIB) Process 4.0 project Solution, and click
the Next button:

259 of 329
Type ‘COP_Test_Project’ for the Name:

Click Next
Click the Auto Create button:

Using the Defaults, click OK

Click the Finish button:

260 of 329
Go to the Controller Preview pane and expand Tasks, Task_D_500ms, and Task_D_MainProgram:

Let’s go ahead and add the Clean-Out-Place (COP) object to this task.

Within the Controller Preview pane, right-click Task_D_MainProgram and select Add New… :

261 of 329
In the Object Configuration Wizard, scroll down, expand the Examples category, select the COP object, and click the Next
button:

Maintain the default Parameters configuration and click the Next button:

262 of 329
We are again confronted with the task of linking to other objects, eight in this example. Let’s use the Auto Create button to once
again save some time in our project creation.

Click the Auto Create button:

We are presented with a list of several valve objects, a motor object, and a couple of analog input objects that are required by
the COP object. If desired, we can now modify object names, as well as where the objects reside (i.e., within which task and
which program). For this example, we will maintain the default selections.

Maintain the default configurations and click the OK button:

263 of 329
Verify that the linked objects are applied and click the Finish button:

Notice the new objects that have been added to our project with just a few mouse clicks:

That completes this lab section.

264 of 329
Lab 9 – How to add FTViewSE Content to an Existing Object

This section will cover how to add FTView content to an existing library object that contains Logix content in
ACM. You will create an FTView display leveraging global objects, address those objects using ACM
parameters, save then export the display. Once the display is exported, using the Library Object Manager
you will associate and publish the FTView objects to an existing ValveSO library object. To verify proper
configuration you will then test your newly added FTView configuration.

Add FTViewSE content to an Existing ACM Object


Launch FTView Studio.

Select View Site Edition (Local) and click Continue.

Launch our Template_ProcessLib_40_ACM project.

265 of 329
The first step is to create a display. We’ll use a global object to populate the display.

Expand the Global Objects folder and open the (RA-BAS) Process Graphics Library.

We will get the following window of objects.

266 of 329
Hold down Ctrl key and left click with the mouse to select each of the four orientations for the valve.
Next do a Ctrl-C to copy all four selected valves.

Note: Right mouse click will only work for a single object. Ctrl-C must be used for multiple objects.

Right click on Displays and select New.

267 of 329
Use Ctrl-v to paste, or just right click and select paste.

The valve object in four different orientations should now be on your display.
NOTE: you may need to move the 4 values closer to the upper left of the display to look like below.

268 of 329
Right click on one of the objects and select Global Object Parameter Values.

This is the typical window for settings parameters for the process objects.

269 of 329
Type in the parameters for tag and path EXACTLY as shown and fill in parameter 5 with a value of 0,

{{AreaPath}{ObjectName}} and {{AreaPath}}

Now, click and drag over all the cells in the Value column and type Ctrl-c. This will copy all the cells at once.

Click OK.

270 of 329
Open another object the same way and right click on the first cell and select paste.

All of the values should fill in.

Do the same steps for the remaining two objects.

271 of 329
From the top tool bar, select Objects > Drawing > Text. Left click and draw a text box above the objects.

The Text Properties window will open.

Type in {ObjectName} and click OK.

272 of 329
This will populate a valve on a display with the name of the object as ACM will replace {ObjectName}.

Close the display and when prompted Save the display as (RA-LIB) ValveSO

273 of 329
Scroll down through the list of displays and confirm it is there.

Now we must export it, right click on Displays and select Import and Export.

Select Export and Next.

274 of 329
Clear all, then select (RA-LIB) ValveSO. Click Next.

Select the desktop as the export location. Click Finish.

275 of 329
You should get a confirmation that the export was successful.

Close the notification.

Minimize the FTView window.


Open the Library Object Manager.

The LOM should already be connected to the database.

276 of 329
If it is not connected to the database, it will look like the below.

Right click on the Repositories and select Add Repository > ACM.

Configure the settings as shown below.

Test the Connection.

277 of 329
It should be successful. Click OK.

Click OK to add the ACM library.

The newly associated libraries are shown.

278 of 329
Expand the myAdd-On Examples library and select ValveSO.

279 of 329
This is our Logix object with which we want to add FTViewSE content.
Under Library Content right click on ValveSO and select Add Section > FT View

The FT View folder now appears.

In the FT View folder, right click on SE Symbols and select Add.

280 of 329
The Symbol Builder window appears.

Click on the ellipsis to browse to the desktop and select the file ValveSO file as shown below.

Click Open.

281 of 329
The four valve objects and the text box are added.

Select all of these objects using Ctrl-A.

282 of 329
Click OK. The Properties window opens.
Note that the controller name and object name are automatically included.

Click Apply at the bottom right.

283 of 329
Confirm the library status.

Click Apply.

It is now in the ACM data base.


Minimize the Library Object Manager (LOM).

What have you done in this lab so far?


• Opened ViewSE
• Leveraged existing valve global objects from the Process Library
• Created a valve display with various valve orientations and substitutable global object parameter values
• Exported the display to XML format
• Opened the Library Object Manager
• Selected a ValveSO object that had logic but no ViewSE content
• Added ViewSE content (valve symbols) to the ValveSO object.

284 of 329
Test updated ValveSO Object
Open ACM. We want to create a new project to test it.
Double-click the Application Code Manager shortcut on the desktop of your image:

In the top ribbon menu, expand File, New, and select Project:

In the Object Configuration Wizard, expand Project, select the myAdd-On (RA-LIB) ACM 2.00 project Solution, and click the
Next button:

285 of 329
Type ‘Test_ValveSO’ for the Name:

The myAdd-On (RA-LIB) ACM 2.00 library is a template project that contains a ControlLogix Controller, FTViewSE, and
FTHistorianSE, which will work well for this particular application.

Click the Auto Create button:

286 of 329
For our test application let’s rename the ControlLogix Controller to “ValveSO”

Click Ok

With the following screen, click Finish

In this example, the Auto Create button has saved us an enormous amount of time by creating all three linked objects with a
single button click.

287 of 329
Once the new project is created, go to the Controller Preview pane and select myTestCLX.
Configure the controller as shown below.

Click Apply Changes

Go to the Controller Preview pane and expand Tasks, MainTask and MainProgram

288 of 329
Let’s go ahead and add the ValveSO object to the MainProgram
Within the Controller Preview pane, right-click MainProgram and select Add New… :

Select ValveSO under Valves and click Next.

289 of 329
Name it V100. We won’t assign a display because we still need to create one.

Click Finish

290 of 329
Under Class View, click on V100 to verify our options.

Click on FTViewSE_Server under the HMI > Displays via the System View

Let Adjust the MaxSymbolWidth and MaxSymbolHeight parameters as shown.

291 of 329
Go to the Displays tab, right click in the open area and select Add New.

Click on the first row, Configure as shown.

Click Finish.

292 of 329
Now assign a display to V100.
Select V100 in the Class View and click in the SEAssocDisplay field. Click on the ellipsis.

Select the project -> FactoryTalk SE-> Display tab.


Select ValveSO, then click Finish.

Now click Apply Changes.

293 of 329
Let’s make at least 5 to show the arrangement.

I’m sure you have become familiar with the procedure, but we will give you a few screenshots as reminders.

Right click on V100 and select Export.

Click the Export and Open button.

Click Save.

294 of 329
The spreadsheet opens. (It may be minimized at the bottom of your screen.)

Use the select and drag lets create V101 – V104. Give them descriptions as shown below.

Save and close the spreadsheet.

295 of 329
Click on the Import tab. (If you closed the Import Export manager window, right click on V100 and choose Import.)

Click on the ellipsis button, select our newly modified file and click Open.

Select Update, then click Import.

296 of 329
There should not be any errors.

Click Next.

When done, click Finish.

Click Yes (if asked to save changes) and click Finish

297 of 329
Click OK to the pending library message.

The five valves should be shown.

We could generate a controller ACD, etc., but let’s just create and verify the displays.

Right click on FTViewServer and select Generate Displays > All Displays.

298 of 329
We will just put them on the desktop this time. Click OK.

Click OK.

Now we can import the modified displays.

Goto FTViewSE studio, Template_Process.lib project and right-click on displays and select Import and Export.

299 of 329
Select Import and click Next.

Select No and click Next.

Select multiple displays and click Next.

300 of 329
Use the ellipse to browse to our file.

Select our newly generated batch import file and click Open.

301 of 329
Click Finish.

The import should complete successfully.

Open the ValveSO display. It should have each of our valves, with the four different orientations for each valve.

302 of 329
Right click on any of the valves, select Global Object Parameter Values. Confirm that the parameters are correct.

Close all open applications and folders.

We don’t need to create an ACD since this lab focused on the FTViewSE

What have you done in this lab after adding the ViewSE content to the ValveSO object?
 Opened ACM and created a new project
 Added an instance of ValveSO titled V100
 Added a display to the project
 Added valve symbols to the display
 Leveraged Export, Excel and Import to create 5 instances of the valve
 Generated a display with valve symbols for each of the 5 valves
 Imported the display into a ViewSE project and confirmed that all global object paramters were correct

That completes this lab section.

303 of 329
Lab 10 - How to add FTHistorian Content to an Existing Object

This section we will cover how to add FTHistorianSE content to an existing library object that contains Logix content in ACM.
You will add Historian configuration using the Library Object Manager to the ValveSO object from Lab 7. Once the configuration
is added you will publish the updated library object in ACM. To verify proper configuration you will then test your newly added
historian configuration.

Open the Library Object Manager (LOM).

Click on the ValveSO object. In the Library Content pane you can see that there is FTView content but no Historian content.

Let’s add a historian section.

304 of 329
Right click on ValveSO and select Add Section > FT Historian.

The folder is added.

Now let’s add historian tags.

Right click on Historian Tags and select Add.

305 of 329
The Tag browser window opens.

Expand the {ObjectName} folder and browse to Val_Sts. Click OK.

306 of 329
The Val_Sts tag is now created.

307 of 329
Add the object description (ellipsis, Predefined as earlier) and change the point type and typical value as shown.

Now add a second point.

308 of 329
This time select Val_Fault. Click OK.

Modify the descriptor and point type as shown.

309 of 329
Check the Historian Configuration Parameters. These were automatically generated.

Click Apply.

310 of 329
Confirm that the status is Pending. Click Apply.

Click Yes to the update message.

311 of 329
Open ACM.
Just to make sure the libraries are current, right click on Registered Libraries and select Refresh.

Let’s add one of our newly configured valves.

Right click on Program and select Add New.

312 of 329
Select ValveSO. Click Next.

The Object Configuration window opens.

313 of 329
Give it a name V200 and click Finish.

We should have the following

The FTHistorianSE Server has a parameters template and a listing of point types.

314 of 329
Click on the point type tab to see all the pre-configured point types.

Scroll to the right to see the remainder of the point definition columns.

Specifically we need the P_Valve point types.

315 of 329
Now click on V200 and then the ellipsis to select the correct tag for SC_Val_Sts.

Select the Point Type tab and correct tag, P_Valve_Val_Sts, and click Finish.

We now have the valve status definition for the historian completed.

316 of 329
Complete the configuration for the valve fault historian point.

Click Apply Changes.

The historian configuration is complete. Next we will generated the Historian Tags.

Right click on FTHistroianSE Server and select Generate Historian > All Controllers.

317 of 329
Save the csv file to the Desktop. Click Save.

318 of 329
Click OK to the notice.

Double click on the file to open it.

Review the content.

Close and don’t save changes.

How did you add historian content to an existing object?


• Opened LOM
• Selected an existing tag element to be added as a tag to be historized
• Opened ACM and refreshed the libraries to capture the above change
• Added the ValveSO to the project again, This time it has tag elements to be historized
• Selected the correct historian tag type for the tag elements to be historized
• Generated an Excel spreadsheet containing the historian points

319 of 329
Extra Credit Bonus Material

We have defined the historian points, but at present they have to be selected for each valve. For one valve
this is not an issue, but if we are creating 100 valves we will need a more automated process.

In ACM click on V200 and copy the descriptor for SC_Val_Sts.

Go back to the LOM and select ValveSO. Then select the Historian Configuration -> SC_Val_Sts.

320 of 329
Paste the description into the Default Value.

Do the same procedure for the SC_Val_Fault.

Click Apply.

321 of 329
Click Apply again.

Click Yes to acknowledge the update warning.

322 of 329
Back in ACM, let’s add a new instance to confirm that the historian points are added automatically.

Refresh everything first.

Then select ValveSO, right click and select Add New Instance.

Note that the historian tags are automatically created.

That completes this lab section.

323 of 329
Lab 11 – Get Library Object from ACM to Edit

In this section you will “Reconstitute” a Library Object out of the ACM registered library database. This is useful in cases where
you need to edit the Library Object however you don’t have the original Logix Designer project that was used to create the object.
In our case we are going to reconstitute the “DIn” library object.

If not already open, Launch Application Code Manager (ACM)

Click OK to acknowledge any prompts.

Expand the Process 3.5 library and select DIn. Right click on Din and select Reconstitute ACD.

324 of 329
The window opens. Click Next.

Change the Software revision to 31.


Click Next.

325 of 329
Expand the folders to see what will be generated.

Notice the content that will be reconstituted from the library such as tags, Add-On Instructions, Routines, etc.

Click Next, then navigate to the Logix folder on the desktop and click Save.

326 of 329
Either click on Din_1_3.ACD to open the project, or click on open folder and open the project from there.

327 of 329
Open Library Designer

Expand the DIn folders.

All the parts needed for DIn are available back in Library Designer. We can now modify this object if desired.
With ACM 2.x and forward, we can pull the object back out of ACM with ease.

Let’s close the windows to get back to ACM

Click Cancel to close the Library Designer.

328 of 329
Close the Logix Designer.

Click Finish to close the Reconstitution window.

How did you recover the source logic ACD file?


• Opened the ACM project
• Found the library object for which you need to recover the source logic
• Used the ACM feature “Reconstitute ACD” to re-create
• Reviewed the ACD file to confirm the logic is there

That completes this lab section.

329 of 329

You might also like