Menu
Une application : Automatisme, API

1) Le calcul symbolique et l'automatisme .

Nous allons voire les différents usages d'une équation booléenne.

 
ladder
  • La représentation des équations booléennes en automatisme est plus ou moins facilement compréhensible.On utilise en général le ladder, le langage littéral ou les blocs fonctions. Par ces représentations, on peut déterminer une valeur (de sortie) pour toute combinaison de valeurs de ses variables (d'entrée). Cependant, toutes les combinaisons possibles des variables ne seront pas forcément utilisées, et au fil des modifications de programmes, les programmeurs n'ont pas forcément le temps de tout tester et de tout vérifier. Des buggs du système automatisé peuvent donc éventuellement apparaître si  des combinaisons de variables d'entrées au conséquences non prévues ou non testées apparaissent en fonctionnement.
Ci contre deux exemples de représentation de l'équation :
                     f=a.b.c.(d+a).(e+b)
En haut une représentation en ladder.
En bas une représentation avec des fonctions OU et ET.

Remarque : d'autres représentations des fonctions OU, ET, et d'autres fonctions, normalisées ou pas, existent et sont utilisées.
  • L'équation booléenne utilisée en calcul symbolique permet de traiter globalement l'ensemble des états possibles que peuvent prendre ses variables. Traitons l'équation représentée ci-dessus.
Posons  
                    f:=a.b.c.(d+a).(e+b)
Vérifions la valeur de f , nous obtenons :
                    f=a.b.c
Nous avons immédiatement la simplification de l'équation.
Ce résultat est évident mais convenons que le trouver mentalement necessite un certain temps de réflexion. Ce temps, le programmeur ne l'a pas toujours...

2) Que peut apporter le calcul symbolique? 

L'exemple (caricatural il est vrai) exposé ci dessus montre l'aide que peut apporter le calcul symbolique en automatisme.
 
Moyennant un interfaçage ad-hoc avec un système d'automatisme résidant sur un PC,  il serait possible de :
  • Créer et manipuler facilement des équations booléennes.
  • Implémenter directement ces équations  booléennes dans un des langages du système d'automatisme.
Des applications de simulation de systèmes automatiques sont aussi envisageables.
Il est possible de réaliser cela assez simplement :
  • Toutes les équations sont définies sous forme de fonctions, exemple :  f(a,b,c):=a.b.c
  • Les variables sont  initialisées (valeur 0 ou 1)  exemple : a:=1
  • Une exécution cyclique de l'évaluation booléenne de l'ensemble des fonctions à simuler, avec une visualisation des variables, permet alors de réaliser la simulation.
  • Bien sur, il faut également définir le feedback 'variable de sortie => variable d'entrée'. Cela peut être réalisé soit par l'écriture de fonctions complémentaires à l'automatisme (en intégrant la fonctionnalité 'temporisation' pour tenir compte du temps de réaction des actionneurs) soit par traitement (et configuration) dans un module complémentaire.
Il serait alors possible de :
  • Faire tourner sur PC un automatisme virtuel 
  • Pouvoir générer des dysfonctionnements de capteurs ou actionneurs (commande manuelle ou aléatoire) et observer et analyser les réactions du système automatisé virtuel.
  • Modifier et améliorer un automatisme sans le hard de l'automatisme, et avec un taux de réussite très correct. 
Le calcul symbolique permet en plus des fonctionnalités intéressantes :
  • Il est par exemple possible de recréer facilement une équation booléenne à partir d'un enregistrement des différentes valeurs de variables booléennes (entrées et sortie).
soit l'enregistrement  (après mise en forme) :    f:=/a./b.c+/a./b./c+a./b./c
on obtient alors, sans se poser de question, :    f=/a./b+/b./c
  • On peut traiter les équations de façon logique pour déterminer intersection, exclusion, ou tout autre fonction entre équations.
Un exemple :
soit les fonctions :    f:=/a.b+b.c+/a.c   et    g:=a.b+b.c
les conditions de f  n'étant pas contenues dans g sont données par   f./g
f./g= /a.b./c+/a./b.c
  • Beaucoup de choses restent encore à imaginer. Tout ce qui est traitement logique peut être envisagé.

3) Un projet utilisant un PIC

C'est un collegue électronicien, alors en recherche de microcontrolleurs, qui m'a branché sur les PIC de Micochip.Cette famille de µP a un code standart sur toute la gamme. Le calcul sur bit est présent dans le standart, mais, attention!, il n'y a que 4 instructions de calcul sur bit en tout et pour tout :

BCF f,b : Clear le bit b de l'adresse f (met à 0)
BSF f,b : Set le bit b de l'adresse f (met à 1)
BTFSC f,b : Saute une instruction si le bit b de l'adresse f est clear (à 0)
BTFSS f,b : Saute une instruction si le bit b de l'adresse f est set (à 1) 

Deux questions se posent :
  1. Comment convertir une équation booléenne en code PIC ?
  2. Comment convertir du code PIC en équation booléeenne ?
Une page qui répond en partie à ces questions     ouvrir

ladderAprés l'achat d'un kit PIC Velleman (kit 8048 pour la programmation et le test), il y a eu le développement d'un petit logiciel pour réaliser un mini automate programmable sur une base PIC.
Ce logiciel génère un projet en code assembleur qui peut être compilé par MPLAB® IDE de Microchip.
Avec les fichiers include complémentairess, cela tourne sur le kit 8048, mais le programmeur confirmé pourra modifier les fichiers sources de base selon le hard utilisé.

C'est également un  outil pour générer du code que l'on peut  récupérer pour intégration dans une application PIC.

Une page pour ceux qui programment PIC       ouvrir

Retour