FB_SoERead

FB_SoERead 1:

Mit dem Funktionsbaustein FB_SoERead kann ein Parameter eingelesen werden.  

VAR_INPUT

VAR_INPUT
    sNetId     : T_AmsNetId := '';
    nIdn       : WORD;
    nElement   : BYTE; 
    pDstBuf    : DWORD;
    cbBufLen   : UDINT;
    bExecute   : BOOL;
    tTimeout   : TIME := DEFAULT_ADS_TIMEOUT;
    sPassword  : ST_SoE_String;
END_VAR

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

nIdn: Parameternummer, auf das sich das FB_SoERead bezieht, "S_0_IDN + 33" für S-0-0033

nElement: Gibt an, auf welchen Teil des Parameters zugegriffen werden soll, z.B. 16#40 ist der Wert (Value) des Parameters

    EC_SOE_ELEMENT_DATASTATE :BYTE :=16#01;
    EC_SOE_ELEMENT_NAME      :BYTE :=16#02;
    EC_SOE_ELEMENT_ATTRIBUTE :BYTE :=16#04;
    EC_SOE_ELEMENT_UNIT      :BYTE :=16#08;
    EC_SOE_ELEMENT_MIN       :BYTE :=16#10;
    EC_SOE_ELEMENT_MAX       :BYTE :=16#20;
    EC_SOE_ELEMENT_VALUE     :BYTE :=16#40;
    EC_SOE_ELEMENT_DEFAULT   :BYTE :=16#80;

pDstBuf: ADR() der Variablen, in die der Wert gelesen werden soll.

cbBufLen: SIZEOF() der Variablen, in die der Wert gelesen werden soll.

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

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;
    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

dwAttribute: Liefert das Attribut des Sercos-Parameters.

Beispiel

fbRead : FB_SoERead;
bRead  : BOOL;
iReadValue : UINT;

(* NcAxis *)
stNcToPlc AT %I* : NCTOPLC_AXLESTRUCT;
IF bRead THEN
    nIdn := S_0_IDN + 33;
    fbRead(
       Axis     := stNcToPlc,
       nIdn     := nIdn,
        nElement := 16#40,
        pDstBuf  := ADR(iReadValue),
        cbBufLen := SIZEOF(iReadValue),
        bExecute := TRUE,
        tTimeout := DEFAULT_ADS_TIMEOUT,
    );
    IF NOT fbRead.bBusy THEN
        fbRead(Axis := stNcToPlc, bExecute := FALSE);
        bRead := FALSE;
    END_IF
END_IF