DLOG_STORE_FILE_XML Datenablage

Begonnen von maxmummelmann, 17. Dezember 2012, 19:12:24

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

maxmummelmann

Hallo,

ich habe eine Wago 750-881 laufen. Über eine Ajax- Website kann ich so bestimmte Funktionen im Haus steuern.

Zur Zeit lese ich die Daten der SPS mittels einer Internetseite über den Befehl readip aus. Dieser steht in einer separaten XML Datei, die per Ajax im Hintergrund geladen wird. Mit dem Befehl readip kann ich allerdings keine Strings lesen.

Nun habe ich ein wenig mit dem Baustein DLOG_STORE_FILE_XML rumprobiert.
Mein Problem ist jetzt allerdings, dass ich keine fortlaufende Datensätze benötige (wie dieser Baustein ausgibt), sondern unter dem Jeweiligen Knoten, denn einen Datensatz nur aktualisiert benötige. Ich bin mir sicher, das dies mit diesem Baustein geht, wenn er ein wenig verändert wird. Nur da komme ich nicht weiter. Kann mir da jemand helfen?

zum Beispiel:

    <WETTER>wert</WETTER> und als "wert" z.B. sonnig

peewit

hallo

habe ich das richtig verstanden , das du xml-daten per http-get gekommst und möchtest die enthaltenen xml-elemente parsen ?

maxmummelmann

hallo,

ja - ich parse die xml-elemente.

Ich habe mir eine Dynamische Webseite geschrieben, mit der ich Funktionen in meinem Haus Steuern kann. Dies funktioniert auch alles sehr gut. Ich möchte aber auch Strings mit dieser Webseite lesen können. Die von Wago mitgelieferten Befehle hören aber bei einem Doppelwort auf. Nun habe ich mir überlegt dies mit eurem Baustein DLOG_STORE_FILE_XML zu realisieren. Also bei Änderung der Zustände in die XML-Datei zu schreiben. Allerdings muss ich die jeweiligen Daten an einen Bestimmten Knoten binden. Dieser sollte dann jeweils den aktuellen Status haben, so das ich diese Daten Dynamisch, also ohne die Html-Seite neu zu laden auf meiner Seite anzeigen kann. Zur Zeit wird lese ich die Daten mit Hilfe von readpi Befehlen direkt beim abrufen der XML Datei.

Ich habe zwar schon versucht aus Eurem Baustein etwas zu bastel. Leider bin ich bis jetzt daran gescheitert. Wichtig ist für mich, dass keine neuen Datensätze geschrieben werden, sondern nur der jeweilige Knoten aktualisiert wird.

Die XML-Datei wird nach einer bestimmten Zeit von der Internetseite ausgelesen. So das ich Zustände anzeigen kann.


peewit

hast du schon geprüft ob die webseite auch auf die sps erzeugten dateien zugreifen kann
oft werden die bereiche voneinder getrennt

webseiten und klassiche dateien sind sehr oft voneinander abgeschottet

weiters wäre es am einfachsten wenn du die datei einfach mittels string schreiben selber erzeugst
der dlog baustein ist auf jeden fall völlig verkehrt !

so wirklich was passendes fertiges für dich gibt es nicht !

maxmummelmann

hmm,

also auf die erzeugte XML-Datei aus dem dlog Baustein kann ich zugreifen dies funktioniert auch gut. Aber dieser legt immer wieder neue Datensätze an (soll er ja auch). Ich wollte diesen aber benutzen um eine XML Datei mittels der SPS zu erzeugen.

Denn ich habe keine Ahnung wie ich sonst eine XML Datei erstellen kann. Diesen Baustein sehe ich daher als ideale Lösung, habe ihn auch schon versuchsweise umgeschrieben. Und Knoten mit meinem eigenen Bezeichnungen angelegt. Nur habe ich diesen Baustein noch nicht ausreichend verstanden um die Änderung so weit zu führen, dass immer wieder in den selben Datensatz (unter dem selben Konten) die Daten abgelegt werden. Dafür ist mir dieser Baustein zu Komplex.

Die Sache mit dem String schreiben verstehe ich leider noch nicht. Hast du da irgendwelche Anregungen?

Und Danke für die bisherige Hilfe!



maxmummelmann

hallo peewit,

ich habe noch ein wenig darüber nachgedacht und auch versucht zu verstehen was du meinst..

Ich bräuchte einen Baustein der so ähnlich aufgebaut wäre wie die INI- Bausteine - nur halt für xml. Wäre so etwas ein Problem den zu schreiben? Ich glaube dabei komme ich nicht weiter.

Als Eingänge wären da z.B. folgende Dinge interessant:

Dateiname
Knoten
Wert

Oder kann mich dabei jemand unterstützen?

Werte Auslesen per Ajax ist sehr komfortabel, denn man kann mit jeden x-belibigen Gerät auf die Steuerung zugreifen (Handy, Computer, Tablet) egal welches Betriebssystem.

peewit

hallo

das ist alles ziemlich kompliziert, denn du darfst nicht von einem echten pc ausgehen
auf einer sps haben wir beschränkten speicherplatz, und keine möglichkeit dynamisch zur laufzeit irgendwelchen speicher zu belegen
du kannst auch nicht so einfach in einer xml-datei einen text austauschen.

wenn nähmlich der neue text kürzer oder länger ist, dann verschiebt sich alles nachfolgende....

auf einem pc wird folgendes gemacht
es werden alle xml elemente geparst und als elemente baum im speicher abgelegt
selbst dass ist schon ein riesiges problem für eine sps
dann musst du die xml elemente im speicher löschen,ändern etc...
und zum schluss die original datei löschen und dann wieder erzeugen und den xml baum seriell wieder in die datei schreiben
man kann nämhlich keine datei verkleinern (verkürzen)

das was du vorhast, ist das komplizierteste was du mit einer sps machen kannst
wenn überhaupt dann kann man das nur sehr eingeschränkt machen, und wahnsinnig viel arbeit

überlege dir eine andere lösung....