FP_PID

Régulation PID avec sortie MLI en option

La régulation PID est exécutée pour maintenir la valeur courante PV le plus proche possible de la valeur de consigne SP. Contrairement à FP_PID_BASIC, cette instruction permet une sortie MLI (sortie PWM ON/OFF). La fonction de réglage automatique est également disponible. Elle permet de calculer automatiquement les données de régulation PID Kp, Ti et Td.

Paramètres

Entrée

Run (BOOL)

Condition de départ

s1_Control (PID_Control_DUT)

Données de contrôle

s2_ProcessValue (INT)

Valeur courante (-30000–30000)

s3_Parameters (PID_PARAMETERS_DUT)

Paramètres de régulation PID

Entrée/sortie

s4_WorkArea ( PID_WORK_AREA_DUT)

Tableau de données des paramètres PID

NOTA

Lorsque vous exécutez cette instruction pour la première fois, c.-à-d. lorsque la condition d’exécution spécifiée par Run passe à TRUE, les valeurs par défaut sont écrites vers les éléments 1 à 9 du DUT.

Avant d’exécuter FP_PID la deuxième fois, les valeurs des éléments 1 à 9 du DUT doivent être remplacées par les valeurs requises.

Sortie

PWM (BOOL)

Sortie largeur d’impulsions modulée (en option, peut être utilisée au lieu de la sortie valeur manipulée)

Remarques

  • Le cycle de la sortie MLI (PWM) correspond à la durée de l’échantillonnage Ts (la fréquence de la sortie PWM est de 1/Ts) et le rapport impulsion/pause correspond à la valeur manipulée MV 0,01%, par ex. MV = 10000 signifie un rapport impulsion/pause de 100%.

  • L’instruction doit être exécutée deux fois. La première exécution réinitialise les valeurs de PID_WORK_AREA_DUT. Il est donc nécessaire de remplacer les valeurs des éléments 1 à 9 du DUT PID_WORK_AREA_DUT par les valeurs correctes pour que l’instruction utilise ces valeurs correctes lors de sa deuxième exécution.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

  • Si une valeur spécifiée pour un paramètre de PID_Parameters_DUT est en dehors de l’intervalle autorisé.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

  • Si une valeur spécifiée pour un paramètre de PID_Parameters_DUT est en dehors de l’intervalle autorisé.

Exemple

En-tête du POU

Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.

	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

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

Corps en ST

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

Modifié le : 2022-04-27Commentaires sur cette pageAssistance téléphonique