C Control I Unit-M 2.0 BASIC 5 Vdc Inputs / outputs 16 x digital I/Os/8 x analog or digital I/Os/2 x analogue outputs (s 198822 Data Sheet
Product codes
198822
COMPARES
Vergleichen von zwei Variablen
Als Compares sind die Vergleichsoperationen
Als Compares sind die Vergleichsoperationen
<, >, =, <=, >=
zusammengefasst.
Ein Compare muss sich immer auf zwei Variablen beziehen.
Wie sie vielleicht gemerkt haben fehlt der <> Operator. Er wird ersetzt durch:
IF NOT(MyFloat1=MyFloat2) THEN.....
IF NOT(MyFloat1=MyFloat2) THEN.....
FLOATING POINT ERRORS
Verbotene Rechenoperationen
Obwohl die Berechnungen so ausgelegt sein müssen, dass keine verbotenen Operationen durchgeführt
werden (z.B. Division durch Null) kann es im Betrieb z.B. beim Ausfall eines Sensors einer Regelung zu
diesen Situationen kommen. Da Rechnungsergebnisse in solchen Fällen durchaus plausibel erscheinen
können obwohl sie total falsch sind, haben Sie die Möglichkeit eine Fehlerkontrolle zu implementieren und
im Fall eines Fehlers gezielt darauf zu reagieren.
Obwohl die Berechnungen so ausgelegt sein müssen, dass keine verbotenen Operationen durchgeführt
werden (z.B. Division durch Null) kann es im Betrieb z.B. beim Ausfall eines Sensors einer Regelung zu
diesen Situationen kommen. Da Rechnungsergebnisse in solchen Fällen durchaus plausibel erscheinen
können obwohl sie total falsch sind, haben Sie die Möglichkeit eine Fehlerkontrolle zu implementieren und
im Fall eines Fehlers gezielt darauf zu reagieren.
ON ERROR GOTO
Fügt in den compilierten Programmcode selbstständig eine Abfrage auf Fehler ein und verzweigt im Falle
eines Fehlers auf Ihre Fehlerbehandlungs-Routine. Um die Art des Fehlers zu identifizieren beinhaltet die
Variable ERR.NUMBER einen Fehlercode. Der Fehlercode wird vor der nächsten Gleitkommaoperation
selbstständig gelöscht.
eines Fehlers auf Ihre Fehlerbehandlungs-Routine. Um die Art des Fehlers zu identifizieren beinhaltet die
Variable ERR.NUMBER einen Fehlercode. Der Fehlercode wird vor der nächsten Gleitkommaoperation
selbstständig gelöscht.
Dieses kleine Beispiel demonstriert die Anwendung.
Es erzwingt durch fortgesetzte Multiplikation einen
Überlauf. Der Fehler wird angezeigt und der Überlauf
in der Variablen RESULT beseitigt.
Es erzwingt durch fortgesetzte Multiplikation einen
Überlauf. Der Fehler wird angezeigt und der Überlauf
in der Variablen RESULT beseitigt.
5
IF MyFloat1>MyFloat2 THEN.....
IF FLOAT(MyWord) > MyFloat1 THEN......
LOOP UNTIL MyFloat1>MyFloat2
LOOP UNTIL FLOAT(MyWord) > MyFloat1
IF NOT(MyFloat1=MyFloat2) THEN.....
IF FLOAT(MyWord) > MyFloat1 THEN......
LOOP UNTIL MyFloat1>MyFloat2
LOOP UNTIL FLOAT(MyWord) > MyFloat1
IF NOT(MyFloat1=MyFloat2) THEN.....
0 No error
1 Overflow error
2 Underflow error
3 Division by Zero error
4 Square root of negative number
5 Number too large/small to convert to integer
1 Overflow error
2 Underflow error
3 Division by Zero error
4 Square root of negative number
5 Number too large/small to convert to integer
FUNCTION FPE()
ON ERROR GOTO ER
#x
RESULT=1
DO
RESULT=RESULT*100
LCD.POS 1,1
LCD.PRINT RESULT & " "
pause 20
LOOP
'-------- DISPLAY AN ERROR ---------------
#ER
LCD.POS 2,1
LCD.PRINT "ERROR:" & ERR.NUMBER
BEEP 5,5,50
LCD.POS 2,1
LCD.PRINT " "
goto x
END FUNCTION
ON ERROR GOTO ER
#x
RESULT=1
DO
RESULT=RESULT*100
LCD.POS 1,1
LCD.PRINT RESULT & " "
pause 20
LOOP
'-------- DISPLAY AN ERROR ---------------
#ER
LCD.POS 2,1
LCD.PRINT "ERROR:" & ERR.NUMBER
BEEP 5,5,50
LCD.POS 2,1
LCD.PRINT " "
goto x
END FUNCTION