281 lines
11 KiB
Markdown
281 lines
11 KiB
Markdown
```pascal
|
|
// Block Type: FB
|
|
// Block Number: 1810
|
|
// Original Network Languages: LAD, STL
|
|
|
|
FUNCTION_BLOCK "ProcedureSyrupLineMFMPrep"
|
|
{ S7_Optimized_Access := 'TRUE' }
|
|
VERSION : 0.1
|
|
|
|
VAR_STAT
|
|
mStepNum : Int;
|
|
mTimeStep : Int;
|
|
Real_Time : Time;
|
|
mTransition : Bool;
|
|
mSyrLineMFMPrepONS : Bool;
|
|
mSyrupLineManualDrainSR : Bool;
|
|
mFTP302_PrepReqTPON : Bool;
|
|
mFTP302_PrepReqTP1ON : Bool;
|
|
mDelayON_StopPumpON : Bool;
|
|
mDelayON_SyrupMinON : Bool;
|
|
mDelayON_PumpStatusON : Bool;
|
|
mHVP301_TONON : Bool;
|
|
mFTP302_Prep_TimeOutON : Bool;
|
|
mFTP302_PrepReqTP : "TP_TIME:v1.0";
|
|
mFTP302_PrepReqTP1 : "TP_TIME:v1.0";
|
|
mDelayON_StopPump : "TON_TIME:v1.0";
|
|
mDelayON_SyrupMin : "TON_TIME:v1.0";
|
|
mDelayON_PumpStatus : "TON_TIME:v1.0";
|
|
mHVP301_TON : "TON_TIME:v1.0";
|
|
mFTP302_Prep_TimeOut : "TON_TIME:v1.0";
|
|
END_VAR
|
|
|
|
VAR_TEMP
|
|
mDummy : Bool;
|
|
mAux1 : Real;
|
|
mAux2 : Real;
|
|
mTimeOutElapsed : Bool;
|
|
mStopPumpP2 : Bool;
|
|
mSyrMinLevel : Bool;
|
|
mPumpP2Running : Bool;
|
|
mWaterCountAcheaved : Bool;
|
|
mSyrupLineManualDrained : Bool;
|
|
mFuzzyNetOut : Bool;
|
|
Out_Time_DI : DInt;
|
|
Real_Time_S5 : S5Time;
|
|
mProcSlctd : Bool;
|
|
mFuzzyNetAdd1 : Real;
|
|
mFuzzyNetAdd2 : Real;
|
|
mFuzzyNetAdd3 : Real;
|
|
mSyrBrixAux : Real;
|
|
mSyrBrixAux_1 : Real;
|
|
__PlcmigTempFillBits_40B0 : Array[0..7] of Bool;
|
|
END_VAR
|
|
|
|
#_4S : Bool; // Auto-generated temporary
|
|
#_4S_600MS : Bool; // Auto-generated temporary
|
|
#_500MS : Bool; // Auto-generated temporary
|
|
#_5S : Bool; // Auto-generated temporary
|
|
#TON_INSTANCE_25 : Bool; // Auto-generated temporary
|
|
#TON_INSTANCE_27 : Bool; // Auto-generated temporary
|
|
#TON_INSTANCE_28 : Bool; // Auto-generated temporary
|
|
#TON_INSTANCE_29 : Bool; // Auto-generated temporary
|
|
BEGIN
|
|
|
|
// Network 1: Qualifier (Original Language: LAD)
|
|
|
|
"Procedure_Variables"."FTP302Line_Preparation"."Qualifier" := ("gBlenderProdMode" AND "gBlenderSuppliesOk" AND "Blender_Variables_Pers"."gWaterRecipe" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "gBlenderSuppliesOk" AND "Blender_Variables_Pers"."gWaterRecipe" AND "System_RunOut_Variables"."FastChangeOverActivated");
|
|
|
|
// Network 2: Request (Original Language: LAD)
|
|
|
|
"Procedure_Variables"."FTP302Line_Preparation"."Request" := ("mFTP302_PrepReqTP1ON" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch") OR ("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_FTP302Line_Prep" AND "Procedure_Variables"."FTP302Line_Preparation"."Qualifier" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch");
|
|
|
|
// Network 3: Reset (Original Language: LAD)
|
|
|
|
// PBox SymPy processed, logic in consumer
|
|
"mSyrLineMFMPrepONS" := "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Request" AND "Procedure_Variables"."Blender_Run"."Latch" AND "System_RunOut_Variables"."FastChangeOverActivated"; // P_TRIG("Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Request" AND "Procedure_Variables"."Blender_Run"."Latch" AND "System_RunOut_Variables"."FastChangeOverActivated") - Mem: "mSyrLineMFMPrepONS"
|
|
|
|
"Procedure_Variables"."FTP302Line_Preparation"."Reset" := "gBlenderCIPMode" OR ("gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated");
|
|
|
|
// Network 4: Reset (Original Language: LAD)
|
|
|
|
IF "Procedure_Variables"."FTP302Line_Preparation"."Reset" THEN
|
|
"mStepNum" := 0;
|
|
END_IF;
|
|
|
|
IF "Procedure_Variables"."FTP302Line_Preparation"."Reset" THEN
|
|
"Procedure_Variables"."FTP302Line_Preparation"."Done" := FALSE;
|
|
END_IF;
|
|
|
|
IF "Procedure_Variables"."FTP302Line_Preparation"."Reset" THEN
|
|
"mWaterCountAcheaved" := FALSE;
|
|
END_IF;
|
|
|
|
// Network 5: Wait (Original Language: LAD)
|
|
|
|
"Procedure_Variables"."FTP302Line_Preparation"."Wait" := "HMI_Digital"."_PAL_S11"."Filtered" OR "HMI_Device"."PPP302"."Alarm";
|
|
|
|
// Network 6: Latch (Original Language: LAD)
|
|
|
|
"Procedure_Variables"."FTP302Line_Preparation"."Latch" := ("Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Request" AND "Procedure_Variables"."FTP302Line_Preparation"."Reset" AND "FirstScan") OR ("Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Reset" AND "FirstScan" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch");
|
|
|
|
IF ("Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Request" AND "Procedure_Variables"."FTP302Line_Preparation"."Reset" AND "FirstScan") OR ("Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."FTP302Line_Preparation"."Reset" AND "FirstScan" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch") THEN
|
|
"HMI_Variables_Status"."Procedures"."BlenderStateNum" := 3;
|
|
END_IF;
|
|
|
|
// Network 7: Running (Original Language: LAD)
|
|
|
|
"Procedure_Variables"."FTP302Line_Preparation"."Running" := "Procedure_Variables"."FTP302Line_Preparation"."Wait" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch";
|
|
|
|
// Network 8: #Out_Time_DI (Original Language: LAD)
|
|
|
|
"mAux1" := "Blender_Variables"."gMinProduction" / 6.0;
|
|
|
|
SEL_R(G := Ne("mAux1", 0.0), IN0 := 1.0, IN1 := "mAux1");
|
|
|
|
"mAux2" := "HMI_Blender_Parameters"."ProcessSetup"."_SyrupRunOutLiters" * 1.5;
|
|
|
|
"mAux1" := "mAux2" / "mAux1";
|
|
|
|
// Network 9: Conversion in Real (Original Language: STL)
|
|
// #Out_Time_DI (DINT) converted in #Real_Time_S5 (Time)
|
|
// Use L#1000 IF #Out_Time_DI is in ms
|
|
|
|
// --- BEGIN STL Network 9 ---
|
|
|
|
L "Out_Time_DI"
|
|
L DINT#1000
|
|
MUL_D
|
|
T "Real_Time"
|
|
|
|
// --- END STL Network 9 ---
|
|
|
|
// Network 10: TimeOut On (Original Language: LAD)
|
|
|
|
#TON_INSTANCE_27(IN := "Procedure_Variables"."FTP302Line_Preparation"."Latch", PT := "Real_Time"); // TODO: Declarar #TON_INSTANCE_27 : TON;
|
|
|
|
"mFTP302_Prep_TimeOutON" := #TON_INSTANCE_27.Q;
|
|
|
|
"mTimeOutElapsed" := "mFTP302_Prep_TimeOutON" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch";
|
|
|
|
// Network 11: DelayON_StopPump (Original Language: LAD)
|
|
|
|
#TON_INSTANCE_29(IN := "gIN_SyrTank_MinLvl" AND "DI_Min_Syrup_Level", PT := T#4S_600MS); // TODO: Declarar #TON_INSTANCE_29 : TON;
|
|
|
|
"mDelayON_StopPumpON" := #TON_INSTANCE_29.Q;
|
|
|
|
"mStopPumpP2" := "gIN_SyrTank_MinLvl" AND "DI_Min_Syrup_Level" AND "mDelayON_StopPumpON";
|
|
|
|
// Network 12: DelayON_SyrupMin (Original Language: LAD)
|
|
|
|
#TON_INSTANCE_27(IN := "DI_Min_Syrup_Level", PT := T#500MS); // TODO: Declarar #TON_INSTANCE_27 : TON;
|
|
|
|
"mSyrMinLevel" := "gIN_SyrTank_MinLvl" OR ("mDelayON_SyrupMinON" AND #TON_INSTANCE_27.Q);
|
|
|
|
// Network 13: DelayON_PumpStatus (Original Language: LAD)
|
|
|
|
#TON_INSTANCE_25(IN := "HMI_Device"."PPP302"."Out", PT := T#4S); // TODO: Declarar #TON_INSTANCE_25 : TON;
|
|
|
|
"mPumpP2Running" := #TON_INSTANCE_25.Q;
|
|
|
|
// Network 14: SyrupLineManualDrain (Original Language: LAD)
|
|
|
|
#TON_INSTANCE_28(IN := "gIN_HVP301_Aux", PT := T#5S); // TODO: Declarar #TON_INSTANCE_28 : TON;
|
|
|
|
// Network 15: HMI Variables Cmd (Original Language: LAD)
|
|
|
|
"mSyrupLineManualDrained" := "gIN_HVP301_Aux" AND "mSyrupLineManualDrainSR" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch";
|
|
|
|
// Network 16: Count Limit (Original Language: LAD)
|
|
|
|
IF "Procedure_Variables"."FTP302Line_Preparation"."Latch" THEN
|
|
"Blender_Variables_Pers"."gSyrLinePrepCountInit" := "Profibus_Variables"."gFTP302_Tot";
|
|
END_IF;
|
|
|
|
// Network 17: Brix Threshold (Original Language: LAD)
|
|
|
|
"mSyrBrixAux" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_SyrupBrix" * "HMI_Blender_Parameters"."ProcessSetup"."_PercSyrupBrixSyrStarUp";
|
|
|
|
"mSyrBrixAux_1" := "mSyrBrixAux" / 100.0;
|
|
|
|
"Blender_Constants"."gSugaredSyrupBrixThrsd" := "mSyrBrixAux_1";
|
|
|
|
// Network 18: Fuzzy Net (Original Language: STL)
|
|
|
|
// --- BEGIN STL Network 18 ---
|
|
|
|
O_BRACK
|
|
AN "Blender_Variables_Pers".gSugarBeverage
|
|
A "gPV_SyrDensOk"
|
|
A "mPumpP2Running"
|
|
= "__PlcmigTempFillBits_40B0"[0]
|
|
BLD 103
|
|
CALL "SEL_R"
|
|
A _Statusword_?
|
|
BRACKET
|
|
O_BRACK
|
|
A_BRACK
|
|
L "Profibus_Variables".gFTP302_Brix
|
|
L "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupFactor
|
|
MUL_R
|
|
T "mAux1"
|
|
AN _Statusword_?
|
|
SAVE
|
|
CLR
|
|
A _Statusword_?
|
|
BRACKET
|
|
A_BRACK
|
|
L "mAux1"
|
|
L "Blender_Constants".gSugaredSyrupBrixThrsd
|
|
GT_R
|
|
BRACKET
|
|
A "mPumpP2Running"
|
|
= "__PlcmigTempFillBits_40B0"[0]
|
|
BLD 103
|
|
CALL "SEL_R"
|
|
A _Statusword_?
|
|
BRACKET
|
|
O_BRACK
|
|
A_BRACK
|
|
L "Profibus_Variables".gFTP302_Tot
|
|
L "Blender_Variables_Pers".gSyrLinePrepCountInit
|
|
SUB_R
|
|
T "mAux1"
|
|
AN _Statusword_?
|
|
SAVE
|
|
CLR
|
|
A _Statusword_?
|
|
BRACKET
|
|
A_BRACK
|
|
L "mAux1"
|
|
L "HMI_Blender_Parameters".ProcessSetup._SyrupRunOutLiters
|
|
GE_R
|
|
BRACKET
|
|
= "mWaterCountAcheaved"
|
|
A "mWaterCountAcheaved"
|
|
A "HMI_Device".PPP302.Out
|
|
= "__PlcmigTempFillBits_40B0"[0]
|
|
BLD 103
|
|
CALL "SEL_R"
|
|
A _Statusword_?
|
|
BRACKET
|
|
= "mDummy"
|
|
|
|
// --- END STL Network 18 ---
|
|
|
|
// Network 19: Fuzzy Net (Original Language: LAD)
|
|
|
|
"mFuzzyNetAdd1" := "mFuzzyNetAdd1" + "mFuzzyNetAdd2";
|
|
|
|
"mFuzzyNetAdd1" := "mFuzzyNetAdd1" + "mFuzzyNetAdd3";
|
|
|
|
"mFuzzyNetOut" := "Procedure_Variables"."FTP302Line_Preparation"."Latch" AND ("mFuzzyNetAdd1" > 100.0);
|
|
|
|
// Network 20: Opeartor Run Syrup Prep (Original Language: LAD)
|
|
|
|
"HMI_Alarms"."gH_Message" := "gBlenderProdMode" AND "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Procedure_Variables"."FTP302_StartUp"."Latch" AND "gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."FTP302Line_Preparation"."Qualifier" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch";
|
|
|
|
// Network 21: Syrup Tank Prep Running (Original Language: LAD)
|
|
// Syrup Tank Prep Running Message
|
|
|
|
"HMI_Variables_Status"."Procedures"."TP301PrepRun" := "Procedure_Variables"."FTP302Line_Preparation"."Latch";
|
|
|
|
// Network 22: Syrup Tank Prep Running (Original Language: LAD)
|
|
// Syrup Tank Prep Running Message
|
|
|
|
"HMI_Alarms"."gH_Status" := "Procedure_Variables"."FTP302_StartUp"."Latch" OR "Procedure_Variables"."FTP302Line_Preparation"."Latch";
|
|
|
|
// Network 23: Syrup Preparation Sequence (Original Language: LAD)
|
|
|
|
IF "Procedure_Variables"."FTP302Line_Preparation"."Running" THEN
|
|
Syrup_Line_MFM_Prep_Seq(FuzzyNetOut := "mFuzzyNetOut", SyrupLineManualDrained := "mSyrupLineManualDrained", WaterCountAcheaved := "mWaterCountAcheaved", mStep := "mStepNum", mStopPumpP2 := "mStopPumpP2", mSyrMinLevel := "mDelayON_SyrupMinON", mTimer := "mTimeStep", mTransition := "mTransition");
|
|
END_IF;
|
|
|
|
// Network 24: Preparation Done (Original Language: LAD)
|
|
|
|
"HMI_Variables_Status"."System_Run_Out"."TP301PrepDone" := "Procedure_Variables"."FTP302Line_Preparation"."Done";
|
|
|
|
END_FUNCTION_BLOCK
|
|
|
|
```
|