Fonction mémoire
Ayant abouti dans des délais raisonnables à la confection du programme, et étant dans l'impossibilité de le tester, car la carte Pico-API ne fonctionnait pas encore, nous avons décidé plusieurs choses. Tout d’abord nous avons optimisé le programme, afin de l’alléger et de l’accélérer. Ensuite et surtout, nous avons voulu compléter le cahier des charges. Ainsi, nous avons rajouté une fonction permettant de mémoriser une suite de plusieurs étages, comme l’on peut le voir dans certains immeubles, hôtels ou bureaux… Cette fonction, que nous avons naturellement appelé FONCTION MEMOIRE et dont nous allons expliquer son principe de fonctionnement maintenant, en étudiant le programme final, n'était pas demandée à l'origine. Nous allons d’abord observer la partie ENREGISTREMENT. Quand avons-nous besoin de mémoriser un étage ? Seulement lorsque l’ascenseur est déjà en mouvement. L’emplacement de notre fonction ENREGISTRER est donc défini :
Programme principal
Elle est appelée après que le départ d’un étage ait été détecté, et que l’on ait éteint le voyant. Dans la version du programme que nous avions fait avant, à cette position se trouvait un simple scanE, qui permettait de savoir lorsque l’ascenseur arrivait un nouvel étage. Quels changements ont dus être effectués à travers le programme ? Nous ne détaillerons pas tout le code de la fonction. Nous l’expliquerons principalement sous la forme d’une énumération des étapes successives des évènements.
Grafcet résumant la situation
Chronologie des actions - Mémoire
En le regardant, on peut s'apercevoir qu'il y avait un autre problème, car il était nécessaire, en phase de mouvement de l'ascenseur, de scanner successivement les entrées BP, puis les entrées E. Nous avons donc décidé de réunir en une seule fonction, baptisée scan(), les sous-programmes scanE() et scanBP() précédemment cités. Celle-ci effectue une boucle qui lit l'ensemble des entrées. Dès qu'une entrée est détectée, s'il s'agit d'un étage E, on retourne dans le programme principal, car cela signifie que l'on a atteint un nouvel étage. S'il s'agit d'un BP, on le garde en mémoire. Nous allons maintenant voir quel est le principe de cette sauvegarde. En fait, nous avons eu l'idée de créer un tableau, contenant 3 cases. Chaque case peut mémoriser le numéro d’un étage. Il peut donc y avoir un maximum de 3 étages enregistrés, mais le nombre de cases peut être modifié selon l’usage, dans les données de configuration en début de programme.
Voici le principe de fonctionnement de cette mémoire : On peut imaginer que sur le tableau se trouve 2 curseurs. L’un étant destiné à l’enregistrement des étages, l’autre à leur lecture. La « tête d’enregistrement » se déplace vers la droite à chaque fois qu’un BP est actionné dans la phase de mouvement. La « tête de lecture » se déplace d’un cran vers la droite à chaque fois qu’un étage a été atteint et qu’on se prépare à partir vers un autre étage mémorisé. Leur déplacement est indépendant l’une de l’autre. Nous ne détaillerons pas plus en ce qui concerne cette partie car il n'est pas nécessaire ici d'entrer dans les détails
Schématisation de la mémoire
|