Programmable logic controllers
Ladder logic execution
Before the
advent of solid-state logic circuits, logical control systems were designed and
built exclusively around electromechanical relays. Relays are far from obsolete
in modern design, but have been replaced in many of their former roles as
logic-level control devices, relegated most often to those applications
demanding high current and/or high voltage switching.
Systems and
processes requiring "on/off" control abound in modern commerce and
industry, but such control systems are rarely built from either
electromechanical relays or discrete logic gates. Instead, digital computers
fill the need, which may be programmed to do a variety of logical
functions.
In the late 1960's an
American company named Bedford Associates released a computing device they
called the MODICON. As an acronym, it meant Modular Digital
Controller, and later became the name of a company division devoted to
the design, manufacture, and sale of these special-purpose control computers.
Other engineering firms developed their own versions of this device, and it
eventually came to be known in non-proprietary terms as a PLC, or Programmable
Logic Controller. The purpose of a PLC was to directly replace
electromechanical relays as logic elements, substituting instead a solid-state
digital computer with a stored program, able to emulate the interconnection of
many relays to perform certain logical tasks.
A PLC has many
"input" terminals, through which it interprets "high" and
"low" logical states from sensors and switches. It also has many
output terminals, through which it outputs "high" and "low"
signals to power lights, solenoids, contactors, small motors, and other devices
lending themselves to on/off control. In an effort to make PLCs easy to
program, their programming language was designed to resemble ladder logic
diagrams. Thus, an industrial electrician or electrical engineer accustomed to
reading ladder logic schematics would feel comfortable programming a PLC to
perform the same control functions.
PLCs are
industrial computers, and as such their input and output signals are typically
120 volts AC, just like the electromechanical control relays they were designed
to replace. Although some PLCs have the ability to input and output low-level
DC voltage signals of the magnitude used in logic gate circuits, this is the
exception and not the rule.
Signal connection
and programming standards vary somewhat between different models of PLC, but
they are similar enough to allow a "generic" introduction to PLC
programming here. The following illustration shows a simple PLC, as it might
appear from a front view. Two screw terminals provide connection to 120 volts
AC for powering the PLC's internal circuitry, labeled L1 and L2. Six screw
terminals on the left-hand side provide connection to input devices, each
terminal representing a different input "channel" with its own
"X" label. The lower-left screw terminal is a "Common"
connection, which is generally connected to L2 (neutral) of the 120 VAC power
source.
Inside the PLC
housing, connected between each input terminal and the Common terminal, is an
opto-isolator device (Light-Emitting Diode) that provides an electrically
isolated "high" logic signal to the computer's circuitry (a
photo-transistor interprets the LED's light) when there is 120 VAC power
applied between the respective input terminal and the Common terminal. An
indicating LED on the front panel of the PLC gives visual indication of an
"energized" input:
Output signals
are generated by the PLC's computer circuitry activating a switching device
(transistor, TRIAC, or even an electromechanical relay), connecting the
"Source" terminal to any of the "Y-" labeled output
terminals. The "Source" terminal, correspondingly, is usually
connected to the L1 side of the 120 VAC power source. As with each input, an
indicating LED on the front panel of the PLC gives visual indication of an
"energized" output:
In this way,
the PLC is able to interface with real-world devices such as switches and
solenoids.
The actual logic
of the control system is established inside the PLC by means of a computer
program. This program dictates which output gets energized under which input
conditions. Although the program itself appears to be a ladder logic diagram,
with switch and relay symbols, there are no actual switch contacts or relay coils
operating inside the PLC to create the logical relationships between input and
output. These are imaginary contacts and coils, if you will. The program
is entered and viewed via a personal computer connected to the PLC's
programming port.
Consider the
following circuit and PLC program:
When the
pushbutton switch is un actuated (un pressed), no power is sent to the X1 input
of the PLC. Following the program, which shows a normally-open X1 contact in
series with a Y1 coil, no "power" will be sent to the Y1 coil. Thus,
the PLC's Y1 output remains de-energized, and the indicator lamp connected to
it remains dark.
If the
pushbutton switch is pressed, however, power will be sent to the PLC's X1
input. Any and all X1 contacts appearing in the program will assume the
actuated (non-normal) state, as though they were relay contacts actuated by the
energizing of a relay coil named "X1". In this case, energizing the
X1 input will cause the normally-open X1 contact will "close,"
sending "power" to the Y1 coil. When the Y1 coil of the program
"energizes," the real Y1 output will become energized, lighting up
the lamp connected to it:
It must be
understood that the X1 contact, Y1 coil, connecting wires, and
"power" appearing in the personal computer's display are all virtual.
They do not exist as real electrical components. They exist as commands in a
computer program -- a piece of software only -- that just happens to resemble a
real relay schematic diagram.
Equally
important to understand is that the personal computer used to display and edit
the PLC's program is not necessary for the PLC's continued operation. Once a
program has been loaded to the PLC from the personal computer, the personal
computer may be unplugged from the PLC, and the PLC will continue to follow the
programmed commands. I include the personal computer display in these
illustrations for your sake only, in aiding to understand the relationship
between real-life conditions (switch closure and lamp status) and the program's
status ("power" through virtual contacts and virtual coils).
The true power and versatility of a PLC is revealed
when we want to alter the behavior of a control system. Since the PLC is a
programmable device, we can alter its behavior by changing the commands we give
it, without having to reconfigure the electrical components connected to it.
For example, suppose we wanted to make this switch-and-lamp circuit function in
an inverted fashion: push
the button to make the lamp turn off, and release it to make it turn on.
The "hardware" solution would require that a normally-closed push button switch be substituted for the normally-open switch currently in
place. The "software" solution is much easier: just alter the program
so that contact X1 is normally-closed rather than normally-open.
In the
following illustration, we have the altered system shown in the state where the push button is not actuated (not being pressed):
In this next illustration, the switch is shown actuated (pressed):
Furthermore, since each output in the PLC is nothing more than a bit in its memory as well, we can assign contacts in a PLC program "actuated" by an output (Y) status. Take for instance this next system, a motor start-stop control circuit:
The pushbutton
switch connected to input X1 serves as the "Start" switch, while the
switch connected to input X2 serves as the "Stop." Another contact in
the program, named Y1, uses the output coil status as a seal-in contact,
directly, so that the motor contactor will continue to be energized after the
"Start" pushbutton switch is released. You can see the
normally-closed contact X2 appear in a colored block, showing that it is in a
closed ("electrically conducting") state.
If we were to
press the "Start" button, input X1 would energize, thus
"closing" the X1 contact in the program, sending "power" to
the Y1 "coil," energizing the Y1 output and applying 120 volt AC
power to the real motor contactor coil. The parallel Y1 contact will also
"close," thus latching the "circuit" in an energized state:
Now, if we
release the "Start" pushbutton, the normally-open X1
"contact" will return to its "open" state, but the motor
will continue to run because the Y1 seal-in "contact" continues to
provide "continuity" to "power" coil Y1, thus keeping the
Y1 output energized:
To stop the
motor, we must momentarily press the "Stop" pushbutton, which will
energize the X2 input and "open" the normally-closed
"contact," breaking continuity to the Y1 "coil:"
When the
"Stop" pushbutton is released, input X2 will de-energize, returning
"contact" X2 to its normal, "closed" state. The motor,
however, will not start again until the "Start" pushbutton is
actuated, because the "seal-in" of Y1 has been lost:
An important point to make here is that fail-safe design is just as important in PLC-controlled systems as it is in electromechanical relay-controlled systems. One should always consider the effects of failed (open) wiring on the device or devices being controlled. In this motor control circuit example, we have a problem: if the input wiring for X2 (the "Stop" switch) were to fail open, there would be no way to stop the motor!
The solution to this problem is a reversal of logic between the X2 "contact" inside the PLC program and the actual "Stop" pushbutton switch:
When the
normally-closed "Stop" pushbutton switch is un actuated (not pressed),
the PLC's X2 input will be energized, thus "closing" the X2
"contact" inside the program. This allows the motor to be started
when input X1 is energized, and allows it to continue to run when the
"Start" pushbutton is no longer pressed. When the "Stop"
pushbutton is actuated, input X2 will de-energize, thus "opening" the
X2 "contact" inside the PLC program and shutting off the motor. So,
we see there is no operational difference between this new design and the
previous design.
However, if
the input wiring on input X2 were to fail open, X2 input would de-energize in
the same manner as when the "Stop" pushbutton is pressed. The result,
then, for a wiring failure on the X2 input is that the motor will immediately
shut off. This is a safer design than the one previously shown, where a
"Stop" switch wiring failure would have resulted in an inability
to turn off the motor.
In addition to
input (X) and output (Y) program elements, PLCs provide "internal"
coils and contacts with no intrinsic connection to the outside world. These are
used much the same as "control relays" (CR1, CR2, etc.) are used in
standard relay circuits: to provide logic signal inversion when necessary.
To demonstrate how one of these "internal"
relays might be used, consider the following example circuit and program,
designed to emulate the function of a three-input NAND gate. Since PLC program
elements are typically designed by single letters, I will call the internal
control relay "C1" rather than "CR1" as would be customary
in a relay control circuit: