Instructions de régulation PID
Cette implémentation permet de définir les paramètres de F355_PID directement via les arguments suivants :
Entrée
FALSE : paramètrage manuel de MV possible
TRUE : valeur manipulée définie automatiquement
FALSE : régulation inverse (chauffage)
TRUE : régulation directe (refroidissement)
FALSE : régulation PI-D
TRUE : régulation I-PD
Valeur de consigne, intervalle 0-10000
Valeur courante, intervalle 0-10000
Gain proportionnel, intervalle : 1-9999, unité : 0,1
Temps d’intégration, intervalle : 1-30000, unité : 0,1s
Temps de dérivation, intervalle : 1-10000, unité : 0,1s
Temps d’échantillonnage, intervalle : 1-6000, unité : 0,01s
Limite inférieure de la valeur manipulée, intervalle : 0-10000
Limite supérieure de la valeur manipulée, intervalle : 1-10000
Entrée/sortie
Valeur manipulée
PID_FB ne permet pas d’utiliser la fonction de réglage automatique. Vous pouvez le faire avec PID_FB_DUT.
Pour MV, la valeur peut être affectée de manière externe soit lorsque le programme est initialisé ou lorsque la valeur de Automatic est FALSE.
Pour atteindre une résolution maximale et un temps mort minimal au-delà des limites inférieures (LowerLimit) et supérieures (UpperLimit), leurs valeurs doivent être, si possible, dans l’intervalle de 0–10000.
Si les paramètres sont en dehors de l’intervalle autorisé.
Si les paramètres sont en dehors de l’intervalle autorisé.
Dans la liste des variables globales, vous définissez des variables qui sont accessibles par tous les POU dans le projet.
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
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
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
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);