TIA Ladespeicher lesen/schreiben Multiplexen

Tycos

Level-2
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe für ein Programm 27 Rezepturen zu je 126 Variablen (Real + Bool) und möchte diese im Laderspeicher so ablegen das man eine Rezeptur bearbeitet werden kann und eine weitere ausgeführt wird.
Das lesen / schreiben ist soweit kein Problem, meine Frage ist nur ob ich jetzt für jeden Lesevorgang einen eigenen READ_DBL Baustein,
bzw für jeden Scheibvorgang einen eigenen WRIT_DBL Baustein brauche oder ob ich Ziel/Quelle im Ladespeicher DB Multiplexen kann.


--- Markus
 
Wie oft ändern sich Deine Rezepturen?
Ich würde bei Änderung einer Rezeptur wohl immer den kompletten DB mit allen 27 Rezepturen mit WRIT_DBL in den Ladespeicher schreiben und gar kein READ_DBL benutzen. Das vereinfacht das Handling ungemein.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde mal sagen das im Schnitt eine bis zwei Rezepturen am Tag geändert werden, in den meißten Fällen sind wohl auch nur eher bis zu 10 überhaupt in Verwendung.
Als quasi Serienprodukt muss es nur imstande sein bei Bedarf auch ein paar mehr zu können ohne dabei wieder direkt im Programm eine Änderung vornehmen zu müssen.
 
Mit den Rezepturen wird eh' nur im Arbeitsspeicher gearbeitet, auf den Ladespeicher speichern ist nur für den Fall, daß der Rezeptur-DB die Remanenz verliert. Aus dem Ladespeicher in den Arbeitsspeicher holen ist nur bei dem Remanenzverlust oder Urlöschen nötig und wird von der Firmware der CPU automatisch gemacht.

Im Arbeitsspeicher hast Du einen DB mit dem "Rezeptbuch" Array[1..27] of Rezeptur + eine Rezeptur-Kopie mit der das Programm arbeitet + eine Rezeptur-Kopie zum Editieren. (die beiden Kopien in anderen DB als das Array)

Im Rezeptur-Editor wird ausgewählt welche Rezeptur zum Bearbeiten aus dem Array in die Edit-Kopie geladen wird. Wird im Rezeptur-Editor "Speichern" gedrückt (Flanke), dann die Edit-Kopie zurück in das Array speichern und das komplette Array oder nur den Teil mit der geänderten Rezeptur (*) per WRITE_DBL in den Ladespeicher schreiben. Weitere Speicherwünsche (unwahrscheinlich) werden solange ignoriert bis WRITE_DBL fertigmeldet. Der Ladespeicher verträgt das -zigtausend Mal - also viel viel häufiger als alle Deine Rezepturen geändert werden. Da sehe ich überhaupt kein Problem in der zulässigen Häufigkeit.

(*) wenn nur die geänderte Rezeptur auf den Ladesspeicher zurückgeschrieben werden soll, dann muß bei WRIT_DBL die Parameter SRCBLK und DSTBLK mit variablen/berechneten ANY-Pointern versorgt werden. Wenn immer alle Rezepturen geschrieben werden sollen, dann kann man konstante ANY-Pointer direkt an die Parameter schreiben.
Ich vermute, ob man WRITE_DBL mit dem gesamten DB oder nur mit Teilen des DB beauftragt spielt keine Rolle - geschrieben werden tatsächlich nur die Bytes, welche sich vom Ladespeicher unterscheiden. Nur die Ausführung des WRITE_DBL wird etwas länger dauern.

Harald
 
Danke für deine Ausführliche Antwort, das hat erstmal alle Klarheiten beseitigt ;)
Spass beiseite, das hat ersmal alle Fragen beantwortet und sogar ein paar von denen ich noch garnicht gewusst habe das ich sie habe.

Markus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Harald,

ist es bei WRIT_DBL und READ_DBL nicht so, dass nun VARIANT an SRCBLK und DSTBLK angelegt werden muss? Ich habe noch keine Möglichkeit gefunden, diese Pointer zu beschreiben, auch ist das Überlagern mit einem Struct nicht erlaubt, was bei einem Any super funktioniert hätte.

Gruß Werner
 
Zurück
Oben