Régulation PID programmée sur automate M258.

Forum traitant des automates industriels de marque Schneider - Telemecanique
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Régulation PID programmée sur automate M258.

Message par Cyril93 »

Namuro a écrit : 14 avr. 2017, 08:42 En fait je commence à me dire que ça peut ne pas fonctionner même si je mettais des paramètres optimums.
C'est pas si simple de caler une régul :D
Namuro a écrit : 14 avr. 2017, 08:42 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é.
La vanne s'ouvre et se ferme surement trop vite, un petit filtre sur le capteur de débit ne serait peux être pas de trop pour aider le système aussi.
Namuro a écrit : 14 avr. 2017, 08:42 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?
pour remettre à l'échelle les valeurs j'utilise une équation affine y=ax+b :

Code : Tout sélectionner

(* Mise à l'échelle *)
OUT := (IN - IN_MIN) / (IN_MAX - IN_MIN)*(OUT_MAX - OUT_MIN) + OUT_MIN;
j'avais posté ce truc aussi, ça peux t'aider pour trouver les bons réglages.
Avec cette méthode les paramètres qui sortent sont très réactif pour une réponse plus adouci on peux faire ceci, si on à réglé le bloc pour des performances rapide reprendre les PID et multiplié comme suit : Px0.5, Ix2.2, Dx0.8;
Avatar du membre
Namuro
Code son premier grafcet
Code son premier grafcet
Messages : 37
Enregistré le : 15 mars 2017, 10:43
Localisation : Bretagne

Re: Régulation PID programmée sur automate M258.

Message par Namuro »

Cyril93 a écrit : 14 avr. 2017, 09:25La vanne s'ouvre et se ferme surement trop vite, un petit filtre sur le capteur de débit ne serait peux être pas de trop pour aider le système aussi.
-> Comment est-ce que je peux temporiser le rafraichissement de la commande en tension de ma vanne? Là il dépend de mon temps de cycle. Est-ce que je devrais mettre mon code de régul dans une tâche cyclique d'intervalle de temps plus grand?
-> J'ai ajouté un filtrage de mon entrée depuis la configuration des E/S. J'ai donc mis un filtre de niveau 2 et une rampe limitée à 2047. Pour info ma valeur max d'entrée est de ~7500 à plein régime (environ 460L/min). Ce genre de chose ne me parle pas du tout donc tu peux confirmer?

J'ai regardé un post de maxpeigne viewtopic.php?f=26&t=78 qui parle de filtration aussi. Entre ce filtrage et celui de la configuration, lequel est à privilégier?


Cyril93 a écrit : 14 avr. 2017, 09:25 pour remettre à l'échelle les valeurs j'utilise une équation affine y=ax+b :

Code : Tout sélectionner

(* Mise à l'échelle *)
OUT := (IN - IN_MIN) / (IN_MAX - IN_MIN)*(OUT_MAX - OUT_MIN) + OUT_MIN;
j'avais posté ce truc aussi, ça peux t'aider pour trouver les bons réglages.
Avec cette méthode les paramètres qui sortent sont très réactif pour une réponse plus adouci on peux faire ceci, si on à réglé le bloc pour des performances rapide reprendre les PID et multiplié comme suit : Px0.5, Ix2.2, Dx0.8;
-> Pour la mise à l'échelle, sachant que OUT est la tension envoyée à la vanne, IN c'est la sortie de mon PID (PID.Y)? Mais je ne peux pas connaître ses valeurs max et min, si? :(
Et du coup j'ai:

SortieAnaVanne:= (PID.Y - ? )/( ? - ? )*( 32767 - 0 ) + 0 ;

Ou alors OUT c'est PID.Y et IN c'est mon InfoDebit, et dans ce cas:

SortieAnaVanne:= (InfoDebit - 0)/( 7500-0)*( ? - ? ) + ? ;

-> Je suis pas vraiment familier des blocs fonctions, je ne comprend pas encore comment les utiliser, les déclarer, etc. J'ai quand même tenté de copier ton code et de compiler le FB pour voir, mais vu le résultat je vais passer mon chemin sur cette solution :lol:


Merci pour l'aide en tout cas. Je patauge complet mais j'ai personne pour m'aider sur ce genre de choses dans ma boîte.
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Régulation PID programmée sur automate M258.

Message par Cyril93 »

-> Pour la mise à l'échelle, sachant que OUT est la tension envoyée à la vanne, IN c'est la sortie de mon PID (PID.Y)? Mais je ne peux pas connaître ses valeurs max et min, si? :(
ça serait bien de les connaître :lol: je sais pas quel bloc PID tu as utilisé c'est celui de la lib Util ?
-> Je suis pas vraiment familier des blocs fonctions, je ne comprend pas encore comment les utiliser, les déclarer, etc. J'ai quand même tenté de copier ton code et de compiler le FB pour voir, mais vu le résultat je vais passer mon chemin sur cette solution :lol:
une tempo TON c'est un bloc fonction, t'en as pas dans ton programme ?
Avatar du membre
Namuro
Code son premier grafcet
Code son premier grafcet
Messages : 37
Enregistré le : 15 mars 2017, 10:43
Localisation : Bretagne

Re: Régulation PID programmée sur automate M258.

Message par Namuro »

Oui, c'est celui là.

Dans les entrées il y a Y_MIN et Y_MAX, mais j'avais pensé qu'elles étaient là pour le mode Manuel uniquement vu où elles étaient placées (mais en fait c'était con car Y devient fixe..). Du coup je vois de quoi tu parles. Je sais pas trop quelles valeurs leur donner en revanche.


Si si j'ai des blocs fonctions, mais provenant de librairies. Les blocs fonctions "maison", je maîtrise pas.
Là par exemple, mon bloc fonction n'est pas instancié ni compilé si je ne l'appelle pas comme un sous programme classique, mais si je le fais je me tape 50 erreurs de compil (j'imagine que les compilateurs sont légèrement différents entre CodeSys v2.3 et SoM 4.2. ?).
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Régulation PID programmée sur automate M258.

Message par Cyril93 »

Tu peux mettre 0 et 1000 pour 0 vanne fermé et 1000 vanne ouverte comme c'est du real ça te laissera une bonne résolution de travail.

Le pid de codesys est en sens inverse donc process direct quand j'augmente ma sortie ma mesure augmente aussi, ça doit être bon pour toi ;)

Pour ce qui est de la compilation. Prendre les erreurs et les corriger une par une pas d'autre façon de faire.

Bon weekend.
Modifié en dernier par Cyril93 le 14 avr. 2017, 12:24, modifié 1 fois.
Avatar du membre
Namuro
Code son premier grafcet
Code son premier grafcet
Messages : 37
Enregistré le : 15 mars 2017, 10:43
Localisation : Bretagne

Re: Régulation PID programmée sur automate M258.

Message par Namuro »

Ok je vais essayer ça. Merci beaucoup!
Répondre