Plcopen Motion Control Overview
Plcopen Motion Control Overview
The other single axis Function Blocks as defined in part 1 and 2 are For multi-axes, coordinated movements, a small set is defined. This set
listed here below in short-form: will be extended by additional application specific libraries. The current
defined Function Blocks are:
MC_MoveRelative - moves the axis a specified distance relative to
the actual position at the time of the execution; CamTableSelect - selects the CAM tables by setting the pointers to
MC_MoveAdditive - for a specified relative distance additional to the relevant tables;
the original commanded position in the discrete motion state. In CamIn - engages the CAM;
state Continuous Motion the specified relative distance is added to CamOut - disengages the Slave from the Master axis immediately;
the actual position at the time of the execution; GearIn - commands a ratio between the velocity of the slave and
MC_MoveSuperimposed - for a specified relative distance master axis;
additional to an existing motion. The existing Motion is not GearOut - disengages the Slave from the Master axis;
interrupted, but is superimposed by the additional motion; MC_GearInPos - commands a gear ratio between the position of
MC_HaltSuperimposed - commands a halt to all superimposed the slave and master axes from the synchronization point onwards;
motions of the axis. The underlying motion is not interrupted; MC_PhasingAbsolute & MC_Phasing Relative - creates an
MC_MoveVelocity - for a never ending controlled motion at a absolute or relative phase shift in the master position of a slave axis;
specified velocity; MC_CombineAxes - combines the motion of two axes into a third
MC_MoveContinuousAbsolute &MC_MoveContinuousRelative axis with selectable combination method.
- commands a controlled motion to a specified absolute or relative
position ending with the specified velocity; A. Aborting, merging, and blending
MC_TorqueControl - continuously exerts a torque or force of the
Multiple function blocks have an input to set the different operating
specified magnitude, approached using a defined ramp, and sets the
modes, combined with an output for signalling this. With this input, the
‘InTorque’ output if the torque level is reached;
FB can either work in a “Non-buffered mode” (default behavior) or in a
MC_SetPosition - shifts the coordinate system of an axis by
“Buffered mode”. The difference between those modes is when they
manipulating both the set-point position as well as the actual
should start their action:
position of an axis with the same value without any movement
A command in a non-buffered mode acts immediately, even if this
caused;
interrupts another motion;
MC_SetOverride - sets the values of override for the whole axis
A command in a buffered mode waits till the current FB is done
and all functions that are working on that axis;
(signaled via the corresponding output or via in-position, or in-
MC_TouchProbe - records an axis position at a trigger event;
velocity or similar outputs).
MC_AbortTrigger - is used to abort function blocks which are
connected to trigger events (e.g. MC_TouchProbe); The following modes have been identified:
MC_DigitalCamSwitch - provides the analogy to switches on a Aborting - Default mode without buffering. The next FB aborts an
motor shaft: it commands a group of discrete output bits to switch ongoing motion and the command is affecting the axis immediately;
in analogy to a set of mechanical cam controlled switches
Buffered - The next FB is affecting the axis as soon as the previous
connected to an axis. Forward and backward movements are
movement is ‘Done’. There is no blending;
allowed;
BlendingLow - The next FB is controlling the axis after the previous
MC_Home - commands the axis to perform the «search home»
FB has finished (equal to buffered), but the axis may not stop
sequence. The details of this sequence are manufacturer dependent
between the movements. The velocity is blended with the lowest
and can be set by axis parameters, as well as the function blocks as
velocity of both commands (1 and 2) at the first end-position (1);
defined in Part 5 – Homing Procedures;
BlendingPrevious - blending with the velocity of FB 1 at end-
MC_Stop - commands a controlled motion stop and transfers the
position of FB 1;
axis to the state ‘Stopping’. It aborts any ongoing function block
BlendingNext - blending with velocity of FB 2 at end-position of
execution. With the ‘Done’ output set, the state is transferred to the
FB1;
‘StandStill”. While the axis is in state ‘Stopping’ no other FB can
perform any motion on the same axis; BlendingHigh - blending with highest velocity of FB 1 and FB 2 at
end-position of FB1.
MC_Halt - commands a controlled motion stop. It aborts any
ongoing function block execution. The axis is moved to the state
‘DiscreteMotion’ until the velocity is zero. With the ‘Done’ output VII. AN EXAMPLE
set, the state is transferred to ‘StandStill’; The following example is Example of a simple drilling unit:
MC_Power - switches the power stage on or off;
MC_ReadStatus - returns in detail the status of the state diagram
of the selected axis;
MC_ReadMotionState - returns in detail the status of the axis with
respect to the motion currently in progress;
MC_ReadAxisInfo - reads information like modes, inputs directly
related to the axis, and certain axis status information;
MC_ReadAxisError - Indicates errors not relating to the function
blocks; FF F
MC_Reset - makes the transition from the state ‘ErrorStop’ to
‘StandStill’ by resetting all internal axis-related errors and clearing REV
pending commands;
MC_ReadParameter & MC_ReadBoolParameter - Returns the
value of a vendor specific parameter; We use Sequential Function Chart here to describe the different step for
this drilling example.
MC_WriteParameter & MC_WriteBoolParameter - modifies
the value of a vendor specific parameter;
Step 1: Initialization, for instance at power up;
MC_ReadActualPosition - returns the actual position;
MC_ReadDigitalInput - provides the value of the digital input as
referenced by INPUT_REF;
Step 2: Move forward to drilling position and start driller turning: in this registration function now can be used company wide, and the source is
way it will be fully operational before the position is reached; then usable on different platforms. This saves time and money in the next
check if both actions are completed; machine.
Step 3: Drill the hole; This part is an ongoing specification, which releases as new examples
Step 4: After drilling the hole we have to wait for the step-chain are added. For up-to-date information, check www.PLCopen.org.
sequence to finish dwelling the hole free of any stuff which might have
stuck in the hole; IX. PART 4 – COORDINATED MOTION
Step 5: Move driller back to starting position and shut the spindle off.
Combining the finishing of moving backwards and stopping the spindle Part 4 is focused to the coordinated multi-axes motion in 3D space, to
we signal the step-chain to start over. serve the majority of user’s application needs in this area. Part 1 and
Part 2 deal with Master / slave motion control, a type of coordinated
motion control where the master axis position is used to generate one or
Initialization more slave axis position commands. For multi-dimensional movements,
one goes beyond this point via a grouping of a set of axes, without a
Done
master axis. This is done via the definition of a set of Function Blocks
with related coordinated motion functionality as well as a higher level
MoveAbsolute
state diagram, linking the single axis state diagrams in the group. In this
Done
way a better trajectory planning is possible. Also, the current
Master/Slave axes can have the problem that if an error occurs, the other
MoveRelative axes have no knowledge about this, and continue their movement. By
combining axes in a group one knows upfront which axes are involved
Done and has the basis for a better error behavior.
The level of the PLCopen Motion Control Function Blocks are specified
Ton at such a level that the user quickly recognizes the functionality of the
function block and what happens if it is activated or connected to other
Done blocks in a sequence of motion commands. This PLCopen initiative
transforms the functionalities as known in the CNC and Robotic world
MoveAbsolute
to the PLC world.
Overall there are a number of sets of function blocks defined to do this,
Done as shown below without going into details: for this download the
Representation
INT of the drilling example in SFC specification from the website www.PLCopen.org.
The corresponding timing diagram for the movement is depending on The first step is to group axes. The following FBs are defined for this:
the selected mode. For example:
MC_AddAxisToGroup MC_GroupReadConfiguration
v MC_RemoveAxisFromGroup MC_GroupEnable
MC_UngroupAllAxes MC_GroupDisable
t
Axis group
1 2 3
Timing diagram for drilling – blending mode