-> Hier kostenlos registrieren
Hallo liebes SPS Forum,
nun bin ich in PCWORX über etwas gestolpert, was ich nicht wirklich verstehe.
Um es zu veranschaulichen habe ich hier mal ein Screenshot angehängt.
Ich versuche gerade einen Zähler den ich nun schon mit verschiedenen Bausteinen (Building Automation Libary, Solar Libary) ausprobiert habe, zu realisieren (ILC130).
Eingentlich eine ganz einfache Aufgabe:
An xDigitalInput werden Impulse gezählt die in Verbindung mit dem Divisor von 500 an RMeterReadingTotal in Form eines Zählerstandes in 0,002 er Schritten gezählt werden.
Nun habe ich aber das Problem, das sobald ein Divisor > 1 eingesetzt wird, der Fließkommawert verfälscht gezählt wird (z.B. statt in 0,002er Schritten nur in 0,00189...er Schritten).
In meinem Beispiel wird nun statt 11535,180 die Zahl 11535,1796875 berechnet und dementsprechend wir der Zähler auch hochgezählt. Nach einiger Zeit habe ich eine große Abweichung im Zählerstand.
Nur wenn ich als Divisor 1 angeben (iPulseConfig) und anschließend über mein PHP Script durch 500 Teile, komme ich auf eine genaue Zahl.
Mit einem normalen DIV Baustein, habe ich das gleiche Phänomen.
Läßt sich das in PCWORX nicht anders realisieren? Habe ich einen Denkfehler?
CPU's an sich können ja eigentlich nicht mit Gleitkommazahlen rechnen und müssen diese auch erst umwandeln. Geht bei dieser Umwandlung etwas schief?
Wir reden hier ja nur von 3 Stellen hinter dem Komma...
LG
Upuaut
nun bin ich in PCWORX über etwas gestolpert, was ich nicht wirklich verstehe.
Um es zu veranschaulichen habe ich hier mal ein Screenshot angehängt.
Ich versuche gerade einen Zähler den ich nun schon mit verschiedenen Bausteinen (Building Automation Libary, Solar Libary) ausprobiert habe, zu realisieren (ILC130).
Eingentlich eine ganz einfache Aufgabe:
An xDigitalInput werden Impulse gezählt die in Verbindung mit dem Divisor von 500 an RMeterReadingTotal in Form eines Zählerstandes in 0,002 er Schritten gezählt werden.
Nun habe ich aber das Problem, das sobald ein Divisor > 1 eingesetzt wird, der Fließkommawert verfälscht gezählt wird (z.B. statt in 0,002er Schritten nur in 0,00189...er Schritten).
In meinem Beispiel wird nun statt 11535,180 die Zahl 11535,1796875 berechnet und dementsprechend wir der Zähler auch hochgezählt. Nach einiger Zeit habe ich eine große Abweichung im Zählerstand.
Nur wenn ich als Divisor 1 angeben (iPulseConfig) und anschließend über mein PHP Script durch 500 Teile, komme ich auf eine genaue Zahl.
Mit einem normalen DIV Baustein, habe ich das gleiche Phänomen.
Läßt sich das in PCWORX nicht anders realisieren? Habe ich einen Denkfehler?
CPU's an sich können ja eigentlich nicht mit Gleitkommazahlen rechnen und müssen diese auch erst umwandeln. Geht bei dieser Umwandlung etwas schief?
Wir reden hier ja nur von 3 Stellen hinter dem Komma...
LG
Upuaut
Anhänge
Zuletzt bearbeitet: