Automating Manufacturing Systems
(Version 6.0, August 11, 2009)
Copyright (c) 1993-2009 Hugh Jack (firstname.lastname@example.org).
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license may be included with this documentation, or is available on-line at the GNU website (http://www.gnu.org).
This document is provided as-is with no warranty, implied or otherwise. There have been attempts to eliminate errors from this document, but there is no doubt that errors remain. As a result, the author does not assume any responsibility for errors and omissions, or damages resulting from the use of the information provided.
Additional materials and updates for this work will be available at http://sites.google.com/site/automatedmanufacturingsystems/
Designing software for control systems is difficult. Experienced controls engineers have learned many techniques that allow them to solve problems. This book was written to present methods for designing controls software using Programmable Logic Controllers (PLCs). It is my personal hope that by employing the knowledge in the book that you will be able to quickly write controls programs that work as expected (and avoid having to learn by costly mistakes.)
This book has been designed for students with some knowledge of technology, including limited electricity, who wish to learn the discipline of practical control system design on commonly used hardware. To this end the book will use the Allen Bradley ControlLogix processors to allow depth. Although the chapters will focus on specific hardware, the techniques are portable to other PLCs. Whenever possible the IEC 61131 programming standards will be used to help in the use of other PLCs.
In some cases the material will build upon the content found in a linear controls course. But, a heavy emphasis is placed on discrete control systems. Figure 1 Control Dichotomy crudely shows some of the basic categories of control system problems.
e.g. A car can be driving around a track and can pass same the same spot at a constant velocity. But, the longer the car runs, the mass decreases, and it travels faster, but requires less gas, etc. Basically, the math gets tougher, and the problem becomes non-linear.
The difference between these control systems can be emphasized by considering a simple elevator. An elevator is a car that travels between floors, stopping at precise heights. There are certain logical constraints used for safety and convenience. The points below emphasize different types of control problems in the elevator.
Logical and sequential control is preferred for system design. These systems are more stable, and often lower cost. Most continuous systems can be controlled logically. But, some times we will encounter a system that must be controlled continuously. When this occurs the control system design becomes more demanding. When improperly controlled, continuous systems may be unstable and become dangerous.
When a system is well behaved we say it is self regulating. These systems don't need to be closely monitored, and we use open loop control. An open loop controller will set a desired position for a system, but no sensors are used to verify the position. When a system must be constantly monitored and the control output adjusted we say it is closed loop. A cruise control in a car is an excellent example. This will monitor the actual speed of a car, and adjust the speed to meet a set target speed.
Many control technologies are available for control. Early control systems relied upon mechanisms and electronics to build controlled. Most modern controllers use a computer to achieve control. The most flexible of these controllers is the PLC (Programmable Logic Controller).
Control engineering has evolved over time. In the past humans were the main method for controlling a system. More recently electricity has been used for control and early electrical control was based on relays. These relays allow power to be switched on and off without a mechanical switch. It is common to use relays to make simple logical control decisions. The development of low cost computer has brought the most recent revolution, the Programmable Logic Controller (PLC). The advent of the PLC began in the 1970s, and has become the most common choice for manufacturing controls.
Ladder logic is the main programming method used for PLCs. As mentioned before, ladder logic has been developed to mimic relay logic. The decision to use the relay logic diagrams was a strategic one. By selecting ladder logic as the main programming method, the amount of retraining needed for engineers and tradespeople was greatly reduced.
Modern control systems still include relays, but these are rarely used for logic. A relay is a simple device that uses a magnetic field to control a switch, as pictured in Figure 2 Simple Relay Layouts and Schematics. When a voltage is applied to the input coil, the resulting current creates a magnetic field. The magnetic field pulls a metal switch (or reed) towards it and the contacts touch, closing the switch. The contact that closes when the coil is energized is called normally open. The normally closed contacts touch when the input coil is not energized. Relays are normally drawn in schematic form using a circle to represent the input coil. The output contacts are shown with two parallel lines. Normally open contacts are shown as two lines, and will be open (non-conducting) when the input is not energized. Normally closed contacts are shown with two lines with a diagonal line through them. When the input coil is not energized the normally closed contacts will be closed (conducting).
Relays are used to let one power source close a switch for another (often high current) power source, while keeping them isolated. An example of a relay in a simple control application is shown in Figure 3 A Simple Relay Controller. In this system the first relay on the left is used as normally closed, and will allow current to flow until a voltage is applied to the input A. The second relay is normally open and will not allow current to flow until a voltage is applied to the input B. If current is flowing through the first two relays then current will flow through the coil in the third relay, and close the switch for output C. This circuit would normally be drawn in the ladder logic form. This can be read logically as C will be on if A is off and B is on.
The example in Figure 3 A Simple Relay Controller does not show the entire control system, but only the logic. When we consider a PLC there are inputs, outputs, and the logic. Figure 4 A PLC Illustrated With Relays shows a more complete representation of the PLC. Here there are two inputs from push buttons. We can imagine the inputs as activating 24V DC relay coils in the PLC. This in turn drives an output relay that switches 115V AC, that will turn on a light. Note, in actual PLCs inputs are never relays, but outputs are often relays. The ladder logic in the PLC is actually a computer program that the user can enter and change. Notice that both of the input push buttons are normally open, but the ladder logic inside the PLC has one normally open contact, and one normally closed contact. Do not think that the ladder logic in the PLC needs to match the inputs or outputs. Many beginners will get caught trying to make the ladder logic match the input types.
Many relays also have multiple outputs (throws) and this allows an output relay to also be an input simultaneously. The circuit shown in Figure 5 A Seal-in Circuit is an example of this, it is called a seal in circuit. In this circuit the current can flow through either branch of the circuit, through the contacts labelled A or B. The input B will only be on when the output B is on. If B is off, and A is energized, then B will turn on. If B turns on then the input B will turn on, and keep output B on even if input A goes off. After B is turned on the output B will not turn off.
The first PLCs were programmed with a technique that was based on relay logic wiring schematics. This eliminated the need to teach the electricians, technicians and engineers how to program a computer - but, this method has stuck and it is the most common technique for programming PLCs today. An example of ladder logic can be seen in Figure 6 A Simple Ladder Logic Diagram. To interpret this diagram imagine that the power is on the vertical line on the left hand side, we call this the hot rail. On the right hand side is the neutral rail. In the figure there are two rungs, and on each rung there are combinations of inputs (two vertical lines) and outputs (circles). If the inputs are opened or closed in the right combination the power can flow from the hot rail, through the inputs, to power the outputs, and finally to the neutral rail. An input can come from a sensor, switch, or any other type of sensor. An output will be some device outside the PLC that is switched on or off, such as lights or motors. In the top rung the contacts are normally open and normally closed. Which means if input A is on and input B is off, then power will flow through the output and activate it. Any other combination of input values will result in the output X being off.
The second rung of Figure 6 A Simple Ladder Logic Diagram is more complex, there are actually multiple combinations of inputs that will result in the output Y turning on. On the left most part of the rung, power could flow through the top if C is off and D is on. Power could also (and simultaneously) flow through the bottom if both E and F are true. This would get power half way across the rung, and then if G or H is true the power will be delivered to output Y. In later chapters we will examine how to interpret and construct these diagrams.
There are other methods for programming PLCs. One of the earliest techniques involved mnemonic instructions. These instructions can be derived directly from the ladder logic diagrams and entered into the PLC through a simple programming terminal. An example of mnemonics is shown in Figure 7 An Example of a Mnemonic Program and Equivalent Ladder Logic. In this example the instructions are read one line at a time from top to bottom. The first line 00000 has the instruction LDN (input load and not) for input A. This will examine the input to the PLC and if it is off it will remember a 1 (or true), if it is on it will remember a 0 (or false). The next line uses an LD (input load) statement to look at the input. If the input is off it remembers a 0, if the input is on it remembers a 1 (note: this is the reverse of the LDN). The AND statement recalls the last two numbers remembered and if the are both true the result is a 1, otherwise the result is a 0. This result now replaces the two numbers that were recalled, and there is only one number remembered. The process is repeated for lines 00003 and 00004, but when these are done there are now three numbers remembered. The oldest number is from the AND, the newer numbers are from the two LD instructions. The AND in line 00005 combines the results from the last LD instructions and now there are two numbers remembered. The OR instruction takes the two numbers now remaining and if either one is a 1 the result is a 1, otherwise the result is a 0. This result replaces the two numbers, and there is now a single number there. The last instruction is the ST (store output) that will look at the last value stored and if it is 1, the output will be turned on, if it is 0 the output will be turned off.
The ladder logic program in Figure 7 An Example of a Mnemonic Program and Equivalent Ladder Logic, is equivalent to the mnemonic program. Even if you have programmed a PLC with ladder logic, it will be converted to mnemonic form before being used by the PLC. In the past mnemonic programming was the most common, but now it is uncommon for users to even see mnemonic programs.
Sequential Function Charts (SFCs) have been developed to accommodate the programming of more advanced systems. These are similar to flowcharts, but much more powerful. The example seen in Figure 8 An Example of a Sequential Function Chart is doing two different things. To read the chart, start at the top where is says start. Below this there is the double horizontal line that says follow both paths. As a result the PLC will start to follow the branch on the left and right hand sides separately and simultaneously. On the left there are two functions the first one is the power up function. This function will run until it decides it is done, and the power down function will come after. On the right hand side is the flash function, this will run until it is done. These functions look unexplained, but each function, such as power up will be a small ladder logic program. This method is much different from flowcharts because it does not have to follow a single path through the flowchart.
Structured Text programming has been developed as a more modern programming language. It is quite similar to languages such as BASIC. A simple example is shown in Figure 9 An Example of a Structured Text Program. This example uses a PLC memory location i. This memory location is for an integer, as will be explained later in the book. The first line of the program sets the value to 0. The next line begins a loop, and will be where the loop returns to. The next line recalls the value in location i, adds 1 to it and returns it to the same location. The next line checks to see if the loop should quit. If i is greater than or equal to 10, then the loop will quit, otherwise the computer will go back up to the REPEAT statement continue from there. Each time the program goes through this loop i will increase by 1 until the value reaches 10.
When a process is controlled by a PLC it uses inputs from sensors to make decisions and update outputs to drive actuators, as shown in Figure 10 The Separation of Controller and Process. The process is a real process that will change over time. Actuators will drive the system to new states (or modes of operation). This means that the controller is limited by the sensors available, if an input is not available, the controller will have no way to detect a condition.
The control loop is a continuous cycle of the PLC reading inputs, solving the ladder logic, and then changing the outputs. Like any computer this does not happen instantly. Figure 11 The Scan Cycle of a PLC shows the basic operation cycle of a PLC. When power is turned on initially the PLC does a quick sanity check to ensure that the hardware is working properly. If there is a problem the PLC will halt and indicate there is an error. For example, if the PLC power is dropping and about to go off this will result in one type of fault. If the PLC passes the sanity check it will then scan (read) all the inputs. After the inputs values are stored in memory the ladder logic will be scanned (solved) using the stored values - not the current values. This is done to prevent logic problems when inputs change during the ladder logic scan. When the ladder logic scan is complete the outputs will be scanned (the output values will be changed). After this the system goes back to do a sanity check, and the loop continues indefinitely. Unlike normal computers, the entire program will be run every scan. Typical times for each of the stages is in the order of milliseconds.
PLC inputs are easily represented in ladder logic. In Figure 12 Ladder Logic Inputs there are three types of inputs shown. The first two are normally open and normally closed inputs, discussed previously. The IIT (Immediate InpuT) function allows inputs to be read after the input scan, while the ladder logic is being scanned. This allows ladder logic to examine input values more often than once every cycle. (Note: This instruction is not available on the ControlLogix processors, but is still available on older models.)
In ladder logic there are multiple types of outputs, but these are not consistently available on all PLCs. Some of the outputs will be externally connected to devices outside the PLC, but it is also possible to use internal memory locations in the PLC. Six types of outputs are shown in Figure 13 Ladder Logic Outputs. The first is a normal output, when energized the output will turn on, and energize an output. The circle with a diagonal line through is a normally on output. When energized the output will turn off. This type of output is not available on all PLC types. When initially energized the OSR (One Shot Relay) instruction will turn on for one scan, but then be off for all scans after, until it is turned off. The L (latch) and U (unlatch) instructions can be used to lock outputs on. When an L output is energized the output will turn on indefinitely, even when the output coil is deenergized. The output can only be turned off using a U output. The last instruction is the IOT (Immediate OutpuT) that will allow outputs to be updated without having to wait for the ladder logic scan to be completed.
5. A PLC could replace a few relays. In this case the relays might be easier to install and less expensive. To control a more complex system the controller might need timing, counting and other mathematical calculations. In this case a PLC would be a better choice.
The configuration of the PLC refers to the packaging of the components. Typical configurations are listed below from largest to smallest as shown in Figure 14 Typical Configurations for PLC.
Rack - A rack is often large (up to 18" by 30" by 10") and can hold multiple cards. When necessary, multiple racks can be connected together. These tend to be the highest cost, but also the most flexible and easy to maintain.
Inputs to, and outputs from, a PLC are necessary to monitor and control a process. Both inputs and outputs can be categorized into two basic types: logical or continuous. Consider the example of a light bulb. If it can only be turned on or off, it is logical control. If the light can be dimmed to different levels, it is continuous. Continuous values seem more intuitive, but logical values are preferred because they allow more certainty, and simplify control. As a result most controls applications (and PLCs) use logical inputs and outputs for most applications. Hence, we will discuss logical I/O and leave continuous I/O for later.
Outputs from PLCs are often relays, but they can also be solid state electronics such as transistors for DC outputs or Triacs for AC outputs. Continuous outputs require special output cards with digital to analog converters.
Inputs for a PLC come in a few basic varieties, the simplest are AC and DC inputs. Sourcing and sinking inputs are also popular. This output method dictates that a device does not supply any power. Instead, the device only switches current on or off, like a simple switch.
In smaller PLCs the inputs are normally built in and are specified when purchasing the PLC. For larger PLCs the inputs are purchased as modules, or cards, with 8 or 16 inputs of the same type on each card. For discussion purposes we will discuss all inputs as if they have been purchased as cards. The list below shows typical ranges for input voltages, and is roughly in order of popularity.
PLC input cards rarely supply power, this means that an external power supply is needed to supply power for the inputs and sensors. The example in Figure 15 An AC Input Card and Ladder Logic shows how to connect an AC input card.
In the example there are two inputs, one is a normally open push button, and the second is a temperature switch, or thermal relay. (NOTE: These symbols are standard and will be discussed later in this chapter.) Both of the switches are powered by the positive/hot output of the 24Vac power supply - this is like the positive terminal on a DC supply. Power is supplied to the left side of both of the switches. When the switches are open there is no voltage passed to the input card. If either of the switches are closed power will be supplied to the input card. In this case inputs 1 and 3 are used - notice that the inputs start at 0. The input card compares these voltages to the common. If the input voltage is within a given tolerance range the inputs will switch on. Ladder logic is shown in the figure for the inputs. Here it uses Allen Bradley notation for ControlLogix. At the top is the tag (variable name) for the rack. The input card ('I') is in slot 3, so the address for the card is bob:3.I.Data.x, where 'x' is the input bit number. These addresses can also be given alias tags to make the ladder logic less confusing.
Many beginners become confused about where connections are needed in the circuit above. The key word to remember is circuit, which means that there is a full loop that the voltage must be able to follow. In Figure 15 An AC Input Card and Ladder Logic we can start following the circuit (loop) at the power supply. The path goes through the switches, through the input card, and back to the power supply where it flows back through to the start. In a full PLC implementation there will be many circuits that must each be complete.
A second important concept is the common. Here the neutral on the power supply is the common, or reference voltage. In effect we have chosen this to be our 0V reference, and all other voltages are measured relative to it. If we had a second power supply, we would also need to connect the neutral so that both neutrals would be connected to the same common. Often common and ground will be confused. The common is a reference, or datum voltage that is used for 0V, but the ground is used to prevent shocks and damage to equipment. The ground is connected under a building to a metal pipe or grid in the ground. This is connected to the electrical system of a building, to the power outlets, where the metal cases of electrical equipment are connected. When power flows through the ground it is bad. Unfortunately many engineers, and manufacturers mix up ground and common. It is very common to find a power supply with the ground and common mislabeled.
One final concept that tends to trap beginners is that each input card is isolated. This means that if you have connected a common to only one card, then the other cards are not connected. When this happens the other cards will not work properly. You must connect a common for each of the output cards.
As with input modules, output modules rarely supply any power, but instead act as switches. External power supplies are connected to the output card and the card will switch the power on or off for each output. Typical output voltages are listed below, and roughly ordered by popularity.
These cards typically have 8 to 16 outputs of the same type and can be purchased with different current ratings. A common choice when purchasing output cards is relays, transistors or triacs. Relays are the most flexible output devices. They are capable of switching both AC and DC outputs. But, they are slower (about 10ms switching is typical), they are bulkier, they cost more, and they will wear out after millions of cycles. Relay outputs are often called dry contacts. Transistors are limited to DC outputs, and Triacs are limited to AC outputs. Transistor and triac outputs are called switched outputs.
Dry contacts - a separate relay is dedicated to each output. This allows mixed voltages (AC or DC and voltage levels up to the maximum), as well as isolated outputs to protect other outputs and the PLC. Response times are often greater than 10ms. This method is the least sensitive to voltage variations and spikes.
Switched outputs - a voltage is supplied to the PLC card, and the card switches it to different outputs using solid state circuitry (transistors, triacs, etc.) Triacs are well suited to AC devices requiring less than 1A. Transistor outputs use NPN or PNP transistors up to 1A typically. Their response time is well under 1ms.
Caution is required when building a system with both AC and DC outputs. If AC is accidentally connected to a DC transistor output it will only be on for the positive half of the cycle, and appear to be working with a diminished voltage. If DC is connected to an AC triac output it will turn on and appear to work, but you will not be able to turn it off without turning off the entire PLC.
A major issue with outputs is mixed power sources. It is good practice to isolate all power supplies and keep their commons separate, but this is not always feasible. Some output modules, such as relays, allow each output to have its own common. Other output cards require that multiple, or all, outputs on each card share the same common. Each output card will be isolated from the rest, so each common will have to be connected. It is common for beginners to only connect the common to one card, and forget the other cards - then only one card seems to work!
The output card shown in Figure 18 An Example of a 24Vdc Output Card (Sinking) is an example of a 24Vdc output card that has a shared common. This type of output card would typically use transistors for the outputs.
In this example the outputs are connected to a low current light bulb (lamp) and a relay coil. Consider the circuit through the lamp, starting at the 24Vdc supply. When the output 07 is on, current can flow in 07 to the COM, thus completing the circuit, and allowing the light to turn on. If the output is off the current cannot flow, and the light will not turn on. The output 03 for the relay is connected in a similar way. When the output 03 is on, current will flow through the relay coil to close the contacts and supply 120Vac to the motor. Ladder logic for the outputs is shown in the bottom right of the figure. The notation is for an Allen Bradley ControlLogix. The output card ('O') is in a rack labelled 'sue' in slot 2. As indicated for the input card, it is good practice to define and use an alias tag for an output (e.g. Motor) instead of using the full description (e.g. sue:2.O.Data.3). This card could have many different voltages applied from different sources, but all the power supplies would need a single shared common.
The circuits in Figure 19 An Example of a 24Vdc Output Card With a Voltage Input (Sourcing) had the sequence of power supply, then device, then PLC card, then power supply. This requires that the output card have a common. Some output schemes reverse the device and PLC card, thereby replacing the common with a voltage input. The example in Figure 18 An Example of a 24Vdc Output Card (Sinking) is repeated in Figure 19 An Example of a 24Vdc Output Card With a Voltage Input (Sourcing) for a voltage supply card.
In this example the positive terminal of the 24Vdc supply is connected to the output card directly. When an output is on power will be supplied to that output. For example, if output 07 is on then the supply voltage will be output to the lamp. Current will flow through the lamp and back to the common on the power supply. The operation is very similar for the relay switching the motor. Notice that the ladder logic (shown in the bottom right of the figure) is identical to that in Figure 18 An Example of a 24Vdc Output Card (Sinking). With this type of output card only one power supply can be used.
We can also use relay outputs to switch the outputs. The example shown in Figure 18 An Example of a 24Vdc Output Card (Sinking) and Figure 19 An Example of a 24Vdc Output Card With a Voltage Input (Sourcing) is repeated yet again in Figure 20 An Example of a Relay Output Card for relay output.
In this example the 24Vdc supply is connected directly to both relays (note that this requires 2 connections now, whereas the previous example only required one.) When an output is activated the output switches on and power is delivered to the output devices. This layout is more similar to Figure 19 An Example of a 24Vdc Output Card With a Voltage Input (Sourcing) with the outputs supplying voltage, but the relays could also be used to connect outputs to grounds, as in Figure 18 An Example of a 24Vdc Output Card (Sinking). When using relay outputs it is possible to have each output isolated from the next. A relay output card could have AC and DC outputs beside each other.
Arc Suppression - when any relay is opened or closed an arc will jump. This becomes a major problem with large relays. On relays switching AC this problem can be overcome by opening the relay when the voltage goes to zero (while crossing between negative and positive). When switching DC loads this problem can be minimized by blowing pressurized gas across during opening to suppress the arc formation.
AC coils - If a normal coil is driven by AC power the contacts will vibrate open and closed at the frequency of the AC power. This problem is overcome by relay manufacturers by adding a shading pole to the internal construction of the relay.
The most important consideration when selecting relays, or relay outputs on a PLC, is the rated current and voltage. If the rated voltage is exceeded, the contacts will wear out prematurely, or if the voltage is too high fire is possible. The rated current is the maximum current that should be used. When this is exceeded the device will become too hot, and it will fail sooner. The rated values are typically given for both AC and DC, although DC ratings are lower than AC. If the actual loads used are below the rated values the relays should work well indefinitely. If the values are exceeded a small amount the life of the relay will be shortened accordingly. Exceeding the values significantly may lead to immediate failure and permanent damage. Please note that relays may also include minimum ratings that should also be observed to ensure proper operation and long life.
(Try the following case without looking at the solution in Figure 21 Case Study for Press Wiring.) An electrical layout is needed for a hydraulic press. The press uses a 24Vdc double actuated solenoid valve to advance and retract the press. This device has a single common and two input wires. Putting 24Vdc on one wire will cause the press to advance, putting 24Vdc on the second wire will cause it to retract. The press is driven by a large hydraulic pump that requires 220Vac rated at 20A, this should be running as long as the press is on. The press is outfitted with three push buttons, one is a NC stop button, the other is a NO manual retract button, and the third is a NO start automatic cycle button. There are limit switches at the top and bottom of the press travels that must also be connected.
The input and output cards were both selected to be 24Vdc so that they may share a single 24Vdc power supply. In this case the solenoid valve was wired directly to the output card, while the hydraulic pump was connected indirectly using a relay (only the coil is shown for simplicity). This decision was primarily made because the hydraulic pump requires more current than any PLC can handle, but a relay would be relatively easy to purchase and install for that load. All of the input switches are connected to the same supply and to the inputs.
When a controls cabinet is designed and constructed ladder diagrams are used to document the wiring. A basic wiring diagram is shown in Figure 22 A Ladder Wiring Diagram. In this example the system would be supplied with AC power (L1 is 120Vac or 220Vac) between the left and right (neutral or 0V) rails. The lines of these diagrams are numbered, and these numbers are typically used to number wires when building the electrical system. The switch before line 010 is a master disconnect for the power to the entire system. A fuse is used after the disconnect to limit the maximum current drawn by the system. Line 020 of the diagram is used to control power to the outputs of the system. The stop button is normally closed, while the start button is normally open. The branch, and output of the rung are CR1, which is a master control relay. The PLC receives power on line 30 of the diagram.
The inputs to the PLC are all AC, and are shown on lines 050 to 090. Notice that Input I/0 is a set of contacts on the MCR CR1. The three other inputs are a normally open push button (line 060), a limit switch (070) and a normally closed push button (080). A DC power supply is shown on line 100, to supply 24Vdc to the outputs. This powers the relay outputs of the PLC to control a green indicator light (200), a red indicator light (210), a solenoid (220), and another relay (230). The relay on 230 switches a set of contacts (040) that turn on the drill station.
In the wiring diagram the choice of a normally close stop button and a normally open start button are intentional. Consider line 020 in the wiring diagram. If the stop button is pushed it will open the switch, and power will not be able to flow to the control relay and output power will shut off. If the stop button is damaged, say by a wire falling off, the power will also be lost and the system will shut down - safely. If the stop button used was normally open and this happened the system would continue to operate while the stop button was unable to shut down the power. Now consider the start button. If the button was damaged, say a wire was disconnected, it would be unable to start the system, thus leaving the system unstarted and safe. In summary, all buttons that stop a system should be normally closed, while all buttons that start a system should be normally open.
To standardize electrical schematics, the Joint International Committee (JIC) symbols were developed, these are shown in Figure 23 JIC Schematic Symbols, Figure 24 JIC Schematic Symbols and Figure 25 JIC Schematic Symbols.
11. For the circuit shown in the figure below, list the input and output addresses for the PLC. If switch A controls the light, switch B the motor, and C the solenoid, write a simple ladder logic program.
12. We have a PLC rack with a 24 VDC input card in slot 3, and a 120VAC output card in slot 2. The inputs are to be connected to 4 push buttons. The outputs are to drive a 120VAC light bulb, a 240VAC motor, and a 24VDC operated hydraulic valve. Draw the electrical connections for the inputs and outputs. Show all other power supplies and other equipment/components required.
13. You are planning a project that will be controlled by a PLC. Before ordering parts you decide to plan the basic wiring and select appropriate input and output cards. The devices that we will use for inputs are 2 limit switches, a push button and a thermal switch. The output will be for a 24Vdc solenoid valve, a 110Vac light bulb, and a 220Vac 50HP motor. Sketch the basic wiring below including PLC cards.
5. Draw an electrical ladder diagram for a PLC that has a PNP and an NPN sensor for inputs. The outputs are two small indicator lights. You should use proper symbols for all components. You must also include all safety devices including fuses, disconnects, MCRs, etc...
6. Draw an electrical wiring diagram for a PLC controlling a system with both NPN and PNP input sensors. The outputs include an indicator light and a relay to control a 20A motor load. Include ALL safety circuitry.
8. AC input conditioning circuits will rectify an AC input to a DC waveform with a ripple. This will be smoothed, and reduced to a reasonable voltage level to drive an optocoupler. An AC output circuit will switch an AC output with a triac, or a relay.
Sensors allow a PLC to detect the state of a process. Logical sensors can only detect a state that is either true or false. Examples of physical phenomena that are typically detected are listed below.
Recently, the cost of sensors has dropped and they have become commodity items, typically between $50 and $100. They are available in many forms from multiple vendors such as Allen Bradley, Omron, Hyde Park and Turck. In applications sensors are interchangeable between PLC vendors, but each sensor will have specific interface requirements.
When a sensor detects a logical change it must signal that change to the PLC. This is typically done by switching a voltage or current on or off. In some cases the output of the sensor is used to switch a load directly, completely eliminating the PLC. Typical outputs from sensors (and inputs to PLCs) are listed below in relative popularity.
The simplest example of sensor outputs are switches and relays. A simple example is shown in Figure 26 An Example of Switched Sensors.
In the figure a NO contact switch is connected to input 01. A sensor with a relay output is also shown. The sensor must be powered separately, therefore the V+ and V- terminals are connected to the power supply. The output of the sensor will become active when a phenomenon has been detected. This means the internal switch (probably a relay) will be closed allowing current to flow and the positive voltage will be applied to input 06.
Transistor-Transistor Logic (TTL) is based on two voltage levels, 0V for false and 5V for true. The voltages can actually be slightly larger than 0V, or lower than 5V and still be detected correctly. This method is very susceptible to electrical noise on the factory floor, and should only be used when necessary. TTL outputs are common on electronic devices and computers, and will be necessary sometimes. When connecting to other devices simple circuits can be used to improve the signal, such as the Schmitt trigger in Figure 27 A Schmitt Trigger.
If a sensor has a TTL output the PLC must use a TTL input card to read the values. If the TTL sensor is being used for other applications it should be noted that the maximum current output is normally about 20mA.
Sinking sensors allow current to flow into the sensor to the voltage common, while sourcing sensors allow current to flow out of the sensor from a positive source. For both of these methods the emphasis is on current flow, not voltage. By using current flow, instead of voltage, many of the electrical noise problems are reduced.
When discussing sourcing and sinking we are referring to the output of the sensor that is acting like a switch. In fact the output of the sensor is normally a transistor, that will act like a switch (with some voltage loss). A PNP transistor is used for the sourcing output, and an NPN transistor is used for the sinking input. When discussing these sensors the term sourcing is often interchanged with PNP, and sinking with NPN. A simplified example of a sinking output sensor is shown in Figure 28 A Simplified NPN/Sinking Sensor. The sensor will have some part that deals with detection, this is on the left. The sensor needs a voltage supply to operate, so a voltage supply is needed for the sensor. If the sensor has detected some phenomenon then it will trigger the active line. The active line is directly connected to an NPN transistor. (Note: for an NPN transistor the arrow always points away from the center.) If the voltage to the transistor on the active line is 0V, then the transistor will not allow current to flow into the sensor. If the voltage on the active line becomes larger (say 12V) then the transistor will switch on and allow current to flow into the sensor to the common.
Sourcing sensors are the complement to sinking sensors. The sourcing sensors use a PNP transistor, as shown in Figure 29 A Simplified Sourcing/PNP Sensor. (Note: PNP transistors are always drawn with the arrow pointing to the center.) When the sensor is inactive the active line stays at the V+ value, and the transistor stays switched off. When the sensor becomes active the active line will be made 0V, and the transistor will allow current to flow out of the sensor.
Most NPN/PNP sensors are capable of handling currents up to a few amps, and they can be used to switch loads directly. (Note: always check the documentation for rated voltages and currents.) An example using sourcing and sinking sensors to control lights is shown in Figure 30 Direct Control Using NPN/PNP Sensors. (Note: This example could be for a motion detector that turns on lights in dark hallways.)
In the sinking system in Figure 30 Direct Control Using NPN/PNP Sensors the light has V+ applied to one side. The other side is connected to the NPN output of the sensor. When the sensor turns on the current will be able to flow through the light, into the output to V- common. (Note: Yes, the current will be allowed to flow into the output for an NPN sensor.) In the sourcing arrangement the light will turn on when the output becomes active, allowing current to flow from the V+, thought the sensor, the light and to V- (the common).
At this point it is worth stating the obvious - The output of a sensor will be an input for a PLC. And, as we saw with the NPN sensor, this does not necessarily indicate where current is flowing. There are two viable approaches for connecting sensors to PLCs. The first is to always use PNP sensors and normal voltage input cards. The second option is to purchase input cards specifically designed for sourcing or sinking sensors. An example of a PLC card for sinking sensors is shown in Figure 31 A PLC Input Card for Sinking Sensors.
The dashed line in the figure represents the circuit, or current flow path when the sensor is active. This path enters the PLC input card first at a V+ terminal (Note: there is no common on this card) and flows through an optocoupler. This current will use light to turn on a phototransistor to tell the computer in the PLC the input current is flowing. The current then leaves the card at input 00 and passes through the sensor to V-. When the sensor is inactive the current will not flow, and the light in the optocoupler will be off. The optocoupler is used to help protect the PLC from electrical problems outside the PLC.
The input cards for PNP sensors are similar to the NPN cards, as shown in Figure 32 PLC Input Card for Sourcing Sensors.
The current flow loop for an active sensor is shown with a dashed line. Following the path of the current we see that it begins at the V+, passes through the sensor, in the input 00, through the optocoupler, out the common and to the V-.
Wiring is a major concern with PLC applications, so to reduce the total number of wires, two wire sensors have become popular. But, by integrating three wires worth of function into two, we now couple the power supply and sensing functions into one. Two wire sensors are shown in Figure 33 Two Wire Sensors.
A two wire sensor can be used as either a sourcing or sinking input. In both of these arrangements the sensor will require a small amount of current to power the sensor, but when active it will allow more current to flow. This requires input cards that will allow a small amount of current to flow (called the leakage current), but also be able to detect when the current has exceeded a given value.
When purchasing sensors and input cards there are some important considerations. Most modern sensors have both PNP and NPN outputs, although if the choice is not available, PNP is the more popular choice. PLC cards can be confusing to buy, as each vendor refers to the cards differently. To avoid problems, look to see if the card is specifically for sinking or sourcing sensors, or look for a V+ (sinking) or COM (sourcing). Some vendors also sell cards that will allow you to have NPN and PNP inputs mixed on the same card.
When drawing wiring diagrams the symbols in Figure 34 Sourcing and Sinking Schematic Symbols are used for sinking and sourcing proximity sensors. Notice that in the sinking sensor when the switch closes (moves up to the terminal) it contacts the common. Closing the switch in the sourcing sensor connects the output to the V+. On the physical sensor the wires are color coded as indicated in the diagram. The brown wire is positive, the blue wire is negative and the output is white for sinking and black for sourcing. The outside shape of the sensor may change for other devices, such as photo sensors which are often shown as round circles.
There are two basic ways to detect object presence; contact and proximity. Contact implies that there is mechanical contact and a resulting force between the sensor and the object. Proximity indicates that the object is near, but contact is not required. The following sections examine different types of sensors for detecting object presence. These sensors account for a majority of the sensors used in applications.
Contact switches are available as normally open and normally closed. Their housings are reinforced so that they can take repeated mechanical forces. These often have rollers and wear pads for the point of contact. Lightweight contact switches can be purchased for less than a dollar, but heavy duty contact switches will have much higher costs. Examples of applications include motion limit switches and part present detectors.
Reed switches are very similar to relays, except a permanent magnet is used instead of a wire coil. When the magnet is far away the switch is open, but when the magnet is brought near the switch is closed as shown in Figure 35 Reed Switch. These are very inexpensive an can be purchased for a few dollars. They are commonly used for safety screens and doors because they are harder to trick than other sensors.
Light sensors have been used for almost a century - originally photocells were used for applications such as reading audio tracks on motion pictures. But modern optical sensors are much more sophisticated.
Optical sensors require both a light source (emitter) and detector. Emitters will produce light beams in the visible and invisible spectrums using LEDs and laser diodes. Detectors are typically built with photodiodes or phototransistors. The emitter and detector are positioned so that an object will block or reflect a beam when present. A basic optical sensor is shown in Figure 36 A Basic Optical Sensor.
In the figure the light beam is generated on the left, focused through a lens. At the detector side the beam is focused on the detector with a second lens. If the beam is broken the detector will indicate an object is present. The oscillating light wave is used so that the sensor can filter out normal light in the room. The light from the emitter is turned on and off at a set frequency. When the detector receives the light it checks to make sure that it is at the same frequency. If light is being received at the right frequency then the beam is not broken. The frequency of oscillation is in the KHz range, and too fast to be noticed. A side effect of the frequency method is that the sensors can be used with lower power at longer distances.
An emitter can be set up to point directly at a detector, this is known as opposed mode. When the beam is broken the part will be detected. This sensor needs two separate components, as shown in Figure 37 Opposed Mode Optical Sensor. This arrangement works well with opaque and reflective objects with the emitter and detector separated by distances of up to hundreds of feet.
Having the emitter and detector separate increases maintenance problems, and alignment is required. A preferred solution is to house the emitter and detector in one unit. But, this requires that light be reflected back as shown in Figure 38 Retroreflective Optical Sensor. These sensors are well suited to larger objects up to a few feet away.
In the figure, the emitter sends out a beam of light. If the light is returned from the reflector most of the light beam is returned to the detector. When an object interrupts the beam between the emitter and the reflector the beam is no longer reflected back to the detector, and the sensor becomes active. A potential problem with this sensor is that reflective objects could return a good beam. This problem is overcome by polarizing the light at the emitter (with a filter), and then using a polarized filter at the detector. The reflector uses small cubic reflectors and when the light is reflected the polarity is rotated by 90 degrees. If the light is reflected off the object the light will not be rotated by 90 degrees. So the polarizing filters on the emitter and detector are rotated by 90 degrees, as shown in Figure 39 Polarized Light in Retroreflective Sensors. The reflector is very similar to reflectors used on bicycles.
For retroreflectors the reflectors are quite easy to align, but this method still requires two mounted components. A diffuse sensors is a single unit that does not use a reflector, but uses focused light as shown in Figure 40 Diffuse Optical Sensor.
Diffuse sensors use light focused over a given range, and a sensitivity adjustment is used to select a distance. These sensors are the easiest to set up, but they require well controlled conditions. For example if it is to pick up light and dark colored objects problems would result.
When using opposed mode sensors the emitter and detector must be aligned so that the emitter beam and detector window overlap, as shown in Figure 41 Beam Divergence and Alignment. Emitter beams normally have a cone shape with a small angle of divergence (a few degrees of less). Detectors also have a cone shaped volume of detection. Therefore when aligning opposed mode sensor care is required not just to point the emitter at the detector, but also the detector at the emitter. Another factor that must be considered with this and other sensors is that the light intensity decreases over distance, so the sensors will have a limit to separation distance.
If an object is smaller than the width of the light beam it will not be able to block the beam entirely when it is in front as shown in Figure 42 The Relationship Between Beam Width and Object Size. This will create difficulties in detection, or possibly stop detection altogether. Solutions to this problem are to use narrower beams, or wider objects. Fiber optic cables may be used with an opposed mode optical sensor to solve this problem, however the maximum effective distance is reduced to a couple feet.
Separated sensors can detect reflective parts using reflection as shown in Figure 43 Detecting Reflecting Parts. The emitter and detector are positioned so that when a reflective surface is in position the light is returned to the detector. When the surface is not present the light does not return.
Other types of optical sensors can also focus on a single point using beams that converge instead of diverge. The emitter beam is focused at a distance so that the light intensity is greatest at the focal distance. The detector can look at the point from another angle so that the two centerlines of the emitter and detector intersect at the point of interest. If an object is present before or after the focal point the detector will not see the reflected light. This technique can also be used to detect multiple points and ranges, as shown in Figure 45 Multiple Point Detection Using Optics where the net angle of refraction by the lens determines which detector is used. This type of approach, with many more detectors, is used for range sensing systems.
Some applications do not permit full sized photooptic sensors to be used. Fiber optics can be used to separate the emitters and detectors from the application. Some vendors also sell photosensors that have the phototransistors and LEDs separated from the electronics.
Light curtains are an array of beams, set up as shown in Figure 46 A Light Curtain. If any of the beams are broken it indicates that somebody has entered a workcell and the machine needs to be shut down. This is an inexpensive replacement for some mechanical cages and barriers.
The optical reflectivity of objects varies from material to material as shown in Figure 47 Table of Reflectivity Values for Different Materials [Banner Handbook of Photoelectric Sensing]. These values show the percentage of incident light on a surface that is reflected. These values can be used for relative comparisons of materials and estimating changes in sensitivity settings for sensors.
In the sensor the area of the plates and distance between them is fixed. But, the dielectric constant of the space around them will vary as different materials are brought near the sensor. An illustration of a capacitive sensor is shown in Figure 48 A Capacitive Sensor. an oscillating field is used to determine the capacitance of the plates. When this changes beyond a selected sensitivity the sensor output is activated.
These sensors work well for insulators (such as plastics) that tend to have high dielectric coefficients, thus increasing the capacitance. But, they also work well for metals because the conductive materials in the target appear as larger electrodes, thus increasing the capacitance as shown in Figure 49 Dielectrics and Metals Increase the Capacitance. In total the capacitance changes are normally in the order of pF.
The sensors are normally made with rings (not plates) in the configuration shown in Figure 50 Electrode Arrangement for Capacitive Sensors. In the figure the two inner metal rings are the capacitor electrodes, but a third outer ring is added to compensate for variations. Without the compensator ring the sensor would be very sensitive to dirt, oil and other contaminants that might stick to the sensor.
A table of dielectric properties is given in Figure 51 Dielectric Constants of Various Materials [Turck Proximity Sensors Guide]. This table can be used for estimating the relative size and sensitivity of sensors. Also, consider a case where a pipe would carry different fluids. If their dielectric constants are not very close, a second sensor may be desired for the second fluid.
The range and accuracy of these sensors are determined mainly by their size. Larger sensors can have diameters of a few centimeters. Smaller ones can be less than a centimeter across, and have smaller ranges, but more accuracy.
Inductive sensors use currents induced by magnetic fields to detect nearby metal objects. The inductive sensor uses a coil (an inductor) to generate a high frequency magnetic field as shown in Figure 52 Inductive Proximity Sensor. If there is a metal object near the changing magnetic field, current will flow in the object. This resulting current flow sets up a new magnetic field that opposes the original magnetic field. The net effect is that it changes the inductance of the coil in the inductive sensor. By measuring the inductance the sensor can determine when a metal have been brought nearby.
The sensors can detect objects a few centimeters away from the end. But, the direction to the object can be arbitrary as shown in Figure 53 Shielded and Unshielded Sensors. The magnetic field of the unshielded sensor covers a larger volume around the head of the coil. By adding a shield (a metal jacket around the sides of the coil) the magnetic field becomes smaller, but also more directed. Shields will often be available for inductive sensors to improve their directionality and accuracy.
An ultrasonic sensor emits a sound above the normal hearing threshold of 16KHz. The time that is required for the sound to travel to the target and reflect back is proportional to the distance to the target. The two common types of sensors are;
Hall effect switches are basically transistors that can be switched by magnetic fields. Their applications are very similar to reed switches, but because they are solid state they tend to be more rugged and resist vibration. Automated machines often use these to do initial calibration and detect end stops.
We can also build more complex sensors out of simpler sensors. The example in Figure 54 Flow Rate Detection With an Inductive Proximity Switch shows a metal float in a tapered channel. As the fluid flow rate increases the pressure forces the float upwards. The tapered shape of the float ensures an equilibrium position proportional to flowrate. An inductive proximity sensor can be positioned so that it will detect when the float has reached a certain height, and the system has reached a given flowrate.
4. a) Sketch the connections needed for the PLC inputs and outputs below. The outputs include a 24Vdc light and a 120Vac light. The inputs are from 2 NO push buttons, and also from an optical sensor that has both PNP and NPN outputs.
5. Select a sensor to pick up a transparent plastic bottle from a manufacturer. Copy or print the specifications, and then draw a wiring diagram that shows how it will be wired to an appropriate PLC input card.
9. Draw a ladder wiring diagram (as done in the lab) for a system that has two push-buttons and a sourcing/sinking proximity sensors for 10-60Vdc inputs and two 120Vac output lights. Don't forget to include hard-wired start and stop buttons with an MCR.
Solenoids are the most common actuator components. The basic principle of operation is there is a moving ferrous core (a piston) that will move inside wire coil as shown in Figure 55 A Solenoid. Normally the piston is held outside the coil by a spring. When a voltage is applied to the coil and current flows, the coil builds up a magnetic field that attracts the piston and pulls it into the center of the coil. The piston can be used to supply a linear force. Well known applications of these include pneumatic values and car door openers.
As mentioned before, inductive devices can create voltage spikes and may need snubbers, although most industrial applications have low enough voltage and current ratings they can be connected directly to the PLC outputs. Most industrial solenoids will be powered by 24Vdc and draw a few hundred mA.
The flow of fluids and air can be controlled with solenoid controlled valves. An example of a solenoid controlled valve is shown in Figure 56 A Solenoid Controlled 5 Ported, 4 Way 2 Position Valve. The solenoid is mounted on the side. When actuated it will drive the central spool left. The top of the valve body has two ports that will be connected to a device such as a hydraulic cylinder. The bottom of the valve body has a single pressure line in the center with two exhausts to the side. In the top drawing the power flows in through the center to the right hand cylinder port. The left hand cylinder port is allowed to exit through an exhaust port. In the bottom drawing the solenoid is in a new position and the pressure is now applied to the left hand port on the top, and the right hand port can exhaust. The symbols to the left of the figure show the schematic equivalent of the actual valve positions. Valves are also available that allow the valves to be blocked when unused.
Valve types are listed below. In the standard terminology, the 'n-way' designates the number of connections for inlets and outlets. In some cases there are redundant ports for exhausts. The normally open/closed designation indicates the valve condition when power is off. All of the valves listed are two position valve, but three position valves are also available.
2-way normally open - these have one inlet, and one outlet. When unenergized, the valve is open, allowing flow. When energized, the valve will close. These are used to stop flows. When system power is off, flow will be allowed.
3-way normally closed - these have inlet, outlet, and exhaust ports. When unenergized, the outlet port is connected to the exhaust port. When energized, the inlet is connected to the outlet port. These are used for single acting cylinders.
3-way normally open - these have inlet, outlet and exhaust ports. When unenergized, the inlet is connected to the outlet. Energizing the valve connects the outlet to the exhaust. These are used for single acting cylinders
3-way universal - these have three ports. One of the ports acts as an inlet or outlet, and is connected to one of the other two, when energized/unenergized. These can be used to divert flows, or select alternating sources.
Some of the ISO symbols for valves are shown in Figure 57 ISO Valve Symbols. When using the symbols in drawings the connections are shown for the unenergized state. The arrows show the flow paths in different positions. The small triangles indicate an exhaust port.
A cylinder uses pressurized fluid or air to create a linear force/motion as shown in Figure 58 A Cross Section of a Hydraulic Cylinder. In the figure a fluid is pumped into one side of the cylinder under pressure, causing that side of the cylinder to expand, and advancing the piston. The fluid on the other side of the piston must be allowed to escape freely - if the incompressible fluid was trapped the cylinder could not advance. The force the cylinder can exert is proportional to the cross sectional area of the cylinder.
Hydraulics use incompressible fluids to supply very large forces at slower speeds and limited ranges of motion. If the fluid flow rate is kept low enough, many of the effects predicted by Bernoulli's equation can be avoided. The system uses hydraulic fluid (normally an oil) pressurized by a pump and passed through hoses and valves to drive cylinders. At the heart of the system is a pump that will give pressures up to hundreds or thousands of psi. These are delivered to a cylinder that converts it to a linear force and displacement.
The hydraulic fluid is often a noncorrosive oil chosen so that it lubricates the components. This is normally stored in a reservoir as shown in Figure 60 A Hydraulic Fluid Reservoir. Fluid is drawn from the reservoir to a pump where it is pressurized. This is normally a geared pump so that it may deliver fluid at a high pressure at a constant flow rate. A flow regulator is normally placed at the high pressure outlet from the pump. If fluid is not flowing in other parts of the system this will allow fluid to recirculate back to the reservoir to reduce wear on the pump. The high pressure fluid is delivered to solenoid controlled vales that can switch fluid flow on or off. From the vales fluid will be delivered to the hydraulics at high pressure, or exhausted back to the reservoir.
Pneumatic systems are very common, and have much in common with hydraulic systems with a few key differences. The reservoir is eliminated as there is no need to collect and store the air between uses in the system. Also because air is a gas it is compressible and regulators are not needed to recirculate flow. But, the compressibility also means that the systems are not as stiff or strong. Pneumatic systems respond very quickly, and are commonly used for low force applications in many locations on the factory floor.
When designing pneumatic systems care must be taken to verify the operating location. In particular the elevation above sea level will result in a dramatically different air pressure. For example, at sea level the air pressure is about 14.7 psi, but at a height of 7,800 ft (Mexico City) the air pressure is 11.1 psi. Other operating environments, such as in submersibles, the air pressure might be higher than at sea level.
Some symbols for pneumatic systems are shown in Figure 61 Pneumatics Components. The flow control valve is used to restrict the flow, typically to slow motions. The shuttle valve allows flow in one direction, but blocks it in the other. The receiver tank allows pressurized air to be accumulated. The dryer and filter help remove dust and moisture from the air, prolonging the life of the valves and cylinders.
Motors are common actuators, but for logical control applications their properties are not that important. Typically logical control of motors consists of switching low current motors directly with a PLC, or for more powerful motors using a relay or motor starter. Motors will be discussed in greater detail in the chapter on continuous actuators.
1. A piston is to be designed to exert an actuation force of 120 lbs on its extension stroke. The inside diameter of the cylinder is 2.0" and the ram diameter is 0.375". What shop air pressure will be required to provide this actuation force? Use a safety factor of 1.3.
3. Develop an electrical ladder diagram and pneumatic diagram for a PLC controlled system. The system includes the components listed below. The system should include all required safety and wiring considerations.
2. A PLC based system has 3 proximity sensors, a start button, and an E-stop as inputs. The system controls a pneumatic system with a solenoid controlled valve. It also controls a robot with a TTL output. Develop a complete wiring diagram including all safety elements.
3. A system contains a pneumatic cylinder with two inductive proximity sensors that will detect when the cylinder is fully advanced or retracted. The cylinder is controlled by a solenoid controlled valve. Draw electrical and pneumatic schematics for a system.
4. Draw an electrical ladder wiring diagram for a PLC controlled system that contains 2 PNP sensors, a NO push button, a NC limit switch, a contactor controlled AC motor and an indicator light. Include all safety circuitry.
5. We are to connect a PLC to detect boxes moving down an assembly line and divert larger boxes. The line is 12 inches wide and slanted so the boxes fall to one side as they travel by. One sensor will be mounted on the lower side of the conveyor to detect when a box is present. A second sensor will be mounted on the upper side of the conveyor to determine when a larger box is present. If the box is present, an output to a pneumatic solenoid will be actuated to divert the box. Your job is to select a specific PLC, sensors, and solenoid valve. Details (the absolute minimum being model numbers) are expected with a ladder wiring diagram. (Note: take advantage of manufacturers web sites.)
7. Draw an electrical ladder wiring diagram for a PLC controlled system that has the following inputs; 2 PNP sensors, 2 NPN sensors, and a NC limit switch. The outputs include a 24Vdc solenoid valve and a very large 3 phase AC motor.
1. A = pi*r^2 = 3.14159in^2, P=FS*(F/A)=1.3(120/3.14159)=49.7psi. Note, if the cylinder were retracting we would need to subtract the rod area from the piston area. Note: this air pressure is much higher than normally found in a shop, so it would not be practical, and a redesign would be needed.
Boolean algebra was developed in the 1800's by James Boole, an Irish mathematician. It was found to be extremely useful for designing digital circuits, and it is still heavily used by electrical engineers and computer scientists. The techniques can model a logical system with a single equation. The equation can then be simplified and/or manipulated into new forms. The same techniques developed for circuit designers adapt very well to ladder logic programming.
Boolean equations consist of variables and operations and look very similar to normal algebraic equations. The three basic operators are AND, OR and NOT; more complex operators include exclusive or (EOR), not and (NAND), not or (NOR). Small truth tables for these functions are shown in Figure 62 Boolean Operations with Truth Tables and Gates. Each operator is shown in a simple equation with the variables A and B being used to calculate a value for X. Truth tables are a simple (but bulky) method for showing all of the possible combinations that will turn an output on or off.
In a Boolean equation the operators will be put in a more complex form as shown in Figure 63 A Boolean Equation. The variable for these equations can only have a value of 0 for false, or 1 for true. The solution of the equation follows rules similar to normal algebra. Parts of the equation inside parenthesis are to be solved first. Operations are to be done in the sequence NOT, AND, OR. In the example the NOT function for C is done first, but the NOT over the first set of parentheses must wait until a single value is available. When there is a choice the AND operations are done before the OR operations. For the given set of variable values the result of the calculation is false.
The equations can be manipulated using the basic axioms of Boolean shown in Figure 64 The Basic Axioms of Boolean Algebra. A few of the axioms (associative, distributive, commutative) behave like normal algebra, but the other axioms have subtle differences that must not be ignored.
An example of equation manipulation is shown in Figure 65 Simplification of a Boolean Equation. The distributive axiom is applied to get equation (1). The idempotent axiom is used to get equation (2). Equation (3) is obtained by using the distributive axiom to move C outside the parentheses, but the identity axiom is used to deal with the lone C. The identity axiom is then used to simplify the contents of the parentheses to get equation (4). Finally the Identity axiom is used to get the final, simplified equation. Notice that using Boolean algebra has shown that 3 of the variables are entirely unneeded.
Design ideas can be converted to Boolean equations directly, or with other techniques discussed later. The Boolean equation form can then be simplified or rearranges, and then converted into ladder logic, or a circuit.
If we can describe how a controller should work in words, we can often convert it directly to a Boolean equation, as shown in Figure 66 Boolean Algebra Based Design of Ladder Logic. In the example a process description is given first. In actual applications this is obtained by talking to the designer of the mechanical part of the system. In many cases the system does not exist yet, making this a challenging task. The next step is to determine how the controller should work. In this case it is written out in a sentence first, and then converted to a Boolean expression. The Boolean expression may then be converted to a desired form. The first equation contains an EOR, which is not available in ladder logic, so the next line converts this to an equivalent expression (2) using ANDs, ORs and NOTs. The ladder logic developed is for the second equation. In the conversion the terms that are ANDed are in series. The terms that are ORed are in parallel branches, and terms that are NOTed use normally closed contacts. The last equation (3) is fully expanded and ladder logic for it is shown in Figure 67 Alternate Ladder Logic. This illustrates the same logical control function can be achieved with different, yet equivalent, ladder logic.
Boolean algebra is often used in the design of digital circuits. Consider the example in Figure 68 Reverse Engineering of a Digital Circuit. In this case we are presented with a circuit that is built with inverters, nand, nor and, and gates. This figure can be converted into a boolean equation by starting at the left hand side and working right. Gates on the left hand side are solved first, so they are put inside parentheses to indicate priority. Inverters are represented by putting a NOT operator on a variable in the equation. This circuit can't be directly converted to ladder logic because there are no equivalents to NAND and NOR gates. After the circuit is converted to a Boolean equation it is simplified, and then converted back into a (much simpler) circuit diagram and ladder logic.
To summarize, we will obtain Boolean equations from a verbal description or existing circuit or ladder diagram. The equation can be manipulated using the axioms of Boolean algebra. after simplification the equation can be converted back into ladder logic or a circuit diagram. Ladder logic (and circuits) can behave the same even though they are in different forms. When simplifying Boolean equations that are to be implemented in ladder logic there are a few basic rules.
These principles are reinforced with another design that begins in Figure 69 A Boolean Equation and Derived Circuit and Ladder Logic. Assume that the Boolean equation that describes the controller is already known. This equation can be converted into both a circuit diagram and ladder logic. The circuit diagram contains about two dollars worth of integrated circuits. If the design was mass produced the final cost for the entire controller would be under $50. The prototype of the controller would cost thousands of dollars. If implemented in ladder logic the cost for each controller would be approximately $500. Therefore a large number of circuit based controllers need to be produced before the break even occurs. This number is normally in the range of hundreds of units. There are some particular advantages of a PLC over digital circuits for the factory and some other applications.
The initial equation is not the simplest. It is possible to simplify the equation to the form seen in Figure 69 A Boolean Equation and Derived Circuit and Ladder Logic. If you are a visual learner you may want to notice that some simplifications are obvious with ladder logic - consider the C on both branches of the ladder logic in Figure 70 The Simplified Form of the Example.
The equation can also be manipulated to other forms that are more routine but less efficient as shown in Figure 71 A Canonical Logic Form. The equation shown is in disjunctive normal form - in simpler words this is ANDed terms ORed together. This is also an example of a canonical form - in simpler terms this means a standard form. This form is more important for digital logic, but it can also make some PLC programming issues easier. For example, when an equation is simplified, it may not look like the original design intention, and therefore becomes harder to rework without starting from the beginning.
There are some common Boolean algebra techniques that are used when simplifying equations. Recognizing these forms are important to simplifying Boolean Algebra with ease. These are itemized, with proofs in Figure 72 Common Boolean Algebra Techniques.
In total there are 16 different possible types of 2-input logic gates. The simplest are AND and OR, the other gates we will refer to as complex to differentiate. The three popular complex gates that have been discussed before are NAND, NOR and EOR. All of these can be reduced to simpler forms with only ANDs and ORs that are suitable for ladder logic, as shown in Figure 73 Conversion of Complex Logic Functions.
Multiplexers allow multiple devices to be connected to a single device. These are very popular for telephone systems. A telephone switch is used to determine which telephone will be connected to a limited number of lines to other telephone switches. This allows telephone calls to be made to somebody far away without a dedicated wire to the other telephone. In older telephone switch boards, operators physically connected wires by plugging them in. In modern computerized telephone switches the same thing is done, but to digital voice signals.
In Figure 74 A Multiplexer a multiplexer is shown that will take one of four inputs bits D1, D2, D3 or D4 and make it the output X, depending upon the values of the address bits, A1 and A2.
Ladder logic form the multiplexer can be seen in Figure 75 A Multiplexer in Ladder Logic.
Problem: Develop Ladder Logic for a car door/seat belt safety system. When the car door is open, and the seatbelt is not done up, the ignition power must not be applied. If all is safe then the key will start the engine.
Problem: Design a motor controller that has a forward and a reverse button. The motor forward and reverse outputs will only be on when one of the buttons is pushed. When both buttons are pushed the motor will not work.
Consider the design of a burglar alarm for a house. When activated an alarm and lights will be activated to encourage the unwanted guest to leave. This alarm be activated if an unauthorized intruder is detected by window sensor and a motion detector. The window sensor is effectively a loop of wire that is a piece of thin metal foil that encircles the window. If the window is broken, the foil breaks breaking the conductor. This behaves like a normally closed switch. The motion sensor is designed so that when a person is detected the output will go on. As with any alarm an activate/deactivate switch is also needed. The basic operation of the alarm system, and the inputs and outputs of the controller are itemized in Figure 80 Controller Requirements List for Alarm.
The next step is to define the controller equation. In this case the controller has 3 different inputs, and a single output, so a truth table is a reasonable approach to formalizing the system. A Boolean equation can then be written using the truth table in Figure 81 Truth Table for the Alarm. Of the eight possible combinations of alarm inputs, only three lead to alarm conditions.
The Boolean equation in Figure 82 A Boolean Equation and Implementation for the Alarm is written by examining the truth table in Figure 81 Truth Table for the Alarm. There are three possible alarm conditions that can be represented by the conditions of all three inputs. For example take the last line in the truth table where when all three inputs are on the alarm should be one. This leads to the last term in the equation. The other two terms are developed the same way. After the equation has been written, it is simplified.
The equation and circuits shown in Figure can also be further simplified, as shown in Figure 83 The Simplest Circuit and Ladder Diagram.
b) For the actual estop which is NC, when all is ok the power to the input is on, when there is a problem the power to the input is off. In the ladder logic an input that is on (indicating all is ok) will allow the rung to turn on the motor, otherwise an input that is off (indicating a stop) will break the rung and cut the power.)
Karnaugh maps allow us to convert a truth table to a simplified Boolean expression without using Boolean Algebra. The truth table in Figure 85 Truth Table for a Burglar Alarm is an extension of the previous burglar alarm example, an alarm quiet input has been added.
Instead of converting this directly to a Boolean equation, it is put into a tabular form as shown in Figure 86 The Karnaugh Map. The rows and columns are chosen from the input variables. The decision of which variables to use for rows or columns can be arbitrary - the table will look different, but you will still get a similar solution. For both the rows and columns the variables are ordered to show the values of the bits using NOTs. The sequence is not binary, but it is organized so that only one of the bits changes at a time, so the sequence of bits is 00, 01, 11, 10 - this step is very important. Next the values from the truth table that are true are entered into the Karnaugh map. Zeros can also be entered, but are not necessary. In the example the three true values from the truth table have been entered in the table.
When bits have been entered into the Karnaugh map there should be some obvious patterns. These patterns typically have some sort of symmetry. In Figure 87 Recognition of the Boolean Equation from the Karnaugh Map there are two patterns that have been circled. In this case one of the patterns is because there are two bits beside each other. The second pattern is harder to see because the bits in the left and right hand side columns are beside each other. (Note: Even though the table has a left and right hand column, the sides and top/bottom wrap around.) Some of the bits are used more than once, this will lead to some redundancy in the final equation, but it will also give a simpler expression.
The patterns can then be converted into a Boolean equation. This is done by first observing that all of the patterns sit in the third row, therefore the expression will be ANDed with SQ. There are two patterns in the third row, one has M as the common term, the second has W as the common term. These can now be combined into the equation. Finally the equation is converted to ladder logic.
Karnaugh maps are an alternative method to simplifying equations with Boolean algebra. It is well suited to visual learners, and is an excellent way to verify Boolean algebra calculations. The example shown was for four variables, thus giving two variables for the rows and two variables for the columns. More variables can also be used. If there were five input variables there could be three variables used for the rows or columns with the pattern 000, 001, 011, 010, 110, 111, 101, 100. If there is more than one output, a Karnaugh map is needed for each output.
3. You are planning the basic layout for a control system with the criteria provided below. You need to plan the wiring for the input and output cards, and then write the ladder logic for the controller. You decide to use a Boolean logic design technique to design the ladder logic. AND, your design will be laid out on the design sheets found later in this book.
For simple programming the relay model of the PLC is sufficient. As more complex functions are used the more complex vonNeumann model of the PLC must be used. A vonNeumann computer processes one instruction at a time. Most computers operate this way, although they appear to be doing many things at once. Consider the computer components shown in Figure 89 Simplified Personal Computer Architecture.
Input is obtained from the keyboard and mouse, output is sent to the screen, and the disk and memory are used for both input and output for storage. (Note: the directions of these arrows are very important to engineers, always pay attention to indicate where information is flowing.) This figure can be redrawn as in Figure 90 An Input-Output Oriented Architecture to clarify the role of inputs and outputs.
In this figure the data enters the left side through the inputs. (Note: most engineering diagrams have inputs on the left and outputs on the right.) It travels through buffering circuits before it enters the CPU. The CPU outputs data through other circuits. Memory and disks are used for storage of data that is not destined for output. If we look at a personal computer as a controller, it is controlling the user by outputting stimuli on the screen, and inputting responses from the mouse and the keyboard.
It is also possible to implement a PLC using a normal Personal Computer, although this is not advisable. In the case of a PLC the inputs and outputs are designed to be more reliable and rugged for harsh production environments.
All PLCs have four basic stages of operations that are repeated many times per second. Initially when turned on the first time it will check it's own hardware and software for faults. If there are no problems it will copy all the input and copy their values into memory, this is called the input scan. Using only the memory copy of the inputs the ladder logic program will be solved once, this is called the logic scan. While solving the ladder logic the output values are only changed in temporary memory. When the ladder scan is done the outputs will updated using the temporary values in memory, this is called the output scan. The PLC now restarts the process by starting a self check for faults. This process typically repeats 10 to 100 times per second as is shown in Figure 91 PLC Scan Cycle.
The input and output scans often confuse the beginner, but they are important. The input scan takes a snapshot of the inputs, and solves the logic. This prevents potential problems that might occur if an input that is used in multiple places in the ladder logic program changed while half way through a ladder scan. Thus changing the behaviors of half of the ladder logic program. This problem could have severe effects on complex programs that are developed later in the book. One side effect of the input scan is that if a change in input is too short in duration, it might fall between input scans and be missed.
When the inputs to the PLC are scanned the physical input values are copied into memory. When the outputs to a PLC are scanned they are copied from memory to the physical outputs. When the ladder logic is scanned it uses the values in memory, not the actual input or output values. The primary reason for doing this is so that if a program uses an input value in multiple places, a change in the input value will not invalidate the logic. Also, if output bits were changed as each bit was changed, instead of all at once at the end of the scan the PLC would operate much slower.
Ladder logic programs are modelled after relay logic. In relay logic each element in the ladder will switch as quickly as possible. But in a program elements can only be examines one at a time in a fixed sequence. Consider the ladder logic in Figure 92 Ladder Logic Execution Sequence, the ladder logic will be interpreted left-to-right, top-to-bottom. In the figure the ladder logic scan begins at the top rung. At the end of the rung it interprets the top output first, then the output branched below it. On the second rung it solves branches, before moving along the ladder logic rung.
The logic scan sequence become important when solving ladder logic programs which use outputs as inputs, as we will see in Chapter 8. It also becomes important when considering output usage. Consider Figure 93 A Duplicated Output Error, the first line of ladder logic will examine input A and set output X to have the same value. The second line will examine input B and set the output X to have the opposite value. So the value of X was only equal to A until the second line of ladder logic was scanned. Recall that during the logic scan the outputs are only changed in memory, the actual outputs are only updated when the ladder logic scan is complete. Therefore the output scan would update the real outputs based upon the second line of ladder logic, and the first line of ladder logic would be ineffective.
These lights are normally used for debugging. Limited buttons will also be provided for PLC hardware. The most common will be a run/program switch that will be switched to program when maintenance is being conducted, and back to run when in production. This switch normally requires a key to keep unauthorized personnel from altering the PLC program or stopping execution. A PLC will almost never have an on-off switch or reset button on the front. This needs to be designed into the remainder of the system.
The status of the PLC can be detected by ladder logic also. It is common for programs to check to see if they are being executed for the first time, as shown in Figure 94 An program that checks for the first scan of the PLC. The 'first scan' or 'first pass' input will be true the very first time the ladder logic is scanned, but false on every other scan. In this case the address for 'first pass' in ControlLogix is 'S:FS'. With the logic in the example the first scan will seal on 'light', until 'clear' is turned on. So the light will turn on after the PLC has been turned on, but it will turn off and stay off after 'clear' is turned on. The 'first scan' bit is also referred to at the 'first pass' bit.
RAM (Random Access Memory) - this memory is fast, but it will lose its contents when power is lost, this is known as volatile memory. Every PLC uses this memory for the central CPU when running the PLC.
All PLCs use RAM for the CPU and ROM to store the basic operating system for the PLC. When the power is on the contents of the RAM will be kept, but the issue is what happens when power to the memory is lost. Originally PLC vendors used RAM with a battery so that the memory contents would not be lost if the power was lost. This method is still in use, but is losing favor. EPROMs have also been a popular choice for programming PLCs. The EPROM is programmed out of the PLC, and then placed in the PLC. When the PLC is turned on the ladder logic program on the EPROM is loaded into the PLC and run. This method can be very reliable, but the erasing and programming technique can be time consuming. EEPROM memories are a permanent part of the PLC, and programs can be stored in them like EPROM. Memory costs continue to drop, and newer types (such as flash memory) are becoming available, and these changes will continue to impact PLCs.
The dropping cost of personal computers is increasing their use in control, including the replacement of PLCs. Software is installed that allows the personal computer to solve ladder logic, read inputs from sensors and update outputs to actuators. These are important to mention here because they don't obey the previous timing model. For example, if the computer is running a game it may slow or halt the computer. This issue and others are currently being investigated and good solutions should be expected soon.
5. Some key differences include inputs, outputs, and uses. A PLC has been designed for the factory floor, so it does not have inputs such as keyboards and mice (although some newer types can). They also do not have outputs such as a screen or sound. Instead they have inputs and outputs for voltages and current. The PLC runs user designed programs for specialized tasks, whereas on a personal computer it is uncommon for a user to program their system.
6. This helps detect faulty hardware or software. If an error were to occur, and the PLC continued operating, the controller might behave in an unpredictable way and become dangerous to people and equipment. The self check helps detect these types of faults, and shut the system down safely.
More complex systems cannot be controlled with combinatorial logic alone. The main reason for this is that we cannot, or choose not to add sensors to detect all conditions. In these cases we can use events to estimate the condition of the system. Typical events used by a PLC include;
The common theme for all of these events is that they are based upon one of two questions "How many?" or "How long?". An example of an event based device is shown in Figure 95 An Event Driven Device. The input to the device is a push button. When the push button is pushed the input to the device turns on. If the push button is then released and the device turns off, it is a logical device. If when the push button is release the device stays on, is will be one type of event based device. To reiterate, the device is event based if it can respond to one or more things that have happened before. If the device responds only one way to the immediate set of inputs, it is logical.
A latch is like a sticky switch - when pushed it will turn on, but stick in place, it must be pulled to release it and turn it off. A latch in ladder logic uses one instruction to latch, and a second instruction to unlatch, as shown in Figure 96 A Ladder Logic Latch. The output with an L inside will turn the output D on when the input A becomes true. D will stay on even if A turns off. Output D will turn off if input B becomes true and the output with a U inside becomes true (Note: this will seem a little backwards at first). If an output has been latched on, it will keep its value, even if the power has been turned off.
The operation of the ladder logic in Figure 96 A Ladder Logic Latch is illustrated with a timing diagram in Figure 97 A Timing Diagram for the Ladder Logic in Figure 96. A timing diagram shows values of inputs and outputs over time. For example the value of input A starts low (false) and becomes high (true) for a short while, and then goes low again. Here when input A turns on both the outputs turn on. There is a slight delay between the change in inputs and the resulting changes in outputs, due to the program scan time. Here the dashed lines represent the output scan, sanity check and input scan (assuming they are very short.) The space between the dashed lines is the ladder logic scan. Consider that when A turns on initially it is not detected until the first dashed line. There is then a delay to the next dashed line while the ladder is scanned, and then the output at the next dashed line. When A eventually turns off, the normal output C turns off, but the latched output D stays on. Input B will unlatch the output D. Input B turns on twice, but the first time it is on is not long enough to be detected by an input scan, so it is ignored. The second time it is on it unlatches output D and output D turns off.
The timing diagram shown in Figure 97 A Timing Diagram for the Ladder Logic in Figure 96 has more details than are normal in a timing diagram as shown in Figure 98 A Typical Timing Diagram. The brief pulse would not normally be wanted, and would be designed out of a system either by extending the length of the pulse, or decreasing the scan time. An ideal system would run so fast that aliasing would not be possible.
A more elaborate example of latches is shown in Figure 99 A Latch Example. In this example the addresses are for an older Allen-Bradley Micrologix controller. The inputs begin with I/, followed by an input number. The outputs begin with O/, followed by an output number.
A normal output should only appear once in ladder logic, but latch and unlatch instructions may appear multiple times. In Figure 99 A Latch Example a normal output O/2 is repeated twice. When the program runs it will examine the fourth line and change the value of O/2 in memory (remember the output scan does not occur until the ladder scan is done.) The last line is then interpreted and it overwrites the value of O/2. Basically, only the last line will change O/2.
Latches are not used universally by all PLC vendors, others such as Siemens use flip-flops. These have a similar behavior to latches, but a different notation as illustrated in Figure 100 Flip-Flops for Latching Values. Here the flip-flop is an output block that is connected to two different logic rungs. The first rung shown has an input A connected to the S setting terminal. When A goes true the output value Q will go true. The second rung has an input B connected to the R resetting terminal. When B goes true the output value Q will be turned off. The output Q will always be the inverse of Q. Notice that the S and R values are equivalent to the L and U values from earlier examples.
There are four fundamental types of timers shown in Figure 101 The Four Basic Timer Types. An on-delay timer will wait for a set time after a line of ladder logic has been true before turning on, but it will turn off immediately. An off-delay timer will turn on immediately when a line of ladder logic is true, but it will delay before turning off. Consider the example of an old car. If you turn the key in the ignition and the car does not start immediately, that is an on-delay. If you turn the key to stop the engine but the engine doesn't stop for a few seconds, that is an off delay. An on-delay timer can be used to allow an oven to reach temperature before starting production. An off delay timer can keep cooling fans on for a set time after the oven has been turned off.
A retentive timer will sum all of the on or off time for a timer, even if the timer never finished. A nonretentive timer will start timing the delay from zero each time. Typical applications for retentive timers include tracking the time before maintenance is needed. A non retentive timer can be used for a start button to give a short delay before a conveyor begins moving.
An example of an Allen-Bradley TON timer is shown in Figure 102 An Allen-Bradley TON Timer. The rung has a single input A and a function block for the TON. (Note: This timer block will look different for different PLCs, but it will contain the same information.) The information inside the timer block describes the timing parameters. The first item is the timer 'example'. This is a location in the PLC memory that will store the timer information. The preset is the millisecond delay for the timer, in this case it is 4s (4000ms). The accumulator value gives the current value of the timer as 0. While the timer is running the accumulated value will increase until it reaches the preset value. Whenever the input A is true the EN output will be true. The DN output will be false until the accumulator has reached the preset value. The EN and DN outputs cannot be changed when programming, but these are important when debugging a ladder logic program. The second line of ladder logic uses the timer DN output to control another output B.
The timing diagram in Figure 102 An Allen-Bradley TON Timer illustrates the operation of the TON timer with a 4 second on-delay. A is the input to the timer, and whenever the timer input is true the EN enabled bit for the timer will also be true. If the accumulator value is equal to the preset value the DN bit will be set. Otherwise, the TT bit will be set and the accumulator value will begin increasing. The first time A is true, it is only true for 3 seconds before turning off, after this the value resets to zero. (Note: in a retentive time the value would remain at 3 seconds.) The second time A is true, it is on more than 4 seconds. After 4 seconds the TT bit turns off, and the DN bit turns on. But, when A is released the accumulator resets to zero, and the DN bit is turned off.
A value can be entered for the accumulator while programming. When the program is downloaded this value will be in the timer for the first scan. If the TON timer is not enabled the value will be set back to zero. Normally zero will be entered for the preset value.
The timer in Figure 103 An Allen Bradley Retentive On-Delay Timer is identical to that in Figure 102 An Allen-Bradley TON Timer, except that it is retentive. The most significant difference is that when the input A is turned off the accumulator value does not reset to zero. As a result the timer turns on much sooner, and the timer does not turn off after it turns on. A reset instruction will be shown later that will allow the accumulator to be reset to zero.
An off delay timer is shown in Figure 104 An Allen Bradley Off-Delay Timer. This timer has a time base of 0.01s, with a preset value of 3500, giving a total delay of 3.5s. As before the EN enable for the timer matches the input. When the input A is true the DN bit is on. Is is also on when the input A has turned off and the accumulator is counting. The DN bit only turns off when the input A has been off long enough so that the accumulator value reaches the preset. This type of timer is not retentive, so when the input A becomes true, the accumulator resets. Off-delay timers are normally off (DN is false) until activated the first time.
An example program is shown in Figure 105 A Timer Example. In total there are four timers used in this example, t_1, t_2, t_3, and t_4. The timer instructions are shown with the accumulator values omitted, assuming that they start with a value of zero. All four different types of counters have the input 'go'. Output 'done' will turn on when the TON counter t_1 is done. All four of the timers can be reset with input 'reset'.
A timing diagram for this example is shown in Figure 106 A Timing Diagram for Figure 105. As input go is turned on the TON and RTO timers begin to count and reach 4s and turn on. When reset becomes true it resets both timers and they start to count for another second before go is turned off. After the input is turned off the TOF and RTF both start to count, but neither reaches the 4s preset. The input go is turned on again and the TON and RTO both start counting. The RTO turns on one second sooner because it had 1s stored from the 7-8s time period. After go turns off again both the off delay timers count down, and reach the 4 second delay, and turn on. These patterns continue across the diagram.
Consider the short ladder logic program in Figure 107 A Timer Example for control of a heating oven. The system is started with a Start button that seals in the Auto mode. This can be stopped if the Stop button is pushed. (Remember: Stop buttons are normally closed.) When the Auto goes on initially the TON timer is used to sound the horn for the first 10 seconds to warn that the oven will start, and after that the horn stops and the heating coils start. When the oven is turned off the fan continues to blow for 300s or 5 minutes after.
A program is shown in Figure 108 Another Timer Example that will flash a light once every second. When the PLC starts, the second timer will be off and the t_on.DN bit will be off, therefore the normally closed input to the first timer will be on. t_off will start timing until it reaches 0.5s, when it is done the second timer will start timing, until it reaches 0.5s. At that point t_on.DN will become true, and the input to the first time will become false. t_off is then set back to zero, and then t_on is set back to zero. And, the process starts again from the beginning. In this example the first timer is used to drive the second timer. This type of arrangement is normally called cascading, and can use more that two timers.
There are two basic counter types: count-up and count-down. When the input to a count-up counter goes true the accumulator value will increase by 1 (no matter how long the input is true.) If the accumulator value reaches the preset value the counter DN bit will be set. A count-down counter will decrease the accumulator value until the preset value is reached.
An Allen Bradley count-up (CTU) instruction is shown in Figure 109 An Allen Bradley Counter. The instruction requires memory in the PLC to store values and status, in this case is example. The preset value is 4 and the value in the accumulator is 2. If the input A were to go from false to true the value in the accumulator would increase to 3. If A were to go off, then on again the accumulator value would increase to 4, and the DN bit would go on. The count can continue above the preset value. If input B becomes true the value in the counter accumulator will become zero.
Count-down counters are very similar to count-up counters. And, they can actually both be used on the same counter memory location. Consider the example in Figure 110 A Counter Example, the example input cnt_up drives the count-up instruction for counter example. Input cnt_down drives the count-down instruction for the same counter location. The preset value for a counter is stored in memory location example so both the count-up and count-down instruction must have the same preset. Input reset will reset the counter.
The timing diagram in Figure 110 A Counter Example illustrates the operation of the counter. If we assume that the value in the accumulator starts at 0, then the positive edges on the cnt_up input will cause it to count up to 3 where it turns the counter example done bit on. It is then reset by input reset and the accumulator value goes to zero. Input cnt_up then pulses again and causes the accumulator value to increase again, until it reaches a maximum of 5. Input cnt_down then causes the accumulator value to decrease down below 3, and the counter turns off again. Input cnt_up then causes it to increase, but input reset resets the accumulator back to zero again, and the pulses continue until 3 is reached near the end.
The program in Figure 111 A Counter Example is used to remove 5 out of every 10 parts from a conveyor with a pneumatic cylinder. When the part is detected both counters will increase their values by 1. When the sixth part arrives the first counter will then be done, thereby allowing the pneumatic cylinder to actuate for any part after the fifth. The second counter will continue until the eleventh part is detected and then both of the counters will be reset.
In an electrical control system a Master Control Relay (MCR) is used to shut down a section of an electrical system, as shown earlier in the electrical wiring chapter. This concept has been implemented in ladder logic also. A section of ladder logic can be put between two lines containing MCR's. When the first MCR coil is active, all of the intermediate ladder logic is executed up to the second line with an MCR coil. When the first MCR coil in inactive, the ladder logic is still examined, but all of the outputs are forced off.
Consider the example in Figure 112 MCR Instructions. If A is true, then the ladder logic after will be executed as normal. If A is false the following ladder logic will be examined, but all of the outputs will be forced off. The second MCR function appears on a line by itself and marks the end of the MCR block. After the second MCR the program execution returns to normal. While A is true, X will equal B, and Y can be turned on by C, and off by D. But, if A becomes false X will be forced off, and Y will be left in its last state. Using MCR blocks to remove sections of programs will not increase the speed of program execution significantly because the logic is still examined.
If the MCR block contained another function, such as a TON timer, turning off the MCR block would force the timer off. As a general rule normal outputs should be outside MCR blocks, unless they must be forced off when the MCR block is off.
Simple programs can use inputs to set outputs. More complex programs also use internal memory locations that are not inputs or outputs. These Boolean memory locations are sometimes referred to as 'internal relays' or 'control relays'. Knowledgeable programmers will often refer to these as 'bit memory'. In the newer Allen Bradley PLCs these can be defined as variables with the type 'BOOL'. The programmer is free to use these memory locations however they see fit.
An example of bit memory usage is shown in Figure 113 An example using bit memory (older notations are in parentheses). The first ladder logic rung will turn on the internal memory bit 'A_pushed' (e.g., B3:0/0) when input 'hand_A' is activated, and input 'clear' is off. (Notice that the Boolean memory is being used as both an input and output.) The second line of ladder logic similar. In this case when both inputs have been activated, the output 'press on' is active.
Problem: Develop a program that will latch on an output B 20 seconds after input A has been turned on. After A is pushed, there will be a 10 second delay until A can have any effect again. After A has been pushed 3 times, B will be turned off.
Problem: A motor will be controlled by two switches. The Go switch will start the motor and the Stop switch will stop it. If the Stop switch was used to stop the motor, the Go switch must be thrown twice to start the motor. When the motor is active a light should be turned on. The Stop switch will be wired as normally closed.
Problem: A conveyor is run by switching on or off a motor. We are positioning parts on the conveyor with an optical detector. When the optical sensor goes on, we want to wait 1.5 seconds, and then stop the conveyor. After a delay of 2 seconds the conveyor will start again. We need to use a start and stop button - a light should be on when the system is active.
Problem: For the conveyor in the last case we will add a sorting system. Gages have been attached that indicate good or bad. If the part is good, it continues on. If the part is bad, we do not want to delay for 2 seconds, but instead actuate a pneumatic cylinder.
2. While the stamping solenoid is energized, it must remain energized until a limit switch (LS2) is activated. This second limit switch indicates the end of a stroke. At this point the solenoid should be de-energized, thus retracting the cylinder.
5. A safety check should be included. If the cylinder solenoid has been on for more than 5 seconds, it suggests that the cylinder is jammed or the machine has a fault. If this is the case, the machine should be shut down and a maintenance light turned on.
14. Develop a program that will latch on an output (B), 20 seconds after input (A) has been turned on. The timer will continue to cycle up to 20 seconds, and reset itself, until A has been turned off. After the third time the timer has timed to 20 seconds, B will be unlatched.
15. A motor will be connected to a PLC and controlled by two switches. The GO switch will start the motor, and the STOP switch will stop it. If the motor is going, and the GO switch is thrown, this will also stop the motor. If the STOP switch was used to stop the motor, the GO switch must be thrown twice to start the motor. When the motor is running, a light should be turned on (a small lamp will be provided).
16. In dangerous processes it is common to use two palm buttons that require a operator to use both hands to start a process (this keeps hands out of presses, etc.). To develop this there are two inputs that must be turned on within 0.25s of each other before a machine cycle may begin.
20. A buffer can hold up to 10 parts. Parts enter the buffer on a conveyor controller by output conveyor. As parts arrive they trigger an input sensor enter. When a part is removed from the buffer they trigger the exit sensor. Write a program to stop the conveyor when the buffer is full, and restart it when there are fewer than 10 parts in the buffer. As normal the system should also include a start and stop button.
22. We are using a pneumatic cylinder in a process. The cylinder can become stuck, and we need to detect this. Proximity sensors are added to both endpoints of the cylinder's travel to indicate when it has reached the end of motion. If the cylinder takes more than 2 seconds to complete a motion this will indicate a problem. When this occurs the machine should be shut down and a light turned on. Develop ladder logic that will cycle the cylinder in and out repeatedly, and watch for failure.
2. Write a ladder logic program that will count the number of parts in a buffer. As parts arrive they activate input A. As parts leave they will activate input B. If the number of parts is less than 8 then a conveyor motor, output C, will be turned on.
5. We are developing a safety system (using a PLC-5) for a large industrial press. The press is activated by turning on the compressor power relay (R, connected to O:013/05). After R has been on for 30 seconds the press can be activated to move (P connected to O:013/06). The delay is needed for pressure to build up. After the press has been activated (with P) the system must be shut down (R and P off), and then the cycle may begin again. For safety, there is a sensor that detects when a worker is inside the press (S, connected to I:011/02), which must be off before the press can be activated. There is also a button that must be pushed 5 times (B, connected to I:011/01) before the press cycle can begin. If at any time the worker enters the press (and S becomes active) the press will be shut down (P and R turned off). Develop the ladder logic. State all assumptions, and show all work.
6. Write a program that only uses one timer. When an input A is turned on a light will be on for 10 seconds. After that it will be off for two seconds, and then again on for 5 seconds. After that the light will not turn on again until the input A is turned off.
7. A new printing station will add a logo to parts as they travel along an assembly line. When a part arrives a `part' sensor will detect it. After this the `clamp' output is turned on for 10 seconds to hold the part during the operation. For the first 2 seconds the part is being held a `spray' output will be turned on to apply the thermoset ink. For the last 8 seconds a `heat' output will be turned on to cure the ink. After this the part is released and allowed to continue along the line. Write the ladder logic for this process.
9. Use the timing diagram below to design ladder logic. The sequence should start when input X turns on. X may only be on momentarily, but the sequence should execute anyway. Note that output A is normally on.
Traditionally ladder logic programs have been written by thinking about the process and then beginning to write the program. This always leads to programs that require debugging. And, the final program is always the subject of some doubt. Structured design techniques, such as Boolean algebra, lead to programs that are predictable and reliable. The structured design techniques in this and the following chapters are provided to make ladder logic design routine and predictable for simple sequential systems.
Most control systems are sequential in nature. Sequential systems are often described with words such as mode and behavior. During normal operation these systems will have multiple steps or states of operation. In each operational state the system will behave differently. Typical states include start-up, shut-down, and normal operation. Consider a set of traffic lights - each light pattern constitutes a state. Lights may be green or yellow in one direction and red in the other. The lights change in a predictable sequence. Sometimes traffic lights are equipped with special features such as cross walk buttons that alter the behavior of the lights to give pedestrians time to cross busy roads.
Sequential systems are complex and difficult to design. In the previous chapter timing charts and process sequence bits were discussed as basic design techniques. But, more complex systems require more mature techniques, such as those shown in Figure 121 Sequential Design Techniques. For simpler controllers we can use limited design techniques such as process sequence bits and flow charts. More complex processes, such as traffic lights, will have many states of operation and controllers can be designed using state diagrams. If the control problem involves multiple states of operation, such as one controller for two independent traffic lights, then Petri net or SFC based designs are preferred.
Consider the example of a flag raising controller in Figure 122 A Process Sequence Bit Design Example and Figure 123 A Process Sequence Bit Design Example (continued). The problem begins with a written description of the process. This is then turned into a set of numbered steps. Each of the numbered steps is then converted to ladder logic.
The previous method uses latched bits, but the use of latches is sometimes discouraged. A more common method of implementation, without latches, is shown in Figure 124 Process Sequence Bits Without Latches.
Timing diagrams can be valuable when designing ladder logic for processes that are only dependant on time. The timing diagram is drawn with clear start and stop times. Ladder logic is constructed with timers that are used to turn outputs on and off at appropriate times. The basic method is;
Consider the handicap door opener design in Figure 125 Design With a Timing Diagram that begins with a verbal description. The verbal description is converted to a timing diagram, with t=0 being when the door open button is pushed. On the timing diagram the critical times are 2s, 10s, 14s. The ladder logic is constructed in a careful order. The first item is the latch to seal-in the open button, but shut off after the last door closes. auto is used to turn on the three timers for the critical times. The logic for opening the doors is then written to use the timers.
2. Use the timing diagram below to design ladder logic. The sequence should start when input X turns on. X may only be on momentarily, but the sequence should continue to execute until it ends at 26 seconds.
6. A PLC is to control an amusement park water ride. The ride will fill a tank of water and splash a tour group. 10 seconds later a water jet will be ejected at another point. Develop ladder logic for the process that follows the steps listed below.
7. Write a ladder logic program to extend and retract a cylinder after a start button is pushed. There are limit switches at the ends of travel. If the cylinder is extending if more than 5 seconds the machine should shut down and turn on a fault light. If it is retracting for more than 3 seconds it should also shut down and turn on the fault light. It can be reset with a reset button.
8. Design a program with sequence bits for a hydraulic press that will advance when two palm buttons are pushed. Top and bottom limit switches are used to reverse the advance and stop after a retract. At any time the hands removed from the palm button will stop an advance and retract the press. Include start and stop buttons to put the press in and out of an active mode.
11. We are developing a safety system (using a PLC-5) for a large industrial press. The press is activated by turning on the compressor power relay (R, connected to O:013/05). After R has been on for 30 seconds the press can be activated to move (P connected to O:013/06). The delay is needed for pressure to build up. After the press has been activated (with P for 1.0 seconds) the system must be shut down (R and P off), and then the cycle may begin again. For safety, there is a sensor that detects when a worker is inside the press (S, connected to I:011/02), which must be off before the press can be activated. There is also a button that must be pushed 5 times (B, connected to I:011/01) before the press cycle can begin. If at any time the worker enters the press (and S becomes active) the press will be shut down (P and R turned off). Develop the process sequence and sequence bits, and then ladder logic for the states. State all assumptions, and show all work.
A flowchart is ideal for a process that has sequential process steps. The steps will be executed in a simple order that may change as the result of some simple decisions. The symbols used for flowcharts are shown in Figure 126 Flowchart Symbols. These blocks are connected using arrows to indicate the sequence of the steps. The different blocks imply different types of program actions. Programs always need a start block, but PLC programs rarely stop so the stop block is rarely used. Other important blocks include operations and decisions. The other functions may be used but are not necessary for most PLC applications.
A flowchart is shown in Figure 127 A Flowchart for a Tank Filler for a control system for a large water tank. When a start button is pushed the tank will start to fill, and the flow out will be stopped. When full, or the stop button is pushed the outlet will open up, and the flow in will be stopped. In the flowchart the general flow of execution starts at the top. The first operation is to open the outlet valve and close the inlet valve. Next, a single decision block is used to wait for a button to be pushed. when the button is pushed the yes branch is followed and the inlet valve is opened, and the outlet valve is closed. Then the flow chart goes into a loop that uses two decision blocks to wait until the tank is full, or the stop button is pushed. If either case occurs the inlet valve is closed and the outlet valve is opened. The system then goes back to wait for the start button to be pushed again. When the controller is on the program should always be running, so only a start block is needed. Many beginners will neglect to put in checks for stop buttons.
Once a flowchart has been created ladder logic can be written. There are two basic techniques that can be used, the first presented uses blocks of ladder logic code. The second uses normal ladder logic.
The first step is to name each block in the flowchart, as shown in Figure 128 Labeling Blocks in the Flowchart. Each of the numbered steps will then be converted to ladder logic
Each block in the flowchart will be converted to a block of ladder logic. To do this we will use the MCR (Master Control Relay) instruction (it will be discussed in more detail later.) The instruction is shown in Figure 129 The MCR Function, and will appear as a matched pair of outputs labelled MCR. If the first MCR line is true then the ladder logic on the following lines will be scanned as normal to the second MCR. If the first line is false the lines to the next MCR block will all be forced off. If a normal output is used inside an MCR block, it may be forced off. Therefore latches will be used in this method.
The first part of the ladder logic required will reset the logic to an initial condition, as shown in Figure 130 Initial Reset of States. The line will only be true for the first scan of the PLC, and at that time it will turn on the flowchart block F1 which is the reset all values off operation. All other operations will be turned off.
The ladder logic for the first state is shown in Figure 131 Ladder Logic for the Operation F1. When F1 is true the logic between the MCR lines will be scanned, if F1 is false the logic will be ignored. This logic turns on the outlet valve and turns off the inlet valve. It then turns off operation F1, and turns on the next operation F2.
The ladder logic for operation F2 is simple, and when the start button is pushed, it will turn off F2 and turn on F3. The ladder logic for operation F3 opens the inlet valve and moves to operation F4.
In general there is a preference for methods that do not use MCR statements or latches. The flowchart used in the previous example can be implemented without these instructions using the following method. The first step to this process is shown in Figure 135 Label the Flowchart Blocks and Arrows. As before each of the blocks in the flowchart are labelled, but now the connecting arrows (transitions) in the diagram must also be labelled. These transitions indicate when another function block will be activated.
The first section of ladder logic is shown in Figure 136 The Transition Logic. This indicates when the transitions between functions should occur. All of the logic for the transitions should be kept together, and appear before the state logic that follows in Figure 137 The Function Logic and Outputs.
The logic shown in Figure 137 The Function Logic and Outputs will keep a function on, or switch to the next function. Consider the first ladder rung for F1, it will be turned on by transition T1 and once function F1 is on it will keep itself on, unless T2 occurs shutting it off. If T2 has occurred the next line of ladder logic will turn on F2. The function logic is followed by output logic that relates output values to the active functions.
3. A welding station is controlled by a PLC. On the outside is a safety cage that must be closed while the cell is active. A belt moves the parts into the welding station and back out. An inductive proximity sensor detects when a part is in place for welding, and the belt is stopped. To weld, an actuator is turned on for 3 seconds. As normal the cell has start and stop push buttons.
A system state is a mode of operation. Consider a bank machine that will go through very carefully selected states. The general sequence of states might be idle, scan card, get secret number, select transaction type, ask for amount of cash, count cash, deliver cash/return card, then idle.
A State based system can be described with system states, and the transitions between those states. A state diagram is shown in Figure 138 A State Diagram. The diagram has two states, State 1 and State 2. If the system is in state 1 and A happens the system will then go into state 2, otherwise it will remain in State 1. Likewise if the system is in state 2, and B happens the system will return to state 1. As shown in the figure this state diagram could be used for an automatic light controller. When the power is turned on the system will go into the lights off state. If motion is detected or an on push button is pushed the system will go to the lights on state. If the system is in the lights on state and 1 hour has passed, or an off push button is pushed then the system will go to the lights off state. The else statements are omitted on the second diagram, but they are implied.
Consider the design of a coffee vending machine. The first step requires the identification of vending machine states as shown in Figure 139 Definition of Vending Machine States. The main state is the idle state. There is an inserting coins state where the total can be displayed. When enough coins have been inserted the user may select their drink of choice. After this the make coffee state will be active while coffee is being brewed. If an error is detected the service needed state will be activated.
The states are then drawn in a state diagram as shown in Figure 140 State Diagram for a Coffee Machine. Transitions are added as needed between the states. Here we can see that when powered up the machine will start in an idle state. The transitions here are based on the inputs and sensors in the vending machine. The state diagram is quite subjective, and complex diagrams will differ from design to design. These diagrams also expose the controller behavior. Consider that if the machine needs maintenance, and it is unplugged and plugged back in, the service needed statement would not be reentered until the next customer paid for but did not receive their coffee. In a commercial design we would want to fix this oversight.
Consider the traffic lights in Figure 141 Traffic Lights. The normal sequences for traffic lights are a green light in one direction for a long period of time, typically 10 or more seconds. This is followed by a brief yellow light, typically 4 seconds. This is then followed by a similar light pattern in the other direction. It is understood that a green or yellow light in one direction implies a red light in the other direction. Pedestrian buttons are provided so that when pedestrians are present a cross walk light can be turned on and the duration of the green light increased.
The first step for developing a controller is to define the inputs and outputs of the system as shown in Figure 142 Inputs and Outputs for Traffic Light Controller. First we will describe the system variables. These will vary as the system moves from state to state. Please note that some of these together can define a state (alone they are not the states). The inputs are used when defining the transitions. The outputs can be used to define the system state.
Previously state diagrams were used to define the system, it is possible to use a state table as shown in Figure 143 System State Table for Traffic Lights. Here the light sequences are listed in order. Each state is given a name to ease interpretation, but the corresponding output pattern is also given. The system state is defined as the bit pattern of the 6 lights. Note that there are only 4 patterns, but 6 binary bits could give as many as 64.
Transitions can be added to the state table to clarify the operation, as shown in Figure 144 State Table with Transitions. Here the transition from Green E/W to Yellow E/W is S1. What this means is that a cross walk button must be pushed to end the green light. This is not normal, normally the lights would use a delay. The transition from Yellow E/W to Green N/S is caused by a 4 second delay (this is normal.) The next transition is also abnormal, requiring that the cross walk button be pushed to end the Green N/S state. The last state has a 4 second delay before returning to the first state in the table. In this state table the sequence will always be the same, but the times will vary for the green lights.
A state diagram for the system is shown in Figure 145 A Traffic Light State Diagram. This diagram is equivalent to the state table in Figure 144 State Table with Transitions, but it can be valuable for doing visual inspection.
State diagrams can be converted directly to ladder logic using block logic. This technique will produce larger programs, but it is a simple method to understand, and easy to debug. The previous traffic light example is to be implemented in ladder logic. The inputs and outputs are defined in Figure 146 Inputs and Outputs for Traffic Light Controller, assuming it will be implemented on an Allen Bradley Micrologix. first scan is the address of the first scan in the PLC. The locations state_1 to state_4 are internal memory locations that will be used to track which states are on. The behave like outputs, but are not available for connection outside the PLC. The input and output values are determined by the PLC layout.
The initial ladder logic block shown in Figure 147 Ladder Logic to Initialize Traffic Light Controller will initialize the states of the PLC, so that only state 1 is on. The first scan indicator first scan will execute the MCR block when the PLC is first turned on, and the latches will turn on the value for state_1 and turn off the others.
The next section of ladder logic only deals with outputs. For example the output O/1 is the N/S red light, which will be on for states 1 and 2, or B3/1 and B3/2 respectively. Putting normal outputs outside the MCR blocks is important. If they were inside the blocks they could only be on when the MCR block was active, otherwise they would be forced off. Note: Many beginners will make the careless mistake of repeating outputs in this section of the program.
The first state is implemented in Figure 147 Ladder Logic to Initialize Traffic Light Controller. If state_1 is active this will be active. The transition is S1 which will end state_1 and start state_2.
The second state is more complex because it involves a time delay, as shown in Figure 150 Ladder Logic for Second State. When the state is active the TON timer will be timing. When the timer is done state 2 will be unlatched, and state 3 will be latched on. The timer is nonretentive, so if state_2 if off the MCR block will force all of the outputs off, including the timer, causing it to reset.
The previous example only had one path through the state tables, so there was never a choice between states. The state diagram in Figure 153 A State Diagram with Priority Problems could potentially have problems if two transitions occur simultaneously. For example if state STB is active and A and C occur simultaneously, the system could go to either STA or STC (or both in a poorly written program.) To resolve this problem we should choose one of the two transitions as having a higher priority, meaning that it should be chosen over the other transition. This decision will normally be clear, but if not an arbitrary decision is still needed.
The state diagram in Figure 153 A State Diagram with Priority Problems is implemented with ladder logic in Figure 154 State Diagram for Prioritization Problem and Figure 155 State Diagram for Prioritization Problem. The implementation is the same as described before, but for state STB additional ladder logic is added to disable transition A if transition C is active, therefore giving priority to C.
The Block Logic technique described does not require any special knowledge and the programs can be written directly from the state diagram. The final programs can be easily modified, and finding problems is easier. But, these programs are much larger and less efficient.
State diagrams can be converted to Boolean equations and then to Ladder Logic. The first technique that will be described is state equations. These equations contain three main parts, as shown below in Figure 156 State Equations. To describe them simply - a state will be on if it is already on, or if it has been turned on by a transition from another state, but it will be turned off if there was a transition to another state. An equation is required for each state in the state diagram.
The state equation method can be applied to the traffic light example in Figure 145 A Traffic Light State Diagram. The first step in the process is to define variable names (or PLC memory locations) to keep track of which states are on or off. Next, the state diagram is examined, one state at a time. The first equation if for ST1, or state 1 - green NS. The start of the equation can be read as ST1 will be on if it is on, or if ST4 is on, and it has been on for 4s, or if it is the first scan of the PLC. The end of the equation can be read as ST1 will be turned off if it is on, but S1 has been pushed and S2 is off. As discussed before, the first half of the equation will turn the state on, but the second half will turn it off. The first scan is also used to turn on ST1 when the PLC starts. It is put outside the terms to force ST1 on, even if the exit conditions are true.
The equations in Figure 157 State Equations for the Traffic Light Example cannot be implemented in ladder logic because of the NOT over the last terms. The equations are simplified in Figure 158 Simplified Boolean Equations so that all NOT operators are only over a single variable.
These equations are then converted to the ladder logic shown in Figure 159 Ladder Logic for the State Equations and Figure 160 Ladder Logic for the State Equations. At the top of the program the two timers are defined. (Note: it is tempting to combine the timers, but it is better to keep them separate.) Next, the Boolean state equations are implemented in ladder logic. After this we use the states to turn specific lights on.
This method will provide the most compact code of all techniques, but there are potential problems. Consider the example in Figure 160 Ladder Logic for the State Equations. If push button S1 has been pushed the line for ST1 should turn off, and the line for ST2 should turn on. But, the line for ST2 depends upon the value for ST1 that has just been turned off. This will cause a problem if the value of ST1 goes off immediately after the line of ladder logic has been scanned. In effect the PLC will get lost and none of the states will be on. This problem arises because the equations are normally calculated in parallel, and then all values are updated simultaneously. To overcome this problem the ladder logic could be modified to the form shown in Figure 161 Delayed State Updating. Here some temporary variables are used to hold the new state values. After all the equations are solved the states are updated to their new values.
When multiple transitions out of a state exist we must take care to add priorities. Each of the alternate transitions out of a state should be give a priority, from highest to lowest. The state equations can then be written to suppress transitions of lower priority when one or more occur simultaneously. The state diagram in Figure 162 State Equations with Prioritization has two transitions A and C that could occur simultaneously. The equations have been written to give A a higher priority. When A occurs, it will block C in the equation for STC. These equations have been converted to ladder logic in Figure 163 Ladder Logic with Prioritization.
A state diagram may be converted to equations by writing an equation for each state and each transition. A sample set of equations is seen in Figure 164 State-Transition Equations for the traffic light example of Figure 145 A Traffic Light State Diagram. Each state and transition needs to be assigned a unique variable name. (Note: It is a good idea to note these on the diagram) These are then used to write the equations for the diagram. The transition equations are written by looking at the each state, and then determining which transitions will end that state. For example, if ST1 is true, and crosswalk button S1 is pushed, and S2 is not, then transition T1 will be true. The state equations are similar to the state equations in the previous State Equation method, except they now only refer to the transitions. Recall, the basic form of these equations is that the state will be on if it is already on, or it has been turned on by a transition. The state will be turned off if an exiting transition occurs. In this example the first scan was given it's own transition, but it could have also been put into the equation for T4.
These equations can be converted directly to the ladder logic in Figure 165 Ladder Logic for the State-Transition Equations, Figure 166 Ladder Logic for the State-Transition Equations and Figure 167 Ladder Logic for the State-Transition Equations. It is very important that the transition equations all occur before the state equations. By updating the transition equations first and then updating the state equations the problem of state variable values changing is negated - recall this problem was discussed in the State Equations section.
The problem of prioritization also occurs with the State-Transition equations. Equations were written for the State Diagram in Figure 168 Prioritization for State Transition Equations. The problem will occur if transitions A and C occur simultaneously. In the example transition T2 is given a higher priority, and if it is true, then the transition T3 will be suppressed when calculating STC. In this example the transitions have been considered in the state update equations, but they can also be used in the transition equations.
6. You have been asked to program a PLC that is controlling a handicapped access door opener. The client has provided the electrical wiring diagram below to show how the PLC inputs and outputs have been wired. Button A is located inside and button B is located outside. When either button is pushed the motor will be turned on to open the door. The motor is to be kept on for a total of 15 seconds to allow the person to enter. After the motor is turned off the door will fall closed. In the event that somebody gets caught in the door the thermal relay will go off, and the motor should be turned off. After 20,000 cycles the door should stop working and the light should go on to indicate that maintenance is required.
9. A program is to perform the following actions for a self-service security check. The device will allow bags to be inserted to the test chamber through an entrance door. If the bag passes the check it can be removed through an exit door, otherwise an alarm is sounded. Create a state diagram using the steps below.
5. The scan results in two real values `nitrates' and `mass'. The calculation below is performed. If the `risk' is below 0.3, or above 23.5, then the machine enters an alarm state (step 8), otherwise it continues to step 6.
9. The state diagram below is for a simple elevator controller. a) Develop a ladder logic program that implements it with state transition equations. b) Develop the ladder logic using the block logic technique. c) Develop the ladder logic using the delayed update method.
11. For the state diagram for the traffic light example, add a 15 second green light timer and speed up signal for an emergency vehicle. A strobe light mounted on fire trucks will cause the lights to change so that the truck doesn't need to stop. Modify the state diagram to include this option. Implement the new state diagram with ladder logic.
12. Design a program with a state diagram for a hydraulic press that will advance when two palm buttons are pushed. Top and bottom limit switches are used to reverse the advance and stop after a retract. At any time the hands removed from the palm button will stop an advance and retract the press. Include start and stop buttons to put the press in and out of an active mode.
13. In dangerous processes it is common to use two palm buttons that require a operator to use both hands to start a process (this keeps hands out of presses, etc.). To develop this there are two inputs (P1 and P2) that must both be turned on within 0.25s of each other before a machine cycle may begin.
Develop ladder logic with a state diagram to control a process that has a start (START) and stop (STOP) button for the power. After the power is on the palm buttons (P1 and P2) may be used as described above to start a cycle. The cycle will consist of turning on an output (MOVE) for 2 seconds. After the press has been cycled 1000 times the press power should turn off and an output (LIGHT) should go on.
15. This morning you received a call from Mr. Ian M. Daasprate at the Old Fashioned Widget Company. In the past when they built a new machine they would used punched paper cards for control, but their supplier of punched paper readers went out of business in 1972 and they have decided to try using PLCs this time. He explains that the machine will dip wooden parts in varnish for 2 seconds, and then apply heat for 5 minutes to dry the coat, after this they are manually removed from the machine, and a new part is put in. They are also considering a premium line of parts that would call for a dip time of 30 seconds, and a drying time of 10 minutes. He then refers you to the project manager, Ann Nooyed.
You call Ann and she explains how the machine should operate. There should be start and stop buttons. The start button will be pressed when the new part has been loaded, and is ready to be coated. A light should be mounted to indicate when the machine is in operation. The part is mounted on a wheel that is rotated by a motor. To dip the part, the motor is turned on until a switch is closed. To remove the part from the dipping bath the motor is turned on until a second switch is closed. If the motor to rotate the wheel is on for more that 10 seconds before hitting a switch, the machine should be turned off, and a fault light turned on. The fault condition will be cleared by manually setting the machine back to its initial state, and hitting the start button twice. If the part has been dipped and dried properly, then a done light should be lit. To select a premium product you will use an input switch that needs to be pushed before the start button is pushed. She closes by saying she will be going on vacation and you need to have it done before she returns.
a) A toggle start switch (TS1) and a limit switch on a safety gate (LS1) must both be on before a solenoid (SOL1) can be energized to extend a stamping cylinder to the top of a part. Should a part detect sensor (PS1) also be considered? Explain your answer.
b) While the stamping solenoid is energized, it must remain energized until a limit switch (LS2) is activated. This second limit switch indicates the end of a stroke. At this point the solenoid should be de-energized, thus retracting the cylinder.
c) When the cylinder is fully retracted a limit switch (LS3) is activated. The cycle may not begin again until this limit switch is active. This is one way to ensure that a new part is present, is there another?
e) A safety check should be included. If the cylinder solenoid has been on for more than 5 seconds, it suggests that the cylinder is jammed, or the machine has a fault. If this is the case the machine should be shut down, and a maintenance light turned on.
Base 10 (decimal) numbers developed naturally because the original developers (probably) had ten fingers, or 10 digits. Now consider logical systems that only have wires that can be on or off. When counting with a wire the only digits are 0 and 1, giving a base 2 numbering system. Numbering systems for computers are often based on base 2 numbers, but base 4, 8, 16 and 32 are commonly used. A list of numbering systems is give in Figure 169 Numbering Systems. An example of counting in these different numbering systems is shown in Figure 170 Numbers in Decimal, Binary, Octal and Hexadecimal.
The effect of changing the base of a number does not change the actual value, only how it is written. The basic rules of mathematics still apply, but many beginners will feel disoriented. This chapter will cover basic topics that are needed to use more complex programming instructions later in the book. These will include the basic number systems, conversion between different number bases, and some data oriented topics.
Binary numbers are the most fundamental numbering system in all computers. A single binary digit (a bit) corresponds to the condition of a single wire. If the voltage on the wire is true the bit value is 1. If the voltage is off the bit value is 0. If two or more wires are used then each new wire adds another significant digit. Each binary number will have an equivalent digital value. Figure 171 Conversion of a Binary Number to a Decimal Number shows how to convert a binary number to a decimal equivalent. Consider the digits, starting at the right. The least significant digit is 1, and is in the 0th position. To convert this to a decimal equivalent the number base (2) is raised to the position of the digit, and multiplied by the digit. In this case the least significant digit is a trivial conversion. Consider the most significant digit, with a value of 1 in the 6th position. This is converted by the number base to the exponent 6 and multiplying by the digit value of 1. This method can also be used for converting the other number system to decimal.
Decimal numbers can be converted to binary numbers using division, as shown in Figure 172 Conversion from Decimal to Binary. This technique begins by dividing the decimal number by the base of the new number. The fraction after the decimal gives the least significant digit of the new number when it is multiplied by the number base. The whole part of the number is now divided again. This process continues until the whole number is zero. This method will also work for conversion to other number bases.
Most scientific calculators will convert between number bases. But, it is important to understand the conversions between number bases. And, when used frequently enough the conversions can be done in your head.
Binary numbers come in three basic forms - a bit, a byte and a word. A bit is a single binary digit, a byte is eight binary digits, and a word is 16 digits. Words and bytes are shown in Figure 173 Bytes and Words. Notice that on both numbers the least significant digit is on the right hand side of the numbers. And, in the word there are two bytes, and the right hand one is the least significant byte.
Binary numbers can also represent fractions, as shown in Figure 174 A Binary Decimal Number. The conversion to and from binary is identical to the previous techniques, except that for values to the right of the decimal the equivalents are fractions.
In the next chapter you will learn that entire blocks of inputs and outputs can be used as a single binary number (typically a word). Each bit of the number would correspond to an output or input as shown in Figure 175 Motor Outputs Represented with a Binary Number.
We can then manipulate the inputs or outputs using Boolean operations. Boolean algebra has been discussed before for variables with single values, but it is the same for multiple bits. Common operations that use multiple bits in numbers are shown in Figure 176 Boolean Operations on Binary Numbers. These operations compare only one bit at a time in the number, except the shift instructions that move all the bits one place left or right.
Negative numbers are a particular problem with binary numbers. As a result there are three common numbering systems used as shown in Figure 177 Binary (Integer) Number Types. Unsigned binary numbers are common, but they can only be used for positive values. Both signed and 2s compliment numbers allow positive and negative values, but the maximum positive values is reduced by half. 2s compliment numbers are very popular because the hardware and software to add and subtract is simpler and faster. All three types of numbers will be found in PLCs.
Examples of signed binary numbers are shown in Figure 178 Signed Binary Numbers. These numbers use the most significant bit to indicate when a number is negative.
An example of 2s compliment numbers are shown in Figure 179 2s Compliment Numbers. Basically, if the number is positive, it will be a regular binary number. If the number is to be negative, we start the positive number, compliment it (reverse all the bits), then add 1. Basically when these numbers are negative, then the most significant bit is set. To convert from a negative 2s compliment number, subtract 1, and then invert the number.
Using 2s compliments for negative numbers eliminates the redundant zeros of signed binaries, and makes the hardware and software easier to implement. As a result most of the integer operations in a PLC will do addition and subtraction using 2s compliment numbers. When adding 2s compliment numbers, we don't need to pay special attention to negative values. And, if we want to subtract one number from another, we apply the twos compliment to the value to be subtracted, and then apply it to the other value.
Figure 180 Adding 2s Compliment Numbers shows the addition of numbers using 2s compliment numbers. The three operations result in zero, positive and negative values. Notice that in all three operation the top number is positive, while the bottom operation is negative (this is easy to see because the MSB of the numbers is set). All three of the additions are using bytes, this is important for considering the results of the calculations. In the left and right hand calculations the additions result in a 9th bit - when dealing with 8 bit numbers we call this bit the carry C. If the calculation started with a positive and negative value, and ended up with a carry bit, there is no problem, and the carry bit should be ignored. If doing the calculation on a calculator you will see the carry bit, but when using a PLC you must look elsewhere to find it.
The integers have limited value ranges, for example a 16 bit word ranges from -32,768 to 32,767 whereas a 32 bit word ranges from -2,147,483,648 to 2,147,483,647. In some cases calculations will give results outside this range, and the Overflow O bit will be set. (Note: an overflow condition is a major error, and the PLC will probably halt when this happens.) For an addition operation the Overflow bit will be set when the sign of both numbers is the same, but the sign of the result is opposite. When the signs of the numbers are opposite an overflow cannot occur. This can be seen in Figure 181 Carry and Overflow Bits where the numbers two of the three calculations are outside the range. When this happens the result goes from positive to negative, or the other way.
Other number bases are typically converted to and from binary for storage and mathematical operations. Hexadecimal numbers are popular for representing binary values because they are quite compact compared to binary. (Note: large binary numbers with a long string of 1s and 0s are next to impossible to read.) Octal numbers are also popular for inputs and outputs because they work in counts of eight; inputs and outputs are in counts of eight.
An example of conversion to, and from, hexadecimal is shown in Figure 182 Conversion of a Hexadecimal Number to a Decimal Number and Figure 183 Conversion from Decimal to Hexadecimal. Note that both of these conversions are identical to the methods used for binary numbers, and the same techniques extend to octal numbers also.
Binary Coded Decimal (BCD) numbers use four binary bits (a nibble) for each digit. (Note: this is not a base number system, but it only represents decimal digits.) This means that one byte can hold two digits from 00 to 99, whereas in binary it could hold from 0 to 255. A separate bit must be assigned for negative numbers. This method is very popular when numbers are to be output or input to the computer. An example of a BCD number is shown in Figure 184 A BCD Encoded Number. In the example there are four digits, therefore 16 bits are required. Note that the most significant digit and bits are both on the left hand side. The BCD number is the binary equivalent of each digit.
Most PLCs store BCD numbers in words, allowing values between 0000 and 9999. They also provide functions to convert to and from BCD. It is also possible to calculations with BCD numbers, but this is uncommon, and when necessary most PLCs have functions to do the calculations. But, when doing calculations you should probably avoid BCD and use integer mathematics instead. Try to be aware when your numbers are BCD values and convert them to integer or binary value before doing any calculations.
When dealing with non-numerical values or data we can use plain text characters and strings. Each character is given a unique identifier and we can use these to store and interpret data. The ASCII (American Standard Code for Information Interchange) is a very common character encryption system is shown in Figure 185 ASCII Character Table and Figure 186 ASCII Character Table. The table includes the basic written characters, as well as some special characters, and some control codes. Each one is given a unique number. Consider the letter A, it is readily recognized by most computers world-wide when they see the number 65.
This table has the codes from 0 to 127, but there are more extensive tables that contain special graphics symbols, international characters, etc. It is best to use the basic codes, as they are supported widely, and should suffice for all controls tasks.
An example of a string of characters encoded in ASCII is shown in Figure 187 A String of Characters Encoded in ASCII.
When the characters are organized into a string to be transmitted and LF and/or CR code are often put at the end to indicate the end of a line. When stored in a computer an ASCII value of zero is used to end the string.
Errors often occur when data is transmitted or stored. This is very important when transmitting data in noisy factories, over phone lines, etc. Parity bits can be added to data as a simple check of transmitted data for errors. If the data contains error it can be retransmitted, or ignored.
A parity bit is normally a 9th bit added onto an 8 bit byte. When the data is encoded the number of true bits are counted. The parity bit is then set to indicate if there are an even or odd number of true bits. When the byte is decoded the parity bit is checked to make sure it that there are an even or odd number of data bits true. If the parity bit is not satisfied, then the byte is judged to be in error. There are two types of parity, even or odd. These are both based upon an even or odd number of data bits being true. The odd parity bit is true if there are an odd number of bits on in a binary number. On the other hand the Even parity is set if there are an even number of true bits. This is illustrated in Figure 188 Parity Bits on a Byte.
Parity bits are suitable for a few bits of data, but checksums are better for larger data transmissions. These are simply an algebraic sum of all of the data transmitted. Before data is transmitted the numeric values of all of the bytes are added. This sum is then transmitted with the data. At the receiving end the data values are summed again, and the total is compared to the checksum. If they match the data is accepted as good. An example of this method is shown in Figure 189 A Simplistic Checksum.
Checksums are very common in data transmission, but these are also hidden from the average user. If you plan to transmit data to or from a PLC you will need to consider parity and checksum values to verify the data. Small errors in data can have major consequences in received data. Consider an oven temperature transmitted as a binary integer (1023d = 0000 0100 0000 0000b). If a single bit were to be changed, and was not detected the temperature might become (0000 0110 0000 0000b = 1535d) This small change would dramatically change the process.
Parity bits and checksums are for checking data that may have any value. Gray code is used for checking data that must follow a binary sequence. This is common for devices such as angular encoders. The concept is that as the binary number counts up or down, only one bit changes at a time. Thus making it easier to detect erroneous bit changes. An example of a gray code sequence is shown in Figure 190 Gray Code for a Nibble. Notice that only one bit changes from one number to the next. If more than a single bit changes between numbers, then an error can be detected.
3. Both of these are coding schemes designed to increase immunity to noise. A parity bit can be used to check for a changed bit in a byte. Gray code can be used to check for a value error in a stream of continuous values.
20. when selecting the sequence of bit changes for Karnaugh maps, only one bit is changed at a time. This is the same method used for grey code number sequences. By using the code the bits in the map are naturally grouped.
Advanced ladder logic functions such as timers and counters allow controllers to perform calculations, make decisions and do other complex tasks. They are more complex than basic input contacts and output coils and they rely upon data stored in the memory of the PLC. The memory of the PLC is organized to hold different types of programs and data. This chapter will discuss these memory types. Functions that use them will be discussed in following chapters.
The memory in a PLC is divided into program and variable memory. The program memory contains the instructions to be executed and cannot be changed while the PLC is running. (Note: some PLCs allow on-line editing to make minor program changes while a program is running.) The variable memory is changed while the PLC is running. In ControlLogix the memory is defined using variable names (also called tags and aliases).
The PLC has a list of 'Main Tasks' that contain the main program(s) run each scan of the PLC. Additional programs can be created that are called as subroutines. Valid program types include Ladder Logic, Structured Text, Sequential Function Charts, and Function Block Diagrams.
Program files can also be created for 'Power-Up Handling' and 'Controller Faults'. The power-up programs are used to initialize the controller on the first scan. In previous chapters this was done in the main program using the 'S:FS' bit. Fault programs are used to respond to specific failures or issues that may lead to failure of the control system. Normally these programs are used to recover from minor failures, or shut down a system safely.
Allen Bradley uses the terminology 'tags' to describe variables, status, and input/output (I/O) values for the controller. 'Controller Tags' include status values and I/O definitions. These are scoped, meaning that they can be global and used by all programs on the PLC. These can also be local, limiting their use to a program that owns it.
Data values do not always need to be stored in memory, they can be define literally. Figure 192 Literal Data Values shows an example of two different data values. The first is an integer, the second is a real number. Hexadecimal numbers can be indicated by following the number with H, a leading zero is also needed when the first digit is A, B, C, D, E or F. A binary number is indicated by adding a B to the end of the number.
Sometimes we will want to refer to an array of values, as shown in Figure 193 Arrays. This data type is indicated by beginning the number with a pound or hash sign '#'. The first example describes an array of floating point numbers staring in file 8 at location 5. The second example is for an array of integers in file 7 starting at location 0. The length of the array is determined elsewhere.
Expressions allow addresses and functions to be typed in and interpreted when the program is run. The example in Figure 194 Expressions will get a floating point number from 'test', perform a sine transformation, and then add 1.3. The text string is not interpreted until the PLC is running, and if there is an error, it may not occur until the program is running - so use this function cautiously.
Figure 195 An Example of Ladder Logic Functions shows a simple example ladder logic with functions. The basic operation is such that while input A is true the functions will be performed. The first statement will move (MOV) the literal value of 130 into integer memory X. The next move function will copy the value from X to Y. The third statement will add integers value in X and Y and store the results in Z.
As discussed before we can access timer and counter bits and words. Examples of these are shown in Figure 196 Examples of Timer and Counter Addresses. The bit values can only be read, and should not be changed. The presets and accumulators can be read and overwritten.
Consider the simple ladder logic example in Figure 197 Door Light Example. It shows the use of a timer timing TT bit to seal on the timer when a door input has gone true. While the timer is counting, the bit will stay true and keep the timer counting. When it reaches the 10 second delay the TT bit will turn off. The next line of ladder logic will turn on a light while the timer is counting for the first 10 seconds.
Status memory allows a program to check the PLC operation, and also make some changes. A selected list of status bits is shown in Figure 198 Status Bits and Words for ControlLogix for Allen-Bradley ControlLogix PLCs. More complete lists are available in the manuals. The first six bits are commonly used and are given simple designations for use with simple ladder logic. More advanced instructions require the use of Get System Value (GSV) and Set System Value (SSV) functions. These functions can get/set different values depending upon the type of data object is being used. In the sample list given one data object is the 'WALLCLOCKTIME'. One of the attributes of the class is the DateTime that contains the current time. It is also possible to use the 'PROGRAM' object instance 'MainProgram' attribute 'LastScanTime' to determine how long the program took to run in the previous scan.
An example of getting and setting system status values is shown in Figure 199 Reading and Setting Status bits with GSV and SSV. The first line of ladder logic will get the current time from the class 'WALLCLOCKTIME'. In this case the class does not have an instance so it is blank. The attribute being recalled is the DateTime that will be written to the DINT array time[0..6]. For example 'time' should give the current hour. In the second line the Watchdog time for the MainProgram is set to 200 ms. If the program MainProgram takes longer than 200ms to execute a fault will be generated.
Simple ladder logic functions can complete operations in a single scan of ladder logic. Other functions such as timers and counters will require multiple ladder logic scans to finish. While timers and counters have their own memory for control, a generic type of control memory is defined for other function. This memory contains the bits and words in Figure 200 Bits and Words for Control Memory. Any given function will only use some of the values. The meaning of particular bits and words will be described later when discussing specific functions.
3. Develop Ladder Logic for a car door/seat belt safety system. When the car door is open, or the seatbelt is not done up, a buzzer will sound for 5 seconds if the key has been switched on. A cabin light will be switched on when the door is open and stay on for 10 seconds after it is closed, unless a key has started the ignition power.
4. Write ladder logic for the following problem description. When button A is pressed a value of 1001 will be stored in X. When button B is pressed a value of -345 will be stored in Y, when it is not pressed a value of 99 will be stored in Y. When button C is pressed X and Y will be added, and the result will be stored in Z.
7. A machine is being designed for a foreign parts supplier. As part of the contractual agreement the logic will run until February 26, 2008. However, after that date the machine will enable a `contract_expired' value and no longer run. Write the ladder logic.
1. both are similar. The timer and counter memories both use double words for the accumulator and presets, and they use bits to track the status of the functions. These bits are somewhat different, but parallel in function.
Ladder logic input contacts and output coils allow simple logical decisions. Functions extend basic ladder logic to allow other types of control. For example, the addition of timers and counters allowed event based control. A longer list of functions is shown in Figure 201 Basic PLC Function Categories. Combinatorial Logic and Event functions have already been covered. This chapter will discuss Data Handling and Numerical Logic. The next chapter will cover Lists and Program Control and some of the Input and Output functions. Remaining functions will be discussed in later chapters.
Most of the functions will use PLC memory locations to get values, store values and track function status. Most function will normally become active when the input is true. But, some functions, such as TOF timers, can remain active when the input is off. Other functions will only operate when the input goes from false to true, this is known as positive edge triggered. Consider a counter that only counts when the input goes from false to true, the length of time the input is true does not change the function behavior. A negative edge triggered function would be triggered when the input goes from true to false. Most functions are not edge triggered: unless stated assume functions are not edge triggered.
The simple MOV will take a value from one location in memory and place it in another memory location. Examples of the basic MOV are given in Figure 202 Examples of the MOV Function. When A is true the MOV function moves a floating point number from the source to the destination address. The data in the source address is left unchanged. When B is true the floating point number in the source will be converted to an integer and stored in the destination address in integer memory. The floating point number will be rounded up or down to the nearest integer. When C is true the integer value of 123 will be placed in the integer file test_int.
A more complex example of move functions is given in Figure 203 Example of the MOV and MVM Statement with Binary Values. When A becomes true the first move statement will move the value of 130 into int_0. And, the second move statement will move the value of -9385 from int_1 to int_2. (Note: The number is shown as negative because we are using 2s compliment.) For the simple MOVs the binary values are not needed, but for the MVM statement the binary values are essential. The statement moves the binary bits from int_3 to int_5, but only those bits that are also on in the mask int_4, other bits in the destination will be left untouched. Notice that the first bit int_5.0 is true in the destination address before and after, but it is not true in the mask. The MVM function is very useful for applications where individual binary bits are to be manipulated, but they are less useful when dealing with actual number values.
Mathematical functions will retrieve one or more values, perform an operation and store the result in memory. Figure 204 Arithmetic Functions shows an ADD function that will retrieve values from int_1 and real_1, convert them both to the type of the destination address, add the floating point numbers, and store the result in real_2. The function has two sources labelled source A and source B. In the case of ADD functions the sequence can change, but this is not true for other operations such as subtraction and division. A list of other simple arithmetic function follows. Some of the functions, such as the negative function are unary, so there is only one source.
An application of the arithmetic function is shown in Figure 205 Arithmetic Function Example. Most of the operations provide the results we would expect. The second ADD function retrieves a value from int_3, adds 1 and overwrites the source - this is normally known as an increment operation. The first DIV statement divides the integer 25 by 10, the result is rounded to the nearest integer, in this case 3, and the result is stored in int_6. The NEG instruction takes the new value of -10, not the original value of 0, from int_4 inverts the sign and stores it in int_7.
A list of more advanced functions are given in Figure 206 Advanced Mathematical Functions. This list includes basic trigonometry functions, exponents, logarithms and a square root function. The last function CPT will accept an expression and perform a complex calculation.
Figure 207 An Equation in Ladder Logic shows an example where an equation has been converted to ladder logic. The first step in the conversion is to convert the variables in the equation to unused memory locations in the PLC. The equation can then be converted using the most nested calculations in the equation, such as the LN function. In this case the results of the LN function are stored in another memory location, to be recalled later. The other operations are implemented in a similar manner. (Note: This equation could have been implemented in other forms, using fewer memory locations.)
The same equation in Figure 207 An Equation in Ladder Logic could have been implemented with a CPT function as shown in Figure 208 Calculations with a Compute Function. The equation uses the same memory locations chosen in Figure 207 An Equation in Ladder Logic. The expression is typed directly into the PLC programming software.
Math functions can result in status flags such as overflow, carry, etc. care must be taken to avoid problems such as overflows. These problems are less common when using floating point numbers. Integers are more prone to these problems because they are limited to the range.
Ladder logic conversion functions are listed in Figure 209 Conversion Functions. The example function will retrieve a BCD number from the D type (BCD) memory and convert it to a floating point number that will be stored in F8:2. The other function will convert from 2s compliment binary to BCD, and between radians and degrees.
Examples of the conversion functions are given in Figure 210 Conversion Example. The functions load in a source value, do the conversion, and store the results. The TOD conversion to BCD could result in an overflow error.
Arrays allow us to store multiple data values. In a PLC this will be a sequential series of numbers in integer, floating point, or other memory. For example, assume we are measuring and storing the weight of a bag of chips in floating point memory starting at weight. We could read a weight value every 10 minutes, and once every hour find the average of the six weights. This section will focus on techniques that manipulate groups of data organized in arrays, also called blocks in the manuals.
Functions are available that allow statistical calculations. These functions are listed in Figure 211 Statistic Functions. When A becomes true the average (AVE) conversion will start at memory location weight and average a total of 4 values. The control word weight_control is used to keep track of the progress of the operation, and to determine when the operation is complete. This operation, and the others, are edge triggered. The operation may require multiple scans to be completed. When the operation is done the average will be stored in weight_avg and the weight_control.DN bit will be turned on.
Examples of the statistical functions are given in Figure 212 Statistical Calculations for an array of data that starts at weight and is 4 values long. When done the average will be stored in weight_avg, and the standard deviation will be stored in weight_std. The set of values will also be sorted in ascending order from weight to weight. Each of the function should have their own control memory to prevent overlap. It is not a good idea to activate the sort and the other calculations at the same time, as the sort may move values during the calculation, resulting in incorrect calculations.
A basic block function is shown in Figure 213 Block Operation Functions. This COP (copy) function will copy an array of 10 values starting at n to n. The FAL function will perform mathematical operations using an expression string, and the FSC function will allow two arrays to be compared using an expression. The FLL function will fill a block of memory with a single value.
Figure 214 File Algebra Example shows an example of the FAL function with different addressing modes. The first FAL function will do the following calculations n=n+5, n=n+5, n=n+5, n=n+5, n=n+5. The second FAL statement will be n=n+5, n=n+5, n=n+5, n=n+5, n=n+5. With a mode of 2 the instruction will do two of the calculations when there is a positive edge from B (i.e., a transition from false to true). The result of the last FAL statement will be n=n+5, n=n+5, n=n+5, n=n+5, n=n+5. The last operation would seem to be useless, but notice that the mode is incremental. This mode will do one calculation for each positive transition of C. The all mode will perform all five calculations in a single scan whenever there is a positive edge on the input. It is also possible to put in a number that will indicate the number of calculations per scan. The calculation time can be long for large arrays and trying to do all of the calculations in one scan may lead to a watchdog time-out fault.
Comparison functions are shown in Figure 215 Comparison Functions. Previous function blocks were outputs, these replace input contacts. The example shows an EQU (equal) function that compares two floating point numbers. If the numbers are equal, the output bit light is true, otherwise it is false. Other types of equality functions are also listed.
The example in Figure 216 Comparison Function Examples shows the six basic comparison functions. To the right of the figure are examples of the comparison operations.
The ladder logic in Figure 216 Comparison Function Examples is recreated in Figure 217 Equivalent Statements Using CMP Statements with the CMP function that allows text expressions.
Expressions can also be used to do more complex comparisons, as shown in Figure 218 A More Complex Comparison Expression. The expression will determine if B is between A and C.
The LIM and MEQ functions are shown in Figure 219 Complex Comparison Functions. The first three functions will compare a test value to high and low limits. If the high limit is above the low limit and the test value is between or equal to one limit, then it will be true. If the low limit is above the high limit then the function is only true for test values outside the range. The masked equal will compare the bits of two numbers, but only those bits that are true in the mask.
Figure 220 A Number Line for the LIM Function shows a numberline that helps determine when the LIM function will be true.
File to file comparisons are also permitted using the FSC instruction shown in Figure 221 File Comparison Using Expressions. The instruction uses the control word c_0. It will interpret the expression 10 times, doing two comparisons per logic scan (the Mode is 2). The comparisons will be f<f, f<f then f<f, f<f then f<f, f<f then f<f, f<f then f<f, f<f. The function will continue until a false statement is found, or the comparison completes. If the comparison completes with no false statements the output A will then be true. The mode could have also been All to execute all the comparisons in one scan, or Increment to update when the input to the function is true - in this case the input is a plain wire, so it will always be true.
Figure 222 Boolean Functions shows Boolean algebra functions. The function shown will obtain data words from bit memory, perform an and operation, and store the results in a new location in bit memory. These functions are all oriented to word level operations. The ability to perform Boolean operations allows logical operations on more than a single bit.
The use of the Boolean functions is shown in Figure 223 Boolean Function Example. The first three functions require two arguments, while the last function only requires one. The AND function will only turn on bits in the result that are true in both of the source words. The OR function will turn on a bit in the result word if either of the source word bits is on. The XOR function will only turn on a bit in the result word if the bit is on in only one of the source words. The NOT function reverses all of the bits in the source word.
Problem: A switch will increment a counter on when engaged. This counter can be reset by a second switch. The value in the counter should be multiplied by 2, and then displayed as a BCD output using (O:0.0/0 - O:0.0/7)
Problem: Design a for-next loop that is similar to ones found in traditional programming languages. When A is true the ladder logic should be active for 10 scans, and the scan number from 1 to 10 should be stored in n0.
Problem: Create a ladder logic program that will start when input A is turned on and calculate the series below. The value of n will start at 1 and with each scan of the ladder logic n will increase until n=100. While the sequence is being incremented, any change in A will be ignored.
Problem: We are designing a movie theater marquee, and they want the traditional flashing lights. The lights have been connected to the outputs of the PLC from O to O - an INT. When the PLC is turned, every second light should be on. Every half second the lights should reverse. The result will be that in one second two lights side-by-side will be on half a second each.
3. A switch will increment a counter on when engaged. This counter can be reset by a second switch. The value in the counter should be multiplied by 5, and then displayed as a binary output using output integer 'O_lights'.
4. Create a ladder logic program that will start when input A is turned on and calculate the series below. The value of n will start at 0 and with each scan of the ladder logic n will increase by 2 until n=20. While the sequence is being incremented, any change in A will be ignored.
6. A thumbwheel input card acquires a four digit BCD count. A sensor detects parts dropping down a chute. When the count matches the BCD value the chute is closed, and a light is turned on until a reset button is pushed. A start button must be pushed to start the part feeding. Develop the ladder logic for this controller. Use a structured design technique such as a state diagram.
13. A machine is being designed for a foreign parts supplier. As part of the contractual agreement the logic will run until February 26, 2008. However, after that date the machine will enable a `contract_expired' value and no longer run. Write the ladder logic.
15. The input bits from 'input_card_A' are to be read and XORed with the inputs from 'input_card_B'. The result is to be written to the output card 'output_card'. If the binary pattern of the least 16 output bits is 1010 0101 0111 0110 then the output 'match_bell' will be set. Write the ladder logic.
17. A machine ejects parts into three chutes. Three optical sensors (A, B and C) are positioned in each of the slots to count the parts. The count should start when the reset (R) button is pushed. The count will stop, and an indicator light (L) turned on when the average number of parts counted is 100 or greater.
18. a) Write ladder logic to calculate and store the binary (geometric) sequence in 32 bit integer (DINT) memory starting at n up to n so that n = 1, n = 2, n = 4, n = 16, n = 64, etc. b) Will the program operate as expected?
2. Write ladder logic to calculate the average of the values from thickness to thickness. The operation should start after a momentary contact push button A is pushed. The result should be stored in 'thickness_avg'. If button B is pushed, all operations should be complete in a single scan. Otherwise, only ten values will be calculated each scan. (Note: this means that it will take 10 scans to complete the calculation if A is pushed.)
4. A program is to perform the following actions for a self-service security check. The device will allow bags to be inserted to the test chamber through an entrance door. If the bag passes the check it can be removed through an exit door, otherwise an alarm is sounded. Create a state diagram using the steps below.
5. The scan results in two real values `nitrates' and `mass'. The calculation below is performed. If the `risk' is below 0.3, or above 23.5, then the machine enters an alarm state (step 8), otherwise it continues to step 6.
7. an incremental mode will do one calculation when the input to the function is a positive edge - goes from false to true. The all mode will attempt to complete the calculation in a single scan. If a number is used, the function will do that many calculations per scan while the input is true.
This chapter covers advanced functions, but this definition is somewhat arbitrary. The array functions in the last chapter could be classified as advanced functions. The functions in this section tend to do things that are not oriented to simple data values. The list functions will allow storage and recovery of bits and words. These functions are useful when implementing buffered and queued systems. The program control functions will do things that don't follow the simple model of ladder logic execution - these functions recognize the program is executed left-to-right top-to-bottom. Finally, the input output functions will be discussed, and how they allow us to work around the normal input and output scans.
Shift registers are oriented to single data bits. A shift register can only hold so many bits, so when a new bit is put in, one must be removed. An example of a shift register is given in Figure 228 Shift Register Functions. The shift register is the word 'example', and it is 5 bits long. When A becomes true the bits all shift right to the least significant bit. When they shift a new bit is needed, and it is taken from new_bit. The bit that is shifted out, on the right hand side, is moved to the control word UL (unload) bit c.UL. This function will not complete in a single ladder logic scan, so the control word c is used. The function is edge triggered, so A would have to turn on 5 more times before the bit just loaded from new_bit would emerge to the unload bit. When A has a positive edge the 5 bits in example will be shifted in memory. In this case it is taking the value of bit example.0 and putting it in the control word bit c.UL. It then shifts the bits once to the right, example.0 = example.1 then example.1 = example.2 then example.2 = example.3 then example.3 = example.4. Then the input bit is put into the most significant bit example.4 = new_bit. The bits in the shift register would be shifted to the left with the BSR function.
There are other types of shift registers not implemented in the ControlLogix processors. These are shown in Figure 229 Shift Register Variations. The primary difference is that the arithmetic shifts will put a zero into the shift register, instead of allowing an arbitrary bit. The rotate functions shift bits around in an endless circle. These functions can also be implemented using the BSR and BSL instructions when needed.
Stacks store integer words in a two ended buffer. There are two basic types of stacks; first-on-first-out (FIFO) and last-in-first-out (LIFO). As words are pushed on the stack it gets larger, when words are pulled off it gets smaller. When you retrieve a word from a LIFO stack you get the word that is the entry end of the stack. But, when you get a word from a FIFO stack you get the word from the exit end of the stack (it has also been there the longest). A useful analogy is a pile of work on your desk. As new work arrives you drop it on the top of the stack. If your stack is LIFO, you pick your next job from the top of the pile. If your stack is FIFO, you pick your work from the bottom of the pile. Stacks are very helpful when dealing with practical situations such as buffers in production lines. If the buffer is only a delay then a FIFO stack will keep the data in order. If product is buffered by piling it up then a LIFO stack works better, as shown in Figure 230 Buffers and Stack Types. In a FIFO stack the parts pass through an entry gate, but are stopped by the exit gate. In the LIFO stack the parts enter the stack and lower the plate, when more parts are needed the plate is raised. In this arrangement the order of the parts in the stack will be reversed.
The ladder logic functions are FFL to load the stack, and FFU to unload it. The example in Figure 231 FIFO Stack Instructions shows two instructions to load and unload a FIFO stack. The first time this FFL is activated (edge triggered) it will grab the word (16 bits) from the input card word_in and store them on the stack, at stack. The next value would be stored at stack, and so on until the stack length is reached at stack. When the FFU is activated the word at stack will be moved to the output card word_out. The values on the stack will be shifted up so that the value previously in stack moves to stack, stack moves to stack, etc. If the stack is full or empty, an a load or unload occurs the error bit will be set c.ER.
The LIFO stack commands are shown in Figure 232 LIFO Stack Commands. As values are loaded on the stack the will be added sequentially stack, stack, stack, stack then stack. When values are unloaded they will be taken from the last loaded position, so if the stack is full the value of stack will be removed first.
A mechanical music box is a simple example of a sequencer. As the drum in the music box turns it has small pins that will sound different notes. The song sequence is fixed, and it always follows the same pattern. Traffic light controllers are now controlled with electronics, but previously they used sequencers that were based on a rotating drum with cams that would open and close relay terminals. One of these cams is shown in Figure 233 A Single Cam in a Drum Sequencer. The cam rotates slowly, and the surfaces under the contacts will rise and fall to open and close contacts. For a traffic light controllers the speed of rotation would set the total cycle time for the traffic lights. Each cam will control one light, and by adjusting the circumferential length of rises and drops the on and off times can be adjusted.
A PLC sequencer uses a list of words in memory. It recalls the words one at a time and moves the words to another memory location or to outputs. When the end of the list is reached the sequencer will return to the first word and the process begins again. A sequencer is shown in Figure 234 The Basic Sequencer Instruction. The SQO instruction will retrieve words from bit memory starting at sequence. The length is 4 so the end of the list will be at sequence+4 or sequence (the total length of 'sequence' is actually 5). The sequencer is edge triggered, and each time A becomes true the retrieve a word from the list and move it to output_lights. When the sequencer reaches the end of the list the sequencer will return to the second position in the list sequence. The first item in the list is sequence, and it will only be sent to the output if the SQO instruction is active on the first scan of the PLC, otherwise the first word sent to the output is sequence. The mask value is 000Fh, or 0000000000001111b so only the four least significant bits will be transferred to the output, the other output bits will not be changed. The other instructions allow words to be added or removed from the sequencer list.
An example of a sequencer is given in Figure 235 A Sequencer For Traffic Light Control for traffic light control. The light patterns are stored in memory (entered manually by the programmer). These are then moved out to the output card as the function is activated. The mask (003Fh = 0000000000111111b) is used so that only the 6 least significant bits are changed.
Figure 236 Sequencer Instruction Examples shows examples of the other sequencer functions. When A goes from false to true, the SQL function will move to the next position in the sequencer list, for example sequence_rem, and load a value from input_word. If A then remains true the value in sequence_rem will be overwritten each scan. When the end of the sequencer list is encountered, the position will reset to 1.
The sequencer input (SQI) function will compare values in the sequence list to the source compare_word while B is true. If the two values match match_output will stay on while B remains true. The mask value is 0005h or 0000000000000101b, so only the first and third bits will be compared. This instruction does not automatically change the position, so logic is shown that will increment the position every scan while C is true.
These functions allow parts of ladder logic programs to be included or excluded from each program scan. These functions are similar to functions in other programming languages such as C, C++, Java, Pascal, etc.
Entire sections of programs can be bypassed using the JMP instruction in Figure 237 A JMP Instruction. If A is true the program will jump over the next three lines to the line with the LBL Label_01. If A is false the JMP statement will be ignored, and the program scan will continue normally. If A is false X will have the same value as B, and Y can be turned on by C and off by D. If A is true then X and Y will keep their previous values, unlike the MCR statement. Any instructions that follow the LBL statement will not be affected by the JMP so Z will always be equal to E. If a jump statement is true the program will run faster.
Subroutines jump to other programs, as is shown in Figure 238 Subroutines. When A is true the JSR function will jump to the subroutine program in file 3. The JSR instruction two arguments are passed, A and B. The subroutine (SBR) function receives these two arguments and puts them in X and Y. When B is true the subroutine will end and return to program file 2 where it was called (Note: a subroutine can have multiple returns). The RET function returns the value Z to the calling program where it is put in location C. By passing arguments (instead of having the subroutine use global memory locations) the subroutine can be used for more than one operation. For example, a subroutine could be given an angle in degrees and return a value in radians. A subroutine can be called more than once in a program, but if not called, it will be ignored.
The 'FOR' function in Figure 239 A For-Next Loop will (within the same logic scan) call a subroutine 5 times (from 0 to 9 in steps of 2) when A is true. In this example the subroutine contains an ADD function that will add 1 to the value of i. So when this 'FOR' statement is complete the value of j will 5 larger. For-next loops can be put inside other for-next loops, this is called nesting. If A was false the program not call the subroutine. When A is true, all 5 loops will be completed in a single program scan. If B is true the NXT statement will return to the FOR instruction, and stop looping, even if the loop is not complete. Care must be used for this instruction so that the ladder logic does not get caught in an infinite, or long loop - if this happens the PLC will experience a fault and halt.
Ladder logic programs always have an end statement, as shown in Figure 240 End Statements. Most modern software automatically inserts this. PLCs will experience faults if this is not present. The temporary end (TND) statement will skip the remaining portion of a program. If C is true then the program will end, and the next line with D and Y will be ignored. If C is false then the TND will have no effect and Y will be equal to D.
The one shot contact in Figure 241 One Shot Instruction can be used to turn on a ladder run for a single scan. When A has a positive edge the oneshot will turn on the run for a single scan. Bit last_bit_value is used here to track to rung status.
A fault condition can stop a PLC. If the PLC is controlling a dangerous process this could lead to significant damage to personnel and equipment. There are two types of faults that occur; terminal (major) and warnings (minor). A minor fault will normally set an error bit, but not stop the PLC. A major failure will normally stop the PLC, but an interrupt can be used to run a program that can reset the fault bit in memory and continue operation (or shut down safely). Not all major faults are recoverable. A complete list of these faults is available in PLC processor manuals.
The PLC can be set up to run a program when a fault occurs, such as a divide by zero. These routines are program files under 'Control Fault Handler'. These routines will be called when a fault occurs. Values are set in status memory to indicate the source of the faults.
Figure 242 A Fault Recovery Program shows two example programs. The default program 'MainProgram' will generate a fault, and the interrupt program called 'Recover' will detect the fault and fix it. When A is true a compute function will interpret the expression, using indirect addressing. If B becomes true then the value in n will become negative. If A becomes true after this then the expression will become n +10. The negative value for the address will cause a fault, and program file 'Recover' will be run.
In the fault program the fault values are read with an GSV function and the fault code is checked. In this case the error will result in a status error of 0x2104. When this is the case the n is set back to zero, and the fault code in fault_data is cleared. This value is then written back to the status memory using an SSV function. If the fault was not cleared the PLC would enter a fault state and stop (the fault light on the front of the PLC will turn on).
Allen Bradley allows interrupts, but they are called periodic/event tasks. By default the main program is defined as a 'continuous' task, meaning that it runs as often as possible, typically 10-100 times per second. Only one continuos task is allowed. A 'periodic' task can be created that has a given update time. 'Event' tasks can be triggered by a variety of actions, including input changes, tag changes, EVENT instructions, and servo control changes.
A timed interrupt will run a program at regular intervals. To set a timed interrupt the program in file number should be put in S2:31. The program will be run every S2:30 times 1 milliseconds. In Figure 243 Disabling Interrupts program 2 will set up an interrupt that will run program 3 every 5 seconds. Program 3 will add the value of I:000 to N7:10. This type of timed interrupt is very useful when controlling processes where a constant time interval is important. The timed interrupts are enabled by setting bit S2:2/1 in PLC-5s.
When activated, interrupt routines will stop the PLC, and the ladder logic is interpreted immediately. If multiple interrupts occur at the same time the ones with the higher priority will occur first. If the PLC is in the middle of a program scan when interrupted this can cause problems. To overcome this a program can disable interrupts temporarily using the UID and UIE functions. Figure 243 Disabling Interrupts shows an example where the interrupts are disabled for a FAL instruction. Only the ladder logic between the UID and UIE will be disabled, the first line of ladder logic could be interrupted. This would be important if an interrupt routine could change a value between n and n. For example, an interrupt could occur while the FAL instruction was at n=n+5. The interrupt could change the values of n and n, and then end. The FAL instruction would then complete the calculations. But, the results would be based on the old value for n and the new value for n.
The input scan normally records the inputs before the program scan, and the output scan normally updates the outputs after the program scan, as shown in Figure 244 Input, Program and Output Scan. Immediate input and output instructions can be used to update some of the inputs or outputs during the program scan.
Figure 245 Immediate Inputs and Outputs shows a segment within a program that will update the input word input_value, determine a new value for output_value.1, and update the output word output_value immediately. The process can be repeated many times during the program scan allowing faster than normal response times. These instructions are less useful on newer PLCs with networked hardware and software, so Allen Bradley does not support IIN for newer PLCs such as ControlLogix, even though the IOT is supported.
The block logic method was introduced in chapter 8 to implement state diagrams using MCR blocks. A better implementation of this method is possible using subroutines in program files. The ladder logic for each state will be put in separate subroutines.
Consider the state diagram in Figure 246 A State Diagram. This state diagram shows three states with four transitions. There is a potential conflict between transitions A and C.
The main program for the state diagram is shown in Figure 247 The Main Program for the State Diagram (Program File 2). This program is stored in the MainProgram so that it is run by default. The first rung in the program resets the states so that the first scan state is on, while the other states are turned off. The following logic will call the subroutine for each state. The logic that uses the current state is placed in the main program. It is also possible to put this logic in the state subroutines.
The ladder logic for each of the state subroutines is shown in Figure 248 Subroutines for the States. These blocks of logic examine the transitions and change states as required. Note that state STB includes logic to give state C higher priority, by blocking A when C is active.
The arrangement of the subroutines in Figure 247 The Main Program for the State Diagram (Program File 2) and Figure 248 Subroutines for the States could experience problems with racing conditions. For example, if STA is active, and both B and C are true at the same time the main program would jump to subroutine 3 where STB would be turned on. then the main program would jump to subroutine 4 where STC would be turned on. For the output logic STB would never have been on. If this problem might occur, the state diagram can be modified to slow down these race conditions. Figure 249 A Modified State Diagram to Prevent Racing shows a technique that blocks race conditions by blocking a transition out of a state until the transition into a state is finished. The solution may not always be appropriate.
Another solution is to force the transition to wait for one scan as shown in Figure 250 Subroutines for State STA to Prevent Racing for state STA. A wait bit is used to indicate when a delay of at least one scan has occurred since the transition out of the state B became true. The wait bit is set by having the exit transition B true. The B3/0-STA will turn off the wait B3/10-wait when the transition to state B3/1-STB has occurred. If the wait was not turned off, it would still be on the next time we return to this state.
Problem: Design and write ladder logic for a simple traffic light controller that has a single fixed sequence of 16 seconds for both green lights and 4 second for both yellow lights. Use either stacks or sequencers.
1. Design and write ladder logic for a simple traffic light controller that has a single fixed sequence of 16 seconds for both green lights and 4 seconds for both yellow lights. Use shift registers to implement it.
2. A PLC is to be used to control a carillon (a bell tower). Each bell corresponds to a musical note and each has a pneumatic actuator that will ring it. The table below defines the tune to be programmed. Write a program that will run the tune once each time a start button is pushed. A stop button will stop the song.
3. Consider a conveyor where parts enter on one end. they will be checked to be in a left or right orientation with a vision system. If neither left nor right is found, the part will be placed in a reject bin. The conveyor layout is shown below.
8. Design a ladder logic program that will run once every 30 seconds using interrupts. It will check to see if a water tank is full with input tank_full. If it is full, then a shutdown value ('shutdown') will be latched on.
9. At MOdern Manufacturing (MOMs), pancakes are made by multiple machines in three flavors; chocolate, blueberry and plain. When the pancakes are complete they travel along a single belt, in no specific order. They are buffered by putting them on the top of a stack. When they arrive at the stack the input 'detected' becomes true, and the stack is loaded by making output 'stack' high for one second. As the pancakes are put on the stack, a color detector is used to determine the pancakes type. A value is put in 'color_stack' (1=chocolate, 2=blueberry, 3=plain) and bit 'unload' is made true. A pancake can be requested by pushing a button ('chocolate', 'blueberry', 'plain'). Pancakes are then unloaded from the stack, by making 'unload' high for 1 second, until the desired flavor is removed. Any pancakes removed aren't returned to the stack. Design a ladder logic program to control this stack.
11. Write a ladder logic program to drive a set of flashing lights. In total there are 10 lights connected to 'lights' to 'lights'. At any time every one out of three lights should be on. Every second the pattern on the lights should shift towards 'lights'.
1. Using 3 different methods write a program that will continuously cycle a pattern of 12 lights connected to a PLC output card. The pattern should have one out of every three lights set. The light patterns should appear to move endlessly in one direction.
3. Write an interrupt driven program that will run once every 5 seconds and calculate the average of the numbers from 'f' to 'f', and store the result in 'f_avg'. It will also determine the median and store it in 'f_med'.
4. Write a program for SPC (Statistical Process Control) that will run once every 20 minutes using timed interrupts. When the program runs it will calculate the average of the data values in memory locations 'f' to 'f' (Note: these values are written into the PLC memory by another PLC using networking). The program will also find the range of the values by subtracting the maximum from the minimum value. The average will be compared to upper (f_ucl_x) and lower (f_lcl_x) limits. The range will also be compared to upper (f_ucl_r) and lower (f_lcl_r) limits. If the average, or range values are outside the limits, the process will stop, and an `out of control' light will be turned on. The process will use start and stop buttons, and when running it will set memory bit 'in_control'.
5. Develop a ladder logic program to control a light display outside a theater. The display consists of a row of 8 lights. When a patron walks past an optical sensor the lights will turn on in sequence, moving in the same direction. Initially all lights are off. Once triggered the lights turn on sequentially until all eight lights are on 1.6 seconds latter. After a delay of another 0.4 seconds the lights start to turn off until all are off, again moving in the same direction as the patron. The effect is a moving light pattern that follows the patron as they walk into the theater.
iii) Provide the capability to change the number of motor starts being tracked, prior to triggering of the indicator light. HINT: This capability will only require the change of a value in a compare statement rather than the addition of new lines of logic.
7. Parts arrive at an oven on a conveyor belt and pass a barcode scanner. When the barcode scanner reads a valid barcode it outputs the numeric code as 32 bits to 'scanner_value' and sets input 'scanner_value_valid'. The PLC must store this code until the parts pass through the oven. When the parts leave the oven they are detected by a proximity sensor connected to 'part_leaving'. The barcode value read before must be output to 'barcode_output'. Write the ladder logic for the process. There can be up to ten parts inside the oven at any time.
11. Write a traffic light program using a sequencer. Keep the program simple with a 4 second green and yellow in both directions. But, the traffic lights should only function when the system clock (WALLCLOCKTIME) is between 7am and 8pm. Other times the lights should be left green in one direction and red in the other.
4. In MCR blocks the outputs will all be forced off. This is not a problem for outputs such as retentive timers and latches, but it will force off normal outputs. JMP statements will skip over logic and not examine it or force it off.
5. Timed interrupts are useful for processes that must happen at regular time intervals. Polled interrupts are useful to monitor inputs that must be checked more frequently than the ladder scan time will permit. Fault interrupts are important for processes where the complete failure of the PLC could be dangerous.
10. a) Timed, polled and fault, b) They remove the need to check for times or scan for memory changes, and they allow events to occur more often than the ladder logic is scanned. c) A few rungs of ladder logic might count on a value remaining constant, but an interrupt might change the memory, thereby corrupting the logic. d) The UID and UIE
13. The first element of the array is loaded if the input to the SQO is true on the first scan, but after that it is never used again. So in this example the array value will be used the first time, and the array to array values will be used for the normal sequence.
In previous decades (and now) PLC manufacturers favored "proprietary" or "closed" designs. This gave them control over the technology and customers. Essentially, a proprietary architecture kept some of the details of a system secret. This tended to limit customer choices and options. It was quite common to spend great sums of money to install a control system, and then be unable to perform some simple task because the manufacturer did not sell that type of solution. In these situations customers often had two choices; wait for the next release of the hardware/software and hope for a solution, or pay exorbitant fees to have custom work done by the manufacturer.
"Open" systems have been around for decades, but only recently has their value been recognized. The most significant step occurred in 1981 when IBM broke from it's corporate tradition and released a personal computer that could use hardware and software from other companies. Since that time IBM lost control of it's child, but it has now adopted the open system philosophy as a core business strategy. All of the details of an open system are available for users and developers to use and modify. This has produced very stable, flexible and inexpensive solutions. Controls manufacturers are also moving toward open systems. One such effort involves Devicenet, which is discussed in a later chapter.
A troubling trend that you should be aware of is that many manufacturers are mislabeling closed and semi-closed systems as open. An easy acid test for this type of system is the question "does the system allow me to choose alternate suppliers for all of the components?" If even one component can only be purchased from a single source, the system is not open. When you have a choice you should avoid "not-so-open" solutions.
The IEC 1131 standards were developed to be a common and open framework for PLC architecture, agreed to by many standards groups and manufacturers. They were initially approved in 1992, and since then they have been reviewed as the IEC-61131 standards. The main components of the standard are;
This standard is defined loosely enough so that each manufacturer will be able to keep their own look-and-feel, but the core data representations should become similar. The programming models (IEC 61131-3) have the greatest impact on the user.
Most manufacturers already support most of these models, except Function Block programming. The programming model also describes standard functions and models. Most of the functions in the models are similar to the functions described in this book. The standard data types are shown in Figure 253 IEC 61131-3 Data Types.
Previous chapters have described Ladder Logic (LD) programming in detail, and Sequential Function Chart (SFC) programming briefly. Following chapters will discuss Instruction List (IL), Structured Test (ST) and Function Block Diagram (FBD) programming in greater detail.
Personal computers have been driving the open architecture revolution. A personal computer is capable of replacing a PLC, given the right input and output components. As a result there have been many companies developing products to do control using the personal computer architecture. Most of these devices use two basic variations;
In all cases the system is running a standard operating system, with some connection to rugged input and output cards. The PLC functions are performed by a virtual PLC that interprets the ladder logic and simulates a PLC. These can be fast, and more capable than a stand alone PLC, but also prone to the reliability problems of normal computers. For example, if an employee installs and runs a game on the control computer, the controller may act erratically, or stop working completely. Solutions to these problems are being developed, and the stability problem should be solved in the near future.
2. The IEC standards are a first step to make programming methods between PLCs the same. The standard does not make programming uniform across all programming platforms, so it is not yet ready to develop completely portable controller programs and hardware.
Instruction list (IL) programming is defined as part of the IEC 61131 standard. It uses very simple instructions similar to the original mnemonic programming languages developed for PLCs. (Note: some readers will recognize the similarity to assembly language programming.) It is the most fundamental level of programming language - all other programming languages can be converted to IL programs. Most programmers do not use IL programming on a daily basis, unless they are using hand held programmers.
To ease understanding, this chapter will focus on the process of converting ladder logic to IL programs. A simple example is shown in Figure 254 An Instruction List Example using the definitions found in the IEC standard. The rung of ladder logic contains four inputs, and one output. It can be expressed in a Boolean equation using parentheses. The equation can then be directly converted to instructions. The beginning of the program begins at the START: label. At this point the first value is loaded, and the rest of the expression is broken up into small segments. The only significant change is that AND NOT becomes ANDN.
An important concept in this programming language is the stack. (Note: if you use a calculator with RPN you are already familiar with this.) You can think of it as a do later list. With the equation in Figure 254 An Instruction List Example the first term in the expression is LD I:000/00, but the first calculation should be ( I:000/02 AND NOT I:000/03). The instruction values are pushed on the stack until the most deeply nested term is found. Figure 255 Using a Stack for Instruction Lists illustrates how the expression is pushed on the stack. The LD instruction pushes the first value on the stack. The next instruction is an AND, but it is followed by a '(' so the stack must drop down. The OR( that follows also has the same effect. The ANDN instruction does not need to wait, so the calculation is done immediately and a result_1 remains. The next two ')' instructions remove the blocking '(' instruction from the stack, and allow the remaining OR I:000/1 and AND I:000/0 instructions to be done. The final result should be a single bit result_3. Two examples follow given different input conditions. If the final result in the stack is 0, then the output ST O:001/0 will set the output, otherwise it will turn it off.
A list of operations is given in Figure 256 IL Operations. The modifiers are;
Allen Bradley only supports IL programming on the Micrologix 1000, and does not plan to support it in the future. Examples of the equivalent ladder logic and IL programs are shown in Figure 257 IL Equivalents for Ladder Logic and Figure 258 IL Programs for Multiple Outputs. The programs in Figure 257 IL Equivalents for Ladder Logic show different variations when there is only a single output. Multiple IL programs are given where available. When looking at these examples recall the stack concept. When a LD or LDN instruction is encountered it will put a value on the top of the stack. The ANB and ORB instructions will remove the top two values from the stack, and replace them with a single value that is the result of an Boolean operation. The AND and OR functions take one value off the top of the stack, perform a Boolean operation and put the result on the top of the stack. The equivalent programs (to the right) are shorter and will run faster.
Figure 258 IL Programs for Multiple Outputs shows the IL programs that are generated when there are multiple outputs. This often requires that the stack be used to preserve values that would be lost normally using the MPS, MPP and MRD functions. The MPS instruction will store the current value of the top of the stack. Consider the first example with two outputs, the value of A is loaded on the stack with LD A. The instruction ST X examines the top of the stack, but does not remove the value, so it is still available for ST Y. In the third example the value of the top of the stack would not be correct when the second output rung was examined. So, when the output branch occurs the value at the top of the stack is copied using MPS, and pushed on the top of the stack. The copy is then ANDed with B and used to set X. After this the value at the top is pulled off with the MPP instruction, leaving the value at the top what is was before the first output rung. The last example shows multiple output rungs. Before the first rung the value is copied on the stack using MPS. Before the last rung the value at the top of the stack is discarded with the MPP instruction. But, the two center instructions use MRD to copy the right value to the top of the stack - it could be replaced with MPP then MPS.
Complex instructions can be represented in IL, as shown in Figure 259 A Complex Ladder Rung and Equivalent IL. Here the function are listed by their mnemonics, and this is followed by the arguments for the functions. The second line does not have any input contacts, so the stack is loaded with a true value.
An example of an instruction language subroutine is shown in Figure 260 An Example of an IL Program. This program will examine a BCD input on card I:000, and if it becomes higher than 100 then 2 seconds later output O:001/00 will turn on.
If you know how to program in any high level language, such as Basic or C, you will be comfortable with Structured Text (ST) programming. ST programming is part of the IEC 61131 standard. An example program is shown in Figure 261 A Structured Text Example Program. The program is called main and is defined between the statements PROGRAM and END_PROGRAM. Every program begins with statements the define the variables. In this case the variable i is defined to be an integer. The program follows the variable declarations. This program counts from 0 to 10 with a loop. When the example program starts the value of integer memory i will be set to zero. The REPEAT and END_REPEAT statements define the loop. The UNTIL statement defines when the loop must end. A line is present to increment the value of i for each loop.
One important difference between ST and traditional programming languages is the nature of program flow control. A ST program will be run from beginning to end many times each second. A traditional program should not reach the end until it is completely finished. In the previous example the loop could lead to a program that (with some modification) might go into an infinite loop. If this were to happen during a control application the controller would stop responding, the process might become dangerous, and the controller watchdog timer would force a fault.
The language is composed of written statements separated by semicolons. The statements use predefined statements and program subroutines to change variables. The variables can be explicitly defined values, internally stored variables, or inputs and outputs. Spaces can be used to separate statements and variables, although they are not often necessary. Structured text is not case sensitive, but it can be useful to make variables lower case, and make statements upper case. Indenting and comments should also be used to increase readability and documents the program. Consider the example shown in Figure 262 A Syntax and Structured Programming Example.
ST programs allow named variables to be defined. This is similar to the use of symbols when programming in ladder logic. When selecting variable names they must begin with a letter, but after that they can include combinations of letters, numbers, and some symbols such as '_'. Variable names are not case sensitive and can include any combination of upper and lower case letters. Variable names must also be the same as other key words in the system as shown in Figure 263 Acceptable Variable Names. In addition, these variable must not have the same name as predefined functions, or user defined functions.
When defining variables one of the declarations in Figure 264 Variable Declarations can be used. These define the scope of the variables. The VAR_INPUT, VAR_OUTPUT and VAR_IN_OUT declarations are used for variables that are passed as arguments to the program or function. The RETAIN declaration is used to retain a variable value, even when the PLC power has been cycled. This is similar to a latch application. As mentioned before these are not used when writing Allen Bradley programs, but they are used when defining tags to be used by the structured programs.
Examples of variable declarations are given in Figure 265 Variable Declaration Examples.
Basic numbers are shown in Figure 266 Literal Number Examples. Note the underline `_' can be ignored, it can be used to break up long numbers, ie. 10_000 = 10000. These are the literal values discussed for Ladder Logic.
Character strings defined as shown in Figure 267 Character String Data.
Basic time and date values are described in Figure 268 Time Duration Examples and Figure 269 Time and Date Examples. Although it should be noted that for ControlLogix the GSV function is used to get the values.
The math functions available for structured text programs are listed in Figure 270 Math Functions. It is worth noting that these functions match the structure of those available for ladder logic. Other, more advanced, functions are also available - a general rule of thumb is if a function is available in one language, it is often available for others.
Functions for logical comparison are given in Figure 271 Comparisons. These will be used in expressions such as IF-THEN statements.
Boolean algebra functions are available, as shown in Figure 272 Boolean Functions. The can be applied to bits or integers.
The precedence of operations are listed in Figure 273 Operator Precedence from highest to lowest. As normal expressions that are the most deeply nested between brackets will be solved first. (Note: when in doubt use brackets to ensure you get the sequence you expect.)
Common language structures include those listed in Figure 274 Flow Control Functions.
Special instructions include those shown in Figure 275 Special Instructions.
Consider the program in Figure 276 A Program To Average Five Values In Memory With A For-Loop to find the average of five values in a real array 'f'. The FOR loop in the example will loop five times adding the array values. After that the sum is divided to get the average.
The previous example is implemented with a WHILE loop in Figure 277 A Program To Average Five Values In Memory With A While-Loop. The main differences is that the initial value and update for 'i' must be done manually.
The example in Figure 278 Example With An If Statement shows the use of an IF statement. The example begins with a timer. These are handled slightly differently in ST programs. In this case if 'b' is true the timer will be active, if it is false the timer will reset. The second instruction calls 'TONR' to update the timer. (Note: ST programs use the FBD_TIMER type, instead of the TIMER type.) The IF statement works as normal, only one of the three cases will occur with the ELSE defining the default if the other two fail.
Figure 279 Use of a Case Statement shows the use of a CASE statement to set bits 0 to 3 of 'a' based upon the value of 'test'. In the event none of the values are matched, 'a' will be set to zero, turning off all bits.
The example in Figure 280 Function Data Conversions accepts a BCD input from 'bcd_input' and uses it to change the delay time for TON delay time. When the input 'test_input' is true the time will count. When the timer is done 'set' will become true.
Most of the IEC61131-3 defined functions with arguments are given in Figure 281 Structured Text Functions. Some of the functions can be overloaded, for example ADD could have more than two values to add, and others have optional arguments. In most cases the optional arguments are things like preset values for timers. When arguments are left out they default to values, typically 0. ControlLogix uses many of the standard function names and arguments but does not support the overloading part of the standard.
Control programs can become very large. When written in a single program these become confusing, and hard to write/debug. The best way to avoid the endless main program is to use subroutines to divide the main program. The IEC61131 standard allows the definition of subroutines/functions as shown in Figure 282 Declaration of a Function. The function will accept up to three inputs and perform a simple calculation. It then returns one value. As mentioned before ControlLogix does not support overloading, so the function would not be able to have a variable size argument list.
The example beginning in Figure 284 Traffic Light Subroutine shows a subroutine implementing traffic lights in ST for the ControlLogix processor. The variable 'state' is used to keep track of the current state of the lights. Timer enable bits are used to determine which transition should be checked. Finally the value of 'state' is used to set the outputs. (Note: this is possible because '=' and ':=' are not the same.) This subroutine would be stored under a name such as 'TrafficLights'. It would then be called from the main program as shown in Figure 283 The Main Traffic Light Program.
4. Write a ST program to accept an input string `teststring' with the sample format of `XWT55.36KG'. The program should extract the 5 digit number in the middle of the string starting at the 4th position. If the number is less than or equal to 20, or greater than 60, the output Y should be set.
All of the previous methods are well suited to processes that have a single state active at any one time. This is adequate for simpler machines and processes, but more complex machines are designed perform simultaneous operations. This requires a controller that is capable of concurrent processing - this means more than one state will be active at any one time. This could be achieved with multiple state diagrams, or with more mature techniques such as Sequential Function Charts.
Sequential Function Charts (SFCs) are a graphical technique for writing concurrent control programs. (Note: They are also known as Grafcet or IEC 848.) SFCs are a subset of the more complex Petri net techniques that are discussed in another chapter. The basic elements of an SFC diagram are shown in Figure 285 Basic Elements in SFCs and Figure 286 Basic Elements in SFCs.
The example in Figure 287 SFC for Control of Two Doors with Security Codes shows a SFC for control of a two door security system. One door requires a two digit entry code, the second door requires a three digit entry code. The execution of the system starts at the top of the diagram at the Start block when the power is turned on. There is an action associated with the Start block that locks the doors. (Note: in practice the SFC uses ladder logic for inputs and outputs, but this is not shown on the diagram.) After the start block the diagram immediately splits the execution into two processes and both steps 1 and 6 are active. Steps are quite similar to states in state diagrams. The transitions are similar to transitions in state diagrams, but they are drawn with thick lines that cross the normal transition path. When the right logical conditions are satisfied the transition will stop one step and start the next. While step 1 is active there are two possible transitions that could occur. If the first combination digit is correct then step 1 will become inactive and step 2 will become active. If the digit is incorrect then the transition will then go on to wait for the later transition for the 5 second delay, and after that step 5 will be active. Step 1 does not have an action associated, so nothing should be done while waiting for either of the transitions. The logic for both of the doors will repeat once the cycle of combination-unlock-delay-lock has completed.
A simple SFC for controlling a stamping press is shown in Figure 288 SFC for Controlling a Stamping Press. (Note: this controller only has a single thread of execution, so it could also be implemented with state diagrams, flowcharts, or other methods.) In the diagram the press starts in an idle state. when an automatic button is pushed the press will turn on the press power and lights. When a part is detected the press ram will advance down to the bottom limit switch. The press will then retract the ram until the top limit switch is contacted, and the ram will be stopped. A stop button can stop the press only when it is advancing. (Note: normal designs require that stops work all the time.) When the press is stopped a reset button must be pushed before the automatic button can be pushed again. After step 6 the press will wait until the part is not present before waiting for the next part. Without this logic the press would cycle continuously.
The SFC can be converted directly to ladder logic with methods very similar to those used for state diagrams as shown in Figure 289 SFC Implemented in Ladder Logic to Figure 293 SFC Implemented in Ladder Logic. The method shown is patterned after the block logic method. One significant difference is that the transitions must now be considered separately. The ladder logic begins with a section to initialize the states and transitions to a single value. The next section of the ladder logic considers the transitions and then checks for transition conditions. If satisfied the following step or transition can be turned on, and the transition turned off. This is followed by ladder logic to turn on outputs as requires by the steps. This section of ladder logic corresponds to the actions for each step. After that the steps are considered, and the logic moves to the following transitions or steps. The sequence examine transitions, do actions then do steps is very important. If other sequences are used outputs may not be actuated, or steps missed entirely.
Many PLCs also allow SFCs to entered be as graphic diagrams. Small segments of ladder logic must then be entered for each transition and action. Each segment of ladder logic is kept in a separate program. If we consider the previous example the SFC diagram would be numbered as shown in Figure 294 SFC Renumbered. The numbers are sequential and are for both transitions and steps.
Some of the ladder logic for the SFC is shown in Figure 295 Sample Ladder Logic for a Graphical SFC Program. Each program corresponds to the number on the diagram. The ladder logic includes a new instruction, EOT, that will tell the PLC when a transition has completed. When the rung of ladder logic with the EOT output becomes true the SFC will move to the next step or transition. when developing graphical SFCs the ladder logic becomes very simple, and the PLC deals with turning states on and off properly.
SFCs can also be implemented using ladder logic that is not based on latches, or built in SFC capabilities. The previous SFC example is implemented below. The first segment of ladder logic in Figure 296 Ladder logic for transitions is for the transitions. The logic for the steps is shown in Figure 297 Step logic.
These methods are suited to different controller designs. The most basic controllers can be developed using process sequence bits and flowcharts. More complex control problems should be solved with state diagrams. If the controller needs to control concurrent processes the SFC methods could be used. It is also possible to mix methods together. For example, it is quite common to mix state based approaches with normal conditional logic. It is also possible to make a concurrent system using two or more state diagrams.
1. Develop an SFC for a two person assembly station. The station has two presses that may be used at the same time. Each press has a cycle button that will start the advance of the press. A bottom limit switch will stop the advance, and the cylinder must then be retracted until a top limit switch is hit.
2. Create an SFC for traffic light control. The lights should have cross walk buttons for both directions of traffic lights. A normal light sequence for both directions will be green 16 seconds and yellow 4 seconds. If the cross walk button has been pushed, a walk light will be on for 10 seconds, and the green light will be extended to 24 seconds.
Function Block Diagrams (FBDs) are another part of the IEC 61131-3 standard. The primary concept behind a FBD is data flow. In these types of programs the values flow from the inputs to the outputs, through function blocks. A sample FBD is shown in Figure 299 A Simple Calculation and Comparison Program. In this program the inputs A and B are used to calculate a value sin(A) * ln(B). The result of this calculation is compared to C. If the calculated value is less than C then the output X is turned on, otherwise it is turned off. Many readers will note the similarity of the program to block diagrams for control systems.
It is possible to disable part of the FBDs using enables. These are available for each function block but may not be displayed. Figure 300 Using Enables in FBDs shows an XOR calculation. Both of the Boolean AND functions have the enable inputs connected to 'enable'. If 'enable' is true, then the system works as expected and the output 'X' is the exclusive OR of 'A' and 'B'. However if 'enable' is off then the BAND functions will not operate. In this case the 'enable' input is not connected to the BOR function, but because it relies on the outputs from the BAND blocks, it will not function, and the output 'X' will not be changed.
A FBD program is constructed using function blocks that are connected together to define the data exchange. The connecting lines will have a data type that must be compatible on both ends. The inputs and outputs of function blocks can be inverted. This is normally shown with a small circle at the point where the line touches the function block, as shown in Figure 301 Inverting Inputs and Outputs on Function Blocks. (Note: this is NOT available for Allen Bradley RSLogix, so BNOT functions should be used instead.)
The basic functions used in FBD programs are equivalent to the basic set used in Structured Text (ST) programs. Consider the basic addition function shown in Figure 302 A Simple Function Block. The ST function on the left adds A and B, and stores the result in O. The function block on the right is equivalent. By convention the inputs are on the left of the function blocks, and the outputs on the right.
Some functions allow a variable number of arguments. In Figure 303 A Function with A Variable Argument List there is a third value input to the ADD block. This is known as overloading.
The ADD function in the previous example will add all of the arguments in any order and get the same result, but other functions are more particular. Consider the circular limit function shown in Figure 304 Function Argument Lists. In the first ST function the maximum MX, minimum MN and test IN values are all used. In the second function the MX value is not defined and will default to 0. Both of the ST functions relate directly to the function blocks on the right side of the figure.
When developing a complex system it is desirable to create additional function blocks. This can be done with other FBDs, or using other IEC 61131-3 program types. Figure 305 Function Block Equivalencies shows a divide function block created using ST. In this example the first statement declares it as a FUNCTION_BLOCK called divide. The input variables a and b, and the output variable c are declared. In the function the denominator is checked to make sure it is not 0. If not, the division will be performed, otherwise the output will be zero.
A simple state diagram is shown in Figure 306 An Example State Diagram.
The state diagram is implemented in FBD form in Figure 307 An FBD Implementation of a State Diagram Using Transition Equations. In this case the transition equations approach was used, although other methods are equally applicable. The transitions 'STA_TO_STB', "STB_TO_STA', 'STB_TO_STC', and 'STC_TO_STA' are calculated first. These are then used to update the states 'STA', 'STB', and 'STC'. Additional program steps could then be added to drive outputs.
4. Develop a FBD for a system that will monitor a high temperature salt bath. The systems has start and stop buttons as normal. The temperature for the salt bath is available in temp. If the bath is above 250 C then the heater should be turned off. If the temperature is below 220 C then the heater should be turned on. Once the system has been in the acceptable range for 10 minutes the system should shut off.
6. Write a structured text program that reads inputs from `channel 0'. An input string of `CLEAR' will clear a storage array. Up to 100 real values with the format `XXX.XX' will arrive on `channel 0' and are to be stored in the array. If the string `AVG' is received, the average of the array contents will be calculated and written out `Channel 0'.
An analog value is continuous, not discrete, as shown in Figure 308 Logical and Continuous Values. In the previous chapters, techniques were discussed for designing logical control systems that had inputs and outputs that could only be on or off. These systems are less common than the logical control systems, but they are very important. In this chapter we will examine analog inputs and outputs so that we may design continuous control systems in a later chapter.
To input an analog voltage (into a PLC or any other computer) the continuous voltage value must be sampled and then converted to a numerical value by an A/D converter. Figure 309 Sampling an Analog Voltage shows a continuous voltage changing over time. There are three samples shown on the figure. The process of sampling the data is not instantaneous, so each sample has a start and stop time. The time required to acquire the sample is called the sampling time. A/D converters can only acquire a limited number of samples per second. The time between samples is called the sampling period T, and the inverse of the sampling period is the sampling frequency (also called sampling rate). The sampling time is often much smaller than the sampling period. The sampling frequency is specified when buying hardware, but for a PLC a maximum sampling rate might be 20Hz.
A more realistic drawing of sampled data is shown in Figure 310 Parameters for an A/D Conversion. This data is noisier, and even between the start and end of the data sample there is a significant change in the voltage value. The data value sampled will be somewhere between the voltage at the start and end of the sample. The maximum (Vmax) and minimum (Vmin) voltages are a function of the control hardware. These are often specified when purchasing hardware, but reasonable ranges are;
The number of bits of the A/D converter is the number of bits in the result word. If the A/D converter is 8 bit then the result can read up to 256 different voltage levels. Most A/D converters have 12 bits, 16 bit converters are used for precision measurements.
The parameters defined in Figure 310 Parameters for an A/D Conversion can be used to calculate values for A/D converters. These equations are summarized in Figure 311 A/D Converter Equations. Equation 1 relates the number of bits of an A/D converter to the resolution. In a normal A/D converter the minimum range value, Rmin, is zero, however some devices will provide 2's compliment negative numbers for negative voltages. Equation 2 gives the error that can be expected with an A/D converter given the range between the minimum and maximum voltages, and the resolution (this is commonly called the quantization error). Equation 3 relates the voltage range and resolution to the voltage input to estimate the integer that the A/D converter will record. Finally, equation 4 allows a conversion between the integer value from the A/D converter, and a voltage in the computer.
Consider a simple example, a 10 bit A/D converter can read voltages between -10V and 10V. This gives a resolution of 1024, where 0 is -10V and 1023 is +10V. Because there are only 1024 steps there is a maximum error of ±9.8mV. If a voltage of 4.564V is input into the PLC, the A/D converter converts the voltage to an integer value of 745. When we convert this back to a voltage the result is 4.565V. The resulting quantization error is 4.565V-4.564V=+0.001V. This error can be reduced by selecting an A/D converter with more bits. Each bit halves the quantization error.
If the voltage being sampled is changing too fast we may get false readings, as shown in Figure 313 Low Sampling Frequencies Cause Aliasing. In the upper graph the waveform completes seven cycles, and 9 samples are taken. The bottom graph plots out the values read. The sampling frequency was too low, so the signal read appears to be different that it actually is, this is called aliasing.
The Nyquist criterion specifies that sampling frequencies should be at least twice the frequency of the signal being measured, otherwise aliasing will occur. The example in Figure 313 Low Sampling Frequencies Cause Aliasing violated this principle, so the signal was aliased. If this happens in real applications the process will appear to operate erratically. In practice the sample frequency should be 4 or more times faster than the system frequency.
· Noise - Since the sampling window for a signal is short, noise will have added effect on the signal read. For example, a momentary voltage spike might result in a higher than normal reading. Shielded data cables are commonly used to reduce the noise levels.
· Multiplexing - Most analog input cards allow multiple inputs. These may share the A/D converter using a technique called multiplexing. If there are 4 channels using an A/D converter with a maximum sampling rate of 100Hz, the maximum sampling rate per channel is 25Hz.
Analog outputs are much simpler than analog inputs. To set an analog output an integer is converted to a voltage. This process is very fast, and does not experience the timing problems with analog inputs. But, analog outputs are subject to quantization errors. Figure 315 Analog Output Relationships gives a summary of the important relationships. These relationships are almost identical to those of the A/D converter.
Assume we are using an 8 bit D/A converter that outputs values between 0V and 10V. We have a resolution of 256, where 0 results in an output of 0V and 255 results in 10V. The quantization error will be 20mV. If we want to output a voltage of 6.234V, we would specify an output integer of 159, this would result in an output voltage of 6.235V. The quantization error would be 6.235V-6.234V=0.001V.
The current output from a D/A converter is normally limited to a small value, typically less than 20mA. This is enough for instrumentation, but for high current loads, such as motors, a current amplifier is needed. This type of interface will be discussed later. If the current limit is exceeded for 5V output, the voltage will decrease (so don't exceed the rated voltage). If the current limit is exceeded for long periods of time the D/A output may be damaged.
In this section analog I/O will be discussed using a 1794-IE4XOE2/B 4 Input/2Output 24V DC Non-Isolated Analog module. The card has a 12 bit resolution. To use this module it is defined under the 'I/O Configuration'. While configuring the module the following options are available.
After the card is configured the configuration words are available in the 'controller scooped tags'. These are listed below with descriptions assuming the card is in 'rack:2:'. The configuration words may also be used to update the card during operation. To do this the values are changed using normal program statements to read or write to values.
Figure 317 A Voltage Divide by Two Example shows a simple analog IO example with some error checking. The system uses start and stop buttons to operate, along with a check for module errors. If the system is running the input voltage from input channel 0 will be divided by two and then set as the output voltage for output channel 0. If the system is not running the output voltage on channel zero is set to 0 (0V).
The PLC 5 ladder logic in Figure 318 Ladder Logic to Control an Analog Input Card will control an analog input card. The Block Transfer Write (BTW) statement will send configuration data from integer memory to the analog card in rack 0, slot 0. The data from N7:30 to N7:66 describes the configuration for different input channels. Once the analog input card receives this it will start doing analog conversions. The instruction is edge triggered, so it is run with the first scan, but the input is turned off while it is active, BT10:0/EN. This instruction will require multiple scans before all of the data has been written to the card. The update input is only needed if the configuration for the input changes, but this would be unusual. The Block Transfer Read (BTR) will retrieve data from the card and store it in memory N7:10 to N7:29. This data will contain the analog input values. The function is edge triggered, so the enable bits prevent it from trying to read data before the card is configured BT10:0/EN. The BT10:1/EN bit will prevent if from starting another read until the previous one is complete. Without these the instructions experience continuous errors. The MOV instruction will move the data value from one analog input to another memory location when the BTR instruction is done.
The data to configure a 1771-IFE Analog Input Card is shown in Figure 319 Configuration Data for an 1771-IFE Analog Input Card. (Note: each type of card will be different, and you need to refer to the manuals for this information.) The 1771-IFE is a 12 bit card, so the range will have up to 2**12 = 4096 values. The card can have 8 double ended inputs, or 16 single ended inputs (these are set with jumpers on the board). To configure the card a total of 37 data words are needed. The voltage range of different inputs are set using the bits in word 0 (N7:30) and 1 (N7:31). For example, to set the voltage range on channel 10 to -5V to 5V we would need to set the bits, N7:31/3 = 1 and N7:31/2 = 0. Bits in data word 2 (N7:32) are set to determine the general configuration of the card. For example, if word 2 was 0001 0100 0000 0000b the card would be set for; a delay of 00010 between samples, to return 2s compliment results, using single ended inputs, and no filtering. The remaining data words, from 3 to 36, allow data values to be scaled to a new range. Words 3 and 4 are for channel 1, words 5 and 6 are for channels 2 and so on. To scale the data, the new minimum value is put in the first word (word 3 for channel 1), and the maximum value is put in the second word (word 4 for channel 1). The card then automatically converts the actual data reading between 0 and 4095 to the new data range indicated in word 3 and 4. One oddity of this card is that the data values for scaling must always be BCD, regardless of the data type setting. The manual for this card claims that putting zeros in the scaling values will cause the card to leave the data unscaled, but in practice it is better to enter values of 0 for the minimum and 4095 for the maximum.
The block of data returned by the BTR statement is shown in Figure 320 Data Returned by the 1771-IFE Analog Input Card. Bits 0-2 in word 0 (N7:10) will indicate the status of the card, such as error conditions. Words 1 to 4 will reflect status values for each channel. Words 1 and 2 indicate if the input voltage is outside the set range (e.g., -5V to 5V). Word 3 gives the sign of the data, which is important if the data is not in 2s compliment form. Word 4 indicates when data has been read from a channel. The data values for the analog inputs are stored in words from 5 to 19. In this example, the status for channel 9 are N7:11/8 (under range), N7:12/8 (over range), N7:13/8 (sign) and N7:14/8 (data read). The data value for channel 9 is in N7:13.
Most new PLC programming software provides tools, such as dialog boxes to help set up the data parameters for the card. If these aids are not available, the values can be set manually in the PLC memory.
The PLC-5 ladder logic in Figure 321 Controlling a 1771-OFE Analog Output Card can be used to set analog output voltages with a 1771-OFE Analog Output Card. The BTW instruction will write configuration memory to the card (the contents are described later). Values can also be read back from the card using a BTR, but this is only valuable when checking the status of the card and detecting errors. The BTW is edge triggered, so the BT10:0/EN input prevents the BTW from restarting the instruction until the previous block has been sent. The MOV instruction will change the output value for channel 1 on the card.
The configuration memory structure for the 1771-OFE Analog Output Card is shown in Figure 322 Configuration Data for a 1771-OFE Output Card. The card has four 12 bit output channels. The first four words set the output values for the card. Word 0 (N9:0) sets the value for channel 1, word 1 (N9:1) sets the value for channel 2, etc. Word 4 configures the card. Bit 16 (N9:4/15) will set the data format, bits 5 to 12 (/4 to /11) will enable scaling factors for channels, and bits 1 to 4 (/0 to /3) will provide signs for the data in words 0 to 3. The words from 5 to 13 allow scaling factors, so that the values in words 0 to 3 can be provided in another range of values, and then converted to the appropriate values. Good default values for the scaling factors are 0 for the lower limit and 4095 for the upper limit.
An equivalent analog output voltage can be generated using pulse width modulation, as shown in Figure 323 Pulse Width Modulated (PWM) Signals. In this method the output circuitry is only capable of outputing a fixed voltage (in the figure 'A') or 0V. To obtain an analog voltage between the maximum and minimum the voltage is turned on and off quickly to reduce the effective voltage. The output is a square wave voltage at a high frequency, typically over 20Khz, above the hearing range. The duty cycle of the wave determines the effective voltage of the output. It is the percentage of time the output is on relative to the time it is off. If the duty cycle is 100% the output is always on. If the wave is on for the same time it is off the duty cycle is 50%. If the wave is always off, the duty cycle is 0%.
PWM is commonly used in power electronics, such as servo motor control systems. In this case the response time of the motor is slow enough that the motor effectively filters the high frequency of the signal. The PWM signal can also be put through a low pass filter to produce an analog DC voltage.
When a changing magnetic field cuts across a conductor, it will induce a current flow. The resistance in the circuits will convert this to a voltage. These unwanted voltages result in erroneous readings from sensors, and signal to outputs. Shielding will reduce the effects of the interference. When shielding and grounding are done properly, the effects of electrical noise will be negligible. Shielding is normally used for; all logical signals in noisy environments, high speed counters or high speed circuitry, and all analog signals.
There are two major approaches to reducing noise; shielding and twisted pairs. Shielding involves encasing conductors and electrical equipment with metal. As a result electrical equipment is normally housed in metal cases. Wires are normally put in cables with a metal sheath surrounding both wires. The metal sheath may be a thin film, or a woven metal mesh. Shielded wires are connected at one end to "drain" the unwanted signals into the cases of the instruments. Figure 325 Shielding for a Thermocouple shows a thermocouple connected with a thermocouple. The cross section of the wire contains two insulated conductors. Both of the wires are covered with a metal foil, and final covering of insulation finishes the cable. The wires are connected to the thermocouple as expected, but the shield is only connected on the amplifier end to the case. The case is then connected to the shielding ground, shown here as three diagonal lines.
A twisted pair is shown in Figure 326 A Twisted Pair. The two wires are twisted at regular intervals, effectively forming small loops. In this case the small loops reverse every twist, so any induced currents are cancel out for every two twists.
4. Use manuals on the web for a 1794 analog input card, and describe the process that would be needed to set up the card to read an input voltage between -2V and 7V. This description should include jumper settings, configuration memory and ladder logic.
5. We need to select a digital to analog converter for an application. The output will vary from -5V to 10V DC, and we need to be able to specify the voltage to within 50mV. What resolution will be required? How many bits will this D/A converter need? What will the accuracy be?
7. The following calculation will be made when input A is true. If the result x is between 1 and 10 then the output B will be turned on. The value of x will be output as an analog voltage. Create a ladder logic program to perform these tasks.
8. You are developing a controller for a game that measures hand strength. To do this a START button is pushed, 3 seconds later a LIGHT is turned on for one second to let the user know when to start squeezing. The analog value is read at 0.3s after the light is on. The value is converted to a force F with the equation below. The force is displayed by converting it to BCD and writing it to an output card (force_display). If the value exceeds 100 then a BIG_LIGHT and SIREN are turned on for 5sec. Use a structured design technique to develop ladder logic..
9. A machine is connected to a load cell that outputs a voltage proportional to the mass on a platform. When unloaded the cell outputs a voltage of 1V. A mass of 500Kg results in a 6V output. Write a program that will measure the mass when an input sensor (M) becomes true. If the mass is not between 300Kg and 400Kg and alarm output (A) will be turned on. Write a program and indicate the general settings for the analog IO.
4. For the 1794-IE4XOE2/B card you would turn the key on the terminal block to match the back of the module. The card can then be installed in the terminal block. After the programming software is running the card is added to the IO configuration, and automatic settings can be used - these change the memory values to set values in integer memory. The values chosen would include a range of -10 to 10V.
Continuous sensors convert physical phenomena to measurable signals, typically voltages or currents. Consider a simple temperature measuring device, there will be an increase in output voltage proportional to a temperature rise. A computer could measure the voltage, and convert it to a temperature. The basic physical phenomena typically measured with sensors include;
Most of these sensors are based on subtle electrical properties of materials and devices. As a result the signals often require signal conditioners. These are often amplifiers that boost currents and voltages to larger voltages.
Sensors are also called transducers. This is because they convert an input phenomena to an output in a different form. This transformation relies upon a manufactured device with limitations and imperfection. As a result sensor limitations are often characterized with;
Accuracy - This is the maximum difference between the indicated and actual reading. For example, if a sensor reads a force of 100N with a ±1% accuracy, then the force could be anywhere from 99N to 101N.
Resolution - Used for systems that step through readings. This is the smallest increment that the sensor can detect, this may also be incorporated into the accuracy value. For example if a sensor measures up to 10 inches of linear displacements, and it outputs a number between 0 and 100, then the resolution of the device is 0.1 inches.
Repeatability - When a single sensor condition is made and repeated, there will be a small variation for that particular reading. If we take a statistical range for repeated readings (e.g., ±3 standard deviations) this will be the repeatability. For example, if a flow rate sensor has a repeatability of 0.5cfm, readings for an actual flow of 100cfm should rarely be outside 99.5cfm to 100.5cfm.
Linearity - In a linear sensor the input phenomenon has a linear relationship with the output signal. In most sensors this is a desirable feature. When the relationship is not linear, the conversion from the sensor output (e.g., voltage) to a calculated quantity (e.g., force) becomes more complex.
Dynamic Response - The frequency range for regular operation of the sensor. Typically sensors will have an upper operation frequency, occasionally there will be lower frequency limits. For example, our ears hear best between 10Hz and 16KHz.
Environmental - Sensors all have some limitations over factors such as temperature, humidity, dirt/oil, corrosives and pressures. For example many sensors will work in relative humidities (RH) from 10% to 80%.
Calibration - When manufactured or installed, many sensors will need some calibration to determine or set the relationship between the input phenomena, and output. For example, a temperature reading sensor may need to be zeroed or adjusted so that the measured temperature matches the actual temperature. This may require special equipment, and need to be performed frequently.
Potentiometers measure the angular position of a shaft using a variable resistor. A potentiometer is shown in Figure 327 A Potentiometer. The potentiometer is resistor, normally made with a thin film of resistive material. A wiper can be moved along the surface of the resistive film. As the wiper moves toward one end there will be a change in resistance proportional to the distance moved. If a voltage is applied across the resistor, the voltage at the wiper interpolate the voltages at the ends of the resistor.
The potentiometer in Figure 328 A Potentiometer as a Voltage Divider is being used as a voltage divider. As the wiper rotates the output voltage will be proportional to the angle of rotation.
Potentiometers are popular because they are inexpensive, and don't require special signal conditioners. But, they have limited accuracy, normally in the range of 1% and they are subject to mechanical wear.
Potentiometers measure absolute position, and they are calibrated by rotating them in their mounting brackets, and then tightening them in place. The range of rotation is normally limited to less than 360 degrees or multiples of 360 degrees. Some potentiometers can rotate without limits, and the wiper will jump from one end of the resistor to the other.
Faults in potentiometers can be detected by designing the potentiometer to never reach the ends of the range of motion. If an output voltage from the potentiometer ever reaches either end of the range, then a problem has occurred, and the machine can be shut down. Two examples of problems that might cause this are wires that fall off, or the potentiometer rotates in its mounting.
Encoders use rotating disks with optical windows, as shown in Figure 329 An Encoder Disk. The encoder contains an optical disk with fine windows etched into it. Light from emitters passes through the openings in the disk to detectors. As the encoder shaft is rotated, the light beams are broken. The encoder shown here is a quadrature encode, and it will be discussed later.
There are two fundamental types of encoders; absolute and incremental. An absolute encoder will measure the position of the shaft for a single rotation. The same shaft angle will always produce the same reading. The output is normally a binary or grey code number. An incremental (or relative) encoder will output two pulses that can be used to determine displacement. Logic circuits or software is used to determine the direction of rotation, and count pulses to determine the displacement. The velocity can be determined by measuring the time between pulses.
Encoder disks are shown in Figure 330 Encoder Disks. The absolute encoder has two rings, the outer ring is the most significant digit of the encoder, the inner ring is the least significant digit. The relative encoder has two rings, with one ring rotated a few degrees ahead of the other, but otherwise the same. Both rings detect position to a quarter of the disk. To add accuracy to the absolute encoder more rings must be added to the disk, and more emitters and detectors. To add accuracy to the relative encoder we only need to add more windows to the existing two rings. Typical encoders will have from 2 to thousands of windows per ring.
When using a relative encoder, the distance of rotation is determined by counting the pulses from one of the rings. If the encoder only rotates in one direction then a simple count of pulses from one ring will determine the total distance. If the encoder can rotate both directions a second ring must be used to determine when to subtract pulses. The quadrature scheme, using two rings, is shown in Figure 331 Quadrature Encoders. The signals are set up so that one is out of phase with the other. Notice that for different directions of rotation, input B either leads or lags A.
Normally absolute and relative encoders require a calibration phase when a controller is turned on. This normally involves moving an axis until it reaches a logical sensor that marks the end of the range. The end of range is then used as the zero position. Machines using encoders, and other relative sensors, are noticeable in that they normally move to some extreme position before use.
Tachometers measure the velocity of a rotating shaft. A common technique is to mount a magnet to a rotating shaft. When the magnetic moves past a stationary pick-up coil, current is induced. For each rotation of the shaft there is a pulse in the coil, as shown in Figure 332 A Magnetic Tachometer. When the time between the pulses is measured the period for one rotation can be found, and the frequency calculated. This technique often requires some signal conditioning circuitry.
Another common technique uses a simple permanent magnet DC generator (note: you can also use a small DC motor). The generator is hooked to the rotating shaft. The rotation of a shaft will induce a voltage proportional to the angular velocity. This technique will introduce some drag into the system, and is used where efficiency is not an issue.
Rotational potentiometers were discussed before, but potentiometers are also available in linear/sliding form. These are capable of measuring linear displacement over long distances. Figure 333 Linear Potentiometer shows the output voltage when using the potentiometer as a voltage divider.
Linear Variable Differential Transformers (LVDTs) measure linear displacements over a limited range. The basic device is shown in Figure 334 An LVDT. It consists of outer coils with an inner moving magnetic core. High frequency alternating current (AC) is applied to the center coil. This generates a magnetic field that induces a current in the two outside coils. The core will pull the magnetic field towards it, so in the figure more current will be induced in the left hand coil. The outside coils are wound in opposite directions so that when the core is in the center the induced currents cancel, and the signal out is zero (0Vac). The magnitude of the signal out voltage on either line indicates the position of the core. Near the center of motion the change in voltage is proportional to the displacement. But, further from the center the relationship becomes nonlinear.
These devices are more accurate than linear potentiometers, and have less friction. Typical applications for these devices include measuring dimensions on parts for quality control. They are often used for pressure measurements with Bourdon tubes and bellows/diaphragms. A major disadvantage of these sensors is the high cost, often in the thousands.
High precision linear displacement measurements can be made with Moire Fringes, as shown in Figure 336 The Moire Fringe Effect. Both of the strips are transparent (or reflective), with black lines at measured intervals. The spacing of the lines determines the accuracy of the position measurements. The stationary strip is offset at an angle so that the strips interfere to give irregular patterns. As the moving strip travels by a stationary strip the patterns will move up, or down, depending upon the speed and direction of motion.
A device to measure the motion of the moire fringes is shown in Figure 337 Measuring Motion with Moire Fringes. A light source is collimated by passing it through a narrow slit to make it one slit width. This is then passed through the fringes to be detected by light sensors. At least two light sensors are needed to detect the bright and dark locations. Two sensors, close enough, can act as a quadrature pair, and the same method used for quadrature encoders can be used to determine direction and distance of motion.
These are used in high precision applications over long distances, often meters. They can be purchased from a number of suppliers, but the cost will be high. Typical applications include Coordinate Measuring Machines (CMMs).
Accelerometers measure acceleration using a mass suspended on a force sensor, as shown in Figure 338 A Cross Section of an Accelerometer. When the sensor accelerates, the inertial resistance of the mass will cause the force sensor to deflect. By measuring the deflection the acceleration can be determined. In this case the mass is cantilevered on the force sensor. A base and housing enclose the sensor. A small mounting stud (a threaded shaft) is used to mount the accelerometer.
Accelerometers are dynamic sensors, typically used for measuring vibrations between 10Hz to 10KHz. Temperature variations will affect the accuracy of the sensors. Standard accelerometers can be linear up to 100,000 m/s**2: high shock designs can be used up to 1,000,000 m/s**2. There is often a trade-off between a wide frequency range and device sensitivity (note: higher sensitivity requires a larger mass). Figure 339 Piezoelectric Accelerometer Sensitivities shows the sensitivity of two accelerometers with different resonant frequencies. A smaller resonant frequency limits the maximum frequency for the reading. The smaller frequency results in a smaller sensitivity. The units for sensitivity is charge per m/s**2.
The force sensor is often a small piece of piezoelectric material (discussed later in this chapter). The piezoelectic material can be used to measure the force in shear or compression. Piezoelectric based accelerometers typically have parameters such as,
The accelerometer is mounted on the vibration source as shown in Figure 340 Mounting an Accelerometer. The accelerometer is electrically isolated from the vibration source so that the sensor may be grounded at the amplifier (to reduce electrical noise). Cables are fixed to the surface of the vibration source, close to the accelerometer, and are fixed to the surface as often as possible to prevent noise from the cable striking the surface. Background vibrations can be detected by attaching control electrodes to non-vibrating surfaces. Each accelerometer is different, but some general application guidelines are;
Equipment normally used when doing vibration testing is shown in Figure 341 Typical Connection for Accelerometers. The sensor needs to be mounted on the equipment to be tested. A pre-amplifier normally converts the charge generated by the accelerometer to a voltage. The voltage can then be analyzed to determine the vibration frequencies.
Accelerometers are commonly used for control systems that adjust speeds to reduce vibration and noise. Computer Controlled Milling machines now use these sensors to actively eliminate chatter, and detect tool failure. The signal from accelerometers can be integrated to find velocity and acceleration.
Currently accelerometers cost hundreds or thousands per channel. But, advances in micromachining are already beginning to provide integrated circuit accelerometers at a low cost. Their current use is for airbag deployment systems in automobiles.
Strain gages measure strain in materials using the change in resistance of a wire. The wire is glued to the surface of a part, so that it undergoes the same strain as the part (at the mount point). Figure 342 The Electrical Properties of a Wire shows the basic properties of the undeformed wire. Basically, the resistance of the wire is a function of the resistivity, length, and cross sectional area.
After the wire in Figure 342 The Electrical Properties of a Wire has been deformed it will take on the new dimensions and resistance shown in Figure 343 The Electrical and Mechanical Properties of the Deformed Wire. If a force is applied as shown, the wire will become longer, as predicted by Young's modulus. But, the cross sectional area will decrease, as predicted by Poison's ratio. The new length and cross sectional area can then be used to find a new resistance.
A strain gage must be small for accurate readings, so the wire is actually wound in a uniaxial or rosette pattern, as shown in Figure 345 Wire Arrangements in Strain Gages. When using uniaxial gages the direction is important, it must be placed in the direction of the normal stress. (Note: the gages cannot read shear stress.) Rosette gages are less sensitive to direction, and if a shear force is present the gage will measure the resulting normal force at 45 degrees. These gauges are sold on thin films that are glued to the surface of a part. The process of mounting strain gages involves surface cleaning. application of adhesives, and soldering leads to the strain gages.
A design techniques using strain gages is to design a part with a narrowed neck to mount the strain gage on, as shown in Figure 346 Using a Narrow to Increase Strain. In the narrow neck the strain is proportional to the load on the member, so it may be used to measure force. These parts are often called load cells.
Strain gauges are inexpensive, and can be used to measure a wide range of stresses with accuracies under 1%. Gages require calibration before each use. This often involves making a reading with no load, or a known load applied. An example application includes using strain gages to measure die forces during stamping to estimate when maintenance is needed.
When a crystal undergoes strain it displaces a small amount of charge. In other words, when the distance between atoms in the crystal lattice changes some electrons are forced out or drawn in. This also changes the capacitance of the crystal. This is known as the Piezoelectric effect. Figure 347 The Piezoelectric Effect shows the relationships for a crystal undergoing a linear deformation. The charge generated is a function of the force applied, the strain in the material, and a constant specific to the material. The change in capacitance is proportional to the change in the thickness.
These crystals are used for force sensors, but they are also used for applications such as microphones and pressure sensors. Applying an electrical charge can induce strain, allowing them to be used as actuators, such as audio speakers.
When using piezoelectric sensors charge amplifiers are needed to convert the small amount of charge to a larger voltage. These sensors are best suited to dynamic measurements, when used for static measurements they tend to drift or slowly lose charge, and the signal value will change.
There are a number of differences factors to be considered when dealing with fluids and gases. Normally a fluid is considered incompressible, while a gas normally follows the ideal gas law. Also, given sufficiently high enough temperatures, or low enough pressures a fluid can be come a gas.
When flowing, the flow may be smooth, or laminar. In case of high flow rates or unrestricted flow, turbulence may result. The Reynold's number is used to determine the transition to turbulence. The equation below is for calculation the Reynold's number for fluid flow in a pipe. A value below 2000 will result in laminar flow. At a value of about 3000 the fluid flow will become uneven. At a value between 7000 and 8000 the flow will become turbulent.
Figure 348 Pressure Transducers shows different two mechanisms for pressure measurement. The Bourdon tube uses a circular pressure tube. When the pressure inside is higher than the surrounding air pressure (14.7psi approx.) the tube will straighten. A position sensor, connected to the end of the tube, will be elongated when the pressure increases.
When a flowing fluid or gas passes through a narrow pipe section (neck) the pressure drops. If there is no flow the pressure before and after the neck will be the same. The faster the fluid flow, the greater the pressure difference before and after the neck. This is known as a Venturi valve. Figure 349 A Venturi Valve shows a Venturi valve being used to measure a fluid flow rate. The fluid flow rate will be proportional to the pressure difference before and at the neck (or after the neck) of the valve.
Venturi valves allow pressures to be read without moving parts, which makes them very reliable and durable. They work well for both fluids and gases. It is also common to use Venturi valves to generate vacuums for actuators, such as suction cups.
Fluid passes through thin tubes, causing them to vibrate. As the fluid approaches the point of maximum vibration it accelerates. When leaving the point it decelerates. The result is a distributed force that causes a bending moment, and hence twisting of the pipe. The amount of bending is proportional to the velocity of the fluid flow. These devices typically have a large constriction on the flow, and result is significant loses. Some of the devices also use bent tubes to increase the sensitivity, but this also increases the flow resistance. The typical accuracy for a Coriolis flowmeter is 0.1%.
A magnetic sensor applies a magnetic field perpendicular to the flow of a conductive fluid. As the fluid moves, the electrons in the fluid experience an electromotive force. The result is that a potential (voltage) can be measured perpendicular to the direction of the flow and the magnetic field. The higher the flow rate, the greater the voltage. The typical accuracy for these sensors is 0.5%.
A transmitter emits a high frequency sound at point on a tube. The signal must then pass through the fluid to a detector where it is picked up. If the fluid is flowing in the same direction as the sound it will arrive sooner. If the sound is against the flow it will take longer to arrive. In a transit time flow meter two sounds are used, one traveling forward, and the other in the opposite direction. The difference in travel time for the sounds is used to determine the flow velocity.
A doppler flowmeter bounces a soundwave off particle in a flow. If the particle is moving away from the emitter and detector pair, then the detected frequency will be lowered, if it is moving towards them the frequency will be higher.
Fluid flowing past a large (typically flat) obstacle will shed vortices. The frequency of the vortices will be proportional to the flow rate. Measuring the frequency allows an estimate of the flow rate. These sensors tend be low cost and are popular for low accuracy applications.
In some cases more precise readings of flow rates and volumes may be required. These can be obtained by using a positive displacement meter. In effect these meters are like pumps run in reverse. As the fluid is pushed through the meter it produces a measurable output, normally on a rotating shaft.
Gas flow rates can be measured using Pitot tubes, as shown in Figure 351 Pitot Tubes for Measuring Gas Flow Rates. These are small tubes that project into a flow. The diameter of the tube is small (typically less than 1/8") so that it doesn't affect the flow.
When a metal wire is heated the resistance increases. So, a temperature can be measured using the resistance of a wire. Resistive Temperature Detectors (RTDs) normally use a wire or film of platinum, nickel, copper or nickel-iron alloys. The metals are wound or wrapped over an insulator, and covered for protection. The resistances of these alloys are shown in Figure 352 RTD Properties.
These devices have positive temperature coefficients that cause resistance to increase linearly with temperature. A platinum RTD might have a resistance of 100 ohms at 0C, that will increase by 0.4 ohms/°C. The total resistance of an RTD might double over the temperature range.
A current must be passed through the RTD to measure the resistance. (Note: a voltage divider can be used to convert the resistance to a voltage.) The current through the RTD should be kept to a minimum to prevent self heating. These devices are more linear than thermocouples, and can have accuracies of 0.05%. But, they can be expensive
Each metal has a natural potential level, and when two different metals touch there is a small potential difference, a voltage. (Note: when designing assemblies, dissimilar metals should not touch, this will lead to corrosion.) Thermocouples use a junction of dissimilar metals to generate a voltage proportional to temperature. This principle was discovered by T.J. Seebeck.
The basic calculations for thermocouples are shown in Figure 353 Thermocouple Calculations. This calculation provides the measured voltage using a reference temperature and a constant specific to the device. The equation can also be rearranged to provide a temperature given a voltage.
The list in Table 1 shows different junction types, and the normal temperature ranges. Both thermocouples, and signal conditioners are commonly available, and relatively inexpensive. For example, most PLC vendors sell thermocouple input cards that will allow multiple inputs into the PLC.
The junction where the thermocouple is connected to the measurement instrument is normally cooled to reduce the thermocouple effects at those junctions. When using a thermocouple for precision measurement, a second thermocouple can be kept at a known temperature for reference. A series of thermocouples connected together in series produces a higher voltage and is called a thermopile. Readings can approach an accuracy of 0.5%.
Thermistors are non-linear devices, their resistance will decrease with an increase in temperature. (Note: this is because the extra heat reduces electron mobility in the semiconductor.) The resistance can change by more than 1000 times. The basic calculation is shown in Figure 355 Thermistor Calculations.
often metal oxide semiconductors The calculation uses a reference temperature and resistance, with a constant for the device, to predict the resistance at another temperature. The expression can be rearranged to calculate the temperature given the resistance.
Thermistors are small, inexpensive devices that are often made as beads, or metallized surfaces. The devices respond quickly to temperature changes, and they have a higher resistance, so junction effects are not an issue. Typical accuracies are 1%, but the devices are not linear, have a limited temperature/resistance range and can be self heating.
IC sensors are becoming more popular. They output a digital reading and can have accuracies better than 0.01%. But, they have limited temperature ranges, and require some knowledge of interfacing methods for serial or parallel data.
Pyrometers are non-contact temperature measuring devices that use radiated heat. These are normally used for high temperature applications, or for production lines where it is not possible to mount other sensors to the material.
The pH of an ionic fluid can be measured over the range from a strong base (alkaline) with pH=14, to a neutral value, pH=7, to a strong acid, pH=0. These measurements are normally made with electrodes that are in direct contact with the fluids.
Signals from transducers are typically too small to be read by a normal analog input card. Amplifiers are used to increase the magnitude of these signals. An example of a single ended signal amplifier is shown in Figure 358 A Single Ended Signal Amplifier. The amplifier is in an inverting configuration, so the output will have an opposite sign from the input. Adjustments are provided for gain and offset adjustments.
A differential amplifier with a current input is shown in Figure 359 A Current Amplifier. Note that Rc converts a current to a voltage. The voltage is then amplified to a larger voltage.
The circuit in Figure 360 A Differential Input to Single Ended Output Amplifier will convert a differential (double ended) signal to a single ended signal. The two input op-amps are used as unity gain followers, to create a high input impedance. The following amplifier amplifies the voltage difference.
The Wheatstone bridge can be used to convert a resistance to a voltage output, as shown in Figure 361 A Resistance to Voltage Amplifier. If the resistor values are all made the same (and close to the value of R3) then the equation can be simplified.
Bellows - This is a flexible volumed that will expand or contract with a pressure change. This often looks like a cylinder with a large radius (typ. 2") but it is very thin (type 1/4"). It can be set up so that when pressure changes, the displacement of one side can be measured to determine pressure.
Bourdon tube - Widely used industrial gage to measure pressure and vacuum. It resembles a crescent moon. When the pressure inside changes the moon shape will tend to straighten out. By measuring the displacement of the tip the pressure can be measured.
2. Search the web for common sensor manufacturers for 5 different types of continuous sensors. If possible identify prices for the units. Sensor manufacturers include (hyde park, banner, allen bradley, omron, etc.)
6. A potentiometer is to be used to measure the position of a rotating robot link (as a voltage divider). The power supply connected across the potentiometer is 5.0 V, and the total wiper travel is 300 degrees. The wiper arm is directly connected to the rotational joint so that a given rotation of the joint corresponds to an equal rotation of the wiper arm.
7. A motor has an encoder mounted on it. The motor is driving a reducing gear box with a 50:1 ratio. If the position of the geared down shaft needs to be positioned to 0.1 degrees, what is the minimum resolution of the incremental encoder?
11. A potentiometer is connected to a PLC analog input card. The potentiometer can rotate 300 degrees, and the voltage supply for the potentiometer is +/-10V. Write a ladder logic program to read the voltage from the potentiometer and convert it to an angle in radians stored in 'angle'.
2. A high precision potentiometer has an accuracy of +/- 0.1% and can rotate 300degrees and is used as a voltage divider with a of 0V and 5V. The output voltage is being read by an A/D converter with a 0V to 10V input range. How many bits does the A/D converter need to accommodate the accuracy of the potentiometer?
Continuous actuators allow a system to position or adjust outputs over a wide range of values. Even in their simplest form, continuous actuators tend to be mechanically complex devices. For example, a linear slide system might be composed of a motor with an electronic controller driving a mechanical slide with a ball screw. The cost for such actuators can easily be higher than for the control system itself. These actuators also require sophisticated control techniques that will be discussed in later chapters. In general, when there is a choice, it is better to use discrete actuators to reduce costs and complexity.
An electric motor is composed of a rotating center, called the rotor, and a stationary outside, called the stator. These motors use the attraction and repulsion of magnetic fields to induce forces, and hence motion. Typical electric motors use at least one electromagnetic coil, and sometimes permanent magnets to set up opposing fields. When a voltage is applied to these coils the result is a torque and rotation of an output shaft. There are a variety of motor configuration the yields motors suitable for different applications. Most notably, as the voltages supplied to the motors will vary the speeds and torques that they will provide.
A control system is required when a motor is used for an application that requires continuous position or velocity. A typical controller is shown in Figure 362 A Typical Feedback Motor Controller. In any controlled system a command generator is required to specify a desired position. The controller will compare the feedback from the encoder to the desired position or velocity to determine the system error. The controller will then generate an output, based on the system error. The output is then passed through a power amplifier, which in turn drives the motor. The encoder is connected directly to the motor shaft to provide feedback of position.
In a DC motor there is normally a set of coils on the rotor that turn inside a stator populated with permanent magnets. Figure 363 A Simplified Rotor shows a simplified model of a motor. The magnets provide a permanent magnetic field for the rotor to push against. When current is run through the wire loop it creates a magnetic field.
The power is delivered to the rotor using a commutator and brushes, as shown in Figure 364 A Split Ring Commutator. In the figure the power is supplied to the rotor through graphite brushes rubbing against the commutator. The commutator is split so that every half revolution the polarity of the voltage on the rotor, and the induced magnetic field reverses to push against the permanent magnets.
The direction of rotation will be determined by the polarity of the applied voltage, and the speed is proportional to the voltage. A feedback controller is used with these motors to provide motor positioning and velocity control.
These motors are losing popularity to brushless motors. The brushes are subject to wear, which increases maintenance costs. In addition, the use of brushes increases resistance, and lowers the motors efficiency.
· Rotor types for induction motors are listed below. Their function is to intersect changing magnetic fields from the stator. The changing field induces currents in the rotor. These currents in turn set up magnetic fields that oppose fields from the stator, generating a torque.
· Induction motors require slip. If the motor turns at the precise speed of the stator field, it will not see a changing magnetic field. The result would be a collapse of the rotor magnetic field. As a result an induction motor always turns slightly slower than the stator field. The difference is called the slip. This is typically a few percent. As the motor is loaded the slip will increase until the motor stalls.
An induction motor has the windings on the stator. The rotor is normally a squirrel cage design. The squirrel cage is a cast aluminum core that when exposed to a changing magnetic field will set up an opposing field. When an AC voltage is applied to the stator coils an AC magnetic field is created, the squirrel cage sets up an opposing magnetic field and the resulting torque causes the motor to turn.
The motor will turn at a frequency close to that of the applied voltage, but there is always some slip. It is possible to control the speed of the motor by controlling the frequency of the AC voltage. Synchronous motor drives control the speed of the motors by synthesizing a variable frequency AC waveform, as shown in Figure 370 AC Motor Speed Control.
These drives should be used for applications that only require a single rotational direction. The torque speed curve for a typical induction motor is shown in Figure 371 Torque Speed Curve for an Induction Motor. When the motor is used with a fixed frequency AC source the synchronous speed of the motor will be the frequency of AC voltage divided by the number of poles in the motor. The motor actually has the maximum torque below the synchronous speed. For example a 2 pole motor might have a synchronous speed of (2*60*60/2) 3600 RPM, but be rated for 3520 RPM. When a feedback controller is used the issue of slip becomes insignificant.
· Wound rotor induction motors use external resistors. varying the resistance allows the motors torque speed curve to vary. As the resistance value is increased the motor torque speed curve shifts from the Class A to Class D shapes.
· Single phase AC motors can run in either direction. To compensate for this a shading pole is used on the stator windings. It basically acts as an inductor to one side of the field which slows the field buildup and collapse. The result is that the field strength seems to naturally rotate.
· Universal motors were presented earlier for DC applications, but they can also be used for AC power sources. This is because the field polarity in the rotor and stator both reverse as the AC current reverses.
· Starting AC motors can be hard because of the low torque at low speeds. To deal with this a switching arrangement is often used. At low speeds other coils or capacitors are connected into the circuits. At higher speeds centrifugal switches disconnect these and the motor behavior switches.
- shaded pole - these motors use a small offset coil (such as a single copper winding) to encourage the field buildup to occur asymmetrically. These motors are for low torque applications much less than 1HP.
Brushless motors use a permanent magnet on the rotor, and use windings on the stator. Therefore there is no need to use brushes and a commutator to switch the polarity of the voltage on the coil. The lack of brushes means that these motors require less maintenance than the brushed DC motors.
A typical Brushless DC motor could have three poles, each corresponding to one power input, as shown in Figure 375 A Brushless DC Motor. Each of coils is separately controlled. The coils are switched on to attract or repel the permanent magnet rotor.
To continuously rotate these motors the current in the stator coils must alternate continuously. If the power supplied to the coils was a 3-phase AC sinusoidal waveform, the motor will rotate continuously. The applied voltage can also be trapezoidal, which will give a similar effect. The changing waveforms are controller using position feedback from the motor to select switching times. The speed of the motor is proportional to the frequency of the signal.
A typical torque speed curve for a brushless motor is shown in Figure 376 Torque Speed Curve for a Brushless DC Motor.
Stepper motors are designed for positioning. They move one step at a time with a typical step size of 1.8 degrees giving 200 steps per revolution. Other motors are designed for step sizes of 1.8, 2.0, 2.5, 5, 15 and 30 degrees.
There are two basic types of stepper motors, unipolar and bipolar, as shown in Figure 377 Unipolar and Bipolar Stepper Motor Windings. The unipolar uses center tapped windings and can use a single power supply. The bipolar motor is simpler but requires a positive and negative supply and more complex switching circuitry.
The motors are turned by applying different voltages at the motor terminals. The voltage change patterns for a unipolar motor are shown in Figure 378 Stepper Motor Control Sequence for a Unipolar Motor. For example, when the motor is turned on we might apply the voltages as shown in line 1. To rotate the motor we would then output the voltages on line 2, then 3, then 4, then 1, etc. Reversing the sequence causes the motor to turn in the opposite direction. The dynamics of the motor and load limit the maximum speed of switching, this is normally a few thousand steps per second. When not turning the output voltages are held to keep the motor in position.
Stepper motors do not require feedback except when used in high reliability applications and when the dynamic conditions could lead to slip. A stepper motor slips when the holding torque is overcome, or it is accelerated too fast. When the motor slips it will move a number of degrees from the current position. The slip cannot be detected without position feedback.
Stepper motors are relatively weak compared to other motor types. The torque speed curve for the motors is shown in Figure 379 Stepper Motor Torque Speed Curve. In addition they have different static and dynamic holding torques. These motors are also prone to resonant conditions because of the stepped motion control.
The motors are used with controllers that perform many of the basic control functions. At the minimum a translator controller will take care of switching the coil voltages. A more sophisticated indexing controller will accept motion parameters, such as distance, and convert them to individual steps. Other types of controllers also provide finer step resolutions with a process known as microstepping. This effectively divides the logical steps described in Figure 378 Stepper Motor Control Sequence for a Unipolar Motor and converts them to sinusoidal steps.
- as the motor speed increases the current increases, the motor can theoretically accelerate to infinite speeds if unloaded. This makes the dangerous when used in applications where they are potentially unloaded.
Hydraulic systems are used in applications requiring a large amount of force and slow speeds. When used for continuous actuation they are mainly used with position feedback. An example system is shown in Figure 382 Hydraulic Servo System. The controller examines the position of the hydraulic system, and drivers a servo valve. This controls the flow of fluid to the actuator. The remainder of the provides the hydraulic power to drive the system.
The valve used in a hydraulic system is typically a solenoid controlled valve that is simply opened or closed. Newer, more expensive, valve designs use a scheme like pulse with modulation (PWM) which open/close the valve quickly to adjust the flow rate.
Linear Motors - a linear motor works on the same principles as a normal rotary motor. The primary difference is that they have a limited travel and their cost is typically much higher than other linear actuators.
Ball Screws - rotation is converted to linear motion using balls screws. These are low friction screws that drive nuts filled with ball bearings. These are normally used with slides to bear mechanical loads.
1. A stepping motor is to be used to drive each of the three linear axes of a cartesian coordinate robot. The motor output shaft will be connected to a screw thread with a screw pitch of 0.125". It is desired that the control resolution of each of the axes be 0.025"
1. A stepper motor is to be used to actuate one joint of a robot arm in a light duty pick and place application. The step angle of the motor is 10 degrees. For each pulse received from the pulse train source the motor rotates through a distance of one step angle.
c) For the stepper motor, a pulse train is to be generated by a motion controller. How many pulses are required to rotate the motor through three complete revolutions? If it is desired to rotate the motor at a speed of 25 rev/min, what pulse rate must be generated by the robot controller?
b) Deadband correction allows the motor to break free of the static friction. Once moving freely the torque required to `stick' the motor is determined by the lower kinetic friction. Generally this means that the motor can move slightly slower than the static friction minimum speed, but not the kinetic friction minimum speed.
c) Calibration is a process where instrumentation outputs are related to inputs. These results are then used later to relate measurement equipment outputs with actual phenomenon. For example, in the laboratory, tachometers are calibrated by turning them at a steady speed. The speed is measured with a strobe tachometer and the voltage output is also recorded. These are then used to make a graph relating voltage and speed. Later the strobe tachometer is not used and the voltage output of the tach. is used to calculate the speed.
Continuous processes require continuous sensors and/or actuators. For example, an oven temperature can be measured with a thermocouple. Simple decision-based control schemes can use continuous sensor values to control logical outputs, such as a heating element. Linear control equations can be used to examine continuous sensor values and set outputs for continuous actuators, such as a variable position gas valve.
Two continuous control systems are shown in Figure 383 Continuous Systems. The water tank can be controlled valves. In a simple control scheme, one of the valves is set by the process, but we control the other to maximize some control object. If the water tank was actually a city water tank, the outlet valve would be the domestic and industrial water users. The inlet valve would be set to keep the tank level at maximum. If the level drops there will be a reduced water pressure at the outlet, and if the tank becomes too full it could overflow. The conveyor will move boxes between stations. Two common choices are to have it move continuously, or to move the boxes between positions, and then stop. When starting and stopping the boxes should be accelerated quickly, but not so quickly that they slip. And, the conveyor should stop at precise positions. In both of these systems, a good control system design will result in better performance.
A mechanical control system is pictured in Figure 384 A Feedback Controller that could be used for the water tank in Figure 383 Continuous Systems. This controller will adjust the valve position, therefore controlling the flow rate into the tank. The height of the fluid in the tank will change the hydrostatic pressure at the bottom of the tank. A pressure line is connected to a pressure cell. As the pressure inside the cell changes, the cell will expand and contract, opening and closing the valve. As the tank fills the pressure becomes higher, the cell expands, and the valve closes, reducing the flow in. The desired height of the tank can be adjusted by sliding the pressure cell up/down a distance x. In this example the height x is called the setpoint. The control variable is the position of the valve, and, the feedback variable is the water pressure from the tank. The controller is the pressure cell.
An engineer can design a controller mathematically when performance and stability are important issues. A common industrial practice is to purchase a PID unit, connect it to a process, and tune it through trial and error. This is suitable for simpler systems, but these systems are less efficient and prone to instability. In other words it is quick and easy, but these systems can go out-of-control.
Many continuous systems will be controlled with logical actuators. Common examples include building HVAC (Heating, Ventilation and Air Conditioning) systems. The system setpoint is entered on a thermostat. The controller will then attempt to keep the temperature within a few degrees as shown in Figure 385 Continuous Control with a Logical Actuator. If the temperature is below the bottom limit the heater is turned on. When it passes the upper limit it is turned off, and it will stay off until if passes the lower limit. If the gap between the upper and lower the boundaries is larger, the heater will turn on less often, but be on for longer, and the temperature will vary more. This technique is not exact, and time lags will often lead to overshoot above and below the temperature limits.
Figure 386 A Ladder Logic Controller for a Logical Actuator shows a controller that will keep the temperature between 72 and 74 (degrees presumably). The temperature will be read and stored in temp, and the output to turn the heater on is connected to heater.
Figure 387 A Block Diagram shows a simple block diagram for controlling arm position. The system setpoint, or input, is the desired position for the arm. The arm position is expressed with the joint angles. The input enters a summation block, shown as a circle, where the actual joint angles are subtracted from the desired joint angles. The resulting difference is called the error. The error is transformed to joint torques by the first block labeled neural system and muscles. The next block, arm structure and dynamics, converts the torques to new arm positions. The new arm positions are converted back to joint angles by the eyes.
The blocks in block diagrams represent real systems that have inputs and outputs. The inputs and outputs can be real quantities, such as fluid flow rates, voltages, or pressures. The inputs and outputs can also be calculated as values in computer programs. In continuous systems the blocks can be described using differential equations. Laplace transforms and transfer functions are often used for linear systems.
As introduced in the previous section, feedback control systems compare the desired and actual outputs to find a system error. A controller can use the error to drive an actuator to minimize the error. When a system uses the output value for control, it is called a feedback control system. When the feedback is subtracted from the input, the system has negative feedback. A negative feedback system is desirable because it is generally more stable, and will reduce system errors. Systems without feedback are less accurate and may become unstable.
A car is shown in Figure 388 Addition of a Control System to a Car, without and with a velocity control system. First, consider the car by itself, the control variable is the gas pedal angle. The output is the velocity of the car. The negative feedback controller is shown inside the dashed line. Normally the driver will act as the control system, adjusting the speed to get a desired velocity. But, most automobile manufacturers offer cruise control systems that will automatically control the speed of the system. The driver will activate the system and set the desired velocity for the cruise controller with buttons. When running, the cruise control system will observe the velocity, determine the speed error, and then adjust the gas pedal angle to increase or decrease the velocity.
The control system must perform some type of calculation with Verror, to select a new θgas. This can be implemented with mechanical mechanisms, electronics, or software. Figure 389 Human Control Rules for Car Speed lists a number of rules that a person would use when acting as the controller. The driver will have some target velocity (that will occasionally be based on speed limits). The driver will then compare the target velocity to the actual velocity, and determine the difference between the target and actual. This difference is then used to adjust the gas pedal angle.
Figure 390 A Servomotor Feedback Controller shows a block diagram for a common servo motor controlled positioning system. The input is a numerical position for the motor, designated as C. (Note: The relationship between the motor shaft angle and C is determined by the encoder.) The difference between the desired and actual C values is the system error. The controller then converts the error to a control voltage V. The current amplifier keeps the voltage V the same, but increases the current (and power) to drive the servomotor. The servomotor will turn in response to a voltage, and drive an encoder and a ball screw. The encoder is part of the negative feedback loop. The ball screw converts the rotation into a linear displacement x. In this system, the position x is not measured directly, but it is estimated using the motor shaft angle.
The blocks for the system in Figure 390 A Servomotor Feedback Controller could be described with the equations in Figure 391 A Servomotor Feedback Controller. The summation block becomes a simple subtraction. The control equation is the simplest type, called a proportional controller. It will simply multiply the error by a constant Kp. A larger value for Kp will give a faster response. The current amplifier keeps the voltage the same. The motor is assumed to be a permanent magnet DC servo motor, and the ideal equation for such a motor is given. In the equation J is the polar mass moment of inertia, R is the resistance of the motor coils, and Km is a constant for the motor. The velocity of the motor shaft must be integrated to get position. The ball screw will convert the rotation into a linear position if the angle is divided by the Threads Per Inch (TPI) on the screw. The encoder will count a fixed number of Pulses Per Revolution (PPR).
The system equations can be combined algebraically to give a single equation for the entire system as shown in Figure 392 A Combined System Model. The resulting equation (12) is a second order non-homogeneous differential equation that can be solved to model the performance of the system.
A proportional control system can be implemented with the ladder logic shown in Figure 393 Implementing a Proportional Controller with Ladder Logic. The control system has a start/stop button. When the system is active Run will be on, and the proportional controller calculation will be performed with the SUB and MUL functions. When the system is inactive the MOV function will set the output to zero.
This controller may be able to update a few times per second. This is an important design consideration - recall that the Nyquist Criterion requires that the control system response be much faster than the system being controlled. Typically this controller will only be suitable for systems that don't change more than 10 times per second. (Note: The speed limitation is a practical limitation for a SoftLogix processor with reasonable update times for analog inputs and outputs.) This must also be considered if you choose to do a numerical analysis of the control system.
Proportional-Integral-Derivative (PID) controllers are the most common controller choice. The basic controller equation is shown in Figure 394 PID Equation. The equation uses the system error e, to calculate a control variable u. The equation uses three terms. The proportional term, Kp, will push the system in the right direction. The derivative term, Kd will respond quickly to changes. The integral term, Ki will respond to long-term errors. The values of Kc, Ki and Kp can be selected, or tuned, to get a desired system response.
Figure 395 A PID Control System shows a (partial) block diagram for a system that includes a PID controller. The desired setpoint for the system is a potentiometer set up as a voltage divider. A summer block will subtract the input and feedback voltages. The error then passes through terms for the proportional, integral and derivative terms; the results are summed together. An amplifier increases the power of the control variable u, to drive a motor. The motor then turns the shaft of another potentiometer, which will produce a feedback voltage proportional to shaft position.
Recall the cruise control system for a car. Figure 396 Different Controllers shows various equations that could be used as the controller.
When implementing these equations in a computer program the equations can be rewritten as shown in Figure 397 A PID Calculation. To do this calculation, previous error and control values must be stored. The calculation also require the scan time T between updates.
The PID calculation is available as a ladder logic function, as shown in Figure 398 PLC-5 PID Control Block. This can be used in place of the SUB and MUL functions in Figure 393 Implementing a Proportional Controller with Ladder Logic. In this example the calculation uses the feedback variable stored in Proc Variable (as read from the analog input rack:2:I.Ch0InputData). The result is stored in the analog output rack:2:O.Ch0OutputData. The control block uses the parameters stored in pid_control to perform the calculations. Most PLC programming software will provide dialogues to set these value.
A description of important PID parameters is given in the following list assuming that we have defined 'pid:PID'. At the upper end the parameters can be set to generate alarms and verify system operation. For example, many of the limit values are a function of the integers used for analog IO values, and will be limited to -4096 to 4095.
When a controller is off it can drift far from the setpoint and have a large. If the controller is reengaged this error will be integrated, potentially resulting in a very large integral value. As the PID equation approaches the setpoint it may not be able to handle the large error and shoot past the setpoint. This phenomenon is known as windup. The tieback value is used to overcome this problem by allowing a smooth transfer from manual to automatic mode.
PID controllers can also be purchased as cards or stand-alone modules that will perform the PID calculations in hardware. These are useful when the response time must be faster than is possible with a PLC and ladder logic.
Problem: Design an analog controller that will read an oven temperature between 1200F and 1500F. When it passes 1500 degrees the oven will be turned off, when it falls below 1200F it will be turned on again. The voltage from the thermocouple is passed through a signal conditioner that gives 1V at 500F and 3V at 1500F. The controller should have a start button and E-stop.
Problem: The system in Figure 400 Water Tank Level Controller will control the height of the water in a tank. The input from the pressure transducer, Vp, will vary between 0V (empty tank) and 5V (full tank). A voltage output, Vo, will position a valve to change the tank fill rate. Vo varies between 0V (no water flow) and 5V (maximum flow). The system will always be on: the emergency stop is connected electrically. The desired height of a tank is specified by another voltage, Vd. The output voltage is calculated using Vo = 0.5 (Vd - Vp). If the output voltage is greater than 5V is will be made 5V, and below 0V is will be made 0V.
6. Design the complete ladder logic for a control system that implements the control equation below for motor speed control. Assume that the motor speed is read from a tachometer, into an analog input card in rack 0, slot 0, input 1. The tachometer voltage will be between 0 and 8Vdc, for speeds between 0 and 1000rpm. The voltage output to drive the motor controller is output from an analog output card in rack 0, slot 1, output 1. Assume the desired RPM is stored in 'rpm'.
7. Write a ladder logic control program to keep a water tank at a given height. The control system will be active after the Start button is pushed, but it can be stopped by a Stop button. The water height in the tank is measured with an ultrasonic sensor that will output 10V at 1m depth, and 1V at 10cm depth. A solenoid controlled valve will open and close to allow water to enter. The water height setpoint is put in height, in centimeters, and the actual height should be +/-5cm.
8. Implement a program that will input an analog voltage Vi and output half that voltage, Vi/2. If the input voltage is between 3V and 5V the output 'warning' will be turned on. Include start and stop buttons that will force the output voltage to zero when not running. Do not show the bits that would be set in memory, but list the settings that should be made for the cards (e.g. voltage range).
10. Implement the system in the block diagram below. Indicate all of the settings required for the analog IO cards. The calculations are to be done with voltage values, therefore input values must be converted from their integer values.
2. Develop ladder logic for a system that adjusts the height of a box of plastic pellets. An ultrasonic sensor detects the top surface of the plastic pellets. The ultrasonic sensor has been calibrated so that when the output is above 5V the box is in the right height range. When it is less than 5V, a motor should be turned on until the box height results in an input of 6V.
3. Write a program that implements a simple proportional controller. The analog input card is in slot 0 of the PLC rack, and the analog output card is in slot 1. The setpoint for the controller is stored in 'Setpoint'. The gain constant is stored in 'Kgain'.
4. A conveyor line is to be controlled with either a variable frequency drive, or a brushless servo motor. Workers will place boxes on the inlet side of the conveyor, these will be detected with a `box present' sensor. The box position is also detected with an ultrasonic sensor with a range from 10cm to 1m . When present, boxes on the conveyor will be moved until they are 55cm from the sensor. Once in place, the system will stop until the box is removed. After this, the process can begin again when a new box is detected. Design all of the required ladder logic for the process.
5. A temperature control system is being developed to control the water flow rate for cooling a mold set. Unfortunately the sensor in the dies doesn't allow us to measure the temperature. But it does provide a set of bimetallic contacts that close when the die is above 110C. Luckily a Variable Frequency Drive (VFD) is available for controlling the flow rate of the water. The control scheme will increase the water flow rate when the die temperature input, HOT, is active. When the HOT input if off the flow rate will be decreased, until the flow rate is zero. In other words, when the HOT input is on, a timer will start. The time accumulated, DELAY, will be proportional to a voltage output to control the VFD. If the HOT sensors turns off the DELAY value will be decreased until it has a value of zero. Write the ladder logic for this controller.
5. Logical control is more popular because the system is more controllable. This means either happen, or they don't happen. If a system requires a continuous control system then it will tend to be unstable, and even when controlled a precise values can be hard to obtain. The need for control also implies that the system requires some accuracy, thus the process will tend to vary, and be a source of quality control problems.
Fuzzy logic is well suited to implementing control rules that can only be expressed verbally, or systems that cannot be modelled with linear differential equations. Rules and membership sets are used to make a decision. A simple verbal rule set is shown in Figure 402 A Fuzzy Logic Rule Set. These rules concern how fast to fill a bucket, based upon how full it is.
The outstanding question is "What does it mean when the bucket is empty, half full, or full?" And, what is meant by filling the bucket slowly or quickly. We can define sets that indicate when something is true (1), false (0), or a bit of both (0-1), as shown in Figure 403 Fuzzy Sets. Consider the bucket is full set. When the height is 0, the set membership is 0, so nobody would think the bucket is full. As the height increases more people think the bucket is full until they all think it is full. There is no definite line stating that the bucket is full. The other bucket states have similar functions. Notice that the angle function relates the valve angle to the fill rate. The sets are shifted to the right. In reality this would probably mean that the valve would have to be turned a large angle before flow begins, but after that it increases quickly.
Now, if we are given a height we can examine the rules, and find output values, as shown in Figure 404 Fuzzy Rule Solving. This begins be comparing the bucket height to find the membership for bucket is full at 0.75, bucket is half full at 1.0 and bucket is empty at 0. Rule 3 is ignored because the membership was 0. The result for rule 1 is 0.75, so the 0.75 membership value is found on the stop filling and a value of a1 is found for the valve angle. For rule 2 the result was 1.0, so the fill slowly set is examined to find a value. In this case there is a range where fill slowly is 1.0, so the center point is chosen to get angle a2. These two results can then be combined with a weighted average to get .
An example of a fuzzy logic controller for controlling a servomotor is shown in Figure 405 A Fuzzy Logic Servo Motor Controller [Lee and Lau, 1988]. This controller rules examines the system error, and the rate of error change to select a motor voltage. In this example the set memberships are defined with straight lines, but this will have a minimal effect on the controller performance.
Consider the case where verror = 30 rps and d/dt verror = 1 rps/s. Rule 1to 6 are calculated in Figure 406 Rule Calculation.
The results from the individual rules can be combined using the calculation in Figure 407 Rule Results Calculation. In this case only two of the rules matched, so only two terms are used, to give a final motor control voltage of 15.8V.
At the time of writing Allen Bradley did not offer any Fuzzy Logic systems for their PLCs. But, other vendors such as Omron offer commercial controllers. Their controller has 8 inputs and 2 outputs. It will accept up to 128 rules that operate on sets defined with polygons with up to 7 points.
5. Develop a fuzzy logic control algorithm and implement it in structured text. The fuzzy rule set below is to be used to control the speed of a motor. When the error (difference between desired and actual speeds) is large the system will respond faster. When the difference is smaller the response will be smaller. Calculate the outputs for the system given errors of 5, 20 and 40.
Multiple control systems will be used for complex processes. These control systems may be PLCs, but other controllers include robots, data terminals and computers. For these controllers to work together, they must communicate. This chapter will discuss communication techniques between computers, and how these apply to PLCs.
The simplest form of communication is a direct connection between two computers. A network will simultaneously connect a large number of computers on a network. Data can be transmitted one bit at a time in series, this is called serial communication. Data bits can also be sent in parallel. The transmission rate will often be limited to some maximum value, from a few bits per second, to billions of bits per second. The communications often have limited distances, from a few feet to thousands of miles/kilometers.
Data communications have evolved from the 1800's when telegraph machines were used to transmit simple messages using Morse code. This process was automated with teletype machines that allowed a user to type a message at one terminal, and the results would be printed on a remote terminal. Meanwhile, the telephone system began to emerge as a large network for interconnecting users. In the late 1950s Bell Telephone introduced data communication networks, and Texaco began to use remote monitoring and control to automate a polymerization plant. By the 1960s data communications and the phone system were being used together. In the late 1960s and 1970s modern data communications techniques were developed. This included the early version of the Internet, called ARPAnet. Before the 1980s the most common computer configuration was a centralized mainframe computer with remote data terminals, connected with serial data line. In the 1980s the personal computer began to displace the central computer. As a result, high speed networks are now displacing the dedicated serial connections. Serial communications and networks are both very important in modern control applications.
An example of a networked control system is shown in Figure 408 A Communication Example. The computer and PLC are connected with an RS-232 (serial data) connection. This connection can only connect two devices. Devicenet is used by the Computer to communicate with various actuators and sensors. Devicenet can support up to 63 actuators and sensors. The PLC inputs and outputs are connected as normal to the process.
Serial communications send a single bit at a time between computers. This only requires a single communication channel, as opposed to 8 channels to send a byte. With only one channel the costs are lower, but the communication rates are slower. The communication channels are often wire based, but they may also be can be optical and radio. Figure 409 Serial Data Standards shows some of the standard electrical connections. RS-232c is the most common standard that is based on a voltage change levels. At the sending computer an input will either be true or false. The line driver will convert a false value in to a Txd voltage between +3V to +15V, true will be between -3V to -15V. A cable connects the Txd and com on the sending computer to the Rxd and com inputs on the receiving computer. The receiver converts the positive and negative voltages back to logic voltage levels in the receiving computer. The cable length is limited to 50 feet to reduce the effects of electrical noise. When RS-232 is used on the factory floor, care is required to reduce the effects of electrical noise - careful grounding and shielded cables are often used.
The RS-422a cable uses a 20 mA current loop instead of voltage levels. This makes the systems more immune to electrical noise, so the cable can be up to 3000 feet long. The RS-423a standard uses a differential voltage level across two lines, also making the system more immune to electrical noise, thus allowing longer cables. To provide serial communication in two directions these circuits must be connected in both directions.
To transmit data, the sequence of bits follows a pattern, like that shown in Figure 410 A Serial Data Byte. The transmission starts at the left hand side. Each bit will be true or false for a fixed period of time, determined by the transmission speed.
A typical data byte looks like the one below. The voltage/current on the line is made true or false. The width of the bits determines the possible bits per second (bps). The value shown before is used to transmit a single byte. Between bytes, and when the line is idle, the Txd is kept true, this helps the receiver detect when a sender is present. A single start bit is sent by making the Txd false. In this example the next eight bits are the transmitted data, a byte with the value 17. The data is followed by a parity bit that can be used to check the byte. In this example there are two data bits set, and even parity is being used, so the parity bit is set. The parity bit is followed by two stop bits to help separate this byte from the next one.
Some of the byte settings are optional, such as the number of data bits (7 or 8), the parity bit (none, even or odd) and the number of stop bits (1 or 2). The sending and receiving computers must know what these settings are to properly receive and decode the data. Most computers send the data asynchronously, meaning that the data could be sent at any time, without warning. This makes the bit settings more important.
Another method used to detect data errors is half-duplex and full-duplex transmission. In half-duplex transmission the data is only sent in one direction. But, in full-duplex transmission a copy of any byte received is sent back to the sender to verify that it was sent and received correctly. (Note: if you type and nothing shows up on a screen, or characters show up twice you may have to change the half/full duplex setting.)
The transmission speed is the maximum number of bits that can be sent per second. The units for this is baud. The baud rate includes the start, parity and stop bits. For example a 9600 baud transmission of the data in Figure 410 A Serial Data Byte would transfer up to bytes each second. Lower baud rates are 120, 300, 1.2K, 2.4K and 9.6K. Higher speeds are 19.2K, 28.8K and 33.3K. (Note: When this is set improperly you will get many transmission errors, or garbage on your screen.)
Serial lines have become one of the most common methods for transmitting data to instruments: most personal computers have two serial ports. The previous discussion of serial communications techniques also applies to devices such as modems.
The RS-232c standard is based on a low/false voltage between +3 to +15V, and an high/true voltage between -3 to -15V (+/-12V is commonly used). Figure 411 Common RS-232 Connection Schemes shows some of the common connection schemes. In all methods the txd and rxd lines are crossed so that the sending txd outputs are into the listening rxd inputs when communicating between computers. When communicating with a communication device (modem), these lines are not crossed. In the modem connection the dsr and dtr lines are used to control the flow of data. In the computer the cts and rts lines are connected. These lines are all used for handshaking, to control the flow of data from sender to receiver. The null-modem configuration simplifies the handshaking between computers. The three wire configuration is a crude way to connect to devices, and data can be lost.
Common connectors for serial communications are shown in Figure 412 Typical RS-232 Pin Assignments and Names. These connectors are either male (with pins) or female (with holes), and often use the assigned pins shown. The DB-9 connector is more common now, but the DB-25 connector is still in use. In any connection the RXD and TXD pins must be used to transmit and receive data. The COM must be connected to give a common voltage reference. All of the remaining pins are used for handshaking.
The handshaking lines are to be used to detect the status of the sender and receiver, and to regulate the flow of data. It would be unusual for most of these pins to be connected in any one application. The most common pins are provided on the DB-9 connector, and are also described below.
When a computer is ready to receive data it will set the CTS bit, the remote machine will notice this on the RTS pin. The DSR pin is similar in that it indicates the modem is ready to transmit data. XON and XOFF characters are used for a software only flow control scheme.
Many PLC processors have an RS-232 port that is normally used for programming the PLC. Figure 413 Serial Output Using Ladder Logic shows a PLC connected to a personal computer with a Null-Modem line. It is connected to the channel 0 serial connector on the PLC processor, and to the com 1 port on the computer. In this example the terminal could be a personal computer running a terminal emulation program. The ladder logic below will send a string to the serial port channel 0 when A goes true. In this case the string is stored is string memory 'example' and has a length of 4 characters. If the string stored in example is "HALFLIFE", the terminal program will display the string "HALF".
ASCII functions allow programs to manipulate strings in the memory of the PLC. The basic functions are listed in Figure 414 PLC ASCII Functions.
In the example in Figure 415 An ASCII String Example, the characters "Hi " are placed into string memory str_in. The ACB function checks to see how many characters have been received, and are waiting in channel 0. When the number of characters equals 2, the ARD (Ascii ReaD) function will then copy those characters into memory str_0, and bit real_ctl.DN will be set. This done bit will cause the two characters to be concatenated to the "Hi ", and the result written back to the serial port. So, if I typed in my initial "HJ", I would get the response "HI HJ".
The ASCII functions can also be used to support simple number conversions. The example in Figure 416 A String to Integer Conversion Example will convert the strings in str_a and str_b to integers, add the numbers, and store the result as a string in str_c.
Many of the remaining string functions are illustrated in Figure 417 String Manipulation Functions. When A is true the ABL and ACB functions will check for characters that have arrived on channel 1, but have not been retrieved with an ARD function. If the characters "ABC<CR>" have arrived (<CR> is an ASCII carriage return) the ACB would count the three characters, and store the value in cnt_1.POS. The ABL function would also count the <CR> and store a value of four in cnt_2.POS. If B is true, and the string in str_a is "ABCDEFGHIJKL", then "EF" will be stored in str_b. The last function will compare the strings in str_c and str_d, and if they are equal, output string_match will be turned on.
Parallel data transmission will transmit multiple bits at the same time over multiple wires. This does allow faster data transmission rates, but the connectors and cables become much larger, more expensive and less flexible. These interfaces still use handshaking to control data flow.
Problem: A robot will be loading parts into a box until the box reaches a prescribed weight. A PLC will feed parts into a pickup fixture when it is empty. The PLC will tell the robot when to pick up a part and load it into the box by passing it an ASCII string, "pickup".
Solution: The following ladder logic will implement part of the control system for the system in Figure 418 Box Loading System.
4. Write a number guessing program that will allow a user to enter a number on a terminal that transmits it to a PLC where it is compared to a value in target. If the guess is above "Hi" will be returned. If below "Lo" will be returned. When it matches "ON" will be returned.
5. Write a structured text program that reads inputs from `channel 0'. An input string of `CLEAR' will clear a storage array. Up to 100 real values with the format `XXX.XX' will arrive on `channel 0' and are to be stored in the array. If the string `AVG' is received, the average of the array contents will be calculated and written out `Channel 0'.
3. Write a program that will send an ASCII message every minute. The message should begin with the word `count', followed by a number. The number will be 1 on the first scan of the PLC, and increment once each minute.
4. A PLC will be controlled by ASCII commands received through the RS-232C communications port. The commands will cause the PLC to move between the states shown in the state diagram. Implement the ladder logic.
5. A program is to be written to control a robot through an RS-232c interface. The robot has already been programmed to respond to two ASCII strings. When the robot receives the string `start' it will move a part from a feeder to a screw machine. When the robot receives an `idle' command it will become inactive (safe). The PLC has `start' and `end' inputs to control the process. The PLC also has two other inputs that indicate when the parts feeder has parts available (`part present') and when the screw machine is done (`machine idle'). The `start' button will start a cycle where the robot repeatedly loads parts into the screw machine whenever the `machine idle' input is true. If the `part present' sensor is off (i.e., no parts), or the `end' input is off (a stop requested), the screw machine will be allowed to finish, but then the process will stop and the robot will be sent the idle command. Use a structured design method (e.g., state diagrams) to develop a complete ladder logic program to perform the task.
6. A PLC is connected to a scale that measures weights and then sends an ASCII string. The string format is `XXXX.XX'. So a weight of 29.9 grams would result in a string of `0029.90'. The PLC is to read the string and then check to see if the weight is between 18.23 and 18.95 grams. If it is not then an error output light should be set until a reset button is pushed.
8. A system for testing hydraulic reservoirs is to be designed and built using a PLC. Part of the test will be conducted using a computer based Data AQuisition (DAQ) system for high speed analog inputs. When the test begins a command of 'S' is sent to the DAQ system, and an output 'pump' will be turned on. The test is started with a 'start' input and stopped with a 'stop' input. The test will be shut down and an error light turned on if the flow sensor does not turn on within 0.1s, or if the pressure input rises above 4V. When the test is done the DAQ system will send a 'D' to the PLC. The PLC will retrieve the data by sending and 'R' to the DAQ system. The data is returned in the format 'xxxx.x<cr><lf>'. The last data line will be 'END'. The array of data should be analyzed and the results stored in the real variables 'maximum', 'average', 'standard_deviation', and 'median'. These variables will displayed on an HMI. Write a structured text program for the control system.
A computer with a single network interface can communicate with many other computers. This economy and flexibility has made networks the interface of choice, eclipsing point-to-point methods such as RS-232. Typical advantages of networks include resource sharing and ease of communication. But, networks do require more knowledge and understanding.
Small networks are often called Local Area Networks (LANs). These may connect a few hundred computers within a distance of hundreds of meters. These networks are inexpensive, often costing $100 or less per network node. Data can be transmitted at rates of millions of bits per second. Many controls system are using networks to communicate with other controllers and computers. Typical applications include;
Larger Wide Area Networks (WANs) are used for communicating over long distances between LANs. These are not common in controls applications, but might be needed for a very large scale process. An example might be an oil pipeline control system that is spread over thousands of miles.
The structure of a network is called the topology. Figure 420 Network Topologies shows the basic network topologies. The Bus and Ring topologies both share the same network wire. In the Star configuration each computer has a single wire that connects it to a central hub.
In the Ring and Bus topologies the network control is distributed between all of the computers on the network. The wiring only uses a single loop or run of wire. But, because there is only one wire, the network will slow down significantly as traffic increases. This also requires more sophisticated network interfaces that can determine when a computer is allowed to transmit messages. It is also possible for a problem on the network wires to halt the entire network.
The Star topology requires more wire overall to connect each computer to an intelligent hub. But, the network interfaces in the computer become simpler, and the network becomes more reliable. Another term commonly used is that it is deterministic, this means that performance can be predicted. This can be important in critical applications.
For a factory environment the bus topology is popular. The large number of wires required for a star configuration can be expensive and confusing. The loop of wire required for a ring topology is also difficult to connect, and it can lead to ground loop problems. Figure 421 The Tree Topology shows a tree topology that is constructed out of smaller bus networks. Repeaters are used to boost the signal strength and allow the network to be larger.
The Open System Interconnection (OSI) model in Figure 422 The OSI Network Model was developed as a tool to describe the various hardware and software parts found in a network system. It is most useful for educational purposes, and explaining the things that should happen for a successful network application. The model contains seven layers, with the hardware at the bottom, and the software at the top. The darkened arrow shows that a message originating in an application program in computer #1 must travel through all of the layers in both computers to arrive at the application in computer #2. This could be part of the process of reading email.
The Physical layer describes items such as voltage levels and timing for the transmission of single bits. The Data Link layer deals with sending a small amount of data, such as a byte, and error correction. Together, these two layers would describe the serial byte shown in the previous chapter. The Network layer determines how to move the message through the network. If this were for an internet connection this layer would be responsible for adding the correct network address. The Transport layer will divide small amounts of data into smaller packets, or recombine them into one larger piece. This layer also checks for data integrity, often with a checksum. The Session layer will deal with issues that go beyond a single block of data. In particular it will deal with resuming transmission if it is interrupted or corrupted. The Session layer will often make long term connections to the remote machine. The Presentation layer acts as an application interface so that syntax, formats and codes are consistent between the two networked machines. For example this might convert '\' to '/' in HTML files. This layer also provides subroutines that the user may call to access network functions, and perform functions such as encryption and compression. The Application layer is where the user program resides. On a computer this might be a web browser, or a ladder logic program on a PLC.
Figure 423 Network Devices and the OSI Model shows the basic OSI model equivalents for some of the networking hardware described before.
A wide variety of networks are commercially available, and each has particular strengths and weaknesses. The differences arise from their basic designs. One simple issue is the use of the network to deliver power to the nodes. Some control networks will also supply enough power to drive some sensors and simple devices. This can eliminate separate power supplies, but it can reduce the data transmission rates on the network. The use of network taps or tees to connect to the network cable is also important. Some taps or tees are simple passive electrical connections, but others involve sophisticated active tees that are more costly, but allow longer networks.
The transmission type determines the communication speed and noise immunity. The simplest transmission method is baseband, where voltages are switched off and on to signal bit states. This method is subject to noise, and must operate at lower speeds. RS-232 is an example of baseband transmission. Carrierband transmission uses FSK (Frequency Shift Keying) that will switch a signal between two frequencies to indicate a true or false bit. This technique is very similar to FM (Frequency Modulation) radio where the frequency of the audio wave is transmitted by changing the frequency of a carrier frequency about 100MHz. This method allows higher transmission speeds, with reduced noise effects. Broadband networks transmit data over more than one channel by using multiple carrier frequencies on the same wire. This is similar to sending many cable television channels over the same wire. These networks can achieve very large transmission speeds, and can also be used to guarantee real time network access.
The bus network topology only uses a single transmission wire for all nodes. If all of the nodes decide to send messages simultaneously, the messages would be corrupted (a collision occurs). There are a variety of methods for dealing with network collisions, and arbitration.
The token passing method is deterministic, but it may require that a node with an urgent message wait to receive the token. The master-slave method will put a single machine in charge of sending and receiving. This can be restrictive if multiple controllers are to exist on the same network. The CSMA/CD and CSMA/BA methods will both allow nodes to talk when needed. But, as the number of collisions increase the network performance degrades quickly.
Devicenet has become one of the most widely supported control networks. It is an open standard, so components from a variety of manufacturers can be used together in the same control system. It is supported and promoted by the Open Devicenet Vendors Association (ODVA) (see http://www.odva.org). This group includes members from all of the major controls manufacturers.
This network has been designed to be noise resistant and robust. One major change for the control engineer is that the PLC chassis can be eliminated and the network can be connected directly to the sensors and actuators. This will reduce the total amount of wiring by moving I/O points closer to the application point. This can also simplify the connection of complex devices, such as HMIs. Two way communications inputs and outputs allow diagnosis of network problems from the main controller.
Devicenet covers all seven layers of the OSI standard. The protocol has a limited number of network address, with very small data packets. But this also helps limit network traffic and ensure responsiveness. The length of the network cables will limit the maximum speed of the network. The basic features of are listed below.
An example of a Devicenet network is shown in Figure 425 A Devicenet Network. The dark black lines are the network cable. Terminators are required at the ends of the network cable to reduce electrical noise. In this case the PC would probably be running some sort of software based PLC program. The computer would have a card that can communicate with Devicenet devices. The FlexIO rack is a miniature rack that can hold various types of input and output modules. Power taps (or tees) split the signal to small side branches. In this case one of the taps connects a power supply, to provide the 24Vdc supply to the network. Another two taps are used to connect a smart sensor and another FlexIO rack. The Smart sensor uses power from the network, and contains enough logic so that it is one node on the network. The network uses thin trunk line and thick trunk line which may limit network performance.
The network cable is important for delivering power and data. Figure 426 Shielded Network Cable shows a basic cable with two wires for data and two wires for the power. The cable is also shielded to reduce the effects of electrical noise. The two basic types are thick and thin trunk line. The cables may come with a variety of connections to devices.
If a PLC-5 was to be connected to Devicenet a scanner card would need to be placed in the rack. The ladder logic in Figure 427 Communicating with Devicenet Inputs and Outputs would communicate with the sensors through a scanner card in slot 3. The read and write blocks would read and write the Devicenet input values to integer memory from N7:40 to N7:59. The outputs would be copied from the integer memory between N7:20 to N7:39. The ladder logic to process inputs and outputs would need to examine and set bits in integer memory.
On an Allen Bradley Softlogix PLC the I/O will be copied into blocks of integer memory. These blocks are selected by the user in setup software. The ladder logic would then using integer memory for inputs and outputs, as shown in Figure 428 Devicenet Inputs and Outputs in Software Based PLCs. Here the inputs are copied into N9 integer memory, and the outputs are set by copying the N10 block of memory back to the outputs.
The CANbus (Controller Area Network bus) standard is part of the Devicenet standard. Integrated circuits are now sold by many of the major vendors (Motorola, Intel, etc.) that support some, or all, of the standard on a single chip. This section will discuss many of the technical details of the standard.
CANbus covers the first two layers of the OSI model. The network has a bus topology and uses bit wise resolution for collisions on the network (i.e., the lower the network identifier, the higher the priority for sending). A data frame is shown in Figure 429 A CANbus Data Frame. The frame is like a long serial byte, like that seen in the previous chapter. The frame begins with a start bit. This is then followed with a message identifier. For Devicenet this is a 5 bit address code (for up to 64 nodes) and a 6 bit command code. The ready to receive it bit will be set by the receiving machine. (Note: both the sender and listener share the same wire.) If the receiving machine does not set this bit the remainder of the message is aborted, and the message is resent later. While sending the first few bits, the sender monitors the bits to ensure that the bits send are heard the same way. If the bits do not agree, then another node on the network has tried to write a message at the same time - there was a collision. The two devices then wait a period of time, based on their identifier and then start to resend. The second node will then detect the message, and wait until it is done. The next 6 bits indicate the number of bytes to be sent, from 0 to 8. This is followed by two sets of bits for CRC (Cyclic Redundancy Check) error checking, this is a checksum of earlier bits. The next bit ACK slot is set by the receiving node if the data was received correctly. If there was a CRC error this bit would not be set, and the message would be resent. The remaining bits end the transmission. The end of frame bits are equivalent to stop bits. There must be a delay of at least 3 bits before the next message begins.
Because of the bitwise arbitration, the address with the lowest identifier will get the highest priority, and be able to send messages faster when there is a conflict. As a result the controller is normally put at address 0. And, lower priority devices are put near the end of the address range.
Controlnet is complimentary to Devicenet. It is also supported by a consortium of companies, (http://www.controlnet.org) and it conducts some projects in cooperation with the Devicenet group. The standard is designed for communication between controllers, and permits more complex messages than Devicenet. It is not suitable for communication with individual sensors and actuators, or with devices off the factory floor.
This control network is unique because it supports a real-time messaging scheme called Concurrent Time Domain Multiple Access (CTDMA). The network has a scheduled (high priority) and unscheduled (low priority) update. When collisions are detected, the system will wait a time of at least 2ms, for unscheduled messages. But, scheduled messages will be passed sooner, during a special time window.
Ethernet has become the predominate networking format. Version I was released in 1980 by a consortium of companies. In the 1980s various versions of ethernet frames were released. These include Version II and Novell Networking (IEEE 802.3). Most modern ethernet cards will support different types of frames.
The ethernet frame is shown in Figure 430 Ethernet Version II Frame. The first six bytes are the destination address for the message. If all of the bits in the bytes are set then any computer that receives the message will read it. The first three bytes of the address are specific to the card manufacturer, and the remaining bytes specify the remote address. The address is common for all versions of ethernet. The source address specifies the message sender. The first three bytes are specific to the card manufacturer. The remaining bytes include the source address. This is also identical in all versions of ethernet. The ethernet type identifies the frame as a Version II ethernet packet if the value is greater than 05DChex. The other ethernet types use these to bytes to indicate the datalength. The data can be between 46 to 1500 bytes in length. The frame concludes with a checksum that will be used to verify that the data has been transmitted correctly. When the end of the transmission is detected, the last four bytes are then used to verify that the frame was received correctly.
Ethernet protocols and hardware are the primary influences in forming the Internet. On the Internet each computer is given an address. Currently this address is a four byte address under the IPV4 standard, for example '192.168.1.4'. In the near future these addresses will be extended to six bytes under the IPV6 standard. However, users normally refer to machines using names such as 'www.gvsu.edu' which is translated to an IPV4 address '220.127.116.11' by a Directory Name Server (DNS).
When any computer (or PLC) sends a message on Ethernet, the destination address is part of that message. The message will then be routed through the network to the destination address. Within companies (and control systems) there are often local networks hidden behind firewalls that cannot be accessed directly from the Internet. When ethernet is used for control systems (Ethernet/IP) a sub-network is normally used. In this case a router is used for a group of network addresses with the same three first bytes, such as '192.168.1.__'. This also calls for a netmask of '255.255.255.0' that indicates what addresses are on the sub-network. The network will also have a broadcast or gateway assigned for the router (192.168.1.1 or 192.168.1.154 would be common choices). In a case where the network address is outside the sub-network, the router will send it out to the greater network, and return the responses.
When setting up a control network using ethernet you will need to assign a unique IPV4 address to each device. This can be done by setting a permanent address in the device configuration, this is called a Static IP address. Another alternative is to automatically assign the addresses using DHCP or BOOTP protocols. Each device on a network is assigned a unique Media Access Control (MAC) number during manufacturing. Most routers have the ability to accept DHCP requests with MAC numbers and assign IP addresses. Names can also be assigned by the BOOTP and DHCP servers.
The SErial Real-time COmmunication System (SERCOS) is an open standard designed for multi-axis motion control systems. The motion controller and axes can be implemented separately and then connected using the SERCOS network. Many vendors offer cards that allow PLCs to act as clients and/or motion controllers.
Allen-Bradley has developed the Data Highway II (DH+) network for passing data and programs between PLCs and to computers. This bus network allows up to 64 PLCs to be connected with a single twisted pair in a shielded cable. Token passing is used to control traffic on the network. Computers can also be connected to the DH+ network, with a network card to download programs and monitor the PLC. The network will support data rates of 57.6Kbps and 230 Kbps
The DH+ basic data frame is shown in Figure 431 The Basic DH+ Data Frame. The frame is byte oriented. The first byte is the DLE or delimiter byte, which is always $10. When this byte is received the PLC will interpret the next byte as a command. The SOH identifies the message as a DH+ message. The next byte indicates the destination station - each node one the network must have a unique number. This is followed by the DLE and STX bytes that identify the start of the data. The data follows, and its' length is determined by the command type - this will be discussed later. This is then followed by a DLE and ETX pair that mark the end of the message. The last byte transmitted is a checksum to determine the correctness of the message.
The general structure for the data is shown in Figure 432 Data Filed Values. This packet will change for different commands. The first two bytes indicate the destination, DST, and source, SRC, for the message. The next byte is the command, CMD, which will determine the action to be taken. Sometimes, the function, FNC, will be needed to modify the command. The transaction, TNS, field is a unique message identifier. The two address, ADDR, bytes identify a target memory location. The DATA fields contain the information to be passed. Finally, the SIZE of the data field is transmitted.
Examples of commands are shown in Figure 433 DH+ Commands for a PLC-5 (all numbers are hexadecimal). These focus on moving memory and status information between the PLC, and remote programming software, and other PLCs. More details can be found in the Allen-Bradley DH+ manuals.
The ladder logic in Figure 434 Ladder Logic for Reading and Writing to PLC Memory can be used to copy data from the memory of one PLC to another. Unlike other networking schemes, there are no login procedures. In this example the first MSG instruction will write the message from the local memory N7:20 - N7:39 to the remote PLC-5 (node 2) into its memory from N7:40 to N7:59. The second MSG instruction will copy the memory from the remote PLC-5 memory N7:40 to N7:59 to the remote PLC-5 memory N7:20 to N7:39. This transfer will require many scans of ladder logic, so the EN bits will prevent a read or write instruction from restarting until the previous MSG instruction is complete.
No one network is ideal for solving all controls problems. Table 1 shows a variety of network types and criteria. Generally there is a tradeoff between length, speed, cost, and reliability. For example, slower networks such as Controlnet/Devicenet, Lonworks, Modbus, and Profibus are designed to be highly predictable (deterministic) and work well between a central processor and distributed IO modules. Other network types such as Ethernet provide a low cost alternative for connecting IO components but it can be susceptible to electrical noise. Other network types such as Sercos are designed for motion control systems and provide outstanding interoperability between manufacturers.
Problem: A robot will be loading parts into a box until the box reaches a prescribed weight. A PLC will feed parts into a pickup fixture when it is empty. The PLC will tell the robot when to pick up a part and load it using Devicenet.
Solution: The following ladder logic will implement part of the control system for the system in Figure 435 Box Loading System.
2. We will use a PLC to control a cereal box filling machine. For single runs the quantities of cereal types are controlled using timers. There are 6 different timers that control flow, and these result in different ratios of product. The values for the timer presets will be downloaded from another PLC using the DH+ network. Write the ladder logic for the PLC.
a) We are developing ladder logic for an oven to be used in a baking facility. A PLC is controlling the temperature of an oven using an analog voltage output. The oven must be started with a push button and can be stopped at any time with a stop push button. A recipe is used to control the times at each temperature (this is written into the PLC memory by another PLC). When idle, the output voltage should be 0V, and during heating the output voltages, in sequence, are 5V, 7.5V, 9V. The timer preset values, in sequence, are in N7:0, N7:1, N7:2. When the oven is on, a value of 1 should be stored in N7:3, and when the oven is off, a value of 0 should be stored in N7:3. Draw a state diagram and write the ladder logic for this station.
b) We are using a PLC as a master controller in a baking facility. It will update recipes in remote PLCs using DH+. The master station is #1, the remote stations are #2 and #3. When an operator pushes one of three buttons, it will change the recipes in two remote PLCs if both of the remote PLCs are idle. While the remote PLCs are running they will change words in their internal memories (N7:3=0 means idle and N7:3=1 means active). The new recipe values will be written to the remote PLCs using DH+. The table below shows the values for each PLC. Write the ladder logic for the master controller.
2. The response times of hydraulic switches is being tested in a PLC controlled station. When the units arrive a `part present' sensor turns on. The part is then clamped in place by turning on a `clamp' output. 1 second after clamping, a `flow' output is turned on to start the test. The response time is the delay between when `flow' is turned on, and the `engaged' input turns on. When the unit has responded, up to 10 seconds later, the `flow' output is turned off, and the system is allowed to sit for 5 seconds to discharge before unclamping. The result of the test is written to one of the memory locations from F8:0 to F8:39, for a total of 40 separate tests. When 40 tests have been done, the memory block from F8:0 to F8:39 is sent to another PLC using DH+, and the process starts again. Write the ladder logic to control the station.
3. a) Controls are to be developed for a machine that packages golf tees. Each container will normally hold 1000 tees filled from three different hoppers, each containing a different color. For marketing purposes the ratio of colors is changed frequently. To make the controller easy to reconfigure, the number of tees from each hopper are stored in the memory locations N7:0, N7:1 and N7:2. The process is activated when an empty package arrives, activating a PRESENT input. When filling the package, the machine opens a single hopper with a solenoid, and counts the tees with an optical sensor, until the specified count has been surpassed. It then repeats the operation with the two other hoppers. When done, it activates a SEAL for 2 seconds to advance a heated ram that seals the package. After that, the DONE output is turned on until the PRESENT sensor turns off. Write the ladder logic for this process.
b) Write a ladder logic program that will read and parse values from an RS-232 input. The format of the input will be an eleven character line with three integer numbers separated by commas. The integers will be padded to three characters by padding with zeros. The line will be terminated with a CR and a LF. The three integers are to be parsed and stored in the memory locations N7:0, N7:1 and N7:2 to be used in a golf tee packaging machine.
4. A master PLC is located at the top of a mine shaft and controls an elevator system. A second PLC is located half a mile below to monitor the bottom of the elevator shaft. At the top of the mine shaft the PLC has inputs for the door (D), a top limit switch (T), and start (G) and stop (S) pushbuttons. The PLC has two outputs to apply power (P) to the motor, or reverse (R) the motor direction. The PLC at the bottom of the elevator shaft checks a bottom limit switch (B) and a door closed (C) sensor. The two PLCs are connected using DH+. Write ladder logic for both PLCs and indicate the communication settings. Use structured design techniques.
1. These networks allow us to pass data between devices so that individually controlled systems can be integrated into a more complex manufacturing facility. An example might be a serial connection to a PLC so that SPC data can be collected as product is made, or recipes downloaded as they are needed.
5 the maximum transfer rate is 230 Kbps, with 11 bits per byte (1start+8data+2+stop) for 20909 bytes per second. Each memory write packet contains 17 overhead bytes, and as many as 2000 data bytes. Therefore as many as 20909*2000/(2000+17) = 20732 bytes could be transmitted per second. Note that this is ideal, the actual maximum rates would be actually be a fraction of this value.
6. The OSI model is just a model, so it can be used to describe parts of systems, and what their functions are. When used to describe actual networking hardware and software, the parts may only apply to one or two layers. Some parts may implement all of the layers in the model.
7. When more than one client tries to start talking simultaneously on a bus network they interfere, this is called a collision. When this occurs they both stop, and will wait a period of time before starting again. If they both wait different amounts of time the next one to start talking will get priority, and the other will have to wait. With CSMA/CD the clients wait a random amount of time. With CSMA/BA the clients wait based upon their network address, so their priority is related to their network address. Other networking methods prevent collisions by limiting communications. Master-slave networks require that client do not less talk, unless they are responding to a request from a master machine. Token passing only permits the holder of the token to talk.
For simpler control systems, buttons and switches are quite suitable for operator interfaces. However as the number of operator options increases, or the interface becomes more complicated it may be preferable to replace many of the buttons, dials, and indicators with a Human Machine Interface (HMI). These units can be as simple as a single line of text and a couple of push buttons. More complicated units use large color monitors with touch screen capabilities. Ultimately these units are very powerful because the display contents can be changed to match the mode of operation.
An HMI is a simple to program graphical interface, very much like modern computer software. The simplest control pair are a button and indicator. Consider the example in Figure 437 A Simple HMI Application. The button can be used as a simple input to the PLC, while the output status can be shown with an indicator. The programmer will set up the Ethernet connection to pass tag/variable data between the HMI and PLC so that a change in one appears in the other. So, if the button is touched on the screen of the HMI, the value is changed in the memory of the HMI. On the next data update cycle it is sent to the PLC. The program in the PLC reads the value change and then sets a new indicator value. The updated indicator is then sent to the HMI on a subsequent communication update. The newly changed value in the HMI is then used to update the indicator on the screen.
The general implementation steps for implementing and HMI are listed below. To control the HMI from a PLC the user input will set bits in the PLC memory, and other bits in the PLC memory can be set to turn on/off items on the HMI screen.
There are a few basic approaches that will help when designing any Graphical User Interface (GUI), such as those running on HMIs. As normal the design process begins with gathering information, providing a structure, and then implementing the structure. A good set of introductory questions are given below.
After this information gathering stage the HMI Functionality can be designed using a state diagram and a list of input/output requirements for each screen. A simple example is given in Figure 438 State Diagram for a Simple HMI. Each of the four states in the diagram will become one of four HMI screens. The transitions between the screens are normally touchscreen buttons, but could also be values set by the PLC. For each of the screens a requirements list must be developed that shows the important information and actions available to the user.
A clear interface design can be presented to customers and non-technical people to get feedback before the implementation. These should include i) the State Diagram, ii) a list of Screen Requirements, and iii) a Look-and-Feel in general, and for each screen. Once these have been set the process of programming the HMI becomes a trivial matter.
It is uncommon for engineers to build their own controller designs. For example, once the electrical designs are complete, they must be built by an electrician. Therefore, it is your responsibility to effectively communicate your design intentions to the electricians through drawings. In some factories, the electricians also enter the ladder logic and do debugging. This chapter discusses the design issues in implementation that must be considered by the designer.
A control system will normally use AC and DC power at different voltage levels. Control cabinets are often supplied with single phase AC at 220/440/550V, or two phase AC at 220/440Vac, or three phase AC at 330/550V. This power must be dropped down to a lower voltage level for the controls and DC power supplies. 110Vac is common in North America, and 220Vac is common in Europe and the Commonwealth countries. It is also common for a controls cabinet to supply a higher voltage to other equipment, such as motors.
An example of a wiring diagram for a motor controller is shown in Figure 439 A Motor Controller Schematic (note: the symbols are discussed in detail later). Dashed lines indicate a single purchased component. This system uses 3 phase AC power (L1, L2 and L3) connected to the terminals. The three phases are then connected to a power interrupter. Next, all three phases are supplied to a motor starter that contains three contacts, M, and three thermal overload relays (breakers). The contacts, M, will be controlled by the coil, M. The output of the motor starter goes to a three phase AC motor. Power is supplied by connecting a step down transformer to the control electronics by connecting to phases L2 and L3. The lower voltage is then used to supply power to the left and right rails of the ladder below. The neutral rail is also grounded. The logic consists of two push buttons. The start push button is normally open, so that if something fails the motor cannot be started. The stop push button is normally closed, so that if a wire or connection fails the system halts safely. The system controls the motor starter coil M, and uses a spare contact on the starter, M, to seal in the motor stater.
The diagram also shows numbering for the wires in the device. This is essential for industrial control systems that may contain hundreds or thousands of wires. These numbering schemes are often particular to each facility, but there are tools to help make wire labels that will appear in the final controls cabinet.
Once the electrical design is complete, a layout for the controls cabinet is developed, as shown in Figure 440 A Physical Layout for the Control Cabinet. The physical dimensions of the devices must be considered, and adequate space is needed to run wires between components. In the cabinet the AC power would enter at the terminal block, and be connected to the main breaker. It would then be connected to the contactors and fuses. Two of the phases are also connected to the transformer to power the logic. The start and stop buttons are at the left of the box (note: normally these are mounted elsewhere, and a separate layout drawing would be needed).
The final layout in the cabinet might look like the one shown in Figure 441 Final Panel Wiring.
A photograph of an industrial controls cabinet is shown in Figure 442 An Industrial Controls Cabinet.
When selecting voltage ranges and types for inputs and outputs of a PLC some care can save time, money and effort. Figure 443 Standardized Voltages that shows three different voltage levels being used, therefore requiring three different input cards. If the initial design had selected a standard supply voltage for the system, then only one power supply, and PLC input card would have been required.
The terms ground and common are often interchanged (I do this often), but they do mean different things. The term, ground, comes from the fact that most electrical systems find a local voltage level by placing some metal in the earth (ground). This is then connected to all of the electrical outlets in the building. If there is an electrical fault, the current will be drawn off to the ground. The term, common, refers to a reference voltage that components of a system will use as common zero voltage. Therefore the function of the ground is for safety, and the common is for voltage reference. Sometimes the common and ground are connected.
The most important reason for grounding is human safety. Electrical current running through the human body can have devastating effects, especially near the heart. Figure 444 Current Levels shows some of the different current levels, and the probable physiological effects. The current is dependant upon the resistance of the body, and the contacts. A typical scenario is, a hand touches a high voltage source, and current travels through the body and out a foot to ground. If the person is wearing rubber gloves and boots, the resistance is high and very little current will flow. But, if the person has a sweaty hand (salty water is a good conductor), and is standing barefoot in a pool of water their resistance will be much lower. The voltages in the table are suggested as reasonable for a healthy adult in normal circumstances. But, during design, you should assume that no voltage is safe.
Figure 445 Grounding for Safety shows a grounded system with a metal enclosures. The left-hand enclosure contains a transformer, and the enclosure is connected directly to ground. The wires enter and exit the enclosure through insulated strain reliefs so that they don't contact the enclosure. The second enclosure contains a load, and is connected in a similar manner to the first enclosure. In the event of a major fault, one of the "live" electrical conductors may come loose and touch the metal enclosure. If the enclosure were not grounded, anybody touching the enclosure would receive an electrical shock. When the enclosure is grounded, the path of resistance between the case and the ground would be very small (about 1 ohm). But, the resistance of the path through the body would be much higher (thousands of ohms or more). So if there were a fault, the current flow through the ground might "blow" a fuse. If a worker were touching the case their resistance would be so low that they might not even notice the fault.
When improperly grounded a system can behave erratically or be destroyed. Ground loops are caused when too many separate connections to ground are made creating loops of wire. Figure 446 Eliminating Ground Loops shows ground wires as darker lines. A ground loop caused because an extra ground was connected between device A and ground. The last connection creates a loop. If a current is induced, the loop may have different voltages at different points. The connection on the right is preferred, using a tree configuration. The grounds for devices A and B are connected back to the power supply, and then to the ground.
Problems often occur in large facilities because they may have multiple ground points at different end of large buildings, or in different buildings. This can cause current to flow through the ground wires. As the current flows it will create different voltages at different points along the wire. This problem can be eliminated by using electrical isolation systems, such as optocouplers.
As the amount of current carried by a wire increases, it is important to use a wire with a larger cross section. A larger cross section results in a lower resistance, and less heating of the wire. The standard wire gages are listed in Figure 447 American Wire Gage (AWG) Copper Wire Sizes.
Most of us have seen a Vandegraff generator, or some other inductive device that can generate large sparks using inductive coils. On the factory floor there are some massive inductive loads that make this a significant design problem. This includes devices such as large motors and inductive furnaces. The root of the problem is that coils of wire act as inductors and when current is applied they build up magnetic fields, requiring energy. When the applied voltage is removed and the fields collapse the energy is dumped back out into the electrical system. As a result, when an inductive load is turned on it draws an excess amount of current (and lights dim), and when it is turn it off there is a power surge. In practical terms this means that large inductive loads will create voltage spikes that will damage our equipment.
Surge suppressors can be used to protect equipment from voltage spikes caused by inductive loads. Figure 448 Surge Suppressors shows the schematic equivalent of an uncompensated inductive load. For this to work reliably we would need to over design the system above the rated loads. The second schematic shows a technique for compensating for an AC inductive load using a resistor capacitor pair. It effectively acts as a high pass filter that allows a high frequency voltage spike to be short circuited. The final surge suppressor is common for DC loads. The diode allows current to flow from the negative to the positive. If a negative voltage spike is encountered it will short circuit through the diode.
PLCs are well built and rugged, but they are still relatively easy to damage on the factory floor. As a result, enclosures are often used to protect them from the local environment. Some of the most important factors are listed below with short explanations.
Dirt - Dust and grime can enter the PLC through air ventilation ducts. As dirt clogs internal circuitry, and external circuitry, it can effect operation. A storage cabinet such as Nema 4 or 12 can help protect the PLC.
Temperature - The semiconductor chips in the PLC have operating ranges where they are operational. As the temperature is moved out of this range, they will not operate properly, and the PLC will shut down. Ambient heat generated in the PLC will help keep the PLC operational at lower temperatures (generally to 0°C). The upper range for the devices is about 60°C, which is generally sufficient for sealed cabinets, but warm temperatures, or other heat sources (e.g. direct irradiation from the sun) can raise the temperature above acceptable limits. In extreme conditions heating, or cooling units may be required. (This includes "cold-starts" for PLCs before their semiconductors heat up).
Shock and Vibration - The nature of most industrial equipment is to apply energy to change workpieces. As this energy is applied, shocks and vibrations are often produced. Both will travel through solid materials with ease. While PLCs are designed to withstand a great deal of shock and vibration, special elastomer/spring or other mounting equipment may be required. Also note that careful consideration of vibration is also required when wiring.
Power - Power will fluctuate in the factory as large equipment is turned on and off. To avoid this, various options are available. Use an isolation transformer. A UPS (Uninterruptable Power Supply) is also becoming an inexpensive option, and are widely available for personal computers.
A standard set of enclosures was developed by NEMA (National Electric Manufacturers Association). These enclosures are intended for voltage ratings below 1000Vac. Figure 449 NEMA Enclosures shows some of the rated cabinets. Type 12 enclosures are a common choice for factory floor applications.
In a controls cabinet the conductors are passed through channels or bundled. When dissimilar conductors are run side-by-side problems can arise. The basic categories of conductors are shown in Figure 450 Wire and Cable Categories. In general category 1 conductors should not be grouped with other conductor categories. Care should be used when running category 2 and 3 conductors together.
All systems will fail eventually. A fail-safe design will minimize the damage to people and equipment. Consider the selection electrical connections. If wires are cut or connections fail, the equipment should still be safe. For example, if a normally closed stop button is used, and the connector is broken, it will cause the machine to stop as if the stop button has been pressed.
NC (Normally Closed) - When wiring switches that stop processes use normally closed so that if they fail the process will stop. E-Stops must always be NC, and they must cut off the master power, not just be another input to the PLC.
· A fail-safe design - Programs should be designed so that they check for problems, and shut down in safe ways. Most PLC's also have imminent power failure sensors, use these whenever danger is present to shut down the system safely.
Most engineers have taken a programming course where they learned to write a program and then debug it. Debugging involves running the program, testing it for errors, and then fixing them. Even for an experienced programmer it is common to spend more time debugging than writing software. For PLCs this is not acceptable! If you are running the program and it is operating irrationally it will often damage hardware. Also, if the error is not obvious, you should go back and reexamine the program design. When a program is debugged by trial and error, there are probably errors remaining in the logic, and the program is very hard to trust. Remember, a bug in a PLC program might kill somebody.
After a system is in operation it will eventually fail. When a failure occurs it is important to be able to identify and solve problems quickly. The following list of steps will help track down errors in a PLC system.
2. Look at the PLC to see which error lights are on. Each PLC vendor will provide documents that indicate which problems correspond to the error lights. Common error lights are given below. If any off the warning lights are on, look for electrical supply problems to the PLC.
3. Check indicator lights on I/O cards, see if they match the system. i.e., look at sensors that are on/off, and actuators on/off, check to see that the lights on the PLC I/O cards agree. If any of the light disagree with the physical reality, then interface electronics/mechanics need inspection.
Most PLCs will allow a user to force inputs and outputs. This means that they can be turned on, regardless of the physical inputs and program results. This can be convenient for debugging programs, and, it makes it easy to break and destroy things! When forces are used they can make the program perform erratically. They can also make outputs occur out of sequence. If there is a logic problem, then these don't help a programmer identify these problems.
There are many process modeling techniques, but only a few are suited to process control. The ANSI/ISA-S5.1-1984 Piping and Instrumentation Diagram (P&ID) standard provides good tools for documenting processes. The symbols used on the diagrams are shown in Figure 451 Symbols for Functions and Instruments. Note that the modifier used for the instruments can be applied to other discrete devices.
The line symbols also describe the type of flow. Figure 452 Flow Line Symbols and Types shows a few of the popular flow lines.
Figure 453 Sensor and Actuator Symbols and Types shows some of the more popular sensor and actuator symbols.
Previous chapters have explored design techniques to solve large problems using techniques such as state diagrams and SFCs. Large systems may contain hundreds of those types of problems. This section will attempt to lay a philosophical approach that will help you approach these designs. The most important concepts are clarity and simplicity.
Understanding the process will simplify the controller design. When the system is only partially understood, or vaguely defined the development process becomes iterative. Programs will be developed, and modified until they are acceptable. When information and events are clearly understood the program design will become obvious. Questions that can help clarify the system include;
When possible a large controls problems should be broken down into smaller problems. This often happens when parts of the system operate independent of each other. This may also happen when operations occur in a fixed sequence. If this is the case the controls problem can be divided into the two smaller (and simpler) portions. The questions to ask are;
After examining the system the controller should be broken into operations. This can be done with a tree structure as shown in Figure 454 Functional Diagram for Press Control. This breaks control into smaller tasks that need to be executed. This technique is only used to divide the programming tasks into smaller sections that are distinct.
Each block in the functional diagram can be written as a separate subroutine. A higher level executive program will call these subroutines as needed. The executive program can also be broken into smaller parts. This keeps the main program more compact, and reduces the overall execution time. And, because the subroutines only run when they should, the change of unexpected operation is reduced. This is the method promoted by methods such as SFCs and FBDs.
Each functional program should be given its' own block of memory so that there are no conflicts with shared memory. System wide data or status information can be kept in common areas. Typical examples include a flag to indicate a certain product type, or a recipe oriented system.
Testing should be considered during software planning and writing. The best scenario is that the software is written in small pieces, and then each piece is tested. This is important in a large system. When a system is written as a single large piece of code, it becomes much more difficult to identify the source of errors.
The most disregarded statement involves documentation. All documentation should be written when the software is written. If the documentation can be written first, the software is usually more reliable and easier to write. Comments should be entered when ladder logic is entered. This often helps to clarify thoughts and expose careless errors. Documentation is essential on large projects where others are likely to maintain the system. Even if you maintain it, you are likely to forget what your original design intention was.
· Programmers sit at the keyboard and debug by trial and error. If a programmer is testing a program and an error occurs, there are two possible scenarios. First, the programmer knows what the problem is, and can fix it immediately. Second, the programmer only has a vague idea, and often makes no progress doing trial-and-error debugging. If trial-and-error programming is going on the program is not understood, and it should be fixed through replanning.
· Biting off more than you can chew. some projects are overly ambitious. Avoid adding wild extras, and just meet the needs of the project. Sometimes an unnecessary extra can take more time than the rest of the project.
After a program has been written it is important to verify that it works as intended, before it is used in production. In a simple application this might involve running the program on the machine, and looking for improper operation. In a complex application this approach is not suitable. A good approach to software development involves the following steps in approximate order:
6. Error proofing - the system can be tested by trying expected and unexpected failures. When doing this testing, irrational things should also be considered. This might include unplugging sensors, jamming actuators, operator errors, etc.
Program testing can be done on machines, but this is not always possible or desireable. In these cases simulators allow the programs to be tested without the actual machine. The use of a simulator typically follows the basic steps below.
2. A basic model of the system is developed in terms of the inputs and outputs. This might include items such as when sensor changes are expected, what effects actuators should have, and expected operator inputs.
Poor documentation is a common complaint lodged against control system designers. Good documentation is developed as a project progresses. Many engineers will leave the documentation to the end of a project as an afterthought. But, by that point many of the details have been forgotten. So, it takes longer to recall the details of the work, and the report is always lacking.
A set of PLC design forms are given in Figure 455 Design Cover Page to Figure 461 Ladder Logic Page. These can be used before, during and after a controls project. These forms can then be kept in design or maintenance offices so that others can get easy access and make updates at the controller is changed. Figure 455 Design Cover Page shows a design cover page. This should be completed with information such as a unique project name, contact person, and controller type. The list of changes below help to track design, redesign and maintenance that has been done to the machine. This cover sheet acts as a quick overview on the history of the machine. Figure 456 Project Note Page to Figure 458 Project Diagramming and Notes Page show sheets that allow free form planning of the design. Figure 459 IO Planning Page shows a sheet for planning the input and output memory locations. Figure 460 Internal Memory Locations Page shows a sheet for planning internal memory locations, and finally Figure 461 Ladder Logic Page shows a sheet for planning the ladder logic. The sheets should be used in the order they are given, but they do not all need to be used. When the system has been built and tested, a copy of the working ladder logic should be attached to the end of the bundle of pages.
These design sheets are provided as examples. PLC vendors often supply similar sheets. Many companies also have their own internal design documentation procedures. If you are in a company without standardized design formats, you should consider implementing such a system.
Previous chapters have discussed safety as an inherent part of the design process - AS IT MUST BE. These include elements such as making stops normally closed, starts normally open, systems return to safe inherently, programs that are predictable, etc. There are a variety of systems for evaluating and managing safety issues from a range of groups including NASA, DOD, and many more.
Dangers can be estimated using a Safety Integrity Level (SIL) - the safety requirements for a function in a system. These estimates of failure can be calculated using individual component reliability, historical data, and some careful consideration. Typical probabilities of failure by type of system are given below.
- design the machine be faster than the needed cycle time to allow flexibility and excess capacity - this does seem contradictory, but it allows better use of other resources. For example, if a worker takes a bathroom break, the production can continue with fewer workers.
After the planning phase of the design, the equipment can be ordered. This decision is usually based upon the required inputs, outputs and functions of the controller. The first decision is the type of controller; rack, mini, micro, or software based. This decision will depend upon the basic criteria listed below.
· Scan Time - Big programs or faster processes will require shorter scan times. And, the shorter the scan time, the higher the cost. Typical values for this are 1 microsecond per simple ladder instruction
4. Count the program instructions and enter the values into the sheets in Figure 462 Memory and Time Tally Sheet and Figure 463 Memory and Timer Requirement Sheet. Use the instruction times and memory requirements for each instruction to determine if the PLC has sufficient memory, and if the response time will be adequate for the process. Samples of scan times and memory are given in Figure 464 Typical Instruction Times and Memory Usage for a Micrologix Controller and Figure 465 Typical Instruction Times and Memory Usage for a PLC-5 Controller.
Many different special I/O modules are available. Some module types are listed below for illustration, but the commercial selection is very large. Generally most vendors offer competitive modules. Some modules, such as fuzzy logic and vision, are only offered by a few supplier, such as Omron. This may occasionally drive a decision to purchase a particular type of controller.
· A wide variety of CPU's are available, and can often be used interchangeably in the rack systems. the basic formula is price/performance. The table below compares a few CPU units in various criteria.
· ID Tags - Special "tags" can be attached to products, and as they pass within range of pickup sensors, they transmit an ID number, or a packet of data. This data can then be used, updated, and rewritten to the tags by the PLC. Messages are stored as ASCII text.
AC (Alternating Current) - most commonly an electrical current and voltage that changes in a sinusoidal pattern as a function of time. It is also used for voltages and currents that are not steady (DC). Electrical power is normally distributed at 60Hz or 50Hz.
aliasing - in digital systems there are natural limits to resolution and time that can be exceeded, thus aliasing the data. For example. an event may happen too fast to be noticed, or a point may be too small to be displayed on a monitor.
asynchronous communications (serial) - strings of characters (often ASCII) are broken down into a series of on/off bits. These are framed with start/stop bits, and parity checks for error detection, and then send out one character at a time. The use of start bits allows the characters to be sent out at irregular times.
attenuation - as the sound/vibration energy propagates, it will undergo losses. The losses are known as attenuation, and are often measured in dB. For general specifications, the attenuation may be tied to units of dB/ft.
automatic control - a feedback of a system state is compared to a desired value and the control value for the system is adjusted by electronics, mechanics and/or computer to compensate for differences.
background - in multitasking systems, processes may be running in the background while the user is working in the foreground, giving the user the impression that they are the only user of the machine (except when the background job is computationally intensive).
band pressure Level - when measuring the spectrum of a sound, it is generally done by looking at frequencies in a certain bandwidth. This bandwidth will have a certain pressure value that is an aggregate for whatever frequencies are in the bandwidth.
benchmark - a figure to compare with. If talking about computers, these are often some numbers that can be use to do relative rankings of speeds, etc. If talking about design, we can benchmark our products against our competitors to determine our weaknesses.
bit/nibble/byte/word - binary numbers use a 2 value number system (as opposed to the decimal 0-9, binary uses 0-1). A bit refers to a single binary digit, and as we add digits we get larger numbers. A bit is 1 digit, a nibble is 4 digits, a byte is 8 digits, and a word is 16 digits.
bottom-up design - the opposite of top-down design. In this methodology the most simple/basic functions are designed first. These simple elements are then combined into more complex elements. This continues until all of the hierarchical design elements are complete.
bus - a computer has buses (collections of conductors) to move data, addresses, and control signals between components. For example to get a memory value, the address value provided the binary memory address, the control bus instructs all the devices to read/write, and to examine the address. If the address is valid for one part of the computer, it will put a value on the data bus that the CPU can then read.
CAD (Computer Aided Design) - is the creation and optimization of the design itself using the computer as a productivity tool. Components of CAD include computer graphics, a user interface, and geometric modelling.
CD-ROM (Compact Disc Read Only Memory) - originally developed for home entertainment, these have turned out to be high density storage media available for all platforms at very low prices (< $100 at the bottom end). The storage of these drives is well over 500 MB.
clock speed - the rate at which a computers main time clock works at. The CPU instruction speed is usually some multiple or fraction of this number, but true program execution speeds are loosely related at best.
coaxial cable - a central wire contains a signal conductor, and an outer shield provides noise immunity. This configuration is limited by its coaxial geometry, but it provides very high noise immunity.
collisions - when more than one network client tries to send a packet at any one time, they will collide. Both of the packets will be corrupted, and as a result special algorithms and hardware are used to abort the write, wait for a random time, and retry the transmission. Collisions are a good measure of network overuse.
Computer Graphics - is the use of the computer to draw pictures using an input device to specify geometry and other attributes and an output device to display a picture. It allows engineers to communicate with the computer through geometry.
connection - a network term for communication that involves first establishing a connection, second data transmission, and third closing the connection. Connectionless networking does not require connection.
contact - 1. metal pieces that when touched will allow current to pass, when separated will stop the flow of current. 2. in PLCs contacts are two vertical lines that represent an input, or internal memory location.
core memory - an outdated term describing memory made using small torii that could be polarized magnetically to store data bits. The term lives on when describing some concepts, for example a `core dump' in UNIX. Believe it or not this has not been used for decades but still appears in many new textbooks.
criteria - are performance variables used to measure the quality of a design. Criteria are usually defined in terms of degree - for example, lowest cost or smallest volume or lowest stress. Criteria are used to optimize a design.
current rating - this is typically the maximum current that a designer should expect from a system, or the maximum current that an input will draw. Although some devices will continue to work outside rated values, not all will, and thus this limit should be observed in a robust system. Note: exceeding these limits is unsafe, and should be done only under proper engineering conditions.
cursors - are movable trackers on a computer screen which indicate the currently addressed screen position, or the focus of user input. The cursor is usually represented by an arrow, a flashing character or cross-hair.
darlington coupled - two transistors are ganged together by connecting collectors to bases to increase the gain. These increase the input impedance, and reduce the back propagation of noise from loads.