FB_KinConfigGroup

FB_KinConfigGroup 1:

Der Funktionsbaustein FB_KinConfigGroup konfiguriert Achsen entsprechend der kinematischen Transformation. Dies 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 diese in der Kinematikgruppe von stKinRefIn.

VAR_INPUT

VAR_INPUT
    bExecute              : BOOL;
    bCartesianMode        : BOOL;
END_VAR

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

bCartesianMode: 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.

VAR_IN_OUT

VAR_IN_OUT
    stAxesList            : ST_KinAxes;
    stKinRefIn            : NCTOPLC_NCICHANNEL_REF;
END_VAR

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

stKinRefIn: Bestimmt die Kinematikgruppe der Konfiguration.

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

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 2:
FB_KinConfigGroup 3:

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.