Statusbytes am RevPi Connect

Statusbyte RevPiStatus

Das Byte RevPiStatus enthält den Status des piControl-Treibers. Beachte, dass hier zwischen den RevPi I/O-Modulen und RevPi Gateways unterschieden wird.

Bit

Bedeutung

0 piControl-Treiber läuft
1 Es ist mind. ein I/O-Modul angeschlossen, das nicht mit PiCtory
konfiguriert wurde.
2 Es ist mind. ein I/O-Modul mit PiCtory konfiguriert worden, das aber
nicht angeschlossen ist. Das Bit ist auch gesetzt, wenn ein RevPi Gateway konfiguriert
wurde.
3 Ein I/O-Modul belegt mehr oder weniger Bytes im Prozessabbild als in der
PiCtory-Konfiguration angegeben. Das kann nur passieren, wenn die Version der
Konfigurationsdatei bzw. der verwendeten Gerätebeschreibungsdateien nicht zu der Firmware im
I/O-Modul passt. Besorge Dir ein Update von PiCtory.
4 Links vom RevPi ist ein RevPi Gateway angeschlossen.
5 Rechts vom RevPi ist ein RevPi Gateway angeschlossen.
6 Digitaler Eingang auf Klemme X2

Statusbyte RevPiLED

RevPi Connect

Über das Byte RevPiLED können die frei programmierbaren LEDs, der Watchdog und das Relais angesteuert werden:

Bit

Komponente

Statusinformation

1:0 LED A1 00 = aus
01 = grün
10 = rot
11 =
orange
3:2 LED A2
5:4 LED A3
6 Relais 0 = Relais ist geschlossen
1 = Relais ist offen
7 Watchdog Um den Watchdog-Timer neu zu starten, muss das Bit innerhalb von 60
Sekunden einmal auf 0 und einmal auf 1 gesetzt werden.
HINWEIS

Nur das gewünschte Bit im Byte RevPiLED ändern. Wenn man z. B. von LED A3 grün einschalten will, kann man piTest -w RevPiLED,16 aufrufen. Das schaltet aber gleichzeitig die LEDs A1 und A2 aus. Man muss also den aktuellen Wert lesen, das gewünschte Bit ändern und dann das ganze Byte zurückschreiben.

RevPi Connect 4

Bit

Komponente

Statusinformation

2:0 LED A1 000 = aus
001 = rot
010 = grün
100 =
blau
011 = orange
110 = cyan
101 = magenta
111 = weiß
5:3 LED A2
8:6 LED A3
11:9 LED A4
15:12 LED A5

Statusbytes RS485ErrorCnt und RS485ErrorLimit

Das Statusbyte RS485 ErrorCnt regelt die Kommunikation mit den RevPi I/O-Modulen. Das ist für Dich dann interessant, wenn Du eigene Geräte in Dein System integrieren möchtest.

Die RevPi-I/O Module tauschen über eine serielle Leitung Daten mit dem RevPi Gerät aus. Elektrisch werden die Daten nach dem RS485-Standard übertragen.

Der Treiber piControl scannt beim Start und bei einem Reset, welche Module angeschlossen sind. Anschließend kommuniziert er zyklisch mit den Modulen in der Reihenfolge wie sie von links nach rechts neben dem RevPi auf der Hutschiene stecken. Dabei liest piControl zuerst die Ausgabewerte für das jeweilige Modul aus dem Prozessabbild und schickt sie an das I/O‑Modul. Als Antwort bekommt das RevPi Gerät die Eingangswerte und schreibt diese in das Prozessabbild. Diese Prozedur wiederholt sich mit dem nächsten Modul und so immer reihum.

Obwohl RS485 unempfindlich gegen Störungen ist kann es dennoch vorkommen, dass die Daten bei der Übertragung zwischen RevPi Gerät und I/O-Modul gestört werden. piControl hat für jedes Modul einen internen Fehlerzähler. Wenn ein Übertragungsfehler aufgetreten ist, wird der Zähler erhöht. Der Maximalwert des Zählers ist 255. Sobald ein Telegramm richtig zwischen RevPi Gerät zu I/O-Modul und zurück übertragen wurde, wird der Zähler wieder auf 0 gesetzt. Der erste Fehler wird ignoriert, d.h. erst wenn zwei oder mehr Fehler in Folge auftreten, wird die folgende Fehlerbehandlung aktiv.

Der Wert RS485ErrorCnt enthält die Summe aller Fehler. Der Wert kann also zwischen 0 und 255*n liegen, wenn n I/O-Module angeschlossen sind. Am Ende jedes Zyklus wird der Fehlerzähler mit den beiden Grenzwerten RS485ErrorLimit1 und RS485ErrorLimit2 verglichen. Wenn er RS485ErrorLimit1 erreicht hat, wird eine Meldung in kern.log ausgegeben. In der nächsten Version von piControl werden die Default-Werte, die in PiCtory definiert wurden, in das Prozessabbild geschrieben. Wenn der Fehlerzähler RS485ErrorLimit2 erreicht hat, wird die piBridge-Kommunikation gestoppt.

Wenn einer der Werte auf 0 gesetzt wird, ist die jeweilige Prüfung deaktiviert.

Als Default ist RS485ErrorLimit1 auf 10 und RS485ErrorLimit2 auf 1000 gesetzt.