Aus Raspberry Pi Geek 08/2019

Automatische Helligkeitsregelung mit dem PiXtend und Codesys (Seite 2)

Richtig präzise

Für Referenzspannungsquellen existieren die unterschiedlichsten Einsatzgebiete. Das naheliegendste ist das Eichen von Messgeräten. Sie finden in der Messtechnik aber auch generell breiten Einsatz, sei es in Messgeräten oder in Messeinrichtungen, die besondere Anforderungen an die Genauigkeit erfüllen müssen. In diesem Artikel kommt der REF102 von Texas Instruments mit einer Ausgangsspannung von 10 Volt und einer Genauigkeit von -/+ 0,0025 Volt zum Einsatz. Er liefert auch bei größeren Temperaturschwankungen eine stabile Spannung. Der Chip kommt in einem benutzerfreundlichen DIP-Gehäuse, der maximale Ausgangsstrom beträgt 10 Milliampere. Detaillierte Informationen finden Sie im Datenblatt [5] des Herstellers.

Testprogramm

Das Testprogramm für die Helligkeitsregelung erstellen Sie mit der Software von Codesys. Der Artikel “Sanft berührt” der Ausgabe 05-06/2019 [3] erklärt deren Installation. Die Codesys-Software enthält einen Funktionsbaustein für einen PID-Regler (siehe Kasten “Codesys PID-Regler”). Eine Übersicht der Ein- und Ausgänge des Reglers finden Sie in der Tabelle “Anschlüsse des PID-Reglers”.

Name

Art

Typ

Funktion

ACTUAL

Input

REAL

aktueller Wert (Istwert)

SET_POINT

Input

REAL

Sollwert

KP

Input

REAL

Konstante für den Proportionalwert

TN

Input

REAL

Rückstellzeit I-Anteil

TV

Input

REAL

Zeit D-Anteil; wenn 0, dann PI-Regler

Y_MANUAL

Input

REAL

fester Wert für Y, wenn MANUAL-Eingang true ist

Y_OFFSET

Input

REAL

Offset für den veränderten Y-Wert

Y_MIN

Input

REAL

minimaler Wert für Y

Y_MAX

Input

REAL

maximaler Wert für Y

MANUAL

Input

BOOL

manuellen Y-Wert aktivieren (Reglung deaktivieren)

RESET

Input

BOOL

setzt den I-Teil zurück; Y wird auf Y_OFFSET gestellt

Y

Output

REAL

Stellgröße (Ausgabe des Reglers)

LIMITS_ACTIVE

Output

BOOL

zeigt an, ob der Regler aktiv (false) oder auf MANUAL gesetzt ist (true)

OVERFLOW

Output

BOOL

Überlauf im I-Anteil

Codesys PID-Regler

Der PID-Regler-Baustein berechnet kontinuierlich aus den Eingangswerten die nötige Stellgröße, um den Sollwert zu erreichen. Beachten Sie, dass eine SPS zyklisch arbeitet. Je nach Einstellung der Zykluszeit wird der Baustein unterschiedlich oft pro Sekunde aufgerufen. Zum Berechnen der Ausgangswerte benötigt er allerdings die Zeit als Information. Der verwendete Baustein kann die Zeit selbst ermitteln. Das Verfahren, das er dazu verwendet, kommt jedoch mit sehr kurzen Zykluszeiten nicht zurecht. Für diese Fälle gibt es den speziellen Regler PID_FIXCYCLE, mit dem Sie die Zykluszeit fest vorgeben. Das verhindert, dass der Regler anfängt zu schwingen. Über die Eingänge Y_OFFSET, Y_MIN und Y_MAX lässt sich der Ausgangswert (Y) des Reglers in den Bereich, den man zur Weiterverarbeitung benötigt, verschieben. Mehr Informationen über den Regler erhalten Sie im Bibliotheksverwalter der Codesys-Software (Util.Controller.PID).

Zunächst einmal erstellen Sie in der Codesys-Software ein neues Projekt für das PiXtend V2 -L-. Dazu klicken Sie im Menü auf Datei | Neues Projekt (Abbildung 4). Geben Sie dem Projekt einen möglichst sprechenden Namen, in unserem Fall etwa Helligkeitsregelung.

Abbildung 4: Für die Helligkeitsregelung erstellen Sie mit Codesys ein neues Projekt.

Abbildung 4: Für die Helligkeitsregelung erstellen Sie mit Codesys ein neues Projekt.

Diesem Projekt fügen Sie nun unter dem Applikationsknoten eine neue Program Organization Unit (POU) hinzu, indem Sie auf den Applikationsknoten rechtsklicken und Application | Objekt hinzufügen | POU auswählen. Die POU erstellen Sie als Programm in der Funktionsbausteinsprache (Abbildung 5). Auch hier ergibt ein sprechender Name Sinn, in unserem Projekt beispielsweise Regler.

Abbildung 5: Als Erstes definieren Sie eine Program Organization Unit (POU).

Abbildung 5: Als Erstes definieren Sie eine Program Organization Unit (POU).

Bei der Funktionsbausteinsprache lassen sich die einzelnen Funktionsbausteine, die Sie für ein Programm benötigen, einfach über die GUI zusammenklicken. In der POU definieren Sie zunächst alle Variablen, die Sie später im Programm benötigen. Listing 1 zeigt die Liste der Variablen für die Helligkeitsregelung mit Kommentaren, die den Zweck der jeweiligen Variable beschreiben.

Listing 1

PROGRAM Regler
VAR
  P_Anteil:REAL;        // P-Anteil des Reglers
  I_Anteil:REAL;        // I-Anteil des Reglers
  D_Anteil:REAL;        // D-Anteil des Reglers
  Reset:BOOL;           // Regler zurücksetzen
  Poti:REAL;            // Potenziometer (Führungsgröße)
  Foto_Widerstand:REAL; // Aktueller Messwert (Istwert)
  Stellgroesse:REAL;    // Ausgangswert (Stellgröße)
  Regler:PID;           // PID-Regler-Baustein
  Limits:BOOL;          // Platzhalter
  Overflow:BOOL;        // Platzhalter
END_VAR

Der Baustein für den PID-Regler befindet sich in der Bibliothek Util, die Sie deshalb ins Projekt einbinden müssen. Doppelklicken Sie dazu auf den Bibliotheksverwalter (Knoten unterhalb von Application). Dort klicken Sie wiederum auf Bibliothek hinzufügen und wählen die entsprechende Komponente Util aus (Abbildung 6). Nun steht die Util-Bibliothek im Projekt zur Verfügung. Nach dem Schließen des Reiters mit dem Bibliotheksverwalter landen Sie wieder in der POU für den Regler.

Abbildung 6: Im Bibliotheksverwalter fügen Sie dem Projekt eine Library hinzu.

Abbildung 6: Im Bibliotheksverwalter fügen Sie dem Projekt eine Library hinzu.

Das Programm beginnt mit einem Baustein, den Sie aus dem Werkzeug- in den Programmbereich ziehen. Hier gibt es ein Feld Hier starten, auf das Sie den Baustein fallen lassen. Um ihm die Funktion eines PID-Reglers aus der Util-Bibliothek zuzuweisen, klicken Sie auf die drei Fragezeichen innerhalb des Bausteins. Im folgenden Dialog wählen Sie den PID-Regler aus der Kategorie Funktionsbausteine aus (Abbildung 7).

Abbildung 7: In Codesys weisen Sie dem Baustein die Funktion eines Reglers zu.

Abbildung 7: In Codesys weisen Sie dem Baustein die Funktion eines Reglers zu.

Nun müssen Sie den Regler noch bei den Variablen hinzufügen (Regler:PID;). Sie können jetzt auch schon die definierten Variablen mit dem Regler verbinden. Dazu klicken Sie auf die drei Fragezeichen und wählen die gewünschten Variablen aus der Liste aus. Die konstanten Werte schreiben Sie an die entsprechenden Stellen (Abbildung 8).

Abbildung 8: So sieht das komplette Programm für den Regler im Codesys-Interface aus.

Abbildung 8: So sieht das komplette Programm für den Regler im Codesys-Interface aus.

Die Stellgröße des Reglers dient später dazu, einen PWM-Generator anzusteuern. Den Hardware-PWM-Generator des PiXtend müssen Sie zu diesem Zweck aber erst einmal konfigurieren. In unserem Beispiel ist er auf eine Frequenz von 625 Hz im Duty-Cycle-Mode eingestellt. Mit dieser Frequenz arbeitet die Test-LED aus dem Aufbau gut. Wie Sie den PWM-Generator auf andere Werte konfigurieren, beschreibt das Software-Handbuch [4] des PiXtend. Eine genaue Beschreibung aller PWM-Ausgänge finden Sie dort ab Seite 225.

Die Konfiguration des PWM-Generators nehmen Sie über zwei Steuerregister byPWM0Ctrl0 (Wert *73) und wPWM0Ctrl1=1600 (Wert *1600) vor. Sie sprechen dabei die Register direkt an, nicht über Variablen. Um die Zuweisung zu erstellen, müssen Sie dem Programm erst ein neues Netzwerk hinzufügen. Dafür klicken Sie unterhalb des Reglers in den freien Bereich rechts und wählen dann Netzwerk einfügen.

Der Regler liefert Ausgangswerte zwischen 0 und 1, die Sie so anpassen müssen, dass der PWM-Generator sie verarbeiten kann. Dafür verwenden Sie einen Multiplikationsbaustein, der die Ausgabe des Reglers mit dem Wert 1600 multipliziert. Als Ergebnis bekommen Sie einen Realwert, also eine Zahl mit Nachkommastellen. Der PWM-Generator benötigt als Eingangsparameter aber einen Integer-Wert, also eine Ganzzahl ohne Nachkommastellen. Für diesen Fall gibt es in der Codesys-Software schon den Funktionsbaustein Konvertierung aus der Rubrik andere Operatoren, der die unterschiedlichen Datentypen entsprechend umwandelt. Den Baustein passen Sie ähnlich wie den Regler an.

Konfigurationshilfe

Um die Parameter für den Regler empirisch zu ermitteln, also schlicht durch Ausprobieren, bauen Sie eine kleine Visualisierung, über die sich das Verhalten des Reglers leicht anpassen lässt (Abbildung 9). Falls Sie den Regler komplett durcheinanderbringen, setzen Sie ihn mit dem Reset-Taster wieder zurück.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben