FB_SoEReadDiagNumberList

FB_SoEReadDiagNumberList 1:

Mit dem Funktionsbaustein FB_SoEReadDiagNumberList kann eine Historie der Diagnosenummern als Liste (S-0-0375) ausgelesen werden.  

VAR_INPUT

VAR_INPUT
    NetId       : T_AmsNetId := '';
    Execute     : BOOL;
    Timeout     : TIME := DEFAULT_ADS_TIMEOUT;
    pDiagNumber : POINTER TO ST_SoE_DiagNumList;
    Size        : UDINT;
END_VAR

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

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

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

pDiagNumber: Zeiger auf Liste der letzten max. 30 Fehlernummern. Die Liste besteht aus aktueller und maximaler Anzahl von Bytes in der Liste, sowie den 30 Listeneinträgen

Size: Größe der Liste in Bytes (als Sizeof())

VAR_IN_OUT

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

Axis: Achsstruktur (siehe TcMc2.lib).

VAR_OUTPUT

VAR_OUTPUT
    Busy        : BOOL;
    Error       : BOOL;
    AdsErrId    : UINT;
    SercosErrId : UINT;
    Attribute   : DWORD;
END_VAR

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

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

AdsErrId: Liefert bei einem gesetzten Error-Ausgang den ADS-Fehlercode des zuletzt ausgeführten Befehles

SercosErrId: Liefert bei einem gesetzten Error-Ausgang den Sercos-Fehler des zuletzt ausgeführten Befehles

Attribute: Liefert das Attribut des Sercos-Parameters.

 

Beispiel

fbDiagNumberList     :
FB_SoEReadDiagNumberList;
DiagNumberList       : BOOL;
stDiagNumberList     :ST_SoE_DiagNumList;

(* NcAxis *)
Axis            : AXIS_REF;
IF DiagNumberList  THEN
    fbDiagNumberList(
       Axis     := Axis,
        Execute := TRUE,
        Timeout := DEFAULT_ADS_TIMEOUT,
        pDiagNumber:= ADR(stDiagNumberList),
        Size :=
SIZEOF(stDiagNumberList),
    );
    IF NOT fbDiagNumberList.Busy THEN
        fbDiagNumberList(Axis := Axis, Execute := FALSE);
        DiagNumberList := FALSE;
    END_IF
END_IF