Znaleziono 8 wyników

autor: tuxcnc
27 lut 2024, 08:55
Forum: LinuxCNC (dawniej EMC2)
Temat: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT
Odpowiedzi: 27
Odsłony: 1187

Re: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT

drzasiek90 pisze:
26 lut 2024, 21:19
Czy rozwiązanie z komponentem LUT5 jest właściwe będzie można ocenić, gdy zostanie przygotowane i sprawdzone.
No to je przygotuj i sprawdź, bo to Tobie jest ono potrzebne, a mi nie.
Natomiast co do poprawności rozwiązania, to czy gwoździe da się wbijać kombinerkami?
Jeżeli niektórzy to robią, to należy przyjąć że się da, ale jednak powszechnie się uważa, że kombinerki do tego celu nie służą i nie powinno się tego tak robić...
Wracając do twojego kodu, to jest on błędny w samym założeniu.
Tak naprawdę, to sygnał bazujący może być podłączony na stałe do odpowiednich pinów HAL od bazowania osi, a odcinać na czas bazowania trzeba sygnał podłączony do pinów HAL od limitów.
Czyli mój kod, do którego się tak uczepiłeś, jest prawidłowy, z tym, że załatwia on tylko bazowanie, więc potrzebujesz dopisać kod blokujący zadziałanie limitów, wszystkich na raz, bo one i tak nie biorą udziału w bazowaniu.
Mówiąc inaczej:
1. sygnał wejściowy jest na stałe podłączony do pinów HAL od bazowania.
2. sygnał wejściowy jest odłączany od pinów HAL od limitów, na czas bazowania dowolnej osi.
Teraz kilka słów o elemencie LUT5.
Nie podoba mi się wytłumaczenie na stronie https://linuxcnc.org/docs/html/man/man9/lut5.9.html
Dla mnie ono bardziej ściemnia niż wyjaśnia, choć formalnie jest poprawne.
Ja wolę uważać element LUT5 za pamięć o pięciu wejściach adresowych i jednobitowym wyjściu.
Czyli kiedy podłączymy do wejść dowolną kombinację sygnałów, to zaadresujemy jedną z 32 (2^5) komórek pamięci i dostaniemy jej wartość na wyjściu.
Komu które tłumaczenie bardziej odpowiada, to kwestia gustu, a o gustach się nie dyskutuje.
Tak, czy inaczej, 32 jednobitowe wartości da się zapisać jako 32-bitową liczbę binarną, i taki sposób przyjęto dla wygody, a odpowiednią wartość można wyliczyć z tablicy na linkowanej stronie.
Element LUT5 jest nie tylko elegancki, ale i wygodny, bo nie trzeba niczego negować, ani w inny sposób kombinować z bramkami logicznymi.
Spróbuj swój kod przepisać na cztery bazowane osie, to zrozumiesz...
I to by było na tyle.
autor: tuxcnc
26 lut 2024, 15:52
Forum: LinuxCNC (dawniej EMC2)
Temat: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT
Odpowiedzi: 27
Odsłony: 1187

Re: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT

forestgril pisze:
26 lut 2024, 15:40
drzasiek90 pisze:Jakie np?
Jeśli zadziała którakolwiek krańcówka, maszyna ma się zatrzymać.


Chyba niekoniecznie. Mogę sobie wyobrazić, że od tego, która krańcówka zadziałała, może zależeć strategia automatycznego wyjścia z materiału. Choć pewnie to nieczęsta sytuacja, gdy chcemy wykorzystać 100% pola roboczego.
Tutaj akurat sprawa jest jasna.
Zgłoszenie sytuacji awaryjnej musi natychmiast zatrzymać maszynę.
Po prostu zakłada się, że kontynuowanie obróbki gdy którykolwiek z parametrów jest niepewny, nie prowadzi do oczekiwanych efektów.
Tutaj kłania się jedno z podstawowych praw informatyki, że przetwarzanie błędnych danych daje błędne wyniki…
To co kombinujesz może mieć sens w specyficznych sytuacjach, ale nie może być rozwiązaniem o charakterze uniwersalnym.
autor: tuxcnc
26 lut 2024, 14:49
Forum: LinuxCNC (dawniej EMC2)
Temat: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT
Odpowiedzi: 27
Odsłony: 1187

Re: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT

tuxcnc pisze:
25 lut 2024, 21:51
W czasie normalnej pracy maszyny, zadziałanie dowolnego czujnika bazującego powoduje alarm i zatrzymanie programu.
I tutaj faktycznie popełniłem błąd.
Pojęcia nie mam skąd mi się to wzięło, ale krańcówka bazująca poza cyklem bazowania jest ignorowana i nie powoduje żadnego alarmu.
Zupełnym przypadkiem byłem dzisiaj przy tokarce i to sprawdziłem.
Natomiast w niczym nie zmienia to faktu, że zaprezentowany przez autora wątku kod jest przekombinowany i po prostu straszny...
Linuxcnc nie rozpozna który switch zadziałał, żaden program tego nie rozpozna, bo to jest jedno wejście i jeden bit.
Tak więc sygnał powodujący alarm można podać na jednen dowolny pin HAL bo liczy się tylko jego zadziałanie, a wyświetlony komunikat może być, czyli często będzie, dowolnie mylący...
Właściwym rozwiązaniem wydaje się więc użycie komponentu LUT5 https://linuxcnc.org/docs/html/man/man9/lut5.9.html
Może nie jest to specjalnie czytelne dla początkujących, ale też nie jest ponad możliwości zrozumienia przeciętnego użytkownika Linuxcnc....
autor: tuxcnc
25 lut 2024, 21:51
Forum: LinuxCNC (dawniej EMC2)
Temat: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT
Odpowiedzi: 27
Odsłony: 1187

Re: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT

drzasiek90 pisze:
25 lut 2024, 21:37
Bo ty nie masz skonfigurowanych czujników krańcowych.
Czytaj uważnie, bo drugi raz tłumaczyć nie będę.
Rozmawiamy o sytuacji, gdy wszystkie czujniki są podpięte pod jedno wejście i stanowią jeden sygnał.
Linuxcnc, ani żaden inny program, nie jest w stanie określić, który czujnik zadziałał.
Przy rozpoczęciu procedury bazowania, wszystkie czujniki muszą być nieaktywne.
Potem, po kolei, osie wykonują ruch bazujący, ale tylko jedna oś może być aktywna w danym momencie, więc wiadomo który czujnik zadziałał.
W czasie normalnej pracy maszyny, zadziałanie dowolnego czujnika bazującego powoduje alarm i zatrzymanie programu.
Czegoś nie rozumiesz?
autor: tuxcnc
25 lut 2024, 21:26
Forum: LinuxCNC (dawniej EMC2)
Temat: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT
Odpowiedzi: 27
Odsłony: 1187

Re: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT

drzasiek90 pisze:
25 lut 2024, 21:21
Następnie bazuje się oś Z, zadziałał czujnik bazowania Z, ale linux wykrył także, że zadziałał czujnik krańcowy X (bo oś jest już zbazowana więc działa normalnie a czujnik jest na tym samym pinie) i zgłasza błąd: napęd X na krańcówce awaryjnej i wyłącza napędy i zatrzymuje bazowanie.
Tak to u Ciebie działa?
Czy sobie to wymyśliłeś?
Bo u mnie działa to inaczej...
autor: tuxcnc
25 lut 2024, 21:01
Forum: LinuxCNC (dawniej EMC2)
Temat: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT
Odpowiedzi: 27
Odsłony: 1187

Re: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT

drzasiek90 pisze:
25 lut 2024, 20:32
Czujniki krańcowe MUSZĄ działać podczas bazowania.
Piękny i klasyczny chochoł...
Pisałem, że czujniki muszą być nieaktywne w momencie rozpoczęcia procedury, a nie że mają nie zadziałać.

Tak w ogóle, to jesteś dla mnie zagadką.
Niby coś potrafisz zbudować, ale czasem popisujesz się inteligencją na poziomie dziecka z zespołem Downa...
Masz jedno wejście sygnału binarnego.
To wejście oznacza, że któryś czujnik zadziałał.
Jeśli na wejściu procedury bazowania sygnał jest aktywny, to w tym momencie program kapituluje, wyświetla komunikat o błędzie i przerywa działanie, co jest to prawidłowe i logiczne.
Nie da się ani ustalić, ani odciąć tego trefnego czujnika żadnymi kombinacjami, bo to jest jeden fizyczny sygnał.

A twoje modlitwy do moderatora są po prostu żałosne.

Ja nie piszę po to żebyś gorzej się poczuł.
Ja mam w du*** twoje istnienie i twoje samopoczucie.
Piszę, bo swoimi kretyńskimi wpisami wprowadzasz ludzi w błąd.
Już się znalazł jeden, co chce dołożyć Arduino, też nie wiadomo po co i w jaki sposób...
autor: tuxcnc
25 lut 2024, 20:24
Forum: LinuxCNC (dawniej EMC2)
Temat: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT
Odpowiedzi: 27
Odsłony: 1187

Re: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT

drzasiek90 pisze:
25 lut 2024, 20:12
Podczas bazowania jednej osi, Linux-cnc zgłasza czujnik krańcowy na pozostałych.
Podczas bazowania wszystkie czujniki krańcowe są w stanie nieaktywnym.
Znaczy się powinny być, ale jeśli nie są, to jest sytuacja awaryjna, wymagająca interwencji obsługi/serwisu.
Żadne alpejskie kombinacje tego nie zmienią, bo na jeden sygnał "coś gdzieś jest załączone" nie da się sensownie zareagować.
Tradycyjnie niczego nie rozumiesz, przekombinowałeś rozwiązanie, a na uzasadnioną krytykę reagujesz rżnąc urażonego narcyza...
autor: tuxcnc
25 lut 2024, 19:47
Forum: LinuxCNC (dawniej EMC2)
Temat: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT
Odpowiedzi: 27
Odsłony: 1187

Re: LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT

drzasiek90 pisze:
25 lut 2024, 18:56
A oto kod konfiguracji hal:

Kod: Zaznacz cały

#Tworzy dwa komponenty and2 oraz 2 komponenty not
loadrt and2 count=2
addf and2.0 servo-thread
addf and2.1 servo-thread
loadrt not count=2
addf not.0 servo-thread
addf not.1 servo-thread

#Tworzy sygnał both-home-xz i podłącza do niego pin 11 (jako wejście bazujące i krańcowe dla osi x oraz z):
net both-home-xz     <= parport.0.pin-11-in-not

#Tworzy sygnały (flagi) informujące o bazowaniu danej osi
net x_is_homing <=  joint.0.homing
net z_is_homing <=  joint.1.homing

#Podłącza do inwerterów sygnały informujące, że dana oś jest aktualnie bazowana
net x_is_homing => not.0.in
net z_is_homing => not.1.in

#podłącza do komponentów and2 (wejścia 0) sygnał both-home-xz
net both-home-xz => and2.0.in0
net both-home-xz => and2.1.in0

#Tworzy sygnały wyjściowe inwerterów
net not_0_out <=  not.0.out
net not_1_out <=  not.1.out

#podłącza do komponentów and2 (wejścia 1) zanegowany sygnał o bazowanu osi
net not_0_out => and2.0.in1
net not_1_out => and2.1.in1

#tworzy sygnały wyjściowe z komponentów and2
net and2_0_out <=  and2.0.out
net and2_1_out <=  and2.1.out

#podłącza sygnałe wyjście komponentu and2.1 na wejście bazujące i krańcowe x
net and2_1_out =>  joint.0.home-sw-in 
net and2_1_out =>  joint.0.neg-lim-sw-in
net and2_1_out =>  joint.0.pos-lim-sw-in

#podłącza wyjście komponentu and2.0 na wejście bazujące i krańcowe z
net and2_0_out =>  joint.1.home-sw-in 
net and2_0_out =>  joint.1.neg-lim-sw-in
net and2_0_out =>  joint.1.pos-lim-sw-in
Jak zwykle nic nie rozumiesz, więc ostro przekombinowałeś....
U mnie, jedyną maszyną w której krańcówki są na jednym pinie LPT jest tokarka, bo tam trzy wejścia zajmuje enkoder wrzeciona, a chciałem mieć jeszcze estop...
Sprawę załatwia następujący wpis w pliku hal:

Kod: Zaznacz cały

net min-home joint.0.home-sw-in joint.1.home-sw-in parport.0.pin-15-in-not
Jeśli wartości parametru HOME_SEQUENCE w pliku ini są rózne dla różnych osi (a przecież muszą być różne w tej sytuacji), to nie ma możliwości bazowania więcej niż jednej osi równocześnie.

Wróć do „LinuxCNC - jak podłączyć wszystkie czujniki bazowania oraz krańcowe do jednego pinu LPT”