Programmation d'un compteur

Cahier des charges

Pour aller plus loin dans l'usage du LADDER, vous allez créer un programme utilisant un compteur. Le compteur s'incrémente de 1 à chaque appui sur le bouton BP1. Il est remis à zéro par le bouton BP0. Quand la valeur du compteur est strictement supérieure à 3, le voyant V2 s'allume. La suite de l'énoncé vous guide vers cette réalisation.

Ouvrez le projet pupitre6 et enregistrez le sous le nom pupitre7.

Création d'une variable interne

Dans l'éditeur de données, vous allez ajouter une variable interne nommée compteur.

Dans le navigateur du projet, double-cliquez sur Variables élémentaires pour ouvrir l'éditeur de variables.

Cliquez dans une case vide de la colonne Nom et créez une variable (appelée instance dans l'aide de Unity Pro) nommée compteur. compteur est le nom ou symbole de la variable. Ensuite, vous devez affecter un type à votre variable. Voici les types de données simples usuels disponibles (vous en trouverez d'autres dans l'aide en ligne de Unity Pro. Les types complexes comprennent les tableaux et les structures) :

  • EBOOL : booléen (TRUE ou FALSE). Remarque: les bits extraits de mots et les bits systèmes sont eux de type BOOL, c'est-à-dire qu'ils ne peuvent être forcés et on ne peut détecter simplement les fronts.
  • INT : entier signé 16 bits. Il peut être écrit en décimal (10), en binaire (2#1010), en hexadécimal (16#A).
  • UINT : entier non signé 16 bits
  • DINT : entier signé 32 bits
  • UDINT : entier non signé 32 bits
  • REAL : nombre à virgule flottante 32 bits
  • WORD : chaîne de 16 bits. Ce type ne peut pas être utilisé pour des calculs.
  • DWORD : chaîne de 32 bits.
  • BYTE : chaîne de 8 bits
  • TIME : il représente un temps en millisecondes codé sur 32 bits. (de 0 ms à 49 j environ). Il peut être écrit de la manière suivante : T#4294967295MS, T#71582M_47S_295MS, T#49J_17H_2M_47S_295MS, etc Ce type est notamment celui qui sera utilisé pour les temporisations d'étapes en SFC.
  • DATE, DT, TOD sont des types utilisés pour coder la date, l'heure, etc...
  • STRING : chaîne de caractères ASCII, de 1 à 65536 octets.

Pour notre exemple, une variable sur 16 bits suffit et elle sera non signée. Choisissez donc le type UINT. Ensuite, vous pouvez choisir une adresse de mot interne (%MW0 par exemple) ou ne pas donner d'adresse. La variable est alors dite non localisée et le compilateur se chargera de lui donner une place en mémoire.

Utilisation des blocs comparaison et opération

En plus des contacts et bobines, les outils de développement comme Unity Pro disposent de "blocs fonction" permettant la manipulation de données et de périphériques. Il existe une multitude de blocs fonctions (par exemple multiplication, sortie PWM pour les automates équipés, timer, comparaison, etc...). Vous verrez où les trouver un peu plus loin car 2 blocs particuliers sont déjà disponibles dans la barre d'outil : le bloc comparaison et le bloc opération.

Le bloc comparaison permet d'entrer une expression booléenne qui, si elle est vraie, fait se comporter le bloc comparaison comme un contact fermé. Le bloc opération permet d'écrire une instruction de texte structuré.

Pour notre programme, nous avons besoin

  • d'une opération incrémentation : compteur := compteur + 1 ;   (attention à la notation :=)
  • d'une comparaison : compteur > 3
  • d'une opération de remise à zéro du compteur : compteur:= 0 ;

Effacez la ou les sections LADDER de votre programme (attention à ne pas effacer la section "initialisation"). Créez une nouvelle section nommée "Blocs_Fonction". Ajoutez les blocs comparaison et opération, ajoutez également la variable compteur dans la table d'animation. Pour éviter que le compteur ne s'incrémente de plusieurs valeurs à chaque appui (un cycle automate dure environ 1ms et un appui sur le bouton au moins 100 ms), il est nécessaire de ne déclencher que sur front montant. Vous devez obtenir le résultat figurant sur l'image ci-dessous.

Une fois la programmation faite, compilez, connectez, transférez, exécutez et vérifiez le bon fonctionnement. du programme. Utilisez le mode d'affichage "cascade verticale" pour vous aider, avec la dection en LADDER, la table d'animation et le pupitre. Quand cela fonctionne, déconnectez l'automate et enregistrez le projet. Fermez Unity Pro ou bien passez à la suite.

LADDER_Avancé

Utilisation d'un bloc fonction

Ce mode de fonctionnement de compteur est très utilisé en automatisme. Nous allons voir qu'un bloc fonction existe déjà dans la bibliothèque d'Unity Pro.

Ouvrez le projet pupitre7 et enregistrez le sous le nom pupitre8. Effacez le contenu de la section créée précedemmenté

Sous Unity Pro, le terme FFB regroupe les fonctions élémentaires (EF), les blocs fonctions élémentaires (EFB) et les blocs fonctions dérivés (DFB) créés par l'utilisateur ou par le fabricant pour une bibliothèque spéciale. Procédez comme ci-dessous:

Une fois la fenêtre de sélection ouverte, développez l'arborescence pour trouver la fonction de comptage qui nous intéresse : Bibliothèque > Base_Lib > Timers & Counters > CTU_* > CTU_UINT.

Cliquez sur OK pour valider votre choix.

Placez le bloc sur la feuille et complétez. L'entrée EN (comme Enable) correspond à l'activation du bloc, qui dans notre cas doit être toujours vraie. Le bloc détecte lui-même les fronts montants. Associez la constante à PV et la variable compteur à CV. Vous devez obtenir le résultat suivant:

Compilez, connectez, transférez et vérifier le bon fonctionnement du programme. Quand cela fonctionne, déconnectez l'automate et enregistrez le projet. Fermez Unity Pro ou bien passez à la suite.