Step 7 Addition von REAL Zahlen

bienemaja

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine Sache, bei dem ihr mir hoffentlich helfen könnt.
Ich möchte analoge Wechselstromzähler in der S7 einlesen und in WinCC darstellen. Die abgelesenen Zählerstände werden in die S7 eingegeben.
Die Zähler geben einen Impuls aus und pro Impuls wird ein Faktor/Wert von 0,1666666667 ( KW/h ) drauf addiert. Ich realisiere das mit dem Datentyp
REAL (Gleitpunktzahl). Also einfach auf den vorhandenen Zählerstand den Faktor drauf addieren, in DB speichern, fertig.
Nun habe ich das Problem, dass sich mit der Zeit Rundungsfehler ergeben und ein Zähler der mit vielen Umdrehungen/Impulsen arbeitet
relativ schnell ungenau ist.
Hat jemand eine Idee, wie ich die Rundungsfehler eliminiere bzw. relativiere?:confused:

Besten Dank vorab.
 
Ein "Zähler" zählt naturgemäß ganze Einheiten. In die Anzeige des Zählerstands kann man zum besseren Ablesen irgendwo ein Dezimalkomma einfügen.

"Zählen" von gebrochenen Zahlen (Addieren REAL) verursacht erstens Rundungsfehler und zweitens bleibt der Zähler sogar irgendwann stehen, weil man zu großen REAL-Zahlen keine viel kleineren REAL-Zahlen dazu addieren kann.


Lösung: Nimm zwei Ganzzahl-Variablen
- einen Vorzähler (z.B. INT) für die 1/6-kWh-Impulse vom Stromzähler, der immer von 0 bis 6 zählt und bei 6 wieder auf 0 geht und einen Übertrag erzeugt
- einen Hauptzähler für die ganzen kWh (DINT), der die Überträge des Vorzählers zählt

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man kann natürlich auch einfach die Impulse zählen und zum Anzeigen erst die Umrechnung mit dem Faktor vornehmen.
Hier kann man dann auch statt *1,6...667 einfach mit "Zählwert*50/30" rechnen, dann hat man nur ein Mal einen Rundungsfehler.
 
Zuletzt bearbeitet:
Mit wie viel Stellen vor und nach dem Dezimalkomma willst Du die Zählerstände in WinCC anzeigen? (Welches WinCC?)

Harald
 
Zurück
Oben