J'ai un processus thermique non linéaire (le rayonnement non linéaire devient de plus en plus présent à mesure que la température augmente) sur lequel j'aimerais régler un contrôleur PID. J'aimerais contrôler la température aussi précisément que possible.
J'ai prévu de diviser la plage de température en N plages pseudo-linéaires (à définir), et pour chacune de ces plages de température: ajuster un modèle de premier ordre à l'aide d'un petit pas de température et calculer les paramètres PID en fonction de ce modèle. Les paramètres PID seraient automatiquement commutés en fonction de la température du processus *.
Mon problème est le suivant: pensez au point de contrôle à 70 ° C par exemple. P watts circulent déjà pour atteindre cette température. J'injecterai du dP watt pour augmenter la température de 1 ° C. Je noterai ensuite la constante de temps et le gain en régime permanent sera de 1 / dP ° C / W. [S'il vous plaît, pouvez-vous prendre un moment pour déterminer si cela est vrai?] Enfin, je réglerai le PID sur cette plante pour obtenir les paramètres de cette plage de température et passer aux autres plages.
Supposons maintenant que le processus atteint 70 ° C. Les nouveaux paramètres sont chargés et le compteur intégral réinitialisé. L'erreur peut être de 1 ° C, mais la puissance requise est bien supérieure à celle pour atteindre 21 ° C, il est certain que le contrôleur exigera moins de P watt. Cela signifie que la température diminuera beaucoup avant que le terme intégral n'exige P watts, et alors seulement le watt supplémentaire dP finira par amener le processus à 71 ° C (et il dépassera certainement). Plus le P est grand par rapport au dP, plus il empire.
Il semble presque que les appareils de chauffage doivent fonctionner avec la somme de la sortie du contrôleur et la puissance requise pour rester à la "température de référence" actuelle (par exemple 70 ° C). Mais les contrôleurs standard n'offrent pas cela, il doit donc y avoir une autre façon.
Qu'est-ce que je rate? Quelle est la bonne façon?
*: C'est effectivement Gain Scheduling .
la source
Réponses:
Comment régler un contrôleur PID sur un processus non linéaire?
Non. Vous linéarisez le processus, puis faites travailler le contrôleur PID sur les valeurs linéaires.
Par «linéariser le processus», je ne veux pas réellement rendre le processus lui-même linéaire. Cela ne peut généralement pas être fait à cause de la physique. Cependant, vous pouvez mettre quelque chose de non linéaire entre la sortie du contrôleur PID et l'entrée de processus afin que la sortie PID contrôle linéairement le processus du point de vue du contrôleur PID.
Un tel linéariseur n'a pas besoin d'être très précis car il est à l'intérieur de la boucle de rétroaction. Son but est de donner l'apparence d'un gain à peu près constant sur toute la plage dynamique de contrôle. Une manière simple et générale est une fonction de table linéaire par morceaux. 16 ou 32 segments sont généralement suffisants pour tout sauf pour les processus très hautement non linéaires.
Le pire exemple que j'ai rencontré était le contrôle du courant à travers un tube électronique en changeant la force d'entraînement du filament de cathode. La fonction de la température de la cathode au courant du faisceau d'électrons est hautement non linéaire, et le système contrôlant le courant de filament de la cathode était également quelque peu non linéaire. Dans ce cas, il était trop difficile de prédire tout ce gâchis, j'ai donc utilisé une procédure d'étalonnage pendant la production qui a traversé les valeurs de contrôle de l'entraînement du filament, mesuré le courant de faisceau pour chacune, puis calculé une table de recherche à 32 segments à partir de cela. Cela a très bien fonctionné et nous avons pu régler le contrôleur PID de courant de faisceau pour une bonne réponse sur toute la gamme.
Sans fonction de linéarisation devant le processus, vous devez régler le contrôleur PID pour la stabilité au point de gain incrémentiel le plus élevé du processus. Il en résulte alors un comportement très amorti en d'autres points.
Ajoutée
Rien dans votre question mise à jour ne dit pourquoi la méthode ci-dessus n'est pas encore une bonne idée et applicable. Vous dites que vous utilisez un contrôleur analogique. Ma première réaction est "Les années 80 sont révolues depuis longtemps, ne faites pas ça." Cependant, le contrôleur PID et le linéariseur d'usine peuvent être indépendants.
Apparemment, l'entrée de l'usine est la puissance et la sortie la température. Mesurez la température typique en régime permanent à différents niveaux de puissance. À partir de là, vous pouvez calculer la fonction qui convertit la «puissance» linéarisée en entrée de puissance réelle de l'installation. Le contrôleur PID analogique émet vraisemblablement une tension proportionnelle à la puissance. Tout ce que vous avez à faire est d'insérer une boîte noire en ligne avec cette tension qui fait la mesure linéaire en translation du niveau de puissance réel.
Normalement, vous le feriez avec un microcontrôleur doté d'un A / D intégré. La recherche de cette table et l'interpolation linéaire entre les points est triviale. Il produit ensuite le résultat d'une manière qui est finalement convertie en tension. Étant donné que l'installation est lente par rapport à un microcontrôleur, cela pourrait être aussi simple que de filtrer et de tamponner une sortie PWM. Ou vous pouvez piloter un D / A directement, bien que cela ne semble pas nécessaire dans ce cas.
Conformément au thème des années 80 de votre manette, vous pouvez le faire avec un A / D, une mémoire et un D / A pour une sensation rétro.
Dans tous les cas, le contrôleur PID contrôle désormais efficacement une installation linéaire pour autant qu'il le sache, et son réglage sur de bonnes performances devrait être possible.
Il est plus facile d'effectuer une transformation linéaire par morceaux sur l'entrée de l'installation en un seul endroit que de modifier 3 valeurs à l'intérieur du contrôleur PID sur la plage de sortie. Ce dernier est un kludge, tandis que le premier aborde le problème directement. Il est également beaucoup plus facile de mesurer les données de la fonction de linéarisation que de déterminer les gains P, I et D en divers points. Même si vous avez fait cela, vous avez toujours des problèmes transitoires, car les bons gains ne sont pas immédiatement appliqués à la situation. Encore une fois, "la programmation des gains" est un coup de pouce.
la source
N'oubliez pas que lorsque vous linéarisez un modèle, vous supposez effectivement que le modèle non linéaire y = f (x) est remplacé par y = A * (x-x0) + B. Notez que x0 est le point de linéarisation. Lorsque vous introduisez des plages pour x, vous vous retrouvez avec plusieurs A, B et x0. Quoi qu'il en soit, l'entrée de votre contrôleur sera l'erreur par rapport au point de linéarisation actuel. Cependant, vous décalez toujours le signal d'entrée (avec B), donc même si l'erreur est 0 par rapport au point de linéarisation actuel, vous continuerez toujours un signal.
Dans votre exemple, alors, même si l'erreur est de 0 degré (au point de consigne de 70 degrés), le contrôleur restituera toujours une puissance supérieure à 0.
la source
Une approche du contrôle non linéaire avec des contrôleurs PID, une approche qui est largement utilisée dans l'industrie, est appelée «programmation de gain».
Le problème de contrôle non linéaire est décomposé en une série de régions suffisamment linéaires et les paramètres appropriés sont utilisés pour chaque région.
la source