Temporisation de l'instruction PID
L’instruction PID et l’échantillonnage de la variable de procédé doivent être mis à jour régulièrement. Ce temps de mise à jour est lié au processus physique que vous contrôlez. Pour les boucles très lentes, comme les boucles de température, un temps de mise à jour d'une seconde ou plus est généralement suffisant pour obtenir un bon contrôle. Les boucles plus rapides, comme les boucles de pression ou de débit, peuvent nécessiter une heurt de mise à jour plus court de 250 ms par exemple. Ce n'est que dans des cas rares, comme pour asservir la tension d’un dévidoir, qu’une heure de mise à jour aussi court que 10 ms ou moins peut être nécessaire.
Comme l’instruction PID utilise une base de temps dans son calcul, vous devez synchroniser l’exécution de cette instruction avec l’échantillonnage de la variable de procédé (PV).
La façon la plus facile d’exécuter l’instruction PID est de mettre cette instruction dans une tâche périodique. Définir l’heure de mise à jour de boucle (.UPD) sur une valeur égale à la fréquence de la tâche périodique et assurez-vous que l’instruction PID est exécutée à chaque scrutation de la tâche périodique.
La façon la plus facile d’exécuter l’instruction PID est de mettre cette instruction dans une tâche périodique. Définir l’heure de mise à jour de boucle (.UPD) sur une valeur égale à la fréquence de la tâche périodique et assurez-vous que l’instruction PID est exécutée à chaque scrutation de la tâche périodique.
Logique à relais

CONSEIL:
Pour éviter de verrouiller l’instruction PID avec des valeurs flottantes internes non valides, assurez-vous que PV n’est pas égal à INF ou NAN avant d’appeler l’instruction comme
- XIC (PC_timer.DN)
- MOV(Local:0:1.Ch0Data, Local:0:1.Ch0Data)
- XIO(S:V)
- PID(...)
Texte structuré
PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data, Local:1:O.Ch4Data,0,Local:1:I.Ch4InHold, Local:1:I.Ch4Data);
Lorsque vous utilisez une tâche périodique, assurez-vous que l’entrée analogique utilisée pour la variable de procédé est mise à jour dans le processeur à une fréquence significativement plus rapide que la fréquence de la tâche périodique. Idéalement, la variable de procédé doit être envoyée au processeur au moins cinq à 10 fois plus rapidement que la fréquence de la tâche périodique. Cela permet de minimiser la différence de temps entre les échantillons réels de la variable de procédé et l’exécution de la boucle PID. Par exemple, si la boucle PID est dans une tâche périodique de 250 ms, utiliser une heure de mise à jour de boucle de 250 ms (.UPD = 0,25) et configurer le module d’entrée analogique pour qu’il produise des données au moins toutes les 25 à 50 ms.
Une autre méthode quelque peu moins précise pour exécuter une instruction PID consiste à placer l’instruction dans une tâche continue et à utiliser un bit de fin de temporisateur pour déclencher l’exécution de l’instruction PID.
Logique à relais

CONSEIL:
Pour éviter de verrouiller l’instruction PID avec des valeurs flottantes internes non valides, assurez-vous que PV n’est pas égal à INF ou NAN avant d’appeler l’instruction comme
- XIC (PC_timer.DN)
- MOV(Local:0:1.Ch0Data, Local:0:1.Ch0Data)
- XIO(S:V)
- PID(...)
Texte structuré
PID_timer.pre := 1000
TONR(PID_timer);
IF PID_timer.DN THEN PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,
Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold,
Local:1:I.Ch0Data);
END_IF;
CONSEIL:
Pour éviter de verrouiller l’instruction PID avec des valeurs flottantes internes non valides, assurez-vous que PV n’est pas égal à INF ou NAN avant d’appeler l’instruction comme
- XIC (PC_timer.DN)
- MOV(Local:0:1.Ch0Data, Local:0:1.Ch0Data)
- XIO(S:V)
- PID(...)
Dans cette méthode, l’heure de mise à jour de boucle de l’instruction PID doit être égal à la valeur prédéfinie du temporisateur. Comme dans le cas de l’utilisation d’une tâche périodique, vous devez définir le module d’entrée analogique pour qu’il produise une variable de procédé à une fréquence plus rapide que l’heure de mise à jour de boucle. Vous devriez utiliser la méthode du temporisateur pour l’exécution PID de boucles uniquement lorsque l’heure de mise à jour de boucle est au moins plusieurs fois plus long que le temps d’exécution de votre tâche continue dans le cas le plus défavorable.
La façon la plus précise d’exécuter une instruction PID est d’utiliser la fonction d’échantillonnage en temps réel (RTS) des modules d’entrée analogique 1756. Le module d’entrée analogique échantillonne ses entrées à la fréquence d’échantillonnage en temps réel que vous configurez lorsque vous configurez le module. Lorsque la période d’échantillon en temps réel du module est terminée, ce dernier met à jour ses entrées ainsi qu’un horodatage de déroulement (représenté par le membre .RollingTimestamp de la structure de données d’entrée analogique) produit par le module.
L’horodatage peut être compris entre 0 et 32 767 ms. Surveiller l'horodatage. Lorsqu’il change, un nouvel échantillon de variable de procédé a été reçu. Chaque fois qu’un horodatage change, exécuter l’instruction PID une fois. Étant donné que l’échantillon de variable de procédé est géré par le module d’entrée analogique, le temps d’échantillonnage d’entrée est très précis, et l’heure de mise à jour de boucle utilisé par l’instruction PID doit être défini comme étant égal au temps RTS du module d’entrée analogique.
Pour être sûr de ne pas rater d’échantillons de la variable de procédé, exécuter votre logique à une fréquence supérieure au temps RTS. Par exemple, si le temps RTS est de 250 ms, vous pouvez mettre la logique PID dans une tâche périodique qui s'exécute toutes les 100 ms afin de vous assurer de ne jamais manquer un échantillon. Vous pouvez même placer la logique PID dans une tâche continue, tant que vous vous assurez que la logique sera mise à jour plus souvent que toutes les 250 ms.
Un exemple de la méthode RTS d’exécution est donné ci-dessous. L’exécution de l’instruction PID dépend de la réception de nouvelles données d’entrée analogique. Si le module d’entrée analogique échoue ou est retiré, l’automate arrête de recevoir les horodatages de déroulement et la boucle PID arrête son exécution. Vous devez surveiller le bit d’état de l’entrée analogique PV et si ce bit présente un mauvais état, forcer la boucle en mode manuel logiciel et exécuter la boucle à chaque scrutation. Cela permet à l’opérateur de changer manuellement la sortie de la boucle PID.
Logique à relais

Texte structuré
IF (Local:0:I.Ch0Fault) THEN TIC101.SWM [:=] 1;
ELSE TIC101.SWM := 0; END_IF;
IF (Local:0:I.RollingTimestamp<>PreviousTimestamp) OR (Local:0:I.Ch0Fault) THEN
PreviousTimestamp := Local:0:I.RollingTimestamp; PID(TIC101,Local:0:I.Ch0Data,Local:0:I.Ch1Data,
Local:1:O.Ch0Data,0,Local:1:I.Ch0InHold,
Local:1:I.Ch0Data);
END_IF;
Fournir une réponse