fb_coe_writeEx :FB_EcCoESdoWriteEx; // Function Block for writing in CoE
userNetId :T_AmsNetId := '172.128.1.1.5.1'; // Have to be entered
userSlaveAddr :UINT := 1003; // Have to be entered
bWriteLUT2CoE :BOOL:=FALSE; // Sign for start writing
bError :BOOL:=FALSE; // Sign for any error
END_VAR
Anmerkungen:
• Die Variable „startWrite" (BOOL) wird bereits in Beispielprogramm 4 ebenfalls deklariert.
• Die Variable ‚userNetId' muss die Geräte-EtherCAT-Netz ID enthalten. Diese ist über den Karteireiter
„EtherCAT" bei Auswahl von „Device (EtherCAT)" einsehbar.
• Die Variable „userSlaveAddr" muss die EtherCAT-Adresse der Box enthalten.
Beispielprogramm zur Übertragung der LookUp-Tabelle:
Ausführungsteil:
// Example program 3:
// ###### Write Lookup-Table in CoE Objekt 0x8005: #######
IF bWriteLUT2CoE THEN
CASE wState OF
0:
fb_coe_writeEx(bExecute := FALSE);// Prepare CoE-Access
wState := wState + 1;// Next state
1:
// Write 100 X/Y LookUp-Table entries
fb_coe_writeEx(
sNetId:= userNetId,
nSlaveAddr:= userSlaveAddr,
nSubIndex:= 1,
nIndex:= wCoEIndexScaler,
pSrcBuf:= ADR(aLUT),
cbBufLen:= SIZEOF(aLUT),
bCompleteAccess:= TRUE,
bExecute:= TRUE
);
wState := wState + 1; // Next state
2:
// Proceed with writing to CoE
fb_coe_writeEx();
IF NOT fb_coe_writeEx.bBusy THEN
wState := 0;// Done
bWriteLUT2CoE := FALSE;
bError := fb_coe_writeEx.bError; // See nErrId if TRUE
END_IF
END_CASE
END_IF
Durch eine einfache Variablen-Abfrage z.B. von einem Taster, der mit bEnable verknüpft ist kann die
Übertragung in Gang gesetzt werden. Dafür ist die Variablendeklaration:
VAR_INPUT
bEnable AT%I* :BOOL;
END_VAR
sowie die folgenden Programmzeilen erforderlich:
IF bEnable AND NOT startWrite THEN
EPP3504-0023
Version: 1.2
Inbetriebnahme
97