DUTs

GVLs

GVL

VAR_GLOBAL

    /// User Memory Variables

    // upstream vacuum ok
//  g_ixUSVacOK      :      BOOL; //upstream vacuum OK
//  i_xDSVacOK       :      BOOL; //downstream vacuum OK should this be XCSVacOK?
    g_ixDSVacOK      :      BOOL;   // downstream vacuum OK
    q_xXCS_MPSOK :  BOOL; //XCS gate valves all at open position
    //i_xXCS_ppsStopperPos_Out : BOOL;
    //i_xXCS_ppsStopperPos_In  : BOOL;
    //q_xXCS_preS45_MPSOK      : BOOL;

    q_xXCS_VGC_OK : BOOL;
    g_xFirstPass  : BOOL :=TRUE;
    g_xIOState        :     BOOL; //Used to confirm operation of the fieldbus
    g_xNoHFXPLCResponse : BOOL := TRUE;

    LOTO: BOOL := TRUE;
    xLOTO_Override: BOOL := TRUE;
    /// test mb_Input_Coils[0] with "modpoll -r 32769 -t 1 127.0.0.1"
    mb_Input_Coils: ARRAY[0..255] OF BOOL;
    /// test mb_Output_Coils[0] with "modpoll -r 32769 -t 0 127.0.0.1"
    mb_Output_Coils: ARRAY[0..255] OF BOOL;
    /// test mb_Input_Registers[0] with "modpoll -r 32769 -t 3 127.0.0.1"
    mb_Input_Registers: ARRAY[0..255] OF WORD;
    /// test mb_Output_Registers[0] with "modpoll -r 32769 -t 4 127.0.0.1"
    mb_Output_Registers: ARRAY[0..255] OF WORD;
    /// test mb_PLC_Memory[0] with "modpoll -r 12289 -t 4 127.0.0.1"
    mb_PLC_Memory AT %MW0: ARRAY[0..1000] OF WORD;

END_VAR

GVL_IO

VAR_GLOBAL
    //Need to change these to reflect XCS stands and stuff

/// AMS NetID
    g_aEcatMaster1 AT %I* : AMSNETID;

    (* Generic PLC Rail *)
    i_iR32_31el3064s01c01 AT %I*: INT;
    i_iR32_31el3064s01c02 AT %I*: INT;
    i_iR32_31el3064s01c03 AT %I*: INT;
    i_iR32_31el3064s01c04 AT %I*: INT;

    i_xR32_31el1008s02c01 AT %I*: BOOL;
    i_xR32_31el1008s02c02 AT %I*: BOOL;
    i_xR32_31el1008s02c03 AT %I*: BOOL;
    i_xR32_31el1008s02c04 AT %I*: BOOL;
    i_xR32_31el1008s02c05 AT %I*: BOOL;
    i_xR32_31el1008s02c06 AT %I*: BOOL;
    i_xR32_31el1008s02c07 AT %I*: BOOL;
    i_xR32_31el1008s02c08 AT %I*: BOOL;

    q_xR32_31el2008s03c01 AT %Q*: BOOL;
    q_xR32_31el2008s03c02 AT %Q*: BOOL;
    q_xR32_31el2008s03c03 AT %Q*: BOOL;
    q_xR32_31el2008s03c04 AT %Q*: BOOL;
    q_xR32_31el2008s03c05 AT %Q*: BOOL;
    q_xR32_31el2008s03c06 AT %Q*: BOOL;
    q_xR32_31el2008s03c07 AT %Q*: BOOL;
    q_xR32_31el2008s03c08 AT %Q*: BOOL;

    q_xR32_31el2798s04c01 AT %Q*: BOOL;
    q_xR32_31el2798s04c02 AT %Q*: BOOL;
    q_xR32_31el2798s04c03 AT %Q*: BOOL;
    q_xR32_31el2798s04c04 AT %Q*: BOOL;
    q_xR32_31el2798s04c05 AT %Q*: BOOL;
    q_xR32_31el2798s04c06 AT %Q*: BOOL;
    q_xR32_31el2798s04c07 AT %Q*: BOOL;

    (* Perimeter valve before LODCM XRT Stand IDNO 63*)
    i_xS63_EB1_ep2338c01 AT %I* : BOOL;
    i_xS63_EB1_ep2338c02 AT %I* : BOOL;
    q_xS63_EB1_ep2338c03 AT %Q* : BOOL;
    q_xS63_EB1_ep2338c04 AT %Q* : BOOL;
    i_xS63_EB1_ep2338c05 AT %I* : BOOL;
    i_xS63_EB1_ep2338c06 AT %I* : BOOL;
    q_xS63_EB1_ep2338c07 AT %Q* : BOOL;
    q_xS63_EB1_ep2338c08 AT %Q* : BOOL;

    (* Gauges at perimeter XRT Stand IDNO 83*)
    i_iS83_EB1_ep3174c01 AT %I* : INT;
    i_iS83_EB1_ep3174c02 AT %I* : INT;
    i_iS83_EB1_ep3174c03 AT %I* : INT;
    i_iS83_EB1_ep3174c04 AT %I* : INT;

    q_xS83_EB2_ep2624c01 AT %Q* : BOOL;
    q_xS83_EB2_ep2624c02 AT %Q* : BOOL;
    q_xS83_EB2_ep2624c03 AT %Q* : BOOL;
    q_xS83_EB2_ep2624c04 AT %Q* : BOOL;

        (* XRT Stand IDNO 26 *)
    q_xs26_EB1_ep2338c01 AT %Q* : BOOL;
    i_xs26_EB1_ep2338c02 AT %I* : BOOL;
    q_xs26_EB1_ep2338c03 AT %Q* : BOOL;
    q_xs26_EB1_ep2338c04 AT %Q* : BOOL;
    i_xs26_EB1_ep2338c05 AT %I* : BOOL;
    i_xs26_EB1_ep2338c06 AT %I* : BOOL;
    q_xs26_EB1_ep2338c07 AT %Q* : BOOL;
    q_xs26_EB1_ep2338c08 AT %Q* : BOOL;

        (* XRT Stand IDNO 80 *)
    i_xs80_EB1_ep2338c01 AT %I* : BOOL;
    i_xs80_EB1_ep2338c02 AT %I* : BOOL;
    q_xs80_EB1_ep2338c03 AT %Q* : BOOL;
    q_xs80_EB1_ep2338c04 AT %Q* : BOOL;
    i_xs80_EB1_ep2338c05 AT %I* : BOOL;
    i_xs80_EB1_ep2338c06 AT %I* : BOOL;
    q_xs80_EB1_ep2338c07 AT %Q* : BOOL;
    q_xs80_EB1_ep2338c08 AT %Q* : BOOL;

    (* XRT Stand IDNO 78 *)
    i_xs78_EB1_ep2338c01 AT %I* : BOOL;
    i_xs78_EB1_ep2338c02 AT %I* : BOOL;
    q_xs78_EB1_ep2338c03 AT %Q* : BOOL;
    q_xs78_EB1_ep2338c04 AT %Q* : BOOL;
    i_xs78_EB1_ep2338c05 AT %I* : BOOL;
    i_xs78_EB1_ep2338c06 AT %I* : BOOL;
    q_xs78_EB1_ep2338c07 AT %Q* : BOOL;
    q_xs78_EB1_ep2338c08 AT %Q* : BOOL;

    i_is78_EB2_ep3174c01 AT %I* : INT;
    i_is78_EB2_ep3174c02 AT %I* : INT;
    i_is78_EB2_ep3174c03 AT %I* : INT;
    i_is78_EB2_ep3174c04 AT %I* : INT;

    q_xs78_EB3_ep2624c01 AT %Q* : BOOL;
    q_xs78_EB3_ep2624c02 AT %Q* : BOOL;
    q_xs78_EB3_ep2624c03 AT %Q* : BOOL;
    q_xs78_EB3_ep2624c04 AT %Q* : BOOL;


    (* XRT Stand IDNO 20 *)
    i_iS20_EB1_ep3174c01 AT %I* : INT;
    i_iS20_EB1_ep3174c02 AT %I* : INT;
    i_iS20_EB1_ep3174c03 AT %I* : INT;
    i_iS20_EB1_ep3174c04 AT %I* : INT;

    q_xS20_EB2_ep2624c01 AT %Q* : BOOL;
    q_xS20_EB2_ep2624c02 AT %Q* : BOOL;
    q_xS20_EB2_ep2624c03 AT %Q* : BOOL;
    q_xS20_EB2_ep2624c04 AT %Q* : BOOL;


    (* XRT stand 14 *)
    i_xS14_EB1_ep2338c01 AT %I* : BOOL;
    i_xS14_EB1_ep2338c02 AT %I* : BOOL;
    q_xS14_EB1_ep2338c03 AT %Q* : BOOL;
    q_xS14_EB1_ep2338c04 AT %Q* : BOOL;
    i_xS14_EB1_ep2338c05 AT %I* : BOOL;
    i_xS14_EB1_ep2338c06 AT %I* : BOOL;
    q_xS14_EB1_ep2338c07 AT %Q* : BOOL;
    q_xS14_EB1_ep2338c08 AT %Q* : BOOL;

    (* XRT stand 13 *)
    i_iS13_EB1_ep3174c01 AT %I* : INT;
    i_iS13_EB1_ep3174c02 AT %I* : INT;
    i_iS13_EB1_ep3174c03 AT %I* : INT;
    i_iS13_EB1_ep3174c04 AT %I* : INT;

    q_xS13_EB2_ep2624c01 AT %Q* : BOOL;
    q_xS13_EB2_ep2624c02 AT %Q* : BOOL;
    q_xS13_EB2_ep2624c03 AT %Q* : BOOL;
    q_xS13_EB2_ep2624c04 AT %Q* : BOOL;


END_VAR

GVL_Variables_Devices

VAR_GLOBAL

    //change these to reflect xcs devices
    //VGC
vgcPBT_VGC_01 : ST_VGC;
vgcPBT_VGC_02 : ST_VGC;
vgcPBT_VGC_03 : ST_VGC;
vgcPBT_VGC_04 : ST_VGC;


//Vacuum Gauges

//GPI
vgPBT_GPI_02 : ST_VG; // real Pirani Gauge
vgPBT_GPI_04 : ST_VG;
vgPBT_GPI_06 : ST_VG;
vgPBT_GPI_07 : ST_VG;
vgPBT_GPI_09 : ST_VG;


//GCC
vgPBT_GCC_02 : ST_VG;
vgPBT_GCC_04 : ST_VG;
vgPBT_GCC_06 : ST_VG;
vgPBT_GCC_07 : ST_VG;
vgPBT_GCC_09 : ST_VG;
vgMON_DUMMY : ST_VG := (rPRESS := 1e-9, xAT_VAC := TRUE, xPRESS_OK :=True); //For downstream OK, comes from DG2


END_VAR

POUs

FB_275_t

FUNCTION_BLOCK FB_275_t
VAR_IN_OUT
    PG : ST_VG;
END_VAR
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR

    MinPressure: REAL := 1E-4;

    V : REAL;
    Vlowest: REAL := 10;
END_VAR
(* This function block is used to provide protection and automatic turn on of ion gauges,
 it also manages the turn on of the AT_VAC boolean, and checks to make sure the pressure is good *)
(* For MKS 275 mini-convectron *)

//Default setpoint 50 mT
IF PG.rVAC_SP = 0 THEN
    PG.rVAC_SP := 5E-2;
END_IF

(* Real-value calculation *)

V := 10*INT_TO_REAL(PG.iPRESS_R)/32767;

Vlowest := MIN(V, Vlowest);

IF V > 0.3 AND V < 0.38 THEN

PG.rPRESS := MinPressure;
PG.wState := 02;

ELSIF V >= 0.38 AND V < 2.842 THEN

PG.rPRESS := LREAL_TO_REAL( -0.02585 + 0.03767*V + 0.04563*EXPT(V,2)+ 0.1151*EXPT(V,3) - 0.04158*EXPT(V,4)+ 0.008737*EXPT(V,5));
PG.wState := 01;

ELSIF V >= 2.842 AND V < 4.945 THEN

PG.rPRESS := LREAL_TO_REAL((0.1031-0.02322*V+0.07229*EXPT(V,2))/(1-0.3986*V+0.07438*EXPT(V,2)-0.006866*EXPT(V,3)));
PG.wState := 01;

ELSIF V >= 4.945 AND V < 5.7 THEN

PG.rPRESS := LREAL_TO_REAL((100.624-20.5623*V)/(1-0.37679*V+0.0348656*EXPT(V,2)));
PG.wState := 01;

ELSIF V <= 0.36 THEN

PG.wState := 04; //Most likely not connected
PG.rPRESS := -1;

ELSE

PG.wState := 03; //Larger voltage, probably out of range?
PG.rPRESS := -1;
END_IF

(* Protection Functions *)
(* If the PG pressure is greater than the IG.PRO_SP then the gauge is disabled *)
(* If the PG pressure is less than the IG.PRO_SP then the gauge is enabled *)
(* This FB also implements some hysteresis so the gauge doesn't have rapid power cycling while near the turn on boundary *)

(* Pressure OK check *)
PG.xPRESS_OK := (PG.rPRESS >= MinPressure);

(* Setpoint evaluation *)
PG.xAT_VAC := PG.xPRESS_OK AND (PG.rPRESS<PG.rVAC_SP);

END_FUNCTION_BLOCK

FB_500_VG

FUNCTION_BLOCK FB_500_VG
VAR_IN_OUT
    IG : ST_VG;
END_VAR
VAR_INPUT
    PG      :       ST_VG;
END_VAR
VAR_OUTPUT
    xHV_SW: BOOL;
    rPRESS: INT;
    rVAC_SP: INT;
END_VAR
VAR
    rV : REAL;
    pBase : REAL;
    vBase : REAL;
    vSlope : REAL;
    GaugeTurnOnTmr : TON;
    MinPressure: REAL := 1E-9;
    cDefaultPressure : REAL := 0;
END_VAR
(* 500 Logarithmic Output Conversion, factory default configuration *)

rV := 10*INT_TO_REAL(IG.iPRESS_R)/32767;
vBase := 0;
pBase := 1.0E-10;
vSlope := 1.0;
//IG.rPRESS := EXPT(10,((rV-vBase)/vSlope+LOG(pBase)));


IF rV >= 0.49 AND rV < 0.52  THEN
    IG.wState := 5;
    IG.rPRESS := cDefaultPressure;
ELSIF rV < 0.4 THEN
    IG.wState := 4;//HV Off/ gauge disconnected
    IG.rPRESS := cDefaultPressure;
ELSE
    IG.wState := 1;
    IG.rPRESS := LREAL_TO_REAL(EXPT(10,((rV-vBase)/vSlope+LOG(pBase))));
END_IF





(* Ion Gauge Protection Functions *)
(* If the PG pressure is greater than the VG.PRO_SP then the gauge is disabled *)
(* If the PG pressure is less than the VG.PRO_SP then the gauge is enabled *)
(* This FB also implements some hysteresis so the gauge doesn't have rapid power cycling while near the turn on boundary *)



IF PG.rPRESS < IG.rPRO_SP AND PG.xPRESS_OK THEN

    IG.xHV_DIS := IG.xHV_SW;

ELSIF IG.xHV_DIS THEN
    IF IG.rPRESS > (IG.rPRO_SP + IG.rHYS_PR)  OR PG.rPRESS > (IG.rPRO_SP + IG.rHYS_PR) THEN
        IG.xHV_DIS := FALSE;
        IG.xHV_SW := FALSE;
    END_IF
ELSE
    IG.xHV_DIS := FALSE;
    IG.xHV_SW := FALSE;
END_IF

(* Pressure gauge OK checks *)

GaugeTurnOnTmr(IN:=IG.xHV_DIS, PT:=T#10S, Q=>IG.xTurnOnTime);

//IG.xPRESS_OK := ((IG.rPRESS > MinPressure) AND IG.xHV_DIS AND IG.xTurnOnTime) OR IG.xBAKEOUT;

//Backwards compatibility
IG.xPRESS_OK := (IG.wState = 1) OR IG.xBAKEOUT;

(* Setpoint evaluation *)
IG.xAT_VAC := (IG.xPRESS_OK AND (IG.rPRESS < IG.rVAC_SP)) OR IG.xBAKEOUT;;

END_FUNCTION_BLOCK

FB_500_VG_1

FUNCTION_BLOCK FB_500_VG_1
VAR_IN_OUT
    IG : ST_VG;
END_VAR
VAR_INPUT
    PG      :       ST_VG;
END_VAR
VAR_OUTPUT
    xHV_SW: BOOL;
    rPRESS: INT;
    rVAC_SP: INT;
END_VAR
VAR
    rV : REAL;
    GaugeTurnOnTmr : TON;
    MinPressure: REAL := 1E-10;

END_VAR
VAR CONSTANT
    cDefaultPressure : REAL := 750.0;
    vBase   :       REAL := 0; //corresponding vbase 0V based on default curve.  See manual pg. 44
    pBase   :       REAL := 1.0E-10; //default curve base pressure is 1E-10. Confusing since can't actually read that low using analog out.
    vSlope  :       REAL := 1.0; //looks correct for default curve
END_VAR
(* 500 Logarithmic Output Conversion, factory default configuration *)

rV := 10*INT_TO_REAL(IG.iPRESS_R)/32767;

IF rV >= 0.49 AND rV < 0.50  THEN
    IG.eState := E_PressureState.Starting;
    IG.rPRESS := cDefaultPressure;
ELSIF rV < 0.4 THEN
    IG.eState := E_PressureState.Off;
    IG.rPRESS := cDefaultPressure;
ELSE
    IG.eState := E_PressureState.Valid;
    IG.rPRESS := LREAL_TO_REAL(EXPT(10,((rV-vBase)/vSlope+LOG(pBase))));
END_IF



(* Ion Gauge Protection Functions *)
(* If the PG pressure is greater than the VG.PRO_SP then the gauge is disabled *)
(* If the PG pressure is less than the VG.PRO_SP then the gauge is enabled *)
(* This FB also implements some hysteresis so the gauge doesn't have rapid power cycling while near the turn on boundary *)

IF PG.rPRESS <= IG.rPRO_SP AND PG.xPRESS_OK THEN

    IG.xHV_DIS := IG.xHV_SW;

ELSIF IG.xHV_DIS THEN
    IF IG.rPRESS > (IG.rPRO_SP + IG.rHYS_PR)  OR PG.rPRESS > (IG.rPRO_SP + IG.rHYS_PR) THEN
        IG.xHV_DIS := FALSE;
        IG.xHV_SW := FALSE;
    END_IF
ELSE
    IG.xHV_DIS := FALSE;
    IG.xHV_SW := FALSE;
END_IF

(* Pressure gauge OK checks *)

//Backwards compatibility
IG.xPRESS_OK := (IG.eState = E_PressureState.Valid) OR IG.xBAKEOUT;

(* Setpoint evaluation *)
IG.xAT_VAC := (IG.xPRESS_OK AND (IG.rPRESS < IG.rVAC_SP)) OR IG.xBAKEOUT;

END_FUNCTION_BLOCK

MAIN

PROGRAM MAIN
VAR
    myBoolean : BOOL;
END_VAR
(* Modbus receive *)
p_ModbusRx_OutputReg();
p_ModbusRx_OutputCoils();
p_ModbusRx_PLCMemory();

p_XLegacyPLCModbus();

(*  HARD-WIRED I/O UPDATE
    Update IO
*)

p_SoftIOMap();

(*  RESOLVE LOGIC
    Device Control & Monitoring
*)

p_GaugeSup();
p_ValveSup();
//p_TurboSup();
p_MPSSup();

(*  HARD-WIRED I/O UPDATE
    Update IO
*)
p_EtherCATDiag();

p_SoftIOMap();

(*  EPICS Tx UPDATE
    Modbus Map Receive
    IMPORTANT: This is the LAST subroutine to be called.
*)
p_ModbusTx_InputCoils();
p_ModbusTx_OutputCoils();
p_ModbusTx_InputReg();
p_ModbusTx_OutputReg();
p_ModbusTx_PLCMemory();

g_xFirstPass := FALSE; // set this false after the first pass

END_PROGRAM

p_EtherCATDiag

PROGRAM p_EtherCATDiag
VAR
    fbEcatDiag1     :       LCLS_General.FB_EcatDiag;
END_VAR
fbEcatDiag1(i_AMSNetId:=g_aEcatMaster1, i_xFirstPass:=g_xFirstPass, q_xAllStatesGood=>g_xIOState);

END_PROGRAM

p_GaugeSup

PROGRAM p_GaugeSup
VAR
fbPBT_GCC_02 : FB_500_VG_1;//_VG;
fbPBT_GCC_04 : FB_500_VG_1;//_VG;
fbPBT_GCC_06 : FB_500_VG_1;//_VG;
fbPBT_GCC_07 : FB_500_VG_1;//_VG;
fbPBT_GCC_09 : FB_500_VG_1;//_VG;

//fb_DUMB_GPI_D1 : FB_Dumb_Gauge;
fbPBT_GPI_02 : FB_275;
fbPBT_GPI_04 : FB_275;
fbPBT_GPI_06 : FB_275;
fbPBT_GPI_07 : FB_275;
fbPBT_GPI_09 : FB_275;
END_VAR
(* Vacuum Gauge Supervisor *)

(* Check the upstream PLC for the upstream vacuum OK signal -- p_XLegacyPLCModbus *)
//vgMXT_GCC_03.xAT_VAC := g_ixUSVacOK; //NEED TO DECIDE HOW TO HANDLE USV
//vgMXT_GCC_03.xPRESS_OK := g_ixUSVacOK;


(* Check the downstream PLC for the downstream vacuum OK signal -- p_XLegacyPLCModbus *)
//vgMON_GCC_04??.xAT_VAC := i_xDSVacOK; //NEED TO DECIDE HOW TO HANDLE DSV
//vgMON_GCC_04??.xPRESS_OK := i_xDSVacOK;

(* Calculate Pirani *)

fbPBT_GPI_02(PG:=vgPBT_GPI_02);
fbPBT_GPI_04(PG:=vgPBT_GPI_04);
fbPBT_GPI_06(PG:=vgPBT_GPI_06);
fbPBT_GPI_07(PG:=vgPBT_GPI_07);
fbPBT_GPI_09(PG:=vgPBT_GPI_09);

(* Calculate Cold Cathode *)
//vgPBT_GPI_D1.xPRESS_OK := TRUE;
//vgPBT_GPI_D1.rPRESS := 1E-3;

fbPBT_GCC_02(PG:=vgPBT_GPI_02,IG:=vgPBT_GCC_02);
fbPBT_GCC_04(PG:=vgPBT_GPI_04,IG:=vgPBT_GCC_04);
fbPBT_GCC_06(PG:=vgPBT_GPI_06,IG:=vgPBT_GCC_06);
fbPBT_GCC_07(PG:=vgPBT_GPI_07,IG:=vgPBT_GCC_07);
fbPBT_GCC_09(PG:=vgPBT_GPI_09,IG:=vgPBT_GCC_09);

END_PROGRAM

p_ModbusRx_OutputCoils

PROGRAM p_ModbusRx_OutputCoils
VAR
END_VAR
//mb_Output_Coils[0];  //System Controls
g_stSystem.xOverrideMode:=mb_Output_Coils[1];  //System Controls
//mb_Output_Coils[2];  //System Controls
//mb_Output_Coils[3];  //System Controls
//mb_Output_Coils[4];  //System Controls
//mb_Output_Coils[5];  //System Controls
//mb_Output_Coils[6];  //System Controls
//mb_Output_Coils[7];  //System Controls
//mb_Output_Coils[8];  //System Controls
//mb_Output_Coils[9];  //System Controls
vgcPBT_VGC_01.xOPN_SW:=mb_Output_Coils[10];  //Valve switch controls
vgcPBT_VGC_02.xOPN_SW:=mb_Output_Coils[11];  //Valve switch controls
vgcPBT_VGC_03.xOPN_SW:=mb_Output_Coils[12];  //Valve switch controls
vgcPBT_VGC_04.xOPN_SW:=mb_Output_Coils[13];  //Valve switch controls
//mb_Output_Coils[14];  //Valve switch controls
//mb_Output_Coils[15];  //Valve switch controls
//mb_Output_Coils[16];  //Valve switch controls
//mb_Output_Coils[17];  //Valve switch controls
//mb_Output_Coils[18];  //Valve switch controls
//mb_Output_Coils[19];  //Valve switch controls
//mb_Output_Coils[20];  //Valve switch controls
//mb_Output_Coils[21];  //Valve switch controls
//mb_Output_Coils[22];  //Valve switch controls
//mb_Output_Coils[23];  //Valve switch controls
//mb_Output_Coils[24];  //Valve switch controls
//mb_Output_Coils[25];  //Valve switch controls
//mb_Output_Coils[26];  //Valve switch controls
//mb_Output_Coils[27];  //Valve switch controls
//mb_Output_Coils[28];  //Valve switch controls
//mb_Output_Coils[29];  //Valve switch controls
//mb_Output_Coils[30];  //Valve switch controls
//mb_Output_Coils[31];  //Valve switch controls
//mb_Output_Coils[32];  //Valve switch controls
//mb_Output_Coils[33];  //Valve switch controls
//mb_Output_Coils[34];  //Valve switch controls
//mb_Output_Coils[35];  //Valve switch controls
//mb_Output_Coils[36];  //Valve switch controls
//mb_Output_Coils[37];  //Valve switch controls
//mb_Output_Coils[38];  //Valve switch controls
//mb_Output_Coils[39];  //Valve switch controls
//mb_Output_Coils[40];  //Valve switch controls
//mb_Output_Coils[41];  //Valve switch controls
//mb_Output_Coils[42];  //Valve switch controls
//mb_Output_Coils[43];  //Valve switch controls
//mb_Output_Coils[44];  //Valve switch controls
//mb_Output_Coils[45];  //Valve switch controls
//mb_Output_Coils[46];  //Valve switch controls
//mb_Output_Coils[47];  //Valve switch controls
//mb_Output_Coils[48];  //Valve switch controls
//mb_Output_Coils[49];  //Valve switch controls
//mb_Output_Coils[50];  //Valve switch controls
//mb_Output_Coils[51];  //Valve switch controls
//mb_Output_Coils[52];  //Valve switch controls
//mb_Output_Coils[53];  //Valve switch controls
//mb_Output_Coils[54];  //Valve switch controls
//mb_Output_Coils[55];  //Valve switch controls
//mb_Output_Coils[56];  //Valve switch controls
//mb_Output_Coils[57];  //Valve switch controls
//mb_Output_Coils[58];  //Valve switch controls
//mb_Output_Coils[59];  //Valve switch controls
//mb_Output_Coils[60];  //Valve switch controls
//mb_Output_Coils[61];  //Valve switch controls
//mb_Output_Coils[62];  //Valve switch controls
//mb_Output_Coils[63];  //Valve switch controls
//mb_Output_Coils[64];  //Valve switch controls
//mb_Output_Coils[65];  //Valve switch controls
//mb_Output_Coils[66];  //Valve switch controls
//mb_Output_Coils[67];  //Valve switch controls
//mb_Output_Coils[68];  //Valve switch controls
//mb_Output_Coils[69];  //Valve switch controls
//mb_Output_Coils[70];  //Turbo Controls
//mb_Output_Coils[71];  //Turbo Controls
//mb_Output_Coils[72];  //Turbo Controls
//mb_Output_Coils[74];  //Turbo Controls
//mb_Output_Coils[75];  //Turbo Controls
//mb_Output_Coils[76];  //Turbo Controls
//mb_Output_Coils[77];  //Turbo Controls
//mb_Output_Coils[78];  //Turbo Controls
//mb_Output_Coils[79];  //Turbo Controls
//mb_Output_Coils[80];  //Turbo Controls
//mb_Output_Coils[81];  //Turbo Controls
//mb_Output_Coils[82];  //Turbo Controls
//mb_Output_Coils[83];  //Turbo Controls
//mb_Output_Coils[84];  //Turbo Controls
//mb_Output_Coils[85];  //Turbo Controls
//mb_Output_Coils[86];  //Turbo Controls
//mb_Output_Coils[87];  //Turbo Controls
//mb_Output_Coils[88];  //Turbo Controls
//mb_Output_Coils[89];  //Turbo Controls
//mb_Output_Coils[90];  //Turbo Controls
//mb_Output_Coils[91];  //Turbo Controls
//mb_Output_Coils[92];  //Turbo Controls
//mb_Output_Coils[93];  //Turbo Controls
//mb_Output_Coils[94];  //Turbo Controls
//mb_Output_Coils[95];  //Turbo Controls
//mb_Output_Coils[96];  //Turbo Controls
//mb_Output_Coils[97];  //Turbo Controls
//mb_Output_Coils[98];  //Turbo Controls
//mb_Output_Coils[99];  //Turbo Controls
//mb_Output_Coils[100];  //Turbo Controls
//mb_Output_Coils[101];  //Turbo Controls
//mb_Output_Coils[102];  //Turbo Controls
//mb_Output_Coils[103];  //Turbo Controls
//mb_Output_Coils[104];  //Turbo Controls
//mb_Output_Coils[105];  //Turbo Controls
//mb_Output_Coils[106];  //Turbo Controls
//mb_Output_Coils[107];  //Turbo Controls
//mb_Output_Coils[108];  //Turbo Controls
//mb_Output_Coils[109];  //Turbo Controls
//mb_Output_Coils[110];  //Turbo Controls
//mb_Output_Coils[111];  //Turbo Controls
//mb_Output_Coils[112];  //Turbo Controls
//mb_Output_Coils[113];  //Turbo Controls
//mb_Output_Coils[114];  //Turbo Controls
//mb_Output_Coils[115];  //Turbo Controls
//mb_Output_Coils[116];  //Turbo Controls
//mb_Output_Coils[117];  //Turbo Controls
//mb_Output_Coils[118];  //Turbo Controls
//mb_Output_Coils[119];  //Turbo Controls
vgPBT_GCC_02.xHV_SW:=mb_Output_Coils[120];  //CC HV Enable
vgPBT_GCC_04.xHV_SW:=mb_Output_Coils[121];  //CC HV Enable
vgPBT_GCC_06.xHV_SW:=mb_Output_Coils[122];  //CC HV Enable
vgPBT_GCC_07.xHV_SW:=mb_Output_Coils[123];  //CC HV Enable
vgPBT_GCC_09.xHV_SW:=mb_Output_Coils[124];  //CC HV Enable
//mb_Output_Coils[125];  //CC HV Enable
//mb_Output_Coils[126];  //CC HV Enable
//mb_Output_Coils[127];  //CC HV Enable
//mb_Output_Coils[128];  //CC HV Enable
//mb_Output_Coils[129];  //CC HV Enable
//mb_Output_Coils[130];  //CC HV Enable
//mb_Output_Coils[131];  //CC HV Enable
//mb_Output_Coils[132];  //CC HV Enable
//mb_Output_Coils[133];  //CC HV Enable
//mb_Output_Coils[134];  //CC HV Enable
//mb_Output_Coils[135];  //CC HV Enable
//mb_Output_Coils[136];  //CC HV Enable
//mb_Output_Coils[137];  //CC HV Enable
//mb_Output_Coils[138];  //CC HV Enable
//mb_Output_Coils[139];  //CC HV Enable
//mb_Output_Coils[140];  //CC HV Enable
//mb_Output_Coils[141];  //CC HV Enable
//mb_Output_Coils[142];  //CC HV Enable
//mb_Output_Coils[143];  //CC HV Enable
//mb_Output_Coils[144];  //CC HV Enable
//mb_Output_Coils[145];  //CC HV Enable
//mb_Output_Coils[146];  //CC HV Enable
//mb_Output_Coils[147];  //CC HV Enable
//mb_Output_Coils[148];  //CC HV Enable
//mb_Output_Coils[149];  //CC HV Enable
//mb_Output_Coils[150];  //CC HV Enable
//mb_Output_Coils[151];  //CC HV Enable
//mb_Output_Coils[152];  //CC HV Enable
//mb_Output_Coils[153];  //CC HV Enable
//mb_Output_Coils[154];  //CC HV Enable
//mb_Output_Coils[155];  //CC HV Enable
//mb_Output_Coils[156];  //CC HV Enable
//mb_Output_Coils[157];  //CC HV Enable
//mb_Output_Coils[158];  //CC HV Enable
//mb_Output_Coils[159];  //CC HV Enable
//mb_Output_Coils[160];  //
//mb_Output_Coils[161];  //
//mb_Output_Coils[162];  //
//mb_Output_Coils[163];  //
//mb_Output_Coils[164];  //
//mb_Output_Coils[165];  //
//mb_Output_Coils[166];  //
//mb_Output_Coils[167];  //
//mb_Output_Coils[168];  //
//mb_Output_Coils[169];  //
//mb_Output_Coils[170];  //
//mb_Output_Coils[171];  //
//mb_Output_Coils[172];  //
//mb_Output_Coils[173];  //
//mb_Output_Coils[174];  //
//mb_Output_Coils[175];  //
//mb_Output_Coils[176];  //
//mb_Output_Coils[177];  //
//mb_Output_Coils[178];  //
//mb_Output_Coils[179];  //
//mb_Output_Coils[180];  //
//mb_Output_Coils[181];  //
//mb_Output_Coils[182];  //
//mb_Output_Coils[183];  //
//mb_Output_Coils[184];  //
//mb_Output_Coils[185];  //
//mb_Output_Coils[186];  //
//mb_Output_Coils[187];  //
//mb_Output_Coils[188];  //
//mb_Output_Coils[189];  //
//mb_Output_Coils[190];  //
//mb_Output_Coils[191];  //
//mb_Output_Coils[192];  //
//mb_Output_Coils[193];  //
//mb_Output_Coils[194];  //
//mb_Output_Coils[195];  //
//mb_Output_Coils[196];  //
//mb_Output_Coils[197];  //
//mb_Output_Coils[198];  //
//mb_Output_Coils[199];  //
vgcPBT_VGC_01.xOvrdOpn:=mb_Output_Coils[200];  //Valve overrides
vgcPBT_VGC_02.xOvrdOpn:=mb_Output_Coils[201];  //Valve overrides
vgcPBT_VGC_03.xOvrdOpn:=mb_Output_Coils[202];  //Valve overrides
vgcPBT_VGC_04.xOvrdOpn:=mb_Output_Coils[203];  //Valve overrides
//mb_Output_Coils[204];  //
//mb_Output_Coils[205];  //
//mb_Output_Coils[206];  //
//mb_Output_Coils[207];  //
//mb_Output_Coils[208];  //
//mb_Output_Coils[209];  //
//mb_Output_Coils[210];  //
//mb_Output_Coils[211];  //
//mb_Output_Coils[212];  //
//mb_Output_Coils[213];  //
//mb_Output_Coils[214];  //
//mb_Output_Coils[215];  //
//mb_Output_Coils[216];  //
//mb_Output_Coils[217];  //
//mb_Output_Coils[218];  //
//mb_Output_Coils[219];  //
//mb_Output_Coils[220];  //
//mb_Output_Coils[221];  //
//mb_Output_Coils[222];  //
//mb_Output_Coils[223];  //
//mb_Output_Coils[224];  //
//mb_Output_Coils[225];  //
//mb_Output_Coils[226];  //
//mb_Output_Coils[227];  //
//mb_Output_Coils[228];  //
//mb_Output_Coils[229];  //
//mb_Output_Coils[230];  //
//mb_Output_Coils[231];  //
//mb_Output_Coils[232];  //
//mb_Output_Coils[233];  //
//mb_Output_Coils[234];  //
//mb_Output_Coils[235];  //
//mb_Output_Coils[236];  //
//mb_Output_Coils[237];  //
//mb_Output_Coils[238];  //
//mb_Output_Coils[239];  //
//mb_Output_Coils[240];  //
//mb_Output_Coils[241];  //
//mb_Output_Coils[242];  //
//mb_Output_Coils[243];  //
//mb_Output_Coils[244];  //
//mb_Output_Coils[245];  //
//mb_Output_Coils[246];  //
//mb_Output_Coils[247];  //
//mb_Output_Coils[248];  //
//mb_Output_Coils[249];  //
//mb_Output_Coils[250];  //
//mb_Output_Coils[251];  //
//mb_Output_Coils[252];  //
//mb_Output_Coils[253];  //
//mb_Output_Coils[254];  //
//mb_Output_Coils[255];  //

END_PROGRAM

p_ModbusRx_OutputReg

PROGRAM p_ModbusRx_OutputReg
VAR
END_VAR
//mb_Output_Registers[0];  //System parameters
//mb_Output_Registers[1];  //System parameters
//mb_Output_Registers[2];  //System parameters
//mb_Output_Registers[3];  //System parameters
//mb_Output_Registers[4];  //System parameters
//mb_Output_Registers[5];  //System parameters
//mb_Output_Registers[6];  //System parameters
//mb_Output_Registers[7];  //System parameters
//mb_Output_Registers[8];  //System parameters
//mb_Output_Registers[9];  //System parameters
//mb_Output_Registers[10];  //VG setpoint
//mb_Output_Registers[11];  //VG setpoint
//mb_Output_Registers[12];  //VG setpoint
//mb_Output_Registers[13];  //VG setpoint
//mb_Output_Registers[14];  //VG setpoint
//mb_Output_Registers[15];  //VG setpoint
//mb_Output_Registers[16];  //VG setpoint
//mb_Output_Registers[17];  //VG setpoint
//mb_Output_Registers[18];  //VG setpoint
//mb_Output_Registers[19];  //VG setpoint
//mb_Output_Registers[20];  //VG setpoint
//mb_Output_Registers[21];  //VG setpoint
//mb_Output_Registers[22];  //VG setpoint
//mb_Output_Registers[23];  //VG setpoint
//mb_Output_Registers[24];  //VG setpoint
//mb_Output_Registers[25];  //VG setpoint
//mb_Output_Registers[26];  //VG setpoint
//mb_Output_Registers[27];  //VG setpoint
//mb_Output_Registers[28];  //VG setpoint
//mb_Output_Registers[29];  //VG setpoint
//mb_Output_Registers[30];  //VG setpoint
//mb_Output_Registers[31];  //VG setpoint
//mb_Output_Registers[32];  //VG setpoint
//mb_Output_Registers[33];  //VG setpoint
//mb_Output_Registers[34];  //VG setpoint
//mb_Output_Registers[35];  //VG setpoint
//mb_Output_Registers[36];  //VG setpoint
//mb_Output_Registers[37];  //VG setpoint
//mb_Output_Registers[38];  //VG setpoint
//mb_Output_Registers[39];  //VG setpoint
//mb_Output_Registers[40];  //VG setpoint
//mb_Output_Registers[41];  //VG setpoint
//mb_Output_Registers[42];  //VG setpoint
//mb_Output_Registers[43];  //VG setpoint
//mb_Output_Registers[44];  //VG setpoint
//mb_Output_Registers[45];  //VG setpoint
//mb_Output_Registers[46];  //VG setpoint
//mb_Output_Registers[47];  //VG setpoint
//mb_Output_Registers[48];  //VG setpoint
//mb_Output_Registers[49];  //VG setpoint
//mb_Output_Registers[50];  //VG setpoint
//mb_Output_Registers[51];  //VG setpoint
//mb_Output_Registers[52];  //VG setpoint
//mb_Output_Registers[53];  //VG setpoint
//mb_Output_Registers[54];  //VG setpoint
//mb_Output_Registers[55];  //VG setpoint
//mb_Output_Registers[56];  //VG setpoint
//mb_Output_Registers[57];  //VG setpoint
//mb_Output_Registers[58];  //VG setpoint
//mb_Output_Registers[59];  //VG setpoint
//mb_Output_Registers[60];  //default
//mb_Output_Registers[61];  //default
//mb_Output_Registers[62];  //default
//mb_Output_Registers[63];  //default
//mb_Output_Registers[64];  //default
//mb_Output_Registers[65];  //default
//mb_Output_Registers[66];  //default
//mb_Output_Registers[67];  //default
//mb_Output_Registers[68];  //default
//mb_Output_Registers[69];  //default
//mb_Output_Registers[70];  //default
//mb_Output_Registers[71];  //default
//mb_Output_Registers[72];  //default
//mb_Output_Registers[73];  //default
//mb_Output_Registers[74];  //default
//mb_Output_Registers[75];  //default
//mb_Output_Registers[76];  //default
//mb_Output_Registers[77];  //default
//mb_Output_Registers[78];  //default
//mb_Output_Registers[79];  //default
//mb_Output_Registers[80];  //default
//mb_Output_Registers[81];  //default
//mb_Output_Registers[82];  //default
//mb_Output_Registers[83];  //default
//mb_Output_Registers[84];  //default
//mb_Output_Registers[85];  //default
//mb_Output_Registers[86];  //default
//mb_Output_Registers[87];  //default
//mb_Output_Registers[88];  //default
//mb_Output_Registers[89];  //default
//mb_Output_Registers[90];  //default
//mb_Output_Registers[91];  //default
//mb_Output_Registers[92];  //default
//mb_Output_Registers[93];  //default
//mb_Output_Registers[94];  //default
//mb_Output_Registers[95];  //default
//mb_Output_Registers[96];  //default
//mb_Output_Registers[97];  //default
//mb_Output_Registers[98];  //default
//mb_Output_Registers[99];  //default
//mb_Output_Registers[100];  //default
//mb_Output_Registers[101];  //default
//mb_Output_Registers[102];  //default
//mb_Output_Registers[103];  //default
//mb_Output_Registers[104];  //default
//mb_Output_Registers[105];  //default
//mb_Output_Registers[106];  //default
//mb_Output_Registers[107];  //default
//mb_Output_Registers[108];  //default
//mb_Output_Registers[109];  //default
//mb_Output_Registers[110];  //default
//mb_Output_Registers[111];  //default
//mb_Output_Registers[112];  //default
//mb_Output_Registers[113];  //default
//mb_Output_Registers[114];  //default
//mb_Output_Registers[115];  //default
//mb_Output_Registers[116];  //default
//mb_Output_Registers[117];  //default
//mb_Output_Registers[118];  //default
//mb_Output_Registers[119];  //default
//mb_Output_Registers[120];  //default
//mb_Output_Registers[121];  //default
//mb_Output_Registers[122];  //default
//mb_Output_Registers[123];  //default
//mb_Output_Registers[124];  //default
//mb_Output_Registers[125];  //default
//mb_Output_Registers[126];  //default
//mb_Output_Registers[127];  //default
//mb_Output_Registers[128];  //default
//mb_Output_Registers[129];  //default
//mb_Output_Registers[130];  //default
//mb_Output_Registers[131];  //default
//mb_Output_Registers[132];  //default
//mb_Output_Registers[133];  //default
//mb_Output_Registers[134];  //default
//mb_Output_Registers[135];  //default
//mb_Output_Registers[136];  //default
//mb_Output_Registers[137];  //default
//mb_Output_Registers[138];  //default
//mb_Output_Registers[139];  //default
//mb_Output_Registers[140];  //default
//mb_Output_Registers[141];  //default
//mb_Output_Registers[142];  //default
//mb_Output_Registers[143];  //default
//mb_Output_Registers[144];  //default
//mb_Output_Registers[145];  //default
//mb_Output_Registers[146];  //default
//mb_Output_Registers[147];  //default
//mb_Output_Registers[148];  //default
//mb_Output_Registers[149];  //default
//mb_Output_Registers[150];  //default
//mb_Output_Registers[151];  //default
//mb_Output_Registers[152];  //default
//mb_Output_Registers[153];  //default
//mb_Output_Registers[154];  //default
//mb_Output_Registers[155];  //default
//mb_Output_Registers[156];  //default
//mb_Output_Registers[157];  //default
//mb_Output_Registers[158];  //default
//mb_Output_Registers[159];  //default
//mb_Output_Registers[160];  //default
//mb_Output_Registers[161];  //default
//mb_Output_Registers[162];  //default
//mb_Output_Registers[163];  //default
//mb_Output_Registers[164];  //default
//mb_Output_Registers[165];  //default
//mb_Output_Registers[166];  //default
//mb_Output_Registers[167];  //default
//mb_Output_Registers[168];  //default
//mb_Output_Registers[169];  //default
//mb_Output_Registers[170];  //default
//mb_Output_Registers[171];  //default
//mb_Output_Registers[172];  //default
//mb_Output_Registers[173];  //default
//mb_Output_Registers[174];  //default
//mb_Output_Registers[175];  //default
//mb_Output_Registers[176];  //default
//mb_Output_Registers[177];  //default
//mb_Output_Registers[178];  //default
//mb_Output_Registers[179];  //default
//mb_Output_Registers[180];  //default
//mb_Output_Registers[181];  //default
//mb_Output_Registers[182];  //default
//mb_Output_Registers[183];  //default
//mb_Output_Registers[184];  //default
//mb_Output_Registers[185];  //default
//mb_Output_Registers[186];  //default
//mb_Output_Registers[187];  //default
//mb_Output_Registers[188];  //default
//mb_Output_Registers[189];  //default
//mb_Output_Registers[190];  //default
//mb_Output_Registers[191];  //default
//mb_Output_Registers[192];  //default
//mb_Output_Registers[193];  //default
//mb_Output_Registers[194];  //default
//mb_Output_Registers[195];  //default
//mb_Output_Registers[196];  //default
//mb_Output_Registers[197];  //default
//mb_Output_Registers[198];  //default
//mb_Output_Registers[199];  //default
//mb_Output_Registers[200];  //default
//mb_Output_Registers[201];  //default
//mb_Output_Registers[202];  //default
//mb_Output_Registers[203];  //default
//mb_Output_Registers[204];  //default
//mb_Output_Registers[205];  //default
//mb_Output_Registers[206];  //default
//mb_Output_Registers[207];  //default
//mb_Output_Registers[208];  //default
//mb_Output_Registers[209];  //default
//mb_Output_Registers[210];  //default
//mb_Output_Registers[211];  //default
//mb_Output_Registers[212];  //default
//mb_Output_Registers[213];  //default
//mb_Output_Registers[214];  //default
//mb_Output_Registers[215];  //default
//mb_Output_Registers[216];  //default
//mb_Output_Registers[217];  //default
//mb_Output_Registers[218];  //default
//mb_Output_Registers[219];  //default
//mb_Output_Registers[220];  //default
//mb_Output_Registers[221];  //default
//mb_Output_Registers[222];  //default
//mb_Output_Registers[223];  //default
//mb_Output_Registers[224];  //default
//mb_Output_Registers[225];  //default
//mb_Output_Registers[226];  //default
//mb_Output_Registers[227];  //default
//mb_Output_Registers[228];  //default
//mb_Output_Registers[229];  //default
//mb_Output_Registers[230];  //default
//mb_Output_Registers[231];  //default
//mb_Output_Registers[232];  //default
//mb_Output_Registers[233];  //default
//mb_Output_Registers[234];  //default
//mb_Output_Registers[235];  //default
//mb_Output_Registers[236];  //default
//mb_Output_Registers[237];  //default
//mb_Output_Registers[238];  //default
//mb_Output_Registers[239];  //default
//mb_Output_Registers[240];  //default
//mb_Output_Registers[241];  //default
//mb_Output_Registers[242];  //default
//mb_Output_Registers[243];  //default
//mb_Output_Registers[244];  //default
//mb_Output_Registers[245];  //default
//mb_Output_Registers[246];  //default
//mb_Output_Registers[247];  //default
//mb_Output_Registers[248];  //default
//mb_Output_Registers[249];  //default
//mb_Output_Registers[250];  //default
//mb_Output_Registers[251];  //default
//mb_Output_Registers[252];  //default
//mb_Output_Registers[253];  //default
//mb_Output_Registers[254];  //default
//mb_Output_Registers[255];  //default

END_PROGRAM

p_ModbusRx_PLCMemory

PROGRAM p_ModbusRx_PLCMemory
VAR
END_VAR
MEMCPY(destAddr:=ADR(mb_PLC_Memory[70]), srcAddr:=ADR(vgPBT_GCC_02.rVAC_SP), n:=SIZEOF(vgPBT_GCC_02.rVAC_SP));  //VG pressure sp readbacks
MEMCPY(destAddr:=ADR(mb_PLC_Memory[72]), srcAddr:=ADR(vgPBT_GPI_02.rVAC_SP), n:=SIZEOF(vgPBT_GPI_02.rVAC_SP));  //VG pressure sp readbacks

MEMCPY(destAddr:=ADR(mb_PLC_Memory[74]), srcAddr:=ADR(vgPBT_GCC_04.rVAC_SP), n:=SIZEOF(vgPBT_GCC_04.rVAC_SP));  //VG pressure sp readbacks
MEMCPY(destAddr:=ADR(mb_PLC_Memory[76]), srcAddr:=ADR(vgPBT_GPI_04.rVAC_SP), n:=SIZEOF(vgPBT_GPI_04.rVAC_SP));  //VG pressure sp readbacks

MEMCPY(destAddr:=ADR(mb_PLC_Memory[78]), srcAddr:=ADR(vgPBT_GCC_06.rVAC_SP), n:=SIZEOF(vgPBT_GCC_06.rVAC_SP));  //VG pressure sp readbacks
MEMCPY(destAddr:=ADR(mb_PLC_Memory[80]), srcAddr:=ADR(vgPBT_GPI_06.rVAC_SP), n:=SIZEOF(vgPBT_GPI_06.rVAC_SP));  //VG pressure sp readbacks

MEMCPY(destAddr:=ADR(mb_PLC_Memory[82]), srcAddr:=ADR(vgPBT_GCC_07.rVAC_SP), n:=SIZEOF(vgPBT_GCC_07.rVAC_SP));  //VG pressure sp readbacks
MEMCPY(destAddr:=ADR(mb_PLC_Memory[84]), srcAddr:=ADR(vgPBT_GPI_07.rVAC_SP), n:=SIZEOF(vgPBT_GPI_07.rVAC_SP));  //VG pressure sp readbacks

MEMCPY(destAddr:=ADR(mb_PLC_Memory[86]), srcAddr:=ADR(vgPBT_GCC_09.rVAC_SP), n:=SIZEOF(vgPBT_GCC_09.rVAC_SP));  //VG pressure sp readbacks
MEMCPY(destAddr:=ADR(mb_PLC_Memory[88]), srcAddr:=ADR(vgPBT_GPI_09.rVAC_SP), n:=SIZEOF(vgPBT_GPI_09.rVAC_SP));  //VG pressure sp readbacks

END_PROGRAM

p_ModbusTx_InputCoils

PROGRAM p_ModbusTx_InputCoils
VAR

END_VAR

VAR_OUTPUT


    XHV_DIS: BOOL;
END_VAR
mb_Input_Coils[0]:=FALSE;  //default
//mb_Input_Coils[1]:=i_xMFX_ppsStopperPos_Out;  //default
//mb_Input_Coils[2]:=i_xMFX_ppsStopperPos_In;  //default
mb_Input_Coils[3]:=q_xXCS_MPSOK;  //default
mb_Input_Coils[4]:=g_xIOState;  //default
//mb_Input_Coils[5]:=i_xDG1_MMS01_OUT;  //default
mb_Input_Coils[6]:=FALSE;  //default
mb_Input_Coils[7]:=FALSE;  //default
mb_Input_Coils[8]:=FALSE;  //default
mb_Input_Coils[9]:=FALSE;  //default
mb_Input_Coils[10]:=vgcPBT_VGC_01.i_xOpnLS;  //Valve position readbacks
mb_Input_Coils[11]:=vgcPBT_VGC_01.i_xClsLS;  //Valve position readbacks
mb_Input_Coils[12]:=vgcPBT_VGC_02.i_xOpnLS;  //Valve position readbacks
mb_Input_Coils[13]:=vgcPBT_VGC_02.i_xClsLS;  //Valve position readbacks
mb_Input_Coils[14]:=vgcPBT_VGC_03.i_xOpnLS;  //Valve position readbacks
mb_Input_Coils[15]:=vgcPBT_VGC_03.i_xClsLS;  //Valve position readbacks
mb_Input_Coils[16]:=vgcPBT_VGC_04.i_xOpnLS;  //Valve position readbacks
mb_Input_Coils[17]:=vgcPBT_VGC_04.i_xClsLS;  //Valve position readbacks
mb_Input_Coils[18]:=FALSE;  //Valve position readbacks
mb_Input_Coils[19]:=FALSE;  //Valve position readbacks
mb_Input_Coils[20]:=FALSE; //Valve position readbacks
mb_Input_Coils[21]:=FALSE;  //Valve position readbacks
mb_Input_Coils[22]:=FALSE;  //Valve position readbacks
mb_Input_Coils[23]:=FALSE;  //Valve position readbacks
mb_Input_Coils[24]:=FALSE;  //Valve position readbacks
mb_Input_Coils[25]:=FALSE;  //Valve position readbacks
mb_Input_Coils[26]:=FALSE;  //Valve position readbacks
mb_Input_Coils[27]:=FALSE;  //Valve position readbacks
mb_Input_Coils[28]:=FALSE;  //Valve position readbacks
mb_Input_Coils[29]:=FALSE;  //Valve position readbacks
mb_Input_Coils[30]:=FALSE;  //Valve position readbacks
mb_Input_Coils[31]:=FALSE;  //Valve position readbacks
mb_Input_Coils[32]:=FALSE;  //Valve position readbacks
mb_Input_Coils[33]:=FALSE;  //Valve position readbacks
mb_Input_Coils[34]:=FALSE;  //Valve position readbacks
mb_Input_Coils[35]:=FALSE;  //Valve position readbacks
mb_Input_Coils[36]:=FALSE;  //Valve position readbacks
mb_Input_Coils[37]:=FALSE;  //Valve position readbacks
mb_Input_Coils[38]:=FALSE;  //Valve position readbacks
mb_Input_Coils[39]:=FALSE;  //Valve position readbacks
mb_Input_Coils[40]:=FALSE;  //Valve position readbacks
mb_Input_Coils[41]:=FALSE;  //Valve position readbacks
mb_Input_Coils[42]:=FALSE;  //Valve position readbacks
mb_Input_Coils[43]:=FALSE;  //Valve position readbacks
mb_Input_Coils[44]:=FALSE;  //Valve position readbacks
mb_Input_Coils[45]:=FALSE;  //Valve position readbacks
mb_Input_Coils[46]:=FALSE;  //Valve position readbacks
mb_Input_Coils[47]:=FALSE;  //Valve position readbacks
mb_Input_Coils[48]:=FALSE;  //Valve position readbacks
mb_Input_Coils[49]:=FALSE;  //Valve position readbacks
mb_Input_Coils[50]:=FALSE;  //Valve position readbacks
mb_Input_Coils[51]:=FALSE;  //Valve position readbacks
mb_Input_Coils[52]:=FALSE;  //Valve position readbacks
mb_Input_Coils[53]:=FALSE;  //Valve position readbacks
mb_Input_Coils[54]:=FALSE;  //Valve position readbacks
mb_Input_Coils[55]:=FALSE;  //Valve position readbacks
mb_Input_Coils[56]:=FALSE;  //Valve position readbacks
mb_Input_Coils[57]:=FALSE;  //Valve position readbacks
mb_Input_Coils[58]:=FALSE;  //Valve position readbacks
mb_Input_Coils[59]:=FALSE;  //Valve position readbacks
mb_Input_Coils[60]:=vgcPBT_VGC_01.xOPN_OK;  //Valve position readbacks
mb_Input_Coils[61]:=vgcPBT_VGC_02.xOPN_OK;  //Valve position readbacks
mb_Input_Coils[62]:=vgcPBT_VGC_03.xOPN_OK;  //Valve position readbacks
mb_Input_Coils[63]:=vgcPBT_VGC_04.xOPN_OK;  //Valve position readbacks
mb_Input_Coils[64]:=FALSE;  //Valve position readbacks
mb_Input_Coils[65]:=FALSE;  //Valve position readbacks
mb_Input_Coils[66]:=FALSE;  //Valve position readbacks
mb_Input_Coils[67]:=FALSE;  //Valve position readbacks
mb_Input_Coils[68]:=FALSE;  //Valve position readbacks
mb_Input_Coils[69]:=FALSE;  //Valve position readbacks
mb_Input_Coils[70]:=FALSE;  //Valve position readbacks
mb_Input_Coils[71]:=FALSE;  //Valve position readbacks
mb_Input_Coils[72]:=FALSE;  //Valve position readbacks
mb_Input_Coils[73]:=FALSE;  //Valve position readbacks
mb_Input_Coils[74]:=FALSE;  //Valve position readbacks
mb_Input_Coils[75]:=FALSE;  //Valve position readbacks
mb_Input_Coils[76]:=FALSE;  //Valve position readbacks
mb_Input_Coils[77]:=FALSE;  //Valve position readbacks
mb_Input_Coils[78]:=FALSE;  //Valve position readbacks
mb_Input_Coils[79]:=FALSE;  //Valve position readbacks
mb_Input_Coils[80]:=FALSE;  //Valve position readbacks
mb_Input_Coils[81]:=FALSE;  //Valve position readbacks
mb_Input_Coils[82]:=FALSE;  //Valve position readbacks
mb_Input_Coils[83]:=FALSE;  //Valve position readbacks
mb_Input_Coils[84]:=FALSE;  //Valve position readbacks
mb_Input_Coils[85]:=FALSE;  //Valve position readbacks
mb_Input_Coils[86]:=FALSE;  //Valve position readbacks
mb_Input_Coils[87]:=FALSE;  //Valve position readbacks
mb_Input_Coils[88]:=FALSE;  //Valve position readbacks
mb_Input_Coils[89]:=FALSE;  //Valve position readbacks
mb_Input_Coils[90]:=FALSE;  //Valve position readbacks
mb_Input_Coils[91]:=FALSE;  //Valve position readbacks
mb_Input_Coils[92]:=FALSE;  //Valve position readbacks
mb_Input_Coils[93]:=FALSE;  //Valve position readbacks
mb_Input_Coils[94]:=FALSE;  //Valve position readbacks
mb_Input_Coils[95]:=FALSE;  //Valve position readbacks
mb_Input_Coils[96]:=FALSE;  //Valve position readbacks
mb_Input_Coils[97]:=FALSE;  //Valve position readbacks
mb_Input_Coils[98]:=FALSE;  //Valve position readbacks
mb_Input_Coils[99]:=FALSE;  //Valve position readbacks
mb_Input_Coils[100]:=FALSE;  //Valve position readbacks
mb_Input_Coils[101]:=FALSE;  //Valve position readbacks
mb_Input_Coils[102]:=FALSE;  //Valve position readbacks
mb_Input_Coils[103]:=FALSE;  //Valve position readbacks
mb_Input_Coils[104]:=FALSE;  //Valve position readbacks
mb_Input_Coils[105]:=FALSE;  //Valve position readbacks
mb_Input_Coils[106]:=FALSE;  //Valve position readbacks
mb_Input_Coils[107]:=FALSE;  //Valve position readbacks
mb_Input_Coils[108]:=FALSE;  //Valve position readbacks
mb_Input_Coils[109]:=FALSE;  //Valve position readbacks
mb_Input_Coils[110]:=FALSE;  //Valve position readbacks
mb_Input_Coils[111]:=FALSE;  //Valve position readbacks
mb_Input_Coils[112]:=FALSE;  //Valve position readbacks
mb_Input_Coils[113]:=FALSE;  //Valve position readbacks
mb_Input_Coils[114]:=FALSE;  //Valve position readbacks
mb_Input_Coils[115]:=FALSE;  //Valve position readbacks
mb_Input_Coils[116]:=FALSE;  //Valve position readbacks
mb_Input_Coils[117]:=FALSE;  //Valve position readbacks
mb_Input_Coils[118]:=FALSE;  //Valve position readbacks
mb_Input_Coils[119]:=FALSE;  //Valve position readbacks
mb_Input_Coils[120]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[121]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[122]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[123]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[124]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[125]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[126]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[127]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[128]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[129]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[130]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[131]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[132]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[133]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[134]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[135]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[136]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[137]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[138]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[139]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[140]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[141]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[142]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[143]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[144]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[145]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[146]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[147]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[148]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[149]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[150]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[151]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[152]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[153]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[154]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[155]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[156]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[157]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[158]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[159]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[160]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[161]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[162]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[163]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[164]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[165]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[166]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[167]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[168]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[169]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[170]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[171]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[172]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[173]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[174]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[175]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[176]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[177]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[178]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[179]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[180]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[181]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[182]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[183]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[184]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[185]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[186]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[187]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[188]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[189]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[190]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[191]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[192]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[193]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[194]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[195]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[196]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[197]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[198]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[199]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[200]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[201]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[202]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[203]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[204]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[205]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[206]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[207]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[208]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[209]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[210]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[211]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[212]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[213]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[214]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[215]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[216]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[217]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[218]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[219]:=FALSE;  //Turbo pump readbacks
mb_Input_Coils[220]:=vgPBT_GCC_02.xAT_VAC;  //VG readbacks
mb_Input_Coils[221]:=vgPBT_GCC_02.xHV_DIS;  //VG readbacks
mb_Input_Coils[222]:=vgPBT_GCC_04.xAT_VAC;  //VG readbacks
mb_Input_Coils[223]:=vgPBT_GCC_04.xHV_DIS;  //VG readbacks
mb_Input_Coils[224]:=vgPBT_GCC_06.xAT_VAC;  //VG readbacks
mb_Input_Coils[225]:=vgPBT_GCC_06.xHV_DIS;  //VG readbacks
mb_Input_Coils[226]:=vgPBT_GCC_07.xAT_VAC;  //VG readbacks
mb_Input_Coils[227]:=vgPBT_GCC_07.xHV_DIS;  //VG readbacks
mb_Input_Coils[228]:=vgPBT_GCC_09.xAT_VAC;  //VG readbacks
mb_Input_Coils[229]:=vgPBT_GCC_09.xHV_DIS;  //VG readbacks
mb_Input_Coils[230]:=vgPBT_GCC_02.xPRESS_OK;  //VG readbacks
mb_Input_Coils[231]:=vgPBT_GCC_04.xPRESS_OK;  //VG readbacks
mb_Input_Coils[232]:=vgPBT_GCC_06.xPRESS_OK;  //VG readbacks
mb_Input_Coils[233]:=vgPBT_GCC_07.xPRESS_OK;  //VG readbacks
mb_Input_Coils[234]:=vgPBT_GCC_09.xPRESS_OK;  //VG readbacks
mb_Input_Coils[235]:=FALSE;  //VG readbacks
mb_Input_Coils[236]:=FALSE;  //VG readbacks
mb_Input_Coils[237]:=FALSE;  //VG readbacks
mb_Input_Coils[238]:=FALSE;  //VG readbacks
mb_Input_Coils[239]:=FALSE;  //VG readbacks
mb_Input_Coils[240]:=FALSE;  //VG readbacks
mb_Input_Coils[241]:=FALSE;  //VG readbacks
mb_Input_Coils[242]:=FALSE;  //VG readbacks
mb_Input_Coils[243]:=FALSE;  //VG readbacks
mb_Input_Coils[244]:=FALSE;  //VG readbacks
mb_Input_Coils[245]:=FALSE;  //VG readbacks
mb_Input_Coils[246]:=FALSE;  //VG readbacks
mb_Input_Coils[247]:=FALSE;  //VG readbacks
mb_Input_Coils[248]:=FALSE;  //VG readbacks
mb_Input_Coils[249]:=FALSE;  //VG readbacks
mb_Input_Coils[250]:=FALSE;  //VG readbacks
mb_Input_Coils[251]:=FALSE;  //VG readbacks
mb_Input_Coils[252]:=FALSE;  //VG readbacks
mb_Input_Coils[253]:=FALSE;  //VG readbacks
mb_Input_Coils[254]:=FALSE;  //VG readbacks
mb_Input_Coils[255]:=FALSE;  //VG readbacks

END_PROGRAM

p_ModbusTx_InputReg

PROGRAM p_ModbusTx_InputReg
VAR
END_VAR
mb_Input_Registers[0]:=0;  //System info
mb_Input_Registers[1]:=0;  //System info
mb_Input_Registers[2]:=0;  //System info
mb_Input_Registers[3]:=0;  //System info
mb_Input_Registers[4]:=0;  //System info
mb_Input_Registers[5]:=0;  //System info
mb_Input_Registers[6]:=0;  //System info
mb_Input_Registers[7]:=0;  //System info
mb_Input_Registers[8]:=0;  //System info
mb_Input_Registers[9]:=0;  //System info
mb_Input_Registers[10]:=0;  //VG pressure readbacks
mb_Input_Registers[11]:=0;  //VG pressure readbacks
mb_Input_Registers[12]:=0;  //VG pressure readbacks
mb_Input_Registers[13]:=0;  //VG pressure readbacks
mb_Input_Registers[14]:=0;  //VG pressure readbacks
mb_Input_Registers[15]:=0;  //VG pressure readbacks
mb_Input_Registers[16]:=0;  //VG pressure readbacks
mb_Input_Registers[17]:=0;  //VG pressure readbacks
mb_Input_Registers[18]:=0;  //VG pressure readbacks
mb_Input_Registers[19]:=0;  //VG pressure readbacks
mb_Input_Registers[20]:=0;  //VG pressure readbacks
mb_Input_Registers[21]:=0;  //VG pressure readbacks
mb_Input_Registers[22]:=0;  //VG pressure readbacks
mb_Input_Registers[23]:=0;  //VG pressure readbacks
mb_Input_Registers[24]:=0;  //VG pressure readbacks
mb_Input_Registers[25]:=0;  //VG pressure readbacks
mb_Input_Registers[26]:=0;  //VG pressure readbacks
mb_Input_Registers[27]:=0;  //VG pressure readbacks
mb_Input_Registers[28]:=0;  //VG pressure readbacks
mb_Input_Registers[29]:=0;  //VG pressure readbacks
mb_Input_Registers[30]:=0;  //VG pressure readbacks
mb_Input_Registers[31]:=0;  //VG pressure readbacks
mb_Input_Registers[32]:=0;  //VG pressure readbacks
mb_Input_Registers[33]:=0;  //VG pressure readbacks
mb_Input_Registers[34]:=0;  //VG pressure readbacks
mb_Input_Registers[35]:=0;  //VG pressure readbacks
mb_Input_Registers[36]:=0;  //VG pressure readbacks
mb_Input_Registers[37]:=0;  //VG pressure readbacks
mb_Input_Registers[38]:=0;  //VG pressure readbacks
mb_Input_Registers[39]:=0;  //VG pressure readbacks
mb_Input_Registers[40]:=0;  //VG pressure readbacks
mb_Input_Registers[41]:=0;  //VG pressure readbacks
mb_Input_Registers[42]:=0;  //VG pressure readbacks
mb_Input_Registers[43]:=0;  //VG pressure readbacks
mb_Input_Registers[44]:=0;  //VG pressure readbacks
mb_Input_Registers[45]:=0;  //VG pressure readbacks
mb_Input_Registers[46]:=0;  //VG pressure readbacks
mb_Input_Registers[47]:=0;  //VG pressure readbacks
mb_Input_Registers[48]:=0;  //VG pressure readbacks
mb_Input_Registers[49]:=0;  //VG pressure readbacks
mb_Input_Registers[50]:=0;  //VG pressure readbacks
mb_Input_Registers[51]:=0;  //VG pressure readbacks
mb_Input_Registers[52]:=0;  //VG pressure readbacks
mb_Input_Registers[53]:=0;  //VG pressure readbacks
mb_Input_Registers[54]:=0;  //VG pressure readbacks
mb_Input_Registers[55]:=0;  //VG pressure readbacks
mb_Input_Registers[56]:=0;  //VG pressure readbacks
mb_Input_Registers[57]:=0;  //VG pressure readbacks
mb_Input_Registers[58]:=0;  //VG pressure readbacks
mb_Input_Registers[59]:=0;  //VG pressure readbacks
mb_Input_Registers[60]:=0;  //VG pressure readbacks
mb_Input_Registers[61]:=0;  //VG pressure readbacks
mb_Input_Registers[62]:=0;  //VG pressure readbacks
mb_Input_Registers[63]:=0;  //VG pressure readbacks
mb_Input_Registers[64]:=0;  //VG pressure readbacks
mb_Input_Registers[65]:=0;  //VG pressure readbacks
mb_Input_Registers[66]:=0;  //VG pressure readbacks
mb_Input_Registers[67]:=0;  //VG pressure readbacks
mb_Input_Registers[68]:=0;  //VG pressure readbacks
mb_Input_Registers[69]:=0;  //VG pressure readbacks
mb_Input_Registers[70]:=TO_WORD(vgPBT_GPI_02.eState);  //VG state readbacks
mb_Input_Registers[71]:=TO_WORD(vgPBT_GPI_04.eState);  //VG state readbacks
mb_Input_Registers[72]:=TO_WORD(vgPBT_GPI_06.eState);  //VG state readbacks
mb_Input_Registers[73]:=TO_WORD(vgPBT_GPI_07.eState);  //VG state readbacks
mb_Input_Registers[74]:=TO_WORD(vgPBT_GPI_09.eState);  //VG state readbacks
mb_Input_Registers[75]:=TO_WORD(vgPBT_GCC_02.eState);  //VG state readbacks
mb_Input_Registers[76]:=TO_WORD(vgPBT_GCC_04.eState);  //VG state readbacks
mb_Input_Registers[77]:=TO_WORD(vgPBT_GCC_06.eState);  //VG state readbacks
mb_Input_Registers[78]:=TO_WORD(vgPBT_GCC_07.eState);  //VG state readbacks
mb_Input_Registers[79]:=TO_WORD(vgPBT_GCC_09.eState);  //VG state readbacks
mb_Input_Registers[80]:=0;  //VG state readbacks
mb_Input_Registers[81]:=0;  //VG state readbacks
mb_Input_Registers[82]:=0;  //VG state readbacks
mb_Input_Registers[83]:=0;  //VG state readbacks
mb_Input_Registers[84]:=0;  //VG state readbacks
mb_Input_Registers[85]:=0;  //VG state readbacks
mb_Input_Registers[86]:=0;  //VG state readbacks
mb_Input_Registers[87]:=0;  //VG state readbacks
mb_Input_Registers[88]:=0;  //VG state readbacks
mb_Input_Registers[89]:=0;  //VG state readbacks
mb_Input_Registers[90]:=0;  //VG state readbacks
mb_Input_Registers[91]:=0;  //VG state readbacks
mb_Input_Registers[92]:=0;  //VG state readbacks
mb_Input_Registers[93]:=0;  //VG state readbacks
mb_Input_Registers[94]:=0;  //VG state readbacks
mb_Input_Registers[95]:=0;  //VG state readbacks
mb_Input_Registers[96]:=0;  //VG state readbacks
mb_Input_Registers[97]:=0;  //VG state readbacks
mb_Input_Registers[98]:=0;  //VG state readbacks
mb_Input_Registers[99]:=0;  //VG state readbacks
mb_Input_Registers[100]:=0;  //VG state readbacks
mb_Input_Registers[101]:=0;  //VG state readbacks
mb_Input_Registers[102]:=0;  //VG state readbacks
mb_Input_Registers[103]:=0;  //VG state readbacks
mb_Input_Registers[104]:=0;  //VG state readbacks
mb_Input_Registers[105]:=0;  //VG state readbacks
mb_Input_Registers[106]:=0;  //VG state readbacks
mb_Input_Registers[107]:=0;  //VG state readbacks
mb_Input_Registers[108]:=0;  //VG state readbacks
mb_Input_Registers[109]:=0;  //VG state readbacks
mb_Input_Registers[110]:=0;  //VG state readbacks
mb_Input_Registers[111]:=0;  //VG state readbacks
mb_Input_Registers[112]:=0;  //VG state readbacks
mb_Input_Registers[113]:=0;  //VG state readbacks
mb_Input_Registers[114]:=0;  //VG state readbacks
mb_Input_Registers[115]:=0;  //VG state readbacks
mb_Input_Registers[116]:=0;  //VG state readbacks
mb_Input_Registers[117]:=0;  //VG state readbacks
mb_Input_Registers[118]:=0;  //VG state readbacks
mb_Input_Registers[119]:=0;  //VG state readbacks
mb_Input_Registers[120]:=0;  //default
mb_Input_Registers[121]:=0;  //default
mb_Input_Registers[122]:=0;  //default
mb_Input_Registers[123]:=0;  //default
mb_Input_Registers[124]:=0;  //default
mb_Input_Registers[125]:=0;  //default
mb_Input_Registers[126]:=0;  //default
mb_Input_Registers[127]:=0;  //default
mb_Input_Registers[128]:=0;  //default
mb_Input_Registers[129]:=0;  //default
mb_Input_Registers[130]:=0;  //default
mb_Input_Registers[131]:=0;  //default
mb_Input_Registers[132]:=0;  //default
mb_Input_Registers[133]:=0;  //default
mb_Input_Registers[134]:=0;  //default
mb_Input_Registers[135]:=0;  //default
mb_Input_Registers[136]:=0;  //default
mb_Input_Registers[137]:=0;  //default
mb_Input_Registers[138]:=0;  //default
mb_Input_Registers[139]:=0;  //default
mb_Input_Registers[140]:=0;  //default
mb_Input_Registers[141]:=0;  //default
mb_Input_Registers[142]:=0;  //default
mb_Input_Registers[143]:=0;  //default
mb_Input_Registers[144]:=0;  //default
mb_Input_Registers[145]:=0;  //default
mb_Input_Registers[146]:=0;  //default
mb_Input_Registers[147]:=0;  //default
mb_Input_Registers[148]:=0;  //default
mb_Input_Registers[149]:=0;  //default
mb_Input_Registers[150]:=0;  //default
mb_Input_Registers[151]:=0;  //default
mb_Input_Registers[152]:=0;  //default
mb_Input_Registers[153]:=0;  //default
mb_Input_Registers[154]:=0;  //default
mb_Input_Registers[155]:=0;  //default
mb_Input_Registers[156]:=0;  //default
mb_Input_Registers[157]:=0;  //default
mb_Input_Registers[158]:=0;  //default
mb_Input_Registers[159]:=0;  //default
mb_Input_Registers[160]:=0;  //default
mb_Input_Registers[161]:=0;  //default
mb_Input_Registers[162]:=0;  //default
mb_Input_Registers[163]:=0;  //default
mb_Input_Registers[164]:=0;  //default
mb_Input_Registers[165]:=0;  //default
mb_Input_Registers[166]:=0;  //default
mb_Input_Registers[167]:=0;  //default
mb_Input_Registers[168]:=0;  //default
mb_Input_Registers[169]:=0;  //default
mb_Input_Registers[170]:=0;  //default
mb_Input_Registers[171]:=0;  //default
mb_Input_Registers[172]:=0;  //default
mb_Input_Registers[173]:=0;  //default
mb_Input_Registers[174]:=0;  //default
mb_Input_Registers[175]:=0;  //default
mb_Input_Registers[176]:=0;  //default
mb_Input_Registers[177]:=0;  //default
mb_Input_Registers[178]:=0;  //default
mb_Input_Registers[179]:=0;  //default
mb_Input_Registers[180]:=0;  //default
mb_Input_Registers[181]:=0;  //default
mb_Input_Registers[182]:=0;  //default
mb_Input_Registers[183]:=0;  //default
mb_Input_Registers[184]:=0;  //default
mb_Input_Registers[185]:=0;  //default
mb_Input_Registers[186]:=0;  //default
mb_Input_Registers[187]:=0;  //default
mb_Input_Registers[188]:=0;  //default
mb_Input_Registers[189]:=0;  //default
mb_Input_Registers[190]:=0;  //default
mb_Input_Registers[191]:=0;  //default
mb_Input_Registers[192]:=0;  //default
mb_Input_Registers[193]:=0;  //default
mb_Input_Registers[194]:=0;  //default
mb_Input_Registers[195]:=0;  //default
mb_Input_Registers[196]:=0;  //default
mb_Input_Registers[197]:=0;  //default
mb_Input_Registers[198]:=0;  //default
mb_Input_Registers[199]:=0;  //default
mb_Input_Registers[200]:=0;  //default
mb_Input_Registers[201]:=0;  //default
mb_Input_Registers[202]:=0;  //default
mb_Input_Registers[203]:=0;  //default
mb_Input_Registers[204]:=0;  //default
mb_Input_Registers[205]:=0;  //default
mb_Input_Registers[206]:=0;  //default
mb_Input_Registers[207]:=0;  //default
mb_Input_Registers[208]:=0;  //default
mb_Input_Registers[209]:=0;  //default
mb_Input_Registers[210]:=0;  //default
mb_Input_Registers[211]:=0;  //default
mb_Input_Registers[212]:=0;  //default
mb_Input_Registers[213]:=0;  //default
mb_Input_Registers[214]:=0;  //default
mb_Input_Registers[215]:=0;  //default
mb_Input_Registers[216]:=0;  //default
mb_Input_Registers[217]:=0;  //default
mb_Input_Registers[218]:=0;  //default
mb_Input_Registers[219]:=0;  //default
mb_Input_Registers[220]:=0;  //default
mb_Input_Registers[221]:=0;  //default
mb_Input_Registers[222]:=0;  //default
mb_Input_Registers[223]:=0;  //default
mb_Input_Registers[224]:=0;  //default
mb_Input_Registers[225]:=0;  //default
mb_Input_Registers[226]:=0;  //default
mb_Input_Registers[227]:=0;  //default
mb_Input_Registers[228]:=0;  //default
mb_Input_Registers[229]:=0;  //default
mb_Input_Registers[230]:=0;  //default
mb_Input_Registers[231]:=0;  //default
mb_Input_Registers[232]:=0;  //default
mb_Input_Registers[233]:=0;  //default
mb_Input_Registers[234]:=0;  //default
mb_Input_Registers[235]:=0;  //default
mb_Input_Registers[236]:=0;  //default
mb_Input_Registers[237]:=0;  //default
mb_Input_Registers[238]:=0;  //default
mb_Input_Registers[239]:=0;  //default
mb_Input_Registers[240]:=0;  //default
mb_Input_Registers[241]:=0;  //default
mb_Input_Registers[242]:=0;  //default
mb_Input_Registers[243]:=0;  //default
mb_Input_Registers[244]:=0;  //default
mb_Input_Registers[245]:=0;  //default
mb_Input_Registers[246]:=0;  //default
mb_Input_Registers[247]:=0;  //default
mb_Input_Registers[248]:=0;  //default
mb_Input_Registers[249]:=0;  //default
mb_Input_Registers[250]:=0;  //default
mb_Input_Registers[251]:=0;  //default
mb_Input_Registers[252]:=0;  //default
mb_Input_Registers[253]:=0;  //default
mb_Input_Registers[254]:=0;  //default
mb_Input_Registers[255]:=0;  //default

END_PROGRAM

p_ModbusTx_OutputCoils

PROGRAM p_ModbusTx_OutputCoils
VAR
END_VAR
mb_Output_Coils[0]:=FALSE;  //System Controls
mb_Output_Coils[1]:=g_stSystem.xOverrideMode;  //System Controls
mb_Output_Coils[2]:=FALSE;  //System Controls
mb_Output_Coils[3] :=q_xXCS_VGC_OK;  //System Controls
mb_Output_Coils[4] :=FALSE;  //System Controls
mb_Output_Coils[5] :=q_xXCS_MPSOK;  //System Controlsmb_Output_Coils[2]:=FALSE;  //System Controls
mb_Output_Coils[6]:=FALSE;  //System Controls
mb_Output_Coils[7]:=FALSE;  //System Controls
mb_Output_Coils[8]:=FALSE;  //System Controls
mb_Output_Coils[9]:=FALSE;  //System Controls
mb_Output_Coils[10]:=vgcPBT_VGC_01.xOPN_SW;  //Valve switch controls
mb_Output_Coils[11]:=vgcPBT_VGC_02.xOPN_SW;  //Valve switch controls
mb_Output_Coils[12]:=vgcPBT_VGC_03.xOPN_SW;  //Valve switch controls
mb_Output_Coils[13]:=vgcPBT_VGC_04.xOPN_SW;  //Valve switch controls
mb_Output_Coils[14]:=FALSE;  //Valve switch controls
mb_Output_Coils[15]:=FALSE;  //Valve switch controls
mb_Output_Coils[16]:=FALSE;  //Valve switch controls
mb_Output_Coils[17]:=FALSE;  //Valve switch controls
mb_Output_Coils[18]:=FALSE;  //Valve switch controls
mb_Output_Coils[19]:=FALSE;  //Valve switch controls
mb_Output_Coils[20]:=FALSE;  //Valve switch controls
mb_Output_Coils[21]:=FALSE;  //Valve switch controls
mb_Output_Coils[22]:=FALSE;  //Valve switch controls
mb_Output_Coils[23]:=FALSE;  //Valve switch controls
mb_Output_Coils[24]:=FALSE;  //Valve switch controls
mb_Output_Coils[25]:=FALSE;  //Valve switch controls
mb_Output_Coils[26]:=FALSE;  //Valve switch controls
mb_Output_Coils[27]:=FALSE;  //Valve switch controls
mb_Output_Coils[28]:=FALSE;  //Valve switch controls
mb_Output_Coils[29]:=FALSE;  //Valve switch controls
mb_Output_Coils[30]:=FALSE;  //Valve switch controls
mb_Output_Coils[31]:=FALSE;  //Valve switch controls
mb_Output_Coils[32]:=FALSE;  //Valve switch controls
mb_Output_Coils[33]:=FALSE;  //Valve switch controls
mb_Output_Coils[34]:=FALSE;  //Valve switch controls
mb_Output_Coils[35]:=FALSE;  //Valve switch controls
mb_Output_Coils[36]:=FALSE;  //Valve switch controls
mb_Output_Coils[37]:=FALSE;  //Valve switch controls
mb_Output_Coils[38]:=FALSE;  //Valve switch controls
mb_Output_Coils[39]:=FALSE;  //Valve switch controls
mb_Output_Coils[40]:=FALSE;  //Valve switch controls
mb_Output_Coils[41]:=FALSE;  //Valve switch controls
mb_Output_Coils[42]:=FALSE;  //Valve switch controls
mb_Output_Coils[43]:=FALSE;  //Valve switch controls
mb_Output_Coils[44]:=FALSE;  //Valve switch controls
mb_Output_Coils[45]:=FALSE;  //Valve switch controls
mb_Output_Coils[46]:=FALSE;  //Valve switch controls
mb_Output_Coils[47]:=FALSE;  //Valve switch controls
mb_Output_Coils[48]:=FALSE;  //Valve switch controls
mb_Output_Coils[49]:=FALSE;  //Valve switch controls
mb_Output_Coils[50]:=FALSE;  //Valve switch controls
mb_Output_Coils[51]:=FALSE;  //Valve switch controls
mb_Output_Coils[52]:=FALSE;  //Valve switch controls
mb_Output_Coils[53]:=FALSE;  //Valve switch controls
mb_Output_Coils[54]:=FALSE;  //Valve switch controls
mb_Output_Coils[55]:=FALSE;  //Valve switch controls
mb_Output_Coils[56]:=FALSE;  //Valve switch controls
mb_Output_Coils[57]:=FALSE;  //Valve switch controls
mb_Output_Coils[58]:=FALSE;  //Valve switch controls
mb_Output_Coils[59]:=FALSE;  //Valve switch controls
mb_Output_Coils[60]:=FALSE;  //Valve switch controls
mb_Output_Coils[61]:=FALSE;  //Valve switch controls
mb_Output_Coils[62]:=FALSE;  //Valve switch controls
mb_Output_Coils[63]:=FALSE;  //Valve switch controls
mb_Output_Coils[64]:=FALSE;  //Valve switch controls
mb_Output_Coils[65]:=FALSE;  //Valve switch controls
mb_Output_Coils[66]:=FALSE;  //Valve switch controls
mb_Output_Coils[67]:=FALSE;  //Valve switch controls
mb_Output_Coils[68]:=FALSE;  //Valve switch controls
mb_Output_Coils[69]:=FALSE;  //Valve switch controls
mb_Output_Coils[70]:=FALSE;  //Turbo Controls
mb_Output_Coils[71]:=FALSE;  //Turbo Controls
mb_Output_Coils[72]:=FALSE;  //Turbo Controls
mb_Output_Coils[74]:=FALSE;  //Turbo Controls
mb_Output_Coils[75]:=FALSE;  //Turbo Controls
mb_Output_Coils[76]:=FALSE;  //Turbo Controls
mb_Output_Coils[77]:=FALSE;  //Turbo Controls
mb_Output_Coils[78]:=FALSE;  //Turbo Controls
mb_Output_Coils[79]:=FALSE;  //Turbo Controls
mb_Output_Coils[80]:=FALSE;  //Turbo Controls
mb_Output_Coils[81]:=FALSE;  //Turbo Controls
mb_Output_Coils[82]:=FALSE;  //Turbo Controls
mb_Output_Coils[83]:=FALSE;  //Turbo Controls
mb_Output_Coils[84]:=FALSE;  //Turbo Controls
mb_Output_Coils[85]:=FALSE;  //Turbo Controls
mb_Output_Coils[86]:=FALSE;  //Turbo Controls
mb_Output_Coils[87]:=FALSE;  //Turbo Controls
mb_Output_Coils[88]:=FALSE;  //Turbo Controls
mb_Output_Coils[89]:=FALSE;  //Turbo Controls
mb_Output_Coils[90]:=FALSE;  //Turbo Controls
mb_Output_Coils[91]:=FALSE;  //Turbo Controls
mb_Output_Coils[92]:=FALSE;  //Turbo Controls
mb_Output_Coils[93]:=FALSE;  //Turbo Controls
mb_Output_Coils[94]:=FALSE;  //Turbo Controls
mb_Output_Coils[95]:=FALSE;  //Turbo Controls
mb_Output_Coils[96]:=FALSE;  //Turbo Controls
mb_Output_Coils[97]:=FALSE;  //Turbo Controls
mb_Output_Coils[98]:=FALSE;  //Turbo Controls
mb_Output_Coils[99]:=FALSE;  //Turbo Controls
mb_Output_Coils[100]:=FALSE;  //Turbo Controls
mb_Output_Coils[101]:=FALSE;  //Turbo Controls
mb_Output_Coils[102]:=FALSE;  //Turbo Controls
mb_Output_Coils[103]:=FALSE;  //Turbo Controls
mb_Output_Coils[104]:=FALSE;  //Turbo Controls
mb_Output_Coils[105]:=FALSE;  //Turbo Controls
mb_Output_Coils[106]:=FALSE;  //Turbo Controls
mb_Output_Coils[107]:=FALSE;  //Turbo Controls
mb_Output_Coils[108]:=FALSE;  //Turbo Controls
mb_Output_Coils[109]:=FALSE;  //Turbo Controls
mb_Output_Coils[110]:=FALSE;  //Turbo Controls
mb_Output_Coils[111]:=FALSE;  //Turbo Controls
mb_Output_Coils[112]:=FALSE;  //Turbo Controls
mb_Output_Coils[113]:=FALSE;  //Turbo Controls
mb_Output_Coils[114]:=FALSE;  //Turbo Controls
mb_Output_Coils[115]:=FALSE;  //Turbo Controls
mb_Output_Coils[116]:=FALSE;  //Turbo Controls
mb_Output_Coils[117]:=FALSE;  //Turbo Controls
mb_Output_Coils[118]:=FALSE;  //Turbo Controls
mb_Output_Coils[119]:=FALSE;  //Turbo Controls
mb_Output_Coils[120]:=vgPBT_GCC_02.xHV_SW;  //CC HV Enable
mb_Output_Coils[121]:=vgPBT_GCC_04.xHV_SW;  //CC HV Enable
mb_Output_Coils[122]:=vgPBT_GCC_06.xHV_SW;  //CC HV Enable
mb_Output_Coils[123]:=vgPBT_GCC_07.xHV_SW;  //CC HV Enable
mb_Output_Coils[124]:=vgPBT_GCC_09.xHV_SW;  //CC HV Enable
mb_Output_Coils[125]:=FALSE;  //CC HV Enable
mb_Output_Coils[126]:=FALSE;  //CC HV Enable
mb_Output_Coils[127]:=FALSE;  //CC HV Enable
mb_Output_Coils[128]:=FALSE;  //CC HV Enable
mb_Output_Coils[129]:=FALSE;  //CC HV Enable
mb_Output_Coils[130]:=FALSE;  //CC HV Enable
mb_Output_Coils[131]:=FALSE;  //CC HV Enable
mb_Output_Coils[132]:=FALSE;  //CC HV Enable
mb_Output_Coils[133]:=FALSE;  //CC HV Enable
mb_Output_Coils[134]:=FALSE;  //CC HV Enable
mb_Output_Coils[135]:=FALSE;  //CC HV Enable
mb_Output_Coils[136]:=FALSE;  //CC HV Enable
mb_Output_Coils[137]:=FALSE;  //CC HV Enable
mb_Output_Coils[138]:=FALSE;  //CC HV Enable
mb_Output_Coils[139]:=FALSE;  //CC HV Enable
mb_Output_Coils[140]:=FALSE;  //CC HV Enable
mb_Output_Coils[141]:=FALSE;  //CC HV Enable
mb_Output_Coils[142]:=FALSE;  //CC HV Enable
mb_Output_Coils[143]:=FALSE;  //CC HV Enable
mb_Output_Coils[144]:=FALSE;  //CC HV Enable
mb_Output_Coils[145]:=FALSE;  //CC HV Enable
mb_Output_Coils[146]:=FALSE;  //CC HV Enable
mb_Output_Coils[147]:=FALSE;  //CC HV Enable
mb_Output_Coils[148]:=FALSE;  //CC HV Enable
mb_Output_Coils[149]:=FALSE;  //CC HV Enable
mb_Output_Coils[150]:=FALSE;  //CC HV Enable
mb_Output_Coils[151]:=FALSE;  //CC HV Enable
mb_Output_Coils[152]:=FALSE;  //CC HV Enable
mb_Output_Coils[153]:=FALSE;  //CC HV Enable
mb_Output_Coils[154]:=FALSE;  //CC HV Enable
mb_Output_Coils[155]:=FALSE;  //CC HV Enable
mb_Output_Coils[156]:=FALSE;  //CC HV Enable
mb_Output_Coils[157]:=FALSE;  //CC HV Enable
mb_Output_Coils[158]:=FALSE;  //CC HV Enable
mb_Output_Coils[159]:=FALSE;  //CC HV Enable
mb_Output_Coils[160]:=FALSE;  //
mb_Output_Coils[161]:=FALSE;  //
mb_Output_Coils[162]:=FALSE;  //
mb_Output_Coils[163]:=FALSE;  //
mb_Output_Coils[164]:=FALSE;  //
mb_Output_Coils[165]:=FALSE;  //
mb_Output_Coils[166]:=FALSE;  //
mb_Output_Coils[167]:=FALSE;  //
mb_Output_Coils[168]:=FALSE;  //
mb_Output_Coils[169]:=FALSE;  //
mb_Output_Coils[170]:=FALSE;  //
mb_Output_Coils[171]:=FALSE;  //
mb_Output_Coils[172]:=FALSE;  //
mb_Output_Coils[173]:=FALSE;  //
mb_Output_Coils[174]:=FALSE;  //
mb_Output_Coils[175]:=FALSE;  //
mb_Output_Coils[176]:=FALSE;  //
mb_Output_Coils[177]:=FALSE;  //
mb_Output_Coils[178]:=FALSE;  //
mb_Output_Coils[179]:=FALSE;  //
mb_Output_Coils[180]:=FALSE;  //
mb_Output_Coils[181]:=FALSE;  //
mb_Output_Coils[182]:=FALSE;  //
mb_Output_Coils[183]:=FALSE;  //
mb_Output_Coils[184]:=FALSE;  //
mb_Output_Coils[185]:=FALSE;  //
mb_Output_Coils[186]:=FALSE;  //
mb_Output_Coils[187]:=FALSE;  //
mb_Output_Coils[188]:=FALSE;  //
mb_Output_Coils[189]:=FALSE;  //
mb_Output_Coils[190]:=FALSE;  //
mb_Output_Coils[191]:=FALSE;  //
mb_Output_Coils[192]:=FALSE;  //
mb_Output_Coils[193]:=FALSE;  //
mb_Output_Coils[194]:=FALSE;  //
mb_Output_Coils[195]:=FALSE;  //
mb_Output_Coils[196]:=FALSE;  //
mb_Output_Coils[197]:=FALSE;  //
mb_Output_Coils[198]:=FALSE;  //
mb_Output_Coils[199]:=FALSE;  //
mb_Output_Coils[200]:=vgcPBT_VGC_01.xOvrdOpn;  //Valve overrides
mb_Output_Coils[201]:=vgcPBT_VGC_02.xOvrdOpn;  //Valve overrides
mb_Output_Coils[202]:=vgcPBT_VGC_03.xOvrdOpn;  //Valve overrides
mb_Output_Coils[203]:=vgcPBT_VGC_04.xOvrdOpn;  //Valve overrides
mb_Output_Coils[204]:=FALSE;  //
mb_Output_Coils[205]:=FALSE;  //
mb_Output_Coils[206]:=FALSE;  //
mb_Output_Coils[207]:=FALSE;  //
mb_Output_Coils[208]:=FALSE;  //
mb_Output_Coils[209]:=FALSE;  //
mb_Output_Coils[210]:=FALSE;  //
mb_Output_Coils[211]:=FALSE;  //
mb_Output_Coils[212]:=FALSE;  //
mb_Output_Coils[213]:=FALSE;  //
mb_Output_Coils[214]:=FALSE;  //
mb_Output_Coils[215]:=FALSE;  //
mb_Output_Coils[216]:=FALSE;  //
mb_Output_Coils[217]:=FALSE;  //
mb_Output_Coils[218]:=FALSE;  //
mb_Output_Coils[219]:=FALSE;  //
mb_Output_Coils[220]:=FALSE;  //
mb_Output_Coils[221]:=FALSE;  //
mb_Output_Coils[222]:=FALSE;  //
mb_Output_Coils[223]:=FALSE;  //
mb_Output_Coils[224]:=FALSE;  //
mb_Output_Coils[225]:=FALSE;  //
mb_Output_Coils[226]:=FALSE;  //
mb_Output_Coils[227]:=FALSE;  //
mb_Output_Coils[228]:=FALSE;  //
mb_Output_Coils[229]:=FALSE;  //
mb_Output_Coils[230]:=FALSE;  //
mb_Output_Coils[231]:=FALSE;  //
mb_Output_Coils[232]:=FALSE;  //
mb_Output_Coils[233]:=FALSE;  //
mb_Output_Coils[234]:=FALSE;  //
mb_Output_Coils[235]:=FALSE;  //
mb_Output_Coils[236]:=FALSE;  //
mb_Output_Coils[237]:=FALSE;  //
mb_Output_Coils[238]:=FALSE;  //
mb_Output_Coils[239]:=FALSE;  //
mb_Output_Coils[240]:=FALSE;  //
mb_Output_Coils[241]:=FALSE;  //
mb_Output_Coils[242]:=FALSE;  //
mb_Output_Coils[243]:=FALSE;  //
mb_Output_Coils[244]:=FALSE;  //
mb_Output_Coils[245]:=FALSE;  //
mb_Output_Coils[246]:=FALSE;  //
mb_Output_Coils[247]:=FALSE;  //
mb_Output_Coils[248]:=FALSE;  //
mb_Output_Coils[249]:=FALSE;  //
mb_Output_Coils[250]:=FALSE;  //
mb_Output_Coils[251]:=FALSE;  //
mb_Output_Coils[252]:=FALSE;  //
mb_Output_Coils[253]:=FALSE;  //
mb_Output_Coils[254]:=FALSE;  //
mb_Output_Coils[255]:=FALSE;  //

END_PROGRAM

p_ModbusTx_OutputReg

PROGRAM p_ModbusTx_OutputReg
VAR
END_VAR
mb_Output_Registers[0]:=0;  //System parameters
mb_Output_Registers[1]:=0;  //System parameters
mb_Output_Registers[2]:=0;  //System parameters
mb_Output_Registers[3]:=0;  //System parameters
mb_Output_Registers[4]:=0;  //System parameters
mb_Output_Registers[5]:=0;  //System parameters
mb_Output_Registers[6]:=0;  //System parameters
mb_Output_Registers[7]:=0;  //System parameters
mb_Output_Registers[8]:=0;  //System parameters
mb_Output_Registers[9]:=0;  //System parameters
(*mb_Output_Registers[10]:=vgPBT_GCC_02.iVacSp;  //VG setpoint
mb_Output_Registers[11]:=vgPBT_GPI_02.iVacSp;  //VG setpoint
mb_Output_Registers[12]:=vgPBT_GCC_04.iVacSp;  //VG setpoint
mb_Output_Registers[13]:=vgPBT_GPI_04.iVacSp;  //VG setpoint
mb_Output_Registers[14]:=vgPBT_GCC_06.iVacSp;  //VG setpoint
mb_Output_Registers[15]:=vgPBT_GPI_06.iVacSp;  //VG setpoint
mb_Output_Registers[16]:=vgPBT_GCC_07.iVacSp;  //VG setpoint
mb_Output_Registers[17]:=vgPBT_GPI_07.iVacSp;  //VG setpoint
mb_Output_Registers[18]:=vgPBT_GCC_09.iVacSp;  //VG setpoint
mb_Output_Registers[19]:=vgPBT_GPI_09.iVacSp;  //VG setpoint*)
mb_Output_Registers[20]:=0;  //VG setpoint
mb_Output_Registers[21]:=0;  //VG setpoint
mb_Output_Registers[22]:=0;  //VG setpoint
mb_Output_Registers[23]:=0;  //VG setpoint
mb_Output_Registers[24]:=0;  //VG setpoint
mb_Output_Registers[25]:=0;  //VG setpoint
mb_Output_Registers[26]:=0;  //VG setpoint
mb_Output_Registers[27]:=0;  //VG setpoint
mb_Output_Registers[28]:=0;  //VG setpoint
mb_Output_Registers[29]:=0;  //VG setpoint
mb_Output_Registers[30]:=0;  //VG setpoint
mb_Output_Registers[31]:=0;  //VG setpoint
mb_Output_Registers[32]:=0;  //VG setpoint
mb_Output_Registers[33]:=0;  //VG setpoint
mb_Output_Registers[34]:=0;  //VG setpoint
mb_Output_Registers[35]:=0;  //VG setpoint
mb_Output_Registers[36]:=0;  //VG setpoint
mb_Output_Registers[37]:=0;  //VG setpoint
mb_Output_Registers[38]:=0;  //VG setpoint
mb_Output_Registers[39]:=0;  //VG setpoint
mb_Output_Registers[40]:=0;  //VG setpoint
mb_Output_Registers[41]:=0;  //VG setpoint
mb_Output_Registers[42]:=0;  //VG setpoint
mb_Output_Registers[43]:=0;  //VG setpoint
mb_Output_Registers[44]:=0;  //VG setpoint
mb_Output_Registers[45]:=0;  //VG setpoint
mb_Output_Registers[46]:=0;  //VG setpoint
mb_Output_Registers[47]:=0;  //VG setpoint
mb_Output_Registers[48]:=0;  //VG setpoint
mb_Output_Registers[49]:=0;  //VG setpoint
mb_Output_Registers[50]:=0;  //VG setpoint
mb_Output_Registers[51]:=0;  //VG setpoint
mb_Output_Registers[52]:=0;  //VG setpoint
mb_Output_Registers[53]:=0;  //VG setpoint
mb_Output_Registers[54]:=0;  //VG setpoint
mb_Output_Registers[55]:=0;  //VG setpoint
mb_Output_Registers[56]:=0;  //VG setpoint
mb_Output_Registers[57]:=0;  //VG setpoint
mb_Output_Registers[58]:=0;  //VG setpoint
mb_Output_Registers[59]:=0;  //VG setpoint
mb_Output_Registers[60]:=0;  //default
mb_Output_Registers[61]:=0;  //default
mb_Output_Registers[62]:=0;  //default
mb_Output_Registers[63]:=0;  //default
mb_Output_Registers[64]:=0;  //default
mb_Output_Registers[65]:=0;  //default
mb_Output_Registers[66]:=0;  //default
mb_Output_Registers[67]:=0;  //default
mb_Output_Registers[68]:=0;  //default
mb_Output_Registers[69]:=0;  //default
mb_Output_Registers[70]:=0;  //default
mb_Output_Registers[71]:=0;  //default
mb_Output_Registers[72]:=0;  //default
mb_Output_Registers[73]:=0;  //default
mb_Output_Registers[74]:=0;  //default
mb_Output_Registers[75]:=0;  //default
mb_Output_Registers[76]:=0;  //default
mb_Output_Registers[77]:=0;  //default
mb_Output_Registers[78]:=0;  //default
mb_Output_Registers[79]:=0;  //default
mb_Output_Registers[80]:=0;  //default
mb_Output_Registers[81]:=0;  //default
mb_Output_Registers[82]:=0;  //default
mb_Output_Registers[83]:=0;  //default
mb_Output_Registers[84]:=0;  //default
mb_Output_Registers[85]:=0;  //default
mb_Output_Registers[86]:=0;  //default
mb_Output_Registers[87]:=0;  //default
mb_Output_Registers[88]:=0;  //default
mb_Output_Registers[89]:=0;  //default
mb_Output_Registers[90]:=0;  //default
mb_Output_Registers[91]:=0;  //default
mb_Output_Registers[92]:=0;  //default
mb_Output_Registers[93]:=0;  //default
mb_Output_Registers[94]:=0;  //default
mb_Output_Registers[95]:=0;  //default
mb_Output_Registers[96]:=0;  //default
mb_Output_Registers[97]:=0;  //default
mb_Output_Registers[98]:=0;  //default
mb_Output_Registers[99]:=0;  //default
mb_Output_Registers[100]:=0;  //default
mb_Output_Registers[101]:=0;  //default
mb_Output_Registers[102]:=0;  //default
mb_Output_Registers[103]:=0;  //default
mb_Output_Registers[104]:=0;  //default
mb_Output_Registers[105]:=0;  //default
mb_Output_Registers[106]:=0;  //default
mb_Output_Registers[107]:=0;  //default
mb_Output_Registers[108]:=0;  //default
mb_Output_Registers[109]:=0;  //default
mb_Output_Registers[110]:=0;  //default
mb_Output_Registers[111]:=0;  //default
mb_Output_Registers[112]:=0;  //default
mb_Output_Registers[113]:=0;  //default
mb_Output_Registers[114]:=0;  //default
mb_Output_Registers[115]:=0;  //default
mb_Output_Registers[116]:=0;  //default
mb_Output_Registers[117]:=0;  //default
mb_Output_Registers[118]:=0;  //default
mb_Output_Registers[119]:=0;  //default
mb_Output_Registers[120]:=0;  //default
mb_Output_Registers[121]:=0;  //default
mb_Output_Registers[122]:=0;  //default
mb_Output_Registers[123]:=0;  //default
mb_Output_Registers[124]:=0;  //default
mb_Output_Registers[125]:=0;  //default
mb_Output_Registers[126]:=0;  //default
mb_Output_Registers[127]:=0;  //default
mb_Output_Registers[128]:=0;  //default
mb_Output_Registers[129]:=0;  //default
mb_Output_Registers[130]:=0;  //default
mb_Output_Registers[131]:=0;  //default
mb_Output_Registers[132]:=0;  //default
mb_Output_Registers[133]:=0;  //default
mb_Output_Registers[134]:=0;  //default
mb_Output_Registers[135]:=0;  //default
mb_Output_Registers[136]:=0;  //default
mb_Output_Registers[137]:=0;  //default
mb_Output_Registers[138]:=0;  //default
mb_Output_Registers[139]:=0;  //default
mb_Output_Registers[140]:=0;  //default
mb_Output_Registers[141]:=0;  //default
mb_Output_Registers[142]:=0;  //default
mb_Output_Registers[143]:=0;  //default
mb_Output_Registers[144]:=0;  //default
mb_Output_Registers[145]:=0;  //default
mb_Output_Registers[146]:=0;  //default
mb_Output_Registers[147]:=0;  //default
mb_Output_Registers[148]:=0;  //default
mb_Output_Registers[149]:=0;  //default
mb_Output_Registers[150]:=0;  //default
mb_Output_Registers[151]:=0;  //default
mb_Output_Registers[152]:=0;  //default
mb_Output_Registers[153]:=0;  //default
mb_Output_Registers[154]:=0;  //default
mb_Output_Registers[155]:=0;  //default
mb_Output_Registers[156]:=0;  //default
mb_Output_Registers[157]:=0;  //default
mb_Output_Registers[158]:=0;  //default
mb_Output_Registers[159]:=0;  //default
mb_Output_Registers[160]:=0;  //default
mb_Output_Registers[161]:=0;  //default
mb_Output_Registers[162]:=0;  //default
mb_Output_Registers[163]:=0;  //default
mb_Output_Registers[164]:=0;  //default
mb_Output_Registers[165]:=0;  //default
mb_Output_Registers[166]:=0;  //default
mb_Output_Registers[167]:=0;  //default
mb_Output_Registers[168]:=0;  //default
mb_Output_Registers[169]:=0;  //default
mb_Output_Registers[170]:=0;  //default
mb_Output_Registers[171]:=0;  //default
mb_Output_Registers[172]:=0;  //default
mb_Output_Registers[173]:=0;  //default
mb_Output_Registers[174]:=0;  //default
mb_Output_Registers[175]:=0;  //default
mb_Output_Registers[176]:=0;  //default
mb_Output_Registers[177]:=0;  //default
mb_Output_Registers[178]:=0;  //default
mb_Output_Registers[179]:=0;  //default
mb_Output_Registers[180]:=0;  //default
mb_Output_Registers[181]:=0;  //default
mb_Output_Registers[182]:=0;  //default
mb_Output_Registers[183]:=0;  //default
mb_Output_Registers[184]:=0;  //default
mb_Output_Registers[185]:=0;  //default
mb_Output_Registers[186]:=0;  //default
mb_Output_Registers[187]:=0;  //default
mb_Output_Registers[188]:=0;  //default
mb_Output_Registers[189]:=0;  //default
mb_Output_Registers[190]:=0;  //default
mb_Output_Registers[191]:=0;  //default
mb_Output_Registers[192]:=0;  //default
mb_Output_Registers[193]:=0;  //default
mb_Output_Registers[194]:=0;  //default
mb_Output_Registers[195]:=0;  //default
mb_Output_Registers[196]:=0;  //default
mb_Output_Registers[197]:=0;  //default
mb_Output_Registers[198]:=0;  //default
mb_Output_Registers[199]:=0;  //default
mb_Output_Registers[200]:=0;  //default
mb_Output_Registers[201]:=0;  //default
mb_Output_Registers[202]:=0;  //default
mb_Output_Registers[203]:=0;  //default
mb_Output_Registers[204]:=0;  //default
mb_Output_Registers[205]:=0;  //default
mb_Output_Registers[206]:=0;  //default
mb_Output_Registers[207]:=0;  //default
mb_Output_Registers[208]:=0;  //default
mb_Output_Registers[209]:=0;  //default
mb_Output_Registers[210]:=0;  //default
mb_Output_Registers[211]:=0;  //default
mb_Output_Registers[212]:=0;  //default
mb_Output_Registers[213]:=0;  //default
mb_Output_Registers[214]:=0;  //default
mb_Output_Registers[215]:=0;  //default
mb_Output_Registers[216]:=0;  //default
mb_Output_Registers[217]:=0;  //default
mb_Output_Registers[218]:=0;  //default
mb_Output_Registers[219]:=0;  //default
mb_Output_Registers[220]:=0;  //default
mb_Output_Registers[221]:=0;  //default
mb_Output_Registers[222]:=0;  //default
mb_Output_Registers[223]:=0;  //default
mb_Output_Registers[224]:=0;  //default
mb_Output_Registers[225]:=0;  //default
mb_Output_Registers[226]:=0;  //default
mb_Output_Registers[227]:=0;  //default
mb_Output_Registers[228]:=0;  //default
mb_Output_Registers[229]:=0;  //default
mb_Output_Registers[230]:=0;  //default
mb_Output_Registers[231]:=0;  //default
mb_Output_Registers[232]:=0;  //default
mb_Output_Registers[233]:=0;  //default
mb_Output_Registers[234]:=0;  //default
mb_Output_Registers[235]:=0;  //default
mb_Output_Registers[236]:=0;  //default
mb_Output_Registers[237]:=0;  //default
mb_Output_Registers[238]:=0;  //default
mb_Output_Registers[239]:=0;  //default
mb_Output_Registers[240]:=0;  //default
mb_Output_Registers[241]:=0;  //default
mb_Output_Registers[242]:=0;  //default
mb_Output_Registers[243]:=0;  //default
mb_Output_Registers[244]:=0;  //default
mb_Output_Registers[245]:=0;  //default
mb_Output_Registers[246]:=0;  //default
mb_Output_Registers[247]:=0;  //default
mb_Output_Registers[248]:=0;  //default
mb_Output_Registers[249]:=0;  //default
mb_Output_Registers[250]:=0;  //default
mb_Output_Registers[251]:=0;  //default
mb_Output_Registers[252]:=0;  //default
mb_Output_Registers[253]:=0;  //default
mb_Output_Registers[254]:=0;  //default
mb_Output_Registers[255]:=0;  //default

END_PROGRAM

p_ModbusTx_PLCMemory

PROGRAM p_ModbusTx_PLCMemory
VAR
END_VAR
(*mb_PLC_Memory[0]-[99] PLC aiFloat inputs *)


MEMCPY(destAddr:=ADR(mb_PLC_Memory[10]), srcAddr:=ADR(vgPBT_GCC_02.rPRESS), n:=SIZEOF(vgPBT_GCC_02.rPRESS));  //VG pressure readbacks
MEMCPY(destAddr:=ADR(mb_PLC_Memory[12]), srcAddr:=ADR(vgPBT_GPI_02.rPRESS), n:=SIZEOF(vgPBT_GPI_02.rPRESS));  //VG pressure readbacks

MEMCPY(destAddr:=ADR(mb_PLC_Memory[14]), srcAddr:=ADR(vgPBT_GCC_04.rPRESS), n:=SIZEOF(vgPBT_GCC_04.rPRESS));  //VG pressure readbacks
MEMCPY(destAddr:=ADR(mb_PLC_Memory[16]), srcAddr:=ADR(vgPBT_GPI_04.rPRESS), n:=SIZEOF(vgPBT_GPI_04.rPRESS));  //VG pressure readbacks

MEMCPY(destAddr:=ADR(mb_PLC_Memory[18]), srcAddr:=ADR(vgPBT_GCC_06.rPRESS), n:=SIZEOF(vgPBT_GCC_06.rPRESS));  //VG pressure readbacks
MEMCPY(destAddr:=ADR(mb_PLC_Memory[20]), srcAddr:=ADR(vgPBT_GPI_06.rPRESS), n:=SIZEOF(vgPBT_GPI_06.rPRESS));  //VG pressure readbacks

MEMCPY(destAddr:=ADR(mb_PLC_Memory[22]), srcAddr:=ADR(vgPBT_GCC_07.rPRESS), n:=SIZEOF(vgPBT_GCC_07.rPRESS));  //VG pressure readbacks
MEMCPY(destAddr:=ADR(mb_PLC_Memory[24]), srcAddr:=ADR(vgPBT_GPI_07.rPRESS), n:=SIZEOF(vgPBT_GPI_07.rPRESS));  //VG pressure readbacks

MEMCPY(destAddr:=ADR(mb_PLC_Memory[26]), srcAddr:=ADR(vgPBT_GCC_09.rPRESS), n:=SIZEOF(vgPBT_GCC_09.rPRESS));  //VG pressure readbacks
MEMCPY(destAddr:=ADR(mb_PLC_Memory[28]), srcAddr:=ADR(vgPBT_GPI_09.rPRESS), n:=SIZEOF(vgPBT_GPI_09.rPRESS));  //VG pressure readbacks

END_PROGRAM

p_MPSSup

PROGRAM p_MPSSup
VAR
END_VAR
q_xXCS_MPSOK := g_xIOState AND vgcPBT_VGC_01.i_xOpnLS AND vgcPBT_VGC_02.i_xOpnLS AND vgcPBT_VGC_03.i_xOpnLS AND vgcPBT_VGC_04.i_xOpnLS;
//

END_PROGRAM

p_SoftIOMap

PROGRAM p_SoftIOMap
VAR
END_VAR
(* Generic PLC Rail *)
//  i_iR32_31el3064s01c01 AT %I*: INT;
//  i_iR32_31el3064s01c02 AT %I*: INT;
//  i_iR32_31el3064s01c03 AT %I*: INT;
//  i_iR32_31el3064s01c04 AT %I*: INT;

//  i_xR32_31el1008s02c01 AT %I*: BOOL;
//  i_xR32_31el1008s02c05 AT %I*: BOOL;
//  i_xR32_31el1008s02c03 AT %I*: BOOL;
//  i_xR32_31el1008s02c04 AT %I*: BOOL;
//  i_xR32_31el1008s02c05 AT %I*: BOOL;
//  i_xR32_31el1008s02c06 AT %I*: BOOL;
//  i_xR32_31el1008s02c07 AT %I*: BOOL;
//  i_xR32_31el1008s02c08 AT %I*: BOOL;

//  q_xR32_31el2008s03c01 AT %Q*: BOOL;
//  q_xR32_31el2008s03c02 AT %Q*: BOOL;
//  q_xR32_31el2008s03c03 AT %Q*: BOOL;
//  q_xR32_31el2008s03c04 AT %Q*: BOOL;
//  q_xR32_31el2008s03c05 AT %Q*: BOOL;
//  q_xR32_31el2008s03c06 AT %Q*: BOOL;
//  q_xR32_31el2008s03c07 AT %Q*: BOOL;
//  q_xR32_31el2008s03c08 AT %Q*: BOOL;

//  q_xR32_31el2798s04c01 AT %Q*: BOOL;
//  q_xR32_31el2798s04c02 AT %Q*: BOOL;
//  q_xR32_31el2798s04c03 AT %Q*: BOOL;
//  q_xR32_31el2798s04c04 AT %Q*: BOOL;
//  q_xR32_31el2798s04c05 AT %Q*: BOOL;
//  q_xR32_31el2798s04c06 AT %Q*: BOOL;
//  q_xR32_31el2798s04c07 AT %Q*: BOOL;
//  q_xR32_31el2798s04c08 AT %Q*: BOOL;
//vgMXT_GCC_06 : ST_VG;
//vgcMXT_VGC_04 : ST_VGC;


        (* XRT Stand IDNO 13 *)
    vgPBT_GPI_02.iPRESS_R := i_iS13_EB1_ep3174c01;
    vgPBT_GCC_02.iPRESS_R := i_iS13_EB1_ep3174c02;
//  i_iS13_EB1_ep3174c03 AT %I* : INT;
//  i_iS13_EB1_ep3174c04 AT %I* : INT;

    q_xS13_EB2_ep2624c01 := vgPBT_GCC_02.xHV_DIS;
    q_xS13_EB2_ep2624c02 := FALSE;
    q_xS13_EB2_ep2624c03 := FALSE;
    q_xS13_EB2_ep2624c04 := FALSE;

    (* XRT stand IDNO 14 *)
    vgcPBT_VGC_01.i_xOpnLS := i_xS14_EB1_ep2338c01;
    vgcPBT_VGC_01.i_xClsLS := i_xS14_EB1_ep2338c02;
    q_xS14_EB1_ep2338c03 := vgcPBT_VGC_01.xOPN_DO;
    q_xS14_EB1_ep2338c04 := FALSE;
//  i_xS14_EB1_ep2338c05 AT %I* : BOOL;
//  i_xS14_EB1_ep2338c06 AT %I* : BOOL;
    q_xS14_EB1_ep2338c07 := FALSE;
    q_xS14_EB1_ep2338c08 := FALSE;
//g_ixUSVacOK :=


    (* XRT stand IDNO 20 *)
    vgPBT_GPI_04.iPRESS_R := i_iS20_EB1_ep3174c01;
    vgPBT_GCC_04.iPRESS_R := i_iS20_EB1_ep3174c02;
//  i_iS20_EB1_ep3174c03 AT %I* : INT;
//  i_iS20_EB1_ep3174c04 AT %I* : INT;

    q_xS20_EB2_ep2624c01 := vgPBT_GCC_04.xHV_DIS;
    q_xS20_EB2_ep2624c02 := FALSE;
    q_xS20_EB2_ep2624c03 := FALSE;
    q_xS20_EB2_ep2624c04 := FALSE;


    (* XRT stand IDNO 78 *)
    vgcPBT_VGC_02.i_xOpnLS := i_xS78_EB1_ep2338c01;
    vgcPBT_VGC_02.i_xClsLS := i_xS78_EB1_ep2338c02;
    q_xS78_EB1_ep2338c03 := vgcPBT_VGC_02.xOPN_DO;
    q_xS78_EB1_ep2338c04 := FALSE;
    i_xS78_EB1_ep2338c05 := FALSE; //AT %Q* : BOOL;
    i_xS78_EB1_ep2338c06 := FALSE;
    q_xS78_EB1_ep2338c07 := FALSE;
    q_xS78_EB1_ep2338c08 := FALSE;

    vgPBT_GPI_06.iPRESS_R := i_iS78_EB2_ep3174c01;
    vgPBT_GCC_06.iPRESS_R := i_iS78_EB2_ep3174c02;
    vgPBT_GPI_07.iPRESS_R := i_iS78_EB2_ep3174c03;
    vgPBT_GCC_07.iPRESS_R := i_iS78_EB2_ep3174c04;

    q_xS78_EB3_ep2624c01 := vgPBT_GCC_06.xHV_DIS;
    q_xS78_EB3_ep2624c02 := vgPBT_GCC_07.xHV_DIS;
    q_xS78_EB3_ep2624c03 := FALSE;
    q_xS78_EB3_ep2624c04 := FALSE;


    (* XRT stand IDNO 80 *)
    vgcPBT_VGC_03.i_xOpnLS := i_xS80_EB1_ep2338c01;
    vgcPBT_VGC_03.i_xClsLS := i_xS80_EB1_ep2338c02;
    q_xS80_EB1_ep2338c03 := vgcPBT_VGC_03.xOPN_DO;
    q_xS80_EB1_ep2338c04 := FALSE;
    i_xS80_EB1_ep2338c05 := FALSE; //AT %Q* : BOOL;
//  i_xS80_EB1_ep2338c06 AT %I* : BOOL;
    q_xS80_EB1_ep2338c07 := FALSE;
    q_xS80_EB1_ep2338c08 := FALSE;


    (* XRT stand IDNO 26 *)
    q_xS26_EB1_ep2338c01 := q_xXCS_MPSOK;
//  vgcPBT_VGC_04.i_xClsLS := i_xS26_EB1_ep2338c02;
//  q_xS26_EB1_ep2338c03 := ;
    q_xS26_EB1_ep2338c04 := FALSE;
    i_xS26_EB1_ep2338c05 := FALSE; //AT %Q* : BOOL;
//  i_xS26_EB1_ep2338c06 AT %I* : BOOL;
    q_xS26_EB1_ep2338c07 := FALSE;
    q_xS26_EB1_ep2338c08 := FALSE;



    (* XRT stand IDNO 83 *)
    vgPBT_GPI_09.iPRESS_R := i_iS83_EB1_ep3174c01;
    vgPBT_GCC_09.iPRESS_R := i_iS83_EB1_ep3174c02;
//  i_iS83_EB1_ep3174c03 AT %I* : INT;
//  i_iS83_EB1_ep3174c04 AT %I* : INT;

    q_xS83_EB2_ep2624c01 := vgPBT_GCC_09.xHV_DIS;
    q_xS83_EB2_ep2624c02 := FALSE;
    q_xS83_EB2_ep2624c03 := FALSE;
    q_xS83_EB2_ep2624c04 := FALSE;



    (* XRT stand IDNO 63 *)
    vgcPBT_VGC_04.i_xOpnLS := i_xS63_EB1_ep2338c01;
    vgcPBT_VGC_04.i_xClsLS := i_xS63_EB1_ep2338c02;
    q_xS63_EB1_ep2338c03 := vgcPBT_VGC_04.xOPN_DO;
    q_xS63_EB1_ep2338c04 := FALSE;
    i_xS63_EB1_ep2338c05 := FALSE; //AT %Q* : BOOL;
//  i_xS63_EB1_ep2338c06 AT %I* : BOOL;
    q_xS63_EB1_ep2338c07 := FALSE;
    q_xS63_EB1_ep2338c08 := FALSE;

END_PROGRAM

p_ValveSup

PROGRAM p_ValveSup
VAR
    fbPBT_VGC_01 : FB_VGC;
    fbPBT_VGC_02 : FB_VGC;
    fbPBT_VGC_03 : FB_VGC;
    fbPBT_VGC_04 : FB_VGC;

    //vgDownstream: LCLSVACUUMLIB.ST_VG;
END_VAR
vgcPBT_VGC_01.xEXT_OK := TRUE;
fbPBT_VGC_01(iq_stValve:=vgcPBT_VGC_01, i_stDSG:=vgPBT_GCC_04, i_stUSG:=vgPBT_GCC_02, i_xDis_DPIlk:=FALSE);

vgcPBT_VGC_02.xEXT_OK := TRUE;
fbPBT_VGC_02(iq_stValve:=vgcPBT_VGC_02, i_stDSG:=vgPBT_GCC_06, i_stUSG:=vgPBT_GCC_04, i_xDis_DPIlk:=FALSE);

vgcPBT_VGC_03.xEXT_OK := TRUE;
fbPBT_VGC_03(iq_stValve:=vgcPBT_VGC_03, i_stDSG:=vgPBT_GCC_09, i_stUSG:=vgPBT_GCC_07, i_xDis_DPIlk:=FALSE);

vgcPBT_VGC_04.xEXT_OK := TRUE;
vgMON_DUMMY.xPRESS_OK := g_ixDSVacOK;
vgMON_DUMMY.xAT_VAC := g_ixDSVacOK;
fbPBT_VGC_04(iq_stValve:=vgcPBT_VGC_04,  i_stUSG:=vgPBT_GCC_09, i_stDSG:=vgMON_DUMMY, i_xDis_DPIlk:=FALSE);

END_PROGRAM

p_XLegacyPLCModbus

PROGRAM p_XLegacyPLCModbus
VAR
    fbHFX_PLCInputCoilsRx   :       FB_MBReadInputs;

    i_xHFX_PLC_CnBits       :       ARRAY [0..20] OF BYTE;

    ftResetHFX      : F_TRIG;
    tonRetryHFX : TON;
END_VAR
(* Modbus Info for Koyo
Modbus Addresses for
Koyo DL05/06/240/250/260/430/440/450 PLCs
PLC Memory Type             | Modbus start address Decimal (octal) | Function codes
Inputs (X)                    2048 (04000)                                                  2
Special Relays (SP)   3072 (06000)                                                  2
Outputs (Y)                   2048 (04000)                                                  1, 5, 15
Control Relays (C)    3072 (06000)                                                  1, 5, 15
Timer Contacts (T)    6144 (014000)                                                 1, 5, 15
Counter Contacts (CT) 6400 (014400)                                                 1, 5, 15
Stage Status Bits (S) 6144 (012000)                                                 1, 5, 15
*)


(* HFX code *)
// Retry after some time
tonRetryHFX.IN := NOT fbHFX_PLCInputCoilsRx.bBusy;
tonRetryHFX.PT := T#10S;
tonRetryHFX();

ftResetHFX(CLK:=fbHFX_PLCInputCoilsRx.bBusy);
//ftResetHFX();

fbHFX_PLCInputCoilsRx.bExecute := ftResetHFX.Q OR tonRetryHFX.Q;

fbHFX_PLCInputCoilsRx(sIPAddr:='172.21.88.95', nTCPPort:=502, nQuantity:=32, nMBAddr:=8#6000, cbLength:=SIZEOF(i_xHFX_PLC_CnBits),  pDestAddr:=ADR(i_xHFX_PLC_CnBits), tTimeout:=T#5S);

IF fbHFX_PLCInputCoilsRx.bError THEN
    //run some error code for modbus
    //if there's a modbus error, set all incoming bits to zero
    // HFX PLC Relay coil C[3] is used for PBT downstream VacOK
    i_xHFX_PLC_CnBits[0].0 := 0;
    i_xHFX_PLC_CnBits[0].1 := 0;
    i_xHFX_PLC_CnBits[0].2 := 0;
    i_xHFX_PLC_CnBits[0].3 := 0;
    i_xHFX_PLC_CnBits[0].4 := 0;
    i_xHFX_PLC_CnBits[1].0 := 0;
    i_xHFX_PLC_CnBits[1].1 := 0;
    i_xHFX_PLC_CnBits[1].2 := 0;
    g_ixDSVacOK := FALSE;
    g_xNoHFXPLCResponse:= TRUE;


ELSIF Not ftResetHFX.Q AND fbHFX_PLCInputCoilsRx.cbRead > 0 THEN
    g_xNoHFXPLCResponse:= FALSE;
    g_ixDSVacOK := i_xHFX_PLC_CnBits[0].2;
    fbHFX_PLCInputCoilsRx.bExecute :=False;
ELSIF ftResetHFX.Q AND fbHFX_PLCInputCoilsRx.cbRead = 0 THEN
    //more error code cause we didn't manage to read anything
    //g_ixDSVacOK := FALSE;
    //g_xNoHFXPLCResponse:= TRUE;

END_IF

END_PROGRAM