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 |
|
aktueller Wert (Istwert) |
|
SET_POINT |
Input |
|
Sollwert |
|
KP |
Input |
|
Konstante für den Proportionalwert |
|
TN |
Input |
|
Rückstellzeit I-Anteil |
|
TV |
Input |
|
Zeit D-Anteil; wenn 0, dann PI-Regler |
|
Y_MANUAL |
Input |
|
fester Wert für Y, wenn MANUAL-Eingang |
|
Y_OFFSET |
Input |
|
Offset für den veränderten Y-Wert |
|
Y_MIN |
Input |
|
minimaler Wert für Y |
|
Y_MAX |
Input |
|
maximaler Wert für Y |
|
MANUAL |
Input |
|
manuellen Y-Wert aktivieren (Reglung deaktivieren) |
|
RESET |
Input |
|
setzt den I-Teil zurück; Y wird auf Y_OFFSET gestellt |
|
Y |
Output |
|
Stellgröße (Ausgabe des Reglers) |
|
LIMITS_ACTIVE |
Output |
|
zeigt an, ob der Regler aktiv ( |
|
OVERFLOW |
Output |
|
Ü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.
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.
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.
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).
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).
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.










