CODESYS Status Bytes & LEDs für RevPi Core

RevPi Zykluszeit

Die Gesamtzykluszeit beträgt je nach Systemkonfiguration etwa 5 ms bis 10 ms. Bei einer großen Konfiguration kann die Zykluszeit aber auch länger sein. Diese Zeit wird benötigt, um eine Änderung am Ein- oder Ausgang im Speicher der RevPi Steuerung zu realisieren. Das geschieht über einen Hintergrundprozess, der die Module abfragt. Dabei werden Werte gelesen und geschrieben, wenn eine Änderung in der lokalen Gerätedatei erkannt wird.

Codesys RevPi Core Mapping Values
Standardwerte:
RS485ErrorLimit1: 10
RS485ErrorLimit2: 1000
RevPiLED: FALSE
Wenn die Standardwerte geändert werden sollen, musst Du die Werte in der entsprechenden POU zuweisen.

Die RevPi Core Module verfügen über LEDs, von denen eine den Gerätezustand anzeigt und zwei frei verwendbar sind.

LED

Signal

Bedeutung

Power

an, grün

RevPi Core läuft.

an, rot

Der piControl Treiber macht einen Reset. Die Module, die an die PiBridge angeschlossen sind, werden neu initialisiert.

A1

aus

Im Byte ‚RevPiLED‘ sind die Bits 0 und 1 auf 0 gesetzt.

an, grün

Im Byte ‚RevPiLED‘ ist das Bit 0 auf 1 und Bit 1 auf 0 gesetzt.

an, rot

Im Byte ‚RevPiLED‘ ist das Bit 0 auf 0 und Bit 1 auf 1 gesetzt.

an, orange

Im Byte ‚RevPiLED‘ sind die Bits 0 und 1 auf 1 gesetzt.

A2

aus

Im Byte ‚RevPiLED‘ sind die Bits 2 und 3 auf 0 gesetzt.

an, grün

Im Byte ‚RevPiLED‘ ist das Bit 2 auf 1 und Bit 3 auf 0 gesetzt.

an, rot

Im Byte ‚RevPiLED‘ ist das Bit 2 auf 0 und Bit 3 auf 1 gesetzt.

an, orange

Im Byte ‚RevPiLED‘ sind die Bits 2 und 3 auf 1 gesetzt.

Im Verzeichnis /home/pi/demo gibt es die Headerdatei piControl.h, in der Defines PICONTROL_LED_A… für diese LEDs definiert werden. Ein kleines Beispielprogramm folgt unten.

Das Byte ‚RevPiStatus‘ enthält den Status des piControl-Treibers. Beachte bitte, dass hier zwischen I/O-Modulen (DIO, DI, DO, AIO, MIO) und piGate Modulen unterschieden wird.

Bit

Bedeutung

0, 0x01

piControl-Treiber läuft.

1, 0x02

Es ist mind. ein I/O-Modul angeschlossen, das nicht mit PiCtory konfiguriert wurde.

2, 0x04

Es ist mind. ein I/O-Modul mit PiCtory konfiguriert worden, das aber nicht angeschlossen ist. Das Bit ist außerdem gesetzt, wenn ein piGate konfiguriert wurde.

3, 0x08

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, 0x10

Links vom RevPi ist ein piGate Modul angeschlossen.

5, 0x20

Rechts vom RevPi ist ein piGate Modul angeschlossen.

Das Statusbyte „RS485 Count“ regelt die Kommunikation mit den 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 (AIO, DIO, DO, DI, MIO) tauschen über eine serielle Leitung Daten mit dem RevPi 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 der RevPi die Eingangswerte und schreibt sie in das Prozessabbild. Dann macht er das Selbe 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 und IO-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 zu IO-Modul und zurück übertragen wurde, wird der Zähler wieder auf 0 gesetzt. Der erste Fehler wird ignoriert, d.h. erst wenn 2 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.