Min-Max Werte mit Zeitstempel speichern

klauserl

Level-2
Beiträge
246
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute habe ein kleines Problem!
Ich will über 24 h jeweils den niedrigsten und höchsten Wert einer Real Zahl einmal am Tag (0 Uhr) mit Uhrzeit (wann der höchste und der niedrigste Wert war) in einem Datenbaustein speichern.
Das Auswerten vom höchsten und niedrigsten Wert mit Zeitstempel bereitet mir noch keine Schwierigkeiten. Aber wie stell ich es am besten an die Werte brauchbar in den DB zu schreiben?
Ist es möglich bei jedem schreiben in den DB automatisch eine oder zwei Zeilen hinzuzufügen?
Wieviele Einträge kann ich in einen DB schreiben?
Danke für Eure Hilfe!!!! :lol:
 
Hi,

Grundsätzlich begrenzt in einer S7 nur der Arbeitsspeicher die Länge deines DB's. Aber ich denke es gibt sicher einen definierten maximalen Zeitraum für deine MIN MAX Aufzeichnung. Mach den DB so lange das hier alles Platz hat. Du kannst auch mehrere DB's machen, die du dann wechselst.

Gruß Centi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
CPU 221, 222, 224, 224 XP, 226
Daten- und Programmspeicher
- Datenspeicher, max. 2 KByte
- Programmspeicher, max. 4 KByte

S5 - DB's
Datenbausteine ermöglichen das Ablegen bzw. Aufrufen von bestimmten Daten (Bitmuster, Zahlenwerte, Meldetexte).
Insgesamt sind 256 Stück verfügbar (DB0 - DB255), wobei der DB0 für das Betriebssystem und der DB1 für die Parametrierung interner Funktionen reserviert sind.
Jeder der Datenbausteine nimmt nochmals 256 Datenwörter auf, so dass insgesamt 65024 einzelne Daten abgelegt werden können.
 
Ich glaube bei einer 300-er CPU ist bei der Größe im Arbeitsspeicher bei ca. 16384 Schluß. Größere Datenbausteine kann man zwar im Manager anlegen, man bekommt sie aber nicht in die CPU übertragen. Vielleicht hängt die mögliche Größe noch von der CPU ab, bei meiner letzten 315 waren es jedenfalls besagte 16384 (unter 16000 ging problemlos).

Edit:

Ach so, noch zu deiner Frage:

Du kannst einen Datenbaustein nicht dynamisch verlängern, legst also die Größe am Anfang fest. Für die Tageszeit benötigst du eine 32-Bit-Variable, für deinen Min- und Max-Wert ebenfalls, wenn es eine Gleitpunktzahl ist. Dafür würde ich eine Struktur anlegen (für den DB eine Struktur in einer UDT), in welche du dann jeweils die Uhrzeit und den Min- oder den Max-Wert einträgst. Du vergleichst jeweils die im DB stehenden Werte mit den gemessenen, ergeben diese einen neuen Min- oder Max-Wert, trägst du diesen in den DB ein und vergleichst zukünftig mit diesem. Am Tagesende mußt du nur den Zeiger auf den Anfang der Struktur erhöhen um mit dem nächsten Tag weiterzumachen. Am einfachsten läßt sich sowas in SCL realisieren, da mußt du dir keine Gedanken um indirekte Adressierung machen, die du in AWL wohl brauchen wirst.
 
Zurück
Oben