Comptage d'impulsions MPP

Forum traitant des automates industriels de marque Omron
MartinB
Apprend le binaire
Apprend le binaire
Messages : 9
Enregistré le : 14 juin 2019, 16:09

Comptage d'impulsions MPP

Message par MartinB » 14 juin 2019, 16:24

Bonjour,

Je travaille actuellement sur un projet visant à déterminer la hauteur d'une barre entre 2m et 7m et à la transmettre sur un afficheur 7 segments avec une précision au cm.
Pour cela je dispose d'un automate CP1L-EM40DT1-D, un moteur Pas à Pas avec son driver (ref :RBK2913T) ainsi qu'un détecteur inductif.
Je débute sur CX-Programmer et je rencontre des difficultés logicielles.

Mon problème est le suivant : J'aimerais pouvoir définir une origine avec le capteur inductif à une hauteur de 2m puis pouvoir récupérer le nombre d'impulsions envoyées par l'automate en incrémentation/décrémentation (montée/descente), faire une conversion et envoyer les données BCD dans la fonction 7SEG de l'automate.

Actuellement j'ai programmé une loi de vitesse avec la fonction ACC(888). J'ai essayé d'utiliser le compteur haute vitesse PRV(881) pour récupérer le nombre d'impulsions mais je n'y parvient pas.

Savez vous si ma démarche est bonne où s'il existe un moyen plus simple de récupérer le nombre d'impulsions en "direct" ?

En vous remerciant par avance.

philou77
Dieu du process
Dieu du process
Messages : 884
Enregistré le : 21 oct. 2015, 10:00

Re: Comptage d'impulsions MPP

Message par philou77 » 14 juin 2019, 16:40

Salut !

tu utilises quelles fonctions pour 'piloter' ton moteurs pas a pas ?
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D

MartinB
Apprend le binaire
Apprend le binaire
Messages : 9
Enregistré le : 14 juin 2019, 16:09

Re: Comptage d'impulsions MPP

Message par MartinB » 14 juin 2019, 17:10

Bonjour,

j'ai connecté le PLS24+ de mon driver sur la sortie de pulsation 0 fournie par l'automate et j'utilise la sortie 01 avec mon DIR24+ pour le sens de rotation.
Dans mon logiciel, j'utilise pour le moment seulement deux fois la fonction ACC(888) pour créer une loi de vitesse trapézoïdale. (j'ai une boite 3 boutons pour mes entrées)

Je ne sais pas si c'est bien de cela dont vous parliez ?

Merci pour votre réponse.

philou77
Dieu du process
Dieu du process
Messages : 884
Enregistré le : 21 oct. 2015, 10:00

Re: Comptage d'impulsions MPP

Message par philou77 » 14 juin 2019, 18:24

Oui,

pour acc()
en mode relatif, le pv de output pulse est le nombre de pulse fait ! il est remis à zéro avant chaque envoi de train d'impulsions sur la sortie !

en mode absolu, le pv de output est pv + le nombre d'impulsion faites !

Pour PRV(881) paramètres :
#1000 si tu utilise la sortie 0
#0000 pour la lecture PV
D0 (premier mot de destination (sur 32 bits donc 2 mots au total D0 poids faible, D1 poids fort))


tu utilises quel mode ?
pour la prise d'origine, c'est possible.
ou tu la fait toi même via INI(880), ou tu utilises ORG(889) il me semble à spécifier dans les paramètres (caser à cocher)

si tu est en mode relatif.. faudra additionner toi même les impulsions faites avec ta position courante !

dans tout les cas.. il te faudra définir combien de mm tu parcours avec un pas de moteur et convertir toi même les pas en distance !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D

MartinB
Apprend le binaire
Apprend le binaire
Messages : 9
Enregistré le : 14 juin 2019, 16:09

Re: Comptage d'impulsions MPP

Message par MartinB » 17 juin 2019, 09:48

Bonjour,

J'utilise le mode continu pour accélérer et décélérer.
je sais qu'un pas du moteur correspond à environ 1.33 mm.
Donc je voulais récupérer en BCD le nombre d'impulsions que j'ai envoyé pour par exemple 6m52 , le multiplier avec la fonction BCD MULTIPLY (pour convertir en mm) et envoyer le résultat dans la fonction 7SEG.

Si j'utilise la sortie 0 pour mes impulsions je ne dois pas rentrer #0000 pour la valeur d'identificateur de port de PRV(881) ? (voir image jointe)
J'ai des difficultés sur la façon de construire et tester mon programme. Y a t'il moyen que je vous l'envoie ?

Merci encore
Fichiers joints
Capture.PNG

philou77
Dieu du process
Dieu du process
Messages : 884
Enregistré le : 21 oct. 2015, 10:00

Re: Comptage d'impulsions MPP

Message par philou77 » 17 juin 2019, 10:09

Salut !

post une copie écran de ton prg avec acc() et prv() que je vois ce que tu as fait.
post aussi la config de la sortie 0 (page paramètres)
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D

MartinB
Apprend le binaire
Apprend le binaire
Messages : 9
Enregistré le : 14 juin 2019, 16:09

Re: Comptage d'impulsions MPP

Message par MartinB » 17 juin 2019, 10:35

Voilà je viens de débuter donc je ne comprends pas tout ...
Fichiers joints
1560760230489.png
1560760158370.png
1560760115778.png

philou77
Dieu du process
Dieu du process
Messages : 884
Enregistré le : 21 oct. 2015, 10:00

Re: Comptage d'impulsions MPP

Message par philou77 » 17 juin 2019, 12:24

Ok

Pas de simulation, sur les compteurs rapides et instrucionts de soties rapides.
faut faire tes test raccordé à l'autoamte !
débranche le moteur... c'est plus sûr !

pour commencer, tu fais un MOVL (mot long) pour ta fréquence... attention à la position des poids faibles et fort ! (50HZ, ça tiens sur un mot normal)

est-ce qu'au moins tu réussis à avoir la sortie 0 avec des impulsions ?

pour multiplier par 1.33 soit tu passe en réel..
soit tu multiplie par 133 puis divise par 100 (tu reste en entier dans ce cas mais tu perds en précision)
soit tu multiplie par 133, tu reste en entier mais tu es en centième de mm (faut voir si un mot double peut contenir ta valeur sans débordement)

BCD(024) pour convertir en BCD un nombre
l'instruction 7seg...permet d'afficher sur un afficheur 7 segments le nombre BCD donné
Elle envoie les 4 digits (ou 8) l'un après l'autre et utilise les sorties 'LATCH' (une pour chaque afficheur) afin que l'afficheur mémorise son propre chiffre !
Les sorties utilisées sont 'consécutives' attention à ne pas utiliser les sorties d'impulsions !

regarde l'aide en ligne su 7SEG.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D

MartinB
Apprend le binaire
Apprend le binaire
Messages : 9
Enregistré le : 14 juin 2019, 16:09

Re: Comptage d'impulsions MPP

Message par MartinB » 17 juin 2019, 14:23

Pour le moment j'arrive à avoir les impulsions sur la sortie 0, mon moteur accélère, atteint la vitesse et décélère dans les deux sens de rotation donc je peux positionner la barre comme je le souhaite.

J'avais regardé l'instruction 7SEG et je pensais simplement multiplier par 133 et placer mon point de manière fixe sur l'afficheur après le chiffre des mètres.

Maintenant il faut que je parvienne à incrémenter et décrémenter la PV du compteur selon la montée ou la descente de la barre.

Je viens de faire un test avec le programme que je vous ai montré, il fallait bien mettre #0000 pour le port et cela fonctionne, le chiffre hexa augmente lorsque je reste appuyé sur le bouton "Montée".

Je pense que la valeur hexa est stockée dans le mot D200 ? Cependant lorsque j'appuie à nouveau sur le bouton "Montée", le compteur reprend à partir de 0. Ce n'est pas un problème en soi car je vais pouvoir incrémenter un autre mot (D300 ? je ne connais pas l'emplacement réservé à chaque mot ...) ou bien le décrémenter en descente. Quelle démarche dois je employer pour réaliser : Montée -> D300 + D200 ; Descente -> D300 - D200 ?

Merci pour vos réponses et commentaires pour le moment cela m'aide beaucoup !

philou77
Dieu du process
Dieu du process
Messages : 884
Enregistré le : 21 oct. 2015, 10:00

Re: Comptage d'impulsions MPP

Message par philou77 » 17 juin 2019, 16:22

comme je te l'ai dit

en 'relatif' tu as le nombre d'impulsion faites !!

en absolu tu as le nombres d'impulsions faites depuis le début (prise d'origine).

dans ton cas, tu dois faire
en montée : D400 = D300 + D200
en descente: D400 = D300 - D200
et quand ton moteur est stoppé et qu'il n'y a plus d'impulsions D300=D400 !
D400 = valeur en live
D300 = dernière valeur mémorisée

sinon en absolu (il faut définir une origine avec INI) , il te faudra faire une séquence de prise d'origine (à la mise sous tension ou au premier cycle)
1 - Montée jusqu'au détecteur haut
2 - Mise à la valeur que tu souhaite (0 ou autre) du comptage avec INI()

quand ça monte, ta valeur D200 augmente
quand ça descend ta valeur D200 diminue

penses aussi que INI() peut stopper tous les mouvements en cours immédiatement
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D

Répondre