PLCopen Motion¶
Use PLCopen Motion when:
- you want the standard motion-model terminology
- you want the truST-supported subset and examples
Do not start here if you are still deciding whether a reusable library belongs in a package or a project; use Libraries first.
Library Guide¶
PLCopen Motion Library Guide¶
This guide is the user-facing reference manual for the PLCopen Motion packages shipped with truST. It follows the same documentation intent users expect from library manuals such as OSCAT: each public type and each public function block is documented as a named API surface, not just listed in a coverage table.
If you want a worked project first, start with the reference example in
examples/plcopen_motion_single_axis_demo. That project explains how the
single-axis demo is wired and why the scan loop is written the way it is.
Package Layout¶
libraries/plcopen_motion/single_axis_core: single-axis motion, readbacks, and parameter accesslibraries/plcopen_motion/synchronization: cam and gear synchronization blockslibraries/plcopen_motion/coordinated_motion: group handles, transforms, and coordinated-motion blockslibraries/plcopen_motion/homing: advanced homing-step blocks
Dependency Setup¶
Add the package you need to your project trust-lsp.toml. A minimal single-axis project typically starts with:
[project]
vendor_profile = "codesys"
include_paths = ["src"]
stdlib = "iec"
[dependencies]
PLCopenMotionSingleAxis = { path = "../../libraries/plcopen_motion/single_axis_core", version = "0.1.0" }
Library Usage Rules¶
- Keep one shared
AXIS_REFper axis and one sharedAXES_GROUP_REFper group. - Instantiate each PLCopen function block once and call it every scan.
- Drive commands with
Execute/Enable; do not expect one-shot FB calls to retain behavior if you stop calling them. - Call
MC_Constants()once during initialization before you usePN_*ormcERR_*members. - Use the readback blocks continuously when your state machine depends on live status, position, or error state.
How To Read The Function Block Interfaces¶
VAR_IN_OUT: caller-owned handles or payloads passed by reference, such asAxis,Master,Slave,AxesGroup, orCamTable.VAR_INPUT: ordinary input parameters copied into the function block each scan, such asExecute,Enable,Position,Velocity, orBufferMode.VAR_OUTPUT: status and result values produced by the function block, such asDone,Busy,Active,Error,ErrorID, and readback values.
Single-axis core¶
Classic PLCopen Part 1 axis-control blocks. These are the normal starting point for one axis with power, homing, moves, stops, readbacks, and parameter access.
Public Data Types¶
AXIS_REF¶
Public handle for one motion axis. You keep one of these per axis and pass it by VAR_IN_OUT into the axis-related function blocks.
Fields:
- AxisId : UDINT: Stable public identifier for the axis in your application.
- InternalIndex : UINT: Runtime registry slot used by the library implementation.
MC_BUFFER_MODE¶
Controls whether a command aborts the current motion, waits in a queue, or blends with adjacent motion commands.
Values:
- mcAborting: Abort the currently active command and start the new command immediately.
- mcBuffered: Queue the new command behind the active command.
- mcBlendingLow: Blend using the lower transition velocity policy.
- mcBlendingPrevious: Blend using the previous command velocity.
- mcBlendingNext: Blend using the next command velocity.
- mcBlendingHigh: Blend using the higher transition velocity policy.
MC_DIRECTION¶
Selects how directional motion commands choose travel direction.
Values:
- mcPositiveDirection: Travel in the positive direction.
- mcShortestWay: Choose the shortest path supported by the axis model.
- mcNegativeDirection: Travel in the negative direction.
- mcCurrentDirection: Continue using the current motion direction.
MC_EXECUTION_MODE¶
Controls how parameter, transform, and set-position style commands are applied.
Values:
- mcImmediately: Apply immediately when accepted.
- mcDelayed: Delayed execution mode. The current shipped profile rejects unsupported delayed paths.
- mcQueued: Queue behind already active/accepted work where supported.
MC_SOURCE¶
Chooses whether a readback or synchronization calculation uses commanded, set, or actual values.
Values:
- mcCommandedValue: Use the commanded/planned value.
- mcSetValue: Use the setpoint value.
- mcActualValue: Use the measured/actual value.
MC_AXIS_STATUS¶
Public axis-state enum used by the library state machine and exposed by status FBs.
Values:
- mcErrorStop: Axis is in error stop.
- mcDisabled: Axis is disabled.
- mcStandstill: Axis is powered and not moving.
- mcHoming: Axis is performing a homing action.
- mcStopping: Axis is stopping.
- mcDiscreteMotion: Axis is in discrete point-to-point motion.
- mcContinuousMotion: Axis is in continuous/velocity motion.
- mcSynchronizedMotion: Axis is currently synchronized to another motion source.
Function Block Reference¶
MC_Power¶
Enable or remove power-stage permission for one axis.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Status : BOOL: Current achieved power/enabled state.
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Call every scan. Enable is level-sensitive; the block is not a one-shot command.
MC_Home¶
Run the basic PLCopen homing command and declare the homed position when the sequence completes.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Position : REAL: Target or reference position value.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Typical sequence is MC_Power -> MC_Home -> wait for Done -> move commands.
MC_Stop¶
Force an immediate stop sequence for one axis.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use for emergency or immediate stop handling. It does not rely on buffered blending behavior.
MC_Halt¶
Request a halt while preserving buffered-motion semantics.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use when you want a controlled halt that still participates in the PLCopen buffering model.
MC_MoveAbsolute¶
Move one axis to an absolute target position.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ContinuousUpdate : BOOL: Allows the command parameters to be refreshed while the command is active where the profile supports it.
- Position : REAL: Target or reference position value.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- Direction : MC_DIRECTION: Requested travel direction policy.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Keep calling the block every scan after the rising edge; monitor Busy, Active, and Done.
MC_MoveRelative¶
Move one axis by a relative distance.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ContinuousUpdate : BOOL: Allows the command parameters to be refreshed while the command is active where the profile supports it.
- Distance : REAL: Relative distance value.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use buffered mode when you want this command to queue behind another motion command.
MC_MoveAdditive¶
Add a relative distance onto the current commanded target.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ContinuousUpdate : BOOL: Allows the command parameters to be refreshed while the command is active where the profile supports it.
- Distance : REAL: Relative distance value.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use when the next target should be relative to the current commanded path rather than the actual position.
MC_MoveVelocity¶
Run one axis in velocity mode.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ContinuousUpdate : BOOL: Allows the command parameters to be refreshed while the command is active where the profile supports it.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- Direction : MC_DIRECTION: Requested travel direction policy.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- InVelocity : BOOL: TRUE when the commanded velocity is reached.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use InVelocity plus readback FBs when your state machine needs confirmation that the commanded velocity has been reached.
MC_MoveContinuousAbsolute¶
Run an absolute move that aims to leave the segment with a requested end velocity.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ContinuousUpdate : BOOL: Allows the command parameters to be refreshed while the command is active where the profile supports it.
- Position : REAL: Target or reference position value.
- EndVelocity : REAL: Requested velocity at the end of the move segment.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- Direction : MC_DIRECTION: Requested travel direction policy.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- InEndVelocity : BOOL: TRUE when the commanded end-velocity condition is reached.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use when segment-to-segment transitions need a non-zero end velocity.
MC_MoveContinuousRelative¶
Run a relative move that aims to leave the segment with a requested end velocity.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ContinuousUpdate : BOOL: Allows the command parameters to be refreshed while the command is active where the profile supports it.
- Distance : REAL: Relative distance value.
- EndVelocity : REAL: Requested velocity at the end of the move segment.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- InEndVelocity : BOOL: TRUE when the commanded end-velocity condition is reached.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use for relative segments that should leave the segment with a specific end velocity.
MC_SetPosition¶
Overwrite the current position reference without commanding a move.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Position : REAL: Target or reference position value.
- Relative : BOOL: If TRUE, interpret the position as a relative offset.
- ExecutionMode : MC_EXECUTION_MODE: Execution policy for the write/set operation.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use carefully; this changes the reference position rather than commanding a travel path.
MC_SetOverride¶
Apply velocity, acceleration, and jerk scaling factors.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- VelFactor : REAL: Velocity override factor.
- AccFactor : REAL: Acceleration override factor.
- JerkFactor : REAL: Jerk override factor.
VAR_OUTPUT:
- Enabled : BOOL: TRUE while the override function is active.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Keep the block enabled while you want the override factors applied.
MC_ReadActualPosition¶
Read the actual position from the library axis state.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Position : REAL: Target or reference position value.
MC_ReadActualVelocity¶
Read the actual velocity from the library axis state.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Velocity : REAL: Requested velocity.
MC_ReadActualTorque¶
Read the actual torque from the library axis state.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Torque : REAL: Reported torque value.
MC_ReadStatus¶
Read the high-level PLCopen axis-state bits.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- ErrorStop : BOOL: TRUE when the axis is in error stop.
- Disabled : BOOL: TRUE when the axis or group is disabled.
- Stopping : BOOL: TRUE when the axis or group is stopping.
- Homing : BOOL: TRUE when the axis or group is homing.
- Standstill : BOOL: TRUE when the axis or group is standing still.
- DiscreteMotion : BOOL: TRUE during discrete point-to-point motion.
- ContinuousMotion : BOOL: TRUE during continuous/velocity motion.
- SynchronizedMotion : BOOL: TRUE during synchronized motion.
MC_ReadMotionState¶
Read motion-phase flags such as accelerating or constant velocity.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- Source : MC_SOURCE: Requested value source.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- ConstantVelocity : BOOL: TRUE while velocity is constant.
- Accelerating : BOOL: TRUE while the object is accelerating.
- Decelerating : BOOL: TRUE while the object is decelerating.
- DirectionPositive : BOOL: TRUE when motion is in the positive direction.
- DirectionNegative : BOOL: TRUE when motion is in the negative direction.
MC_ReadAxisInfo¶
Read axis readiness, switch states, homed state, and warnings.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- HomeAbsSwitch : BOOL: Current absolute-home/reference switch state.
- LimitSwitchPos : BOOL: Current positive limit switch state.
- LimitSwitchNeg : BOOL: Current negative limit switch state.
- Simulation : BOOL: TRUE when the axis is in simulated mode.
- CommunicationReady : BOOL: TRUE when the backend communication path is ready.
- ReadyForPowerOn : BOOL: TRUE when the axis is ready to be powered.
- PowerOn : BOOL: TRUE when the axis power stage is on.
- IsHomed : BOOL: TRUE when the axis is homed.
- AxisWarning : BOOL: TRUE when the axis reports a warning state.
MC_ReadAxisError¶
Read the current axis error code.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- AxisErrorID : WORD: Current axis-level error code.
MC_Reset¶
Clear axis errors and leave error stop.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_ReadParameter¶
Read one numeric parameter from the axis parameter surface.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- ParameterNumber : INT: Parameter identifier to read or write.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Value : REAL: Value being read or written.
MC_ReadBoolParameter¶
Read one boolean parameter from the axis parameter surface.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- ParameterNumber : INT: Parameter identifier to read or write.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Value : BOOL: Value being read or written.
MC_WriteParameter¶
Write one numeric axis parameter.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ParameterNumber : INT: Parameter identifier to read or write.
- Value : REAL: Value being read or written.
- ExecutionMode : MC_EXECUTION_MODE: Execution policy for the write/set operation.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_WriteBoolParameter¶
Write one boolean axis parameter.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ParameterNumber : INT: Parameter identifier to read or write.
- Value : BOOL: Value being read or written.
- ExecutionMode : MC_EXECUTION_MODE: Execution policy for the write/set operation.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_Constants¶
Publish standardized parameter numbers and shipped motion error constants.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- none
VAR_INPUT:
- none
VAR_OUTPUT:
- PN_CommandedPosition : INT: PN_CommandedPosition value of type INT.
- PN_SWLimitPos : INT: PN_SWLimitPos value of type INT.
- PN_SWLimitNeg : INT: PN_SWLimitNeg value of type INT.
- PN_EnableLimitPos : INT: PN_EnableLimitPos value of type INT.
- PN_EnableLimitNeg : INT: PN_EnableLimitNeg value of type INT.
- PN_EnablePosLagMonitoring : INT: PN_EnablePosLagMonitoring value of type INT.
- PN_MaxPositionLag : INT: PN_MaxPositionLag value of type INT.
- PN_MaxVelocitySystem : INT: PN_MaxVelocitySystem value of type INT.
- PN_MaxVelocityAppl : INT: PN_MaxVelocityAppl value of type INT.
- PN_ActualVelocity : INT: PN_ActualVelocity value of type INT.
- PN_CommandedVelocity : INT: PN_CommandedVelocity value of type INT.
- PN_MaxAccelerationSystem : INT: PN_MaxAccelerationSystem value of type INT.
- PN_MaxAccelerationAppl : INT: PN_MaxAccelerationAppl value of type INT.
- PN_MaxDecelerationSystem : INT: PN_MaxDecelerationSystem value of type INT.
- PN_MaxDecelerationAppl : INT: PN_MaxDecelerationAppl value of type INT.
- PN_MaxJerkSystem : INT: PN_MaxJerkSystem value of type INT.
- PN_MaxJerkAppl : INT: PN_MaxJerkAppl value of type INT.
- mcERR_None : WORD: mcERR_None value of type WORD.
- mcERR_InvalidParameter : WORD: mcERR_InvalidParameter value of type WORD.
- mcERR_InvalidState : WORD: mcERR_InvalidState value of type WORD.
- mcERR_AxisGrouped : WORD: mcERR_AxisGrouped value of type WORD.
- mcERR_GroupDisabled : WORD: mcERR_GroupDisabled value of type WORD.
- mcERR_GroupNotReady : WORD: mcERR_GroupNotReady value of type WORD.
- mcERR_NotHomed : WORD: mcERR_NotHomed value of type WORD.
- mcERR_NotPowered : WORD: mcERR_NotPowered value of type WORD.
- mcERR_BackendFault : WORD: mcERR_BackendFault value of type WORD.
- mcERR_KinematicNoSolution : WORD: mcERR_KinematicNoSolution value of type WORD.
- mcERR_KinematicSingularity : WORD: mcERR_KinematicSingularity value of type WORD.
- mcERR_QueueFull : WORD: mcERR_QueueFull value of type WORD.
- mcERR_NotSupported : WORD: mcERR_NotSupported value of type WORD.
Usage notes: Call once during initialization and then reuse the published PN_* and mcERR_* members.
Synchronization¶
Master/slave cam and gear blocks built on top of the single-axis handle types.
Public Data Types¶
MC_START_MODE¶
Defines how a synchronization command starts relative to the master axis.
Values:
- mcAbsolute: Synchronize using absolute master positioning.
- mcRelative: Synchronize using relative positioning.
- mcRampIn: Ramp into synchronization.
MC_SYNC_MODE¶
Defines how MC_GearInPos reaches synchronization.
Values:
- mcShortest: Reach sync with the shortest path policy.
- mcCatchUp: Catch up to the master.
- mcSlowDown: Slow down to reach synchronization.
MC_CAM_ID¶
Identifier for a selected cam table.
Underlying type: UINT
MC_CAM_REF¶
Inline cam-table payload containing master/slave point pairs and table metadata.
Fields:
- CamId : MC_CAM_ID: Identifier of the cam table.
- NumberOfPairs : UINT: Number of valid master/slave point pairs in the table.
- IsAbsolute : BOOL: Whether the cam positions are absolute values.
- MasterPosition0 : REAL: Master-axis position for pair 0.
- MasterPosition1 : REAL: Master-axis position for pair 1.
- MasterPosition2 : REAL: Master-axis position for pair 2.
- MasterPosition3 : REAL: Master-axis position for pair 3.
- MasterPosition4 : REAL: Master-axis position for pair 4.
- MasterPosition5 : REAL: Master-axis position for pair 5.
- MasterPosition6 : REAL: Master-axis position for pair 6.
- MasterPosition7 : REAL: Master-axis position for pair 7.
- SlavePosition0 : REAL: Slave-axis position for pair 0.
- SlavePosition1 : REAL: Slave-axis position for pair 1.
- SlavePosition2 : REAL: Slave-axis position for pair 2.
- SlavePosition3 : REAL: Slave-axis position for pair 3.
- SlavePosition4 : REAL: Slave-axis position for pair 4.
- SlavePosition5 : REAL: Slave-axis position for pair 5.
- SlavePosition6 : REAL: Slave-axis position for pair 6.
- SlavePosition7 : REAL: Slave-axis position for pair 7.
Function Block Reference¶
MC_CamTableSelect¶
Select the cam profile a slave axis will use.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Master : AXIS_REF: Master axis handle.
- Slave : AXIS_REF: Slave axis handle.
- CamTable : MC_CAM_REF: Cam table payload passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Periodic : BOOL: TRUE when the cam table should wrap periodically.
- MasterAbsolute : BOOL: Treat master positions as absolute values.
- SlaveAbsolute : BOOL: Treat slave positions as absolute values.
- ExecutionMode : MC_EXECUTION_MODE: Execution policy for the write/set operation.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- CamTableID : MC_CAM_ID: Identifier of the selected cam table.
Usage notes: Select the cam table before triggering MC_CamIn.
MC_CamIn¶
Enter cam synchronization between master and slave.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Master : AXIS_REF: Master axis handle.
- Slave : AXIS_REF: Slave axis handle.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ContinuousUpdate : BOOL: Allows the command parameters to be refreshed while the command is active where the profile supports it.
- MasterOffset : REAL: Offset applied to the master value.
- SlaveOffset : REAL: Offset applied to the slave value.
- MasterScaling : REAL: Scaling factor applied to the master value.
- SlaveScaling : REAL: Scaling factor applied to the slave value.
- MasterStartDistance : REAL: Distance before the sync point where synchronization begins.
- MasterSyncPosition : REAL: Master position used as the sync reference.
- StartMode : MC_START_MODE: Synchronization start mode.
- MasterValueSource : MC_SOURCE: Source used for the master axis value.
- CamTableID : MC_CAM_ID: Identifier of the selected cam table.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- InSync : BOOL: TRUE when synchronization is reached.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- EndOfProfile : BOOL: TRUE when the selected cam profile reached its end.
Usage notes: A typical flow is MC_CamTableSelect -> MC_CamIn -> wait for InSync.
MC_CamOut¶
Leave cam synchronization.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Slave : AXIS_REF: Slave axis handle.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GearIn¶
Start geared motion between master and slave.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Master : AXIS_REF: Master axis handle.
- Slave : AXIS_REF: Slave axis handle.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ContinuousUpdate : BOOL: Allows the command parameters to be refreshed while the command is active where the profile supports it.
- RatioNumerator : INT: Gear ratio numerator.
- RatioDenominator : UINT: Gear ratio denominator.
- MasterValueSource : MC_SOURCE: Source used for the master axis value.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- InGear : BOOL: TRUE when gearing is established.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use with one master and one slave that already share valid axis handles.
MC_GearOut¶
Leave geared motion.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Slave : AXIS_REF: Slave axis handle.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GearInPos¶
Synchronize a slave to a master at specified sync positions.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Master : AXIS_REF: Master axis handle.
- Slave : AXIS_REF: Slave axis handle.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- RatioNumerator : INT: Gear ratio numerator.
- RatioDenominator : UINT: Gear ratio denominator.
- MasterValueSource : MC_SOURCE: Source used for the master axis value.
- MasterSyncPosition : REAL: Master position used as the sync reference.
- SlaveSyncPosition : REAL: Slave position used as the sync reference.
- SyncMode : MC_SYNC_MODE: Synchronization approach policy.
- MasterStartDistance : REAL: Distance before the sync point where synchronization begins.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- StartSync : BOOL: TRUE when the sync approach has started.
- InSync : BOOL: TRUE when synchronization is reached.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use when synchronization must happen at explicit master/slave positions rather than immediately.
Coordinated motion¶
Group-level handles, position payloads, transforms, and coordinated move blocks.
Public Data Types¶
AXIS_REF¶
Public handle for one motion axis. You keep one of these per axis and pass it by VAR_IN_OUT into the axis-related function blocks.
Fields:
- AxisId : UDINT: Stable public identifier for the axis in your application.
- InternalIndex : UINT: Runtime registry slot used by the library implementation.
MC_BUFFER_MODE¶
Controls whether a command aborts the current motion, waits in a queue, or blends with adjacent motion commands.
Values:
- mcAborting: Abort the currently active command and start the new command immediately.
- mcBuffered: Queue the new command behind the active command.
- mcBlendingLow: Blend using the lower transition velocity policy.
- mcBlendingPrevious: Blend using the previous command velocity.
- mcBlendingNext: Blend using the next command velocity.
- mcBlendingHigh: Blend using the higher transition velocity policy.
MC_EXECUTION_MODE¶
Controls how parameter, transform, and set-position style commands are applied.
Values:
- mcImmediately: Apply immediately when accepted.
- mcDelayed: Delayed execution mode. The current shipped profile rejects unsupported delayed paths.
- mcQueued: Queue behind already active/accepted work where supported.
MC_SOURCE¶
Chooses whether a readback or synchronization calculation uses commanded, set, or actual values.
Values:
- mcCommandedValue: Use the commanded/planned value.
- mcSetValue: Use the setpoint value.
- mcActualValue: Use the measured/actual value.
AXES_GROUP_REF¶
Public handle for one coordinated-motion group.
Fields:
- GroupId : UDINT: Stable public identifier for the group.
- InternalIndex : UINT: Runtime registry slot used by the library implementation.
AXIS_ID¶
Public axis identifier used by group readback blocks.
Underlying type: UDINT
AXES_GROUP_ID¶
Public group identifier used by group readback blocks.
Underlying type: UDINT
IDENT_IN_GROUP_REF¶
Stable member name used when adding an axis to a group and reading group configuration.
Underlying type: STRING[63]
MC_COMMAND_ID¶
Identifier for a queued or active coordinated-motion command.
Underlying type: UINT
MC_GROUP_PARAMETER¶
Supported group parameter names for group parameter read/write blocks.
Values:
- mcDynamicsMode: Group dynamics mode parameter.
- mcTransitionReferencePoint: Transition reference-point parameter.
MC_TRANSITION_PARAMETER¶
Additional numeric parameter used by transition/blending modes.
Underlying type: REAL
MC_KIN_REF¶
Handle for a kinematic transform profile.
Underlying type: UINT
MC_COORD_SYSTEM¶
Coordinate-space selector for group readback, transforms, and moves.
Values:
- mcACS: Axis coordinate system.
- mcMCS: Machine coordinate system.
- mcWCS: World coordinate system.
- mcPCS: Product coordinate system.
- mcFCS: Fixture coordinate system.
- mcTCS: Tool coordinate system.
MC_DYNAMICS_MODE¶
Defines whether dynamics values are interpreted as absolute values or percentages.
Values:
- mcAbsolute: Interpret dynamics as absolute values.
- mcPercentage: Interpret dynamics as percentages of reference/default dynamics.
MC_TRANSITION_MODE¶
Defines the transition/blending model between coordinated moves.
Values:
- mcTMNone: No transition blending.
- mcTMStartVelocity: Blend using start velocity.
- mcTMConstantVelocity: Blend using constant velocity.
- mcTMCornerDistance: Blend using a corner-distance rule.
- mcTMMaxCornerDeviation: Blend using a max-corner-deviation rule.
MC_TRANSITION_VELOCITY¶
Defines the velocity policy at a coordinated-motion transition.
Values:
- mcTVZero: Use zero transition velocity.
- mcTVLow: Use the lower velocity.
- mcTVPrevious: Use the previous segment velocity.
- mcTVNext: Use the next segment velocity.
- mcTVHigh: Use the higher velocity.
MC_TRANSITION_REFERENCE¶
Defines whether a transition references the start or end of a segment.
Values:
- mcStartPoint: Reference the segment start point.
- mcEndPoint: Reference the segment end point.
MC_ORIENTATION_MODE¶
Defines how orientation is handled during coordinated motion.
Values:
- mcLinear: Linearly interpolate orientation.
- mcJointInterpolated: Interpolate in joint space.
- mcFixed: Hold orientation fixed.
- mcPathBased: Derive orientation from the path.
MC_COMMAND_STATE¶
Readback state for one coordinated-motion command.
Values:
- mcAccepted: Command has been accepted but may not be active yet.
- mcActive: Command is the active motion command.
MC_GROUP_STATUS¶
Public group-state enum used by coordinated-motion readback blocks.
Values:
- mcGroupErrorStop: Group is in error stop.
- mcGroupDisabled: Group is disabled.
- mcGroupStandby: Group is enabled and waiting.
- mcGroupHoming: Group is homing.
- mcGroupStopping: Group is stopping.
- mcGroupMoving: Group is moving.
MC_CART_REF¶
Cartesian position/orientation payload.
Fields:
- X : REAL: Translational X component.
- Y : REAL: Translational Y component.
- Z : REAL: Translational Z component.
- RX : REAL: Rotational component around X.
- RY : REAL: Rotational component around Y.
- RZ : REAL: Rotational component around Z.
MC_COORD_REF¶
Coordinate-transform payload with the same field shape as MC_CART_REF.
Fields:
- X : REAL: Translational X component.
- Y : REAL: Translational Y component.
- Z : REAL: Translational Z component.
- RX : REAL: Rotational component around X.
- RY : REAL: Rotational component around Y.
- RZ : REAL: Rotational component around Z.
MC_CONFIG_DATA¶
Configuration flags that accompany Cartesian positions.
Fields:
- ConfigValid : BOOL: TRUE when the configuration flags are valid.
- Shoulder : BOOL: Configuration flag for the shoulder branch.
- Elbow : BOOL: Configuration flag for the elbow branch.
- Wrist : BOOL: Configuration flag for the wrist branch.
MC_TURN_INFO¶
Auxiliary turn information for articulated systems.
Fields:
- ATurns : ARRAY[1..4] OF SINT: Auxiliary turn counters for additional axes.
MC_CART_POS_REF¶
Cartesian position payload including pose, configuration, turn info, and auxiliary axes.
Fields:
- Tcp : MC_CART_REF: Cartesian TCP pose.
- Cfg : MC_CONFIG_DATA: Configuration flags.
- TurnInfo : MC_TURN_INFO: Turn information for articulated systems.
- AuxiliaryAxes : ARRAY[1..4] OF REAL: Auxiliary-axis positions.
MC_AXES_POS_REF¶
Axis-space position payload.
Fields:
- Axes : ARRAY[1..4] OF REAL: Axis-space position array.
MC_POS_REF¶
Combined Cartesian and axis-space position payload.
Fields:
- C : MC_CART_POS_REF: Cartesian representation.
- A : MC_AXES_POS_REF: Axis-space representation.
MC_DISTANCE_REF¶
Relative-distance payload for group relative moves.
Underlying type: MC_POS_REF
MC_SWLIMIT¶
Positive and negative software limits for one group member.
Fields:
- SWLimitPos : REAL: Positive software limit.
- SWLimitNeg : REAL: Negative software limit.
MC_GROUP_SWLIMITS¶
Array of software-limit pairs for the group.
Underlying type: ARRAY[1..4] OF MC_SWLIMIT
Function Block Reference¶
MC_AddAxisToGroup¶
Attach an axis to a coordinated-motion group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- IdentInGroup : IDENT_IN_GROUP_REF: Stable group-member identifier.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Call once per member during group setup before enabling or moving the group.
MC_RemoveAxisFromGroup¶
Detach one named axis from a group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- IdentInGroup : IDENT_IN_GROUP_REF: Stable group-member identifier.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_UngroupAllAxes¶
Remove every axis from a group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GroupReadConfiguration¶
Read one configured member of a group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- IdentInGroup : IDENT_IN_GROUP_REF: Stable group-member identifier.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Axis : AXIS_REF: Shared axis handle passed by reference.
- AxisID : AXIS_ID: Returned public axis identifier.
MC_ReadAxisGroupInfo¶
Read the group membership information for one axis.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
- AxesGroupID : AXES_GROUP_ID: Returned public group identifier.
- IdentInGroup : IDENT_IN_GROUP_REF: Stable group-member identifier.
MC_GroupEnable¶
Enable the coordinated-motion group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Enable the group after all required members and transforms are configured.
MC_GroupDisable¶
Disable the coordinated-motion group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GroupPower¶
Apply power permission to the whole group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Status : BOOL: Current achieved power/enabled state.
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use this like MC_Power, but for the whole group handle.
MC_GroupReadStatus¶
Read the high-level coordinated-motion group state.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- GroupMoving : BOOL: TRUE while the group is moving.
- GroupHoming : BOOL: TRUE while the group is homing.
- GroupErrorStop : BOOL: TRUE while the group is in error stop.
- GroupStandby : BOOL: TRUE while the group is ready and idle.
- GroupStopping : BOOL: TRUE while the group is stopping.
- GroupDisabled : BOOL: TRUE while the group is disabled.
MC_GroupReadError¶
Read the current group error code.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- GroupErrorID : WORD: Current group error code.
MC_GroupReset¶
Clear group errors.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GroupReadPosition¶
Read current group position in the requested coordinate system.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- Source : MC_SOURCE: Requested value source.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Position : MC_POS_REF: Target or reference position value.
MC_GroupReadVelocity¶
Read current group velocity in the requested coordinate system.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- Source : MC_SOURCE: Requested value source.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Velocity : ARRAY[1..4] OF REAL: Requested velocity.
- PathVelocity : REAL: Resulting path velocity.
MC_GroupReadAcceleration¶
Read current group acceleration in the requested coordinate system.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- Source : MC_SOURCE: Requested value source.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Acceleration : ARRAY[1..4] OF REAL: Requested acceleration.
- PathAcceleration : REAL: Resulting path acceleration.
MC_GroupReadMotionState¶
Read detailed motion flags and the active command ID for the group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Tracking : BOOL: TRUE when the group is in a tracking state.
- InSync : BOOL: TRUE when synchronization is reached.
- InPosition : BOOL: TRUE when the group is in position.
- Standstill : BOOL: TRUE when the axis or group is standing still.
- ConstantVelocity : BOOL: TRUE while velocity is constant.
- Accelerating : BOOL: TRUE while the object is accelerating.
- Decelerating : BOOL: TRUE while the object is decelerating.
- ActiveCommandID : MC_COMMAND_ID: Identifier of the current active command.
MC_GroupReadParameter¶
Read one group parameter.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- ParameterNumber : MC_GROUP_PARAMETER: Parameter identifier to read or write.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Value : REAL: Value being read or written.
MC_GroupWriteParameter¶
Write one group parameter.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- ParameterNumber : MC_GROUP_PARAMETER: Parameter identifier to read or write.
- Value : REAL: Value being read or written.
- ExecutionMode : MC_EXECUTION_MODE: Execution policy for the write/set operation.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GroupReadSWLimits¶
Read the configured software limits for the group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- LimitValues : MC_GROUP_SWLIMITS: Software-limit payload.
MC_GroupWriteSWLimits¶
Write the configured software limits for the group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- LimitValues : MC_GROUP_SWLIMITS: Software-limit payload.
- ExecutionMode : MC_EXECUTION_MODE: Execution policy for the write/set operation.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_SetKinTransform¶
Select a kinematic transform profile for the group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- KinTransform : MC_KIN_REF: Kinematic transform handle.
- ExecutionMode : MC_EXECUTION_MODE: Execution policy for the write/set operation.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_SetCartesianTransform¶
Set a Cartesian transform by explicit translation and rotation fields.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- TransX : REAL: Translation in X.
- TransY : REAL: Translation in Y.
- TransZ : REAL: Translation in Z.
- RotAngle1 : REAL: First rotation angle.
- RotAngle2 : REAL: Second rotation angle.
- RotAngle3 : REAL: Third rotation angle.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- ExecutionMode : MC_EXECUTION_MODE: Execution policy for the write/set operation.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_SetCoordinateTransform¶
Set a Cartesian transform by a MC_COORD_REF payload.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- CoordTransform : MC_COORD_REF: Coordinate-transform payload.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- ExecutionMode : MC_EXECUTION_MODE: Execution policy for the write/set operation.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_ReadKinTransform¶
Read the currently selected kinematic transform.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- KinTransform : MC_KIN_REF: Kinematic transform handle.
MC_ReadCartesianTransform¶
Read the current Cartesian transform fields.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- TransX : REAL: Translation in X.
- TransY : REAL: Translation in Y.
- TransZ : REAL: Translation in Z.
- RotAngle1 : REAL: First rotation angle.
- RotAngle2 : REAL: Second rotation angle.
- RotAngle3 : REAL: Third rotation angle.
MC_ReadCoordinateTransform¶
Read the current coordinate transform payload.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- CoordTransform : MC_COORD_REF: Coordinate-transform payload.
MC_GroupSetPosition¶
Overwrite the group position reference.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Position : MC_POS_REF: Target or reference position value.
- Relative : BOOL: If TRUE, interpret the position as a relative offset.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- ExecutionMode : MC_EXECUTION_MODE: Execution policy for the write/set operation.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_MoveLinearAbsolute¶
Run a linear absolute coordinated move.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Position : MC_POS_REF: Target or reference position value.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
- TransitionVelocity : MC_TRANSITION_VELOCITY: Transition velocity policy.
- TransitionMode : MC_TRANSITION_MODE: Transition/blending mode.
- TransitionParameter : MC_TRANSITION_PARAMETER: Additional transition parameter.
- OrientationMode : MC_ORIENTATION_MODE: Orientation interpolation mode.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
Usage notes: Use when path following matters and the move should be linear in the selected coordinate system.
MC_MoveLinearRelative¶
Run a linear relative coordinated move.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Distance : MC_DISTANCE_REF: Relative distance value.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
- TransitionVelocity : MC_TRANSITION_VELOCITY: Transition velocity policy.
- TransitionMode : MC_TRANSITION_MODE: Transition/blending mode.
- TransitionParameter : MC_TRANSITION_PARAMETER: Additional transition parameter.
- OrientationMode : MC_ORIENTATION_MODE: Orientation interpolation mode.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
Usage notes: Use when the target is expressed as a relative delta rather than an absolute point.
MC_MoveDirectAbsolute¶
Run a direct absolute coordinated move.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Position : MC_POS_REF: Target or reference position value.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
- TransitionVelocity : MC_TRANSITION_VELOCITY: Transition velocity policy.
- TransitionMode : MC_TRANSITION_MODE: Transition/blending mode.
- TransitionParameter : MC_TRANSITION_PARAMETER: Additional transition parameter.
- OrientationMode : MC_ORIENTATION_MODE: Orientation interpolation mode.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
Usage notes: Use when a direct move is acceptable and path linearity is not required.
MC_MoveDirectRelative¶
Run a direct relative coordinated move.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Distance : MC_DISTANCE_REF: Relative distance value.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
- TransitionVelocity : MC_TRANSITION_VELOCITY: Transition velocity policy.
- TransitionMode : MC_TRANSITION_MODE: Transition/blending mode.
- TransitionParameter : MC_TRANSITION_PARAMETER: Additional transition parameter.
- OrientationMode : MC_ORIENTATION_MODE: Orientation interpolation mode.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
Usage notes: Relative version of the direct coordinated move.
MC_GroupHome¶
Home a coordinated-motion group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Position : MC_POS_REF: Target or reference position value.
- CoordSystem : MC_COORD_SYSTEM: Coordinate system used by the command or readback.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GroupStop¶
Stop the whole group immediately.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GroupHalt¶
Halt the group while preserving buffered semantics.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAccepted : BOOL: TRUE when the command has been accepted.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GroupWaitTime¶
Insert a timed wait command into the group command stream.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Duration : TIME: Requested dwell time.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
Usage notes: Useful for inserting dwell periods into a buffered group-motion sequence.
MC_GroupSetOverride¶
Apply group-wide override scaling factors.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- VelFactor : REAL: Velocity override factor.
- AccFactor : REAL: Acceleration override factor.
- JerkFactor : REAL: Jerk override factor.
VAR_OUTPUT:
- Enabled : BOOL: TRUE while the override function is active.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_TransformPosition¶
Transform one position payload between coordinate systems.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- InputPosition : MC_POS_REF: Position to transform.
- InputCoordSystem : MC_COORD_SYSTEM: Coordinate system of the input position.
- OutputCoordSystem : MC_COORD_SYSTEM: Coordinate system requested for the output position.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
- OutputPosition : MC_POS_REF: Transformed position payload.
- SingularPosition : BOOL: TRUE when the position is singular or near-singular.
Usage notes: Use for coordinate conversion or preflight checks before issuing a group move.
MC_GroupReadCommandInfo¶
Read tracking/progress information for one coordinated-motion command.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
- CommandID : MC_COMMAND_ID: Identifier assigned to the accepted command.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- CommandState : MC_COMMAND_STATE: Returned state of the tracked command.
- ElapsedDuration : TIME: Elapsed command time.
- RemainingDuration : TIME: Estimated remaining command time.
- RemainingDistance : REAL: Estimated remaining path distance.
- Progress : REAL: Normalized command progress value.
- InfoID : WORD: Additional informational code.
- WarningID : WORD: Additional warning code.
Usage notes: Use when you need progress or timing feedback for long-running group commands.
MC_GroupWriteReferenceDynamics¶
Write the reference dynamics used by the group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GroupReadReferenceDynamics¶
Read the reference dynamics used by the group.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
MC_GroupWriteDefaultDynamics¶
Write the default group dynamics values.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_GroupReadDefaultDynamics¶
Read the default group dynamics values.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- AxesGroup : AXES_GROUP_REF: Shared group handle passed by reference.
VAR_INPUT:
- Enable : BOOL: Level-sensitive enable input. Keep it TRUE while you want the block active or the readback valid.
VAR_OUTPUT:
- Valid : BOOL: TRUE when the readback outputs are valid this scan.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
Homing¶
Part 5 homing toolkit blocks for step-by-step homing procedures beyond the basic MC_Home block.
Public Data Types¶
MC_HOME_DIRECTION¶
Direction selector used by the advanced homing step blocks.
Values:
- mcPositiveDirection: Travel in the positive direction.
- mcNegativeDirection: Travel in the negative direction.
- mcSwitchPositive: Determine direction from a positive switch interpretation.
- mcSwitchNegative: Determine direction from a negative switch interpretation.
MC_SWITCH_MODE¶
Defines how a switch or reference signal is interpreted during homing.
Values:
- mcOn: Trigger when the signal is ON.
- mcOff: Trigger when the signal is OFF.
- mcRisingEdge: Trigger on a rising edge.
- mcFallingEdge: Trigger on a falling edge.
- mcEdgeSwitchPositive: Trigger on the positive-direction edge rule.
- mcEdgeSwitchNegative: Trigger on the negative-direction edge rule.
MC_REF_SIGNAL_REF¶
Reference-signal payload containing the signal state and optional metadata.
Fields:
- Signal : BOOL: Current signal state.
- PositionStamp : REAL: Position sampled with the signal.
- MarkerCode : UINT: Optional marker/reference code.
Function Block Reference¶
MC_StepAbsoluteSwitch¶
Run a homing step that finishes when an absolute reference signal matches the requested switch mode.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Direction : MC_HOME_DIRECTION: Requested travel direction policy.
- SwitchMode : MC_SWITCH_MODE: Reference-switch evaluation mode.
- ReferenceSignal : MC_REF_SIGNAL_REF: Reference signal payload.
- Velocity : REAL: Requested velocity.
- SetPosition : REAL: Position to stamp into the axis when the homing step finishes.
- TorqueLimit : REAL: Torque limit used during the homing step.
- TimeLimit : TIME: Maximum allowed homing-step time.
- DistanceLimit : REAL: Maximum allowed homing-step travel distance.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Usually one part of a larger homing recipe.
MC_StepLimitSwitch¶
Run a homing step that finishes when the selected limit switch matches the requested mode.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Direction : MC_HOME_DIRECTION: Requested travel direction policy.
- LimitSwitchMode : MC_SWITCH_MODE: Limit-switch evaluation mode.
- Velocity : REAL: Requested velocity.
- SetPosition : REAL: Position to stamp into the axis when the homing step finishes.
- TorqueLimit : REAL: Torque limit used during the homing step.
- TimeLimit : TIME: Maximum allowed homing-step time.
- DistanceLimit : REAL: Maximum allowed homing-step travel distance.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Choose the direction and switch mode so the step matches your machine hardware.
MC_StepBlock¶
Run a homing step that detects a block/hard-stop condition.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Direction : MC_HOME_DIRECTION: Requested travel direction policy.
- Velocity : REAL: Requested velocity.
- SetPosition : REAL: Position to stamp into the axis when the homing step finishes.
- DetectionVelocityLimit : REAL: Velocity threshold used to detect a block condition.
- DetectionVelocityTime : TIME: Time window for the block-detection velocity threshold.
- TorqueLimit : REAL: Torque limit used during the homing step.
- TimeLimit : TIME: Maximum allowed homing-step time.
- DistanceLimit : REAL: Maximum allowed homing-step travel distance.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use when a hard-stop or torque-detection style homing step is required.
MC_StepReferencePulse¶
Run a homing step that finishes on a reference pulse.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Direction : MC_HOME_DIRECTION: Requested travel direction policy.
- ReferenceSignal : MC_REF_SIGNAL_REF: Reference signal payload.
- Velocity : REAL: Requested velocity.
- SetPosition : REAL: Position to stamp into the axis when the homing step finishes.
- TorqueLimit : REAL: Torque limit used during the homing step.
- TimeLimit : TIME: Maximum allowed homing-step time.
- DistanceLimit : REAL: Maximum allowed homing-step travel distance.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use when your axis hardware provides a dedicated reference pulse.
MC_StepDistanceCoded¶
Run a homing step that relies on distance-coded movement.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Direction : MC_HOME_DIRECTION: Requested travel direction policy.
- Velocity : REAL: Requested velocity.
- TorqueLimit : REAL: Torque limit used during the homing step.
- TimeLimit : TIME: Maximum allowed homing-step time.
- DistanceLimit : REAL: Maximum allowed homing-step travel distance.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_HomeDirect¶
Directly mark an axis as homed at a chosen position.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- SetPosition : REAL: Position to stamp into the axis when the homing step finishes.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use when an external mechanism has already established the absolute position.
MC_HomeAbsolute¶
Finish homing by using the current absolute reference.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
MC_FinishHoming¶
Complete the final move after the earlier homing steps have found the reference.
Type: FUNCTION_BLOCK
VAR_IN_OUT:
- Axis : AXIS_REF: Shared axis handle passed by reference.
VAR_INPUT:
- Execute : BOOL: Command trigger input. Use a rising edge to request a new command, then keep calling the FB every scan.
- Distance : REAL: Relative distance value.
- Velocity : REAL: Requested velocity.
- Acceleration : REAL: Requested acceleration.
- Deceleration : REAL: Requested deceleration.
- Jerk : REAL: Requested jerk.
- BufferMode : MC_BUFFER_MODE: PLCopen buffering/blending mode for the command.
VAR_OUTPUT:
- Done : BOOL: TRUE when the requested command has completed successfully.
- Busy : BOOL: TRUE while the command is accepted and still in progress.
- Active : BOOL: TRUE while this FB owns the currently active motion command.
- CommandAborted : BOOL: TRUE when the command was aborted by another accepted command or stop condition.
- Error : BOOL: TRUE when the FB reports an error.
- ErrorID : WORD: Current FB error code.
Usage notes: Use as the closing step after earlier homing steps locate the reference.
Example And Further Reading¶
- Example walkthrough:
examples/plcopen_motion_single_axis_demo/README.md - Coverage matrix:
docs/specs/coverage/plcopen-motion-coverage.md - Performance-only material:
examples/plcopen_motion_single_axis_benchmarks/README.md