CPU 312IFM immer wieder Stop

Deep Blue

Level-2
Beiträge
431
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe an einer Fremdanlage immer wieder das Problem, das sie nach ca. 1 Std. auf Stop geht. Der Arbeitsspeicher ist zu 97 % gefüllt. Ich kann hier nicht mal mehr eine Sprungmarke einprogrammieren.
Was mich verwundert ist, das Sie an einer Stelle stehen bleibt, wo an einen Datenbaustein Daten in ein Word geschrieben werden. Die Fehlermeldung in der CPU ist, das ein Bereichslängenfehler beim schreiben zum Stop führt. Daten werden doch aber in den Ladespeicher geschrieben, oder? Dieser ist komplett leer. Das die CPU einen integrierten Zähleingang hat, kann ich Sie nicht mal durch etwas anderes ersetzen. Solch eine CPU habe ich hier nicht mehr liegen. Auch kann ich aus der Variablentabelle heraus nicht mal gleichzeitig beobachten und eine Variable beschreiben. Vat Online und FC-Online geht auch nicht. Ist das ein Merkmal der 312 oder ist hier was im Argen? Die CPU hatte ich gerade gewechselt da ich solch eine hier noch liegen hatte (Problem war aber schon auf der alten vorhanden!).
So langsam gehen mir die Ideen aus was ich noch machen könnte.

:confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...... Das die CPU einen integrierten Zähleingang hat, kann ich Sie nicht mal durch etwas anderes ersetzen. ....

Wie war das doch mit der Schaltschrankreserve???
Das gilt auch für den Ladestand von CPUs.

Dieser muss mind. so groß wei der größte im
Projekt befindliche FB/FC/DB. Denn sonst lässt sich
ohne herauslöschen des alten FB/FC/DB der neue
Baustein nicht einspielen.

Aufgrund der Baubreite ist eine aktuelle CPU plus FM350-2
vom Platz identisch. Der Kunde muss sich eben entscheiden
zwischen Kostenfaktor und Sicherheit.

btw. was steht denn im Diagnosepuffer?????

Frank
 
Wenn der "gute" OB121 geladen ist - ist er anscheinend nicht! -
dann geht die CPU auch nicht in STOP wenn man auf ein fehlendes
DB-Element schreibt.

Ansonsten verwechselt "Deep Blue" wohl den Ladespeicher und den
Arbeitsspeicher. Denn außer die MMC-Schreiboperationen, die wir
hier nicht haben, schreibt immer alles in den Arbeitsspeicher.

Frank
 
Das mit dem Testbetrieb werde ich gleich Morgen früh mal checken. Die Platzreserve hat der Anlagenbauer vor 10 Jahren definiert. Den Ob 121 wollte ich rein schieben was aber die CPU nicht zugelassen hatte. Hier frage ich mich ob es die 312 den auch zulässt diesen zu benutzen? Zum Speicher noch einmal: der Ladespeicher ist leer. Der Arbeitsspeicher steht auf 97%. Komprimieren bietet die Cpu an. Das wird dann auch mit einer Erfolgsmeldung quittiert aber es bleibt danach alles beim "Alten". Evtl. drücke ich mich für Manche nicht klar aus. Aber ich schreibe das gerade wieder aus dem Gedächnis. Sitze nicht vor der Anlage.
 
Sitze nicht vor der Anlage.

Wenn du wieder vor der Anlage sitzt, dann schau nach folgendem:

1. 6ES7-312-Nummer, damit wir wissen, was du vor Ort hast.
2. Gehe Online auf die CPU (ggf. mit CTRL+D) und schaue nach den Leistungsdaten ONLINE in der CPU. Da sind alle einspielbaren Bausteine zu sehen.
3. Da die CPU möglicherweise keine MEMORYCARD (die alte 312IFM hat noch keine MMC) hat, ist natürlich auch kein Ladespeicher da und die Batterie puffert den Arbeitsspeicher.

Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das die CPU einen integrierten Zähleingang hat, kann ich Sie nicht mal durch etwas anderes ersetzen.
Doch, kannst Du. Und gleichzeitig Deine Programmspeichermangel- und Beobachtungsprobleme lösen:
Ersetze die vorhandene CPU 312IFM durch die CPU 312C.

CPU 312IFM (6ES7312-5AC02-0AB0)
Arbeitsspeicher integriert 6 kByte
Ladespeicher integriert 20 kByte RAM + 20 kByte EEPROM

CPU 312C (6ES7312-5BE03-0AB0)
Arbeitsspeicher integriert 32 KByte
Ladespeicher steckbar über Micro Memory Card (64kByte bis max. 4 Mbyte)

Produktinformation
6ES7312-5BE03-0AB0 CPU312C, 10DE/6DA, 32 KB, 2 schnelle Zähler 10kHz
Bestelldaten
CPU 312C (384,00 EUR)
Micro Memory Card 64kByte (36,40 EUR)

Dann wäre Dein Arbeitsspeicher schon mal nur noch zu 18% gefüllt. :)
Andere Steckerbelegung der Ausgänge und andere Zähler-Eingänge beachten!
Programmierung des schnellen Zählers anpassen. "Umverdrahten" der Eingänge im Programm nötig. OB40 anpassen, falls vorhanden.
Die Zykluszeit des Programms wird sich stark verkürzen.

Was mich verwundert ist, das Sie an einer Stelle stehen bleibt, wo an einen Datenbaustein Daten in ein Word geschrieben werden. Die Fehlermeldung in der CPU ist, das ein Bereichslängenfehler beim schreiben zum Stop führt.
Das Problem, daß Deine CPU in Stop geht, mußt Du allerdings trotzdem noch im Programm suchen.
Siehe Tip von Paule.

Daten werden doch aber in den Ladespeicher geschrieben, oder? Dieser ist komplett leer.
Der Ladespeicher kann nicht komplett leer sein, wenn ein Programm in der CPU ist.
Wahrscheinlich ist das Programm - wie es sich bei dieser CPU gehört - im Ladespeicher EEPROM und Du hast bei Ladespeicher RAM nachgesehen.

Der Arbeitsspeicher ist zu 97 % gefüllt. Ich kann hier nicht mal mehr eine Sprungmarke einprogrammieren.
Das kann ich fast nicht glauben. 3% freier Arbeitsspeicher wären etwa 180 Byte. Dein Programm müßte schon ziemlich exakt 20 kByte Ladespeicher benötigen, damit kein Sprungbefehl mehr ins Programm passt. Vielleicht hat der Original-Programmierer mit dem Ladespeicherbedarf getrickst, um Programmänderungen durch Dritte zu erschweren.

Harald
 
Das kann ich fast nicht glauben. 3% freier Arbeitsspeicher wären etwa 180 Byte. Dein Programm müßte schon ziemlich exakt 20 kByte Ladespeicher benötigen, damit kein Sprungbefehl mehr ins Programm passt. Vielleicht hat der Original-Programmierer mit dem Ladespeicherbedarf getrickst, um Programmänderungen durch Dritte zu erschweren.

Kann es nicht sein, das er einfach den Block vorher löschen und den Speicher komprimieren muss, das er übertragen kann?
 
Kann es nicht sein, das er einfach den Block vorher löschen ........ muss, das er übertragen kann?

Das hatte ich im POST #3 ja auch schon geschrieben.
Ich hatte das leider auch schon mal das die CPU
derart voll war.

Übrigens reicht das löschen meistens schon aus, aber falls
es nach dem löschen dennoch nicht reicht, muss man dann
eben doch komprimieren.

Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann es nicht sein, das er einfach den Block vorher löschen und den Speicher komprimieren muss, das er übertragen kann?
Ach ja, natürlich. Es muß ja auch im Arbeitsspeicher ein entsprechend großes Loch sein, um einen Baustein laden zu können.
Das hatte ich wegen dem "komplett" leeren Ladespeicher nicht bedacht.

Da seine CPU sowieso dauernd in Stop geht, ist das vorherige Löschen des zu ändernden Bausteins wohl kein Problem.
Zum Schluß noch "RAM-nach-ROM-kopieren" nicht vergessen!

Harald
 
Das hatte ich im POST #3 ja auch schon geschrieben.
Ich hatte das leider auch schon mal das die CPU
derart voll war.

Übrigens reicht das löschen meistens schon aus, aber falls
es nach dem löschen dennoch nicht reicht, muss man dann
eben doch komprimieren.

Frank

Sorry überlesen...

Aber Ich hab es bei 400er CPUs schön öfters gehabt, das nur löschen ohne komprimieren nix bringt!
 
Hier mal ein paar Fakten:


Code:
 AUF   DB    10
      L     #IN0
      L     #IO9
      SLW   1
      +I    
      SLW   3
      T     #TEMP12
      L     #IO2
      [B][I][U]T     DBW [#TEMP12][/U][/I][/B]    //hier geht die CPU in Stop
      L     #IO9
      +     1
      T     #IO9

#IN0 - hier stehen die Werte 120,170,220,270 drin
#IO9 - Zyklischer Zähler

Anlage stand auf Prozeßbetrieb, habe ich mittlerweile geändert (Testbetrieb).
Die Anlage macht immer 4 Schritte mit jeweils 1 Pause dazwischen bis der Starttaster den nächsten Schritt startet. Während der aktiven Schritte wird der zyklische Zähler addiert. In der "Pausephase" wird die Addition übersprungen.
Wie schon geschrieben hat der DB10 316 Wörter. Es muß also ein Wert übergeben werden der entweder größer 316 oder kleiner 0 ist. Das kann ja also nur die Folge von einem falschen zyklischen #IO9 sein, da #IN0 Festwerte hat.

Anbei noch ein Bild des CPU-Speichers.
 

Anhänge

  • CPU 312IFM.JPG
    CPU 312IFM.JPG
    41,3 KB · Aufrufe: 15
Hallo,
vielleicht würde es schon reichen, wenn du den Code wie folgt abänderst :
Code:
AUF   DB    10
      L     #IN0
      L     #IO9
[B][COLOR=red]      SLD   1
      +D    
      SLD   3
[/COLOR][/B]      T     #TEMP12
      L     #IO2
      [B][I][U]T     DBW [#TEMP12][/U][/I][/B]    //hier geht die CPU in Stop
      L     #IO9
      +     1
      T     #IO9
... es könnte hier nämlich auch ganz gut zu einem Integer-Überlauf kommen ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
vielleicht würde es schon reichen, wenn du den Code wie folgt abänderst :
Code:
AUF   DB    10
      L     #IN0
      L     #IO9
[B][COLOR=red]      SLD   1
      +D    
      SLD   3
[/COLOR][/B]      T     #TEMP12
      L     #IO2
      [B][I][U]T     DBW [#TEMP12][/U][/I][/B]    //hier geht die CPU in Stop
      L     #IO9
      +     1
      T     #IO9
... es könnte hier nämlich auch ganz gut zu einem Integer-Überlauf kommen ...

Gruß
Larry

Wenn der DB aber nur bis 316 geht, sollte das nicht das Problem sein! Den Überlauf wirds erst bei Wort 8191 geben.
(Wobei ich immer den Code mit SLD verwenden würde!)
 
... deshalb habe ich ja auch "könnte" geschrieben.
Neben der Speicher-Geschichte ging es ja auch noch um einen sporadischen Fehler ... und jemand, der einen CPU-Speicher zu > 75% voll packt dem ist auch zuzutrauen, dass er diesen "kleinen" Pointer-Berechnungs-Fehler übersieht.

Gruß
Larry
 
Problem ist erledigt...

Hallo,

habe jetzt die Ursache gefunden. Will Sie hier nur noch mal zum beenden des Themas kund tun.
Die Variable #IO9 wird von einer Lichtschranke beschrieben. Dort werden Takte gezählt. Wie es denn so in der Praxis imemr ist, ist seit 1 Woche ein neuer Kollege an dieser Anlage. Durch sein Arbeitsrhytmus ist es nun so, das diese Lichtschranke anstatt wie seit 10 Jahren ordentlich die Takte zählt nun durch Ihn mehrfach Signale bekommt. Dadurch steht dann ein Wert drinne, welcher als Adresse im DB nicht vorhanden ist. Und das führt wiederrum zum Absturz.

Werde aber trotzdem die CPU tauschen (Platzreserve), eine Plausibilitätsprüfung noch einprogrammieren und den OB 121 mit rein schieben.

Vielen Dank an Alle, die mich unterstützt haben!!!
 
Zurück
Oben