F356_PID_PWM

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 à F355_PID_DUT, cette instruction permet une sortie MLI (sortie 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

Control (F356_Control_DUT)

Données de contrôle

ParametersHold (F356_Parameters_Hold_DUT)

Paramètres de régulation PID

ParametersNonHold (F356_Parameters_NonHold_DUT)

Valeur manipulée MV, paramètres de régulation supplémentaires, zone de réglage automatique et de travail

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.

ProcessValue (INT)

Valeur courante (-30000–30000)

Sortie

PWM_Output (BOOL) (voir nota)

Sortie largeur d’impulsions modulée (en option, au lieu de la valeur manipulée)

Remarques

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

  • Abréviations utilisées pour décrire la régulation PID

    Abréviation

    Signification

    Désignation

    PV

    Valeur courante

    Valeur courante, valeur mesurée

    SP

    Valeur de consigne

    Valeur de consigne

    MV

    Valeur manipulée

    Valeur de sortie, variable manipulée

    Ts

    Temps d’échantillonnage

    Durée du cycle

    Ti

    Temps d’intégration

    -

    Td

    Temps de dérivation

    -

    Kp

    Gain proportionnel

    -

    AT

    Réglage automatique

    -

  • 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.

Informations générales sur la programmation

  1. Lorsque l’entrée Run est exécutée, les données dans l’argument ParametersNonHold sont initialisées. Si vous ne souhaitez pas que la valeur du DUT soit une valeur par défaut, écrivez les valeurs dans le DUT, par ex. à l’aide de l’instruction MOVE, qui doit être déclenchée en permanence par une condition TRUE.

  2. F356_PID_PWM ne doit être exécutée qu’une seule fois par cycle. Par conséquent, l’instruction F356_PID_PWM ne doit pas être exécutée dans des programmes d’interruption ou des boucles.

  3. La condition d’exécution ne doit pas passer à FALSE pendant la régulation PID. Sinon, la régulation PID sera désactivée.

  4. Si vous ne voulez pas de sorties MLI en parallèle, par ex. pour réguler plusieurs objets, vous pouvez utiliser une instruction de temporisation par ex., pour retarder le départ de la régulation en conséquence.

Exemple

NOTA

Le cycle de la sortie MLI correspond à la durée de l’échantillonnage Ts (la fréquence de la sortie MLI 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%.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)

Si un paramètre de F356_Parameters_NonHold_DUT est en dehors de l’intervalle autorisé.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)

Si un paramètre de F356_Parameters_NonHold_DUT est en dehors de l’intervalle autorisé.

sys_bIsEqual (passe à TRUE et reste TRUE)

Si la zone spécifiée par UpperLimit ou LowerLimit est en dehors de l’intervalle autorisé.

Informations détaillées :

  • Conditions de régulation : F356_Parameters_Hold_DUT

  • Valeur de consigne SP et paramètres de régulation : F356_Parameters_Hold_DUT

Remarques supplémentaires concernant le réglage automatique :

  • Les éléments AT_Progress dans F356_Parameters_Hold_DUT et b1_AT_Complete dans F356_Control_DUT sont supprimés en front montant du signal de réglage automatique.

  • Lorsque le réglage automatique est terminé et qu’il a été exécuté avec succès, l’élément b1_AT_Complete de F356_Control_DUT est activé et le code de fin de réglage automatique est sauvegardé dans l’élément AT_Progress de F356_Parameters_NonHold_DUT.

  • Lorsque le réglage automatique est interrompu, les paramètres de Kp, Ti et Td ne sont pas modifiés.

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
	VAR 
		bStartAutoTuning: BOOL:=FALSE;
		bRunPidControl: BOOL:=FALSE;
		ControlData: F356_Control_DUT;
		ParametersHold: F356_Parameters_Hold_DUT;
		ParametersNonHold: F356_Parameters_NonHold_DUT;
	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 := 5 ;
        NETWORK_BODY
B(B_CONTACT,,bStartAutoTuning,5,1,7,3,R);
B(B_COIL,,ControlData.b0_AT_Request,22,1,24,3,);
L(1,2,5,2);
L(7,2,22,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_F,F356_PID_PWM!,Instance,11,0,22,7,,?DRun?DControl?DParametersHold?DParametersNonHold?DProcessValue?APWM_Output);
B(B_VARIN,,ControlData,9,2,11,4,);
B(B_VARIN,,ParametersHold,9,3,11,5,);
B(B_VARIN,,ParametersNonHold,9,4,11,6,);
B(B_VARIN,,x_iTemperatureInput,9,5,11,7,);
B(B_VAROUT,,y_bPwmOutput,22,1,24,3,);
B(B_CONTACT,,bRunPidControl,4,1,6,3,);
L(1,2,4,2);
L(6,2,11,2);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

(* Auto Tuning: *)
if DF(bStartAutoTuning) then
    ControlData.b0_AT_Request:=TRUE;
end_if;
y_bPwmOutput:=F356_PID_PWM(    Run := bRunPidControl, 
        Control := ControlData, 
        ParametersHold := ParametersHold, 
        ParametersNonHold := ParametersNonHold, 
        ProcessValue := x_iTemperatureInput);

Corps en IL

Modifié le : 2022-05-06Feedback on this pagePanasonic hotline