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 Datenbogen

Produktcode
198822
Seite von 73
FLOAT
Wandlung eines Term oder einer Variablen von INTERGER zu  FLOAT
Hier sind nahezu alle möglichen Terme zulässig solange man keine Datentypen mischt. 
NICHT ZULÄSSIG (Mischung von Datentypen) Z.B.
MyFloat = MyFloat*FLOAT(MyWord)*MyWord
Führt hier zu falschen Ergebnissen
MyFloat = MyWord
Führt hier zu Stackfehlern und damit zu unvorhersehbarem Verhalten des Programms
INTEGER
Wandlung einer Variablen von FlOAT nach INTEGER
Anders ist das bei der Konvertierung von FLOAT nach INTEGER. Hier kann nur eine Variable gewandelt 
werden und kein Term.  
NICHT ZULÄSSIG (Konvertierung eines Terms) Z.B.
MyWord=INT(MyFloat/MyFloat)
FALLEN BEI DER UMWANDLUNG:
Grundsätzlich muss unbedingt darauf geachtet werden, dass der Zahlenbereich der mit einem Wort (oder 
Byte) dargestellt werden kann nie überschritten wird. Sehen Sie dazu die Beispiele:
Variablen:
MyFloat1=50000
MyFloat2=30000
MyWord=1000
FALL1:
INT_RESULT=INT(MyFloat)
Hier wird einfach nur der Wertebereich eines WORD überschritten
FALL2:
INT_RESULT=INT(MyFloat)/MyWord 
Obwohl das Ergebnis (5000) eigentlich nicht zu groß für ein WORD ist, wird der Wertebereich bereits bei der 
Umwandlung (noch vor der Division)überschritten
FALL 3:
INT_RESULT=10*INT(MyFloat2)/MyWord 
Auch hier würde das Ergebnis in ein Word passen, auch 30000 lässt sich ohne Überlauf in ein WORD 
verwandeln. Hier passiert der Überlauf bei der Multiplikation 10*INT(30000) deren Ergebnis zu groß für ein 
Word ist.
INT_RESULT=INT(MyFloat2)/MyWord*10     liefert dagegen ein richtiges Ergebnis 
4
MyFloat = FLOAT(MyWord) 
MyFloat = MyFloat*FLOAT(MyWord) 
MyFloat = MyFloat*FLOAT(MyWord*MyWord) 
MyFloat = MyFloat*FLOAT(MyWord*MyByte) 
MyWord = INT(MyFloat)
MyWord = 3*INT(MyFloat)/MyWord
MyByte = 3*INT(MyFloat)/MyWord