TIA Berechnungen mit Dint und Real

Martin2XK

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

ich erhalte von einem Messgerät Analogwerte, diese sollen im TIA Portal weiter verarbeitet werden. Es geht hierbei um eine Druckberechnung eines Ventils. Die Berechnungen möchte ich entweder über SCL realisieren oder mittels KOP Funktionen. KOP ist bei vielen beliebter, weil es übersichtlicher ist. Jetzt bin aber am überlegen in welchem Datenformat die Berechnungen am genauesten sind oder vielleicht ist es sogar egal. Macht es Sinn den Datentyp von DInt nach Real umzuwandeln, danach die Berechnung auszuführen (Add, Mul, DIV) und anschließend wieder nach DInt zu wandeln?

S7-1500, TIA V17, WinCC

Gruß
 
in welchem Datenformat die Berechnungen am genauesten sind oder vielleicht ist es sogar egal. Macht es Sinn den Datentyp von DInt nach Real umzuwandeln, danach die Berechnung auszuführen (Add, Mul, DIV) und anschließend wieder nach DInt zu wandeln?
DINT ist genauer als REAL, weil keine der 32 (bzw. neuerdings auch 64) Bitstellen für die Speicherung der Kommaverschiebung "verschwendet" wird.
Dafür musst Du Dich halt selber darum kümmern, wo am Ende das Komma hin soll/muss.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das hängt tatsächlich von den benötigten Berechnungen, der gewünschten Genauigkeit und dem Unterschied in der Größe der Zahlenwerte ab.

DINT:
100 / 6 in DINT ergibt 16, würde dir die Kommawerte unterschlagen.
Da rechnet man dann besser 100 * 100 / 6 ergint 1666 und hat 2 somit Kommastellen, was man aber später natürlich beachten muß.
Bei der Multiplikation und Addition muß man nur beachten, dass man nicht über den möglichen Zahlenbereich hinauskommt.
Also muß man auch überlegen, ob man zuerst multipliziert oder dividiert um in den Zahlenbereichen zu bleiben und weniger "Rundungsfehler" zu haben.

Real:
Real haben 7 signifikante Stellen, d.h. 7 Zahlenwerte können angegeben werden.
1234567.0
oder 0.1234567
oder 123.4567
Alle Ziffern danach bringen nichts mehr.
Das bedeutet aber auch: Wenn du zu 1234567.0 die Zahl 0.1 addierst passiert einfach nichts !

Wenn du mit LReal abbeiten kannst ist es einfacher, weil man damit einen größeren Zahlenbereich genau abdecken kann.

Will man sich wenige Kopf machen, rechnet man in Real, das funkioniert gut, außer, man hat sehr große und sehr kleine Zahlen zu verarbeiten.
 
DINT-Werte werden genauer abgespeichert, die DINT-Berechnung selber ist aber meistens ungenauer als mit REAL-Berechnung. Es kommt darauf an, ob in einem DINT-"günstigen" Bereich gerechnet wird.
Ein REAL-Wert hat ca. 7 signifikante Ziffern über einen riesengroßen Wertebereich hinweg und auch die Berechnung wird mit ca. 7 Stellen genau ausgeführt, wenn die Operanden nicht zu sehr unterschiedlich groß sind. (PS: siehe Beispiel von Ralle)
Ein DINT-Wert hat 9 bis 10 signifikante Ziffern, wenn man da durch z.B. 32000 dividert, dann bleiben nur noch höchstens 6 Ziffern übrig. Oder ein extrem-Beispiel: DINT#1000 / DINT#300 = 3 vs. REAL#1000.0 / REAL#300.0 = 3.333333

Harald
 
Zurück
Oben