Comptage de volume de gaz traversant un circuit.

Forum traitant des automates industriels de marque Schneider - Telemecanique
Avatar du membre
Namuro
Code son premier grafcet
Code son premier grafcet
Messages : 37
Enregistré le : 15 mars 2017, 10:43
Localisation : Bretagne

Comptage de volume de gaz traversant un circuit.

Message par Namuro »

Bonjour à tous,

Après avoir parcouru bon nombre de forum pour trouver une solution à mon problème, je me tourne vers vous, qui avez l'air actifs (et réactifs), pour me donner un petit coup de pouce. :)

Je travaille actuellement sur mon projet de BTS, dont le but est de piloter une vanne proportionnelle via un automate dans une machine de soudure de ballons. Cette vanne est asservie en débit à l'aide de deux capteurs, chacun pour une branche d'un circuit, branches qui ne peuvent être alimentés en même temps.
Le fonctionnement du cycle est le suivant:

_ Dans un premier temps, la vanne est ouverte au maximum pour envoyer le gaz à plein débit dans le ballon pour chasser tout l'air qu'il contient. Ce temps d'ouverture, qui est actuellement géré par une tempo, devra dorénavant dépendre du volume de gaz qui aura été injecté depuis le début du cycle.
Ce volume est calculé en récupérant les infos des capteurs de débit, et en incrémentant une variable par intervalle de temps régulier avec les valeurs récupérées.

_Dans un second temps, il s'agit d'asservir la vanne avec une régulation PID programmée sur l'automate. Ce n'est pas le sujet de ma question d'aujourd'hui mais j'aurai sûrement besoin d'aide là dessus bientôt ^^.

Question matériel: J'utilise un automate TM258LF66DT4L, programmable via SoMachine (LogicBuilder), des capteurs Ifm SD6100 et une vanne proportionnelle Parker (peu importe la référence).


Mon problème est que le clignoteur que j'ai mis en place et qui est censé activer l'incrémentation de ma variable de volume total injecté, ne fonctionne pas. Il s'agit d'un BLINK dont les temps d'état haut et bas sont de 0.5s. J'ai donc en théorie un front montant toutes les secondes.

Si je place mon bloc BLINK sans bobine à sa sortie, le clignotement se fait bien toutes les secondes.
Par contre, si je place une bobine à activer derrière, la sortie du bloc BLINK, une fois qu'elle est passé à 1, reste à 1 et ne bouge plus jamais.

Ma question est la suivante: Ai-je mal compris quelque chose dans le fonctionnement du bloc BLINK?

Voici à quoi cela ressemble: ( Ce screen montre des valeurs d'état haut/bas différentes, car je testais un peu tout à ce moment. J'ai fais le test avec 0.5/0.5 également sans succès.)
ProgVarVolGazAct.PNG



Merci d'avance!

PS: Désolé du roman, mais comme je risque d'avoir plusieurs questions à vous poser je voulais exposer clairement mon projet pour ne pas avoir à tout réexpliquer à chaque fois. :D
PS²: Le PC de programmation de ma boîte a cramé (youhou...), donc je ne pourrai pas vous décrire plus en détail mon programme tant que je n'ai pas de nouveau PC.
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Comptage de volume de gaz traversant un circuit.

Message par Cyril93 »

Salut,

On à les infos au moins :D

- pourquoi ne pas utiliser la sortie de comptage du débitmètre ?

- Le blink a un bit "secure" sur son entrée Enable, si cette entrée repasse à zéro alors que la sortie du blink est à un elle restera à un, par contre je ne vois pas de rapport avec la présence ou non de la bobine derrière cela doit fonctionner pareil dans les deux cas.
Ce que je peux te dire aussi; pour faire un front montant toutes les secondes, on utilise une tempo TON avec en IN = NOT TON.OUT
Avatar du membre
Namuro
Code son premier grafcet
Code son premier grafcet
Messages : 37
Enregistré le : 15 mars 2017, 10:43
Localisation : Bretagne

Re: Comptage de volume de gaz traversant un circuit.

Message par Namuro »

Merci pour la réponse rapide :)

- Et bien déjà parce que... Je n'y avais pas pensé :D. Le problème que je vois cependant c'est que mon volume à injecter au total dans un ballon dépend du type de ballon, et plusieurs types sont soudés sur cette machine. Je ne peux donc pas pré-enregistrer dans mes capteurs un volume total (disons 300L) et activer une sortie impulsion pour passer à l'étape suivante du cycle.
En revanche, je peux peut-être le faire avec un volume faible (1L) et activer l'impulsion pour incrémenter un compteur puis comparer avec le volume souhaité.
Je pense que c'est une bonne piste, à creuser :D

- Le bit secure ne change pas d'état, il correspond à l'étape active de remplissage. Il vaut forcément 1. (Oui en gros il ne sert pas à grand chose tel qu'on le voit là).
Il me semble avoir déjà tenté cela aussi, mais je re-testerai à l'occasion.

Merci bien en tout cas :)
Avatar du membre
Namuro
Code son premier grafcet
Code son premier grafcet
Messages : 37
Enregistré le : 15 mars 2017, 10:43
Localisation : Bretagne

Re: Comptage de volume de gaz traversant un circuit.

Message par Namuro »

Re,

Je profite que le sujet soit ouvert pour vous poser une autre question.
Cela a rapport avec le temps de cycle de mon automate.
Ma tâche main est une tâche cyclique de durée 10 ms. Les modifications que j'ai apportées au programme de la machine (la gestion de la vanne proportionnelle) ont nécessairement allongé la durée minimum de traitement du programme.

Comment puis-je savoir si cette durée de 10 ms est toujours suffisante pour traiter l'ensemble de mon programme? Sachant qu'il n'est pas linéaire, tous les sous programmes ne sont pas forcément appelés lors d'une scrutation. La compilation peut elle détecter que ce temps n'est pas suffisant?

D'autre part, y a-t-il un moyen de connaître le temps maximum de traitement d'un programme dans ce type d'automate? (Je sais que l'on peut sur un TSX37, mais je n'ai rien trouvé de tel dans la configuration de celui-ci). Pour rappel j'utilise un TM258.
Cela me permettrait de définir un temps minimum de cycle que je pourrai utiliser pour optimiser la fréquence de calcul de mon régulateur PID.

Merci !
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Comptage de volume de gaz traversant un circuit.

Message par Cyril93 »

Namuro a écrit : 15 mars 2017, 12:21 En revanche, je peux peut-être le faire avec un volume faible (1L) et activer l'impulsion pour incrémenter un compteur puis comparer avec le volume souhaité.
Je pense que c'est une bonne piste, à creuser :D
Ca me semble pas mal, plus simple à mettre en oeuvre, plus précis aussi. Si tu choisis une impulsion par litre tu seras précis au litre, c'est pas top quand même !! Une impulsion au 0.1L sera plus adaptée mais a vérifier la fréquence parce que si c'est trop rapide il faudra une entrée comptage rapide, à toi de voir.

Si tu as le temps de lire ça tu comprendras pourquoi ta méthode peux ne pas donner de bons résultats.
Avatar du membre
Namuro
Code son premier grafcet
Code son premier grafcet
Messages : 37
Enregistré le : 15 mars 2017, 10:43
Localisation : Bretagne

Re: Comptage de volume de gaz traversant un circuit.

Message par Namuro »

Une précision de l'ordre du litre est tout à fait convenable pour mon application. Les ballons d'eau chaude que l'on rempli de gaz avant de souder font entre 120 et 300 L. Or on considère que pour pouvoir commencer la soudure il faut au préalable avoir injecté 8 fois le volume du ballon en gaz.

Je ne pense donc pas que cela soit un problème. Au contraire, cela m'évitera de me prendre la tête pour savoir si je risque de louper des fronts montants. A la limite je peux prendre 0.5L... Je verrai bien.


"Cependant, la précision du résultat obtenu dépend à la fois de l’ordre de la formule de quadrature, de la taille des morceaux et de la régularité de la fonction. D’autre part, il est généralement inutile d’appliquer une formule de quadrature d’ordre m si la fonction n’est pas continûment dérivable jusqu’à l’ordre m+1."
"Si f^{m}(x) n’est pas continue sur [a,b], une formule de quadrature d’ordre m (ou plus) présente peu d’intérêt."


C'est de cela dont tu veux parler? Le fait que mon erreur soit actualisée non continuellement mais par intervalles fait que f(x) n'est pas continue et que donc le calcul d'intégrale du programme (qui est en fait un calcul numérique par approximation), ne marchera pas. J'ai bon?
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Comptage de volume de gaz traversant un circuit.

Message par Cyril93 »

Namuro a écrit : 15 mars 2017, 14:15 Une précision de l'ordre du litre est tout à fait convenable pour mon application. Les ballons d'eau chaude que l'on rempli de gaz avant de souder font entre 120 et 300 L. Or on considère que pour pouvoir commencer la soudure il faut au préalable avoir injecté 8 fois le volume du ballon en gaz.

Je ne pense donc pas que cela soit un problème. Au contraire, cela m'évitera de me prendre la tête pour savoir si je risque de louper des fronts montants. A la limite je peux prendre 0.5L... Je verrai bien.
A toi de voir ton besoin en précision et de mettre en face ce qu'il convient.
C'est de cela dont tu veux parler? Le fait que mon erreur soit actualisée non continuellement mais par intervalles fait que f(x) n'est pas continue et que donc le calcul d'intégrale du programme (qui est en fait un calcul numérique par approximation), ne marchera pas. J'ai bon?
Oui tout à fait, si le débit n'est pas régulier cela peux être imprécis. Après cela rejoint la question quelle précision veux tu obtenir ;)
Ma tâche main est une tâche cyclique de durée 10 ms. Les modifications que j'ai apportées au programme de la machine (la gestion de la vanne proportionnelle) ont nécessairement allongé la durée minimum de traitement du programme.
Ta tâche est surement une interruption cyclique toutes les 10ms, une tâche cyclique c'est quand on arrive à la fin on reprend au début. Sur un premium on dirait que ta tâche est périodique avec une période de 10ms

http://www.schneider-electric.fr/fr/faqs/FA16806/

les autres questions je ne sais pas répondre, sur codesys V2.3 pour mesurer le temps de cycle on le fait soit même avec une lecture du temps système (SoMachine est une version customisée par schneider de codesys V3)
Avatar du membre
Namuro
Code son premier grafcet
Code son premier grafcet
Messages : 37
Enregistré le : 15 mars 2017, 10:43
Localisation : Bretagne

Re: Comptage de volume de gaz traversant un circuit.

Message par Namuro »

Cyril93 a écrit : 15 mars 2017, 14:48 Oui tout à fait, si le débit n'est pas régulier cela peux être imprécis. Après cela rejoint la question quelle précision veux tu obtenir ;)
Je ne suis pas sûr que tu n'aies pas mal compris certaines de mes infos.

La phase où je compte le volume injecté est distincte de celle où j'utilise un régulateur PID.

Lors du remplissage, j'ouvre ma vanne à fond, et je compte le volume.

Une fois que le ballon est rempli de gaz je passe en mode débit constant, c'est à dire que je veux injecter en continu du gaz à un débit moindre, mais précis, pendant tout le temps de la soudure. C'est dans cette phase que j'utilise le PID, notamment pour la transition entre les deux phases, où les débits sont différents (de 100L/min environ je passe à 20L/min précisément).

En soit donc, je veux juste appliquer une consigne fixe et diminuer mon débit pour atteindre cette consigne. Et pour le coup, j'ai effectivement besoin de pas mal de précision, mais surtout de stabilité. Et il est évident que je vais avoir besoin d'une composante d'intégration pour atteindre ma valeur de consigne précisément.

Du coup, à ton avis, est-ce impossible de réaliser quelque chose de précis? Ou simplement compliqué au niveau du choix des paramètres?


En tout cas merci beaucoup pour ton aide! Ca m'aide grandement! ( Et plus rapidement que le support téléphonique Schneider :roll: )
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Comptage de volume de gaz traversant un circuit.

Message par Cyril93 »

J'espère que je t'ai pas embrouillé avec mes histoires de précisions :D
La précision en volume est surement pas très importante dans ton cas, du coup ta solution fonctionneras très certainement ;)

Voilà comment on fait un front toutes les secondes avec une tempo TON

Capture.PNG
Capture.PNG (7.26 Kio) Vu 4597 fois
Avatar du membre
josé
Codeur fou
Codeur fou
Messages : 264
Enregistré le : 20 oct. 2015, 17:02

Re: Comptage de volume de gaz traversant un circuit.

Message par josé »

bonjour,
Pourquoi ne pas mettre 2 vannes TOR réglées avec des débit différent ?
Créateur de pannes ...
Répondre