Tokarka - bazowanie i soft-limity
: 20 kwie 2025, 14:53
W pierwszej tokarce mam założone krańcówki i po włączeniu maszyny na nich ją bazuję.
Działa to tak, jak się można spodziewać, ale jest dość upierdliwe, bo się nie da tego zrobić z zablokowanym koniem (trzeba go odsuwać na sam koniec łoża).
Wiem, że niektórzy w ogóle bronią się przed takim rozwiązaniem i wolą bazować bez krańcówek, czyli tam gdzie suport stoi, tam będą zera.
Ma to też swoje minusy, choćby taki, że soft-limity kompletnie tracą sens.
W swojej drugiej tokarce póki co krańcówek nie założyłem i kombinuję jak pracować bez nich...
Na razie przyszło mi do głowy, żeby wykorzystać m-kod użytkownika, na przykład M199 (nazwa jest dowolna, byleby z zakresu M100-M199).
Ten m-kod z odpowiednim parametrem powinien ustawić soft limit tak, żeby nie zrobić dzwona w uchwyt.
O ile banalnie proste jest napisanie takiego skryptu, żeby nie grzmotnąć suportem w uchwyt, to zabezpieczenie przed przywaleniem nożem już proste nie jest, bo trzeba wziąć pod uwagę offset narzędzia i wykonać dość proste, ale jednak obliczenia...
Przyznam się, że rozbolała mnie od tego głowa, bo skrypt działał mi z terminala, ale nie chciał z poziomu MDI...
W końcu okazało się, że bash wykonuje arytmetykę na zmiennych int, a LinuxCNC wydaje parametry float...
(Jeśli w oknie MDI napiszesz M199 P-10 to wywołany zostanie skrypt z parametrem -10.000000 i wywali się bo liczb zmiennoprzecinkowych dodawać nie potrafi...)
Rozwiązanie jest dość proste (użycie programu bc (taki terminalowy kalkulator)), ale ból głowy pozostał i chwilowo nie pozwala mi na kontynuowanie projektu...
Może znajdzie się ktoś chętny zrobić kilka prostych testów i je opisać?
Skrypt działa, brakuje tylko instrukcji obsługi...
Powinno się go uruchamiać po każdej zmianie narzędzia, ale w sumie to można dowolną ilość razy, bo wartość pinów ini.n.xxx_limit jest wczytywana przed każdym ruchem...
Bez większego problemu można go rozpisać też na inne osie i inne soft-limity i używać także na innych maszynach, nie tylko na tokarce, choć tutaj jest chyba największa potrzeba.
Poniższe trzeba zapisać w pliku M<ileśtam> i umieścić we właściwym folderze ncfiles.
Działa to tak, jak się można spodziewać, ale jest dość upierdliwe, bo się nie da tego zrobić z zablokowanym koniem (trzeba go odsuwać na sam koniec łoża).
Wiem, że niektórzy w ogóle bronią się przed takim rozwiązaniem i wolą bazować bez krańcówek, czyli tam gdzie suport stoi, tam będą zera.
Ma to też swoje minusy, choćby taki, że soft-limity kompletnie tracą sens.
W swojej drugiej tokarce póki co krańcówek nie założyłem i kombinuję jak pracować bez nich...
Na razie przyszło mi do głowy, żeby wykorzystać m-kod użytkownika, na przykład M199 (nazwa jest dowolna, byleby z zakresu M100-M199).
Ten m-kod z odpowiednim parametrem powinien ustawić soft limit tak, żeby nie zrobić dzwona w uchwyt.
O ile banalnie proste jest napisanie takiego skryptu, żeby nie grzmotnąć suportem w uchwyt, to zabezpieczenie przed przywaleniem nożem już proste nie jest, bo trzeba wziąć pod uwagę offset narzędzia i wykonać dość proste, ale jednak obliczenia...
Przyznam się, że rozbolała mnie od tego głowa, bo skrypt działał mi z terminala, ale nie chciał z poziomu MDI...
W końcu okazało się, że bash wykonuje arytmetykę na zmiennych int, a LinuxCNC wydaje parametry float...
(Jeśli w oknie MDI napiszesz M199 P-10 to wywołany zostanie skrypt z parametrem -10.000000 i wywali się bo liczb zmiennoprzecinkowych dodawać nie potrafi...)
Rozwiązanie jest dość proste (użycie programu bc (taki terminalowy kalkulator)), ale ból głowy pozostał i chwilowo nie pozwala mi na kontynuowanie projektu...
Może znajdzie się ktoś chętny zrobić kilka prostych testów i je opisać?
Skrypt działa, brakuje tylko instrukcji obsługi...
Powinno się go uruchamiać po każdej zmianie narzędzia, ale w sumie to można dowolną ilość razy, bo wartość pinów ini.n.xxx_limit jest wczytywana przed każdym ruchem...
Bez większego problemu można go rozpisać też na inne osie i inne soft-limity i używać także na innych maszynach, nie tylko na tokarce, choć tutaj jest chyba największa potrzeba.
Poniższe trzeba zapisać w pliku M<ileśtam> i umieścić we właściwym folderze ncfiles.
Kod: Zaznacz cały
#!/bin/bash
param=$1
offset=$(halcmd getp motion.tooloffset.z)
limit=$(echo "$param + $offset" | bc)
halcmd setp ini.z.min_limit $limit
exit 0