zum Einsatz kamen. Auch die Aufgabenstellung ist identisch: Es soll ein voreingestelltes Wasser-Niveau
erreicht und möglichst konstant gehalten werden. Die Aufgabe soll in diesem Versuch der im TIA Portal integrierte
Regler PID_Compact meistern.
Der gewünschte Sollwert wird mit einem Potenziometer eingestellt. Mit einem Keyence Laser wird der aktuelle
Niveaustand überwacht. Zwei Pumpen sollen die notwendige Wassermenge, die der Regler anfordert, nachliefern. Die Aufgabe
erschwert ein Loch, durch das aus dem Versuchsbehälter kontinuierlich Wasser abfließt. Die Pumpen werden hier nicht nur
einfach ein- und ausgeschaltet. Die Drehzahl der Pumpen wird mit einem PWM-Signal gesteuert. Dank dessen sollen sie zu jedem
Zeitpunkt in der Lage sein, nur die benötigte Wassermenge zu liefern. Zwei Balkenanzeigen visualisieren die aktuelle
Situation. Sie zeigen den aktuellen Soll- und Istwert an. Das Ganze koordiniert eine Siemens SPS mit der 1215-CPU (S7-1200).
Während des Versuchs werden zusätzlich Daten gesammelt und abgespeichert. Eine Excel-Grafik soll anschließend die Aufgabe
und das Ergebnis dokumentieren.
CPU 1215C (S7-1200)
Wasserpumpen
Da das Abflussloch in dem Versuchsbehälter etwas zu groß geraten ist, sind zwei Pumpen notwendig, um genügend
Wasser nachliefern zu können.
Das aktuelle Wasserniveau wird mit dem Keyence-Laser überwacht. Damit die Messergebnisse nicht verfälscht
werden, schwimmt auf dem Wasser ein schwarzes Plättchen, das dem Laser als Reflexionskörper dient.
Spannungsregler
Die Schaltung arbeitet mit drei Spannungen. Die Hauptversorgung beträgt 24 VDC. Die 10 VDC Spannung wird für das
Potenziometer und die Balkenanzeigen benötigt. Mit 5 VDC werden die beiden Pumpen eingespeist.
Die Spannung an Ausgängen der SPS beträgt 24 V. Die Wasserpumpen vertragen lediglich 5 V. Der Transistor
fungiert an dieser Stelle als Zwischenschalter.
Bevor das Programm erstellt werden kann, muss die CPU (215-1AG40-0XB0) konfiguriert werden. Die
Einstellungen führt man in der „Gerätekonfiguration“ durch:
Um die Daten im Sekundentakt zu speichern, kommt der Taktmerker „Clock_1Hz“ zum Einsatz.
Die Pumpen werden mit PWM-Signal gesteuert. So wird es möglich sein, die Drehzahl der Pumpen zu beeinflussen,
um exakt die Wassermenge zu liefern, die notwendig ist. Dazu werden zwei digitale Ausgänge der SPS als PWM-Ausgänge
definiert und parametriert:
Impulsgenerator aktivieren
Impulsoptionen
Hardwareausgang
E/A Adressen
Genauso verfahren wir auch für die Pumpe 2 (Impulsgenerator PWM2). Für die Pumpe 1 wurde hier der
Ausgang Q0.0 definiert. Die Pumpe 2 wird an den Ausgang Q0.2 angeschlossen.
In der Ansicht PLC-Variablen/Systemkonstanten können die HW-Werte eingesehen werden:
HW-Adressen
Im nächsten Schritt können die PLC Variablen definiert werden.
PLC Variablen
Im Programm werden zwei digitale Eingänge für "Programm Start" und "Regler Reset" verwendet. Die analogen Signale
von Potenziometer (Sollwert) und Abstandssensors (hier ein Laser) gehen jeweils auf die analogen Eingänge mit den
Adressen %IW200 und %IW202. Mit einem digitalen Ausgang (Q0.1) schalten wir die blaue „Programm läuft“- Leuchtdiode.
Bei den zwei weiteren Ausgängen (Adressen %QW1000 und %QW1002 handelt es sich um zwei digitale Ausgänge, die als
PWM-Ausgänge definiert wurden. Die „Clock“-Adressen erscheinen automatisch in der Liste, nachdem in der Konfiguration
der Taktmerker Byte aktiviert wurde.
Im nächsten Schritt können die notwendigen Variablen angelegt werden. Dazu wird ein Datenbaustein
„Var“ angelegt:
Variablen
In der Variable „Poti_Sollwert“ wird die aktuelle Einstellung des Soll-Potenziometers festgehalten
(erster analoger Eingang). "Laser_Istwert" bezieht sich auf den zweiten analogen Eingang. In „PID_Ausgang“ wird der von
PID_Compact berechnete Wert gespeichert. In „Ausgang_Pumpen“ ist der skalierte Endwert für die Pumpen-Ausgänge enthalten.
Die Variablen „Daten_Zähler“, „Daten“ und „Merker_Daten_Schreiben“ werden für Datenspeicherung benötigt.
Das vorgefertigte Technologieobjekt „PID_Compact“ wird in dem Organisationsbaustein „Cyclic interrupt“, der alle
100 ms aufgerufen wird, untergebracht.
PID Compact
Ebenfalls in diesem Baustein kommt im Netzwek 2 noch ein kurzes Programm hinzu. Das Programm skaliert
den von PID_Compact errechneten Wert für die Pumpen Ausgänge. Die Skalierung ist notwendig, da die kleinen Pumpen erst
ab dem Spannungswert von 1-1,5 V anlaufen können. Der entsprechende Peripherie Wert liegt bei ca. 6000. Die Variable
"Wert_Real" ist eine als Real definierte Zwischenvariable, die für die Rechenaufgaben benötigt wird. Das Programm sieht
dann wie folgt aus:
// Ausgänge Nullen beim Stop
"Soll_Pumpe_1" := 0;
"Soll_Pumpe_2" := 0;
// Programm läuft
IF "Programm_Start" THEN
#Wert_Real := INT_TO_REAL("Var".PID_Ausgang);
#Wert_Real := #Wert_Real * 0.782986 + 6000;
"Var".Ausgang_Pumpen := REAL_TO_INT(#Wert_Real);
"Soll_Pumpe_1" := INT_TO_WORD("Var".Ausgang_Pumpen);
"Soll_Pumpe_2" := INT_TO_WORD("Var".Ausgang_Pumpen);
END_IF;
Mit diesen zwei Netzwerken ist der Cyclic_interrupt fertig.
Im nächsten Schritt schreiben wir ein Programm, mit dem die Werte aus den analogen Eingängen ausgelesen werden
und die Datenspeicherung durchgeführt wird. Das Programm wird in einem separaten Funktionsbaustein
„Mein_Programm“ erstellt:
Mein Programm
Das Programm in dem Baustein „Mein Programm“:
// Niveauregelung mit PID Compact
// Stetig
// TIA Portal V16
// SOLLWERT
// Der gewünschte Sollwert wird mit dem Potenziometer P1 eingestellt.
// Der Peripherie Wert nimmt die Werte zwischen 0 - 27648 an.
// Die Variable "Var".Poti_Sollwert geht auf Eingang Setpoint (PID)
"Var".Poti_Sollwert := "Eingang_Poti_Sollwert";
IF "Var".Poti_Sollwert < 0 THEN
"Var".Poti_Sollwert := 0;
END_IF;
IF "Var".Poti_Sollwert > 27648 THEN
"Var".Poti_Sollwert := 27648;
END_IF;
// ISTWERT
// Der tatsächliche Wasserstand
// Geht auf Eingang Input (PID)
"Var".Laser_Istwert := "Laser_Istwert";
// PROGRAMM STOP
IF NOT "Programm_Start" THEN
"LED_Programm_läuft" := FALSE;
"Var".Daten_Zähler := -1;
END_IF;
// PROGRAMM START
// Mit Datenspeicherung für 3 Min
IF "Programm_Start" THEN
"LED_Programm_läuft" := TRUE;
IF "Clock_1Hz" AND NOT "Var".Merker_Daten_Schreiben THEN
"Var".Merker_Daten_Schreiben := TRUE;
"Var".Daten_Zähler := "Var".Daten_Zähler + 1;
IF "Var".Daten_Zähler < 180 THEN
"Var".Daten.Soll["Var".Daten_Zähler] := "Var".Poti_Sollwert;
"Var".Daten.Ist["Var".Daten_Zähler] := "Var".Laser_Istwert;
END_IF;
END_IF;
END_IF;
IF NOT "Clock_1Hz" THEN
"Var".Merker_Daten_Schreiben := FALSE;
END_IF;
Anschließend wird der Funktionsbaustein „Mein_Programm“ in den Organisationsbaustein "Main" eingefügt.
Im zweiten Schritt werden zwei Anweisungen CTRL_PWM (Erweiterte Anweisungen) eingefügt und mit den PWM-Ausgängen
verknüpft:
Main
Damit sind die SPS - Konfiguration und Programmierung abgeschlossen. Im letzten Schritt widmen wir uns
dem Software Regler PID_Compact.
Zunächst muss der Regler konfiguriert werden:
PID Compact
PID Regelungsart
PID e/a
Istwertgrenzen
Überwachung
Ausgangswertgrenzen
Die PID Parameter lassen wir erst mal unverändert und achten darauf, dass das Kästchen „Manuelle
Eingabe aktivieren“ nicht angewählt wird. Sie werden mithilfe der Optimierungsfunktionen automatisch ermittelt.
Um die Parameter des Reglers zu ermitteln, muss die gesamte Versuchsanordnung (Regelstrecke) komplett
aufgebaut und in Betrieb genommen werden.
Der Schaltplan
Schaltplan
Die Spannungen Sollwert und Istwert, die maximal 10V betragen, werden zur SPS und den beiden Anzeigen geführt.
Mit den Spannungsteilern P2/R5 und P3/R7 werden sie jeweils auf 1,25V heruntergeregelt. Das ist die maximale Spannung,
die an Pin 5 des Anzeigetreibers LM3914 ankommen darf. Die Potenziometer – Einstellung liegt folglich bei
70 kOhm.
Wasserbehälter
Wasserbehälter
Die Testschaltung
Testschaltung
PID Parameter
Sobald alles vorbereitet wurde, kann das Fenster Technologieobjekte/PID_Compact/Inbetriebnahme geöffnet
werden. Mithilfe dieses Hilfswerkzeugs werden die Reglerparameter ermittelt. Hierzu muss die Optimierungsart ausgewählt
und mit dem Button „Start“ der Vorgang gestartet werden:
PID Optimierung
Für unsere Regelstrecke wurden mit dem Verfahren folgende PID Parameter ermittelt:
Parameter
Mit diesem Schritt wurde die Inbetriebnahme abgeschlossen und der Regler ist jetzt einsatzbereit. Auf dem
Diagramm zum Versuch (unten, erste 3 Minuten) kann man sehen, dass der Istwert dem Sollwert wie erwartet folgt. Die
IST-Kurve ist noch etwas unruhig. Durch weitere Optimierungen, Signalstabilisierung usw. kann man das Regelverhalten
noch weiter verbessern.