wieder mal das alte Thema, ich hab eine Real und möchte davon aber nur die ersten beiden nachkommastellen haben...
Hab das dann über MUL 100 und REAL_TO_INT MUL 0.01 gemacht, aber da wird der wert dann ganz schön gerundet.
Dann hab ich versucht REAL_TO_STRING und LEFT 4 Stellen, aber da bekomm ich die Fehlermeldung, dass LEFT kein gültiger Operator ist... bei RIGHT übrigens auch. Die Datentypen von den am Ausgang befindlichen Variablen hab ich immer entsprechend angepasst.
Jemand eine Idee?
Gruß
Mikro
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Runden kannst du wie oberchefe schreibt auf N Nachkommastellen.
allerdings vorsicht, SPS mit C16 CPU wie wago 842 geht trunc mit negativen zahlen nicht, und auch nur mit 16Bit anstatt 32 Bits DINT.
workaround ist hier X := dint_to_real(real_to_dint(X * 100.0) / 100)
falls du eine real zahl auf N stzellen nicht nachkommastellen runden möchtest schau mal in den osct.lib code rein dort fundest du auch diese funktion RND.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
wieder mal das alte Thema, ich hab eine Real und möchte davon aber nur die ersten beiden nachkommastellen haben...
Hab das dann über MUL 100 und REAL_TO_INT MUL 0.01 gemacht, aber da wird der wert dann ganz schön gerundet.
Dann hab ich versucht REAL_TO_STRING und LEFT 4 Stellen, aber da bekomm ich die Fehlermeldung, dass LEFT kein gültiger Operator ist... bei RIGHT übrigens auch. Die Datentypen von den am Ausgang befindlichen Variablen hab ich immer entsprechend angepasst.
Jemand eine Idee?
Gruß
Mikro
Für LEFT und RIGHT muß die Standard.lib eingebunden sein, geht natürlich nur mit Strings, also ggf. vorher wandeln.
was willst Du damit sagen?
Soll nach den zwei Stellen immer abgerundet werden? Dann tut's doch ein
Runden kannst du wie oberchefe schreibt auf N Nachkommastellen.
allerdings vorsicht, SPS mit C16 CPU wie wago 842 geht trunc mit negativen zahlen nicht, und auch nur mit 16Bit anstatt 32 Bits DINT.
workaround ist hier X := dint_to_real(real_to_dint(X * 100.0) / 100)
falls du eine real zahl auf N stzellen nicht nachkommastellen runden möchtest schau mal in den osct.lib code rein dort fundest du auch diese funktion RND.