Daten speichern in Dateien - mit JSON?

O'Gigis

Level-1
Beiträge
97
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

ich möchte einfache Daten in STRING/ INT Form vlt. auch mehrere in einem STRUCT zusammengefasst in einer Datei speichern. Zudem möchte ich Parameter als Daten in eine Datei speichern so das diese ausserhalb der PLC vom Anwender einfach verändert werden können.

Ich bin offen für Vorschläge und Neugierig wie ihr das so gelöst hab, bisher hatte ich für kleinere Anwendungen die Parameter einfach in einer Text-Datei gespeichert - da mussten die Anwender aber die Bedeutung der einzelnen Positionen kennen. Für die neue Anwendung werden es sehr viel mehr Parameter sein und da benötige ich eine ander Lösung, dachte im ersten Moment an XML Files aus denen hervorgeht um welche Parameter es sich handelt, so richtig übersichtlich finde ich das aber nicht.

Ich bin absoluter Neuling was JSON angeht, die Struktur gefällt mir schonmal sehr gut und ich könnte mir vorstellen, dass Anwender damit gut zurecht kommen. Also das Lesen und das Ändern der Parameter. Nun wollte ich mich mal in der Infosys mal schlau darüber machen .... ich finde kein einfaches Beispiel in der gezeigt wird wie eine Datei von einem lokalen Speicherort im JSON Format gelesen bzw. beschrieben und gespeichert wird :confused: Hat jemand einen Link für mich?

Wie gesagt, bin auch offen für andere Vorschläge wie man solche Daten speichern könnte.
 
JSON ist ein typischen IoT-Datenformat.
Je nach Steuerung gibt es sogar fertige Bibliotheken dafür.
Also mal beim entsprechenden Steuerungshersteller suchen.

Auf der PC-Seite gbt es genauso für nehezu jede Programmiersprache entsprechende Libs.
Und je nach Programmiersprache ist dann halt das Handling der Lese- und Schreibbefehle anders.

Fazit:
Wenn du uns Steuerung und Programmiersprache sagst, kann man dir etwas besser helfen :)
 
Hallo,

JSON ist meiner Meinung nach nicht wirklich einfacher als XML. Bei XML hat man nur mehr Freiheiten der Strukturierung. Und eigentlich sind die beiden Formate nicht wirklich zur manuellen Auswertung/ Änderungen gedacht. Es ist zwar etwas leichter zu lesen aber mehr auch nicht.

Aber sieh Dir mal das Beispiel Tc3JsonXmlSampleJsonDataType darüber an: https://infosys.beckhoff.com/conten...36028800683720331.html?id=4376861655900560305

Das zeigt doch schon alles was Du willst. Du mußt dann nur noch den String sJsonDoc speichern

Gruß
 
Kann ich den String also ganz normal in einer Text Datei speichern? Und wenn ich anschließen diesen String aus der Text Datei zurück in die PLC Struktur lesen möchte, welchen Befehl nehme ich dann?

Wie gesagt, ich höre mir auch gerne Alternativen an um die Daten zu speichern :s13:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann ich den String also ganz normal in einer Text Datei speichern? Und wenn ich anschließen diesen String aus der Text Datei zurück in die PLC Struktur lesen möchte, welchen Befehl nehme ich dann?

SetSymbolFromJson()

Naja, ich sehe es auch so wie Thruser. Für manuelle Änderungen ist JSON nicht sonderlich gut geeignet.
Mit einem guten JSON-Editor sieht es wieder anders aus.
Frag mich jetzt aber nicht, welcher Editor nur für das Ausfüllen / Ändern von JSON-Datenfeldern am besten geeignet ist :p
 
Kann ich den String also ganz normal in einer Text Datei speichern? Und wenn ich anschließen diesen String aus der Text Datei zurück in die PLC Struktur lesen möchte, welchen Befehl nehme ich dann?

Wie gesagt, ich höre mir auch gerne Alternativen an um die Daten zu speichern :s13:

Mal unabhängig von der Systemwelt, in der wir uns bewegen - deine Daten-Datei wird immer irgendwelchen Regularien folgen müssen, damit du, nachdem sie extern manipuliert/verändert worden ist, sie wieder automatisiert einlesen kannst. Hier kannst du dir natürlich alles mögliche überlegen. Die einfachste Form war wahrscheinlich dein erster Ansatz : eine CSV-ähnliche Datei. Du kannst auch etwas machen ähnlich den alten Windows-INI-Files (MeinWert=2345 - hier ist deine Variable dann MeinWert und nach dem Gleichheitszeichen steht dann die Zuordnung - auch das wäre erkennbar für einen Import). XML und JSon sind dann (aus meiner Sicht) Konzepte, die daraus entstanden sind um mehr Möglichkeiten zu bieten.

Wenn du es wirklich wasserdicht haben willst dann solltest du für ein Editieren immer eine Applikation haben, die die Spielregeln beachtet, und nicht einen Editor (egal ob nun TXT oder was auch immer).
Benutzt du eine Applikation dann ist der Aufbau des Datenfiles dann auch wieder ohne Belang ...

Gruß
Larry
 
Der Vorteil bei XML und JSON ist, dass man diese anhand von Schemas validieren kann. So ein Validator ist aber ein komplexes Stück Software, sowas in der SPS nachzubilden ist sicher kein leichtes Unterfangen.

Aktuell nutze ich JSON in meinen HMIs für Konfiguration, Rezepte und Fehlermeldungen. (In Web-basierten Anwendungen ist JSON der Standard denke ich).
In C# ist aber XML noch das Format meiner Wahl, weil es einfach schon fix und fertige Bibliothek dafür gibt.
Direkt im SPS Programm nutze ich entweder das INI-Format, das Larry schon vorgeschlagen hat (wenn die Daten leicht lesbar/editierbar sein sollen) oder CSV wenn es sehr viele Daten sind. Wobei Beckhoff ja auch Bibliotheken zur XML-Verarbeitung anbietet.

Wichtig ist, egal wie man die Daten einließt, immer prüfen ob diese auch plausibel sind. Ich habe schon erlebt wie eine Anlage fast zu Schrott gefahren wurde, weil in der Konfig "." als Dezimaltrennzeichen verwendet wurden und die Steuerung diese aber als Tausendertrennzeichen interpretiert hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du es wirklich wasserdicht haben willst dann solltest du für ein Editieren immer eine Applikation haben, die die Spielregeln beachtet, und nicht einen Editor (egal ob nun TXT oder was auch immer).
Benutzt du eine Applikation dann ist der Aufbau des Datenfiles dann auch wieder ohne Belang ...

Gruß
Larry

Werde jetzt in meiner Applikation eine Editiermöglichkeit schaffen und die Parameter in Retain deklarierte Variablen schreiben. So muss ich mir keinen Kopf darüber machen wie ich diese speichere und lese und kann sicher gehen, dass sie nach meinen Reglen eingegeben werden. Dank euch für eure Tipps und Hinweise :p
 
Zurück
Oben