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. Dieses Kommando kann von der SPS verwendet werden, um ein Register oder den DPRAM des EtherCAT Slave Controllers zu beschreiben.
Eingänge
VAR_INPUT
sNetId : T_AmsNetId;
adp : UINT;
ado : UINT;
len : UDINT;
eType : E_EcAdressingType := eAdressingType_Fixed;
pSrcBuf : PVOID;
bExecute : BOOL;
tTimeout : TIME := DEFAULT_ADS_TIMEOUT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
sNetId | T_AmsNetId | String, der die AMS-Netzwerkkennung des EtherCAT-Master-Gerätes enthält. (Typ: T_AmsNetId) |
adp | UINT | 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. |
ado | UINT | Physikalischer Speicher(DPRAM) oder Register das ausgelesen werden soll. |
len | UDINT | Anzahl der zu schreibenden Bytes. |
eType | E_EcAdressingType | Abhängig von dem Wert von eType werden verschiedene EhterCAT-Kommandos geschickt. |
pSrcBuf | PVOID | Die Adresse (Pointer) auf den Sendepuffer. |
bExecute | BOOL | Über eine positive Flanke an diesem Eingang wird der Baustein aktiviert. |
tTimeout | TIME | Maximale Zeit, die bei der Ausführung des Funktionsbausteins nicht überschritten werden darf. |
adp-Wert
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 anhand seiner konfigurierten EtherCAT-Adresse adressiert. Diese EtherCAT-Adressen können mithilfe des Bausteins FB_EcGetAllSlaveAddr ausgelesen werden. |
eAdressingType_AutoInc | Der Slave wird anhand 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. |
eType
Abhängig von dem Wert 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).
Ausgänge
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
wkc : UINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bBusy | BOOL | Dieser Ausgang wird bei der Aktivierung des Funktionsbausteins gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt. |
bError | BOOL | Dieser Ausgang wird gesetzt, nachdem der bBusy-Ausgang zurückgesetzt wurde, wenn bei der Übertragung des Kommandos ein Fehler auftritt. |
nErrId | UDINT | Liefert bei einem gesetzten bError-Ausgang den ADS-Fehlercode des zuletzt ausgeführten Befehls. |
wkc | UINT | 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, muss 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 v3.1.0 | PC oder CX (x86, x64, Arm®) | Tc2_EtherCAT |