MC_MoveCircularAbsolutePreparation

MC_MoveCircularAbsolutePreparation 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_MoveCircularAbsolutePreparation 2:

MC_MoveCircularAbsolutePreparation 3:
(MC_MoveCircularAbsolutePreparation 4:bis v3.2 einschließlich)

MC_MoveCircularAbsolutePreparation 5:

Der Funktionsbaustein MC_MoveCircularAbsolutePreparation fügt der Tabelle der Segmente in der Struktur PathData eine absolute Kreisbewegung hinzu. Nach der Erstellung einer Tabelle kann er über MC_MovePath ausgeführt werden. Der Funktionsbaustein MC_MoveCircularAbsolutePreparation kann mehrmals pro Zyklus aufgerufen werden. Maximal 30 Einträge sind pro PathData-Tabelle zulässig.

MC_MoveCircularAbsolutePreparation 6:

Zurücksetzen einer Tabelle

Eine Tabelle wird bei der Ausführung nicht zurückgesetzt. Zum Zurücksetzen muss die Methode ClearPath() von MC_PATH_DATA_REF aufgerufen werden.

MC_MoveCircularAbsolutePreparation 7: Eingänge

VAR_INPUT
    CircMode                 : MC_CIRC_MODE := mcCircModeInvalid;
    AuxPoint                 : POINTER TO MC_LREAL;
    AuxPointCount            : UDINT;
    EndPoint                 : POINTER TO MC_LREAL;
    EndPointCount            : UDINT;
    PathChoice               : MC_CIRC_PATHCHOICE := mcCircPathchoiceCounterClockwise;
    Velocity                 : MC_LREAL := MC_INVALID;
    Acceleration             : MC_LREAL := MC_DEFAULT;
    Deceleration             : MC_LREAL := MC_DEFAULT;
    Jerk                     : MC_LREAL := MC_DEFAULT;
    BufferMode               : MC_BUFFER_MODE := mcAborting;
    TransitionMode           : MC_TRANSITION_MODE := mcTransModeNone;
    TransitionParameter      : POINTER TO MC_LREAL;
    TransitionParameterCount : UDINT;
    InvokeId                 : UDINT;
    DynamicConstraints       : REFERENCE TO IPlcDynamicConstraint := 0;
END_VAR

Name

Typ

Beschreibung

CircMode

MC_CIRC_MODE

Legt fest, durch welche Kreisdefinition der Kreis programmiert wird. Legt die Bedeutung des Eingangssignals "AuxPoint" fest (siehe MC_CIRC_MODE).

AuxPoint

POINTER TO MC_LREAL

Zeiger auf ein Array [1..AuxPointCount] des AuxPoint-Vektors. Die Interpretation des AuxPoint-Vektors hängt von der Rotationskonvention ab (siehe MC Group Coordinated Motion oder MC Group with Pick-and-Place) und ist immer (x, y, z).

AuxPointCount

UDINT

Dimension des AuxPoint-Vektors. Muss 3 sein. Wenn eine 2D-Rotationskonvention (siehe MC Group Coordinated Motion oder MC Group with Pick-and-Place) verwendet wird, muss der Eingangswert ebenfalls 3 sein. Bei einer 2D-Rotationskonvention und CircMode von mcCircModeBorder oder mcCircModeCenter muss die Komponente, die von der Arbeitsebene unabhängig ist, auf MC_Ignore gesetzt werden (siehe MC_LREAL/Spezielle Eingangswerte).

EndPoint

POINTER TO MC_LREAL

Zeiger auf ein Array [1..EndPointCount] des Zielpositionsvektors.

EndPointCount

UDINT

Dimension des EndPoint-Vektors. Muss der Anzahl der Achsen in der Achskonvention entsprechen (siehe MC Group Coordinated Motion oder MC Group with Pick-and-Place).

PathChoice

MC_CIRC_PATHCHOICE

Definiert die Drehrichtung in Bezug auf den Normalvektor. Der Eingang wird ignoriert, wenn der Eingang CircMode auf mcCircModeBorder gesetzt ist (siehe MC_CIRC_PATHCHOICE).

Velocity

MC_LREAL

Die maximale Geschwindigkeit für das programmierte Segment. Die Geschwindigkeit muss nicht immer erreicht werden. Die Geschwindigkeit muss >0 gesetzt werden.

Acceleration

MC_LREAL

Maximale Bahnbeschleunigung für das programmierte Segment. Spezielle Eingangswerte können verwendet werden. MC_DEFAULT führt das Kommando mit Standardachsenwerten aus. MC_MAXIMUM führt das Kommando mit den Maximalwerten der Achsen aus. Die Beschleunigung muss ≥1 gesetzt werden.

Deceleration

MC_LREAL

Maximale Bahnverzögerung für das programmierte Segment. Spezielle Eingangswerte können verwendet werden. MC_DEFAULT führt das Kommando mit Standardachsenwerten aus. MC_MAXIMUM führt das Kommando mit den Maximalwerten der Achsen aus. Die Verzögerung muss ≥1 gesetzt werden.

Jerk

MC_LREAL

Bahnruck für das programmierte Segment. Spezielle Eingangswerte können verwendet werden. MC_DEFAULT führt das Kommando mit Standardachsenwerten aus. Der Ruck muss ≥100 gesetzt werden.

Ab TF5400 V3.2.27:
Bei der MC Group Coordinated Motion wird MC_MAXIMUM unterstützt. Dabei ist MC_MAXIMUM = 100 * MC_DEFAULT.

BufferMode

MC_BUFFER_MODE

Legt fest, wie aufeinanderfolgende Fahraufträge abgearbeitet werden sollen (siehe MC_BUFFER_MODE).

Transition Mode

MC_TRANSITION_MODE

Definiert den Blending-Modus (siehe MC_TRANSITION_MODE).

TransitionParameter

POINTER TO MC_LREAL

Zeiger auf Array [1..TransitionParameterCount] der Blending-Parameter. Transitionsparameter definieren das Blending von der letzten programmierten Position (siehe MC_TRANSITION_MODE).

TransitionParameterCount

UDINT

Anzahl der Blending-Parameter.

InvokeId

UDINT

Segment-ID für Analysezwecke.

DynamicContraints

REFERENCE TO IPlcDynamicConstraint

Ab TF5400 V3.2.27, MC Group Coordinated Motion:
Optionaler Eingang um die erlaubten Werte für Geschwindigkeit, Beschleunigung, Verzögerung oder Ruck während der Bewegung weiter zu beschränken.

Hinweis Referenz-Zuweisung:

<InstanceOfMC_MoveCircularAbsolutePreparation>.DynamicConstraints REF= <InstanceOfIPlcDynamicConstraint>;

MC_MoveCircularAbsolutePreparation 8: Ein-/Ausgänge

VAR_IN_OUT
    PathData                 : MC_PATH_DATA_REF;
END_VAR

Name

Typ

Beschreibung

PathData

MC_PATH_DATA_REF

Tabelle, die die Segmente einer Bahn enthält. Die Tabelle wird durch MC_Move…Preparation geschrieben und durch MC_MovePath ausgeführt (siehe MC_PATH_DATA_REF).

MC_MoveCircularAbsolutePreparation 9: Ausgänge

VAR_OUTPUT
    Error                    : BOOL;
    ErrorId                  : UDINT;
END_VAR

Name

Typ

Beschreibung

Error

BOOL

Dieser Ausgang wird TRUE, wenn bei der Ausführung des Kommandos ein Fehler aufgetreten ist.

ErrorId

UDINT

Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Kommandos. Der Fehlercode kann in der ADS-Fehlerdokumentation oder in der NC-Fehlerdokumentation (Fehlercodes 0x4nnn und 0x8nnn) nachgeschlagen werden.

Beispiel Mittelpunktprogrammierung

Angenommen, eine Bahn aus 4 Segmenten wie im Bild dargestellt soll im Modus mcCircModeCenter programmiert werden: Der Benutzer definiert den Mittelpunkt des Kreises als Hilfspunkt ("AuxPoint"). Bei Verwendung von mcCircModeCenter legt der Eingang MC_CIRC_PATHCHOICE die Drehrichtung fest. Da die Ebene durch das Kreuzprodukt definiert wird, muss für beide Kreissegmente N20 und N30 mcCircPathchoiceCounterClockwise ausgewählt werden.

MC_MoveCircularAbsolutePreparation 10:
VAR
    Buffer                                  : ARRAY[1..4096] OF BYTE;
    Path                                    : MC_PATH_DATA_REF (ADR(buffer), SIZEOF(buffer));
    fbMoveLinPrep                           : MC_MoveLinearAbsolutePreparation;
    fbMoveCircPrep                          : MC_MoveCircularAbsolutePreparation;

    aTargetPos                              : ARRAY[1..cAxesCount] OF MC_LREAL;
    aCircPos                                : ARRAY[1..cAxesCount] OF MC_LREAL;
    aAuxPoint                               : ARRAY[1..3] OF MC_LREAL;
    aTransitionParam                        : ARRAY[1..2] OF MC_LREAL;
END_VAR
VAR CONSTANT
    cAxesCount                              : UINT:=3;
END_VAR
    fbMoveLinPrep.Position                  := ADR(aTargetPos);
    fbMoveLinPrep.PositionCount             := cAxesCount;
    fbMoveLinPrep.TransitionParameter       := ADR(aTransitionParam);
    fbMoveLinPrep.TransitionParameterCount  := 2;
    fbMoveLinPrep.BufferMode                := mcBuffered;
    fbMoveLinPrep.TransitionMode            := mcTransModeNone;

    fbMoveCircPrep.EndPoint                 := ADR(aTargetPos);
    fbMoveCircPrep.EndPointCount            := cAxesCount;
    fbMoveCircPrep.AuxPoint                 := ADR(aAuxPoint);
    fbMoveCircPrep.AuxPointCount            := 3;
    fbMoveCircPrep.CircMode                 := mcCircModeCenter;
    fbMoveCircPrep.TransitionParameter      := ADR(aTransitionParam);
    fbMoveCircPrep.TransitionParameterCount := 2;
    fbMoveCircPrep.BufferMode               := mcBuffered;
    fbMoveCircPrep.TransitionMode           := mcTransModeNone;

    aTargetPos[1]                           := 200;
    aTargetPos[2]                           := 0;
    aTargetPos[3]                           := 0;
    aTransitionParam[1]                     := 0;
    aTransitionParam[2]                     := 0;
    fbMoveLinPrep(PathData:= path, Velocity:= 3000, InvokeId:= 10);

    aTargetPos[1]                           := 300;
    aTargetPos[2]                           := -100;
    aTargetPos[3]                           := 0;
    aAuxPoint[1]                            := 200;
    aAuxPoint[2]                            := -100;
    aAuxPoint[3]                            := 0;
    aTransitionParam[1]                     := 0;
    aTransitionParam[2]                     := 0;
    fbMoveCircPrep(PathData:= path, PathChoice:= mcCircPathchoiceCounterClockwise, Velocity:= 1000, InvokeId:= 20);

    aTargetPos[1]                           := 400;
    aTargetPos[2]                           := -200;
    aTargetPos[3]                           := 0;
    aAuxPoint[1]                            := 400;
    aAuxPoint[2]                            := -100;
    aAuxPoint[3]                            := 0;
    aTransitionParam[1]                     := 0;
    aTransitionParam[2]                     := 0;
    fbMoveCircPrep(PathData:= path, PathChoice:= mcCircPathchoiceCounterClockwise, Velocity:= 1000, InvokeId:= 30);

    aTargetPos[1]                           := 600;
    aTargetPos[2]                           := -200;
    aTargetPos[3]                           := 100;
    aTransitionParam[1]                     := 0;
    aTransitionParam[2]                     := 0;
    fbMoveLinPrep(PathData:= path, Velocity:= 3000, InvokeId:= 40);

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende
SPS-Bibliotheken

TwinCAT V3.1.4018.26

TF5400 Advanced Motion Pack V3.1.2.47

PC oder
CX (x64)

Tc3_McCoordinatedMotion, Tc2_MC2