TIA Remanenzspeicher ausgelastet

WuselDusel

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

habe folgendes Problem:

Es sollen insgesamt 100 Datensätze mit jeweils einer 8 stelligen Zeichenkette in einen DB gespeichert werden.
Jeder Datensatz muss Remanent sein sodas die Daten beim Abschalten der Maschine nicht verloren gehen.

Die verwendete Steuerung hat eine Remanenzspeicher mit 10240Byte, jedoch benötigen 100 Datensätze vom Typ String 25600Byte ( 256Byte * 100 ).

Also zu viel... :???:

Besteht die Möglichkiet den verwendeten String im Datenbereich einzugrenzen sodas er nur noch 8 Byte pro Datensatz benötigt?

Verwendet wird eine S7 -1200 CPU 1212C DC/DC/DC/RLY
Programmiert wird mit TIA V12 SP1


Gruß WuselDusel
 
string [8] ist dann aber auch nur noch eine 6 stellige zeichenkette... aber wenn er die daten nur als "array of char" speichert hat er 8 zeichen für 8 byte. im programm dann wieder in der auswertung einen string draus machen und die stringlängeninfos hinzukopieren
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...Es sollen insgesamt 100 Datensätze mit jeweils einer 8 stelligen Zeichenkette in einen DB gespeichert werden... jedoch benötigen 100 Datensätze vom Typ String 25600Byte...

es ging mir nur darum aufzuzeigen, das er die ganzen strings (incl. der beiden infobytes) sichert, aber wohl nur platz für die eigentlichen zeichen hat und das er sich die daten einfach "blanco" als reine zeichenketten speichern soll und im programm später wieder strings draus macht...
 
Bei einem Array of Char benötigst du aber zumindest ebenfalls ein Zusatz-Byte. Entweder um eine Null als Ende-Kennung anzuhängen (wie bei C-Strings) oder um doch die aktuelle Länge mit abzuspeichern.
 
Anders rum:
100 Strings * 10 Byte = 1000 Byte, also nur ca. 10% des Remanenzspeichers.
Kurzum, kein wirklicher Grund darüber zu diskutieren.

@Ducati
Die S7-1200 hat keinen Speicherkartenzwang, von da her stellt sich die Frage nicht so ganz.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für eure Antworten!

Ich habe im DB, wie Michi es beschrieben hat, den Bereich mit STRING[8] eingrenzen können und somit die Auslastung des Remanenzspeichers dementsprechend senken können. Um genau zu sein auf 23% :ROFLMAO:

Bei diesem Fall wird deutlich das eine 1200 für solch "große" Datenverarbeitungen eigentlich nicht gerade ideal ist.

Ich bin mir auch schon ziemlich sicher das ich Probleme mir der Auslastung des Arbeitsspeichers bekommen werde wenn man bedenkt, dass unter den 100 Datensätzen noch einige vergleichs-Operationen vorgenommen werde müssen.:roll:

Gruß WuselDusel
 
Hallo,

habe hier eine 1212C CPU und das gleiche Problem mit 100% ausgelastetem Remanzenspeicher. Benötige nun allerdings einen DB
der Reamanet sein soll. Wenn ich die MMC installiere bleiben die DB remanent zur Verfügung? Oder haeb ich da was falsch verstanden?

Gruß NSN
 
Die Frage ist, was da drin ist, was wirklich remanent sein MUSS.
Bei optimierten DBs kannst du ja für die konkrete Variable festlegen ob remanent oder eben nicht.

Die Memory Card, hier SD-Karte, ändert am Remanzspeicher auch nichts, das ist eigentlich nur interessant beim CPU-Tausch oder bei Webservergeschichten.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit einer Memory Card kannst Du den Ladespeicher vergrößern, aber nicht den in die CPU fest eingebauten Remanenzspeicher! Reicht der Remanenzspeicher nicht, dann hilft nur reduzieren der Datenmenge oder eine CPU mit mehr Remanenzspeicher.

Hier noch mal der Auszug aus dem Systemhandbuch 1200 V3:
4.1.6 CPU-Speicher​
Speicherverwaltung​
Die CPU stellt die folgenden Speicherbereiche für Anwenderprogramm, Daten undKonfiguration bereit:● Der Ladespeicher ist ein nicht-flühtiger Speicher fü Anwenderprogramm, Daten und
Konfiguration. Beim Laden eines Projekts in die CPU wird das Projekt zunähst imLadespeicher abgelegt. Dieser Speicher befindet sich entweder auf einer Memory Card(sofern vorhanden) oder in der CPU. Der nicht-flühtige Ladespeicher bleibt auch beieinem Spannungsausfall erhalten. Die Memory Card unterstüzt einen größrenSpeicherbereich als den in der CPU integrierten.● Der Arbeitsspeicher ist ein flühtiger Speicher fü einige Elemente des Anwenderprojektswärend der Bearbeitung des Anwenderprogramms. Die CPU kopiert einige Elementedes Projekts vom Ladespeicher in den Arbeitsspeicher. Dieser flühtige Speicherbereichgeht bei Spannungsausfall verloren und wird bei Spannungsrükkehr von der CPU​
wiederhergestellt.

Der remanente Speicher ist ein nicht-flüchtiger Speicher für eine begrenzte Menge anArbeitsspeicherwerten. Der remanente Speicherbereich dient zum Speichern der Werteausgewählter Adressen des Anwenderspeichers bei Spannungsausfall. Wenn eineAbschaltung oder ein Spannungsausfall auftritt, stellt die CPU diese remanenten Werte​
beim Anlauf wieder her.
 
Die Frage ist, was da drin ist, was wirklich remanent sein MUSS.
Bei optimierten DBs kannst du ja für die konkrete Variable festlegen ob remanent oder eben nicht.

Die Memory Card, hier SD-Karte, ändert am Remanzspeicher auch nichts, das ist eigentlich nur interessant beim CPU-Tausch oder bei Webservergeschichten.


Mfg
Manuel
Hi
da muss ich ein bisschen widersprechen: Du kannst auch Daten über die READ_DBL WRITE_DBL als unlinked DBs auf der Memory card lesen / schreiben. Und wenn die Daten dann abholst und in den DB kopierst ist es auch remanent....vor allem auch alles was auf der MC liegt.

Zusätzlich dazu gibt es seit der V13 auch für die 12xx recipies. Dort können Daten als CSV auf der MC abgelegt werden, und sind damit auch remanent. Die Hauptfrage ist halt ob du die Daten dauerhaft schreiben musst (dann sind beide Lösungen nicht wirklich geeignet) oder hauptsächlich diese Daten lesen musst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hätte das jetzt eigentlich bestenfalls als Ergänzung brtrachtet,
aber beide Punkte sind nichts was ich jetzt begrifflich mit remanent Verbinden würde.

Gesendet von meinem GT-I9505 mit Tapatalk
 
Zurück
Oben