132 lines
5.1 KiB
Markdown
132 lines
5.1 KiB
Markdown
```pascal
|
|
// Block Type: FB
|
|
// Block Number: 1801
|
|
// Original Network Languages: LAD
|
|
|
|
FUNCTION_BLOCK "ProcedureBrixTracking"
|
|
{ S7_Optimized_Access := 'TRUE' }
|
|
VERSION : 0.1
|
|
|
|
VAR_STAT
|
|
mTakeSample : Bool;
|
|
mTakeProdSample : Bool;
|
|
mProdBrixSample : Int := 35;
|
|
mAuxProdBrixCorr : Real;
|
|
mLocalProdLevel : Real;
|
|
mProdBrixStat : "Statistical_Analisys";
|
|
mProdSamples : "BrixTracking_ProdSamples";
|
|
mSampleTimeCalc : "BrixTracking_SampleTime";
|
|
mAuxONS : Bool;
|
|
mAuxONS1 : Bool;
|
|
END_VAR
|
|
|
|
VAR_TEMP
|
|
mProdQualityGood : Bool;
|
|
mLatchONS : Bool;
|
|
END_VAR
|
|
|
|
BEGIN
|
|
|
|
// Network 1: Qualifier (Original Language: LAD)
|
|
|
|
"Procedure_Variables"."ProdBrix_Track"."Qualifier" := "gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Done" AND "gProductMeterOK" AND "Blender_Variables_Pers"."gSugarBeverage" AND "Blender_Variables_Pers"."gWaterRecipe";
|
|
|
|
// Network 2: Request (Original Language: LAD)
|
|
|
|
// Edge Logic handled by Coil 26
|
|
"mAuxONS" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdBrixTrackingReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdBrixTrackingReq") - Mem: "mAuxONS"
|
|
|
|
"Procedure_Variables"."ProdBrix_Track"."Request" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdBrixTrackingReq" AND NOT "mAuxONS";
|
|
"mAuxONS" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdBrixTrackingReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_PrdBrixTrackingReq") - Mem: "mAuxONS"
|
|
|
|
// Network 3: Tracking Reset (Original Language: LAD)
|
|
|
|
"Procedure_Variables"."ProdBrix_Track"."Reset" := "Procedure_Variables"."ProdBrix_Track"."Qualifier";
|
|
|
|
// Network 4: Good Quality (Original Language: LAD)
|
|
|
|
"mProdQualityGood" := "Blender_Variables"."gProdBxStat_DevStd" < 0.008;
|
|
|
|
// Network 5: Wait (Original Language: LAD)
|
|
|
|
"Procedure_Variables"."ProdBrix_Track"."Wait" := "mProdQualityGood" OR "gNoFreezeProductMeter";
|
|
|
|
// Network 6: Latch (Original Language: LAD)
|
|
|
|
"Procedure_Variables"."ProdBrix_Track"."Latch" := ("Procedure_Variables"."ProdBrix_Track"."Request" AND "FirstScan" AND "Procedure_Variables"."ProdBrix_Track"."Reset" AND "Procedure_Variables"."ProdBrix_Track"."Done") OR ("FirstScan" AND "Procedure_Variables"."ProdBrix_Track"."Reset" AND "Procedure_Variables"."ProdBrix_Track"."Done" AND "Procedure_Variables"."ProdBrix_Track"."Latch");
|
|
|
|
// Network 7: Latch Pulse (Original Language: LAD)
|
|
|
|
// Edge Logic handled by Coil 26
|
|
"mAuxONS1" := "Procedure_Variables"."ProdBrix_Track"."Latch"; // P_TRIG("Procedure_Variables"."ProdBrix_Track"."Latch") - Mem: "mAuxONS1"
|
|
|
|
"mLatchONS" := "Procedure_Variables"."ProdBrix_Track"."Latch" AND NOT "mAuxONS1";
|
|
"mAuxONS1" := "Procedure_Variables"."ProdBrix_Track"."Latch"; // P_TRIG("Procedure_Variables"."ProdBrix_Track"."Latch") - Mem: "mAuxONS1"
|
|
|
|
// Network 8: Product Brix Tracking procedure Running (Original Language: LAD)
|
|
|
|
"HMI_Variables_Status"."Procedures"."PrdBrixTrackingRun" := "Procedure_Variables"."ProdBrix_Track"."Latch";
|
|
|
|
"Procedure_Variables"."ProdBrix_Track"."Running" := "Procedure_Variables"."ProdBrix_Track"."Wait" AND "Procedure_Variables"."ProdBrix_Track"."Latch";
|
|
|
|
"HMI_Alarms"."gH_Status" := "Procedure_Variables"."ProdBrix_Track"."Wait" AND "Procedure_Variables"."ProdBrix_Track"."Latch";
|
|
|
|
// Network 9: Product Level (Original Language: LAD)
|
|
|
|
SEL_R(G := "HMI_Instrument"."LTM302"."PVFiltered" > 50.0, IN0 := "HMI_Instrument"."LTM302"."PVFiltered", IN1 := 60.0);
|
|
|
|
// Network 10: Liters in Product Tank (Original Language: LAD)
|
|
|
|
ProductLiterInTank(i_TankLevel := "mLocalProdLevel");
|
|
|
|
// Network 11: Product Sample (Original Language: LAD)
|
|
// Every 60 Liters of product take a sample for the statistical analisy
|
|
|
|
"mProdSamples"(mTakeProdSample := "mTakeProdSample");
|
|
|
|
// Network 12: Sample Time (Original Language: LAD)
|
|
|
|
IF "Procedure_Variables"."ProdBrix_Track"."Latch" THEN
|
|
"mSampleTimeCalc"(mAuxProdBrixCorr := "mAuxProdBrixCorr", mCycleCount := "MW1996", mProdBrixSample := "mProdBrixSample", mTakeSample := "mTakeSample");
|
|
END_IF;
|
|
|
|
// Network 13: Reset Tracking (Original Language: LAD)
|
|
|
|
IF "Procedure_Variables"."ProdBrix_Track"."Latch" THEN
|
|
"Blender_Variables"."gBrixTrackingCorr" := 0.0;
|
|
"mAuxProdBrixCorr" := 0.0;
|
|
END_IF;
|
|
|
|
// Network 14: Product Brix Tracking (Original Language: LAD)
|
|
|
|
"HMI_Alarms"."gH_Status" := "Procedure_Variables"."ProdBrix_Track"."Running";
|
|
|
|
// Network 15: Tracking Done (Original Language: LAD)
|
|
|
|
"Procedure_Variables"."ProdBrix_Track"."Done" := "gBlenderRinseMode" OR ("Procedure_Variables"."ProdBrix_Track"."Request" AND "mLatchONS" AND "Procedure_Variables"."ProdBrix_Track"."Latch");
|
|
|
|
// Network 16: Product Quality Monitor (Original Language: LAD)
|
|
// Product Quality Monitor
|
|
|
|
IF "mTakeSample" OR ("AUX FALSE" AND "mTakeProdSample") THEN
|
|
"mProdBrixStat"(i_Cols := "mProdBrixSample", i_Rows := 1, i_Value := "Blender_Variables"."gProductBrix");
|
|
END_IF;
|
|
|
|
// Network 17: Reset Take Sample (Original Language: LAD)
|
|
// Product Quality Monitor
|
|
|
|
IF "mTakeSample" THEN
|
|
"mTakeSample" := FALSE;
|
|
END_IF;
|
|
|
|
// Network 18: Reset Product Sample (Original Language: LAD)
|
|
// Product Quality Monitor
|
|
|
|
IF "mTakeProdSample" THEN
|
|
"mTakeProdSample" := FALSE;
|
|
END_IF;
|
|
|
|
END_FUNCTION_BLOCK
|
|
|
|
```
|