Step 7 Zykluszeitüberschreitung und CPU Stop, Datenverlust

Bitte ein Bit

Level-2
Beiträge
74
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend Kollegen,

da ich innerhalb von 2 Tagen 2mal eine Zeitüberschreitung hatte, waren meine sensiblen Daten weg...
Da ja in so einem Fall OB80 aufgerufen wird, der bei mir leer ist, möchte ich als 1. Netzwerk mit einem Blockmove DB's sichern, bevor die CPU in Stop geht.
Kann ich als erstes Netzwerk einen SFC20 aufrufen, um die besagten DB's in einen anderen DB zu sichern.
als letztes Netzwerk habe ich noch einen SFC43 eingefügt.
Oder wie macht ihr das???
 
Was hast du denn für eine Steuerung?
Bei den aktuellen 300/400er bleiben die Daten in den DBs eigentlich auch bei einem SPS Stop mit anschließendem Warmstart erhalten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In dem speziellen Fall würde ich sagen das bei deiner CPU ein Teil des Speichers oder sonstiger interner Hardware das zeitliche gesegnet hat.
Wenn Warmstart nicht funktioniert heißt das schlussendlich nichts weiter als das das RAM inkonsistent, heißt dann das bei Kaltstart der Stand der MC frisch kopiert wird.

Ich bin jetzt zwar nicht deer S7-400 Experte, aber ich würde mich eher schnellstens nach einer passenden Ersatz-CPU umsehen.

P.S. ist das Programm komplett von dir? Könnte sich spontan auch um eine Art zwangsbezahlfunktion handeln ...

Mfg
Manuel
 
Zuletzt bearbeitet:
Die 400er sind schon etwas speziell in der Handhabung. Vor allem bei Weitem nicht so pflegeleicht wie die 300er, vor allem bezüglich des leidlichen Batterieproblems oder noch schlimmer einer 400er mit Flash-Karte.

Bei den 400ern lässt sich zum Anlaufverhalten auch in der HW-Konfig einiges einstellen.
Aber vielleicht schaust du mal in den Diagnosepuffer der CPU, ob diese dir den Grund mitteilt warum ein Kaltstart angefordert wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In deinem gezeigten Diagnosepuffer ist die Stop-Anforderung nicht zu sehen. Hast du im Diagnosepuffer noch einen entsprechenden Eintrag, in dem man den ganzen Ablauf sehen kann, also Stop-Anforderung und Neustart? Die Einträge kannst du ja als Text speichern.
 
Schade.
Ich habe mal die möglichen Fehlerereignisse der Hilfe nach Kaltstart durchsucht. Im Zusammenhang mit F-CPUs gibt es u.a. einen Fall in dem ein Kaltstart angefordert wird, nämlich wenn auf den F-Speicher geschrieben wird, oder durch RAM-Fehler wie MSB schon angemerkt hat.
Das würde auch grob mit deinem anderen Programmfehler zusammenpassen, ein wildgewordener Zeiger der in den Speicher des F-Programms schreibt. Wo kommt der Baustein aus deinem Screenshot denn her? Sieht ja schlimm aus, zumindest für eine fehlersichere Steuerung ;-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Im Zusammenhang mit F-CPUs gibt es u.a. einen Fall in dem ein Kaltstart angefordert wird, nämlich wenn auf den F-Speicher geschrieben wird

Diese Eigenschaft kann ich bestätigen.
Selbst mal an eine F-CPU erlebt.

Sollte aktuelle werte gesichert werden oder Parameter ?
 
sorry für die verspätete Antwort,
es wäre mal interessant zu wissen, wie man sich die Online aktual Werte sichern kann.
Gibt es dafür eine Lösung, die man im OB80 schreiben kann?
 
hello bit,

ich sehe das deine schleife 256 mal durchlaufen werden muss, um sie zu beenden. die CPU stoppte bei einer zykluszeit von 151ms. probier mal die schleifenzyklen zu verringern, da ich nicht glaube das du 256 Profinetteilnehmer hast. dies würde die zykluszeit senken. das würde auch erklären warum die CPU sofort wieder in den STOP zustand wechselt.

der bereichslängenfehler lässt darauf schließen, dass der DB nicht in die CPU geladen wurde, oder ein falsches format verwendet wurde.

deine idee die Zykluszeit aus einem OB neu initialisieren würde ich verwerfen (sfc43). dies kann zu extremen fehlfunktionen und verhalten der gesamten anlage führen.

grüße
marco
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn die CPU den Kaltstart wegen der Zykluszeitüberschreitung anfordert, dann macht es eigentlich keinen Sinn Aktualdaten im OB80 in andere DB zu sichern, weil diese dann beim Kaltstart eh gelöscht werden - noch vor dem Aufruf des OB102. Man müßte schon die Aktualwerte in den Ladespeicher schreiben, was die S7-400 aber nicht kann.

Solange die CPU in STOP ist könnte ein PG oder ein HMI oder eine Visu die Aktualwerte aus der CPU heraus-sichern.

Kommt die Zykluszeitüberschreitung aus heiterem Himmel oder hatte da gerade jemand was mit einem PG auf der CPU gemacht?

Zu Deinem FB250:
Wann wird der FB250 aufgerufen? Immer oder nur bedingt aus dem OB1 oder aus anderen OB?

Code:
      O     [COLOR="#FF0000"]DBX[/COLOR] [#Pointer_T]    //Check status, if a station = 1
müßte das nicht DIX heißen?

Warum wird #Pointer_T mit P##Device+P#0.1 initialisiert? Müßte das vielleicht P##Device+P#0.0 sein?
P##Device ist laut Kommentaren der Beginn eines Arrays, ich vermute mal ARRAY OF BOOL. Ein als Array deklariertes Array beginnt doch immer auf einer "glatten" Adresse.0 Hat das Array P##Device mehr als 256 Elemente? Im 256. Durchlauf der Schleife greift #Pointer_T auf das 257. Element zu = P##Device+P#32.0

Gibt es Auffälligkeiten beim Baustein-Konsistenzcheck? Ich würde den FB250 nochmal übersetzen und dessen IDB (DB250 ?) neu generieren und beide neu in die CPU laden.
Ich würde außerdem auch den DB128 nochmal neu in die CPU laden. Ist der DB128 ein echter Global-DB oder der IDB eines FB?

Harald
 
Zurück
Oben