F355_PID_DUT

Instructions de régulation PID

Cette instruction de régulation PID est utilisée pour réguler un processus (le chauffage, par ex.) en fonction de la valeur mesurée (la température, par ex.) et d’une valeur de sortie prédéterminée (20°C, par ex.).

Paramètres

Entrée

s (PID_DUT_31)

Pour en savoir plus sur les paramètres, voir : PID_DUT_31

Remarques

  • Au lieu d’utiliser cette instruction F, nous recommandons d’utiliser l’instruction FP7 correspondante : FP_PID_BASIC

  • La fonction calcule un algorithme PID dont les paramètres déterminés dans un tableau de données (ARRAY) de 30 éléments sont transmis en entrée s.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)

Si les paramètres sont en dehors de l’intervalle autorisé.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)

Si les paramètres sont en dehors de l’intervalle autorisé.

Exemple

GVL

Dans la liste des variables globales, vous définissez des variables qui sont accessibles par tous les POU dans le projet.

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

Lorsque la variable PidParameters du type de données PID_DUT_31 est initialisée, la limite supérieure MV est de 4000. Initialement, le gain proportionnel Kp est défini à 80 (8), Ti et Td à 200 (20s) et le temps d’échantillonnage Ts à 100 (1s).

Corps du POU

La fonction standard MOVE copie la valeur 16#8000 dans le premier élément Control du DUT PidParameters, lorsque la variable EnableAutoTuning passe de FALSE à TRUE (activation du réglage automatique dans la fonction F355_PID_DUT).

Les variables Set_Value_SP et Process_Value_PV sont affectées aux éléments SP et PV du DUT PidParameters. Elles reçoivent leurs valeurs via les voies 0 et 1 du convertisseur A/D.

Le bloc fonction F355_PID_DUT ayant une sortie EN directement connectée à la barre d’alimentation, la fonction est exécutée lorsque l’automate est en mode RUN. Le résultat du calcul PID est sauvegardé dans l’élément MV du DUT PidParameters et transmis à la variable Output_Value_MV. Sa valeur est renvoyée de l’automate à la sortie du système, via un convertisseur N/A.

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

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

Corps en IL

Modifié le : 2021-08-09Commentaires sur cette pageAssistance téléphonique