Diagnostyka w Linux CNC

Dyskusje dotyczące działania obsługi programu LinuxCNC
Awatar użytkownika

Autor tematu
Segitarius
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 390
Rejestracja: 15 lut 2011, 19:07
Lokalizacja: Zielona Góra

Diagnostyka w Linux CNC

#1

Post napisał: Segitarius » 10 sie 2023, 08:02

Cześć.

Padł mi komputer sterujący maszyną. Nie miałem backupu .ini oraz .hal.
Teraz stawiam na nowym kompie sterowanie. Zawisłem na etapie konfigurowania wrzeciona. Nie mogę go włączyć. Moj sterownik (Zelrp) wyposażony jest w pompę ładunkową. Nie pamiętam jak to ustawić lub coś się skopało fizycznie w sterowniku że nie mogę włączyć wrzeciona. Stąd pytania:

1) czy mogę sztucznie wysterować w trybie diagnostycznym stan wysoki na przekaźniku załączenia wrzeciona? Wykluczę spalenie przekaźnika i potwierdzę prawidłowe przyporządkowanie pinów.

2) czy moglibyście spojrzeć na listę moich pinów czy to ma sens? U mnie zgodnie z instrukcją załączanie wrzeciona jest na pinie 1 a pompa ładunkowa na pinie 17. Ale:

Mogę ustawić opcje takie jak:
a) włączenie wrzeciona
b) wrzeciono CW
c) włączenie zasilania

Na pinie 17 włącza się chyba włączanie wzmacniaczy. Kompletnie nie pamiętam jak to było. Pomożecie?

Serdeczne dzięki.

Obrazek

Obrazek



Awatar użytkownika

pitsa
Moderator
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 4463
Rejestracja: 13 wrz 2008, 22:40
Lokalizacja: PL,OP

Re: Diagnostyka w Linux CNC

#2

Post napisał: pitsa » 10 sie 2023, 12:39

Swoje stare posty przejrzałeś? Może w nich masz podpowiedź co i jak ustawiłeś.
zachowanie spokoju oznacza zdolności do działania
ᐃ 🜂 ⃤ ꕔ △ 𐊅 ∆ ▵ ߡ

Awatar użytkownika

Autor tematu
Segitarius
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 390
Rejestracja: 15 lut 2011, 19:07
Lokalizacja: Zielona Góra

Re: Diagnostyka w Linux CNC

#3

Post napisał: Segitarius » 10 sie 2023, 12:52

Od tego zacząłem, ale dziękuję że sprawdziłeś. Tu już ta zworka której ściągnięcie ostatnio pomogło była ściągniętą. Startuję teraz z etapu gdy wszystko jest już fizycznie podłączone, działało, tylko komp się zjarał.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 9323
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Diagnostyka w Linux CNC

#4

Post napisał: tuxcnc » 10 sie 2023, 18:01

Segitarius pisze:
10 sie 2023, 08:02
Nie pamiętam jak to ustawić
I nic dziwnego że nie pamiętasz, bo takich rzeczy z natury się nie pamięta i dlatego obowiązkowo robi się backup.
Ja mam konfigurację z maszyny która kilka lat stała nieużywana, a teraz to nawet jest porozkręcana, no to mam czym się z Tobą podzielić...
Więcej się znęcać nie będę, bo chyba zrozumiałeś swój błąd i go zapamiętasz...

Kod: Zaznacz cały

#charge pump (pin 17)

loadrt charge_pump
addf charge-pump base-thread
net emcOn motion.motion-enabled => charge-pump.enable
net cpump charge-pump.out-2 => parport.0.pin-17-out

#axes (pins 2-9)

net xstep => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net ystep => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
net zstep => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
net xdir => parport.0.pin-03-out
net ydir => parport.0.pin-05-out
net zdir => parport.0.pin-07-out

#relays (pins 1,14)

net spindle-on spindle.0.on => parport.0.pin-01-out
net flood-on halui.flood.is-on => parport.0.pin-14-out

#inputs (10-ESTOP,11,12,13,15)

net min-home-x <= parport.0.pin-11-in-not
net min-home-y <= parport.0.pin-12-in-not
net min-home-z <= parport.0.pin-13-in-not

#pin inverts

#setp parport.0.pin-03-out-invert 1
#setp parport.0.pin-05-out-invert 1
#setp parport.0.pin-07-out-invert 1
Jak widać, użyłem pinu charge-pump.out-2, co nawiasem mówiąc jest moim wynalazkiem, bo właśnie z ZELRP miałem taki problem, że za cholerę nie chciało działać...
Opis masz tutaj http://linuxcnc.org/docs/html/man/man9/ ... ump.9.html
Akcja jest taka, że charge-pump jest przypisany do base-thread, co oznacza że częstotliwość sygnału zależy od ustawienia base-thread, a ZELRP jest bardzo kapryśny jeśli chodzi o ten parametr. Szczegółów nie pamiętam i nie mam ochoty sobie przypominać, choć mój ZELRP nadal działa i może kiedyś do czegoś go użyję.
Od przełączania trybu przekaźników są w ZELRP zworki, ale tego to już sam sobie poszukaj w dokumentacji.

Awatar użytkownika

Autor tematu
Segitarius
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 390
Rejestracja: 15 lut 2011, 19:07
Lokalizacja: Zielona Góra

Re: Diagnostyka w Linux CNC

#5

Post napisał: Segitarius » 10 sie 2023, 20:29

Dziękuję za odpowiedź.

Nie jestem pewien czy dobrze zrozumiałem zamysł. Z przytoczonego kodu powinienem do swojego hal'a wrzucić tylko pierwszy akapit dotyczący pompy? pozostałe składowe konfiguracji maszyny są w halu dobrze opisane bo osie działają jak należy.

Próbowałem użyć kodu w różnych konfiguracjach. Łącznie z podmianą 1 do 1. Zworek natomiast nie ruszam, bo to jest maszyna, która już chodziła, więc wątek błędnej pozycji zworki wykluczam.


Kod: Zaznacz cały

# Generated by stepconf 1.1 at Thu Aug 10 21:40:40 2023
# Jeśli zmodyfikujesz ten plik zmainy zostaną
# nadpisane gdy uruchomisz ponownie Stepconf
loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt hal_parport cfg="0 out"
setp parport.0.reset-time 5000
loadrt stepgen step_type=0,0,0
loadrt pwmgen output_type=1

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.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 pwmgen.update servo-thread

net spindle-cmd-rpm => pwmgen.0.value
net spindle-on <= motion.spindle-on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq 0.0
setp pwmgen.0.scale 21000.0
setp pwmgen.0.offset -0.142857142857
setp pwmgen.0.dither-pwm true
net spindle-cmd-rpm     <= motion.spindle-speed-out
net spindle-cmd-rpm-abs <= motion.spindle-speed-out-abs
net spindle-cmd-rps     <= motion.spindle-speed-out-rps
net spindle-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
net spindle-at-speed    => motion.spindle-at-speed
net coolant-flood <= iocontrol.0.coolant-flood

net spindle-on      => parport.0.pin-01-out
net xstep           => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
setp parport.0.pin-03-out-invert 1
net xdir            => parport.0.pin-03-out
net ystep           => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
setp parport.0.pin-05-out-invert 1
net ydir            => parport.0.pin-05-out
net zstep           => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
setp parport.0.pin-07-out-invert 1
net zdir            => parport.0.pin-07-out
net coolant-flood   => parport.0.pin-14-out
net spindle-pwm     => parport.0.pin-16-out
net xenable         => parport.0.pin-17-out
net estop-ext       <= parport.0.pin-10-in
net home-x          <= parport.0.pin-11-in
net home-y          <= parport.0.pin-12-in
net home-z          <= parport.0.pin-13-in

setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 70000
setp stepgen.0.dirsetup 70000
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 home-x => axis.0.home-sw-in

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 70000
setp stepgen.1.dirsetup 70000
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 home-y => axis.1.home-sw-in

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.steplen 1
setp stepgen.2.stepspace 0
setp stepgen.2.dirhold 70000
setp stepgen.2.dirsetup 70000
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 home-z => axis.2.home-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


Awatar użytkownika

Autor tematu
Segitarius
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 390
Rejestracja: 15 lut 2011, 19:07
Lokalizacja: Zielona Góra

Re: Diagnostyka w Linux CNC

#6

Post napisał: Segitarius » 11 sie 2023, 06:44

Dobra działa :)

To dla przyszłych krótka wskazówka. Do wygenerowanego stepconfem pliku hal. trzeba dorzucić zmienne Tuxa ale w odpowiednie miejsca kodu i w odpowiedniej kolejności. Fragment:

loadrt charge_pump
addf charge-pump base-thread
net emcOn motion.motion-enabled => charge-pump.enable
net cpump charge-pump.out-2 => parport.0.pin-17-out


Trzeba rozbić na poszczególne zdania i dorzucić na koniec akapitów opisujących poszczególne sekcje kodu. Dla przykładu akapit addf.

Kod: Zaznacz cały

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf pwmgen.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 pwmgen.update servo-thread
[b]addf charge-pump base-thread[/b]
Tux jeszcze raz serdeczne dzięki za pomoc.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”