回复:求这个测头程序的含义

曹双零

  • 帖子

    54
  • 精华

    0
  • 被关注

    2

论坛等级:游侠

注册时间:2014-03-25

普通 普通 如何晋级?

发布于 2016-07-23 11:18:38

2楼

展开查看
以下是引用隐身人在2016-07-19 14:33:28的发言 >1楼

说说探头的工作过程再结合程序就好注释了。

他是先测中心孔 的Z 然后再测X 和Y的两个方向 , 垂直和左右 ,好像还用测的值进行了比较再写入坐标系的。很多东西我看不懂,求解释 。具体全部程序如下:
;== TOUCH PROBE == 测头
;-------------------------------------------------------

DEF INT T_SP, T_WP ; 定义主轴刀具和等待刀具为整数
DEF INT MEAS_HR ;定义测量MEAS_HR为整数
DEF INT RECHECK_PROBE=0 ;定义侧头为整数0
DEF FRAME CORR_FRM ;框架赋给

IF(MCODEH30>0) GOTOF CORR

NC_START:
LIM_ERR=0.15 ; 测量公差
PREV_ERR=0.05 ; 与以前的结果相比
TB_PRI_CNT=20 ; 测量间隔
SET_HR=10 ; 在停机10小时调整后的有效性
M61 ; 检测系统开启
STOPRE

IF(TB_CNTTB_CNT=TB_CNT+1 ;当前测量间隔+1
M62 ;检测系统关闭
RET
ENDIF

IF(MANU_CALI) GOTOF INI_CAL ;如果手动测量
IF(TB_CAL_ON) GOTOF START_T ;
STOPRE

INI_CAL:
TB_CAL_ON=0 ; (1:CALIBRATION FINISH);校准完成

START_T:
PROBE_OFFSET_ZOS ;
STOPRE

T_SP=$TC_MPP6[9998,1] ;主轴上的刀具 定义为 9998,1
T_WP=GETT(<IF (T_SP<>T_WP)
T=T_NO_PROBE ;呼叫测头
M6(0,)
ENDIF

SUPA
G90 G17 G500 G40

SOFT

IF(TB_CAL_ON) GOTOF MEASURING ;跳转至测量

CALIBRATION:
MSG("CALIBRATION")
G90 G0 G520 G60 X0 Y20 B=DC(0) SPOS=DC(0) T=FST_TOOL
M26
G0 Z2 D1
MS_SCAL1(1, 2, 15, -5, 0)

TB_CAL_ON=1
TB_CNT=TB_PRI_CNT
IF(MANU_CALI)
MANU_CALI=0
ENDIF

MEASURING:

G90 G0 G520 G60 X0 Y20 B=DC(0) SPOS=DC(0) T=FST_TOOL
M26
G0 Z2 D1
MS_TXYZ(1,-3,0,0,"TB_Z_LOG",0,0)
G0 X0 Y0
MS_HP(1,2,15,-5,0,0,0,0,"TB_XY_LOG",0)

G0 Z20
G53 G0 G603 D0 X=$MA_FIX_POINT_POS[1,X1] Y=$MA_FIX_POINT_POS[1,Y1] Z=$MA_FIX_POINT_POS[1,Z1] M=QU(9) M=QU(88) SPOSA=0 M62
$A_DBB[1]=38

M27

IF ((ABS(MS_ERR_X)>LIM_ERR)OR(ABS(MS_ERR_Y)>LIM_ERR)OR(ABS(MS_ERR)>LIM_ERR))AND(RECHECK_PROBE<=2)
RECHECK_PROBE=RECHECK_PROBE+1 ;核对测头
ENDIF

IF ((ABS(MS_ERR_X-PREV_ERR_X)>PREV_ERR)OR(ABS(MS_ERR_Y-PREV_ERR_Y)>PREV_ERR)OR(ABS(MS_ERR-PREV_ERR_Z)>PREV_ERR))AND(RECHECK_PROBE<=2)
RECHECK_PROBE=RECHECK_PROBE+1
ENDIF

IF (RECHECK_PROBE>0)AND(RECHECK_PROBE<=2) GOTOB MEASURING
STOPRE

LIM_CHK:
IF(ABS(MS_ERR_X)>LIM_ERR)OR(ABS(MS_ERR_Y)>LIM_ERR)OR(ABS(MS_ERR)>LIM_ERR) GOTOF ERR1
MEAS_HR=($A_DAY-MEAS_DAY)*24-MEAS_HOUR+$A_HOUR
IF(MEAS_HR>SET_HR)OR(MEAS_DAY==0)OR(MEAS_HOUR==0) GOTOF SAVE_VAR
IF(PREV_ERR_X==0)AND(PREV_ERR_Y==0)AND(PREV_ERR_Z==0) GOTOF SAVE_VAR
IF(ABS(MS_ERR_X-PREV_ERR_X)>PREV_ERR)OR(ABS(MS_ERR_Y-PREV_ERR_Y)>PREV_ERR)OR(ABS(MS_ERR-PREV_ERR_Z)>PREV_ERR) GOTOF ERR1
STOPRE

SAVE_VAR:
MEAS_DAY=$A_DAY
MEAS_HOUR=$A_HOUR
PREV_ERR_X=MS_ERR_X
PREV_ERR_Y=MS_ERR_Y
PREV_ERR_Z=MS_ERR ;测量修正的值赋给变量保存
TB_CNT=1 ;当前间隔测量次数置为1
STOPRE

CORR:
DEF_MACH_AX1=CTRANS(X,DEF_MACH_AX1_X,Y,DEF_MACH_AX1_Y,Z,DEF_MACH_AX1_Z):CTRANS(X,PREV_ERR_X,Y,PREV_ERR_Y,Z,PREV_ERR_Z) ;
STOPRE
RET

ERR1:
M0
MS_ERR_X=0
MS_ERR_Y=0
MS_ERR=0
SETAL(66117,"ABNORMAL RESULT") ;结果异常
M30
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SINUMERIK

共有25497条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。