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.

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 Fichier„la 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 . |
Le programme principal comporte les deux étapes Init et Step1.

|
Créer une variable globale
Créez d'abord les Variables globales suivantes :
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.

|
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 .

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

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 . 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", créer un sous-programme et l'affecter ensuite à l'étape voulue.

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.

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.

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.

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 , 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 . 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.

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.

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 . 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 . 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.
|
|