Travaux+Logistiques


 * __2 juin 2009__**

Voici mon programme de la phase 6 et Intouch:


 * __25 mai 2009__**

__//Programme//__ Les changements apportés au programme ont étés très simple. Tous d'abord, vue qu'il faut être capable de changer les valeurs partir de Intouch j'ai intégré un contact de verrouillage et déverrouillage afin de pouvoir les changer sans être en conflit avec ceux déjà sauvegardées. Pour revenir à mes valeurs par défaut, j'ai mis un contact dans ma partie d'//Initialisation.// Dans ma partie communication, j'ai changé la valeur de temps de mon Timer (celui qui vérifier si la plaque est absente) pour que l'ont puisse la modifier à partir de Intouch. Pour ce faire, au lieu de mettre une valeur direct comme 10 secondes, je met une case mémoire DM à sa place. Donc, quand on modifie la valeur dans Intouch, celle-ci change automatiquement.

//__Intouch__// La partie la plus compliquée fut celle de Intouch. Comme ce logiciel envoie ses données en binaire, il faut les transformer en BCD dans le programme. Pour ce faire, on sauvegarde la valeur X en binaire dans une case mémoire DM ensuite il faut exécuter l'instruction Binary to BCD et sauvegarder cette nouvelle valeur qui est maintenant compatible avec le programme dans sa case mémoire correspondante aux paramètres en BCD. Afin de lire les valeurs dans Intouch, on rencontre le même problème donc, on fait la démarche contraire. On prends la case mémoire correspondante aux paramètres en BCD, la transforme en BCD et le tour est joué.

__//Courbe//__ Il faut commenter le comportement de notre courbe selon le graphique suivant: [|Usine2009_variations PID.pdf], celle qui correspond à ma phase est la noir. Comme on peut apercevoir, ma courbe réagit un plus lentement au début comparativement aux autres. Vue que mon Intégral est très élevé, le régulateur cherche à corriger l'erreur très rapidement, c'est pour cette raison qu'il n'y a pas un gros sommet (overshoot). La courbe par après est très stable et n'oscille pas.


 * __12 mars 2009__**

Voici les Grafcet ainsi que le programme pour le fonctionnement de la Phase 6:






 * __17 février 2009__**

Ce qui est intéressant avec le logiciel de programmation d'OMRON, est que l'ont peut diviser notre projet en plusieurs blocs. Cela facilite grandement la gestion et le déboguage du programme. Dans mon cas, j'ai divisé mon programme en 11 sections, je détaillerai ceux-ci dans les paragraphes qui suivent.

__//Inisialisation//__

Tout d'abord, j'ai fais une section qui gère l'initialisation. La principale fonction est d'initialiser tous les bits (HR) du programme. Pour ce faire, l'instruction BSET est utilisé, on choisi la valeur voulue (0) et on sélectionne la plage que l'ont veut (HR0 jusqu'à HR99). Chaque étape initiale est mis à 1 avec un SET. De plus, les valeurs comme la température, la pression et le débit sont déterminé. On sauvegarde ces valeurs (en Hexadécimale) dans des cases mémoire avec un MOV que l'ont rappelera plus tard dans le programme. Ce qui reste est la configuration du PID et de la communication que j'ai expliqué un peu plus bas.

//__Gestion des alarmes__//

Les erreurs produites surviennent du niveau d'eau trop bas, la température, la pression ainsi que le débit qui ne sont pas dans leurs plages de données. Une alarme est activée lorsque la valeur normale sort de la plage durant trois secondes. Si elle change durant ces trois secondes, rien ne se passe et c'est le même principe pour la désactiver. Pour le niveau, ce qui provoque une alarme est le capteur de niveau, il doit rester trois secondes à la position haute ou basse. Pour la pression, le débit et la température, on lis une valeur analogique. Dans le but de provoquer une alarme, on compare deux fois la valeur analogique lue avec la valeur basse et avec la valeur haute. Lorsque la valeur lue est plus petite que la varialble maximum et plus grande que la variable minimum, tout fonctionne très bien. Par contre, si l'une des deux conditions n'est pas vrai, une alarme est déclenchée après trois secondes d'état stable.

__//Chauffage//__

Le chauffage contient deux sections, l'une pour le programme et l'autre pour le calcul du temps de chauffage. La manière de calculer le temps de chauffage est expliquée un peu plus bas.

__//Communication//__

Dans cette section, on communique avec le bras manipulateur. La séquence de communication est décrite plus bas. Ce qu'il faut retenir lorsque l'instruction SEND est appliqué, est qu'une étape bidon doit la suivre afin qu'il puisse tester l'erreur par après. Une fois la séquence terminé, tous les cases mémoires doivent être remise à zéro.


 * __29 janvier 2009__**[[image:Test_Échelon.jpeg width="411" height="251" align="right"]]

Il y a plusieurs méthodes afin de calculer les valeurs du PID. Une manière simple est de faire un test échelon à l'aide d'un système d'acquisition de données. Cette démarche consiste à stabiliser le procédé et de provoquer un changement brusque de la consigne. L'instruction du PID doit être désactivé dans le programme pour fonctionner en boucle fermé. Une fois stable, ce qui peut être très long pour le chauffage, la courbe obtenu devrait ressembler à ceci:

Maintenant, il ne reste qu'à calculer la bande proportionnelle (P) et le temps d'intégral (I). GP = (∆Mesures%) / (∆Consigne%) T = 62.3% td = 2% Kp = 0.9 x (T/td) x (1/GP) Ki = 3.33 x td Lorsque ces données sont calculées, il faut les remplacer aux bons endroits (DM 501 pour le P et DM 502 pour le I), la courbe obtenue est maintenant stabilisée à la consigne voulue comme figurée sur le graphique ci-contre. On peut remarquer qu'il y a beaucoup de bruit mais l'essentiel à été retenue entre les lignes vertes.


 * __27 janvier 2009__**

La communication avec le bras manipulateur se fait en suivant la séquence ci-dessous;

1 La phase doit être prête (niveau et température correcte, Prêt 1) 2 Une plaque doit être présente 3 Le bras manipulateur doit être présent à notre phase 4 La pompe démarre 5 La phase doit être prête (pression et débit correct, Prêt 2) un délais de 10 secondes est accordé 6 Le bras manipulateur descend la plaque 7 La phase s'assure qu'il y a bien une plaque en place, la séquence de traitement est amorcée et un délais de 10 secondes est accordé 8 La phase à terminée sa séquence 9 Le bras manipulateur récupère la plaque, la phase arrête la pompe 10 Le bras manipulateur vérifie si la plaque est absente

Pour bien communiquer, il faut configurer les adresses comme ceux du PID:

L'instruction NETWORK SEND se réserve 4 adresse en continu donc, il faut être sur de prendre des cases mémoire libre et de ne plus y retoucher. Dans mon cas, j'ai réservé les cases 100 à 103. Chacune des adresses doivent être configurées manuellement, faire un MOV lors de l'initialisation du programme. Adresse 100 : La destination et le nombre de mots envoyés, 0001 Adresse 101 : Nombre d'essai, temps de réponse, C300 Adresse 102 : L'unité de destination, le numéro de la phase, 000B Adresse 103 : L'adresse du réseau, 0000

L'explication des adresses sont très brèves, je dirais plutôt inexistante car, il serait trop long d'aller plus en détails.


 * __20 janvier 2009__**

La gestion des lumières d'alarmes est plutôt simple à réaliser.Voici ce qui est demandé: que ce soit pour le niveau, la pression, le débit ou la température la variable doit être stable durant trois secondes pour ne pas signaler une erreur. Le plus simple est de gérer chaque cas avec un grafcet propre à chacun.


 * __15 janvier 2009__**

Comme nous n'avons pas de convertisseur 4-20mA dans notre montage, il a fallu crée un Générateur de Pulse Variable (GPV). Deux chronomètres sont nécessaire à la réalisation du GPV. L'un d'eux sera de 52 secondes et l'autre de 51.2 secondes. Pour arriver à 51.2, il faut diviser 4096 (température maximum) par 8, ce qui donne presque 1 minute de chauffage. Donc, une période dure 52 secondes et le maximum de temps de chauffage est de 51 secondes, la secondes restante sert à vérifier si notre élément chauffant est fonctionnel.

//Démarche pour calculer le temps de chauffage://

Premièrement, il faut régler les paramètres du PID (voir la rubrique ci-dessous); Après, prenez DM100 (output word du PID) et la mettre dans une autre case mémoire DM102; Diviser DM102 par huit afin de trouver le temps de chauffage et sauvegarder cette valeur dans une autre case mémoire DM104; Ensuite, il faut convertir cette valeur en BCD car, les chronomètres ne permettre pas d'utiliser des valeurs en Binaire. La nouvelle variable doit être sauvegardée dans une autre case mémoire DM106; Le premier chronomètre doit être de 52 secondes (ne pas oublier le # avant le chiffre sinon ça ne marchera pas). Le seconde chronomètre, celui pour le chauffage, doit avoir dans la partie Set value, la case mémoire à laquelle la conversion à étée faites (DM106); Enfin, quand le chronomètre de chauffage est activé il actionne à son tour l'élément chauffant.

Exemple: La valeur affiché a la sortie du PID est de 3000. Celle-ci est alors divisée par 8 ce qui donne 375, elle est ensuite convertie en BCD et l'élément chauffant sera activé pendant 37.5 secondes.

//Voici comment régler les paramètre du PID://

Tout d'abord il faut s'assurer que l'instruction PID est activée dans notre automate; L'instruction du PID se réserve 32 adresse en continu donc, il faut être sur de prendre des cases mémoire libre et de ne plus y retoucher. Dans mon cas, j'ai réservé les cases 500 à 532. Chaque adresses doit être configuré manuellement et une connaissance du langage Binaire et BCD est important: Adresse 500 : Ceci sera la consigne à laquelle on veut que l'élément chauffe. 1803 en Binaire qui faut transformer en Hexadécimal 70B Adresse 501 : Bande Proportionnel, pour l'instant on ne s'occupe pas de cette variable car on ne connait pas encore les paramètres PID Adresse 502 : Intégral, pour l'instant on ne s'occupe pas de cette variable car on ne connait pas encore les paramètres PID Adresse 503 : Dérivée, pour l'instant on ne s'occupe pas de cette variable car on ne connait pas encore les paramètres PID Adresse 504 : Le temps d'échantillonnage sera réglé à une seconde. 0010 en binaire Adresse 505 : Ce mot est divisé en deux. Le premier est de 4 Bits soit 0 pour une opération en inverse ou 1 pour une opération direct. Le deuxième mot est de 12 Bits qui détermine le coefficient du filtre à l'entrée. La valeur de défaut est 0.65. Adresse 506 : Ce mot est divisé en deux, 8 Bits chaque. Il permet de régler l'étendue de la sortie et de l'entrée. Dans notre cas on veut 12 Bits pour les deux qui équivaut à 0404 en Binaire. Adresse 507 à 531 : Il ne faut rien écrire dans ces cases, ils sont utilisés par le système.

__**13 janvier 2009



8 janvier 2009**

//Entrées l'automate//__

__//Sorties de l'automate//__
 * Description || Adresse Entrées ||
 * Mode Automatique || 0.01 ||
 * Mode Manuel || 0.02 ||
 * Mode Test || 0.03 ||
 * Non-utilisé || 0.04 ||
 * Capteur de niveau || 0.05 ||
 * Non-utilisé || 0.06 ||
 * Non-utilisé || 0.07 ||
 * Non-utilisé || 0.08 ||
 * Capteur de Proximité gauche || 0.09 ||
 * Capteur de Proximité droit || 0.10 ||


 * Description || Adresse de Sorties ||
 * Pompe || 100.01 ||
 * Lampe témoin Affichage || 100.02 ||
 * Élément chauffant || 100.03 ||
 * Lampe témoin Bas niveau || 100.04 ||
 * Vanne d'alimentation d'eau || 100.05 ||
 * Lampe témoin Débit faible || 100.06 ||
 * Non-utilisé || 100.07 ||
 * Lampe témoin Haute pression || 100.08 ||