Taha_Almatt
Level-2
- Beiträge
- 16
- Reaktionspunkte
- 2
-> Hier kostenlos registrieren
Hallo zusammen,
wir arbeiten in unserer Firma mit einem Standardprojekt für Anlagen.
Dabei ist es erforderlich, dass bei der Inbetriebnahme bestimmte CoE-Variablen auf den EtherCAT-Karten immer auf definierte, identische Werte gesetzt werden.
Diesen Prozess möchten wir automatisieren und setzen dafür (gemäß Beckhoff-Dokumentation) den Baustein FB_EcCoESdoWrite ein.
Ein vereinfachter Code-Ausschnitt sieht wie folgt aus:
_____________________________________________________________________________________________________________________
fbSdoWrite_Filter_Activate(
sNetId := sNetId,
nSlaveAddr := nSlaveAddr_Filter_Activate,
nIndex := nIndex_Filter_Activate,
nSubIndex := nSubIndex_Filter_Activate,
pSrcBuf := ADR(bValue_Filter_Activate),
cbBufLen := SIZEOF(bValue_Filter_Activate),
bExecute := NOT StartUpMerker
);
IF NOT fbSdoWrite_Filter_Activate.bBusy THEN
IF NOT fbSdoWrite_Filter_Activate.bError THEN
// Write erfolgreich
bError_Filter_Activate := FALSE;
nErrId_Filter_Activate := 0;
ELSE
// Write fehlgeschlagen
bError_Filter_Acticate := fbSdoWrite_Filter_Activate.bError;
nErrId_Filter_Acticate := fbSdoWrite_Filter_Activate.nErrId;
END_IF
fbSdoWrite_Filter_Activate(bExecute := FALSE);
END_IF
_____________________________________________________________________________________________________________________
Das Problem ist aktuell die sNetId:
Diese muss manuell vorgegeben werden und ändert sich natürlich von SPS zu SPS.
Meine Frage:
Gibt es eine Möglichkeit, die NetId der eigenen SPS automatisch im Code auszulesen und in einer Variablen zu speichern, sodass sie nicht projektspezifisch gepflegt werden muss?
Vielen Dank im Voraus für eure Unterstützung.
wir arbeiten in unserer Firma mit einem Standardprojekt für Anlagen.
Dabei ist es erforderlich, dass bei der Inbetriebnahme bestimmte CoE-Variablen auf den EtherCAT-Karten immer auf definierte, identische Werte gesetzt werden.
Diesen Prozess möchten wir automatisieren und setzen dafür (gemäß Beckhoff-Dokumentation) den Baustein FB_EcCoESdoWrite ein.
Ein vereinfachter Code-Ausschnitt sieht wie folgt aus:
_____________________________________________________________________________________________________________________
fbSdoWrite_Filter_Activate(
sNetId := sNetId,
nSlaveAddr := nSlaveAddr_Filter_Activate,
nIndex := nIndex_Filter_Activate,
nSubIndex := nSubIndex_Filter_Activate,
pSrcBuf := ADR(bValue_Filter_Activate),
cbBufLen := SIZEOF(bValue_Filter_Activate),
bExecute := NOT StartUpMerker
);
IF NOT fbSdoWrite_Filter_Activate.bBusy THEN
IF NOT fbSdoWrite_Filter_Activate.bError THEN
// Write erfolgreich
bError_Filter_Activate := FALSE;
nErrId_Filter_Activate := 0;
ELSE
// Write fehlgeschlagen
bError_Filter_Acticate := fbSdoWrite_Filter_Activate.bError;
nErrId_Filter_Acticate := fbSdoWrite_Filter_Activate.nErrId;
END_IF
fbSdoWrite_Filter_Activate(bExecute := FALSE);
END_IF
_____________________________________________________________________________________________________________________
Das Problem ist aktuell die sNetId:
Diese muss manuell vorgegeben werden und ändert sich natürlich von SPS zu SPS.
Meine Frage:
Gibt es eine Möglichkeit, die NetId der eigenen SPS automatisch im Code auszulesen und in einer Variablen zu speichern, sodass sie nicht projektspezifisch gepflegt werden muss?
Vielen Dank im Voraus für eure Unterstützung.
Zuletzt bearbeitet:
















