Machsupport Forum

Mach Discussion => VB and the development of wizards => Topic started by: netdude on October 19, 2017, 01:57:57 PM

Title: center probe script problems
Post by: netdude on October 19, 2017, 01:57:57 PM
I have been using the script below with triple edge finder (http://www.themakersguide.com/home/products/triple-edge-finder-2). The script is supposed to move -X until it touches, return to center, +X, then -Y, then +Y. Problem is sometimes the script starts +X first and when it touches right edge of edge finder it then immediately rapids to furthest +X and hits the limit switch and stops. Scares the hell out of me. I usually have to power down CNC (uses etherstepper if that matters any) before it will work correctly. I now know if it starts left (-X) first it will work and if it starts right it will mess up so I immediately stop the machine before it goes haywire.

Any help would be great. Thanks.

========================
Rem   VBScript To center probe inside a pipe

If GetOemLed (825) <> 0 Then       'Check to see if the probe is already grounded or faulty
   Code "(Probe plate is grounded, check connection and try again)"
Else
   FeedCurrent = GetOemDRO(818)    'Get the current settings
   XCurrent = GetDro(0)
   YCurrent = GetDro(1)

   Code "G4 P1"         'Pause 1 second to give time to position probe plate
   Code "F4"         'slow feed rate to 4 ipm

Rem   Probe Left
  
   XNew = Xcurrent - 1      'probe 3 inches to left
   Code "G31 X" &XNew
   While IsMoving()      'wait for the move to finish
   Wend
   XPos1 = GetVar(2000)      'get the probe touch location

   Code "G0 X" &XCurrent      'rapid move back to start point

Rem   Probe Right
  
   XNew = XCurrent + 1      'probe 3 inches to right
   Code "G31 X" &XNew
   While IsMoving()
   Wend
   XPos2 = GetVar(2000)

   XCenter = (XPos1 + XPos2) / 2   'center is midway between XPos1 and XPos2
   Code "G0 X" &XCenter      'rapid move to the x center location

Rem   Probe up

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

   Code "G0 Y" &YCurrent

Rem   Probe down
  
   YNew = YCurrent - 1
   Code "G31 Y" &YNew
   While IsMoving()
   Wend
   YPos2 = GetVar(2001)

   YCenter = (YPos1 + YPos2) / 2

Rem   move To the center
  
   Code "G0 Y" &YCenter
   While IsMoving ()
   Wend

   Code "F" &FeedCurrent        'restore starting feed rate
End If