Kunden Adressierung

BaumimGarten

Level-2
Beiträge
63
Reaktionspunkte
0
Hi Leute,

Kann mir bitte jemand Hilfestellung für mein Problem geben, wie ich das gestalten soll.
Ich habe ein Programm geschrieben in den Daten aus Anlagen eingespeist werden sollen und in einer Weboberfläche dargestellt werden sollen.
Da das System verschiedene Werte aus der Anlage verarbeiten soll, die ich zum Stand jetzt noch nicht weiß, ist die Frage wie ich die neuen Werte bzw. Variablen in meinem Programmcode adressieren soll. Der Kunde soll nämlich anstatt in meinem Programm seine neu erstellten Variablen zu adressieren, einfach nur seine Datenwerte auf bestimmte Speicherorte bzw. Variablen schreiben.
Der Datensatz der in die Weboberfläche eingespeist werden soll ungefähr so aussehen:

'{"ts":+1638436570748,"values":{"Value1":+0.0000000000000E+0,"Value2":+0.0000000000000E+0,"Value3":+0.000000E+0}}'

Ich hab schon ein bisschen in Foren rumgeguckt und Sachen wie indirekte oder absolute Adressierung gefunden genauso wie die Peek und Poke Funktion oder Any Pointer von Tia

Ich arbeite auf einer 1511T Steuerung mit TIA 17.
 
Zuletzt bearbeitet:
Moin BaumimGarten,

wie kommunizierst Du denn mit dem Kunden?
- OUC?
- OPC UA?
- S7-Verbindung?
- ...

Hinweis: Peek Poke und AnyPointer sollten nicht das Mittel der Wahl sein. Zudem stellt sich ja erstmal die Frage, wie Du die Daten zur Verfügung stellst? Optimiert (ohne absolute Adresse) oder nicht optimiert (mit absoluter Adresse)?

VG


MFreiberger
 
Danke für die schnelle Antwort.
Ich kommuniziere über MQTT und das SPS Programm soll auf den Anlagen des Kunden laufen.
Also die SPS erhält über die Anlage zum Beispiel ein Temperaturwert und diese soll mit dem dazu gehörigen Zeitstempel über MQTT auf eine Weboberfläche geschickt werden.
Es geht mir hauptsächlich um das Thema der Adressierung, da ich alles andere schon Fertig programmiert und getestet habe. Ich hab bis jetzt simulierte Werte umgewandelt und über MQTT in der Weboberfläche als Graphen ausgegeben.
Ich will dem Kunden quasi nur einen Weg bereiten um seine eigenen Werte, passend auf seine Anlage, an das Programm anbinden zu können, ohne groß was im Programm zu ändern.
Falls noch Unklarheiten sind, bitte einfach fragen.
 
Es geht mir hauptsächlich um das Thema der Adressierung, [..]
Ja, und genau da zielt meine Frage bzgl. optimiertem oder nicht optimiertem DB hin.

Wenn Du optimierte DBs angelegt hast, erhälst Du keine absolute Adresse (vom der Speicherplatzadresse mal ganz abgesehen).
Nur bei nicht optimierten DBs kannst Du auf absolute Adressen zugreifen.

Vielleicht geht Deine Frage aber auch eher in die Richtung nach der Syntax, mit der Du bei der MQTT-Programmierung auf die absoluten Adressen eines nicht optimierten DBs zugreifst?
Da kann ich Dir leider nicht helfen, da ich von MQTT keine Ahnung habe.

Vielleicht kannst Du mal etwas Programmcode bzw. den Inhalt eines DB posten. Dann kann man vielleicht besser unterstützen.

VG

MFreiberger
 
ich kann ja die Optimierung jeder Zeit aufheben, das würde meinen Programm nicht viel abbrechen. Hab ich schon getestet
Für die Adressierung hab ich auch die Optimierung ausgestellt und kann die Offsets sehen nur leider hab ich damit noch nicht viel gearbeitet um genau zu wissen wie ich die Adressierung bzw. das Pushen auf den Speicherort mache.
Deswegen kam ich auf die Peek and Poke Funktion.
Meine erste Idee ist, dass man eine Eingabe macht, in der Dateneingänge bzw. die Variablen auf ein Stück DatenArray "gepoket" wird und dann ein Zähler das Array ausliest um weiter Variablen über die Eingabe auf die nächsten freien Stellen des Arrays zuschreiben.

Ich hoffe ich hab das einigermaßen erklärt.
 
Moin,

Du willst also einen FIFO mit Eingaben bespaßen und über die Programmierung der Verbindung (egal ob MQTT oder irgend etwas anderes) soll der FIFO ausgelesen werden und der Austrag gesendet werden?
Also quasi ein Sendepuffer oder Sendestack?

Da würde ich etwas anders vorgehen:
für den Puffer einen optimierten DB verwenden. Das Eintragen/Austragen des Puffers in SCL programmieren. Den Austrag auf eine adressierbare Variable (Merker, nicht optimierter DB, ..) schreiben und versenden.

VG

MFreiberger
 
Schmeiß MQTT in die Tonne und nimm OPC UA.
Bei OPC UA kannst du den Variablenhaushalt einer Steuerung auslesen.
Du brauchst nichts über Speicherort oder dergleichen wissen.
Die Steuerung sagt dir Variablennamen, Typ, Read/Write.
Viel, viel einfacher als MQTT
 
Schmeiß MQTT in die Tonne und nimm OPC UA.
Bei OPC UA kannst du den Variablenhaushalt einer Steuerung auslesen.
Du brauchst nichts über Speicherort oder dergleichen wissen.
Die Steuerung sagt dir Variablennamen, Typ, Read/Write.
Viel, viel einfacher als MQTT
wenn das nur so einfach wäre xD
muss das halt in ein System einspeisen welches mit MQTT kommunizieren soll.
Wenn es nach mir gehen würde, hätte ich da schon lange OPC UA benutzt ganz besonders den Siemens MQTT Baustein kannst du echt in die Tonne treten.
 
wenn das nur so einfach wäre xD
muss das halt in ein System einspeisen welches mit MQTT kommunizieren soll.
Wenn es nach mir gehen würde, hätte ich da schon lange OPC UA benutzt ganz besonders den Siemens MQTT Baustein kannst du echt in die Tonne treten.
Bevor ich mir MQTT auf einer 1500er antue, nehm ich ein OPC-UA - MQTT - Gateway.
 
Zurück
Oben