MC_MoveBlendingPreparation
Der Funktionsbaustein MC_MoveBlendingPreparation fügt der Tabelle der Bahn-Segmente (Struktur PathData) einen Verschleifungsübergang zwischen zwei Bewegungen hinzu.
TF5410 | TF5420 | |
|---|---|---|
| MC Group with Pick-and-Place | MC Group Coordinated Motion |
|
|
|
Eingänge
VAR_INPUT
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 LREAL;
TransitionParameterCount : UDINT;
InvokeId : UDINT;
DynamicConstraints : REFERENCE TO IPlcDynamicConstraint := 0;
END_VARName | Typ | Beschreibung |
|---|---|---|
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.
|
Deceleration | MC_LREAL | Maximale Bahnverzögerung für das programmierte Segment.
|
Jerk | MC_LREAL | Bahnruck für das programmierte Segment.
|
BufferMode | Legt fest, wie aufeinanderfolgende Fahraufträge abgearbeitet werden sollen. | |
Transition Mode | Definiert den Blending-Modus. | |
TransitionParameter | POINTER TO LREAL | Zeiger auf Array [1..TransitionParameterCount] der Blending-Parameter. Transitionsparameter definieren das Blending von der letzten programmierten Position. |
TransitionParameterCount | UDINT | Anzahl der Blending-Parameter. |
InvokeId | UDINT | Segment-ID für Analysezwecke. |
DynamicConstraints | REFERENCE TO IPlcDynamicConstraint | Optionaler Eingang um die erlaubten Werte für Geschwindigkeit, Beschleunigung, Verzögerung oder Ruck während der Bewegung weiter zu beschränken.
|
/
Ein-/Ausgänge
VAR_IN_OUT
PathData : MC_PATH_DATA_REF;
END_VARName | 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). |
Ausgänge
VAR_OUTPUT
Error : BOOL;
ErrorId : UDINT;
END_VARName | 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
Dieses Beispiel zeigt zwei Varianten der Blendingdefinition zwischen zwei Linear-Bewegungen:
Erstes Blending (N10)
Das Blending-Segment trägt die InvokeId der ersten Linear-Bewegung (N10). Es werden die Transitionparameter, welche des Blending definieren, der nachfolgenden Linear-Bewegung (N20) verwendet.
Zweites Blending (N25, MC_MoveBlendingPreparation)
Das Blending wird über MC_MoveBlendingPreparation definiert. Es werden entsprechend die Transitionparameter des MC_MoveBlendingPreparation-Funktionsbaustein verwendet und das Blendingsegement hat so eine eigenen InvokeId.
VAR
buffer : ARRAY[1..4096] OF BYTE;
path : MC_PATH_DATA_REF(ADR(buffer), SIZEOF(buffer));
aTargetPos : ARRAY[1..4] OF MC_LREAL;
aTransitionParam : ARRAY[1..2] OF MC_LREAL;
fbMovePath : MC_MovePath;
fbMoveLinePrep : MC_MoveLinearAbsolutePreparation;
fbMoveBlendingPrep : MC_MoveBlendingPreparation;
END_VARpath.ClearPath();
fbMoveLinePrep.Position := ADR(aTargetPos); //pointer to position array
fbMoveLinePrep.PositionCount := 4; //number of axes in group
fbMoveLinePrep.TransitionParameterCount := 2;
fbMoveLinePrep.BufferMode := mcBuffered;
fbMoveLinePrep.TransitionMode := mcTransModeNone;
fbMoveLinePrep.TransitionParameter := ADR(aTransitionParam);
fbMoveLinePrep.Acceleration := MC_DEFAULT;
fbMoveLinePerep.Deceleration := MC_DEFAULT;
fbMoveLinePrep.Jerk := MC_DEFAULT;
fbMoveBlendingPrep.Velocity := fVelo;
fbMoveBlendingPrep.Acceleration := MC_DEFAULT;
fbMoveBlendingPrep.Deceleration := MC_DEFAULT;
fbMoveBlendingPrep.Jerk := MC_DEFAULT;
fbMoveBlendingPrep.BufferMode := mcBlendingPrevious;
fbMoveBlendingPrep.TransitionMode := mcTransModeCornerDistanceAdvanced;
fbMoveBlendingPrep.TransitionParameter := ADR(aTransitionParam);
fbMoveBlendingPrep.TransitionParameterCount := 2;
aTargetPos[1] := 0;
aTargetPos[2] := 100;
aTransitionParam[1] := 0;
aTransitionParam[2] := 0;
fbMoveLinePrep(PathData := path, InvokeId := 10);
aTargetPos[1] := 200;
aTargetPos[2] := 100;
aTransitionParam[1] := 15;
aTransitionParam[2] := 25;
fbMoveLinePrep(PathData := path, InvokeId := 20);
aTransitionParam[1] := 25;
aTransitionParam[2] := 15;
fbMoveBlendingPrep(PathData := path, InvokeId := 25);
aTargetPos[1] := 200;
aTargetPos[2] := 0;
aTransitionParam[1] := 0;
aTransitionParam[2] := 0;
fbMoveLinePrep(PathData := path, InvokeId := 30);
fbMovePath(AxesGroup := stGroupRef, PathData := path, Execute := TRUE);Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende |
|---|---|---|
TF5400 Advanced Motion Pack V3.4.45 | PC oder CX (x64) | Tc3_McCoordinatedMotion, Tc2_MC2 |

