#include "beremiz.h"
#ifndef __POUS_H
#define __POUS_H

#include "accessor.h"
#include "iec_std_lib.h"

__DECLARE_ENUMERATED_TYPE(LOGLEVEL,
  LOGLEVEL__CRITICAL,
  LOGLEVEL__WARNING,
  LOGLEVEL__INFO,
  LOGLEVEL__DEBUG
)
// FUNCTION_BLOCK LOGGER
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(BOOL,TRIG)
  __DECLARE_VAR(STRING,MSG)
  __DECLARE_VAR(LOGLEVEL,LEVEL)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(BOOL,TRIG0)

} LOGGER;

void LOGGER_init__(LOGGER *data__, BOOL retain);
// Code part
void LOGGER_body__(LOGGER *data__);
// FUNCTION_BLOCK PYTHON_EVAL
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(BOOL,TRIG)
  __DECLARE_VAR(STRING,CODE)
  __DECLARE_VAR(BOOL,ACK)
  __DECLARE_VAR(STRING,RESULT)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(DWORD,STATE)
  __DECLARE_VAR(STRING,BUFFER)
  __DECLARE_VAR(STRING,PREBUFFER)
  __DECLARE_VAR(BOOL,TRIGM1)
  __DECLARE_VAR(BOOL,TRIGGED)

} PYTHON_EVAL;

void PYTHON_EVAL_init__(PYTHON_EVAL *data__, BOOL retain);
// Code part
void PYTHON_EVAL_body__(PYTHON_EVAL *data__);
// FUNCTION_BLOCK PYTHON_POLL
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(BOOL,TRIG)
  __DECLARE_VAR(STRING,CODE)
  __DECLARE_VAR(BOOL,ACK)
  __DECLARE_VAR(STRING,RESULT)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(DWORD,STATE)
  __DECLARE_VAR(STRING,BUFFER)
  __DECLARE_VAR(STRING,PREBUFFER)
  __DECLARE_VAR(BOOL,TRIGM1)
  __DECLARE_VAR(BOOL,TRIGGED)

} PYTHON_POLL;

void PYTHON_POLL_init__(PYTHON_POLL *data__, BOOL retain);
// Code part
void PYTHON_POLL_body__(PYTHON_POLL *data__);
// FUNCTION_BLOCK PYTHON_GEAR
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(UINT,N)
  __DECLARE_VAR(BOOL,TRIG)
  __DECLARE_VAR(STRING,CODE)
  __DECLARE_VAR(BOOL,ACK)
  __DECLARE_VAR(STRING,RESULT)

  // FB private variables - TEMP, private and located variables
  PYTHON_EVAL PY_EVAL;
  __DECLARE_VAR(UINT,COUNTER)
  __DECLARE_VAR(UINT,ADD10_OUT)
  __DECLARE_VAR(BOOL,EQ13_OUT)
  __DECLARE_VAR(UINT,SEL15_OUT)
  __DECLARE_VAR(BOOL,AND7_OUT)

} PYTHON_GEAR;

void PYTHON_GEAR_init__(PYTHON_GEAR *data__, BOOL retain);
// Code part
void PYTHON_GEAR_body__(PYTHON_GEAR *data__);
// FUNCTION_BLOCK SCALE_TO_REAL
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(UINT,RAW_INPUT_VALUE)
  __DECLARE_VAR(REAL,SCALED_REAL)
  __DECLARE_VAR(REAL,REAL_MAX)
  __DECLARE_VAR(REAL,REAL_MIN)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(UINT,RAW_MAX)
  __DECLARE_VAR(UINT,RAW_MIN)
  __DECLARE_VAR(REAL,RATE)
  __DECLARE_VAR(REAL,OFFSET)

} SCALE_TO_REAL;

void SCALE_TO_REAL_init__(SCALE_TO_REAL *data__, BOOL retain);
// Code part
void SCALE_TO_REAL_body__(SCALE_TO_REAL *data__);
// FUNCTION_BLOCK SCALE_TO_UINT
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(REAL,REAL_IN)
  __DECLARE_VAR(UINT,UINT_OUT)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(REAL,DIV1_OUT)
  __DECLARE_VAR(REAL,MUL4_OUT)
  __DECLARE_VAR(UINT,REAL_TO_UINT6_OUT)

} SCALE_TO_UINT;

void SCALE_TO_UINT_init__(SCALE_TO_UINT *data__, BOOL retain);
// Code part
void SCALE_TO_UINT_body__(SCALE_TO_UINT *data__);
// FUNCTION_BLOCK COMPOSITION_CONTROL
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(UINT,A_IN_PURGE)
  __DECLARE_VAR(UINT,A_SETPOINT)
  __DECLARE_VAR(UINT,CURR_POS)
  __DECLARE_VAR(UINT,NEW_POS)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(REAL,A_IN_PURGE_REAL)
  __DECLARE_VAR(REAL,A_SETPOINT_REAL)
  __DECLARE_VAR(REAL,VALVE_POS_REAL)
  __DECLARE_VAR(REAL,POS_UPDATE_REAL)
  __DECLARE_VAR(REAL,VALVE_POS_NOMINAL)
  __DECLARE_VAR(REAL,COMPOSITION_K)
  __DECLARE_VAR(REAL,COMPOSITION_TI)
  __DECLARE_VAR(TIME,CYCLE_TIME)
  SCALE_TO_REAL SCALE_TO_REAL3;
  SCALE_TO_REAL SCALE_TO_REAL2;
  SCALE_TO_UINT SCALE_TO_UINT0;
  __DECLARE_VAR(REAL,COMP_MAX)
  __DECLARE_VAR(REAL,COMP_MIN)
  __DECLARE_VAR(REAL,POS_MAX)
  __DECLARE_VAR(REAL,POS_MIN)
  SCALE_TO_REAL SCALE_TO_REAL0;
  __DECLARE_VAR(REAL,SUB45_OUT)
  __DECLARE_VAR(REAL,MUL46_OUT)
  __DECLARE_VAR(REAL,ADD42_OUT)
  __DECLARE_VAR(REAL,LIMIT44_OUT)

} COMPOSITION_CONTROL;

void COMPOSITION_CONTROL_init__(COMPOSITION_CONTROL *data__, BOOL retain);
// Code part
void COMPOSITION_CONTROL_body__(COMPOSITION_CONTROL *data__);
// FUNCTION_BLOCK INITIALIZE_SP
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(UINT,FLOW_SP)
  __DECLARE_VAR(UINT,A_SP)
  __DECLARE_VAR(UINT,PRESS_SP)
  __DECLARE_VAR(UINT,OVER_SP)
  __DECLARE_VAR(UINT,LEVEL_SP)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(UINT,FLOW_SP_C)
  __DECLARE_VAR(UINT,A_SP_C)
  __DECLARE_VAR(UINT,PRESS_SP_C)
  __DECLARE_VAR(UINT,OVER_SP_C)
  __DECLARE_VAR(UINT,LEVEL_SP_C)
  __DECLARE_VAR(UINT,MOVE3_OUT)
  __DECLARE_VAR(UINT,MOVE7_OUT)
  __DECLARE_VAR(UINT,MOVE11_OUT)
  __DECLARE_VAR(UINT,MOVE15_OUT)
  __DECLARE_VAR(UINT,MOVE19_OUT)

} INITIALIZE_SP;

void INITIALIZE_SP_init__(INITIALIZE_SP *data__, BOOL retain);
// Code part
void INITIALIZE_SP_body__(INITIALIZE_SP *data__);
// FUNCTION_BLOCK PRESSURE_CONTROL
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(UINT,PRESSURE)
  __DECLARE_VAR(UINT,PRESSURE_SP)
  __DECLARE_VAR(UINT,CURR_POS)
  __DECLARE_VAR(UINT,VALVE_POS)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(REAL,PRESSURE_REAL)
  __DECLARE_VAR(REAL,PRESSURE_SP_REAL)
  __DECLARE_VAR(REAL,VALVE_POS_REAL)
  __DECLARE_VAR(REAL,POS_UPDATE_REAL)
  __DECLARE_VAR(REAL,VALVE_POS_NOMINAL)
  __DECLARE_VAR(REAL,PRESSURE_K)
  __DECLARE_VAR(REAL,PRESSURE_TI)
  __DECLARE_VAR(TIME,CYCLE_TIME)
  SCALE_TO_REAL SCALE_TO_REAL5;
  SCALE_TO_REAL SCALE_TO_REAL4;
  SCALE_TO_UINT SCALE_TO_UINT0;
  __DECLARE_VAR(REAL,PRESSURE_MAX)
  __DECLARE_VAR(REAL,PRESSURE_MIN)
  __DECLARE_VAR(REAL,POS_MIN)
  __DECLARE_VAR(REAL,POS_MAX)
  SCALE_TO_REAL SCALE_TO_REAL0;
  __DECLARE_VAR(REAL,SUB57_OUT)
  __DECLARE_VAR(REAL,MUL60_OUT)
  __DECLARE_VAR(REAL,SUB53_OUT)
  __DECLARE_VAR(REAL,LIMIT55_OUT)

} PRESSURE_CONTROL;

void PRESSURE_CONTROL_init__(PRESSURE_CONTROL *data__, BOOL retain);
// Code part
void PRESSURE_CONTROL_body__(PRESSURE_CONTROL *data__);
// FUNCTION_BLOCK FLOW_CONTROL
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(UINT,PRODUCT_FLOW)
  __DECLARE_VAR(UINT,NEW_POS)
  __DECLARE_VAR(UINT,CURR_POS)
  __DECLARE_VAR(UINT,FLOW_SET_IN)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(REAL,FLOW_K)
  __DECLARE_VAR(REAL,FLOW_TI)
  __DECLARE_VAR(REAL,FLOW_TD)
  __DECLARE_VAR(REAL,PRODUCT_FLOW_REAL)
  __DECLARE_VAR(TIME,CYCLE_TIME)
  __DECLARE_VAR(REAL,POS_UPDATE_REAL)
  __DECLARE_VAR(REAL,CURR_POS_REAL)
  __DECLARE_VAR(REAL,FLOW_SET_REAL)
  SCALE_TO_REAL SCALE_TO_REAL0;
  SCALE_TO_REAL SCALE_TO_REAL1;
  __DECLARE_VAR(REAL,FLOW_MAX)
  __DECLARE_VAR(REAL,FLOW_MIN)
  __DECLARE_VAR(REAL,POS_MIN)
  __DECLARE_VAR(REAL,POS_MAX)
  SCALE_TO_REAL SCALE_TO_REAL2;
  SCALE_TO_UINT SCALE_TO_UINT0;
  __DECLARE_VAR(REAL,SUB59_OUT)
  __DECLARE_VAR(REAL,MUL60_OUT)
  __DECLARE_VAR(REAL,ADD58_OUT)
  __DECLARE_VAR(REAL,LIMIT40_OUT)

} FLOW_CONTROL;

void FLOW_CONTROL_init__(FLOW_CONTROL *data__, BOOL retain);
// Code part
void FLOW_CONTROL_body__(FLOW_CONTROL *data__);
// FUNCTION_BLOCK LEVEL_CONTROL
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(UINT,LIQUID_LEVEL)
  __DECLARE_VAR(UINT,LEVEL_SP)
  __DECLARE_VAR(UINT,CURR_POS)
  __DECLARE_VAR(UINT,NEW_POS)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(TIME,CYCLE_TIME)
  __DECLARE_VAR(REAL,LEVEL_K)
  __DECLARE_VAR(REAL,LEVEL_TI)
  SCALE_TO_REAL SCALE_TO_REAL0;
  __DECLARE_VAR(REAL,LEVEL_MAX)
  __DECLARE_VAR(REAL,LEVEL_MIN)
  __DECLARE_VAR(REAL,POS_MAX)
  __DECLARE_VAR(REAL,POS_MIN)
  __DECLARE_VAR(REAL,LEVEL_REAL)
  __DECLARE_VAR(REAL,POS_REAL)
  __DECLARE_VAR(REAL,POS_UPDATE_REAL)
  __DECLARE_VAR(REAL,SP_REAL)
  SCALE_TO_REAL SCALE_TO_REAL1;
  SCALE_TO_REAL SCALE_TO_REAL2;
  SCALE_TO_UINT SCALE_TO_UINT0;
  __DECLARE_VAR(REAL,SUB32_OUT)
  __DECLARE_VAR(REAL,MUL33_OUT)
  __DECLARE_VAR(REAL,SUB30_OUT)
  __DECLARE_VAR(REAL,LIMIT25_OUT)

} LEVEL_CONTROL;

void LEVEL_CONTROL_init__(LEVEL_CONTROL *data__, BOOL retain);
// Code part
void LEVEL_CONTROL_body__(LEVEL_CONTROL *data__);
// FUNCTION_BLOCK SCALE_TO_SIGNED
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(UINT,INPUT_UINT)
  __DECLARE_VAR(INT,OUTPUT_INT)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(UINT,DIV3_OUT)
  __DECLARE_VAR(UINT,ABS8_OUT)
  __DECLARE_VAR(INT,UINT_TO_INT9_OUT)

} SCALE_TO_SIGNED;

void SCALE_TO_SIGNED_init__(SCALE_TO_SIGNED *data__, BOOL retain);
// Code part
void SCALE_TO_SIGNED_body__(SCALE_TO_SIGNED *data__);
// FUNCTION_BLOCK PRESSURE_OVERRIDE
// Data part
typedef struct {
  // FB Interface - IN, OUT, IN_OUT variables
  __DECLARE_VAR(BOOL,EN)
  __DECLARE_VAR(BOOL,ENO)
  __DECLARE_VAR(UINT,PRESSURE)
  __DECLARE_VAR(UINT,CURR_SP)
  __DECLARE_VAR(UINT,PRODUCT_SP)
  __DECLARE_VAR(UINT,OVERRIDE_SP)

  // FB private variables - TEMP, private and located variables
  __DECLARE_VAR(REAL,PRESSURE_REAL)
  __DECLARE_VAR(REAL,CURR_SP_REAL)
  __DECLARE_VAR(REAL,PRODUCT_SP_REAL)
  __DECLARE_VAR(REAL,SP_UPDATE)
  __DECLARE_VAR(REAL,PRODUCT_SP_NOMINL)
  __DECLARE_VAR(REAL,OVERRIDE_SP_REAL)
  __DECLARE_VAR(REAL,OVERRIDE_K)
  __DECLARE_VAR(REAL,OVERRIDE_TI)
  __DECLARE_VAR(TIME,CYCLE_TIME)
  SCALE_TO_REAL SCALE_TO_REAL7;
  __DECLARE_VAR(REAL,PRESSURE_MAX)
  __DECLARE_VAR(REAL,PRESSURE_MIN)
  __DECLARE_VAR(REAL,FLOW_MAX)
  __DECLARE_VAR(REAL,FLOW_MIN)
  SCALE_TO_REAL SCALE_TO_REAL0;
  __DECLARE_VAR(REAL,SUB86_OUT)
  __DECLARE_VAR(REAL,MUL87_OUT)
  __DECLARE_VAR(REAL,MAX84_OUT)
  __DECLARE_VAR(REAL,ADD85_OUT)
  __DECLARE_VAR(REAL,LIMIT67_OUT)
  __DECLARE_VAR(REAL,DIV73_OUT)
  __DECLARE_VAR(REAL,MUL75_OUT)
  __DECLARE_VAR(UINT,REAL_TO_UINT79_OUT)

} PRESSURE_OVERRIDE;

void PRESSURE_OVERRIDE_init__(PRESSURE_OVERRIDE *data__, BOOL retain);
// Code part
void PRESSURE_OVERRIDE_body__(PRESSURE_OVERRIDE *data__);
// PROGRAM MAIN
// Data part
typedef struct {
  // PROGRAM Interface - IN, OUT, IN_OUT variables

  // PROGRAM private variables - TEMP, private and located variables
  FLOW_CONTROL FLOW_CONTROL0;
  __DECLARE_VAR(BOOL,FIRST_RUN)
  __DECLARE_VAR(UINT,FLOW_SET)
  __DECLARE_VAR(UINT,A_SETPOINT)
  __DECLARE_VAR(UINT,PRESSURE_SP)
  __DECLARE_VAR(UINT,OVERRIDE_SP)
  __DECLARE_VAR(UINT,LEVEL_SP)
  COMPOSITION_CONTROL COMPOSITION_CONTROL0;
  SCALE_TO_SIGNED SCALE_TO_SIGNED0;
  __DECLARE_VAR(UINT,F1_VALVE_POS)
  __DECLARE_VAR(UINT,F1_FLOW)
  __DECLARE_VAR(UINT,F2_VALVE_POS)
  __DECLARE_VAR(UINT,F2_FLOW)
  __DECLARE_VAR(UINT,PURGE_VALVE_POS)
  __DECLARE_VAR(UINT,PURGE_FLOW)
  __DECLARE_VAR(UINT,PRODUCT_VALVE_POS)
  __DECLARE_VAR(UINT,PRODUCT_FLOW)
  __DECLARE_VAR(UINT,PRESSURE)
  __DECLARE_VAR(UINT,LEVEL)
  __DECLARE_VAR(UINT,A_IN_PURGE)
  __DECLARE_VAR(UINT,B_IN_PURGE)
  __DECLARE_VAR(UINT,C_IN_PURGE)
  __DECLARE_VAR(UINT,F1_VALVE_SP)
  __DECLARE_VAR(UINT,F2_VALVE_SP)
  __DECLARE_VAR(UINT,PURGE_VALVE_SP)
  __DECLARE_VAR(UINT,PRODUCT_VALVE_SP)
  __DECLARE_VAR(UINT,PRODUCT_VALVE_SAFE)
  __DECLARE_VAR(UINT,PURGE_VALVE_SAFE)
  __DECLARE_VAR(UINT,F1_VALVE_SAFE)
  __DECLARE_VAR(UINT,F2_VALVE_SAFE)
  PRESSURE_CONTROL PRESSURE_CONTROL0;
  __DECLARE_VAR(INT,HMI_PRESSURE)
  __DECLARE_VAR(INT,HMI_LEVEL)
  __DECLARE_VAR(INT,HMI_F1_VALVE_POS)
  __DECLARE_VAR(INT,HMI_F1_FLOW)
  __DECLARE_VAR(INT,HMI_F2_VALVE_POS)
  __DECLARE_VAR(INT,HMI_F2_FLOW)
  __DECLARE_VAR(INT,HMI_PURGE_VALVE_POS)
  __DECLARE_VAR(INT,HMI_PURGE_FLOW)
  __DECLARE_VAR(INT,HMI_PRODUCT_VALVE_POS)
  __DECLARE_VAR(INT,HMI_PRODUCT_FLOW)
  __DECLARE_VAR(UINT,SCAN_COUNT)
  SCALE_TO_SIGNED SCALE_TO_SIGNED1;
  SCALE_TO_SIGNED SCALE_TO_SIGNED2;
  SCALE_TO_SIGNED SCALE_TO_SIGNED3;
  SCALE_TO_SIGNED SCALE_TO_SIGNED4;
  SCALE_TO_SIGNED SCALE_TO_SIGNED5;
  SCALE_TO_SIGNED SCALE_TO_SIGNED6;
  SCALE_TO_SIGNED SCALE_TO_SIGNED7;
  SCALE_TO_SIGNED SCALE_TO_SIGNED8;
  SCALE_TO_SIGNED SCALE_TO_SIGNED9;
  PRESSURE_OVERRIDE PRESSURE_OVERRIDE0;
  LEVEL_CONTROL LEVEL_CONTROL0;
  __DECLARE_EXTERNAL(BOOL,RUN_BIT)
  __DECLARE_VAR(BOOL,RUN_BIT0)
  INITIALIZE_SP INITIALIZE_SP0;
  __DECLARE_VAR(UINT,ADD87_OUT)
  __DECLARE_VAR(BOOL,GE91_OUT)
  __DECLARE_VAR(BOOL,MOVE92_ENO)
  __DECLARE_VAR(UINT,MOVE92_OUT)

} MAIN;

void MAIN_init__(MAIN *data__, BOOL retain);
// Code part
void MAIN_body__(MAIN *data__);
#endif //__POUS_H
