(****** QuickLD compiler *******************************)
(****** Copyright Rockwell Automation Canada, Ltd ******)
(****** ST *********************************************)

(*************** Rung **********************************)
(*Example 7.5 Simple level control with additional features*)
__STEPPRAGMA
0,1
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB1 := TRUE ;
IF __EDTB1 THEN
TEMP := ANY_TO_REAL(_IO_P2_AI_00) ;
END_IF ;
__MO_ANY_TO_REAL_1 := __EDTB1 ;
__EDTB2 := __EDTB1 ;
IF __EDTB2 THEN
(* FB call: SCALER *)
SCALER_LT428(TEMP, 13107.0, 65535.0, 1.0, 15.0) ;
LT428_VAL := SCALER_LT428.Output ;
END_IF ;
__MO_SCALER_1 := __EDTB2 ;

(*************** Code for the end of Rung **************)
__GL __LG0001 ;


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,8
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB4 := TRUE ;
IF __EDTB4 THEN
(* Operator output on : < with __EDTB3 *)
__EDTB3 := (LT428_VAL < T428_MIN) ;
ELSE
__EDTB3 := FALSE ;
END_IF ;
__MO_LESS_1 := __EDTB3 ;
__EDTB5 := __EDTB3 ;
__EDTB6 := _IO_EM_DO_00 ;
__EDTB8 := (__EDTB5 OR __EDTB6) ;
IF __EDTB8 THEN
(* Operator output on : <= with __EDTB7 *)
__EDTB7 := (LT428_VAL <= T428_MAX) ;
ELSE
__EDTB7 := FALSE ;
END_IF ;
__MO_LESSEQUAL_1 := __EDTB7 ;
_IO_EM_DO_00 := __EDTB7 AND T428_CNTRL ;

(*************** Code for the end of Rung **************)
__GL __LG0002 ;


(*************** Rung **********************************)
(*Additional features start here. 
Make sure LT428_MIN is at least 2.1 and no more than 13.4. If too low, set to 2.1. If too high, set to 13.4.*)
__STEPPRAGMA
0,13
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB10 := TRUE ;
IF __EDTB10 THEN
(* Operator output on : < with __EDTB9 *)
__EDTB9 := (T428_MIN < 2.1) ;
ELSE
__EDTB9 := FALSE ;
END_IF ;
__MO_LESS_2 := __EDTB9 ;
__EDTB11 := __EDTB9 ;
IF __EDTB11 THEN
T428_MIN := (  2.1) ;
END_IF ;
__MO_1GAIN_1 := __EDTB11 ;

(*************** Code for the end of Rung **************)
__GL __LG0003 ;


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,17
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB13 := TRUE ;
IF __EDTB13 THEN
(* Operator output on : > with __EDTB12 *)
__EDTB12 := (T428_MIN > 13.4) ;
ELSE
__EDTB12 := FALSE ;
END_IF ;
__MO_GREAT_1 := __EDTB12 ;
__EDTB14 := __EDTB12 ;
IF __EDTB14 THEN
T428_MIN := (  13.4) ;
END_IF ;
__MO_1GAIN_2 := __EDTB14 ;

(*************** Code for the end of Rung **************)
__GL __LG0004 ;


(*************** Rung **********************************)
(*Calculate minimum level*)
__STEPPRAGMA
0,21
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB15 := TRUE ;
IF __EDTB15 THEN
T428_MAX := (T428_MIN + 1.5) ;
END_IF ;
__MO_PLUS_1 := __EDTB15 ;

(*************** Code for the end of Rung **************)
__GL __LG0005 ;


(*************** Rung **********************************)
(*Low alarm lamo when level < 4 feet*)
__STEPPRAGMA
0,25
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB17 := TRUE ;
IF __EDTB17 THEN
(* Operator output on : < with __EDTB16 *)
__EDTB16 := (LT428_VAL < 4.0) ;
ELSE
__EDTB16 := FALSE ;
END_IF ;
__MO_LESS_3 := __EDTB16 ;
T428_LOLA := __EDTB16 ;

(*************** Code for the end of Rung **************)
__GL __LG0006 ;


(*************** Rung **********************************)
(*Lwevel , 2.0 activates horn.*)
__STEPPRAGMA
0,29
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB19 := TRUE ;
IF __EDTB19 THEN
(* Operator output on : < with __EDTB18 *)
__EDTB18 := (LT428_VAL < 2.0) ;
ELSE
__EDTB18 := FALSE ;
END_IF ;
__MO_LESS_4 := __EDTB18 ;
T428_HRN_ACT := __EDTB18 ;

(*************** Code for the end of Rung **************)
__GL __LG0007 ;


(*************** Rung **********************************)
(*Horn activated when level drops below 2.0 or has stayed below 2 for 5 minutes. Ack button silences it.*)
__STEPPRAGMA
0,33
__ENDSTEPPRAGMA
(*Label :*)(**)
; (*Pulse detection on : T428_HRN_ACT with __MEMO__1__T428_HRN_ACT *)
__EDTB20 := (T428_HRN_ACT AND NOT(__MEMO__1__T428_HRN_ACT)) ;
__EDTB21 := ACK_TMR.Q ;
__EDTB22 := _IO_EM_DO_02 AND NOT(ALM_ACK) ;
__EDTB23 := (__EDTB21 OR __EDTB22) ;
_IO_EM_DO_02 := (__EDTB20 OR __EDTB23) ;

(*************** Code for the end of Rung **************)
__GL __LG0008 ;
__MEMO__1__T428_HRN_ACT := T428_HRN_ACT ; (*Pulse detection on : T428_HRN_ACT with __MEMO__1__T428_HRN_ACT *)


(*************** Rung **********************************)
(*Time 5 minutes level stays below 2.0 after horn acknowledged.*)
__STEPPRAGMA
0,37
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB24 := ALM_ACK ;
__EDTB25 := ACK_TMR.REDGE ;
(* FB call: TON *)
Ack_Tmr((__EDTB24 OR __EDTB25) AND T428_HRN_ACT AND NOT(ACK_TMR.Q), T#5M) ;

(*************** Code for the end of Rung **************)
__GL __LG0009 ;


(*************** Code for the end of File **************)
__GL __LG0000 ;



(*************** Local Symbols table *******************)
(* __EDTB1 *)
(* __EDTB2 *)
(* __EDTB3 *)
(* __EDTB4 *)
(* __EDTB5 *)
(* __EDTB6 *)
(* __EDTB7 *)
(* __EDTB8 *)
(* __EDTB9 *)
(* __EDTB10 *)
(* __EDTB11 *)
(* __EDTB12 *)
(* __EDTB13 *)
(* __EDTB14 *)
(* __EDTB15 *)
(* __EDTB16 *)
(* __EDTB17 *)
(* __EDTB18 *)
(* __EDTB19 *)
(* __MEMO__1__T428_HRN_ACT *)
(* __EDTB20 *)
(* __EDTB21 *)
(* __EDTB22 *)
(* __EDTB23 *)
(* __EDTB24 *)
(* __EDTB25 *)

