CLX Master Level1 30SEP06
CLX Master Level1 30SEP06
CLX Master Level1 30SEP06
Copyright (c)
Disclaimer:
This document is written in the hope that you can utilize for your own
education to gain knowledge of PLC systems (should you decide to utilize
this document).
Although I believe the information in this document to be accurate, it is
YOUR responsibility to verify this information before implementing it in
any way, especially when damage to personnel or equipment could result.
By continuing to read this document, you agree to hold no one who writes,
modifies, or distributes this document liable in any way (even negligence).
Due to the wide variety of plant applications, some of the examples in this
document may be prohibited at your location, or could cause damage to
equipment, or harm personnel.
Table of Contents
Questionnaire for Allen Bradley................................................................................................................ 9
Pre-Assessment........................................................................................................................................ 11
Glossary................................................................................................................................................... 15
Understanding Numbering Systems.........................................................................................................19
Hardware ................................................................................................................................................. 21
Discrete Input Modules....................................................................................................................... 21
Discrete Output Modules.....................................................................................................................22
Analog Modules.................................................................................................................................. 23
The Chassis..........................................................................................................................................25
The PLC-5 Chassis......................................................................................................................... 25
The SLC-500 Chassis..................................................................................................................... 25
The ControlLogix Chassis.............................................................................................................. 26
The Flex Chassis.............................................................................................................................26
The Power Supply............................................................................................................................... 27
The Processor...................................................................................................................................... 29
The Ethernet Module...........................................................................................................................32
Ethernet Addressing................................................................................................................................. 34
Addressing...........................................................................................................................................34
Subnet Mask........................................................................................................................................ 35
RSLinx..................................................................................................................................................... 39
Utilizing the BootP/DHCP Server.......................................................................................................39
Setting up the Ethernet Driver.............................................................................................................42
Configuring the DF1 Driver................................................................................................................ 45
Backup Restore Utility........................................................................................................................ 48
Flashing ControlLogix Modules.............................................................................................................. 51
Creating a new Project............................................................................................................................ 55
Setting up Local I/O Modules............................................................................................................. 56
1756-IB16 Input Module................................................................................................................ 57
1756-OB16E Output Module......................................................................................................... 58
Working With Tags..................................................................................................................................60
Controller Tags....................................................................................................................................60
Program Tags...................................................................................................................................... 62
Aliasing............................................................................................................................................... 67
Remote Chassis........................................................................................................................................ 69
Basic Instructions..................................................................................................................................... 81
Examine If Closed............................................................................................................................... 81
Examine If Open................................................................................................................................. 82
Output To Energize............................................................................................................................. 82
Output To Latch.................................................................................................................................. 83
Output To Unlatch ..............................................................................................................................83
Timers...................................................................................................................................................... 84
Timer On Delay (TON).......................................................................................................................85
Timer Off Delay (TOF).......................................................................................................................86
ControlLogix Maintenance and Troubleshooting Page #7
Name_____________________________________________Date__________________
11)Will you ever be installing new systems, or checking new systems once they have been installed?
12)Will you ever be modifying the I/O structure of existing systems?
13)Do you have any common system failures that are related to the Allen Bradley PLC? If so, what are
these failures
14)Are you interested in learning features of RSLogix that are not currently in use by your plant, but, if
used could reduce downtime?
Name_____________________________Date______________Score___________
2) Name three devices that you might find connected to a discrete output module:
4) Name one field device that you would find connected to an analog output module:
5) On a discrete input module, a status light is on. What does this indicate?
6) On a discrete output module if a status light is on, what does this indicate?
7) Name one use of the serial port (communication channel 0) on the front of the processor.
13)How many bits are available in a tag with the DINT data type?
14)What instruction must be placed in the Main Routine so the Sub-Routines will execute?
15)What are the five steps involved in performing an on line edit if the processor is in remote run
mode?
16)If you have a motor that will not run when the operator pushes a start button, you may need to go on
line with the processor and locate the output in the ControlLogix program that energizes the motor.
This allows you to see what other conditions must be met before the processor will energize the
output. What features of RSLogix might you use to locate the motor's output in the ControlLogix
project?
17)In #16, you find that the reason for the failure is a bad thermal switch on the motor. Since you do
not have any more thermal switches in stock, you decide to force the motor's output instruction on.
What are some dangers with this, and what are some better options that you could have chosen.
18)The processor is in Remote Run mode. You perform an on line edit and inadvertently get the
processor caught in an infinite loop. What will happen when your edits are tested?
19)Due to the way the ControlLogix processor scans the I/O, programmers will sometimes have a
routine for Input Buffering, and another for Output Buffering. What would be the purpose of these
two routines?
20)An operator informs you of variations in a product. You suspect the variations in product are due to
a fluctuation in temperature. What feature of RSLogix software would allow you to graph a
temperature over time?
21)If a neon lamp is wired directly to a triac output module, the neon lamp is always on even when
processor is not calling for the output. What causes this, and how can it be corrected?
23)With a network of PLC's, it is possible to inadvertently download to the wrong processor. This can
have disastrous results. What steps can you take to ensure you are not downloading to the wrong
system?
24)Name some communication protocols that may be used for peer to peer communication between
networked PLC's.
25)Name some communication protocols that may be used for communication between a processor,
and I/O devices such as a remote chassis, drive, or robot.
Glossary
Addressing:
Bit: Smallest unit of information the PLC can process ON or OFF
Word: 32 Bits for Double Integer
Hardware:
Input module: Reads the STATUS of field devices
Output module: CONTROLS field devices
Discrete module: Reads or controls devices which only have 2 states:
on or off
Analog Module: Reads or controls devices which have a range
such as 0 to 10 volts or 4 to 20 milliamps
Power Supply: Provides control power to modules on the backplane
Chassis: The physical device that modules are plugged into.
Local Chassis: The chassis where the processor resides.
Processor: The 'Brain' of the PLC which contains the machine program.
Troubleshooting Tools:
Cross Referencing:
Allows the troubleshooter to quickly navigate through the
program by listing all locations in ladder logic where a
particular address is located.
Usually the troubleshooter will cross reference a false condition on a
rung of logic to find the output that will turn the referenced bit on.
You can Access Cross Referencing by right clicking a particular
address. (Note: You must be on the address, not the instruction)
Custom Data Monitor Utility:
Allows the troubleshooter to gather data from various
memory locations onto one screen for easy troubleshooting. For
example: One can create a custom data monitor for the failure of
a particular motor. Next time the motor fails, the troubleshooter
can simply look down the list of conditions that must be met, and
see in real time which condition is causing the failure.
The custom data monitor utility has to be installed as a separate tool.
Since the CDM utility is not built into RSLogix, you must have
RSLinx activated.
RSLinx Lite will not work with the CDM utility.
Force:
Simulates real world jumpers. Use care while performing a force.
You must understand fully how a force is going to affect your system.
In most cases, only addresses starting with an I: or an O: can be forced.
To force an input or output, you can right click on the address in logic,
then choose force on or force off. After the force is installed, forces
can then be enabled from the on line tool bar.
Trending:
Trending acts somewhat like a 'software chart recorder', and allows you
to track an analog signal over time.
Communication terminology:
RSLinx: This is the communication server. If RSLinx is not set up properly,
RSLogix will not communicate to the processor.
Driver: Allows RSLinx to communicate with a particular hardware device. The
most common drivers are the DF1 driver to communicate with
Channel 0, and the PCMK driver for a laptop to communicate to
Channel 1A for station 5. Configure drivers by clicking
communication on the menu bar.
RSWho: A graphical screen which will display what devices RSLinx has
established communication with. Access RSWho by clicking
communication on the menu bar. Then click on the name of
the driver you wish to use for communication. The right hand
side of the screen will reveal devices the driver has communication
with.
RSLogix: The software which allows you to troubleshoot or program a processor.
Online: Actively communicating with the processor (ladder spinning)
Download: If a program was changed offline, it must be downloaded (
or sent to) the processor. When downloading the processor must
be in program or remote program mode. A good way to download
once RSLinx is properly set up is to click COMMS on the menu bar, and
then go to Who Active. Click the driver name, highlight your processor,
then click DOWNLOAD.
Memory Layout:
Tags: A section of the processor's memory that stores information. You can
also think of tag elements as variables. For example: The
memory location MainTorque could store a drive torque value.
There are two scopes of tags: Program tags which are local to the
program they Reside in, and Controller Scoped tags which are
global. You can access the Program Tag database by double clicking
program tags just above the MainRoutine of each program.
Controller tags can by accessed at the top of the Controller organizer
window.
Tasks: A section of the processor's memory which holds programs.
Programs hold Routines. Each controller can have multiple tasks with multiple
programs in each task. Each of these programs can then have multiple routines.
Atomic Data Types:
BOOL
SINT
INT
DINT
REAL
Decimal Binary
Octal
Hex/BCD
Analog Modules
Analog modules are used to control and read the status of analog devices. Analog devices have a range
of states instead of just on/off states like discrete devices.
Some analog modules have switches which determine whether the input channels are to be set up for
voltage or current. Some analog modules are configured through software.
Examples of analog inputs include: Potentiometer, Pressure Transducers, Variable speed drives, and
with a thermal couple module, temperature can be read into the processor's memory.
Examples of analog outputs include: Meters, Variable Speed Drives, Valve Positioners, and chart
recorders.
An analog signal cannot be expressed with a single bit, and therefore analog values will consume a
word of memory. For our class, we will use the Analog module on the Flex I/O chassis.
Please answer the following questions:
1) What is the catalog number of your analog module?
2) How many channels of Input, and how many channels of Output are available on this module?
3) How do you set up the input channels to accept either a current or a voltage input?
4) What range voltage or current will the Input channels accept on your module? What range of
voltage will the output channels accept?
5) Name at least three devices that are analog inputs:
6) Name at least three field devices that are analog outputs:
The Chassis
The chassis is the device which holds modules. Allen Bradley makes the ControlLogix chassis
available in 4, 7, 10, 13, and 17 slots.
Here are some chassis:
The PLC-5 Chassis (With modules): (For dip switch settings on this chassis, refer to page 4-1 and 4-2
of the PLC-5 Quick Reference Guide.)
The Processor
The processor is the main part of your ControlLogix system. The processor is where the program is
stored that reads the status of your equipment, and based on certain status, makes a decision on what to
control. For example: The processor is reading the status of a switch. When the operator energizes the
switch, the processor might call for solenoid to energize that extends a cylinder. When the cylinder
reaches the end of it's travel, it might close a limit switch. The processor will see that a limit switch has
been closed, and shut off the solenoid. Although traditionally the processor usually is placed in slot 0,
it can be placed anywhere in the chassis, as long as the program is setup for the processor to be in that
slot. You can also use as many processors as you like in a chassis (not to exceed the limitation of the
power supply)
The processor consists of several components:
1) The battery: The battery retains the processor's program when the PLC is powered down. Certain
AB documentation states that the shelf life of the battery is up to 2.5 years. When the battery is low,
you will see a BATT light on the front of the processor. A minor fault bit is also set in the memory
of the processor when the battery is low or missing.
2) On the front of the processor, you will find several status lights:
1. RUN Indicates when when processor is in RUN Mode
2. OK If flashing red, usually indicates a software problem. Go on line to get a description of the
fault. You will find the description in the Controller Properties on the FAULT tab. If the fault
light is solid red, this could indicate a hardware problem. You can try the following: re-seat the
processor, clear memory and reload program, or replace processor.
3. BATT-- Indicates the battery is low or missing
4. IO If flashing indicates the Processor lost it's connection with at least one I/O device.
5. FORCE If flashing indicates forces are installed but not enabled... If solid indicates forces are
installed, and enabled in the processor. This indicator is not available on all ControlLogix
processors.
6. RS232 This light will flicker as data is transferred over the RS232 port (channel 0).
3) The Key Switch:
1. Run Mode: In this position, certain tag values can be modified, but ladder logic cannot. The
mode of the processor cannot be changed to program mode from the On line tool bar in RSLogix.
When the switch is in run mode, a program cannot be downloaded to the processor.
2. Program Mode: In this position, the ladder is not executing. Changes can be made to the ladder
diagram or to data files. The processor cannot be changed to run mode from the on line tool bar
in RSLogix while the switch is in this position.
3. Remote Mode: When the key switch is in Remote Mode, the mode of the processor can be
changed from RSLogix (Program or Run). On line editing is allowed.
Once the IP address is assigned, the IP will scroll across the alphanumeric display. This IP address can
then be used in the Ethernet Driver for RSLinx, or if type the IP address into the address bar of a web
browser, such as Mozilla, the modules on board web server will show the module's status, and the
status of every other module in the chassis.
On the bottom of the 1756-ENBT module, you will find an RJ-45 port. Using a standard patch cable,
you can connect the module to an Ethernet switch or a hub. To connect to your computer directly, you
will need a crossover cable (switches transmit and receive).
Ethernet Addressing
Every device on the same Ethernet network must have a unique address. Allen Bradley PLC's
currently use the IP (Internet protocol) addressing scheme (version 4). This is the addressing scheme
discussed in this document.
Examples of Ethernet devices might be a Personal Computer (PC), a 1756-ENBT module, a 1794AENT flex adapter, a printer with built-in print server capabilities, and plant servers for data storage
and processing.
To see what the IP address is of your Windows NT, 2000, or XP machine type:
ipconfig /all
at the command prompt. Here is the result:
For Unix/Linux systems, the command /sbin/ifconfig will product similar results.
In this example, my PC has the IP address of 192.168.0.101. No other machine on the same network
will have this same IP address, nor should you attempt to assign the same address to another device on
the network. If this happens, one of the devices will not be seen.
Each segment of the IP address is called an OCTET. All IP addresses in the IPv4 addressing scheme
are made up of 4 octets. Each octet is an 8 bit unsigned integer.
Subnet Mask
Notice the Subnet Mask: 255.255.255.0. The purpose of the subnet mask is to identify which part of
the IP address is the network address, and which part of the IP address is the host or terminal on the
network. To understand how the subnet mask works, it has to be broken down into a binary format...
Look at the IP address in Binary:
11000000 . 10101000 . 00000000 . 01100101 = 192.168.0.101
Now look at the subnet mask:
11111111 . 11111111 . 11111111 . 00000000 = 255.255.255.0
Anywhere a 1 exists in the subnet mask, that bit of the IP address is viewed as the NETWORK part of
the address.... Lets see what bits are passed:
11000000
11111111
11000000
.
.
.
10101000
11111111
10101000
.
.
.
Wherever there was a 1 in the subnet, we passed that bit of the IP address as part of the network
address. Therefore, we would say the network address for this machine is 192.168.0.X. Every device
on this network must have an IP address that starts with 192.168.0. and X is the terminal address on the
network.
For example: Devices with these two IP addresses can communicate with each other directly without
going through a router:
192.168.0.3 and 192.168.0.200 with subnet 255.255.255.0
These two devices cannot communicate with each other directly:
192.168.1.3 and 192.168.3.200 with subnet 255.255.255.0
However if the subnet mask was changed:
192.168.1.3 and 192.168.3.200 with subnet 255.255.0.0
These two devices will communicate with each other because the network address is only made up of
the first two octets, 192.168.X.X... since the network address is the same for the two devices, they will
communicate directly.
1. 192.168.0.5
YES
NO
2. 192.168.1.5
YES
NO
3. 192.168.1.5
YES
NO
4. 10.1.1.5
and 10.1.1.6
YES
NO
5. 10.1.1.5
and 10.1.1.6
YES
NO
6. 10.2.5.5
and 10.1.1.6
YES
NO
7. 10.2.5.5
and 10.1.1.6
YES
NO
8. 10.2.5.5
and 10.1.1.6
YES
NO
9. 192.168.0.1
and 10.1.1.6
YES
NO
10.
and 10.1.1.6
YES
NO
10.2.1.5
Other Terms:
GATEWAY
The gateway address is the IP address of a server or hardware router that connects you to other
networks such as the Internet.
DNS (Primary and Secondary)
The DNS server (Domain Name Server) resolves host names into IP addresses. When you enter an
address such as Yahoo.com into your web browser, your PC does not understand where to go. It must
ask the DNS server to look up the IP address of a given host names. Host names are for humans to
understand. Computers understand IP addresses.
DHCP
Dynamic Host Configuration Protocol When a device such as a computer is configured to use DHCP,
A DHCP server should be available on the network. As soon as the device connects to the network, it
will ask the DHCP server to automatically assign an IP address, subnet mask, DNS servers, Gateway
address, etc. This address is dynamic, so the device could get a different IP address each time it's
connected.
BootP
Bootstrap Protocol Similar to DHCP, except a BootP device will get the same IP address every time
it connects. The BootP server has a list of hardware addresses, and IP addresses that belong to each
device. When a device (such as a PLC) connects to the network, it will give the BootP server it's
hardware address. The server will then look up the hardware address in a list, and see which IP address
belongs to the PLC. The BootP server will then return the IP address (and other information such as
the subnet mask) to be used by the device.
3) Once the server is open, it may as for some specific network information if this is the first time the
BootP server has been run. You can obtain this information from your network administrator. For
this example, we just set the subnet mask to 255.255.255.0 then click OK.
4) Power up your processor, and you should see the Ethernet device begin to request and address.
5) Double click on the device. You will then be prompted to assign an IP address to the device. Be
sure you double click the right device. Entering an IP address into the wrong equipment could have
disastrous consequences.
6) You could also enter a host name and description at this time if you wish.
7) If you wish to verify communication, you can ping the device from the command prompt. By
default, the command prompt can be accessed from Start | Programs | Accessories | Command
Prompt.
You should get replies. To ping continuously, use the -t flag after the ping command. A control-C
will stop the ping command.
2) Click 'Communication' on the menu bar, and then choose 'Configure Drivers'.
3) From the Available driver types pull down menu, choose 'Ethernet Drives', then press the 'Add New'
button.
4) For this example, the name can be left at default. Press OK.
5) Populate the list of hostnames. If you do not have a way to resolve hostnames, you can enter the IP
address of the devices you wish to connect to (as shown below in the example). The IP address for
each device can usually be obtained from the network administrator, drawings, the offline project, or
in some cases, the IP address is displayed on the front of the module.
6) Press Apply, then OK. You will see the driver is now running. Close the 'Configure Drivers'
screen.
7) To test your drivers, click the RSWho icon in the tool bar of RSLinx.\
8) Click the Ethernet Driver (the one you just configured) on the left side of the screen. The devices
you are communicating with will appear on the right. In this example, 192.168.0.95 is a
ControlLogix module, and the other devices are not present, or not a recognized PLC module.
3) From the Available Driver Types pull down menu, choose 'RS232 DF1 Devices', then press the
ADD NEW button.
4) For this example, the name can be left at default. Press OK.
5) Although the communication parameters can be entered manually, if you are currently connected to
the processor, just hit the 'AutoConfigure' button. RSLinx will hit the processor with different baud
rates, and different settings, until it finds a setting it gets a response on. When this happens, you will
get a message that the autoconfiguration was successful. Press OK when finished.
6) You will see the driver is now running. Close the Configure Drivers' screen.
7) To test your drivers, click the RSWho icon in the tool bar of RSLinx.
8) Click the DF1 driver (the one you just configured) on the left side of your screen. The devices you
are communicating with will appear on the right.
3) You will then get a message that the operation completed successfully. Press OK, then you can
close the RSLinx Backup Restore Utility.
3) A dialog box should appear indicating that the operation was completed successfully. If you got an
error, try the restore procedure again. In some versions of RSLinx, BRU must be ran twice if
RSLinx was open.
2) Be sure to read all instructions that are presented to you, and take all necessary precautions
while flashing a module. If your flash procedure is interrupted, you could damage the module.
4) Choose the device that you wish to flash. For this example, we will use the 1756-L1 option.
Then press NEXT. Now the ControlFlash utility will ask for the path of the device you wish to
flash. Drill down through RSLinx until you find the device you are wanting to flash. Highlight
the device, then press OK.
5) Next you are asked what firmware version you want to flash the module to. In this case, the
module will be flashed to firmware version 10.23. If the processor's firmware was not the same
firmware that we needed, we would highlight the revision of firmware we want for this update,
and then press NEXT.
6) Next you will receive a warning. Read the warning carefully. If you still wish to flash the
module, press FINISH.
There may be more than one stage in updating a module, so be sure not to interrupt the update process
until it is completely finished.
When the update is finished, you will see the following message:
4) You have a valid project. It will not do much though because we have not configured any I/O yet.
Let's take a moment to discuss some components of the RSLogix 5000 user interface.
5) Next we will add the following modules to the I/O Configuration at the bottom of the controller
organizer window:
1. 1756-IB16
Version 2.4
Slot 5
2. 1745-OB16E Version 2.4
Slot 6
6) To do this, right click the I/O Configuration folder in the project tree, and select 'New Module'.
7) Choose the 1756-IB16 module from the available devices and click OK.
8) The module is version 2.4, so the Major revision is 2, and the minor revision is 4. Click OK on the
Major revision dialog box if your revision is correct.
9) Complete the module properties dialog box as follows, then click 'Finish'.
10)You will notice the 1756-IB16 module appears in the I/O Configuration folder. Next, we will add
the 1756-OB16E. Right click on the I/O Configuration folder, and select 'New Module'.
11)Choose the 1756-OB16E module from the list of available modules, then press OK.
14)You will notice both modules are now in the I/O Configuration tree. Be sure to adjust this
procedure to suit the modules you are actually using with your own system.
15)You are ready to download. Since the communication path has not been selected yet, let's click
Communications | WhoActive From the menu bar
Controller Tags:
If one program needs to communicate with another program, you would use a Controller Tag that each
program can read from or write to. For this example, lets say a conveyor has three segments. Each
segment has it's own program. When an E-Stop button is pressed, we would want all sections to shut
down. Therefore the ESTOP would be a GLOBAL tag.
Look at the following example:
Each program has it's own tag database, that no other program can access, but if a program writes a
value to a Controller Tag, any program can access the tag.
For this example, I've created a new project called conveyor with an input module in slot 5 and an
output module in slot 6.
Open the Controller Tag Database, and be sure 'Edit Tags' is selected. Declare the tag called
Estop_Condition, with a BOOL data type. The BOOL data type means one bit of information is to be
stored. This is similar to a B3 bit in a PLC or SLC. Press enter.
Program Tags
Program tags are local to the program they reside in. One main advantage of program tags is that we
can create one program and copy it multiple times. The exact same program tags can be used in each
instance of the program. This makes the process of building logic for similar pieces of equipment very
simple.
1) Right click on the main program and choose 'Properties' Rename MainProgram to
Conveyor_Control.
2) Right click on the MainTask to add a new program. The name of your program is Section_1.
3) Expand Section_1 and open the Program Tags. Notice there are no tags in the program tag database.
At the bottom of the tag editor screen, be sure 'Edit Tags' is selected.
4) Set up three program tags as shown. Pay attention to the Data Type. The data type of the tag
specifies the way the data is structured within the tag. A BOOL data type will store 1 bit of
information, and a DINT (Double Integer) data type will store 32 bits of information (This is usually
used for numbers)
5) Now, let's add some logic: Right click the Section_1 program and add a new routine.
8) We named this the MainRoutine, but did not configure it as the MainRoutine yet. Every program
needs to have a main routine. That is the routine the processor scans within the program. You will
notice in the controller organizer window, there is no 1 on the ladder icon yet. Right click the
Section_1 program and go to properties. Click the Configuration tab. In the Pull down menu next
to Main, choose the MainRoutine. Apply your changes, then press OK.
10)Open the MainRoutine, and add the following logic using the drag and drop method:
11)The question marks indicate that we need an address on each instruction. Double click the question
mark on the XIC,and click the pull down tab.
12)Be sure Controller Tags is selected. Expand Local:5:I, and click the pull down tab next to data to
reveal all 32 bits. Choose bit 0.
15.Now that we have one complete program (Or as complete as we need it for example... Let's copy the
program and use it for other sections of the conveyor.
16)Right click the Section_1 program and choose 'Copy'. Right click on the 'MainTask' and choose
paste. Then right click the 'MainTask' again, and paste a second time.
17)This gave us a total of 3 copies of the same program. Right click on Section_11, go to the
properties, and rename it to Section_2. Right click Section_2, go to properties, and rename to
Section_3. When finished, your project will look like this:
18)Now all we have to do is go back and change the I/O in each program to reflect the actual switch
that turns on the conveyor for that section, and if we had it set up... The output the logic writes to.
All the internal bits are already written for us, and the program structure is in place.
Aliasing
This process can be taken one step further. The program can be set up so nothing has to be changed in
logic have to be changed after it has been copied. Aliasing allows this to be done. An Alias is a tag
that is a shortcut to another tag. We can create program tags in the program tag database that point to
the real world I/O. After a program has been copied, you just need to go into the program tag database,
and change the address the aliases point to. Look at this example.
1) Open the program tags of Section_1. Be sure 'Edit Tags' is selected and create a tag called 'Start'. In
the Alias for column, make this tag alias for Local:5:I.Data.0.
Notice the C next to the Input module's address. This means that you are pointing to a controller tag.
2) Now go back to the MainRoutine, and change the address on the first instruction to the alias name.
Notice by default the actual memory location the alias is pointing to appears below the alias name.
3) Now copy section on and paste it twice again into the main task. That will give us sections 11 and
12.
4) Go into section 11, and change the Start alias to point to bit 11 of the input module.
5) Do the same for section 12. Change the start tag to look at bit 12 of the input module.
6) When bit 11 goes high on the input module, Conveyor 11's start bit will be energized. When Bit 12
goes high on the input module, Conveyor 12's start bit will energize! You can see how aliasing
would allow you to quickly develop programs that are very similar.
A Controller tag can be an alias for another controller tag. A program tag can alias another program
tag. A program tag can alias a controller tag, but a controller tag CANNOT alias a program tag.
You can alias to several tag levels. The start tag you just created pointed to a bit level tag. But if it
would have pointed to the data word instead, we would have to specify the bit number manually in
logic. Look at the chart below:
Remote Chassis
In many systems, many points of I/O are located far away from the local chassis. The local chassis is
the chassis where the processor in focus resides. In many cases, it is easier to mount a chassis at the
remote location. A communication cable will allow the processor to control the chassis at the remote
location. For example, if 256 points of I/O were 300 feet from the local chassis, it would be easier to
mount a chassis at the remote location. You would then run the 256 points of I/O just a few feet to the
remote chassis, then run one communication cable back to the local chassis.
The example below shows the Ethernet/IP communication protocol, however, many other protocols
follow the same model such as ControlNet or Remote I/O with slightly different wiring and
configuration changes.
Look at the diagram below. In this example, we have an input and output module in the local chassis.
This would be for I/O in the local vicinity. For I/O in another location, we can use a remote chassis.
The processor will establish a connection to this remote I/O, and will read inputs, and control outputs
on this chassis. In this example, the local chassis is ControlLogix, and the remote chassis is FLEX I/O
(This could also be many other types of chassis such as another ControlLogix chassis, PLC-5 Chassis,
SLC Chassis, Block I/O, etc....). This procedure will assume that you have an existing program, and
that IP addresses have already been assigned to the Ethernet module, and Ethernet Adapter. If you
were to use ControlNet, you would assign node numbers instead of IP addresses. You can assign node
numbers to these modules by physically dialing in a node number on the modules themselves. For
Remote I/O, you would set up the DIP switches according to the user manuals for each module.
Communication path
Look at the diagram below showing the communication path. The processor is where the program
resides, so the path we choose will be relative to the processor itself.
1) The processor must first connect to the 1756-ENBT module in the local chassis. If you
are using ControlNet, this would be a 1756-CNB(R) module. For the older remote I/O
Protocol, this would be a 1756-DHRIO module.
2) Next, we must tell the local 1756-ENBT module to connect to the adapter at the remote
chassis. Remember we are using Flex I/O for this particular example, so we would
connect to the 1794-AENT module (Ethernet) 1794-ACN(R)(ControlNet), or 1794-ASB
(Remote I/O).
3) The next step is to have the adapter connect to the individual modules within it's chassis.
We are using the following modules:
1. Slot 0 1794-IB16 (DC input module)
2. Slot 1 1794-OB16 (DC output module)
3. Slot 2 1794-IE8 (Analog input module)
I/O Configuration
Now that we have decided the layout for our system, we need to go to the ControlLogix project, and set
up the remote chassis under I/O Configuration. Recall that 3 steps will accomplish this connection:
First, we connect to the Local ENBT module, then the ENBT will connect to the AENT. Next, the
AENT will connect to the modules that are in it's own chassis.
1) If you do not already have the Ethernet module set up in your I/O Configuration, right click the
I/O Configuration folder, and select 'New Module'.
2) Select the 1756-ENBT module from the list of available modules, then press OK.
3) Next, you will choose the major revision of the 1756-ENBT module. This revision is usually
on the label on the side of the module, however, this label may not be up to date. You can use
the module information from RSLinx, or type the IP address into your web browser, and click
'Module Information' to determine the revision level. At the time this manual was written, the
modules we use for class are 2.4. This means the Major revision is 2, and the minor revision is
4. Therefore, we must select 2 as the major revision. Press OK when finished.
4) Next, complete the dialog box for the Ethernet module. Your location may have specific
naming standards, but we will name this module 'Local_Ethernet_Module'. The IP address
scrolls across the front of the ENBT module (assuming an IP address has been assigned). In our
classroom, the ENBT module is in slot 3, and the minor revision is 4 (Recall the module's
revision was 2.4, 2 being the major, and 4 being the minor). We will leave the keying as
compatible module. Press FINISH.
5) Our next step is to have the 1756-ENBT connect to the 1794-AENT module. In I/O
Configuration, right click on the ENBT module. Remember we are connecting to the AENT
module from the ENBT module (Not directly from the backplane)
6) Choose the 1794-AENT from the list of available devices. Press OK. (Be sure you select the
1794-AENT
7) Next, select the major revision of the AENT module. We can get this information from the web
browser, by typing the IP address into the browser's address bar, and click 'Module
Configuration'. At the time this manual was written, the AENT module had firmware version
2.12. Therefore, we must enter 2 as the major revision.
8) You may have naming conventions for remote chassis at your own location. For our classroom
use, we will name the module 'Remote_Chassis'. You can usually get the IP address of this
module from your network administrator, schematics, or other documentation if the address was
not written on the front of the module. Use the IP address the instructor assigns to you. We
will leave the comm format as 'Rack Optimization', and this will treat the three modules in the
chassis as a single connection instead of having a separate connection for each module. The
1756-ENBT module only supports 64 connections in many cases. This chassis consists of 3
slots (not counting the adapter). The minor revision is 12 (because our version was 2.12), and
leave the keying as 'Compatible Module'. Press FINISH when you are finished configuring
the module.
9) Now that a connection has been made between the ENBT module and the AENT module, we
need to establish a connection between the AENT module and the three modules that are in it's
chassis. To add the first module (The 1794-IB16), right click the AENT module in the I/O
Configuration, and select 'New Module'.
10) Choose the 1794-IB16 module from the list of available modules, then press OK.
11) Complete the Module configuration dialog as follows, then press FINISH.
12) Next, we will add the 1794-OB16 module to the I/O Configuration tree. Again, we are
connecting to this module from the 1794-AENT module, so right click the AENT module, and
select 'New Module'
13) From the list of available modules, select the 1794-OB16 DC output module. Press OK.
14) Complete the module configuration dialog as shown, then press FINISH.
15) Next we need to add the last module to the remote chassis. This will be the 1794-IE8. This
connection will be between the AENT and the IE8 module (Just like the AENT connected to the
previous two modules we configured. Right click the 1794-AENT module, and select 'New
Module'.
16) From the list of available modules, choose the 1794-IE8 module, then press OK.
17) complete the module configuration dialog as shown, then press FINISH.
18) Now that all of our modules have been added to the I/O Configuration, RSLogix has created
tags for us in the controller tag database. Let's take a look at the controller tags to see where
data from these three modules will appear.
19) Take a look at the tag names that RSLogix generated for us.
20) Notice the tag names assume the name of the adapter in the remote chassis. You will also
notice for this example, that we have two tags for each slot. The slot number immediately
follows the tag name.
21) Since we established a connection to each module in the chassis individually, we have two sets
of tags for this remote I/O. We have the base tags, which contain most all of the information
we need to know about the chassis, and we have the derived tags which follow the same naming
convention as the local I/O. The derived tags alias corresponding memory locations in the base
tag that reflect the data for it's own slot when possible.
22) If you go to edit tags, you will see what based tags the derived tags are aliasing.
23) For this course we will be using the derived tags. To see the data from the DC Input Module,
you must be on line, on the monitor tags tab, then expand Remote_Chassis:0:I. You will see
each input from this module. These tags can be used directly in ladder logic, or you can create
another alias to use for your project.
Basic Instructions
A Little History
A common programming language used in PLC's is called Ladder Logic. Ladder Logic was developed
years ago to help electricians adapt to PLC's. Ladder logic is still widely in use today although this
language appears to be weakening. Ladder logic is similar to Assembly Language in many ways which
was widely used to program computers years ago. Since then, higher level languages such as PASCAL
have come along. In the last few years we have seen a more Object Oriented approach to programming
in languages such as Java. The ControlLogix processor seems to be following the Object Oriented
approach with it's User Defined data types (UDTs), and event driven tasks.
Here are some of the instructions available in Ladder Logic:
In the above example, you can see that as soon as the Main Pump Switch is shut off, a bit is set to run
the backup pump.
If the output address is off, both the latch and unlatch instructions are not intensified, but once the bit is
turned on, you will see both the latch and unlatch intensified even though both inputs are shut off.
Due to the processor scan cycle, since the unlatch is placed after the latch, if both inputs were to go
true, the Unlatch instruction would win, and the output address will be shut off. If the latch was after
the unlatch, then the latch would be the last instruction scanned, and therefore the bit would be left in
the energized state.
Timers
Timers are generally used for delaying an event from taking place, or to delay a device from shutting
off either on an on transition or an off transition. There are three types of timers: The Timer ON delay
(TON), Timer Off delay (TOF), and the Retentative Timer On delay (RTO).
Timers can be created as Controller Tags or Program Tags. A tag of the TIMER data type consists of
the following components: Preset word (PRE), Accumulate word (ACC), Done bit (DN), Timer
Timing bit (TT), and Enable bit (EN). For Timers, the Enable bit follows the rung condition.
The entire timer is addressed by it's element (example: T4:0) Pieces of the timer can be used in logic
however such as the DN bit on an XIC (T4:0/DN), or the Accumulated value in a MOV statement
(T4:0.ACC)
When the motor switch is energized, both the main motor and the lube motor will energize
immediately. When the main motor switch is shut off, the main motor shuts off immediately, but since
the TOF delays the DN bit from shutting off, the Lube motor will shut off 30 seconds later. Warning:
Using the RES instruction on a TOF instruction could cause unpredictable operation.
In this example, once the machine accumulates 1 hour of run time, a light might come on indicating
that a lubrication needs to be engaged. Once the operator lubricates the machine, he can reset the hour
meter.
Counters
Counters count rung transitions. The CTU runs the accumulated value of the counter up on the false to
true rung transition, and the CTD instruction runs the accumulated value down. The CTU and CTD
can be used in conjunction with each other.
Counters consist of the following components:
ACC Accumulated Value
PRE
CD
Count Down Bit
CU
OV
Overflow Bit
UN
Preset Value
Count Up bit
Underflow bit
Tags used for counters are declared with the COUNTER data type. Here is an example:
For the CTU instruction: The CU bit is high when the CTU instruction is true. The ACC value
increments by the value of 1 each time the CU bit goes high. When the ACC reaches the PRE, the DN
bit will be set. The CTU will continue to increment the accumulated value until it reaches the
maximum possible value for a 32 bit signed integer (2147483647). If the CU bit goes high one more
time, the OV bit will be set, and the ACC value will go to -2147483648. Each time the CU bit goes
high, the ACC value will still continue to increment (become less negative).
For the CTD instruction: The CD bit is high when the CTD instruction is true. The ACC value
decrements by the value of 1 each time the CD bit goes high. Any time the ACC is above or equal to
the PRE, the DN bit will remain set. The DN bit is reset if the ACC falls below the PRE at any time.
The CTD will continue to decrement the accumulated value until it reaches the minimum possible
value for a 32 bit signed integer (-2147483648). If the CD bit goes high one more time, the UN bit will
be set, and the ACC value will go to 2147483647. Each time the CD bit goes high, the ACC value will
still continue to decrement (become less positive).
Each time a pizza goes into the oven, the ACC value is incremented by one. Each time a pizza comes
out of the oven, the ACC value is decremented by one. Therefore, the ACC value represents how
many pizzas are in the oven at any given time. The DN bit could be used to shut the conveyor down if
pizzas are going into the oven and not coming out!
2) Next, let's be sure the 'edit tags' tab is selected so we can add a new tag.
3) The new tag we create will be called 'time', and the type will be 'DINT[7]'. Recall that the [7]
will create an array of 7 elements. Press enter to accept the tag.
4) Let's look at the Array. Click Monitor Tags. Click the + next to the tag name, and you will
see that seven elements have been created.
5) Next we need to choose which routine we will be adding the GSV to. Recall that the purpose of
this GSV is to extract the wall clock time from the system, and load it into the tag we just
created. For this example, we will go to the MainRoutine of the MainProgram. You can access
the routines from the controller organizer window.
6) Be sure the end rung is highlighted, then type GSV (Then press Enter) You will notice the
GSV command has been added to you logic.
7) Double click the ? next to Class Name. The class will be WALLCLOCKTIME. There is
only one instance available of this class, so we don't need to select one. The Attribute will be
DateTime. The destination should be time[0].
8) Now you can download your work, and go on line in Run mode. If your GSV command is
working properly, the GSV command will be extracting the time from the system, and loading
the wall clock time (of 7 elements) into our time tag starting with element 0. To test this, go
back to your controller tags, Be sure the time tag is still expanded, and you will see data in the
following format:
time[0] = Year
time[1] = Month
time[2] = Day
time[3] = Hour
time[4] = Minute
time[5] = Second
time[6] = Microsecond
Start Edits,
Make Changes,
Accept edits,
Test Edits, and
Assemble edits.
Note: Beginning with Version 13, 'Finalize Edits' will accept, test, and assemble all in one step.
Unless you are very experienced, it is recommended that you follow the full 5 step procedure.
Although these steps seem very simple there are a few rules to watch out for.
You cannot change the data type of existing tags. If you create a new tag with the wrong data type,
you must delete the tag, and declare it again.
You cannot make an on line edit if the key switch is in Run Mode.
You do not need to perform an on line edit to directly change a value in the data table such as the
preset of a timer or counter.
If the processor is in program mode, you do not need to test and assemble after accepting.
If the processor is in program mode, and a rung is deleted, there is no warning.
Notice that RSLogix made a copy of the rung for us to work with. By looking at the power rails, you
can see the bottom rung is being executed by the processor, and the top rung is the one you need to
make edits to. You will also notice the e (edit) or i (insert) and r (replace) in the margin are lower case.
This means the edits are not in the processor yet. If you are adding new logic instead of modifying
existing logic, this is the step where you add a new rung.
Notice in the margin rung 1 is marked for insertion, and rung 2 is marked for removal. The I's and R's
are capitol because the edits are now in the processor. Look at the power rails. You can see the old
rung is still being executed by the processor.
You will also see that pending edits exist by looking at the on line tool bar.
If you are modifying an input type address you should also be careful. If the rung was previously true,
you may want to make sure your new logic is also going to be true at the moment you accept, or the the
output may shut off.
Let's test the edits, and you will notice the new rung(s) are active. If the edits do not work the way you
anticipated, you can un-test to revert to the old rung while you make other changes to the new rung.
Notice the power rails:
Forcing I/O
Forcing can be used for troubleshooting, and to some extent simulates real world jumpers. Leaving
forces in the processor, or depending on forced I/O to make your equipment run is considered bad
practice.
Look at the diagram below:
There are several ways to force I/O. Forcing can be applied from ladder logic, or from the Controller
Tag database. Internal memory locations cannot be forced. You can only force real I/O, Aliases to real
I/O, or producer/consumer tags.
In this example, we will force an input directly from ladder logic. Right click on the input address, and
choose 'Force On'.
Notice the force light on the processor begins to flash (if your process has a force light) indicating that
forces are installed, but not enabled. The force can be enabled from the on line tool bar as shown
below:
The force light on your processor will now be solid amber indicating that installed forces have been
enabled. If we go to the data table, you will see that the input bit is on, and it is red indicating that a
force has been enabled on the input. You will also see that the force mask reflects which bits have
been forced in the data word. Forcing can be preformed directly from the force mask as well.
In the force mask, the value of 1 indicates a bit has been forced on. The value of 0 indicates an off
force, and a period indicates no force is installed on a particular bit.
Simple UDT's
In an open project, locate the Data Types folder in the controller organizer window. Under the Data
Types folder, you will find the Predefined data types. Expand the Predefined data types folder, and
double click TIMER.
Notice the members of the Timer Data Structure. Any tag we assign in the tag database as a timer will
inherit all of these members.
When you create MyTimer with the timer type, the tag can be expanded to reveal all the components.:
Next, we are going to create a User Defined Data structure called TankAlarm. This data structure
will have two members: HighLevel, and LowLevel.
Right Click on the User-Defined folder under Data Types, and select New Data Type.
The name of this data type will be TankAlarm. The two members, HighLevel, and LowLevel, will
each have a bool data type.
Now that TankAlarm is an available data type, we can now create an instance of this data type in the
tag database.
In this example, I created a tag called MyTank, and gave it the TankAlarm data type. MyTank
inherited the members of the TankAlarm data type. We can now have XIC's and OTE's in logic that
use MyTank.LowLevel, and MyTank.Highlevel variables.
Here is an example of what logic might look like to populate these bits:
Nesting UDT's
Additional information may be needed for MyTank. Status information may also be available. The
TankStatus data type will consist of three members: Level, Draining, and Filling. Let's go ahead and
set up this data type, then we will nest TankAlarm, and TankStatus members into a tank data type.
This will provide us with all the information we need about MyTank all in one area. Lets do this one
step at a time.
First, Create a UDT for TankStatus as shown (Right click the User-Defined folder and select 'new data
type'):
Notice that Level is an actual value, so it will have to be DINT. Filling and Draining are either true or
false, so their type is BOOL. Apply your changes.
We can use the TankStatus Data type in the tag database as it is, but we would have to create a separate
tagname, which is not good. Remember our goal is to organize data.
To have all the data under one tagname, we are going to have to create another data structure that has
the members TankStatus and TankAlarm. Each of those data structures have their own members.
Now go to the Controller Tag Database, and create 3 tags, Tank1, Tank2, and Tank3 each having the
data type of 'Tank'. Look what happens!
All three Tanks had the 'Tank' data type. (Recall that the tank data type consisted of two members,
alarm and status.
Remember also that alarm and status had their own structures as well. Expand the alarm and status
tags.
All the data for each Tank is now well organized. These tags should then be incorporated into the input
and output data mapping routines.
Producer/Consumer Model
In older PLC systems, such as the PLC-5, a message instruction had to be executed in order to get data
from one processor to another. Although this worked very well, there was seldom a guarantee when
data would arrive at it's destination, nor would data be transferred if the processor was in program
mode.
With the Producer/Consumer model, the transfer of data between processors takes place without any
logic, and the user sets the RPI (Requested Packet Interval) for the rate at which data should be
updated.
The producer consumer model is very easy to understand, and to trace where data is coming from.
The Producer/Consumer model can transfer data between tags which have a DINT data type, an array,
or a User-Defined Data Type (UDT's)
If you were to right click on the tag, and go to the tag's properties, we would have a few more options:
If we click on the 'Connection' tab, we can set the maximum number of consumers which are allowed
to connect to the produced tag. The allowed values are 1 to 256. You can also send event triggers to
consumers using the IOT instruction in logic.
Be sure to select the communication module you will be using For this example, we are using a 1756ENBT module.
You can get the major revision from a web browser, RSLinx, or from the label on the side of the
module if the label is correct. Our module is version 2.4 (2 is major, 4 is minor).
We named this module local_enbt. This module resides in slot 3, and the IP address is 192.168.0.97.
The minor revision was 4. (Adjust these settings for what you are using at your own station)
When finished with this step, your local communication module will appear in the I/O configuration
similar to the image shown below:
Second, we must add the communication module of the remote chassis to the I/O Configuration. We
must right click on our local communication module, and tell our local communication module to
connect to the remote communication module as shown:
Again, the remote ENBT module is version 2.4, so the Major Revision is 2.
We will name the module remote_enbt. It has the IP address of 192.168.0.96. It is in slot 3 of a 7 slot
chassis. We choose rack optimization for the comm format, so data from all modules can be received
through a single connection. The minor revision is 4. Adjust your settings as necessary for your
station.
When finished adding the remote enbt module, your I/O configuration will look similar to the image
below:
Third, we must make a connection to the processor from the remote_enbt module.
Right click the remote enbt module, and we will add a new module as we did before.
Most of the stations have the 1756-L1 processor. Be sure to select the type of processor that resides in
the station which is producing the data.
Select the revision level of the processor you are connecting to. The version was 13 when this
document was created.
When finished, your I/O Configuration will appear similar to what is shown below:
Third, right click on the tag, and choose 'edit tag properties'. The tag type is consumed. From the PullDown tab you can select remote_processor as the producer. (This is the processor we connected to in
I/O Configuration. The name of the tag in the remote_processor is called MyProducedTag, and is a
DINT. The RPI is fine for this exercise, but if you wish to conserve bandwidth on the network, the RPI
can be increased so the tag will update less often.
ControlLogix Messaging
The producer consumer model is very efficient for transferring data between processors, but if the data
transfer does not need to occur at periodic intervals, you may be able to conserve network bandwidth
using the message instruction. Using the message instruction, data can even be received (or sent) from
another processor, even if that processor is not present in the I/O Configuration tree.
For this example, we will set up a message instruction that will read data from another ControlLogix
processor, and store that data in a memory location in our own controller.
Below, you can see the path that we will take to connect to the target processor. Once, the connection
is made, msgInbox will then receive data from msgOutbox each time the message instruction is
executed. Data actually flows in the opposite direction of the communication path for a data read
because the connection has to be made first, then we can begin receiving data from the target.
1) First let's set up the memory locations we will be using for this transfer. We will create three new
items in the controller tag database:
1. msgOutbox as DINT
2. msgInbox as DINT
3. msgControl as message
msgOutbox will be the memory location that another controller can read from. This tag has nothing to
do with our own message instruction, but we will populate this tag with data, so the station reading
from your controller can test their connection. You will be reading the msgOutbox tag of another
station later in this exercise.
msgInbox is where the data will be stored within our own controller. After the message instruction
executes, whatever data was stored in the msgOutbox of the target processor will appear in the
msgInbox tag of your own processor.
msgControl is simply the workspace for the message instruction to be able to operate. It stores
information about the message instruction such as when it is enabled, waiting, or done.
2) There are several ways we can add these tags. You can right click 'Controller Tags' at the top of the
controller organizer window, and add a new tag, or you can open the controller tag database, and
add the tags to the bottom of the spreadsheet. Note: You must be in 'Edit Tags' mode to add tags to
the controller tag database. This can be done either on line or offline. Add these three tags to the
controller tag database as shown:
3) Next, add a self-running timer as shown. This timer will be used to trigger the message instruction.
You will have to declare msgTimer as Timer. You can do this by creating another entry in the tag
database, or right-click msgTimer once you've typed it into the timer instruction, and then select
'new msgTimer' to declare the new variable for use in logic. This procedure will make the entry in
the tag database for you.
Notice the preset on the timer is 500. Because the time base for ControlLogix is milliseconds only, the
preset for this timer is half of one second. We'll be using the DN bit from this timer to trigger the
message instruction.
4) Next, enter the following rung of logic for the message instruction. All variables in this rung have
already been declared.
5) Click the ellipsis to configure the message instruction. The ellipsis is the 3 dots next to the control
element
6) The message instruction is very versatile, and there are a lot of options. The message instruction can
be used to initiate block transfers, read or write module status, and even reset an electronic fuse on
an output module. For this exercise, we are just interested in a CIP data table read. CIP (Control
and Information Protocol) is the means by which ControlLogix processors natively exchange data
through the message instruction.
7) Next, you are asked for the source and the destination element. The source is the name of the tag
from which we are getting data, and the destination is the memory location in which this data is to
be placed. Recall that we are getting data from the msgOutbox tag of the remote processor, and we
will be placing that data into our own msgInbox tag. The length will be just one element.
8) We have told the processor what the source and destination tags are, however, this PLC could reside
on a network of many ControlLogix systems. We have not yet specified what path the controller
needs to take to connect to the msgOutbox tag. Go to the 'communication' tab, and we'll discuss
how to configure the communication path.
The Backplane
Slot #
DF1 Network
DF1 Address
ControlNet Network
Node #
DH+ Network
Node #
Ethernet Network
IP Address
Note for step B you can also use the following formats: address:port, DNS name, or DNS
name:port)
Using this chart you will come up with the path 1,3,2,192.168.0.57,1,0
14)In the Controller Tag database, populate the msgOutbox tag with a value. You must be in 'Monitor
Tags' to inject a value, then press enter.
15)If your MSG instruction is working properly, and if the msgOutbox tag is set up properly in the
remote processor, you should receive this value in your msgInbox.
16)Open the control element for the message instruction, and you will see the the status bits change as
the MSG instruction executes. For a more detailed explanation of these bits, and error codes you
might find in this control element, refer to the help file in RSLogix 5000. (Not all status words are
shown below)
17) If you was using this for an application, you would write logic next to populate the msgOubox tag
with information you need another controller to receive (Using your own tag names)
Trending
Trending is used to graph data over time. This can be either an analog signal or a discrete signal. You
are allowed 8 pens per trend chart with a maximum of 255 trending charts per project. This is a simple
procedure that will guide you through the creation of a trend chart in your project.
1) Right click the trends folder in the Controller Organizer Window, and select 'new trend'.
2) In the new trend dialog window, name your trend, and add a description. For this example, we will
leave the sample period at default. Click 'Next'.
3) Choose the tag you wish to trend, then press the 'Add' button. You will notice your tag is now in the
list of tags to trend. Click Finish.
4) Next, Click the 'Run' button in the upper left corner of the trending chart.
5) You will see your chart start tracking. You will notice the chart runs very fast. You only have a
time period of 2 seconds currently being displayed from the left to the right side of the screen.
6) We are going to change this to 2 minutes so the chart will run much slower. This will give us a
better indication of what the signal is doing over time. The X axis runs left to right (This is Time),
and the Scale runs from bottom to top. To reconfigure the X axis, right click on the chart, and
choose 'Chart Properties'.
7) On the X tab, change the time span to 2 minutes. Then press Apply, and OK.
8) You will see your chart is now tracking over a 2 minute time period.
9) You will see the scale is not reflecting the full range possible for the analog signal. This is because
the chart defaults to automatic mode. It will take the minimum and maximum value and adjust the
scale accordingly. We will account for this in the next step.
11)On the 'Y Axis' tab, you will notice 3 options. Automatic Mode is what we were running by
default. This adjust the scale based on actual data. You can also choose preset if you like, and enter
a different min/max value for each pen on the pens tab. The last option is to choose 'Custom'. This
will let us lock in our own values for this particular trend chart. We will use custom for this
example, and enter 0 as the minimum, and 10000 as the maximum. These values can be adjusted
based on the data you are getting from your analog source. Press Apply, then OK when finished.
12)You will see the scale on the chart is now locked in with the custom values you entered from the 'Y
Axis' tab.
13)By clicking anywhere on the chart, a value bar will appear. This value bar will indicate the exact
value of the tag at that moment in time.
14)If you click on an area of the chart, and drag your mouse, you will draw a box around a certain area
of the graph. When you release your mouse, you will be zoomed in on that particular area of the
chart. You will know you are in zoom mode by a magnifying glass on your mouse cursor.
15)To get out of Zoom mode, right click on the chart, and Undo Zoom/Pan.
17)Your chart should now be tracking. If you wish to change the color of your pen, Double-Click the
pen in the upper left hand corner of your chart. A pallet will appear. Choose your new color from
the pallet, then press OK.
18)You know know the basic method for setting up a trending chart. At this time, take a few minutes
to explore the other options you have for the trending chart. You can add more pens if you like
under the 'pens' tab. This will allow you to track more addresses. You can also change the width of
each pen, make them visible, or invisible, etc.... Try to change the color of the background.... If you
have questions, ask the instructor.
Hands On Troubleshooting
Your instructor will guide you through the following troubleshooting utilities:
Search/Find
Cross Reference
Trending
Extensive time will be provided for you to practice tracing down outputs, cross referencing through a
plant program, and learning which inputs are required to energize various outputs.