Mach3 - makro do magazynu "parasolka"
-
Autor tematu - Specjalista poziom 3 (min. 600)
- Posty w temacie: 8
- Posty: 843
- Rejestracja: 02 gru 2013, 19:21
- Lokalizacja: Częstochowa
Mach3 - makro do magazynu "parasolka"
Cześć wszystkim
Poszukuję makro do Mach3 do obsługi magazynu typu "parasolka / umbrella". Magazyn obrotowy, wyjazd na siłowniku pneumatycznym.
Widział ktoś gdzieś takiego "gotowca"? Jeśli ktoś chciałby udostępnić płatnie też będę zainteresowany.
Poszukuję makro do Mach3 do obsługi magazynu typu "parasolka / umbrella". Magazyn obrotowy, wyjazd na siłowniku pneumatycznym.
Widział ktoś gdzieś takiego "gotowca"? Jeśli ktoś chciałby udostępnić płatnie też będę zainteresowany.
-
Autor tematu - Specjalista poziom 3 (min. 600)
- Posty w temacie: 8
- Posty: 843
- Rejestracja: 02 gru 2013, 19:21
- Lokalizacja: Częstochowa
Re: Mach3 - makro do magazynu "parasolka"
Okay, makro powoli się pisze, ale natrafiłem na jeden problem.
Włączam silnik obrotu magazynu i czekam na sygnał z czujnika aby silnik wyłączyć. To znaczy chciałbym tak zrobić, ale nie do końca to działa. Próbowałem też z SystemWaitFor i efekt podobny. Czasami zamiast np. 5 razy obróci 4. Sleep dodałem, aby krzywka zdążyła zjechać z czujnika.
Macie jakieś pomysły?
Włączam silnik obrotu magazynu i czekam na sygnał z czujnika aby silnik wyłączyć. To znaczy chciałbym tak zrobić, ale nie do końca to działa. Próbowałem też z SystemWaitFor i efekt podobny. Czasami zamiast np. 5 razy obróci 4. Sleep dodałem, aby krzywka zdążyła zjechać z czujnika.
Macie jakieś pomysły?
Kod: Zaznacz cały
While MagPos <> Tool
ActivateSignal(OUTPUT9) 'Motor CW
Sleep(500)
While IsActive(Input4)
Sleep(100)
Wend
DeActivateSignal(OUTPUT9)
MagPos = MagPos + 1
If MagPos = 17 Then
MagPos = 1
End If
Wend
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 4
- Posty: 1563
- Rejestracja: 09 lip 2012, 20:34
- Lokalizacja: Poznań
Re: Mach3 - makro do magazynu "parasolka"
Zamiast poziomu sygnału musisz wykrywać zbocze narastające. Zamiast dodawać sleep na zjazd wykrywać zbocze opadające.
Dlaczego zatrzymujesz silnik wewnątrz pętli?
Dlaczego zatrzymujesz silnik wewnątrz pętli?
-
Autor tematu - Specjalista poziom 3 (min. 600)
- Posty w temacie: 8
- Posty: 843
- Rejestracja: 02 gru 2013, 19:21
- Lokalizacja: Częstochowa
Re: Mach3 - makro do magazynu "parasolka"
Fakt, zatrzymanie silnika można wywalić poza pętle.
Ale Googlam za wykrywaniem zbocza w Mach'u i cisza. Podpowiesz jak to zrobić?
Ale Googlam za wykrywaniem zbocza w Mach'u i cisza. Podpowiesz jak to zrobić?
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 4
- Posty: 1563
- Rejestracja: 09 lip 2012, 20:34
- Lokalizacja: Poznań
Re: Mach3 - makro do magazynu "parasolka"
Programowo. Porównujesz stan bieżący ze stanem z poprzedniej iteracji pętli.
I wywal wtedy sleep(500), w tym czasie to można przekręcić magazyn o kilka pozycji
I wywal wtedy sleep(500), w tym czasie to można przekręcić magazyn o kilka pozycji
-
Autor tematu - Specjalista poziom 3 (min. 600)
- Posty w temacie: 8
- Posty: 843
- Rejestracja: 02 gru 2013, 19:21
- Lokalizacja: Częstochowa
Re: Mach3 - makro do magazynu "parasolka"
Teraz ma to sens?
Kod: Zaznacz cały
While MagPos <> Tool
ActivateSignal(OUTPUT9)
If Input4 = False Then
Sleep(50)
If Input4 = True Then
MagPos = MagPos + 1
If MagPos = 17 Then
MagPos = 1
End If
End If
End If
Wend
DeActivateSignal(OUTPUT9)
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 4
- Posty: 1563
- Rejestracja: 09 lip 2012, 20:34
- Lokalizacja: Poznań
Re: Mach3 - makro do magazynu "parasolka"
Jak już pisałem, musisz w zmiennej zapamiętać poprzedni stan wejścia. Poprzedni oznacza stan z poprzedniej iteracji pętli. Inaczej mówiąc np w ostatniej linii pętli.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 3
- Posty: 2347
- Rejestracja: 28 sty 2007, 16:12
- Lokalizacja: Łódź
Re: Mach3 - makro do magazynu "parasolka"
Co do samego makra.
wcześniej masz wyznaczone Gkodem oczekiwane narzędzie - TOOL
Z magazynu wiesz że nr narzędzia MagPos wymaga zmiany pozycji magazynu.
Bo MagPos <> TOOL.
Więc uruchamiasz swoje makro
While MagPos <> TOOL
.
.
.
.
wend
i chodzi ta pętla w kółko bez szans na zakończenie działania.
Bo jeżeli warunek while pozwolił je uruchomić to w trakcie działania (tam gdzie kropki) nie ma jak zmienić wartości MagPos i TOOL i petla zawsze ma zezwolenie na kolejne uruchomienie.
Jakim cudem talerz obrócił Ci się raz 4x a immym 5x?
Jakiś brak kontaktu na kablach, przerwa w zasilaniu od drgań sprzętu?
Bo z pewnoscia nie na skutek działania makra.
Druga sprawa
Uruchamiasz silnik - bo narzędzie niezgodne z TOOL
czekasz na własciwą pozycję
While MagPos <> TOOL
MagPos= aktualna wartość
wend
i tyle, po prostu czekasz ale w treści petli aktualizuj wartość MagPOs odczytując jej wartość na bierząco.
Jak ją odczytujesz, gdzie jest dostępna to tego nie opisałeś.
Ale kiedyś bedzie miała taką wartość żę wętla się skończy.
a dalej już z górki
-wyłacz silnik
-zarygluj talerz
sprawdż na wszelki wypadek czy to co zaryglowałeć jest oczekiwanym narzędziem( jszcze raz )
-IF MagPos=TOOL
-message="Talerz na pozycji"
else
( jakieś działąnie obsługi błędu pozycji talerza)
-end if
-wymień narzędzie
i makro bedzie działać.
Makro, nie magazyn bo ten jeszcze musi odpowiednio się zatrzymać, a może i cofnąć silnikiem do siłowego zaryglowania
Opisz co i jak dzieje się w mechanice talerza bo na razie ten opis gwarantuje niedziałanie magazynu
wcześniej masz wyznaczone Gkodem oczekiwane narzędzie - TOOL
Z magazynu wiesz że nr narzędzia MagPos wymaga zmiany pozycji magazynu.
Bo MagPos <> TOOL.
Więc uruchamiasz swoje makro
While MagPos <> TOOL
.
.
.
.
wend
i chodzi ta pętla w kółko bez szans na zakończenie działania.
Bo jeżeli warunek while pozwolił je uruchomić to w trakcie działania (tam gdzie kropki) nie ma jak zmienić wartości MagPos i TOOL i petla zawsze ma zezwolenie na kolejne uruchomienie.
Jakim cudem talerz obrócił Ci się raz 4x a immym 5x?
Jakiś brak kontaktu na kablach, przerwa w zasilaniu od drgań sprzętu?
Bo z pewnoscia nie na skutek działania makra.
Druga sprawa
Uruchamiasz silnik - bo narzędzie niezgodne z TOOL
czekasz na własciwą pozycję
While MagPos <> TOOL
MagPos= aktualna wartość
wend
i tyle, po prostu czekasz ale w treści petli aktualizuj wartość MagPOs odczytując jej wartość na bierząco.
Jak ją odczytujesz, gdzie jest dostępna to tego nie opisałeś.
Ale kiedyś bedzie miała taką wartość żę wętla się skończy.
a dalej już z górki
-wyłacz silnik
-zarygluj talerz
sprawdż na wszelki wypadek czy to co zaryglowałeć jest oczekiwanym narzędziem( jszcze raz )
-IF MagPos=TOOL
-message="Talerz na pozycji"
else
( jakieś działąnie obsługi błędu pozycji talerza)
-end if
-wymień narzędzie
i makro bedzie działać.
Makro, nie magazyn bo ten jeszcze musi odpowiednio się zatrzymać, a może i cofnąć silnikiem do siłowego zaryglowania
Opisz co i jak dzieje się w mechanice talerza bo na razie ten opis gwarantuje niedziałanie magazynu