Vous êtes sur la page 1sur 6

Faire tourner un moteur pas pas

Dclarer un nouvel espace de travail : Nouveau VI Deux espaces de travail apparaissent : Le panneau frontal qui sera au final la face avant FA de votre appareil Le panneau diagramme qui permet de comprendre et dfinir la logique qui relie les objets. On y construit le diagramme fonctionnel DF. On peut poser un objet dans le diagramme fonctionnel DF ou dans la face avant FA. Tous les objets placs dans la face avant FA apparaissent dans le diagramme fonctionnel DF mais la rciproque nest pas forcment vrai. DF FA DF Mettre une boucle While Cette boucle ne sera oprationnelle que si vous lui associez un bouton qui permettra de l'arrter ; sinon elle tournerait indfiniment. Mettre un bouton stop Connecter le bouton la boucle while, sur son icne stop. Fonction/Programmation/Structure/Boucle While Commande/Express/Bouton/Bouton Stop

FA

Dclarer une matrice de rels et choisir 1 colonne et 8 lignes en tirant sur les poignes de la fentre. Enlever les cases dincrmentation gauche en slectionnant lensemble de la matrice puis clic droit et choisir dans le menu contextuel. Remplir le tableau avec les codes 9,1,5,4,6,2,10,8

Commande/Moderne/Tableau-Matrice/Matrice relle/ Elment visible/Dcocher afficheur dindice Double clic dans une case

FA

On cherche maintenant faire lire la matrice ligne par ligne dans le sens descendant dans un premier temps. Chaque valeur lue sera ensuite envoye par le port de limprimante au moteur pas pas qui tournera. Dans un premier temps on utilisera la variable i de la boucle while. Cependant lincrmentation automatique de cette variable sera peut-tre trop rapide. Nous allons donc jouer sur la vitesse dexcution de la boucle. DF FA Dclarer une commande de temporisation. Dclarer un indicateur numrique qui permettra de choisir la valeur de la temporisation en ms ( pas en dessous de 20 ms pour le moteur) Slectionner lobjet et utiliser le clic droit pour faire apparatre un bouton dincrmentation Fonctions/Programmation/Informations temporelles/Attendre Commandes/Express/Indicateur numrique.

Modifier le nom de cet objet et le nommer temporisation FA DF Dclarer un nouvel indicateur numrique qui permettra de visualiser la valeur de la variable i de la boucle. Nommer incrment cette variable. Relier la variable i lafficheur de lincrment Commandes/Express/Indicateur numrique.

FA

DF

On voudrait que la valeur de cet incrment se transforme en un nombre de 0 7 de manire automatique. Pour cela il suffit d'effectuer une division euclidienne sur cet incrment. Le reste de la division sera toujours compris entre 0 et 7 et sera affich de manire croissante. DF DF DF DF DF DF Dclarer la commande division euclidienne. Relier l'incrment l'entre X qui est le nombre diviser. Dclarer une constante numrique. Donner la valeur 8 et relier cette constante l'entre Y. Y est le diviseur. La sortie X-Y*floor(X/Y) reprsente le reste de la division euclidienne. Pour lire une matrice il faut utiliser une commande dextraction. Relier la matrice cet objet. Fonction/Mathmatiques/Numrique/Quotient et reste Fonction/Programmation/Numrique./Constante numrique. Fonction/Programmation/Tableau/Indexer un tableau.

Il faut maintenant prciser la ligne et la colonne correspondant la valeur extraite. La valeur de la colonne sera 0, pour la premire colonne. La valeur de la ligne correspondra au reste de la division euclidienne de i par 8. DF Dclarer une constante numrique. Donner la valeur 0 et relier cette constante l'entre colonne de la commande d'extraction Remarque : cette constante numrique n'apparat pas dans le FA Relier le reste de la division euclidienne l'entre ligne de l'extracteur Dclarer un nouvel indicateur numrique qui permettra de visualiser la valeur de la matrice pour une ligne donne. Nommer le Pas pas Fonction/Programmation/Numrique./Constante numrique.

DF FA

Commandes/Express/Indicateur numrique.

Vrifier que votre programme fonctionne correctement.

FA

Lancer le programme avec la flche. Arrter le programme avec votre bouton Stop ou avec celui du menu du FA

La valeur de la matrice pour une ligne donne est maintenant transmise par le port parallle au moteur pas pas du dispositif Elin. Relier le port parallle de votre ordinateur la platine principale. Ajouter le moteur pas pas. DF DF DF FA FA FA Dclarer un port de sortie Dclarer une constante numrique. Donner la valeur 888 et relier cette constante l'entre du port de sortie Relier la sortie de l'extracteur de matrice au port de sortie. Pour viter de remplir la matrice chaque ouverture du fichier programme, on sauvegarde aussi les donnes du programme Sauvegarder votre fichier Votre moteur est prt fonctionner. Lancer le programme. Fonctions/Connectivit/ E/S sur port / Ecrire les registres Fonction/Programmation/Numrique./Constante numrique.

Menu dition/ Dsigner les valeurs actuelles comme dfaut

Rotation du moteur pas pas dans les deux sens


On voudrait maintenant pouvoir faire tourner le moteur dans un sens ou dans l'autre. Nous allons modifier le programme prcdent. On peut constater que l'outil division euclidienne, que nous avons utilis prcdemment, rend un reste positif quel que soit le signe du nombre divis. Par contre l'incrment de la boucle voluant toujours de manire croissante, nous allons l'abandonner et crer une nouvelle variable qui pourra voluer dans les deux sens ce qui permettra la matrice d'tre lue dans un sens ou dans l'autre. On voudrait l'aide d'un bouton sur le FA, choisir le sens de rotation du moteur. On peut associer l'tat du bouton la valeur +1 ou -1. On pourrait alors incrmenter une variable avec la valeur +1 ou -1. Cette variable voluerait donc soit de manire croissante soit de manire dcroissante. Il suffira d'effectuer la division euclidienne sur cette variable et de conserver le reste du programme prcdent. DF FA DF DF Supprimer le fil qui relie la variable incrment la commande de division euclidienne. Dclarer un bouton et le nommer Sens de rotation Dplacer le bouton l'intrieur de la boucle while. Dclarer une structure conditionnelle qui sera associe au bouton Choisir l'option vrai et dclarer une constante numrique laquelle vous attribuerez la valeur 1 Choisir l'option vrai et dclarer une constante numrique laquelle vous attribuerez la valeur -1 Relier le bouton la structure conditionnelle sur le point d'interrogation. Crer un indicateur numrique nomm incre+ouCe bouton ne sera reli rien car il sera dipliqu en variable locale. Crer une variable locale. Clic droit sur la variable et slectionner incre+ouClic droit et slectionner Changer en lecture (Si vous voyez l'option changer en criture c'est que la variable est dj en lecture) Deuxime duplication de l'indicateur numrique incre+ouCrer une variable locale. Clic droit sur la variable et slectionner incre+ouClic droit et slectionner Changer en criture

Commande/Express/Bouton/Bascule horizontale. Fonction/Programmation/Structure/Structure condition Fonction/Programmation/Numrique/Constante numrique

FA DF

Fonction/Communication des donnes/ Variable locale

DF

Fonction/Communication des donnes/ Variable locale

Il s'agit maintenant d'incrmenter cette variable locale par la valeur de 1 ou de moins -1, incrmentation qui se fera automatiquement chaque tour de la boucle While. DF Crer la commande addition Fonction/Programmation/Numrique/ Additionner

DF DF

Relier l'additionneur la structure conditionnelle. Il faut le faire deux fois, une fois quand la condition est vraie et une fois quand elle est fausse. Pour relier passer travers la paroi par un tunnel. Relier la variable en lecture l'entre de l'additionneur et la variable en criture sa sortie.

En programmation plus classique ( Pascal, Delphi), on aurait crit incre+ou- = incre+ou- + 1 dans le cas de incrmentation positive. DF Troisime duplication de l'indicateur numrique incre+ouCrer une variable locale. Clic droit sur la variable et slectionner incre+ouClic droit et slectionner Changer en lecture Relier cette nouvelle variable locale l'entre X de la commande division euclidienne. Le programme est termin. Enregistrer le fichier et faire excuter le programme. Fonction/Communication des donnes/ Variable locale

DF FA