Basics of PLC Programming

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.

Table of Contents

PLC

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 & Analog values from switches and sensors.

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 and also analog output for controlling control valves, motor speed control etc.

In an effort to make PLCs easy to program, their programming language was designed to resemble ladder logic diagrams. Thus, an engineer accustomed to reading ladder logic schematics would feel comfortable programming a PLC to perform the same control functions.

PLC Programming

The following illustration shows a simple PLC, as it might appear from a front view.

Two screw terminals provide connection to power supply 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.

PLC Programming Control System

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:

Basics of PLC Programming

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:

PLC Input Terminals

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:

PLC Programming Port

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:

plc tutorials for beginners

It must be understood that the X1 contact, Y1 coil, connecting wires, and “power” appearing in the computer’s (engineering system where PLC software loaded) 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 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 computer, the computer may be unplugged from the PLC, and the PLC will continue to follow the programmed commands.

I include the 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):

PLC Programming Cable

In this next illustration, the switch is shown actuated (pressed):

PLC Switch Activated

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:

PLC energize the lamp

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:

PLC Motor Start

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:

Basics of PLC latching

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:

PLC Seal-in Circuit

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:”

PLC momentarily press

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:

PLC Pushbutton

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:

PLC Stop Button

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:

PLC Motor Logic

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:

PLC Switch ON

PLC Tutorials :

If you liked this article, then please subscribe to our YouTube Channel for PLC and SCADA video tutorials.

You can also follow us on Facebook and Twitter to receive daily updates.

Don't Miss Our Updates
Be the first to get exclusive content straight to your email.
We promise not to spam you. You can unsubscribe at any time.
Invalid email address

2 thoughts on “Basics of PLC Programming”

Leave a Comment