Chapter 18
MC_SINGLE – Motion control - single axis blocks

This library includes functional blocks for single axis motion control as it is defined in the PLCopen specification. It is recommended to study the PLCopen specification prior to using the blocks from this library. The knowledge of PLCopen is necessary for advanced use of the blocks included in this library.

PLCopen defines all blocks with the MC_ prefix. This notation is kept within this library. Nevertheless, there are also function blocks, which are not described by PLCopen or are described as vendor specific. These blocks can be recognized by the RM_ prefix. Note that PLCopen (and also IEC 61131-3 which is the base for PLCopen) does not use block parameters, all the parameters are specified by input signals. In the REXYGEN, block parameters are used to simplify usage of the blocks. To keep compatibility with PLCopen and improve usability of the blocks, almost all of them are implemented twice: with prefix MC_ without parameters (parameters are inputs) and with prefix MCP_ with parameters. Some blocks require additional vendor specific parameters. In such a case even the MC_-prefixed blocks contain parameters.

PLCopen specifies that all inputs/parameters are sampled at rising-edge of the Execute input. In REXYGEN block parameters are usually changed very rare. Therefore the parameters of the activated block have not be changed until block is finished (e.g. while output Busy is on).

The REXYGEN system does not allow input-output signals and all signals must have different name. For these reasons the Axis input-output signal, which is used in all blocks, is divided into input uAxis and output yAxis. The block algorithm copies the input uAxis to the output yAxis. The yAxis output is not necessary for the function of motion control blocks, but "chaining" the axis references makes it possible to order the blocks and define priorities. Other reference signals are either defined as input-only or use this mechanism as well.

PLCopen defines the outputs Busy, Active, CommandAborted as optional in almost all blocks. In REXYGEN, some of them are never set, but the outputs are defined to simplify future extensions and/or changes in the implementation.

Units used for position and distance of axis are implementation specific. It can be meters, millimeters, encoder ticks, angular degrees (for rotational axis) or any others, but all blocks connected to one axis must use the same position units. Time is always defined in seconds. Velocity unit is thus "position units per second" and acceleration unit is "position units per square second".

The REXYGEN system uses more threads for execution of the function blocks. In standard function blocks the synchronization is provided by the system and the user does not need to care about it. But using the Reference references could violate the synchronization mechanisms. However, there is no problem if all referenced blocks are located in the same task and therefore e.g. the RM_Axis block must be in the same task as all other blocks connected to this axis.

Some inputs/parameters are of enumeration type (for example BufferMode or Direction). It is possible to choose any of the defined values for this type in the MCP_ version of the blocks, although not all of them are valid for all blocks (for example the block MC_MoveVelocity does not support Direction = shortest_way). Valid values for each block are listed in this manual.

 RM_Axis – Motion control axis
 MC_AccelerationProfile, MCP_AccelerationProfile – Acceleration profile
 MC_Halt, MCP_Halt – Stopping a movement (interruptible)
 MC_HaltSuperimposed, MCP_HaltSuperimposed – Stopping a movement (superimposed and interruptible)
 MC_Home, MCP_Home – Homing
 MC_MoveAbsolute, MCP_MoveAbsolute – Move to position (absolute coordinate)
 MC_MoveAdditive, MCP_MoveAdditive – Move to position (relative to previous motion)
 MC_MoveRelative, MCP_MoveRelative – Move to position (relative to execution point)
 MC_MoveSuperimposed, MCP_MoveSuperimposed – Superimposed move
 MC_MoveContinuousAbsolute, MCP_MoveContinuousAbsolute – Move to position (absolute coordinate)
 MC_MoveContinuousRelative, MCP_MoveContinuousRelative – Move to position (relative to previous motion)
 MC_MoveVelocity, MCP_MoveVelocity – Move with constant velocity
 MC_PositionProfile, MCP_PositionProfile – Position profile
 MC_Power – Axis activation (power on/off)
 MC_ReadActualPosition – Read actual position
 MC_ReadAxisError – Read axis error
 MC_ReadBoolParameter – Read axis parameter (bool)
 MC_ReadParameter – Read axis parameter
 MC_ReadStatus – Read axis status
 MC_Reset – Reset axis errors
 MC_SetOverride, MCP_SetOverride – Set override factors
 MC_Stop, MCP_Stop – Stopping a movement
 MC_TorqueControl, MCP_TorqueControl – Torque/force control
 MC_VelocityProfile, MCP_VelocityProfile – Velocity profile
 MC_WriteBoolParameter – Write axis parameter (bool)
 MC_WriteParameter – Write axis parameter
 RM_AxisOut – Axis output
 RM_AxisSpline – Commanded values interpolation
 RM_Track – Tracking and inching

2022 © REX Controls s.r.o., www.rexygen.com