Problem mit Speichergröße

A

Anonymous

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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!
 
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
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
* 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.
 
Ladespeicher einsparen kann man auch, indem man in den DB sowenig UDT und Struct verwendet wie möglich, da die den Ladespeicherbedarf enorm aufblasen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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
 
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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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 :oops:

Gruss Zefix
 
@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 ?

ANTWORT:
Ein Direktzugriff auf ein Wort benötigt lediglich einen Befehl. Ein Zugriff auf ein Wort innerhalb eines UDT hingegen benötigt ca. 20 Befehle.
Der unterschiedliche Speicherbedarf zwischen einem nicht multiinstanzfähigen FB und dem Ladebefehl in einem Multiinstanz-FB resultiert aus der Abarbeitung über das Adressregister AR2 bei Multiinstanz - Bausteinen. Dadurch erhöht sich bei Ladebefehlen innerhalb eines Multiinstanz-FBs die Zahl der Befehle.
Bei der Ausführung des Ladebefehls in einer Funktion (FC) erhöht sich die Anzahl der Befehle durch die Bearbeitung über den vorhergehenden L-Stack.

Im folgenden Beispiel ist der Speicherbedarf für jeweils einen Ladebefehl eines Wortes aufgelistet:

Speicherbedarf bei Direktzugriff Zugriff über UDT
FB nicht multiinstanzfähig 2 Byte 14 Byte
FB multiinstanzfähig 2 Byte 42 Byte
FC 2 Byte 48 Byte


Tabelle 1: Speicherbedarf im Überblick

Hinweis:
Durch vermehrte Direktzugriffe sinkt der Speicherbedarf und damit die Anzahl der vom Compiler generierten Anweisungen. Damit erreichen Sie eine geringere Zykluszeit.
Bei Datenbausteinen ist es ähnlich, delhalb vieleicht auch der große Unterschied zwischen Arbeitsspeicherbedarf und Ladespeicherbedarf ?
 
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
- 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.
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!
 
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 ;)
 
@Maxl
Da hat er aber Superlange durchgehalten normalerweise machen die doch nur einige Millionen Schreibzyklen mit, oder?
 
Zurück
Oben