configurazione spindle-speed

Sezione dedicata a Linuxcnc
Rispondi
billielliot
Senior
Senior
Messaggi: 1747
Iscritto il: martedì 16 ottobre 2007, 23:23
Località: Trezzo sull'Adda

Re: configurazione spindle-speed

Messaggio da billielliot » martedì 12 marzo 2013, 13:19

Ciao bobwolf,

hai ragione ma fintanto che ganzissimo e' in vena penso convenga dargli qualche piccolo aiuto che lo invogli a proseguire :-)

Aspettiamo i file INI e HAL e vediamo.

Ciao :-)

Mauro

P.S. per la variabile d'appoggio: io faccio sempre come hai scritto tu e funziona.
Amat victoria curam

Avatar utente
ganzissimo
Member
Member
Messaggi: 256
Iscritto il: giovedì 13 novembre 2008, 22:21
Località: marina di pietrasanta

Re: configurazione spindle-speed

Messaggio da ganzissimo » martedì 12 marzo 2013, 14:51

grazie a tutti e due!!!
scherzo, apprezzo anch'io questa filosofia, mi piace imparare e poi con le potenzialità  che ha questo sitema e la mia fantasia potrò sicuramente trarne giovamento.
se va tutto come deve tra pochissimo posto i file così ci date un'occhiata.
l'aiutino mi serve eccome perchè non è che non ho voglia di cercare, tradurre e leggere, però il fatto è che parto praticamente da 0 per l'inglese (ho fatto francese a scuola...a che servirà  poi!!), quello che so l'ho imparato leggendo su internet, e parto da -2 per linux e per linguaggio programmazione (qualsiasi, eccetto un pochino di dos).
quindi strada in salita...ma ho le scarpe adatte e la picozza affilata!!!

per quanto riguarda il numero sul segnale encoder se gli do 0 mi dice che non esiste (boh!?!) mentre con N non mi da errore...
comunque tra poco vado a provare ad applicare i suggerimenti che mi avete dato....posto i files e poi ci aggiorniamo.
...il problema che ho da fare delle fresature in mezzo e quindi sto cercando di conciliare le fresature con le prove...

a più tardi
ciao

Fabrizio
Tutto è possibile, basta volerlo!
"siamo noi gli inabili che pure avendo avvolte non diamo" (R.Zero)

Avatar utente
ganzissimo
Member
Member
Messaggi: 256
Iscritto il: giovedì 13 novembre 2008, 22:21
Località: marina di pietrasanta

Re: configurazione spindle-speed

Messaggio da ganzissimo » martedì 12 marzo 2013, 19:54

rieccomi...non è andata come doveve andare...quindi neanche ho potuto provarci...
comunque allego i files in formato compresso rar
confido in voi ...
ciao
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login
Tutto è possibile, basta volerlo!
"siamo noi gli inabili che pure avendo avvolte non diamo" (R.Zero)

Avatar utente
ganzissimo
Member
Member
Messaggi: 256
Iscritto il: giovedì 13 novembre 2008, 22:21
Località: marina di pietrasanta

Re: configurazione spindle-speed

Messaggio da ganzissimo » martedì 12 marzo 2013, 19:59

...allego anche il testo di tali files....magari così anche altri vedono gli sbagli e le correzioni...




file hal principale



# Generato da stepconf a Mon Feb 25 19:18:46 2013
# Se questo file viene modificato, questo saràƒÂ 
# sovrascritto quando si useràƒÂ  ancora stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
loadrt encoder


addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
net spindle-cmd <= motion.spindle-speed-out
net spindle-on <= motion.spindle-on
setp encoder.0.counter-mode 1




net xdir => parport.0.pin-01-out
net spindle-on => parport.0.pin-02-out
setp parport.0.pin-03-out-invert 1
net zstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
net xenable => parport.0.pin-04-out
net xenable => parport.0.pin-05-out
net zdir => parport.0.pin-06-out
net ydir => parport.0.pin-07-out
net adir => parport.0.pin-08-out
setp parport.0.pin-09-out-invert 1
net astep => parport.0.pin-09-out
setp parport.0.pin-09-out-reset 1
setp parport.0.pin-14-out-invert 1
net ystep => parport.0.pin-14-out
setp parport.0.pin-14-out-reset 1
setp parport.0.pin-16-out-invert 1
net xstep => parport.0.pin-16-out
setp parport.0.pin-16-out-reset 1
net xenable => parport.0.pin-17-out


net both-home-z <= parport.0.pin-10-in-not
net both-home-x <= parport.0.pin-11-in-not
net both-home-y <= parport.0.pin-12-in-not
net estop-ext <= parport.0.pin-13-in-not
net encoder.N.phase-A => parport.0.pin-15-in
net pyvcp.rpm => encoder.0.velocity

setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 40000
setp stepgen.0.dirsetup 40000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable
net both-home-x => axis.0.home-sw-in
net both-home-x => axis.0.neg-lim-sw-in
net both-home-x => axis.0.pos-lim-sw-in

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 40000
setp stepgen.1.dirsetup 40000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
net both-home-y => axis.1.home-sw-in
net both-home-y => axis.1.neg-lim-sw-in
net both-home-y => axis.1.pos-lim-sw-in

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 40000
setp stepgen.2.dirsetup 40000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net both-home-z => axis.2.home-sw-in
net both-home-z => axis.2.neg-lim-sw-in
net both-home-z => axis.2.pos-lim-sw-in

net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in



loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared


file ini


# Generato da stepconf a Mon Feb 25 19:18:46 2013
# Se questo file viene modificato, questo saràƒÂ 
# sovrascritto quando si useràƒÂ  ancora stepconf

[EMC]
MACHINE = grisu-cnc
DEBUG = 0

[DISPLAY]
DISPLAY = axis
PYVCP = rpm.xml
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
PROGRAM_PREFIX = /home/fabrizio/scrivania/prova x linuxcnc
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = linuxcnc.var

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 35000
SERVO_PERIOD = 1000000

[HAL]
HALFILE = grisu-cnc.hal
POSTGUI_HALFILE = rpm.hal


[TRAJ]
AXES = 3
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 30.00
MAX_LINEAR_VELOCITY = 34.00

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl

[AXIS_0]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 34.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXACCEL = 325
SCALE = 800
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -2.000
MAX_LIMIT = 325.0
HOME_OFFSET = -2.000000
HOME_SEARCH_VEL = -10.0000
HOME_LATCH_VEL = 0.62500
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1

[AXIS_1]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 34.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXACCEL = 325
SCALE = 800
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -2.000
MAX_LIMIT = 415
HOME_OFFSET = -2.000000
HOME_SEARCH_VEL = -10.000
HOME_LATCH_VEL = 0.625
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2

[AXIS_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 30.00
MAX_ACCELERATION = 300.0
STEPGEN_MAXACCEL = 325
SCALE = 800
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -84.0
MAX_LIMIT = 0.0001
HOME_OFFSET = 2.000000
HOME_SEARCH_VEL = 6.000
HOME_LATCH_VEL = -0.625
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0






file hal per l'encoder



net meter pyvcp.rpm





file xml per la bar





<pyvcp>
<bar>
<halpin>"rpm"</halpin>
<min_>0</min_>
<max_>123</max_>
<bgcolor>"grey"</bgcolor>
<fillcolor>"red"</fillcolor>
</bar>
</pyvcp>
Tutto è possibile, basta volerlo!
"siamo noi gli inabili che pure avendo avvolte non diamo" (R.Zero)

bobwolf
Member
Member
Messaggi: 319
Iscritto il: mercoledì 15 novembre 2006, 0:35
Località: Pistoia

Re: configurazione spindle-speed

Messaggio da bobwolf » martedì 12 marzo 2013, 22:15

ciao
la differenza principale fra Mach3 e EMC2 è che il primo è come un quadro, bello e pronto... il secondo è come prendere un puzzle di cielo azzurro da 10000 pezzi #-o

loadrt encoder num_chan=1
addf encoder.update-counters servo-thread
addf encoder.capture-position base-thread
setp encoder.0.counter-mode 1
loadrt scale count=1
addf scale.0 servo-thread (questo l'ho messo perchè mi sono accorto che encoder butta fuori un valore in giri/secondo)
setp scale.0.gain 60
setp scale.0.offset 0
net appoggio_encoder <= parport.0.pin-15-in (oppure se da problemi: parport.0.pin-15-in-not)
net appoggio_encoder => encoder.0.phase-A
net rps <=encoder.0.velocity
net rps => scale.0.in
net meter <= scale.0.out
net meter => pyvcp.rpm

questi dovrebbero essere i pezzi che ti mancano... li devi solo inserire nei posti giusti e togliere i doppioni che hai nei tuoi file
dai anche un occhio ai valori della bar che mi sembrano bassini
ciao

Roberto

"è più immorale il sesso o la guerra?"

Avatar utente
ganzissimo
Member
Member
Messaggi: 256
Iscritto il: giovedì 13 novembre 2008, 22:21
Località: marina di pietrasanta

Re: configurazione spindle-speed

Messaggio da ganzissimo » martedì 12 marzo 2013, 22:20

.... :oops: ....praticamente non mi mancava nulla!!!
..si i valori della bar non li ho ancora modificati perchè tanto non andava...avevo già  fatto anche l'indicatore a lancetta tutto configurato ma non si muoveva...quindi aspetto che funzioni prima di aggiustarlo...

grazie infinite...ora provo subito se riesco a farlo partire...si prospetta una notte insonne!!

ciaooo
Tutto è possibile, basta volerlo!
"siamo noi gli inabili che pure avendo avvolte non diamo" (R.Zero)

Avatar utente
ganzissimo
Member
Member
Messaggi: 256
Iscritto il: giovedì 13 novembre 2008, 22:21
Località: marina di pietrasanta

Re: configurazione spindle-speed

Messaggio da ganzissimo » martedì 12 marzo 2013, 22:26

leggendo quello che mi hai scritto vedo:

-gli attributi del loadrt encoder non me li prendeva perchè li mettevo tra le parentesi []
- loadrt scale count=1 perchè io ho un solo impulso giusto? se faccio due tacche diventa due...
-l'aggiustamento dai secondi hai minuti l'ho capito...
-il pin 15 dovrebbe andare bene in (con halscope funziona meglio che in not)
-poi mi mancavano tutti i doppi passaggi per l'appoggio del segnale che dicevi sopra

ora provo...con l'esempio scritto ho più possibilità  di farcela e di imparare.
grazie ancora
Fabrizio
Tutto è possibile, basta volerlo!
"siamo noi gli inabili che pure avendo avvolte non diamo" (R.Zero)

Avatar utente
ganzissimo
Member
Member
Messaggi: 256
Iscritto il: giovedì 13 novembre 2008, 22:21
Località: marina di pietrasanta

Re: configurazione spindle-speed

Messaggio da ganzissimo » martedì 12 marzo 2013, 23:13

...allora...ho modificato il file hal come segue:

file hal principale



# Generato da stepconf a Mon Feb 25 19:18:46 2013
# Se questo file viene modificato, questo saràƒ
# sovrascritto quando si useràƒ ancora stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0


loadrt encoder num_chan=1
addf encoder.update-counters servo-thread
addf encoder.capture-position base-thread
setp encoder.0.counter-mode 1
loadrt scale count=1
addf scale.0 servo-thread
setp scale.0.gain 60
setp scale.0.offset 0


addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
net spindle-cmd <= motion.spindle-speed-out
net spindle-on <= motion.spindle-on
setp encoder.0.counter-mode 1




net xdir => parport.0.pin-01-out
net spindle-on => parport.0.pin-02-out
setp parport.0.pin-03-out-invert 1
net zstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
net xenable => parport.0.pin-04-out
net xenable => parport.0.pin-05-out
net zdir => parport.0.pin-06-out
net ydir => parport.0.pin-07-out
net adir => parport.0.pin-08-out
setp parport.0.pin-09-out-invert 1
net astep => parport.0.pin-09-out
setp parport.0.pin-09-out-reset 1
setp parport.0.pin-14-out-invert 1
net ystep => parport.0.pin-14-out
setp parport.0.pin-14-out-reset 1
setp parport.0.pin-16-out-invert 1
net xstep => parport.0.pin-16-out
setp parport.0.pin-16-out-reset 1
net xenable => parport.0.pin-17-out


net both-home-z <= parport.0.pin-10-in-not
net both-home-x <= parport.0.pin-11-in-not
net both-home-y <= parport.0.pin-12-in-not
net estop-ext <= parport.0.pin-13-in-not


net appoggio_encoder <= parport.0.pin-15-in
net appoggio_encoder => encoder.0.phase-A
net rps <=encoder.0.velocity
net rps => scale.0.in


setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 40000
setp stepgen.0.dirsetup 40000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable
net both-home-x => axis.0.home-sw-in
net both-home-x => axis.0.neg-lim-sw-in
net both-home-x => axis.0.pos-lim-sw-in

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 40000
setp stepgen.1.dirsetup 40000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
net both-home-y => axis.1.home-sw-in
net both-home-y => axis.1.neg-lim-sw-in
net both-home-y => axis.1.pos-lim-sw-in

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 40000
setp stepgen.2.dirsetup 40000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net both-home-z => axis.2.home-sw-in
net both-home-z => axis.2.neg-lim-sw-in
net both-home-z => axis.2.pos-lim-sw-in

net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in



loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared






mentre nel flie hal secondario ho scritto questo:


net meter <= scale.0.out
net meter => pyvcp.rpm



però lanciando linuxcnc mi da questo errore:

debug file information:
can not find -sec MOT -var MOT -num 1
can not find -sec IO -var IO -num 1
can not find -sec LINUXCNC -var NML_FILE -num 1
can not find -sec EMC -var NML_FILE -num 1
HAL: ERROR: bad position: 0
grisu-cnc.hal:13: addf failed
4549
PID TTY STAT TIME COMMAND
stopping realtime threads
unloading hal components

che succede?
Tutto è possibile, basta volerlo!
"siamo noi gli inabili che pure avendo avvolte non diamo" (R.Zero)

bobwolf
Member
Member
Messaggi: 319
Iscritto il: mercoledì 15 novembre 2006, 0:35
Località: Pistoia

Re: configurazione spindle-speed

Messaggio da bobwolf » martedì 12 marzo 2013, 23:40

ciao
loadrt scale count=1 serve per attivare la funzione scale
http://www.linuxcnc.org/docs/html/man/man9/scale.9.html
se te ne serve 2 perchè hai altri valori da scalare dovresti mettere a 2 quel valore e la seconda funzione sarebbe coordinata temporalmente da
addf scale.1 servo-thread
e tutto il resto con il riferimento 1
setp scale.1.gain 60
setp scale.1.offset 0
etc etc

tutte le volte che trovi una funzione che ha scritto una N tipo
encoder.N.phase-A
ti devi ricordare che al posto della N ci devi mettere il numero che caratterizza la funzione
encoder.0.phase-A
encoder.1.phase-B
non fanno parte della solita funzione, ma di due funzioni encoder ben distinte per esempio la 0 che riguarda l'asse X e la 1 la Y

per il discorso 2 o più tacche sul mandrino devi giocare con il valore del gain della funzione scale:
2 tacche gain 30
3 tacche gain 20

se guardi la funzione vedrai che l'uscita è proporzionale all'ingresso moltiplicato per il gain più l'offset
out = (in * gain) + offset
e nel tuo caso devi avere come risultato un numero che rappresenta un qualcosa/minuto da un qualcosa/secondo
essendo 60 il numero del rapporto fra di loro devi mettere un valore in scale, che moltiplicato per il numero dei tuoi impulsi/giro faccia appunto 60
se tu avessi un disco con 60 impulsi/giro la funzione scale non ti servirebbe a nulla


mentre scrivevo mi è arrivato anche il messaggio con l'errore... la riga da guardare di solito è:
grisu-cnc.hal:13: addf failed
che ti dice che alla riga 13 di grisu-cnc.hal c'è stato un fallimento dell'assegnazione addf
a questo punto potrebbe essere che ho invertito servo-thread con base-thread quindi le righe diventano
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
ciao

Roberto

"è più immorale il sesso o la guerra?"

Avatar utente
ganzissimo
Member
Member
Messaggi: 256
Iscritto il: giovedì 13 novembre 2008, 22:21
Località: marina di pietrasanta

Re: configurazione spindle-speed

Messaggio da ganzissimo » mercoledì 13 marzo 2013, 0:03

GRANDEEEE!!!!

erano invertiti....ora funziona!!!
EVVAI ....si va a letto stanotte!!!
sei stato gentilissimo!
mi hai dato delle basi solidissime su cui lavorare: ora posso andare avanti.

credo di aver capito tutto (o quasi) quello che mi hai scritto...però domani a mente fresca ci ridò una lettura più approfondita.

grazie ancora, domani poi posto anche i file di configurazione messi a punto.

ciao (ti devo un favore)
grazie anche a billelliot e a tutto il forum!
=D> :mrgreen:
Fabrizio
Tutto è possibile, basta volerlo!
"siamo noi gli inabili che pure avendo avvolte non diamo" (R.Zero)

billielliot
Senior
Senior
Messaggi: 1747
Iscritto il: martedì 16 ottobre 2007, 23:23
Località: Trezzo sull'Adda

Re: configurazione spindle-speed

Messaggio da billielliot » mercoledì 13 marzo 2013, 10:08

Solo una curiosita':

perche' hai impostato: loadrt hal_parport cfg="0x378 out " ?

Ciao :-)

Mauro
Amat victoria curam

Avatar utente
ganzissimo
Member
Member
Messaggi: 256
Iscritto il: giovedì 13 novembre 2008, 22:21
Località: marina di pietrasanta

Re: configurazione spindle-speed

Messaggio da ganzissimo » mercoledì 13 marzo 2013, 22:12

ciao, dopo lungo pomeriggio di fresature vi aggiorno:
il rilevamento della velocità  funziona egregiamente ed è molto stabile anche con una sola tacca, quindi lo lascerò così.

per l'impostazione dell'indirizzo della porta parallela non saprei che dirti, la prima configurazione l'ho fatta con la procedura guidata di linuxcnc però so che l'indirizzo è quello perchè con mach3 ho smanettato un pò e per via dell'errore sull'asse z che mi dava avevo provato ad impostare la porta a 278 da bios. ora però l'ho rimessa su 378 e quella riga nel file hal l'ha messa da solo quando ho installato.

ho riletto i post precedenti e credo di aver capito più o meno il funzionamento dei vari comandi. avevo seguito anche la guida hal di xemet con i due esempi pratici quindi diciamo che sto cominciano a muovere i primi passi, in fondo è poco più di una settimana che sono entrato nel mondo linux....

di seguito allego i files della configurazione che uso corretti con le funzioni per il rilevamento della velocità  del mandrino (che io faccio tramite sensore ottico recuperato finecorsa stampanti accoppiato ad un disco plastico nero con una sola apertura calettato sullalbero del mandrino) così magari qualcun'altro potrà  approfittare dei suggerimenti che sono stati dati a me.

ciao e grazie di nuovo, alla prossima richiesta di aiuto.... :mrgreen: :mrgreen:

file hal principale:



# Generato da stepconf a Mon Feb 25 19:18:46 2013
# Se questo file viene modificato, questo saràƒÂ 
# sovrascritto quando si useràƒÂ  ancora stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out "
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
loadrt encoder num_chan=1



addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread


net spindle-cmd <= motion.spindle-speed-out
net spindle-on <= motion.spindle-on

setp encoder.0.counter-mode 1
loadrt scale count=1
addf scale.0 servo-thread
setp scale.0.gain 60
setp scale.0.offset 0




net xdir => parport.0.pin-01-out
net spindle-on => parport.0.pin-02-out
setp parport.0.pin-03-out-invert 1
net zstep => parport.0.pin-03-out
setp parport.0.pin-03-out-reset 1
net xenable => parport.0.pin-04-out
net xenable => parport.0.pin-05-out
net zdir => parport.0.pin-06-out
net ydir => parport.0.pin-07-out
net adir => parport.0.pin-08-out
setp parport.0.pin-09-out-invert 1
net astep => parport.0.pin-09-out
setp parport.0.pin-09-out-reset 1
setp parport.0.pin-14-out-invert 1
net ystep => parport.0.pin-14-out
setp parport.0.pin-14-out-reset 1
setp parport.0.pin-16-out-invert 1
net xstep => parport.0.pin-16-out
setp parport.0.pin-16-out-reset 1
net xenable => parport.0.pin-17-out


net both-home-z <= parport.0.pin-10-in-not
net both-home-x <= parport.0.pin-11-in-not
net both-home-y <= parport.0.pin-12-in-not
net estop-ext <= parport.0.pin-13-in-not

net appoggio_encoder <= parport.0.pin-15-in
net appoggio_encoder => encoder.0.phase-A
net rps <= encoder.0.velocity
net rps => scale.0.in



setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 40000
setp stepgen.0.dirsetup 40000
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable axis.0.amp-enable-out => stepgen.0.enable
net both-home-x => axis.0.home-sw-in
net both-home-x => axis.0.neg-lim-sw-in
net both-home-x => axis.0.pos-lim-sw-in

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 40000
setp stepgen.1.dirsetup 40000
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net ystep <= stepgen.1.step
net ydir <= stepgen.1.dir
net yenable axis.1.amp-enable-out => stepgen.1.enable
net both-home-y => axis.1.home-sw-in
net both-home-y => axis.1.neg-lim-sw-in
net both-home-y => axis.1.pos-lim-sw-in

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 40000
setp stepgen.2.dirsetup 40000
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zstep <= stepgen.2.step
net zdir <= stepgen.2.dir
net zenable axis.2.amp-enable-out => stepgen.2.enable
net both-home-z => axis.2.home-sw-in
net both-home-z => axis.2.neg-lim-sw-in
net both-home-z => axis.2.pos-lim-sw-in

net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in



loadusr -W hal_manualtoolchange
net tool-change iocontrol.0.tool-change => hal_manualtoolchange.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared





file hal per la bar della velocitò mandrino:



net meter <= scale.0.out
net meter => pyvcp.rpm




file ini:



# Generato da stepconf a Mon Feb 25 19:18:46 2013
# Se questo file viene modificato, questo saràƒÂ 
# sovrascritto quando si useràƒÂ  ancora stepconf

[EMC]
MACHINE = grisu-cnc
DEBUG = 0

[DISPLAY]
DISPLAY = axis
PYVCP = rpm.xml
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 1.2
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
PROGRAM_PREFIX = /home/fabrizio/scrivania/prova x linuxcnc
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = linuxcnc.var

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 35000
SERVO_PERIOD = 1000000

[HAL]
HALFILE = grisu-cnc.hal
POSTGUI_HALFILE = rpm.hal


[TRAJ]
AXES = 3
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 30.00
MAX_LINEAR_VELOCITY = 34.00

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl

[AXIS_0]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 34.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXACCEL = 325
SCALE = 800
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -2.000
MAX_LIMIT = 325.0
HOME_OFFSET = -2.000000
HOME_SEARCH_VEL = -10.0000
HOME_LATCH_VEL = 0.62500
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1

[AXIS_1]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 34.0
MAX_ACCELERATION = 300.0
STEPGEN_MAXACCEL = 325
SCALE = 800
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -2.000
MAX_LIMIT = 415
HOME_OFFSET = -2.000000
HOME_SEARCH_VEL = -10.000
HOME_LATCH_VEL = 0.625
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2

[AXIS_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 30.00
MAX_ACCELERATION = 300.0
STEPGEN_MAXACCEL = 325
SCALE = 800
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -84.0
MAX_LIMIT = 0.0001
HOME_OFFSET = 2.000000
HOME_SEARCH_VEL = 6.000
HOME_LATCH_VEL = -0.625
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0






file xml per la generazione della bar della velocità  mandrino:



<pyvcp>
<bar>
<halpin>"rpm"</halpin>
<min_>0</min_>
<max_>30000</max_>
<bgcolor>"grey"</bgcolor>
<fillcolor>"green"</fillcolor>
</bar>
</pyvcp>
Tutto è possibile, basta volerlo!
"siamo noi gli inabili che pure avendo avvolte non diamo" (R.Zero)

Rispondi

Torna a “Linuxcnc”