Kilka sterowników na jednym porcie 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: 24
Posty: 9449
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Kilka sterowników na jednym porcie Ethernet

#41

Post napisał: tuxcnc » 28 maja 2025, 17:33

kszumek pisze:
28 maja 2025, 16:08
Witam
dobrze by było żeby jednak pin wejściowy indeks był jako opcja przyszłościowo chociażby
dobry byłby też pin zerujący od strony hal , można wtedy zerować jak ktoś tam sobie chce i kiedy chce
z homingiem czy w zależności od potrzeby, + enable w hal i więcej nic nie trzeba
+ jakiś pin przepełnienia
Też tak myślałem, ale to chyba nie jest takie proste.
Oczywiście o przepełnieniu mowy nie ma, pozycja to zmienna typu float (nie to żeby nie przepełnić, tylko HAL oczekuje takiego typu, no to musi dostać).
Natomiast z tym zerowaniem to jest taki problem, że co prawda można zrobić bazowanie na 0,0,0, ale obowiązku nie ma... Maszyna po bazowaniu może stanąć na dowolnej pozycji i wtedy wyzerowanie liniałów nie ma sensu. myślałem o G53 G0 X0 Y0 Z0 i wtedy wyzerować, ale taki ruch nie zawsze może być wykonalny... No i jeszcze można zbazować bez krańcówek, czyli w przypadkowym miejscu...
Myślę, że to trzeba przemyśleć...

Dodane 1 godzina 4 minuty 42 sekundy:
tuxcnc pisze:
26 maja 2025, 20:00
Podłączyłem tę drugą chińszczyznę i klęska totalna. Można powiedzieć, że nie działa w ogóle
(Chodzi o ten https://www.aliexpress.com/item/1005005990249863.html)
No po prostu nie działał, czasem jakieś urządzenie zobaczył, ale tylko jedno, a reszta jakby nie była w ogóle podpięta.
Stwierdziłem, że więcej "okazji" nie będę próbował, bo w końcu wydam kasę i nie będę miał niczego, więc z bólem serca kupiłem na Allegro Edimax SWITCH GS-1005E za całe 53 PLN, który dzisiaj przyszedł.
Ale tamten PIX-LINK nie dawał mi spokoju. Sprawdziłem w necie, to duża firma, produkują wiele modeli, więc to nie powinno być totalne badziewie.
No i jak przyszedł ten Edimax, to stwierdziłem że ma taki sam zasilacz (5V/1A), więc można by sprawdzić chińszczyznę, czy feler nie tkwił w zasilaczu... Po podłączeniu zasilacza od Edimax, PIX-LINK ożył i pracuje bez zastrzeżeń.
Dysponując dwoma sprawnymi switchami połączyłem je dla testu szeregowo. Nie wpłynęło to na pingi, dalej były takie same.
Urządzenia na W5500 odpowiadają dwa razy szybciej od tego WT32-ETH01 na LAN8720.
Co ciekawe, po uruchomieniu LinuxCNC pingi znacząco spadły (W5500 poniżej 150 ms a LAN8720 poniżej 300 ms).
Tak więc ani podłączenie trzech sterowników, ani dwóch switchy nie wpłynęło na wyniki testów.
Należy więc przyjąć założenie, że jeżeli do jednej karty sieciowej w komputerze będą podłączone wyłącznie sterowniki LinuxCNC, to powinny działać prawidłowo.
Pytanie tylko z jaką prędkością komputer wyrobi. Nie spodziewam się tutaj jakichś problemów, bo współczesne komputery są naprawdę szybkie.
Na tym, którego używam do testów (AMD A10 i frezarka na UDP2HAL) mam wykorzystanie rdzeni rzędu 20% (nawet nie robiłem isolcpus, bo nic nie dawało) i transmisję po sieci rzędu 150 kB/s. Nie sądzę żeby podłączenie kilku sterowników zapchało procesor albo sieć, ale teraz nie mam nastroju na robienie testów.




qqaz
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 2410
Rejestracja: 28 sty 2007, 16:12
Lokalizacja: Łódź

Re: Kilka sterowników na jednym porcie Ethernet

#42

Post napisał: qqaz » 28 maja 2025, 18:20

tuxcnc pisze:Maszyna po bazowaniu może stanąć na dowolnej pozycji i wtedy wyzerowanie liniałów nie ma sensu. myślałem o G53 G0 X0 Y0 Z0 i wtedy wyzerować, ale taki ruch nie zawsze może być wykonalny..
piszesz o zatrzymaniu poza 0,0,0, że przeleciało? Nie potrzeba wracać na zerową pozycje liniału tylko ustawiać liczniki do zgodności. Wtedy ruch jest niepotrzebny.
Albo o coś innego Ci chodzi.

Awatar użytkownika

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

Re: Kilka sterowników na jednym porcie Ethernet

#43

Post napisał: tuxcnc » 28 maja 2025, 18:40

qqaz pisze:
28 maja 2025, 18:20
Albo o coś innego Ci chodzi.
Tak, chodzi mi o coś innego.


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

Re: Kilka sterowników na jednym porcie Ethernet

#44

Post napisał: drzasiek90 » 28 maja 2025, 22:09

tuxcnc pisze:
28 maja 2025, 17:33
Natomiast z tym zerowaniem to jest taki problem, że co prawda można zrobić bazowanie na 0,0,0, ale obowiązku nie ma... Maszyna po bazowaniu może stanąć na dowolnej pozycji i wtedy wyzerowanie liniałów nie ma sensu. myślałem o G53 G0 X0 Y0 Z0 i wtedy wyzerować, ale taki ruch nie zawsze może być wykonalny... No i jeszcze można zbazować bez krańcówek, czyli w przypadkowym miejscu...
Myślę, że to trzeba przemyśleć...
Urządzenie powinno mieć po prostu możliwość ustawienia aktualnej wartości pozycji - czyli ustaw aktualną pozycja na wartość.
A odpowiednią logikę trzeba zrobić w halu, w zależności od tego jak się będzie bazować.
Jak ktoś będzie miał dziwne pomysły na bazowanie to będzie musiał pokombinować aby odpowiednią logikę dla siebie zaimplementować.
Swoją drogą, jeśli ma to być moduł obsługi enkoderów/linialow to fajnie gdyby miał typowe w przemysłowce wejścia na enkodery liniały również absolutne. Interfejs Biss/ssi implementuje się bardzo łatwo.
No ale wymaga pracy.

Awatar użytkownika

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

Re: Kilka sterowników na jednym porcie Ethernet

#45

Post napisał: tuxcnc » 28 maja 2025, 23:15

drzasiek90 pisze:
28 maja 2025, 22:09
fajnie gdyby miał typowe w przemysłowce wejścia na enkodery liniały również absolutne.
Jak zwykle przeginasz pałę...

Dodane 24 minuty 34 sekundy:
kszumek pisze:
28 maja 2025, 16:08
dobrze by było żeby jednak pin wejściowy indeks do mikrokontrolera był jako opcja przyszłościowo chociażby
dobry byłby też pin zerujący od strony hal , można wtedy zerować jak ktoś tam sobie chce i kiedy chce
z homingiem czy w zależności od potrzeby, + enable w hal i więcej nic nie trzeba
Chyba znalazłem.
Uruchomiłem halmeter w działającym LinuxCNC i szukałem na ślepo jakiegoś pinu HAL, który mógłby przypasować...
Zainteresował mnie joint.N.home-state.
Normalnie jest zero, w czasie bazowania skaczą cyferki i znowu jest zero.
Pomyślałem, że chyba bingo i zacząłem szukać w źródłach, bo w dokumentacji jest tylko tajemnicza informacja że to "debug"....
No i znalazłem taką deklarację:

Kod: Zaznacz cały

typedef enum {
  HOME_IDLE = 0,
  HOME_START,// 1
  HOME_UNLOCK,// 2
  HOME_UNLOCK_WAIT,// 3
  HOME_INITIAL_BACKOFF_START,// 4
  HOME_INITIAL_BACKOFF_WAIT,// 5
  HOME_INITIAL_SEARCH_START,// 6
  HOME_INITIAL_SEARCH_WAIT,// 7
  HOME_SET_COARSE_POSITION,// 8
  HOME_FINAL_BACKOFF_START,// 9
  HOME_FINAL_BACKOFF_WAIT,// 10
  HOME_RISE_SEARCH_START,// 11
  HOME_RISE_SEARCH_WAIT,// 12
  HOME_FALL_SEARCH_START,// 13
  HOME_FALL_SEARCH_WAIT,// 14
  HOME_SET_SWITCH_POSITION,// 15
  HOME_INDEX_ONLY_START,// 16
  HOME_INDEX_SEARCH_START,// 17
  HOME_INDEX_SEARCH_WAIT,// 18
  HOME_SET_INDEX_POSITION,// 19
  HOME_FINAL_MOVE_START,// 20
  HOME_FINAL_MOVE_WAIT,// 21
  HOME_LOCK,// 22
  HOME_LOCK_WAIT,// 23
  HOME_FINISHED,// 24
  HOME_ABORT// 25
} home_state_t;
Jeszcze jest tylko pytanie, ile te stany trwają i czy da się je rozpoznać próbkując co milisekundę...
Jak się nie da, to też jest sposób, ale wolałbym uniknąć dodatkowych kombinacji.
Wyłapując odpowiedni stan miałoby się pewność, że maszyna jest na pewno w określonej pozycji.
Powinno to działać nawet przy bazowaniu bez krańcówek...
Są piny z wartościami, które można by było wtedy przepisać do licznika enkodera...

Awatar użytkownika

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

Re: Kilka sterowników na jednym porcie Ethernet

#46

Post napisał: tuxcnc » 30 maja 2025, 20:15

Dzisiaj przetestowałem płytkę znalezioną w szufladzie.
Dawno temu kupiłem z ciekawości, ale jakoś nie znalazłem dla niej zastosowania.
https://www.aliexpress.com/item/1005005770760872.html
To jest shield dla Arduino Nano i podejrzewam, że do niczego innego się nie nadaje z uwagi na wejścia/wyjścia w standardzie 5V.
Oczywiście po Nano cudów się nie spodziewałem, a użycie tego układu w dzisiejszych czasach może mieć sens tylko wtedy, gdy ktoś ten układ dobrze zna, a ESP32 czy STM32 są dla niego czarną magią.
Sam shield jest na układzie ENC28J60, do którego trzeba użyć biblioteki https://github.com/Networking-for-Arduino/EthernetENC
Różnica w stosunku do kodu dla W5500 jest chyba tylko taka, że trzeba napisać #include <EthernetENC.h> zamiast #include <Ethernet.h>...
Wgrałem do Arduino testowy kod:

Kod: Zaznacz cały

#include <EthernetENC.h>
#include <EthernetUdp.h>

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xE1 };
IPAddress ip(10, 10, 10, 88);

unsigned int localPort = 58418;      // local port to listen on

// buffers for receiving and sending data
char packetBuffer[255];  // buffer to hold incoming packet,

EthernetUDP Udp;

void setup() {
  Ethernet.begin(mac, ip);
  Udp.begin(localPort);
}

void loop() {  

  // if there's data available, read a packet
  int packetSize = Udp.parsePacket();
  if (packetSize) {
    // read the packet into packetBufffer    
    Udp.read(packetBuffer, 255);
    // send the packet back
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    Udp.write(packetBuffer, 255);
    Udp.endPacket();
  }
}
Robi on tylko tyle, że odbiera pakiet i odsyła go z powrotem, ale do testów to wystarcza.
Układ odpowiada na pingi w czasie mniejszym niż 1,5 ms. To oczywiście jest kiepski wynik, ale do sprawdzenia czy osłona jest zamknięta albo włączenia chłodziwa i tak o rząd wielkości lepiej niż by wystarczyło.
Co ciekawe, mam taką "kartę" https://www.aliexpress.com/item/33055363055.html, która oczywiście jest zbyt wolna żeby na niej uruchamiać sterowanie obrabiarki, ale niewiele wolniejsza od opisywanego układu, który odpowiada na niej na pingi w czasie poniżej 2 ms.
Dwie milisekundy to pięćset razy na sekundę, więc do czegoś da się tego użyć...
Więcej testów robić nie będę, bo mam szybsze układy, ale może komuś też w szufladzie zalega, to może się pobawić...

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”