# Problem mit Speichergröße



## Anonymous (11 Februar 2005)

Hallo,
ich habe ein Projekt mit einer 414er CPU. Der Ladespeicher ist zur Zeit zu 98% gefüllt, (auch nach komprimieren) sodass ich geänderte Bausteine erst übertragen kann, wenn ich den alten gelöscht habe.
Da das Programm noch erweitert werden soll, muss ich irgendwie mehr Speicher haben.
An der CPU ist anscheinend eine EPROM-Karte gesteckt, die aber noch leer ist.
Würde es etwas bringen, einzelne Bausteine vom RAM ins ROM zu kopieren? Soweit ich das verstanden habe, ist der ROM-Speicher ja nur eine Art Sicherungsablage. D.h. nach einem Spannungsausfall wird einfach der EPROM-Speicher wieder ins RAM kopiert. 
Es gibt für die 400er CPU ja auch RAM-Steckkarten mit mehr Speicher. Oder müsste ich so eine Karte nachrüsten, hätte dann aber keine Möglichkeit mehr das Programm ausfallsicher auf der CPU abzulegen.

Irgendwie verstehe ich das mit dem Speicher nicht so ganz, was müsste ich tun um mehr Platz mein Programm zu bekommen?

Danke für Hinweise,
Thomas


----------



## lbuenger (11 Februar 2005)

meiner meinung nach müßtest du dein programm kleiner schreiben oder ide cpu austauschen. der ladespeicher der 300er-sps ist nicht erweiterbar.eine ausnahme bildet die 318er, welche aber eine kleingemachte 400er ist.


----------



## RMA (11 Februar 2005)

Im Prinzip hat Ibuenger recht, aber es gibt vielleicht doch ein Weg.

Wenn Du mehrere grosse DBs hast, die nur zu bestimmten Zeiten benötigt sind, kannst Du diese zeitweise "auslagern" auf die MMC und dann gegen anderen austauschen wenn sie benötigt sind. Problem - erstens musst Du solche DBs haben, zweitens, es ist nur sinnvoll wenn Du deine Steuerung für Prozesssteuerung einsetzt wo die Zeiten zwischen Austäusche relativ lang sind - Minuten oder besser Stunden. Wenn es um Maschinensteuerung geht wo Du alle Paar Sekunden die DBs austauschen musst, ist Deine MMC in ein Paar Tage kaput!


----------



## Anonymous (11 Februar 2005)

Mit dem verkleiner geht es nicht, da das Programm als Vorgabe total aufgeblasen ist. Es gibt für jeden Antrieb einen riesen Datenbaustein.
Mit dem auslagern der DBs ist es auch schlecht, da die Daten immer benötigt werden.
Ist es denn richtig, dass die Memory Card (als FEPROM) nur als Sicherheitsablage dient?

Denn es gibt bei Siemens für die 400er CPU auch Memory Cards als RAM Speicher, so könnte ich ja anscheinend mein Problem beheben.
Außer dass ich dann halt kein EPROM zu sicheren Ablage hätte.

Verwirrt....


Thomas


----------



## williGo (11 Februar 2005)

Soweit ich weiss, haben die 400er einen begrenzten Ladespeicher (ältere CPUs sogar nur 8K). Dieser Ladespeicher wird durch Stecken eines RAM bzw. FEPROM erweitert. Wichtig ist für Dich, wie weit der Arbeitsspeicher ausgereizt ist, dieser lässt sich nämlich nicht erweitern


----------



## Anonymous (11 Februar 2005)

Im Arbeitsspeicher ist noch ausreichend Platz.
Also müsste ich beim Nachrüsten des Ladespeichers als RAM in Kauf nehmen, dass ich dann kein FEPROM mehr besitze?
Na wenn ich so um eine neue CPU herumkommen würde wär es zwar nicht schön, aber OK


----------



## williGo (11 Februar 2005)

Guck mal hier:


https://mall.automation.siemens.com...=-890-891-892-957-1133-1139-1141-&jumpto=1141

unter Technische Daten-Speicher


----------



## Jochen Kühner (11 Februar 2005)

*das steht da....*

Memory Card:
Zum Erweitern des integrierten Ladespeichers. Die im Ladespeicher enthaltenen Informationen umfassen neben dem Programm auch Parametrierungsdaten der S7-400 und benötigen deshalb etwa doppelt soviel Speicherplatz. Dadurch ergibt sich:

    * Integrierter Ladespeicher für große Programme nicht ausreichend, deshalb Memory Card oft erforderlich. Zur Verfügung stehen RAM- und FEPROM-Karten (FEPROM zur Speicherung auch in spannungslosem Zustand).


----------



## Anonymous (11 Februar 2005)

> * Integrierter Ladespeicher für große Programme nicht ausreichend, deshalb Memory Card oft erforderlich. Zur Verfügung stehen RAM- und FEPROM-Karten (FEPROM zur Speicherung auch in spannungslosem Zustand).



Aber ich kann doch nicht meine Daten die sich ständig ändern (Datenbausteine, Merker-Variablen etc.) auf einem Flash-Speicher speichern. Dann ist die doch nach kürzester Zeit hin.
Für Code sehe ich das ja ein, dass man diesen auf einer Flash-Karte speichern kann.


----------



## williGo (12 Februar 2005)

Daten werden nicht im Ladespeicher abgelegt.


----------



## Ralle (14 Februar 2005)

Ladespeicher einsparen kann man auch, indem man in den DB sowenig UDT und Struct verwendet wie möglich, da die den Ladespeicherbedarf enorm aufblasen.


----------



## Heinz (14 Februar 2005)

PDIAG frisst Speicher ohne Ende

Ansonsten Bausteine sinnvoll zusammenfassen
Bringt nicht die Welt.

Bausteinaufrufe nicht in KOP/FUP sondern in AWL 

Wenn möglich "große" Netzwerke, von KOP/FUP nach AWL konvertieren.
Spart in Summe einiges.


----------



## Anonymous (14 Februar 2005)

Also ich bin deshalb etwas verwirrt, da die Speicherverwaltung sich doch recht stark davon unterscheidet, was ich von Mikrocontrollern her so kenne.
Aber ich möchte mal zusammenfassen, was ich mir jetzt so zusammengereimt habe ;-) wenn jemand einen Fehler findet wäre es schön wenn er was dazu sagt:

Angaben beziehen sich auf eine S7-400:

- Das Programm, das ich am PG erstelle übertrage ich auf die CPU zuerst in den Ladespeicher. Im Ladespeicher sind dann noch Informationen enthalten, die nicht unbedingt für das Programm benötigt werden, deshalb wird nur ein Teil des Programms in den Arbeitsspeicher kopiert und dann bearbeitet.
- Aus der Tatsache ergibt sich, dass, wenn ich mir den Betriebszustand des Speichers anzeigen lasse, der Ladespeicher zu 98%, der Arbeitsspeicher jedoch nur zu 70% gefüllt ist
- Wenn die CPU im normalen betriebszustand ist, wird nicht auf den Ladespeicher zugegriffen
- Die aktuellen Werte in den Datenbausteinen werden im Arbeitsspeicher gespeichert
- Wenn ich vom PG aus einen Baustein in das AG übertrage, gelangen die Daten *immer* erst in den RAM-Ladespeicher der CPU. Ich kann sie nur nachher mit "RAM nach ROM kopieren" in den EPROM Bereich kopieren
- Ist mein interner RAM-Bereich (Ladespeicher) zu klein,  habe jedoch nur eine Flash-Karte gesteckt, muss ich die Flash-Karte opfern und eine RAM-Karte einbauen, da ich vom PG nicht die Bausteine direkt in den ROM-Bereich schreiben kann.

Was mir jetzt unsinnvoll erscheint: Was soll der RAM-Ladespeicher? Warum schiebe ich die Daten nicht gleich so, wie sie im Arbeitsspeicher gebraucht werden in den Arbeitsspeicher der CPU?

Grüße, Thomas


----------



## Zottel (14 Februar 2005)

Gast schrieb:
			
		

> Was mir jetzt unsinnvoll erscheint: Was soll der RAM-Ladespeicher? Warum schiebe ich die Daten nicht gleich so, wie sie im Arbeitsspeicher gebraucht werden in den Arbeitsspeicher der CPU?


Wohl auch deshalb, weil die Bausteine neben dem reinen Maschinencode noch Informationen zur Rückdarstellung enthalten, etwa die Netzwerkgrenzen.


----------



## Zefix (15 Februar 2005)

Also bei unseren 318ern steckt überall RAM (glaube 4MB).
Haben nur eine Anlage in der nix mehr Platz hat  :lol: 
Wegen sicherer Daten hat man ja die Pufferbatterie,die wir ca. alle 2-3 Jahre tauschen.
Hab mir aber auch noch  nie Gedanlen gemacht warum bei uns nur RAM steckt   

Gruss Zefix


----------



## Ralle (15 Februar 2005)

@Zefix

Weil Siemens der 318 nur einen Minispeicher spendiert hat (bei dem Preis eh ein Witz) und man deshalb auf jeden Fall nachrüsten muß. Ohne Zusatzspeicher geht in die 318 nur sowenig rein, daß man getrost auch eine kleinere SPS nehmen kann (es sei denn, jede ms mehr tut weh  :wink: )



> Bei Siemens gab es noch das hier:
> 
> FRAGE:
> Warum benötigt ein Zugriff auf ein Wort innerhalb eines UDT unterschiedlich viel Speicherplatz in einem FB, Multiinstanz-FB oder FC und deutlich mehr als ein Direktzugriff ?
> ...


Bei Datenbausteinen ist es ähnlich, delhalb vieleicht auch der große Unterschied zwischen Arbeitsspeicherbedarf und Ladespeicherbedarf ?


----------



## Maxl (15 Februar 2005)

> Wenn Du mehrere grosse DBs hast, die nur zu bestimmten Zeiten benötigt sind, kannst Du diese zeitweise "auslagern" auf die MMC......


So viel ich weiß, gibt es MMC nur bei S7-300



> - Das Programm, das ich am PG erstelle übertrage ich auf die CPU zuerst in den Ladespeicher. Im Ladespeicher sind dann noch Informationen enthalten, die nicht unbedingt für das Programm benötigt werden, deshalb wird nur ein Teil des Programms in den Arbeitsspeicher kopiert und dann bearbeitet.
> - Aus der Tatsache ergibt sich, dass, wenn ich mir den Betriebszustand des Speichers anzeigen lasse, der Ladespeicher zu 98%, der Arbeitsspeicher jedoch nur zu 70% gefüllt ist
> - Wenn die CPU im normalen betriebszustand ist, wird nicht auf den Ladespeicher zugegriffen
> - Die aktuellen Werte in den Datenbausteinen werden im Arbeitsspeicher gespeichert
> ...


Alles korrekt bis auf 1 Ausnahme:
Die S7-400 unterstützt die Funktion "RAM nach ROM kopieren" nicht. Man muss sich das Programm mit allen Aktualwerten aus der CPU ins PG holen und anschließend mit der Funktion "Anwenderprogramm laden auf Memory-Card" ins FEPROM schreiben
ACHTUNG: die CPU wird urgelöscht und anschließend wird das OFFLINE-Programm mit allen OFFLINE-Daten und der OFFLINE-Hardwarekonfiguration aufs FEPROM geschrieben.
Daher unbedingt vorher Bausteinvergleich und alle Daten von ONLINE nach OFFLINE kopieren!!!!!!




> Wegen sicherer Daten hat man ja die Pufferbatterie,die wir ca. alle 2-3 Jahre tauschen.
> Hab mir aber auch noch nie Gedanken gemacht warum bei uns nur RAM steckt.



Es bleibt Dir meiner Meinung nach nur diese Option - ROM raus und RAM rein. Aber vorher ebenfalls wieder alle Daten sichern - beim Einbauen der RAM-Karte wird die CPU urgelöscht!
Und: Pufferbatterien sorgfältig warten - alle 2-3 Jahre eine neue!


Wir setzen generell keine FEPROM in S7-400 ein - Ausnahme sind Seriennahe Maschinen, und solche die nach Übersee geliefert werden.



Und noch eine Bitte:
Bevor solche Einträge a la MMC gepostet werden, bitte die Fragestellung genau lesen!


----------



## RMA (15 Februar 2005)

> Bevor solche Einträge a la MMC gepostet werden, bitte die Fragestellung genau lesen!



Einverstanden!  

Das kommt davon wenn man ausschliesslich mit 300 CPUs arbeitet, man vergisst, dass es den 400 gibt!


----------



## Maxl (15 Februar 2005)

Es passt jetzt vielleicht nicht hierher, aber:
Wir haben in einer Anlage fälschlicherweise den FEPROM eines Servoumrichters (SEW Movidrive A) im 50 - 100ms Takt beschrieben. Der FEPROM hat das 3 Jahre mit sich machen lassen


----------



## Ralle (16 Februar 2005)

@Maxl
Da hat er aber Superlange durchgehalten normalerweise machen die doch nur einige Millionen Schreibzyklen mit, oder?


----------



## Maxl (17 Februar 2005)

Normalerweise ja
könnt jetzt nicht sagen ob einige 100.000 oder einige Millionen

in der zwischenzeit mussten einige Umrichter mit EPROM-Fehler ausgetauscht werden --> also nicht zu empfehlen
und das programm wurde auf "schreiben auf flüchtigen speicher" umgestellt


----------



## Anonymous (24 Februar 2005)

Hallo,
will nur nochmal schreiben was ich jetzt gemacht habe:
Ich habe die jetzt gesteckte Flash-Karte gegen eine RAM-Karte mit 256kB getauscht. So habe ich jetzt intern 256kB plus die 256kB auf der Karte = 512kB Ladespeicher. Die CPU ist die gleiche geblieben. Allerdings füllt sich der Codespeicher auch mittlerweile. Deswegen glaube ich auch nicht, dass man mit einer 412er CPU mehr Ladespeicher als 512kB benötigen wird weil dann sicherlich der Codespeicher irgendwann zu klein wird welcher ja nicht erweiterbar ist.
Allerding hat Siemens diesen Speicher ab März 2004 von 256 auf 512 kB aufgestockt - in meiner Anlage steckt allerdings noch eine CPU der alten Serie.

Nochmal Danke für die Tipps

MfG
Thomas


----------



## Anonymous (28 Februar 2005)

*vorrausschauend handeln*

Hallo,

Ich hatt auch kürzlich ähnliche Prob´s, musste mich entscheiden das ROM-Modul geg. ein RAM- Modul zu tauschen, damit ich während des Betriebes an meiner Anlage rumparametrieren kann und das geht ja nur wenn der RAM groß genug ist. 
Was aber wenn die lieben Kollegen der N8schicht einen spannungsausfall hatten und die Pufferbatterie im Ärmel war?????
Damit mann mich dann nicht ausm Bett klingelt habe ich eine EPROM-Karte mit den nötigen Bausteinen gut verpackt an die 
Schaltschranktür geklebt und drunter geschrieben:
Wenn garnix mehr geht dann Spannung aus....RAM raus...ROM rein und Spannung ein. RUN und das Baby hustet sich bis zu meiner Ankunft in der Früh durch. 
In Anbetracht der Tatsache, daß hier immer jede Menge Geld auf dem Spiel steht (Produktionsausfall etc.) sollte mann für jeden Fall gerüstet sein.

Grüße Hardy


----------



## Maxl (28 Februar 2005)

@Hardy
Wird die Pufferbatterie regelmäßig gewechselt, wird man das Problem nie kriegen!
Sind die Instandhalter nicht entsprechend dahinter, und man hat als Programmierer sauber gearbeitet (Störmeldung am OP, Hinweis in der Betriebsanleitung), kann man doch mit ruhigem Gewissen das Telefon in der Nacht ausschalten.


@Thomas
Wenn Du Deine Änderungen alle gemacht hast, könntest Du das fertige Programm doch wieder auf eine Flash-Karte spielen.
Einfach das Offline-Programm wieder auf den aktuellen Stand (mit aktuellen DBs usw.) bringen, RAM-Karte entfernen, Flash einbauen und Programm auf Föash überspielen (Vorgangsweise siehe oben)

Der Programmstand ist dann auf Flash, und der interne RAM ist vorerst leer (also Platz für kurzfristige Änderungen)


----------



## Anonymous (22 Dezember 2005)

Heinz schrieb:
			
		

> PDIAG frisst Speicher ohne Ende
> 
> Ansonsten Bausteine sinnvoll zusammenfassen
> Bringt nicht die Welt.
> ...


----------



## Jan (26 April 2010)

Ralle schrieb:


> Ladespeicher einsparen kann man auch, indem man in den DB sowenig UDT und Struct verwendet wie möglich, da die den Ladespeicherbedarf enorm aufblasen.


 
Hallo Ralle,

ich denke mein Problem passt zu deinem Kommentar.

Ich habe eine S7-400 bestehende Anlage.
Der Ladespeicher der CPU war bei 93%.
Ich habe mehrere DBs mit jeweils zwei UDTs geladen.
Die UDTs waren jeweils die gleichen.
(DB102 / UDT 100 / UDT 101) / (DB103 / UDT 100 / UDT 101) / ...
Dann war der Ladespeicher bei 97%; knapp, aber völlig ok, da ich keine weiteren DBs laden muss.
Dies habe ich getan, damit die Datenpunkte für das Leitsystem schon mal vorhanden sind und mein Kollege das Leitsystem komplett einspielen kann.
Nun hat sich herausgestellt, dass es Sinn macht, jedem DB einen eigenen ersten UDT zu geben.
(DB102 / UDT 102 / UDT 101) / (DB103 / UDT 103 / UDT 101) / ...
Beim laden in die CPU der bereits vorhandenen DBs (nur mit neuen UDTs, kam plötzlich die Meldung, dass der Ladespeicher zu klein ist.
Nach dem komprimieren, war der Ladespeicher bei 40%.
Nun stelle ich mir die Frage, ob ich die DBs, die ich noch laden muss, in die CPU bekomme. 
Werden die vorhandenen DBs nicht einfach durch die neuen DBs ersetzt?
Die Länge, Datentypen, etc. sind gleich. Nur einzelne Werte und Kommentare sind unterschiedlich.

Habe ich nun ein großes Problem, oder komme ich noch mit dem Ladespeicher klar?


----------



## thomass5 (26 April 2010)

Hallo,
ich denke, Du bekommst die DBs noch in die CPU. Wenn Du Bausteine änderst und einspielst, werden die alten nicht gelöscht/überschrieben, sondern nur inaktiv geschalten. Erst durch das Komprimieren werden diese "Leichen" dann endgültig gelöscht.
Thomas


----------



## Jan (26 April 2010)

thomass5 schrieb:


> Hallo,
> ich denke, Du bekommst die DBs noch in die CPU. Wenn Du Bausteine änderst und einspielst, werden die alten nicht gelöscht/überschrieben, sondern nur inaktiv geschalten. Erst durch das Komprimieren werden diese "Leichen" dann endgültig gelöscht.
> Thomas


 
Super, danke.

Das wuste ich noch nicht. 

Dann ist ja alles im grünen Bereich und ich habe mehr Speicherplatz, als gedacht. 

Danke, danke, danke.


----------

