FB_SoEWrite

FB_SoEWrite 1:

Mit dem Funktionsbaustein FB_SoEWrite kann ein Parameter geschrieben werden.  

VAR_INPUT

VAR_INPUT
    sNetId    : T_AmsNetId := '';
    nIdn      : WORD;
    nElement  : BYTE;
    pSrcBuf   : 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 + 47" für S-0-0047

nElement: Gibt an, auf welchen Teil des Parameters zugegriffen werden soll, z.B. 16#40 ist der Wert (Value) des Parameters. Meist kann nur auf den Wert schreibend zugegriffen werden, andere Bestandteile des Parameters sind schreibgeschützt.

    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;

pSrcBuf: ADR() der Variablen, die den zu schreibenden Wert enthält.

cbBufLen: SIZEOF() der Variablen, die den zu schreibenden Wert enthält

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.

sPassword: enthält das Passwort als Sercos-String. Wird z.Z. noch nicht verwendet. Das Passwort muss mit FB_SoEWritePassword geschrieben werden.

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

Beispiel

fbWrite : FB_SoEWrite;
bWrite  : BOOL;
iWriteValue : UINT;
sPassword   : ST_SoE_String;

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