FB_SoEReadClassXDiag

FB_SoEReadClassXDiag 1:

Mit dem Funktionsbaustein FB_SoEReadClassXDiag kann die aktuelle Class 1 Diagnose(S-0-0011) ... Class 3 Diagnose (S-0-0013) als WORD ausgelesen werden. Für die Auswertung der Class 1 Diagnose als Struktur ST_AX5000_C1D gibt es eine Konvertierungsfunktion F_ConvWordToSTAX5000C1D. Siehe Dokumentation TcDrive.lib.

VAR_INPUT

VAR_INPUT
    sNetId     : T_AmsNetId := ''; 
    bExecute   : BOOL; 
    iDiagClass : USINT:= 1; (* 1: C1D (S-0-0011) is default, 2: C2D (S-0-0012), 3: C3D (S-0-0013) *)
    tTimeout   : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR

sNetId: Ist ein String, der die AMS-Netzwerkkennung des PCs enthält.

bExecute: Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert.

iDiagClass: Gibt an, welche Diagnose gelesen werden soll. Die Diagnose Parameter können sich von Hersteller zu Hersteller unterscheiden. Nicht immer sind alle Diagnose Parameter (C1D ... C3D) oder alle Bits darin implementiert.
1: Fehler:               Class 1 Diag (S-0-0011)
2: Warnungen:     Class 2 Diag (S-0-0012)
3: Informationen: Class 3 Diag (S-0-0013)

tTimeout: Maximale Zeit, die bei der Ausführung des Funktionsbausteins nicht überschritten werden darf.

VAR_IN_OUT

VAR_IN_OUT
    Axis : NCTOPLC_AXLESTRUCT;(* reference to NC axis *)
END_VAR

Axis: Achsstruktur.

VAR_OUTPUT

VAR_OUTPUT
    bBusy         : BOOL;
    bError        : BOOL;
    iAdsErrId     : UINT;
    iSercosErrId  : UINT;
    wClassXDiag   : WORD;
    dwAttribute   : DWORD;
END_VAR

bBusy: Dieser Ausgang wird bei der Aktivierung des Funktionsbausteins gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

bError: Dieser Ausgang wird, nachdem der bBusy-Ausgang zurückgesetzt wurde, gesetzt, sollte ein Fehler bei der Übertragung des Kommandos erfolgen.

iAdsErrId: Liefert bei gesetztem bError-Ausgang den ADS-Fehlercode des zuletzt ausgeführten Befehles

iSercosErrId: Liefert bei gesetztem bError-Ausgang den Sercos-Fehler des zuletzt ausgeführten Befehles

wClassXDiag: Liefert die aktuelle Class X Diagnose.

dwAttribute: Liefert das Attribut des Sercos-Parameters.

Beispiel

fbClassXDiag : FB_SoEReadClassXDiag;
bClassXDiag  : BOOL;
iDiagClass   : USINT := 1;
wClass1Diag  : WORD;
stAX5000C1D  : ST_AX5000_C1D;
wClass2Diag  : WORD;

(* NcAxis *)
stNcToPlc AT %I* : NCTOPLC_AXLESTRUCT;
IF bClassXDiag THEN
    fbClassXDiag(
        Axis       := stNcToPlc,
        bExecute   := TRUE,
        iDiagClass := iDiagClass,
        tTimeout   := DEFAULT_ADS_TIMEOUT
    );
    IF NOT fbClassXDiag.bBusy THEN
        fbClassXDiag(Axis := stNcToPlc, bExecute := FALSE);
        bClassXDiag := FALSE;

        CASE fbClassXDiag.iDiagClass OF
        1:
           wClass1Diag := fbClassXDiag.wClassXDiag;
           stAX5000C1D := F_ConvWordToSTAX5000C1D(wClass1Diag);

        2:
           wClass2Diag := fbClassXDiag.wClassXDiag;
        END_CASE
    END_IF
END_IF