1. Крайне желательно обрабатывать PID в отдельной программе с отдельной от всего остального кода выделенной задачей с высшим приоритетом (100мс например)
2. ASo верно сказал. Вы нигде не вызываете экземпляр. Математика блока может работать только если блок циклически вызывается. Пример вызова ниже.
PHP код:
IF MODE_GVS=1 THEN SP_TE3:=TE3_MGVS_MAN:=TRUE; ELSE GVS_MAN:=FALSEEND_IF;(*Ðó÷íîé*)
IF MODE_GVS=2 THEN Y1_MANUAL:=Y1_M;  END_IF;(*Àâòî*)
IF Y1_MANUAL<0 THEN Y1_MANUAL:=0END_IF;IF Y1_MANUAL>100 THEN Y1_MANUAL:=100END_IF;
PID_Y1(
    
ACTUAL:= TE3_M, (* actual valueprocess variable *)
    
SET_POINT:= SP_TE3,(* desired valueset point *)
    
KP:= Y1_P,(* proportionality const. (P)*)
    
TN:= Y1_I, (* reset time (Iin sec *)
    
TV:= Y1_D, (* rate timederivative time (Din sec*)
    
Y_MANUAL:=Y1_MANUAL , (* Y is set to this value as long as MANUAL=TRUE *)
    
Y_OFFSET:= 0.1, (* offset for manipulated variable *)
    
Y_MIN:= 0.0, (* minimum value for manipulated variable *)
    
Y_MAX:= 100.0, (* maximum value for manipulated variable *)
    
MANUAL:= GVS_MAN, (*     TRUEmanualY is not influenced by controller,FALSEcontroller determines Y *)
    
RESET:= GVS_RESET, (* resetset Y output to Y_OFFSET and reset integral part *)
    
Y=> Y1_M, (* manipulated variableset value*)
    
LIMITS_ACTIVE=> Y1_LA,(* true set value would exceed limits Y_MINY_MAX *)
    
OVERFLOW=> Y1_OW);(* overflow in integral part *)