FB_EcPhysicalReadCmd
Mit dem Funktionsbaustein FB_EcPhysicalReadCmd kann ein EtherCAT Lese-Kommando(FPRD, APRD, BRD) an einen bestimmten EtherCAT-Slave oder an alle EtherCAT-Slaves gesendet werden. Hiermit kann die Sps Register oder DPRAM des EtherCAT Slave Controllers auslesen.
VAR_INPUT
VAR_INPUT
sNetId : T_AmsNetId;
adp : UINT;
ado : UINT;
len : UDINT;
eType : E_EcAdressingType := eAdressingType_Fixed;
pDstBuf : DWORD;
bExecute : BOOL;
tTimeout : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR
sNetId: Ist ein String, der die AMS-Netzwerkkennung des EtherCAT Master Gerätes enthält.
adp: Dieser Wert bestimmt, welcher EtherCAT-Slave mit diesem Kommando adressiert werden soll. Die Bedeutung dieses Wertes hängt von der mit eType ausgewählten Adressierungsart ab:
eType | Beschreibung |
---|---|
eAdressingType_Fixed | Der Slave wird an Hand seiner konfigurierten EtherCAT-Adresse adressiert. Diese EtherCAT-Adressen können mit Hilfe des Bausteins FB_EcGetAllSlaveAddr ausgelesen werden. |
eAdressingType_AutoInc | Der Slave wird an Hand seiner Position im Ring adressiert. Der erste Teilnehmer hat die Adresse 0(adp=0) und für alle darauf folgenden Slaves wird adp um eins dekrementiert:
|
eAdressingType_BroadCAST | Alle Slaves werden von diesem Kommando adressiert. Adp kann auf 0 gesetzt werden. |
ado: Physikalischer Speicher(DPRAM) oder Register das ausgelesen werden soll.
len: Anzahl der zu lesenden Bytes.
eType: Abhängig des Wertes von eType werden verschiedene EhterCAT-Kommandos geschickt:
eType | Kommando |
---|---|
eAdressingType_Fixed | Configured Address Physical Read ( FPRD) |
eAdressingType_AutoInc | Auto Increment Physical Read ( APRD) |
eAdressingType_BroadCAST | Broadcast Read ( BRD) |
Die einzelnen Kommandos unterscheiden sich in der Adressierungsart (siehe adp).
pDstBuf: Die Adresse (Pointer) auf den Empfangspuffer.
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_OUTPUT
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
wkc : 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.
nErrId: Liefert bei einem gesetzten bError-Ausgang den ADS-Fehlercode des zuletzt ausgeführten Befehles
wkc: Der Working Counter wird von jedem EtherCAT-Slave der dieses Kommando erfolgreich bearbeitet hat, um eins inkrementiert. Wenn nur ein EtherCAT-Slave von diesem Kommando adressiert worden ist, sollte dieser Wert somit 1 entsprechen.
Beispiel für eine Implementierung in ST:
PROGRAM TEST_PhysicalReadCmd
VAR
fbReadCmd : FB_EcPhysicalReadCmd;
bExecute : BOOL;
value : UINT;
adp : UINT:=16#3E9;
ado : UINT:=16#1100;
eType : E_EcAdressingType := eAdressingType_Fixed;
sNetId : T_AmsNetId:='192.168.1.5.3.1';
wkc : UINT;
bError : BOOL;
nErrId : UDINT;
END_VAR
fbReadCmd (sNetId:=sNetID, ado:=ado, adp:=adp, eType:=eType, LEN := SIZEOF(value), pDstBuf:=ADR(value), bExecute:=bExecute);
wkc := fbReadCmd.wkc;
bError:=fbReadCmd.bError;
nErrId:=fbReadCmd.nErrId;
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS Bibliotheken |
---|---|---|
TwinCAT v2.10.0 oder höher | PC or CX (x86) | TcEtherCAT.Lib |
TwinCAT v2.10.0 Build >= 1301 oder höher | CX (ARM) |