Помогите со скриптом

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
tester551
Новичок
Сообщения: 4
Зарегистрирован: 18 авг 2023, 17:20
Репутация: 0
Контактная информация:

Помогите со скриптом

Сообщение tester551 »

Приветствую, на моем станке не работает команда G31, но я выяснил что если делать из скрипта и задержку перед ней при помощи Sleep, а не с G4 то можно заставить работать. VB я не знаю, но смог написать такой скрипт который вроде как должен работать, но не работает.
Выполнял по шагам, и происходят какие-то странные вещи, как и должно быть через 3 итерации выполняется условие "If Xcur = Xmax Then" и должен произойти выход из цикла, но он не выходит. После выполнения Exit Do опять в начало цикло попадает.


Код: Выделить всё

Sub Main()

Const ProbeSafeZ = 2
Const ProbeDepthZ = -1
Const ProbeFeed = 20

Xmax = 10
Ymax = 10
Pstep = 5




Xcur = 0
Ycur = 0


Open "C:\Users\user\Desktop\depth.txt" For Output As #1

Code "G0 Z" & ProbeSafeZ
Code "G0 X0 Y0"

 
While (IsMoving())
  Sleep(100)
Wend




Do

	Do


		Sleep(1000)
		Code("G31 Z" & ProbeDepthZ & " F" & ProbeFeed)
		While (IsMoving())
		  Sleep(100)
		Wend
		
		X = GetOEMDRO(800)
		Y = GetOEMDRO(801)
		Z = GetOEMDRO(802)
		Print #1,X, ",", Y,",",Z
		
	
		
		If Xcur = Xmax Then
			Exit Do
		End If		
	
	
		
		Xcur = Xcur + Pstep
		
		If Xcur > Xmax Then
			Xcur = Xmax
		End If		
		
		
		
		Code "G0 Z" & ProbeSafeZ
		
		Code "G0 X" & Xcur
		
		While (IsMoving())
			Sleep(100)
		Wend


		
		
	Loop
	
	

	If Ycur = Ymax Then
		Exit Do
	End If		
	
	
	Ycur = Ycur + Pstep
	
	If Ycur > Ymax Then
		Ycur = Ymax
	End If
		

	Code "G0 Z" & ProbeSafeZ
	Code "G0 X0 Y" & Ycur

	While (IsMoving())
		Sleep(100)
	Wend
	
	
Loop	




Close #1
Code "G0 Z" & ProbeSafeZ 
Code "G0 X0 Y0" 

End Sub

tester551
Новичок
Сообщения: 4
Зарегистрирован: 18 авг 2023, 17:20
Репутация: 0
Контактная информация:

Re: Помогите со скриптом

Сообщение tester551 »

Так и не понял что за глюк, пришлось по другому переделать.
Вот что получилось. Может кому пригодится у кого такие же проблемы с G31

Xmax и Ymax это размеры заготовки для измерения в мм. Pstep с каким шагом замерять тоже в мм. С остальным думаю понятно.


Код: Выделить всё

Sub Main()

Const ProbeSafeZ = 2
Const ProbeDepthZ = -1
Const ProbeFeed = 20

Xmax = 50
Ymax = 50
Pstep = 10

Open "C:\Users\user\Desktop\depth.txt" For Output As #1



Xcur = 0
Ycur = 0



XFlag = False 
YFlag = False

			
Code "G0 Z" & ProbeSafeZ
WaitingMove


Code "G0 X0 Y0"
WaitingMove

Do 

	Do 

		Sleep(500)
		Code("G31 Z" & ProbeDepthZ & " F" & ProbeFeed)
		WaitingMove
		
		X = GetOEMDRO(800)
		Y = GetOEMDRO(801)
		Z = GetOEMDRO(802)
		Print #1,X, ",", Y,",",Z
		
	
		Code "G0 Z" & ProbeSafeZ
		WaitingMove
				
		
		If Xcur = Xmax Then
			XFlag = True
		Else 
			Xcur = Xcur + Pstep
			
			If Xcur > Xmax Then Xcur = Xmax
				
			Code "G0 X" & Xcur
			WaitingMove							
						
		End If


	Loop Until XFlag
	
	

	If Ycur = Ymax Then
		YFlag = True
	Else
	
		XFlag = False
		Xcur = 0
	
		Ycur = Ycur + Pstep
		If Ycur > Ymax Then Ycur = Ymax
		
		Code "G0 X0 Y" & Ycur
		WaitingMove			
	 
	End If
		
	
Loop Until YFlag	

Close #1
Code "G0 Z" & ProbeSafeZ 
Code "G0 X0 Y0" 

End Sub
   

Sub waitingMove
	While (IsMoving())
		Sleep(100)
	Wend
End Sub

Ответить

Вернуться в «Windows / Mach»