Hejka.
Wiesz co Bartek, nie chce mi się pisać i dobierać szczegółów tym bardziej że i tak finalną postać byś przerabiał u siebie.
Czyli sam sobie napisz - tu tylko taki przewodnik. jeżeli zrobisz tak jak napiszę to działać będzie (kol Lepi ja wiem czy działa
1) zprogramuj wyjście z transoptorem które będzie robić stop falownika - zacisk15 na serwopaku
To bedzie wyjście "Kęsim"
2)Sprawdź jakie możesz ustawić najmniejsze sensowne obroty wrzeciona - oczekiwane 1 obr/2s ewentualnie 1/s.
Odpowiednio w którymś tam stopniu tabelki przełożeń np 10 wpisz obroty minimalne nieco mniejsze i stosownie maksymalne.
to są DRO(56) wybrane przełozenie i DRO(121) zwracające tartość minimalną obrotów (albo tabelka z menu(1,12))
Rzecz w tym aby wywołanie obrotów dla wymiany narzędzia dawało je stabilne z pewnym zapasem dla PWM.
np 5% przy minimalnym 2% - to te wartości w DRO(99) albo PWM Control Ratio w diagnostyce
Oczywiście o ile obroty ustawiasz przez PWM a nie jakoś.
3) zapisz w profilowym folderze nowe makro np M201.m1s
Wpisz w niego treść uruchamiającą blokowanie wrzeciona
Const Kęsim=OutputXX 'tu wpiszesz właściwe wyjście
ActivateSignal(Kęsim)
message("wrzeciono na pozycji do wymiany")
sleep 1000
code "( )"
DeActivateSignal( Kęsim )
Sprawdź treść czy faktycznie uruchomisz wyjście. Możliwe że będzie wygodniejsza inna składnia albo jakieś spacje, cudzyslowy, zobaczysz, poprawisz
To powyżej tylko zastopuje wrzeciono na 1 s.
Jeżeli masz trzymać blokadę przez cały czas wymiany to powinny być dwa makra.
Jakby co pomogę.
4) pozycjonowanie wrzeciona
Cały dowcip sprowadza się to tego co powiedziałaeś ze zatrzymujesz je w punkt tylko trzeba trafić.
No to jedziemy na pozycję wymianyXYZ (wymiana) przy Twoim aktualnym ofsecie wyświetlanym w DRO(46)
na tej pozycji!!! dopiero:
Uruchamiasz makro które wykona gwint na długości 0,01mm. I tyle
- masz kontrolę startu procesu w oparciu o pozycję indeksu - csmio przypilnuje tym dupnikiem aby było zawsze tak samo.
funkcja G32z-0.01 zanim się zacznie to juz się skończy ( takie poprawne zastosowanie widzenia świata przez partacza)
A dalej wywołujesz makro M201.m1s które natychmiast blokuje pozycję wrzeciona.
A ponieważ nie jest jedna z osi to Mach nie będzie protestował.
Czyli treść makra M202.m1s:
dX = GetOEMDro(800)'zapamietanie wartości aktualnch liczników, ofsetu, przełozenia
dY = GetOEMDro(801)
dZ = GetOEMDro(802)
off= GetOEMDro(46)
przek=GetOemDro(56)
rem wywołanie nowego ofsetu np nr 50 - będę w nim zmieniał liczniki jak wygodnie. Tylko żeby nie był to ofset w którym masz coś ustawione!.
SetOENDro(46,50)'wbranie ofsetu
doOemButton(1007)' wyzerowanie liczników
SetOemDRO(56,10)'wybranie przełożenia nr 10 dla którego sprawdzone są wartości PWM że nie zdławisz obrotów
rem teraz mozna wykonać ruch bo wiadoma co gdzie się stanie
code" s1F100"
code"G32z-0.01" 'szukanie indeksu
code"M201" ' zatrzymanie wrzeciona
rem przywrócenie poprawnych liczników
setOemDro(46,off)
setOemdro(800,dx)
setOemDro(801,dy)
setOemDro(802,dz)
setOemDRO(56,przek)
i tyle, wrzeciono stoi a dalej robisz co tam potrzebujesz..
Tak dla poprawności
powinno wystarczyć samu wywołanie nowego ofsetu w DRO(46) co spowoduje wpisanie w licznki jakiś tam wartości
Po przywróceniu w DRO(46,off) w licznikach osi same powinny sie pojawić niezmienione wartości przed wywołaniem makra.
Ale jak chcesz możesz zapamietywać lub tylko wywoływać.
Dodane 9 minuty 18 sekundy:
tera przycisk
Edytujesz ekran czyli nowy button a w nim zaptaszczasz VBscript ( otwierasz plik ekranu do edycji programem Mach3Screen.exe a nie za pomocę edycji treści przycisku w oparciu o menu(5,6) bo tam dostepne są tylkoprzyciski z wpisanym polecenie w polu exe kodu lubVB
A w treść buttona wstawiasz
code"M202"
fszysko i ...
Dodane 3 minuty 38 sekundy:
Jakby Mach się dławił to wpisz treść M201 otwartym tekstem zamiast wywoływać je jako makro