Beckhoff WritePersistentData

Klohie

Level-1
Beiträge
49
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinde,

folgendes Problem:

mein WritePersistentData Baustein zeigt seit kurzem Fehler 1282 an. Laut Beckhoff:
0x502
1282
0x9811 0502

ROUTERERR_MAILBOXFULL
The mailbox has reached the maximum number of possible messages.
Wie krieg ich diesen Fehler jetzt wieder aus dem Baustein raus?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

nach einem Neustart der SPS wird der Fehler wahrscheinlich weg sein, aber das ist ja eigentlich nicht die Lösung für das Problem,
da der Fehler ziemlich sicher nach einiger Zeit wieder auftreten wird.

Mit dem Baustein FB_GetRouterStatusInfo kannst du die Daten vom Routerspeicher auslesen (Max. Speicher, verfügbarer Speicher usw.)
https://infosys.beckhoff.com/index....lcLibUtilities_FB_GetRouterStatusInfo.htm&id=

Ansonsten kann ich dir auch den Tipp von Hack empfehlen.

MfG
 
Die Beschreibung der Meldung lautet "The mailbox has reached the maximum number of possible messages.".
Routerspeicher erhöhen ist also nicht zielführen.

Aktive (d.h. noch nicht beantwortete) ADS-Fragen werden pro Port in einer Queue gehalten. Die ist endlich groß (in der Regel max 80 Meldungen - ist aber etwas systemabhängig).
Lösungsansatz: AdsMonitor herunterladen und auf dem Zielsystem installieren (geht nur auf Win-Systemen und nicht auf CE). Und dann einfach mal schauen was da passiert.
Wenn du die Capture (achtung! Capture speichern, es gibt nämlich zwei mal das Save) hochlaedst dann werfe ich nen Blick rein und kann dir dann sagen was abläuft.

Guga.
 
Also es geht um eine CX8190 mit WinCE. Unter Windows 10 oder ähnlich kann ich den Router ja CleanUp machen, bei der CX8190 habe ich sowas noch nicht gefunden.
Also die Erhöhung des Speichers lass ich mal außen vor. Systemneustart wollte ich jetzt auch nicht unbedingt. Gibt es einen kniff oder einen FB der die rolle des leerens übernehmen könnte?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da der CX8190 eine 1 sec USV hat brauchst du den Baustein WritePersistentData gar nicht, sondern nimm die 1 sec Bausteine und dann werden die Daten gespeichert. Warum die Mailbox Voll wird könnte an zu vielen ADS Anfragen liegen. Immer schön das Busy abfragen und sauber programmieren dann sollte es auch klappen..
 
Da der CX8190 eine 1 sec USV hat brauchst du den Baustein WritePersistentData gar nicht, sondern nimm die 1 sec Bausteine und dann werden die Daten gespeichert. Warum die Mailbox Voll wird könnte an zu vielen ADS Anfragen liegen. Immer schön das Busy abfragen und sauber programmieren dann sollte es auch klappen..
Würde ich so nicht unterschreiben. Bei einem Stromausfall werden die Daten mit den 1s FBs gespeichert, aber nicht wenn er einen Neustart macht oder den SPS-Dienst neu startet.
 
Ich würde es unterschreiben :) du kannst auch gerne eine TC Restart machen auch da werden die Persistenten Daten gespeichert...aber vielleicht weißt du ja mehr als ich...dann kannst es auch mir gerne erklären, man lernt ja gerne dazu...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde es unterschreiben :) du kannst auch gerne eine TC Restart machen auch da werden die Persistenten Daten gespeichert...aber vielleicht weißt du ja mehr als ich...dann kannst es auch mir gerne erklären, man lernt ja gerne dazu...
Bei TwinCAT liegen die Persistenten Daten ja nicht in einem nicht flüchtigen oder batteriegepufferten Speicher, sondern werden in Dateien gespeichert und ich meine mich da zu erinnern, dass es zu Problemen gekommen ist, wenn man die Steuerung (den CX) einfach neugestartet hatte ohne den Speicherbefehl auszuführen. Auf jeden Fall hatte ein Kunde immer wieder Problem, dass Daten verlorengegangen sind und hat deswegen den Befehl immer mal ausgeführt. Ich weiß allerdings nicht, ob zyklisch oder ereignisgesteuert.
 
Zuletzt bearbeitet:
Also einmal werden die Persistenten Daten auch bei einem TC Restart gespeichert, aber hast schon recht diese liegen als File beim CX81xx zum Beispiel auf der SD Karte als Datei. Aber da ich einen CX8190 da habe, habe ich das schnell mal getestet. Und es ist so wie ich sage, bei einem TC Restart werden Persitente Daten gespeichert wie natürlich auch bei einem Power Off/On wenn man den entsprechenden Baustein zyklisch aufruft.
Beim CX81xx wäre das der FB_S_UPS_CX81xx zu finden in der Tc2_SUPS Lib. Also mir fällt jetzt kein Grund ein warum man den Baustein WritePersistentData brauchen sollte. Auf jedenfall nicht beim CX81xx...vielleicht fällt dir ja noch ein Grund ein...ich wüsste keinen.
 
Es gibt min. einen Grund:
Falls die Grösse der persistenten Daten die maximal zu speichernde Menge beim Stromausfall überschreitet, empfiehlt es sich bei den FB_S_UPS Bausteinen den Mode ohne Speichern der persistenten Daten zu wählen. Stattdessen speichert man diese regelmässig oder bei Änderung mit diesem Baustein. Wenn die persistenten Daten zu häufig ändern (applikationsabhängig), kommt man nicht um eine externe USV rum und kann das manuelle Speichern der persistenten Daten wieder weglassen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Naja, die persistenten Daten dürfen schon recht groß sein, wenn man noch mehr Daten zu Speicher hat, sollte man sich einen anderen Weg suchen zum Beispiel die Daten über eine Datenbank wegzuschreiben. Man muss sich mal überlegen wozu ich die Daten wegschreibe, dafür das ich beim Einschalten die alten Werte wieder habe, aber ist halt Applikation...jeder hat da so seine Ideen und jeder macht es wie er meint es Sinnvoll für ihn ist. Aber man sollte auch die Kirche im Dorf lassen, 1 MByte Persistente Daten sind schon viel - für eine Steuerung. Aber jeder soll machen was er will - dafür ist es ja eine freiprogrammierbarer Steuerung - nur an die Limits des Herstellers oder die Empfehlungen sollte man sich halten, dann ist alles gut und wenn eine externe USV hilft warum nicht :) ...
Man sollte aber auch das Speichern auf dem Speichermedium nicht übertreiben, es sein denn man verwendet einen Speicher, der das Zulässt und auch für den Anwendungsfall geeignet ist wie SSD oder Festplatte.
 
Ich muss mich hier nochmals einklinken. Ich hatte ja damals nicht von TC Restart gesprochen, sondern, dass der CX einfach neu gestartet wird. Verhält es sich da genau so wie bei einem TC Restart?
Ich kann es leider im Moment nicht selber nachprüfen, sonst würde ich das machen.
 
Bei einem PC-Neustart funktioniert es auch. Was man aber nicht tun sollte, ist, den PC ausschalten und wieder einschalten, bevor die Sekunden-USV komplett entladen und der PC wirklich aus ist. Damit haben unsere Aus-/Ein-Neustart-Fetischisten schon öfters die persistenten Daten zerschossen.
 
Zurück
Oben