Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

SP RTE Speicher reservieren ...

mactoolz
2011-02-12
2012-04-05
<< < 1 2 3 (Page 3 of 3)
  • Erik Böhm - 2012-04-05

    Moin

    Vermutlich nimmt die Anteilnahme an dem Thread proportional mit der mangelnden Einsicht zur Notwendigkeit einer Lösung ab
    Es ist übrigens wieder Zeit für Spring Session Snowboarding...

    Zum Thema. Ein ähnliches Problem habe ich mit dem Einlesen von gespeicherten Watchlisten.
    Diese sind im Format:

    VarName=VarValue

    gespeichert.

    Aus der Liste kann natürlich kein Datentyp und auch keine Adresse gelesen werden.

    Deshalb gibts eine nicht schöne aber funktionierende Lösung.

    Ich mach mir 2 Array's die 1. den Datentyp und 2. den Variablennamen enthalten.

    Zugeordnet wird das ganze dann in 2 Schleifen.
    Wie gesagt, nicht schön aber funktioniert. Und flexibler ist deine angedachte Lösung auch nicht, wenn ich das richtig verstanden habe.
    Denn schlussendlich soll das ganze ja in eine CSV Datei, und daszu brauchts du ja wieder eine Zuordnung zum Variablennamen.

    Gruß Erik

    LOADWATCHLIST.EXP [6.41 KiB]

     
  • Anonymous - 2012-04-05

    Originally created by: blackenslaver666

    My 2 cents:
    1. Erik hat da vollkommen recht. Wie will man eine Adresse zum Kopieren berechnen wenn man den Datentyp der einzelnen Struct-Vars nicht kennt? Das hat dann zur Folge dass man immer mehrere Strukturen pflegen muss. Und wenn die mal auseinanderdriften...
    2. Wenn man eine CSV erstellen will, sprich eine Datei mit menschen-lesbaren Daten, warum sollte man dann die Füll-Bytes einer Var eliminieren? Man kann eben nicht alles über Bytes erfassen.

    Wir nutzen eine komplexe Struct, die wir komplett byteweise speichern (unabhängig von den Datentypen der Vars). Wird die Steuerung über die USV gepuffert schreiben wir die Daten auf die Flash. Dazu wird nur die Startadresse & Größe der Struct an einen Binär-Writer übergeben. Beim Laden (SPS-Start) werden die Daten wieder in den entsprechenden Speicherbereich zurückkopiert. Das funktioniert gut solange ein Online-Change erlaubt ist. Ändert sich die Größe der Struktur wird diese automatisch gesichert. Nur wenn man die Struktur ändert, gleichzeitig aber kein OC erlaubt ist bekommt man Probleme. Denn nach dem Start stimmen Struct-Größe & Anzahl der zu lesenden Bytes nicht mehr überein & dann verschiebt sich der Inhalt um bestimmte Bytes. Mit einem ASCII-Writer funktioniert das ebenso gut, dauert nur viel länger.

    Gruß Andy

     
<< < 1 2 3 (Page 3 of 3)

Log in to post a comment.