Das Statusbyte RS485ErrorCnt zählt Kommunikationsfehler mit den RevPi I/O-Modulen.
Die RevPi I/O-Module tauschen über eine serielle Leitung Daten mit dem RevPi Basismodul aus. Elektrisch werden die Daten nach dem RS485-Standard übertragen.
Der Treiber piControl scannt beim Start und bei einem Reset, welche Erweiterungsmodule angeschlossen sind. Anschließend kommuniziert er zyklisch mit den Erweiterungsmodulen in der Reihenfolge, wie sie von links nach rechts neben dem RevPi auf der Hutschiene angeschlossen sind. Dabei liest piControl zuerst die entsprechenden Ausgabewerte aus dem Prozessabbild und schickt sie an das Erweiterungsmodul. Als Antwort bekommt das RevPi Basismodul die Eingangswerte des Erweiterungsmoduls und schreibt diese in das Prozessabbild. Diese Prozedur wiederholt sich mit dem nächsten Erweiterungsmodul.
Es kann vorkommen, dass die Daten bei der Übertragung zwischen RevPi Basismodul und I/O-Modul gestört werden. piControl hat für jedes Erweiterungsmodul im zyklischen RS485-Austausch einen internen Fehlerzähler. RevPi Gateways und das Basismodul nutzen den RS485-Bus nicht und werden deshalb nicht gezählt. Bei einem Kommunikationsfehler wird der Zähler des betroffenen Moduls erhöht.
Sobald ein Telegramm richtig vom RevPi Basismodul zum I/O-Modul und zurück übertragen wurde, wird der Zähler wieder auf 0 gesetzt. Der Zähler gibt also die Anzahl der in Folge aufgetretenen Fehler an.
In jedem Zyklus wird der Fehlerzähler jedes Moduls mit den beiden Grenzwerten RS485ErrorLimit1 und RS485ErrorLimit2 verglichen:
-
Beim Erreichen von RS485ErrorLimit1 wird eine Warnung in
kern.loggeschrieben. -
Beim Erreichen von RS485ErrorLimit2 wird das Modul offline genommen, im RevPiStatus-Byte als abwesend markiert und ein Fehler in
kern.loggeschrieben. Sobald das Modul wieder antwortet, wird es automatisch wieder online genommen.
Folgende Grenzwerte sind voreingestellt und bieten für die meisten Anwendungsfälle eine ausgewogene Balance zwischen Fehlertoleranz und Systemstabilität:
-
RS485ErrorLimit1: 10
-
RS485ErrorLimit2: 1000
Wenn einer der Grenzwerte auf 0 gesetzt wird, ist die jeweilige Prüfung deaktiviert.
Der Wert RS485ErrorCnt enthält die Summe der Fehlerzähler aller Module, deren Kommunikation aktuell gestört ist. Der erste Fehler eines Moduls wird dabei ignoriert, d. h. ein Modul fließt erst ein, wenn zwei oder mehr Fehler in Folge auftreten. Der Wert wird in jedem Zyklus neu berechnet und fällt wieder auf 0, sobald alle Module wieder fehlerfrei kommunizieren. Der Maximalwert ist 65 535.