Obsidean_VM/04-SIDEL/06 - E5.007363 - Modifica O.../Source/source/PID_RVN302.md

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