PLC Programming Example – Delay Starting of 7 Motors

We will look at a PLC programming example of delaying the start of 7 motors. Each motor will be on a switch that the operator can select at any time. The motor outputs should have a 5 second delay between the outputs coming on.

This question originally came from PLCTalk.net. An original solution to the problem came from Peter Steinhoff. His solution is what we will be presenting. It is simple and straight forward.

Define the task:
Question:
I have 7 motors. When the user activates any first motor of the seven, no matter which one it starts right away. If the user starts any more than one motor there will be delay of 5 seconds between every motor start. The system must remember the starting sequence that was asked. I only can use ladder for that project. Any ideas how to solve this problem?

Develop a logical sequence of operation:
Fully understanding the logic before starting to program can save you time and frustration.

This is the solution by Pete.

You need one timer for each motor, an on-delay.
We'll call the timers for the motors, on_delay1, on_delay2 etc.
Then you need one timer that counts down to zero. It doesn't control anything with its output, it's just to keep track of time. We'll call that down_counter.
You'll manipulate the start of the motors by manipulating the delay times on the on-delay timers.
Example user wants to start motor 4.
You take the actual value of the down_counter and put it in on_delay4.
You then add 5 seconds to the down_counter.
For the first motor down_counter will have counted down to zero. So the on_delay will be set to zero, which will make the motor start immediately.
The down_counter counts down 5,4,3..and then the users starts another motor, say motor 7. We do the same thing.
Down_counter is 3 so on_delay7 is set to 3. We add 5 to down_counter and get 3+5=8.
Let's say the user immediately starts motor 1 as well.
We do the same thing.
Down_counter is 8 so on_delay1 is set to 8. We add 5 to down_counter and get 8+5=13.
And so on and so forth....
Write it down in a spreadsheet so you'll understand how it works and what happens as time passes by.
It will also work perfectly if one motor is stopped and then restarted again while others are also starting up.
Easy to expand as well since it's not depending on how many motors you have.
And the motors will automatically start in the order they triggered by the operator.
If you have some motor that is bigger and you want to delay other motors for more than 5 seconds you just add more than 5 seconds to the down_timer when that motor is started.

Note: When power is removed from the PLC and/or the PLC is switched from program to run the motors that are on must start up with a 5 second delay between them.

Develop the PLC program:DOWN COUNTER
This is a counter used as an overall timer to control the motors starting. The present value (ACC) is used as the on delay for the motor and 5 seconds are added to this down counter so the next motor will not start until the count (time) expires.

MOTOR 1
Set the on delay timer for the motor and set the output.
When the power is removed or the PLC is switched from Run to Stop the timer will reset and start again. The sequence will be from motor 1 to the last motor on with a 5 second time between.

MOTOR 2 to 7 are the exact same logic. To expand the system and add another motor all we need to do is add the additional rungs.

Test the program:
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.

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.

First Name:Last Name:Email address:

Leave this field empty if you're human:

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.

2 thoughts on “PLC Programming Example – Delay Starting of 7 Motors”

Hi Ramesh,
The logic should be similar to the above when using ladder logic on the S7-300. I do not have the equipment to try this out.
“You need one timer for each motor, an on-delay.
We’ll call the timers for the motors, on_delay1, on_delay2 etc.
Then you need one timer that counts down to zero. It doesn’t control anything with its output, it’s just to keep track of time. We’ll call that down_counter.
You’ll manipulate the start of the motors by manipulating the delay times on the on-delay timers.
Example user wants to start motor 4.
You take the actual value of the down_counter and put it in on_delay4.
You then add 5 seconds to the down_counter.
For the first motor down_counter will have counted down to zero. So the on_delay will be set to zero, which will make the motor start immediately.
The down_counter counts down 5,4,3..and then the users starts another motor, say motor 7. We do the same thing.
Down_counter is 3 so on_delay7 is set to 3. We add 5 to down_counter and get 3+5=8.
Let’s say the user immediately starts motor 1 as well.
We do the same thing.
Down_counter is 8 so on_delay1 is set to 8. We add 5 to down_counter and get 8+5=13.
And so on and so forth….
Write it down in a spreadsheet so you’ll understand how it works and what happens as time passes by.
It will also work perfectly if one motor is stopped and then restarted again while others are also starting up.
Easy to expand as well since it’s not depending on how many motors you have.
And the motors will automatically start in the order they triggered by the operator.
If you have some motor that is bigger and you want to delay other motors for more than 5 seconds you just add more than 5 seconds to the down_timer when that motor is started.”
Thank you,
Garry