TIA Schieberegler kann kein REAL?!

Kabeläffle

Level-2
Beiträge
471
Reaktionspunkte
140
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

bin aktuell am ändern und erweitern einer Anlage mit „CPU317-2 PN/DP“ und „TP1500 Comfort“.
Dabei kommen Analoganzeigen (Balkenanzeigen) zum Einsatz. Das läuft wie erwartet.

Zusätzlich aber auch Schieberegler, die allerdings meine REAL-Variablen nicht mögen!
Können Siemens-Schieberegler generell kein REAL, oder mache ich etwas falsch?
Oder ist bei der Installation von TIA etwas schiefgelaufen?

Gruß
Kabeläffle
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das hat nichts mit Siemens zu tun. Auch bei Beckhoff TwinCAT Steuerungen können keine Real-Variablen genommen werden.

Das hab ich jetzt nicht untersucht, wie andere Steuerungshersteller das machen.
Aber was hat das für einen Grund, dass REAL nicht geht?

Natürlich kann ich mit einem Slider bei der Anbindung an eine REAL-Variable nicht alle möglichen Zahlenwerte einstellen. Das ist aber bei INT genauso, wenn das Objekt weniger Pixel hat, als das INT ganze Zahlen… ;)

Rechnet ihr auf den Steuerungen noch mit INT Werten? INT kommt bei mir praktisch nur noch beim „Zählen“ oder als INDEX zum Einsatz. Alles was analog ist, rechne ich in REAL. Bei einem Slider hätte ich jetzt erwartet, dass er allermeist für „analoge“ Anwendungen eingesetzt wird. :confused:

Wenn hier wirklich nur INT geht, dann gibt das auf der Steuerung eine richtige Konvertierungs-Orgie! :shock:
 
Ein früherer Kollege war vorher bei der Luftwaffe mit der Wartung von Analogrechnern beschäftigt.
Er sagte immer, dass das die einzigen Rechner waren, die wirklich Analogwerte verarbeitet haben :p
Ich glaube, dass in kaum einem Bereich in der SPS-Programmierung mehr Fehler gemacht werden als beim Umgang mit Real.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Rechnet ihr auf den Steuerungen noch mit INT Werten? INT kommt bei mir praktisch nur noch beim „Zählen“ oder als INDEX zum Einsatz. Alles was analog ist, rechne ich in REAL.

Man muss bei den Zahlenbereichen und der Genauigkeit einfach aufpassen.
Real täuscht eine Genauigkeit vor, die es überhaupt nicht hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, leider kann ich das noch nicht begreifen.

Realzahlen werden in der SPS im Format IEEE 754 dargestellt.
Also 24Bit Mantisse und 8Bit Exponent
https://www.h-schmidt.net/FloatConverter/IEEE754de.html
Bedingt durch dieses Format und die Implementierung durch den Hersteller ergeben sich Wandlungsfehler.
Deshalb lautet eine Grundregel beim Umgang mit Real niemals Vergleich auf Gleich verwenden.
Oder es werden auch ganz einfach Zahlen "verschluckt" bei der Addition einer kleinen zu einer großen Zahl.
Sowas ist z.B. der Standardfehler bei der Energieverbrauchserfassung.

Gruß
Blockmove
 
Das hat nichts mit Siemens zu tun. Auch bei Beckhoff TwinCAT Steuerungen können keine Real-Variablen genommen werden.
Asche auf mein Haupt.
Ich wollte meine Behauptung vorher eigentlich noch überprüfen, da ich mir nicht sicher war, aber da die TC3 Installation in meiner VM gefühlt einen Tag gedauert hat, habe ich es nicht gemacht.
In TC3 (Hier 4024.7) kann man für einen Schieberegler doch Real-Zahlen nehmen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Angenommen ich verwende Word 0 als Speicherplatz für die Realzahl. Welche Bits haben welche Funktion ?? Ich verstehe das leider nicht.

Real benötigt ein Doppelwort (32Bit).
Die Belegung siehst du ja in dem Link oben.
Du kannst ja mal mit PLCSIM spielen. Dann siehst, was passiert.
 
Mit der Genauigkeit von Real-Zahlen wird das nichts zu tun haben, warum der Datentyp nicht erlaubt ist.

Ich kann einen Slider mit Real-Zahlen erstellen, von 0 bis 100 in 0,5er oder 0,25er Inkrementen (und alle weiteren Kehrwerte von Zweierpotenzen), und das ist 100% genau.
 
Mit der Genauigkeit von Real-Zahlen wird das nichts zu tun haben, warum der Datentyp nicht erlaubt ist.

Ich kann einen Slider mit Real-Zahlen erstellen, von 0 bis 100 in 0,5er oder 0,25er Inkrementen (und alle weiteren Kehrwerte von Zweierpotenzen), und das ist 100% genau.
Oh, oh, sei bitte vorsichtig mit dieser Aussage.
Ich hatte vor etlichen Jahren mal für Juweliere ein Warenwirtschaftssystem entwickelt (Nein, nicht auf einer SPS), dieses hatte auch ein Kassenmodul. Beim Kassenmodul konnte man den zu zahlenden Betrag mit verschiedenen Zahlungsarten (Bar, EC, Kreditkarte) gleichzeitig zahlen. Solange die zu zahlende Summe nicht erreicht war wurde die Restsumme in Rot angezeigt und der Buchen Button war ausgegraut. Zum Test hatte ich einen Artikel verkauft und die Zahlung erfolgte mit drei Zahlungsmitteln passend aufgeteilt. Obwohl die eigegebene Summe der einzelnen Zahlungsmittel genau dem zu zahlenden Betrag entsprach und als Restsumme 0 angezeigt wurde, war diese Zahl rot und der Buchen Button wurde nicht freigegeben, ich war am verzweifeln. Schließlich habe ich die Anzeige des Restbetrages so geändert, dass nicht nur zwei Stellen nach dem Komma angezeigt wurden, sondern alle und siehe da, der Betrag war nicht 0, obwohl die einzelnen Summen dem zu zahlenden Betrag 100% entsprachen, sondern so ab der fünften oder sechsten Stelle nach dem Komma kam noch was. Ich habe daraufhin alle Beträge mit 100 multipliziert, in INT gewandelt, meine Berechnung gemacht, das Ergebnis wieder in Real gewandelt und dann zur Anzeige wieder durch 100 dividiert.
Merke, ein genau gibt es bei Real-Zahlen bei bestimmten Bedingungen nicht.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Real benötigt ein Doppelwort (32Bit).
Die Belegung siehst du ja in dem Link oben.
Du kannst ja mal mit PLCSIM spielen. Dann siehst, was passiert.

Ja, natürlich ein Doppelword. Das mit PLCSIM werde ich mal Durchspielen. Mantisse sind anscheinend 23 Bit. Ist das richtig ?
 
Ja, natürlich ein Doppelword. Das mit PLCSIM werde ich mal Durchspielen. Mantisse sind anscheinend 23 Bit. Ist das richtig ?
23 Bit Mantisse
8 Bit Exponent
1 Bit Vorzeichen

Normal brauchst du dich eigentlich gar nicht mit den einzelnen Bits beschäftigen.
Ich hab's bislang nur bei der Kommunikation mit Fremdgeräten gebraucht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist mal wieder ein typisches Beispiel, dass das I4.0 Geblubber nur heiße Luft ist.
Es braucht keine Cloud und auch keine KI – nein , das Versagen beginnt schon bei Basisanwendungen, die fast alltäglich sind.
So ein primitiver Slider sollte mit nahezu jeder Variable zu beschalten sein.
Als BOOL funktioniert er wie ein Mäuse-Klavier, als Byte mit maximal 256 Zwischenwerten, …
Es schockt mich immer wieder, mit welchem Werkzeug wir uns abspeisen lassen!
 
und siehe da, der Betrag war nicht 0, obwohl die einzelnen Summen dem zu zahlenden Betrag 100% entsprachen, sondern so ab der fünften oder sechsten Stelle nach dem Komma kam noch was.
Deswegen rechnet auch kein Kaufmann mit REAL-Zahlen. Wie kann man als Programmierer auf so eine Idee kommen, irgendwelche kaufmännischen Berechnungen mit REAL zu machen ... Für PC-Programmiersprachen gibt es den Datentyp Currency und wenn man denn unbedingt mit SPS kaufmännische Berechnungen machen muß, dann kommt man mit DINT bequem bis 20'000'000,00 oder kleiner falls man mehr Nachkommastellen braucht.

Harald
 
Zurück
Oben