2.2 KiB
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