Istruzione di elaborazione PID
Questa implementazione vi permette di accedere all'istruzione F355_PID tramite la struttura PID_DUT_31.
Ingresso
FALSE: Impostazione manuale di MV possibile
TRUE: MV automatico controllato da PID
Uscita
Per una spiegazione dettagliata dei parametri, vedere PID_DUT_31
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, questi valori 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_Parameter: PID_DUT;
(*PID Parameters*)
PID_Control: PID_FB_DUT;
@'': @'';
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_VARIN,,Set_Value_SP,9,2,11,4,);
B(B_VAROUT,,PID_Parameter.SP,11,2,13,4,);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 2 ;
NETWORK_BODY
B(B_VARIN,,Process_Value_PV,9,0,11,2,);
B(B_VAROUT,,PID_Parameter.PV,11,0,13,2,);
L(1,0,1,2);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_FB,PID_FB_DUT!,PID_Control,10,1,18,5,,?BAutomatic?BPidDut?APidDut);
B(B_VARIN,,TRUE,8,2,10,4,);
B(B_VARIN,,PID_Parameter,8,3,10,5,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_VARIN,,PID_Parameter.MV,10,2,12,4,);
B(B_VAROUT,,Output_Value_MV,12,2,14,4,);
B(B_COMMENT,,Write manipulated value to the output,3,1,22,2,);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
END_BODY
PID_Parameter.SP := Set_Value_SP;
PID_Parameter.PV := Process_Value_PV;
PID_Control( Automatic:= TRUE,
PidDut:= PID_Parameter);
Output_Value_MV := PID_Parameter.MV;