| 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: s 
     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 unactuated (unpressed), 
    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 pushbutton 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 pushbutton is unactuated (not being pressed): 
     
     In this next illustration, the switch is shown 
    actuated (pressed): 
     
     One of the advantages of implementing logical 
    control in software rather than in hardware is that input signals can be 
    re-used as many times in the program as is necessary. For example, take the 
    following circuit and program, designed to energize the lamp if at least two 
    of the three pushbutton switches are simultaneously actuated: 
     
     To build an equivalent circuit using 
    electromechanical relays, three relays with two normally-open contacts each 
    would have to be used, to provide two contacts per input switch. Using a 
    PLC, however, we can program as many contacts as we wish for each "X" input 
    without adding additional hardware, since each input and each output is 
    nothing more than a single bit in the PLC's digital memory (either 0 or 1), 
    and can be recalled as many times as necessary.
   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 unactuated (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: 
     
     In this circuit, the lamp will remain lit so 
    long as any of the pushbuttons remain unactuated (unpressed). To make 
    the lamp turn off, we will have to actuate (press) all three 
    switches, like this: 
     
     This section on programmable logic controllers 
    illustrates just a small sample of their capabilities. As computers, PLCs 
    can perform timing functions (for the equivalent of time-delay relays), drum 
    sequencing, and other advanced functions with far greater accuracy and 
    reliability than what is possible using electromechanical logic devices. 
    Most PLCs have the capacity for far more than six inputs and six outputs. 
    The following photograph shows several input and output modules of a single 
    Allen-Bradley PLC. 
     
     With each module having sixteen "points" of 
    either input or output, this PLC has the ability to monitor and control 
    dozens of devices. Fit into a control cabinet, a PLC takes up little room, 
    especially considering the equivalent space that would be needed by 
    electromechanical relays to perform the same functions: 
     
     One advantage of PLCs that simply cannot 
    be duplicated by electromechanical relays is remote monitoring and control 
    via digital computer networks. Because a PLC is nothing more than a 
    special-purpose digital computer, it has the ability to communicate with 
    other computers rather easily. The following photograph shows a personal 
    computer displaying a graphic image of a real liquid-level process (a 
    pumping, or "lift," station for a municipal wastewater treatment system) 
    controlled by a PLC. The actual pumping station is located miles away from 
    the personal computer display: 
     
     |