Prośba o pomoc w napisaniu makra

Dyskusje dotyczące najpopularniejszego programu sterującego maszynami CNC

Autor tematu
kamil1986
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 7
Posty: 316
Rejestracja: 10 cze 2007, 15:09
Lokalizacja: Ostrów

Prośba o pomoc w napisaniu makra

#1

Post napisał: kamil1986 » 28 gru 2012, 22:35

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.



Tagi:


dziabi3
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 5
Posty: 874
Rejestracja: 13 sie 2009, 16:15
Lokalizacja: xxx

#2

Post napisał: dziabi3 » 30 gru 2012, 05:53

Napsz po nwym roku to ci to napisze bez problemu tylko nie z1 ale na m kodzie
Mach3 + CSMIO = :-) :-) :-)

Awatar użytkownika

gelo
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 2
Posty: 1028
Rejestracja: 01 kwie 2006, 22:08
Lokalizacja: Wroclaw
Kontakt:

#3

Post napisał: gelo » 30 gru 2012, 09:58

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
>>>>>>>>>> GELO <<<<<<<<<<


Autor tematu
kamil1986
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 7
Posty: 316
Rejestracja: 10 cze 2007, 15:09
Lokalizacja: Ostrów

#4

Post napisał: kamil1986 » 30 gru 2012, 15:26

Dzięki kolego gelo przetestuje makro zaraz po świętach i dam znać co i jak.


qqaz
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 2111
Rejestracja: 28 sty 2007, 16:12
Lokalizacja: Łódź

#5

Post napisał: qqaz » 30 gru 2012, 18:23

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]


Autor tematu
kamil1986
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 7
Posty: 316
Rejestracja: 10 cze 2007, 15:09
Lokalizacja: Ostrów

#6

Post napisał: kamil1986 » 30 gru 2012, 19:18

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ć.


qqaz
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 2111
Rejestracja: 28 sty 2007, 16:12
Lokalizacja: Łódź

#7

Post napisał: qqaz » 30 gru 2012, 19:26

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.


Autor tematu
kamil1986
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 7
Posty: 316
Rejestracja: 10 cze 2007, 15:09
Lokalizacja: Ostrów

#8

Post napisał: kamil1986 » 30 gru 2012, 19:30

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ę.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 7861
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

#9

Post napisał: tuxcnc » 30 gru 2012, 19:32

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 ?

.


qqaz
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 5
Posty: 2111
Rejestracja: 28 sty 2007, 16:12
Lokalizacja: Łódź

#10

Post napisał: qqaz » 30 gru 2012, 19:38

Bezpieczniej byłoby :
ustaw OUT
czekaj IN
zgaś OUT

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

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Mach 2 / 3 / 4 (ArtSoft software)”