Obroty wrzeciona tokarki

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

Autor tematu
senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1459
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

Obroty wrzeciona tokarki

#1

Post napisał: senio » 18 gru 2020, 14:11

Nuda tutaj to Was pomęczę :). Potrzebuję do pewnych zadań wskaźnik obrotów. Zrobiłem sobie testową konfigurację wyłącznie dla sprawdzenia licznika obrotów ale jakaś lipa jest, bo obroty 1600 a on pokazuje nie wiem co. Wrzucę te pliki odpowiedzialne za ten licznik i może ktoś coś podpowie. Napisane jest prędkość AKTUALNA jest w RPS a nie w RPM więc musimy ją zeskalować. Nie wiem jak to zrobić.

custom_postgui.hal

Kod: Zaznacz cały

# Tutaj dodaj swoje polecenia HAL
# Polecenia w tym pliku są wykonywane po uruchomieniu AXIS GUI (włączając panel PyVCP)

# **** Konfiguracja wyświetlania prędkości wrzeciona w pyVCP - START ****
# **** Używam AKTUALNEJ prędkości wrzeciona z enkodera
# **** spindle-velocity-feedback-rps bounces around so we filter it with lowpass
# **** spindle-velocity-feedback-rps is signed so we use absolute component to remove sign
# **** prędkość AKTUALNA jest w RPS a nie w RPM więc musimy ją zeskalować.

setp scale.0.gain 60
setp lowpass.0.gain 0.010000
net spindle-velocity-feedback-rps               => lowpass.0.in
net spindle-fb-filtered-rps      lowpass.0.out  => abs.0.in
net spindle-fb-filtered-abs-rps  abs.0.out      => scale.0.in
net spindle-fb-filtered-abs-rpm  scale.0.out    => pyvcp.spindle-speed

# **** set up spindle at speed indicator ****

net spindle-cmd-rps-abs             =>  near.0.in1
net spindle-velocity-feedback-rps   =>  near.0.in2
net spindle-at-speed                <=  near.0.out
setp near.0.scale 1.500000
net spindle-at-speed       => pyvcp.spindle-at-speed-led


Hal

Kod: Zaznacz cały

# Generated by stepconf 1.1 at Thu Aug 27 16:24:43 2020
# 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
loadrt encoder num_chan=1
loadrt abs count=1
loadrt scale count=1
loadrt lowpass count=1
loadrt near
loadrt pwmgen output_type=1

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf encoder.update-counters 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 encoder.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
addf abs.0 servo-thread
addf scale.0 servo-thread
addf lowpass.0 servo-thread
addf near.0 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 100.0
setp pwmgen.0.scale 1166.66666667
setp pwmgen.0.offset 0.114285714286
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 spindle-cw <= motion.spindle-forward

setp encoder.0.position-scale 144.000000
net spindle-position encoder.0.position => motion.spindle-revs
net spindle-velocity-feedback-rps encoder.0.velocity => motion.spindle-speed-in
net spindle-index-enable encoder.0.index-enable <=> motion.spindle-index-enable
net spindle-phase-a encoder.0.phase-A
net spindle-phase-b encoder.0.phase-B
net spindle-index encoder.0.phase-Z

net estop-out       => parport.0.pin-01-out
net xstep           => parport.0.pin-02-out
setp parport.0.pin-02-out-reset 1
net xdir            => parport.0.pin-03-out
net ystep           => parport.0.pin-04-out
setp parport.0.pin-04-out-reset 1
net ydir            => parport.0.pin-05-out
net zstep           => parport.0.pin-06-out
setp parport.0.pin-06-out-reset 1
net zdir            => parport.0.pin-07-out
net astep           => parport.0.pin-08-out
setp parport.0.pin-08-out-reset 1
net adir            => parport.0.pin-09-out
net spindle-cw      => parport.0.pin-14-out
net spindle-pwm     => parport.0.pin-16-out
net xenable         => parport.0.pin-17-out
net spindle-phase-a <= parport.0.pin-11-in
net spindle-phase-b <= parport.0.pin-12-in-not
net spindle-index   <= 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 35000
setp stepgen.0.dirsetup 35000
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

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

net estop-out <= iocontrol.0.user-enable-out
net estop-out => 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
Custompanel

Kod: Zaznacz cały

<?xml version='1.0' encoding='UTF-8'?>
<pyvcp>
         <vbox>
         <relief>RIDGE</relief>         
         <bd>6</bd>
                <label>
                        <text>"Spindle Speed:"</text>
                        <font>("Helvetica",20)</font>
                </label>
                <bar>
                        <halpin>"spindle-speed"</halpin>
                        <max_>3000</max_>
                </bar>
                <label>
                        <text>"Spindle-At-Speed:"</text>
                        <font>("Helvetica",20)</font>
                </label>
                <hbox>
                    <label>
                            <text>"             "</text>
                            <font>("Helvetica",20)</font>
                    </label>
                    <led>
                        <halpin>"spindle-at-speed-led"</halpin> 
                        <size>30</size> 
                        <on_color>"green"</on_color>
                        <off_color>"red"</off_color>
                    </led>
                </hbox>
        </vbox>
</pyvcp>
Tak wyświetla na max obrotach około 1600

Obrazek




szary11
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 2
Posty: 377
Rejestracja: 16 lut 2011, 22:44
Lokalizacja: Tarnogród

Re: Obroty wrzeciona tokarki

#2

Post napisał: szary11 » 18 gru 2020, 15:27

Zobacz na maszynie w HAL Configuration w sekcji Signals który sygnał "spindle" wyrzuca ci oczekiwaną wartość i tą podepnij jak wyjście.
Poza tym 1600/47=ok 34 chyba masz przyjętą złą skalę w ini.

Awatar użytkownika

Autor tematu
senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1459
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

Re: Obroty wrzeciona tokarki

#3

Post napisał: senio » 18 gru 2020, 16:45

szary11 pisze:
18 gru 2020, 15:27
Poza tym 1600/47=ok 34 chyba masz przyjętą złą skalę w ini.
Którą skale w ini ?. Tarcza enkodera ma 36 otworów. W Halu jest to mnożone x 4 (nie wiem dlaczego) i konfiguruje

setp encoder.0.position-scale 144.000000.

I to jest prawidłowe bo gwintowanie działa prawidłowo. Natomiast na podstawie czegoś oblicza obroty wrzeciona. Który to parametr i w którym pliku nie wiem.

Tu też trochę info jest la na razie nie ma zmian u mnie.

http://7xcnc.com/hardware/encoder/

Mam dopisane tak jak u mnie jest to podłączone.

net spindle-phase-a encoder.0.phase-A <= parport.0.pin-11-in
net spindle-phase-b encoder.0.phase-B
net spindle-index encoder.0.phase-Z <= parport.0.pin-13-in

Jak masz jakiś hal i custom_postgui z maszyny z licznikiem obrotów bez mesy to wrzuć. Popatrzę i może coś ustalę.


szary11
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 2
Posty: 377
Rejestracja: 16 lut 2011, 22:44
Lokalizacja: Tarnogród

Re: Obroty wrzeciona tokarki

#4

Post napisał: szary11 » 18 gru 2020, 18:07

senio pisze:Jak masz jakiś hal i custom_postgui z maszyny z licznikiem obrotów bez mesy to wrzuć. Popatrzę i może coś ustalę.
Niestety mam same mesy, a tam gdzie jest licznik to zrobione na gladevcp, ale.
Fragment mojego ini z poręby.
ENCODER_SCALE = -4096.0 -enkoder 1024 imp , gdzie minus odwraca sygnał
OUTPUT_SCALE = 1220 - skalę dobierałem doświadczalnie , mierząc tachometrem obroty uchwytu, bo mam na paskach, o różnych średnicach, pod osłoną, której nie chciało mi się zdjąć.
Do gwintowania bierze ci tylko sygnał indeksu, a do obrotów i ich kierunku A i B.
Wpisz w midi np m3 s100 i zobacz ile pokazuje Ci w menu "hal configuration" i ew. zmień skalę w ini.
Także wszystkiego nie rozumiem, ale jak działa to po co, :) a lata gdy byłem wszystkiego ciekaw minęły.


atlc
Posty w temacie: 1

Re: Obroty wrzeciona tokarki

#5

Post napisał: atlc » 18 gru 2020, 18:14

Razy 4 ze względu na kontrolę wszystkich zboczy sygnału enkodera. Tak jest w fabrycznych sterowaniach, tu podejrzewam że tak samo.

Awatar użytkownika

Autor tematu
senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1459
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

Re: Obroty wrzeciona tokarki

#6

Post napisał: senio » 18 gru 2020, 18:35

szary11 pisze:
18 gru 2020, 18:07
Także wszystkiego nie rozumiem, ale jak działa to po co, :) a lata gdy byłem wszystkiego ciekaw minęły.
Ciekawość nie jest powodem. Miało pokazywać. Nie pokazuje bo nic normalnie nigdy się nie odbywa w przypadku tego systemu. Jak by było inaczej olali by macha i przyszli tutaj :). Sklecenie czegokolwiek poza standard zawsze było wyzwaniem. Skończy się na pstrykaniu chińskim miernikiem obrotów, i będzie po problemie odkrywania kolejnego rebusa. Masz wiele racji. Działa, zostawić i nie drążyć bo szkoda oczów i czasu. Też już mi się od dawna nie chce czegokolwiek szukać i zmieniać.


krzysztof.z
Czytelnik forum poziom 1 (min. 10)
Czytelnik forum poziom 1 (min. 10)
Posty w temacie: 1
Posty: 14
Rejestracja: 12 lis 2020, 18:39
Lokalizacja: Częstochowa

Re: Obroty wrzeciona tokarki

#7

Post napisał: krzysztof.z » 23 gru 2020, 23:23

A masz w ogóle stabilizacje obrotów wrzeciona?

Sygnał CMD (zadajnik) obrotów wrzeciona dajesz na wejście PID.
Sygnał enkodera bez filtrowania dajesz na wejście FeedBack PIDa.
Wyjście PID steruje pinem wyjściowym na falownik.

Filtrowany sygnał dajesz jako odczyt.

Troche doboru parametrów PI i masz stabilizacje obrotów pod obciążeniem.

Awatar użytkownika

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

Re: Obroty wrzeciona tokarki

#8

Post napisał: tuxcnc » 23 gru 2020, 23:52

senio pisze:
18 gru 2020, 16:45
nie wiem dlaczego
senio pisze:
18 gru 2020, 16:45
nie wiem
senio pisze:
18 gru 2020, 18:35
nic normalnie nigdy się nie odbywa w przypadku tego systemu
Złej baletnicy ...

Awatar użytkownika

Autor tematu
senio
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 4
Posty: 1459
Rejestracja: 25 maja 2006, 14:39
Lokalizacja: koło.wlkp

Re: Obroty wrzeciona tokarki

#9

Post napisał: senio » 24 gru 2020, 01:02

tuxcnc pisze:
23 gru 2020, 23:52
Złej baletnicy ...
To nie baletnica jest do bani, tylko nędza tego działu. Fora były stworzone po to, żeby ludzie sobie pomagali i podpowiadali. To przeminęło, wypaliło się tutaj i nie tylko tutaj. Tu poza małymi wyjątkami od reguły pozostało jedynie echo i takie docinki jak wyżej. Mimo wszystko dzisiaj wigilia więc Wesołych Świąt.

EOT.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”