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

(*************** Rung **********************************)
(*Modbus masster command 03, read register 400000 to 400099 into local_DATA*)
__STEPPRAGMA
0,1
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB1 := NOT(FLAGERR) ;
__EDTB2 := _IO_EM_DI_00 ;
(* FB call: MSG_MODBUS *)
MSG_MODBUS_1((__EDTB1 OR __EDTB2), FALSE, MODCFG, STARTPARA, LOCALDATA, 0) ;
FLAGERR := MSG_MODBUS_1.Error ;
ERRID := MSG_MODBUS_1.ErrorID ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(*Retrieve on top platform status to 16 bits global variable statusP0, and setpoint to 16 bits global variable setpointP0. status address:400008 (PLC 400090), setpoint address: 400011(PLC 400012) Copy scale status from buffer [8] to statusP0
Copy scale se*)
__STEPPRAGMA
0,8
__ENDSTEPPRAGMA
(*Label :*)(**)
(* FB call: COP *)
CP_V9_STATUS_16(TRUE, LOCALDATA, 8, STATUSP0, 0, 1, FALSE, , , , ) ;
__MO_COP_1 := TRUE ;
(* FB call: COP *)
CP_V9_SETPOINT_16(TRUE, LOCALDATA, 11, SETPOINTP0, 0, 1, FALSE, 0, 0, 0, 0) ;
__MO_COP_2 := TRUE ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(* 32 bits statusP0_DINT and setpointP0_DINT
Micro830 PLC only support 32 bits AND operation, create 32 bits DINT for latrer compare operations *)
__STEPPRAGMA
0,20
__ENDSTEPPRAGMA
(*Label :*)(**)
(* FB call: COP *)
CP_V9_STATUS_32(TRUE, LOCALDATA, 8, VAR0, 0, 1, FALSE, , , , ) ;
__MO_COP_3 := TRUE ;
__EDTB3 := TRUE ;
IF __EDTB3 THEN
STATUSP0_DINT := SHR(VAR0, 16) ;
END_IF ;
__MO_SHR_1 := __EDTB3 ;
(* FB call: COP *)
CP_V9_SETPOINT_32(__EDTB3, LOCALDATA, 11, VAR1, 0, 1, FALSE, 0, 0, 0, 0) ;
__MO_COP_4 := __EDTB3 ;
__EDTB4 := __EDTB3 ;
IF __EDTB4 THEN
SETPOINTP0_DINT := SHR(VAR1, 16) ;
END_IF ;
__MO_SHR_2 := __EDTB4 ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(* setpoint
set LC30 O-00  for setpoint #1 output
*)
__STEPPRAGMA
0,32
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB5 := TRUE ;
IF __EDTB5 THEN
VARS1 := AND_MASK(SETPOINTP0_DINT, 16#0001) ;
END_IF ;
__MO_AND_MASK_1 := __EDTB5 ;
__EDTB7 := __EDTB5 ;
IF __EDTB7 THEN
(* Operator output on : <> with __EDTB6 *)
__EDTB6 := (VARS1 <> 0) ;
ELSE
__EDTB6 := FALSE ;
END_IF ;
__MO_DIFF_1 := __EDTB6 ;
_IO_EM_DO_00 := __EDTB6 ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(* setpoint
set LC30 O-01  for setpoint #2 output
*)
__STEPPRAGMA
0,36
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB8 := TRUE ;
IF __EDTB8 THEN
VARS2 := AND_MASK(SETPOINTP0_DINT, 16#0002) ;
END_IF ;
__MO_AND_MASK_2 := __EDTB8 ;
__EDTB10 := __EDTB8 ;
IF __EDTB10 THEN
(* Operator output on : <> with __EDTB9 *)
__EDTB9 := (VARS2 <> 0) ;
ELSE
__EDTB9 := FALSE ;
END_IF ;
__MO_DIFF_2 := __EDTB9 ;
_IO_EM_DO_01 := __EDTB9 ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(* setpoint
set LC30 O-02  for setpoint #3 output
*)
__STEPPRAGMA
0,40
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB11 := TRUE ;
IF __EDTB11 THEN
VARS3 := AND_MASK(SETPOINTP0_DINT, 16#0004) ;
END_IF ;
__MO_AND_MASK_3 := __EDTB11 ;
__EDTB13 := __EDTB11 ;
IF __EDTB13 THEN
(* Operator output on : <> with __EDTB12 *)
__EDTB12 := (VARS3 <> 0) ;
ELSE
__EDTB12 := FALSE ;
END_IF ;
__MO_DIFF_3 := __EDTB12 ;
_IO_EM_DO_02 := __EDTB12 ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(* setpoint
set LC30 O-03  for setpoint #4 output
*)
__STEPPRAGMA
0,44
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB14 := TRUE ;
IF __EDTB14 THEN
VARS4 := AND_MASK(SETPOINTP0_DINT, 16#0008) ;
END_IF ;
__MO_AND_MASK_4 := __EDTB14 ;
__EDTB16 := __EDTB14 ;
IF __EDTB16 THEN
(* Operator output on : <> with __EDTB15 *)
__EDTB15 := (VARS4 <> 0) ;
ELSE
__EDTB15 := FALSE ;
END_IF ;
__MO_DIFF_4 := __EDTB15 ;
_IO_EM_DO_03 := __EDTB15 ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(* 5.0 update setpoint local variable
setpoint_00 for setpoint #1
*)
__STEPPRAGMA
0,48
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB17 := TRUE ;
IF __EDTB17 THEN
VARS1 := AND_MASK(SETPOINTP0_DINT, 16#0001) ;
END_IF ;
__MO_AND_MASK_5 := __EDTB17 ;
__EDTB19 := __EDTB17 ;
IF __EDTB19 THEN
(* Operator output on : <> with __EDTB18 *)
__EDTB18 := (VARS1 <> 0) ;
ELSE
__EDTB18 := FALSE ;
END_IF ;
__MO_DIFF_5 := __EDTB18 ;
__EDTB20 := __EDTB18 ;
IF __EDTB20 THEN
(*Set coil*)
SETPOINT_00 := TRUE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,52
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB22 := TRUE ;
IF __EDTB22 THEN
(* Operator output on : = with __EDTB21 *)
__EDTB21 := (VARS1 = 0) ;
ELSE
__EDTB21 := FALSE ;
END_IF ;
__MO_EQUAL_1 := __EDTB21 ;
__EDTB23 := __EDTB21 ;
IF __EDTB23 THEN
(*Reset coil*)
SETPOINT_00 := FALSE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(* 5.0 update setpoint local variable
setpoint_01 for setpoint #2
*)
__STEPPRAGMA
0,56
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB24 := TRUE ;
IF __EDTB24 THEN
VARS2 := AND_MASK(SETPOINTP0_DINT, 16#0002) ;
END_IF ;
__MO_AND_MASK_6 := __EDTB24 ;
__EDTB26 := __EDTB24 ;
IF __EDTB26 THEN
(* Operator output on : <> with __EDTB25 *)
__EDTB25 := (VARS2 <> 0) ;
ELSE
__EDTB25 := FALSE ;
END_IF ;
__MO_DIFF_6 := __EDTB25 ;
__EDTB27 := __EDTB25 ;
IF __EDTB27 THEN
(*Set coil*)
SETPOINT_01 := TRUE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,60
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB29 := TRUE ;
IF __EDTB29 THEN
(* Operator output on : = with __EDTB28 *)
__EDTB28 := (VARS2 = 0) ;
ELSE
__EDTB28 := FALSE ;
END_IF ;
__MO_EQUAL_2 := __EDTB28 ;
__EDTB30 := __EDTB28 ;
IF __EDTB30 THEN
(*Reset coil*)
SETPOINT_01 := FALSE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(* 5.0 update setpoint local variable
setpoint_02 for setpoint #3
*)
__STEPPRAGMA
0,64
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB31 := TRUE ;
IF __EDTB31 THEN
VARS3 := AND_MASK(SETPOINTP0_DINT, 16#0004) ;
END_IF ;
__MO_AND_MASK_7 := __EDTB31 ;
__EDTB33 := __EDTB31 ;
IF __EDTB33 THEN
(* Operator output on : <> with __EDTB32 *)
__EDTB32 := (VARS3 <> 0) ;
ELSE
__EDTB32 := FALSE ;
END_IF ;
__MO_DIFF_7 := __EDTB32 ;
__EDTB34 := __EDTB32 ;
IF __EDTB34 THEN
(*Set coil*)
SETPOINT_02 := TRUE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,68
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB36 := TRUE ;
IF __EDTB36 THEN
(* Operator output on : = with __EDTB35 *)
__EDTB35 := (VARS3 = 0) ;
ELSE
__EDTB35 := FALSE ;
END_IF ;
__MO_EQUAL_3 := __EDTB35 ;
__EDTB37 := __EDTB35 ;
IF __EDTB37 THEN
(*Reset coil*)
SETPOINT_02 := FALSE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(* 5.0 update setpoint local variable
setpoint_03 for setpoint #4
*)
__STEPPRAGMA
0,72
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB38 := TRUE ;
IF __EDTB38 THEN
VARS4 := AND_MASK(SETPOINTP0_DINT, 16#0008) ;
END_IF ;
__MO_AND_MASK_8 := __EDTB38 ;
__EDTB40 := __EDTB38 ;
IF __EDTB40 THEN
(* Operator output on : <> with __EDTB39 *)
__EDTB39 := (VARS4 <> 0) ;
ELSE
__EDTB39 := FALSE ;
END_IF ;
__MO_DIFF_8 := __EDTB39 ;
__EDTB41 := __EDTB39 ;
IF __EDTB41 THEN
(*Set coil*)
SETPOINT_03 := TRUE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,76
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB43 := TRUE ;
IF __EDTB43 THEN
(* Operator output on : = with __EDTB42 *)
__EDTB42 := (VARS4 = 0) ;
ELSE
__EDTB42 := FALSE ;
END_IF ;
__MO_EQUAL_4 := __EDTB42 ;
__EDTB44 := __EDTB42 ;
IF __EDTB44 THEN
(*Reset coil*)
SETPOINT_03 := FALSE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(*5.0 update setpoint local variable setpoint_03 for setpoint #4*)
__STEPPRAGMA
0,80
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB45 := TRUE ;
IF __EDTB45 THEN
VARS5 := AND_MASK(SETPOINTP0_DINT, 16#0010) ;
END_IF ;
__MO_AND_MASK_9 := __EDTB45 ;
__EDTB47 := __EDTB45 ;
IF __EDTB47 THEN
(* Operator output on : <> with __EDTB46 *)
__EDTB46 := (VARS5 <> 0) ;
ELSE
__EDTB46 := FALSE ;
END_IF ;
__MO_DIFF_9 := __EDTB46 ;
__EDTB48 := __EDTB46 ;
IF __EDTB48 THEN
(*Set coil*)
SETPOINT_04 := TRUE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,84
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB50 := TRUE ;
IF __EDTB50 THEN
(* Operator output on : = with __EDTB49 *)
__EDTB49 := (VARS5 = 0) ;
ELSE
__EDTB49 := FALSE ;
END_IF ;
__MO_EQUAL_5 := __EDTB49 ;
__EDTB51 := __EDTB49 ;
IF __EDTB51 THEN
(*Reset coil*)
SETPOINT_04 := FALSE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(*5.0 update setpoint local variable setpoint_03 for setpoint #4*)
__STEPPRAGMA
0,88
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB52 := TRUE ;
IF __EDTB52 THEN
VARS6 := AND_MASK(SETPOINTP0_DINT, 16#0020) ;
END_IF ;
__MO_AND_MASK_10 := __EDTB52 ;
__EDTB54 := __EDTB52 ;
IF __EDTB54 THEN
(* Operator output on : <> with __EDTB53 *)
__EDTB53 := (VARS6 <> 0) ;
ELSE
__EDTB53 := FALSE ;
END_IF ;
__MO_DIFF_10 := __EDTB53 ;
__EDTB55 := __EDTB53 ;
IF __EDTB55 THEN
(*Set coil*)
SETPOINT_05 := TRUE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,92
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB57 := TRUE ;
IF __EDTB57 THEN
(* Operator output on : = with __EDTB56 *)
__EDTB56 := (VARS6 = 0) ;
ELSE
__EDTB56 := FALSE ;
END_IF ;
__MO_EQUAL_6 := __EDTB56 ;
__EDTB58 := __EDTB56 ;
IF __EDTB58 THEN
(*Reset coil*)
SETPOINT_05 := FALSE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(*5.0 update setpoint local variable setpoint_03 for setpoint #4*)
__STEPPRAGMA
0,96
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB59 := TRUE ;
IF __EDTB59 THEN
VARS7 := AND_MASK(SETPOINTP0_DINT, 16#0040) ;
END_IF ;
__MO_AND_MASK_11 := __EDTB59 ;
__EDTB61 := __EDTB59 ;
IF __EDTB61 THEN
(* Operator output on : <> with __EDTB60 *)
__EDTB60 := (VARS7 <> 0) ;
ELSE
__EDTB60 := FALSE ;
END_IF ;
__MO_DIFF_11 := __EDTB60 ;
__EDTB62 := __EDTB60 ;
IF __EDTB62 THEN
(*Set coil*)
SETPOINT_06 := TRUE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,100
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB64 := TRUE ;
IF __EDTB64 THEN
(* Operator output on : = with __EDTB63 *)
__EDTB63 := (VARS7 = 0) ;
ELSE
__EDTB63 := FALSE ;
END_IF ;
__MO_EQUAL_7 := __EDTB63 ;
__EDTB65 := __EDTB63 ;
IF __EDTB65 THEN
(*Reset coil*)
SETPOINT_06 := FALSE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(*5.0 update setpoint local variable setpoint_03 for setpoint #4*)
__STEPPRAGMA
0,104
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB66 := TRUE ;
IF __EDTB66 THEN
VARS8 := AND_MASK(SETPOINTP0_DINT, 16#0080) ;
END_IF ;
__MO_AND_MASK_12 := __EDTB66 ;
__EDTB68 := __EDTB66 ;
IF __EDTB68 THEN
(* Operator output on : <> with __EDTB67 *)
__EDTB67 := (VARS8 <> 0) ;
ELSE
__EDTB67 := FALSE ;
END_IF ;
__MO_DIFF_12 := __EDTB67 ;
__EDTB69 := __EDTB67 ;
IF __EDTB69 THEN
(*Set coil*)
SETPOINT_07 := TRUE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,108
__ENDSTEPPRAGMA
(*Label :*)(**)
__EDTB71 := TRUE ;
IF __EDTB71 THEN
(* Operator output on : = with __EDTB70 *)
__EDTB70 := (VARS8 = 0) ;
ELSE
__EDTB70 := FALSE ;
END_IF ;
__MO_EQUAL_8 := __EDTB70 ;
__EDTB72 := __EDTB70 ;
IF __EDTB72 THEN
(*Reset coil*)
SETPOINT_07 := FALSE ;
END_IF ;

(*************** Code for the end of Rung **************)


(*************** Rung **********************************)
(**)
__STEPPRAGMA
0,112
__ENDSTEPPRAGMA
(*Label :*)(**)

(*************** Code for the end of Rung **************)


(*************** 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 *)
(* __EDTB56 *)
(* __EDTB57 *)
(* __EDTB58 *)
(* __EDTB59 *)
(* __EDTB60 *)
(* __EDTB61 *)
(* __EDTB62 *)
(* __EDTB63 *)
(* __EDTB64 *)
(* __EDTB65 *)
(* __EDTB66 *)
(* __EDTB67 *)
(* __EDTB68 *)
(* __EDTB69 *)
(* __EDTB70 *)
(* __EDTB71 *)
(* __EDTB72 *)

