Silnik hydrauliczny + enkoder jako tokarkowa oś Z

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

Autor tematu
ArturM
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 1
Posty: 160
Rejestracja: 12 kwie 2008, 07:53
Lokalizacja: Kozienice
Kontakt:

Silnik hydrauliczny + enkoder jako tokarkowa oś Z

#1

Post napisał: ArturM » 17 mar 2015, 14:29

Dzień dobry.

Mam tak:
- silnik hydrauliczny sterowany dwoma zaworami - góra/dół
- na nim założony enkoder
- wszystko sterowane dwoma optoBobami

Chciałbym z tego mieć oś Z ale nie potrafię tego wysterować. :D
Żeby było weselej oś ma jeździć w jedną stronę szybciej niż w drugą (praca/powrót).

(tam jeszcze jest 3 krokowce działające osobno jako osie UVW i działające razem jako oś X i podtrzymka sterowana silnikiem elektrycznym jako oś Y ale to dłuższa opowieść :D)

Kombinowałem ze stepgenem - dałem tryb up/down, 'kroki' up i down przepuściłem przez timedelta żeby zrobić z kroków sygnał ciągły - niby to działa, ale rozjeżdża się z enkoderem i rzuca mi ferrorem (bo w jedną stronę szybciej w drugą wolniej). No i AXIS jakby bardziej wierzy feedbackowi ze stepgena niż mojemu feedbackowi z enkodera - nie da się jakoś zablokować feedbacka ze stepgena?

Ponieważ ten feedback stepgena był dla Axisa ważniejszy niż mój realny feedback z enkodera to zacząłem kombinować po partyzancku:

Kod: Zaznacz cały

net zpos-cmd axis.2.motor-pos-cmd => comp.0.in1 axis.2.motor-pos-fb
Znaczy związałem motor-pos-cmd z motor-pos-fb żeby Axis nie marudził :D
Jednocześnie wrzuciłem wartość motor-pos-cmd do comp.0 - porównuję tą wartość z pozycją mojego enkodera i jak mniejsze to odpalam jeden zawór, jak większe to drugi. Dokładności jakiejś wielkiej nie potrzebuję więc comp.0.hyst mam ustawione na 1 i to mi z grubsza działa.
Problem się robi jak chcę zgrać ruch Z z ruchem X - bo wg. axisa oś już jest na pozycji a w rzeczywistości jestem jeszcze daleko i gonię zadaną pozycję.

W takim układzie nie mam też jogowania w szybszą stronę - bo jak jadę 'z palca' to mi enkoder dogania albo przegania pozycję z axisa i wtedy mi klupią zawory lewo-prawo i wszystko konkretnie tłucze :D
Zacząłem budować w halu kolejne pięterka andów, orów i notów - żeby sprawdzać motion.in-position i equala z comp.0 i częściowo to ogarnąłem ale mam niejasne przeczucie że źle robię.

Jak to powinno być zrobione?
Mnie się wydaje że stepgen ustawiony na up/down, wartość zadana z Axisa na pida, do pida jako feedback dać enkoder, wyjście z pida jako wartość zadana dla stepgena i potem piki up/down wygładzone na ciągłe sygnały i to na zawory, tak?

Czuję, że zamotałem opis ale to dlatego, że siebie już tez zamotałem :D
No to pomocy :D

[ Dodano: 2015-03-18, 13:35 ]
Nikt mnie nie lubi, buu ;(

Dziś mnie trochę deprecha odpuściła, pogooglałem jeszcze i chyba już wiem z grubsza.

Wykoncypowałem takie coś:

Kod: Zaznacz cały

net zpos-cmd axis.2.motor-pos-cmd => pid.0.command
net zpos-fb encoder.0.position => pid.0.feedback axis.2.motor-pos-fb
net jazda pid.0.output => abs.0.in
net zup <= abs.0.is-positive
net zdown <= abs.0.is-negative
Czyli:
- wywalam bezsensownego stepgena (bo w sumie po co mi - tylko mi bruździł swoim feedbackiem)
- zadaną pozycję z Axisa wrzucam w PIDa.
- pozycję z enkodera daję jako feedback Axisa i feedback PIDa

I sztuczka za stówę:
zamiast się wozić z timedeltami i cudować z 'prostowaniem' szpilek robię taki myk, że wrzucam wyjście z PIDa w moduł abs - a abs oprócz wyjścia 'normalnego' ma też dwa piny: 'is-positive' i 'is-negative' - czyli idealne sygnały do wysterowania moich zaworów lewo-prawo.
Przecież wartość wyjściowa PIDa mnie nie interesuje - i tak mogę tylko na zaworze dać 'pełna para' albo 'stop' - więc wystarczy informacja w którą stronę mam jechać.

Co myślicie - ma to szanse zadziałać ?
Testuję na symulatorze, a jutro wrzucę to w żelazo i zobaczymy :D



Tagi:


kamar
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 16238
Rejestracja: 18 wrz 2010, 06:17
Lokalizacja: Kozienice
Kontakt:

Re: Silnik hydrauliczny + enkoder jako tokarkowa oś Z

#2

Post napisał: kamar » 18 mar 2015, 13:44

ArturM pisze: i zobaczymy :D
Daj Boże ale nie wiem

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”