```pascal // 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 ```