Schrittweise Inbetriebnahme des Reglers
Folgende Schritte müssen durchgeführt werden:
- Die Regler-Bibliothek ist über den Bibliotheksmanager in das Projekt einzufügen.
Im Bibliotheksmanager ist die TcTempCtrl.lib einzufügen.
- Mindestens eine Instanz des Reglers ist zu programmieren.
Eine Instanz des Reglerbausteins FB_TempController
ist anzulegen. Außerdem muss eine Instanz der Struktur ST_ControllerParameter
angelegt werden.
- Die notwendige äußere Beschaltung durchführen.
Name |
| Beschreibung |
---|---|---|
| Beschaltung notwendig | Schaltet den Regler in eine Betriebsart (aktiv, passiv, tuning) |
| Beschaltung optional | Wählt einen von zwei möglichen Sollwerten aus. Mit FALSE wird der normale Sollwert gewählt, mit TRUE der Standby-Sollwert. |
| Beschaltung notwendig | Sollwert. |
| Beschaltung optional | Standby-Sollwert im Regelfall kleiner als fW1. Mit fSelSetpoint kann zwischen fW1 und fW2 umgeschaltet werden. |
| Beschaltung notwendig | Istwert. Dieser Wert muss auf LREAL konvertiert werden. |
| Beschaltung optional | Stellgröße im Handbetrieb. |
| Beschaltung optional | Mit TRUE ist das Thermoelement offen. Muss von der Hardware gemeldet werden (z.B. KLxxxx). |
| Beschaltung optional | Mit TRUE wird falsche Polarität des angeschlossenen Thermoelements gemeldet. Muss von der Hardware gemeldet werden. |
| Beschaltung optional | Bei TRUE wird eine zu hohe Eingangsspannung am Thermoelement angezeigt. Muss von der Hardware gemeldet werden. |
| Beschaltung optional | Mit TRUE wird ein Leckstrom zu Heizelement detektiert. Muss von der Hardware gemeldet werden. |
| Beschaltung optional | Mit TRUE wird ein Kurzschluss im Heizelement detektiert. Muss von der Hardware gemeldet werden. |
| Beschaltung optional | Mit TRUE wird ein offener Stromkreis im Heizelement detektiert. Muss von der Hardware gemeldet werden. |
| Beschaltung notwendig | In dieser Struktur werden generelle Parameter (Abtastzeiten usw.) an den Baustein übergeben. |
| Beschaltung optional | In dieser Struktur wird ein externer Regler-Parametersatz an den Baustein übergeben. |
- Die notwendige Parametrierung des Reglers über die Struktur durchführen.
Die Parameter können über Initialwerte oder über Zuweisung festgelegt werden. Wenn die Zuweisung der Parameter über Initialwerte erfolgt, dann könnte es beispielhaft so aussehen:
(* parameters *)
sControllerParameter : ST_CTRL_TempCtrlParameter :=
(
(* base *)
tCtrlCycleTime := t#1000ms,
tTaskCycleTime := t#10ms,
fYMin := -100,
fYMax := 100,
tPWMCycleTime := t#100ms ,
fYManual := 20,
bFilter := FALSE,
tFilter := t#100ms,
bDeadband := FALSE,
fEDeadband := 1.0, (* deadband *)
fWMin := 15,
fWMax := 60,
fWStartUp := 20.0,
tStartUp := t#160s,
fWVeloPos := 0.01,
fWVeloNeg := 0.01,
bStartUpRamping := FALSE,
fWStartUpVeloPos := 0.1,
fWStartUpVeloNeg := 0.1,
iMode := eCTRL_ControlMode_HEATING,
dwAlarmSupp := 16#FF_FF_FF_FF,
bSelCtrlParameterSet:= FALSE,
(* tuninig *)
iTuningMode := eCTRL_TuneMode_heating,
fYTuneHeating := 100.0,
fYTuneCooling := -100.0,
fEndTunePercentHeating := 80.0, (* switch to closed loop control when X > 0.8*W *)
fEndTunePercentCooling := -70.0, (* switch to closed loop control when X < 0.2*W *)
iReactionOnFailure := eCTRL_ReactionOnFailure_StopController,
TempLow := -50.0,
TempLowLow := -100.0,
TempHigh := 100.0,
TempHighHigh := 155.0,
TempAbsoluteHigh := 150.0,
TempAbsoluteLow := -95.0,
bEnablePreController := FALSE,
bEnableZones := FALSE,
bEnableCVFilter := FALSE,
iFilterType := eCTRL_FilterType_AVERAGE,
iControllerType := eCTRL_ControllerType_PID
);
Die Zuweisung im Code kann in ST folgendermaßen aussehen:
sControllerParameter.tPWMCycleTime :=
t#100ms;
- Festlegung der Reglerabtastzeit, der Taskzykluszeit und der PWM Zykluszeit
Die Abtastzeit des Reglers muss der Strecke angepasst werden. Sie sollte kleiner oder gleich einem Zehntel der dominierenden Streckenzeitkonstanten gewählt werden. Die Taskzykluszeit ist durch die SPS Task festgelegt in der der Reglerbaustein aufgerufen wird. Dieser Wert kann aus der Taskkonfiguration (Plc Control: Ressourcen Taskkonfiguration) abgelesen werden. Die PWM Zykluszeit ist normalerweise gleich der Reglerzykluszeit. Wenn die Taskzykluszeit 10ms und die PWM Zykluszeit (=Reglerabtastzeit) zu 100ms gewählt wird, so stehen insgesamt 10 Stufen (PWM Zykluszeit/Taskzykluszeit) zur Verfügung.
- TwinCAT Scope parametrieren
Zur Kontrolle der Ergebnisse sollte auf jeden Fall vom Tuning Vorgang und vom Closed Loop Regelverhalten eine Scope-Aufnahme gemacht werden. Dazu ist das TwinCAT Scope View zu starten und zu parametrieren. Folgende Kanäle sollten aufgezeichnet werden: Sollwert (fW1 oder fW2), Istwert (fX) und analoge Stellgröße (fYAnalog).
- Abschalten der Alarme während der Inbetriebnahmephase
Während der Inbetriebnahmephase können die Alarme zeitweilig abgeschaltet werden. Dazu ist in dem Dword dwAlarmSupp eine entsprechende Bitmaske zu setzen. Ist in diesem Dword ein Bit gesetzt, so wird der entsprechende Alarm disabled. Die Belegung der einzelnen Alarme ist hier beschrieben.
![]() | Nach der Erstinbetriebnahme sollten alle notwendigen Alarme wieder eingeschaltet werden! |
- Starten des Reglers mit Tuning
Sollen die Reglerparameter mit Hilfe des Tunings ermittelt werden, so muss der Control-Mode auf eCTRL_MODE_TUNE
eingestellt sein. Es läuft zunächst eine festeingestellte Wartezeit von 20s ab. In dieser Wartezeit wird geprüft, ob die Strecke innerhalb eines +-1°C Bandes bleibt. Sollte das Band verlassen werden, so wird die Wartezeit erneut gestartet. Dann erfolgt eine sprungförmige Anregung der Strecke mit einer Stellgröße von fYTune
. Darauf reagiert die Strecke mit der Sprungantwort. Solange nicht 80% der Sollgröße erreicht sind, werden die Parameter der Strecke über die Wendetangenten-Methode ermittelt. Aus Sicherheitsgründen wird nach Erreichen von 80% vom Sollwert auf die Regelung im geschlossenen Regelkreis umzuschalten. Sollte die Temperatur zu schnell (ohne ausgeprägten Wendepunkt) die 80% Marke erreichen, so ist der Wert fYTune
zu reduzieren. Die ermittelten Parameter werden für den PID-Regler benutzt und stehen in einer Struktur am Ausgang des Reglers zur Verfügung.
Hinweis | |
Zum Tuning muss die Strecke mindestens einen Sprung von 40°C durchführen. Kleinere Sprünge können zur Ermittlung von falschen Parametern führen! |
Hinweis | |
Nach dem das Tuning erfolgreich durchgeführt wurde, wird der |
- Verknüpfen der internen Reglerparameter mit externer Beschaltung
Die durch das Tuning ermittelten Parameter des Reglers können wieder als externe Parameter auf den Regler aufgeschaltet werden. Das kann notwendig sein, wenn das Tuning nur ein einziges Mal (z.B. nur in der Inbetriebnahmephase) durchgeführt werden soll. Dazu ist die Struktur sParaControllerInternal
auf den Eingang des Reglers sParaControllerExternal
zurückzuführen und das Flag bSelCtrlParameterSet
auf TRUE zu setzen.
- Finetuning
Die beim Tuning ermittelten Reglerparameter sind auf schnelles Einschwingen mit etwa 10% Überschwingen ausgelegt. Ist kein oder nur sehr geringes Überschwingen erlaubt, so kann mit den folgenden Parametern aus der ST_ControllerParameter
Struktur ein fine tuning durchgeführt werden. Diese Werte sind als Anhaltswerte anzusehen.
Verhalten | fTuneKp | fTuneTn | fTuneTv | fTuneTd |
---|---|---|---|---|
Schnelles Einschwingen mit einem Überschwingen von 10%-20% | 1.2 | 2.0 | 0.42 | 0.25 |
Langsameres Einschwingen mit geringerem Überschwingen | 1.0 | 2.5 | 0.42 | 0.25 |
Nahezu asymptotische Einschwingen mit sehr geringen Überschwingen | 0.5 | 3.0 | 1.0 | 0.25 |