FB_KinConfigGroup

FB_KinConfigGroup 1:

Mit dem Funktionsbaustein FB_KinConfigGroup werden Achsen entsprechend der kinematischen Transformation konfiguriert. Diese sind Achsen für das ACS (Gelenk) und das MCS (kartesisch). Der Funktionsbaustein nimmt die in der stAxesList definierten ACS- und MCS-Achsen und konfiguriert sie in der Kinematikgruppe von stKinRefIn.

FB_KinConfigGroup 2: Eingänge

VAR_INPUT
    bExecute              : BOOL;
    bCartesianMode        : BOOL;
END_VAR

Name

Typ

Beschreibung

bExecute

BOOL

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

bCartesianMode

BOOL

Wenn FALSE, dann können die ACS-Achsen (Gelenk) direkt bewegt werden. Wenn TRUE, dann wird die in den MCS-Achsen (kartesisch) beschriebene Bewegung in eine Bewegung der ACS-Achsen (Gelenk) transformiert. Die ACS-Achsen können nicht direkt bewegt werden.

FB_KinConfigGroup 3: Ein-/Ausgänge

VAR_IN_OUT
    stAxesList            : ST_KinAxes;
    stKinRefIn            : NCTOPLC_NCICHANNEL_REF;
END_VAR

Name

Typ

Beschreibung

stAxesList

ST_KinAxes

Bestimmt die ACS- und MCS-Achsen, die in der Konfiguration enthalten sind. Siehe ST_KinAxes.

stKinRefIn

NCTOPLC_NCICHANNEL_REF

Bestimmt die Kinematikgruppe der Konfiguration.

FB_KinConfigGroup 4: Ausgänge

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

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

VAR
    io_X                  : AXIS_REF;
    io_Y                  : AXIS_REF;
    io_Z                  : AXIS_REF;
    io_M1                 : AXIS_REF;
    io_M2                 : AXIS_REF;
    io_M3                 : AXIS_REF;
    in_stKinToPlc AT %I*  : NCTOPLC_NCICHANNEL_REF;
    fbConfigKinGroup      : FB_KinConfigGroup;
    stAxesConfig          : ST_KinAxes;
    bAllAxesReady         : BOOL;
    bExecuteConfigKinGroup: BOOL;
    bUserConfigKinGroup   : BOOL;
    bUserCartesianMode    : BOOL := TRUE;
    (*true: cartesian mode - false: direct mode (without transformation) *)
END_VAR
(* read the IDs from the cyclic axis interface so the axes can mapped later to the kinematic group *)
stAxesConfig.nAxisIdsAcs[1] := io_M1.NcToPlc.AxisId;
stAxesConfig.nAxisIdsAcs[2] := io_M2.NcToPlc.AxisId;
stAxesConfig.nAxisIdsAcs[3] := io_M3.NcToPlc.AxisId;
stAxesConfig.nAxisIdsMcs[1] := io_X.NcToPlc.AxisId;
stAxesConfig.nAxisIdsMcs[2] := io_Y.NcToPlc.AxisId;
stAxesConfig.nAxisIdsMcs[3] := io_Z.NcToPlc.AxisId;

IF bAllAxesReady AND bUserConfigKinGroup THEN
    bExecuteConfigKinGroup := TRUE;
ELSE
    bExecuteConfigKinGroup := FALSE;
END_IF

fbConfigKinGroup(
    bExecute       := bExecuteConfigKinGroup ,
    bCartesianMode := bUserCartesianMode ,
    stAxesList     := stAxesConfig,
    stKinRefIn     := in_stKinToPlc );

Zustand der Kinematikgruppe

FB_KinConfigGroup 5:
FB_KinConfigGroup 6:

Konfiguration freigeben

Die ACS-Achsen müssen durch MC_Power freigegeben sein, damit der Zustand den Wert KinStatus_Ready erreichen kann. Wenn die ACS-Achsen nicht freigegeben sind, geben Sie die Achsen frei und rufen dann FB_KinConfigGroup oder FB_KinResetGroup auf.