MC_CamIn

MC_CamIn 1:

This function block initiates camming-based synchronization on a slave.
If the slave is already coupled to one or more cam table couplings, it switches to the cam table coupling that is entered in this function block.
Note: Use MC_CamAdd to switch from single-camming to multi-camming. Switch back and forth between single-camming and multi-camming is possible and not limited.

Syntax

Definition:

FUNCTION_BLOCK MC_CamIn
VAR_INPUT
    Master                : Type_Master1D;
    Slave                 : Type_Camming1D;
    CamObject             : Type_CouplingFunction1D;
    Execute               : BOOL;
    Scaling               : CamScalingData;
    ActivationOptions     : CamActivationOptions;
    ReactionToMasterError : EReactionToMasterError;
    ReactionToSlaveError  : EReactionToSlaveError;
END_VAR
VAR_OUTPUT
    InSync                : BOOL;
    Busy                  : BOOL;
    Active                : BOOL;
    CommandAborted        : BOOL;
    Error                 : BOOL;
    ErrorId               : UDINT;
    MasterHasError        : BOOL;
END_VAR

MC_CamIn 2: Inputs

Name

Type

Default

Description

Master

Type_Master1D

 

Reference to the master axis

Slave

Type_Camming1D

 

Reference to the slave axis

CamObject

Type_CouplingFunction1D

 

Reference to the cam object

Execute

BOOL

 

Start cam in at rising edge.

Scaling

CamScalingData

 

Scaling of the new coupling

ActivationOptions

CamActivationOptions

 

Options controlling how the cam coupling is activated (mode, position, reference object).

ReactionToMasterError

EReactionToMasterError

TriggerSlaveError

Reaction if an error occurs in the master while this command is active.

ReactionToSlaveError

EReactionToSlaveError

TriggerMasterError

Reaction if an error occurs in the slave while this command is active.

MC_CamIn 3: Outputs

Name

Type

Description

InSync

BOOL

Synchronization succeeded

Busy

BOOL

Function block is not finished and new output values are to be expected.

Active

BOOL

Function block has active control on the axis.

CommandAborted

BOOL

Command is aborted by another command.

Error

BOOL

Error occurred within function block.

ErrorId

UDINT

Error identifier

MasterHasError

BOOL

Master is in error state.

Further information

The following rules apply to ActivationOptions.ReferenceObject:

Additional information on ReactionToSlaveError and ReactionToMasterError

As a general rule, if there is an error on the slave axis:

  • Slave axis: The coupling is released, and the response depends on the error type.
  • Master Axis: The master axis reports an error and either follows the MC's stop ramp or continues its current motion without being affected.

If there is an error on the master axis:

  • Master axis: The response depends on the type of error.
  • Slave axis: The slave axis reports an error and follows either the MC's stop ramp or the master axis's setpoints.

Detailed information is provided in the Error behavior chapter.

Possible error codes

For this function block, the following values, among others, are possible for the ErrorId output:

Error(Hex)

Error(Dec)

Error type

Description

0x8145

33093

Function Block

Mapping of cyclic interface between NC and PLC is missing (e.g., AXIS_REF, AXES_GROUP_REF, ...). A reference used by the function block (e.g., to an axis, group, mover or other motion object) is not linked to the corresponding NC object, or its cyclic mapping is incomplete.

0x8169

33129

Function Block

Master axis does not exist or cannot be used. The axis passed as master does not exist or has no cyclic mapping and therefore cannot be used as master (e.g., for camming or gearing).

0x81af

33199

Function Block

Invalid object or object reference passed to function block. An invalid or missing object reference was passed to the function block (e.g., missing CamObject reference on MC_CamIn, MC_CamTableSelect or MC_CamScaling).

0x81b0

33200

Function Block

Object not allowed (e.g., object is already in use). The supplied object is not allowed in the current context (e.g., source and target are identical in CopyFrom(), the object is already used by another axis).

0x81b1

33201

Function Block

Invalid size passed to function block (e.g., invalid array size or invalid number of elements). An invalid size was passed to the function block (e.g., CamRef.NumberOfPoints less than two on MC_CamTableSelect).

0x81b2

33202

Function Block

The given cam activation settings are invalid. The activation settings of the cam table (e.g., ActivationMode and ActivationPosition) are invalid or inconsistent.

0x81b3

33203

Function Block

The given cam scaling is invalid. The supplied cam table scaling parameters are invalid (e.g., scale factor of zero, or master offset mode Auto which is not supported in the executed operation).

0x81b4

33204

Function Block

The given cam data point is invalid. At least one data point of the cam table is invalid (e.g., the first or last point is being ignored).

0x81c2

33218

State

A queued cam command could not be transitioned from queued to active. An error occurred while transitioning a queued cam command (e.g. MC_CamIn, MC_CamAdd, MC_CamExchange, MC_CamScaling or MC_CamRemove) to the active state. This typically happens when the camming state changed between queuing and activation, for example because the referenced cam table is already coupled or no longer coupled, or because the setpoint or activation time could not be computed.

An overview of all NC error codes can be found here:

Version information

  • TwinCAT Standard >= v3.1.4026.23.1
  • TF5550 MC3 Camming >= v4.0.6 (includes TF5500 MC3 Base >= v4.0.6)

Required License

TC3 MC3 Camming