68 lines
2.3 KiB
Markdown
68 lines
2.3 KiB
Markdown
```pascal
|
|
// Block Type: FB
|
|
// Block Number: 1781
|
|
// Original Network Languages: LAD
|
|
// Block Comment:
|
|
// TASK1 PID
|
|
|
|
FUNCTION_BLOCK "PID_RMP302"
|
|
{ S7_Optimized_Access := 'TRUE' }
|
|
VERSION : 0.1
|
|
|
|
VAR_STAT
|
|
PID_Syrup_Proportional : Real;
|
|
PID_Syrup_Integral : Real;
|
|
PID_Syrup_Derivative : Real;
|
|
Syrup_Valve_Out : Real;
|
|
mSyrPIDEn : Bool;
|
|
PID : "PIDControl";
|
|
END_VAR
|
|
|
|
BEGIN
|
|
|
|
// Network 1: Manual Enable (Original Language: LAD)
|
|
|
|
"HMI_PID"."RMP302"."ManualControl"."PidEnable" := "gBlenderCIPMode" OR ("gBlenderBlending" AND "Blender_Variables_Pers"."gWaterRecipe");
|
|
|
|
// Network 2: Setpoint (Original Language: LAD)
|
|
|
|
"HMI_PID"."RMP302"."Sp" := "Blender_Variables"."gSP_SYR";
|
|
|
|
// Network 3: PV forcing (Original Language: LAD)
|
|
|
|
IF "HMI_PID"."RMP302"."ManualControl"."PidEnable" AND "gBlenderStableFlow" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch" AND "Procedure_Variables"."FTP302_StartUp"."Latch" AND "gSyrupQcoRinse" THEN
|
|
"HMI_PID"."RMP302"."Pv" := "HMI_PID"."RMP302"."Sp";
|
|
END_IF;
|
|
|
|
// Network 4: 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 := "gBlenderCIPMode" OR ("gRinseClose_RMP302" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."Blender_Rinse"."Running"), PID_Data := "HMI_PID"."RMP302", PID_Enable := "HMI_PID"."RMP302"."ManualControl"."PidEnable" OR "HMI_PID"."RMP302"."I_ITL", P_Sel := "AUX TRUE", REG_INV := "AUX FALSE");
|
|
|
|
// Network 5: Integral (Original Language: LAD)
|
|
|
|
"mPID_RMP302_Int" := "PID_Syrup_Integral";
|
|
|
|
// Network 6: Integral PID Inizialize (Original Language: LAD)
|
|
|
|
IF "HMI_PID"."RMP302"."I_ITL" THEN
|
|
"HMI_PID"."RMP302"."I_ITL" := FALSE;
|
|
END_IF;
|
|
|
|
// Network 7: Valve Output (Original Language: LAD)
|
|
|
|
// NBox SymPy processed, logic in consumer
|
|
"mSyrPIDEn" := "HMI_PID"."RMP302"."ManualControl"."PidEnable"; // N_TRIG("HMI_PID"."RMP302"."ManualControl"."PidEnable") - Mem: "mSyrPIDEn"
|
|
|
|
IF "mSyrPIDEn" AND NOT "HMI_PID"."RMP302"."ManualControl"."PidEnable" THEN
|
|
"Syrup_Valve_Out" := "HMI_PID"."RMP302"."Out";
|
|
END_IF;
|
|
|
|
// Network 8: Valve Output (Original Language: LAD)
|
|
|
|
SEL_R(G := "HMI_PID"."RMP302"."ManualControl"."PidEnable", IN0 := 0.0, IN1 := "HMI_PID"."RMP302"."Out");
|
|
|
|
END_FUNCTION_BLOCK
|
|
|
|
```
|