Retrofit petite Realmeca avec cartes MESA

  • Auteur de la discussion Laurent_CNC
  • Date de début
G

gaston48

Compagnon
Bonjour à vous deux
Disons que pour paramètrer "les bon sens" un peu partout, j'évite les solutions logiciels avec des "moins".
Comme les fichiers de config de linuxcnc sont repris par d'autres comme exemples, cela peut prêter à confusion
et quand c'est possible, je préfère les solutions hard.
J'ai testé en inversant la polarité du moteur. Je n'ai pas d'explications mais l'axe est parti violemment en butée...
Là j'ai fais une connerie, j'avais pensé à la tachy comme une valeur absolue !! il aurait fallu l'inverser aussi .
mais comme tu as une entrée différentiel sur le drive, tu as très bien résolu le problème.

Encore une preuve qu'on est jamais trop prudent, surtout quand on manipule des axes de 2 KW ...

Au niveau du réglage de P si tu as envoyé des ordres de JOG + 1mm - 1mm et que l'erreur de poursuite
a bien évolué, ça devrait bouger.
Ce que je ne comprends pas c'est que l'axe doit continuer à bouger comme avant avec la valeur de FF1
que P soit à 0 ou à 0.01 après il est fort possible que la valeur finale de P soit 50.
Mais de mon coté j'ai une faible valeur de P, pourtant mon gain propre de l'ampli est bien réglé, avec +10 V à l'entrée,
avec mon servomoteur tournant à 2000 rpm.
 
L

Laurent_CNC

Compagnon
Salut CNCSERV,
C'est ce qui m'est arrivé (l'emballement du moteur...)

J'ai continué à monté P doucement.
4 sur X et 3 sur Y et Z.
1 point de plus fait grogner le moteur.
J'ai tout laissé à 3.

Comme c'est là, j'ai une erreur de poursuite de 0.001 sur le X et autour de 2 à 3 microns sur le Y et le Z.
 
Dernière édition:
G

gaston48

Compagnon
Gaston, je continue à faire monter P avant de toucher à autre chose ?
Oui si l'axe bouge toujours comme avant avec P=0 et FF1 non nul.
Après toutes ces mise au point de "bon sens" il faut retrouver ces conditions initiales
Plus tu montes le P, plus le déplacement doit être fidèle aux incréments que tu envoies avec le jog
1 mm 50mm etc. ce sont des déplacements imposés du même ordre que les Gcode.
 
L

Laurent_CNC

Compagnon
Ben écoute, comme c'est là ça parait très bien.
Les incréments de + - 5 mm semble très fidèle (par rapport à un réglet)
Il me faut une 10ène de 0.1 mm pour faire 1 mm....
etc.
et ça sur mes 3 axes.

Je vais essayer de calculer ma vitesse maintenant
 
G

gaston48

Compagnon
Une valeur trop forte de P, c'est quand ça se met à vibrer. Trop de gain de contre réaction.

Oups tu réédites tes messages donc tout est parfait !!!
 
Dernière édition:
G

gaston48

Compagnon
On rajoute de la DEADBAND quand ça yoyote sur 1 count.
Si tu rajoute petit à petit du I tu vas ce qu'on appelle corriger l'erreur statique,
l'erreur résiduelle quand tu es à l’arrêt. Ça incorpore un retard dans la boucle et il
faut baisser en même temps le P, sinon ça oscille de nouveau.
Si tu peux t'en passer, c'est bien mieux car l'erreur de poursuite dynamique augmente
si tu baisse P. Ce que tu gagnes en précision statique, tu le perds en précision dynamique,
en temps de réponse, avec des problèmes de dépassement de la consigne.

Si tu fais du positionnement - pointage, du paraxiale, une action I peut être
intéressante car tu as une très grande précision d'asservissement à l’arrêt.

L'action proportionnelle P agit proportionnellement à l'erreur. Quand cette erreur
devient trop petite l'action proportionnelle devient négligeable et il te reste cette
fameuse "erreur statique". L'action I va prendre en compte cette erreur et
l'additionner périodiquement (notion de constante de temps) à elle même
pour finir avec le temps par la corriger. L'asservissement traîne toujours avec lui
cette addition, elle diminue, elle peut passer en négatif etc ... mais ça constitue
toujours un " élément en retard" qui compromet la stabilité.
 
Dernière édition:
L

Laurent_CNC

Compagnon
Ok.
Bon, je valide mes réglages actuels.
J'ai testé les déplacements ça semble tout bon et j'ai chronométré deux vitesses (lente et rapide) et c'est plutôt très bien aussi.

Je pense qu'on peut passer aux Homes maintenant, qu'en pensez vous ?
 
G

gaston48

Compagnon
Si tu veux :-D
Le principe:
Linuxcnc ne sait pas ou est positionné l'axe.
Il sait dans quel sens (paramètre 1) il doit mettre en mouvement l'axe pour aller chercher la fermeture du switch home.
Aussitôt que le switch est fermé ou s'il est déjà fermé, il freine et passe en marche arrière à petite vitesse (paramètre 3)
En respectant l'accélération max et donc le freinage alloué à cet axe. Cela va donc prendre une certaine distance ou il faut
impérativement que le switch reste fermé d'ou le choix d'une certaine vitesse (paramètre 2).
il passe donc en marche arrière à une vitesse très réduite et aussitôt que le switch home s'ouvre, une instruction
est activée pour attendre le top index du moteur (un top très bref, d'ou la vitesse lente) ce top index se
répète tout les tours entier du moteur. Compte tenu de l’imprécision du switch, de son hystérésis, on a tout intérêt
à positionner le switch pour qu'il s'ouvre quand le moteur à encore à peu près 1/2 tour à faire pour attendre le top index.
Il faut donc faire une marque au feutre sur la vis, correspondant au top index détecté avec halmeter (tourner à la main très lentement, c'est très bref !)
et régler le switch pour qu'il s'ouvre à 180° à peu près de la marque au feutre.
L'instruction qui capte le top index va initialisé à 0 le compteur de position de l'encodeur.
Restera à fixer un offset (paramètre 4) qui positionner la course totale de l'axe par rapport à ce zéro origine
le top index est exactement en phase avec un front d'une impulsion de comptage. Donc ton origine est
déterminé avec une reproductibilité au micron. Précision qu'il est impossible à obtenir avec un switch.
Donc le switch home dégrossit au tour près (4 mm) la position d'un top au micron près.

HOME_SEARCH_VEL paramètre 1 et 2 le plus ou le moins et la vitesse
HOME_LATCH_VEL paramètre 3 idem, le plus ou le moins et la vitesse
HOME_OFFSET paramètre 4

On aurait dans ini quelque chose comme ça:

HOME_SEQUENCE = 1
HOME_USE_INDEX = YES
HOME_SEARCH_VEL = 20
HOME_LATCH_VEL = -0.3
# recentrage de l'amplitude nominale de l'axe par rapport au top index
HOME_OFFSET = 0.0
# position de l'axe après prises d'origines
HOME = 0.0
# 0 = Vitesse rapide pour rejoindre home final, pas de distinction de sens, toujours positif.
HOME_FINAL_VEL = 0

Concernant les branchements dans le fichier.hal relatif à la prise d'origine de l'axe X
à titre d’exemple:

net home-x <= hm2_5i25.0.7i77.0.0.input-XX ( XX à choisir et doit etre à TRUE pour actif )
net home-x => axis.0.home-sw-in
net x-index-enable axis.0.index-enable <=> hm2_5i25.0.encoder.00.index-enable
net x-index-enable <=> pid.x.index-enable
 
Dernière édition:
L

Laurent_CNC

Compagnon
OK pour le principe.
Pour le branchement physique de mes HOME.
Tu valides que j’amène un des 2 fils sur un +24V et je relie l'autre aux entrées IN qu'on a défini il y a déjà un moment ?
Si oui, je peux surement faire ça demain.

Sinon, j'ai gratté un peu le principe de pilotage de la broche.
Ne serait il pas plus simple de la piloter en 0/10V plutôt qu'en PWM ?
http://linuxcnc.org/docs/html/examples/spindle_fr.html

Il me semble que tu l'as configuré en PWM non ?


Evidemment je ne touche à rien pour l'instant :wink:
 
Dernière édition:
G

gaston48

Compagnon
analogout5 c'est une sortie +/- 10 V elle est fabriqué à partir d'un PWM
mais qu'on ne déclare et configure pas, à l'inverse d'une 5i20.
regarde avec halmeter si les signaux sont bons

Pour le home, tu choisis l'input que tu veux avec effectivement le + 24 V sur un fil
et toujours la même méthode, tu vas voir avec halmeter si l'input passe de false à true

Il faudrait éventuellement éviter les 8 input suivant:
https://www.usinages.com/threads/ma-deckel-fp4nc-retrofit-copeaux.87628/page-20#post-1098603
 
L

Laurent_CNC

Compagnon
Petite question : le fait que mes switchs de HOME soit des normalement fermé change-t-il quelque chose aux instructions à donner dans le INI ?

Je devrais avoir (prendre) le temps de brancher ça cette après midi...

Par contre, je ne pense pas avoir à réserver des entrées comme tu le proposes à Ben,
Je vais pour ma part continuer d'utiliser ma manette de jeux pour les JOG et mon Alcera 300CP pour les usinages à la manivelle.

Ma machine sera définitivement très simple :wink:

@ tout'
Laurent
 
Dernière édition:
L

Laurent_CNC

Compagnon
Je fais ça aussi cette après midi :wink:

analogout5 c'est une sortie +/- 10 V elle est fabriqué à partir d'un PWM
mais qu'on ne déclare et configure pas, à l'inverse d'une 5i20.
regarde avec halmeter si les signaux sont bons

Parce que là, la machine est en ON OFF... pas de régulation et pas de changement de sens
 
G

gaston48

Compagnon
Par contre, je ne pense pas avoir à réserver des entrées comme tu le proposes à Ben,
Je voudrais savoir si ces options fonctionnent, pour notre culture et la communauté ...
il suffirait de les configurer les tester avec halmeter un potentiomètre et un codeur
de toute façon les entrées sont sur-abondantes.

Parce que là, la machine est en ON OFF... pas de régulation et pas de changement de sens
Aucune idée, si tu as testé avec une pile le vario et que c'est bon, au niveau de notre config je ne sais pas.
il y a 6 voies. La dernière est particulière uniquement par ce que le switch de la voie ENA+ etc est le seul
à s'activer à part pour une spindle justement.

Petite question : le fait que mes switchs de HOME soit des normalement fermé change-t-il quelque chose aux instructions à donner dans le INI ?
ben oui, je te laisse deviner ... :smt077

.
 
L

Laurent_CNC

Compagnon
Y a du not qui se balade :mrgreen: je me rappelle qu'on a déjà abordé ça :wink: dans une de ces 37 pages :eek:

OK pour les réservations, j'ai donc mis HOME X Y et Z sur 21, 22 et 23
 
Dernière édition:
L

Laurent_CNC

Compagnon
T'es un grand malade ,:eek:
Où tu prends des notes :wink:

Sinon. J'ai true quand le switch Home est enfoncé. C'est bon je pense.
True est l'instruction attendue pour passer à la ligne suivante, c'est bien ça ?
 
G

gaston48

Compagnon
True est l'instruction attendue pour passer à la ligne suivante, c'est bien ça ?
oui pour enclencher le freinage et la marche arrière...... petite vitesse ....
.....et aussitôt qu'il repasse à false
il attend l'impulsion d'index du codeur de moteur ..........
aussitôt saisie, le compteur de codeur est mis à 0 et je file à ma position de repos.
si elle est décalée: je change ma valeur d'offset.
 
L

Laurent_CNC

Compagnon
Bon, c'est bon, j'ai TRUE sur chaque enclenchement de mes switchs de HOME.
j'en ai profité pour préparer l'ARU lors de l'enclenchement des autres switchs...
 
L

Laurent_CNC

Compagnon
J'ai testé une première version.

J'ai mis ça dans le INI :

et j'ai mis ça dans le HAL :

J'ai fait idem sur chaque axe avec input-22 et 23 et axis.1 et axis.2 ainsi que les encodeurs correspondants.
Les 3 dernières lignes étaient actives avant que je ne colle les instructions qui sont au dessus.

Mais il n'y a pas de miracle, ça ne fonctionne pas pour l'instant.
X et Y partent en butée et du mauvais coté. Et Z me fait des petits sauts...
On va gratter :wink:
 
G

gaston48

Compagnon
il faut que tu repères au feutre les index d'abord et déjà si la pulse index est visible avec halmeter

si mauvais sens -20 et + 0.3
 
L

Laurent_CNC

Compagnon
Ok, mais c'est bizarre que ça part à fond de balle... sur X et Y et rien sur Z...
 
L

Laurent_CNC

Compagnon
Je ne crois pas que ça vienne de là.
En fait la machine me faisait déjà ça avant de mettre mes switchs en fonction.
Pendant tout mes tests, à chaque fois que je faisais POM d'un axe avec Axis, la machine réagissait comme ça...
Doit y avoir autre chose.
Faut creuser... demain... mais virtuellement seulement, je ne serais pas sur la machine...

Déjà, j'ai mis [HOME] et pas [HOMING] dans le .ini mais cela n'a peut être pas d'importance...

http://linuxcnc.org/docs/2.7/html/config/ini_config_fr.html#sub:Section-HOMING

Ce n'est pas dit clairement :
4.2. Les sections
Les différentes parties d’un fichier .ini sont regroupées en sections. Une section commence par son nom en majuscules entre crochets [UNE_SECTION]. L’ordre des sections est sans importance.

@+
 
Dernière édition:
G

gaston48

Compagnon
Déjà, j'ai mis [HOME] et pas [HOMING] dans le .ini mais cela n'a peut être pas d'importance...
Ben oui je le vois maintenant ??? ou tu as vu cette syntaxe ?
entre crochet c'est uniquement la grande rubrique :
[AXIS_0]
et toutes les instructions : Ex (mon tout premier indiqué sur le fil)


###############################################################
[AXIS_0]
TYPE = LINEAR
# 0.05 erreur max en mm à vitsse max
FERROR = 10000
# 0.005 erreur max en mm à basse vitesse ou position
MIN_FERROR = 10000
# 6000 mm/mn = 1500 rpm servomoteur
MAX_VELOCITY = 100
MAX_ACCELERATION = 400

P = 0.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 0.001
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.001
MAX_OUTPUT = 10.0

ENCODER_SCALE = 1000.0
OUTPUT_SCALE = 1.0
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
MIN_LIMIT = -0.01
MAX_LIMIT = 240.0
# position de l'axe apres prises d'origines
HOME = 0.0
# recentrage de l'amplitude nominale de l'axe par rapport au top index
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 20
HOME_LATCH_VEL = -0.3
# 0 = Vitesse rapide, pas de distinction de sens, toujours positif.
HOME_FINAL_VEL = 0
HOME_USE_INDEX = YES
HOME_SEQUENCE = 1
############################################################
 
L

Laurent_CNC

Compagnon
PFUUUU, je me suis usé les yeux sur mes deux fichiers ini et hal.

Je pense avoir corrigé les erreurs concernant les HOME.
Y avait qq conneries que j'ai lever après avoir recoupé les infos que donnais Gaston et le site de linuxcnc

Gaston, quand tu marques une instruction net du style
net y-home-sw => axis.1.home-sw-in
le "mot" h-home-sw, je l'appelle Tartempion si je veux c'est bien ça ?
L'important étant que l'entrée lui correspondant ait le même nom comme dans mon cas :
net y-home-sw <= hm2_5i25.0.7i77.0.0.input-22

Autre chose ou je ne trouve pas vraiment d'infos.
Dans Axis, il me semble avoir déjà vu la possibilité d'avoir un bouton POM générale.
Du coup, comme je déclare dans INI l'ordre dans lequel je veux faire mes POM, soit Z Y et X, ce bouton devrait me les faire "tout d'un coup".
Mais moi je dois appuyer sur chaque axe, un par un. Ce serait mieux si...

Par contre, je n'ai pas encore trouvé pour ma broche... je continue de gratter :wink:
Gaston, dans ton hal, c'est bien les 3 instructions stp hm2.... OUTPUT SCALE, MIN LIMIT et MAX LIMIT qui disent à linuxcnc que j'ai du +/- 10V sur ma sortie analogout5 ?

J'essaie mes nouveaux fichiers ce soir si possible...
Je vous tiens au jus.
 
Dernière édition:
G

gaston48

Compagnon
e "mot" h-home-sw, je l'appelle Tartempion si je veux c'est bien ça ?
oui tout à fait
et
dans halmeter quand tu as crée un signal tartempion tu peux le visualisé
dans la rubrique signal au meme titre que sur les pin concernées par ce signal
tu as donc un signal traceur
il est obligatoire de nommer (tartempion) un branchement et donc le signal qui y transite
Certain mot sont réservés mais le debug le signale.
As tu bien calé la position de l'index sur la vis ou le moteur à 1/2 tour du moment ou le switch s'ouvre ?
Donc ça marche ou ça marchouille ... l'offset tout ça ... c'est pour les autres, ceux qui sont à l’affût dans la tranché :smt108

un bouton POM générale.
Oui moi je l'ai sur mes config bidon, je regarde ...
 
Dernière édition:
L

Laurent_CNC

Compagnon
As tu bien calé la position de l'index sur la vis ou le moteur à 1/2 tour du moment ou le switch s'ouvre ?
Donc ça marche ou ça marchouille ... l'offset tout ça ... c'est pour les autres, ceux qui sont à l’affût dans la tranché :smt108

Ca j'ai pas pu tester encore. Ce soir, si je me dégage assez de temps...
 
L

Laurent_CNC

Compagnon
Bon, ben j'ai pu tester des choses.
Désolé pour la réponse tardive, mais plus d'internet depuis 48 heures à la maison et plus d'électricité depuis minuit...
Grand merci aux gars d'EDF qui ont du bosser dur pour qu'à 6 heures ce matin, ça reparte !

Bon, pour ma part, le bouton POM générales est apparu tout seul. Il doit être conditionné par la séquence automatisée.

La séquence de POM ce lance bien. J'ai pour l'instant testé avec USE INDEX à NO.

J'ai un seul problème, mineur mais incompréhensible, le Z à qui je demande de s'initialiser à une valeur de 240... se met à 90 !
J'ai commencé à regarder mon INI mais je ne pige pas.
Pour les 2 autres axes, rien à redire, au top retour du switch, la valeur passe à ma valeur limite déclarée et ensuite, l'axe va ce caler à la valeur de HOME que j'ai également déclarée... mais Z... non...

Pour l'index, je vais avoir le temps de tester ça ce matin avant de filer.

J'ai aussi poussé mes vitesses de JOG à 5000 mm/min. C'est celle donnée par le constructeur de la machine. Ca file sans soucis.
J'ai aussi augmenté l'accélération et baissé les valeurs des erreurs de poursuites FERROR

@ tout'
 
Dernière édition:
L

Laurent_CNC

Compagnon
Je joue avec HAlmeter.

Je teste toutes mes valeurs d'index en faisant tourner au ralenti :
encoder.XX.index-enable reste sur FALSE
encoder.XX.input-index reste sur FALSE
XX-index-enable FALSE
hm2_5i25.0.encoder.XX.index-invert FALSE

Aucun, sur les 3 axes ne passent à TRUE...
MAIS la séquence de HOME ce passe bien avec USE INDEX à YES sur les 3 axes...
Alors, marche ou marche pas l'index ???
Ben je pense que ça marche car j'entend clairement le clique du switch en sens plus, puis en moins et tout doucement, l'axe continue de tourner moins d'un tour et ensuite, va à la place que je lui impose.

je met le hal et le ini si nécessaire :


 
Dernière édition:
V

vres

Compagnon
Une impulsion d'index c'est très court, si tu as un codeur de 1000ppr l'impultion index est active sur 1/1000 de tour.
 

Sujets similaires

Ginou
Réponses
9
Affichages
1 035
Poyon
P
V
Réponses
12
Affichages
913
vibram
V
part's-and-co
Réponses
22
Affichages
2 257
part's-and-co
part's-and-co
P
Réponses
2
Affichages
628
pro-ms
P
L
Réponses
9
Affichages
1 033
Dodore
Dodore
Castor24
Réponses
14
Affichages
1 049
rabotnuc
R
Haut