FB_SoEWrite

FB_SoEWrite 1:

Mit dem Funktionsbaustein FB_SoEWrite kann ein Parameter geschrieben werden.  

VAR_INPUT

VAR_INPUT
    NetId       : T_AmsNetId := '';
    Idn         : WORD;
    Element     : BYTE;
    pSrcBuf     : DWORD;
    BufLen      : UDINT;
    Execute     : BOOL;
    Timeout     : TIME := DEFAULT_ADS_TIMEOUT;
    Password    : ST_SoE_String;
END_VAR

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

Idn: Parameternummer, auf das sich das FB_SoERead bezieht, "S_0_IDN + 47" für S-0-0047

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

BufLen: SIZEOF() der Variablen, die den zu schreibenden Wert 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.

Password: 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 : 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;
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 gesetztem Error-Ausgang den ADS-Fehlercode des zuletzt ausgeführten Befehles

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

Beispiel

fbWrite : FB_SoEWrite;
Idn     : WORD;
Write   : BOOL;
WriteValue : UINT;
Password   : ST_SoE_String;

(* NcAxis *)
Axis            : AXIS_REF;
IF Write THEN
    Idn := S_0_IDN + 33;
    fbWrite(
       Axis     := Axis,
       Idn      := Idn,
        Element  := 16#40,
        pSrcBuf  := ADR(WriteValue),
        BufLen   := SIZEOF(WriteValue),
        Password := Password,
        Execute  := TRUE,
        Timeout  := DEFAULT_ADS_TIMEOUT,
    );
    IF NOT fbWrite.Busy THEN
        fbWrite(Axis := Axis, Execute := FALSE);
        Write := FALSE;
    END_IF
END_IF