Schrittweise Inbetriebnahme des Reglers
Folgende Schritte müssen durchgeführt werden:
- 1. Die Regler-Bibliothek über den Bibliotheksmanager in das Projekt einfügen.
- Im Bibliotheksmanager die Tc2_TempController einfügen.
- 2. Mindestens eine Instanz des Reglers programmieren.
- Dafür eine Instanz des Reglerbausteins FB_TempController anlegen.
- Außerdem eine Instanz der Struktur ST_ControllerParameter anlegen.
- Bibliothek einfügen.
- 3. Äußere Beschaltung anlegen.
Name |
| Beschreibung |
---|---|---|
eCtrlMode | Beschaltung notwendig | Schaltet den Regler in eine Betriebsart (aktiv, passiv, Tuning). |
bSelSetpoint | Beschaltung optional | Wählt einen von zwei möglichen Sollwerten aus. Mit FALSE wird der normale Sollwert gewählt, mit TRUE der Standby-Sollwert. |
fW1 | Beschaltung notwendig | Sollwert |
fW2 | Beschaltung optional | Standby-Sollwert ist im Regelfall kleiner als fW1. Mit fSelSetpoint kann zwischen fW1 und fW2 umgeschaltet werden. |
fX | Beschaltung notwendig | Istwert, dieser wird als LREAL-Zahl erwartet. Eventuell muss der Istwert vorher außerhalb des Bausteins in LREAL konvertiert werden. |
fYManual | Beschaltung optional | Stellgröße im Handbetrieb |
bOpenThermocouple | Beschaltung optional | Mit TRUE ist das Thermoelement offen. Muss von der Hardware gemeldet werden (z.B. KL3xxx oder EL3xxx). |
bReverseThermocouple | Beschaltung optional | Mit TRUE wird falsche Polarität des angeschlossenen Thermoelements gemeldet. Muss von der Hardware gemeldet werden. |
bBackVoltage | Beschaltung optional | Bei TRUE wird eine zu hohe Eingangsspannung am Thermoelement angezeigt. Muss von der Hardware gemeldet werden. |
bLeakage | Beschaltung optional | Mit TRUE wird ein Leckstrom zu Heizelement detektiert. Muss von der Hardware gemeldet werden. |
bShortCircuit | Beschaltung optional | Mit TRUE wird ein Kurzschluss im Heizelement detektiert. Muss von der Hardware gemeldet werden. |
bOpenCircuit | Beschaltung optional | Mit TRUE wird ein offener Stromkreis im Heizelement detektiert. Muss von der Hardware gemeldet werden. |
sControllerParameter | Beschaltung notwendig | In dieser Struktur werden generelle Parameter (Abtastzeiten usw.) an den Baustein übergeben. |
sParaControllerExternal | Beschaltung optional | In dieser Struktur wird ein externer Regler-Parametersatz an den Baustein übergeben. |
- 4. 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 beispielsweise 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;
- 5. Die Reglerabtastzeit, die Taskzykluszeit und die PWM-Zykluszeit festlegen.
- 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, stehen insgesamt 10 Stufen (PWM-Zykluszeit/Taskzykluszeit) zur Verfügung.
- 6. TwinCAT Scope parametrieren.
- Machen Sie zur Kontrolle der Ergebnisse eine Scope-Aufnahme vom Tuning-Vorgang und vom Closed Loop-Regelverhalten.
- Dazu das TwinCAT Scope View starten und parametrieren.
- Folgende Kanäle aufzeichnen: Sollwert (fW1 oder fW2), Istwert (fX) und analoge Stellgröße (fYAnalog).
- 7. Alarme während der Inbetriebnahmephase abschalten.
- Während der Inbetriebnahmephase können die Alarme zeitweilig abgeschaltet werden.
- Dazu im Dword dwAlarmSupp eine entsprechende Bitmaske setzen.
- Ist in diesem Dword ein Bit gesetzt, so wird der entsprechende Alarm disabled. Die Belegung der einzelnen Alarme ist hier beschrieben.
Information: Nach der Erstinbetriebnahme alle notwendigen Alarme wieder einschalten.
- 8. Den Regler mit Tuning starten.
- Sollen die Reglerparameter mit Hilfe des Tunings ermittelt werden, 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.
![]() | Setzen des Control Modes Nachdem das Tuning erfolgreich durchgeführt wurde, wird der |
- 9. Den internen Reglerparameter mit externer Beschaltung verknüpfen.
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 die Struktur
sParaControllerInternal
auf den Eingang des ReglerssParaControllerExternal
zurückzuführen und das FlagbSelCtrlParameterSet
auf TRUE setzen.
- 10. Finetuning manuell durchführen.
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 Finetuning durchgeführt werden. Diese Werte sind Anhaltswerte.
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 |
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT 3.1.4016 | PC oder CX | Tc2_TempController |