LOOP / boucle fonctionnement
LOOP / boucle fonctionnement
Bonjour,
J'ai du mal à comprend comment fonctionne l'opération LOOP sur step 7. Sur la notice siemens list il explique:
LIST Explication
L L#1 //Charger la constante entière de 32 bits dans l'accumulateur 1.
T MD20 //Transférer le contenu de l'accumulateur 1 dans MD20 (initialisation).
L 5 //Charger le nombre de boucles dans l'accumulateur 1-L.
SUIV: T MW10 //Repère de saut = début de la boucle/Transférer l'accumulateur 1-L dans
//le compteur de boucles.
L MD20
* D //Multiplier le contenu en cours de MD20 par le contenu en cours de MB10.
T MD20 //Transférer le résultat de la multiplication dans MD20.
L MW10 //Charger le contenu du compteur de boucles dans l'accumulateur 1.
LOOP SUIV //Décrémenter le contenu de l'accumulateur 1 et sauter au repère SUIV si
//l'accumulateur 1-L est supérieur à 0.
L MW24 //La séquence de programme se poursuit ici après la fin de la boucle.
L 200
>I
Pourtant le calcul factoriel de 5=120. MAis je comprend pas du tout comment ça fonctionne.
Qui pourrait m'aider s'il vous plait???
Mer ci par avance
J'ai du mal à comprend comment fonctionne l'opération LOOP sur step 7. Sur la notice siemens list il explique:
LIST Explication
L L#1 //Charger la constante entière de 32 bits dans l'accumulateur 1.
T MD20 //Transférer le contenu de l'accumulateur 1 dans MD20 (initialisation).
L 5 //Charger le nombre de boucles dans l'accumulateur 1-L.
SUIV: T MW10 //Repère de saut = début de la boucle/Transférer l'accumulateur 1-L dans
//le compteur de boucles.
L MD20
* D //Multiplier le contenu en cours de MD20 par le contenu en cours de MB10.
T MD20 //Transférer le résultat de la multiplication dans MD20.
L MW10 //Charger le contenu du compteur de boucles dans l'accumulateur 1.
LOOP SUIV //Décrémenter le contenu de l'accumulateur 1 et sauter au repère SUIV si
//l'accumulateur 1-L est supérieur à 0.
L MW24 //La séquence de programme se poursuit ici après la fin de la boucle.
L 200
>I
Pourtant le calcul factoriel de 5=120. MAis je comprend pas du tout comment ça fonctionne.
Qui pourrait m'aider s'il vous plait???
Mer ci par avance
-
philou77
- Mi homme - Mi automate

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: LOOP / boucle fonctionnement
Salut !
L'instruction loop fonctionne comme un while > 0
Tu charges une valeur dans un index (Valeur 5 dans MW10 dans ton cas).
Juste avant le loop tu recharge la valeur de ton index dans l'accu 1
L'instruction LOOP :
- Décrémente de 1 la valeur de l'accu 1.
- place le résultat dans l'accu 1.
- Puis saute à l'étiquette si résultat > 1, sinon ne fait pas le saut et continu sur la ligne d'après.
A ta charge de replacer le contenu de l'accu 1 (nouvelle valeur de l'index de boucle ) dans l'index.
boucle n+1
MD20 = 1
MW10 = 5
après multiplication, MD20 = 5
Boucle n °2
MD20=5
MW=4
après multiplication MD20 = 20
boucle N°3
MD20=20
MW=3
après multiplication MD20 = 60
boucle N°4
MD20=60
MW=2
après multiplication MD20 = 120
boucle N°5
MD20=120
MW=1
après multiplication MD20 = 120
ET c'est la sortie du loop !
L'instruction loop fonctionne comme un while > 0
Tu charges une valeur dans un index (Valeur 5 dans MW10 dans ton cas).
Juste avant le loop tu recharge la valeur de ton index dans l'accu 1
L'instruction LOOP :
- Décrémente de 1 la valeur de l'accu 1.
- place le résultat dans l'accu 1.
- Puis saute à l'étiquette si résultat > 1, sinon ne fait pas le saut et continu sur la ligne d'après.
A ta charge de replacer le contenu de l'accu 1 (nouvelle valeur de l'index de boucle ) dans l'index.
boucle n+1
MD20 = 1
MW10 = 5
après multiplication, MD20 = 5
Boucle n °2
MD20=5
MW=4
après multiplication MD20 = 20
boucle N°3
MD20=20
MW=3
après multiplication MD20 = 60
boucle N°4
MD20=60
MW=2
après multiplication MD20 = 120
boucle N°5
MD20=120
MW=1
après multiplication MD20 = 120
ET c'est la sortie du loop !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! 
Re: LOOP / boucle fonctionnement
Bonjour
Ouaa j'avoue j'ai un peu de mal là. J'ai tout mis en simulateur et mes valeurs restent fixe. Pas de décrémentations. J'ai du zapper quelque choses dans vos explications . Désolé. Pourriez vous m'aider s'il vous plait?
Ouaa j'avoue j'ai un peu de mal là. J'ai tout mis en simulateur et mes valeurs restent fixe. Pas de décrémentations. J'ai du zapper quelque choses dans vos explications . Désolé. Pourriez vous m'aider s'il vous plait?
-
philou77
- Mi homme - Mi automate

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: LOOP / boucle fonctionnement
Tu peux pas visualiser la boucle !
Ça fait ça 5 fois de suite dans le même cycle !!
à la vitesse des micro instructions !
Donc ça marche ou ça marche pas.
Ou tu fais pas ta boucle, ou tu reste coincé dedans !
Que dis md20 en en table d’animation ?
Ça fait ça 5 fois de suite dans le même cycle !!
à la vitesse des micro instructions !
Donc ça marche ou ça marche pas.
Ou tu fais pas ta boucle, ou tu reste coincé dedans !
Que dis md20 en en table d’animation ?
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! 
Re: LOOP / boucle fonctionnement
bon si je comprend bien:
1 er cycle
MW10 = 5
2 eme cycle MW10 = 4
3 eme cycle MW10 =3
etc..
Ca j'ai compris le 1-valeur ACCU 1
Je comprend pas comment MW20 peut changer de valeur.
Si L 1
T MW20 alors MW20 sera toujours égal à 1?
1 er cycle
MW10 = 5
2 eme cycle MW10 = 4
3 eme cycle MW10 =3
etc..
Ca j'ai compris le 1-valeur ACCU 1
Je comprend pas comment MW20 peut changer de valeur.
Si L 1
T MW20 alors MW20 sera toujours égal à 1?
Re: LOOP / boucle fonctionnement
j'ai du mal à comprendre l’intérêt des boucles de programmation
- djé
- Dieu du process

- Messages : 864
- Enregistré le : 20 oct. 2015, 09:55
- Localisation : Bretagne, Pays de la Loire, Nantes
- Contact :
Re: LOOP / boucle fonctionnement
Salut
dans l'exemple donné par Siemens l'intérêt est limité, c'est surtout pour bien comprendre comment ça fonctionne.
Grâce à une boucle tu peux parcourir un ensemble de données contiguës (un tableau) à la recherche d'une valeur par exemple.
dans l'exemple donné par Siemens l'intérêt est limité, c'est surtout pour bien comprendre comment ça fonctionne.
Grâce à une boucle tu peux parcourir un ensemble de données contiguës (un tableau) à la recherche d'une valeur par exemple.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
-
philou77
- Mi homme - Mi automate

- Messages : 2142
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: LOOP / boucle fonctionnement
Salut !
Donc juste avant le loop,
- il y a L MW 10 Soit Accu 2 = Accu 1 PUIS Accu 1 = MW 10
- Loop = Accu1 - 1 placé dans Accu 1 Soit Accu 2 = MW10 , Accu 1 =( MW 10 -1)
- Ensuite il y a l MD 20 Soit Accu 2 = Accu 1 (donc MW 10-1) puis Accu 1 = MD 20
- Ensuite on fait * D Soit Accu 1(MD 20) x Accu 2 (MW 10) P Puis Accu 2 = Accu 1 (donc Md 20) Puis Accu 1 = Résultat de la multiplication
- On termine par T MD20 Soit Acc1 (Résultat) dans MD 20 !
Nota, le transfert ne change pas le contenu des accumulateurs !
Simple isn't it (je sais pas le dire en allemand
)?
Quand à l'intérêt des boucles et bien, ....c'est plus rapide de faire comme cela que d'avoir à écrire 5 fois la même chose avec juste une valeur qui change...
Faut comprendre que a chaque chargement ou opération , l'accu 1 passe dans l'accu 2 avant de placer la valeur dans l'accu 1
Donc juste avant le loop,
- il y a L MW 10 Soit Accu 2 = Accu 1 PUIS Accu 1 = MW 10
- Loop = Accu1 - 1 placé dans Accu 1 Soit Accu 2 = MW10 , Accu 1 =( MW 10 -1)
- Ensuite il y a l MD 20 Soit Accu 2 = Accu 1 (donc MW 10-1) puis Accu 1 = MD 20
- Ensuite on fait * D Soit Accu 1(MD 20) x Accu 2 (MW 10) P Puis Accu 2 = Accu 1 (donc Md 20) Puis Accu 1 = Résultat de la multiplication
- On termine par T MD20 Soit Acc1 (Résultat) dans MD 20 !
Nota, le transfert ne change pas le contenu des accumulateurs !
Simple isn't it (je sais pas le dire en allemand
Quand à l'intérêt des boucles et bien, ....c'est plus rapide de faire comme cela que d'avoir à écrire 5 fois la même chose avec juste une valeur qui change...
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! 
Re: LOOP / boucle fonctionnement
Bonjour,
Parfait , elle relisant vos explications et l'adaptant dans mon prog (pas l'exemple de siemens), ça devient plus clair. beaucoup plus clair.
Dans mon cas il s'agit d'un "tableau" de recette, donc des valeurs qui sont susceptible de changer. C'est parfait.
Merci beaucoup, ça ma beaucoup aider. même si j'ai encore du taf pour décrypter tout mon code.
cordialement
Parfait , elle relisant vos explications et l'adaptant dans mon prog (pas l'exemple de siemens), ça devient plus clair. beaucoup plus clair.
Dans mon cas il s'agit d'un "tableau" de recette, donc des valeurs qui sont susceptible de changer. C'est parfait.
Merci beaucoup, ça ma beaucoup aider. même si j'ai encore du taf pour décrypter tout mon code.
cordialement
