Obsidean_VM/04-SIDEL/00 - MASTER/Source/source/PIDControl.md

2.2 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 : "PID";
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