FAAC : DOSSIER PEDAGOGIQUE

 

SOMMAIRE

I - Introduction

II - Description du fonctionnement

III - Mise en œuvre des cartes de développement

1. Intégration dans le système
2. Schémas structurels des cartes de développement et l'interface de puissance

IV - Programmation des microcontrôleurs

1. Microcontrôleur 68HC11
a - Présentation du programme basic11
b - Explication du programme

2. Microcontrôleur 8051
a - Présentation du programme assembleur 8051
b - Explication du programme

V - Exploitation pédagogique sur programmes simples

1. Programme " ouverture portail "
a - Description (grafcet et/ou organigramme)
b - Basic11
c - Assembleur 8051

2. Programme " fermeture portail "
a - Description (grafcet et/ou organigramme)
b - Basic11
c - Assembleur 8051

3. Programme " ouverture et fermeture "
a - Description (grafcet et/ou organigramme)
b - Basic11
c - Assembleur 8051

4. Programme " ouverture et fermeture " temporisée
a - Description (grafcet et/ou organigramme)
b - Basic11
c - Assembleur 8051

VI - Documents annexes pour programmation

1. Microcontrôleur 68HC11
2. Intel 8051


I - Introduction

Le FAAC est un système industriel moderne, architecturé autour d'un micro-contrôleur qui gère tout le processus de commande et de contrôle. Un micro-contrôleur est un composant programmable qui se présente sous forme d'une " boite noire " quelque peu austère mais d'apparence seulement : en effet, sa facilité d'emploi (si si !), sa grande polyvalence, et son prix aujourd'hui très bas fait de lui un élément incontournable des systèmes modernes en cette fin de 20ème siècle. Le micro-contrôleur remplace avantageusement les systèmes analogiques ou en logique câblée : on n'y gagne en terme de performance, de fiabilité (moins de composants = moins de pannes), d'espace (peu volumineux), de coût au niveau de la mise en œuvre, de la maintenance ou de l'adaptation aux spécifications nouvelles (il est beaucoup plus facile et rentable de modifier un programme que de refaire une carte électronique !)

Ne disposant pas de système de développement pour le micro-contrôleur du FAAC, nous avons utilisé les micro-contrôleurs 68HC11 et 8051 pour commander le portail. (HOAREAU Bertrand pour le 68HC11 de Motorola et VIMBOULY Joël pour l'Intel 8051 ).

II - Description du fonctionnement

ACTIGRAMME A0 :

 

GRAFCET DE FONCTIONNEMENT

 

La demande d'ouverture sera faite soit par la télécommande (signal codé), soit par l'entrée au clavier du code secret sur 4 digits.
L'ouverture et la fermeture du portail sont temporisées : il n'y pas de capteur de fin de course qui détecte si le portail est ouvert ou fermé. L'ordre d'ouverture est donné pendant un temps TCmax suffisant pour que le portail soit complètement ouvert. Idem pour la fermeture.
Remarque 1 : Lorsqu'on entre le code secret (1122), le portail s'ouvre puis se referme automatiquement au bout d'un certain temps T1. Avec le mode télécommande, il faut une impulsion pour ouvrir et une impulsion pour fermer.
Remarque 2 : TC (tempo_courante) va s'incrémenter (TC++) lors de l'ouverture et se décrémenter (TC--) lors de la fermeture du portail. A tout moment, le système connaît la position courante du portail qui est proportionnelle à la valeur de TC ce qui permet d'optimiser la commande du moteur. (on commande le moteur juste le temps nécessaire pour le fermer ou l'ouvrir, et ce quelle que soit sa position courante)


PRINCIPE DE LA COMMANDE MOTEUR DE LA CARTE FAAC

* Le moteur
Le moteur est du type asynchrone et fonctionne en biphasé : L'alimentation secteur étant monophasée, la deuxième phase est fabriquée par l'introduction d'un condensateur de 25uF 250V qui déphase l'alim secteur de 90°. Ce déphasage est nécessaire pour obtenir un couple moteur conséquent.

* L'inversion du sens de rotation
Pour inverser le sens de rotation du moteur il suffit de permuter l'alimentation des 2 phases.

* Séquencement des relais
Afin d'éviter la déterioration prématurée des relais, il est nécessaire de couper l'alimentation (Relais RE3) avant de changer le sens de rotation (Relais RE1) . Il faut donc en tenir compte lors de la gestion du séquencement des relais lors des phases d'ouverture et de fermeture du portail :

Ouverture :
ACTIVER RE3 (ALIM ON)
Tempo Ouverture (10 secondes)
DESACTIVER RE3

Fermeture :
ACTIVER RE1 (SENS FERMETURE)
Tempo DT (quelques dixièmes de secondes)
ACTIVER RE3 (ALIM ON)
Tempo fermeture (12 secondes)
DESACTIVER RE3 (ALIM Off)
Tempo DT (quelques dixièmes de secondes)
DESACTIVER RE1 (sens ouverture par défaut)


Lors d'une fermeture suivie d'une demande prématurée de réouverture (présence obstacle ou ordre télécommande) , le programme devra bien-sûr toujours respecter ce séquencement sous peine de mauvaises surprises … (il faut désactiver RE3 , désactiver RE1 puis réactiver RE3 )




III - Mise en œuvre des cartes de développement

1. Intégration dans le système

2. Schémas structurels des cartes de développement et l'interface de puissance

IV - Programmation des microcontrôleurs

1. Microcontrôleur 68HC11

a - Présentation du programme basic11


Le programme se décompose en 5 parties principales, et gère le processus d'acquisition des données et de commande, de la même façon que le gérerait un système industriel tel le TSX17 par exemple (automate à base de 8086) ou le micro-contrôleur du FAAC

PARTIE 1
Phase d'initialisation

Répéter

' PARTIE 2
Lecture des entrées

' PARTIE 3
Mise à jour des réceptivités

' PARTIE 4
Mise à jour des bits d'étapes

' PARTIE 5
Activation des sorties en fonction des équations de fonctionnement

Toujours

A cela, il faut ajouter des fonctions pour l'acquisition du code secret au clavier, la gestion des temporisations temps réel non bloquantes et enfin pour réaliser une petite tempo " classique " (bloquante).

VOIR LE PROGRAMME
TELECHARGER LE FICHIER program4b.bas (BASIC11)

b - Explication du programme


Notons tout d'abord que le BASIC11 permet l'intégration d'instructions en assembleur directement dans le code source, ce qui est très pratique. Lors de la compilation, tout est traduit en code machine.

Au tout début, après un RESET hard, le programme doit initialiser le TIMER et autoriser les interruptions . Une interruption est générée par le timer toutes les 4,1ms (les bits 0 et 1 du registre PACTL sont mis à 0 . Cf documentation technique du Controlboy)
Tous les 4,1ms, le micro-contrôleur interrompt la tache en cours, sauvegarde sur la pile tous les registres systèmes (A,B, CCR …) puis va lire à l'adresse $FFF0 l'adresse de la sous-routine d'interruption, c-a-d ici la fonction " temporiser3 " . C'est dans cette routine que nous incrémentons les différents compteurs du programme. L'autorisation d'incrémentation est donnée par une variable de type tableau tp_ok(nb) , nb représentant le numéro de compteur à valider. Cette variable est gérée par le programme principal, et permet de synchroniser un compteur avec l'étape voulue.
A la fin de la fonction " temporiser3 " , les registres systèmes sont restaurés de la pile et le programme reprend là où il s'était arrêté.
Il est impératif de réaliser une temporisation non bloquante. En effet, il faut pouvoir réagir aux entrées à tout moment et agir en conséquence (par exemple lors de la fermeture du portail, si le capteur détecte la présence d'une voiture, on rouvre le portail !) Le cas échéant, vous fabriquez un broyeur automatique …

Le programme principal va lire les entrées TOR du PORTA où sont connectées le capteur, l'interface télécommande. Les réceptivités sont rafraîchies (test des compteurs, présence_obstacle, demande_ouverture …)

Les bits d'étape sont ensuite mis à jour en fonctions des étapes actives et des réceptivités vraies.
Puis après lecture des équations de sorties, on affecte les sorties correspondantes (bit 0 et 1 du PORTB pour les deux sens moteurs, bit 2 pour le voyant clignotant)
Les " flags " (flag1, flag2 …) permettent d'exécuter les " PRINT " 1 seule fois. En effet, le grafcet étant lu en permanence (rebouclage avec do… loop), l'affichage se mettrait à défiler ou à clignoter désagréablement.

Lorsque l'étape initiale est active, la fonction "lirecode " va scruter régulièrement le clavier et stocker les touches dans un tableau. Après la 4ème touche, la fonction teste le code ainsi entré et renvoie " 1 " si c'est ok. Dans le cas contraire, un message " code erroné " est affiché et la fonction renvoie 0.

L'ouverture et la fermeture du portail sont gérées par une tempo spéciale " tp_courante " qui va soit s'incrémenter (ouverture), soit se décrémenter (fermeture). Cela permet de piloter le moteur juste le temps nécessaire à la manœuvre (temps d'ouverture et fermeture proportionnel à l'entrebâillement)
L'utilisation d'une interruption pour la gestion de l'horloge permet de réaliser des tempos très précises et indépendantes de la longueur du programme. C'est la solution adoptée dans tous les systèmes professionnels.

2. Microcontrôleur 8051
a - Présentation du programme assembleur 8051

b - Explication du programme

V - Exploitation pédagogique sur programmes simples

1. Programme " ouverture portail "

-> Fin d'ouverture avec capteur fdouv

a - Description (grafcet)

b - Basic11

VOIR LE PROGRAMME BASIC11
TELECHARGER LE PROGRAMME ouvre.bas

c - Assembleur 8051

 

2. Programme " fermeture portail "
--> Fin de fermeture avec capteur fdfer

a - Description (grafcet)


Du fait du séquencement des relais, le grafcet de fermeture est en réalité plus complexe :

 

b - Basic11

VOIR LE PROGRAMME BASIC11
TELECHARGER LE PROGRAMME ferme.bas

 

c - Assembleur 8051

3. Programme " ouverture et fermeture "

--> Fin d'ouverture et de fermeture avec capteurs fdouv et fdfer

a - Description (grafcet)



Le grafcet détaillé correspondant au programme du 68HC11:



b - Basic11


VOIR LE PROGRAMME BASIC11
TELECHARGER LE PROGRAMME ouvre_ferme.bas

 

c - Assembleur 8051

 

4. Programme " ouverture et fermeture " temporisée

--> Mise en œuvre d'une temporisation avant fermeture (capteurs aussi utilisés)
a - Description (grafcet)


Et le grafcet détaillé :

b - Basic11


VOIR LE PROGRAMME BASIC11
TELECHARGER LE PROGRAMME ouvre_ferme_temporise.bas

 

VI - Documents annexes pour programmation

1. Microcontrôleur 68HC11

2. Intel 8051