le 06-13-2016 05:51 AM
J'ai beau changer la valeur de consigne jusqu'à 10% cela ne change rien car de base mon moteur est trés précis et donc même les 1% sont élevé pour lui il à une meilleur précision encore d'ailleurs lorsque je demande au moteur de se placer à 98mm il est soit à 98mm soit a 98.0001mm, le fait est que le programme ne fait pas tout le tableau est s'arrête à la ligne de tableau numéro 1 et je ne comprend pas pourquoi
06-13-2016 06:18 AM - modifié 06-13-2016 06:19 AM
Tu sors ou pas de la boucle "while" ? que donne les valeurs de position dans cet boucle.
Il faut que tu comprennes pourquoi ca ne sors pas de cette boucle.
C'est à dire, pourquoi la position du moteur n'arrive jamais dans la gamme de position tolérée.
EDIT : Fait un screen de la boucle while en mode pas à pas avec les valeurs sur les cables.
06-13-2016 06:21 AM - modifié 06-13-2016 06:26 AM
La consigne n'est pas le problème , la 1 ère position s'efectue met la boucle while ou se trouve la lecture de position n'arrete pas de s'executer indefiniment sans jamais en sortir et ça je ne comprend pas pourquoi. C'est seulement la partie du programme de la boucle while ( celle que j'ai mis en screen) qui n'arrête pas de s'effectuer sans s'arreter, elle arrive dans la position toléré mais seulement pour la 1ère et vue qu'elle ne sort pas de la boucle while elle ne peut pas se rendre à la deuxième
06-13-2016 06:37 AM - modifié 06-13-2016 06:38 AM
Regarde tes screeens, les valeurs min & max en entrées de la fonction "dans la gamme?" ne te choque pas????
Tu sors pas de al boucle while car même si la position est bonne ton intervalle de validité lui ne va pas.*
Tu rentres comme borne de validité MAX = 1 et min = 0.99, au lien d'avoir quelque chose du genre MAX = Consigne *1,01 et MIN = CONSIGNE * 0.99
le 06-13-2016 06:59 AM
Je l'avais vue et c'est pourquoi dans mon programme acteul j'ai carrement supprimé la partie consigne ce qui n'empeche pas a la boucle while de tourner indéfiniment , la preuve et que les registres à décalage ont toujours une luminosité faible
le 06-13-2016 07:13 AM
Je t'ai aidé, mais il serait bon de commencer à réellement réfléchir.
Test tests n'ont aucun sens, puisque forcément que ta boucle sera en infini si tu cables l'arrêt que sur uen erreur de remonter d'information moteur. ![]()
Tu n'as clairement pas compris le principe de la boucle while, et de ce côté là, je ne peux plus rien pour toi.
JE tente uen dernière fois de t'explique rle principe, passer cela, je laisse quelqu'un d'autre trouver les mots justes.
Voici un schéma synoptique de tes étapes (que tu es censé maitriser à ce stade)
Boucle FOR
1) J'envoies ma consigne de position au moteur
2) Boucle while
2a - Je remonte la position du verrin
2b - Je vérifie cette position par rapport à un intervalle de validité
2c - Si c'est dans la gamme je sors dde la boucle, sinon je poursuit
3)Je passe à l'itération suivante de ma boucle FOR.
Bon courage à toi, et je t'invite vivement à te poser 5 minutes et à comprendre le but et les fonctionnaltiés de ton programme, n'hésides pas à affichier la fenetre d'aide contextuel, et à lire la documentation de chaque fonction, et si besoin les exemples associés.
06-13-2016 07:39 AM - modifié 06-13-2016 07:40 AM
Je comprend le fonctionnement de la boucle while, je l'ai utilisé dans tous mon programme, c'est juste que j'ai mal formulé ma requête.
JE ne comprend pas pourquoi le formule entré dans mon noeud d'expression ne prend pas en compte l'entré que je lui fournis car à cause de ça la game qui est sensé faire tourner la boucle while et être une condition d'arret de cette boucle ne se fait pas
Le noeud d'expression ne prend pas en compte ma valeur de tableau 98 et n'effectue donc pas mon calcul
06-13-2016 07:47 AM - modifié 06-13-2016 07:49 AM
Met un "." comme spérateur décimale dans le noeud d'expression, et ton calcul de borne se fera correctement.
par contre, j'ai beacoup de mal à voir la relation entre ta consigne de 98 et ta position demoteur à 3,95E+5
le 06-13-2016 08:04 AM
J'ai compris d'où venais l'erreur elle venait de la séparation "." et du fait du "3,95E+5" qui en fait signifier que le get position lisait non pas la position en mm mais en microstep et donc il n'aurait jamais pu s'accorder avec la gamme
le 06-13-2016 08:06 AM
Bon ben tant mieux si ca marche.
Bonne continuation.