FB_CoEWrite_ByDriveRef
Mit dem Funktionsbaustein FB_CoEWrite_ByDriveRef
können Antriebsparameter mit Hilfe des "CANopen over EtherCAT (CoE)"-Protokolls geschrieben werden. Dazu muss der Slave eine Mailbox besitzen und das "CANopen over EtherCAT (CoE)"-Protokoll unterstützen. Mit Hilfe der Parameter nSubIndex und nIndex wird ausgewählt, welches Objekt beschrieben werden soll. Über bCompleteAccess := TRUE
kann der Parameter mit Unterelementen geschrieben werden.
Eingänge
VAR_INPUT
stDriveRef : ST_DriveRef; (*Contains sNetID of EcMaster, nSlaveAddr EcDrive, nDriveNo of EcDrive, either preset or read from NC*)
nIndex : WORD; (*SoE IDN: e.g. “S_0_IDN+1” for S-0-0001 or “P_0_IDN+23” for P-0-0023*)
nSubIndex : BYTE; (*SoE element*)
pSrcBuf : PVOID; (*Contains the address of the buffer containing the data to be sent*)
cbBufLen : UDINT; (*Contains the max. number of bytes to be received*)
bExecute : BOOL; (*Function block execution is triggered by a rising edge at this input*)
tTimeout : TIME; (*States the time before the function is cancelled*)
bCompleteAccess : BOOL;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
stDriveRef | ST_DriveRef | Struktur, welche die AMS-Netzwerkkennung des EtherCAT-Master-Gerätes und die Adresse des Slave-Gerätes enthält. Die Referenz auf den Antrieb kann im System Manager direkt in die SPS gelinkt werden. Hierzu muss eine Instanz der ST_PlcDriveRef verwendet werden und die NEtID vom Bytearray in einem String konvertiert werden. |
nIndex | WORD | Index des Objekts, das geschrieben werden soll. |
nSubIndex | BYTE | Subindex des Objekts, das geschrieben werden soll. |
pSrcBuf | PVOID | Adresse (Pointer) auf den Sendepuffer |
cbBufLen | UDINT | Maximal verfügbare Puffergröße für die zu sendenden Daten in Bytes. |
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. |
bComplete | BOOL | Bei gesetztem bCompleteAccess kann der gesamte Parameter in einem Zugriff eingelesen werden. |
Ausgänge
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
iAdsErrId : UINT;
iCANopenErrId : 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. |
iAdsErrId | UINT | Liefert bei gesetztem bError-Ausgang den ADS-Fehlercode des zuletzt ausgeführten Befehls. |
iCANopenErrId | UINT | Liefert bei gesetztem bError-Ausgang den CANopen-Fehlercode. |
Beispiel für eine Implementierung in ST:
PROGRAM MAIN
VAR
fbCoEWrite : FB_CoEWrite_ByDriveRef;
stDriveRef : ST_DriveRef;
nIndex : WORD := 16#1018;
nSubIndex : BYTE := 1;
bExecute : BOOL := TRUE;
tTimeout : TIME := T#5S;
bCompleteAccess : BOOL := TRUE;
vendorId : UDINT := 2;
bError : BOOL;
nAdsErrId : UDINT;
nCANopenErrId : UDINT;
END_VAR
fbCoEWrite(
stDriveRef:= stDriveRef,
nIndex:= nIndex,
nSubIndex:= nSubIndex,
pSrcBuf:= ADR(vendorId),
cbBufLen:= SIZEOF(vendorId),
bExecute:= bExecute,
tTimeout:= tTimeout,
bCompleteAccess:= bCompleteAccess,
);
IF NOT fbCoEWrite.bBusy THEN
bError:= fbCoEWrite.bError;
nAdsErrId:= fbCoEWrite.iAdsErrId;
nCANopenErrId:= fbCoEWrite.iCANopenErrId;
bExecute := FALSE;
fbCoEWrite(bExecute := bExecute);
END_IF
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS- Bibliotheken |
---|---|---|
TwinCAT v3.1.0 | PC oder CX (x86, x64, ARM) | Tc2_EtherCAT |