Zum Hauptinhalt springen

CODESYS

CODESYS ist eine umfassende Entwicklungsumgebung für die Programmierung und Steuerung industrieller Automatisierungssysteme. Sie basiert auf der Norm IEC 61131-3, der internationalen Norm für speicherprogrammierbare Steuerungen (SPS). Mit CODESYS können Anwender Automatisierungsprojekte erstellen und verwalten, Hardware konfigurieren und Steuerungsanwendungen mit verschiedenen Programmiersprachen wie Kontaktplan, strukturiertem Text und Funktionsblockdiagrammen entwickeln.

Der Revolution Pi lässt sich dank unserer Treiber nahtlos in CODESYS integrieren und ist damit ein wirklich modularer und leistungsfähiger Mikrocontroller für eine Vielzahl unterschiedlicher Automatisierungsaufgaben. Da die CODESYS-Laufzeitumgebung viele Feldbus- und Industrial-Ethernet-Protokolle wie PROFINET, EtherCAT, EtherNet/IP oder CANopen nativ unterstützt, kann der RevPi problemlos als Soft-SPS in solchen Netzwerken eingesetzt werden. Mit CODESYS WebVisu lassen sich Bedienoberflächen oder Visualisierungsseiten erstellen und in jedem gängigen Browser auf PCs, Tablets oder Smartphones darstellen. Eine separate HMI-Software ist daher nicht erforderlich.

Systemvoraussetzungen

CODESYS Software
  • CODESYS Development System V 3.5.20.0 oder höher
  • CODESYS Control Linux ARM 32/64 Bit V4.11.0.0 oder höher
RevPi Software
  • RevPi Bullseye Image 32/64 Bit (04/2024) oder höher
  • Revolution Pi Library für CODESYS V2.0.0.0 oder höher
HINWEIS

Wenn Du Dir nicht sicher bist, welche Version des RevPi Image auf Deinem RevPi Gerät installiert ist, kannst Du diese mit dem Befehl cat /etc/revpi/os-release auf dem Terminal des RevPi Geräts abfragen. Du kannst das RevPi Image kostenlos mit den Befehlen sudo apt-get update und sudo apt-get upgrade aktualisieren. Wenn eine ältere Version als das RevPi Bullseye Image (z. B. Buster oder Stretch) installiert ist, installiere das aktuelle RevPi Image. Dieses kannst Du Dir kostenlos vom Revolution Pi Downloadbereich herunterladen.

RevPi Geräte

Folgende RevPi Geräte sind kompatibel mit der genannten Software und können mit CODESYS verwendet werden:

  • RevPi Connect 5
  • RevPi Connect 4
  • RevPi Connect S/SE
  • RevPi Core S/SE
  • RevPi Flat S

Lizenzierung

Ohne gültige Lizenz läuft dein CODESYS Projekt auf dem RevPi Gerät im Demo-Modus und beendet sich nach einer Laufzeit von zwei Stunden automatisch. Der Demo-Modus kann beliebig oft genutzt werden. Für den dauerhaften Betrieb benötigst du jedoch eine kostenpflichtige CODESYS Lizenz, die zu deinem Projekt passt.

Welche Lizenz Du benötigst, hängt von deinem Projekt ab. Sie wird bestimmt durch Parameter wie Anzahl der Ein- und Ausgänge, gewünschter Feldbus, gewünschte Zusatzprodukte sowie Projektgröße. Sollten sich die Projektparameter ändern, kannst Du dazu passende Upgrade-Lizenzen erwerben.

Folgende Fragen helfen Dir, die richtige Lizenz für dein Projekt zu finden:

  • Welcher Feldbus wird benötigt und wie viele Instanzen?
  • Wie viele I/O-Kanäle brauchst Du?
  • Enthält Dein Projekt selbst implementierte Logik und Funktionen, die die Codegröße erhöhen?
  • Benötigst Du hohe Leistung und stabiles Echtzeitverhalten?

Die entsprechenden Metriken findest Du im Gerätedialog des CODESYS Development Systems unter dem Reiter Softwaremetriken zur Bestimmung der Lizenz.

Eine detaillierte Orientierungshilfe zur Lizenzierung findest Du auf der CODESYS Seite Applikationsbasierte Lizenzen.

Die Lizenzen selbst kannst Du im CODESYS Store auf der Seite für applikationsbasierte Lizenzen erwerben.

Weitere Informationen zur Lizenzierung findest Du außerdem in der CODESYS Online-Hilfe.

Software installieren

Bevor Du CODESYS mit RevPi Geräten für eine eigene Anwendung nutzen kannst, sind folgende Installationsschritte erforderlich.

CODESYS Development System installieren
HINWEIS

Die CODESYS Software ist als 32- und 64-Bit-Version verfügbar. Welche Version für Dich relevant ist, hängt davon ab, ob das RevPi OS auf Deinem RevPi Gerät als 32- oder 64-Bit-Verion installiert ist. Die Bit-Version kannst Du mit dem Befehl getconf LONG_BIT auf dem Terminal des RevPi Geräts abfragen.

▷ Lade das CODESYS Development System aus dem CODESYS Store auf Deinen PC herunter.
▷ Installiere das CODESYS Development System auf Deinem PC.

CODESYS Runtime Package auf dem CODESYS Development System installieren

▷ Lade das Softwarepaket CODESYS Control for Linux ARM aus dem CODESYS Store auf Deinen PC herunter.
▷ Öffne die Datei mit Doppleklick.
     ❯ Das Dialogfenster Installation auswählen öffnet sich.
▷ Wähle die gewünschte CODESYS Version.
▷ Klicke auf Fortfahren.
▷ Akzeptiere im Fenster Packages installieren die Lizenzvereinbarung(en).
▷ Klicke auf Fortfahren.
❯❯ Das Softwarepaket wird installiert und die erfolgreiche Installation angezeigt.

Revolution Pi Library für CODESYS auf dem CODESYS Development System installieren

▷ Lade das Softwarepaket Revolution Pi Library für CODESYS aus dem Revolution Pi Downloadbereich auf Deinen PC herunter.
▷ Öffne die Datei mit Doppleklick.
     ❯ Das Dialogfenster Installation auswählen öffnet sich.
▷ Wähle die gewünschte CODESYS Version.
▷ Klicke auf Fortfahren.
▷ Akzeptiere im Fenster Packages installieren die Lizenzvereinbarungen und wähle, trotz fehlender Signaturen fortzufahren.
▷ Klicke auf Fortfahren.
❯❯ Das Softwarepaket wird installiert und die erfolgreiche Installation angezeigt.

CODESYS Runtime Package auf dem RevPi Gerät installieren

▷ Öffne das CODESYS Development System.
▷ Klicke auf Tools.
▷ Klicke auf Update Linux ARM64.
▷ Gib im Fenster Linux ARM64 die Anmeldedaten und die IP-Adresse Deines RevPi Geräts ein.
▷ Wähle das gewünschte CODESYS Runtime Package aus.
▷ Klicke auf Install.
❯❯ Das CODESYS Runtime Package wird auf dem RevPi Gerät installiert.

Projekt anlegen

Ein neues Projekt anlegen

▷ Öffne das CODESYS Development System.

▷ Klicke auf File > New Project….

▷ Wähle Standard project.

▷ Klicke auf OK.

Standard Project

▷ Wähle als Device CODESYS Control for Linux ARM SL (CODESYS) aus.

▷ Klicke auf OK.

Select Project Device

     ❯ Ein Standardprojekt ist im Projektbaum angelegt.

▷ Klicke im Projektbaum mit der rechten Maustaste auf Device.

▷ Klicke auf Add Device.

Add Device

▷ Erweitere den Baum Miscellaneous.

▷ Klicke auf das gewünschte RevPi Basismodul.

▷ Klicke auf Add Device.

Add RevPi Device

     ❯ Ein Projekt mit einem RevPi Basismodul ist angelegt.

RevPi Erweiterungsmodul hinzufügen

RevPi Erweiterungsmodule können je nach RevPi Basismodul auf der rechten oder linken Seite angeschlossen werden.
▷ Klicke im Projektbaum mit der rechten Maustaste auf die Schnittstelle piBridgeLeft für die linke Seite oder piBridgeRight für die rechte Seite.
▷ Klicke auf Add Device.
▷ Klicke auf das gewünschte RevPi Erweiterungsmodul, das an die piBridge Schnittstelle angeschlossen werden soll.
▷ Klicke auf Add Device.

Add Module

     ❯ Das RevPi Erweiterungsmodul ist zum Projekt hinzugefügt. PiBridgeEnd ist ein virtueller Abschluss der PiBridge, der das Ende der RevPi Erweiterungsmodule auf der linken oder rechten Seite des RevPi Basismoduls anzeigt. An dieser Stelle kann ein RevPi Gateway als weiteres Gerät am Ende angehängt werden.
▷ Klicke dazu im Projektbaum mit der rechten Maustaste auf PiBridgeEnd.
▷ Klicke auf Plug Device.
▷ Wähle das gewünschte RevPi Gateway.
▷ Klicke auf Plug Device.
❯❯ Das RevPi Gateway ist zum Projekt hinzugefügt.

CODESYS Projekt auf das RevPi Gerät laden

▷ Öffne die Registerkarte für die Kommunikationseinstellungen mit einem Doppelklick auf das Basisgerät im Projektbaum.
▷ Wähle Scan Network.
     ❯ Dir werden jetzt die Geräte angezeigt, die sich in Deinem lokalen Netzwerk befinden.
▷ Wähle das gewünschte Gerät aus.
▷ Klicke auf OK.
▷ Klicke im Hauptfenster in der Menüleiste auf das Icon für Login.
▷ Bestätige den Download mit Yes. Wenn Du erstmalig ein CODESYS Projekt auf das RevPi Gerät lädst, musst Du einmalig die Benutzerverwaltung einrichten.
▷ Bestätige die Aktivierung der Benutzerverwaltung.
▷ Gib im Fenster Add Device User benutzerdefinierte Anmeldedaten (Benutzernamen und Passwort) ein.
▷ Klicke auf OK.
▷ Gib im Fenster Device User **Logon **die benutzerdefinierten Anmeldedaten ein.
▷ Klicke auf OK.
▷ Warte, bis der Download beendet ist.
▷ Klicke im Hauptfenster in der Menüleiste auf das Icon für Start.
❯❯ Die Anwendung wird jetzt ausgeführt und der Online-Modus für das Debugging zur Verfügung gestellt.

Application Run

Das Beispiel BlinkingLight soll Dir den Einstieg in das Arbeiten mit RevPi und CODESYS erleichtern.

Angeschlossene Geräte in CODESYS Projekt einfügen

Du kannst Geräte, die an das RevPi Basismodul angeschlossen sind, mit einem Klick scannen und in den CODESYS Projektbaum einfügen.

Voraussetzungen
✓ Das CODESYS Projekt ist auf das RevPi Gerät geladen.
✓ Das CODESYS Projekt ist im Online-Modus.
▷ Klicke mit der rechten Maustaste auf das RevPi Gerät.
▷ Klicke auf Scan for Devices.
     ❯ Du erhältst eine Liste aller Geräte, die an das RevPi Gerät angeschlossen sind.
▷ Klicke auf Copy All Devices to Project.
❯❯ Der Projektbaum des CODESYS Projekts wird aktualisiert.
▷ Wechsle in den Offline-Modus.
▷ Schreibe die gewünschte Anwendung und lade das neue Projekt auf das RevPi Gerät.

CODESYS Lizenz sichern und wiederherstellen

Lizenz sichern
ACHTUNG

Die CODESYS Lizenz kann verloren gehen. Die Lizenz kann z. B. nach dem Aufspielen eines neuen Image oder im Fall eines beschädigten Dateisystems verloren gehen. Sichere die Lizenz für CODESYS außerhalb Deines RevPi Geräts, damit sie Dir weiterhin zur Verfügung steht.

Automatische Sicherung der Lizenz in CODESYS V3.5 SP13 und höher
Ab CODESYS V3.5 SP13 wird während des Lizenzierungsvorgangs automatisch eine Lizenz-Backup-Datei *.WibuCmRaU auf dem Lizenzserver und auf dem Rechner gespeichert. Der Lizenzmanager kann mit dieser Datei die Lizenz auf dem Gerät wiederherstellen, falls die Lizenzdateien verloren gehen. Ein manuelles Backup ist nicht mehr notwendig.

**Sichern der Lizenz durch manuelles Sichern einer Lizenz-Update-Datei ***.WibuCmRaU
Für CODESYS-Versionen vor SP13 steht weiterhin folgende Möglichkeit für die Sicherung von Lizenzen zur Verfügung, die zu einem späteren Zeitpunkt wiederhergestellt werden sollen.

Voraussetzung: Die Lizenz ist aktiv.
▷ Starte das RevPi Gerät neu.
▷ Öffne CODESYS.
▷ Füge ein Gerät hinzu.
▷ Doppelklicke auf das Gerät.
     ❯ Der Geräte-Editor öffnet sich.
▷ Klicke auf die Registerkarte Files.
▷ Wechsle in den Backup-Ordner auf dem RevPi Gerät.
▷ Sichere die Datei CMLicenseNew.WibuCmRaU auf ein externes Laufwerk.
     ❯ Die Sicherung der Lizenz-Update-Datei auf ein externes Laufwerk wird erstellt.

Save Licence

▷ Sichere die Lizenz in der Datei 3SLicenseInfo.tar.
▷ Gehe wie oben für die Lizenz-Update-Datei beschrieben vor, erstelle jedoch die Datei 3SLicenseInfo.tar aus dem Verzeichnis \backup auf einem externen Laufwerk.

Lizenz wiederherstellen
HINWEIS

Durch die Lizenzaktivierung wird die Lizenz an Dein RevPi Gerät gebunden. Du kannst die Lizenz nur auf diesem Gerät aktivieren und deaktivieren.

Im CODESYS Development System V3.5 SP13 und höher wird eine gesicherte Lizenz über die Funktion Lizenzen wiederherstellen im Lizenzmanager wiederhergestellt. Dies ist nur für Lizenzen möglich, die auf einem Soft-Container aktiviert wurden.

Lizenz im Lizenzmanager wiederherstellen
▷ Klicke auf Tools.
▷ Wähle Licence Manager.
▷ Folge der Anleitung des Assistenten mit den gleichen Einstellungen, die Du bei der Lizenzierung verwendet hast.
▷ Wähle Device.
▷ Wähle Soft container.
▷ Klicke nach dem Einrichten des Geräts auf den Pfeil.
▷ Klicke unten links im Lizenzmanager auf Restore license.
     ❯ Der Dialog Restore licenses öffnet sich.
▷ Gib die Ticket-ID der Lizenz an.
▷ Klicke auf Restore.
❯❯ Die Lizenz sucht nach der Sicherungsdatei *.WibuCmRaU zuerst auf dem lokalen Rechner und dann auf dem Lizenzserver. Wenn die Lizenz gefunden wird, wird sie reaktiviert. Für CODESYS-Versionen vor SP13 stehen weiterhin folgende Möglichkeiten für die Wiederherstellung von Lizenzen zur Verfügung.

**Wiederherstellen einer Lizenz aus der manuell erstellten Lizenz-Update-Datei **CMLicenseNew.WibuCmRaU

Voraussetzungen: Dein Entwicklungssystem mit CODESYS Development System hat Internetzugang und ist mit Deinem RevPi Gerät verbunden.
▷ Öffne CODESYS.
▷ Erstelle ein Standardprojekt.
▷ Aktualisiere das Gerät. Das Gerät ist vom Typ CODESYS Control for Linux ARM SL.
▷ Öffne den Lizenzmanager.
▷ Folge den Anweisungen des Assistenten mit der Einstellung Device/Soft container oder Dongle/Selection of the target device bis zum Dialog Lizenzmanager mit der Dropdown-Liste für weitere Aktionen (links unten).
▷ Wähle Install licenses.
▷ Wähle im folgenden Dialog die gesicherte Lizenz-Update-Datei CMLicenseNew.WibuCmRaU aus.
▷ Klicke auf Finish.
❯❯ Die Lizenz wird wiederhergestellt. **Wiederherstellen aus der Datei **3SLicenseInfo.tar
▷ Kopiere die zuvor gespeicherte Datei 3SLicenseInfo.tar in das Verzeichnis \\restore.
❯❯ Die Lizenz wird wiederhergestellt.

Konfiguration

Auf den folgenden Seiten findest Du Informationen zu den Konfigurationswerten der RevPi Geräte, die Du für Deine Einstellungen in CODESYS benötigst.

Statusbytes mit CODESYS

Wir verwenden Statusbytes auf den RevPi Geräten, um verschiedene Funktionen oder Informationen an einer bestimmten Stelle im Prozessabbild einzutragen. Welche Statusbytes es auf den RevPi Geräten gibt und wie Du diese verwenden kannst, kannst Du in den Abschnitten Statusbytes am RevPi Core und Statusbytes am RevPi Connect nachlesen.

Verwendung von Statusbytes mit CODESYS

CODESYS bietet ein automatisches Mapping zwischen der Variable, die Du in Deiner Anwendung verwendest, und dem Statusbyte des RevPi Geräts.
▷ Doppelklicke auf das RevPi Gerät im Gerätebaum.
     ❯ Die Tabelle Mapping öffnet sich.
     ❯ In der Spalte Channel sind alle Statusbytes des RevPi Geräts (hier eines RevPi Core) aufgelistet:

Mapping Status Bytes

▷ Gib in der Spalte Variable einen benutzerdefinierten Namen für das Statusbyte ein, das Du verwenden möchtest.
❯❯ Beim Laden eines Projekts auf das RevPi Gerät werden die Werte automatisch gemappt.

Mapping der Werte in CODESYS

Die Standardwerte für die konfigurierbaren Statusbytes sind:

StatusbyteStandardwert
RS485ErrorLimit110
RS485ErrorLimit21000
RevPiLEDFALSE

Wenn die Standardwerte geändert werden sollen, müssen die Werte in der entsprechenden POE (Program Organisation Unit) zugewiesen werden. Weitere Informationen zur POE findest Du in der CODESYS Online Hilfe.

Statusbytes am RevPi Core

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.

BitBedeutung
0piControl-Treiber läuft
1Es ist mind. ein I/O-Modul angeschlossen, das nicht mit PiCtory konfiguriert wurde.
2Es 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.
3Ein 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.
4Links vom RevPi ist ein RevPi Gateway angeschlossen.
5Rechts vom RevPi ist ein RevPi Gateway angeschlossen.
Statusbyte RevPiLED

Die frei programmierbaren LEDs können mit dem Status-Byte RevPiLED folgendermaßen gesteuert werden:

BitLEDStatusinformation
1:0A100 = off
01 = green
10 = red
11 = orange
3:2A200 = off
01 = green
10 = red
11 = orange
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.

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.

BitBedeutung
0piControl-Treiber läuft
1Es ist mind. ein I/O-Modul angeschlossen, das nicht mit PiCtory konfiguriert wurde.
2Es 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.
3Ein 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.
4Links vom RevPi ist ein RevPi Gateway angeschlossen.
5Rechts vom RevPi ist ein RevPi Gateway angeschlossen.
6Digitaler 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:

BitKomponenteStatusinformation
1:0LED A100 = aus
01 = grün
10 = rot
11 = orange
3:2LED A2
5:4LED A3
6Relais0 = Relais ist geschlossen
1 = Relais ist offen
7WatchdogUm 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 und RevPi Connect 5
BitKomponenteStatusinformation
2:0LED A1000 = aus
001 = rot
010 = grün
100 = blau
011 = orange
110 = cyan
101 = magenta
111 = weiß
5:3LED A2
8:6LED A3
11:9LED A4
15:12LED 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.

RevPi DIO, RevPi DO, RevPi DI konfigurieren

CODESYS hilft Dir bei der Konfiguration Deines RevPi DIO/DI/DO.
▷ Doppelklicke in CODESYS im Gerätebaum auf das RevPi DIO/DI/DO.
▷ Klicke auf die erste Registerkarte Module Parameters.
▷ Stelle in der Spalte Value die gewünschten Werte ein. Konfigurationswerte des RevPi DIO

Config DIO

Konfigurationswerte des RevPi DO

Config DO

Konfigurationswerte des RevPi DI

Config DI

Beschreibung der konfigurierbaren Werte von RevPi DIO/DI/DO

Im Folgenden findest Du eine detaillierte Beschreibung der Bereiche Eingänge, Ausgänge, Speicher, Zähler, Encoder und PWM.

Input

Im Bereich Input kannst Du alle Parameter einstellen, die Dein RevPi Modul empfängt, z. B. die Werte eines Temperatursensors.

NameDatentypAnzahlOffsetRevPi DIORevPi DIRevPi DOBeschreibung
InputWORD10XXAktuelle Werte an den Eingängen.

Die Bits 0 … 15 (DI) bzw. 0 … 13 (DIO), zeigen die aktuellen Werte der Eingänge 1 … 16 (DI) bzw. 1 … 14 (DIO) an.
Output
Status
WORD12XXBitcodierter Status der Ausgänge.

Die Bits 0 … 15 (DO) bzw. 0 … 13 (DIO) zeigen den aktuellen Fehlerzustand der Ausgänge 1 … 16 an (DO) bzw. 1 … 14 (DIO).

1: Fehler am Ausgang (Abschaltung wegen Übertemperatur, Überlast..).

0: kein Fehler
StatusWORD14XXXModulstatus

HINWEIS: Die Werte von Bit 0 … 7 gelten für RevPi DIO und DI. Für RevPi DO sind die Bits nicht belegt, da dieses Modul keinen Eingangsbaustein hat.

Bit 0: Keine Kommunikation zum Eingangsbaustein

Bit 1: UV1* auf Eingang 1 … 8

Bit 2: UV2* auf Eingang 1 … 8

Bit 3: Übertemperatur** für Eingang 1 … 8

Bit 4: UV1* auf Eingang 9 … 16

Bit 5: UV2* auf Eingang 9 … 16

Bit 6: Übertemperatur** für Eingang 9 … 16

Bit 7: Fehlermeldung des Eingangsbausteins

HINWEIS: Die Werte von Bit 8 … 16 gelten für RevPi DIO und DO. Für RevPi DI sind die Bits nicht belegt, da das Modul keinen Ausgangsbaustein hat.

Bit 8: Keine Kommunikation zum Ausgangsbaustein

Bit 9: Die Ausgangsbaustein meldet einen CRC-Fehler

Bit 10: Fehlermeldung des Ausgangsbausteins

Bit 11 … 15: undefiniert
CounterDINT166XXAktuelle Werte der Counter- bzw. Encoderfunktion.
* UV1: Die Versorgungsspannung für die Eingangsbausteine ist unter 7 Volt gesunken. Der Alarm wird aufgehoben, wenn der Wert wieder über 9 Volt steigt.

* UV2: Die Versorgungsspannung für die Eingangsbausteine ist unter 14 Volt gesunken. Der Alarm wird aufgehoben, wenn der Wert wieder über 16,5 Volt steigt.

Die Kanäle 1 … 8 und 9 … 16 haben getrennte Bits für UV1 und UV 2, weil dafür zwei individuelle Bausteine im Modul sind, die dieses Signal erzeugen. Die Spannung liegt jedoch immer an beiden Bausteinen identisch an. Deshalb setzen beide Bausteine ihr Fehlerbit bei UV1 oder UV2.

**Die Eingangsbausteine melden einen Übertemperatur-Alarm, wenn 135 °C überschritten werden.
Output

Im Bereich Output kannst Du Einstellungen für alle Prozesswerte vornehmen, die Dein RevPi Modul sendet.

NameDatentypAnzahlOffsetRevPi DIORevPi DIRevPi DOBeschreibung
OutputWORD170XXAktuelle Werte an den Ausgängen.

Die Bits 0 … 15 (DO) bzw. 0 … 13 (DIO) zeigen die aktuellen Werte der Ausgänge 1 … 16 (DO) bzw. 1 … 14 (DIO) an.
PWM
(1 … 16)
USINT1672XXAktuelle PWM-Werte in % für die Ausgänge 1 … 16 (DO) bzw. 1 … 14 (DIO).

Diese Werte sind nur gültig, wenn für den jeweiligen Ausgang die PWM-Funktion aktiviert ist.
Memory

Im Bereich Memory kannst Du festlegen, wie die einzelnen Eingänge ausgewertet werden sollen und wie die Ausgänge eingestellt werden.

NameDatentypAnzahlOffsetRevPi DIORevPi DIRevPi DOBeschreibung
InputModeBYTE1688XXAuswahl des Modus für den jeweiligen Eingang.

Direct: Es kann der aktuell anliegende Wert des Eingangs abgerufen werden.

Counter, rising edge: Am Eingang werden die steigenden Flanken gezählt.

Counter, falling edge: Am Eingang werden die fallenden Flanken gezählt.

Encoder: Dieser Eingang wird für die Encoderfunktion verwendet.

HINWEIS: Für die Encoderfunktion werden immer 2 Eingänge benötigt (s. Abschnitt „Encoder“.).
Input
Debounce
WORD1104XXHier wird für alle Eingänge eine Zeit für den Entprellfilter angegeben. Diese Zeit gibt an, ab wann ein wechselnder Zustand am Eingang als stabil angesehen wird. Mögliche Werte sind Off, 25 µs, 750 µs und 3 ms.
OutputPushPullWORD1106XXHier wird für die Ausgänge festgelegt, ob sie im Pushpull- oder im Highsidemodus betrieben werden.
OutputOpenLoadDetectWORD1108XXHier wird für die Ausgänge festgelegt, ob eine open-load Erkennung aktiv ist.
OutputPWMActiveWORD1110XXHier wird festgelegt, ob der Ausgang im PWM-Modus betrieben werden soll.
OutputPWMFrequencyBYTE1112XXHier wird für alle Ausgänge, die im PWM-Modus betrieben werden sollen, festgelegt, mit welcher Frequenz das PWM-Signal erzeugt werden soll. Allgemein gilt: Je höher die Frequenz, desto höher ist die Schrittweite, in der das Taktverhältnis eingestellt werden kann.
Counter

Du kannst für jeden der 14 Eingänge optional eine Zählerfunktion einschalten. Du kannst mit dieser Funktion z. B. zählen, wie oft ein Drehkreuz oder ein Taster betätigt wurde.

Ein Beispiel dafür findest Du auch in unseren Video-Tutorials.

Für jeden Zähler steht dann ein 32 Bit Wert im Prozessabbild.

Der aktuelle Zählerwert wird als signed 32-Bit-Wert zurückgegeben.

Encoder

Du kannst alle Eingänge als Encoder (Drehwertgeber) konfigurieren. In Kombination mit der PWM-Funktion ist das z. B. dann hilfreich, wenn Du Teile von Mengen steuern möchtest. Damit kannst Du etwa eine Wasserzufuhr regulieren oder Lichter dimmen.

Du kannst maximal fünf Encoder verwenden.

Pro Encoder benötigst Du jeweils zwei Eingänge. Dazu musst Du die Eingänge immer paarweise verwenden, z. B.:

Eingang 1 und 2,

Eingang 3 und 4

Eingang 13 und 14 (bzw. Eingang 15 und 16 bei RevPi DI)

Es ist wichtig, dass Du den ersten Encoder-Kanal immer an einem ungeraden Eingang anlegst. Wenn Du das nicht tust und z. B. Eingang 2 und 3 verwendest, wird Dein Encoder nicht erkannt.

Der aktuelle Encoderwert wird als signed 32-Bit-Wert für den ersten Kanal zurückgegeben.

PWM

Du kannst für jeden der 14 Ausgänge optional eine PWM-Funktion einschalten.

Die PWM-Funktion ist z. B. dann hilfreich, wenn Du Teile von Mengen steuern möchtest. Damit kannst Du etwa eine Wasserzufuhr regulieren oder Lichter dimmen.

Bei eingeschaltetem PWM wird statt einem Bit pro Kanal ein ganzer Bytewert von 0 bis 100 übertragen, der die Pulsweite am Ausgang in Prozent definiert. Per Konfiguration kann pro Modul eine der folgenden PWM-Frequenzen festgelegt werden:

PWM-FrequenzAuflösung der kleinsten Schrittweite in Prozent (Tastgrad)
40 Hz1%
80 Hz2%
160 Hz4%
200 Hz5%
400 Hz10%

Der aktuelle Tastgrad in % wird über einen unsigned 8-Bit-Wert eingestellt.

RevPi AIO konfigurieren

Analoge Ausgänge

CODESYS hilft Dir bei der Konfiguration Deines RevPi AIO. ▷ Doppelklicke in CODESYS im Gerätebaum auf das RevPi AIO. ▷ Klicke auf die erste Registerkarte Module Parameters. ▷ Klicke auf die entsprechende Zelle in der Spalte Value, um die Werte einzustellen.

Config AIO

Konfigurierbare Werte der Analogausgänge des RevPi AIO

Dein RevPi AIO hat zwei analoge Ausgänge. Die Ausgänge können entweder Spannung oder Strom ausgeben. Du kannst Aktoren wie z. B. Frequenzumrichter zur Drehzahlregelung anschließen.

Damit Deine Konfiguration funktioniert, ist es wichtig, dass Deine Geräte an die richtigen Ausgangspins angeschlossen sind.

AIO Outputs)

Ausgang 1 (OUT 1)
PinVerwendung
1V+ positiver Ausgang für Spannungsbereiche Kanal 1
3I+  positiver Ausgang für Strombereiche Kanal 1
5gemeinsame Masse für beide Ausgangskanäle 1 und 2 (Strom und Spannung)
7

Ausgang 2 (OUT 2)

PinVerwendung
2V+ positiver Ausgang für Spannungsbereiche Kanal 2
4I+  positiver Ausgang für Strombereiche Kanal 2
6gemeinsame Masse für beide Ausgangskanäle 1 und 2 (Strom und Spannung)
8
HINWEIS

Du kannst immer nur entweder Strom oder Spannung auf einem Kanal ausgeben, obwohl es zwei getrennte Anschlüsse gibt. Detaillierte Einstellungen findest Du in der folgenden Tabelle.

VariableWerteKommentar
Output1Range,
Output2Range
Stelle hier die Wertebereiche für Strom oder Spannung ein, die die Ausgänge abgeben sollen.
Output1EnableSlew,
Output2EnableSlew
On = Anstiegsrate verwenden

Off= Anstiegsrate nicht verwenden
Hier kannst Du festlegen, ob Du eine Anstiegsrate für den jeweiligen Ausgang verwenden möchtest.

Die Anstiegsrate kontrolliert die Geschwindigkeit, mit der sich die Ausgangsspannung oder Ausgangsstromstärke ändert, wenn Du im Prozessabbild einen neuen Wert für einen Ausgang festlegst.
Output1SlewStepSize,
Output1SlewStepSize
Hier kannst Du die Schrittweite der Anstiegsrate für den jeweiligen Ausgang auswählen. Die Schrittweite 1 entspricht dabei dem kleinsten Bitwert (LSB) des Wandlers. Die Schrittweite bestimmt zusammen mit der Schritt-Taktfrequenz die Steilheit des Übergangs (der Flanke) zwischen zwei Analogwerten.
Output1SlewUpdateFreq,
Output1SlewUpdateFreq
Hier kannst Du die Schritt-Taktfrequenz für die Anstiegsrate des jeweiligen Ausgangs auswählen. Die Schrittweite bestimmt zusammen mit der Schritt-Taktfrequenz die Steilheit des Übergangs (der Flanke) zwischen zwei Analogwerten.
Skalierung Ausgang 1:****Skalierung Ausgang 2:Hier kannst Du eine Skalierung für jeden Ausgangskanal festlegen. Diese wird durch die drei Konfigurationswerte bestimmt und nach folgender Formel aus dem Originalwert berechnet (der in mV bzw. µA vorliegt):

Y = Multiplier/Divisor*X + Offset
Skalierung

Die Skalierung kann für die Umrechnung in andere Einheiten oder zur nachträglichen Kalibrierung eines Aktors verwendet werden. Bei der Berechnung im RevPi AIO Modul wird eine 32‑Bit‑Integer‑Arithmetik verwendet. Die Ergebnisse werden dann aber wieder als 16‑Bit‑Werte zum DAC gesendet. Sollte das Ergebnis Y die Grenzen eines 16‑Bit‑signed Wertes überschreiten, so wird der Fehler erkannt und der Wert begrenzt. Die Ausgangswerte müssen für einen Skalierungsfaktor 1 immer in der Einheit mV bzw. µA ins Prozessabbild abgelegt werden.

Beispiel:

Ein Frequenzumrichter steuert einen Elektromotor an. Er hat einen Analogeingang von 0 bis 10 V. Dabei entspricht 0 V einer Motordrehzahl von 200 upm und 10 V einer Drehzahl von 3000 upm. Um im Prozessabbild die Drehzahl in upm zu hinterlegen, musst Du für den Ausgangsbereich 0-10 V die Parameter wie folgt wählen:

Multiplier = 100, Divisor = 28, Offset = -714

Die Einstellungen rund um die Anstiegsrate haben folgende Bedeutung:

Nehmen wir an, Du hast einen Ausgangsbereich von 0 bis 10 V gewählt. Im Prozessabbild liegt für den Kanal1 ein Ausgangswert von 3 V. Dieser Wert soll sich nun auf 8 V ändern. Deshalb schreibst Du statt den 3000 mV die Zahl 8000 an den entsprechenden Offset im Prozessabbild. Beim nächsten PiBridge Zyklus wird diese Zahl dann dem DAC (Digital to Analog Converter) übergeben, der daraus die Analogspannung für den Ausgang generiert. Dies passiert also mit einer gewissen Verzögerungszeit von 10 … 40 ms, je nach Auslastung der PiBridge (die von der Konfiguration abhängt). Nach dieser Verzögerung würde die Ausgangsspannung sehr schnell von 3 V auf 8 V springen. Die Anstiegssteilheit der Spannung ist dabei nur von der Gesamtkapazität am Ausgang abhängig (die unter anderem von den angeschlossenen Geräten abhängt). Sie dürfte in der Regel bei einigen µs liegen. Oft ist diese Flankensteilheit unerwünscht, weil sie hohe Frequenzanteile hat, die zur Störausstrahlung und anderen Problemen führen kann. Daher kannst Du die Flankensteilheit künstlich verringern. Dazu schaltest Du Output?EnableSlew auf On. Nun wird der DAC, sobald er die neuen Daten (8000) hat, in kleinen Schritten die Ausgangsspannung erhöhen, bis die 8 V erreicht sind. Die Amplitude der Schritte stellst Du mit Output?SlewStepSize ein. Diese Schrittweite wird in der Einheit LSB (Last Significant Bit) angegeben. Da unser Wandler bei jedem Ausgangsbereich mit 16‑Bit‑Auflösung arbeitet, beträgt die Schrittweite des niederwertigsten Bits (LSB) im Bereich 0 … 10 V 10 V/2^16 = 0,15 mV (bzw. 0,30 µA im Bereich 4 … 20 mA). Wie viele dieser winzigen Schritte der DAC benötigt hängt also nur von dem Spannungssprung ab: Bei unserem Beispiel sind es mit einer Schrittweite von 1 also 5000 mV / 0,15 mV = 33.333 Schritte. In welcher Zeit nun diese Schritte vollzogen werden, wird durch die Taktrate bestimmt, mit der die Schritte in das Signal eingebaut werden. Sie kann von Dir durch den Parameter Output?SlewClock eingestellt werden. Bei einer eingestellten Taktrate von 3,3 kHz braucht die Flanke von 5 V also 33.333* 1/3300 s = 10 s. Bei der Einstellung 258 kHz wären es demnach 130 ms. Die Flankensteilheit beträgt also bei 3,3 kHz Taktrate 0,5 V/s bzw. 38 V/s bei Taktrate 258 kHz. Mit größeren Schrittweiten kannst Du die Flankensteilheit drastisch erhöhen. Allerdings macht das Signal dann auch Sprünge, d. h. es bekommt deutlich mehr hochfrequente Signalanteile.

Wenn ein Fehler auftritt, erhältst Du in den Eingangswerten des Prozessabbilds mit dem Namen InputStatus_1-4 Fehlermeldungen. Die Werte haben folgende Bedeutung:

BitpositionStatusmeldung
0 (LSB)Temperaturfehler des Ausgangsbausteins. Der Ausgangsbaustein ist durch eine längere Überlastung (Kurzschluss) überhitzt.
1Open Load Fehler des Stromausgangs. Im Betriebsmodus Stromausgang ist der angeschlossene Stromkreis zu hochohmig, weil zum Beispiel die Leitung unterbrochen ist.
2Interner CRC-Fehler des Ausgangsbausteins. Dieser Fehler deutet auf einen Hardwaredefekt oder gravierende externe Störsignale hin.
3Bereichsfehler: Der Ausgangswert im Prozessabbild liegt außerhalb des konfigurierten Ausgangsbereichs.
4Reserviert für interne Zwecke
5Die Versorgungsspannung für das Modul ist geringer als 10,2 V.

Die Ausgänge wurden abgeschaltet.
6Die Versorgungsspannung für das Modul ist größer als 28,8 V.Die Ausgänge wurden abgeschaltet.
7 (MSB)Timeout bei der Verbindung zum RevPi Core/Connect (z. B. wegen einer Störung der PiBridge, oder wenn das Treiberprogramm PiControl nicht mehr korrekt auf dem RevPi Core/Connect läuft.) Die Ausgänge wurden abgeschaltet.
Analoge Eingänge

CODESYS hilft Dir bei der Konfiguration Deines RevPi AIO.
▷ Doppelklicke in CODESYS im Gerätebaum auf das RevPi AIO.
▷ Klicke auf die erste Registerkarte Module Parameters.
▷ Klicke auf die entsprechende Zelle in der Spalte Value, um die Werte einzustellen.

Config AIO Inputs

Konfigurierbare Werte der Analogeingänge des RevPi AIO

Dein RevPi AIO besitzt vier analoge Eingänge. Diese Eingänge können entweder als Spannungs- oder Stromeingang eingestellt werden. Du kannst hier Sensoren, wie zum Beispiel Näherungs- oder Füllstandsensoren mit Analogausgängen (typischerweise 4 … 24 mA oder 0 … 10 V) anschließen.

Damit Deine Konfiguration funktioniert, ist es wichtig, dass Deine Geräte an die richtigen Eingangspins angeschlossen sind.

AIO Inputs

Eingang 1
PinVerwendung
24- negativer Eingang für Strom oder Spannungsmessung Kanal 1
26* von hier zu Pin 28 muss für Strommessungen eine Drahtbrücke eingebaut werden
28+ positiver Eingang für Strom oder Spannungsmessung Kanal 1
Eingang 2
PinVerwendung
23- negativer Eingang für Strom oder Spannungsmessung Kanal 2
25* von hier zu Pin 27 muss für Strommessungen eine Drahtbrücke eingebaut werden
27+ positiver Eingang für Strom oder Spannungsmessung Kanal 2
Eingang 3
PinVerwendung
17- negativer Eingang für Strom oder Spannungsmessung Kanal 3
19* von hier zu Pin 21 muss für Strommessungen eine Drahtbrücke eingebaut werden
21+ positiver Eingang für Strom oder Spannungsmessung Kanal 3
Eingang 4
PinVerwendung
11- negativer Eingang für Strom oder Spannungsmessung Kanal 4
13* von hier zu Pin 15 muss für Strommessungen eine Drahtbrücke eingebaut werden
15+ positiver Eingang für Strom oder Spannungsmessung Kanal 4

Detaillierte Einstellungen findest Du in der folgenden Tabelle.

VariableWerteKommentar
Input1Range,

Input2Range,

Input3Range,

Input4Range
Stelle hier den Eingangsbereich für Spannungs- oder Strommessung ein. Das Messverfahren (Strom oder Spannung) sowie der Bereich sollte mit dem Ausgang des angeschlossenen Sensors übereinstimmen. Typisch sind bei industriellen Sensoren 0 … 10 V oder 4 … 24 mA
ADC_DataRateStelle hier die Frequenz ein, die beim Analogwandler als Datenrate verwendet wird.

Die Rate, mit der die Werte im Prozessabbild aktualisiert werden, ist ungefähr 1/5 dieser ADC-Datenrate.

Diese Frequenz gilt für alle vier Eingänge.
Skalierung Eingang 1-4:

Input1Multiplier

Input1Divisor

Input1Offset
Hier kannst Du eine Skalierung für jeden Eingangskanal festlegen. Diese wird durch die drei Konfigurationswerte bestimmt und nach folgender Formel aus dem Originalwert berechnet (der in mV bzw. µA vorliegt):

Y = Multiplier/Divisor*X + Offset

Beachte, dass Du immer nur entweder Strom oder Spannung auf einem Kanal messen kannst. Bei einer Strommessung wird über eine Drahtbrücke, die Du extern selbst anbringen musst, ein Bürde-Widerstand zwischen den Eingängen für die Spannungsmessung geschaltet. Die Umstellung der Bereiche in PiCtory verändert zunächst in der Messelektronik so gut wie nichts, sondern wird nur für die Umrechnung in mV oder µA sowie die Überwachung der Grenzwerte verwendet. Nur für den 0 … 5-V-Bereich wird die Eingangsempfindlichkeit des Messverstärkers erhöht, wodurch in diesem Bereich die doppelte Genauigkeit (maximale Abweichung ist in diesem Bereich 5 mV) erreicht wird.

Die Skalierung kann für die Umrechnung in andere Einheiten oder zur nachträglichen Kalibrierung eines Sensors verwendet werden. Bei der Berechnung im RevPi AIO Modul wird eine 32-Bit-Integer-Arithmetik verwendet. Die Ergebnisse werden dann aber wieder als 16-Bit-Werte im Prozessabbild hinterlegt. Sollte das Ergebnis Y die Grenzen eines 16 Bit signed Wertes überschreiten, so wird der Fehler erkannt und der Wert begrenzt. Die Ausgangswerte liegen immer in der Einheit mV bzw. µA vor.

Beispiel

Ein Näherungssensor gibt im Bereich zwischen 30 und 300 Millimeter die Spannung 0 bis 10 V aus. Um im Prozessabbild den Abstand in mm zu haben, musst Du die Parameter wie folgt wählen:

Multiplier = 270, Divisor = 10000, Offset = 30

Arbeitet der Sensor stattdessen mit 4 … 20 mA, müssen die Werte wie folgt von Dir festgelegt werden:

Multiplier = 270, Divisor = 16000, Offset = -38

ADC_DataRate

Das Modul verwendet einen sogenannten Delta-Sigma-Wandler des Typs ADS 1248. Dieser Wandler hat eine einstellbare Datenrate, die eng mit der Frequenzkurve des in einem solchen Wandler enthaltenen Digitalfilters zusammenhängt. Genaue Diagramme zu den für jede Einstellung erzielten Frequenzgängen sind im Datenblatt des ADS 1248 zu finden. Wichtig für Deine Messungen ist hier, dass niederfrequente Störsignale, wie zum Beispiel ein 50-Hz-Netzbrummen, nur bei Einstellungen von 5 bis 20 Hz wirksam unterdrückt werden. Die größte Messgenauigkeit bekommst Du also mit diesen Einstellungen. Dadurch verringert sich aber auch die Aktualisierungsrate der Datenwerte im Prozessabbild. Der Zusammenhang ist wie folgt:

ADC_DatenrateAktualisierungsrate im PA
5 Hz1 Hz
10 Hz2 Hz
20 Hz4 Hz
40 Hz8 Hz
80 Hz10 Hz
160 Hz25 Hz
320 Hzmax. 50 Hz
640 Hzmax. 125 Hz

Beachte, dass die Tabellenwerte für die Einstellungen 320 Hz und 640 Hz nur Maximalwerte darstellen. Die tatsächlich erreichte Aktualisierungsrate kann in diesem Bereich durch die Auslastung der PiBridge deutlich niedriger liegen. Die Auslastung ist von Deiner Konfiguration abhängig und daher kann bei diesen ADC_DataRates die jeweilige Aktualisierungsrate nur experimentell auf Deinem System und mit Deiner Konfiguration ermittelt werden. Generell sind diese Einstellungen daher nicht empfehlenswert.

Tritt ein Fehler auf, erhältst Du Fehlermeldungen im Kanal AI_Status_Ch1-4 auf der Registerkarte AIO Module I/O Mapping. Die Werte haben folgende Bedeutung:

BitpositionStatusmeldung
Bit 0 (LSB)0 = Wert ist höher als die Untergrenze des konfigurierten Bereichs1 = Wert ist mindestens 20 mV bzw. 20 µA niedriger als die Untergrenze des konfigurierten Bereichs
Bit 10 = Wert ist niedriger als die Obergrenze des konfigurierten Bereichs1 = Wert ist mindestens 20 mV bzw. 20 µA höher als die Obergrenze des konfigurierten Bereichs

Im Feld InputValue_1-4 siehst Du jetzt den Istwert des Eingangs. Wenn Du den Eingang als Spannungseingang verwendest, wird der Wert in mV angegeben. Wenn Du den Eingang als Stromeingang verwendest, wird der Wert in µA angegeben. In den Feldern InputValue_1-4 kannst Du symbolische Namen für die vier Analogeingangswerte festlegen.

RTD-Kanäle für Temperaturmessungen

CODESYS hilft Dir bei der Konfiguration Deines RevPi AIO.
▷ Doppelklicke in CODESYS im Gerätebaum auf das RevPi AIO.
▷ Klicke auf die erste Registerkarte Module Parameters.
▷ Klicke auf die entsprechende Zelle in der Spalte Value, um die Werte einzustellen.

Config AIO RTD

Konfigurierbare Werte der RTD-Kanäle

Dein RevPi AIO besitzt zwei RTD-Kanäle. Du kannst damit die Temperatur von angeschlossenen Pt100- und Pt1000-Sensoren ermitteln.

Damit Deine Konfiguration funktioniert, ist es wichtig, dass Deine Geräte an die richtigen Eingangspins angeschlossen sind.

AIO RTD

RTD Jumper

HINWEIS

Beachte, dass das RevPi AIO Modul für einen 2-Draht-Sensor die 3-Draht-Messmethode verwendet. Daher musst Du den fehlenden 3. Draht durch eine Steckbrücke am Modul zwischen den Pins 10 und 12 bzw. 9 und 18 simulieren.

Die detaillierten Einstellwerte findest Du in der folgenden Tabelle.

VariableWerteKommentar
RTD1Type,

RTD2Type
Pt100

Pt1000
Stelle hier ein, welchen Messfühlertyp Du verwendest.
RTD1Wiring,

RTD2Wiring
2-Wire

3-Wire

4-Wire
Wähle hier das Messverfahren passend für Deinen Temperaturfühler aus.
**RTD 1 Skalierung

**RTD1Multiplier

RTD1Divisor

RTD1Offset

**RTD 2 Skalierung

**RTD2Multiplier

RTD2Divisor

RTD2Offset
16 Bit signed Multiplier

16 Bit unsigned Divisor

16 Bit signed Offset
Hier kannst Du eine Skalierung für die RTD-Kanäle festlegen. Diese wird durch die drei Konfigurationswerte bestimmt und nach folgender Formel aus dem Originalwert berechnet (der in 1/10 °C vorliegt):

Y = Multiplier/Divisor*X + Offset

Die Skalierung kann für die Umrechnung in andere Einheiten oder zur nachträglichen Kalibrierung eines Temperaturfühlers verwendet werden. Bei der Berechnung im RevPi AIO Modul wird eine 32-Bit-Integer-Arithmetik verwendet. Die Ergebnisse werden dann aber wieder als 16-Bit-Werte im Prozessabbild hinterlegt. Sollte das Ergebnis Y die Grenzen eines 16-Bit-signed-Wertes überschreiten, wird der Fehler erkannt und der Wert begrenzt.

Beispiel:

Um die Temperatur in °C ohne Nachkommastellen im Prozessabbild zu haben, muss die Einstellung so aussehen:

Multiplier = 1, Divisor = 10, Offset = 0

Um die Temperatur in °F ins Prozessabbild zu bekommen, müssen die Parameter so eingestellt werden:

Multiplier = 18, Divisor = 100, Offset = 32

Für Prozessdaten in °Kelvin brauchst Du diese Werte:

Multiplier = 1, Divisor = 10, Offset = 273

Wenn ein Fehler auftritt, erhältst Du in den Eingangswerten des Prozessabbilds mit dem Namen Bytes RTDStatus_1 und RTDStatus_2 Fehlermeldungen. Die Werte haben folgende Bedeutung:

BitpositionBedeutungKommentar
Bit 0 (LSB)0 = Temp. ist höher als -200 °C,

1 = Ermittelte Temp. ist niedriger als -200 °C (z. B. Kurzschluss im Sensor oder Kabel)
Falls die ermittelte Temperatur außerhalb des Bereiches ist, wird der jeweilige Grenzwert aus­gegeben (-200,0 °C oder 850,0 °C) und zusätzlich das entsprechende Statusbit gesetzt.
Bit 10 = Temp. ist niedriger als 850 °C,

1 = Ermittelte Temp. ist höher als 850 °C (z. B. kein Sensor angeschlossen oder Leitungsbruch).

In den Feldern RTDValue_1 und RTDValue_2 kannst Du symbolische Namen für die beiden Temperaturwerte festlegen.

RevPi MIO konfigurieren

CODESYS hilft Dir bei der Konfiguration Deines RevPi MIO.
▷ Doppelklicke in CODESYS im Gerätebaum auf das RevPi MIO.
▷ Klicke auf die erste Registerkarte Module Parameters.
▷ Klicke auf die entsprechende Zelle in der Spalte Value, um die Werte einzustellen.

Config MIO

Digitale Eingänge und Ausgänge konfigurieren

Das RevPi MIO hat eine GPIO-Schnittstelle mit vier Anschlüssen, die Du wahlweise in verschiedenen Betriebsmodi verwenden kannst:

  • PWM-Input
  • PWM-Output
  • Impulsmessungen
  • Impulsausgabe
  • GPO 24 V Pegelausgabe
  • GPI 24 V

Die digitalen Ein- und Ausgänge verwenden denselben Ground wie die analogen Ein- und Ausgänge. Verwende deshalb einen der System-Ground-Anschlüsse an der 28-poligen Steckerleiste. Wenn Du diesen Ground nicht verwendest, ist es möglich, dass Deine Werte verfälscht werden. Wenn die Spannung zwischen dem System-Ground und dem Ground der digitalen Ein- und Ausgänge zu hoch ist, kann zudem die Schutzdiode zerstört werden.

In der folgenden Tabelle findest Du die Einstellwerte für die digitalen Ein- und Ausgänge.

VariableWerteFunktion
DigitalInput_1-50: low

1: high
Der Wert zeigt an, welcher Pegel am Eingang anliegt.
Dutycycle_Pulselength_1-40 … 65535Je nach eingestelltem Modus zeigt dieser Wert den gemessenen Dutycycle oder die gemessene Impulslänge an.
Fpwm/PulseCount_1-40 … 65535Je nach eingestelltem Modus zeigt dieser Wert die gemessene Frequenz oder registrierte Impulse.
DigitalOutput_1-40: low

1: high
Du kannst hier die einzelnen digitalen Ausgänge auf high oder low setzen.
PWM Dutycycle_1-40 … 1000Du kannst hier den Tastgrad* für die einzelnen digitalen Ausgänge einstellen.

*Der Tastgrad gibt für eine periodische Folge von Impulsen das Verhältnis der Impulsdauer zur Periodendauer an. 
Encoder Mode0 = No Encoder
1 = Encoder on GPIO3&4
Wenn Du hier den Wert 1 einstellst, kannst Du GPIO3 und GPIO4 als Quad-Encoder-Input verwenden. GPIO1 und GPIO2 können weiterhin als Output mit allen Modi konfiguriert oder als Input (kein PWM, kein Pulse) verwendet werden.
IO_Mode_1-40 = Input
Anschluss wird als digitaler Ausgang verwendet.
**1 = PulseInput **
Anschluss wird als digitaler Eingang zur Impuls-Messung verwendet.
2 = Pwm-Input
Anschluss wird als digitaler Eingang zur PWM-Messung verwendet.
3 = Output
Anschluss wird als digitaler Ausgang verwendet.
4 = Output-Pulse
Anschluss wird als digitaler Ausgang zur Ausgabe von Impulsen verwendet.
5 = Output-Pwm
Anschluss wird als digitaler Ausgang zur Pulsweitenmodulation verwendet.
Du kannst hier die Betriebsart für den jeweiligen digitalen Ein- oder Ausgang festlegen.
PulseMode0 = Single

1 = Retrigger
Hier kannst Du den Retrigger-Modus aktivieren.
FPWMOUT_12, 3,40 … 6553512= PWM-Frequenz für die digitalen Ausgänge 1 und 2. Diese beiden Anschlüsse teilen sich immer dieselbe PWM-Frequenz. Die Anschlüsse 3 und 4 können separat konfiguriert werden.
PulseLength_1-40 … 65535Impulslänge am jeweiligen digitalen Ausgang.
Analoge Eingänge konfigurieren

Dein RevPi MIO besitzt acht analoge Eingänge. Diese Eingänge können als Spannungseingang verwendet werden. Du kannst hier Sensoren, wie zum Beispiel Näherungs- oder Füllstandsensoren mit Analogausgängen anschließen. Die maximale Gleichtaktspannung darf pro Eingang zwischen 0 und 10 V haben.

Damit Deine Konfiguration funktioniert, ist es wichtig, dass Deine Geräte an die richtigen Eingangspins angeschlossen sind.

VariableWerteKommentar
AnalogInputMode 1-8analog Input: Anschluss wird zur Spannungsmessung verwendet.

LogicLevelInput: Anschluss wird zur Pegelerkennung verwendet.
Hier kannst Du festlegen, ob Du den jeweiligen Anschluss zur Pegelerkennung oder zur Spannungsmessung verwenden möchtest.
AnalogInputLogicLevel_1-80: Schaltschwelle wurde nicht überschritten.

1: Schaltschwelle wurde überschritten.
Dieser Wert zeigt an, ob die Schaltschwelle überschritten wurde.
Analog Input 1-8Logic 0-10 000Hier siehst Du welche Eingangsspannung am jeweiligen analogen Eingang anliegt. Der Wert wird in mV ausgegeben.
InputLogicLevelVoltage_1-80 … 10 000Du kannst hier die Schaltschwellen für die analogen Eingänge festlegen.
FilterWindowSize1 … 255Filterbreite des Moving Average Filters.
Analoge Ausgänge konfigurieren

Im folgenden Beispiel konfigurieren wir den ersten analogen Eingang, um ihn für die Ausgabe von Spannung zu verwenden. Diesen Modus benötigst Du, um Aktoren wie z. B. Einstellelemente oder Stellglieder für Regler zu verwenden. Dazu musst Du folgende Werte in den Konfigurationswerten einstellen:

Analogen Ausgang zur Spannungsausgabe verwenden
  • AnalogOuputMode1 = AnalogOutput
  • Analog Output 1 = Stelle hier eine feste Ausgangsspannung ein. Der Wert muss zwischen 0 und 10 000 sein und wird in mV angegeben.

Wenn Du mehr digitale Ausgänge benötigst, kannst Du einen der analogen Ausgänge so umstellen, dass er sich wie ein digitaler Ausgang verhält. Dazu musst Du folgende Werte in den Konfigurationswerten einstellen:

Analogen Ausgang als digitalen Ausgang verwenden

  • AnalogOuputMode1 = LogicLevelOutput
  • OutputLogicLevelVoltage 1 = Stelle hier eine feste Ausgangsspannung ein. Der Wert muss zwischen 0 und 10 000 sein und wird in mV angegeben.

Hier haben wir für Dich noch einmal alle Einstellwerte für die analogen Ausgänge zusammengefasst.

VariableWerteFunktion
AnalogOutputMode_1-8AnalogOutput: Du kannst den Anschluss als analogen Ausgang verwenden.

LogicLevelOutput: Du kannst den Anschluss als digitalen Ausgang verwenden.
Stelle hier den Funktionsmodus für den analogen Ausgang ein.
AnalogOutput 1-80 … 10 000Stelle hier die Spannung in mV ein, die der jeweilige Analogausgang ausgeben soll.
OutputLogicLevelVoltage 1-80 … 10 000Stelle hier eine feste Spannung in mV ein, die der jeweilige Analogausgang ausgeben soll.

Wird bei AnalogOutput_* ein Wert ungleich 0 eingetragen, so wird am Ausgang diese Spannung ausgegeben.
AnalogOutputLogicLevel_10: low

1: high
Wenn Du den Ausgang als digitalen Ausgang verwendest (Funktionsmodus = LogicLevelOutput), kannst Du hier die einzelnen digitalen Ausgänge auf high oder low setzen.

RevPi Gateway konfigurieren

CODESYS hilft Dir bei der Konfiguration Deines RevPi Gateway.
▷ Doppelklicke in CODESYS im Gerätebaum auf das RevPi Gateway.
▷ Klicke auf die erste Registerkarte Revolution PI Extension Bus I/O Mapping, um das Modul zu konfigurieren.

Config Gateway

Das Byte ModuleState hat die folgenden Zuordnungen:

WertStatus
0x00Physikalisch offline
0x01Physikalisch verbunden, aber keine Kommunikation
0x02Standby/Ready (PreOp)
0x03Zyklischer Datenaustausch aktiv (Op)

CODESYS zeigt den Status No driver found für das RevPi Gateway an, wenn der Gateway ModuleState offline ist:

No Driver Found

Wenn sich das Gateway im PreOp- und Op-Status befindet oder physikalisch verbunden ist, ist das Gateway-Symbol im CODESYS-Gerätebaum grün:

gateway running

RevPi Con CAN konfigurieren

CANopen Master konfigurieren

Voraussetzungen
✓ Ein Projekt mit einem RevPi Connect Basismodul und einem RevPi Con CAN Erweiterungsmodul an der Schnittstelle piBridgeRight ist angelegt.
▷ Klicke mit der rechten Maustaste auf das Basisgerät.
▷ Klicke auf Add Device.
▷ Wähle CANbus aus den Fieldbuses.
▷ Klicke auf Add.
▷ Klicke im Projektbaum mit der rechten Maustaste auf das CANbus Gerät.
▷ Klicke auf Add Device.
▷ Wähle CANopen_Manager aus den Fieldbuses.

Add CANopen_Manager

▷ Klicke auf Add Device.
▷ Klicke im Projektbaum mit der rechten Maustaste auf Dein Projekt.
▷ Klicke auf Add Object.
▷ Füge folgende Objekte ein: Task Configuration und POU.

Add Object POU

▷ Füge den Aufruf POU in die Task-Konfiguration ein.

POU

▷ Lade das Projekt auf das RevPi Gerät.
▷ Logge Dich über das Icon Login in der Menüleiste ein.
❯❯ Der CANopen Master ist in Betrieb.

KUNBUS CANopen mGate einfügen

▷ Klicke mit der rechten Maustaste auf den CANopen_Manager im Gerätebaum.
▷ Klicke auf Add Device.
▷ Wähle KUNBUS-mGate CANopen.
▷ Klicke auf Add Device.

Add Kunbus mgate CANopen

▷ Stelle die Node-ID und die Bitrate des Gateways an den Drehkodierschaltern des Geräts ein.
▷ Lade das Projekt auf das RevPi Gerät.
▷ Logge Dich über das Icon Login in der Menüleiste ein.
❯❯ Das Gateway wird vom Master erkannt.

conCAN run

CODESYS Control for Linux ARM lädt standardmäßig die Datei rts_set_baud.sh aus /etc/codesyscontrol/CODESYSControl.cfg, um die CAN-Bus-Schnittstelle von CODESYS aus ansteuern zu können.

[CmpSocketCanDrv]

ScriptPath=/opt/codesys/scripts/

ScriptName=rts_set_baud.sh

Die Standardbaudrate für die CAN-Schnittstelle kann in der Datei /opt/codesys/scripts/rts_set_baud.sh geändert werden.

Das Skript rts_set_baud.sh enthält standardmäßig folgende Inhalte: #!/bin/sh

```BITRATE=`expr $2 \* 1000````

ip link set $1 down

ip link set $1 type can bitrate $BITRATE

ip link set $1 up

▷ Aktiviere RevPi Con CAN entweder auf der Registerkarte Config in PiCtory, indem Du Support RevPi Con Can device aktivierst, oder mit dem folgenden Befehl: sudo revpi-config enable revpi-con-can
▷ Lade das CODESYS Projekt herunter.
Wichtig: Starte das System neu oder führe einen harten Reset durch.
❯❯ Das RevPi Con CAN Modul kann nun mit CODESYS verwendet werden.

CANopen Slave konfigurieren

Der CANopen Slave wird wie der CANopen Master konfiguriert.

Lediglich beim Einstellen der Baudrate und der Aktivierung des Con CAN Moduls muss für die Slave-Funktion der CANopen Slave konfiguriert werden.

Add CANopen Slave

Zu diesem Thema kannst Du Dir auch das Beispiel RevPiConCAN anschauen.

RevPi Virtual Device konfigurieren

Mit dem RevPi Virtual Device können Daten zwischen CODESYS und anderen externen Anwendungen wie z. B. Node-RED ausgetauscht werden. Dafür wird über eine virtuelle Schnittstelle der dafür vorgesehene Speicher im RevPi Prozessabbild verwendet.

Im Folgenden zeigen wir Dir, wie Du in CODESYS ein RevPi Virtual Device konfigurieren kannst.

Voraussetzungen
✓ Ein Projekt mit einem RevPi Gerät ist angelegt.
▷ Klicke im Projektbaum mit der rechten Maustaste auf die Geräteschnittstelle piBridgeVirtual.
▷ Klicke auf Add Device.
▷ Wähle RevPi_Virtual.
▷ Klicke auf Add Device.

Add Virtual Device

Dieses Gerät sieht jeweils 32 Bytes Eingangs- und Ausgangsspeicher im RevPi Prozessabbild für den virtuellen Zugang vor.
▷ Öffne mit Doppelklick auf RevPi_Virtual die Registerkarte für das Mapping.
▷ Gib einen Variablennamen für das 32-Byte-Array von Ein- und Ausgang ein.

Virtual device variable

▷ Schreibe den Code für Dein gewünschtes CODESYS Projekt und verwende dabei die im vorherigen Schritt erstellten Variablen des virtuellen Geräts.
▷ Lade das Programm herunter.
❯❯ RevPi Virtual ist jetzt in Betrieb.

Virtual application run

▷ Öffne PiCtory.

Im folgenden Beispiel werden ein RevPi Connect und ein RevPi Virtual Device angezeigt. Diese PiCtory Konfiguration wird jedes Mal beim Starten von CODESYS automatisch erstellt. Sie wird in PiCtory nur als Read Only verwendet, da die Datei config.rsc nach jedem Neustart von CODESYS wieder ausgeführt wird. Die Variablen des virtuellen Geräts sind in der Abbildung unten als Input_11_1 usw. zu sehen.

Virtual Device Config

▷ Aktiviere die Felder Export für die Variablen, die im RevPi Virtual Device verwendet werden.
▷ Klicke auf File/Export.
▷ Wähle Offset list, Show Only und bestätige mit Ok.

Virtual device offset list

Nun werden die Offsets aufgelistet, die sich im Prozessabbild auf das RevPi Virtual Device beziehen.

Virtual device offsets

Auf diese Variablen kann mit externen Anwendungen mit dem entsprechenden Namen oder Offset im RevPi Prozessabbild zugegriffen werden.

Beispiel: Mit piTest kannst Du die 32 Bytes der virtuellen Eingänge (Input_11_1 bis Input_11_32) ab Basisoffset 11 mit dem Befehl piTest -r 11,32 lesen.

Hinweis: Die Ausgänge des RevPi Virtual Device in CODESYS werden auf die virtuellen Eingänge (Input_11_1 bis Input_11_32) des RevPi Prozessabbildes geschrieben. Externe Anwendungen können auf virtuelle Ausgänge (Output_1 bis Output_32) schreiben. Diese sind dann als Eingänge des RevPi Virtual Device in CODESYS verfügbar.

CODESYS Tutorials

Im Bereich Tutorials findest Du Anleitungen für verschiedene Anwendungsbeispiele, wie Du die RevPi Geräte zusammen mit CODESYS verwenden kannst.