Rslogix 5000
Rslogix 5000
Contents
Before you begin......................................................................................................................................... 5 About this lab ................................................................................................................................................ 5 Tools & prerequisites .................................................................................................................................... 5 Lab 1: Using Multi-Tasks/Multi-Programs in Logix <10 minutes> ........................................................ 6 About This Lab .............................................................................................................................................. 6 The Traditional PLC method. ........................................................................................................................ 7 Using multiple Tasks/Programs in Logix....................................................................................................... 9 Task Properties ........................................................................................................................................... 12 Program Properties ..................................................................................................................................... 13 Lab 1 Summary ......................................................................................................................................... 16 Lab 2: Laying Out the Tag Database in a Logix Controller <10 minutes> .......................................... 17 About This Lab ............................................................................................................................................ 17 Looking at a Traditional Database Layout .................................................................................................. 17 Looking at UDT layout................................................................................................................................. 19 Using the Conveyor UDT ............................................................................................................................ 22 Lab 2 Summary ......................................................................................................................................... 26 Lab 3: Code Re-use <10 minutes> .......................................................................................................... 27 About This Lab ............................................................................................................................................ 27 Data Scoping............................................................................................................................................... 27 Using Copy and Paste ................................................................................................................................ 28 Using the Partial Import/Export Tool ........................................................................................................... 31 Lab 3 Summary ......................................................................................................................................... 34
3 of 112
Lab 4 Design Tools Add-On Instructions <45 minutes> .................................................................... 35 About This Lab ............................................................................................................................................ 35 AOI basics ................................................................................................................................................... 36 Creating an Add-On Instruction (AOI)......................................................................................................... 39 Using the AOI in RLL (Ladder Logic) .......................................................................................................... 44 Using the AOI in a Function Block (FB) Routine......................................................................................... 51 Re-using an AOI.......................................................................................................................................... 54 Export / Import Security............................................................................................................................... 56 Lab 4 Summary ......................................................................................................................................... 64 Lab 5 Online Tools <10 minutes>............................................................................................................ 65 About This Lab ............................................................................................................................................ 65 Looking at the Data Context........................................................................................................................ 66 Looking at the definition logic...................................................................................................................... 67 Online Monitoring an AOI............................................................................................................................ 69 Lab 5 Summary ......................................................................................................................................... 71 Lab 6 Observe FactoryTalk Alarms & Events <25 minutes> ................................................................ 72 About This Lab ............................................................................................................................................ 72 Observe FactoryTalk Alarms & Events within RSLogix5000 ...................................................................... 74 Observe FactoryTalk Alarms & Events within SE Client application .......................................................... 75 Lab 6 Summary ......................................................................................................................................... 80 Lab 7 Developing FactoryTalk Alarms & Events in FactoryTalk View Site Edition <40 minutes> ... 81 About This Lab ............................................................................................................................................ 81 RSLogix5000 Application Development...................................................................................................... 81 FactoryTalk View SE Application Development.......................................................................................... 89 Create FactoryTalk View Graphics interface .............................................................................................. 94 Configure Historical Alarm and Event Logging ........................................................................................... 98 Lab 7 Summary ....................................................................................................................................... 101 Appendix A Useful AOI Information...................................................................................................... 102 Appendix B Useful FactoryTalk Alarms and Events Information ...................................................... 108
4 of 112
Software RSLogix5000 programming software v17 RSLinx Classic v2.54 FactoryTalk View SE V5.0 RSLinx Enterprise v5.0 MS SQL Server2005 Express Files required: This hands-on lab uses the following files located in the Lab Files Folder on the computer desktop: Conveyor_Program_S1.ACD Conveyor_Program_S11.ACD Look_up_a_bar_code.ACD Alarm Banner.gfx Log Viewer.gfx Menu Bar.gfx Overview.gfx Valve1 Detail.gfx ClientKeys.key Startup.mcr Hardware devices required: 1796-CL11 demo box.
5 of 112
1. From the computer desktop, double-click on the Shortcut to Lab Files. 2. Double-click on the existing project called Conveyor_Program_S1.ACD. 3. This will launch the project in RSLogix5000. The Controller Organizer appears on the left side of the RSLogix5000 window, with a Controller folder called Conveyor_Program.
6 of 112
Controller Organizer The Controller Organizer is a graphical representation of the contents of your controller file. This display consists of a tree of folders and files that contain all of the information about the programs and data in the current controller file. The default main folders in this tree are: Controller File Name - contains controller-scoped tags, controller fault handler and the power up handler. Tasks - tasks are shown in this folder. Each task shows its own programs with routines and program-scoped tags. Trends - trends are shown in this folder. Data Types - shows predefined and user-defined data types. User-defined data types are created in this folder. I/O Configuration - contains the information about the hardware configuration of this controller file. It holds a hierarchy of modules with which the controller is configured to communicate. In front of each folder, there is a square containing a + sign or a - sign. The + sign indicates that the folder is closed. Click on it to expand the tree display and display the files in the folder. The - sign indicates that the folder is already open and its contents are visible.
7 of 112
4. From the Controller Organizer, expand the MainProgram folder by clicking on the +. Once the MainProgram is expanded it will appear as follows:
The first thing to notice is everything is lumped in one big program. Some questions you may have: When does it run? What calls the routines? If you double-click on the MainRoutine, you can see that the engineer was trying to segment the program by using JSRs to go to the conveyors and temperature loop. If you then double-click on the Conveyor_1 routine you will notice that there are JSRs to the routines that deal with that conveyor. This is the way a traditional PLC does program segmentation and is confusing if you are trying to troubleshoot this application. This is not taking advantage of Logix. Task Icons A Continuous Task folder Icon looks as follows: An Event Task folder Icon looks as follows: A Periodic Task folder Icon looks as follows: Look at the routine called Temperature_Loop. Notice that the temperature loop is coded in the MainTask which is a continuous task. Traditionally you programmed a PID by using a timer to trigger the PID instruction at a known rate.
8 of 112
Logix controllers have periodic tasks so you can take advantage of a timed task. This application would be much better suited to a Periodic task. We will see this later on. 5. Close the file within RSLogix5000 using File > Close. Respond with No if prompted to save the file. Now lets look at the same code written for a Logix controller.
9 of 112
8. Notice that all the Conveyor 1 code is now organized into one program.
9. Notice that Conveyor 2 and 3 are also in separate programs. 10. Notice that the PID loop has been moved into a new Task.
10 of 112
12. Expand the PID_Loop Program. 13. Double click on the Temperature Loop Routine to view it. In a periodic task the timer is no longer needed because you can schedule the task to execute based on a time period. The PID instruction will only be scanned when the task executes.
Lets explore some things. Every Logix task type has a hierarchy that has to be followed no matter what type of task you use. The hierarchy is as follows: Task Program Routine
Every task must have at least one Program and every program must have at least one routine to function. In the above example the Main Task is the task. It contains 3 programs, Conveyor_1,
11 of 112
Conveyor_2, and Conveyor_3. Each Conveyor program has 4 routines, Conveyor_1, C1_Alarm_Status, C1_Energy_Manag, C1_Start_Stop. Back to the questions we asked before. When does it run? How do the routines get called? Lets explore the properties of each to answer the questions.
Task Properties
14. Open the continuous task properties by right clicking on Main Task and selecting Properties.
15. Click the Configuration tab to view the top level task properties.
Task Dialog Box From this window you configure the properties of a task. This window changes based on the type of task you choose. There are two configuration options for every task type (starting with RSLogix5000 V12): Disable Automatic Output Processing to Reduce Task Overhead - At the end of a task output processing is performed. The controller goes through the I/O tree and updates the state of outputs affected by the task. By disabling output processing the task will execute faster. If you have a periodic task that is only doing data manipulation and has no outputs you would want to disable output processing. Or, if you have only a few outputs that are manipulated by the task you may want to disable output processing and use the IOT (Immediate Output instruction), output processing done immediately.
12 of 112
Inhibit Task - This feature allows you to prevent a task from executing. This is used during system commissioning to isolate and test a specific task by inhibiting other tasks in the project.
Program Scheduling Program scheduling allows you to determine the order in which the Programs in a Task are executed. In this figure, the execution order would be Conveyor_1, Conveyor_2, and then Conveyor_3. You can change the execution order by highlighting a program and using the up and down move arrows. Unscheduled programs are still downloaded to the controller, but not executed.
Program Properties
Every program must have a Main routine. To view or set this we must view the program properties. 18. Open the Conveyor Program properties by right clicking on the Conveyor_1 Program in the controller organizer and clicking on Properties.
13 of 112
14 of 112
20. Click the Pull Down and look at the routines. You could pick any of the routines in the Program as the main routine. Set it back to Conveyor_1 and click OK button. There is no correlation between the Program named Conveyor_1 and the Routine named Conveyor_1. We just happened to pick the same name.
Main and Fault Routines For a Program you can assign two types of routines: Main and Fault. You must always assign a Main Routine. A Fault Routine is optional. Main Routine: first routine that is executed when the program is executed. For example, in our case, when the Conveyor_1 is executed it will start with the Conveyor_1 routine. This is equivalent to a MCP for a PLC5 or File 2 for a SLC. Fault Routine: lets you use code to clear specific faults and let the controller resume execution.
15 of 112
21. Open the Main routine for Conveyor_1. At this point it will look similar to a traditional PLC with JSR instructions.
22. Here are the answers to the questions we asked before: How do the Routines get called? Each Routine is called from the Main routine. The Main routine is defined in the Program Properties. When does it run? The programs are Scheduled in the Task Properties.
Lab 1 Summary
In this lab we looked at an existing project programmed using techniques typically used in traditional PLCs. We then compared them to a project programmed to take advantage of using Multi-Tasks / Multiple-Programs in Logix.
16 of 112
Lab 2: Laying Out the Tag Database in a Logix Controller <10 minutes>
Learn about the advantages of using UDTs Learn how to optimize the layout of UDTs
Opening an Existing Controller Project In this section of the lab, you will open an existing project. 1. Open Conveyor_Program_S3.ACD using the File > Open menu browsing to C:\Lab Files\Understanding Advanced Programming Techniques in Logix folder.
The Tag Editor will appear. You notice that the Tag Data base has the look and feel as if it was a traditional PLC.
17 of 112
Logix Tag Database In a traditional PLC a physical address identifies each item of data, such as N7:0 or B3:0/0. Without using address comments or symbols, it was very difficult to read logic. In Logix controllers there is no fixed memory, N7:0 or B3:0/0. The Logix memory is a tag based system. The tag name itself identifies the data. This lets you organize your data to mimic your machine. You can actually document your code with the tag names you assign, for example Nozzle_1_Temperature. 3. Click on the + next to N7 in the tag editor. This will expand the array N7 to show all the elements. You notice that addresses are used from N7 [0] through N7 [7]. Then again from N7 [20] through N7 [27] and N7 [40] through N7 [47]. These areas are for each of the 3 conveyors, a traditional PLC data table layout.
Between each of these blocks of memory is a large block that is not used. Assume that three different engineers created these Conveyor programs and they had to leave room for expansion or to add something later. This used more memory in the controller than was necessary.
18 of 112
Since we looked at how to reorganize the program layout to take advantage of Logix, we can also look at a better way to organize the data layout. We already said the Logix controller is Tag based instead of Address based. Just typing a descriptive name alone will save development time. You can still waste memory but we will show you how to avoid this as well. This section of the lab will show you how to make full use of the Logix controller and use User Defined Data Types for your Conveyor data. User-Defined Data Types User Defined Data Types also known as UDTs or structures, let you organize or group data logically, so all of the data associated with a device can be grouped together. For example, each conveyor has 8 Integer values, 3 Real values, 2 Timers, and 11 Booleans associated with it. In a traditional PLC, 4 different data tables would be needed. When you have multiple conveyors you would need to map out the conveyors into each data table. This becomes hard to manage. What a UDT allows you to do is group the different data types together (Integer, Real, Timer, Boolean, etc), in a User-Defined Data type. You can then create an array of that UDT type. This makes programming, documenting the code, and tracking of the data easier.
You will notice that there is a UDT called Conveyor (Creation of the UDT was started for you).
19 of 112
5. Double-click on Conveyor. This will open the UDT editor for the Conveyor data type. As you can see, the UDT is a mixture of different data types. This is a very useful tool when programming.
Guidelines for User-Defined Data Types Multi-dimensional arrays are not permitted in UDTs. Grouping like data types together creates a more compact UDT and uses less memory. The two examples below have the same number and type of elements inside. The example on the right has them grouped together. Grouping BOOLs together has the greatest impact on reducing memory usage. The right side example uses 4 less bytes than the one on the left.
20 of 112
Look at the UDT in the program. Notice that like data types are not grouped together. BOOL and REAL data types are mixed. The size of the UDT is currently 52 bytes. This can be reduced by grouping the BOOLs together. 6. To do this, click to the left of Motor_Overload. This will select the entire row.
7. Click the Move Up button. This moves the Motor_Overload tag up in the UDT.
21 of 112
8. Repeat this with the other BOOL tags until they are all grouped together. 9. Click on Apply. Notice the size of the UDT now. You have saved 12 bytes.
You now have a completed UDT that defines a conveyor in the program. 10. Click on OK to close the UDT editing window. 11. From the File menu select Close. You will be asked to save changes made to the file, select No.
You will notice that there is a UDT called Conveyor (Creation of the UDT was started for you).
22 of 112
14. Double-click on Conveyor. You will see that we have added a few elements into the UDT. We took all the descriptions from N7 and added them as members into this UDT so we could use it for all of the Conveyor Programs.
Lets see how we used it: 15. From the Controller Organizer, double-click on Controller Tags. This will open the Tag Editor.
Looking in the tag editor you see a new tag in the database, Conveyor_1.
23 of 112
16. Click on the + next to Conveyor_1 to expand the tag. You notice that the tag has the same format as the UDT. This is confirmed by looking in the Data Type column. The Data Type is now Conveyor. This is how you use a UDT.
17. From the Controller Organizer, open Conveyor_1 Program in the Continuous Task by clicking on the
+ symbol.
24 of 112
18. Remember what the Start_Stop Routine used to look like using the traditional PLC addressing?
19. Double-click on the routine C1_Start_Stop. This will open the routine for viewing and editing.
20. Now displayed is the ladder file C1_Start_Stop. You notice that the addressing for Conveyor 1 is using the UDT. As you can see, the code is now self-documenting and the tag name describes what it is. You do not need to add a description to the address like you do in traditional PLCs. There are some older style addresses still in the code, we will change them later.
25 of 112
21. Close the file within RSLogix5000 using File > Close. Respond with No if prompted to save the file.
Lab 2 Summary
In this lab we looked at using UDTs to make a controllers memory more compact and easier to use. We will save time creating code and then troubleshooting it later on.
26 of 112
Data Scoping
When you create a tag, you define it either as a controller tag (global data) or a program tag for a specific program (local data).
A Logix controller lets you divide your application into multiple programs. There is no need to manage conflicting tag names between programs. This makes it easier to re-use both code and tags names in multiple programs. Tags are either Controller scoped or Program scoped. A Controller scoped tag is considered a Global tag and any Routine in any Program in any Task can access it. Data at the Program scope is isolated from other programs. Routines cannot access data that is at the Program scope of another program. You can re-use the tag name of a Program scoped tag in multiple programs.
27 of 112
28 of 112
3. From the Controller Organizer, right click on the MainTask and select Paste.
29 of 112
This added in a copy of the original conveyor segment code and incremented the program name.
4. Open the Program tags for Conveyor. Then open the Program tags for Conveyor 1.
5. Notice they contain the exact same tags. This illustrates how Program Scoped tags can save time and effort by not conflicting with other Programs tags.
6. Repeat the copy steps above to add in the remaining eight conveyor segments. 7. When you are finished, verify that the Controller Organizer appears as follows:
8. Close the file within RSLogix5000 using File > Close. Respond with No if prompted to save the file.
30 of 112
Opening an Existing Controller File In this section of the lab, you will open an existing program that contains the code you want to add into the first conveyor segments code. Using the Partial Import/Export Tool to Export to a L5X File 9. Open Look_up_a_bar_code.ACD using the File > Open menu browsing to C:\Lab Files\Understanding Advanced Programming Techniques in Logix folder. 10. From the Controller Organizer, double click on the MainProgram folder to expand it. This is where the bar code station code is located. Once the MainProgram is expanded it will look like the following.
11. Double-click on the MainRoutine to open the ladder editor. 12. From the toolbar menu select Edit > Select All. This will select all the rungs in the routine.
31 of 112
13. Right click to the left of rung zero and select Export Rung. 14. When the Export Rung window appears, enter the File name as shown below, then click Export.
15. Close the file within RSLogix5000 using File > Close. Respond with No if prompted to save the file. Using the Partial Import/Export Tool to Import a L5X File 16. Open Conveyor_Program_S6.ACD using the File > Open menu browsing to C:\Lab Files\Understanding Advanced Programming Techniques in Logix folder. 17. From the Controller Organizer, double-click on the Conveyor program folder to expand it. This is where we will add the Bar Code station code. Once Conveyor is expanded it will appear as follows:
32 of 112
19. Right click over the end rung and select Import Rungs.
20. When the Import Rung window appears, click on the file Look_up_bar_code.L5X and then click on Import.
33 of 112
22. Click on OK to start the Import. In addition to the ladder code all tags are created in the correct scope. 23. You should see the same ladder you exported now complete in your existing program. There should not be any edit rungs present.
We could have put this logic anywhere in the existing application. We could have created a new routine to keep it separate. It doesnt matter where we put it but we need to be careful if any tag names will conflict with existing ones. This is known as a Deep Export/Import. This means that all backing data and structures are exported and imported with the ladder code. Remember in Version 17 you are able to do this in Run mode as well not only with rungs but also with routines as well. 24. Close the file within RSLogix5000 using File > Close. Respond with No if prompted to save the file.
Lab 3 Summary
You just realized that it took you less than 15 minutes to create your core program. This used to take a few hours. You would have had to copy code, change addresses, document the addresses, and verify everything was done correctly. Using advanced features in RSLogix 5000 can allow you to do this very easily.
34 of 112
Add-On Instructions may be created using the standard Ladder, Function Block Diagram, and Structured Text editors already available in RSLogix 5000. Once created, an AddOn Instruction may then be used in any of the RSLogix 5000 editors without any additional effort on your part. Online troubleshooting of your Add-On Instructions is simplified by the provision of context views which allow you to visualize the logic for your instruction for a specific instance of its use. Custom help for your instructions also make it easier for users of the instructions to get the help they need for a successful implementation. Finally, you can use the Add-On Instructions source protection capability to limit a user of your instruction to read-only access or to allow no access to the internal logic or local parameters used by the instruction. This allows you to stop unwanted changes to your instruction and/or to protect your intellectual property.
In this lab we will take all of the conveyor code we were using in the previous lab and create one Add-On instruction with it. We will then use those instructions in another project to show how much time you can save with them. In this lab you will: Get an overview of AOI Basics Create an AOI Use an AOI Apply security to AOI Export / Import AOI with security
35 of 112
AOI basics
This section provides an overview of the basic parts of an Add-On Instruction and their uses 1. General Information The General tab contains the information from when you first created the instruction. You can use this tab to update the information. The description, revision, revision note, and vendor information is copied into the custom help for the instruction. The revision is not automatically managed by the software. You are responsible for defining how it is used and when it is updated.
2. Parameters The Parameters define the instruction interface; how the instruction appears when used. The Parameter order defines the order that the Parameters appear on the instruction call.
NOTE: InOut tag values are not displayed even when Required and Visible because they can be configured as arrays and displaying arrays can consume excessive amounts of space.
36 of 112
3. Local Tags Local Tags are hidden members and are not visible outside the instruction and cannot be referenced by other programs or routines. They are private to the instruction.
4. Data Type Parameters and Local Tags are used to define the data type that is used when executing the instruction. The software builds the associated data type. The software orders the members of the data type that correspond to the Parameters in the order that the Parameters are defined. Local Tags are added as hidden members. 5. Logic Routine The Logic routine of the Add-On Instruction defines the primary functionality of the instruction. It is the code that executes whenever the instruction is called. Shown below is the interface of an Add-On Instruction and its primary Logic routine that defines what the instruction does.
37 of 112
6. Optional Scan Mode Routines (Refer to Lab Appendix for an explanation of when you would want to use these)
7. Change History The Change History tab displays the creation and latest edit information that is tracked by the software. The By fields show who made the change based on the Windows user name at the time of the change.
38 of 112
8. Help The Name, Revision, Description, and Parameter definitions are used to automatically build the Instruction help. Use the Extended Description Text to provide additional Help documentation for the Add-On Instruction. The Instruction Help Preview shows how your instruction will appear in the various languages, based on Parameters defined as Required or Visible.
39 of 112
3. Right click on the Add-On Instructions folder and select New Add-On Instruction from the dropdown menu.
40 of 112
7. Click on the Parameters tab to view the parameters for the instruction.
The EnableIn and EnableOut parameters are predefined and are added by default to each Add-On Instruction. The EnableIn is manipulated by factors unique to each language environment and can be used for specialized functionality. This is an advanced topic and is beyond the scope of this lab. The EnableOut generally follows the state of the EnableIn but can be manipulated by user programming.
41 of 112
The Parameters tab is a tag database editor window for parameters specific to this Add-On Instruction with the inclusion of definition specific fields: Usage, Default, Req, Vis and Description. Usage allows the user to designate the parameter as: Input An input to the instruction (atomic type) Output An output from the instruction (atomic type) InOut A parameter which is passed by reference to the instruction (any data type including UDTs, arrays, etc) Default allows the user to specify a default value for the associated parameter. This is the value the parameter assumes when the instance tag for an instruction call is first created. Req - A parameter which has been checked as Required will force the user to enter a tag or make a FB (Function Block) connection to this parameter when an instruction instance is used in a routine. This modifier defines verification behavior in the languages as will be seen later. A Required parameter is also Visible by default. Vis - A parameter which has been checked as Visible will be visible by default on the instruction when it is used in a routine. Use of this modifier causes differing results depending upon the data type and the language (LD, FB, ST) in which an instruction instance is used. Description field is important because any information used here will be passed thru to any instruction instance of the user program. This self-documents the instruction for usage, units, etc. We will be copying and pasting code from an existing routine for this lab but we need to create some new tags first. 8. Enter the following tags on the Parameter tab. Note: Parameters are Input, Output, and InOut tags only. Local tags are entered on a separate tab.
42 of 112
10. Click the Local Tags tab and enter the tags as shown.
11. Click Apply 12. Click on OK to close the dialog. Entering the Logic We are going to cheat and just copy the logic we already have. We could enter the logic from scratch but since this is about saving development time we will do it the easy way. 13. From the Controller organizer, double click on C_Start_Stop to open it. 14. From the toolbar menu select Edit > Select All. This will select all the rungs in the routine. 15. Right click on Rung 0 and select Copy Rung 16. Expand the AOI folder if it is not already expanded in the Controller organizer.
43 of 112
19. Delete the empty rung. 20. All of the logic should now appear without any errors. If you have any errors you probably didnt type the tags correctly in the definition. Go back and make sure the tag names are exactly the same as was shown. 21. Close the file within RSLogix5000 using File > Close. Respond with No if prompted to save the file. Thats it. We just created our first Add-On Instruction. In real life we probably would want to put all of the routines in it but we just wanted to show how to construct one. In the next section we will open an existing program and begin working with a complete AOI.
44 of 112
This will open the definition so you can see all the tags that are now part of the instructions definition. 25. Click the Parameters tab. 26. Notice which ones are marked REQ and VIS. This will determine how the instruction looks and acts once we place it in an application.
28. You should see all the logic that was in the three routines we used to have. Ten rungs total.
45 of 112
Lets use it 29. Open Conveyor_1 routine for editing by expanding the Main Task and Conveyor program and then double clicking on the Conveyor_1 routine. (We created this Routine already to save time)
30. You should see a blank rung and a new Add-On menu choice.
31. Click the Add-On tab and then the Conveyor button.
46 of 112
AOI tag structure: At this point the instruction behaves like any other Logix 5000 instruction. It has inputs and outputs that need to be defined and other parameters that need to be filled in just like a Timer does.
The parameters with a single question mark (?) after them require a tag name to be entered. The parameters with a double question mark (??) after them are tag value fields. These fields show the current values of those parameters. 33. Right click on the first question mark and select New Tag.
47 of 112
Note: Data Type is Conveyor_Core. This is what we named our AOI. This follows the same conventions as any other built in instruction in Logix. If this were a TON instruction, the Data Type would be Timer.
35. Click OK to accept. 36. The rest of the arguments are inputs. We can assign some real I/O to these inputs the way we would for any other input arguments. 37. Double click on the Motor_Overload_Input question mark and maneuver down to pick input 0 as shown.
38. Do the same for the rest of the inputs, selecting sequential input points for each input in the instruction, until all of the question marks are gone. 39. Verify the routine by clicking on the Verify icon.
48 of 112
Alias tags referenced by AOI: We could have used Aliases here instead of I/O tags. This can make it easier to understand when looking at the addresses but is not necessary.
Lets create an Alias address like the one shown 41. Click on any address and type something new in. After you accept it you should see Question marks for the value. You see these because your tag does not exist yet.
49 of 112
42. Right click on the new tag name and select New whatever you named it
43. Fill in the dialog as shown. Make sure you fill in the Alias part as shown by using the pull down menu and selecting the correct I/O point.
44. Click OK to accept it. The instruction should now have your Alias filled in. Using an Add-On Instruction Output in Ladder 45. Create the rung pictured below to demonstrate how to access non-visible tags from an AOI programmatically.
How do you know what the internal elements are named? The AOI follows the same conventions as any other instruction does.
50 of 112
47. Fill out the dialog as shown specifying Function Block as the Type and click OK button when you are finished.
51 of 112
49. Click on the Add-On tab and then the Conveyor button. The Conveyor instruction will be added to the page.
The pins associated with parameters designated as Visible in the instruction definition are visible on the instruction by default. The data tag for the instruction Conveyor_Core_02 has already been created. This conforms to the behavior of any instruction created in the Function block environment. The Nub at the end of the input pin is an indication that this parameter requires a connection. The instruction will not successfully verify until all Required parameters have connections.
52 of 112
50. Place an Input Reference (IREF) on the sheet and wire it to the Motor_Overload_Input connector.
51. Double click on the IREF and pick any unused input point.
52. Do the same for the remaining required input points. You could use an Alias here just like we did for the RLL instruction.
53 of 112
Re-using an AOI
Remember in Lab 3 how we saved time by copying and pasting or exporting and importing code? We can do the same things with AOIs to save even more time or to simplify program design and re-use. In this section we will also apply security to a routine and an AOI. Storing your Instructions There are two ways to store and use a group of instruction definitions together. Keep them in a project file (.ACD file) and then use Copy/Paste feature to use them Export them to an .L5X file and then import them as you need them Copy and Paste 54. Continue working with Conveyor_Program_S8.ACD file. 55. From the Controller organizer in our Conveyor application, right click on the AOI and select COPY.
56. Open a second instance of RSLogix5000 by clicking on the shortcut on the desktop.
57. Begin a new file by selecting File > New from the menus. Fill in the dialog as shown.
54 of 112
58. Click OK when finished. 59. From the Controller organizer right click on Add-On Instructions and pick Paste.
60. The Conveyor_Core AOI should now be present and ready for our use in the new program.
61. Close this instance of RSLogix5000. Respond with No if prompted to save the file.
55 of 112
Apply security to the Conveyor_1 routine to allow the user viewing of the code but disable code editing. Apply security to the Conveyor_Core AOI removing both editing and viewing Export the files Explore what occurs when Source key is not available
Applying Security 62. Continue using the Conveyor_Program_S8.acd file. Before we export the Conveyor_Core AOI we will apply password security to it and to the Conveyor_1 a routine. 63. Select Configure Source Protection which is available under Security which is found in the Tools pulldown menu. NOTE: Source Protection is enabled by running RS5KSrcPtc.exe file which is provided with RSLogix5000 source media.
56 of 112
64. The first time Source Protection is configured the Source Key file (sk.dat) location must be specified. Enter the Source Key file location as pictured below and click the OK button. Respond with YES if prompted to create a new file.
65. The Configure Source Protection dialog box lists the components to which security may be applied:
66. Select the Conveyor_1 routine, click the Protect button and configure the Source Key as shown checking the box to allow viewing of components: Click OK button when completed applying security to Conveyor_1
57 of 112
67. Select the Conveyor_Core AOI, click the Protect button and configure the Source Key as shown; leave the Allow viewing of components checkbox unchecked this time. Click the OK button when completed applying security to Conveyor_Core
68. Click the Close button to exit the Source Protection Configuration dialog box. Export Files 69. From the Conveyor_Program_S8.ACD file, right click on the Conveyor_1 routine and select Export Routine
58 of 112
70. Choose Export button from the following dialog after specifying C:\Lab Files\Understanding Advanced Programming Techniques in Logix
71. In a similar manner right click on Conveyor_Core under Add-On Instruction folder within the Controller Organizer and select Export Add-On Instruction. Select the same destination folder for the export.
59 of 112
Note: Include all referenced Add-On Instructions and User-Defined Types checkbox in the Export AOI dialog box that is unchecked. If we had referenced other AOIs (nested) we would have wanted to check this box.
72. Start a new instance of RSLogix5000 and create a new project with a 1756-L63 controller called new in slot 1 of a 7 slot chassis. 73. To simulate what occurs when the source key is not provided with a file we will change the location RSLogix5000 looks for the Source Key file. Select: Tools > Security > Configure Source Protection
74. Select the Specify button within the Source Protection Configuration dialog box to change the location of the Source Key file. 75. Instead of C:\ specify the location as C:\temp. Answer Yes if prompted to create the file and directory. Click the OK button and then the Close to exit Source Protection Configuration
60 of 112
76. From the Controller organizer, right click on Add-On instruction and pick Import Add-On Instruction.
77. Click on the name we just exported the AOI to and then select Import.
61 of 112
78. After selecting Import another dialog box appears with options to use; select Operation: Create operation and click the OK button.
79. In a similar manner, right click on Main Program; select Import Routine highlight the Conveyor_1 routine we just exported and click the Import button.
62 of 112
80. Select Operation: Create and click OK button 81. Now both the Conveyor_1 routine and Conveyor_Core AOI are available for our use. But we do not have full access because the security file sk.dat found at c:\temp does not have the correct passwords included. When the files are selected within the Controller Organizer Source Protection indicates that the source file is not available.
82. Double click on the Conveyor_1 routine; we allowed viewing when Security was configured. The protected routine Conveyor_1 may be used; however, when the Source Key is unavailable the code itself is not editable. NOTE: rungs show errors because no I/O modules are defined in the I/O tree.
63 of 112
83. Double click on the Conveyor_Core AOI. The dialog box below appears. The Logic button is not visible because the Source Key is not found.
84. Both the protected routine and AOI may be used within an application with restricted access. Correcting the Source Key path allows full access to the routine and AOI that were imported. 85. Close the instance of RSLogix5000 with the controller named new. Close the Conveyor_Program_S8.ACD file within the instance of RSLogix5000 using File > Close. Respond with No if prompted to save the file.
Lab 4 Summary
This lab shows that with Add-On Instructions you can generate code in hours versus days. When you use code segments over and over again you can simply place an AOI in your program instead of regenerating the code again and again. We saw that we can develop complex code segments and ship them to customers that need it with security where desired to lock the instructions to prevent a user from changing the code inside or even viewing it by applying Source Protection. Over these 4 labs we moved from all of our logic all bunched in one big program to a single instruction that is very compact and very easy to use.
64 of 112
In this section of the lab, you will open an existing program and download it into the controller. 1. Open Conveyor_Program_S9.ACD using the File > Open menu browsing to C:\Lab Files\Understanding Advanced Programming Techniques in Logix folder. 2. The project was written for a L63 controller in slot 1. (Remember, Logix chassis start with slot 0) 3. Look at your demo case and determine what type of controller you have and what slot it is in. 4. If your controller is not a 1756-L63 then you must change the processor type in the project to match what you actually have. 5. If it is not in Slot 1 then you can re-configure the demo case to match the project. 6. Click Download from Controller Status
65 of 112
7. The Ethernet driver in RSLinx and the project should already be configured but if it is not or you are having problems downloading you can configure it as follows. From the Toolbar menu, select Communications > Who Active Browse until you find the controller in Slot 1. Click on the controller. Click Download. If you still have a problem downloading see an instructor for help.
8. Select Yes to place the controller in Run mode or use the key switch.
Here, Add-On Instructions have been added to the list to easily navigate to the individual AOI definitions parameters. 11. Select Conveyor_Core from the Scope selection drop-down menu. 12. Click on the Data Context selector to view the list of available contexts for the Conveyor_1 instruction.
66 of 112
The list contains the instruction definition and all of the instances of the instruction currently in the controller. By selecting any of the instruction instances the view will reflect the values of that instance of the instruction.
13. Click the Data Context selector again and this time select Conveyor_Core_02. Notice the values change. These are the values for the Function Block version of the instruction. If we had used the instruction 20 times in the application there would be 20 different entries in Data Context view, one for each usage.
67 of 112
15. Right click on the instruction name and then select Open Instruction Logic.
The running logic for this specific instruction instance is now shown. From this view all of the specifics of the logic for this instruction instance are available to the user: tag values, instruction properties, etc.
68 of 112
You will notice that portions of the view are grayed out. As an individual instance of the definition some portions are not allowed to change. The white areas are editable since each instance may require a different value. 16. Click on the Data Context drop down menu to display all of the available instances of this instruction in the controller project. Note that the base definition is one of the choices. From here the user can directly focus on the logic of any instance. Try it.
If an input is not set to 1, place the cursor on the actual value and type a 1 into the field. Press Enter to accept it. 19. Make the Start_Push_Button input true by entering a 1 in the value field.
69 of 112
20. Notice the conveyor is now running. The Start_Command output is now on.
Lets look at the code for this now. 21. Right click on Conveyor_Core and then pick Open_Instruction_Logic like we did before. 22. Notice that it matches the instruction and we can see what is happening if something was not working. 23. Go back to the Ladder routine and make Entrance_PE, Exit_PE, and Start_Push_Button 0. 24. The Start_Command output should go off after 20 seconds. Why? 25. Go back to the definition and find the line of code that caused it to go off.
26. Now go and look at the other instances of the code. Use the Data Context dialog. Notice they are in a different state than this one. This is all to show that even though there is only one instance of the code, each usage has its own data. 27. Feel free to experiment by changing the feedback values on Rung 2 and watch the instruction operate.
70 of 112
28. Close the file within RSLogix5000 using File > Close. Respond with No if prompted to save the file.
Lab 5 Summary
In this lab you got the opportunity to experience the online monitoring capabilities of AOIs. Now you should have a better appreciation for how AOIs can also ease the troubleshooting phase of your project deployment in addition to the gains in using them for developing, transporting, and securing your applications.
71 of 112
4. Browse to the 1756-L63 processor in slot one and select Download. Request assistance if you have any difficulties.
72 of 112
5. Select Yes to place the controller in Run mode when prompted or use the processor key switch to enter Remote Run mode.
6. Right-click on the controller in the Controller Organizer and select properties to access Controller properties
7. Select the Date / Time tab and verify that the Date and Time is configured correctly.
8. Click the OK button once the controller Date and Time have been verified. Time stamping for Device Alarms is defined by the processor.
73 of 112
74 of 112
11. Shown above is the Status tab of the ALMA instruction. Notice the different status information available: current alarm condition, acknowledgement status with time stamping and alarm counts. Also note the commands that are available: Acknowledge, Reset Alarm counts, Disable and Suppress. The same functionality and status is available within FactoryTalk View SE applications which are explored next. The status tab of the ALMD instruction is very similar. 12. Minimize RSLogix5000 and leave the software online with the processor.
Menu Bar
Overview
Alarm Banner
75 of 112
14. On the Menu Bar display located in the upper portion of the SE client application, click the Alarm Summary button. The Alarm Summary display should appear in the FactoryTalk View SE Client.
15. Move your mouse pointer across the shortcuts of the Alarm Summary to view their descriptions as is shown above for the shortcut which is for Ack selected alarm.
16. On the Menu Bar display, click the Trigger Digital Alarm button followed by the Clear Digital Alarm button. Observe that no alarm appears in the list. This is due to the Minimum Duration setting which in this case requires that the alarm input (Valve1FTO_alm_trig) be equal to 1 for 3 seconds before the alarm will trigger. Minimum Duration configuration is useful for minimizing false alarms. 17. Click the Trigger Digital Alarm button again but this time do not click the Clear Digital Alarm button and wait 3 seconds. The digital alarm should appear in the Alarm and Event Summary and Alarm Banner at the bottom of the SE Client window as shown below
18. Select the Valve1 alarm in the Alarm Summary list and view its attributes in the Details Pane. Use
the Details Pane toggle shortcut in the Alarm Summary display if the Details Pane is not visible.
Observe the values for the Severity, Alarm Class, Tag 1 Value and Tag 2 Value attributes that we configured for the digital alarm. Also notice the Alarm Count. This attribute indicates the number of times the alarm has entered the In Alarm state. The Alarm Count can be reset from RSLogix 5000 and from the Alarm Status Explorer within the SE Client application. The shortcut to the Alarm Status Explorer is available in the Alarm Summary. This same information is available in RSLogix5000 on the status tab of the ALMD instruction.
76 of 112
19. Double-click on a Valve1 alarm message within the Alarm Banner at the bottom of the client display to experience a FactoryTalk Command embedded within an ALMD instruction. In this case the ALMD instruction has been configured to display a detail graphic for Valve1. If no Valve1 alarm message is visible create one using the Trigger Digital Alarm button from the Menu Bar. The Valve1 Detail allows the user to view the current position, flow and alarm status for Valve1.
20. Click the Close button on the Valve1 Detail popup dialog box when completed. 21. On the Menu Bar display, click the Trigger HI Alarm button to trigger the High alarm condition which will then appear in the Alarm and Event Summary.
22. Select the alarm in the list and view its attributes in the Details Pane. You may need to scroll or resize the Details Pane to see all the information. Note that this is the same information that was listed on the Status tab of the ALMA instruction.
23. Experiment with the SE Client application using the Menu Bar display to trigger different alarm types. Use the and buttons to experience the deadband of 2 that is configured for the ALMA instruction. For example selecting the Trigger HI Alarm button from the Menu Bar sets the value the to ALMA instruction is monitoring = 82 when the HI Alarm is configured for 80. Use the decrease the ALMA monitored value by one for each click. The alarm stays active until the value = 77 because the deadband = 2. The Deadband setting can be used to prevent fluctuations in analog values from re-triggering unnecessary alarms.
77 of 112
24. Click the Alarm Status Explorer shortcut the within the Alarm Summary display.
25. The Alarm Status Explorer dialog box appears showing three entries that RSLinx Enterprise as the configured Device Alarm Server recognizes from the ControlLogix controller accessed via the [CLX] shortcut. [CLX]Valve1FTO associated with an ALMD instruction configured in the ControlLogix application [CLX]Line1Pressure_ALM associated with an ALMA instruction configured in the ControlLogix application [CLX] which is associated with controller status alarms such as the controller changed to program mode diagnostic that you may have noticed when first starting the client application.
The Alarm Status Explorer is useful for troubleshooting and design time as it provides information for all alarms in a FactoryTalk system. The Alarm Status Explorer shows all alarms in a FactoryTalk system and allows the user to: - Enable the selected alarm - Disable the selected alarm - Unsuppress the selected alarm - Suppress the selected alarm - Show details for the selected alarm
78 of 112
FactoryTalk Security can be used to control who can perform these operations. The list of alarms can be filtered based on alarm name as well as the status of alarms. Rockwell Automation Device Servers (RSLinx Enterprise) generate diagnostic alarms relating to Logix5000 controllers that are producing alarms in a FactoryTalk Alarms and Events system. These alarms are referred to as controller status alarms and they indicate a problem with the connection to a controller or the status of a controller. A single controller status alarm is produced for each shortcut that is configured with alarms and events enabled. The following conditions cause a controller status alarm to go In Alarm: Unable to connect to the controller Unable to get a list of alarms contained in the controller because there is no program or program download in progress Unable to subscribe to one or more alarms in the controller because the controller has insufficient memory to create subscription Connection to the controller is lost Controller was switched to Program Mode Program download Non-recoverable program fault Recoverable program fault Controller status alarms have the same name as the shortcut that references the controller. The alarm message is not user configurable and the severity for all status alarms is configured in the system-wide severity settings. 26. Select the Close button to exit Alarm Status Explorer. 27. Clear all alarms from Alarm Summary and Alarm Banner by using the provided Clear Digital Alarm and Clear Analog Alarm buttons within the Menu Bar at the top of the client application. In addition to clearing the alarm conditions all the alarms must be acknowledged. Notice the options to acknowledge alarms: individually with and without comment and an option to acknowledge an entire page of alarms at once.
79 of 112
28. The FactoryTalk View SE client application is configured with a database that logs all alarm events. Click on the Log Viewer button on the Menu Bar to view the Alarm and Events Log summary. Notice that even when the Alarm Summary and Alarm Banner show no alarms currently active or unacknowledged that the history of alarms is available with details on what happened, when it happened, etc
29. Close the file within RSLogix5000 using File > Close. Respond with No if prompted to save the file. 30. Close the FactoryTalk View SE client application when completed.
Lab 6 Summary
In this lab you worked online with provided files using FactoryTalk Alarms and Events Device based alarms which are configured in RSLogix5000 and monitored within a FactoryTalk View SE local client application.
80 of 112
Lab 7 Developing FactoryTalk Alarms & Events in FactoryTalk View Site Edition <40 minutes>
81 of 112
1. Open Conveyor_Program_S11.ACD using the File > Open menu browsing to C:\Lab Files\Understanding Advanced Programming Techniques in Logix folder. 2. This will launch the project in RSLogix5000. In the left pane, expand the folders Tasks > Main Task > Conveyor. Right Click on Conveyor and select New Routine
3. Enter Alarms as the name of the new Routine and click OK button
4. Double-click on the Alarms routine which will open the ladder editor. Configure the first rung with an XIC (Examine if Closed) contact and an ALMD (Alarm Digital) instruction. Alarm instructions are available from the Alarms tab of the Language Element toolbar, whereas the XIC instruction can be found on the Bit tab.
82 of 112
5. Right click the ? over the XIC instruction and select New tag. Enter Valve1FTO_alm_trig as the tag name selecting BOOL as the data type and Scope of Conveyor.
6. Inside the ALMD instruction, right-click the ? and select New Tag. Enter Valve1FTO as the new tag as shown. Specifying the tag to be Controller scoped. Click the OK button when completed configuring the new ALMD tag.
83 of 112
7. Configure the ProgAck, ProgReset, ProgDisable, ProgEnable tags with the tags associated with the Valve1FTO ALMD structure. The completed rung should appear as:
ProgAck, ProgReset, ProgDisable, ProgEnable tags may also be associated with tags outside of the ALMD instruction tag which is useful for acknowledging all alarms at once with one tag.
8. Select the
button to create controller scoped Associated Tags Configure as shown below. Use the Valve1Position type DINT and Valve1Flow type REAL
84 of 112
ALMD configuration options: Minimum Duration: specifies the minimum amount of time that the alarm condition must be true (the Input=1 in this case) before the alarm condition goes In Alarm. This setting is used to minimize false alarms. Alarm Class: To help group alarms, you might want to classify alarms that relate to each other in ways that do not include severity or priority. For example, you might want to group together alarms by function, such as those that monitor for valves that fail to open or close, pressure, temperature, equipment running, or tank levels. The alarm class is a text string of up to 40 characters that you enter when configuring an alarm. At run time, the value of the alarm class is recorded in the Alarm and Event History Log and can also be displayed in the Alarm and Event Summary or Alarm and Event Log Viewer. The contents of the Alarm and Event Summary or Alarm and Event Log Viewer can also be filtered based on the value of the alarm class. FactoryTalk View Command: A command of up to 1000 characters can be associated with any alarm. The command is executed from the Alarm and Event Summary or Alarm and Event Banner when the operator selects an alarm and then clicks a button. A common use for the FactoryTalk View command is to display a screen that shows an detail of the equipment related to the alarm. Associated Tags: Specify up to four tags that contain pertinent data when alarm conditions occur. A snapshot of the values in these tags is stored whenever the .In condition changes to the In Alarm state or other alarm state changes occur. The stored values are transmitted to the alarm subscribers. The stored values may also be embedded in the alarm Message.
85 of 112
9. In the ALMD Properties dialog box, select the Status tab where the In Alarm Time and Return To Normal Time may be monitored online.
10. Click OK to close the ALMD properties dialog box. ALMA Instruction 11. Continue working offline in RSLogix 5000 with the Conveyor_Program_S10.acd file 12. In this section of the lab we will add an ALMA (Alarm Analog) instruction to the Alarms routine. 13. Create a new rung and add an ALMA instruction with no conditions because we want to monitor the input value every time the Alarms routine runs.
86 of 112
14. Right click on the ? to the right of ALMA and select New Tag. Create a Controller scoped tag named Line1Pressure_ALM. Click OK button to finalize creation of the new tag.
15. Right click on the ? to the right of In and select New Tag. Create a new Controller scoped tag named Line1Pressure_IN with type REAL. This is the value that the ALMA instruction will monitor and alarm when outside of the defined boundaries. Select the OK button to finalize the creation of the new tag.
87 of 112
16. Enter zero for the other inputs to the ALMA instruction. [ProgAckAll, ProgDisable and ProgEnable] The ALMA instruction will operate the same with zeros defining these tags as if the Line1Pressure.ProgXXXX tags were specified. button within the ALMA instruction to open the ALMA Properties dialog box. Configure 17. Click the the ALMA instruction as shown.
18. Select the Messages tab of the ALMA instruction and enter the messages as shown; click OK to accept the changes.
ALMA configuration options: Alarm conditions: can be enabled or disabled using the checkboxes to the left of the corresponding condition name. Input Rate of Change: Rate of Change alarm conditions are disabled when their limits are set to 0. For this lab, the rate of change alarm will not be configured. Deadband: With certain kinds of measured values, such as line pressure, input values can fluctuate rapidly above and below a critical limit. Where such conditions exist, you can create a deadband as a buffer zone to prevent the fluctuations from re-triggering unnecessary alarms. For the High and High High alarm conditions, the tag value must drop below the alarm limit minus the deadband before the alarm condition goes Normal (Out of Alarm). For the Low and Low Low alarm conditions, the tag value must go above the alarm limit plus the deadband before the alarm condition goes Normal.
88 of 112
The following diagram shows how deadband settings affect an alarm's transition between In Alarm and Normal states.
19. The Alarms routine should now contain 2 rungs one including an ALMD and the other an ALMA instruction as shown below:
20. This concludes the FactoryTalk Alarm and Event configuration within RSLogix5000 application.
89 of 112
21. From the desktop select the shortcut for FactoryTalk View Studio 22. When prompted select Site Edition (Local) as the application type to configure and click the Continue button.
23. The dialog box in the image below is displayed. Select the New tab and enter FTAE_Lab7 as the application name. Specify English as the Language and click the Create button, 24. NOTE: it will take a minute or so for the new application to be created and opened.
90 of 112
25. If prompted on which Faceplates to import click the Clear All button followed by the OK button to proceed.
26. In the Explorer window, right-click FTAE_Lab7 displayed under the topmost entry Local(CORE) and select Add New Server. Select Rockwell Automation Device Server (RSLinx Enterprise).
91 of 112
27. The properties are then displayed; keep the default name RSLinx Enterprise
28. Select the Alarms and Events tab and configure as shown below; click OK button when configuration is completed. Check this box
29. The new Device server RSLinx Enterprise is added to the FTAE_Lab7 application
92 of 112
30. Create a shortcut to our ControlLogix controller by double-clicking on RSLinx Enterprise to expand it and then double click on Communication Setup. 31. The Communication Setup dialog box allows us to Add a shortcut named CLX and browse over the Ethernet network with the provided driver to our ControlLogix demo box.
Browse to the IP address of the 1756ENBT in your demo box and select the processor in slot 1
You have just added a Rockwell Automation Device Server and configured it to subscribe to Alarms and Events from the ControlLogix controller in the demo box. When the alarm server starts, RSLinx Enterprise will connect to the controller, uploads the state of all alarms and publishes this information to the FactoryTalk Alarm and Event system. The alarm server will start automatically when the operating system initializes.
93 of 112
32. Click OK button to complete the Communication Setup. 33. Click Yes to apply changes to the CLX shortcut you have just configured.
36. Resize the resulting blank display to occupy the full width of the display and about 2/3 of the workspace height. 37. On the Objects menu, point to Alarm and Event, and then click Summary (or on the toolbar, click the Summary button, shown outlined in red: ). The mouse pointer changes to the Object drawing cursor.
94 of 112
38. Using the mouse, drag the rectangle to fill the display. Start in the upper left corner, drag down to the lower right and then release the left mouse button. The Alarm and Event Summary object should appear in the display as follows:
39. On the Edit menu, click Display Settings. 40. On the Properties tab, make the following changes (see image below for details): Under Cache After Displaying, select Yes and specify the Always Updating check box. Clear the Title Bar check box. Select the Size to Main Window at Runtime check box.
Cache After Displaying keeps the display in memory when you close the Alarm and Event Summary display, and shortens the time required to re-open the graphic display. When the cached display is not visible and the Always Updating check box is selected, the Alarm and Event Summary continues to be updated with changes in alarm statein the same way that your e-mail client continues receiving email even when it is minimized.
95 of 112
41. Click OK button to save Display Settings changes. on the toolbar. In the Save dialog box, type Alarm 42. Save the display by clicking the Save button Summary for the name of the display and then click OK.
43. Close the newly created Alarm Summary Display by clicking the X close button in the upper right.
96 of 112
44. In addition to creating displays from scratch FactoryTalk View also allows displays to be imported. Right click on Displays under the Graphics folder and select Add Component into Application
45. Click the Desktop shortcut from the left and click on the Lab Files shortcut. Select all the files using Shift key and click the Open button to import the associated *.gfx files.
46. Similarly right click on Macros, and Client Keys and add the preconfigured components from C:\Lab Files\Understanding Advanced Programming Techniques in both instances. Importing standard preconfigured displays saves development time and eases standardization.
Startup Macro calls three displays: Menu Bar (Docked to the Top), OverView, and Alarm Banner (Docked to Bottom)
Client Keys is associated with F5 function key: Aborts the existing Client displays and calls the same three displays as at Startup. This is useful for updating Client displays without closing and reopening the entire Client application.
97 of 112
48. Configure the Alarm and Event Historian Database Properties dialog box as shown:
98 of 112
49. Click on the Advanced tab. The system will attempt to create the database and the user account. On the Database does not exist dialog box, click the Yes button. Before switching tabs, the system checked if the database already existed. Because the database did not exist, the following operations were performed: 1) The database named FTAE_History was created. 2) The database user account FTAE_Historian was created and assigned database ownership access to the database. 3) The tables necessary to store the alarm and event information were created. 50. In the Advanced tab, change the Log events to database every 100 events to 1 event.
This change is just for testing purposes so that we do not have to wait for information to be logged to the database. The Log events to database every settings control how many events are cached before sending them to the database. This makes writing to the database more efficient. The events are cached to a file located on the computer hosting the alarm server that is generating the alarm and event information. If the connection to the database is lost, alarm and event information will continue to be cached to files. Once the connection is restored, the cached information will be sent to the database.
99 of 112
The Limit database buffering to settings control how much information will be cached if the database connection is lost for a long period of time. Once the limits are reached the oldest information is overwritten. 51. Click OK to save the Database Definition. 52. Right-click the device alarm server named RSLinx Enterprise and select Properties to associate it with the newly created Database Definition.
53. In the RSLinx Enterprise Server Properties dialog box, click the Alarms and Events tab. 54. Under Alarm and Event History, select the Enable history check box. 55. In the Database definition list, select FTAE_History_Lab7. Click OK to save the changes.
You have just configured the RSLinx Enterprise server to send its Alarm & Event information to the database. The Log language setting is related to the Language Switching feature which allows you to configure multiple languages for user defined strings that can be switched between at runtime. The combo box allows you to select the language to log alarm messages in. (The alarm and event log is limited to a single language).
100 of 112
Lab 7 Summary
In this lab you worked offline to create RSLogix5000 controller and FactoryTalk View SE applications to incorporate Device Based alarms with historical logging. This ends the Understanding Advanced Programming Techniques in Logix Hands on Lab. Feel free to explore further if time allows. When you are finished please close all applications, cleanup your work area before exiting. Thank you for your time and enjoy the rest of the show.
101 of 112
Aspect Accessibility
Subroutine Within program (Multiple copies, one for each program) Pass by value
Add-On Instruction Anywhere in controller (single copy for the entire project. Pass by value via Input and Output Parameter or by reference via InOut Parameters Automatic data type conversion for Input and Output parameters Atomic for any Parameter Array and structures must be an InOut Parameter Verification checks that correct type of argument has been provided for a Parameter. Local data is isolated (only accessible within instruction) Single calling instance data, which simplifies debugging. FBD, LD, ST
Parameters
N/A
Numeric Parameters Parameters data types Parameter checking Data encapsulation Monitor/debug
N/A N/A
No conversion, user must manage Atomic, arrays, structures. None, user must manage
N/A
Add data at program or controller scope Mixed data from multiple calls, which complicates debugging FBD, LD, SFC, ST
FBD, LD, SFC, ST Locked and view only Routine, rung, textbox, line
FBD, LD, SFC via ST, ST Locked and view only Instruction, revision info, vendor, rung, textbox, line, extended help.
102 of 112
Subroutine JSR/SBN/RTN instructions add overhead. Indexed reference impact Compact Online/Offline Only LD rungs with referenced tags/UDTs
Add-On Instruction Call is more efficient. InOut parameters are passed by reference, which is faster than copying data for many types. More than subroutine Offline only Full instruction definition
Instruction Size Add-On Instructions have one primary Logic routine that defines the behavior of the instruction when executed. This Logic routine is like any other routine in the project and has no additional restrictions in length. The total number of Input Parameters plus Output Parameters plus Local Tags can be up to 512. There are no limits on the number of InOut Parameters. The maximum data instance supported (which includes Inputs, Outputs, and Local Tags) is two megabytes. The data type size displays on the bottom of the Parameter and Local Tabs in the Add-On Instruction Definition.
Nesting Add-On Instructions Add-On Instructions can call other Add-On Instructions in their routines. This provides the ability to design more modular code by creating simpler instructions that can be used to build more complex functionality by nesting instructions. The instructions can be nested to seven levels deep. Programmatic Access to Data Input and Output Parameters and Local Tags are used to define an instruction-defined data type. Each Parameter or Local Tag has a member in the data type, although Local Tag members are hidden from external use. Each call to an Add-On Instruction utilizes a tag of this data type to provide the data instance for the instruction's execution. The Parameters of an Add-On Instruction are directly accessible in the controller's programming via this instruction-defined tag within the normal tag scoping rules. The Local Tags are not accessible programmatically through this tag. This has impact on the usage of the Add-On Instruction. If a structured (including UDTs), array, or nested Add-On Instruction type is used as a Local Tag (not InOut Parameters), then they are not programmatically available outside the Add-On Instruction definition.
103 of 112
Unavailable Instruction Description Most built in instructions can be used within Add-On Instructions. The following instructions can not be used: Instruction BRK EOT EVENT FOR IOT JSR JXR MAOC PATT PCLF PCMD PDET POVR RET Safety Instructions SBR SFP SFR Description Break End of Transition Event Task Trigger For (For/Next Loop) Immediate Output Jump to Subroutine Jump to External Routine Motion Arm Output Cam Attach to Equipment Phase Equipment Phase Clear Failure Equipment Phase Command Detach from Equipment Phase Equipment Phase Override Command Return Any of the Safety Instructions Subroutine SFC Pause SFC Rese
In addition, the following instructions may be used in an Add-On Instruction, but the data instances must be passed as an InOut parameter: Instruction ALMA ALMD Motion Instructions MSG Description Analog alarm Digital Alarm All Motion Instructions Message
104 of 112
Scan Modes To provide Add-On Instructions with the same flexibility as built-in instructions, optional Scan mode routines can be configured allowing you to fully define the behavior of the instruction. The Scan mode routines do not initially exist for an Add-On Instructions as they are optional and must be created by the user depending upon the requirements of the instruction. Like all built-in instructions in the controller, Add-On Instructions support the following four controller Scan modes: True - Logic is scanned as the result of a true rung condition or the EnableIn Parameter is set True. False - Logic is scanned as the result of a false rung condition or the EnableIn Parameter is set False. Instructions in the controller may or may not have logic that executes only when that instruction is scanned false. Prescan - Occurs when the controller either powers up in Run mode or transitions from Program to Run. Instructions in the controller may or may not have logic that executes only when that instruction is executed in Prescan mode. Postscan - Occurs as a result of an Action in an SFC routine becoming inactive if SFCs are configured for Automatic Reset. Instructions in the controller may or may not have logic that executes only when that instruction is executed in Postscan mode.
105 of 112
Prescan Routine The optional Prescan routine for an Add-On Instruction provides a way for an Add-On Instruction to define additional behavior for Prescan mode. When a Prescan routine is defined and enabled, the Prescan routine executes normally after the primary Logic routine executes in Prescan mode. This is useful when it is desired to initialize tag values to some known or predefined state prior to execution. An example of initialization is setting a PID instruction to Manual mode with a 0% output prior to its first execution or to initialize some coefficient values in your Add-On Instruction. To create a Prescan Routine follow these steps: 1. Click the New button in the Scan Modes tab.
3. Select the type of programming language: Ladder Diagram, Function Block, or Structured Text. 4. Write a description of the Prescan behavior; if desired. 5. Click OK to create the routine and return to the Scan Modes tab. 6. Define if the Prescan routine executes (or not) with the checkbox.
7. Click on OK button to exit the Add-On Instruction Definition dialog box 8. Notice when completed that the Prescan routine is added.
106 of 112
Postscan Routine Postscan mode only occurs for logic in an SFC Action when the Action becomes inactive and the SFC language is configured for Automatic Reset (which is not the default option for SFC). When an SFC Action becomes inactive, then the logic in the Action is executed one more time in Postscan mode. This mode is similar to Prescan in that most instructions simply execute as if they have a false condition. It is possible for an instruction to have different behavior during Postscan than it has during Prescan. Create a Postscan Routine in the same manner as a Prescan Routine.
EnableInFalse Routine When defined and enabled for an Add-On Instruction, the EnableInFalse routine executes when the rung condition is false or if the EnableIn Parameter of the Add-On Instruction is false (0). This is useful primarily for scan false logic, when used as an output instruction in a Ladder routine. A common use of scan false is the setting of OTE's to the de-energized state when the preceding rung conditions are false. An Add-On Instruction can use the EnableInFalse capability to let you to define behavior for the False conditions. Create a Postscan Routine in the same manner as a Prescan Routine.
107 of 112
108 of 112
1. Device-based alarm monitoring With device-based alarm monitoring, alarm instructions are programmed and then downloaded into Logix5000 controllers. The controller detects alarm conditions and notifies RSLinx Enterprise of alarm states. A Rockwell Automation Device Server (RSLinx Enterprise) extracts the alarm information and publishes it to FactoryTalk Alarms and Events services. The new alarm instructions are available with RSLogix 5000 v. 16 or later. 2. Tag-based alarm monitoring With tag-based alarm monitoring, a Tag Alarm and Event Server uses tags to monitor programmable controllers for alarm conditions. When an alarm condition is detected, the server publishes the information to FactoryTalk Alarms and Events services. Use tag-based alarm monitoring with: PLC-5 or SLC 500 controllers, communicating through RSLinx Classic or RSLinx Gateway Third-party controllers, communicating through OPC-DA servers Logix5000 controllers that have not been programmed with pre-built alarm instructions available in RSLogix 5000 v. 16 or later
3. FactoryTalk Alarms and Events services FactoryTalk Alarms and Events services receives alarm information from device-based and tag-based alarm servers and sends the information to FactoryTalk Alarms and Events objects hosted in FactoryTalk View. Alarm state changes are sent to the Alarm and Event Historian Log and configuration changes are sent to the audit log. 4. Alarm and Event Historian Log The Alarm and Event Historian manages connections between alarm servers and databases and logs data from each alarm server to a Microsoft SQL Server database. An Alarm and Event Log Viewer allows viewing and printing data from alarm and event history databases. Third-party database tools can also retrieve, view, analyze, and print alarm and event history information. 5. Diagnostic and audit logs FactoryTalk Diagnostics routes messages generated by FactoryTalk Alarms and Events to Local logs on the computers hosting FactoryTalk components and optionally to a centralized database log. Audit messages are routed to the Local log as well and to the FactoryTalk Audit Log if FactoryTalk AssetCentre is installed. 6. Alarm and Event setup and monitoring FactoryTalk Alarms and Events includes a number of software components that allow engineers and operators to define alarm conditions, set up alarm servers, view and interact with alarm conditions, and view historical alarm and event information.
109 of 112
Database definitions Use database definitions to define logging options from an alarm server to a Microsoft SQL Server database. Alarm and Event Summary: Use the Alarm and Event Summary object, embedded in a FactoryTalk View graphic display, to acknowledge, disable, suppress, filter, and sort alarms during run time. Alarm and Event Banner: Use the Alarm and Event Banner object, embedded in a FactoryTalk View graphic display, to monitor and respond to the most serious alarms requiring immediate attention. Alarm Status Explorer: Use the Alarm Status Explorer object, embedded in a FactoryTalk View graphic display, to enable or disable alarms and suppress or unsuppress alarms. Alarm and Event Log Viewer: Use the Alarm and Event Log Viewer object, embedded in a FactoryTalk View graphic display, to view and filter historical alarm information stored in Microsoft SQL Server databases. Diagnostics Viewer: Use the Diagnostics Viewer to view, filter, and export system-generated diagnostic messages.
System Architectures Local application on a single computer The diagram below shows an example system architecture using a Local application as part of a standalone FactoryTalk system.
110 of 112
Network application on distributed computers The diagram below shows an example system architecture using a Network application as part of a distributed FactoryTalk system.
111 of 112
Notes:
112 of 112