```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 ```