Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
Hab ein Problem mit meinen Bytes
Bei STRINGS kann man ja wunderbar mit dem Baustein CONCAT arbeiten, der dann einfach den zweiten hinten an den ersten STRING hängt.
Gibt es das auch für BYTES?
Probiere schon ne ganze Weile rum, aber es will nicht so wie ich will?!
VARÂ Â byte1: BYTE := 16#07;Â Â byte2: BYTE := 16#B6;Â Â xStore: BOOL;Â Â datastorage: WORD;END_VARIF xStore THENÂ Â datastorage := BYTE_TO_WORD(SHL(byte1,8))+byte2;Â Â xStore := FALSE;END_IF;
Ich will nicht die beiden Bytes addieren, sondern als Ergebnis ```
16#07B6
``` erhalten!
Was mach ich falsch? Oder geht es noch irgendwie anders?
Und vielen Dank vorweg
Hab's selber hinbekommen... Google sei dank!
Lösung:
IF xStore THENÂ Â datastorage := SHL(BYTE_TO_WORD(byte1),8 ) + BYTE_TO_WORD(byte2);Â Â xStore := FALSE;END_IF;
So funktioniert's!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Moin
Ich hätte die Bytes in ein ARRAY OF BYTE geschrieben und dann über einen POINTER vom entsprechenden Typ drauf zugegriffen.
Das ginge dann auch problemlos mit mehr Bytes.
Gruß Erik
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2012-06-03
Originally created by: mg
Ich hätte das so gemacht (ungetestet aber sollte funktionieren)
BYTE_TO_WORD(Wert1)*16#100+BYTE_TO_WORD(Wert2)
Aber deines funktioniert garantiert auch.
Mg
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi zusammen!
Hab ein Problem mit meinen Bytes
Bei STRINGS kann man ja wunderbar mit dem Baustein CONCAT arbeiten, der dann einfach den zweiten hinten an den ersten STRING hängt.
Gibt es das auch für BYTES?
Probiere schon ne ganze Weile rum, aber es will nicht so wie ich will?!
Ich will nicht die beiden Bytes addieren, sondern als Ergebnis ```
16#07B6
``` erhalten!
Was mach ich falsch? Oder geht es noch irgendwie anders?
Und vielen Dank vorweg
Hab's selber hinbekommen... Google sei dank!
Lösung:
So funktioniert's!
Moin
Ich hätte die Bytes in ein ARRAY OF BYTE geschrieben und dann über einen POINTER vom entsprechenden Typ drauf zugegriffen.
Das ginge dann auch problemlos mit mehr Bytes.
Gruß Erik
Originally created by: mg
Ich hätte das so gemacht (ungetestet aber sollte funktionieren)
BYTE_TO_WORD(Wert1)*16#100+BYTE_TO_WORD(Wert2)
Aber deines funktioniert garantiert auch.
Mg