Page 2 sur 2

Re: Stage - Automatisation d'une série de test diélectrique

Posté : 23 mai 2019, 13:55
par ProfnovA
ProfnovA a écrit : 23 mai 2019, 11:42 tu fais 2 boucles imbriquée:
pistolet1 va de 1 à n-1
pistolet2 va de p1+1 à n

for p1 =1 to n-1
avance le pistolet à la position p1
for p2 =p1+1 to n
avancer le pistolet à la position p2
faire le test
next
next

un truc du genre

si tu veux absolument faire du grafcet, il faut gérer les 2 compteurs dans les étapes

Re: Stage - Automatisation d'une série de test diélectrique

Posté : 23 mai 2019, 14:36
par Elkilleros
Merci pour vos réponses seulement, je suis absolument incapable de retranscrire le bout de code de ProfnovA en grafcet.

Pour ce qui est du registre à décalage, cette solution me parait plus simple, cependant j'ai quelques difficultés à comprendre son fonctionnement.

Malgré mes recherches sur l'aide de soMachine, je comprends pas comment je peux faire pour décaler un bit d'un mot binaire, par exemple si j'ai le mot suivant 1000 0000 0000 j'aimerais que sur chaque front montant de l'étape %Xi ça décale le '1' vers la droite donc : 0100 0000 0000 ect ect.

Je comprends comment le bloc de registre à décalage fonctionne : 3 entrées :

Une pour décaler à droite, l'autre à gauche et enfin pour reset, mais je sais pas sur quel mot binaire ça agit

Re: Stage - Automatisation d'une série de test diélectrique

Posté : 23 mai 2019, 15:09
par itasoft
slts,
voir les instructions SHL et SHR

Re: Stage - Automatisation d'une série de test diélectrique

Posté : 23 mai 2019, 15:36
par ProfnovA
Bon en grafcet voila une idée de ce que ça pourrait donner

Re: Stage - Automatisation d'une série de test diélectrique

Posté : 24 mai 2019, 11:26
par Elkilleros
Merci pour vos réponses.

J'ai donc opté pour la solution des registres à décalages, sauf que, petit problème en utilisant ces registres je fais :

---------- première boucle ----------

---------- première sous-boucle ----------

borne 1 : 1000 0000 0000 ... 0000
borne 2: 0100 0000 0000 ... 0000

---------- deuxième sous-boucle ----------

borne 1 : 1000 0000 0000 ... 0000
borne 2: 0010 0000 0000 ... 0000

.
.
.

---------- nième sous-boucle ----------

borne 1 : 1000 0000 0000 ... 0000
borne 2: 0000 0000 0000 ... 0001

.
.
.

---------- deuxième boucle ----------

---------- première sous-boucle ----------

borne 1 : 0100 0000 0000 ... 0000
borne 2: 0100 0000 0000 ... 0000

---------- deuxième sous-boucle ----------

borne 1 : 0100 0000 0000 ... 0000
borne 2: 0010 0000 0000 ... 0000

.
.
.

---------- nième sous-boucle ----------

borne 1 : 0100 0000 0000 ... 0000
borne 2: 0000 0000 0000 ... 0001

ect ect jusqu'à :

borne 1 : 0000 0000 0000 ... 0001
borne 2 : 0000 0000 0000 ... 0001


Le problème étant qu'avec ceci je ne gère absolument pas les répétitions et parfois même les superposition, car comme dit précédemment il est inutile de tester borne 1 et 6 puis borne 6 et 1 par exemple, avec ce système il y'a même des cas ou on à deux fois le même mot pour les deux bornes et c'est problématique.

J'ai pas mal réfléchie mais je n'arrive pas à trouver un moyen d'éviter ces répétition toujours en utilisant le système des registres à décalage, auriez vous des idées à me soumettre ?

Merci par avance.

Re: Stage - Automatisation d'une série de test diélectrique

Posté : 24 mai 2019, 14:38
par itasoft
slts,
ya pas de répétitions

Re: Stage - Automatisation d'une série de test diélectrique

Posté : 24 mai 2019, 14:51
par Kallysto
Un début d'idée que je vais écrire en C (mettons qu'il y ait 4 bornes à tester)

Code : Tout sélectionner

For (R =0; R <4; R++)
{
	If(R=0)
	{
		borne A : 1000
	}
	
	For (S = 0; S< 4; S++)
	{
		If (S = 0)
		{	
			borne B = borne A;
			S = R; *-
		}
		borne B = décallage de 1;
		Test;
	}
	Borne A = décallage de 1;
}

Voilà... en mettant toujours au départ de ta boucle de test la borne B au même niveau que la borne A, tu ne refais pas les bornes d'avant. Et tu décalles tout de suite après ton registre B de 1 donc tu ne fais pas de test type "borne 2 + borne 2".
Par contre il faut bien penser à mettre ton comptage de ta boucle de test à la bonne valeur tout de suite : t'en ait au test de la borne 6 tu lui mets la valeur 5. Le plus simple pour ça c'est de lui mettre directement la valeur de ton comptage de ta boucle primaire.

Et en grafcet ça doit donner un truc similaire et bien plus simple que tes 1500 boucles...

Re: Stage - Automatisation d'une série de test diélectrique

Posté : 24 mai 2019, 14:56
par philou77
Re !

Ton mot 'Mobile' est égal au Mot FIXE décalé de 1 pour la première boucle
Donc par exemple

ETAPE 1 :
Initialiser valeurs pour test
FIXE := 1000 0000 0000 0000

ETAPE 2
Mobile := SHR(FIXE,1)

ETAPE 3
TEST


si pas fin de MOBILE alors ETAPE 4
PROCHAIN TEST MOBILE
MOBILE := SHR(MOBILE,1)
Boucle sur Etape 3

si fin de mobile et pas fin de FIXE alors ETAPE 4
FIXE:=SHR(FIXE,1)
Retour sur ETAPE 2

si fin de MOBILE et FIN DE FIXE alors ETAPE 5
FIN DE TEST


La fin est
Fixe 0000 0000 0000 00010
Mobile 0000 0000 0000 0001

La fin de MOBILE est bit 0 MOBILE =1 (soit MOBILE = 1)
La fin de fixe est Bit 1 FIXE = 1 ( oit FIXE =2)


Je vois pas ou sont les répétitions.

Re: Stage - Automatisation d'une série de test diélectrique

Posté : 24 mai 2019, 16:39
par itasoft
@philou77, c'est juste peut pas y avoir de répétitions

Re: Stage - Automatisation d'une série de test diélectrique

Posté : 24 mai 2019, 18:27
par philou77
@Itasoft,

Dans sa façon de programmer, oui il en y a des répétitions ;)

Dans la mienne, c'est moins sûr !