5.9 KiB
5.9 KiB
// Block Type: FB
// Block Number: 1793
// Original Network Languages: LAD
// Block Comment:
// TASK1 PID
FUNCTION_BLOCK "PID_RVN302"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
PID_Enable : Bool;
MAN_ON : Bool;
P_Sel : Bool;
I_Sel : Bool;
D_Sel : Bool;
FF_Enable : Bool;
REG_INV : Bool;
LMN_FAC : Real;
LMN_OFF : Real;
END_VAR
VAR_OUTPUT
LMN_P : Real;
LMN_I : Real;
LMN_D : Real;
END_VAR
VAR_INOUT
PID_Data : "PID";
END_VAR
VAR_STAT
PID_RVN302_Prop : Real;
PID_RVN302_Int : Real;
PID_RVN302_Der : Real;
PID : "PIDControl";
END_VAR
VAR_TEMP
mDummy : Bool;
mMaxRVN302LevelAnalog : Bool;
mMaxRVN302Level : Real;
mAuxReal : Real;
END_VAR
BEGIN
// Network 1: Manual Enable (Original Language: LAD)
"HMI_PID"."RVN302"."ManualControl"."PidEnable" := ("Blender_Variables_Pers"."gSkipDeaireation" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gBlenderProdMode" AND "gBlenderRinseMode") OR ("Blender_Variables_Pers"."gSkipDeaireation" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."TN301_StartUp"."Running" AND "gBlenderProdMode" AND "gBlenderRinseMode");
"Blender_Variables"."Aux_RVN302_PID"."ManualControl"."PidEnable" := ("Blender_Variables_Pers"."gSkipDeaireation" AND "Procedure_Variables"."Blender_Run"."Latch" AND "gBlenderProdMode" AND "gBlenderRinseMode") OR ("Blender_Variables_Pers"."gSkipDeaireation" AND "Procedure_Variables"."TN301_StartUp"."Done" AND "Procedure_Variables"."TN301_StartUp"."Running" AND "gBlenderProdMode" AND "gBlenderRinseMode");
// Network 2: Setpoint (Original Language: LAD)
SEL_R(G := "Blender_Variables_Pers"."gSkipDeaireation", IN0 := "Blender_Variables"."gSP_DEAIR_Level", IN1 := "Blender_Variables"."gSP_ST OR AGE_Level");
// Network 3: 0 = Deaireation ON, 1 = Deaireation OFF (Original Language: LAD)
"HMI_Variables_Status"."System"."SkipDeaireation" := "Blender_Variables_Pers"."gSkipDeaireation";
// Network 4: Setpoint (Original Language: LAD)
IF ("Blender_Variables_Pers"."gSkipDeaireation" AND "HMI_PID"."RVN302"."ManualControl"."PidEnable" AND "Procedure_Variables"."Blender_Run"."Running" AND "Procedure_Variables"."BlendFill_StartUp"."Running") OR ("Blender_Variables_Pers"."gSkipDeaireation" AND "HMI_PID"."RVN302"."ManualControl"."PidEnable" AND "Procedure_Variables"."Blender_Run"."Running" AND "Procedure_Variables"."TN301_StartUp"."Running" AND "gDeairTank_Loading") THEN
"HMI_PID"."RVN302"."Sp" := "HMI_PID"."RVN302"."Pv";
END_IF;
// Network 5: Blender Variables - Persistent (Original Language: LAD)
"Blender_Variables"."Aux_RVN302_PID"."Sp" := "HMI_PID"."RVN302"."Sp";
"Blender_Variables"."Aux_RVN302_PID"."Pv" := "HMI_PID"."RVN302"."Pv";
"Blender_Variables"."Aux_RVN302_PID"."KP" := "HMI_PID"."RVN302"."KP";
SEL_R(G := "Blender_Variables_Pers"."gSkipDeaireation", IN0 := "HMI_PID"."RVN302"."Ti", IN1 := "HMI_PID"."RVN302_TM301"."Ti");
SEL_R(G := "Blender_Variables_Pers"."gSkipDeaireation", IN0 := "HMI_PID"."RVN302"."Td", IN1 := "HMI_PID"."RVN302_TM301"."Td");
"Blender_Variables"."Aux_RVN302_PID"."FfOut" := "HMI_PID"."RVN302"."FfOut";
"Blender_Variables"."Aux_RVN302_PID"."OutMax" := "HMI_PID"."RVN302"."OutMax";
"Blender_Variables"."Aux_RVN302_PID"."OutMin" := "HMI_PID"."RVN302"."OutMin";
"Blender_Variables"."Aux_RVN302_PID"."I_ITLVAL" := "HMI_PID"."RVN302"."I_ITLVAL";
"Blender_Variables"."Aux_RVN302_PID"."Lsp" := "HMI_PID"."RVN302"."Lsp";
"Blender_Variables"."Aux_RVN302_PID"."OutMan" := "HMI_PID"."RVN302"."OutMan";
"Blender_Variables"."Aux_RVN302_PID"."Cycle_Time" := "HMI_PID"."RVN302"."Cycle_Time";
"Blender_Variables"."Aux_RVN302_PID"."Dead_Band" := "HMI_PID"."RVN302"."Dead_Band";
"mDummy" := TRUE;
// Network 6: From HMI - Local (Original Language: LAD)
"Blender_Variables"."Aux_RVN302_PID"."ManualControl"."LocalSP" := "HMI_PID"."RVN302"."ManualControl"."LocalSP";
// Network 7: Integral PID Inizialize (Original Language: LAD)
"Blender_Variables"."Aux_RVN302_PID"."I_ITL" := "HMI_PID"."RVN302"."I_ITL";
// Network 8: PID Control (Original Language: LAD)
// Attenzione al Bit REG_INV !!
"PID"(D_Sel := "AUX TRUE", FF_Enable := "AUX TRUE", I_Sel := "AUX TRUE", LMN_FAC := 1.0, LMN_OFF := 0.0, MAN_ON := "HMI_PID"."RVN302"."ManualControl"."ManOut", PID_Data := "Blender_Variables"."Aux_RVN302_PID", PID_Enable := "HMI_PID"."RVN302"."ManualControl"."PidEnable" OR "HMI_PID"."RVN302"."I_ITL", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE");
// Network 9: Valve Output (Original Language: LAD)
"HMI_PID"."RVN302"."Out" := "Blender_Variables"."Aux_RVN302_PID"."Out";
// Network 10: Integral PID Inizialize (Original Language: LAD)
"HMI_PID"."RVN302"."I_ITL" := "Blender_Variables"."Aux_RVN302_PID"."I_ITL";
// Network 11: Limit (Original Language: LAD)
"HMI_PID"."RVN302"."High_Limit" := "Blender_Variables"."Aux_RVN302_PID"."High_Limit";
// Network 12: Limit (Original Language: LAD)
"HMI_PID"."RVN302"."Low_Limit" := "Blender_Variables"."Aux_RVN302_PID"."Low_Limit";
// Network 13: Integral (Original Language: LAD)
"mPID_RVN302_Int" := "PID_RVN302_Int";
// Network 14: Integral PID Inizilize (Original Language: LAD)
IF "HMI_PID"."RVN302"."I_ITL" THEN
"HMI_PID"."RVN302"."I_ITL" := FALSE;
END_IF;
// Network 15: From HMI (Original Language: LAD)
SEL_R(G := "Blender_Variables_Pers"."gSkipDeaireation", IN0 := "Blender_Variables"."gSP_DEAIR_Level", IN1 := "Blender_Variables"."gSP_ST OR AGE_Level");
"mMaxRVN302Level" := "mAuxReal" + 10.0;
SEL_R(G := "Blender_Variables_Pers"."gSkipDeaireation", IN0 := "HMI_Instrument"."LTN301"."PVFiltered", IN1 := "HMI_Instrument"."LTM302"."PVFiltered");
"mMaxRVN302LevelAnalog" := "mAuxReal" > "mMaxRVN302Level";
// Network 16: Valve Output (Original Language: LAD)
SEL_R(G := "HMI_PID"."RVN302"."ManualControl"."PidEnable" AND ("HMI_PID"."RVN302"."ManualControl"."ManOut" OR "mMaxRVN302LevelAnalog"), IN0 := 0.0, IN1 := "HMI_PID"."RVN302"."Out");
END_FUNCTION_BLOCK