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.
Entrée
Condition de départ
Données de contrôle
Valeur courante (-30000–30000)
Paramètres de régulation PID
Entrée/sortie
Tableau de données des paramètres PID
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
Sortie largeur d’impulsions modulée (en option, peut être utilisée au lieu de la sortie valeur manipulée)
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.
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é.
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é.
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
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
bPWMOutput := FP_PID(Run := Automatic,
s1_Control := dutControl,
s2_ProcessValue := PV,
s3_Parameters := ParametersHold,
s4_WorkArea := ParametersNonHold);