Contrôle de modèle interne (Internal Model Control, IMC)
Ces informations s’appliquent aux automates
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 et ControlLogix 5590.L'instruction Contrôle de modèle interne (Internal Model Control, IMC) contrôle une seule variable de procédé en manipulant une seule sortie de variable de contrôle. Ce bloc fonctionnel exécute un algorithme où le signal d’erreur réelle est comparé à celui d’un modèle de retard de premier ordre plus zone morte du procédé. Le bloc fonctionnel IMC calcule la sortie de variable de contrôle (CV) en mode Auto en fonction de la déviation PV-SP, du modèle interne et du réglage.
Langues disponibles
Diagramme à relais
Cette instruction n’est pas disponible dans un diagramme à relais.
Bloc fonctionnel

Texte structuré
IMC(IMC_tag);
Opérandes
Bloc fonctionnel
Opérandes : | Type : | Format | Description : |
IMC tag | INTERNAL MODEL CONTROL | Structure | Structure IMC |
Texte structuré
Opérandes : | Type : | Format | Description : |
IMC tag | INTERNAL MODEL CONTROL | Structure | Structure IMC |
Reportez-vous à
Syntaxe du texte structuré
pour plus d'informations concernant la syntaxe des expressions dans le texte structuré.
IMPORTANT:
Chaque fois qu’un bloc APC détecte un changement au niveau de la variable de temps (DeltaT), ModelInit est exécuté. De ce fait, les blocs doivent uniquement être exécutés dans l’un des modes TimingModes pour lesquels DeltaT est constant.
- TimingMode = 0 (périodique) tout en exécutant ces blocs fonctionnels dans une tâche périodique
- TimingMode = 1 (sur-échantillonnage)
Dans les deux cas, si la durée de la tâche périodique est modifiée de manière dynamique, ou si OversampleDT est modifié de manière dynamique, le bloc exécute ModelInit.
Le réglage TimingMode suivant n’est pas recommandé en raison de gigues d’horloge dans DeltaT :
- TimingMode = 0 (périodique) tout en exécutant ces blocs fonctionnels dans une tâche continue ou d’événement
- TimingMode = 2 (RealTimeSample)
Structure
Paramètres d’entrée | Type de données | Description | Valeurs valides et par défaut |
|---|---|---|---|
EnableIn | BOOL | Activez l'entrée. Si défini sur faux, le bloc fonctionnel n’est pas exécuté et les sorties ne sont pas mises à jour. | Valeur par défaut = VRAI |
PV | REAL | Entrée de variable de traitement à l’échelle. Cette valeur est généralement lue depuis un module d’entrée analogique. | Valide = tout flottant Par défaut = 0,0 |
PVFault | BOOL | Indicateur de mauvaise santé de PV. Si la lecture de PV se fait depuis une entrée analogique, PVFault est normalement placée sous le contrôle de l’état du défaut de cette entrée analogique. Si PVFault est VRAI, il y a une erreur au niveau du module d'entrées. Le bit approprié est défini dans Status. | Valeur par défaut = FAUX FAUX = Bonne santé |
PVUEMax | REAL | Valeur à l’échelle maximale pour PV. La valeur de PV et SP qui correspond à 100 % de la plage de la variable de traitement. Si PVEUMax ≤ PVEUMin, le bit approprié est défini dans Status. | Valide = PVEUMin < PVEUMax ≤ flottant positif maximum Par défaut = 100,0 |
PVUEMin | REAL | Valeur à l’échelle minimale pour PV. La valeur de PV et SP qui correspond à 0% de la plage de la variable de traitement. Si PVEUMax ≤ PVEUMin, le bit approprié est défini dans Status. | Valide = flottant négatif maximum ≤ PVEUMin < PVEUMax Par défaut = 0,0 |
SPProg | REAL | Valeur programme SP, mise à l’échelle en unités PV. SP est programmée sur cette valeur dans le mode de contrôle Programme. Si SPProg ou SPOper < SPLLimit ou > SPHLimit, définir le bit approprié dans Status et limitez la valeur utilisée pour le point de consigne SP. | Valide = de SPLLimit à SPHLimit Par défaut = 0,0 |
SPOper | REAL | Valeur opérateur SP, mise à l’échelle en unités PV. SP est définie sur cette valeur en mode de contrôle Opérateur. Si SPProg ou SPOper < SPLLimit ou > SPHLimit, définir le bit approprié dans Status et limitez la valeur utilisée pour le point de consigne SP. | Valide = de SPLLimit à SPHLimit Par défaut = 0,0 |
SPCascade | REAL | Valeur Cascade SP, mise à l’échelle en unités PV. Si le mode CascadeRatio et UseRatio ont pour valeur FAUSSE, alors SP est défini sur cette valeur, ce sera généralement le CVEU d’une boucle primaire. Dans le mode CascadeRatio et lorsque UseRatio est VRAI, SP est programmée sur cette valeur multipliée par le Rapport. Lorsque la valeur de SPCascade < SPLLimit ou > SPHLimit, définir ce bit dans Status et limitez la valeur utilisée pour SP. | Valide = de SPLLimit à SPHLimit Par défaut = 0,0 |
SPHLimit | REAL | Valeur limite haute SP, mise à l’échelle en unités PV. Si SPHLimit < SPLLimit ou si SPHLimit > PVEUMax, définissez le bit approprié dans Status. | Valide = de SPLLimit à PVEUMax Par défaut = 100,0 |
SPLLimit | REAL | Valeur limite basse SP, mise à l’échelle en unités PV. Si SPLLimit < PVEUMin ou si SPHLimit < SPLLimit, définir le bit approprié dans Status et limitez SP en utilisant la valeur de SPLLimit. | Valide = de PVEUMin à SPHLimit Par défaut = 0,0 |
UseRatio | BOOL | Permet un contrôle permissif du rapport. Définir sur VRAI pour activer le contrôle du rapport dans le mode CascadeRatio. | Valeur par défaut = FAUX |
RatioProg | REAL | Multiplicateur du programme Rapport, pas d’unités (par exemple, scalaires). Ratio et RatioOper sont programmées sur cette valeur en mode de contrôle Programme. Lorsque RatioProg ou RatioOper < RatioLLimit ou > RatioHLimit, définir ce bit dans Status et limitez la valeur utilisée pour Rapport. | Valide = RatioLLimit à RatioHLimit Par défaut = 1,0 |
RatioOper | REAL | Multiplicateur Rapport Opérateur, pas d’unités (par exemple, scalaires). Rapport est défini sur cette valeur dans le mode de contrôle Opérateur. Lorsque RatioProg ou RatioOper < RatioLLimit ou > RatioHLimit, définir ce bit dans Status et limitez la valeur utilisée pour Rapport. | Valide = RatioLLimit à RatioHLimit Par défaut = 1,0 |
RatioHLimit | REAL | Valeur limite haute du rapport, pas d’unités (par exemple, scalaires). Limite la valeur de Ratio obtenue à partir de RatioProg ou RatioOper. Si RatioLLimit < 0, définir ce bit dans Status et limitez à zéro. Si RatioHLimit < RatioLLimit, définir ce bit dans Status et limitez le Rapport en utilisant la valeur de RatioLLimit. | Valide = RatioLLimit à la flottante positive maximale Par défaut = 1,0 |
RatioLLimit | REAL | Valeur limite basse du rapport, pas d’unités (par exemple, scalaires). Limite la valeur de Ratio obtenue à partir de RatioProg ou RatioOper. Si RatioLLimit < 0, définir ce bit dans Status et limitez à zéro. Si RatioHLimit < RatioLLimit, définir ce bit dans Status et limitez le Rapport en utilisant la valeur de RatioLLimit. | Valide = 0,0 à RatioHLimit Par défaut = 1,0 |
CVFault | BOOL | Indicateur de mauvaise santé de la variable de contrôle. Si CVEU contrôle une sortie analogique, un défaut CVFault a normalement pour origine l’état défaut de la sortie analogique. Si CVFault est VRAI, cela indique la présence d’une erreur sur le module de sortie, et ce bit est défini dans Status. | Valeur par défaut = FAUX FAUX = Bonne santé |
CVInitReq | BOOL | Demande d’initialisation de CV. Lorsque c’est VRAI, définir CVEU sur la valeur de CVInitValue. Ce signal va normalement être régulé par l’état In Hold du module de sortie analogique sous le contrôle de CVEU ou depuis la sortie InitPrimary d’une boucle IMC secondaire. | Valeur par défaut = FAUX |
CVInitValue | REAL | Valeur d’initialisation de CVEU, mise à l’échelle en unités CVEU. Lorsque CVInitializing est VRAI, définir CVEU sur une valeur égale à CVInitValue et CV sur la valeur correspondante en pourcentage. CVInitValue va normalement provenir du retour de la sortie analogique régulée par CVEU ou du point de consigne d’une boucle secondaire. L’initialisation du bloc fonctionnel est désactivée lorsque CVFaulted ou CVEUSpanInv est VRAI (mauvais). | Valide = tout flottant Par défaut = 0,0 |
CVProg | REAL | CV Valeur Programme-Manuel CV est programmée avec cette valeur en contrôle Programme et dans le mode Manuel. Si la valeur de CVProg ou CVOper < 0 ou > 100, ou < CVLLimit ou > CVHLimit lorsque CVManLimiting est VRAI, définir le bit unique de Status et la valeur limite utilisée pour CV. | Valide = de 0,0 à 100,0 Par défaut = 0,0 |
CVOper | REAL | CV Valeur mode Opérateur-Manuel. CV est programmée avec cette valeur en contrôle Opérateur et dans le mode Manuel. Si cet élément n’est pas dans le mode Opérateur-Manuel, définir CVOper sur la valeur de CV à la fin de chaque exécution de bloc fonctionnel. Si la valeur de CVProg ou CVOper < 0 ou > 100, ou < CVLLimit ou > CVHLimit lorsque CVManLimiting est VRAI, définir le bit unique de Status et la valeur limite utilisée pour CV. | Valide = de 0,0 à 100,0 Par défaut = 0,0 |
CVOverrideValue | REAL | Valeur d’outrepassement de CV. CV programmée sur cette valeur en mode Outrepassement. Cette valeur doit correspondre à un état de sortie fiable de la boucle IMC. Si la valeur de CVOverrideValue est < 0 ou > 100, définir le bit unique de Status et la valeur limite utilisée pour CV. | Valide = de 0,0 à 100,0 Par défaut = 0,0 |
CVTrackValue | REAL | Valeur de suivi de la CV. Lorsque CVTrackReq est activé et lorsque le bloc fonctionnel IMC est dans le mode Manuel, il n’est pas tenu compte de la valeur CVTrackValue et le modèle interne IMC met à jour ses données historiques avec la valeur CVOper ou CVProg. Lorsque CVTrackReq est activé et lorsque le bloc fonctionnel IMC est dans le mode Auto, le modèle interne met à jour ses données historiques en se basant sur la valeur de CVTrackValue. Dans ce cas, la CV obtient l’autorisation de se déplacer, comme si le bloc fonctionnel IMC était encore en mesure de contrôler cette procédure. Cette valeur est utile dans des schémas de sélection à plusieurs boucles où vous souhaitez que le bloc fonctionnel IMC suive la sortie d’un algorithme de contrôle différent dans lequel vous connectez la sortie de l’algorithme de contrôle à CVTrackValue. | Valide = de 0,0 à 100,0 Par défaut = 0,0 |
CVManLimiting | BOOL | Demande de limite CV en mode Manuel. Si le mode Manuel et CVManLimiting sont définis sur VRAI, la CV va être limitée par les valeurs CVHLimit et CVLLimit. | Valeur par défaut = FAUX |
CVEUMax | REAL | Valeur maximale de CVEU. La valeur de CVEU qui correspond à 100% de CV. Si CVEUMax = CVEUMin, définir ce bit dans Status. | Valide = tout flottant Par défaut = 100,0 |
CVEUMin | REAL | Valeur minimale de CVEU. La valeur de CVEU qui correspond à 0% de CV. Si CVEUMax = CVEUMin, définir ce bit dans Status. | Valide = tout flottant Par défaut = 0,0 |
CVHLimit | REAL | Valeur limite haute de CV. Cette limite est utilisée pour définir la sortie CVHAlarm. Elle permet également de limiter CV en mode Auto ou CascadeRatio, voire en mode Manuel si CVManLimiting est défini sur VRAI. Si CVLLimit < 0, si CVHLimit > 100, si CVHLimit < CVLLimit, définir ce bit dans Status. Si CVHLimit < CVLLimit, limitez CV en faisant appel à la valeur de CVLLimit. | Valide = CVLLimit < CVHLimit ≤ 100,0 Par défaut = 100,0 |
CVLLimit | REAL | Valeur limite basse de CV. Cette limite est utilisée pour définir la sortie CVLAlarm. Elle permet également de limiter CV en mode Auto ou CascadeRatio, voire en mode Manuel si CVManLimiting est défini sur VRAI. Si CVLLimit < 0, si CVHLimit > 100, si CVHLimit < CVLLimit, définir ce bit dans Status. Si CVHLimit < CVLLimit, limitez CV en faisant appel à la valeur de CVLLimit. | Valide = 0,0 ≤ CVLLimit < CVHLimit Par défaut = 0,0 |
CVROCPosLimit | REAL | CV Augmentation de la fréquence de changement, en pourcentage par seconde. La limitation de la fréquence de changement est uniquement utilisée en modes Auto ou CascadeRatio, voire en mode Manuel si CVManLimiting est défini sur VRAI. Une valeur égale à zéro désactive la limitation ROC de CV. Si la valeur de CVROCPOSLimit < 0, définir ce bit dans le mode État et désactivez la limitation ROC de CV. | Valide = entre 0,0 et la flottante positive maximale Par défaut = 0,0 |
CVROCNegLimit | REAL | CV Diminution de la limite de la fréquence de changement, en pourcentage par seconde. La limitation de la fréquence de changement est uniquement utilisée en modes Auto ou CascadeRatio, voire en mode Manuel si CVManLimiting est défini sur VRAI. Une valeur égale à zéro désactive la limitation ROC de CV. Si la valeur de CVROCNegLimit < 0, définir ce bit dans le mode État et désactivez la limitation ROC de CV. | Valide = entre 0,0 et la flottante positive maximale Par défaut = 0,0 |
HandFB | REAL | CV valeur de HandFeedback. CV programmée sur cette valeur dans le mode Portable et lorsque HandFBFault est FAUX (bonne santé). Cette valeur provient en général de la sortie d’une station manuelle/automatique implantée sur le terrain et sert à créer un processus sans à-coups de sortie du mode Portable. Si la valeur de HandFB est < 0 ou > 100, définir le bit unique de Status et la valeur limite utilisée pour CV. | Valide = 0,0…100,0 Par défaut = 0,0 |
HandFBFault | BOOL | Indicateur de mauvaise santé de la valeur de HandFB. Si la valeur HandFB se lit depuis une entrée analogique, HandFBFault va normalement dépendre de l’état occupé par le canal d’entrée analogique. Si HandFBFault est VRAI, cela indique la présence d’une erreur sur le module d’entrée, et ce bit est défini dans Status. | Valeur par défaut = FAUX FAUX = Bonne santé |
WindupHIn | BOOL | Demande de haut de la saturation d’intégrale. Lorsque c’est VRAI, CV n’a pas l’autorisation requise pour augmenter sa valeur. En général, ce signal est la sortie WindupHOut provenant d’une boucle secondaire. | Valeur par défaut = FAUX |
WinduplIn | BOOL | Demande de bas de la saturation d’intégrale. Lorsque c’est VRAI, CV n’a pas l’autorisation requise pour diminuer sa valeur. En général, ce signal est la sortie WindupLOut provenant d’une boucle secondaire. | Valeur par défaut = FAUX |
GainEUSpan | BOOL | Unités ModelGain représentées en EU ou en % de la plage. Unités CV ModelGain représentées en EU ou en % de la plage. Définir pour interpréter ModelGain en EU, réinitialiser pour interpréter ModelGain en % de la plage. | Valeur par défaut = FAUX VRAI = Gain en EU FAUX = Gain en % de la plage |
ProcessGainSign | BOOL | Ne s’utilise que lors du réglage automatique. Signe du gain de traitement (Delta PV/Delta CV). Définir pou indiquer un gain de traitement négatif (l’augmentation de la sortie génère une diminution de la PV). Réinitialiser pour indiquer un gain de traitement positif (l’augmentation de la sortie génère une augmentation de la PV). | Valeur par défaut = FAUX |
ProcessType | DINT | Sélection du type de traitement (1=Intégrateur, 0=Non-intégrateur) | Par défaut = 0 |
ModelGain | REAL | Le paramètre de gain du modèle interne. Entrez un gain positif ou négatif basé sur la direction du traitement. | Valide = valeur négative à virgule flottante maximale −> valeur positive à virgule flottante maximale Par défaut = 0,0 |
ModelTC | REAL | La constante de temps du modèle interne, en secondes. | Valide = entre 0,0 et la flottante positive maximale Par défaut = 0,0 |
ModelDT | REAL | Le temps mort du modèle interne, en secondes. | Valide = entre 0,0 et la flottante positive maximale Par défaut = 0,0 |
RespTC | REAL | Le paramètre de réglage déterminant la vitesse de l’action variable de contrôle, en secondes. | Valide = entre 0,0 et la flottante positive maximale Par défaut = 0,0 |
PVTracking | BOOL | Demande de suivi de PV par SP. Définir sur VRAI pour activer à SP de suivre PV. Il n’en est pas tenu compte dans les modes CascadeRatio ou Auto. | Valeur par défaut = FAUX |
CVTrackReq | BOOL | Demande de suivi de la CV. Définir sur vrai pour activer le suivi de la CV lorsque le réglage automatique est défini sur OFF. Il n’en est pas tenu compte dans les modes Portable et Outrepassement. | Valeur par défaut = FAUX |
AllowCasRat | BOOL | Permet au mode CascadeRatio d’être permissif. Définir sur VRAI pour permettre la sélection du mode CascadeRatio en faisant appel à ProgCasRatReq ou à OperCasRatReq. | Valeur par défaut = FAUX |
ManualAfterInit | BOOL | Mode manuel après demande d’initialisation. Lorsque cette option est VRAIE, le bloc fonctionnel est placé en mode manuel si CVInitializing est défini sur VRAI, à moins que le mode en cours ne soit Outrepassement ou Portable. Lorsque ManualAfterInit est FAUX, le mode du bloc fonctionnel ne change pas. | Valeur par défaut = FAUX |
ProgProgReq | BOOL | Demande de contrôle Programme du programme. Définir sur VRAI par le programme de l’utilisateur pour demander un contrôle du programme. Ignoré si ProgOperReq est VRAI. Le maintien de cet élément sur VRAI et de ProgOperReq sur FAUX peut se faire pour verrouiller le bloc fonctionnel dans le mode de contrôle du programme. Lorsque ProgValueReset est VRAI, le bloc fonctionnel réinitialise l’entrée qui devient alors FAUX. | Valeur par défaut = FAUX |
ProgOperReq | BOOL | Demande de contrôle Opérateur du programme. Définir sur VRAI par le programme de l’utilisateur pour demander un contrôle par l’opérateur. Le maintien de cet élément sur VRAI peut se faire pour verrouiller le bloc fonctionnel dans le mode de contrôle par l’opérateur. Lorsque ProgValueReset est VRAI, le bloc fonctionnel réinitialise l’entrée qui devient alors FAUX. | Valeur par défaut = FAUX |
ProgCasRatReq | BOOL | Programme - Demande de mode Cascade/Rapport. Définir sur VRAI par le programme de l’utilisateur pour demander le mode Cascade/Rapport. Lorsque ProgValueReset est VRAI, le bloc fonctionnel réinitialise l’entrée qui devient alors FAUX. | Valeur par défaut = FAUX |
ProgAutoReq | BOOL | Demande de mode Auto du programme. Définir sur VRAI par le programme de l’utilisateur pour demander le mode Auto. Lorsque ProgValueReset est VRAI, le bloc fonctionnel réinitialise l’entrée qui devient alors FAUX. | Valeur par défaut = FAUX |
ProgManualReq | BOOL | Demande de mode Manuel du programme. Définir sur VRAI par le programme de l’utilisateur pour demander le mode Manuel. Lorsque ProgValueReset est VRAI, le bloc fonctionnel réinitialise l’entrée qui devient alors FAUX. | Valeur par défaut = FAUX |
ProgOverrideReq | BOOL | Demande de mode Outrepassement du programme. Définir sur VRAI par le programme de l’utilisateur pour demander le mode Outrepassement. Lorsque ProgValueReset est VRAI, le bloc fonctionnel réinitialise l’entrée qui devient alors FAUX. | Valeur par défaut = FAUX |
ProgHandReq | BOOL | Demande de mode Portable du programme. Définir sur VRAI par le programme de l’utilisateur pour demander le mode Portable. En général, cette valeur se lit en tant qu’entrée numérique provenant d’une station Portable/Auto. Lorsque ProgValueReset est VRAI, le bloc fonctionnel réinitialise l’entrée qui devient alors FAUX. | Valeur par défaut = FAUX |
OperProgReq | BOOL | Demande de contrôle Programme de l’opérateur. Définir sur VRAI par l’interface opérateur pour demander un contrôle du programme. Le bloc fonctionnel réinitialise ce paramètre sur FAUX. | Valeur par défaut = FAUX |
OperOperReq | Demande de contrôle Opérateur de l’opérateur. Définir sur VRAI par l’interface opérateur pour demander un contrôle par l’opérateur. Le bloc fonctionnel réinitialisera ce paramètre sur FAUX. | Valeur par défaut = FAUX | |
OperCasRatReq | BOOL | Opérateur - Demande de mode CascadeRapport. Définir sur VRAI par l’interface opérateur pour demander le mode CascadeRapport. Le bloc fonctionnel réinitialisera ce paramètre sur FAUX. | Valeur par défaut = FAUX |
OperAutoReq | BOOL | Demande de mode Auto de l’opérateur. Définir sur VRAI par l’interface opérateur pour demander le mode Auto. Le bloc fonctionnel réinitialisera ce paramètre sur FAUX. | Valeur par défaut = FAUX |
OperManualReq | BOOL | Demande de mode Manuel de l’opérateur. Définir sur VRAI par l’interface opérateur pour demander le mode Manuel. Le bloc fonctionnel réinitialisera ce paramètre sur FAUX. | Valeur par défaut = FAUX |
ProgValueReset | BOOL | Réinitialiser les valeurs de contrôle du programme. Lorsqu’elles sont VRAIES, les entrées Prog_xxx_Req sont réinitialisées sur FAUX. Lorsqu’elles sont VRAIES et qu’il y a contrôle du programme, définir SPProg sur une valeur égale à SP et CVProg sur une valeur égale à CV. Lorsque ProgValueReset est VRAI, le bloc fonctionnel réinitialise ce paramètre qui devient alors FAUX. | Valeur par défaut = FAUX |
TimingMode | DINT | Sélectionne le mode d’exécution Base de temps. Valeur/Description 0 = mode périodique 1 = mode sur-échantillonnage 2 = mode échantillonnage en temps réel Reportez-vous aux attributs des blocs fonctionnels pour plus d’informations sur les modes de temporisation. | Valide = 0…2 Par défaut = 0 |
OverSampleDT | REAL | Temps d’exécution du mode Sur-échantillonnage. | Valide = 0 à max. Temps écoulé TON_Timer (4194,303 secondes) Par défaut = 0 |
RTSTime | DINT | Période de mise à jour du module pour le mode Échantillon en temps réel. | Valide = de 1 à 32 767 1 comptage = 1 ms |
RTSTimeStamp | DINT | Valeur de l’horodatage du module pour le mode Échantillon en temps réel. | Valide = de 0 à 32 767 (redémarrage de 32 767 à 0) 1 comptage = 1 ms |
PVTuneLimit | REAL | Limite de réglage PV mise à l’échelle dans les unités PV. Lorsque le réglage automatique est en cours d’exécution et que la PV prévue dépasse cette limite, le réglage est annulé. | Plage : tout nombre flottant Valeur par défaut = 0 |
AtuneTimeLimit | REAL | Durée maximale d’exécution du réglage automatique à la suite d’une modification d’étape CV. Lorsque le réglage automatique dépasse cette durée, le réglage est annulé. | Plage valide : tout nombre flottant > 0. Valeur par défaut = 60 minutes |
NoiseLevel | DINT | Une estimation du niveau de bruit prévu sur la PV afin de le compenser pendant le réglage. Les sélections sont les suivantes : 0 = bas, 1 = moyen, 2 = haut | Plage : de 0 à 2 Valeur par défaut = 1 |
CVStepSize | REAL | Taille de l’incrément CV en pourcentage lors du test de réglage de l’incrément. La taille de l’incrément est directement ajoutée à CV en tenant compte de la limite haute ou de la limite basse. | Plage : -100% … 100% Valeur par défaut = 10% |
ResponseSpeed | DINT | Vitesse souhaitée de la réponse en boucle fermée. Réponse lente : ResponseSpeed=0 Réponse moyenne : ResponseSpeed=1 Réponse rapide : ResponseSpeed=2. Si ResponseSpeed est inférieure à 0, l’option Vitesse lente est utilisée. Si ResponseSpeed est supérieure à 2, l’option Vitesse rapide est utilisée. | Plage : de 0 à 2 Valeur par défaut = 1 |
ModelInit | BOOL | Interrupteur d’initialisation de modèle interne. | Valeur par défaut = FAUX |
Factor | REAL | Facteur d’approximation de modèle non-intégrateur. S’utilise uniquement pour l’intégration des types de traitement. | Par défaut = 100 |
AtuneStart | BOOL | Demande de démarrage du réglage automatique. Définir sur Vrai pour démarrer le réglage automatique du bloc fonctionnel. Demande ignorée lorsqu’IMC n’est pas en mode Manuel. Le bloc fonctionnel réinitialisera ce paramètre sur FAUX. | Valeur par défaut = FAUX |
AtuneUseModel | BOOL | Utiliser la demande du modèle de réglage automatique. Définir sur Vrai pour remplacer les paramètres du modèle actuel par les paramètres calculés du modèle de réglage automatique. Le bloc fonctionnel programme le paramètre d’entrée sur FAUX. | Valeur par défaut = FAUX |
AtuneAbort | BOOL | Demande d’abandon du réglage automatique. Définir sur Vrai pour abandonner le réglage automatique du bloc fonctionnel IMC. Le bloc fonctionnel programme le paramètre d’entrée sur FAUX. | Valeur par défaut = FAUX |
Paramètres de sortie | Type de données | Description | Valeurs valides et par défaut |
|---|---|---|---|
EnableOut | BOOL | Indique si l'instruction est activée. Défini sur faux en cas de débordement de CVEU. | |
CVEU | REAL | Sortie de variable de contrôle mise à l’échelle. Mise à l’échelle faisant appel à CVEUMax et CVEUMin, où CVEUMax correspond à 100% et CVEUMin correspond à 0%. En général, cette sortie s’utilise pour contrôler un module de sortie analogique ou une boucle secondaire. CVEU = (CV * CVEUSpan/100) + CVEUMin Calcul de la plage CVEU : CVEUSpan = (CVEUMax − CVEUMin) | |
CV | REAL | Sortie de variable de contrôle. Cette valeur s’exprime toujours sous le format 0…100%. CV est limitée par CVHLimit et CVLLimit dans le mode Auto, dans le mode CascadeRapport ou dans le mode Manuel, à condition que CVManLimiting soit VRAI ; sinon, elle est limitée par 0 et 100%. | |
DeltaCV | REAL | Différence entre la CV actuelle et la CV précédente (CV actuelle - CV précédente). | |
CVInitializing | BOOL | Indicateur de mode d’initialisation. Définir sur VRAI lorsque CVInitReq ou FirstScan du bloc fonctionnel est sur VRAI, ou sur une transition de VRAI à FAUX de CVFault (mauvais à bon). CVInitializing est programmée sur FAUX après l’initialisation du bloc fonctionnel et lorsque CVInitReq n’est plus VRAI. | |
CVHAlarm | BOOL | Indicateur d’alarme haute de CV. TRUE lorsque la valeur calculée pour CV > 100 ou CVHLimit. | |
CVLAlarm | BOOL | Indicateur d’alarme basse de CV. VRAI lorsque la valeur calculée pour CV < 0 ou CVLLimit. | |
CVROCPosAlarm | BOOL | Indicateur d’alarme de fréquence de changement de CV. VRAI lorsque la fréquence calculée de changement de CV dépasse CVROCPosLimit. | |
CVROCNegAlarm | REAL | Indicateur d’alarme de fréquence de changement de CV. VRAI lorsque la fréquence calculée de changement de CV dépasse CVROCNegLimit. | |
SP | REAL | Valeur actuelle du point de consigne. La valeur de SP sert à contrôler CV dans le mode Auto, le mode CascadeRapport ou le mode Suivi de PV, mise à l’échelle en unités PV. | |
SPPercent | REAL | La valeur de SP s’exprime en pourcentage de la plage de PV. SPPercent = ((SP − PVEUMin ) * 100)/PVSpan Où PVSpan = PVEUMax − PVEUMin | |
SPHAlarm | BOOL | Indicateur d’alarme haute de SP. VRAI lorsque la SP ≥ SPHLimit. | |
SPLAlarm | BOOL | Indicateur d’alarme basse de SP. VRAI lorsque la SP ≤ SPLLimit. | |
PVPercent | REAL | PV s’exprime en pourcentage de la plage. PVPercent = (( PV − PVEUMin ) * 100)/PVSpan Calcul de la plage de PV : PVSpan = ( PVEUMax − PVEUMin ) | |
E | REAL | Erreur de procédé. Différence entre SP et PV, mise à l’échelle en unités PV. | |
EPercent | REAL | Cette erreur s’exprime en pourcentage de la plage. | |
InitPrimary | BOOL | Initialiser la commande de boucle primaire. VRAI en dehors du mode CasRat ou lorsque CVInitializing est VRAI. Normalement, ce signal devrait être utilisé par l’entrée CVInitReq d’une boucle primaire. | |
WindupHOut | BOOL | Indicateur haut de la saturation d’intégrale. VRAI lorsque la limite haute de SP ou la limite haute ou basse de CV est atteinte. En général, ce signal va être exploité par l’entrée WindupHIn pour limiter la saturation d’intégrale de la sortie CV sur une boucle primaire. | |
WindupLOut | BOOL | Indicateur bas de la saturation d’intégrale. VRAI lorsque la limite haute ou basse de SP ou de CV est atteinte. En général, ce signal va être exploité par l’entrée WindupLIn pour limiter la saturation d’intégrale de la sortie CV sur une boucle primaire. | |
Ratio | REAL | Multiplicateur actuel de rapport, pas d’unités. | |
RatioHAlarm | BOOL | Indicateur d’alarme haute de rapport. VRAI lorsque Rapport > RatioHLimit. | |
RatioLAlarm | BOOL | Indicateur d’alarme basse de rapport. VRAI lorsque Rapport < RatioLLimit. | |
ProgOper | BOOL | Indicateur de contrôle programme/opérateur. VRAI dans le mode de contrôle Programme. FAUX dans le mode de contrôle Opérateur. | |
CasRat | BOOL | Indicateur du mode CascadeRapport. VRAI dans le mode CascadeRapport. | |
Auto | BOOL | Indicateur de mode Auto. VRAI dans le mode Auto. | |
Manual | BOOL | Indicateur de mode Manuel. VRAI dans le mode Manuel. | |
Override | BOOL | Indicateur de mode Outrepassement. VRAI dans le mode Outrepassement . | |
Hand | BOOL | Indicateur de mode Portable. VRAI dans le mode Portable. | |
DeltaT | REAL | Temps écoulé entre deux mises à jour (en secondes). | |
StepSizeUsed | REAL | Taille réelle de l’incrément de CV lors du réglage. | |
GainTuned | REAL | La valeur calculée du gain du modèle interne, une fois le réglage terminé. | |
TCTuned | REAL | La valeur calculée de la constante de temps du modèle interne, une fois le réglage terminé. | |
DTTuned | REAL | La valeur calculée du temps mort du modèle interne, une fois le réglage terminé. | |
RespTCTunedS | REAL | La valeur calculée de la constante de temps de la variable de contrôle en vitesse de réponse lente, une fois le réglage terminé. | |
RespTCTunedM | REAL | La valeur calculée de la constante de temps de la variable de contrôle en vitesse de réponse moyenne, une fois le réglage terminé. | |
RespTCTunedF | REAL | La valeur calculée de la constante de temps de la variable de contrôle en vitesse de réponse rapide, une fois le réglage terminé. | |
AtuneOn | BOOL | Définir sur Vrai lorsque le réglage automatique a été activé. | |
AtuneDone | BOOL | Définir sur Vrai lorsque le réglage automatique a été exécuté avec succès. | |
AtuneAborted | BOOL | Définir sur Vrai lorsque le réglage automatique a été abandonné par l’utilisateur ou en raison d’erreurs survenues pendant l’opération de réglage automatique. | |
AtuneStatus | DINT | Indique l’état de réglage de bloc. | |
AtuneFault | BOOL | Le réglage automatique a provoqué l’un des défauts suivants. | Bit 0 d’AtuneStatus |
AtunePVOutOfLimit | BOOL | PV ou la prédiction de l’incrément de temps mort de PV dépasse la limite PVTuneLimit pendant le réglage automatique. Lorsque c’est Vrai, le réglage automatique est abandonné. | Bit 1 d’AtuneStatus |
AtuneModeInv | BOOL | Le mode IMC n’était pas Manuel au début du réglage automatique ou le mode IMC a changé et n’était plus le mode Manuel pendant le réglage automatique. Lorsque c’est Vrai, le réglage automatique n’est pas entamé ou est abandonné. | Bit 2 d’AtuneStatus |
AtuneCVWindupFault | BOOL | WindupHIn ou WindupLIn est Vrai au début du réglage automatique ou pendant le réglage automatique. Lorsque c’est Vrai, le réglage automatique n’est pas entamé ou est abandonné. | Bit 3 d’AtuneStatus |
AtuneStepSize0 | BOOL | StepSizeUsed = 0 au début du réglage automatique. Lorsque c’est Vrai, le réglage automatique n’est pas entamé. | Bit 4 d’AtuneStatus |
AtuneCVLimitsFault | BOOL | CVLimitsInv et CVManLimiting sont Vrais au début du réglage automatique ou pendant le réglage automatique. Lorsque c’est Vrai, le réglage automatique n’est pas entamé ou est abandonné. | Bit 5 d’AtuneStatus |
AtuneCVInitFault | BOOL | CVInitializing est Vrai au début du réglage automatique ou pendant le réglage automatique. Lorsque c’est Vrai, le réglage automatique n’est pas entamé ou est abandonné. | Bit 6 d’AtuneStatus |
AtuneEUSpanChanged | BOOL | CVEUSpan ou PVEUSpan change pendant le réglage automatique. Lorsque c’est Vrai, le réglage automatique est abandonné. | Bit 7 d’AtuneStatus |
AtuneCVChanged | BOOL | CVOper change dans le mode de contrôle Opérateur ou CVProg change dans le mode de contrôle Programme ou CV devient haut/bas ou ROC est limitée pendant le réglage automatique. Lorsque c’est Vrai, le réglage automatique est abandonné. | Bit 8 d’AtuneStatus |
AtuneTimeout | BOOL | Le temps écoulé est plus long que la limite de temps de réglage AtuneTimeLimit depuis le début du test portant sur l’incrément. Lorsque c’est Vrai, le réglage automatique est abandonné. | Bit 9 d’AtuneStatus |
AtunePVNotSettled | BOOL | Le changement de PV est trop important et ne permet pas d’effectuer le réglage automatique. Lorsque c’est Vrai, le réglage automatique est abandonné. Attendre que PV soit plus stable avant d’effectuer le réglage automatique. | Bit 10 d’AtuneStatus |
Status1 | DINT | État mappé par bits du bloc fonctionnel. | |
Status2 | DINT | État supplémentaire mappé par bits du bloc fonctionnel. | |
InstructFault | BOOL | Le bloc fonctionnel a généré un défaut. Indique l’état des bits avec Status1 et status2. Une valeur égale à 0 indique qu’aucun défaut ne s’est produit. Tout paramètre qui pourrait avoir été configuré avec une valeur incorrecte doit avoir un paramètre statut indiquant son statut incorrect. | Bit 0 de Status1 |
PVFaulted | BOOL | Mauvaise santé de la variable de procédé PV. | Bit 1 de Status1 |
CVFaulted | BOOL | Défaut de la variable de contrôle (CV) | Bit 2 de Status1 |
HandFBFaulted | BOOL | Mauvaise santé de la valeur HandFB | Bit 3 de Status1 |
PVSpanInv | BOOL | La plage de PV est incorrecte, PVEUMax < PVEUMin. | Bit 4 de Status1 |
SPProgInv | BOOL | SPProg < SPLLimit ou > SPHLimit. Valeur limite utilisée pour SP. | Bit 5 de Status1 |
SPOperInv | BOOL | SPOper < SPLLimit ou > SPHLimit. Valeur limite utilisée pour SP. | Bit 6 de Status1 |
SPCascadeInv | BOOL | SPCascade < SPLLimit ou > SPHLimit. Valeur limite utilisée pour SP. | Bit 7 de Status1 |
SPLimitsInv | BOOL | Limites incorrectes : SPLLimit < PVEUMin, SPHLimit > PVEUMax ou SPHLimit < SPLLimit. Si SPHLimit < SPLLimit, limiter la valeur en faisant appel à SPLLimit. | Bit 8 de Status1 |
RatioLimitsInv | BOOL | Limites hautes et basses incorrectes de Rapport, limite basse < 0 ou limite haute < limite basse. | Bit 9 de Status1 |
RatioProgInv | BOOL | RatioProg < RatioLLimit ou > RatioHLimit. Valeur limite utilisée pour Rapport. | Bit 10 de Status1 |
RatioOperInv | BOOL | RatioOper < RatioLLimit ou > RatioHLimit. Valeur limite utilisée pour Rapport. | Bit 11 de Status1 |
CVProgInv | BOOL | CVProg < 0 ou > 100, ou < CVLLimit ou > CVHLimit lorsque CVManLimiting est VRAI. Valeur limite utilisée pour CV. | Bit 12 de Status1 |
CVOperInv | BOOL | CVOper < 0 ou > 100, ou < CVLLimit ou > CVHLimit lorsque CVManLimiting est VRAI. Valeur limite utilisée pour CV. | Bit 13 de Status1 |
CVOverrideValueInv | BOOL | CVOverrideValue < 0 ou > 100. Valeur limite utilisée pour CV. | Bit 14 de Status1 |
CVTrackValueInv | BOOL | CVTrackValue < 0 ou > 100. Valeur limite utilisée pour CV. | Bit 15 de Status1 |
CVEUSpanInv | BOOL | La plage de CVEU est incorrecte, CVEUMax égale CVEUMin. | Bit 16 de Status1 |
CVLimitsInv | BOOL | CVLLimit < 0, CVHLimit > 100 ou CVHLimit <= CVLLimit. Si CVHLimit < CVLLimit, limitez CV en faisant appel à CVLLimit. | Bit 17 de Status1 |
CVROCLimitInv | BOOL | CVROCLimit < 0, désactive la limitation ROC. | Bit 18 de Status1 |
HandFBInv | BOOL | HandFB < 0 ou > 100. Valeur limite utilisée pour CV. | Bit 19 de Status1 |
SampleTimeTooSmall | BOOL | Temps mort/DeltaT du modèle doit être inférieur ou égal à 200. | Bit 20 de Status1 |
FactorInv | BOOL | Facteur < 0. | Bit 21 de Status1 |
ModuleGainInv | BOOL | ModelGain est égal à 1.#QNAN ou -1.#IND (Pas un nombre) ou ±1.$ ( Infinité ∞) | Bit 22 de Status1 |
ModelTCInv | BOOL | ModelTC < 0. | Bit 23 de Status1 |
ModelDTInv | BOOL | ModelDT < 0. | Bit 24 de Status1 |
RespTCInv | BOOL | RespTC < 0. | Bit 25 de Status1 |
TimingModelInv | BOOL | TimingMode incorrect. Si le mode actuel n’est pas Outrepassement ou Portable, définir sur mode Manuel. | Bit 27 de Status2 |
RTSMissed | BOOL | Ne s’utilise que dans le mode Échantillon en temps réel. Est VRAI (TRUE) lorsqu’ABS(DeltaT – RTSTime) > 1 milliseconde. | Bit 28 de Status2 |
RTSTimeInv | BOOL | RTSTime incorrect. | Bit 29 de Status2 |
RTSTimeStampInv | BOOL | RTSTimeStamp incorrect. Si le mode actuel n’est pas Outrepassement ou Portable, définir sur mode Manuel. | Bit 30 de Status2 |
DeltaTInv | BOOL | DeltaT incorrect. Si le mode actuel n’est pas Outrepassement ou Portable, définir sur mode Manuel. | Bit 31 de Status2 |
Description
L’illustration suivante montre la configuration du bloc fonctionnel IMC.

Lors de chaque exécution, le bloc fonctionnel IMC compare la valeur mesurée réelle PV à la prédiction pour PV. Le résultat s’appelle une estimation de perturbation qui correspond à l’effet qu’ont des perturbations non mesurées de traitement associées à l’imprécision de la modélisation. Cette estimation de perturbation sert d’écart en ce qui concerne le point de consigne de la variable de contrôle. Dans le cas idéal, c’est-à-dire sans perturbation et avec une modélisation parfaite, l’estimation de perturbation (le signal de retour) est égale à zéro.
Modèle du premier ordre | M = K/(T*s+1)*exp(-D*s) | |
Inverse du modèle | Inv = (T*s+1)/K | |
Filtre du premier ordre | F = 1/(e*s+1) |
Prédiction de PV = exp(-D*s)/(e*s+1) * (SP - Dist. estimée)
K... | Gain du modèle |
T... | Constante de temps du modèle |
D... | Temps mort du modèle |
e... | Constante de temps de réponse |
s... | Variable de Laplace |
Le bloc fonctionnel calcule alors la valeur CV (CVHLimit, CVLLimit et des limites de fréquence de changement sont imposées) et la prédiction pour PV.
Le bloc fonctionnel IMC peut remplacer un bloc fonctionnel PID, ce qui présente un avantage par rapport à la variable de contrôle PID lors du contrôle de traitements qui ont des temps morts importants.
Lors d’un type de procédé à intégration (avec, par exemple, un contrôle des niveaux et un contrôle de la position), un modèle interne sans intégration est exploité pour représenter de façon approximative la procédure d’intégration. Le paramètre Factor s’utilise pour convertir le modèle identifié de procédure d’intégration qui est exploité lors du calcul de la CV. Il s’agit de la condition requise pour bénéficier d’une exécution stable du IMC.
Affecte les indicateurs d'état mathématique
Non
Défauts majeurs/mineurs
Aucun spécifique à cette instruction. Reportez-vous à la section Attributs communs pour plus d’informations sur les défauts liés aux opérandes.
Exécution
Bloc fonctionnel
Condition/état | Action entreprise |
|---|---|
Préscrutation | Les bits EnableIn et EnableOut sont définis sur faux. |
Tag.EnableIn est faux | Les bits EnableIn et EnableOut sont définis sur faux. |
Tag.EnableIn est vrai | Les bits EnableIn et .EnableOut sont définis sur vrai. L'instruction s'exécute. |
Première exécution de l'instruction | N/A |
Première scrutation de l'instruction | N/A |
Post-scrutation | Les bits EnableIn et EnableOut sont définis sur faux. |
Texte structuré
Condition/état | Action entreprise |
Préscrutation | Reportez-vous à Pré-scrutation dans le tableau Bloc fonctionnel. |
Exécution normale | Reportez-vous à Tag.EnableIn est vrai dans le tableau Bloc fonctionnel. |
Post-scrutation | Reportez-vous à Post-scrutation dans le tableau Bloc fonctionnel. |
Exemples
Bloc fonctionnel

Texte structuré
imcTag.PV := imcInput1;
imcTag.SPProg := imcInput2;
imcTag.CVProg := imcInput3;
IMC(imcTag);
imcOutput1 := imcTag.CVEU;
Fournir une réponse