MC_AddAxisToGroup

MC_AddAxisToGroup 1:

TF5410
TwinCAT 3 Motion Collision Avoidance

TF5420
TwinCAT 3 Motion Pick-and-Place

 

MC Group with Pick-and-Place

MC Group Coordinated Motion

MC_AddAxisToGroup 2:

MC_AddAxisToGroup 3:
(MC_AddAxisToGroup 4: up to and including v3.2)

MC_AddAxisToGroup 5:

The function block MC_AddAxisToGroup adds an axis to a group.

MC_AddAxisToGroup 6:

From V3.1.10.1, stationary axes can be added to and removed from a CA group in the GroupMoving group state. If a moving axis is added to a group, the command is rejected with an error message (a change of the group state with a moving axis is also rejected).

MC_AddAxisToGroup 7:

Only axes in GroupDisabled or GroupErrorDisabled state can be added to a MC group.

MC_AddAxisToGroup 8: Inputs

VAR_INPUT
    Execute               : BOOL;
    IdentInGroup          : IDENT_IN_GROUP_REF;
END_VAR

Name

Type

Description

Execute

BOOL

The command is triggered by a rising edge at this input.

IdentInGroup

IDENT_IN_GROUP_REF

Defines the interpretation of the axis to be added to the group. For multi-dimensional motions, this can be the Cartesian interpretation. The global variables (e.g. MCS_X) must be used. For Collision Avoidance the function UDINT_TO_IDENTINGROUP must be used.

Notice The use of integer values for the input IdentInGroup is NOT supported and may lead to incompatibility with future releases. If integer values are used, it may no longer be possible to build the project. We recommend using global variables (e.g. MCS_X) or the conversion function UDINT_TO_IDENTINGROUP.

MC_AddAxisToGroup 9: Inputs/outputs

VAR_IN_OUT
    AxesGroup             : AXES_GROUP_REF;
    Axis                  : AXIS_REF;
END_VAR

Name

Type

Description

AxesGroup

AXES_GROUP_REF

Reference to a group of axes (see Cyclic Group Interface).

Axis

AXIS_REF

Reference to an axis (see AXIS_REF).

MC_AddAxisToGroup 10: Outputs

VAR_OUTPUT
    Done                  : BOOL;
    Busy                  : BOOL;
    Error                 : BOOL;
    ErrorId               : UDINT;
END_VAR

Name

Type

Description

Done

BOOL

This output becomes TRUE when the command was successfully executed.

Busy

BOOL

This output becomes TRUE when the command is started with Execute and remains so as long as the function block executes the command. If Busy becomes FALSE again, the function block is ready for a new command. At the same time one of the outputs Done, CommandAborted (if available) or Error is set.

Error

BOOL

This output becomes TRUE if an error has occurred during command execution.

ErrorId

UDINT

Contains the command-specific error code of the last executed command. Details of the error code can be found in the ADS error documentation or in the NC error documentation (error codes 0x4nnn and 0x8nnn).

Sample for TwinCAT 3 Motion Pick-and-Place

Multi-dimensional movements

MC_AddAxisToGroup 11:

Multi-dimensional movements are only applicable when TF5420 is used.

VAR_GLOBAL CONSTANT
cAxesCount           : UINT := 4;
END_VAR
VAR
    stGroupRef            : AXES_GROUP_REF; // link to MC Group
    stAxis                : ARRAY[1..cAxesCount] OF AXIS_REF;
    fbAddAxis             : ARRAY[1..cAxesCount] OF MC_AddAxisToGroup;
    i                     : UINT;
END_VAR
fbAddAxis[1].IdentInGroup := MCS_X; //X-Axis
fbAddAxis[2].IdentInGroup := MCS_Y; //Y-Axis
fbAddAxis[3].IdentInGroup := MCS_Z; //Z-Axis
fbAddAxis[4].IdentInGroup := MCS_C1;//1st rotation is C-rotation (around Z-Axis)

FOR i:=1 TO cAxesCount DO
    fbAddAxis[i](
    AxesGroup:=stGroupRef,
    Axis := stAxis[i],
    Execute := TRUE);
END_FOR

Sample for TF5410 TwinCAT 3 Motion Collision Avoidance

PTP with Collision Avoidance

MC_AddAxisToGroup 12:

PTP with Collision Avoidance is only applicable when TF5410 is used.

VAR_GLOBAL CONSTANT
    cAxesCount            : UDINT:=10;
END_VAR
VAR
    stGroupRef            : AXES_GROUP_REF; // link to CA Group
    stAxis                : ARRAY[1..cAxesCount] OF AXIS_REF;
    fbAddAxis             : ARRAY[1..cAxesCount] OF MC_AddAxisToGroup;
    i                     : UDINT;
END_VAR
FOR i:=1 TO cAxesCount DO
    fbAddAxis[i](
        AxesGroup:=stGroupRef,
        Axis := stAxis[i],
        IdentInGroup := UDINT_TO_IDENTINGROUP(i),
        Execute := TRUE);
END_FOR

Requirements

Development environment

Target platform

PLC libraries
to include

TwinCAT V3.1.4018.26

TF5400 Advanced Motion Pack V3.1.1.17

PC or CX (x64)

Tc3_McCoordinatedMotion, Tc2_MC2