FUNCTION_BLOCK "Sperrdampfdruckregler"
TITLE = Sperrdampfdruckregler
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
VAR
Befehl_AUS : Bool;
Befehl_HAND : Bool;
Befehl_AUTO : Bool;
Freigabe : Bool;
SP_INT : Real;
MAN : Real;
GAIN : Real;
TI : Time;
TD : Time;
TM_LAG : Time;
REGLER_AUS : Bool;
REGLER_HAND : Bool;
REGLER_AUTO : Bool;
LMN : Real;
QLMN_HLM : Bool;
QLMN_LLM : Bool;
LMN_P : Real;
LMN_I : Real;
LMN_D : Real;
PV : Real;
ER : Real;
"RET__VAL" : Word;
P_Flanke_1 : Bool;
P_Flanke_2 : Bool;
P_Flanke_3 : Bool;
SW_OG : Real;
SW_UG : Real;
Aktuelle_Sollwert : Real; // Aktuelle_Sollwert
REAL_02 : Real;
REAL_03 : Real;
Stellwert : Real;
END_VAR
VAR_TEMP
Dummy : Bool;
END_VAR
BEGIN
NETWORK
TITLE = Freigabe
U "B0MAW30CP010_P_SpDa_hi_RV".Fail_ALARM_OUT;
NOT;
= #Freigabe;
NETWORK
TITLE = AUS / HAND / AUTO
U(;
U #Befehl_HAND;
S #REGLER_HAND;
U(;
O #Befehl_AUS;
O #Befehl_AUTO;
O "B0MAW30CP010_P_SpDa_hi_RV".Fail_ALARM_OUT;
O "B0MAY40EC010".XS52.bit_0_CMD_TO_TIA_Programm;
);
R #REGLER_HAND;
U #REGLER_HAND;
);
NOT;
U(;
U(;
U(;
O #Befehl_AUTO;
O "B0MAY40EC010".XS03.bit_0_CMD_TO_TIA_Programm;
);
S #REGLER_AUTO;
U(;
O #Befehl_AUS;
O #Befehl_HAND;
O "B0MAW30CP010_P_SpDa_hi_RV".Fail_ALARM_OUT;
);
R #REGLER_AUTO;
U #REGLER_AUTO;
);
NOT;
);
= %L1.0;
U %L1.0;
BLD 102;
= #REGLER_AUS;
UN %L1.0;
SPBNB Label_0;
L 100.0;
T "Sperrdampfdruckregler_IDB".LMN_HLM;
Label_0: NOP 0;
NETWORK
TITLE = Rampe Regler AUS
O(;
U(;
U #REGLER_AUS;
BLD 100;
FP #P_Flanke_3;
);
SPBNB Label_1;
L #LMN;
T "Sperrdampfdruckregler_IDB".LMN_HLM;
SET;
SAVE;
CLR;
Label_1: U BIE;
);
O(;
U #REGLER_AUS;
SPBNB Label_2;
L "Sperrdampfdruckregler_IDB".LMN_HLM;
L 0.1;
-R;
T "Sperrdampfdruckregler_IDB".LMN_HLM;
UN OV;
SAVE;
CLR;
Label_2: U BIE;
);
O(;
U(;
L "Sperrdampfdruckregler_IDB".LMN_HLM;
L 0.0;
<R;
);
SPBNB Label_3;
L 0.0;
T "Sperrdampfdruckregler_IDB".LMN_HLM;
SET;
SAVE;
CLR;
Label_3: U BIE;
);
= #Dummy;
NETWORK
TITLE = MAN auf NUL initialisieren Sollwert
U #REGLER_AUTO;
BLD 100;
FP #P_Flanke_2;
= %L1.0;
U(;
O(;
U #REGLER_AUS;
BLD 100;
FP #P_Flanke_1;
);
O %L1.0;
);
SPBNB Label_4;
L 0.0;
T #MAN;
Label_4: NOP 0;
U %L1.0;
SPBNB Label_5;
L 30.0;
T #SP_INT;
Label_5: NOP 0;
NETWORK
TITLE = Sollwert über Rampe führen
O(;
U(;
L #SP_INT;
L #Aktuelle_Sollwert;
>R;
);
SPBNB Label_6;
L #Aktuelle_Sollwert;
L 0.1;
+R;
T #Aktuelle_Sollwert;
UN OV;
SAVE;
CLR;
Label_6: U BIE;
);
O(;
U(;
L #SP_INT;
L #Aktuelle_Sollwert;
<R;
);
SPBNB Label_7;
L #Aktuelle_Sollwert;
L 0.1;
-R;
T #Aktuelle_Sollwert;
UN OV;
SAVE;
CLR;
Label_7: U BIE;
);
O(;
L #SP_INT;
L 0.1;
+R;
T #REAL_02;
UN OV;
SAVE;
CLR;
U BIE;
);
O(;
L #SP_INT;
L 0.1;
-R;
T #REAL_03;
UN OV;
SAVE;
CLR;
U BIE;
);
O(;
U(;
L #Aktuelle_Sollwert;
L #REAL_03;
>=R;
);
U(;
L #Aktuelle_Sollwert;
L #REAL_02;
<=R;
);
SPBNB Label_8;
L #SP_INT;
T #Aktuelle_Sollwert;
SET;
SAVE;
CLR;
Label_8: U BIE;
);
O(;
U #REGLER_AUS;
SPBNB Label_9;
L "B0MAW30CP010_P_SpDa_hi_RV".ACT_VAL_OUT;
T #Aktuelle_Sollwert;
SET;
SAVE;
CLR;
Label_9: U BIE;
);
O(;
U #REGLER_AUS;
SPBNB Label_10;
L "B0MAW30CP010_P_SpDa_hi_RV".ACT_VAL_OUT;
T #SP_INT;
SET;
SAVE;
CLR;
Label_10: U BIE;
);
= #Dummy;
NETWORK
TITLE = Ober und Untergrenze Sollwertvorgabe
L 50.0;
T #SW_OG;
L -10.0;
T #SW_UG;
NETWORK
TITLE = Reglerbaustein
U "Low_Merker";
= %L1.0;
BLD 103;
U #REGLER_HAND;
= %L1.1;
BLD 103;
U "Low_Merker";
= %L1.2;
BLD 103;
U "High_Merker";
= %L1.3;
BLD 103;
U "High_Merker";
= %L1.4;
BLD 103;
U "Low_Merker";
= %L1.5;
BLD 103;
U "Low_Merker";
= %L1.6;
BLD 103;
U "High_Merker";
= %L1.7;
BLD 103;
CALL CONT_C, "Sperrdampfdruckregler_IDB"
( COM_RST := %L1.0 ,
MAN_ON := %L1.1 ,
PVPER_ON := %L1.2 ,
P_SEL := %L1.3 ,
I_SEL := %L1.4 ,
INT_HOLD := %L1.5 ,
I_ITL_ON := %L1.6 ,
D_SEL := %L1.7 ,
CYCLE := t#100ms ,
SP_INT := #SP_INT ,
PV_IN := "B0MAW30CP010_P_SpDa_hi_RV".ACT_VAL_OUT ,
MAN := #MAN ,
GAIN := #GAIN ,
TI := #TI ,
TD := #TD ,
TM_LAG := t#2s ,
LMN_LLM := 0.0 ,
PV_FAC := 1.0 ,
PV_OFF := 0.0 ,
LMN_FAC := 1.0 ,
LMN_OFF := 0.0 ,
I_ITLVAL := 0.0 ,
DISV := 0.0 ,
LMN := #LMN ,
LMN_P := #LMN_P ,
LMN_I := #LMN_I ,
LMN_D := #LMN_D ,
PV := #PV ,
ER := #ER
);
NOP 0;
NETWORK
TITLE = Ausgabe
U "High_Merker";
= %L1.0;
U(;
U %L1.0;
U #REGLER_AUS;
SPBNB Label_11;
L "Sperrdampfdruckregler_IDB".LMN_HLM;
T #Stellwert;
SET;
SAVE;
CLR;
Label_11: U BIE;
);
NOT;
SPBNB Label_12;
L "Sperrdampfdruckregler_IDB".LMN;
T #Stellwert;
Label_12: NOP 0;
U "Low_Merker";
= %L1.1;
BLD 103;
U %L1.0;
SPBNB Label_13;
CALL UNSCALE
( IN := #Stellwert ,
HI_LIM := 0.0 ,
LO_LIM := 100.0 ,
BIPOLAR := %L1.1 ,
RET_VAL := #"RET__VAL" ,
OUT := "PAW530 IOP78A1 B0MAW10DU010 Setpoint I/P converter control valve HP sealing steam"
);
Label_13: NOP 0;
U %L1.0;
U(;
O #REGLER_HAND;
O #REGLER_AUTO;
);
= "A20.5 IOP 80A1 B0MAW10DU010 Release I/P converter control valve HP sealing steam";
U %L1.0;
U #REGLER_AUTO;
= "SAT_Binary -> ZLT".B0MAW10DP010_01;
U %L1.0;
U #REGLER_AUS;
= "SAT_Binary -> ZLT".B0MAW10DP010_02;
NETWORK
TITLE = Rücksetzen Befehle
U "High_Merker";
= %L1.0;
U %L1.0;
U #Befehl_HAND;
R #Befehl_HAND;
U %L1.0;
U #Befehl_AUTO;
R #Befehl_AUTO;
U %L1.0;
U #Befehl_AUS;
R #Befehl_AUS;
END_FUNCTION_BLOCK