PLCopen Motion¶
PLCopen Motion support covers standard motion terminology, the truST-supported function-block subset, and the proof path from example axis to project validation.
Use Libraries first for package/project ownership. Use Libraries And Motion examples for the smallest runnable motion-shaped project.
Use PLCopen Motion OOP when the project should expose axis objects, command objects, and PLCopen OOP properties instead of only the classic function-block call surface.
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 directly by the library implementation. Bind it to a configured Phase A slot in0..31; out-of-range values are not normalized.
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.
The current deterministic Phase A single-axis FBs publish all four
mcBlending* values for source compatibility but reject them with
mcERR_NotSupported. Use mcAborting or mcBuffered in this profile.
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.Enableis 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 isMC_Power->MC_Home-> wait forDone-> 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. If the deterministic kernel reaches zero velocity on the accepting invocation,Doneis TRUE andBusyis FALSE while the axis remains inStoppinguntilExecutegoes FALSE.
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; monitorBusy,Active, andDone.
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: UseInVelocityplus 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. Usage notes: Standard read-only numeric parameter numbers may be initialized only while the axis isDisabledwith no active or queued command. Later writes fail withmcERR_InvalidState.
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_CommandedPositionvalue of typeINT. PN_SWLimitPos : INT:PN_SWLimitPosvalue of typeINT.PN_SWLimitNeg : INT:PN_SWLimitNegvalue of typeINT.PN_EnableLimitPos : INT:PN_EnableLimitPosvalue of typeINT.PN_EnableLimitNeg : INT:PN_EnableLimitNegvalue of typeINT.PN_EnablePosLagMonitoring : INT:PN_EnablePosLagMonitoringvalue of typeINT.PN_MaxPositionLag : INT:PN_MaxPositionLagvalue of typeINT.PN_MaxVelocitySystem : INT:PN_MaxVelocitySystemvalue of typeINT.PN_MaxVelocityAppl : INT:PN_MaxVelocityApplvalue of typeINT.PN_ActualVelocity : INT:PN_ActualVelocityvalue of typeINT.PN_CommandedVelocity : INT:PN_CommandedVelocityvalue of typeINT.PN_MaxAccelerationSystem : INT:PN_MaxAccelerationSystemvalue of typeINT.PN_MaxAccelerationAppl : INT:PN_MaxAccelerationApplvalue of typeINT.PN_MaxDecelerationSystem : INT:PN_MaxDecelerationSystemvalue of typeINT.PN_MaxDecelerationAppl : INT:PN_MaxDecelerationApplvalue of typeINT.PN_MaxJerkSystem : INT:PN_MaxJerkSystemvalue of typeINT.PN_MaxJerkAppl : INT:PN_MaxJerkApplvalue of typeINT.PN_TRUST_VendorBool0 : INT: truST vendor BOOL parameter1000; defaults toFALSEand has no motion-kernel side effect.mcERR_None : WORD:mcERR_Nonevalue of typeWORD.mcERR_InvalidParameter : WORD:mcERR_InvalidParametervalue of typeWORD.mcERR_InvalidState : WORD:mcERR_InvalidStatevalue of typeWORD.mcERR_AxisGrouped : WORD:mcERR_AxisGroupedvalue of typeWORD.mcERR_GroupDisabled : WORD:mcERR_GroupDisabledvalue of typeWORD.mcERR_GroupNotReady : WORD:mcERR_GroupNotReadyvalue of typeWORD.mcERR_NotHomed : WORD:mcERR_NotHomedvalue of typeWORD.mcERR_NotPowered : WORD:mcERR_NotPoweredvalue of typeWORD.mcERR_BackendFault : WORD:mcERR_BackendFaultvalue of typeWORD.mcERR_KinematicNoSolution : WORD:mcERR_KinematicNoSolutionvalue of typeWORD.mcERR_KinematicSingularity : WORD:mcERR_KinematicSingularityvalue of typeWORD.mcERR_QueueFull : WORD:mcERR_QueueFullvalue of typeWORD.mcERR_NotSupported : WORD:mcERR_NotSupportedvalue of typeWORD. Usage notes: Call once during initialization and then reuse the publishedPN_*andmcERR_*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 triggeringMC_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 isMC_CamTableSelect->MC_CamIn-> wait forInSync.
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 likeMC_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