F355_PID_DUT

Istruzione di elaborazione PID

L'istruzione di elaborazione PID è utilizzata per regolare un processo (p.es. un radiatore) sulla base di un valore misurato (p.es. temperatura) e di un valore di uscita predefinito (p.es. 20°C).

Parametri

Ingresso

s (PID_DUT_31)

Per una spiegazione dettagliata dei parametri, vedere PID_DUT_31

Note

  • Anziché utilizzare questa istruzione F, si consiglia di utilizzare l'istruzione FP7 corrispondente: FP_PID_BASIC

  • La funzione calcola un algoritmo PID i cui parametri sono definiti in una tabella dati sotto forma di ARRAY con 30 elementi, il quale viene inserito all'ingresso s.

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)

se le impostazioni di parametro non rientrano nell'intervallo ammissibile

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)

se le impostazioni di parametro non rientrano nell'intervallo ammissibile

Esempio

Variabili globali

Nella lista variabili globali si definiscono variabili alle quali possono accedere tutti i POU del progetto.

Intestazione del POU

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
		EnableAutoTuning: BOOL:=FALSE;
			(*Switch Auto Tuning On *)
		Set_Value_SP: WORD:=0;
			(*A/D CH0*)
		Process_Value_PV: WORD:=0;
			(*A/D CH1*)
		Output_Value_MV: WORD:=0;
			(*D/A*)
	END_VAR
	VAR 
		PidParameters: PID_DUT_31;
			(*PID Parameters*)
	END_VAR

Durante l'inizializzazione della variabile PidParameters del tipo di dato PID_DUT_31, il limite superiore valore manipolato MV viene impostato su 4000. Il guadagno proporzionale Kp viene inizialmente impostato su 80 (8), Ti e Td su 200 (20s) e il tempo di campionamento Ts su 100 (1s).

Corpo del POU

La funzione standard MOVE copia il valore 16#8000 nel membro Control della DUT PidParameters quando la variabile EnableAutoTuning passa da FALSE a TRUE (ossia attiva la modalità di controllo autotuning nella funzione F355_PID_DUT).

Le variabili Set_Value_SP e Process_Value_PV vengono allocate ai membri SP e PV della DUT PidParameters. Ricevono il relativo valore dal canale del convertitore A/D 0 e 1.

Poiché il Function Block F355_PID_DUT ha un'uscita EN collegata direttamente alla linea di alimentazione, la funzione viene eseguita quando il PLC è in modalità RUN. L'uscita del controllore programmabile calcolata, memorizzata dal membro MV della DUT PidParameters, viene allocata alla variabile Output_Value_MV. Il suo valore viene restituito tramite un convertitore D/A dal PLC all'uscita del sistema.

Corpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 6 ;
        NETWORK_BODY
B(B_F,E_MOVE,,10,2,17,6,,?DEN?Da_Num?AENO?C);
B(B_VAROUT,,PidParameters.Control,17,4,19,6,);
B(B_VARIN,,16#8000,8,4,10,6,);
B(B_CONTACT,,EnableAutoTuning,5,3,7,5,R);
B(B_COMMENT,,Enable Auto Tuning,2,1,12,2,);
L(1,4,5,4);
L(7,4,10,4);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
    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,,PidParameters.SP,11,2,13,4,);
B(B_COMMENT,,Fill the DUT PID_DUT_31 with the corresponding values,2,1,24,2,);
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,,PidParameters.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 := 7 ;
        NETWORK_BODY
B(B_VARIN,,PidParameters,8,5,10,7,);
B(B_F,F355_PID_DUT!,Instance,10,3,18,7,,?DEN?D@'s'?AENO);
B(B_COMMENT,,Carry out the PID arithmetic,2,1,21,2,);
L(1,5,10,5);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_VARIN,,PidParameters.MV,9,2,11,4,);
B(B_VAROUT,,Output_Value_MV,11,2,13,4,);
B(B_COMMENT,,Write manipulated value to the output,2,1,21,2,);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

(* Auto Tuning: *)
if DF(EnableAutoTuning) then
    PidParameters.Control:=16#8000;
end_if;
(* Fill the DUT PidParameters with the corresponding input values: *)
PidParameters.SP:=Set_Value_SP;
PidParameters.PV:=Process_Value_PV;
(* Carry out the PID arithmetic: *)
F355_PID_DUT(PidParameters);
(* Write the manipulated value to the output: *)
Output_Value_MV:=PidParameters.MV;

Corpo IL

L'ultima revisione: 2021-06-29Feedback su questa paginaPanasonic hotline