Obsidean_VM/04-SIDEL/06 - E5.007363 - Modifica O.../Source/source/PIDControl.md

2.8 KiB

// Block Type: FB
// Block Number: 40
// Original Network Languages: LAD, STL

FUNCTION_BLOCK "PIDControl"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1

VAR_INPUT
  PID_Enable : Bool;
  MAN_ON : Bool;
  P_Sel : Bool;
  I_Sel : Bool;
  D_Sel : Bool;
  FF_Enable : Bool;
  REG_INV : Bool;
  LMN_FAC : Real;
  LMN_OFF : Real;
END_VAR

VAR_OUTPUT
  LMN_P : Real;
  LMN_I : Real;
  LMN_D : Real;
END_VAR

VAR_INOUT
  PID_Data : STRUCT
    ConfigPID : Bool;
    Hold_Int : Bool;
    I_ITL : Bool;
    Alarm : Bool;
    Spare0_4 : Bool;
    Spare0_5 : Bool;
    Spare0_6 : Bool;
    Config : Bool;
    PID_FIX : Bool;
    Spare1_1 : Bool;
    High_Limit : Bool;
    Low_Limit : Bool;
    ManualControl : "Struct";
    Bp : Real;
    Ti : Real;
    Td : Real;
    Ff : Real;
    KP : Real;
    Pv : Real;
    OutMan : Real;
    Lsp : Real;
    OutMaxHmi : Real;
    OutMin : Real;
    OutMax : Real;
    Spare52 : Real;
    FfOut : Real;
    Sp : Real;
    Out : Real;
    Cycle_Time : Real;
    I_ITLVAL : Real;
    Dead_Band : Real;
  END_STRUCT;

END_VAR

VAR_STAT
  COM_RST : Bool;
  SP_INT : Real;
  PV_IN : Real;
  MAN : Real;
  TI_PID : Time;
  TD_PID : Time;
  CYCLE_PID : Time;
  DIVS_PID : Real;
  PID : "CONT_C:v1.1";
END_VAR

VAR_TEMP
  SCALE_MAX : Real;
  KP : Real;
END_VAR

BEGIN

  // Network 1: Manual Output Value (Original Language: STL)

  // --- BEGIN STL Network 1 ---
   
     	A	"MAN_ON"
     	L	"PID_Data".OutMan
     	JC	manu
     	L	0.0
     manu:   		T	"MAN"
   
  // --- END STL Network 1 ---

  // Network 2: Integral Value Reset (Original Language: LAD)

  "COM_RST" := "PID_Enable" AND "MAN_ON";

  // Network 3: Set Point Remote/Local (Original Language: STL)

  // --- BEGIN STL Network 3 ---
   
     	A	"PID_Data".ManualControl.LocalSP
     	L	"PID_Data".Lsp
     	JC	sp
     	L	"PID_Data".Sp
     	T	"PID_Data".Lsp
     sp:     		T	"PID_Data".Sp
     	T	"SP_INT"
   
  // --- END STL Network 3 ---

  // Network 4: Process Value (Original Language: STL)

  // --- BEGIN STL Network 4 ---
   
     	L	"PID_Data".Pv
     	T	"PV_IN"
   
  // --- END STL Network 4 ---

  // Network 5: PID Parameter (Original Language: STL)

  // --- BEGIN STL Network 5 ---
   
     	L	"PID_Data".Ti
     	L	1000.0
     	MUL_R
     	RND
     	T	"TI_PID"
     
     	L	"PID_Data".Td
     	L	1000.0
     	MUL_R
     	RND
     	T	"TD_PID"
     
     	L	"PID_Data".Cycle_Time
     	L	1000.0
     	MUL_R
     	RND
     	T	"CYCLE_PID"
     
     	L	"PID_Data".KP
     	AN	"REG_INV"
     	JC	FFEN
     	L	-1.0
     	MUL_R
     FFEN:   		T	"KP"
     	AN	"FF_Enable"
     	L	0.0
     	JC	FFVA
     	L	"PID_Data".FfOut
     FFVA:   		T	"DIVS_PID"
   
  // --- END STL Network 5 ---

  // Network 6:  (Original Language: STL)

  // --- BEGIN STL Network 6 ---
   
     	CALL	_Call_?
   
  // --- END STL Network 6 ---

END_FUNCTION_BLOCK