EtherCAT Diagnose

skuehl

Level-1
Beiträge
12
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich wollte einigen Funktionen aus der EtherCAT Diagnose Bibliothek ausprobieren und bekomme bei einigen den Fehler
"Fehler 1798 (0x706) verweist auf einen Nullpointer an der Pufferadresse". Ich habe das so implementiert, wie es in der Beckhoff Doku beschrieben ist. Kann mir jemand sagen wo mein Denkfehler ist?

PROGRAM POU_test
VAR
R_TRIG_0: R_TRIG;
FB_EcGetScannedSlaves_0 : FB_EcGetScannedSlaves:=(sNetId:='192.168.137.131.2.1',
tTimeout := DEFAULT_ADS_TIMEOUT);

bExecute : BOOL;
bTrig: BOOL;
pArrEcScannedSlaveInfo : POINTER TO ARRAY[0..255] OF ST_EcSlaveScannedData;
cbBufLen : UDINT:= 10 * SIZEOF(ST_EcSlaveScannedData);

bBusy : BOOL;
bError : BOOL;
nErrId : UDINT;
nSlaves : UINT;
END_VAR


R_TRIG_0(CLK:=bExecute, Q=>bTrig);
FB_EcGetScannedSlaves_0(bExecute:= bTrig, pArrEcScannedSlaveInfo:=pArrEcScannedSlaveInfo, cbBufLen:=cbBufLen,bBusy=>bBusy, bError=>bError, nErrorId=>nErrId, nSlaves=>nSlaves);

Vielen Dank
Stefan
 
Hallo Stefan,

wenn ich das richtig sehe, dann legst du ja nur den Pointer auf an, aber niergendwo den realen Speicherbereich, wo die Struktur tatsächlich liegt.

Das solltest du auch daran sehen können, dass die Variabe 'pArrEcScannedSlaveInfo' den Wert 0 hat, wenn du online drauf schaust.

Meines Erachtens müsstest du das wie folgt anpassen:

Code:
ArrEcScannedSlaveInfo : ARRAY[0..255] OF ST_EcSlaveScannedData;
pArrEcScannedSlaveInfo : POINTER TO ARRAY[0..255] OF ST_EcSlaveScannedData := ADR(ArrEcScannedSlaveInfo);


Außerdem berechnest du glaube ich noch die Größe von deimen Puffer falsch:
cbBufLen : UDINT:= 10 * SIZEOF(ST_EcSlaveScannedData);

Dein Array ist doch 256 Elemente groß (0..255), daher würde ich hier auch die Puffergröße gleich richtig berechnen:
Code:
cbBufLen : UDINT:= 256 * SIZEOF(ST_EcSlaveScannedData);


Am besten legst du hier gleich eine lokale Konstante an, dann brauchst du hier nicht ständig anpassungen zu manchen...


Bitte mal testen, ob das so hilft...

Grüße
 
Zuletzt bearbeitet:
Zurück
Oben