FB39 OUT P01 : CEA Hydraulic Press - outputs

[hit  <- on your browser to return]

 

 

 

Netzwerk 1: Call manual operation

 

#MANUAL(ST_MANU := "M00 HYD OpraTest",

        MODULE_HP := "HMI KEY".P01.GLB.F20_HomPos,

        SUPPORT_SEQ := "M01 RunHomPos" OR "M00 Ram OTC" AND NOT "M00 HYD OpraTest");

 

 

 

Netzwerk 2: Pre-Setting

 

// Linear encoder front left (master)

#LinearEncoder_Master.PED_Pos := DWORD_TO_DINT(IN:=  "E01 AE13 Mstr");

#LinearEncoder_Master.ActPos_Dint := (#LinearEncoder_Master.PED_Pos / #LinearEncoder_Master.Resolution + #LinearEncoder_Master.OffSet) / #LinearEncoder_Master.LE_Factor;

#LinearEncoder_Master.ActPos_Real := DINT_TO_REAL(IN := #LinearEncoder_Master.ActPos_Dint);

// Linear encoder front right (slave 1)

#LinearEncoder_Slave1.PED_Pos := DWORD_TO_DINT(IN := "E01 AE13 Slv1");

#LinearEncoder_Slave1.ActPos_Dint := (#LinearEncoder_Slave1.PED_Pos / #LinearEncoder_Slave1.Resolution + #LinearEncoder_Slave1.OffSet) / #LinearEncoder_Slave1.LE_Factor;

#LinearEncoder_Slave1.ActPos_Real := DINT_TO_REAL(IN := #LinearEncoder_Slave1.ActPos_Dint);

// Linear encoder behind left (slave 2)

#LinearEncoder_Slave2.PED_Pos := DWORD_TO_DINT(IN := "E01 AE13 Slv2");

#LinearEncoder_Slave2.ActPos_Dint := (#LinearEncoder_Slave2.PED_Pos / #LinearEncoder_Slave2.Resolution + #LinearEncoder_Slave2.OffSet) / #LinearEncoder_Slave2.LE_Factor;

#LinearEncoder_Slave2.ActPos_Real := DINT_TO_REAL(IN := #LinearEncoder_Slave2.ActPos_Dint);

 

 

 

Netzwerk 3: Ram cam tolerance

 

// TDC reached

#MaPa.Support.TDC_reached :=

(#MaPa.Set_TDC_Pos - 100) < #LinearEncoder_Master.ActPos_Dint AND (#MaPa.Set_TDC_Pos + 100) > #LinearEncoder_Master.ActPos_Dint;

// Slow down before TDC reached

#MaPa.Support.Slow_TDC_reached := #LinearEncoder_Master.ActPos_Dint > #MaPa.Set_SlowTDC_Pos;

// Slow down before BDC reached

#MaPa.Support.Slow_BDC_reached := #LinearEncoder_Master.ActPos_Dint < #MaPa.Set_SlowBDC_Pos;

// BDC reached

#MaPa.Support.BDC_reached :=

(#MaPa.Set_BDC_Pos - 100) < #LinearEncoder_Master.ActPos_Dint AND (#MaPa.Set_BDC_Pos + 100) > #LinearEncoder_Master.ActPos_Dint;

// WS1 reached

#MaPa.Support.Slow_WS1_reached := #LinearEncoder_Master.ActPos_Dint < #MaPa.Set_WS1_Pos;

// WS2 reached

#MaPa.Support.WS2_reached := #LinearEncoder_Master.ActPos_Dint < #MaPa.Set_WS2_Pos;

// RRT reached

#MaPa.Support.RRT_reached := #LinearEncoder_Master.ActPos_Dint > #MaPa.Set_RRT_Pos;

// OTC reached

#MaPa.Support.OTC_reached := ABS_DINT(IN := #MaPa.Set_OTC_Pos - #LinearEncoder_Master.ActPos_Dint) < 200;

IF #MaPa.Support.OTC_reached AND "M00 Ram OTC" THEN

    #Save_OTC_reached := TRUE;

END_IF;

 

 

 

Netzwerk 4: M01 Oil control pump

 

IF "E01 HYD off" OR NOT "HMI KEY".P01.M01.F12_Enable_WP THEN

    #M01.DRV.CmdExe_WP := FALSE;

ELSIF "E01 HYD on" THEN

    #M01.DRV.CmdExe_WP := TRUE;

END_IF;

#M01(CMD_ONOFF := FALSE,

     FD_BACK := "E00 M01 Run",

     MCB := "E00 M01 MCB",

     ESTOP := "HMI KEY".P01.M01.F12_Enable_WP,

     ACK_FLT := "M00 ACK Imp",

     MOT_CW => "A00 M01 CR");

 

 

 

Netzwerk 5: M02 Main oil pump 1

 

#M02(CMD_ONOFF := #M01.DRV.DelyOn,

     FD_BACK := "E00 M02 Run",

     MCB := "E00 M02 MCB",

     ESTOP := "HMI KEY".P01.M02.F12_Enable_WP,

     ACK_FLT := "M00 ACK Imp",

     MOT_CW => "A00 M02 CR");

 

 

 

Netzwerk 6: M03 Main oil pump 2

 

#M03(CMD_ONOFF := #M02.DRV.DelyOn,

     FD_BACK := "E00 M03 Run",

     MCB := "E00 M03 MCB",

     ESTOP := "HMI KEY".P01.M03.F12_Enable_WP,

     ACK_FLT := "M00 ACK Imp",

     MOT_CW => "A00 M03 CR");

 

 

 

Netzwerk 7: RE04 Rotary encoder evaluation

 

#RE04(PED_IN := "E01 RE04 SLD":P,

      ADJUST_CMD := #RE04.Support.Adjustment_cmd,

      ADJUST_VAL := #RE04.Support.Adjustment_val,

      GEAR_NUM := 1,

      GEAR_DENO := 1,

      OFFSET := #RE04.Support.Off_Set,

      PAD_OUT => "E01 M04 SLD":P,

      ACT_VAL => #RE04.Support.Actual_Value);

 

#RE04_ActDiff_Val := #RE04.Support.Actual_Value - #RE04.Support.Adjustment_val;

 

 

 

Netzwerk 8: M04 Stroke limitation drive

 

#M04(CMD_ONOFF := FALSE,

     MCB := "E00 M04 MCB",

     HALT_10 := #RE04_ActDiff_Val <> 0 AND ("HMI KEY".P01.M04.F12_Enable_WP OR "HMI KEY".P01.M04.F11_Enable_HP),

     ACK_FLT := "M00 ACK FP",

     HW_IO_STS_W1 := "+0-M04~PROFINET-Schnittstelle~Standard_Telegramm_1",

     HW_IO_CMD_W1 := "+0-M04~PROFINET-Schnittstelle~Standard_Telegramm_1");

 

 

 

Netzwerk 9: C13 Ram control valve

 

"DIF_Main_Safety_RTG1".FB_SAFE_P01.C13_CmdExe_WP := #C13.CmdExe_WP;

#C13.LampWP := "A00 C13 WP";

"DIF_Main_Safety_RTG1".FB_SAFE_P01.C13_CmdExe_HP := #C13.CmdExe_HP;

#C13.LampHP := "A00 C13 HP";

 

IF #Save_Ram_WS2_reached AND #MaPa.Support.TDC_reached THEN

    #Save_Ram_TDC_reached := #Save_Ram_WS2_reached := FALSE;

    #C13.Current := #C13.Current + 1;

ELSIF #MaPa.Support.TDC_reached AND NOT #MaPa.Support.WS2_reached THEN

    #Save_Ram_TDC_reached := TRUE;

ELSIF #Save_Ram_TDC_reached AND #MaPa.Support.WS2_reached THEN

    #Save_Ram_WS2_reached := TRUE;

END_IF;

 

 

 

Netzwerk 10: Y09 Ram safety valve

 

"DIF_Main_Safety_RTG1".FB_SAFE_P01.Y09_CmdExe_WP := #Y09.CmdExe_WP;

#Y09.LampWP := "A00 Y09 WP";

 

 

 

Netzwerk 11: C27 Ram stow pin

 

#C27(CMD_WP := FALSE,

     CMD_HP := FALSE,

     FB_WP := "E00 C27 WP",

     FB_HP := "E00 C27 HP",

     RLS := TRUE,

     ACK_FLT := "M00 ACK Imp",

     VALV_WP => "A00 C27 WP",

     VALV_HP => "A00 C27 HP");

 

 

 

Netzwerk 12: Y01 Loading valve pressure maintenance at auxiliary tank (max 210 bar)

 

// 11QM1 WP when Max is not reached

IF #P113_PEW_SCAL.Support.Out_Scale >= #P113_PEW_SCAL.Support.High_Lim THEN

    #P113_PEW_SCAL.Support.CmdExe_WP := TRUE;

ELSIF #P113_PEW_SCAL.Support.Out_Scale <= #P113_PEW_SCAL.Support.High_Lim THEN

    #P113_PEW_SCAL.Support.CmdExe_WP := FALSE;

END_IF;

#Y01.LampWP := "A01 Y01 WP" := "HMI KEY".P01.Y01.F12_Enable_WP AND #Y01.CmdExe_WP AND NOT #P113_PEW_SCAL.Support.CmdExe_WP;

 

 

 

Netzwerk 13: Y02 Relief valve pressure maintenance at auxiliary tank (min 140 bar)

 

#Y02.LampWP := "A01 Y02 WP" := "HMI KEY".P01.Y02.F12_Enable_WP AND #Y02.CmdExe_WP;

 

 

 

Netzwerk 14: Y03 Ram pressure less down valve

 

#Y03.LampWP := "A01 Y03 WP" := "HMI KEY".P01.Y03.F12_Enable_WP AND #Y03.CmdExe_WP;

 

 

 

Netzwerk 15: Y04 Pressure less circulation valve

 

#Y04_TOF(IN := "HMI KEY".P01.Y04.F12_Enable_WP AND #Y04.CmdExe_WP OR #M01.DRV.LampWP,

         PT := t#22s);

#Y04.LampWP := "A01 Y04 WP" := #Y04_TOF.Q;

 

 

 

Netzwerk 16: Y05 Ram oil filling valve

 

#Y05.LampWP := "A01 Y05 HP" := "HMI KEY".P01.Y05.F12_Enable_WP AND #Y05.CmdExe_WP;

 

 

 

Netzwerk 17: Y08 Pressure standby valve

 

#Y08.LampWP := "A01 Y08 WP" := "HMI KEY".P01.Y08.F12_Enable_WP AND #Y08.CmdExe_WP;

 

 

 

Netzwerk 18: YF41E Volume flow set value 0-100% prop. valve

 

#YF41E_PAW_VALU.Support.HMI_WP := "A01 YF41E Enbl" :=

#YF41E_PAW_VALU.Support.CmdExe_WP AND "HMI KEY".P01.YF41E.F12_Enable_WP;

 

#YF41E_PAW_RAMP(RAMP_TRGT := #YF41E_PAW_RAMP.Support.Target,

                RAMP_STEEP := #YF41E_PAW_RAMP.Support.Steep,

                RAMP_OUT => #YF41E_PAW_RAMP.Support.OutPut);

#YF41E_PAW_VALU(REQ_VALUE := #YF41E_PAW_RAMP.Support.OutPut,

                H_LIM := 100.0,

                L_LIM := 0.0,

                OUT_PAW => "A01 YF41E PrV VF":P);

#YF41E_PAW_VALU.Support.HMI_ShowValu :=

INT_TO_REAL(IN := WORD_TO_INT(IN := "A01 YF41E PrV VF")) / #YF41E_PAW_VALU.Support.LimRawFac * #YF41E_PAW_VALU.Support.HMI_FactScal;

// Prop. valve automatically switching off by 0.0 value

IF #YF41E_PAW_VALU.Support.HMI_ShowValu = 0.0 THEN

    #YF41E_PAW_VALU.Support.CmdExe_WP := FALSE;

END_IF;

 

 

 

Netzwerk 19: YP42 Force set value prop. valve after pump 1+2

 

IF "M01 YP42 Linear CmdExe" THEN

    "Iinearization"(SET_POINT := #P421_PEW_SCAL_kN.Support.Out_Scale,

                    OUT_PUT => #YP42_PAW_RAMP.Support.OutPut);

    #YP42_PAW_VALU.Support.High_Lim := #MaPa.Max_Force_kN;

ELSE

    #YP42_PAW_VALU.Support.High_Lim := 100.0;

    #YP42_PAW_RAMP.Support.Target := #P421_PEW_SCAL_kN.Support.Out_Scale * 100.0 / #MaPa.Max_Force_kN;

END_IF;

IF #YP42_PAW_RAMP.Support.Selection = 0 THEN

    #YP42_PAW_RAMP.Support.Steep := #MaPa.Force_Soft_Ramp;

ELSIF #YP42_PAW_RAMP.Support.Selection = 1 THEN

    #YP42_PAW_RAMP.Support.Steep := #MaPa.Force_Middle_Ramp;

ELSIF #YP42_PAW_RAMP.Support.Selection = 2 THEN

    #YP42_PAW_RAMP.Support.Steep := #MaPa.Force_Hard_Ramp;

END_IF;

#YP42_PAW_RAMP(RAMP_TRGT := #YP42_PAW_RAMP.Support.Target,

               RAMP_STEEP := #YP42_PAW_RAMP.Support.Steep,

               RAMP_OUT => #YP42_PAW_RAMP.Support.OutPut);

#YP42_PAW_VALU(REQ_VALUE := #YP42_PAW_RAMP.Support.OutPut,

               H_LIM := #YP42_PAW_VALU.Support.High_Lim,

               L_LIM := 0.0,

               OUT_PAW => "A01 YP42 PrV Frc":P);

 

#YP42_PAW_VALU.Support.HMI_ShowValu :=

INT_TO_REAL(IN := WORD_TO_INT(IN := "A01 YP42 PrV Frc")) / #YP42_PAW_VALU.Support.LimRawFac * #YP42_PAW_VALU.Support.HMI_FactScal;

 

 

 

Netzwerk 20: YP43E Ram rapid traverse down prop. valve set point

 

IF #YP43E_PAW_RAMP.Support.Selection = 0 THEN

    #YP43E_PAW_RAMP.Support.Steep := #MaPa.Rpd_Strk_Soft_Ramp;

ELSIF #YP43E_PAW_RAMP.Support.Selection = 1 THEN

    #YP43E_PAW_RAMP.Support.Steep := #MaPa.Rpd_Strk_Middle_Ramp;

ELSIF #YP43E_PAW_RAMP.Support.Selection = 2 THEN

    #YP43E_PAW_RAMP.Support.Steep := #MaPa.Rpd_Strk_Hard_Ramp;

END_IF;

#YP43E_PAW_VALU.Support.HMI_WP := "A01 YP43E Enbl" :=

"HMI KEY".P01.YP43E.F12_Enable_WP AND #YP43E_PAW_VALU.Support.CmdExe_WP;

 

#YP43E_PAW_RAMP(RAMP_TRGT := #YP43E_PAW_RAMP.Support.Target,

                RAMP_STEEP := #YP43E_PAW_RAMP.Support.Steep,

                RAMP_OUT => #YP43E_PAW_RAMP.Support.OutPut);

#YP43E_PAW_VALU(REQ_VALUE := #YP43E_PAW_RAMP.Support.OutPut,

                H_LIM := 100.0,

                L_LIM := 0.0,

                OUT_PAW => "A01 YP43E PrV RTD":P);

#YP43E_PAW_VALU.Support.HMI_ShowValu :=

INT_TO_REAL(IN := WORD_TO_INT(IN := "A01 YP43E PrV RTD")) / #YP43E_PAW_VALU.Support.LimRawFac * #YP43E_PAW_VALU.Support.HMI_FactScal;

// Prop. valve automatically switching off by 0.0 value

IF #YP43E_PAW_VALU.Support.HMI_ShowValu = 0.0 THEN

    #YP43E_PAW_VALU.Support.CmdExe_WP := FALSE;

END_IF;

 

 

 

Netzwerk 21: P113 Pressure sensor at auxiliary oil tank P1=140bar P2=210bar

 

#P113_PEW_SCAL(PEW_IN := "E01 P113 Prsur AT":P,

               H_LIM := #P113_PEW_SCAL.Support.High_Lim,

               L_LIM := #P113_PEW_SCAL.Support.Low_Lim,

               PEW_SCALE => #P113_PEW_SCAL.Support.Out_Scale);

 

 

 

Netzwerk 22: T36 Oil temperature sensor

 

#T36_PEW_SCAL(PEW_IN := "E01 T36 PT100":P,

              H_LIM := 80.0,

              L_LIM := 0.0,

              PEW_SCALE => #T36_PEW_SCAL.Support.Out_Scale);

 

 

 

Netzwerk 23: P421 Pressure sensor at piston chamber sensor

 

#P421_PEW_SCAL_kN(PEW_IN := "E01 P421 Prsur PiCh":P,

                  H_LIM := 3150.0,

                  L_LIM := 0.0,

                  PEW_SCALE => #P421_PEW_SCAL_kN.Support.Out_Scale);

#P421_PEW_SCAL_BAR(PEW_IN := "E01 P421 Prsur PiCh":P,

                   H_LIM := 400.0,

                   L_LIM := 0.0,

                   PEW_SCALE => #P421_PEW_SCAL_BAR.Support.Out_Scale);

 

 

 

Netzwerk 24: P423 Pressure sensor at annular space (piston rod)

 

#P423_PEW_SCAL(PEW_IN := "E01 P423 Prsur AnSp":P,

               H_LIM := 400.0,

               L_LIM := 0.0,

               PEW_SCALE => #P423_PEW_SCAL.Support.Out_Scale);

 

 

 

Netzwerk 25: P4210 Pressure sensor after pump 1+2

 

#P4210_PEW_SCAL(PEW_IN := "E01 P4210 Prsur P1P2":P,

                H_LIM := 400.0,

                L_LIM := 0.0,

                PEW_SCALE => #P4210_PEW_SCAL.Support.Out_Scale);