Retrofit petite Realmeca avec cartes MESA

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

gaston48

Compagnon
26 Fev 2008
10 553
59000
Bonjour,
super tout ça,
Je confirme CNCSERV c'est très bref il faut tourner à la main très très lentement.
C'est tellement bref, que ça n'est pas forcement vu dans halmeter et halscope alors que c'est
prise en compte par hall. C'est un peu la limite en bande passante de halmeter et halscope,
malheureusement, qui sont cadencés avec la même fréquence qu'un servo thread
 
L

Laurent_CNC

Compagnon
26 Avr 2012
706
Salut vous deux.

OK, halmeter et halscope ne voit rien mais ça fonctionne en tout cas.
Trop cool :mrgreen:

J'ai juste du recalculer mes limites car realmeca est un peu optimiste.
Mes axes ont une capacité réelle de X 230, Y 135 et Z 230

Bon faut trouver pourquoi la broche ne tourne qu'à fond maintenant...
Halmeter me dit que :
hm2_5i25.7I77.0.1analogout5 ne fait que passer de 0 à 1 et rien d'autre...
et la sortie passe de 0 à 10,01 volts mesuré

Je vous ai déjà dit merci :smt050
 
Dernière édition:
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
Ravi de faire un heureux ... j'espère que tu donneras un coup de main aux autres qui débutent aussi.
OK, halmeter et halscope ne voit rien mais ça fonctionne en tout cas.
Trop cool :mrgreen:
Quand ton switch de prise d'origine s'ouvre (voir halmeter) le moteur doit continuer à tourner
d'un certain angle à vitesse réduite avant que le top index soit saisi.
C'est une autre façon de voir si tu as une bonne réserve d'angle (l'ideal 180°) comme je te le disais
et de repérer à peu près ou se trouve l'index.

Pour la spindle,
la doc (voir motion) indique bien :

motion.spindle-speed-out OUT FLOAT Desired spindle speed in rotations per minute

et dans ton fichier hal tu dois bien avoir ces 2 lignes:
net spindle-vel-cmd-rpm <= motion.spindle-speed-out
net spindle-vel-cmd-rpm => hm2_5i25.0.7i77.0.1.analogout5

en sortant de motion.spindle on doit bien avoir des rpm donc jusqu'à 4000
qu'on multiplie par 0.0025 25e-4 pour avoir 10 (volts)
sans doutes une histoire de scale qu'on a pas bien compris
entre une entrée qui doit être de 0 à 1 ou de 0 à 10
change 25e-4 en 25e-5 ou 25e-3 pour voir ...
 
L

Laurent_CNC

Compagnon
26 Avr 2012
706
Salut à tous
Rien n'y fait pour l'instant.
J'ai bien les instructions dans hal et initial mais je n'ai que + 10 v à la broche.... Rien d'autre

Dis moi Gaston, si on sort de motion spindle avec 4000
Ne devrait on pas mettre + - 4000 au niveau de valeur max et mini de décaler et declarer un scale de 0.0025 ensuite ?

J'essaie dès que possible
 
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
Attend par ce qu'au message #573 je ne rentre pas dans la PID.
Avec FF0 = 1 il est pas dit que ça change quelque chose mais !!!

Donc dans hal, les bons branchements seraient plutôt comme ça, comme les voies pid xyz


net spindle-vel-cmd-rpm => pid.s.command
net spindle-output <= pid.s.output
net spindle-output => hm2_5i25.0.7i77.0.1.analogout5

Concernant tu suggestion, c'est une bonne idée, mais normalement
ça respecte la même logique que les paramètres xyz .
 
L

Laurent_CNC

Compagnon
26 Avr 2012
706
Toujours pas ça... et le coup des min et max à + - 4000 n'y fait rien non plus...

Dans le fichier hal que tu m'avais concocté au début, il y avait ces lignes :
#setp hm2_5i25.0.pwm.00.output-type 3
#setp hm2_5i25.0.pwm.00.scale 1.0
#setp hm2_5i25.0.pwmgen.pwm_frequency 1e5
#setp hm2_5i25.0.pwmgen.pdm_frequency 1e8

Mais quand je les enclenchent, le fichier bug.
N'y a t il pas qq chose à gratter par ici ?

J'ai fouillé dans la doc de la 5i25 mais je n'y trouve rien sur notre problème.
Ce qui est bizarre c'est qu'on a bien fixé la sortie à 10 volt mais qu'on n'arrive pas à la faire varier...
 
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
Dans le fichier hal que tu m'avais concocté au début, il y avait ces lignes :
#setp hm2_5i25.0.pwm.00.output-type 3
#setp hm2_5i25.0.pwm.00.scale 1.0
#setp hm2_5i25.0.pwmgen.pwm_frequency 1e5
#setp hm2_5i25.0.pwmgen.pdm_frequency 1e8

Mais quand je les enclenchent, le fichier bug.
N'y a t il pas qq chose à gratter par ici ?
Non rien à gratter, là c'est certain

Comme je te disais, la seule doc qui évoque ces paramètres et celle - ci

http://linuxcnc.org/docs/2.7/html/man/man9/sserial.9.html

Il faut surtout que tu vérifies aussi que la désignation des variable setup dans le fichier INI
et bien reprise avec la même orthographe dans le fichier hal
car finalement on peut les appeler tartempion aussi
exemple [SPINDLE_9]OUTPUT_SCALE

exemple hal ici:
setp hm2_5i25.0.7i77.0.1.analogout5-scalemax [SPINDLE_9]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout5-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout5-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT

et son correspondant ici dans INI :
[SPINDLE_9]
P = 0.0
I = 0.0
D = 0.0
# consigne d'entrée = signal sortie pas d'asservissement.
FF0 = 1.0
FF1 = 0.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 10.0
# 10V / 4000 rpm
OUTPUT_SCALE = 25e-4
OUTPUT_MIN_LIMIT = -10
OUTPUT_MAX_LIMIT = 10

D'ailleurs tout ces paramètres de setup peuvent être écrit directement dans le fichier HAL
(sans mettre de signe "=")
mais dans ce cas, certains ne peuvent être corrigées et tester " en temps réel " quand linuxcnc est lancé
il faut éditer directement dans HAL
 
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
Il y a peut être une imprécision dans le documentation, d'ailleurs le rédacteur en demande confirmation ...
Il faut peut être reprendre la définition du SCALE du PWM implicite qui est à l'intérieur du générateur +/- 10V


Doc hostmot2 rubrique pwmgen
http://linuxcnc.org/docs/2.7/html/man/man9/hostmot2.9.html

(float rw) scale
Scaling factor to convert ’value’ from arbitrary units to duty cycle: dc = value / scale. Duty cycle has an effective range of -1.0 to +1.0 inclusive, anything outside that range gets clipped. The default scale is 1.0.


Dans ce cas le scale n'est pas 10 V / 4000 rpm mais 1 / 4000 rpm soit 25e-5

je crois que ça va être bon là
 
L

Laurent_CNC

Compagnon
26 Avr 2012
706
Dit moi, n'y aurait il rien de ce coté ?
SYNOPSIS
loadrt motmod [base_period_nsec=period] [base_thread_fp=0 or 1] [servo_period_nsec=period] [traj_period_nsec=period] [num_joints=[0-9]] ([num_dio=[1-64]] [num_aio=[1-64]])
DESCRIPTION
By default, the base thread does not support floating point. Software stepping, software encoder counting, and software pwm do not use floating point. base_thread_fp can be used to enable floating point in the base thread (for example for brushless DC motor control).
These pins and parameters are created by the realtime motmod module. This module provides a HAL interface for LinuxCNC’s motion planner. Basically motmod takes in a list of waypoints and generates a nice blended and constraint-limited stream of joint positions to be fed to the motor drives.

Cela ne nous dit il pas qu'il faut un paramètre base thread fp est nécessaire ?
Nous on a rien de ce genre...

@+
Laurent qui cherche, qui cherche :wink:
 
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
Remarque pertinente, c'est bien de fouiller dans la doc.
servo period thread est encore à fixer car les calculs en flottant sont toujours effectués par le noyau temps reel de linux
base period thread est encore à fixer pour les calculs entiers et les op logiques, quand elles sont également effectués
par linux dans le cas d'un sortie de step dir ou pwm sur le port //
Dans le cas de Mesa, c'est le FPGA qui se charge des calculs entiers et des op logiques donc le paramètre base thread
n'est pas pris en compte.
je crois que l'erreur vient bien du facteur 10
donc passer 25e-4 à 25e-5
 
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
Exact, ça nous fait une tripoté de scale !!!

Tu vas rentrer la valeur de setp directement dans hal, comme il dise
10 / 4000 = 25e-4 et analogout5-scalemax 25e-4 aussi dans INI
...
setp hm2_5i25.0.7i77.0.1.spinout-scalemax 25e-4
setp hm2_5i25.0.7i77.0.1.analogout5-scalemax [SPINDLE_9]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout5-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout5-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT

net spindle-output => hm2_5i25.0.7i77.0.1.analogout5
...

Si il n'y a plus rien qui bouge, il s'agit de savoir lequel et de trop ou il y a un facteur 10 de trop ?
 
L

Laurent_CNC

Compagnon
26 Avr 2012
706
Ca y est, ça fonctionne.

J'ai fini par essayer en relancant pncconf pour faire un test et comparer les fichiers obtenus...
Le test de la broche marche avec pncconf... y avait plus qu'à comparer les fichiers.
full?d=1484413141.png


C'était le .INI... et on allait à l'envers.
il fallait ça :

Et c'est tout bon. Ma broche tourne dans les deux sens, avec un réglage tout les 100 tours/min...
Nice Job !!!
 
L

Laurent_CNC

Compagnon
26 Avr 2012
706
Demain, je branche mes fins de courses sur la 7i77, j'ai changé d'avis.
On pourra les configurer pour qu'ils déclenchent l'ARUS ?
 
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
P****n mais la doc est nulle !!!!
:smt041

Finalement quand je relie bien la doc, c'est exactement ce qui est demandé :oops:
entre l'anglais et ce qu'on souhaite inconsciemment comprendre ...

The spindle speed scaling.
This is the speed request which would correspond to full-scale output from the spindle control pin. For example with a 10V drive voltage and
a 10000rpm scalemax a value of 10,000 rpm on the spinout pin would produce 10V output.

la seule incertitude est qu'on a plusieurs min max et scale ?
la nuance est peut être dans le fait que la voie 5 n'est pas forcement utilisé
pour une spindle on choisirait donc un type de ligne en fonction de l'application ?
analogout5 pour une application de 6 ème axe et
spinout pour une application spécifique à la broche.

setp hm2_5i25.0.7i77.0.1.analogout5-scalemax [SPINDLE_9]OUTPUT_SCALE
setp hm2_5i25.0.7i77.0.1.analogout5-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT
setp hm2_5i25.0.7i77.0.1.analogout5-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT
setp hm2_5i25.0.7i77.0.1.spinout-scalemax
setp hm2_5i25.0.7i77.0.1.spinout-minlim
setp hm2_5i25.0.7i77.0.1.spinout-maxlim

Dis moi ce que tu as dans HAL aussi stp concernant le spindle
Tout le ini avec la PID qui concerne le spindle
que je corrige mes fichiers didactique pour les autres ...


Alors le must après, c'est que ton variateur, en attendant le temps d'accélération ou de freinage,
peut envoyer un signal OK quand le fréquence cible est atteinte. Ce signal tu peux le récuperer
pour autoriser le gcode à se poursuivre.
 
Dernière édition:
L

Laurent_CNC

Compagnon
26 Avr 2012
706
extrait du INI :

Pour le HAL, j'ai rien changé.

Sinon :
Alors le must après, c'est que ton variateur, en attendant le temps d'accélération ou de freinage,
peut envoyer un signal OK quand le fréquence cible est atteinte. Ce signal tu peux le récuperer
pour autoriser le gcode à se poursuivre.

Oui si c'est pas trop compliqué, je suis preneur mais d'abord, s'occuper des switchs des limites.

De mon coté je vais essayer de rebrancher ma manette de jeux pour les JOG, mais ce ne sera peut pas aussi simple que prévu vu que la version de Linux à bien changé depuis que l'ai fait sur ma vieille Haulin...

Et sinon, je m'achèterai une HandWheel, il y a tout le descriptif pour la brancher sous linuxCNC.

@+
Laurent
 
L

Laurent_CNC

Compagnon
26 Avr 2012
706
Salut à tous, salut Gaston,

J'ai voulu m'occuper de mes limites et pour faire simple je me suis dit que je ferais comme tu as expliqué à polifemo :
net any_limit parport.0.pin-10-in-not => halui.machine.off

(parport.0.pin-10-in-not false si non activé)

halui.machine.off est une commande toogle / bistable si tu restes stoppé sur le
switch activé, tu n'est pas pour autant bloqué. Tu appuis de nouveau sur F2
mise en marche et tu as toute liberté de mouvement.

Mais évidement pour moi ça ne marche pas... mes switchs étant des normalement fermés, quand je les relies entre eux ca ne sert à rien...
Il n'y pas d'autre solution que de les différencier c'est bien ça ?

@+
 
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
Bonjour,
Il est plus prudent de câbler les limites sur les entrées soft dédiées. Il faut déverrouiller le signal "Dépassement des limites"
en cliquant dessus, sinon, comme le switch est toujours actionné tu ne peux pas sortir au jog de ta
limite et tu as le droit à un coup de jog, si le switch n'est pas déverrouillé, rebelotte, il faut de nouveau
cliquer sur "Dépassement des limites" Toutes ces précautions assurent une certaine sécurité préservatrice
de la mécanique.
Mais dans tous les cas, ça ne te limite en aucune façon de manipuler le jog dans n'importe quelle direction.

Si tes switch sont normalement fermés, tu les câbles donc tous en série avec un + 24 V à une
borne et l'autre borne à une entrée de la 7i77 .
L’état normal sera donc +24 à l'input donc TRUE on va donc inverser l'entrée avec le not

net any_limit <= hm2_5i25.0.7i77.0.0.input-XX-not ( XX le n° de l'entrée qui te convient)
net any_imit => axis.0.neg-lim-sw-in
net any_limit => axis.0.pos-lim-sw-in
net any_imit => axis.1.neg-lim-sw-in
net any_limit => axis.1.pos-lim-sw-in
net any_imit => axis.2.neg-lim-sw-in
net any_limit => axis.2.pos-lim-sw-in

Là tu auras 3 messages d'alarme sur les 3 jointures sans distinctions.

Attention aux mauvais contacts de ces switch normalement fermés, il faudrait peut être faire circuler
un courant en permanence avec une led témoins genre 20 mA, donc une Led avec une R en série
de 1 Kohms 1/2 Watts.
 
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
pas grave,
là les messages dans axis vont bien différencier les limites qui sont actionnées je pense.

tu rajoutes donc not à la fin pour pour que les imput normalement soit à false
et tu les branches individuellement
en t'inspirant d'ici:

net min-x => axis.0.neg-lim-sw-in
net max-x => axis.0.pos-lim-sw-in
etc ...
net any_imit => axis.1.neg-lim-sw-in
net any_limit => axis.1.pos-lim-sw-in
net any_imit => axis.2.neg-lim-sw-in
net any_limit => axis.2.pos-lim-sw-in
 
L

Laurent_CNC

Compagnon
26 Avr 2012
706
OK, j'ai fait ca :
net min-z => axis.2.neg-lim-sw-in
net max-z => axis.2.pos-lim-sw-in
Pour chacun de mes axes.

Mais la machine s'arrête du coup, comment je peux shunter le switch pour forcer la machine à reculer ???

là je vais essayer de faire fonctionner ma manette pour les JOG... c'est pas gagné...
 
L

Laurent_CNC

Compagnon
26 Avr 2012
706
Je préfèrerai enclencher sur toutes ces butées un machine off...
J'ai essayé ça pour chaque axe mais ça ne fonctionne pas.

net min-x => halui.machine.off
net max-x => halui.machine.off

Mais visiblement halui.machine.off ne peut être appelé qu'une fois.
Il me faut trouver comment déclarer un toutes_limites qui reprendrait les min-x etc et enverrai l'instruction machine off...
 
Dernière édition:
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
halui.machine.off je suis certain que cela fonctionne meme si le switch reste appuyé
mais toujours pareil il faut que l'input soit bien à FALSE en état non action sur butée ...
et attention aussi aux rebonds sur halui car c'est un toggle,
là c'est une autre histoire, si c'est ça, il faut insérer un antirebond

le rebond est à confirmer avec halscope.

Non finalement ça ne joue pas ...
 
Dernière édition:
L

Laurent_CNC

Compagnon
26 Avr 2012
706
halui.machine.off je suis certain que cela fonctionne meme si le switch reste appuyé

Oui j'ai essayé en ne déclarant que le X- pour essayer.
Ca fonctionne nickel. Tu réenclenches F2 et tu dégages ton axe, c'est tout a fait ce qu'il faut.

Le truc est que je n'arrive pas à déclarer halui.machine.off sur plusieurs lignes et là linuxcnc n'est pas d'accord...
 
L

Laurent_CNC

Compagnon
26 Avr 2012
706
C'est absolument nickel Gaston !!! tu es un grand :prayer:

Donc pour les ceusses que ça intéresse, ça donne ça dans le hal :

Ta machine s'arrête en cas de contact avec un switch de limite et peut être dégagée si on réenclenche le bouton de marche (F2).
C'est mieux qu'en standard car là on peut dégager l'axe sans être obligé de le faire à la main.

Bon, ben moi mon cablage est fini il me semble !
Je vais acheter une Handwheel pour remplacer le pupitre et j'aurais une belle machine.

Pour info, mes input ne sont pas dans l'ordre car tout les fils étaient vert...
Alors j'ai tout cablé "au hazard" sur la 7i77 et ensuite j'ai interrogé halmeter en actionnant manuellement mes switchs... j'ai pu alors savoir d'ou venait quoi...
Pas orthodoxe, mais efficace :smt033
 
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
:-D
rentrer un "composant" si tu as compris un peu la manip, tu peux faire beaucoup de chose

C'est mieux qu'en standard car là on peut dégager l'axe sans être obligé de le faire à la main.
Comme je te disais, même si tu rentres sur les entrées dédiés pour les limites, sortir d'une limite est
toujours possible avec le jog, il y a juste un certain nombre de précaution soft pour que l'acte soit
toujours réfléchi et exécuter en connaissance de cause. C'est prévu aussi pour des axes avec des
servomoteur de 2 KW qui pousse avec plusieurs tonnes ...
 
G

gaston48

Compagnon
26 Fev 2008
10 553
59000
Si tu as un peu de temps pour moi pour modifier la fin de cette ligne dans hal

loadrt hm2_pci config=" num_encoders=6 num_pwmgens=0 num_stepgens=0 sserial_port_0=000xxx"

à celle là:

loadrt hm2_pci config=" num_encoders=6 num_pwmgens=0 num_stepgens=0 sserial_port_0=300xxx"

et voir avec halmeter, si les fameux input qu'on a réservé on changé de type de variable d'entrée
d'un variable logique false ou true serait passée à "autre-chose" float, integer s32 ?

mais là, plutôt en regardant dans machine / "affiché la configuration de hal" /Pins
 
Dernière édition:
L

Laurent_CNC

Compagnon
26 Avr 2012
706
C'est la moindre des choses, on obtient ça avec 000xxx :
full?d=1484499799.png


et ça avec 300xxx :
full?d=1484499799.png


ca te cause ?
 

Sujets similaires

P
Réponses
2
Affichages
307
Mach
pro-ms
P
Castor24
Réponses
14
Affichages
611
R