macro to return the tool from the spindle to the magazine
example, of course,
'---------------------------------------------------------------------------------------------------------------
' oddanie narzędzia z wrzeciona do magazynu
' andmar2005
'---------------------------------------------------------------------------------------------------------------
Dim a, b, c
' ----------------------------------------------------------------------------
 magazyn_zbazowanie
 powietrze_C
 wrzeciono_0
   
 T_wrzeciono = GetUserLabel(9)
 pozycja_magazyn = GetUserLabel(10)
   
 If (pozycja_magazyn = T_wrzeciono) Then
    Sleep(50)
    Message("Oddaje narzędzie")
    Oddaje
    SetUserLabel(9,0)
    Sleep(50)
    End
 End If
   
 If (T_wrzeciono =0) Then
    Sleep(150)
    Message("Co mam Oddać jest T" & nowe_T)
    Sleep(150)
    End
 End If   
   
    a=GetUserLabel(10) 'pozycja magazynu
    b=GetUserLabel(9) ' T w wrzecinie
    c=20 'ilość narzędzi w magazynie
    
    x= a-b
    y= b-a
' ----------------------------------------------------------------------------
  If x<0 Then          
    z= x+c
  End If 
  
  If x>0 Then          
    z= x
  End If 
' ----------------------------------------------------------------------------
  If y<0 Then          
    t= y+c
  End If 
  
  If y>0 Then          
    t= y
  End If 
' ----------------------------------------------------------------------------
  If t>z Then ' w lewo
   W_lewo
  End If
  If t<z  Then ' w prawo 
   W_prawo
  End If
' ----------------------------------------------------------------------------
  If t=z Then ' warunek specjalny poniewaz mamy parzysta wartosc narzedzi 
   W_prawo
  End If
  Oddaje
End
  
' ----------------------------------------------------------------------------
'Oddaje narzędzie do magazynu
Sub Oddaje()
     Code "G53 Z4 F2000" ' pozycja wymiany narzędzia
        While IsMoving() 
         Sleep(50) 
        Wend
      Sleep(20)
     Code "G90"
     
     ActivateSignal(OUTPUT13) 'Magazyn w prawo
       If(Not GetUserLed(1307)) Then 'Sprawdzam czy jest w prawo
        While GetUserLed(1307) =0
        Sleep(20)
        Wend
       End If    
     DeActivateSignal(OUTPUT13)
     Sleep(20)
     ActivateSignal(OUTPUT16)'Blokada narzędzia - odblokuj
       If(Not GetUserLed(1305)) Then 'Sprawdzam czy odblokował
        While GetUserLed(1305) =0
        Sleep(20)
        Wend    
       End If
     ActivateSignal(OUTPUT15)'Magazyn w dół
       If(Not GetUserLed(1309)) Then 'Sprawdzam czy jest w dół
        While GetUserLed(1309) =0
        Sleep(20)
        Wend
       End If 
     DeActivateSignal(OUTPUT16)'Blokada narzędzia - zablokuj
     Sleep(20)
     DeActivateSignal(OUTPUT15)
     Sleep(20)
     ActivateSignal(OUTPUT12)'Magazyn w lewo
       If(Not GetUserLed(1306)) Then 'Sprawdzam czy jest w lewo
        While GetUserLed(1306) =0
        Sleep(20)
        Wend
       End If 
     DeActivateSignal(OUTPUT12)
     ActivateSignal(OUTPUT14)'Magazyn w góre
       If(Not GetUserLed(1308)) Then 'Sprawdzam czy jest w góre
        While GetUserLed(1308) =0
        Sleep(20)
        Wend
       End If
   DeActivateSignal(OUTPUT14)
   Sleep(20)
   Message("ODDAŁEM NARZĘDZIE T" & T_wrzeciono)
   Sleep(50)
   SetUserLabel(9,0)
   czekam_na_wykonanie
End Sub
' ----------------------------------------------------------------------------
'Magazyn obraca sie w lewo   
Sub W_lewo()
        While (Not Szukam_T)
   nrT_M = GetuserLabel(10)
                ActivateSignal(OUTPUT18)' rozładowanie kondensatora - wylączone
                Sleep(50)
                SetUserLabel(11,"L")
           ActivateSignal(OUTPUT10)
               Sleep(800)   
 If(Not GetUserLed(1301)) Then
  While   GetUserLed(1301) =1
  Sleep(10)
  Wend
 End If
DeActivateSignal(OUTPUT10) ' obroty w lewo - wyłączone
Sleep(50)
DeActivateSignal(OUTPUT18) 'rozładowanie kondensatora - wlączone
Sleep(20)
ActivateSignal(OUTPUT11)' obroty w prawo - włączone w celu wychamowania silnika
Sleep(50)
DeActivateSignal(OUTPUT11)' obroty w prawo - wyłączone
 SetUserLabel(10,(nrT_M - 1))
 Sleep(15)
 a=GetuserLabel(10)
 If a=0 Then
 SetuserLabel(10,c)
 End If
SetUserLabel(11,"") 
           
           
        If(GetuserLabel(10) = T_wrzeciono) Then 
          Szukam_T = true
        End If
                  Sleep(50)  
        Wend  
End Sub   
' ----------------------------------------------------------------------------
'Magazyn obraca sie w prawo
Sub W_prawo()
        While (Not Szukam_T)
   nrT_M = GetuserLabel(10)
                ActivateSignal(OUTPUT18)' rozładowanie kondensatora - wylączone
                Sleep(50)
                SetUserLabel(12,"") 
           ActivateSignal(OUTPUT11)
Sleep(800)   
 If(Not GetUserLed(1301)) Then
  While   GetUserLed(1301) =1
  Sleep(10)
  Wend
 End If
DeActivateSignal(OUTPUT11) ' obroty w lewo - wyłączone
Sleep(50)
DeActivateSignal(OUTPUT18) 'rozładowanie kondensatora - wlączone
Sleep(20)
ActivateSignal(OUTPUT10)' obroty w prawo - włączone w celu wychamowania silnika
Sleep(50)
DeActivateSignal(OUTPUT10)' obroty w prawo - wyłączone
 SetUserLabel(10,(nrT_M + 1))
 Sleep(15)
 a=GetuserLabel(10)
 If a=c+1 Then
 SetuserLabel(10,1)
 End If
SetUserLabel(12,"") 
           
      If(GetuserLabel(10) = T_wrzeciono) Then 
        Szukam_T = true
      End If
                   Sleep(50)
          Wend 
End Sub
' ----------------------------------------------------------------------------
'Sprawdzam zbazowanie magazynu   
Sub magazyn_zbazowanie()
   If GetUserLed(1032) =0 Or GetUserLabel(10) = "" Then
    okno = MsgBox("MAGAZYN BRAK ZBAZOWANIA"& Chr(10) &""& Chr(10) &">> ZBAZUJ MAGAZYN <<" ,16, "BAZOWANIE MAGAZYNU")
    Sleep(50)
    End
   End If
End Sub   
' ----------------------------------------------------------------------------
' Jesli  narzedzie to T0 w wrzecionie
Sub wrzeciono_0 ()
   If GetUserLabel(9) = 0 Then
           okno = MsgBox("CO MAM ODDAĆ "& Chr(10) &""& Chr(10) &">> WRZECIONO JEST PUSTE <<" ,16, " **** T0 **** ")
           Sleep(50)
           End 
        End If
End Sub
' ----------------------------------------------------------------------------
' Jesli  brak ciśnienia powietrza
Sub powietrze_C ()
   If GetUserLed(1005) = 1 Then
           okno = MsgBox("Brak ciśnienia "& Chr(10) &""& Chr(10) &">> POWIETRZA <<" ,16, " POWIETRZE ")
           Sleep(50)
           End 
        End If
End Sub         
' ----------------------------------------------------------------------------   
Sub czekam_na_wykonanie ()
   While IsMoving() 
   Sleep(50) 
   Wend
End Sub 
'------------------------------------------------------------------------------