-> Hier kostenlos registrieren
Hallo Siemens-Gemeinde,
gerade habe Untersuchung eines seltsamen Fehlverhaltens meines Programmes folgendes entdeckt:
Code:
Habe gestern schon feststellen müssen dass die WORD_TO_BOOL-Konvertierung nur das LSB übernimmt und somit alle geraden WORD-Werte FALSE werden und die ungeradzahligen TRUE. Wo gibts den sowas ausser bei Siemens?
Viele Grüße
Herdi
gerade habe Untersuchung eines seltsamen Fehlverhaltens meines Programmes folgendes entdeckt:
Code:
FUNCTION test : VOID
VAR
abc:WORD;
END_VAR
abc:=16#0001; ->abc ist nun 0x0001
abc:=NOT 16#0001; ->abc ist nun 0x0000
abc:=16#0002; ->abc ist nun 0x0002
abc:=NOT 16#0002; ->abc ist nun 0x00FD
abc:=16#0004; ->abc ist nun 0x0004
abc:=NOT 16#0004; ->abc ist nun 0x00FB
abc:=16#0008; ->abc ist nun 0x0008
abc:=NOT 16#0008; ->abc ist nun 0x00F7
abc:=16#0010; ->abc ist nun 0x0010
abc:=NOT 16#0010; ->abc ist nun 0x00EF
END_FUNCTION
2 Fragen dazu:VAR
abc:WORD;
END_VAR
abc:=16#0001; ->abc ist nun 0x0001
abc:=NOT 16#0001; ->abc ist nun 0x0000
abc:=16#0002; ->abc ist nun 0x0002
abc:=NOT 16#0002; ->abc ist nun 0x00FD
abc:=16#0004; ->abc ist nun 0x0004
abc:=NOT 16#0004; ->abc ist nun 0x00FB
abc:=16#0008; ->abc ist nun 0x0008
abc:=NOT 16#0008; ->abc ist nun 0x00F7
abc:=16#0010; ->abc ist nun 0x0010
abc:=NOT 16#0010; ->abc ist nun 0x00EF
END_FUNCTION
- Wieso tanzt der NOT-Operator beim Wert 1 aus der Reihe? Wieso wird abc in der 2. Zeile nicht 0x00FE?
- Und überhaupt: Wieso wird das HighByte des Words komplett ignoriert?
Habe gestern schon feststellen müssen dass die WORD_TO_BOOL-Konvertierung nur das LSB übernimmt und somit alle geraden WORD-Werte FALSE werden und die ungeradzahligen TRUE. Wo gibts den sowas ausser bei Siemens?
Viele Grüße
Herdi