TechED 2018 - CL20 - Studio 5000 Application Code Manager
TechED 2018 - CL20 - Studio 5000 Application Code Manager
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 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
Select Topic of Interest
Contents
Before you begin ........................................................................................................................................... 4
About this lab .................................................................................................................................................................................... 4
Tools & prerequisites ........................................................................................................................................................................ 4
3 of 272
Before you begin
Software
Studio 5000 Application Code Manager (ACM) 2.21
Logix Designer V30 and V31
Logix Emulate V30
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.
4 of 272
Lab 1 – Explore a Sample 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.
Note:
By default it opens the last opened project, which in this case is Existing_COP.
It also gives a notice that this project contains library objects that are unpublished. This means the library
object is still in development and has yet to be finalized. The library is in ‘edit’ mode.
5 of 272
Click OK to acknowledge the message.
Notice the wrenches that are present. These indicate the library objects are in edit mode and are pending
finalization.
Click on the COP library object and the details will appear in the middle window.
Note that the catalog number “COP”, located in the “Examples” solution library, version 1.0 is listed as
Pending.
6 of 272
Expand the (RA-LIB) Process 3.5 library, you will see that the Process Controller does not have a wrench.
This indicates that there are no pending edits. The Catalog Number confirms that this is a published library
object.
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
7 of 272
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.
Click on the CLX 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.
8 of 272
Do the same with the Software Revision. Keep the selection at “v30”.
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:
9 of 272
The historian needs the shortcut too, but also needs RSLinx Enterprise and the application. This is the fully
qualified path.
Click on XV100 in the Class View to see Parameter details of this instance.
10 of 272
Note the task and program where it is located, you can confirm this by looking at the Controller Preview.
Also, notice when XV100 is highlighted. In the controller preview there are boxes around the MainRoutine
and XV100 routine. This indicates that this content is coming from the XV100 library object.
Looking further down the project tree you can also see the associated Add-On Instructions and Data Types.
This is a nice feature …..
11 of 272
Turning our attention to the middle window, we can see the configuration details for this instance of the
object.
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: - No alarm options have been selected.
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.
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..
12 of 272
Click on LT100 and examine the parameters associated with it.
13 of 272
Click on the Linked Libraries tab.
If we were doing this for the first time, we would click and use the pulldown to see what options we
have.
Click on the first row and using the pulldown, select Link to Existing Instance.
14 of 272
It will then show you all the existing valves that you can choose from.
Again use the dropdown, but this time select the Create New Instance option.
15 of 272
Now the Object Configuration Wizard appears.
16 of 272
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.
17 of 272
The COP Linked Libraries window should look like this.
18 of 272
Again, as we noted before, 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 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.
19 of 272
Click on the Generate button. Note that we will save this to the Logix Folder on the desktop.
TIP: Under Tool > Setting, you can change the default selections
20 of 272
Once you get a status of CLX.ACD file Successful, click Close.
21 of 272
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.
Now let’s take a closer look inside of our Logix Designer project.
22 of 272
Open up each of the MainRoutines.
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
23 of 272
Feel free to browse through the routines.
All the appropriate transmitters and valves are included and addressed correctly in the logic as shown in the
next two pictures.
24 of 272
Launch Studio 5000 Logix Emulator (located on the desktop)
Next, using Studio 5000 Logix Designer, go ahead and download the project to the Emulate controller.
25 of 272
Put the controller into RUN mode if it isn’t already running.
26 of 272
Minimize Logix Designer and close the Logix folder.
27 of 272
Select the Displays tab.
Right click on FTViewSE_Server and select Generate Displays > All Displays.
28 of 272
Select the folder called FTView and click OK.
29 of 272
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.
Note: ACM generated the displays for FTView, and these will need to be imported into the FTView SE
project.
30 of 272
Right click on Displays and select Import and Export.
31 of 272
Select No to backup and click Next.
32 of 272
Click on the ellipsis button to select the batch import file.
Click Finish.
33 of 272
Close this Display Import summary.
34 of 272
Expand the Displays folder in FTView Studio and double click on AIns 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.
35 of 272
Double click on the Motors display.
36 of 272
Open the COP01 display.
Right click on the Water Supply XV200 valve and select Global Object Parameter Values.
37 of 272
The values are configured to the appropriate tag and path.
Launch the client by clicking the Client button and then clicking Run.
38 of 272
The client is setup to open the COP display. Note that all the objects are communicating to the appropriate
tags in the controller.
39 of 272
Click on LT100 to bring up its faceplate.
40 of 272
Open the faceplates for the recirc pump and any of the valves.
41 of 272
Double click on the Start button to run the procedure.
The sequence starts running, but is “stuck” there since LT100 level is zero. The sequencer is waiting for the
tank level to be at a minimum of 75% filled.
42 of 272
The following are optional steps if you wanted to simulate the Clean-Out-Place system, you can skip the
simulation by going to the next section which will be FTHistorianSE_Server
Go to Maintenance mode by navigating to the maintenance screen and clicking the Request Maintenance Mode button
43 of 272
Go back to the Home screen.
Substitute a value of 80 by first clicking on the arrow for Use Substitute Value and then clicking in the Substitute PV field.
44 of 272
Enter 80 and click OK.
The sequencer will advance now to Step 2 which is an Add Caustic step, the caustic valve (XV104) will open
along with the recirc valve (XV101) and the pump (MT100) will begin running.
45 of 272
Once the caustic has been added, the sequencer will advance to step 3 which is Wash step
Enter a value of 185 for TT100. Don’t forget to go into Request Maintenance Mode.
46 of 272
We are doing this to demo a working faceplate and code generated by ACM! The timer will now count down
and will move to the next state. Feel free to explore this fully functional faceplate.
Let’s go ahead and generate content for Historian.
47 of 272
Expand Historian all the way. Right click FTHistorianSE_Server and select Generate Historian -> All Controllers
Once the generation is complete, open the file via the Desktop.
Note: Microsoft Excel does not need ot be activated to view this file.
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.
48 of 272
Close the spreadsheet.
49 of 272
Lab 2 - Creating a New Library Object
The slide above shows the design and publishing portions of ACM.
For this section, we will primarily focus on steps 2 and 3 using material from step one that has been created
for us.
Step 1: Create content to be libraried
In this lab the base Logix control code will be provided
50 of 272
Open myValve.ACD file in the Lab Files folder.
Simple logic consisting of the P_ValveSO AOI from the Rockwell Automation Library of Process Objects. It
has a tagname of myValve and a description of myDescription. The control output tag element is
myValve.Out. We will tie this to a real output using myValve_Out.
The Local 1:O.Data0 I/O location is really just a placeholder.
We have decided to use an Alias for the I/O location. You don’t have to use an alias, we just opted to do so.
So our library object will include these routines, Add-On instructions, Data Types, tags, etc.
51 of 272
Launch the Library Designer by right clicking on the Controller myExample and selecting Plug-Ins -> Library Designer.
52 of 272
Expand the Task folders as shown:
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 to be shared amoung library objects
such as Add-On Instructions and Data Types. If not checked, ACM will prevent AOIs and UDTs sharing.
Container Mode: This means that all Logix content will automaticlaly be added to the container type.
Container types are Task, Program and Rouitnes.
53 of 272
Drag the myValve folder from the Selected Objects window and drop it on the Libraries folder of the Library Objects window.
54 of 272
Let’s start by giving it a Catalog Number and Description as shown:
Content Type: This gives you a granularity is how you what to define the library object. Select Routine for our example.
Routines can be added to Programs. Programs can be added to Task. Tasks can be added to the
Controller.
55 of 272
Category: Use the dropdown to select the most meaningful category for the object. Select Valve.
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.
Substitutions: This is where you define the Search and Replace capabilities of the object. We will leave it as
shown: NOTE: additional substitutions can be applied using the “Substitution” Tab
56 of 272
Click OK to create the new object.
57 of 272
Expand the Libraries folder and then 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. The task and program folders have been removed.
58 of 272
Click on the Controller 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.
59 of 272
The Add-On Instructions, Data Types, and Controller tags were included because we selected Add
Dependencies earlier.
We have created our library object. Now we will add parameters to make the object highly configurable for
when we use it.
Click on the myValve library object at the top of the list and then go to the Substitutions tab.
60 of 272
This indicates that every place that “myValve” exists it will be replaced by the {ObjectName}. So any
Controller Tags that are created will be specific to the objects being created,
Notice that the Name is setup for substitution, but not the Description.
Click on the myValve library object and go back to the Substitutions tab and click on the “+” to add a new substitution.
Type in myDescription for Original. For the replacement click on the ellipsis to bring up the Member Selector.
61 of 272
In the Member Selector we could again Add new, but there are several predefined members which are
commonly used.
Now we see that the substitution builder is set for replacing myDescription.
Click OK to confirm.
62 of 272
In the Library Objects, click on Controller Tag myValve.
Notice that the substitution of the object name has been incorporated into the logic too.
63 of 272
Click on the Controller Tag myValve_Out.
We see the Alias tag is setup for Local:1:O.Data.0, but we don’t want it to always point to that I/O location.
Click on the field which contains Local:1:O.Data.0 and then click on the ellipsis button.
64 of 272
The Expression Builder window will open.
If we left it as Immediate, the user would need type in the DO address for every instance – this is not desired.
Let’s change this to Reference, which will allow the user to select the I/O channel.
65 of 272
We want to limit the I/O channel selection to just digital outputs for this object.
66 of 272
Scroll down to the SubObject.Type and double click on DO.
67 of 272
Click OK again to finalize editing of the parameters.
Now we need to remove the existing expression and replace it with our new parameter.
Delete the Local:1:O.Data.0 from the expression window and double click on the DO_Address to copy it down to the
expression window.
68 of 272
Now click OK to finish building the expression.
69 of 272
Click on the myValve library object.
Notice that the DO_Address. All ACM parameters are shown here.
We could change the “Valves” routine name to make it a variable, but we won’t for this lab.
We do want to create another couple of parameters to make the object even more configurable.
70 of 272
Click on myValve object, then again click “+” to add a parameter.
71 of 272
Click OK to confirm. The HasOpenLS appears 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. We’ll do this next.
72 of 272
Click on the Controller Tag myValve and scroll down to find the tag element of interest as shown below:
73 of 272
The Expression Builder window appears.
74 of 272
It should come back as Passed. Click OK to close.
75 of 272
If we discover a type 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.
Click OK.
76 of 272
TIP! If we would have edited the parameter name via the Parameters tab, not via the Expression Builder as
above this issue would have been avoided.
Either manually edit the name or remove it from the Expression and re-add it, Click Validate once again.
Click OK.
77 of 272
We are now correct.
Scroll down almost to the end of the list to Cfg_Tag and right click to Add/Edit Expression.
78 of 272
This is going to be the object name, so go to the Predefined tab and select ObjectName. As usual, double click to add it to the
Expression window. Click Validate.
Ok, just about done, just one more thing we need to do.
79 of 272
Click on the MainRoutine and Click 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 only get this JSR to the
Valves only once as shown below.
Click Apply.
80 of 272
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 address
o Configurability for having an open or closed limit switch
o Substitution for tag, label and description
• Limited the object to one JSR per routine
81 of 272
Select the Current ACM Database and click OK.
82 of 272
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 have it as pending then we don’t have to change the
revision for any future edits.
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.
83 of 272
You can see information about the valve we created by clicking on the different tabs. Go ahead and feel free
to explore
The Object Configuration Wizard window will open. Expand the Project by clicking on the “+”.
84 of 272
Select the ACM2.0 Basic Project listed and click Next.
85 of 272
Select ControlLogix -> ACMS2.0 ControlLogix Controller and click Next.
Click Finish.
86 of 272
Expand the controller myValve_Test and right click on Tasks and select Add New Task.
87 of 272
Accept the default settings for the new program and click Finish.
88 of 272
Expand Valve and select myValve as shown and click Next.
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.
89 of 272
Let’s add some digital outputs.
Expand the I/O Configuration and right click on the backplane and select Add New.
90 of 272
Accept the defaults and click Finish.
In the Class View, click on V100 and then click in the DO_Address box and the ellipsis.
91 of 272
Select the module, I/O channel and SubObject Reference as shown below.
Click Finish.
92 of 272
Let’s create a second valve. We will use the import/export capabilities.
93 of 272
Click Save to accept the default of saving it to the desktop.
Here is the excel spreadsheet. Note: Microsoft Excel does not have to be activated for this exercise.
94 of 272
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.
Note that the valve name and DO Address were incremented by Excel. However, the Description is the same
for all copies.
95 of 272
Change the descriptions just for the sake of clarity.
Let’s leverage the configurability of the object. Change V101 to have opened and closed limit switches.
96 of 272
Go to the Import tab.
Click on the ellipsis and select the file we created which is on the desktop and click Open.
97 of 272
Select Update and then click Import.
Click Next.
98 of 272
Click Finish.
99 of 272
Click 1756-OA16 -> Local_04 -> DO to see the new references.
Right click on MyValve_Test and click Generate Controller to create an updated ACD file.
100 of 272
Click Generate.
Double click on myValve_Test.L5X to open the project in Logix Designer. It may take a minute to open the project.
101 of 272
Click the Import button on the Save Project As dialog.
When the project opens, explore the project to see what was added.
102 of 272
Scroll through the Valves Routine to see that all the valves were added.
103 of 272
Scroll down to see that this instance does not have limit switches configured.
Check V101, which we changed in the Excel spreadsheet. It does indeed have limit switches configured.
Go ahead and Close the myValve_Test.ACD and folder. (Keep the myValve ACD that we first used open)
104 of 272
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
o Generated the ACD file and confirmed that all logic was created for all valves as expected
105 of 272
Lab 2 – Extra Credit Bonus Material
This section is optional.
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.
106 of 272
Return to the Library designer of myValve.ACD.
107 of 272
Add the name DO_Channel of type Reference…as shown below:
108 of 272
Next, set the filter to DO as shown. Click OK twice.
109 of 272
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.
110 of 272
Change the reference type to Calculated.
111 of 272
Use the pulldown in the reference field and select Browse to library…
112 of 272
Select “Use Windows Authentication” radio button and click Test Connection
Click OK.
113 of 272
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
114 of 272
Review the setup.
We should remove the filter since this parameter is being auto populated by the Channel parameter.
115 of 272
Then click OK
Click Apply.
Let’s add the channel fault as well just as we did the other one.
116 of 272
Fill in the fault parameter as shown using the same previous steps
Click OK.
117 of 272
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:
118 of 272
Type the word Options in the group field.
Click OK.
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.
119 of 272
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.
Click Apply.
Right click on myValve and select Publish Library.
120 of 272
Click OK to Library Destination.
Change the status to Published and enter a Revision Description in the Library Import Configuration.
Click Apply.
Click OK to Library Published.
121 of 272
Click OK to close the Library Designer window.
Close myValve.acd Studio 5000 project (Yes to Save).
Go back to ACM and click on the valve V100 and it should look something like the following
Click Finish.
122 of 272
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.
123 of 272
Lab 3 – 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.
124 of 272
The first step is to create a display. We can’t just use the global object to connect to the Logix object.
Expand the Global Objects folder and open the Process Graphics Library.
125 of 272
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.
126 of 272
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.
127 of 272
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.
128 of 272
Type in the parameters for tag and path EXACTLY as shown and fill in parameter 5 with a value of 0,
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.
129 of 272
Open another object the same way and right click on the first cell and select paste.
130 of 272
From the top tool bar, select Objects > Drawing > Text. Left click and draw a text box above the objects.
131 of 272
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
132 of 272
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.
133 of 272
Clear all, then select (RA-LIB) ValveSO. Click Next.
134 of 272
You should get a confirmation that the export was successful.
Right click on the Repositories and select Add Repository > ACM.
135 of 272
Configure the settings as shown below.
136 of 272
Click OK to add the ACM library.
Under Library Content right click on ValveSO and select Add Section > FT View
137 of 272
The FT View folder now appears.
138 of 272
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.
139 of 272
The four valve objects and the text box are added.
140 of 272
Select all of these objects using Ctrl-A.
141 of 272
Click OK. The Properties window opens.
Note that the controller name and object name are automatically included.
142 of 272
Confirm the library status.
Click Apply.
143 of 272
Open ACM. We want to create a new project to test it.
Click Next.
Click Finish.
144 of 272
Now add a controller.
Click Next.
145 of 272
Name and configure the controller as shown below.
Click Finish.
146 of 272
Leave the defaults. Click Finish.
147 of 272
Keep the defaults.
Click Finish.
148 of 272
Select ValveSO and click Next.
Name it V100 and click Finish. We didn’t assign a display because we have created any yet.
Click Finish
149 of 272
Under Class View, click on V100 to confirm our options.
In the System View, via the HMI, right click on Displays and select Add.
150 of 272
Adjust the MaxSymbolWidth, MaxSymbolHeight and DisplayTemplate parameters as shown.
Go to the Displays tab, right click in the open area and select Add New.
Click Finish.
151 of 272
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, then go to the Display tab. Select ValveSO, then click Finish.
I’m sure you have become familiar with the procedure, but we will give you a few screenshots as reminders.
152 of 272
Right click on V100 and select Export.
Click Save.
153 of 272
The spreadsheet opens. (It may be minimized at the bottom of your screen and Microsoft Excel does not need to be activated
for this exercise)
154 of 272
Use the select and drag as we did before and create V101 – V104. Give them descriptions as shown below.
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.
155 of 272
Select Update, then click Import.
Click Next.
156 of 272
Click Yes ( if asked to save changes.)
Click OK.
157 of 272
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.
158 of 272
We will just put them on the desktop this time. Click OK.
Click OK or Finish.
Goto FTViewSE studio, Template_Process.lib project and right-click on displays and select Import and Export.
159 of 272
Select Import and click Next.
160 of 272
Use the ellipse to browse to our file.
161 of 272
Select our newly generated batch import file and click Open.
162 of 272
Click Finish.
Open the ValveSO display. It should have each of our valves, with the four different orientations for each valve.
163 of 272
Right click on any of the valves, select Global Object Parameter Values. Confirm that the parameters are correct.
We don’t need to create an ACD because we didn’t complete the configuration of the IO.
What have you done in lab 3 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
164 of 272
Lab 4 - How to add FTHistorian Content to an Existing Object
This section we will cover how to add FTHistorian 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, 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.
Click on the ValveSO object. In the Library Content pane you can see that there is FTView content but no Historian content.
165 of 272
The folder is added.
166 of 272
The Tag browser window opens.
167 of 272
The Val_Sts tag is now created.
168 of 272
Add the object description (ellipsis, Predefined as earlier) and change the point type and typical value as shown.
169 of 272
This time select Val_Fault. Click OK.
170 of 272
Check the Historian Configuration Parameters. These were automatically generated.
Click Apply.
171 of 272
Click Yes to the update message.
Open ACM. Just to make sure the libraries are current, right click on Registered Libraries and select Refresh.
172 of 272
Select ValveSO. Click Next.
173 of 272
Add historian tags by right clicking on ScanClass and selecting Add.
174 of 272
Click Finish.
The FTHistorianSE Server has a parameters template and a listing of point types.
Click on the point type tab to see all the pre-configured point types.
175 of 272
Scroll to the right to see the remainder of the point definition columns.
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.
176 of 272
We now have the valve status definition for the historian completed.
177 of 272
The historian configuration is complete. Next we will generate the Historian Tags.
Right click on FTHistroianSE Server and select Generate Historian > All Controllers.
178 of 272
Click OK to the notice.
Review the content. (Note: Microsoft Excel does not have to be activated for this exercise)
179 of 272
Lab 4 – 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.
Go back to the LOM and select ValveSO. Then select the Historian Configuration -> SC_Val_Sts.
180 of 272
181 of 272
Do the same procedure for the SC_Val_Fault.
Click Apply.
182 of 272
Click Yes to acknowledge the update warning.
Back in ACM, let’s add a new instance to confirm that the historian points are added automatically.
Then select ValveSO, right click and select Add New Instance.
183 of 272
Note that the historian tags are automatically created.
184 of 272
Lab 5 – Reconstitute a Library Object
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.
Expand the Process 3.5 library and select DIn. Right click on Din and select Reconstitute ACD.
185 of 272
The window opens. Click Next.
186 of 272
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.
187 of 272
Either click on Din_1_3.ACD to open the project, or click on open folder and open the project from there.
188 of 272
Open Library Designer
All the parts needed for DIn are available back in Library Designer. We can now modify this object if desired.
In ACM 1.0, a master project ACD file was necessary. Now starting with ACM 2.x, we can pull the object
back out of ACM with ease.
189 of 272
Close the Logix Designer.
190 of 272
Lab 6 - Command Line Console
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.
Take a quick look at the various commands that are available by scrolling through the window.
191 of 272
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.
192 of 272
Type help exportproject, then press Enter.
193 of 272
The Excel window opens. (Note: Microsoft Excel does not have to be activated for this exercise)
194 of 272
Let’s create a new project. First change the name to Existing_COP2.
195 of 272
Select Rows 5 to 9
196 of 272
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.
Next click on the first MT100 cell and place the cursor over the lower right dot.
197 of 272
Drag down to row 9 to auto number the valves
198 of 272
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.
Since there was only one import choice, it is auto filled with help importproject
199 of 272
Hit Enter to see the help.
This will create Existing_COP2 project, the name that we had specified in the excel file.
200 of 272
Bring up ACM and open the Existing_COP2 project that should now exist.
Feel free to look around and explore the changes you made.
201 of 272
Lab 7 – Creating a sample Process Project from Scratch
We are going to recreate the COP project from scratch to see how it was built. We will be using various objects like valves, pump
motors, etc. to build this project for a Clean-Out Place (COP) system to support the COP object.
202 of 272
Give it a name myProject_COP and click Finish.
203 of 272
Configure the controller as shown below and then click Finish
Note: The Add New…. Option At the task level would open a window and show us any objects configured for
the task level. Currently we do not have any configured and we will directly create a task
204 of 272
Give it a name MainTask.
Note: We could have changed the task properties here if we wanted. For this lab we will just use the defaults.
Click Finish.
205 of 272
Give it a name Devices and click Finish.
206 of 272
Click Finish
207 of 272
Let’s go ahead and add the valve object.
Note: We have options of different types of valves. We will use the default Solenoid-operated.
208 of 272
Try to select the SEAssocDisplay.
You will see that none exists. We will create one shortly.
209 of 272
Expand HMI. Right click on Displays and select Add.
Click Next.
210 of 272
Change the MaxSymbolWidth and MaxSymbolHeight as shown below.
This sets the spacing from object to object and needs to be set larger than the largest object to avoid object
overlap.
211 of 272
Modify name to myAIn, LeftIndexMax to 5 and DisplayWidth to 1280 and DisplayHeight to 768
Right click and choose Add New. Add the remaining displays as shown below.
Click Finish.
212 of 272
Now you can assign a display to the object.
213 of 272
Select the Displays tab on the right pane, then select myValves and Finish
Notice the red marks by the historian details, this is because nothing yet has been configured.
214 of 272
Expand Historian and right click on Scan Class and select Add.
Click Next.
215 of 272
Click on the Point type tab.
You can see all the pre-configured historian point types for PlantPAx objects that will be added automatically.
Click Finish.
216 of 272
….and they automatically fill in for the historian configuration.
217 of 272
Export and Open
Click Save and the Excel sheet opens. (Check bottom of your screen for Excel file if not opened, and activation is not required)
218 of 272
Let’s create the other valves we need for the COP
Select rows 5 through 9 and use Ctrl-D to fill down. Then use auto-increment feature of Excel to update the valve names or
manually update them as per below
In the Import Manager, Select the Import Tab. Browse to your file. Select the Update Merge button and use ellipse button to
select correct file.
219 of 272
Click Open.
Click Import.
220 of 272
Click Next
Click Finish.
Expand the project to see the new valves objects were added.
221 of 272
….along with the routines to support them.
222 of 272
Under Specialty, select COP. Click Next.
223 of 272
TIP: If we had added the COP in the class view, the Task and Program dropdowns would be blank and we
would need to select them to put the COP in the correct location in the project. By using the Controller
Preview instead, we get these filled in for us.
Let’s go ahead and select the myCOP01 SE display. Click the ellipse button.
224 of 272
Click on Linked Libraries tab.
225 of 272
Select XV100. Click Finish.
TIP: If you know the valve number you could just type it in vs. selecting it.
226 of 272
If you go to “Link to an Existing Instance” for Pump it will be empty because we haven’t created any pumps
yet.
227 of 272
Fill in the motor pump as shown. Don’t forget the SE display!
Click Finish
228 of 272
Next, do the same to create the Tank Level as shown. Put this one on the AIn SE display.
Click Finish.
229 of 272
In the Controller Preview pane, right click Devices and Add New…
This time we have to select the AIn object since ACM does not know the context of the object we want.
Click Next
230 of 272
Use the name TT100 and fill it in as shown
Click Finish
231 of 272
The project Trees should now look like this.
Click on the COP01 and the Linked Libraries tab so that we can now associate the object we just created.
232 of 272
Click on the ellipsis for the Temperature and select Link to Existing Instance.
Notice the context sensivity in that only analog ins are shown.
233 of 272
All right, lets see the result of our hard work.
Generate the ACD file. Right click on myCOP and select Generate Controller.
Click Generate.
234 of 272
Click the Open Folder button and then open the mCop.ACD file.
Feel free to poke around to see the logic that was generated. Notice that all the JSRs in the main task have
already been added to call all the necessary routines and everything is address correctly.
Download and put into Run mode. Change the controller type as needed.
235 of 272
Let’s go back to ACM now and create the displays. Close any open prompt windows.
Right click and select FTViewSE_Server > Generate Displays > All Displays.
236 of 272
Open the ViewSE Local Station, and open the ViewSE project Template_ProcessLib_ACM
237 of 272
For the Import choose:
- Import Graphic Information into displays
- No (to backup displays)
-Import Multiple Display
Click Finish.
238 of 272
Go ahead and open the different displays we imported to see what was generated.
239 of 272
240 of 272
Go ahead and click the Global Object Parameter Values of some of the objects to see that the tags have
already been assigned for us!
We can copy these objects directly onto any screen where they are needed. They have already been linked
to the tag they need to be associated with. This decomonstration shows us ACM can save us a lot of work!
241 of 272
In order to test the displays we will have to create a new SE client.
242 of 272
Open the client and select New.
243 of 272
Select Local Station and then choose Template_ProcessLib_ACM
Click Run.
Run the client and check the operation if you wish. Lab 1 has information on using the COP faceplate.
Let’s go ahead and generate the points for Historian.
Right click on FTHistorian and select Generate Historian > All Controllers.
244 of 272
Save the file to the Desktop.
245 of 272
Navigate to and open the Excel file we created.
You can see that all the Historian points in the import file have been generated for us!
246 of 272
Lab 8 – Creating a sample Motion Project from Scratch
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
247 of 272
Expand Project and select Basic_Project.
Click Next.
248 of 272
Expand ControlLogix and select the MachineBuilder_Controller library Controller object.
Click Next.
249 of 272
Expand the tasks as shown below.
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.
250 of 272
Expand the Device handler- CIP Motion, select the K5500 option and click Next.
Note: The AxisName was automatically updated to match. But they don’t have to match.
251 of 272
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 in the SysIni field, click on the ellipsis and select Create New Instance.
252 of 272
Click Finish.
253 of 272
Using the pulldown, select a 64ms task and click Finish.
Click Finish
.
Click Finish
254 of 272
Expand the controller to see:
SysIni – system initialization
DH_Infeed – Infeed Device Handler
LP_K5500 – Language pack for the K5500
Right click on the 16ms task and select Add New Program.
255 of 272
Change the name to ‘Infeed_Methods’.
Click Finish.
Let’s start adding some methods. Right click on Infeed_Methods and select Add New.
256 of 272
The Object Configuration window opens.
257 of 272
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.
258 of 272
259 of 272
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.
260 of 272
Expand General Motion and select Clear_CD. Click Next.
Once again, change the names and select the handler. Click Finish when done.
261 of 272
Let’s create another device handler - Clamp.
Select DeviceHandler- CIP Motion, then select the item for DH_K5500 and click Next.
262 of 272
As expected the Object Configuration Wizard opens.
Right click on the ms16p10 task and select Add New Program.
263 of 272
The Object Configuration Wizard opens.
You probably know the steps by now, but we’ll give you a few pictorial reminders.
264 of 272
Change the Names and select the data handler.
265 of 272
Change the Names as usual. Select the data handler.
266 of 272
Make the usual Name changes and data handler selection.
All three methods have now been added for the Clamp.
267 of 272
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.
268 of 272
Click Open Folder.
269 of 272
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.
270 of 272
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.
271 of 272
The warnings are also associated with things that are missing due to the missing drives.
272 of 272