Synchronizacia vretena

Odpovědět
jonasko
Příspěvky: 18
Registrován: 6. 1. 2020, 6:57

21. 8. 2020, 3:25

Zdravim, mam problem so synchr. vretena. Celkovo to funguje vyborne, zavit je presny, signaly index-enable a spindle-in-speed taktiez funguju, ale toto plati iba pri zavite na jeden krat. Ak chcem zavit spravit na 2 a viac krat tak mam problem so signalom index-enable a to preto, lebo enkoder z vretena mam externe upevneny (nie je to enkoder zo serva) a ten mam sprevodovany 1:4. A tu je problem. Vreteno zacne rezat druhy uber zo zavitu ale kedze mam enkoder sprevodovany 1:4 tak necaka na jednu otacku vretena ale otacku enkodera a druhy uber je uz mimo. Takze pocas jednej otacky vretena mam 4 krat signal index-enable

Vie niekto poradit ako na to?


HAL
loadrt trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES num_dio=22
loadrt hostmot2
loadrt hm2_pci config=" num_encoders=1 num_pwmgens=1 num_stepgens=6 sserial_port_0=0xxxxxxx "
setp hm2_5i25.0.watchdog.timeout_ns 10000000
loadrt abs names=abs.spindle
loadrt lowpass names=lowpass.spindle,lowpass_velocity
loadrt classicladder_rt numPhysInputs=15 numPhysOutputs=15 numS32in=10 numS32out=10 numFloatIn=10 numFloatOut=10
loadrt pid names=pid.x,pid.z,spindle-pid
loadrt encoder names=encspin_0
loadrt limit2 names=limit_speed
setp limit_speed.maxv 5000.0


addf hm2_5i25.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf abs.spindle servo-thread
addf lowpass.spindle servo-thread
addf hm2_5i25.0.write servo-thread
addf spindle-pid.do-pid-calcs servo-thread
addf limit_speed servo-thread


#*******************
# SPINDLE S
#*******************


# Step Gen signals/setup
setp hm2_5i25.0.stepgen.03.dirsetup [SPINDLE_9]DIRSETUP
setp hm2_5i25.0.stepgen.03.dirhold [SPINDLE_9]DIRHOLD
setp hm2_5i25.0.stepgen.03.steplen [SPINDLE_9]STEPLEN
setp hm2_5i25.0.stepgen.03.stepspace [SPINDLE_9]STEPSPACE
setp hm2_5i25.0.stepgen.03.position-scale [SPINDLE_9]STEP_SCALE
setp hm2_5i25.0.stepgen.03.step_type 0
setp hm2_5i25.0.stepgen.03.control-type 1
setp hm2_5i25.0.stepgen.03.maxaccel [SPINDLE_9]MAX_ACCELERATION
setp hm2_5i25.0.stepgen.03.maxvel [SPINDLE_9]MAX_VELOCITY

net machine-is-enabled => hm2_5i25.0.stepgen.03.enable
net spindle-vel-cmd-rps => hm2_5i25.0.stepgen.03.velocity-cmd

# ---setup spindle control signals---

net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
net spindle-speed-cmd motion.spindle-speed-out => limit_speed.in
setp limit_speed.maxv 2300.0

net spindle-on <= motion.spindle-on
net spindle-cw <= motion.spindle-forward
net spindle-ccw <= motion.spindle-reverse
net spindle-brake <= motion.spindle-brake
net spindle-at-speed => motion.spindle-at-speed

net spindle-pos hm2_5i25.0.encoder.00.position => motion.spindle-revs

#riadenie resetovania snímača synchronizácia výstupu ovládačov pohybu
net spindle-index-enable motion.spindle-index-enable <=> hm2_5i25.0.encoder.00.index-enable
#net spindle-index-enable motion.spindle-index-enable <=> encspin_0.index-enable

# ---Encoder feedback signals/setup---

setp hm2_5i25.0.encoder.00.counter-mode 0
setp hm2_5i25.0.encoder.00.filter 1
setp hm2_5i25.0.encoder.00.index-invert 0
setp hm2_5i25.0.encoder.00.index-mask 0
setp hm2_5i25.0.encoder.00.index-mask-invert 0
setp hm2_5i25.0.encoder.00.scale [SPINDLE_9]ENCODER_SCALE

net spindle-phase-a encspin_0.phase-A <= hm2_5i25.0.encoder.00.input-a
net spindle-phase-b encspin_0.phase-B <= hm2_5i25.0.encoder.00.input-b
net spindle-index encspin_0.phase-Z <= hm2_5i25.0.encoder.00.input-index
#net spindle-index encspin_0.phase-Z <= hm2_5i25.0.7i76.0.0.input-20


loadrt scale names=scale_to_rpm
net spindle-rps-raw hm2_5i25.0.encoder.00.velocity lowpass_velocity.in
net spindle-rps-filtered lowpass_velocity.out scale_to_rpm.in motion.spindle-speed-in
net spindle-rpm-filtered scale_to_rpm.out
setp scale_to_rpm.gain 60
setp lowpass_velocity.gain .07
addf lowpass_velocity servo-thread
addf scale_to_rpm servo-thread

loadrt near names=near_speed
addf near_speed servo-thread
setp near_speed.scale 1.05
setp near_speed.difference 1
net spindle-speed-cmd => near_speed.in1
net spindle-rpm-filtered => near_speed.in2
net spindle-at-speed near_speed.out motion.spindle-at-speed
sets spindle-at-speed true

addf encoder.capture-position servo-thread
addf encoder.update-counters servo-thread
RaS
Příspěvky: 8589
Registrován: 26. 3. 2009, 9:12
Bydliště: Úvaly

21. 8. 2020, 3:45

přilož tam někam druhé čidlo (jakákoliv halovka snímající v podstatě třeba deset stupňů natočení vřetene) a přidej tam navíc jeden blok, kterej vyhodnotí že index skutečný je pouze za předpokladu, kdy je současně index ze serva a index z toho doplňkového čidla.. takže nastane jednou za 4 otočení a bude to skutečný index natočení vřetene..
jediné co musíš zajistit aby ty dva indexy byly oba najednou (přesadit kdyžtak o pár zubů řemenici a nebo zvětšit tu plošku halovky aby snímala víc (teoreticky klidně 90st)

ono to jde udělat i bez čidla a to tak, že budeš vyhodnocovat každej 4tej signál jenže to se ti bude náhodně synchronizovat na jednu z poloh po 90st a nebudeš vědět kterou.. na závit je to jedno, ale pokud by jsi mezi tím vypnul mašinu a chtěl to dodělat třeba na 2x tak už by to mohl být problém, první případ lze použít např i na parkování nástroje do zásobníku atd..
věčný rýpal,který musí mít poslední slovo, odpůrce low-cost zařízení končících v naprosté většině případů v hromadě šrotu
uživatelé hýbátek, kteří mají z mých příspěvků celoživotní trauma nechť si mé příspěvky VYPNOU
jonasko
Příspěvky: 18
Registrován: 6. 1. 2020, 6:57

21. 8. 2020, 4:42

Nenapisal som ze pohon vretena je taktiez sprevodovane 1:3,3333
a pridavny enkoder je sprevodovany 1:4.
V tvojom prvom pripade to asi nepojde. :(
O tvojom druhom pripade som taktiez premyslal, ale to v HALe neviem spravit. A naozaj by som prisiel o moznost "opravit zavit"

V horeuvedenom mojom HALe su zakomentovane riadky pomocou ktorych som sa pokusal namontovat indukcak na vreteno. V "HAL OSCILOSKOPE" funguje ok, avsak pri kode G76 v reale samotne pohyby dostavaju zachvaty porazky. V prilohe je vidiet obraz indukcneho snimaca ked som ho prikladal o kov. (mozno ho namontujem korektne na vreteno ,ak mi niekto pomoze s HALom) aby pohyby nekolabovali.
Přílohy
index.png
RaS
Příspěvky: 8589
Registrován: 26. 3. 2009, 9:12
Bydliště: Úvaly

21. 8. 2020, 4:53

pochopil bych, že používáš enkodér ze servomotoru a to pak převodem ženeš na vřeteno..
ale proč máš teda enkodér nějakej externí 1:4 na motor a to pak 1:1,33 na vřeteno?
není teda jednodušší ten enkodér dát přímo na vřeteno s nějakým rozumným převodem? např 1:1 1:2 1:3 1:4 ... a zapojit to tak jak říkám? s touhle tvojí kombinací to je takové krkolomné...
věčný rýpal,který musí mít poslední slovo, odpůrce low-cost zařízení končících v naprosté většině případů v hromadě šrotu
uživatelé hýbátek, kteří mají z mých příspěvků celoživotní trauma nechť si mé příspěvky VYPNOU
jonasko
Příspěvky: 18
Registrován: 6. 1. 2020, 6:57

21. 8. 2020, 5:03

Enkoder na servopohone vretena je resolver s divokym vystupom nekomatibilnym s mesa kartou. Robil som to pred 10 rokmi. Preto som namontoval dalsi korektny enkoder na vreteno. Prerabat mechaniku sa mi moc nechce. To je na niekolko dni. Idealne by bolo dostat ten indukcak do halu a nejako to tam pospajat.

Mozno tu uz niekto riesil index s pomocnym cidlom a vreteno mal sprevodovane.
Uživatelský avatar
zz912
Příspěvky: 1357
Registrován: 25. 5. 2008, 7:16

21. 8. 2020, 9:04

Také nerozumím tomu proč by to nešlo udělat, tak jak píše RaS?

Předpokládám, že se jedná o encoder A,B,Z Na motor dal senzoriku, která by indikovala jen jednu polohu z 4 možných a z této senzoriky bych vyvedl napětí na Z.

V Linuxu bych pak nastavil, že se jedná o encoder 1:1 s 4násobným počtem pulzů.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Uživatelský avatar
zz912
Příspěvky: 1357
Registrován: 25. 5. 2008, 7:16

21. 8. 2020, 9:07

jonasko píše: 21. 8. 2020, 5:03 Robil som to pred 10 rokmi. .
V profilu máš uvedeno,že je Ti 20 let. To si rozchodil MESU v deseti letech?
LinuxCNC - MESA 7i96
zz912.webnode.cz
RaS
Příspěvky: 8589
Registrován: 26. 3. 2009, 9:12
Bydliště: Úvaly

21. 8. 2020, 9:32

ono i když máš 1:4 + 1:3 další převod tak to jde dělat pořád stejně, jen musíš zajistit že ta jedna poloha bude pořád stejná a to u téhle kombinace nastane jednou za 12otáček (u převodu 1:4 to je jen jednou za 4otáčky) pokud si uděláš ještě nějakej debilnější převod tak to vyjde zase jinak..
věčný rýpal,který musí mít poslední slovo, odpůrce low-cost zařízení končících v naprosté většině případů v hromadě šrotu
uživatelé hýbátek, kteří mají z mých příspěvků celoživotní trauma nechť si mé příspěvky VYPNOU
Uživatelský avatar
zz912
Příspěvky: 1357
Registrován: 25. 5. 2008, 7:16

21. 8. 2020, 10:11

Zapomněl jsem v úvahách, ještě na ten převod 1/3.
LinuxCNC - MESA 7i96
zz912.webnode.cz
jonasko
Příspěvky: 18
Registrován: 6. 1. 2020, 6:57

22. 8. 2020, 5:50

Ako zapisat do halu ze index mam z indukcaku a nie z encoderu ? Nic viac nepotrebujem.
Ten prevody su 1:3,333333 a 1:4

Ty roky v profile su roky do dochodku. :lol:
Uživatelský avatar
jova
Příspěvky: 2510
Registrován: 2. 11. 2007, 1:40
Bydliště: Chýnov to je kousek od Tábora
Kontaktovat uživatele:

22. 8. 2020, 5:59

Možná hloupost, ale co tam na ten výstup enkoderu vložit fyzickou děličku 4:1 z nějakého TTL obvodu, nebo jinou podle velikosti log. signálu? Pak by jsi měl při jedné otočce vždy jeden impulz.
RaS
Příspěvky: 8589
Registrován: 26. 3. 2009, 9:12
Bydliště: Úvaly

22. 8. 2020, 8:25

jonasko píše: 22. 8. 2020, 5:50 Ako zapisat do halu ze index mam z indukcaku a nie z encoderu ? Nic viac nepotrebujem.
Ten prevody su 1:3,333333 a 1:4

Ty roky v profile su roky do dochodku. :lol:
každej signál se nějak jmenuje a někde bere, tak místo toho abys spojil signál z tvého enkodéru jako INDEX tak ho propojíš přes blok, kterej udělá to co popisuji..
dvoustavový AND nazveš ho třeba INDEX AND na jehož vstupy dáš tvůj index a ten druhej vřetenový index a na výstupu budeš mít skutečný INDEX který nastane pouze pokud ty dva budou v log 1..
věčný rýpal,který musí mít poslední slovo, odpůrce low-cost zařízení končících v naprosté většině případů v hromadě šrotu
uživatelé hýbátek, kteří mají z mých příspěvků celoživotní trauma nechť si mé příspěvky VYPNOU
jonasko
Příspěvky: 18
Registrován: 6. 1. 2020, 6:57

24. 8. 2020, 3:55

Tak som skusil podla teba tu podmienku ale znova som sa dostal do mrtveho bodu, ze neviem kam vystup z podmienky nalinkovat. ten isty problem ked som nevedel nalinkovat indukcak do halu namiesto zetkovej fazy enkodera.

loadrt and2 names=ras_index
addf ras_index servo-thread

net spindle-phase-a encoder.0.phase-A <= hm2_5i25.0.encoder.00.input-a
net spindle-phase-b encoder.0.phase-B <= hm2_5i25.0.encoder.00.input-b
net spindle-index encoder.0.phase-Z <= hm2_5i25.0.encoder.00.input-index

net spindle-index-enable motion.spindle-index-enable <=> all-index-are-out

net spin-limit-sw-is-out ras_index.in0 <= hm2_5i25.0.7i76.0.0.input-20
net ind-limit-sw-is-out ras_index.in1 <= hm2_5i25.0.encoder.00.input-index
net all-index-are-out <= ras_index.out

Tak som sa ***** a prerobil som prevod enkodera 1:1. To uz su ine zavity.

Ak by niekto v buducnosti vedel, ako nalozit s prevodovanym enkoderom tak sem s tym. :)
Odpovědět

Zpět na „LinuxCNC - drive pod nazvem EMC2“