|
论坛上传附件下 载出错,我直接把优化后的Mach3的对刀及校零代码原文贴上来吧,这样就不怕丢了,大家拷贝后直接贴到相应按钮的VB代码中。
一. 对刀代码:
Message "对刀开始,请准备..."
CurrentFeed=GetOEMDRO(818) '获得当前进给率
CurrentZ=GetOEMDRO(802) '获得当前Z坐标值
MsgBox("请务必确认对刀线路连接良好!!")
Code "G4 P1" '执行G4代码,程序停顿1秒,等候准备工作
Code "F100" '为探测设置进给速率为100 mm/min
GageH=GetUserDRO(1001) '获取用户设置的测量块高度
ZNew=CurrentZ-30 'Z轴目标为当前高度向下移动30mm
Code "G31 Z"&ZNew '执行G31,向下进行30mm探测
While IsMoving() '等待触碰,执行这个函数后,当所有轴停止则返回0
Wend ' end while
Znew=GetOEMDRO(802) '获得当前Z坐标值
Call SetDro(2,GageH) '将量块高度指定给Z轴坐标,实现量块底面为Z轴0坐标
FinalMove=GageH+3 '对刀后Z轴上移至量块顶面上方3mm
Code "G0 Z"&FinalMove '执行Z轴移动到最终位置
Code "F"&CurrentFeed '回存保留的进给率
Message "Z0=" & Znew & ", 对刀结束,工件顶面已置为Z轴零点。"
二、Z校零代码
Dim Lz(100) As Double '每行的Z值先记录在数组中
Dim Yk As Integer
Dim Xk As Integer
TotX=GetOEMDRO(1221) '用户从DRO输入需要测试区域X方向最大坐标mm
TotY=GetOEMDRO(1222) '用户从DRO输入需要测试区域Y方向最大坐标mm
Testep=GetOEMDRO(1223) '用户从DRO输入每个测试样本点步进mm
Open "CNCZ0fix.z0f" For Output As #1 '新建测试数据记录文件
Print #1, TotX & "," & TotY & "," & Testep ' 写TotX,TotY,Testep到文件
Message "检查开始,请准备..."
MsgBox("请务必确认对刀线路连接良好!!")
Code "G4 P1" '执行G4代码,程序停顿1秒,等候准备工作
CurrentFeed=GetOEMDRO(818) '获得当前进给率
Code "F100" '为探测设置进给速率为100 mm/min
GageH=GetUserDRO(1001) '获取用户设置的测量块高度
X0=GetOEMDRO(800) '获得起始点X坐标值
Y0=GetOEMDRO(801) '获得起始点Y坐标值
Message "TotalX=" & TotX & ",TotalY=" & TotY & ",Testep=" & Testep
Yk=0 '当前行号
For Y=Y0 To TotY Step Testep
Code "G0 Y" & Y '走刀到当前Y
Yk=CInt(Y/Testep) '当前行号(从0开始)
If (YK Mod 2)=0 Then
Xbg=X0 '奇数行X轴起始位置
Xed=TotX '奇数行X轴终止位置
Xsp=Testep '奇数行X轴步进
Else
Xbg=TotX '偶数行X轴起始位置
Xed=X0 '偶数行X轴终止位置
Xsp=-Testep '偶数行X轴步进
End If
For X=Xbg To Xed Step Xsp
Code "G0 X" & X '走刀到当前X
CurrentZ=GetOEMDRO(802) '获得当前Z坐标值
ZNew=CurrentZ-10 'Z轴目标为当前高度向下移动10mm
Code "G31 Z" & ZNew '执行G31,向下进行探测
While IsMoving() '等待触碰,执行这个函数后,当所有轴停止则返回0
Wend 'end while
Znew=GetOEMDRO(802) '记录刀尖触碰时Z的位置
FinalMove=Znew+2 '对刀后Z轴上移至量块顶面上方2mm
Code "G0 Z" & FinalMove '执行Z轴移动到最终位置
Z0=Znew-GageH '减去量块高度,得到Z0平面误差
Xk=CInt(X/Testep) '当前列号(从0开始)
Lz(Xk)=Z0 'Z0值暂存数组中
Message "TotalX=" & TotX & ",TotalY=" & TotY & "; X=" & X & ",Y=" & Y & ",Z0=" & Z0 '信息栏输出完成的测试点信息
Next
For X=X0 To TotX Step Testep '完成一行后,统一写测试信息
Xk=CInt(X/Testep) '当前列号(从0开始)
Print #1, X & "," & Y & "," & Lz(Xk) '写X,Y,Z0到文件
Next
Next
Close #1
Code "F" & CurrentFeed '回存保留的进给率
Code "G0 X" & X0 & "Y" & Y0 '返回起始点
Message "检测完毕,数据保存至CNCZ0fix.z0f" |
|