Macro do zmiany narzędzia - dwa problemy

Dyskusje dotyczące najpopularniejszego programu sterującego maszynami CNC
Awatar użytkownika

Autor tematu
djronin
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 262
Rejestracja: 22 kwie 2011, 01:19
Lokalizacja: Jarocin

Macro do zmiany narzędzia - dwa problemy

#1

Post napisał: djronin » 14 gru 2015, 15:16

Witam znalazłem w sieci macro i nieco je przerobiłem ale jest problem bo o ile działa ono na nakładce Mill to na Turn (miejsce przeznaczenia) zdaje się nie reagować na komendy GetSelectedTool i GetCurrentTool. Czy może ktoś sprawdzić to u siebie?
kolejna sprawa to jak sprawdzić czy dana oś jest wyzerowana? (chodzi o komende)..

Kod: Zaznacz cały

'Sprawdzenie czy magazyn znalazł 1 narzędzie
'Jak sprawdzić czy oś Y jest wyzerowana???
'If  Not ????????? Then 'Jesli nie była wyzerowana
'    CODE "G90 G92 Y0"
'    CODE "G90 G28.1 Y0"
'    While IsMoving
'        sleep(10)
'    Wend
'    SetCurrentTool(1)
'End If

Dim iToolNum        As Integer
Dim iCwSteps        As Integer
Dim iCcwSteps       As Integer
Dim iHoldingDRO     As Integer
Dim iSelectTool     As Integer
Dim iCurrentTool    As Integer
Dim iCwFeed         As Integer
Dim iCcwFeed        As Integer

iToolNum     = 8
iCwSteps     = 360/iToolNum
iCcwSteps    = 10
iHoldingDRO  = 1050
iSelectTool  = GetSelectedTool()
iCurrentTool = GetCurrentTool()
iCwFeed      = 3000
iCcwFeed     = 3200
iCurrentFeed = GetOEMDRO(818)


Message ("Wybrano Narzedzie nr = " &  iSelectTool)
SLEEP(2000)
Message ""
If (iSelectTool > iToolNum) Then
    Message "Wybrano za wysoki numer narzedzia "
    Code "M30"
    End
End If

If iSelectTool < 1 Then
    Message "Wybrano za niski numer narzedzia "
    Code "M30"
    End
End If
If iSelectTool = iCurrentTool Then
    'NOP
Else
If iSelectTool > iCurrentTool Then
    moves = iSelectTool - iCurrentTool
End If
If iSelectTool > iCurrentTool Then
    moves = iToolNum - iCurrentTool + iSelectTool
End If

total_move = (moves * iCwSteps)+(iCcwSteps/2)

Code "G90 G00 G53 Z-2 X-2"
While IsMoving()
    sleep(10)
Wend
Code "G91 G94"
Code "G01 Y" & total_move & " F" & iCwFeed
Code "G01 Y-" & iCcwSteps & " F" & iCcwFeed
While IsMoving()
    sleep(10)
Wend
SetCurrentTool(iSelectTool)
SetUserDRO(iHoldingDRO,iSelectTool)
Code "G90"
Code "F" & iCurrentFeed
End If     


[ Dodano: 2015-12-14, 21:37 ]
ok jeden problem sobie rozwiązałem... chodzi o to że z przyzwyczajenia (frezer) wpisywałem T1M6 zamiast T0101M6. Ale nadal został problem aby program sprawdził czy zna pozycje narzędzia.


...Programowanie ma to do siebie, że urzeczywistnienie nawet najbardziej
oczywistego pomysłu jest znakomitą definicją słowa "frustracja"...

Tagi:

Awatar użytkownika

Autor tematu
djronin
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 262
Rejestracja: 22 kwie 2011, 01:19
Lokalizacja: Jarocin

#2

Post napisał: djronin » 16 gru 2015, 22:29

Można by powiedzieć, że temat zamknięty choć nie do końca bo zamiast sprawdzenia czy OŚ jest wyzerowana to wykorzystałem wyjście OUTPUT4 które nie jest aktywne po włączeniu programu, podczas zmiany narzędzia macro sprawdza stan wyjścia OUTPUT4 i jeśli jest 0 (False) to następuje automatyczne bazowanie osi i stan na OUTPUT4 zostaje zmieniony na 1 (True). Od tej pory magazyn pamięta pozycje narzędzia do momentu naciśnięcia RESET lub zaniku napięcia..

Udostępniam gdyby ktoś chciał poćwiczyć sobie technikę budowy Macro dla Macha3 (VBScript)

Kod: Zaznacz cały

Sub main
Dim iToolNum        As Integer
Dim iCwSteps        As Integer
Dim iCcwSteps       As Integer
Dim iHoldingDRO     As Integer
Dim iSelectTool     As Integer
Dim iCurrentTool    As Integer
Dim iCwFeed         As Integer
Dim iCcwFeed        As Integer
Dim RefTool         As Integer
Dim moves


'Konfiguracja
iToolNum     = 8    'maksymalna ilosc narzedzi
RefTool      = 1    'numer narzedzia po wyzerowaniu osi
iCwFeed      = 5000 'posuw zmiany
iCcwFeed     = 1000 'posuw cofania

'Najazd na punkt wymiany narzedzia
Code "G90 G00 G53 Z-2 X-2"
While IsMoving()
Message "Najazd na ptk wymiany"
    sleep(100)
Wend
sleep(200)
Message ""


iSelectTool  = GetSelectedTool()
iCurrentTool = GetCurrentTool()
iCwSteps     = 360/iToolNum
iCcwSteps    = iCwSteps/2
iHoldingDRO  = 1050
iCurrentFeed = GetOEMDRO(818)

If Not (IsOutputActive(Output4)) Then
Message "Pozycja magazynu nie jest znana"
sleep(1500)
Message ""
    CODE "G90 G92 Y0"
    CODE "G90 G28.1 Y0"
    While IsMoving
        Message "Bazowanie osi magazynu"
        sleep(500)
        Message ""
        sleep(250)
    Wend
    Message ""
    iCurrentTool = RefTool
    ActivateSignal(Output4)
End If

If (iSelectTool > iToolNum) Or (iSelectTool < 1) Then
    Message "Numer Narzedzia z poza zakresu"
    Code "M30"
    End
End If

Message ("Wybrano Narzedzie nr = " &  iSelectTool)
sleep(250)

If (iSelectTool = iCurrentTool) Then
    'NOP
Else
If (iSelectTool < iCurrentTool) Then
    moves = iToolNum - iCurrentTool + iSelectTool
End If
If (iSelectTool > iCurrentTool) Then
    moves = iSelectTool - iCurrentTool
End If

total_move = (moves * iCwSteps)+(iCcwSteps)


Code "G94 G91 G01 Y" & total_move & " F" & iCwFeed
Code "G94 G91 G01 Y-" & iCcwSteps & " F" & iCcwFeed
While IsMoving()
    sleep(10)
Wend
SetCurrentTool(iSelectTool)
SetUserDRO(iHoldingDRO,iSelectTool)
Code "G90 F" & iCurrentFeed
End If
Message ""
End Sub 
a tutaj krótki filmik.


Pozdrawiam!!
...Programowanie ma to do siebie, że urzeczywistnienie nawet najbardziej
oczywistego pomysłu jest znakomitą definicją słowa "frustracja"...

ODPOWIEDZ Poprzedni tematNastępny temat

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