The Software: Learn how to implement a full AC Motor On/Off control system with a Do-More PLC. Includes circuit breaker, shunt trip, forward and reversing contactors, safety tips, mechanical interlocks and more. Everything you need to implement a safe motor control system.
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