Strona 1 z 1

macro w machu

: 02 maja 2010, 17:45
autor: wasio
Witam
Od jakiegś czasu próbuje napisać macro w MACHu i mam z nim mały problem.
Czy moglibyście żucić na to okiem i coś podpowiedzieć.

M15:
ActivateSignal(7)
ActivateSignal(8)

M16:
DeActivateSignal(7)
DeActivateSignal(8)

M17:
Code "M15"

tutaj brakuje mi polecenia któro czeka na sygnał z np input1 oraz input2

Code "G1 X150 F1000"
Code "M16"

tutaj brakuje mi polecenia któro czeka na sygnał z np input3 oraz input4

Code "G1 X50 F1000"

jakim poleceniem można pobrać prędkość przejazdu z np DRO control(okienko gdzie można wpisac wartość prędkości)?
szkałem ale nie znalazłem rozwiązania mojego problemu

: 02 maja 2010, 21:17
autor: krzysiekgrab
rozwiązanie na problem 1 i 2:

label1:
If IsActive(input1) Then
message"input 1 aktywny"

Else
message"oczekiwanie na aktywacje wejscia 1"
GoTo label1:
End If


problem 3:

x=getdro(18)
message(x)

: 02 maja 2010, 21:43
autor: wasio
Code "M15"

label1:
If IsActive(input1) Then
message"input 1 aktywny"
Else
message"oczekiwanie na aktywacje wejscia 1"
GoTo label1:
End If

Dlaczego proram czeka na sygnał input1 przed wykonaniem M15 i wykonuje tą insrukcję dopiero po podaniu sygnału na input1?
Powinien najpierw wykonać M15 a dopiero potem czekać na sygnał input1.

: 02 maja 2010, 22:11
autor: krzysiekgrab
u mnie dziala wszystko ok, tzn wykonuje polecenia tak jak trzeba

: 02 maja 2010, 22:21
autor: wasio
problem rozwiązany
zamiast M15 wstawiłem zawartość tej komendy i działa prawidłowo

Co do problemu nr3

x=getdro(18)
message(x)

któro dokładnie okienko jest oznaczone numerem 18 bo nie znalazłem
mam okienko: X Velocity i chciałbym żeby z niego była pobierana prędkość

: 02 maja 2010, 22:35
autor: krzysiekgrab
18 to zadaa prędkość, natomiast o ile się dobrze orientuje, to x velocity to aktualna prędkośc z jaką pracuje oś x, uwzględnia rampę, czyli przyśpieszanie i zwalnianie

: 02 maja 2010, 22:52
autor: wasio
to jak w takim razie moge podawać prędkośc tylko dla jednej z osi tzn żeby macro pobierało z określonego okienka prędkość dla jednej osi a druga pracowała na zadanej prędkości np w druim oknie(osie nie pracują jednocześnie czyli jeżeli jedna jedzie to druga stoi

: 02 maja 2010, 23:19
autor: krzysiekgrab
predkosc z jaka ma sie wykonywac ruch definiujemy po przez parametr F, np F1000,

: 03 maja 2010, 00:26
autor: wasio
Co do parametru F to wiem do czego on służy, tylko chodziło mi o to czy da sie go pobierać z okienka ale tylko dla jednej osi

Drugi problem
czy mółby ktoś sprawdzić u siebie to macro:

zapisane jako M17

ActivateSignal(7)
ActivateSignal(8)
label1:
If IsActive(input1) Then
message " "
Else
message " "
GoTo label1:
End If
Code "G1 Y150 F1500"
While IsMoving
Wend
DeActivateSignal(7)
DeActivateSignal(8)
label2:
If IsActive(input2) Then
message " "
Else
message " "
GoTo label2:
End If
Code"G1 Y0 F2500"
While IsMoving
Wend

gdy w MDI wpisuje M17 to wszystko działa ale jak wczytam program np

G1 X150 F1500
M17

to wiesza mi sie MACH
czy ktoś wie gdzie robię błąd

pytanie nieaktualne, znalazłem błąd który wieszał program
wygląda na to że użycie pętli:

If IsActive(input2) Then
message " "
Else
message " "

powodowało problem, po zmianie kodu na poniższy problem znika(może sie komuś przyda):

ActivateSignal(7)
ActivateSignal(8)
SystemWaitFor(18)
While IsMoving
Wend
Code "G1 Y150 F1500"
While IsMoving
Wend
DeActivateSignal(7)
DeActivateSignal(8)
SystemWaitFor(19)
While IsMoving
Wend
Code "G1 Y0 F2000"
While IsMoving
Wend