Explications

Utilisant le langage Ladder, il est facile pour l'utilisateur d'obtenir un programme
simple et efficace. Très répandu dans l'industrie, ce langage n'en reste pas ...

Part of the document


[pic] [pic]
Collège : Explication du programme
[pic]
Introduction au programme VisiLogic : Le logiciel VisiLogic permet de programmer les automates de la gamme
Vision. Utilisant le langage Ladder, il est facile pour l'utilisateur
d'obtenir un programme simple et efficace. Très répandu dans l'industrie,
ce langage n'en reste pas moins facile à apprendre. Pour bien commencer il est nécessaire de connaître quelques principes
de bases : - L'environnement VisiLogic se compose de deux parties : la partie IHM
pour Interface Homme Machine (écran, clavier, ...) et la partie Ladder
(le langage à proprement parlé). Ces deux parties, bien que
complètement différentes, sont en permanence reliées. Une pression sur
un bouton à tel écran sera traitée dans telle partie du programme
Ladder. Une variable qui
prend telle valeur dans le programme sera affichée à tel écran.
- Le programme Ladder se lit de gauche à droite puis de haut en bas. Il
est divisé en segments (ou net). Lorsque l'automate va fonctionner, il
va d'abord exécuter le segment 1 (de gauche à droite), puis, une fois
qu'il a fini, va passer au segment 2 (de haut en bas).
- Le langage Ladder se représente sous la forme de blocs interconnectés.
Ainsi l'utilisateur n'aura qu'à placer les blocs adéquats puis les
relier entre eux pour obtenir un programme fonctionnel. A aucun moment
il n'est nécessaire de taper des lignes de code. - Il est possible de structurer son programme grâce aux sous routines.
Plutôt que de mettre tout le programme dans une seule et même routine,
il est possible de le fractionner et le rendre ainsi plus lisible. - L'automate fonctionne par cycle qu'il va réaliser périodiquement.
Lorsqu'il commence son cycle, l'automate va lire le segment 1 et va y
interpréter les blocs. Une fois qu'il a fini il met à jour les données
qui ont été modifié puis passe au segment suivant et ainsi de suite.
Une fois que tout les segments ont été exécuté (on arrive donc à la
fin du programme), l'automate recommence revient au début du programme
et attends le commencement d'un nouveau cycle pour exécuter à nouveau
le programme.
Main Routine : routine principale
Lors de l'exécution du programme, cette routine sera la première à
être appelée. C'est la routine de référence pour l'automate. Dans cette routine on va placer tout ce qui est « général » pour le
programme. C'est à dire tout ce que l'on est susceptible d'utiliser en
permanence. On va donc initialiser l'automate. [pic] Les blocs représentés si dessus permettent d'effectuer des sauts vers
une sous routine spécifique. Plus on en met plus il est possible d'appeler
de sous routine. Ainsi lorsque le programme va s'exécuter et qu'il va
rencontrer l'un des blocs suivant, il va effectuer un saut à la sous
routine correspondante.
[pic] On utilise cette structure pour structurer au maximum le programme.
Il est tout à fait possible de placer des fonctions réalisant d'autres
actions que le saut à une sous routine spécifique. Lorsque l'automate rencontre une instruction de saut, il va aller
chercher le bout de programme correspondant (ici la sous routine) et va
l'exécuter tant que la condition devant le bloc de saut est valide. Dans la
Main Routine, il n'y a pas de condition devant les blocs de saut. Cela
signifie que la sous routine est exécutée en permanence. Tout programme contient une Main Routine. Elle peut être appelée
différemment mais l'utilisateur qui regarde le programme (ou le
programmeur) doit toujours avoir en tête quelle routine est exécutée en
premier. Il est donc conseiller de garder le nom de Main Routine ou
d'utiliser un nom équivoque. Plan du programme : affichage.
Schéma du programme :
[pic] Les blocs Sous Routine correspondent aux sous routines du même nom
dans le programme Ladder. Les blocs Ecran correspondent aux différents
affichages qui peuvent apparaître à l'écran. Ainsi chaque écran va entrer en interaction avec la sous routine qui
porte le même nom. Par exemple : les actions réalisables à l'écran volet
seront traitées dans la sous routine volet. Chronologiquement, les écrans apparaîtront dans cet ordre :
Page d'accueil (pendant une durée de 3 secondes) Page menu (recensant l'état de chaque dispositif) Page volet/Ventilation/Lampe/Chauffage/Alarme.
Il faut savoir qu'à tout moment, lorsqu'une des pages Volet /
Ventilation / Lampe / Chauffage / Alarme est affichée, il est possible de
retourner à la page menu en appuyant sur la touche ESC. L'explication de la suite du programme se fera chronologiquement pour
une meilleure compréhension. Page d'accueil : Cette page sert de préambule au programme. Elle s'affiche pour une
durée de 3 secondes et on peut y voir le nom du programme ou tout autre
élément que l'on souhaite afficher : [pic] La gestion de cette page s'effectue dans la sous routine page
d'accueil. Il faut que cette sous routine soit capable d'effectuer une
temporisation de 3 secondes (il est tout à fait possible d'utiliser une
temporisation d'une durée différente) uniquement lorsque l'écran est
affiché. Une fois la temporisation terminée, il faut que la sous routine
affiche un autre écran. Il faut donc prévoir l'utilisation : - D'une temporisation.
- D'un bloc permettant d'effectuer des sauts d'écran.
- D'un bloc permettant de repérer la page actuellement affichée.
[pic] Détection de la page affichée : Le repérage de la page active s'effectue dans le premier segment du
programme. Ce bloc IHM prends un paramètre et possède une sortie. Le paramètre correspond à l'écran dont on veut savoir si il est
actuellement affiché ou non. La sortie est le bit 0 placé à la position 0
dans la mémoire de l'automate (aussi appelé MB 0 pour memory bit 0) qui
peut prendre deux états : - 1 lorsque que la page d'accueil est affichée
- 0 lorsque que la page d'accueil n'est pas affichée.
Nous pouvons ainsi savoir quel écran est affiché et faire des actions
spécifiques en conséquence. Dans ce programme, on veut que la temporisation
se déclenche lorsque que la page d'accueil s'affiche. Il est donc
nécessaire d'imposer une condition au déclenchement de la temporisation.
Nous allons donc utiliser MB 0 pour éviter de déclencher la temporisation
au mauvais moment.
Pour cela on utilise un contact direct qui est représenté par le
bloc : [pic] Pour le configurer il suffit de double cliquer dessus puis de choisir
à quel MB il sera sensible (attention le contact direct ne marche que pour
des bits). Son utilisation est simple : si MB 0 = 1 alors on exécute la
suite de la ligne (tout ce qui est à droite du bloc). Sinon (MB 0 = 0) on
n'exécute rien.
Nous avons donc notre condition. Il suffit maintenant de lancer la
temporisation. Pour cela nous allons utiliser une bobine. Contraire à un
contact (qui sert à tester l'état d'un bit), la bobine sert à changer
l'état d'un bit : [pic]
Nous avons ici une bobine directe. C'est à dire que tant que la
condition placée juste avant est vraie, alors le bit auquel est reliée la
bobine sera à 1. Si la condition n'est plus vraie alors le bit passe à 0. La bobine est configurable en double cliquant dessus : [pic]
Il est alors possible de choisir sur quel type de bit et sur quel bit
en particulier la bobine aura un effet (T pour temporisation et 0 pour la
temporisation 0). Dans le cas d'une temporisation il est alors possible de choisir
entre différent types de tempo (TD, TA, TE) ainsi qu'une durée (ici 3
secondes).
Pour plus d'informations, se référer à la documentation relative aux
temporisations. On choisit une temporisation TD (on Delay = en retard) qui reste à
zéro après avoir été activé puis passe à 1 quand elle a fini de compter. Dans cette situation, quand la bobine s'active, le bit auquel elle
est reliée devrai passer à 1, mais dans ce cas précis, lorsque la
temporisation est activée, elle ne passe pas tout de suite à 1 mais attend
3 secondes avant d'effectuer le changement d'état. C'est là que réside la
particularité des temporisations. Il en existe deux autres types mais nous
ne verrons pas leur fonctionnement dans ce programme. Nous avons jusqu'à présent résolu une partie du problème. Nous avons
une temporisation qui se déclenche uniquement lorsque l'écran page
d'accueil est affiché. Une fois activée, elle attend trois secondes avant
de passer à 1. On peut ainsi retarder l'exécution d'un autre segment. Nous allons réutiliser un contact : [pic] On remarque un P qui le différencie du précédent contact. Nous avons
ici un contact sur front montant. Explication : Un signal binaire possède deux états. Quand il est à 1 ou quand il
est à 0. Cependant pour passer d'un état à un autre, il doit y avoir une