FB_EcPhysicalWriteCmd
Mit dem Funktionsbaustein FB_EcPhysicalWriteCmd kann ein EtherCAT Write-Kommando(FPWR, APWR, BWR) an einen bestimmten EtherCAT-Slave oder an alle EtherCAT-Slaves gesendet werden. Hiermit kann ein Sps Register oder DPRAM des EtherCAT Slave Controllers beschrieben werden.
VAR_INPUT
VAR_INPUT
sNetId : T_AmsNetId;
adp : UINT;
ado : UINT;
len : UDINT;
eType : E_EcAdressingType := eAdressingType_Fixed;
pSrcBuf : 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 sollte auf 0 gesetzt werden. |
ado: Physikalischer Speicher(DPRAM) oder Register das ausgelesen werden soll.
len: Anzahl der zu schreibenden Bytes.
eType: Abhängig des Wertes von eType werden verschiedene EhterCAT-Kommandos geschickt:
eType | Kommando |
---|---|
eAdressingType_Fixed | Configured Address Physical Write ( FPWR) |
eAdressingType_AutoInc | Auto Increment Physical Write ( APWR) |
eAdressingType_BroadCAST | Broadcast Write ( BWR) |
Die einzelnen Kommandos unterscheiden sich in der Adressierungsart (siehe adp).
pSrcBuf: Die Adresse (Pointer) auf den Sendepuffer.
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_PhysicalWriteCmd
VAR
fbWriteCmd : FB_EcPhysicalWriteCmd;
bExecute : BOOL;
value : UINT :=16#5555;
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
fbWriteCmd (sNetId:=sNetID, ado:=ado, adp:=adp, eType:=eType, LEN := SIZEOF(value), pSrcBuf:=ADR(value), bExecute:=bExecute);
wkc := fbWriteCmd.wkc;
bError:=fbWriteCmd.bError;
nErrId:=fbWriteCmd.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) |