Istruzione di elaborazione PID
Questa implementazione vi permette di impostare i parametri di F355_PID direttamente tramite argomenti:
Ingresso
FALSE: Impostazione manuale di MV possibile
TRUE: MV automatico controllato da PID
FALSE: Controllo inverso (riscaldamento)
TRUE: Controllo avanti (raffreddamento)
FALSE: Controllo PI-D
TRUE: Controllo I-PD
Valore target, intervallo 0-10000
Valore corrente, intervallo 0-10000
Guadagno proporzionale, intervallo: 1-9999, unità: 0,1
Tempo integrale, intervallo: 1-30000, unità: 0,1s
Tempo derivativo, intervallo: 1-10000, unità: 0,1s
Tempo di campionamento, intervallo: 1-6000, unità: 0,01s
Limite inferiore valore manipolato, intervallo: 0-10000
Limite superiore valore manipolato, intervallo: 1-10000
Ingresso/uscita
Valore manipolato
L'autotuning non è possibile con PID_FB. Per questo utilizzate PID_FB_DUT.
Il valore di MV può essere allocato esternamente quando il programma viene inizializzato o quando il valore di Automatic è FALSE.
Per ottenere la risoluzione massima e il tempo morto minimo oltre LowerLimit e UpperLimit, i valori di questi dovrebbero coprire, se possibile, l'intero intervallo 0–10000.
se le impostazioni di parametro non rientrano nell'intervallo ammissibile
se le impostazioni di parametro non rientrano nell'intervallo ammissibile
Nella lista variabili globali si definiscono variabili alle quali possono accedere tutti i POU del progetto.
Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.
VAR_EXTERNAL
Set_Value_SP: INT:=0;
(*A/D CH0*)
Process_Value_PV: INT:=0;
(*A/D CH1*)
Output_Value_MV: INT:=0;
(*D/A*)
END_VAR
VAR
PID_Control: PID_FB;
(*PID Parameters*)
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 15 ;
NETWORK_BODY
B(B_FB,PID_FB!,PID_Control,11,1,19,15,,?BAutomatic?BForward?BI_PD?BSP?BPV?BKp?BTi?BTd?BTs?BLowerLimit?BUpperLimit?BMV?AMV);
B(B_VARIN,,TRUE,9,2,11,4,);
B(B_VARIN,,FALSE,9,3,11,5,);
B(B_VARIN,,FALSE,9,4,11,6,);
B(B_VARIN,,Set_Value_SP,9,5,11,7,);
B(B_VARIN,,Process_Value_PV,9,6,11,8,);
B(B_VARIN,,15,9,7,11,9,);
B(B_VARIN,,200,9,8,11,10,);
B(B_VARIN,,1,9,9,11,11,);
B(B_VARIN,,10,9,10,11,12,);
B(B_VARIN,,0,9,11,11,13,);
B(B_VARIN,,1000,9,12,11,14,);
B(B_VARIN,,Output_Value_MV,9,13,11,15,);
L(1,0,1,15);
END_NETWORK_BODY
END_NET_WORK
END_BODY
PID_Control( Automatic:= TRUE,
Forward:= FALSE,
I_PD:= FALSE,
SP:= Set_Value_SP,
PV:= Process_Value_PV,
Kp:= 15,
Ti:= 200,
Td:= 1,
Ts:= 10,
LowerLimit:= 0,
UpperLimit:= 1000,
MV:= Output_Value_MV);