AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

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

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 6
Posty: 9459
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

#1

Post napisał: tuxcnc » 18 maja 2025, 21:15

Sterownik urodził się z (niestety strasznie zaśmieconego) wątku topic125134.html
Pisałem tam, że wziąłem na warsztat moduł WT32-ETH01, który akurat miałem z innego projektu, a kosztujący naprawdę grosze (Na Aliexpress nawet poniżej 25 PLN).
Ten moduł zawiera na jednej płytce mikroprocesor ESP32 i układ obsługi Ethernetu LAN8720 z gniazdem RJ45, nic nadzwyczajnego, ale aż się prosi żeby go do czegoś użyć...
Postanowiłem oprzeć się na projekcie https://github.com/jzolee/HAL2UDP/tree/1.0 (wersja 1.0), który co prawda zawiera błędy i bez poprawek nie działa, ale jest wyjątkowo schludnie i przejrzyście napisany, dzięki czemu wiadomo co jest od czego i jak ma działać.
Niestety, większość kodu dostępnego w necie jest tak pisana, że rozumie ją tylko autor i to niekoniecznie, więc nawet drobne zmiany są męczarnią...
Zmiana biblioteki z W5500 na LAN8720 była drogą przez mękę, ale kiedy już się udało, to wszystko okazało się banalnie proste.
No i tak narodził się AuxIO, który nie powala możliwościami, ale zacząć trzeba było od czegoś prostego.
Dało się z przedmiotowej płytki wycisnąć sześć wyjść i osiem wejść cyfrowych z dość prostym zabezpieczeniem przed błędami transmisji (suma kontrolna danych otrzymywanych z komputera).
Tutaj mała dygresja. Otóż są rzeczy, które muszą być szybkie i takie które nie muszą. Jeśli chcemy sprawdzić czy ktoś nie otworzył osłony, albo włączyć chłodziwo, to nie musimy tego robić tysiąc razy na sekundę... Dlatego też taki pomocniczy układ można przypisać do stosunkowo wolnego wątku i nie powinien on za bardzo przeszkadzać głównemu sterownikowi.
IP jest ustawione na 10.10.10.99, co jest spowodowane tym, że używam sterowników Remora z adresem 10.10.10.10, więc chciałem mieć z tego samego zakresu. Jak komuś nie pasuje, to może sobie zmienić, byleby równocześnie w AuxIO.ino i AuxIO.comp, bo UDP2HAL pracuje ze sztywno przypisanym adresem.

Tak należy to cudo programować:
Obrazek

.
AuxIO.tar
(600 KiB) Pobrany 138 razy



Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 6
Posty: 9459
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

#2

Post napisał: tuxcnc » 19 maja 2025, 06:07

Po ilości pobrań załącznika widzę, że jest spore zainteresowanie, więc kilka słów uzupełnienia.
Do kompilacji kodu używałem platformio-cli-t125165.html
Zapewne da się użyć Arduino IDE. Nie próbowałem, ale kod jest kompatybilny, więc po zainstalowaniu odpowiednich bibliotek powinno się udać.
Gdyby ktoś chciał coś w kodzie przerabiać, to ostrzeżenie, żeby nie używać pinu GPIO.0. On jest wyprowadzony na złącze tylko po to, żeby możliwe było programowanie ESP32. Normalnie jest to sygnał zegara dla LAN8720 i oczywiście do niczego innego nie można go wykorzystać.
Co do innych pinów, to trzeba zapoznać się z ogólnymi informacjami na ich temat. Niektóre dziwnie się zachowują w czasie uruchamiania układu (potem działają już normalnie), a niektóre w czasie uruchamiania układu muszą znajdować się w określonym stanie. Poza tym, trzy piny mogą być tylko wejściami i nie mają wewnętrznych pullupów. To są łatwo dostępne informacje i nie będę opisywał szczegółów, tylko zasygnalizuję.

No i chyba najważniejsze...
Nigdy nie widziałem takiej maszyny, gdzie użyto by kilku różnych układów wyjściowych w jednej konfiguracji.
Nie mówię, że takie nie istnieją, ale są wyjątkową rzadkością.
A co stoi na przeszkodzie, żeby na przykład osie sterować przez LPT a dodatkowe wejścia/wyjścia mieć przez Ethernet?
No w takiej konfiguracji, to już naprawdę nie ma co się ze sobą kłócić...

No i na koniec, to nic nie stoi na przeszkodzie, żeby układ rozwinąć i na przykład zrobić wejścia analogowe, albo wyjścia PWM. Jak ktoś umie programować na poziomie podstawowym, to powinien sobie poradzić. Ja w pierwszej kolejności chcę zrobić układ obsługi wrzeciona, czyli obsługa falownika i enkodera. Wydaje się to bardzo proste, ale trzeba mieć trochę wolnego czasu i dobry dzień, więc żadnego terminu nie obiecuję...

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 6
Posty: 9459
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

#3

Post napisał: tuxcnc » 20 maja 2025, 12:50

Znalazłem w kodzie drobny i mało istotny błąd.
Jest:

Kod: Zaznacz cały

send_udp_buffer(packetBuffer, sizeof(packetBuffer));
Powinno być:

Kod: Zaznacz cały

send_udp_buffer(packetBuffer, sizeof(fb));
Różnica jest taka, że pierwsza linia wysyła pakiet wielkości bufora, natomiast druga, wielkości faktycznie używanych danych.
Różnica jest rzędu dwustu bajtów, nie jest to więc dużo, ale to jest zupełnie niepotrzebnie przesyłane dwieście bajtów.

Zła wiadomość dla właścicieli zabytków.
Z czystej ciekawości spróbowałem uruchomić AuxIO na Debianie Wheezy z LinuxCNC 2.7.
Nie da się.
Oczywiście nie jest to wina ani WT32-ETH01, ani jego firmware, a tylko niekompatybilności kodu AuxIO.comp ze starym kernelem 3.4.9-rtai-686-pae (Debian 12 ma kernel 6.1.0-32-rt-amd64, czyli jest to przepaść...)
Jakby się ktoś uparł, toby przepisał AuxIO.comp na ten stary kernel, ale ja nie mam zamiaru poświęcić na to nawet sekundy.
Zawsze powtarzam, że warto być na bieżąco, bo nowe będzie się gryzło ze starym i nie warto tracić życia na walkę z wiatrakami...

Czy AuxIO może zastąpić Linumeric?
Nie wiem.
Nie było moją intencją psucie koledze z forum biznesu, ani zbudowanie układu udającego port LPT.
W założeniu miało to być dodanie dodatkowych wejść/wyjść do istniejącego sterowania, bez nacisku na prędkość transmisji. Jak pisałem, niektóre sygnały nie muszą być czytane tysiące razy na sekundę...
Jeśli ktoś jest ciekawy jak szybko AuxIO może działać i czy da się nim sterować krokowce, to niech próbuje...

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 6
Posty: 9459
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

#4

Post napisał: tuxcnc » 25 maja 2025, 13:17

Czy ktoś uruchomił ???

Widzę ponad 130 pobrań i ani jednej opinii, czy jakiegokolwiek pytania...
Chcę wiedzieć czy ktoś napotkał jakieś trudności czy błędy, zanim opublikuję kod na Githubie.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 2381
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

#5

Post napisał: drzasiek90 » 29 maja 2025, 14:02

Jak mają uruchomić skoro póki co nie dałeś instrukcji jak tego użyć.
Ludzie pobierają, żeby zobaczyć co tam udostępniłeś i z czego to się składa.
Jak zauważą, że same pliki źródłowe, bez instrukcji to odkładają.
Poza tym już ci pisałem, że zainteresowanie tego typu rzeczami, zwłaszcza na tym forum jest marginalne.
Nie licz na 130 uruchomień, jak się trafi jedna, dwie osoby które to dla testów uruchomią to możesz uznać to za sukces.


kszumek
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 1
Posty: 517
Rejestracja: 04 kwie 2006, 18:08
Lokalizacja: Białystok

Re: AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

#6

Post napisał: kszumek » 30 maja 2025, 07:24

Witam
jak nie ma na razie instrukcji, to tymczasowo mógłby być chociaż tu skrót najważniejszych informacji
dla średniozaawansowanych, ja pobrałem i tylko zerknąłem do plików na razie walczę z ethercatem
,widzę że coś na jakimś stm32 itp to też dość dobra droga
najgorsze w tym to płytki pcb , kabelki i pająki , nie ma gotowców żeby na płytce był od razu uC+ LAN + bufory IO
chyba że zakup ec 500 do testów i zabawy

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 6
Posty: 9459
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

#7

Post napisał: tuxcnc » 30 maja 2025, 16:44

Mam dość tego waszego zrzędzenia.
Większość na tym forum używa portu LPT i jakoś nikomu nie przeszkadza ani poziom napięć, ani ilość pinów.
Ale jak próbuję dać Wam alternatywę dla starego sprzętu, to byście chcieli, żebym przyjechał i wszystko wam podłączył i skonfigurował...
Nic z tego.
Jak nie potraficie, albo Wam się nie chce, to wasz problem a nie mój.
Ja za to żadnych pieniędzy nie biorę, nie mam wobec Was żadnych zobowiązań i mam święte prawo mieć w du*** co i czy Wam działa, albo nie.

I bardzo Wam dziękuję.
Miałem dzisiaj zabrać się za moduł odczytu trzech enkoderów inkrementalnych po Ethernecie, ale po przeczytaniu waszych wypocin postanowiłem odpocząć.
Póki co, nie mam żadnej maszyny z liniałami, a jak się takowej dorobię, to sobie do niej moduł zbuduję, bo już wiem jak to zrobić.
A Wy możecie sobie dalej zrzędzić - wasza sprawa.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 2381
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

#8

Post napisał: drzasiek90 » 30 maja 2025, 17:16

Tak myślałem, że ten temat odpuścisz jak i każdy inny który zaczynasz...
To nie było żadne zrzędzenie, zwykle pytanie/uwagę.
Ale ty tylko czekałeś na pretekst, noto proszę masz.
Możesz pozbierać zabawki jak zwykle i trzasnąć drzwiami.
Nikt ci tego robić nie kazał, nikt cię o to nie prosił.
Sam się chwaliles że zrobisz, że udostępnisz, że bada instrukcje, że będzie proste i tanie.
Więc teraz nie wyrzucaj że nic za to nie bierzesz, bo to był tylko i wyłącznie twój pomysł.

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 6
Posty: 9459
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

#9

Post napisał: tuxcnc » 30 maja 2025, 17:42

drzasiek90 pisze:
30 maja 2025, 17:16
Tak myślałem, że ten temat odpuścisz jak i każdy inny który zaczynasz...
To nie było żadne zrzędzenie, zwykle pytanie/uwagę.
Ale ty tylko czekałeś na pretekst, noto proszę masz.
Możesz pozbierać zabawki jak zwykle i trzasnąć drzwiami.
Nikt ci tego robić nie kazał, nikt cię o to nie prosił.
Sam się chwaliles że zrobisz, że udostępnisz, że bada instrukcje, że będzie proste i tanie.
Więc teraz nie wyrzucaj że nic za to nie bierzesz, bo to był tylko i wyłącznie twój pomysł.
Po pierwsze, mam w du*** twoje opinie na mój temat, bo nie jesteś dla mnie żadnym autorytetem.
Po drugie, mam tylko jedno życie i święte prawo decydować o tym, na co poświęcę swój czas.
Obiecałem, ale zamiast zainteresowania projektem mam tylko nerwy, bo uwziąłeś się mnie wk***iać.
Nie chcecie, to nie będę się Wam narzucał.
A teraz idź sobie pobiegać, bo nic więcej nie mam Ci do powiedzenia.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 3
Posty: 2381
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: AuxIO czyli dodatkowe wejścia/wyjścia przez Ethernet

#10

Post napisał: drzasiek90 » 30 maja 2025, 18:54

Ale ty masz popieprzone pod kopułką.
Nic dziwnego, że nikt nie chce z tobą żyć.
Człowieku, jak się uwzialem?
Podzieliłem się doświadczeniem.
Na początku powiedzialem ci, że zainteresowanie tego typu rzeczami będzie bardzo marne.
Wiem, bo temat rozeznalem.
Wkurzasz się, bo spodziewałeś się tłumu zachwytów i podziękowań, a teraz zdałeś sobie sprawę, że znowu miałem rację.
Mówiłem ci to od początku.

Robisz coś bo lubisz to rób.
Chcesz się dzielić to się dziel.
Ale jak nie potrafisz rozmawiać i oczekujesz jedynie pochwał i zachwytów to idź się leczyć a nie wrzucaj posty na forum.
Nie chcesz skorzystać z sugestii i rad, nie chcesz skorzystać z doświadczenia innych to po cholerę wogole wchodzisz na forum?
Skoro normalne pytanie i sugestie są dla ciebie atakiem to jest twój problem a nie mój.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”