Addieren Real

Emilio

Level-1
Beiträge
15
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

ich habe folgendes Thema.

Wir haben ein Tagesmengezähler und ein Gesamtmengezähler.

Ich habe ein Beispiel beigefügt. Wenn jetzt der Realzahl auf zb "0.0" steht addiert er mit jeder Puls schön 0.01. Wenn der Realzahl auf zb "88500.0" steht dan wird ab und zu ein Puls verpasst so sieht es aus. Der Tagesmenge zähler addiert mit der Puls wie es gehört, aber der Gesamtmenge zähler stockt ab und zu. Die Werte haben wir auch mal umgedreht, dan áddiert sich wieder der höhere Zahl ab und zu nicht. Es liegt also an diese etwas höhere Zahl. Aber wir wollen beim Kunden der Gesamtmengezähler einstellen so wie auch der IDM jetzt gezählt hat. "MB0" ist das Taktmerkerbyte. Wer weiss wo das d'ran liegt. Es war beim Kunde so im CPU312. Hier in der Firma auch auf ein CPU412.

Wir haben Step7 5.4 SP2.

Gr
 

Anhänge

  • Addieren 2.jpg
    Addieren 2.jpg
    22,6 KB · Aufrufe: 91
meiner meinung nach ein rundungsfehler ... rechne deine wert mal 100, dann wirds besser, addierst dann nämlich immer eine 1 ....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie vierlagig schon sagte, es ist besser immer eine 1 zu addieren. Am besten noch in einem DINT (DWORD) und nicht Real und dann nachher zur Darstellung auf HMI oder zur Weiterberechnung in Real wandeln.
Hier eine FAQ zur Genauigkeit von Real in Berechnungen
 
Zuletzt bearbeitet:
Nimm doch lieber DINT zum Zählen, dafür sind die
da. Die Methode von vierlagig bringt wohl eher nichts,
denn Rundungsfehler verschieben sich damit nur.
 
meiner meinung nach ein rundungsfehler ... rechne deine wert mal 100, dann wirds besser, addierst dann nämlich immer eine 1 ....

... sehe ich genauso.
Vielleicht wäre es auch schlau nicht eine REAL-Zahl zu inkrementieren sondern besser einen DINT. Der macht so etwas gar nicht erst und du kommst damit ohne Rundungsfehler etc. ganz sicher bis 2.000.000.000 und 'nen Keks. Das schaffst du mit REAL nicht, da du da nicht so viele Stellen zur Verfügung hast ...

Gruß
LL

... sind noch ein paar andere Kollegen der gleichen Meinung ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für den schnelle Antwort.

Das Messgerät gebt 10 liter Impulse. Und wir zeichen in WinCC die Menge in m³. Deswegen haben wir das so gemacht.

Aber ist die Ruindungsfehler denn eine Macke (bug) in der SPS? Oder wie funktioniert dies denn? Oder wie geht dies schief denn?
 
Nimm doch lieber DINT zum Zählen, dafür sind die
da. Die Methode von vierlagig bringt wohl eher nichts,
denn Rundungsfehler verschieben sich damit nur.

aber man kann den rest hinterm komma doch wegschmeißen :rolleyes: ...aber ja, kinners, ihr habt recht DINT ist hier wirklich geeigneter, hab ich wieder nur die halbe lösung gebracht :(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man muss bei Real halt immer bedenken, dass nur 23 Bit für die Mantisse zur Verfügung stehen - das sind etwa 7 Dezimalstellen (zzgl. Vorzeichen). Egal wie groß (z.B. 3.5357*10^27) oder klein (z.B. 2.76564*10^-19) die Zahl sein mag: es bleiben nur 7 Stellen.

Bei DINT ist zwar der Wertebereich deutlich kleiner, aber es sind immerhin 31 Bit, also etwa 9,2 Dezimalstellen (plus Vorzeichen). Die Genauigkeit liegt also bei normierten Eingangswerten um mehr als den Faktor 100 höher!
 
Zurück
Oben