-> Hier kostenlos registrieren
Hallo,
auf meinem System, CX9020, TC2 (CODESYS) habe ich ein merkwürdiges Verhalten bei folgendem Programmcode:
TestIstPosition : LREAL:=2;
IF iState = 30 THEN
IF TestIstPosition=0 THEN
iState:=120;
END_IF
IF TestIstPosition > 0 THEN
TestIstPosition:=TestIstPosition - 0.2;
END_IF
ELSE IF TestIstPosition < 0 THEN
TestIstPosition:=TestIstPosition + 0.2;
END_IF
END_IF
TestIstPosition wird runtergezählt und ist irgendwann mal -1.27656e-015, also kleiner 0.
Dann müßte eigentlich bei IF TestIstPosition < 0 die TestIstPosition um 0.2 erhöht werden.
Jedoch kommt man in TestIstPosition:=TestIstPosition + 0.2; der IF Abfrage nicht rein, also ist TestIstPosition nicht kleiner 0 (ist aber doch = -1.27656e-015)
Wie ist das zu erklären.
Danke für eure Antworten.
auf meinem System, CX9020, TC2 (CODESYS) habe ich ein merkwürdiges Verhalten bei folgendem Programmcode:
TestIstPosition : LREAL:=2;
IF iState = 30 THEN
IF TestIstPosition=0 THEN
iState:=120;
END_IF
IF TestIstPosition > 0 THEN
TestIstPosition:=TestIstPosition - 0.2;
END_IF
ELSE IF TestIstPosition < 0 THEN
TestIstPosition:=TestIstPosition + 0.2;
END_IF
END_IF
TestIstPosition wird runtergezählt und ist irgendwann mal -1.27656e-015, also kleiner 0.
Dann müßte eigentlich bei IF TestIstPosition < 0 die TestIstPosition um 0.2 erhöht werden.
Jedoch kommt man in TestIstPosition:=TestIstPosition + 0.2; der IF Abfrage nicht rein, also ist TestIstPosition nicht kleiner 0 (ist aber doch = -1.27656e-015)
Wie ist das zu erklären.
Danke für eure Antworten.