Strona 1 z 3

Prośba o pomoc w napisaniu makra

: 28 gru 2012, 22:35
autor: kamil1986
Witam czy ktoś z bardziej doświadczonych kolegów mógłby mi pomóc w napisaniu prostego makra. Opiszę o co mi chodzi będzie to lepiej zrozumiałe jak makro ma działać. Wycinam małe aluminiowe ramki z arkuszy blach aluminiowych w tych ramkach są po dwa otwory które trzeba nagwintować, z arkusza wychodzi mi jakieś 60 ramek czyli 120 otworów, ręczne gwintowanie raczej mozolna praca więc skonstruowałem małą przystawkę go gwintowania która posiada własne sterowanie na uC. Zadaniem makra jest wysyłanie sygnału do mikrokontrolera w przystawce wtedy gdy gwintownik znajdzie się na otworem który ma być nagwintowany. Dokładnie ma wyglądać to tak mam gkod z pozycjami otworów maszyna jedzie nad otwór w momencie gdy w gkodzie pojawia się polecenie Z-1 makro wysyła sygnał na port lpt np uruchamia przekaźnik wtedy uruchamia się przystawka gwintuje otwór po zakończeniu gwintowania przystawka wysyła sygnał makro ma go odebrać i maszyna jedzie do następnego otworu i znowu makro wykrywa polecenie Z-1 wysyła sygnał do przystawki i tak w kółko aż nagwintuje wszystkie otwory.

: 30 gru 2012, 05:53
autor: dziabi3
Napsz po nwym roku to ci to napisze bez problemu tylko nie z1 ale na m kodzie

: 30 gru 2012, 09:58
autor: gelo
Najprostsza metoda byloby chyba uzycie M-kodow uzytkownika
np. M200 - zalaczenie portu 5.
w polaczeniu z funkcja Dwell ( G04 P5.0 - gdzie 5.0 - czas oczekiwania w sekundach). Czas oczywiscie trzeba dobrac tak aby byla pewnosc, ze przystawka nagwintuje otwor + jakas rezerwa.
Wowczas bedzie to wygladalo tak:

...
kod programu
.....
M200 ( port 5 aktywny - zalacz przystawke)
G04 P5.0 (czas na nagwinotwanie otworu)
M201 ( wylacz port 5)
....
kontynuacja programu

Albo z tego co sie zorientowalem mozna utoworzyc makro np M555.m1s, ktore sklada sie z tego:

activateSignal(OUTPUT3)
sleep 100
deactivateSignal(OUTPUT3)

While Not isActive(INPUT4)
sleep 100
Wend


W programi wyglada to wtedy tak:
X100 Y100 ; najazd na pozycje
M555 ; aktywowanie wyjscia 3 i oczekiwanie na wejscie nr 4
X200 Y200 ; kontynuacja programu, najazd na nowa pozycje
M555 ; kolejny otwor

: 30 gru 2012, 15:26
autor: kamil1986
Dzięki kolego gelo przetestuje makro zaraz po świętach i dam znać co i jak.

: 30 gru 2012, 18:23
autor: qqaz
gelo pisze:
activateSignal(OUTPUT3)
sleep 100
deactivateSignal(OUTPUT3)

While Not isActive(INPUT4)
sleep 100
Wend

Jeżeli :
sleep 100
wykonywana jest bezwarunkowo to czy może być tak ?
że:

activateSignal(OUTPUT3)
sleep 100 'przystawka startuje i szybko kończy
deactivateSignal(OUTPUT3)

While Not isActive(INPUT4)
sleep 100 'i się nie doczeka bo już wczesniej był impuls że skończyła
Wend[/b]

: 30 gru 2012, 19:18
autor: kamil1986
Dlaczego ma się nie doczekać nie testowałem makra ale dla mnie to będzie wyglądało tak:

M555 wywołanie makra
activateSignal(OUTPUT3)
sleep 100
deactivateSignal(OUTPUT3)

Na output3 pojawia się impuls trwający 100ms
przystawka startuje i po wykonaniu operacji wysyła impuls do macha który jest odbierany poleceniem :

While Not isActive(INPUT4)
sleep 100
Wend

Po odebraniu impulsu maszyna czeka 100ms i jedzie dalej aż do kolejnego wywołania makra. Jeśli źle rozumuję to proszę mnie poprawić.

: 30 gru 2012, 19:26
autor: qqaz
CZy konstrukcja :

While Not isActive(INPUT4)
sleep 100
Wend

oznacza że czeka na wejście do skutku
po którym dopiero odlicza zwłokę czy
czeka na wejście nie dłużej niż zwłoka?

Nic nie poprawiam, chcę dopytać działanie.

: 30 gru 2012, 19:30
autor: kamil1986
No faktycznie tego nie wiem sprawdzę po świętach ale wydaje mi się że czeka aż dostanie sygnał na wejście a potem odlicza zwłokę.

: 30 gru 2012, 19:32
autor: tuxcnc
qqaz pisze:CZy konstrukcja :

While Not isActive(INPUT4)
sleep 100
Wend

oznacza że czeka na wejście do skutku
po którym dopiero odlicza zwłokę czy
czeka na wejście nie dłużej niż zwłoka?

Nic nie poprawiam, chcę dopytać działanie.
Chyba sprawdza stan wejścia co sto jednostek czasu ?

.

: 30 gru 2012, 19:38
autor: qqaz
Bezpieczniej byłoby :
ustaw OUT
czekaj IN
zgaś OUT

przystawka:
czekaj OUT
zrób swoje podaj IN
czekaj -OUT
zdejmij IN