Tag Archives: plc programming code example

PLC Programming Example – Paint Spraying

We will look at a PLC basic tutorial of a paint spraying station. Following the 5 steps to program development this PLC programming example should fully explain the procedure for developing the PLC program logic. Ladder will be our PLC programming language.

We will be using the Do-more Designer software which comes with a simulator. This fully functional program is offered free of charge at automation direct.

Define the task:

What has to happen?
Paint Station 01

Paint spraying system where boxes are fed by gravity through a feeder magazine one at a time onto a moving conveyor belt. Upon the start signal, boxes are pushed towards the conveyor by valve 1. This is a cylinder which extends and retracts which operates switches S1 and S2 respectfully. A spraying nozzle paints each box as it passes under the paint spray controlled by valve 2. A sensor (S3) counts each box being sprayed. When 6 boxes have been painted the valve 2 shuts off (paint spray) and valve 1 (cylinder) stops moving boxes onto the conveyor. Three seconds later the conveyor stops moving and the hopper with its load moves forward (valve 3) where it is emptied. Ten seconds later the hopper returns to the original position. The cycle is then complete and waits for a start signal again.

Define the Inputs and Outputs:

Inputs:
Start Switch – On/Off (Normally Open) – NO
Stop Switch – On/Off (Normally Closed) – NC
S1 – Valve 1 (cylinder retract) On/Off – NO
S2 – Valve 1 (cylinder extend) On/Off – NO
S3 – Box Detected- On/Off – NO
Outputs:
Motor – On/Off (Conveyor Run)
Valve 1- Cylinder to feed boxes – On/Off
Valve 2- Paint Spray – On/Off
Valve 3- Cylinder to move hopper – On/Off

Develop a logical sequence of operation:

Fully understanding the logic before starting to program can save you time and frustration.

Sequence Table: The following is a sequence table for our paint spraying application.

Sequence Table
1 – Input / Ouput ON
0 – Input / Output OFF
x – Input / Output Does not Matter
When power goes off and comes on the sequence will continue. This means that we must use memory retentive areas of the PLC. The stop pushbutton will stop the sequence. The start will resume until the end.

Develop the PLC program:

The best way to see the development of the programmable logic controller program is to follow the sequence table along with the following program. You will see the direct correlation between the two and get a good understanding of the process.

This is the main process start and stop bit. V0:0 is used because it is memory retentive.
Paint Stn Program 1

Control of the Motor (Conveyor) and the paint spray is done with the V0:0 contact in front of the actual PLC output. The conveyor and paint spray will stop when the timer 0 is done. This is the delay after the last box is detected to allow the box to be painted and loaded onto the hopper.
Paint Stn Program 2

Control of the box movement onto the conveyor. As long as we have the process start and the hopper count is not complete this will allow the cylinder to put boxes on the conveyor.
Paint Stn Program 3

Count number of boxes in the hopper via S3. The counter is memory retentive.
Paint Stn Program 4

Timer to stop the conveyor and spray after the last box is detected for the hopper. This will allow time for the box to be sprayed and loaded into the hopper.
Paint Stn Program 5

Hopper movement to load and unload the boxes.
Paint Stn Program 6

The hopper unload timer is to unload the boxes and will then trigger the reset conveyor timer, box counter and the process start bit (V0:0).
Paint Stn Program 7

Test the program:

Paint Spraying
Test the program with a simulator or actual machine. Make modifications as necessary. Remember to follow up after a time frame to see if any problems arise that need to be addressed with the program.

Watch on YouTube : PLC Programming Example – Paint Spraying
If you have any questions or need further information please contact me.
Thank you,
Garry



If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.


Use the information to inform other people how numbering systems work. Sign up now.

The ‘Robust Data Logging for Free’ eBook is also available as a free download. The link is included when you subscribe to ACC Automation.

How to make a Start / Stop / Jog circuit in a PLC

Looking at a stop start jog circuit in the PLC will help us in understanding the differences in hard wiring the circuit and programming.

Lets start with the basic stop stop circuit.
Here is what it looks like hard wired. (Physical switches wired to outputs devices, such as motor contactor and relays.)
Latching Relay Circuit
When the start pushbutton (NO) is pressed the power is passed through the stop pushbutton (NC) to the control relay (CR). The CR contact closes and ‘seals in’  the start pushbutton. The start pushbutton can now be released because the CR contacts allow the power to pass through to the CR.

NO – Normally Open – This refers to the state of the input  device if nothing acts upon it. 
NC – Normally Closed – This refers to the state of the input device if nothing acts upon it.

Lets take a look at the PLC program for the above wiring diagram.
start stop 001
The first thing that you will notice is that the input for Stop is NO contact and not NC. This is because the actual signal wired in the input is NC and we do not want to inverse this signal. You can see that the stop input is currently on in the program.
If we hit the start pushbutton then the circuit is complete and the output CR turns on.

start stop 002Letting go of the start pushbutton, the output remains on because the CR input seals in the start pushbutton.
start stop 003
Pressing the stop pushbutton will break the circuit and turn off CR.
start stop 004
Letting go of the stop pushbutton will return us back to the original state shown above.

Adding a jog input to the hard wiring diagram will look something like this:
start stop Jog
You can see that the diagram will work the exact same as the circuit above with the start and stop pushbuttons. The jog when pushed will break the sealing contact, and then make a bypass of the start pushbutton. This will keep the M coil on as long as the jog button is pressed. Letting go of the jog will stop the bypass of the start pushbutton which will stop M coil. When the jog returns to the original state M input will already be off so it will not keep M coil on.
The action on the jog is referred to as a Break before Make device. The jog pushbutton will break the circuit before making another connection.

Sometimes in programming a PLC it can be beneficial to think of the inputs as Make before Break. Inputs are made before the previous ones are broken. The programmable controller will scan the program from left to right, top to bottom. The outputs from the rung above are available to the rungs below. Here is a previous article on PLC scanning.
Lets take a look at PLC program with a jog that will not work.
start stop 010
Even though this looks like it would work… Remember that the contacts in the PLC are make before break. You can jog the unit and it will turn on but as soon as you release your finger off of the pushbutton the not jog input will seal the CR in. The output will not be able to turn off.
start stop 011

We must consider the delay from on to off when looking at the PLC program for this circuit.
Here is a circuit that will work:
start stop 020

Notice that we create a delay from on to off by turning on an intermediate bit in the program.

Another way to do start stop circuits in the PLC is to use the instructions Set (SET)  and Reset (RST).
The set will have all of the conditions to turn on a bit in memory and the reset will have all of the conditions to turn off a bit in memory. These instructions are used to make the program easier to view and troubleshoot.
Here is the same logic above using the set and reset instructions.
start stop 021

Notice that X10 Jog2 is in parallel with the Start. We use a trailing edge one shot in parallel with the Stop. This sets our delay so the output will turn off.

Watch on YouTube :  Learn PLC Programming – Free 4

If you have any questions or need further information please contact me.
Thank you,
Garry



If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.


Use the information to inform other people how numbering systems work. Sign up now.

The ‘Robust Data Logging for Free’ eBook is also available as a free download. The link is included when you subscribe to ACC Automation.

Adjusting Daylight Savings Time In Do-More

Adjusting for daylight saving time in Do-More PLC.

When does it start and end?
Canada Daylight Saving Time begins at 2:00 am local time on the second Sunday in March. On the first Sunday in November areas on Daylight Saving Time return to Standard Time at 2:00 am local time. When Daylight Saving Time begins turn your clocks ahead one hour. This is what happens in most parts of Canada.



There are several methods in the Do-More PLC to account for Daylight Savings Time. You can use the internet time clock, manual adjustment or use an internal bit to set daylight savings time. Since websites for internet time may not always be reliable and we do not want to wake up at 2 am in the morning to set the real time clock, we will use the internal bit method.

ST768 $SummerTime Configuration
Set this bit ON to add one hour to LocalTime to account for Daylight Savings Time.

The first line of code will check for the 3rd month (March). Then ensure that the day is between 8 and 14 so that we are viewing the second week. Next make sure the day of the week is 0 (Sunday). Finally it will check to make sure the hour is 2 (2am). The ST768 $SummerTime will then be turned on to add one hour to the real time clock in the PLC.

Daylight Savings Program ON-min

The second line of code will check for the 11th month (November). Then ensure that the day is less than 8 first week. Next make sure the day of the week is 0 (Sunday). Finally it will check to make sure the hour is 2 (2am). The ST768 $SummerTime will then be turned off to subtract one hour to the real time clock in the PLC.

Daylight Savings Program OFF-min

Adding this code to your existing logging information in the PLC can be helpful when determining the correct time.

If you have any questions or need further information, please contact me.
Regards,
Garry

P.S. In the contact section, send me a email and I will send you a link for the download of this code.



If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.


Use the information to inform other people how numbering systems work. Sign up now.

The ‘Robust Data Logging for Free’ eBook is also available as a free download. The link is included when you subscribe to ACC Automation.

Building a PLC Program That You Can Be Proud Of – Part 2

In part 1 we looked at writing PLC programs to control a traffic light using discrete bits and then using timed sequencing using indirect addressing.  We will now look at how we can use indirect addressing for inputs as well as output to control the sequence in the program.

Lets look at an example of controlling pneumatic (air) cylinders.

Video of  Pneumatic Cylinder Sequencing on YouTube.

This site contains a video of the three cylinders and the sequence required.

This program will have the following inputs. Even thought no sensors are mounted on the cylinders, it is best to have sensor inputs when the cylinder is extended (out) and retracted (in)
Inputs:
Cylinder 1 In – X1
Cylinder 1 Out – X2
Cylinder 2 In – X3
Cylinder 2 Out – X4
Cylinder 3 In – X5
Cylinger 3 Out – X6
Start PB NO – X7
Stop PB NO – X8
Step PB NO – X9

This program will have the following outputs.
Outputs:
Cylinder 1 In – Y1
Cylinder 1 Out – Y2
Cylinder 2 In – Y3
Cylinder 2 Out – Y4
Cylinder 3 In – Y5
Cylinger 3 Out – Y6

We will use the following pointers:
V0 – Output pointer starting at address V2000
V1 – Input pointer starting at address V1000
V10 will be the input word
V20 will be the output word

Before we start and write the code lets look at the sequence that we are trying to accomplish. The best way to do this is a chart indicating the inputs and output. I use either graph paper or a spreadsheet software to configure the sequence.
I usually start with the outputs configure the sequence that I would like to see. Then based upon the output sequence, I figure out the input sequence.

Note: Here is the location for a quick review of numbering systems from a previous post.

Once the sequence has been established, the next step is writing the program.
Input program that will set the input bits in V10.

Control part of the program:
The first scan will reset the input and output pointers.
The input pointer is compared to the input word V10. If they are equal then the output pointer and input pointer are incremented. If the STEP input is hit, then the output and input pointers are incremented.
The output pointer is then compared to the maximum value (end of sequence). If it is greater than or equal to the maximum value then the pointers will be reset.
Line 12 will move the outputs indirectly to the output word.

Output program that will set the actual outputs based upon the bits in V20

As you can see the actual program is very small however the sequence can be thousands of steps. This is a very straight forward and powerful method of programming. Programming this sequence using bits, timers and no indirect addressing would be very difficult and hard to read. Modifications would have to be a complete re-write of the program.

Modifications:
The entire program sequence could change without further lines of code. Only the values in the registers would need to be modified. This could lead to different sequences for different products.
We used a step input to have the program move forward through the sequence. It would be just as easy to add a step reverse function for the program. We would just have decrement the pointers and check to make sure when we were at the beginning of the sequence.

Troubleshooting:
When troubleshooting this program we would only need to look at the compares to determine what input and or output is not working correctly.

Integration with a touch panel display is simplified when using this type of programming method.

What other advantages do you see?

In Part 3 we will build on the traffic light sequencing used in part one with inputs for pedestrian and car detection.

Contact me for the above program. I will be happy to email it to you.
If you have any questions or need further information please contact me.
Thank you,
Garry

You can download the software and simulator free at the following address. Also listed are helpful guides to walk you through your first program.
Do-more Designer Software

How to use video’s for Do-more Designer Software




If you’re like most of my readers, you’re committed to learning about technology. Numbering systems used in PLC’s are not difficult to learn and understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimal, Hexadecimal, ASCII and Floating Point.

To get this free article, subscribe to my free email newsletter.


Use the information to inform other people how numbering systems work. Sign up now.

The ‘Robust Data Logging for Free’ eBook is also available as a free download. The link is included when you subscribe to ACC Automation.