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

(*************** Rung **********************************)
(*Example 7.6 - Batch Control 
Start/stop/pause. Start prevented if reset in progress*)
__STEPPRAGMA
0,1
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB1 := _IO_EM_DI_00 AND NOT(_IO_EM_DI_02) ;
__EDTB2 := RUN ;
RUN := (__EDTB1 OR __EDTB2) AND _IO_EM_DI_01 AND NOT(STEP_8) ;

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


(*************** Rung **********************************)
(*Generate transition out of initial step into step 1*)
__STEPPRAGMA
0,4
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB3 := RUN AND NOT(STEP_1) AND NOT(STEP_1) AND NOT(STEP_2) AND NOT(STEP_3) AND NOT(STEP_4) AND NOT(STEP_5) AND NOT(STEP_6) AND NOT(STEP_7) AND NOT(STEP_8) ;
IF __EDTB3 THEN
(*Set coil*)
STEP_1 := TRUE ;
END_IF ;

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


(*************** Rung **********************************)
(*Step 1 - Prestart checks*)
__STEPPRAGMA
0,6
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB5 := STEP_1 ;
IF __EDTB5 THEN
(* Operator output on : < with __EDTB4 *)
__EDTB4 := (LT104_VAL < 0.1) ;
ELSE
__EDTB4 := FALSE ;
END_IF ;
__MO_LESS_1 := __EDTB4 ;
__EDTB7 := __EDTB4 ;
IF __EDTB7 THEN
(* Operator output on : < with __EDTB6 *)
__EDTB6 := (FIC101_PV < 0.1) ;
ELSE
__EDTB6 := FALSE ;
END_IF ;
__MO_LESS_2 := __EDTB6 ;
__EDTB9 := __EDTB6 ;
IF __EDTB9 THEN
(* Operator output on : < with __EDTB8 *)
__EDTB8 := (FIC102_PV < 0.1) ;
ELSE
__EDTB8 := FALSE ;
END_IF ;
__MO_LESS_3 := __EDTB8 ;
__EDTB11 := __EDTB8 ;
IF __EDTB11 THEN
(* Operator output on : < with __EDTB10 *)
__EDTB10 := (FIC101_ACC < 0.1) ;
ELSE
__EDTB10 := FALSE ;
END_IF ;
__MO_LESS_4 := __EDTB10 ;
__EDTB13 := __EDTB10 ;
IF __EDTB13 THEN
(* Operator output on : < with __EDTB12 *)
__EDTB12 := (FIC102_ACC < 0.1) ;
ELSE
__EDTB12 := FALSE ;
END_IF ;
__MO_LESS_5 := __EDTB12 ;
__EDTB14 := __EDTB12 ;
IF __EDTB14 THEN
(*Reset coil*)
STEP_1 := FALSE ;
END_IF ;
__EDTB15 := __EDTB12 ;
IF __EDTB15 THEN
(*Set coil*)
STEP_2 := TRUE ;
END_IF ;

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


(*************** Rung **********************************)
(*Step 2 - Add A*)
__STEPPRAGMA
0,10
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB17 := STEP_2 ;
IF __EDTB17 THEN
(* Operator output on : >= with __EDTB16 *)
__EDTB16 := (FIC101_ACC >= INGA_DES_AMT) ;
ELSE
__EDTB16 := FALSE ;
END_IF ;
__MO_GREATEQUAL_1 := __EDTB16 ;
__EDTB18 := __EDTB16 ;
IF __EDTB18 THEN
(*Reset coil*)
STEP_2 := FALSE ;
END_IF ;
__EDTB19 := __EDTB16 ;
IF __EDTB19 THEN
(*Set coil*)
STEP_3 := TRUE ;
END_IF ;

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


(*************** Rung **********************************)
(*Step 3 - Wait for A Shutoff*)
__STEPPRAGMA
0,14
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB21 := STEP_3 ;
IF __EDTB21 THEN
(* Operator output on : < with __EDTB20 *)
__EDTB20 := (FIC101_PV < 0.1) ;
ELSE
__EDTB20 := FALSE ;
END_IF ;
__MO_LESS_6 := __EDTB20 ;
__EDTB22 := __EDTB20 ;
IF __EDTB22 THEN
(*Reset coil*)
STEP_3 := FALSE ;
END_IF ;
__EDTB23 := __EDTB20 ;
IF __EDTB23 THEN
(*Set coil*)
STEP_4 := TRUE ;
END_IF ;

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


(*************** Rung **********************************)
(*Step 4 - Add B*)
__STEPPRAGMA
0,18
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB25 := STEP_4 ;
IF __EDTB25 THEN
(* Operator output on : >= with __EDTB24 *)
__EDTB24 := (FIC102_ACC >= INGB_DES_AMT) ;
ELSE
__EDTB24 := FALSE ;
END_IF ;
__MO_GREATEQUAL_2 := __EDTB24 ;
__EDTB26 := __EDTB24 ;
IF __EDTB26 THEN
(*Reset coil*)
STEP_4 := FALSE ;
END_IF ;
__EDTB27 := __EDTB24 ;
IF __EDTB27 THEN
(*Set coil*)
STEP_5 := TRUE ;
END_IF ;

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


(*************** Rung **********************************)
(*Step 5 - Wait for B Shutoff*)
__STEPPRAGMA
0,22
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB29 := STEP_5 ;
IF __EDTB29 THEN
(* Operator output on : < with __EDTB28 *)
__EDTB28 := (FIC102_PV < 0.1) ;
ELSE
__EDTB28 := FALSE ;
END_IF ;
__MO_LESS_7 := __EDTB28 ;
__EDTB30 := __EDTB28 ;
IF __EDTB30 THEN
(*Reset coil*)
STEP_5 := FALSE ;
END_IF ;
__EDTB31 := __EDTB28 ;
IF __EDTB31 THEN
(*Set coil*)
STEP_6 := TRUE ;
END_IF ;

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


(*************** Rung **********************************)
(*Step 6 - Agitate Fast*)
__STEPPRAGMA
0,26
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB32 := STEP_6 ;
IF __EDTB32 THEN
AGIT_TIME_MS := (AGIT_TIME * 3600000.0) ;
END_IF ;
__MO_MULT_1 := __EDTB32 ;
__EDTB33 := __EDTB32 ;
IF __EDTB33 THEN
AGIT_TIME_PT := ANY_TO_TIME(AGIT_TIME_MS) ;
END_IF ;
__MO_ANY_TO_TIME_1 := __EDTB33 ;
(* FB call: TON *)
Agit_Tmr(__EDTB33, AGIT_TIME_PT) ;
__EDTB34 := Agit_Tmr.Q AND RUN ;
__EDTB35 := __EDTB34 ;
IF __EDTB35 THEN
(*Reset coil*)
STEP_6 := FALSE ;
END_IF ;
__EDTB36 := __EDTB34 ;
IF __EDTB36 THEN
(*Set coil*)
STEP_7 := TRUE ;
END_IF ;

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


(*************** Rung **********************************)
(*Step 7 - Dump Tank*)
__STEPPRAGMA
0,30
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB38 := STEP_7 ;
IF __EDTB38 THEN
(* Operator output on : < with __EDTB37 *)
__EDTB37 := (LT104_VAL < 0.1) ;
ELSE
__EDTB37 := FALSE ;
END_IF ;
__MO_LESS_8 := __EDTB37 ;
__EDTB39 := __EDTB37 ;
IF __EDTB39 THEN
(*Reset coil*)
STEP_7 := FALSE ;
END_IF ;
__EDTB40 := __EDTB37 ;
IF __EDTB40 THEN
(*Set coil*)
STEP_8 := TRUE ;
END_IF ;

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


(*************** Rung **********************************)
(*Step 8 - Unlatch run*)
__STEPPRAGMA
0,34
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB41 := STEP_8 ;
IF __EDTB41 THEN
(*Reset coil*)
STEP_8 := FALSE ;
END_IF ;

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


(*************** Rung **********************************)
(*Convert level measurement into feet.*)
__STEPPRAGMA
0,36
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB42 := TRUE ;
IF __EDTB42 THEN
TEMP := ANY_TO_REAL(_IO_P2_AI_00) ;
END_IF ;
__MO_ANY_TO_REAL_1 := __EDTB42 ;
__EDTB43 := __EDTB42 ;
IF __EDTB43 THEN
(* FB call: SCALER *)
SCALER_LT104(TEMP, 13107.0, 65535.0, 1.0, 15.0) ;
LT428_VAL := SCALER_LT104.Output ;
END_IF ;
__MO_SCALER_1 := __EDTB43 ;

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


(*************** Rung **********************************)
(*Test of second Ana In*)
__STEPPRAGMA
0,43
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB44 := TRUE ;
IF __EDTB44 THEN
_IO_P3_AO_01 := ANY_TO_UINT(TEST_AO) ;
END_IF ;
__MO_ANY_TO_UINT_1 := __EDTB44 ;
__EDTB45 := __EDTB44 ;
IF __EDTB45 THEN
TEMP := ANY_TO_REAL(_IO_P2_AI_01) ;
END_IF ;
__MO_ANY_TO_REAL_2 := __EDTB45 ;

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


(*************** Rung **********************************)
(*Reset of accumulators in prestart step*)
__STEPPRAGMA
0,46
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB46 := STEP_1 ;
IF __EDTB46 THEN
FIC101_ACC := (  0.0) ;
END_IF ;
__MO_1GAIN_1 := __EDTB46 ;
__EDTB47 := __EDTB46 ;
IF __EDTB47 THEN
FIC102_ACC := (  0.0) ;
END_IF ;
__MO_1GAIN_2 := __EDTB47 ;

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


(*************** Rung **********************************)
(*FIC101 setpoint moves. Set to -2.0 except when filling A*)
__STEPPRAGMA
0,49
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB48 := STEP_2 ;
IF __EDTB48 THEN
FIC101_SP := (  INGA_DES_FLW) ;
END_IF ;
__MO_1GAIN_3 := __EDTB48 ;

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


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,52
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB49 := NOT(STEP_2) ;
IF __EDTB49 THEN
FIC101_SP := (  -2.0) ;
END_IF ;
__MO_1GAIN_4 := __EDTB49 ;

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


(*************** Rung **********************************)
(*FIC102 setpoint moves. Set to -2.0 except when filling B*)
__STEPPRAGMA
0,55
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB50 := STEP_4 ;
IF __EDTB50 THEN
FIC102_SP := (  INGB_DES_FLW) ;
END_IF ;
__MO_1GAIN_5 := __EDTB50 ;

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


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,58
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB51 := NOT(STEP_4) ;
IF __EDTB51 THEN
FIC102_SP := (  -2.0) ;
END_IF ;
__MO_1GAIN_6 := __EDTB51 ;

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


(*************** Rung **********************************)
(*Valve controls*)
__STEPPRAGMA
0,61
__ENDSTEPPRAGMA
(*Label :*)(**)
_IO_EM_DO_02 := STEP_2 AND RUN ;

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


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,63
__ENDSTEPPRAGMA
(*Label :*)(**)
_IO_EM_DO_03 := STEP_4 AND RUN ;

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


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,65
__ENDSTEPPRAGMA
(*Label :*)(**)
_IO_EM_DO_04 := STEP_7 AND RUN ;

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


(*************** Rung **********************************)
(*Pump controls*)
__STEPPRAGMA
0,67
__ENDSTEPPRAGMA
(*Label :*)(**)
_IO_EM_DO_05 := STEP_7 AND RUN ;

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


(*************** Rung **********************************)
(*Agitator controls*)
__STEPPRAGMA
0,69
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB52 := STEP_4 ;
__EDTB53 := STEP_5 ;
__EDTB54 := STEP_7 ;
__EDTB55 := (__EDTB53 OR __EDTB54) ;
_IO_EM_DO_00 := (__EDTB52 OR __EDTB55) ;

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


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,73
__ENDSTEPPRAGMA
(*Label :*)(**)
_IO_EM_DO_01 := STEP_6 ;

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


(*************** Rung **********************************)
(*Flow accumulators*)
__STEPPRAGMA
0,75
__ENDSTEPPRAGMA
(*Label :*)(**)
(* FB call: TON *)
Accum_Tmr(NOT(ACCUM_TMR.Q), T#1S) ;

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


(*************** 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 *)
(* __EDTB20 *)
(* __EDTB21 *)
(* __EDTB22 *)
(* __EDTB23 *)
(* __EDTB24 *)
(* __EDTB25 *)
(* __EDTB26 *)
(* __EDTB27 *)
(* __EDTB28 *)
(* __EDTB29 *)
(* __EDTB30 *)
(* __EDTB31 *)
(* __EDTB32 *)
(* __EDTB33 *)
(* __EDTB34 *)
(* __EDTB35 *)
(* __EDTB36 *)
(* __EDTB37 *)
(* __EDTB38 *)
(* __EDTB39 *)
(* __EDTB40 *)
(* __EDTB41 *)
(* __EDTB42 *)
(* __EDTB43 *)
(* __EDTB44 *)
(* __EDTB45 *)
(* __EDTB46 *)
(* __EDTB47 *)
(* __EDTB48 *)
(* __EDTB49 *)
(* __EDTB50 *)
(* __EDTB51 *)
(* __EDTB52 *)
(* __EDTB53 *)
(* __EDTB54 *)
(* __EDTB55 *)

