FB_CalcTrafo

FB_CalcTrafo 1:

Der Funktionsbaustein FB_CalcTrafo berechnet die Vorwärts- oder Rückwärtstransformation, selbst dann, wenn keine Kinematikgruppe mit FB_ConfigKinGroup erstellt wurde.

VAR_INPUT

VAR_INPUT
    bExecute              : BOOL;
    bForward              : BOOL;
    oidTrafo              : UDINT;
END_VAR

bExecute: Der Befehl wird durch eine steigende Flanke an diesem Eingang ausgelöst.

bForward: Bestimmt, ob die Vorwärts- oder Rückwärtstransformation berechnet wird.

oidTrafo: Objekt-ID des zu berechnenden kinematischen Transformationsobjekts. Siehe Beispiel unten.

VAR_IN_OUT

VAR_IN_OUT
    stAxesPosIn           : ARRAY[1..8] OF LREAL;
    stAxesPosOut          : ARRAY[1..8] OF LREAL;
END_VAR

stAxesPosIn: Array, das die Eingangspositionen der Transformation enthält. Bei der Berechnung einer Vorwärtstransformation stellen diese die Gelenkpositionen dar. Bei der Berechnung einer Rückwärtstransformation stellen diese die kartesischen Achspositionen dar.

stAxesPosOut: Array, das die Ergebnispositionen der Transformation enthält. Im Falle der Berechnung einer Vorwärtstransformation stellen diese die kartesischen Achspositionen dar. Im Falle der Berechnung einer Rückwärtstransformation stellen diese die Gelenkpositionen dar.

VAR_OUTPUT

VAR_OUTPUT
    bBusy                 : BOOL;
    bDone                 : BOOL;
    bError                : BOOL;
    nErrorId              : UDINT;
END_VAR

bBusy: Der Ausgang wird TRUE, wenn der Befehl mit bExecute gestartet ist und bleibt es dann so lange, wie der Funktionsbaustein den Befehl ausführt. Während bBusy gleich TRUE ist, wird an den Eingängen kein neuer Befehl angenommen. Wenn bBusy wieder FALSE wird, ist der Funktionsbaustein bereit für einen neuen Befehl. Gleichzeitig wird einer der Ausgänge bDone oder bError gesetzt.

bDone: Der Ausgang wird TRUE, wenn der Befehl erfolgreich ausgeführt wurde.

bError: Der Ausgang bError wird auf TRUE gesetzt, wenn bei der Ausführung des Befehls ein Fehler aufgetreten ist.

nErrorId: Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls. Der Fehlercode kann in der ADS Fehlerdokumentation oder in der NC Fehlerdokumentation (Fehlercodes ab 0x4000) nachgeschlagen werden.

Beispiel

Die SCARA-Transformation hat 4 ACS (Gelenk) Achsen und 4 MCS (kartesische) Achsen.

SCARA-Transformation - Beispielkonfiguration

FB_CalcTrafo 2:

SCARA-Transformation - Beispiel-Objekt-ID

FB_CalcTrafo 3:

VAR
    fbFB_CalcTrafo     : FB_CalcTrafo;
    stAxesPosIn        : ARRAY[1..8] OF LREAL;
    stAxesPosOut       : ARRAY[1..8] OF LREAL;
    bUserExecute       : BOOL;
    bUserCalcFwdTrafo  : BOOL;
END_VAR
fbFB_CalcTrafo(
    bExecute := bUserExecute,
    bForward := bUserCalcFwdTrafo,
    oidTrafo := 16#01010072,
    stAxesPosIn := stAxesPosIn,
    stAxesPosOut := stAxesPosOut,
    bBusy=> ,
    bDone=> ,
    bError=> ,
    nErrorId=> );