Tutoriel 2

Previous  home  Next   

L'exercice montre comment réaliser un programme séquentiel avec des branches alternatives. Le programme fini se trouve sous examples/sfc/tutorial2.rvw2

 

Le programme prêt à exécuter se présente comme indiqué dans la figure 1.

examples_sfc_tutorial2_sfc_full

Figure 1 : Le programme séquentiel complet

 

Dans Step1, la valeur a est modifiée. Ceci se traduit par l'exécution, au cours de chaque cycle du programme, de l'une des étapes Step2, Step3 et Step4. Step5 compare les résultats fournis par les étapes précédentes Au bout du sixième cycle de Step5, le programme s'arrête. Sinon, il se poursuit avec Step1.

 

Créer un projet

Créez un nouveau projet en sélectionnant

dans le menu Fichierla commande Nouveau
en utilisant le raccourci clavier Ctrl+N ou
en cliquant dans la barre d'outils sur l'icône de création d'un projet newproject.

 

Le programme principal comporte les deux étapes Init et Step1.

examples_sfc_tutorial2_sfc_init

 

Créer une variable globale

Créez d'abord les Variables globales suivantes :

timer
a
b
step2count
step3count
step4count
step5count

 

Affectez à la variable "a" la valeur initiale -1. Toutes les autres variables ont pour valeur initiale 0.

 

Programmer Step1

Dans ce sous-programme, la variable globale "a" est incrémentée de 1. Pour que la valeur de "a" évolue dans les limites de 0 à 2 inclus, on calcule "a" modulo 3 puis on réinscrit le résultat dans "a". La valeur "b" est simplement mise à zéro.

examples_sfc_tutorial2_sfc_step1

 

Créer les étapes Step2, Step3 et Step4

On crée à présent les étapes juxtaposées dans une branche alternative. Sélectionnez pour ce faire la condition de transition sous Step1.

 

La condition de transition est sélectionnée lorsqu'elle est entourée d'une ligne pointillée.

Cliquez à présent sur le symbole d'ajout d'une branche alternative à droite alternativebranch_right.

examples_sfc_tutorial2_sfc_step2_a

Complétez la branche générée en sélectionnant la condition de transition et en ajoutant une nouvelle branche alternative à droite alternativebranch_right Cliquez sur le symbole

examples_sfc_tutorial2_sfc_step2_b

Créez à présent, dans les trois branches alternatives, trois étapes que vous nommerez Step2, Step3 et Step4. Sélectionnez pour ce faire la condition d'entrée d'une branche puis clique sur le symbole d'ajout d'une étape après step_transition_after . Affectez ensuite au étapes créées des sous-programmes du même nom. Effectuez pour ce faire un double clic sur l'étape voulue et entrez dans la boîte de dialogue qui s'ouvre le nom du sous-programme. Vous pouvez également, avec le bouton "Nouveau sous-programme", sdfdocument créer un sous-programme et l'affecter ensuite à l'étape voulue.

examples_sfc_tutorial2_sfc_step2_c

Les conditions d'entrée et de sortie des trois branches alternatives sont actuellement à l'état faux. Modifiez les conditions d'entrée pour obtenir a == 0, a == 1 et a == 2. Prenez comme condition de sortie pour toutes les branches timer == 10. Modifiez ensuite le saut final de Init à Step1.

examples_sfc_tutorial2_sfc_step2_d

Si vous démarrez maintenant le programme principal, le programme s'arrête dans Step2 parce que "a" est à 0 au premier cycle et que la variable globale "timer" n'est pas modifiée.

 

Programmer les étapes Step2, Step3 et Step4

Les sous-programmes affectés aux étapes Step2 à Step4 sont momentanément encore vides. Nous allons voir dans ce qui suit comment créer le sous-programme Step2.

examples_sfc_tutorial2_sfc_step2_program

Le générateur d'ondes arbitraire génère toutes les 200 ms une impulsion d'une largeur de 100 ms et d'une hauteur égale à 1. La figure ci-après visualise le paramétrage du générateur d'ondes arbitraire.

examples_sfc_tutorial2_sfc_step2_program_puls

En d'autre termes, une transition de 0 à 1 intervient toutes les 200 ms. A chaque transition, le compteur incrémente son résultat de 1. Au bout de 2 s, sa valeur est donc de 10. Lorsque la valeur du compteur est égale à 10, la valeur momentanée de step2Count est additionnée au résultat de la comparaison de la constante et de la valeur du compteur. Tant que la comparaison est sanctionnée par faux, la valeur ajoutée est 0. Dès que la comparaison est sanctionnée par vrai, la valeur ajoutée est 1. Pour clore chaque étape de calcul du sous-programme, on vérifie la condition de transition suivante du programme principal. Si la variable globale "timer" a atteint la valeur 10, le sous-programme est terminé.

 

Les sous-programmes des étapes Step3 et Step4 possèdent une structure équivalente. Sélectionnez tout dans le sous-programme Step2 (Ctrl+A) et copiez le tout dans Step3 et Step4. La seule différence réside dans le fait que les valeurs sont lues et écrites dans les variables step3count et step4count.

 

Si vous démarrez le programme principal par un clic sur l'icône startall_normal, les étapes Step2, Step3 et Step4 sont exécutée cycliquement durant respectivement 2 s.

 

Créer et programmer Step5

Pour créer une étape après la branche alternative, sélectionnez le saut final puis cliquez sur l'icône de création d'une étape avant step_transition_before. Créez un sous-programme nommé Step5 et affectez-le à l'étape Step5 qui vient d'être créée. Modifiez les conditions de transition de Step5 pour obtenir b>0 && timer == 10.

examples_sfc_tutorial2_sfc_step5

Le sous-programme Step5 ressemble aux programmes Step2 à Step4. Copiez Step2 dans Step5 et modifiez step2count en step5count. Dans ce sous-programme, les variables globales "timer" et "step5count" sont positionnées mais on vérifie également la réalisation de la condition step2count >= step3count >= step4count. Si c'est le cas, la variable globale "b" est mise à 1. Sinon "b" est à 0. La condition doit cependant toujours être vraie en cas d'exécution correcte du programme, étant donné que les étapes Step2, Step3 et Step4 sont exécutée successivement parce que Step1 incrémente la variable globale "a" de 1 à chaque cycle.

examples_sfc_tutorial2_sfc_step5_prg

Si vous démarrez le programme principal maintenant, Step5 reste activé durant 2 s, à condition que "b" soit supérieur à 0.

 

Créer l'arrêt du programme et le saut à Step1

On souhaite que le programme s'arrête lorsque la variable globale "step5count" atteint la valeur 6. Pour y parvenir, on ajoute une branche alternative sous Step5. Sélectionnez la condition de transition sous Step5 puis cliquez sur l'icône d'ajout d'une branche alternative à gauche alternativebranch_left. Sélectionnez la condition de transition de la nouvelle branche (la condition est actuellement à l'état faux) puis cliquez sur l'icône d'ajout d'un saut jump_after. Modifiez la condition de transition de step5count == 6 et sélectionnez "TERMINATE" comme destination du saut.

Le programme principal est maintenant identique à ce que vous avez vu au début.

La branche alternative avec le saut vers TERMINATE doit d'ailleurs figurer à gauche de la branche avec la condition b>0 && timer == 10 parce que les conditions initiales d'une branche alternative sont traitées de gauche à droite. Au cours des 6 premier cycles, la condition step5count == 6 n'est pas remplie, de sorte que la condition de la seconde branche est vérifiée.

L'exécution du programme principal dure 24 s.