FUNCTION_BLOCK FB 5000
TITLE =Tank Instrumentation
AUTHOR : WN
FAMILY : Tank
VERSION : 0.3
 
VAR_INPUT
  Level_Transmitter : INT ; 
  Temp_Transmitter : INT ; 
  LAHHH_dig_IN : BOOL ; 
  LAHH_dig_IN : BOOL ; 
  LAH_dig_IN : BOOL ; 
  LAL_dig_IN : BOOL ; 
  LALL_dig_IN : BOOL ; 
  LALLL_dig_IN : BOOL ; 
END_VAR
VAR_OUTPUT
  LAHHH_out : BOOL ; 
  LAHH_out : BOOL ; 
  LAH_out : BOOL ; 
  LAL_out : BOOL ; 
  LALL_out : BOOL ; 
  LALLL_out : BOOL ; 
  TAHHH_out : BOOL ; 
  TAHH_out : BOOL ; 
  TAH_out : BOOL ; 
  TAL_out : BOOL ; 
  TALL_out : BOOL ; 
  TALLL_out : BOOL ; 
  Level : REAL ; 
  Percent : REAL ; 
  next : BOOL ; 
END_VAR
VAR
  LAHHH_analog : REAL  := -1.000000e+000; 
  LAHH_analog : REAL  := -1.000000e+000; 
  LAH_analog : REAL  := -1.000000e+000; 
  LAL_analog : REAL  := -1.000000e+000; 
  LALL_analog : REAL  := -1.000000e+000; 
  LALLL_analog : REAL  := -1.000000e+000; 
  LAHHH_digital : BOOL ; 
  LAHH_digital : BOOL ; 
  LAH_digital : BOOL ; 
  LAL_digital : BOOL ; 
  LALL_digital : BOOL ; 
  LALLL_digital : BOOL ; 
  LAHHH_delay : S5TIME  := S5T#2S; 
  LAHH_delay : S5TIME  := S5T#2S; 
  LAH_delay : S5TIME  := S5T#2S; 
  LAL_delay : S5TIME  := S5T#2S; 
  LALL_delay : S5TIME  := S5T#2S; 
  LALLL_delay : S5TIME  := S5T#2S; 
  LAHHH_hysteresis : REAL  := 1.000000e+001; 
  LAHH_hysteresis : REAL  := 1.000000e+001; 
  LAH_hysteresis : REAL  := 1.000000e+001; 
  LAL_hysteresis : REAL  := 1.000000e+001; 
  LALL_hysteresis : REAL  := 1.000000e+001; 
  LALLL_hysteresis : REAL  := 1.000000e+001; 
  TAHHH : REAL  := -1.000000e+000; 
  TAHH : REAL  := -1.000000e+000; 
  TAH : REAL  := -1.000000e+000; 
  TAL : REAL  := -1.000000e+000; 
  TALL : REAL  := -1.000000e+000; 
  TALLL : REAL  := -1.000000e+000; 
  LAHHH_dig_enable : BOOL ; 
  LAHH_dig_enable : BOOL ; 
  LAH_dig_enable : BOOL ; 
  LAL_dig_enable : BOOL ; 
  LALL_dig_enable : BOOL ; 
  LALLL_dig_enable : BOOL ; 
  TAHHH_enable : BOOL ; 
  TAHH_enable : BOOL ; 
  TAH_enable : BOOL ; 
  TAL_enable : BOOL ; 
  TALL_enable : BOOL ; 
  TALLL_enable : BOOL ; 
  max_level : REAL  := 1.000000e+000; 
  min_level : REAL ; 
  max_temp : REAL  := 1.000000e+002; 
  min_temp : REAL ; 
  Timer1 : "TON"; 
  Timer2 : "TON"; 
  Timer3 : "TON"; 
  Timer4 : "TON"; 
  Timer5 : "TON"; 
  Timer6 : "TON"; 
END_VAR
VAR_TEMP
  Level_Transmitter_Merker : REAL ; 
  Merker1 : REAL ; 
  Merker2 : INT ; 
  TEMP13 : BOOL ; 
  Temp_Transmitter_Merker : REAL ; 
  delay1 : BOOL ; 
  delay2 : BOOL ; 
  delay3 : BOOL ; 
  delay4 : BOOL ; 
  delay5 : BOOL ; 
  delay6 : BOOL ; 
  hysteresis1 : REAL ; 
  hysteresis2 : REAL ; 
  hysteresis3 : REAL ; 
  hysteresis4 : REAL ; 
  hysteresis5 : REAL ; 
  hysteresis6 : REAL ; 
  Merker_Timer1 : BOOL ; 
  Merker2_Timer1 : BOOL ; 
  Merker_Timer2 : BOOL ; 
  Merker_Timer3 : BOOL ; 
  Merker_Timer4 : BOOL ; 
  Merker_Timer5 : BOOL ; 
  Merker_Timer6 : BOOL ; 
END_VAR
BEGIN
NETWORK
TITLE =Pre Transmitter & Pre Calculation
// Scale Level_Transmitter
      CALL FC   105 (
           IN                       := #Level_Transmitter,
           HI_LIM                   := #max_level,
           LO_LIM                   := #min_level,
           BIPOLAR                  := FALSE,
           RET_VAL                  := MW     0,
           OUT                      := #Level_Transmitter_Merker);
// Scale Temp_Transmitter
      CALL FC   105 (
           IN                       := #Temp_Transmitter,
           HI_LIM                   := #max_temp,
           LO_LIM                   := #min_temp,
           BIPOLAR                  := FALSE,
           RET_VAL                  := MW     8,
           OUT                      := #Temp_Transmitter_Merker);
//Load and Calulate the Level and the Percent
      L     #Level_Transmitter_Merker; 
      T     #Level; 
      L     #max_level; 
      L     1.000000e+003; 
      >=R   ; 
      SPB   M001; 
      L     #max_level; 
      L     1.000000e+002; 
      >=R   ; 
      SPB   M002; 
      L     #max_level; 
      L     1.000000e+001; 
      >=R   ; 
      SPB   M003; 
      L     #max_level; 
      L     1.000000e+000; 
      >=R   ; 
      SPB   M004; 
      L     #max_level; 
      L     1.000000e-001; 
      >=R   ; 
      SPB   M005; 
      L     #max_level; 
      L     1.000000e-002; 
      >=R   ; 
      SPB   M006; 
      L     #max_level; 
      L     1.000000e-003; 
      >=R   ; 
      SPB   M007; 
M001: NOP   0; 
      L     #Level; 
      L     1.000000e-001; 
      *R    ; 
      T     #Percent; 
      SPA   M008; 
// aus platzgründen entfernt. Prozent umrechnungen
M007: NOP   0; 
      L     #Level; 
      L     1.000000e+005; 
      *R    ; 
      T     #Percent; 
      SPA   M008; 
M008: NOP   0; 
 
//Set the delay function
      L     #LAHHH_delay; 
      L     0; 
      >I    ; 
      =     #delay1; 
      L     #LAHH_delay; 
      L     0; 
      >I    ; 
      =     #delay2; 
      L     #LAH_delay; 
      L     0; 
      >I    ; 
      =     #delay3; 
      L     #LAL_delay; 
      L     0; 
      >I    ; 
      =     #delay4; 
      L     #LALL_delay; 
      L     0; 
      >I    ; 
      =     #delay5; 
      L     #LALLL_delay; 
      L     0; 
      >I    ; 
      =     #delay6; 
//Set the hysteresis
      L     #LAHHH_hysteresis; 
      L     1.000000e+002; 
      /R    ; 
      L     #max_level; 
      *R    ; 
      L     #LAHHH_analog; 
      TAK   ; 
      -R    ; 
      T     #hysteresis1; 
      L     #LAHH_hysteresis; 
      L     1.000000e+002; 
      /R    ; 
      L     #max_level; 
      *R    ; 
      L     #LAHH_analog; 
      TAK   ; 
      -R    ; 
      T     #hysteresis2; 
      L     #LAH_hysteresis; 
      L     1.000000e+002; 
      /R    ; 
      L     #max_level; 
      *R    ; 
      L     #LAH_analog; 
      TAK   ; 
      -R    ; 
      T     #hysteresis3; 
      L     #LAL_hysteresis; 
      L     1.000000e+002; 
      /R    ; 
      L     #max_level; 
      *R    ; 
      L     #LAL_analog; 
      TAK   ; 
      +R    ; 
      T     #hysteresis4; 
      L     #LALL_hysteresis; 
      L     1.000000e+002; 
      /R    ; 
      L     #max_level; 
      *R    ; 
      L     #LALL_analog; 
      TAK   ; 
      +R    ; 
      T     #hysteresis5; 
      L     #LALLL_hysteresis; 
      L     1.000000e+002; 
      /R    ; 
      L     #max_level; 
      *R    ; 
      L     #LALLL_analog; 
      TAK   ; 
      +R    ; 
      T     #hysteresis6; 
 
NETWORK
TITLE =Mixing + Temperature ( Konfiguration 3) - Analog + digital
 
M015: NOP   0; 
      L     -1.000000e+000; 
      L     #LAHHH_analog; 
      >=R   ; 
      SPB   M030; 
      L     #Level_Transmitter_Merker; 
      L     #LAHHH_analog; 
      >=R   ; 
      L     #LAHHH_delay; 
      SE    "Delay_Timer_HHH_analog"; 
      U     "Delay_Timer_HHH_analog"; 
      S     #LAHHH_out; 
 
// Neu ausgetestet
//      S     #Merker_Timer1
//      CALL  FC   500
//       Input :=#Merker_Timer1
//       Zeit  :=#LAHHH_delay
//       Output:=#Merker2_Timer1
//      U     #Merker2_Timer1
//      S     #LAHHH_out
//      CALL  "TON" , DB2
//       IN:=#Merker_Timer1
//       PT:=#LAHHH_delay
//       Q :=#LAHHH_out
//       ET:=
      L     #Level_Transmitter_Merker; 
      L     #hysteresis1; 
      <=R   ; 
      R     #LAHHH_out; 
 
M030: NOP   0; 
      L     -1.000000e+000; 
      L     #LAHH_analog; 
      >=R   ; 
      SPB   M031; 
      L     #Level_Transmitter_Merker; 
      L     #LAHH_analog; 
      >=R   ; 
      S     #LAHH_out; 
 
//      CALL  #Timer2
//       IN:=#Merker_Timer2
//       PT:=#LAHH_delay
//       Q :=#LAHH_out
//       ET:=
      L     #Level_Transmitter_Merker; 
      L     #hysteresis2; 
      <=R   ; 
      R     #LAHH_out; 
M031: NOP   0; 
      L     -1.000000e+000; 
      L     #LAH_analog; 
      >=R   ; 
      SPB   M032; 
      L     #Level_Transmitter_Merker; 
      L     #LAH_analog; 
      >=R   ; 
      S     #LAH_out; 
//      CALL  #Timer3
//       IN:=#Merker_Timer3
//       PT:=#LAH_delay
//       Q :=#LAH_out
//       ET:=
      L     #Level_Transmitter_Merker; 
      L     #hysteresis3; 
      <=R   ; 
      R     #LAH_out; 
M032: NOP   0; 
      L     -1.000000e+000; 
      L     #LAL_analog; 
      >=R   ; 
      SPB   M033; 
      L     #Level_Transmitter_Merker; 
      L     #LAL_analog; 
      <=R   ; 
      S     #Merker_Timer4; 
//      CALL  #Timer4
//       IN:=#Merker_Timer4
//       PT:=#LAL_delay
//       Q :=#LAL_out
//       ET:=
      L     #Level_Transmitter_Merker; 
      L     #hysteresis4; 
      >=R   ; 
      R     #Merker_Timer4; 
M033: NOP   0; 
      L     -1.000000e+000; 
      L     #LALL_analog; 
      >=R   ; 
      SPB   M034; 
      L     #Level_Transmitter_Merker; 
      L     #LALL_analog; 
      <=R   ; 
      S     #Merker_Timer5; 
//      CALL  #Timer5
//       IN:=#Merker_Timer5
//       PT:=#LALL_delay
//       Q :=#LALL_out
//       ET:=
      L     #Level_Transmitter_Merker; 
      L     #hysteresis5; 
      >=R   ; 
      R     #Merker_Timer5; 
M034: NOP   0; 
      L     -1.000000e+000; 
      L     #LALLL_analog; 
      >=R   ; 
      SPB   M035; 
      L     #Level_Transmitter_Merker; 
      L     #LALLL_analog; 
      <=R   ; 
      S     #Merker_Timer6; 
//      CALL  #Timer6
//       IN:=#Merker_Timer6
//       PT:=#LALLL_delay
//       Q :=#LALLL_out
//       ET:=
      L     #Level_Transmitter_Merker; 
      L     #hysteresis6; 
      >=R   ; 
      R     #Merker_Timer6; 
M035: NOP   0; 
      S     #next; 
      BE    ; 
END_FUNCTION_BLOCK