
SOWEGATS (Customer) asked a question.
Looking into using Drum instruction in my program. However, I'm confused by this statemen in the Do-More Help:
The Drum (DRUM) instruction is used to mimic the operation of a mechanical Drum (sometimes called a drum sequencer). Drum instructions are well suited for repetitive processes that consist of a finite number of steps. As such, they can do the work of many rungs of ladder logic with elegant simplicity.
Important Note: the outputs specified in the Drum instruction are enabled and controlled by the DRUM any time the CPU is in Run Mode - the Drum's RUN input does not have to be ON, and the Reset input does not disable the outputs. When the CPU enters Run Mode, the Drum instruction's outputs automatically turn ON or OFF according to the pattern of the preset step. This includes any effect of the optional Output Mask.
In the note above, it seems to say that the outputs in the Drum instruction are ALWAYS under the control of the Drum instruction, ANYTIME the CPU is in Run Mode. If that is the case, does that mean that I cannot control the outputs independent of the Drum??
I want to put the Drum in a Subroutine to create a time delay in between each of several coil SET instructions, thereby creating a time sequence delay in when they are "energized". They will be controlling AXPOSTRAP instructions for servo controls. I want to sequence the start of each with a 3 second delay between them to reduce the power draw on the power supply during startup acceleration. The power supply can run all four axes at the same time, but cannot accelerate them all at the same time. The note above seems to indicate that the Drum will try to control these, even if I have not called the Subroutine.
What am I missing, or is the note in error?
Thanks and God Bless!
SOWEGATS
What it is saying is the drum is essentially like an OUT coil, it drives the outputs regardless of whether the input state is enabled. That's different than some instructions, and we felt that it was important to clarify.
But it only applies if the drum is in code that is being executed. If the code block isn't running, if it is in a subroutine that isn't being run, then the outputs aren't being driven.
You should be fine.