Script per trovare il centro di un pieno - errore...

Sezione dedicata a Mach3
Rispondi
orbscan
Junior
Junior
Messaggi: 90
Iscritto il: domenica 29 gennaio 2012, 23:36
Località: Roma

Script per trovare il centro di un pieno - errore...

Messaggio da orbscan » giovedì 17 gennaio 2013, 21:50

Serve per trovare il centro di un tondo pieno.
Quando lo lancio mi dà  errore...

Probabilmente la soluzione sta nelle prime quattro righe qui sotto (lo script è sicuramente funzionante).
Non capisco cosa vuol dire che devo linkare un bottone...
Poi ancora non capisco cosa devo "engaggiare"...

Grazie a chiunque avrà  la cortesia di rispondermi.
Carlo

This is the "Shaft" extract
To run it you have to link to a user button or include in yours other functions.

Take care, when you run the shaft procedure, a check is made to be sure that the gauge is not already engaged, than to continue the operation you must engage it (ground it like a push button).

'find shaft center and calculate diameter
Sub Shaft
Option Explicit

Dim TS As Single
Dim FeedCurrent, Xcurrent, Ycurrent , Zcurrent As Single
Dim XCenter, YCenter, XPos1, XPos2, YPos1, YPos2, XNew, YNew, ZNew, ZPos1,ZSafe As Single
Dim responce As Integer
Dim Max_move , Shaft_D As Double

Const ZClear = 10 'Safe Z
Const XMove = 4 'Max probe search
Const YMove = 4 'Max probe search
Const FSlow = 50 'edje search speed
Const Tout = 15 'Time out in seconds

Const Probe_Radius = 3.15 '

If GetOemLed (825) <> 0 Then 'Check to see if the probe is already grounded or faulty
Code "(Probe grounded, check connection and try again)"
responce = MsgBox ("Probe grounded, check connection and try again" , 0 , "Probe **ERROR**" )
Exit Sub
End If

Rem VBScript To shaft center

Max_move = Question ("Enter max shaft diameter, min value 1 mm")
If Max_move < 1 Then
Code "(Diameter < 1, Function abort)"
Exit Sub
End If

If Touch ("(Touch the Probe to start Shaft center function)") Then Exit Sub

Code "F" & FSlow

Rem Probe up

YNew = YCurrent + Max_move
Code "G31 Y" &YNew
While IsMoving()
sleep 100
Wend
YPos1 = GetVar(2001)

YNew = YPos1 - 0.5
Code "G0 Y" &YNew
ZNew = ZCurrent + ZClear
Code "G0 Z" &ZNew
YNew = YPos1 + Max_move + (Probe_Radius * 2) + 2
Code "G0 Y" &YNew
Code "G0 Z" &ZCurrent

Rem Probe down

YNew = YNew - Max_move - Probe_Radius
Code "G31 Y" &YNew
While IsMoving()
sleep 100
Wend
YPos2 = GetVar(2001)

YNew = YPos2 + 0.5
Code "G0 Y" &YNew
ZNew = ZCurrent + ZClear
Code "G0 Z" &ZNew
YCenter = (YPos1 + YPos2) / 2
Code "G0 Y" &YCenter

Rem Probe Left

XNew = XCurrent - Max_move - (Probe_Radius * 2) 'probe to left
Code "G0 X" &XNew
Code "G0 Z" &ZCurrent
XNew = XNew + Max_move + Probe_Radius
Code "G31 X" &XNew
While IsMoving() 'wait for the move to finish
sleep 100
Wend
XPos1 = GetVar(2000) 'get the probe touch location

XNew = XPos1 - 0.5
Code "G0 X" &XNew
ZNew = ZCurrent + ZClear
Code "G0 Z" &ZNew

Rem Probe Right

XNew = XPos1 + Max_move + (Probe_Radius * 2) + 2 'probe to right
Code "G0 X" &XNew
Code "G0 Z" &ZCurrent
XNew = XNew - Max_move - Probe_Radius
Code "G31 X" &XNew
While IsMoving()
sleep 100
Wend
XPos2 = GetVar(2000)

XNew = XPos2 + 0.5
Code "G0 X" &XNew
ZNew = ZCurrent + ZClear
Code "G0 Z" &ZNew
XCenter = (XPos1 + XPos2) / 2 'center is midway between XPos1 and XPos2
Code "G0 X" &XCenter 'rapid move to the x center location
While IsMoving ()
sleep 100
Wend

Shaft_D = (XPos2 - XPos1) - (2 * Probe_Radius)
Code "(Shaft diameter = " & Shaft_D & " mm)"
Code "F" &FeedCurrent 'restore starting feed rate
End Sub


'Wait for a probe touch - untouch
Function Touch (Tshow As String) As Integer

Code Tshow

'wait probe touch
TS = Timer
Do
If Timer - TS > Tout Then
Code "(Function Time Out, no probe touch detected)"
responce = MsgBox ("Function Time Out, no probe touch detected" , 0 , "Probe **ERROR**" )
Touch = 1
Exit Function
End If
sleep 100
Loop Until GetOemLed (825) <> 0

'short delay
sleep 1000 'let user to untouch probe

'Wait for probe untouch
TS = Timer
Do
If Timer - TS > 2 Then
Code "(Function Time Out, continuous probe touch detected)"
responce = MsgBox ("Function Time Out, continuous probe touch detected" , 0 , "Probe **ERROR**" )
Touch = 1
Exit Function
End If
sleep 100
Loop Until GetOemLed (825) = 0
Touch = 0
End Function

orbscan
Junior
Junior
Messaggi: 90
Iscritto il: domenica 29 gennaio 2012, 23:36
Località: Roma

Re: Script per trovare il centro di un pieno - errore...

Messaggio da orbscan » sabato 19 gennaio 2013, 13:06

A chi posso rivolgermi (anche a pagamento)?
Potete consigliarmi un programmatore o qualcuno in grado di aiutarmi?
Grazie
Carlo

orbscan
Junior
Junior
Messaggi: 90
Iscritto il: domenica 29 gennaio 2012, 23:36
Località: Roma

Re: Script per trovare il centro di un pieno - errore...

Messaggio da orbscan » sabato 19 gennaio 2013, 19:03


buby
Senior
Senior
Messaggi: 612
Iscritto il: domenica 10 giugno 2007, 10:32
Località: Rg

Re: Script per trovare il centro di un pieno - errore...

Messaggio da buby » domenica 17 febbraio 2013, 20:11

Linkare un pulsante, significa che devi associare lo script ad un pulsante x lanciarlo.
Lo puoi fare virtuale o esterno usando un imput, e sembrerebbe che lo gradisce normalmente chiuso verso massa.

Rispondi

Torna a “Mach3”