F355_PID_DUT

Instrucción relacionada con el procesamiento PID

Esta instrucción de control PID se utiliza para regular un proceso (por ejemplo, un calentador) dando un valor medido (por ejemplo, temperatura) y un valor a la salida predeterminado (por ejemplo, 20°C).

Parámetros

Entrada

s (PID_DUT_31)

Para obtener una explicación detallada de los parámetros, consultar PID_DUT_31.

Observaciones

  • En lugar de utilizar esta instrucción F, se recomienda utilizar la instrucción FP7 correspondiente: FP_PID_BASIC

  • La función calcula un algoritmo PID cuyos parámetros se definen en una tabla en forma de un ARRAY con 30 elementos, que se introducen en la entrada s.

Banderas de error

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

En la inicialización de la variable PidParameters del tipo de datos PID_DUT_31, el límite superior de MV es 4000. La constante proporcional Kp se inicializa a 80 (8), Ti y Td a 200 (20s) y el ciclo de control Ts a 100 (1s).

Cuerpo de la POU

La función estándar MOVE copia el valor 16#8000 al elemento Control de la DUT PidParameters cuando la variable EnableAutoTuning pasa de FALSE a TRUE (es decir, cuando se activa el auto-tuning en la función F355_PID_DUT).

Las variables Set_Value_SP y Process_Value_PV se asignan a los elementos SP y PV de la DUT PidParameters. Estos reciben los valores desde los canales 0 y 1 del conversor A/D.

Puesto que el bloque de función F355_PID_DUT tiene una salida EN conectada directamente a la línea de conexión , la función se ejecuta cuando el PLC pasa a modo RUN. El valor de la salida calculada almacenada en el elemento MV de la DUT PidParameters es asignado a la variable Output_Value_MV. Este valor se devuelve a través del conversor D/A desde el PLC a la salida del sistema.

Cuerpo 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

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

Cuerpo IL

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