Auf den RevPi Geräten nutzen wir Status-Bytes, um mehrere Funktionen oder Informationen an einer Stelle im Prozessabbild einzutragen. Status-Bytes kannst Du sowohl lesen als auch schreiben. Da ein Byte acht Bit hat, kann man acht Informationsstellen – die sog. Status-Bits – darin unterbringen.
Status-Bytes liest man von rechts nach links und man beginnt bei Null zu zählen.
Wenn Du Status-Bytes auf dem RevPi liest oder schreibst, geschieht das allerdings nicht in Binärform, sondern als Dezimalzahl. Du musst also Binär- in Dezimalzahlen umrechnen und umgekehrt.
Zuordnung zwischen Bit und Dezimalwert
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Dezimalwert |
27=128 |
26=64 |
25=32 |
24=16 |
23=8 |
22=4 |
21=2 |
20=1 |
Beispiele:
Binärzahl, wenn das Bit 1 gesetzt ist: 00000010
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Binärzahl |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Binärzahl, wenn Bit 1 und Bit 6 gesetzt sind: 01000010
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Binärzahl |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
Umrechnung in Dezimalzahl, wenn Bit 1 und Bit 6 gesetzt sind:
Bit |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Binärzahl |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
Dezimalwert |
|
64 |
|
|
|
|
2 |
|
Dezimalzahl |
64 + 2 = 66 |
Tipp:
Mit dem Taschenrechner unter Windows kannst Du Binär- und Dezimalzahlen ganz einfach umrechnen. Wähle dafür in den Einstellungen des Taschenrechners “Programmierer” aus.
Beispiel: Status-Byte schreiben am RevPi Connect
Das Status-Byte RevPiLED des RevPi Connect steuert gleichzeitig die drei LEDs, den Watchdog und den Relaiskontakt. Bit 0 steuert die grüne LED A1, Bit 1 die rote LED A1 und so weiter. Bit 6 steuert den Relaiskontakt und Bit 7 steuert den Watchdog.
Wenn die LED A1 rot leuchten und der Relaiskontakt geöffnet sein soll, setzt Du mit piTest mit dem Kommando piTest -w RevPiLED,66
Bit 1 und Bit 6 jeweils auf 1 (01000010 = 64+2=66).
Beispiel: Status-Byte lesen am RevPi Connect
Das Status-Byte RevPiStatus des RevPi Connect enthält eine Reihe an Informationen zum Prozessabbild. Im Bit 1 steht zum Beispiel, ob ein I/O-Modul an das Basismodul angeschlossen ist.
Mit piTest liest Du mit dem Kommando piTest -r RevPiStatus
das entsprechende Status-Byte.
Wenn piTest die Zahl 3 ausgibt, bedeutet das binär 0000 0011, nämlich 2+ 1 = 3. Daraus kannst Du ableiten, dass u.a. Bit 1 gesetzt und somit ein I/O-Modul angeschlossen ist.