PID_FB

Instrucción relacionada con el procesamiento PID

La implementación de esta FB permite introducir los parámetros de la instrucción F355_PID directamente utilizando los siguientes argumentos:

Parámetros

Entrada

Automatic

FALSE: Configuración manual de MV

TRUE: Configuración automática del PID

Forward (BOOL)

FALSE: Control inverso (calentamiento)

TRUE: Control directo (enfriamiento)

I_PD (BOOL)

FALSE: Control PI-D

TRUE: Control I-PD

SP (INT)

Valor de preselección, rango: 0-10000

PV (INT)

Valor actual, rango: 0-10000

Kp (INT)

Constante proporcional, rango: 1-9999, unidad: 0,1

Ti (INT)

Constante integral, rango: 1-30000, unidad: 0,1s

Td (INT)

Constante derivativa, rango: 1-10000, unidad: 0,1s

Ts (INT)

Periodo de muestreo, rango: 1-6000, unidad: 0,01s

LowerLimit (INT)

Límite inferior para el valor MV, rango: 0-10000

UpperLimit (INT)

Límite superior para el valor MV, rango: 1-10000

Entrada/salida

MV (INT)

Valor manipulado

Observaciones

  • No se puede realizar Auto-tuning con PID_FB. Para realizar auto-tuning, utilizar PID_FB_DUT.

  • El valor de MV se puede asignar externamente siempre que se inicializa el programa o cuando el valor de Automatic es FALSE.

  • Para poder obtener la máxima resolución y mantener el mínimo tiempo muerto entre LowerLimit y UpperLimit, sus valores deberían cubrir completamente el rango 0–10000.

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)

si la configuración de los parámetros está fuera del rango permitido

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)

si la configuración de los parámetros está fuera del rango permitido

Ejemplo

Variables Globales

En la Lista de Variables Globales, se definen las variables a las que pueden acceder todas las POUs del proyecto.

Cabecera de la POU

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU.Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

	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

Cuerpo 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

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

Cuerpo IL

Modificado el: 2023-07-06Comentarios sobre esta páginaLínea directa de Panasonic