TIA Analoge Werte begrenzen und übergeben.

Tmbiz

Level-2
Beiträge
590
Reaktionspunkte
15
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe mal eine Frage zur Übergabe von analogen Werten über OPC UA. Aktuell ist es so, dass von einer SPS analoge Werte über AI Module aufgenommen werden. In einem DB steht dann z.B. die Zahl 26.8367882746474884 usw. Das wird dann alles über OPC UA an eine externe Applikation übertragen. Auf der Applikation werden aber maximal zwei Stellen hinter den Komma gebraucht. Da es sehr sehr viele Tags gibt, welche übertragen werden müssen, sollten auch nur zwei Stellen hinter dem Komma übertragen werden. Doch gleichzeitig baucht es teilweise 1, 2, 3 oder auch 4 Stellen hinter den Komma. Es gibt ja auch die Möglichkeit die Stellen im UPC Server zu begrenzen. Doch dann sind sie schon auf dem Server und müssen da verarbeitet werden.

Frage:
Gibt es unter TIA und damit auf der SPS eine Mögichkeit die Stellen zu begrenzen, welche z.B. in den DB geschrieben werden?
 
Hallo,
Bin jetzt nicht so ganz vertraut mit OPC UA, aber letztendlich bestimmt doch der Datentyp, wie viele Daten übergeben werden, oder irre mich da jetzt?
Byte 0..255 -> 1 Byte
Int - > 2 Byte
Real -> 4 Byte
Usw...

Oder werden in deiner jetzigen Anwendung die Zahlen als array of Char oder string ausgewertet?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Bin jetzt nicht so ganz vertraut mit OPC UA, aber letztendlich bestimmt doch der Datentyp, wie viele Daten übergeben werden, oder irre mich da jetzt?
Byte 0..255 -> 1 Byte
Int - > 2 Byte
Real -> 4 Byte
Usw...

Oder werden in deiner jetzigen Anwendung die Zahlen als array of Char oder string ausgewertet?
Ja, der Datentyp ist sicher wichtig. Aber ich kann ja 10.1 oder 10.123 in die Variable schreiben. Für mich ist wichtig, wie man die Stellen hinter dem Komma einstellen kann.
 
x = Anzahl der gewünschten Kommastellen:

1. *10^x
2. Runden auf Ganzzahl (ROUND = mathematisches Runden bzw. CEIL, FLOOR u. TRUNC für andere Rundungen)
2. /10^x
 
x = Anzahl der gewünschten Kommastellen:

1. *10^x
2. Runden auf Ganzzahl (ROUND = mathematisches Runden)
2. /10^x
Also deine Lösung wäre eine Funktion zu programmieren, welche die Variable bearbeitet, in der der Wert steht? Wenn ja, wäre das nur meine zweite Lösung, da ich dann Rechenleistung verwenden muss, also die Zykluszeit verlängert wird. Es kann sein, dass das geht, aber ich würde gerne erst mal eine Lösung finden, welche die Zykluszeit nicht verändert.
 
Du hast von sehr viel Tags geschrieben, für mich ist ein Tag eine Variable (egal ob 1 oder 1.0000000000) .
Die Stellen hinter dem Komma, die angezeigt werden müsstest du in der externen Anwendung begrenzen.

In der Siemens HMI-Welt kann man einstellen, wie viele Dezimalstellen angezeigt werden sollen.

Was für eine Anwendung nutzt du denn?
 
Ich bearbeite alle meine Analogwerte schon generell beim Lesen vom Sensor so.
🤷‍♂️
Wo und wie machst du das genau? Ich vermute mal, dass das Prozessabbild nicht vor dem Schreiben bearbeitet werden kann. Somit denke ich, dass du das die Werte am Anfang des Zyklus bearbeitest.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke mal, dass @hucki meint, dass er aus dem eingelesenen Analogwert erstmal einen sinnvollen Wert macht - also mm oder was auch immer.
Die Anzahl der Stellen kannst du nicht begrenzen außer in der HMI (egal welche) an der Anzeige.
 
Du hast von sehr viel Tags geschrieben, für mich ist ein Tag eine Variable (egal ob 1 oder 1.0000000000) .
Die Stellen hinter dem Komma, die angezeigt werden müsstest du in der externen Anwendung begrenzen.

In der Siemens HMI-Welt kann man einstellen, wie viele Dezimalstellen angezeigt werden sollen.

Was für eine Anwendung nutzt du denn?

Ich bin gerade neu in der Firma und kann zum Prozess noch nicht viel sagen. Man hat mich aber darum gebeten zu erkunden, ob es möglich ist, die Stellen nach dem Komme zu beschränken. An dem Maschinen wird kein Siemens HMI verwendet. Es gibt eine Applikation, welche mit der Maschine verbunden ist und das Leitsystem usw. usw. mit der Maschine verbinden. Das Human Interface wird auf externen Geräten ermöglicht.
 
Ich bin gerade neu in der Firma und kann zum Prozess noch nicht viel sagen. Man hat mich aber darum gebeten zu erkunden, ob es möglich ist, die Stellen nach dem Komme zu beschränken. An dem Maschinen wird kein Siemens HMI verwendet. Es gibt eine Applikation, welche mit der Maschine verbunden ist und das Leitsystem usw. usw. mit der Maschine verbinden. Das Human Interface wird auf externen Geräten ermöglicht.
Die Möglichkeit besteht, aber sie muss dann in der externen Anzeige bzw. Applikation erfolgen. Da der Datentyp in der SPS ja fix ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke mal, dass @hucki meint, dass er aus dem eingelesenen Analogwert erstmal einen sinnvollen Wert macht - also mm oder was auch immer.
Die Anzahl der Stellen kannst du nicht begrenzen außer in der HMI (egal welche) an der Anzeige.
Ok, das bedeutet, man muss die Variable mit den vielen Stellen hinter den Komma einlesen, bearbeiten und wieder "begrenzt" in die Variable speichern muss.
 
Wo und wie machst du das genau? Ich vermute mal, dass das Prozessabbild nicht vor dem Schreiben bearbeitet werden kann. Somit denke ich, dass du das die Werte am Anfang des Zyklus bearbeitest.
Normal im OB1:
An der Stelle, an der ich die Sensor-Rohwerte mit NORM und SCALE auf die reale physikalische Größe bringe, werden auf die beschriebene Weise auch die Nachkommastellen gegrenzt.
Da ich die fertigen Werte im Allgemeinen auch lieber als (D)INT handle*, fällt bei mir nur die letze Division weg.


*wird sich mit den Unified-Panels und deren umständliche virtuelle Kommaanzeige vermutlich ändern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist ein bisschen difus was du da schreibst - du "begrenzt" eine Variable nicht - man normiert sie. Es wird also aus einer Irgendwie-Zahl ein verständlicher Wert gemacht.
 
@hucki : bei REAL-Zahlen kannst du die Nachkommastellen nicht zuverlässig rausrechnen (wegen dem Aufbau der Zahl und deren Exponenten selbst).
 
Ist ein bisschen difus was du da schreibst - du "begrenzt" eine Variable nicht - man normiert sie. Es wird also aus einer Irgendwie-Zahl ein verständlicher Wert gemacht.
Stimmt. Die Formulierung ist besser. Ich meinte natürlich "normalisieren"
Normal im OB1:
*wird sich mit den Unified-Panels und deren umständliche virtuelle Kommaanzeige vermutlich ändern.
Wir können leider kein Siemens HMI verwenden.

Wichtig war, dass es keine Funktion z.B. in der Hardware Konfiguration gibt oder zumindest aktuell nicht bekannt ist. Dann kann ich jetzt nach anderen Möglichkeiten suchen. Danke
 
Wichtig war, dass es keine Funktion z.B. in der Hardware Konfiguration gibt oder zumindest aktuell nicht bekannt ist. Dann kann ich jetzt nach anderen Möglichkeiten suchen. Danke
Unabhängig von der HMI (oder was auch immer) - du überträgst IMMER eine Variable, die "begrenzt" sich selbst. Du brauchst auch nicht nach weiteren Möglichkeiten suchen solange du die "Standard"-Datenformate wie z.B. INT, DINT, REAL nimmst.
Eine Formatierung, wie du es anfragst, würde man dann machen können wenn deine Variable in einen String konvertiert werden würde oder worden ist. Hier kannst du dann natürlich das machen, was du schreibst. Diese Form der Übermittlung macht aber keinen Sinn (außer für Texte).
 
Zurück
Oben