Régulation PID programmée sur automate M258.
- Namuro
- Code son premier grafcet

- Messages : 37
- Enregistré le : 15 mars 2017, 10:43
- Localisation : Bretagne
Régulation PID programmée sur automate M258.
Bonjour,
Ce sujet concerne la dernière partie de mon projet de BTS, à savoir la régulation PID d'une vanne proportionnelle.
Je souhaite programmer cette régulation sur mon automate en utilisant les retours d'infos de mes débimètres.
Le cycle va se dérouler de cette manière:
-> Après le remplissage du ballon à souder en gaz argon, à un débit maximum (vanne ouverte au max), le débit doit passer à une valeur inférieure donnée et ne pas fluctuer pour éviter les défauts de soudure. En pratique, le débit va passer d'environ 100L/min en remplissage à 20l/min en mode soudage.
Je connais la théorie de la régulation PID, mais en pratique, j'ai beaucoup de mal à la programmer avec les outils dont je dispose.
Je voudrai savoir avant tout si ce que j'essaie de faire est réalisable et viable. Comme me l'avait fait remarquer Cyril, cette technique peut donner de mauvais résultats. Est-ce que vous pensez qu'il y a quand même moyen de faire quelque chose de correct?
Je vous met les screens de cette partie de mon programme. Ca va sûrement vous sembler dégueulasse mais ce n'est qu'une ébauche, et je patauge carrément...
Les commentaires à côté de l'intégrale et de la dérivée sont faux. N'y prêtez pas attention.
Merci d'avance!
Ce sujet concerne la dernière partie de mon projet de BTS, à savoir la régulation PID d'une vanne proportionnelle.
Je souhaite programmer cette régulation sur mon automate en utilisant les retours d'infos de mes débimètres.
Le cycle va se dérouler de cette manière:
-> Après le remplissage du ballon à souder en gaz argon, à un débit maximum (vanne ouverte au max), le débit doit passer à une valeur inférieure donnée et ne pas fluctuer pour éviter les défauts de soudure. En pratique, le débit va passer d'environ 100L/min en remplissage à 20l/min en mode soudage.
Je connais la théorie de la régulation PID, mais en pratique, j'ai beaucoup de mal à la programmer avec les outils dont je dispose.
Je voudrai savoir avant tout si ce que j'essaie de faire est réalisable et viable. Comme me l'avait fait remarquer Cyril, cette technique peut donner de mauvais résultats. Est-ce que vous pensez qu'il y a quand même moyen de faire quelque chose de correct?
Je vous met les screens de cette partie de mon programme. Ca va sûrement vous sembler dégueulasse mais ce n'est qu'une ébauche, et je patauge carrément...
Les commentaires à côté de l'intégrale et de la dérivée sont faux. N'y prêtez pas attention.
Merci d'avance!
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Régulation PID programmée sur automate M258.
slts,
comprends pas pourquoi tu veux faire un PID programmé alors qu'il ya des PID tout prêts sur Unity
??
comprends pas pourquoi tu veux faire un PID programmé alors qu'il ya des PID tout prêts sur Unity
??
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: Régulation PID programmée sur automate M258.
ITASOFT il parle de l'automate M258. Est-ce qu'il se programme sous UNITY ? J'ai très peu de connaissance sur les possibilités du M258 mais je suppose que des blocs PID existent. Il serait plus simple de les utiliser si c le cas que de chercher à créer son PID.
- itasoft
- Mi homme - Mi automate

- Messages : 7806
- Enregistré le : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: Régulation PID programmée sur automate M258.
skts,
Oui ya aussi sur SoMachine
Oui ya aussi sur SoMachine
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
- Namuro
- Code son premier grafcet

- Messages : 37
- Enregistré le : 15 mars 2017, 10:43
- Localisation : Bretagne
Re: Régulation PID programmée sur automate M258.
Salut,
Effectivement, je viens de tester avec un bloc PID, c'est tout de suite plus simple.
Du coup il faut maintenant que je paramètre. Je viens de faire un essai avec KP=3, KI=1 et KD =0 pour commencer. Et le système est super instable, il oscille sans arrêt autour de la valeur que je veux. Dans ce cas, c'est bien le terme intégral qu'il faut augmenter c'est ça?
De plus, ma sortie de gaz semble se couper entre chaque mouvement de la vanne. J'ai comme l'impression que le gaz sort par à-coups à des débits différents. Et du coup ma vanne change tellement rapidement de position que j'ai peur de cramer l'électronique interne à lui faire faire ça. Elle grésille sans arrêt.
Si vous avez un mode opératoire plus rigoureux à me proposer pour faire les réglages je dis pas non
.
Merci!
EDIT: Après plusieurs tests infructueux (ma courbe de réponse fait absolument n'importe quoi), j'ai voulu envoyer une valeur fixe de débit à ma vanne et regarder la réponse en débit pour avoir une idée de l'ordre de grandeur des paramètres.
Surprise, moi qui pensait que la plage de commande allait de 0 à 32767, en réalité, de 0 à 600 environ, la vanne ne s'ouvre pas (au mieux elle grésille un peu mais rien ne passe), à 650 le débit vaut 65% du débit max, et à partir de 700 le débit est égal au débit max, c'est à dire que si j'envoie la valeur 32767 sur ma sortie j'obtiens le même débit.
Quel est le fuck?
Effectivement, je viens de tester avec un bloc PID, c'est tout de suite plus simple.
Du coup il faut maintenant que je paramètre. Je viens de faire un essai avec KP=3, KI=1 et KD =0 pour commencer. Et le système est super instable, il oscille sans arrêt autour de la valeur que je veux. Dans ce cas, c'est bien le terme intégral qu'il faut augmenter c'est ça?
De plus, ma sortie de gaz semble se couper entre chaque mouvement de la vanne. J'ai comme l'impression que le gaz sort par à-coups à des débits différents. Et du coup ma vanne change tellement rapidement de position que j'ai peur de cramer l'électronique interne à lui faire faire ça. Elle grésille sans arrêt.
Si vous avez un mode opératoire plus rigoureux à me proposer pour faire les réglages je dis pas non
Merci!
EDIT: Après plusieurs tests infructueux (ma courbe de réponse fait absolument n'importe quoi), j'ai voulu envoyer une valeur fixe de débit à ma vanne et regarder la réponse en débit pour avoir une idée de l'ordre de grandeur des paramètres.
Surprise, moi qui pensait que la plage de commande allait de 0 à 32767, en réalité, de 0 à 600 environ, la vanne ne s'ouvre pas (au mieux elle grésille un peu mais rien ne passe), à 650 le débit vaut 65% du débit max, et à partir de 700 le débit est égal au débit max, c'est à dire que si j'envoie la valeur 32767 sur ma sortie j'obtiens le même débit.
Quel est le fuck?
Re: Régulation PID programmée sur automate M258.
As tu la confirmation des gars du process que c'est bien une régul PID qu'il faut ?
Ensuite commencer un réglage avec un gain à 3 ne peut que donner des réponses extrêmes.
Dans les techniques de réglage, il y en a un paquet dans la littérature. Pour ma part sur le terrain, j'ai toujours utilisé le pifomètre (donc je commence avec une bande proportionnelle de 100%, je supprime l'action I et je met un petit temps intégral).
Ensuite commencer un réglage avec un gain à 3 ne peut que donner des réponses extrêmes.
Dans les techniques de réglage, il y en a un paquet dans la littérature. Pour ma part sur le terrain, j'ai toujours utilisé le pifomètre (donc je commence avec une bande proportionnelle de 100%, je supprime l'action I et je met un petit temps intégral).
- Namuro
- Code son premier grafcet

- Messages : 37
- Enregistré le : 15 mars 2017, 10:43
- Localisation : Bretagne
Re: Régulation PID programmée sur automate M258.
C'est moi qui ai décidé de mettre un PID en place en suivant le cahier des charges du process. Le débit doit changer rapidement, être stable, et ce quelque soit la pression dans notre réseau de gaz (qui varie constamment suivant la production).
Je n'ai absolument aucune idée de l'ordre de grandeur des paramètres. J'ai quand même fait beaucoup de tests hier avec plusieurs valeurs de gains (de 0.1 à 3 pour KP et les deux autres à 0, puis avec un des deux, etc), et la réponse a toujours plus ou moins la même forme.
Ce qui m'interpelle à ce moment c'est ce que je vous disais hier :
Je n'ai absolument aucune idée de l'ordre de grandeur des paramètres. J'ai quand même fait beaucoup de tests hier avec plusieurs valeurs de gains (de 0.1 à 3 pour KP et les deux autres à 0, puis avec un des deux, etc), et la réponse a toujours plus ou moins la même forme.
Ce qui m'interpelle à ce moment c'est ce que je vous disais hier :
Je n'arrive pas à trouver d'explication. Il est probable que la réponse en débit en fonction de la tension envoyée à la vanne ne soit pas une fonction linéaire, mais elle devrait être au moins continue de 0 à 10V, non?Surprise, moi qui pensait que la plage de commande allait de 0 à 32767, en réalité, de 0 à 600 environ, la vanne ne s'ouvre pas (au mieux elle grésille un peu mais rien ne passe), à 650 le débit vaut 65% du débit max, et à partir de 700 le débit est égal au débit max, c'est à dire que si j'envoie la valeur 32767 sur ma sortie j'obtiens le même débit.
Re: Régulation PID programmée sur automate M258.
Quelles sont les références catalogues des vannes utilisées ?
- Namuro
- Code son premier grafcet

- Messages : 37
- Enregistré le : 15 mars 2017, 10:43
- Localisation : Bretagne
Re: Régulation PID programmée sur automate M258.
C'est un régulateur de pression Parker LUCIFER P4BG4001A004. Après avoir testé la vanne avec un générateur de tension, j'ai obtenu le même résultat, et j'en viens à me dire que j'ai fait une bourde sur le choix de la vanne. Ça ne fonctionne pas du tout comme je l'espérais
.
Du coup j'ai changé de vanne pour une ASCO pour tester et ça a l'air de fonctionner normalement. Néanmoins, ma vanne s'ouvre toujours à fond quelques soient les paramètres et ma consigne de régulation. Mais au moins celle ci fonctionne sur toute la plage de tension.
Du coup j'ai changé de vanne pour une ASCO pour tester et ça a l'air de fonctionner normalement. Néanmoins, ma vanne s'ouvre toujours à fond quelques soient les paramètres et ma consigne de régulation. Mais au moins celle ci fonctionne sur toute la plage de tension.
- Namuro
- Code son premier grafcet

- Messages : 37
- Enregistré le : 15 mars 2017, 10:43
- Localisation : Bretagne
Re: Régulation PID programmée sur automate M258.
En fait je commence à me dire que ça peut ne pas fonctionner même si je mettais des paramètres optimums.
Le temps entre le moment où je déplace ma vanne et celui où le débitmètre change de valeur m'a l'air beaucoup trop long. Et du coup le système est super instable. Quand ma vanne s'ouvre ou se ferme, le débitmètre renvoie en premier lieu une valeur plus grande (si la vanne s'ouvre) ou plus petite (si la vanne se ferme) que la valeur réelle, parce que le flux n'est pas stabilisé. Du coup, mon régulateur voit un système plus réactif qu'il ne l'est en réalité.
Autre chose, c'est à propos des unités de mes variables.
Mon débitmètre me renvoie une valeur sur 16bits, que je divise par 16 pour avoir un débit réel en L/min (le 16 je l'ai déterminé moi même). Ensuite je passe cette valeur dans le PID, et je met en consigne une autre valeur en L/min (disons 50 L/min). Le Y en sortie de mon bloc PID, c'est donc une valeur en L/min. (?)
Et ensuite je remultiplie Y par 16 et je fais:
SortieAnaVanne:= SortieAnaVanne + REAL_TO_INT( 16*PID.Y);
Ça vous semble correct?
Le temps entre le moment où je déplace ma vanne et celui où le débitmètre change de valeur m'a l'air beaucoup trop long. Et du coup le système est super instable. Quand ma vanne s'ouvre ou se ferme, le débitmètre renvoie en premier lieu une valeur plus grande (si la vanne s'ouvre) ou plus petite (si la vanne se ferme) que la valeur réelle, parce que le flux n'est pas stabilisé. Du coup, mon régulateur voit un système plus réactif qu'il ne l'est en réalité.
Autre chose, c'est à propos des unités de mes variables.
Mon débitmètre me renvoie une valeur sur 16bits, que je divise par 16 pour avoir un débit réel en L/min (le 16 je l'ai déterminé moi même). Ensuite je passe cette valeur dans le PID, et je met en consigne une autre valeur en L/min (disons 50 L/min). Le Y en sortie de mon bloc PID, c'est donc une valeur en L/min. (?)
Et ensuite je remultiplie Y par 16 et je fais:
SortieAnaVanne:= SortieAnaVanne + REAL_TO_INT( 16*PID.Y);
Ça vous semble correct?