PID_FB

Istruzione di elaborazione PID

Questa implementazione vi permette di impostare i parametri di F355_PID direttamente tramite argomenti:

Parametri

Ingresso

Automatic

FALSE: Impostazione manuale di MV possibile

TRUE: MV automatico controllato da PID

Forward (BOOL)

FALSE: Controllo inverso (riscaldamento)

TRUE: Controllo avanti (raffreddamento)

I_PD (BOOL)

FALSE: Controllo PI-D

TRUE: Controllo I-PD

SP (INT)

Valore target, intervallo 0-10000

PV (INT)

Valore corrente, intervallo 0-10000

Kp (INT)

Guadagno proporzionale, intervallo: 1-9999, unità: 0,1

Ti (INT)

Tempo integrale, intervallo: 1-30000, unità: 0,1s

Td (INT)

Tempo derivativo, intervallo: 1-10000, unità: 0,1s

Ts (INT)

Tempo di campionamento, intervallo: 1-6000, unità: 0,01s

LowerLimit (INT)

Limite inferiore valore manipolato, intervallo: 0-10000

UpperLimit (INT)

Limite superiore valore manipolato, intervallo: 1-10000

Ingresso/uscita

MV (INT)

Valore manipolato

Note

  • 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.

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
		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

Corpo LD

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

Corpo ST

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);

Corpo IL

L'ultima revisione: 2023-07-06Feedback su questa paginaPanasonic hotline