Hide Transcript
View Transcript
In theory, programming a PLC to turn on a
motor contactor is easy. If a button is pressed, then engage the contactor’s
coil. Of course, during the hardware video we saw
that in most systems there really IS a lot more to it. Here’s our ladder code whish list:
We want a Circuit Breaker Status Indicator We want to be able to trip the circuit breaker
on a button press We want an Overload Indicator
On Forward button press, we want to start the motor in forward direction IF
- The motor is not coasting - If the motor stop button is not being pressed
- If the reverse contactor isn’t engaged - If the circuit breaker is on
- If the overload is not tripped - And we’ll want the Forward Indicator lit
while motor is running The reverse button has the exact same requirements
except it doesn’t start the motor if the forward contactor is engaged. We want the Stop indicator to flash when motor
is coasting and to be on when motor is stopped. I’ve already allocated the memory addresses
and installed some tag names to save us some time. You may notice there aren’t any physical
button inputs, that’s because we’re using a C-more HMI to control this system. So instead of looking at PLC inputs we’ll
be using these memory addresses that are being updated when the user presses the virtual
buttons on the C-more screen Ok, let’s do it. Let’s get the motor running in the forward
direction. So on a button press – our virtual C-more
HMI button in this example - enable the forward contactor which is output Y1 in our setup. And once that forward contactor is engaged,
the aux contact closes so we can use that to keep the motor running even after the momentary
Forward button is released. We call this sealing or latching the contact. I should mention that we will be using a lot
of short cuts to expedite the typing of this code. So if something appears on a rung and you’re
not sure how it got there, then checkout Do-more Designer help topic number 0220 it has everything
you need to know about editing ladder code. We need a way to stop the motor so we’ll
add the stop button. Stop buttons are normally closed, so this
is active all the time until you press the STOP button which opens this contact, which
releases the contactor, which releases the aux contact and breaks the seal or latching
action of this circuit. We only want the motor to be started if the
motor is NOT coasting – we’ll create that in a minute – and we want to make sure the
reverse contactor is not engaged. We don’t want to run the motor is the overload
is tripped. And finally we don’t want the motor to be
enabled if there is no power. This serves as a handy reminder to check the
power of course, but more importantly, it makes sure the motor can’t be latched or
sealed in while the power is off. If we didn’t check the circuit breaker status,
then there is nothing to prevent this ladder code from energizing the contactor, which
enables the aux contact and latches or seals in the circuit. So when the power is applied, the motor will
already be enabled and will jump to life. Normally you won’t want that to happen,
so adding this contact to prevent the circuit from latching while the power is off it is
a really important safety feature. And we’ll add the comment for that rung. The reverse motor circuit is exactly the same
except it uses the Reverse virtual button to start things, doesn’t run if the forward
contactor is engaged and latches on the reverse aux contact. Let’s update that comment too. We need a 5 second timer for the motor spin
down, so we’ll watch both contactors aux contacts and if either one of these gets released,
we’ll start an off timer. That starts a timer after the input has been
released. During that time, we’ll set a bit called
MOTOR_COASTING. Now we can use that motor coasting bit to
create the flashing STOP indicator. If the reverse and the forward contactor are
not active, but the motor is Coasting we’ll set a bit to indicate the motor is still active. If we add the system 100ms bit here it will
make the light flash. This will drive the STOP button indicator
which is just the inverted version of this motor active bit. We also want to turn on the MOTOR_ACTIVE bit
if either contactor is active. Again, this will turn off the stop button
indicator. Finally, we need for the circuit breaker shunt
trip button to trip the breaker which is at Y0. And let’s add some comments for all of these
rungs. It’s important to understand that with the
addition of this code, we are now protecting our control system with triple redundancy:
To prevent the motor from running in one direction if it is already running in the other direction
we have fail safes: Here in the code, here in the wiring and mechanically with the Interlock
block. That creates a super reliable, fault tolerant
system. Changing this over to a system that uses mechanical
buttons instead of the virtual C-more HMI buttons is easy. Let’s assume the Start button comes in on
X4, Reverse on X5, and Stop on X6. Just replace these with X4, these with X5
and these with X6. Don’t forget to make sure the Forward and
Stop are momentary normally open, and Stop is momentary normally closed button. We’ll, let’s try it. Accept everything, save our work, and transfer
to the PLC. If we turn on status monitoring, then these
blue highlights mean these contacts are active. When all the contacts between the left and
right side are lit – then power is flowing to the output coil. So this tells us that the forward button is
not being pressed, motor’s not coasting, the normally closed stop button hasn’t broken
the circuit, the reverse contactor is not active and the power and overload are good
to go. If we press the Overload test button, we see
that go inactive, and if we flip the motors circuit breaker off, we see its aux contact
open up. Great, looks like things are working. So when we press the forward button, we now
have all the contacts on this rung active and power flows to the output coil and starts
the motor spinning. Once the contactor engages, its aux contact
will also engage – which is this contact right here. So when we release the momentary Forward button
this aux contact will keep the motor running – we call that sealing or latching the circuit. Pressing the stop button will open this contact
and disable the contactor which kills the power to the motor. It also starts the 5 second timer for the
flashing stop button, which was off screen when we did it, so let’s start the motor
again, and scroll down to the timer section of the code. This time, when we press the stop button,
we should see this off delay timer count down for 5 seconds which will turn this Motor Coasting
Bit on. And this aux contact will go inactive which
will light up this contact. Then, every time this system 100ms bit is
active, this Motor Active bit will turn on. The Stop Button indicator light is just the
inverse of this motor active bit so if the motor is NOT active, the stop button will
be lit. Of course, if either contactor is inactive,
then the motor will also be inactive which again will light the stop indicator. Let’s try it. When we press the stop button, the timer counts
down, the motor coasting but goes active, aux contact releases, and sure enough, the
stop button indicator flashes. Perfect. Let’s start the reverse direction – which
works exactly the same as the forward circuit – but this time we’ll press the Overload
test button and sure enough, it deactivates this contact which disables the contactor
and his aux contact which kills power to the motor. Exactly what we expected. The circuit breaker aux contact would work
the same way. Finally, let’s make sure the shunt trip
kills the branch circuit breaker and shuts down the motor. Start the motor in the forward direction,
hit the shunt trip and no surprise here – when we kill power to the motor it stops. More importantly, this also breaks the sealing
action of the ladder code so when power is re-applied the motor won’t jump back to
life and surprise someone – that would be an accident waiting to happen …
Well, this all looks great, there is a potential problem. What happens if the user presses both the
forward and reverse buttons at exactly the same time or even just real close to the same
time? Well, power will flow through all of these
contacts on both the forward and reverse rungs because their respective aux contacts won’t
have closed yet – it can take an aux contact 10 to 20 milliseconds to close which means
we won’t see that feedback until many scans later. Which means BOTH of these outputs will fire,
which will engage both contactors, which will short out the power mains. And that’s a bad thing, Right? Well, not really because it physically can’t
happen in this system. Remember, in the hardware video we installed
a MECHANICAL interlock to prevent just this scenario. It physically won’t allow two contactors
to engage at the same time. Because of that, one of the aux contacts can’t
close so that circuit will never seal or latch. Let’s prove it. Let’s engage both contactors on the same
Forward button press. Now they are guaranteed to start at exactly
the same time. Accept that change and write it out to the
plc. Sure enough, if we press the Forward button,
both circuits light up, but then the reverse circuit turns back off because the mechanical
interlock wouldn’t allow the reverse aux contact to close. So now you see why it was so important to
add that extra mechanical interlock in the hardware video. And since it just snapped in place and it’s
only two dollars and fifty cents – why wouldn’t you add the extra insurance to make sure you
have an idiot proof, super reliable system? One side note: you could add another contact
here that says don’t reverse the motor if the forward contactor is active, and the opposite
here, but since the mechanical interlock has it covered we didn’t add that in this example
– but if you don’t have access to a mechanical interlock, this is the next best thing. And as always, if you have any questions or
need any help, please don’t hesitate to contact Automation Directs free award winning
tech support – they will be happy to help you. And don’t forget the forums – there are
lots of folks there that love to share their years of experience. Just don’t post support questions there,
tech support doesn’t monitor the forums on a regular basis. Software: 1:20 You could use the rising edge (trigger)
of C110 as the first instruction (instead of a N.O. contact) I guess you could but it’s the
hardwired equivalent. Actually, you can’t … for the same reason
as 2:10 below – the sealing contact isn’t fast enough to be ready on the next scan … 1:43 You use keyboard shortcuts to insert
instructions and branches in Do-More. Would it be helpful to start out by using
your mouse to select icons for NO or NC contacts. Then say "you can do this faster by using
the "F" keys or by typing in the nemonic". (Just a thought) Good suggestion. >>> We are assuming they know how to edit
… or will watch a video on how .. will mention in the narrative … 2:00 Motor Coasting isn’t 100% accurate. Isn’t C120 also true when the motor is running
under power and when coasting (the Done bit goes TRUE when the timer is enabled and timing)? Yes >> Change N.O. contacts to falling edge. Now it is accurate. 2:10 Using the N.C. X1 (Reverse Active) to keep the two contactors
from turning on at the same time is a good thing, but I don’t think it’s enough. The Weg contactor could take up to 20ms for
the contacts to actually actuate. If someone pushed both FWD and REV buttons
within 20ms of each other, both outputs could fire. In instances where you are using N.C. contacts
for X1 and X2, you probably should also include Y1 and Y2 N.C. contacts. I think I might also add Y1 and Y2 to the
Timer OFF rung. With the triple redundant system, I would
hope not. See if this is true with the system. The Mechanical Interlock fixes this. Will add discussion … 3:00 Rising edge for C112 as well See first
note. Actually, you can’t … for the same reason
as 2:10 below – the sealing contact isn’t fast enough to be ready on the next scan … 5:30 Could mark the motor shaft cover so that
the spinning is more evident. 480 and HD resolutions look OK, but lower
rez makes it difficult to see. Just making some thick horizontal lines on
the shaft with a Sharpie would help. OK