Definition der Strukturen
ST_ControllerParameter
TYPE ST_CTRL_TempCtrlParameter:
STRUCT
(* general parameters *)
iMode : E_CTRL_ControlMode;
iReactionOnFailure : E_CTRL_ReactionOnFailure;
bSelCtrlParameterSet : BOOL;
dwAlarmSupp : DWORD;
tCtrlCycleTime : TIME;
tTaskCycleTime : TIME;
(* tuning parameteer *)
iTuningMode : E_CTRL_TuneMode;
tTuneStabilisation : TIME := T#20S;
fEndTunePercentHeating : LREAL := 80.0;
fYTuneHeating : LREAL;
fYStableHeating : LREAL;
fEndTunePercentCooling : LREAL := 20.0;
fYTuneCooling : LREAL;
fYStableCooling : LREAL;
fScalingFactor : LREAL := 1.0;
(* setpoint parameters *)
fWMin : LREAL;
fWMax : LREAL;
(* start up *)
bEnableSoftStart : BOOL;
bEnableRamping : BOOL;
fWStartUp : LREAL;
tStartUp : TIME;
bStartUpRamping : BOOL;
fWStartUpVeloPos : LREAL;
fWStartUpVeloNeg : LREAL;
fWVeloPos : LREAL;
fWVeloNeg : LREAL;
(* actual value parameters *)
bFilter : BOOL;
tFilter : TIME;
(* deadband parameters *)
bDeadband : BOOL;
fEDeadband : LREAL;
(* control value parameters *)
fYMin : LREAL;
fYMax : LREAL;
fYManual : LREAL;
fYOnFailure : LREAL;
tPWMCycleTime : TIME;
tPWMMinOffTime : TIME;
tPWMMinOnTime : TIME;
tPWMWaitingTime : TIME;
fYThresholdOff : LREAL;
fYThresholdOn : LREAL;
nCyclesForSwitchOver : INT := 100;
(* controller settings *)
bEnablePreController : BOOL;
bEnableZones : BOOL;
bEnableCVFilter : BOOL;
iFilterType : E_CTRL_FilterType;
iControllerType : E_CTRL_ControllerType;
(* min max temperatures *)
TempLow : LREAL;
TempLowLow : LREAL;
TempHigh : LREAL;
TempHighHigh : LREAL;
TempAbsoluteHigh : LREAL;
TempAbsoluteLow : LREAL;
(* internal tuning parameters *)
fTuneKp : LREAL := 1.2;
fTuneTn : LREAL := 2.0;
fTuneTv : LREAL := 0.42;
fTuneTd : LREAL := 0.25;
END_STRUCT
END_TYPE
Name | Einheit | Wertebereich | Beschreibung |
---|---|---|---|
Generelle Parameter |
|
|
|
iMode | keine | INT | Reglerbetriebsmode (1 = heating, 2 = cooling, 3 = heating&cooling) (s.u.) |
iReactionOnFailure | keine | INT | Parametrierbare Reaktion auf Fehler (s.u.) |
bSelCtrlParameterSet | keine | BOOL | TRUE = externer Parametersatz, FALSE = interner Parametersatz (durch Tuning ermittelt) |
dwAlarmSupp | keine | DWORD | Maskiert die Alarme aus (s.u.) |
tCtrlCycleTime | s | TIME | Abtastzeit des Reglers. Der Regler errechnet im Takt dieser Abtastzeit neue Werte für die Stellgröße. |
tTaskCycleTime | s | TIME | Zykluszeit der Task. Der FB wird im Takt der Task aufgerufen. |
Tuning Parameter |
|
|
|
iTuningMode | K | E_CTRL_TuneMode | Festlegung der Tuning Reihenfolge (s.u.) |
tTuneStabilisation | s | TIME | Wartezeit bis Strecke stabil ist für Tuning Vorgang. |
fEndTunePercentHeating | % | LREAL | Prozentwert von Sollgröße, ab der auf Closed Loop Control umgeschaltet wird. |
fYTuneCooling | K | LREAL | Stellgrößensprung beim Tuning. |
fYStableCooling | K | LREAL | Stellgröße beim Umschalten auf Tuning beim Kühlen. |
fScalingFactor | keine | LREAL | Skalierungsfaktor für Parameterumschaltung, wenn kein Tuning für das Kühlen durchgeführt wird. |
Sollwert Parameter |
|
|
|
fWMin | K | LREAL | Minimale Sollgröße |
fWMax | K | LREAL | Maximale Sollgröße |
bEnableSoftStart | keine | BOOL | FALSE = kein soft start, TRUE = soft start |
bEnableRamping | keine | BOOL | FALSE = keine Verrampung, TRUE = Verrampung |
fWStartUp | K | LREAL | Sollgröße beim Anfahren |
tStartUp | s | TIME | Zeit mit Sollwert fWStartUp |
bStartUpRamping | keine | [TRUE,FALSE] | Schaltet Verrampung während der StartUp-Phase ein. |
fWStartUpVeloPos | K/s | LREAL | Anstiegsgeschwindigkeit (Rampe) während der StartUp-Phase |
fWStartUpVeloNeg | K/s | LREAL | Abfallgeschwindigkeit (Rampe) während der StartUp-Phase |
fWVeloPos | K/s | LREAL | Anstiegsgeschwindigkeit (Rampe) |
fWVeloNeg | K/s | LREAL | Abfallgeschwindigkeit (Rampe). |
Istgrößen Parameter |
|
|
|
tFilter | s | TIME | Filterzeitkonstante des Istwertfilters (P-T1 Filter 1. Ordnung) |
bFilter | keine | [TRUE,FALSE] | Mit TRUE wird der Istwertfiler aktiviert. |
Totband Parameter |
|
|
|
bDeadband | keine | [TRUE,FALSE] | TRUE = Totband ein, FALSE = Totband aus |
fEDeadband | K | LREAL | Größe des Totbandes in Grad |
Stellgrößen Parameter |
|
|
|
fYMin | keine | LREAL | Minimalwert der Stellgröße |
fYMax | keine | LREAL | Maximalwert der Stellgröße |
fYManual | keine | LREAL | Stellgröße im Handbetrieb |
fYOnFailure | keine | LREAL | Stellgröße im Fehlerfall (parametrierbar) |
tPWMCycleTime | s | TIME | Zykluszeit des PWM Signals |
tPWMMinOffTime | s | TIME | PWM: minimale Ausschaltzeit |
tPWMMinOnTime | s | TIME | PWM: minimale Einschaltzeit |
tPWMWaitingTime | s | TIME | PWM: Wartezeit beim Umschalten von Heizen nach Kühlen |
fYThresholdOff | % | LREAL | 3-Punkt: Ausschaltschwelle |
fYThresholdOn | % | LREAL | 3-Punkt: Einschaltschwelle |
nCyclesForSwitchOver | keine | INT | Anzahl Zyklen für Übergang von einem Parametersatz zum anderen |
Regler Parameter |
|
|
|
bEnablePreController | keine | [TRUE,FALSE] | Schaltet Vorregler ein. |
bEnableZones | keine | [TRUE,FALSE] | Schaltet OpenLoop Verhalten bis nahe Sollwert ein. |
bEnableCVFilter | keine | [TRUE,FALSE] | Schaltet Stellgrößenfilter hinter Hauptregler ein. |
iFilterType | keine | ENUM | Wahl eines Filtertypes für den Stellgrößenfilter hinter dem Hauptregler (s.u.). |
iControllerType | keine | ENUM | Wahl eines Regelalgorithmus (s.u.). |
Alarming Parameter |
|
|
|
TempLow | K | LREAL | Relativer unterer Temperaturgrenzwert im ersten Band |
TempLowLow | K | LREAL | Relativer unterer Temperaturgrenzwert im zweiten Band |
TempHigh | K | LREAL | Relativer oberer Temperaturgrenzwert im ersten Band |
TempHighHigh | K | LREAL | Relativer oberer Temperaturgrenzwert im zweiten Band |
TempAbsoluteHigh | K | LREAL | Absoluter oberer Temperaturgrenzwert |
TempAbsoluteLow | K | LREAL | Absoluter unterer Temperaturgrenzwert |
Experten Parameter |
|
|
|
fTuneKp | keine | LREAL | FineTuning Parameter für den PID Regler (nur für Experten) |
fTuneTn | keine | LREAL | FineTuning Parameter für den PID Regler (nur für Experten) |
fTuneTv | keine | LREAL | FineTuning Parameter für den PID Regler (nur für Experten) |
fTuneTd | keine | LREAL | FineTuning Parameter für den PID Regler (nur für Experten) |
ST_CTRL_ParaController
TYPE ST_CTRL_ParaController :
STRUCT
(* Controller parameter set - heating *)
KpHeat : FLOAT;
TnHeat : TIME;
TvHeat : TIME;
TdHeat : TIME;
(* Controller parameter set - cooling *)
KpCool : FLOAT;
TnCool : TIME;
TvCool : TIME;
TdCool : TIME;
END_STRUCT
END_TYPE
Name | Einheit | Wertebereich | Beschreibung |
---|---|---|---|
KpHeat | keine | LREAL | Verstärkungsfaktor für Hauptregler |
TnHeat | s | TIME | Nachstellzeit für Hauptregler (I-Anteil) |
TvHeat | s | TIME | Vorhaltzeit für Hauptregler (D-Anteil) |
TdHeat | s | TIME | Dämpfungszeit für Hauptregler |
KpCool | keine | LREAL | Verstärkungsfaktor für Hauptregler |
TnCool | s | TIME | Nachstellzeit für Hauptregler (I-Anteil) |
TvCool | s | TIME | Vorhaltzeit für Hauptregler (D-Anteil) |
TdCool | s | TIME | Dämpfungszeit für Hauptregler |
ENUM: E_CTRL_ERRORCODES
Siehe Dokumentation der TwinCAT Controller Toolbox.
ENUM: E_CTRL_ReactionOnFailure
Name | Beschreibung |
---|---|
eCTRL_ReactionOnFailure_NoFailure | Kein Fehler |
eCTRL_ReactionOnFailure_StopController | Wenn Fehler (Alarm), dann stoppe Regler. |
eCTRL_ReactionOnFailure_SetManMode | Wenn Fehler (Alarm), dann schalte Regler in Handbetrieb. |
eCTRL_ReactionOnFailure_SetYMax | Wenn Fehler (Alarm), dann setze Stellgröße auf maximalen Wert. |
eCTRL_ReactionOnFailure_SetYMin | Wenn Fehler (Alarm), dann setze Stellgröße auf minimalen Wert. |
eCTRL_ReactionOnFailure_SetYMean | Wenn Fehler (Alarm), dann setze Stellgröße auf Mittelwert (in Planung). |
ENUM: E_CTRL_ControllerStateInternal
Name | Beschreibung |
---|---|
E_CTRL_ControllerStateInternalHeating | intern |
E_CTRL_ControllerStateInternalCooling | intern |
ENUM: E_CTRL_ControlMode
Name | Beschreibung |
---|---|
eCTRL_ControlMode_HEATING | Nur Heizen |
eCTRL_ControlMode_COOLING | Nur Kühlen |
eCTRL_ControlMode_HEATING_COOLING | Heizen und Kühlen |
ENUM: E_CTRL_STATE
Siehe Dokumentation der TwinCAT Controller Toolbox.
ENUM: E_CTRL_STATE_TUNIG
Name | Beschreibung |
---|---|
eCTRL_STATE_TUNING_INIT | Tuning: Initialisierung |
eCTRL_STATE_TUNING_IDLE | Tuning: Warten auf stabiles Eingangssignal (Regelgröße) |
eCTRL_STATE_TUNING_PULSE | Tuning: Anregung durch kurzen Puls (in Planung) |
eCTRL_STATE_TUNING_STEP | Tuning: Anregung durch Sprung (Wendetangentenmethode) |
eCTRL_STATE_TUNING_READY | Tuning: Ermittlung der Parameter, Finalisierung |
eCTRL_STATE_TUNING_ERROR | Tuning: Fehler beim Tuning aufgetreten |
ENUM: E_CTRL_TuneMode
Name | Beschreibung |
---|---|
eCTRL_TuneMode_HEATING | Tuning: nur Heizen |
eCTRL_TuneMode_COOLING | Tuning: nur Kühlen |
eCTRL_TuneMode_HEATING_COOLING | Tuning: erst Heizen, dann Kühlen |
eCTRL_TuneMode_COOLING_HEATING | Tuning: erst Kühlen, dann Heizen |
eCTRL_TuneMode_OSCILLATION | Tuning: on-the-fly Parameterschätzung durch Schwingungsanregung (in Planung) |
ENUM: E_CTRL_FilterType
Name | Beschreibung |
---|---|
eCTRL_FilterType_FIRSTORDER | Filter erster Ordnung |
eCTRL_FilterType_AVERAGE | Mittelwertfilter |
ENUM: E_CTRL_ControllerType
Name | Beschreibung |
---|---|
eCTRL_ControllerType_PID | Standard-PID Regelalgorithmus |
eCTRL_ControllerType_PI | Standard-PI Regelalgorithmus |
eCTRL_ControllerType_PID_Pre | Standard-PID Regelalgorithmus mit Vorregler (in Planung) |
eCTRL_ControllerType_PIDD2 | serieller PID Regelalgorithmus (in Planung) |
Bit-Masken für Alarme
Name | Maske | Beschreibung |
---|---|---|
nAlarmOpen | 2#0000_0000_0000_0000_0000_0000_0000_0001 | Hardware: offener Temperaturfühler |
nAlarmReverse | 2#0000_0000_0000_0000_0000_0000_0000_0010 | Hardware: verpolter Temperaturfühler |
nAlarmBackVoltage | 2#0000_0000_0000_0000_0000_0000_0000_0100 | Hardware: zu hohe Spannung am Temperaturfühler |
nAlarmLeakage | 2#0000_0000_0000_0000_0000_0000_0000_1000 | Hardware: Leckstrom gemessen |
nAlarmShortCircuit | 2#0000_0000_0000_0000_0000_0000_0001_0000 | Hardware: Kurzschluss |
nAlarmOpenCircuit | 2#0000_0000_0000_0000_0000_0000_0010_0000 | Hardware: kein Strom |
nAlarmLimitLow | 2#0000_0000_0000_0000_0000_0001_0000_0000 | Software: untere erste relative Temperatur unterschritten |
nAlarmLimitLowLow | 2#0000_0000_0000_0000_0000_0010_0000_0000 | Software: untere zweite relative Temperatur unterschritten |
nAlarmLimitHigh | 2#0000_0000_0000_0000_0000_0100_0000_0000 | Software: obere erste relative Temperatur überschritten |
nAlarmLimitHighHigh | 2#0000_0000_0000_0000_0000_1000_0000_0000 | Software: obere zweite relative Temperatur überschritten |
nAlarmAbsoluteHigh | 2#0000_0000_0000_0000_0001_0000_0000_0000 | Software: obere absolute Temperatur überschritten |
nAlarmAbsoluteLow | 2#0000_0000_0000_0000_0010_0000_0000_0000 | Software: untere absolute Temperatur unterschritten |
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT 3.1.4016 | PC oder CX | Tc2_TempController |