FP_PID

Instrucción de control de procesos con salida PWM opcional

El control PID se ejecuta para mantener el valor PV tan cercano como sea posible al valor de preselección SP. Al contrario que FP_PID_BASIC, esta función permite una salida PWM (salida on-off). También es posible realizar un auto-tuning para calcular automáticamente los datos Kp, Ti y Td para el control PID.

Parámetros

Entrada

Run (BOOL)

Condición de ejecución

s1_Control (PID_Control_DUT)

Datos de control

s2_ProcessValue (INT)

Valor actual (-30000–30000)

s3_Parameters (PID_PARAMETERS_DUT)

Parámetros del control PID

Entrada/salida

s4_WorkArea ( PID_WORK_AREA_DUT)

Tabla de datos de parámetros PID

NOTA

Cuando se ejecuta la instrucción por primera vez, es decir, cuando la condición de ejecución especificada en Run pasa a TRUE, los valores por defecto se escriben en los miembros 1 a 9 de la DUT .

Antes de la segunda ejecución de FP_PID, es necesario cambiar los miembros 1 a 9 de la DUT a los valores requeridos.

Salida

PWM (BOOL)

Salida de pulsos modulados en anchura (opcional, en lugar de la salida del valor manipulado)

Observaciones

  • El periodo de la salida PWM es el ciclo de control Ts (la frecuencia de la salida PWM es 1/Ts) y el ciclo de trabajo es el valor manipulado MV en unidades de 0,01%, por ejemplo MV = 10000 implica un ciclo de trabajo del 100%.

  • La instrucción tiene que ser ejecutada dos veces. La primera ejecución restablece los valores en PID_WORK_AREA_DUT, con lo que es necesario establecer los valores correctos para los miembros 1 a 9 de la DUT en PID_WORK_AREA_DUT de modo que la segunda ejecución de la instrucción utilice los valores correctos.

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si el área especificada utilizando el modificador índice supera el límite.

  • si el valor especificado para un parámetro de PID_Parameters_DUT está fuera del rango permitido

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • si el área especificada utilizando el modificador índice supera el límite.

  • si el valor especificado para un parámetro de PID_Parameters_DUT está fuera del rango permitido

Ejemplo

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
		Automatic: BOOL:=TRUE;
		dutControl: PID_Control_DUT;
		PV: INT:=0;
		ParametersHold: PID_Parameters_DUT;
		ParametersNonHold: PID_Work_Area_DUT;
		bPWMOutput: BOOL:=FALSE;
	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 := 7 ;
        NETWORK_BODY
B(B_VARIN,,dutControl,15,2,17,4,);
B(B_VARIN,,ParametersHold,15,4,17,6,);
B(B_CONTACT,,Automatic,6,1,8,3,);
B(B_VARIN,,ParametersNonHold,15,5,17,7,);
B(B_F,FP_PID!,,17,0,30,7,,?DRun?Ds1_Control?Ds2_ProcessValue?Ds3_Parameters?Ds4_WorkArea?As4_WorkArea?APWM);
B(B_VARIN,,PV,15,3,17,5,);
B(B_VAROUT,,bPWMOutput,30,1,32,3,);
L(1,2,6,2);
L(8,2,17,2);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Cuerpo en ST

bPWMOutput := FP_PID(Run := Automatic, 
                     s1_Control := dutControl,
                     s2_ProcessValue := PV,
                     s3_Parameters := ParametersHold,
                     s4_WorkArea := ParametersNonHold);

Modificado el: 2022-04-19Comentarios sobre esta páginaLínea directa de Panasonic