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.
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.
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
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 :
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.
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 :
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 :
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 :
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 :
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 étape de transition. C’est ce que l’on appel les fronts : montant lorsque l’on passe de 0 à 1 et descendant lorsque l’on passe de 1 à 0. Les automates Vision permettent d’utiliser cet état transitoire afin de limiter le nombre d’exécution d’un segment ou d’un bloc en particulier.
En effet, l’automate fonctionne sous forme de cycle. A chaque cycle tous les segments seront exécutés. Ainsi si on avait gardé un contact direct, le segment aurait été exécuté en permanence. Dans certains cas cela peut s’avérer nécessaire mais dans ce programme cela pourrait s’avérer néfaste.
Il nous reste donc plus qu’à effectuer un saut à l’écran désiré :
Ce bloc IHM prends un paramètre (l’écran à afficher) mais ne possède aucune sortie. Ainsi lorsque les conditions placées juste avant le bloc seront vraie, alors on pourra effectuer un saut à la page IHM désirée.
Nous venons donc de résoudre le premier problème. L’écran de page d’accueil s’affiche bien pendant trois secondes avant d’afficher un autre écran. Il est tout à fait possible de modifier les valeurs de temporisation, les MB ou encore ce qui sera affiché à l’écran. D’autre solution sont possibles et celle qui est présentée ici n’est en rien la meilleure. Elle fonctionne mais il existe d’autres moyens de parvenir au même résultat.