技术论坛

 系统时间变量的妙用,分享两个小程序

返回主题列表
作者 主题
右边
侠客

经验值:602
发帖数:79
精华帖:1
楼主    2021-10-24 18:52:23
主题:系统时间变量的妙用,分享两个小程序 精华帖 

本人是名操作工,在论坛各位大神帖子里学习到不少东西,在这里对各位大神表示感谢!

现在分享两个小程序供大家参照使用。这两个程序都是用到系统时间变量,自动读取记录坐标来做后续的计算使用。第1个程序的作用是利用机床来测量工件尺寸。可以在任意位置对显示坐标清零,到要测量位置读出测量值。

程序是利用读取系统时间变量来判断是否清零。按启动键后会暂停,让我们观看坐标值,再按启动键,结束程序。3秒钟内连续两次启动程序显示清零。(连续启动两次程序就要连按3次启动键,为了能连续启动,程序单段运行不要打开。)

只用把程序选在AUTO中,不用修改程序和对刀修改工件坐标。西门子系统手轮上就可以操作AUTO程序,并且可以看见坐标显示,因此在手轮上就可以完成操作。

当我们在A点打表对零后,在3秒内按3次启动键,程序就可以使显示坐标为0(程序内只是偏移坐标,并没有改变工件坐标,结束程序就会回到工件坐标),当我们看见显示值为0后,再按启动键,让程序结束。就可以移动到要测量的B点位置使表到零,这时启动程序,就可以读出测量坐标。再按启动键,程序结束。

只要没有在3秒内连续启动两次程序,就可以以第1点为基点,测量任意个点位。

使用此程序请注意:

1平时的程序不要在没有移动轴之前启动主轴

2使用此程序前一定要先选中

3按启动键前把倍率关至0




程序如下:

JL1[0]=$A_HOUR*3600+$A_MINUTE*60+$A_SECOND ;*RO*

IF JL1[0]<JL1[10] ;*RO*

JL1[10]=JL1[10]-86400 ;*RO*

ENDIF ;*RO*

JL1[6]=JL1[0]-JL1[10] ;*RO*

IF JL1[6]<3 ;*RO*

JL1[1]=$AA_IW[X] JL1[2]=$AA_IW[Y] JL1[3]=$AA_IW[Z] ;*RO*

TRANS X=JL1[1] Y=JL1[2] Z=JL1[3] ;*RO*

JL1[10]=JL1[0] ;*RO*

M0 ;*RO*

ELSE ;*RO*

TRANS X=JL1[1] Y=JL1[2] Z=JL1[3] ;*RO*

JL1[10]=JL1[0] ;*RO*

M0 ;*RO*

ENDIF ;*RO*

M30 ;*RO*




第2个程序是回转工作台B轴上工件自动找正。

程序如下:

JL7[0]=9999+$A_HOUR*60+$A_MINUTE ;*RO*

IF (JL7[18]>JL7[0])OR(JL7[19]>JL7[0]) ;*RO*

JL7[18]=JL7[18]-1440 JL7[19]=JL7[19]-1440 ;*RO*

ENDIF ;*RO*

TSR[12]=JL7[0]-JL7[19] TSR[13]=JL7[0]-JL7[18] ;*RO*

IF TSR[13]<10 GOTO ABCCD6 ;*RO*

IF TSR[12]<10 GOTO ABCCD7 ;*RO*

JL7[1]=$AA_IM[X] ;*RO*

JL7[2]=$AA_IM[Z] ;*RO*

JL7[11]=$AA_IW[X] JL7[12]=$AA_IW[Y] JL7[13]=$AA_IW[Z] JL7[14]=$AA_IW[W] JL7[15]=$AA_IW[V] ;*RO*

TRANS X=JL7[11]-1 Y=JL7[12]-1 Z=JL7[13]-1 W=JL7[14]-1 V=JL7[15]-1 ;*RO*

JL7[19]=JL7[0] ;*RO*

MSG("第一点坐标已记录,请移动到第二点") ;*RO*

M0 ;*RO*

G0 Z=IC(2) ;*RO*

M30 ;*RO*

ABCCD7: ;*RO*

JL7[3]=$AA_IM[X] ;*RO*

JL7[4]=$AA_IM[Z] ;*RO*

JL7[11]=$AA_IW[X] JL7[12]=$AA_IW[Y] JL7[13]=$AA_IW[Z] JL7[14]=$AA_IW[W] JL7[15]=$AA_IW[V] ;*RO*

TRANS X=JL7[11]-2 Y=JL7[12]-2 Z=JL7[13]-2 W=JL7[14]-2 V=JL7[15]-2 ;*RO*

TSR[5]=JL7[3]-JL7[1] TSR[6]=JL7[2]-JL7[4] ;*RO*

IF TSR[5]==0 GOTO ABCCD8 ;*RO*

JL7[18]=JL7[0] TSR[7]=ABS(TSR[5]) TSR[8]=ABS(TSR[6]) TSR[9]=ATAN2(TSR[8],TSR[7]) ;*RO* 

TSR[10]=TAN(TSR[9])*ABS(JL7[3]-(-4218.2))+10 TSR[11]=JL7[3]-(-4218.2) ;*RO* (-4218.2是主轴在回转台的X轴的机床坐标,请自行修改)

IF TSR[5]<0 GOTO ABCCD3 ;*RO*

IF TSR[6]<0 GOTO ABCCD4 ;*RO*

ABCCD1:IF TSR[11]<0 GOTO ABCCD2 ;*RO*

MSG("注意Z轴退回的安全距离,保证B轴回转不撞车") ;*RO*

M0 ;*RO*

G0 Z=IC(TSR[10]) ;*RO*

GOTOF ABCCD9 ;*RO*

ABCCD2: ;*RO*

MSG("注意Z轴退回的安全距离,保证B轴回转不撞车") ;*RO*

M0 ;*RO*

G0 Z=IC(2) ;*RO*

ABCCD9:G4 F2 ;*RO*

G0 G91 B=TSR[9] ;*RO*

M30 ;*RO*

ABCCD3:IF TSR[6]<0 GOTO ABCCD1 ;*RO*

ABCCD4:IF TSR[11]>0 GOTO ABCCD5 ;*RO*

MSG("注意Z轴退回的安全距离,保证B轴回转不撞车") ;*RO*

M0 ;*RO*

G0 Z=IC(TSR[10]) ;*RO*

GOTOF ABCCD10 ;*RO*

ABCCD5: ;*RO*

MSG("注意Z轴退回的安全距离,保证B轴回转不撞车") ;*RO*

M0 ;*RO*

G0 Z=IC(2) ;*RO*

ABCCD10:G4 F2 ;*RO*

G0 G91 B=-TSR[9] ;*RO*

M30 ;*RO*

ABCCD6: ;*RO*

JL7[11]=$AA_IW[X] JL7[12]=$AA_IW[Y] JL7[13]=$AA_IW[Z] JL7[14]=$AA_IW[W] JL7[15]=$AA_IW[V] ;*RO*

TRANS X=JL7[11] Y=JL7[12] Z=JL7[13] W=JL7[14] V=JL7[15] ;*RO*

JL7[19]=0 JL7[18]=0 ;*RO*

MSG("若要再次检查,请对好第一点再启动。参照数据已置0") ;*RO*

M0 ;*RO*

M30 ;*RO*

ABCCD8: ;*RO*

TRANS X=JL7[11]-11 Y=JL7[12]-11 Z=JL7[13]-11 W=JL7[14]-11 V=JL7[15]-11 ;*RO*

JL7[3]=0 ;*RO*

MSG("启动错误,请移动到第二点再启动") ;*RO*

M0 ;*RO*

M30 ;*RO*


工件在回转台装夹好,选中此程序,打表在工件第1点对零,按程序启动键,程序暂停,X,Y,Z,W,V轴坐标显示1,机床信息显示栏显示“第一点坐标已记录,请移动到第二点”按启动键,Z轴正向移动2毫米,程序结束。移动机床到第2点使表到零,再次按启动键,程序暂停,各轴坐标显示2,信息栏显示“注意Z轴退回的安全距离,保证B轴回转不撞车”,按启动键,Z轴正向回退,B轴自动旋转使打表两点平行与X轴。程序结束。

如果第1点结束程序后,未移动机床就启动了程序,暂停显示11,信息栏显示“启动错误,请移动到第二点再启动”,按启动键结束程序,继续移动找第2点就行了。

第1点和第2点两次启动程序间隔不要超过10分钟,超过10分钟后启动就是记录的第1点。如果本次找正后,未到10分钟需要启动程序再次找正。启动后各坐标显示0,信息栏显示“若要再次检查,请对好第一点再启动。参照数据已置0”,按启动键结束程序,再次启动就可以了。



使用前还需要先定义全局变量


DEF CHAN REAL JL1[20]

DEF CHAN REAL JL7[20]

DEF CHAN REAL TSR[50]

M30



看了老学童前辈的回帖,觉得确实有几点安全问题没有提醒到位。现在补充几点注意事项

1,使用这两个程序之前,请检查机床RESET复位能否取消程序内旋转,偏移指令,不能取消请不要使用。

2,第2个程序有增量移动,请检查机床在程序内能否第1步准确运行增量值。

3,第2个程序使用前必须找到机床主轴在回转台中的机床坐标,10MM之内都可以。替换程序中两处-4218.2。如果不修改准确的回转台中心坐标,回转台自动回转时可能造成撞车。(这一点对于操作者应该不难)

4,我的程序内有W和V轴,可以删除相应轴的读取坐标和偏移部分,只留X,Y,Z轴就可以了。




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