FB_SoERead
Mit dem Funktionsbaustein FB_SoERead kann ein Parameter eingelesen werden.
VAR_INPUT
VAR_INPUT
NetId : T_AmsNetId := '';
Idn : WORD;
Element : BYTE;
pDstBuf : DWORD;
BufLen : UDINT;
Execute : BOOL;
Timeout : TIME := DEFAULT_ADS_TIMEOUT;
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 + 33" für S-0-0033
Element: 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.
BufLen: SIZEOF() der Variablen, in die der Wert gelesen werden soll.
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.
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 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
Attribute: Liefert das Attribut des Sercos-Parameters.
Beispiel
fbRead : FB_SoERead;
Read : BOOL;
Idn : WORD;
ReadValue : UINT;
(* NcAxis *)
Axis : AXIS_REF;
IF Read THEN
Idn := S_0_IDN + 33;
fbRead(
Axis := Axis,
Idn := Idn,
Element := 16#40,
pDstBuf := ADR(ReadValue),
BufLen := SIZEOF(ReadValue),
Execute := TRUE,
Timeout := DEFAULT_ADS_TIMEOUT,
);
IF NOT fbRead.Busy THEN
fbRead(Axis := Axis, Execute := FALSE);
Read := FALSE;
END_IF
END_IF