Beckhoff cx8090 und Modbus: Slave lesen.

Zuviel Werbung?
-> Hier kostenlos registrieren
Ist das Modscan? Vielleicht probierst du mal die Unit ID 0 aus....keine Ahnung so kommen wir nicht weiter. Kannst du denn mal schauen ob der Server auf dem CX8090 denn tut?
 
Das ist ein Tool auf Labview Basis.

Wenn ich zum Beispiel Werte der Klemmen am CX über den Modbus auslesen will, klappt das.
 
Ich gebe auf, zieh dir noch mal das aktuelle Image vom ftp Server Lösch die SD Karte und damit hast du einen "organalen" Cx wieder.
Ich kann mir nur vorstellen das du irgendwo und irgendwie was verstellt hast. Keine Ahnung...
 
Ich hab keine Ahnung was ich gemacht habe, aber den aktuellen Stand gespeichert und 100 Sicherungskopien gemacht.

Eine Frage habe ich noch, die Analogen Werte der Klemme werden in einem Intervall eingelsen und angezeigt. Liegt wahrscheinlich an der Twincat Konfiguration.

Wie kriege ich es hin, daß die Daten des Modbus Slaves auch in einem Intervall abgerufen werden?
 
oder so...
CASE i OF
0: FB_MBCloseAll(
bExecute:=TRUE ,
tTimeout:= ,
bBusy=> ,
bError=> ,
nErrId=> );
IF NOT FB_MBCloseAll.bBusy THEN
i:=10;
END_IF
5: FB_MBReadRegs(
sIPAddr:=IP_Addr ,
nTCPPort:=503 ,
nUnitID:=1 ,
nQuantity:=4 ,
nMBAddr:=16#3032 ,
cbLength:=8 ,
pDestAddr:=ADR(Data) ,
bExecute:=TRUE ,
tTimeout:=t#3s ,
bBusy=> ,
bError=> ,
nErrId=> ,
cbRead=> );
IF NOT FB_MBReadRegs.bBusy THEN
IF NOT FB_MBReadRegs.bError THEN
i:=5;
ELSE
i:=10;
END_IF
FB_MBReadRegs(bExecute:=FALSE);
END_IF
10: ;(*ERROR*)
END_CASE

So ist es besser, wenn es zu schnell für den Slave ist dann noch mal 10 oder 100ms warten....
 
Ich hab es so gelöst:

xtimer();
xtimer(CU:=TRUE);


xtimer(CU:=FALSE);

IF xtimer.CV=100 THEN readreg(bExecute:=TRUE);
xtimer(RESET:=TRUE);
ELSE xtimer(RESET:=FALSE);
END_IF;
readreg(bExecute:=FALSE);


Vielleicht gehts besser, keine Ahnung. Bin in Sachen SPS am Anfang.

Der Zähler Zählt bis 100, holt sich bei 100 die Daten und geht wieder auf 0.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Feldbus,

ich finde zu FB_MBCloseAll keine Doku (Online oder im Informationssystem). Weisst du was dieser Befehl genau macht?

Zu deinem Beispiel: Deinse case Anweisung kommt ja nie in den case 5, da nur innerhalb von case 5 auf case 5 verwiesen wird. Oder übersehe ich da was?

Gruß,

S.
 
Zurück
Oben