XHC-WHB04B-6 Podsumowanie.
: 05 lip 2021, 18:52
Zakupiłem XHC-WHB04B-6.
Wstyd się przyznać, ale po przeczytaniu całej masy herezji na jego temat, uznałem że warto zapłacić 375 PLN, by go przetestować i z czystym sumieniem zakomunikować kilku forumowiczom, że są kretynami.
Wędka przyszła dzisiaj, a jej uruchomienie zajęło aż kilka minut.
No niestety, ale w sekcji "HAL CONFIGURATION EXAMPLE" na stronie https://linuxcnc.org/docs/2.8/html/man/ ... b-6.1.html jest kilka tak kretyńskich błędów, że po prostu obciach.
Linuxcnc z tym plikiem się nie uruchamia, ale wyświetla jasne i jednoznaczne komunikaty z jakiej przyczyny.
Ale zanim do tego dojdziemy kilka słów o wersji systemu operacyjnego i samego Linuxcnc.
Otóż użyłem oczywiście własnej dystrybucji opartej na Xubuntu 18.05.4 z Linuxcnc w wersji 2.9.
Z tego co znalazłem w necie, wynika że pójdzie także na oficjalnych dystrybucjach, byleby nie archaicznych Debianach z Linuxcnc starszym niż 2.8. Sprawdzać mi się nie chce, ale jest to proste, o czym będzie kawałek dalej.
No więc po kolei.
Poniższe pominąłem, loguję się jako root więc nie jest mi to do niczego potrzebne. Ale jak ktoś woli inaczej, to żaden problem i żadna robota.
Ponieważ kopiuj/wklej z przeglądarki internetowej grozi trudnymi do wykrycia błędami (identycznie wyglądające znaki o różnych kodach), więc ściągnąłem plik z adresu https://raw.githubusercontent.com/Linux ... uration.md.
Nazwa "example-configuration.md" jest trochę idiotyczna, więc postanowiłem ją zmienić. Z lenistwa skopiowałem i wkleiłem, i tutaj objawił się pierwszy żenujący bawół. Otóż są dwie linie :oraz
W jednej nazwie są myślniki, w drugiej podkreślenia...
Oczywiście nazwa pliku nie zgadzała się z wpisem w INI i dostałem komunikat ze nie znaleziono pliku...
Po poprawieniu nazwy objawił się drugi, jeszcze bardziej żenujący bawół w postaci linii:
Otóż próba uruchomienia Linuxcnc kończyła się komunikatem, że nie ma pinu whb.halui.joint.x.is-homed.
Faktycznie go nie ma i cholera wie skąd się wziął w tym pliku...
Tutaj przy okazji doszliśmy do sposobu sprawdzenia, czy zainstalowana dystrybucja obsługuje wędkę.
Wygląda to następująco:Pierwsze trzy linie zawierają wpisywane w konsoli polecenia, reszta to wyniki. Oczywiście ani Linuxcnc, ani inny halrun nie może być wtedy uruchomiony. Jak widać nie ma żadnego pinu którego nazwa kończy się na "is-homed", więc wszystkie trzy linie należy zakomentować lub usunąć.
No i ostatni problem to te nieszczęsne halui.mdi-command.
Sprawa jest wyjątkowo prosta, numery są nadawane według koleiności występowania w pliku INI.
Jeżeli mamy już jakiś własny plik HAL z własnymi odwołaniami do mdi-command, to trzeba tak pozmieniać numery, żeby się nie powtarzały. U mnie są przyciski wywoływania róznych podprogramów z pinami o numerach od 0 do 4, więc musiałem je pozmieniać na 17 do 21.
Jak widać niczego nie musiałem kompilować, a znalezione błędy zgłoszę deweloperom projektu.
Dodanie osi obrotowej A sprowadziło się do znalezienia wszystkich linii w których występuje ciąg znaków axis.z Takie linie należy zdublować, a następnie w dodanych liniach zmienić axis.z na axis.a Proste i oczywiste. Z osiami B i C identycznie.
I to na razie wszystko.
Wędka mi się spodobała i Wam też polecam.
Wstyd się przyznać, ale po przeczytaniu całej masy herezji na jego temat, uznałem że warto zapłacić 375 PLN, by go przetestować i z czystym sumieniem zakomunikować kilku forumowiczom, że są kretynami.
Wędka przyszła dzisiaj, a jej uruchomienie zajęło aż kilka minut.
No niestety, ale w sekcji "HAL CONFIGURATION EXAMPLE" na stronie https://linuxcnc.org/docs/2.8/html/man/ ... b-6.1.html jest kilka tak kretyńskich błędów, że po prostu obciach.
Linuxcnc z tym plikiem się nie uruchamia, ale wyświetla jasne i jednoznaczne komunikaty z jakiej przyczyny.
Ale zanim do tego dojdziemy kilka słów o wersji systemu operacyjnego i samego Linuxcnc.
Otóż użyłem oczywiście własnej dystrybucji opartej na Xubuntu 18.05.4 z Linuxcnc w wersji 2.9.
Z tego co znalazłem w necie, wynika że pójdzie także na oficjalnych dystrybucjach, byleby nie archaicznych Debianach z Linuxcnc starszym niż 2.8. Sprawdzać mi się nie chce, ale jest to proste, o czym będzie kawałek dalej.
No więc po kolei.
Poniższe pominąłem, loguję się jako root więc nie jest mi to do niczego potrzebne. Ale jak ktoś woli inaczej, to żaden problem i żadna robota.
Kod: Zaznacz cały
The xhc-whb04b-6 executable needs permission for reading the pendant’s USB device. There may be the need for additional udev rules. If so, this file /etc/udev/rules.d/99-xhc-whb04b-6.rules should be created with the single line ATTR{idProduct}=="eb93", ATTR{idVendor}=="10ce", MODE="0666", OWNER="root", GROUP="plugdev".
Ponieważ kopiuj/wklej z przeglądarki internetowej grozi trudnymi do wykrycia błędami (identycznie wyglądające znaki o różnych kodach), więc ściągnąłem plik z adresu https://raw.githubusercontent.com/Linux ... uration.md.
Nazwa "example-configuration.md" jest trochę idiotyczna, więc postanowiłem ją zmienić. Z lenistwa skopiowałem i wkleiłem, i tutaj objawił się pierwszy żenujący bawół. Otóż są dwie linie :
Kod: Zaznacz cały
#HALFILE = xhc-whb04b-6.hal
Kod: Zaznacz cały
### Hal File xhc_whb04b_6.hal Example for 3 axis but i hope this is easy to add missing axis:
Oczywiście nazwa pliku nie zgadzała się z wpisem w INI i dostałem komunikat ze nie znaleziono pliku...
Po poprawieniu nazwy objawił się drugi, jeszcze bardziej żenujący bawół w postaci linii:
Kod: Zaznacz cały
# "is-homed" axis signal for allowing pendant when machine is not homed
net pdnt.axis.X.is-homed halui.joint.0.is-homed whb.halui.joint.x.is-homed
net pdnt.axis.Y.is-homed halui.joint.1.is-homed whb.halui.joint.y.is-homed
net pdnt.axis.Z.is-homed halui.joint.2.is-homed whb.halui.joint.z.is-homed
Otóż próba uruchomienia Linuxcnc kończyła się komunikatem, że nie ma pinu whb.halui.joint.x.is-homed.
Faktycznie go nie ma i cholera wie skąd się wziął w tym pliku...
Tutaj przy okazji doszliśmy do sposobu sprawdzenia, czy zainstalowana dystrybucja obsługuje wędkę.
Wygląda to następująco:
Kod: Zaznacz cały
root@E555:~# halrun
halcmd: loadusr -W xhc-whb04b-6 -H
halcmd: show pin
Component Pins:
Owner Type Dir Value Name
4 s32 OUT 0 whb.axis.a.jog-counts
4 bit OUT FALSE whb.axis.a.jog-enable
4 float OUT 0 whb.axis.a.jog-scale
4 bit OUT FALSE whb.axis.a.jog-vel-mode
4 s32 OUT 0 whb.axis.b.jog-counts
4 bit OUT FALSE whb.axis.b.jog-enable
4 float OUT 0 whb.axis.b.jog-scale
4 bit OUT FALSE whb.axis.b.jog-vel-mode
4 s32 OUT 0 whb.axis.c.jog-counts
4 bit OUT FALSE whb.axis.c.jog-enable
4 float OUT 0 whb.axis.c.jog-scale
4 bit OUT FALSE whb.axis.c.jog-vel-mode
4 s32 OUT 0 whb.axis.x.jog-counts
4 bit OUT FALSE whb.axis.x.jog-enable
4 float OUT 0 whb.axis.x.jog-scale
4 bit OUT FALSE whb.axis.x.jog-vel-mode
4 s32 OUT 0 whb.axis.y.jog-counts
4 bit OUT FALSE whb.axis.y.jog-enable
4 float OUT 0 whb.axis.y.jog-scale
4 bit OUT FALSE whb.axis.y.jog-vel-mode
4 s32 OUT 0 whb.axis.z.jog-counts
4 bit OUT TRUE whb.axis.z.jog-enable
4 float OUT 0 whb.axis.z.jog-scale
4 bit OUT FALSE whb.axis.z.jog-vel-mode
4 bit OUT FALSE whb.button.feed-minus
4 bit OUT FALSE whb.button.feed-plus
4 bit OUT FALSE whb.button.fn
4 bit OUT FALSE whb.button.m-home
4 bit OUT FALSE whb.button.macro-1
4 bit OUT FALSE whb.button.macro-10
4 bit OUT FALSE whb.button.macro-11
4 bit OUT FALSE whb.button.macro-12
4 bit OUT FALSE whb.button.macro-13
4 bit OUT FALSE whb.button.macro-14
4 bit OUT FALSE whb.button.macro-15
4 bit OUT FALSE whb.button.macro-16
4 bit OUT FALSE whb.button.macro-2
4 bit OUT FALSE whb.button.macro-3
4 bit OUT FALSE whb.button.macro-4
4 bit OUT FALSE whb.button.macro-5
4 bit OUT FALSE whb.button.macro-6
4 bit OUT FALSE whb.button.macro-7
4 bit OUT FALSE whb.button.macro-8
4 bit OUT FALSE whb.button.macro-9
4 bit OUT FALSE whb.button.mode-continuous
4 bit OUT FALSE whb.button.mode-step
4 bit OUT FALSE whb.button.probe-z
4 bit OUT FALSE whb.button.reset
4 bit OUT FALSE whb.button.s-on-off
4 bit OUT FALSE whb.button.safe-z
4 bit OUT FALSE whb.button.spindle-minus
4 bit OUT FALSE whb.button.spindle-plus
4 bit OUT FALSE whb.button.start-pause
4 bit OUT FALSE whb.button.stop
4 bit OUT FALSE whb.button.w-home
4 float IN 0 whb.halui.axis.a.pos-feedback
4 float IN 0 whb.halui.axis.a.pos-relative
4 bit OUT FALSE whb.halui.axis.a.select
4 float IN 0 whb.halui.axis.b.pos-feedback
4 float IN 0 whb.halui.axis.b.pos-relative
4 bit OUT FALSE whb.halui.axis.b.select
4 float IN 0 whb.halui.axis.c.pos-feedback
4 float IN 0 whb.halui.axis.c.pos-relative
4 bit OUT FALSE whb.halui.axis.c.select
4 float IN 0 whb.halui.axis.x.pos-feedback
4 float IN 0 whb.halui.axis.x.pos-relative
4 bit OUT FALSE whb.halui.axis.x.select
4 float IN 0 whb.halui.axis.y.pos-feedback
4 float IN 0 whb.halui.axis.y.pos-relative
4 bit OUT FALSE whb.halui.axis.y.select
4 float IN 0 whb.halui.axis.z.pos-feedback
4 float IN 0 whb.halui.axis.z.pos-relative
4 bit OUT TRUE whb.halui.axis.z.select
4 bit OUT FALSE whb.halui.feed-override.decrease
4 bit OUT FALSE whb.halui.feed-override.increase
4 float OUT 0 whb.halui.feed-override.scale
4 float IN 0 whb.halui.feed-override.value
4 bit OUT FALSE whb.halui.feed.selected-10
4 bit OUT FALSE whb.halui.feed.selected-100
4 bit OUT FALSE whb.halui.feed.selected-2
4 bit OUT TRUE whb.halui.feed.selected-30
4 bit OUT FALSE whb.halui.feed.selected-5
4 bit OUT FALSE whb.halui.feed.selected-60
4 bit OUT FALSE whb.halui.feed.selected-continuous
4 bit OUT FALSE whb.halui.feed.selected-lead
4 bit OUT TRUE whb.halui.feed.selected-mpg-feed
4 bit OUT FALSE whb.halui.feed.selected-step
4 bit IN FALSE whb.halui.flood.is-on
4 bit OUT FALSE whb.halui.flood.off
4 bit OUT FALSE whb.halui.flood.on
4 bit IN FALSE whb.halui.lube.is-on
4 bit OUT FALSE whb.halui.lube.off
4 bit OUT FALSE whb.halui.lube.on
4 bit IN FALSE whb.halui.machine.is-on
4 bit OUT FALSE whb.halui.machine.off
4 bit OUT FALSE whb.halui.machine.on
4 float IN 0 whb.halui.max-velocity.value
4 bit IN FALSE whb.halui.mist.is-on
4 bit OUT FALSE whb.halui.mist.off
4 bit OUT FALSE whb.halui.mist.on
4 bit OUT FALSE whb.halui.mode.auto
4 bit IN FALSE whb.halui.mode.is-auto
4 bit IN FALSE whb.halui.mode.is-joint
4 bit IN FALSE whb.halui.mode.is-manual
4 bit IN FALSE whb.halui.mode.is-mdi
4 bit IN FALSE whb.halui.mode.is-teleop
4 bit OUT FALSE whb.halui.mode.joint
4 bit OUT FALSE whb.halui.mode.manual
4 bit OUT FALSE whb.halui.mode.mdi
4 bit OUT FALSE whb.halui.mode.teleop
4 bit IN FALSE whb.halui.program.is-idle
4 bit IN FALSE whb.halui.program.is-paused
4 bit IN FALSE whb.halui.program.is-running
4 bit OUT FALSE whb.halui.program.pause
4 bit OUT FALSE whb.halui.program.resume
4 bit OUT FALSE whb.halui.program.run
4 bit OUT FALSE whb.halui.program.stop
4 bit OUT FALSE whb.halui.spindle-override.decrease
4 bit OUT FALSE whb.halui.spindle-override.increase
4 float OUT 0 whb.halui.spindle-override.scale
4 float IN 0 whb.halui.spindle-override.value
4 float IN 0 whb.halui.spindle-speed-cmd
4 bit OUT FALSE whb.halui.spindle.decrease
4 bit OUT FALSE whb.halui.spindle.forward
4 bit OUT FALSE whb.halui.spindle.increase
4 bit IN FALSE whb.halui.spindle.is-on
4 bit OUT FALSE whb.halui.spindle.reverse
4 bit OUT FALSE whb.halui.spindle.start
4 bit OUT FALSE whb.halui.spindle.stop
4 bit OUT TRUE whb.pendant.is-connected
4 bit OUT FALSE whb.pendant.is-sleeping
No i ostatni problem to te nieszczęsne halui.mdi-command.
Sprawa jest wyjątkowo prosta, numery są nadawane według koleiności występowania w pliku INI.
Jeżeli mamy już jakiś własny plik HAL z własnymi odwołaniami do mdi-command, to trzeba tak pozmieniać numery, żeby się nie powtarzały. U mnie są przyciski wywoływania róznych podprogramów z pinami o numerach od 0 do 4, więc musiałem je pozmieniać na 17 do 21.
Jak widać niczego nie musiałem kompilować, a znalezione błędy zgłoszę deweloperom projektu.
Dodanie osi obrotowej A sprowadziło się do znalezienia wszystkich linii w których występuje ciąg znaków axis.z Takie linie należy zdublować, a następnie w dodanych liniach zmienić axis.z na axis.a Proste i oczywiste. Z osiami B i C identycznie.
I to na razie wszystko.
Wędka mi się spodobała i Wam też polecam.