Linuxcnc doladěni systému.

Mardako
Příspěvky: 136
Registrován: 14. 5. 2017, 2:04

12. 6. 2021, 11:41

Ahoj
Chtěl bych vás poprosit o radu ohledně dvou věcí
Frézuju a najednou se přeruší komunikace mezi frézkou a programem.
Nikde žádná chyba nevyskočí, program jede vesele dál a mašina stojí.
Už se mi to párkrát stalo někdy tam vyskočila hláška o latenci.
Když Linux restartuju tak jede vše tak jak má. Stává se to když pustím rychlost obrábění až na 200%

Druhá věc se kterou nemůžu pohnout je to nastavení rampy na zpomalení vřetene.
Vím, že le to přes komponentu Limit 2 , ale těch věcí co se tam musí dopsat je asi víc.
Od 2200 otáček víše už při stopce vřeteno padne do poruchy.
Takže při frézování musím na konci pauznout program a ručně snížit otáčky vřetene pod 2200 a nechat program doběhnout.

Kdy jsem měli chvilku přikládám soubory Hal a Ini
Konfigurace :
Mesa 5i23,
7i33TA
7i37TA
Vřeteno- servomotor s enkodérem řízen analogově
Tři osy serva delta Step/dir
Přílohy
Bobr.ini
(4 KiB) Staženo 94 x
Bobr.hal.txt
(10.55 KiB) Staženo 102 x
Uživatelský avatar
zz912
Příspěvky: 1354
Registrován: 25. 5. 2008, 7:16

13. 6. 2021, 5:26

Chtěl bych vás poprosit o radu ohledně dvou věcí
Frézuju a najednou se přeruší komunikace mezi frézkou a programem.
Nikde žádná chyba nevyskočí, program jede vesele dál a mašina stojí.
Už se mi to párkrát stalo někdy tam vyskočila hláška o latenci.
Když Linux restartuju tak jede vše tak jak má. Stává se to když pustím rychlost obrábění až na 200%
Tady s touto částí moc neporadím.
Už se mi to párkrát stalo někdy tam vyskočila hláška o latenci.
Tohle bych začal řešit. Kolik máš latenci při vytíženým PC? Já PC testuji tak, že pustím Latency test k tomu 4x glxgears a zapnu několika hodinový písničky na youtube. Takhle to nechám jet třeba přes celou noc/den.

Kdyz jsem resil rampu vretene, tak jsem vychazel z tohoto:
http://linuxcnc.org/docs/2.8/html/examp ... soft_start

Takhle to pak vypadá u mě:

Kód: Vybrat vše

#*******************
#  SPINDLE
#*******************

setp   pid.s.Pgain     [SPINDLE_0]P
setp   pid.s.Igain     [SPINDLE_0]I
setp   pid.s.Dgain     [SPINDLE_0]D
setp   pid.s.bias      [SPINDLE_0]BIAS
setp   pid.s.FF0       [SPINDLE_0]FF0
setp   pid.s.FF1       [SPINDLE_0]FF1
setp   pid.s.FF2       [SPINDLE_0]FF2
setp   pid.s.deadband  [SPINDLE_0]DEADBAND
setp   pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
setp   pid.s.error-previous-target true

net spindle-index-enable  <=> pid.s.index-enable
net spindle-enable        =>  pid.s.enable
net spindle-vel-cmd-rpm     => pid.s.command
net spindle-vel-fb-rpm      => pid.s.feedback
net spindle-output        <=  pid.s.output

# ---setup spindle control signals---

net spindle-vel-cmd-rps        <=  spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs    <=  spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm        <=  spindle.0.speed-out
net spindle-enable             <=  spindle.0.on
net spindle-cw                 <=  spindle.0.forward
net spindle-ccw                <=  spindle.0.reverse
net spindle-brake              <=  spindle.0.brake
net spindle-revs               =>  spindle.0.revs
net spindle-ready              =>  spindle.0.at-speed
net spindle-vel-fb-rps         =>  spindle.0.speed-in
net spindle-index-enable      <=>  spindle.0.index-enable



# ---PWM Generator signal/setup---

setp hm2_7i96.0.pwmgen.pwm_frequency 100
setp hm2_7i96.0.pwmgen.00.output-type 1
# Set the spindle's top speed in RPS
setp hm2_7i96.0.pwmgen.00.scale 111
setp hm2_7i96.0.pwmgen.00.enable true
setp hm2_7i96.0.pwmgen.00.out0.invert_output true
# net spindle-vel-cmd-rps => hm2_7i96.0.pwmgen.00.value

# ---connect the encoder outputs to LinuxCNC---
# pocet zubu remenice vreteno 56
# pocet zubu remenice motor 48
# pocet pulzu encoder 1000 (4000)
setp hm2_7i96.0.encoder.00.scale -4666.6667
net spindle-revs              <=     hm2_7i96.0.encoder.00.position
net spindle-vel-fb-rps        <=     hm2_7i96.0.encoder.00.velocity  
net spindle-index-enable      <=>    hm2_7i96.0.encoder.00.index-enable

# ---Setup Spindle soft start---
# load real time a limit2 and a near with names so it is easier to follow
loadrt limit2 names=spindle-ramp
loadrt near names=spindle-at-speed

# add the functions to a thread
addf spindle-ramp servo-thread
addf spindle-at-speed servo-thread

# set the parameter for max rate-of-change
# (max spindle accel/decel in units per second)
setp spindle-ramp.maxv 6

# hijack the spindle speed out and send it to spindle ramp in
net spindle-vel-cmd-rps => spindle-ramp.in

# the output of spindle ramp is sent to the scale in
net spindle-ramped <= spindle-ramp.out => hm2_7i96.0.pwmgen.00.value
No a zobrazování hodnot v GUI (ve ksichtu) musí být ve zvláštním souboru postgui_call_list.hal

Kód: Vybrat vše

net spindle-vel-fb-bar-rpm   hm2_7i96.0.encoder.00.velocity-rpm   =>   gmoccapy.spindle_feedback_bar
net spindle-ready    =>   gmoccapy.spindle_at_speed_led
Třeba Ti to pomůže.
Vřeteno- servomotor s enkodérem řízen analogově
Koukám, že ten enkodér v halu pořešenej ještě nemáš? Nebo se koukám blbě?
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mardako
Příspěvky: 136
Registrován: 14. 5. 2017, 2:04

13. 6. 2021, 4:15

Tak jsem zapnul znovu test Latence a výsledek asi nic moc což už jsem věděl . ( 2x YouTube, a film v prohlížeči 2hodiny)

Mex v jiném vlákně psal, že když jedu přes Mesu tak ať to neřeším ,ale jestli je výpadek komunikace fakt kvůli tomu tak je to blbé.
image.jpg
Jestli chci aby rampa fungovala, tak musím mít i ten enkoder funkční a viditelný v linuxu?
Uživatelský avatar
robokop
Site Admin
Příspěvky: 22384
Registrován: 10. 7. 2006, 12:12
Bydliště: Praha
Kontaktovat uživatele:

13. 6. 2021, 4:56

Tohle je tragedie
To ani mesa nesrovna.
Mex to psal obecne nesmis ho brat uplne doslova.

tohle neklapne...
Zkus povypinat kraviny v biosu jako treba powermanagement a jine... a jestli tam mas nejakou grafickou kartu tak nejprve bez ni.
Vsechna prava na chyby vyhrazena (E)
Uživatelský avatar
zz912
Příspěvky: 1354
Registrován: 25. 5. 2008, 7:16

13. 6. 2021, 6:51

Mardako píše: 13. 6. 2021, 4:15 Jestli chci aby rampa fungovala, tak musím mít i ten enkoder funkční a viditelný v linuxu?
Proto aby rampa fungovala, neni encoder nutný. Akorat ten hal bude vypadat jinak.

Jsem z toho akorat zmateny. Pises ze mas vreteno s encoderem ale nemas nikde v halu vystupy z toho encoderu. Pokud mas encoder jen zadratovany, tak je to stejne, jako bys ho vubec nemel. Encoder Ti prinese treba kontrolu skutecnych otacek.

Jsem PC lama, takze nad radou ze mam vypnout vse v Biosu co neni potreba, jsem byl hodne v haji. Nakonec se mi povedlo u posledniho PC snizit latenci z 2 500 000 ns na cca 70 000ns. Zkus treba zapnout jen jedno jadro, pokud mas vicejadrovy procesor atd.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mardako
Příspěvky: 136
Registrován: 14. 5. 2017, 2:04

14. 6. 2021, 10:09

Včera jsem to trochu povypinal, a první výsledek byl 550 000

Potom jsem se dostal na 75 000
Ale po zapnutí programu na 200% to opět přestalo komunikovat. Asi fakt budu muset sehnat jiné železo.

Všechny enkodery mám připojené do driveru ale zatím ne do Linuxu, tím asi začnu .
Naposledy upravil(a) Mardako dne 14. 6. 2021, 5:38, celkem upraveno 1 x.
Uživatelský avatar
zz912
Příspěvky: 1354
Registrován: 25. 5. 2008, 7:16

14. 6. 2021, 10:27

Zkus ještě spustit linuxCNC z příkazové řádky:
linuxcnc /home/ ..... /bobr.ini -v

A podívej se jestli něco nepíše v okamžiku kdy dojde k přerušení komunikace. (nesedím u pc s linuxem, takže nevím, kde to " -v" má přesně být)
LinuxCNC - MESA 7i96
zz912.webnode.cz
Uživatelský avatar
zz912
Příspěvky: 1354
Registrován: 25. 5. 2008, 7:16

15. 6. 2021, 10:45

Mardako píše: 14. 6. 2021, 10:09 Ale po zapnutí programu na 200% to opět přestalo komunikovat.
A to řízení STEP/DIR je zapojeno přímo z 5i23, nebo přes nějakou rozšiřující kartu? Jestli není chyba třeba v rozšiřující kartě? Taky další problém by mohl být v driverech, prostě nepoberou frekvenci, kterou Mesa umí vygenerovat a skočí do chyby. Zkusil bych napojit na výstupy STEP/DIR ledky, abych viděl, co se děje.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mardako
Příspěvky: 136
Registrován: 14. 5. 2017, 2:04

15. 6. 2021, 2:07

Řízení Step/Dir mám přes kartu 7i37 Ta
Vřeteno analog přes druhou kartu 7i33 Ta

Právě když nastane chyba tak se vypne vřeteno i osy.
Tak ,že to asi nebude v driverech ani v těch jednotlivých kartách, ale v komunikaci Linux-hlavní karta 5i23.
Včera jsem ještě povypinal v biosu kde co .
79A91B32-7DA9-4DCD-B736-E9EA6BC8F9E8.jpeg
5301E069-5BB1-43B4-BACD-5BFDE592048A.jpeg
Tady v těch záložkách skoro vše co šlo a už nechtěl ani ten BIOS naběhnout .
Vypnul jsem to tak dobře, že už jsem se do toho Biosu ani nemohl dostat 😳
Tak jsem to nechal asi pět minut a naběhlo to. Tak jsem raděj nějakou záložku zapnul.
I když jsem nevěděl co vlastně dělám, tak výsledek byl
CD264B6C-0703-4A94-8474-BEE5A97D735F.jpeg
Potom jsem pustil program na 200% na sucho bez materiálu a doběhl do konce bez výpadku.
Dokonce jsem k němu pustil i film.
Dvě hodiny a v pohodě.
Ale nic to nemění na to, že ten kompl stojí za prd.

Tak že tuhle část mám asi vyřešenou
Ještě zkusím zapnout jednou linux v té konzoli jak jsi psal. A otestuji to znovu
Naposledy upravil(a) Mardako dne 15. 6. 2021, 3:13, celkem upraveno 1 x.
Uživatelský avatar
zz912
Příspěvky: 1354
Registrován: 25. 5. 2008, 7:16

15. 6. 2021, 2:17

Mardako píše: 15. 6. 2021, 2:07 Právě když nastane chyba tak se vypaří vřeteno i osy.
Co to znamená vypaří se vřeteno i osy?
Ještě zkusím zapnout jednou linux v té konzoli jak jsi psal.
To si měl udělat v době, kdy Ti to blblo. Nejlépe se hledá chyba, která lze jednoduše nasimulovat.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mardako
Příspěvky: 136
Registrován: 14. 5. 2017, 2:04

15. 6. 2021, 3:17

Ne nevypaří ale vypne.
To je to blbé doplňování slov.

Tak můžu to ještě v biosu pozapínat a vyzkoušet znovu, Snad bude večer čas.

Frézovali jsme tělo RC parašutisty
43482CCE-3337-43AD-87BC-0C19D7F5374D.jpeg
Mardako
Příspěvky: 136
Registrován: 14. 5. 2017, 2:04

16. 6. 2021, 3:12

Kdyz jsem resil rampu vretene, tak jsem vychazel z tohoto:
http://linuxcnc.org/docs/2.8/html/examp ... soft_start

Takhle to pak vypadá u mě:

Kód: Vybrat vše

#*******************
#  SPINDLE
#*******************

setp   pid.s.Pgain     [SPINDLE_0]P
setp   pid.s.Igain     [SPINDLE_0]I
setp   pid.s.Dgain     [SPINDLE_0]D
setp   pid.s.bias      [SPINDLE_0]BIAS
setp   pid.s.FF0       [SPINDLE_0]FF0
setp   pid.s.FF1       [SPINDLE_0]FF1
setp   pid.s.FF2       [SPINDLE_0]FF2
setp   pid.s.deadband  [SPINDLE_0]DEADBAND
setp   pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
setp   pid.s.error-previous-target true

net spindle-index-enable  <=> pid.s.index-enable
net spindle-enable        =>  pid.s.enable
net spindle-vel-cmd-rpm     => pid.s.command
net spindle-vel-fb-rpm      => pid.s.feedback
net spindle-output        <=  pid.s.output

# ---setup spindle control signals---

net spindle-vel-cmd-rps        <=  spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs    <=  spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm        <=  spindle.0.speed-out
net spindle-enable             <=  spindle.0.on
net spindle-cw                 <=  spindle.0.forward
net spindle-ccw                <=  spindle.0.reverse
net spindle-brake              <=  spindle.0.brake
net spindle-revs               =>  spindle.0.revs
net spindle-ready              =>  spindle.0.at-speed
net spindle-vel-fb-rps         =>  spindle.0.speed-in
net spindle-index-enable      <=>  spindle.0.index-enable



# ---PWM Generator signal/setup---

setp hm2_7i96.0.pwmgen.pwm_frequency 100
setp hm2_7i96.0.pwmgen.00.output-type 1
# Set the spindle's top speed in RPS
setp hm2_7i96.0.pwmgen.00.scale 111
setp hm2_7i96.0.pwmgen.00.enable true
setp hm2_7i96.0.pwmgen.00.out0.invert_output true
# net spindle-vel-cmd-rps => hm2_7i96.0.pwmgen.00.value

# ---connect the encoder outputs to LinuxCNC---
# pocet zubu remenice vreteno 56
# pocet zubu remenice motor 48
# pocet pulzu encoder 1000 (4000)
setp hm2_7i96.0.encoder.00.scale -4666.6667
net spindle-revs              <=     hm2_7i96.0.encoder.00.position
net spindle-vel-fb-rps        <=     hm2_7i96.0.encoder.00.velocity  
net spindle-index-enable      <=>    hm2_7i96.0.encoder.00.index-enable

# ---Setup Spindle soft start---
# load real time a limit2 and a near with names so it is easier to follow
loadrt limit2 names=spindle-ramp
loadrt near names=spindle-at-speed

# add the functions to a thread
addf spindle-ramp servo-thread
addf spindle-at-speed servo-thread

# set the parameter for max rate-of-change
# (max spindle accel/decel in units per second)
setp spindle-ramp.maxv 6

# hijack the spindle speed out and send it to spindle ramp in
net spindle-vel-cmd-rps => spindle-ramp.in

# the output of spindle ramp is sent to the scale in
net spindle-ramped <= spindle-ramp.out => hm2_7i96.0.pwmgen.00.value
Prosím tě koukám na tvůj Hal
Když to srovnám s tím mím tak zas uplně moc toho jiného není.
Setup Spindel soft start je zkopírovaný z manuálu a doplněný o název karty 7i96.
Spindle máš 0 a já 9, to nevím proč?
Najdu někde v manuálu co všechno musí být napsané aby to fungovalo.
Zatím mi to nedává moc smysl.
Už jsem toho prohlédl hodně a každý to má napsané úplně jinak.

Třebe řádek u mě :
net spindle-vel-cmd-rpm <= motion.spindle-speed-out
u tebe:
net spindle-vel-cmd-rpm <= spindle.0.speed-out
Je to to samé?
Uživatelský avatar
zz912
Příspěvky: 1354
Registrován: 25. 5. 2008, 7:16

16. 6. 2021, 8:58

Mardako píše: 16. 6. 2021, 3:12 Setup Spindel soft start je zkopírovaný z manuálu a doplněný o název karty 7i96.
No tak to jsi se špatně díval. Je tam pár odlišností a právě tyto drobnosti dělají mou konfiguraci pro mě funkční. Rozhodně to není jen CTRL+C a CTRL+V a nahradit vše slovem 7i96.

Celkově tento příklad ovládání vřetena:
https://linuxcnc.org/docs/2.8/html/exam ... indle.html
je napsanej pro paralelní port a já jej modifikoval pro svou Mesu 7i96.

Např. jeden z rozdílů je v generování pulzů. Pro paralelní port musíš použít pwm generátor, který zpracovává LCNC a tím pádem CPU

Kód: Vybrat vše

loadrt pwmgen output_type=0
addf pwmgen.update servo-thread
addf pwmgen.make-pulses base-thread
net spindle-speed-cmd spindle.0.speed-out => pwmgen.0.value
net spindle-on spindle.0.on => pwmgen.0.enable
net spindle-pwm pwmgen.0.pwm => parport.0.pin-09-out
# Set the spindle's top speed in RPM
setp pwmgen.0.scale 1800
Když máš Mesu, tak využiješ její generátor a nevytěžuješ CPU:
PWM_Mesa.JPG
PWM_Mesa-002.JPG
PWM_Mesa-003.JPG

Mardako píše: 16. 6. 2021, 3:12 Spindle máš 0 a já 9, to nevím proč?
No já mám 1 vřeteno, takže to začalo číslovat od 0. Proč ty máš desáté vřeteno, tak to Ti neřeknu.

Ty hranaté závorky

Kód: Vybrat vše

setp   hm2_5i23.0.pwmgen.01.scale  [SPINDLE_9]OUTPUT_SCALE
v souboru *.hal slouží k tomu, aby načetli parametr ze souboru *.ini.
INI.JPG
INI.JPG (24.06 KiB) Zobrazeno 2786 x

Takže LCNC to zpracovává takto:

Kód: Vybrat vše

setp   hm2_5i23.0.pwmgen.01.scale  -6000
Každopádně i kdyby tam bylo [SPINDLE_90_BABICKA], tak je to jedno, akorát v *.hal a v *.ini se musí jmenovat stejně. Zjednodušeně řečeno, Já bych do těch názvů až tak nerýpal, protože LCNC si může brát informace přímo z *.ini, ale tady už jsem na tenkém ledě.

Mardako píše: 16. 6. 2021, 3:12 Najdu někde v manuálu co všechno musí být napsané aby to fungovalo.
Ne nenajdeš, je to daň za neomezenou univerzálnost LCNC. Někdo může mít:
- vřeteno bez ovládání z LCNC
- vřeteno ovládané on/of
- vřeteno ovládané on/of s řízením směru otáček
- vřeteno ovládané po ModBusu
- vřeteno s řízenými otáčky pomocí PWM modulu v Mesa kartě
- vřeteno s řízenými otáčky pomocí PWM modulu, které počítá CPU
- vřeteno s enkodérem, kde enkodér jen hlídá otáčky
- vřeteno s enkodérem, kde enkodér pomocí PID regulátoru reguluje otáčky a polohuje
- ...................
a těch dalších variant bych vytvořil mraky. Proto je minimální šance, že najdeš hal, který by přesně seděl na Tvůj stroj.
Mardako píše: 16. 6. 2021, 3:12 Už jsem toho prohlédl hodně a každý to má napsané úplně jinak.
Proto bych nemrhal časem studiem toho, jak to mají ostatní, ale věnoval bych se oficiálnímu manuálu LCNC. LCNC musíš pochopit, jak funguje, pak s ním můžeš dělat cokoliv. Slepé opisování tady nefunguje.

Mardako píše: 16. 6. 2021, 3:12 Třebe řádek u mě :
net spindle-vel-cmd-rpm <= motion.spindle-speed-out
u tebe:
net spindle-vel-cmd-rpm <= spindle.0.speed-out
Je to to samé?
Tohle je zvláštní, vypadá to jako by jsi měl LCNC 2.7
http://linuxcnc.org/docs/2.8/html/getti ... le_support
The spindle control pin names have been changed to make spindles look more like axes and joints. motion.spindle-speed-out is now spindle.0.speed-out for example.
Pokud máš LCNC 2.8 tak by Ti to nemělo fungovat, ale asi funguje že?
LinuxCNC - MESA 7i96
zz912.webnode.cz
Mardako
Příspěvky: 136
Registrován: 14. 5. 2017, 2:04

27. 6. 2021, 11:09

Moc děkuji za odpověd.
Zatím je to pro mě vše úplná magie

Pokusil jsem se rozchodit ten enkoder na vřetenu.
Podle Halscope jsem i snad správně změřil, že se otáčky zobrazuji správně.
Mám ve zkušební konfiguraci, tak aź to dodělám dám sem Hal na posouzení jestli to tak může zůstat .
Zatím studuji manuál a snažím se pochopit jednotlivé řádky, Těch funkci je tam opravdu hodně.
A ten Linux mám opravdu 2.7
To jsi trefil.
Uživatelský avatar
zz912
Příspěvky: 1354
Registrován: 25. 5. 2008, 7:16

28. 6. 2021, 1:21

Je potřeba uvádět verzi Linuxu, kterou máš.
Konfigurační soubory nelze přenášet ani do vyšší ani do nižší verze LCNC.

Rozdíly jsou právě v tom odkazu, co jsem posílal. Nejdůležitější rozdíl je:
LCNC 2.7 = motion.spindle-speed-out
LCNC 2.8 = spindle.0.speed-out

Jeden skrytej návod, je manuál k hm2, najdeš ho tak, že do příkazové řádky napíšeš:

Kód: Vybrat vše

man hostmot2
Tato neznalost mě v minulosti hodně potrápila.
Mardako píše: 27. 6. 2021, 11:09 Zatím studuji manuál a snažím se pochopit jednotlivé řádky, Těch funkci je tam opravdu hodně.
Tohle za Tebe tady nikdo udělat nemůže. Pokud ale budeš mít nějaký konkrétní problém, tak ho klidně sem hoď.
LinuxCNC - MESA 7i96
zz912.webnode.cz
Odpovědět

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