Forum: Mikrocontroller und Digitale Elektronik if Abfrage in C funktioniert nicht


von Werner (Gast)


Lesenswert?

Hallo
kann mir jemand sagen warum bei dieser Abfrage immer true herauskommt?
Ich möchte erreichen das Tist in einem gewissen Intervall liegt.
z.B Tsoll = 25.0 dann soll die Bedingung erfüllt sein wenn Tist zwischen 
24.99 und 25.01 ist.

if((Tist > (Tsoll-0.01)) && (Tist < (Tsoll+0.01)))


Hoffe es liegt nicht daran dass die Variablen den Typ float besitzen.

Danke
Werner

von sechsnullfuenf (Gast)


Lesenswert?

Kann's am && liegen ?
Nebenbei, es sind zei additionen und zwei vergleiche. Das geht 
einfacher.

If (abs(Tist-Tsoll)<= 0.01) ist einfache

von René H. (rhenrich)


Lesenswert?

Hallo!

Hab das eben mal getestet, funktioniert doch,vielleicht soltest du mal 
ein bischen mehr von deinem quellcode posten, der fehler muss wo anders 
liegen.
Die reine If-Abfrage funktioniert.

MFG

von Detlef _A (Gast)


Lesenswert?

Vielleicht macht Tist minimale Änderungen von 0.1Kelvin oder so, dann 
wird der Ausdruck immer true wenn Du nicht Tsoll genau triffs. Ich 
gleube nicht, daß Du einen Sensor benutzt, der 1/100 Kelvin auflöst.

Gute Nacht
Detlef

von I_ H. (i_h)


Lesenswert?

Wenn float: "if(fabs(Tist-Tsoll)<0.1) ... ;"

Kürzer, schneller, weniger fehleranfällig.

von Werner (Gast)


Lesenswert?

Der Sensor geht auf 1/5000 genau (wenn man mal vom Rauschen absieht).
Die Regelung auf wenige 1/1000 (ginge wahrscheinlich noch besser).

So ein blöder Fehler, ich hab lediglich vergessen den Ausgang zurück zu 
setzen falls die Bedingung nicht erfüllt ist.

Habs aber trotzdem umgeschrieben auf if(fabs(Tist-Tsoll)<=0.1), weil es 
besser lesbar ist.

Danke für eure Hilfe
Werner

von Oliver (Gast)


Lesenswert?

>Der Sensor geht auf 1/5000 genau (wenn man mal vom Rauschen absieht).
>Die Regelung auf wenige 1/1000 (ginge wahrscheinlich noch besser).

Ist zwar OT, aber du meinst doch sicherlich KiloKelvin, oder?

Oliver

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.