FB_KinCalcMultiTrafo

FB_KinCalcMultiTrafo 1:

Der Funktionsbaustein FB_KinCalcMultiTrafo berechnet für mehrere Positionen die Vorwärts- oder Rückwärtstransformation, selbst dann, wenn keine Kinematikgruppe mit FB_KinConfigGroup erstellt wurde.

Alternativ kann der Funktionsbaustein FB_KinCalcTrafo verwendet werden, um die kinematischen Transformationen einzeln zu berechnen.

FB_KinCalcMultiTrafo 2: Eingänge

Name

Typ

Beschreibung

bExecute

BOOL

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

bForward

BOOL

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

oidTrafo

UDINT

Objekt-ID des zu berechnenden kinematischen Transformationsobjekts.

pDataIn

POINTER TO BYTE

Zeiger auf die Eingangsdaten, bestehend aus einer Instanz von ST_KinMultiTrafoHeader und einem Array mit Eingangspositionen. Bei der Berechnung einer Vorwärtstransformation stellen diese die Gelenkpositionen dar. Bei der Berechnung einer Rückwärtstransformation stellen diese die kartesischen Achspositionen dar.

nSizeIn

UDINT

Größe der Eingangsdaten auf die pDataIn zeigt

pDataOut

POINTER TO BYTE

Zeiger auf die Ausgangsdaten.

nSizeOut

UDINT

Größe der Ausgangsdaten auf die pDataOut zeigt.

FB_KinCalcMultiTrafo 3: Ausgänge

Name

Typ

Beschreibung

bBusy

BOOL

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

BOOL

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

bError

BOOL

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

nErrorId

UDINT

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

ST_KinCalcMultiTrafoIn

TYPE ST_KinCalcMultiTrafoIn :
STRUCT
hdr  : ST_KinMultiTrafoHeader;
fPos : ARRAY[1..2] OF ARRAY[1..4] OF LREAL;
END_STRUCT
END_TYPE

ST_KinCalcMultiTrafoOut

TYPE ST_KinCalcMultiTrafoOut :
STRUCT
    fPos      : ARRAY[1..2] OF ARRAY[1..4] OF LREAL;
    fMetaInfo : ARRAY[1..2] OF U_KinMetaInfo;
END_STRUCT
END_TYPE

MAIN

PROGRAM MAIN
VAR
    {attribute 'TcInitSymbol'} oidKinematic: OTCID;
    nState: UDINT := 0;

    fbKinCalcMultiTrafo   : FB_KinCalcMultiTrafo;
    stKinCalcMultiIn      : ST_KinCalcMultiTrafoIn;
    stKinCalcMultiOut     : ST_KinCalcMultiTrafoOut;
END_VAR
CASE nState OF
0:
    // Header for Multi Trafo
    stKinCalcMultiIn.hdr.nColumnsIn := 4;
    stKinCalcMultiIn.hdr.nColumnsOut := 4;
    stKinCalcMultiIn.hdr.nLines := 2;
    stKinCalcMultiIn.hdr.uMetaInfo.eScara := E_KinMetaInfoScara.scaraLeftArm;
    stKinCalcMultiIn.hdr.bGetMetaInfo := TRUE;

    // Positions
    stKinCalcMultiIn[1][1]:=0;
    stKinCalcMultiIn[1][2]:=90;
    stKinCalcMultiIn[1][3]:=0;
    stKinCalcMultiIn[1][4]:=0;

    stKinCalcMultiIn[2][1]:=0;
    stKinCalcMultiIn[2][2]:=-90;
    stKinCalcMultiIn[2][3]:=0;
    stKinCalcMultiIn[2][4]:=0;

    nState := nState + 10;

10:
    fbKinCalcMultiTrafo( bExecute := TRUE,
                         bForward := TRUE,
                         oidTrafo := oidKinematic,
                         pDataIn  := ADR(stKinCalcMultiIn),
                         nSizeIn  := SIZEOF(stKinCalcMultiIn),
                         pDataOut := ADR(stKinCalcMultiOut),
                         nSizeOut := SIZEOF(stKinCalcMultiOut) );

    IF NOT fbKinCalcMultiTrafo.bBusy THEN
        fbKinCalcMultiTrafo(bExecute:= FALSE, bForward:= TRUE, oidTrafo:= oidKinematic,
                            pDataIn:=ADR(stKinCalcMultiIn), nSizeIn:= SIZEOF(stKinCalcMultiIn),
                            pDataOut:=ADR(stKinCalcMultiOut), nSizeOut:= SIZEOF(stKinCalcMultiOut) );

        nState := nState + 10;
    END_IF
END_CASE

Systemvoraussetzungen

Entwicklungsumgebung

Zielsystem

Einzubindende SPS-Bibliotheken

Advanced Motion Pack V3.1.10.51

PC or CX (x64)

Tc2_NcKinematicTransformation