Schrittweise Inbetriebnahme des Reglers

Folgende Schritte müssen durchgeführt werden:

Im Bibliotheksmanager ist die TcTempCtrl.lib einzufügen.

Eine Instanz des Reglerbausteins FB_TempController ist anzulegen. Außerdem muss eine Instanz der Struktur ST_ControllerParameter angelegt werden.

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 im Regelfall kleiner als fW1. Mit fSelSetpoint kann zwischen fW1 und fW2 umgeschaltet werden.

fX

Beschaltung notwendig

Istwert. Dieser Wert muss auf 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. KLxxxx).

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.

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; 

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.

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).

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.

Schrittweise Inbetriebnahme des Reglers 1:

Nach der Erstinbetriebnahme sollten alle notwendigen Alarme wieder eingeschaltet werden!

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 eCtrlState auf eCTRL_STATE_TUNED gesetzt. Der Regler geht jetzt in Wartestellung. Nur durch Setzen des Control-Modes auf eCTRL_MODE_ACTIVE wird der Closed-Loop-Betrieb mit den geschätzten Parametern aktiviert.

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.

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