Zobacz to 
My M6start 
'---------------------------------------------------------------------------------------------------------------
' Automatyczny pomiar bazy materiałowej dla osi Z
' andmar2005
'---------------------------------------------------------------------------------------------------------------
Dim obecby_posow
Dim jakie_G
Const Podkladka_pomiarowa = 41.45  '<<TU PODAJEMY WYSOKOŚĆ PODKŁADKI POMIAROWEJ
'---------------------------------
Const o_ile = 8.55 '<< Tu podajemy o ile podniesie się w osi Z nad PODKŁADKE POMIAROWA
'---------------------------------
Const droga_pomiaru = -5 ' << Tu podajemy odcinek pomiaru -w osi Z pojedzie -5mm
'---------------------------------
Const posow_pomiaru = 25 ' << Tu podajemy posów pomiaru -w osi Z pojedzie F25
'---------------------------------
Sub Program
 zbazowonie_maszyny
 sprawdzam_wrzeciono
 sprawdzam_czujnik
 odczyt_F
 odczyt_G
'---------------------------------------------------------------------------------------------------------------
'Zaczyna pomiar
    Call SetOemDro(42,0)'UWAGA ZERUJE OWSET DANEGO NARZĘDZIA !!!!
    Sleep(100)
    DoOEMButton (1010) 'Zeruje dro osi Z 
    Code "G4 P2" ' odmierza czas
    Code "G90"
    Code "G31 Z" & droga_pomiaru & "F" & posow_pomiaru 'Start pomiaru - jedzie w z do styku Podkladka_pomiarowa
    czekam_na_wykonanie
    Styk_sondy = GetVar(2002) 'Przechwytuje miejsce styku do Podkladka_pomiarowa
    Code "G0 Z" &Styk_sondy 'Powraca do miejsca styku
    czekam_na_wykonanie
    przekroczenie_Z
'---------------------------------------------------------------------------------------------------------------
'Jeśli narzędzie nie przekroczyło parametru droga_pomiaru
    Call SetDro (2, Podkladka_pomiarowa) ' Wpisuje wysokość PODKŁADKI POMIAROWEJ
    Czekam_na_wykonanie
    Code "G4 P0.25" 'odmierza czas
    odczytDroZ = GetDro(2)
    Code "G1 Z" & odczytDroZ + o_ile & "F300" 'Podnosi oś Z nad PODKŁADKE POMIAROWA
    Code "(Oś Z ustawiona na zerze materiału Przykładowo G54 w osi Z)" 'info o wykonaniu pomiaru
    czekam_na_wykonanie
 End If
 wpisuje_F
 wpisuje_G 
End Sub
'---------------------------------------------------------------------------------------------------------------
Sub zbazowonie_maszyny ()
If GetOEMLed(807) Or GetOEMLed(808) Or GetOEMLed(809) Then
     bazowanie = MsgBox("Maszyna nie zbazowana"& Chr(10) &""& Chr(10) &"ZBAZUJ MASZYNE" ,16, "BAZOWANIE")
     End
End If
End Sub
'---------------------------------------------------------------------------------------------------------------
Sub sprawdzam_wrzeciono () 'Sprawdza czy wrzeciono pracuje
If GetOEMLed(11) Then
wrzeciono = MsgBox("Wrzeciono ON"& Chr(10) &""& Chr(10) &"WYŁĄCZAM >> WRZECIONO OFF <<" ,48,"TEST PRACY WRZECIONA")
  If wrzeciono = 1 Then
      Code "M5" 
      Sleep (500) 
      Message "Wrzeciono OFF"
      Sleep (100)
      czekam_na_wykonanie
  End If
End If
End Sub
'---------------------------------------------------------------------------------------------------------------
Sub sprawdzam_czujnik ()
If GetOemLed (825)=0 Then 'Sprawdź czy sonda jest zwarta przed pomiarem
     Else
     test = MsgBox("Sprawdź czujnik"& Chr(10) &""& Chr(10) &"JEST TERAZ ZWARTY" ,32, "TEST CZUJNIKA") 'Komunikat
     End
End If
End Sub
'---------------------------------------------------------------------------------------------------------------
Sub odczyt_F ()
   obecby_posow = GetOemDRO(818) 'odczyt aktualnego F
End Sub
'---------------------------------------------------------------------------------------------------------------
Sub wpisuje_F ()
    Code "F" & obecby_posow& 'wczytuje odczytany F
End Sub
'---------------------------------------------------------------------------------------------------------------
Sub odczyt_G ()
jakie_G = GetOemLED(48) 'odczyt G90 czy G91
End Sub
'---------------------------------------------------------------------------------------------------------------
Sub wpisuje_G ()
    If jakie_G = 0 Then 'przywraca odczytany G90 lub G91
    Code "G91"
    End If 
End Sub
'---------------------------------------------------------------------------------------------------------------
Sub przekroczenie_Z () 
     test_Z= GetDro(2)
     If (test_Z) <= (droga_pomiaru) Then 'Oblicza czy nie przekroczyło droga_pomiaru
       pomiar = MsgBox("BRAK SYGNAŁU Z CZUJNIKA"& Chr(10) &""& Chr(10) &">> PONOW POMIAR OSI - Z - <<" ,16, "DROGA POMIARU")
       wpisuje_F
       wpisuje_G 
       End
     End If
Sub End
'---------------------------------------------------------------------------------------------------------------
Sub czekam_na_wykonanie ()
   While IsMoving() 
   Sleep(50) 
   Wend
End Sub 
'---------------------------------------------------------------------------------------------------------------
'Koniec