Recherche aide pour projet : régulation température serre

Les automaticiens surbooker ou en manque de main d'oeuvre temporairement.
philou77
Dieu du process
Dieu du process
Messages : 884
Enregistré le : 21 oct. 2015, 10:00

Re: Recherche aide pour projet : régulation température serre

Message par philou77 » 11 juil. 2019, 10:01

Salut !

Pardon, je n'avais pas vu que tu étais en twido, je te croyais en somachine basic.

Pour créer une interruption périodique sous twido.

Sélectionner programme, éditer Mode de Scrutation
-décocher la case non utilié
- spécifier la période (5ms pour toi)
- spécifier quel sous programme sera utilisé ( par exemple 0)
cliquer sur Ok

Ensuite pour créer un sous programme (place le en dernier dans ton code, c'est plus simple)

SR0: (c'est le début du sous programme)
section 1 (%M0 sera à 0 pendant 5ms, puis à 1 pendant 5ms, tu as donc 10ms entre chaque front de %M0)
un %M0
=%M0
Section 2
ton compteur (pas besoin de-|P|- %M0 , -||-%M0 suffira)
Section 3
RET -> (fin du sous programme)

de cette manière, ton comptage sera stable, quel que soit la longueur de ton programme, mais le revers de la médaille est que cela ralenti un peu le programme lui même.


Une autre solution pour avoir quelque chose de plus stable est de modifier la scrutation du programme
en mode cyclique, une fois le programme fini, il recommence !
en mode périodique, une fois le programme fini, il attend la fin de la période puis recommence !
Cependant,du fait que le programme attende à la fin, il faut faire attention à
- ce que l'exécution totale programme dure MOINS LONGTEMPS que la période voulue ! dans le cas contraire il repasse en cyclique !
- qu'on ai pas besoin de réaliser une opération plus rapidement que la période voulue ! car quand il attend à la fin, il ne fait rien !
- Aux évènements (interruptions, sous programme conditionnels, etc) qui peuvent allonger temporairement la durée du programme
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D

Avatar de l’utilisateur
beaware
Asservi son premier moteur
Asservi son premier moteur
Messages : 24
Enregistré le : 09 juin 2019, 13:05
Localisation : Vendée (85)
Contact :

Re: Recherche aide pour projet : régulation température serre

Message par beaware » 12 juil. 2019, 00:13

J'y suis presque mais pourquoi j'ai cette erreur ? :
Capture5.JPG
Edit :

J'en suis là, mais je sèche, la simulation est impossible :
Capture6.JPG

philou77
Dieu du process
Dieu du process
Messages : 884
Enregistré le : 21 oct. 2015, 10:00

Re: Recherche aide pour projet : régulation température serre

Message par philou77 » 12 juil. 2019, 09:27

Tu ne dois pas appeler le SR !!
Cela se fait tout seul toutes les 5ms
Sans titre 10.jpg
Sans titre 11.jpg
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D

Avatar de l’utilisateur
beaware
Asservi son premier moteur
Asservi son premier moteur
Messages : 24
Enregistré le : 09 juin 2019, 13:05
Localisation : Vendée (85)
Contact :

Re: Recherche aide pour projet : régulation température serre

Message par beaware » 12 juil. 2019, 15:23

philou77 a écrit :
12 juil. 2019, 09:27
Tu ne dois pas appeler le SR !!
Cela se fait tout seul toutes les 5ms

Sans titre 10.jpg

Sans titre 11.jpg
Merci pour la correction, le site schneider mentionne pourtant d'appeler le SR : https://www.se.com/fr/fr/faqs/FA16917/.

Par contre on est d'accord que c'est le SR0 et pas le SR6 ?

philou77
Dieu du process
Dieu du process
Messages : 884
Enregistré le : 21 oct. 2015, 10:00

Re: Recherche aide pour projet : régulation température serre

Message par philou77 » 12 juil. 2019, 16:11

Re ! Tu te mélange les pinceaux !

Un sous programme classique (SR) doit être appelé par le programme principal oui.

Dans ton application, c’est un événement de temps qui appelle le (SR) donc tu ne dois pas l’appeler dans le programme principal !

Comme je t’ai déjà répondu le numéro du SR doit correspondre avec celui de la fenêtre de configuration mode.

Si tu as tout bien fait, tu dois voir ton compteur compter ou décompter en simulation !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D

Avatar de l’utilisateur
beaware
Asservi son premier moteur
Asservi son premier moteur
Messages : 24
Enregistré le : 09 juin 2019, 13:05
Localisation : Vendée (85)
Contact :

Re: Recherche aide pour projet : régulation température serre

Message par beaware » 14 juil. 2019, 00:38

Non seulement je dois me mélanger les pinceaux, mais je suis loin d'avoir votre niveau et je ne comprend pas tout.

Le numéro que l'on marque dans la configuration du comportement, "numéro du sous programme" : C'est bien 0 ?
Capture8.JPG

Car dans le programme, le SR à bien le numéro 0 :

Capture7.JPG

Après tu as certainement raison que c'est un événement de temps qui appelle le SR, mais là je ne capte déjà plus.

Désolé, je comprend vite mais il faut m'expliquer longtemps :mrgreen:

Avatar de l’utilisateur
beaware
Asservi son premier moteur
Asservi son premier moteur
Messages : 24
Enregistré le : 09 juin 2019, 13:05
Localisation : Vendée (85)
Contact :

Re: Recherche aide pour projet : régulation température serre

Message par beaware » 14 juil. 2019, 01:05

Est ce qu'il y aurai un volontaire pour m'expliquer comment configurer la fonction PID, je n'y arrive pas.
Pour faire les tests en local à l'atelier, j'aimerai tester en saisissant la valeur mesurée de la sonde dans un mot ('exemple %MW10).

Pour info mes vérins mettent 16 secondes à s'ouvrir, idem pour la fermeture.

philou77
Dieu du process
Dieu du process
Messages : 884
Enregistré le : 21 oct. 2015, 10:00

Re: Recherche aide pour projet : régulation température serre

Message par philou77 » 14 juil. 2019, 13:19

Salut !

Oui , 0 dans la config et 0 pour le SR, c'est bon !
Je vais tenter de t'expliquer..

l'automate lit son programme principal du début jusqu'au END, une fois terminé il recommence....Cela lui prend un certain temps (ce qu'on appelle le temps de cycle). Ce temps est la somme du temps pour exécuter chaque instruction du programme !

lorsque 5ms se sont écoulées , l'automate stoppe son programme principal (n'importe où entre le début et la fin) et exécute UNE SEULE FOIS le SR.
une fois le SR terminé, l'automate reprend son programme à l'endroit il s'était arrêté !

C'est tout simple !

Par exemple, si le temps de cycle de l'automate est de 20ms (pour le programme principal), le SR sera exécuté 4 fois (20/5) tandis que le programme principal ne sera exécuté qu'une fois !

Pour le PID, je passe mon tour, je ne suis pas spécialisé la dedans, d'autres sont bien meilleurs que moi :)
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D

Avatar de l’utilisateur
beaware
Asservi son premier moteur
Asservi son premier moteur
Messages : 24
Enregistré le : 09 juin 2019, 13:05
Localisation : Vendée (85)
Contact :

Re: Recherche aide pour projet : régulation température serre

Message par beaware » 14 juil. 2019, 17:09

philou77 a écrit :
14 juil. 2019, 13:19
Salut !

Oui , 0 dans la config et 0 pour le SR, c'est bon !
Je vais tenter de t'expliquer..

l'automate lit son programme principal du début jusqu'au END, une fois terminé il recommence....Cela lui prend un certain temps (ce qu'on appelle le temps de cycle). Ce temps est la somme du temps pour exécuter chaque instruction du programme !

lorsque 5ms se sont écoulées , l'automate stoppe son programme principal (n'importe où entre le début et la fin) et exécute UNE SEULE FOIS le SR.
une fois le SR terminé, l'automate reprend son programme à l'endroit il s'était arrêté !

C'est tout simple !

Par exemple, si le temps de cycle de l'automate est de 20ms (pour le programme principal), le SR sera exécuté 4 fois (20/5) tandis que le programme principal ne sera exécuté qu'une fois !

Pour le PID, je passe mon tour, je ne suis pas spécialisé la dedans, d'autres sont bien meilleurs que moi :)
Merci Philou pour cette explication, là c'est limpide et je comprend tout à fait ;) , et en plus cela fonctionne parfaitement. Merci pour la patience et la pertinence des informations :D .


Pour les spécialistes du PID, j'ai réussi à configurer le PID et à le mettre dans mon programme. J'aimerai faire une premier exercice. Les infos que j'ai paramétré :

- Mode de marche - AT+ PID , Etat PID coché : %MW1
- Entrée - Mesure = %MW2 (je mettrai à jour manuellement cette valeur dans la table d'animation en mode simulation ou en ligne)
- PID - Consigne = %MW3 , Paramètres , Kp = %MW 4 , Ti = %MW5 , Td = %MW6 , Période échantillonnage = 100
- AT - coché , Limite de la mesure = %MW7 , Commande de sortie = %MW8
- Sortie - Action = Adresse Bit = %M10 , Limite = inhiber , Mode manuel = inhiber , Sortie numérique = %MW10 , Sortie PWM = non coché

Je ne comprend pas à quoi serve tous les paramètres, j'y vais à taton. J'ai mis une consigne à 30 ( %MW3), une valeur de mesure (%MW2) à 32, et je regarde le comportement en simulation en augmentant %MW2 de 1 en 1. Pour l'instant aucun constat ou résultat ...

philou77
Dieu du process
Dieu du process
Messages : 884
Enregistré le : 21 oct. 2015, 10:00

Re: Recherche aide pour projet : régulation température serre

Message par philou77 » 15 juil. 2019, 11:23

Salut !

Tous ces réglages sont là pour s'accorder à la multitude de configurations possibles.
AT = Auto tune (c'est une fonction d'auto apprentissage)
PID = la fonction de régulation

PID (Pas d'auto tune)
AT+ PID = Auto tune au démarrage puis bascule en PID (la bascule est c'est transparente)
AT = Auto tune au démarrage et ensuite arrêt du PID
Adresse de Mot : indiquer l'adresse d'un mot mémoire pour pouvoir changer le mode de marche par programmation (de 0 à 4 pour la valeur de ce mot)

Pour la sortie
Action direct ou inverse : influe directement sur l'état du bit en dessous ou au dessus de la consigne !
Limites : spécifier un bit et acitver les limites, cela te préviendras si la mesure dépasse les limites
Mode Manuel : comme son nom l'indique, si tu veux pouvoir forcer la régulation
Sortie Analogique : si on utilise une sortie qui va varier de 0 à 100% pour réguler
PWM : on peut utiliser un PWM (qui est une modulation de la largeur d'impulsion). à 0 il n'y a pas de tension, à 100 il y a pleine tension, entr eles deux, on a une tension variable (ça peut s'apparenter à une sortie analogique un peu spéciale pour faire court)

PID ça veut dire Proportionnelle , Intégrale, Dérivée.
D'où tes trois facteur Kp, Ki, Kd et la période d'échantillonnage (fréquence à laquelle ta mesure est évaluée, soit toutes les n ms).
Le rôle de la fonction est de maintenir la mesure au plus proche de la consigne en évitant les pics.
Par exemple un chauffage et une sonde.
quand ça chauffe, la température monte, si tu arrête le chauffage à la consigne, la température va continuer d'augmenter (inertie thermique) et tu va dépasser ta consigne !
si tu attends d'être sous la consigne pour chauffer, la température va continuer de descendre.

Le PID anticipe cette consigne, en stoppant le chauffage AVANT la consigne et en Chauffant AVANT d'être redescendu sous la consigne.
Il maintient donc la mesure autour de la consigne.

Dans ton cas, tu dois penser 'REFROIDIR' car tu n'as pas de chauffage !


Ce seront les trois facteurs qui seront le plus dur a régler pour toi
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D

Répondre