IPA02 – Tutoriel ladder set et reset – La mémoire des ampoules

Pages : 1 2 3

 

Les bobines set / reset

Allez on poursuit notre tutoriel ladder set reset avec ces fameuses bobines.

Comme je le disais dans le chapitre d’introduction, il y a plusieurs façon de programmer une même chose. Vous venez de faire la version compliquée, maintenant voila la version « clé en main ».

Pour cela ouvrez codesys, puis placer un contact normalement ouvert appelé DI1, qui sera l’interrupteur servant à alimenter la sortie (pensez aux commentaires!!!).Puis à la place de la sortie vous n’allez pas mettre un bobinage mais un « bobinage ‘set' » (celui avec un S entre parenthèse).

Créez un nouveau réseau, mettez y un contact NO nommé DI2 servant à éteindre la sortie.En sortie vous mettez  un « bobinage ‘reset' » (celui avec un R à l’intérieur portant le même noms que le SET.) Et maintenant testez par vous même:

ProgrammatioProgrammation d'un SET / RESET en ladder

Programmation d’un SET / RESET

Si tout s’est passé comme prévu, une impulsion sur DI1 allume et laisse allumer la sortie, alors qu’une impulsion de DI2 l’éteint.

Voila le principe du SET / RESET, alors si cela peut vous paraître inutile à l’heure actuelle, mais vous constaterez, lorsque vos programme se compliqueront, que cette fonction est tout bonnement indispensable.

Analyse du SET / RESET avec un chronogramme.

Qu’est ce qu’un chronogramme? Voici ce que nous répond Wikipédia:

Et comme un dessin vaut mieux qu’un long discours, voici le chronogramme de notre SET / RESET (je vous laisse apprécier une fois de plus mes talents de dessinateur).

 

Chronogramme d'un SET / RESET

Chronogramme d’un SET / RESET

Oula ça fait beaucoup de traits . . . remerciez moi d’avoir mis des couleurs! 😉

Par où commencer. . . vous voyez sur la gauche nos 3 éléments (DI1 / DI2 / DO1) devant leur propre graphe qui peut prendre 2 valeurs, 0 ou 1 (et oui, nous sommes toujours en Tout Ou Rien).

L’axe X de ce graphe représente le temps (normalement sans unité, mais pour mieux comprendre nous dirons qu’il est en seconde), et l’axe Y de chaque graphe représente l’état de l’élément à l’instant donné. Alors traduisons cela. Initialement, DI1, DI2 et DO1 sont à 0.

  • A 1 sec: On exerce une action sur le contact DI1, celui ci passe à 1 et SET DO1 qui passe à 1 aussi.
  • A 2 sec: On relâche DI1, qui retombe donc à 0, mais DO1 étant une bobine SET, celle ci reste à 1.
  • A 5 sec: On appuie sur DI2 qui passe à 1. Cela à pour effet de « RESETTER » la sortie DO1 qui retombe donc à 0.
  • A 6 sec: On relâche DI2 qui retombe à 0, cela n’a aucun impact sur DO1.
  • A 8 sec: On appuie de nouveau sur DI1 qui passe au travail et active par la même occasion DO1.
  • A 9 sec: On relâche DI1 qui passe au repos, mais DO1 reste « SETTER » au travail.
  • A 10 sec: On actionne de nouveau DI1 qui passe à 1, mais la sortie DO1 étant déja à 1, cela n’a aucun impact sur elle.
  • A 11 sec on relâche DI1 qui passe au repos.
  • A 15 sec: On appuie sur DI2 qui passe à 1. Cela à pour effet de « RESETTER » la sortie DO1 qui retombe donc à 0.
  • A 16 sec: On relâche DI2 qui retombe à 0, cela n’a aucun impact sur DO1 qui reste au repos.

Cela fait déjà un beau pavé, mais ça aide énormément à comprendre le fonctionnement d’un programme et permet de mieux saisir les effets et causes de chaque élément. Ainsi dans notre programme, vous pouvez constater qu’il ne sert à rien d’appuyer plusieurs fois sur DI1 (de 8 à 11 sec), car une fois DO1 au travail, celui ci y restera jusqu’à une impulsion de DI2 (et vice versa).

Donc, pour résumer:

  • Si je veux qu’une sortie soit au travail uniquement lorsque je l’alimente,j’utilise une bobine normale.
  • Si je veux que sur un ordre, une sortie mémorise son état « au travail » jusqu’à un autre ordre lui demandant de retomber, alors utilisez le SET – RESET.

 

Déroulement d’un cycles de programme.

L’exécution d’un programme ne se fait pas de manière aléatoire, et vous allez vous en apercevoir pas plus tard que maintenant. Voici deux programmes différents sous Codesys. Avant de les réaliser, comprenez leurs  particularités, leurs différences et essayez de deviner l’état de DO1 à la fin de chacun d’eux.

Set / RESET en ladder avec RESET prioritaire

Exemple 1

Set / RESET en ladder avec SET prioritaire

Exemple 2

 

 

Leurs particularités: C’est le même contact DI1 qui SET et RESET la sortie DO1.

Leurs différences: Dans le premier cas, on SET d’abord, puis on RESET. Dans le deuxième, on fait l’inverse.

L’état de la sortie: Vous avez donc du constaté que dans le 1er cas, DO1 ne passe JAMAIS à 1, et dans l’autre cas, une fois DO1 passé une première fois à 1, celui ci ne retombe jamais à 0.

Avez vous une idée par rapport à ce phénomène?

Ceci est lié au cycle d’exécution du programme qui se passe en plusieurs étapes. Il commence par regarder et enregistrer l’état des entrées,puis exécute le programme du haut vers le bas, et enfin met les sortie à jours. Plus précisément dans Codesys, chaque réseau est traité de la gauche vers la droite, les un après les autres.

Dans notre 1er exemple, tant qu’aucune action n’est effectuée sur DI1, rien ne se produit, le cycle s’exécute sans ne rien faire. Maintenant passons DI1 au travail:

  1. Début du cycle, le programme voit DI1 à 1 et le considère dans cet état jusqu’à la fin du cycle.
  2. Dans le 1er réseau, DI1 au travail SET DO1.
  3. Le traitement du premier réseau est terminé, le programme passe au réseau 2.
  4. DI1 au travail, celui ci RESET DO1.
  5. Le traitement du deuxième réseau est terminé.
  6. Le programme est terminé, les sortie son mise à jours. Le dernier état calculé de DO1 était à 0, donc DO1=0.

Ce qui explique que vous le voyez tout le temps à 0.

Dans le 2e exemple, le déroulement est le même mais les points 2 et 4 sont inversés.

  1. Début du cycle, le programme voit DI1 à 1 et le considère dans cet état jusqu’à la fin du cycle.
  2. Dans le 1er réseau, DI1 au travail RESET DO1.
  3. Le traitement du premier réseau est terminé, le programme passe au réseau 2.
  4. DI1 au travail, celui ci SET DO1.
  5. Le traitement du deuxième réseau est terminé.
  6. Le programme est terminé, les sortie son mise à jours. Le dernier état calculé de DO1 était à 1, donc DO1=1.

Ce qui explique que vous voyez tout le temps DO1 à 1.

Comprenez donc bien l’importance de l’ordre d’exécution d’un programme, inverser 2 lignes peut changer complètement le fonctionnement de votre programme. Voici les points importants à retenir: