Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich habe ein Verständnisproblem mit der Funktion "Werte prüfen und erzwingen".
Ich berechne den Min- und Max-Wert von einem Sollwert (+0,2 und -0,2 vom Sollwert). Ich habe einschließlich Ober- und Untergrenze eingestellt.
Ich erwarte, dass wenn der Istwert + 0,2 oder - 0,2 vom Sollwert ist, dass die Funktion True ausgibt. Mit Ganzzahlen funktioniert das auch. Ich habe aber Kommazahlen und da gibt es folgendes Problem:
Test1:
Angenommen, der Sollwert ist 5,0. Wenn ich in das Istwertfeld 6 eingebe und Enter drücke und dann mit der Schaltfläche um 0,1 dekrementiere, erwarte ich das im Wertebereich 5,2 bis 4,8 die Funktion True ausgibt. Macht sie aber nicht. True wird von 5,1 bis 4,8 ausgegeben. 5,2 ist false und das verstehe ich nicht!
Test2:
Angenommen, der Sollwert ist 5,0. Wenn ich in das Istwertfeld 4 eingebe und Enter drücke und dann mit der Schaltfläche um 0,1 inkrementiere, erwarte ich das im Wertebereich 4,8 bis 5,2 die Funktion True ausgibt. Macht sie aber nicht. True wird von 4,9 bis 5,2 ausgegeben. Hier wird bei 4,8 false ausgegeben!
Wie gesagt, ich habe einschließlich Ober- und Untergrenze eingestellt.
Kann mir damit jemand helfen?
Danke vorab
Gruß
Volker
Anzeige
25.01.2012, 09:30 (Dieser Beitrag wurde zuletzt bearbeitet: 25.01.2012 09:34 von M Nussbaumer.)
RE: Problem mit Funktion "Werte prüfen und erzwingen"
(25.01.2012 09:07 )Roter Milan schrieb: Hallo zusammen,
ich habe ein Verständnisproblem mit der Funktion "Werte prüfen und erzwingen".
Ich berechne den Min- und Max-Wert von einem Sollwert (+0,2 und -0,2 vom Sollwert). Ich habe einschließlich Ober- und Untergrenze eingestellt.
Ich erwarte, dass wenn der Istwert + 0,2 oder - 0,2 vom Sollwert ist, dass die Funktion True ausgibt. Mit Ganzzahlen funktioniert das auch. Ich habe aber Kommazahlen und da gibt es folgendes Problem:
Test1:
Angenommen, der Sollwert ist 5,0. Wenn ich in das Istwertfeld 6 eingebe und Enter drücke und dann mit der Schaltfläche um 0,1 dekrementiere, erwarte ich das im Wertebereich 5,2 bis 4,8 die Funktion True ausgibt. Macht sie aber nicht. True wird von 5,1 bis 4,8 ausgegeben. 5,2 ist false und das verstehe ich nicht!
Test2:
Angenommen, der Sollwert ist 5,0. Wenn ich in das Istwertfeld 4 eingebe und Enter drücke und dann mit der Schaltfläche um 0,1 inkrementiere, erwarte ich das im Wertebereich 4,8 bis 5,2 die Funktion True ausgibt. Macht sie aber nicht. True wird von 4,9 bis 5,2 ausgegeben. Hier wird bei 4,8 false ausgegeben!
Wie gesagt, ich habe einschließlich Ober- und Untergrenze eingestellt.
Kann mir damit jemand helfen?
Danke vorab
Gruß
Volker
Hallo Volker
Kann deine VI's leider nicht öffnen, da ich noch LabVIEW 2009 verwende, wage aber trotzdem ein Schuss ins blaue
Wenn ich mich nicht täusche verwendest du einen DBL-Wert um die Kommazahl darzustellen. Das Problem mit DBL (oder allgemein Kommazahlen) ist, dass der Computer diese Werte nicht auf Gleichheit prüfen kann.
Dies weil es sich bei deinem 5.8 in Wirklichkeit als 5.80000000000000071 oder ähnliches abgelegt ist.
Deshalb wird es auch nicht empfohlen Float-Datentypen auf Gleichheit zu prüfen. In deinem Fall kannst du das Problem lösen. Indem du deine Zahl mal 10 hoch *gewünschte Nachkommastellengenauigkeit* rechnest und in einen Integer umwandelst. Dadurch sollte die Funktion wie gewünscht funktionieren() Natürlich musst die die Grenzwerte auch demensprechend anpassen
Hoffe das hilft dir weiter!
Gruss Marc
Edit: Du kannst auch den erlaubten Wertebereich auf das nächstgrössere bzw. kleinere setzten und ohne Ober und Untergrenze auswählen. Dadurch sollte es auch funktionieren.
25.01.2012, 09:38 (Dieser Beitrag wurde zuletzt bearbeitet: 25.01.2012 10:58 von Lucki.)
RE: Problem mit Funktion "Werte prüfen und erzwingen"
(25.01.2012 09:07 )Roter Milan schrieb: Test1:
Angenommen, der Sollwert ist 5,0. Wenn ich in das Istwertfeld 6 eingebe und Enter drücke und dann mit der Schaltfläche um 0,1 dekrementiere, erwarte ich das im Wertebereich 5,2 bis 4,8 die Funktion True ausgibt. Macht sie aber nicht. True wird von 5,1 bis 4,8 ausgegeben. 5,2 ist false und das verstehe ich nicht!
Bekanntes Problem, aber hier in der Praxis ohne Bedeutung. Die Gleitzahlen haben nur eine endliche Auflösung, und die Darstellung der Anzeige ist entsprechend dem gewählten Anzeigeformat gerundet.
Wenn ich bei dir 15 Kommastellen einstelle, dann sieht man es:
Edit: Marc hat die Frage eher richtig beantwortet. Ich würde nur darin widersprechen, dass da irgendein Handlungbedarf besteht. Gut, die wirklichen Toleranzgrenzen liegen also nicht bei +- 0.2, sondern sind, sagen wir mal, um ein hundert Millionstel fehlerhaft. Sollte man wirklich dagegen etwas unternehmen, nur um der Anzeigenoptik Genüge zu tun?
RE: Problem mit Funktion "Werte prüfen und erzwingen"
Hallo zusammen,
das Problem ist, dass sich mein Istwert in Schritten von 0,1 ändert. Dann hat die ganze Sache schon eine Auswirkung, wie beschrieben. Ich werde die Lösungsvorschläge von Marc prüfen. Danke.
RE: Problem mit Funktion "Werte prüfen und erzwingen"
(25.01.2012 10:19 )Roter Milan schrieb: Hallo zusammen,
das Problem ist, dass sich mein Istwert in Schritten von 0,1 ändert. Dann hat die ganze Sache schon eine Auswirkung, wie beschrieben. Ich werde die Lösungsvorschläge von Marc prüfen. Danke.