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
manuvre (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