作者 | 主题 |
---|---|
隐身人 至圣 经验值: 38669 发帖数: 10349 精华帖: 72 |
楼主 2019-01-08 09:15:21
主题:分享一段802D的换刀小程序 加工中心与铣床的不同处,就是刀库,刀库的种类也是千差万别,但控制方式基本原理都是一样的,昨天去维修了一个802D系统的加工中心,虽然系统早已停产,但换刀程序思路和现在的换刀思路基本是一致的,问题就是换刀中间卡住了,所以要参看换刀程序,感觉小程序挺有代表性,就做了注释,发出来供坛友参阅; %_N_CHANG_TOOL_SPF ;$PATH=/_N_CUS_DIR PROC CHANG_TOOL SAVE DISPLOF SBLOF ;MD14510[15]刀盘刀位数 ;MD14514[1]Z 轴准备位置 ;MD14514[2]Z轴换刀位置 ;MD14514[3]高速度 ;MD14514[4]低速度 ;MD14514[6]换刀位置误差值 ; 由正常方式进入程序测试方式后第一次换刀 IF ((_TM[5]==0)AND($P_ISTEST==1)) GOTOF _SIMU1 ; 程序测试方式下换刀 IF ((_TM[5]==1)AND($P_ISTEST==1)) GOTOF _SIMU2 ; 由程序测试方式返回正常方式后第一次换刀 IF ((_TM[5]==1)AND($P_ISTEST==0)) GOTOF _E_SIM _T_CHG: M87;换刀开始 M86;刀库旋转到主轴刀号位 IF $P_TOOLP==$P_TOOLNO GOTOF _NOCHG1 IF $P_TOOLP>$MN_USER_DATA_INT[15] GOTOF _NOCHG2 IF $MN_USER_DATA_INT[15] ==0 GOTOF _E_PAR1 IF $MN_USER_DATA_FLOAT[1]==$MN_USER_DATA_FLOAT[2] GOTOF _E_PAR2 IF $MN_USER_DATA_FLOAT[3]==0 GOTOF _E_PAR3 IF $MN_USER_DATA_FLOAT[4]==0 GOTOF _E_PAR4 IF $MN_USER_DATA_FLOAT[6]==0 GOTOF _E_PAR5 G500 ;取消工件坐标系 D0 ;取消刀具参数 _TM[0]=1 ;取刀标志 IF ($P_TOOLP==0)AND($P_TOOLNO<>0) GOTOF _T_RET ;还刀 IF ($P_TOOLP<>0)AND($P_TOOLNO==0) GOTOF _T_GET ;取刀 IF ($P_TOOLP<>0)AND($P_TOOLNO<>0) GOTOF _T_EXC ;换刀 GOTOF _EOSBR _T_EXC: ;换刀 _TM[0]=3 ;刀具交换标志 _T_RET: ;还刀 G90 G01 F=$MN_USER_DATA_FLOAT[3] ;高速度 G153 Z=$MN_USER_DATA_FLOAT[2]+0.01 M3S1100 M5 M39 M82 ;发出刀库伸出命令 M81 ;发出松刀命令 F= $MN_USER_DATA_FLOAT[4] ;低速度 G153 Z=$MN_USER_DATA_FLOAT[2]+0.01+30 ;Z 轴拉丁换刀位置 F=$MN_USER_DATA_FLOAT[3] ;高速度 G153 Z=$MN_USER_DATA_FLOAT[1]+0.01 ;Z 轴返回准备位置 IF _TM[0]==3 GOTOF _T_LOC ;如果是换刀, 则找刀并取刀 ; 如果是只还刀, 则主轴紧刀, 刀库缩回, 还刀过程结束 M80 ;发出紧刀命令且等待命令应答 M83 ;发出刀库缩回命令且等待命令应答 STOPRE IF $P_TOOLP==0 GOTOF _INI1 $TC_DP25[$P_TOOLP,1]=0 _INI1: IF $P_TOOLNO==0 GOTOF _INI2 $TC_DP25[$P_TOOLNO,1]=$A_DBB[133] _INI2: T0 M206 ;主轴上无刀具, T0生效 M88 ;换刀结束 GOTOF _END ;>>>>>>>>>>>>>> 还刀结束返回 <<<<<<<<<<<<<<<<<<<<<< _T_LOC: M84 ;发出刀库定位命令 GOTOF _T_TAKE ; _T_GET: ;取刀 G90 G01 ; M84 ;发出刀库定位命令, 进入换刀准备位置, F= $MN_USER_DATA_FLOAT[3] ;高速度 G153 Z=$MN_USER_DATA_FLOAT[1]+0.01 M3S1100 M5 STOPRE M39 M82 ;发出刀库伸出命令且等待命令应答 STOPRE M81 ;发出松刀命令且等待命令应答 _T_TAKE: ; F= $MN_USER_DATA_FLOAT[3] ;高速度 G153 Z=$MN_USER_DATA_FLOAT[2]+0.01+30 ;Z 轴拉丁换刀位置 F= $MN_USER_DATA_FLOAT[4] ;低速度 G153 Z=$MN_USER_DATA_FLOAT[2]+0.01 ;Z 轴进入换刀位置 M80 ;发出紧刀命令且等待命令应答 M83 ;发出刀库缩回命令且等待命令应答 F= $MN_USER_DATA_FLOAT[3] ;高速度 G153 Z=$MN_USER_DATA_FLOAT[1]+0.01 ;Z 轴回到换刀准备位置 STOPRE IF $P_TOOLP==0 GOTOF _INI11 $TC_DP25[$P_TOOLP,1]=0 _INI11: IF $P_TOOLNO==0 GOTOF _INI21 $TC_DP25[$P_TOOLNO,1]=$A_DBB[133] _INI21: T=$P_TOOLP M206 ;激活刀补 M88 ;换刀结束 GOTOF _END ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _E_SIM: ;SS 换刀控制过程: 程序测试处理 _TM[7]=$P_TOOLP T=_TM[6] ;恢复主轴刀具号 M206 ;主轴刀具参数生效 T=_TM[7] MSG("恢复主轴刀具号:"<<_TM[6]) ; G04 F5 ; _TM[5]=0 ;清除程序测试标记 _TM[6]=0 _TM[7]=0 ; GOTOB _T_CHG ; _SIMU1: ; ;仿真方式时,T功能生效, 刀具参数立即生效 _TM[5]=1 ;记录程序测试状态 _TM[6]=$P_TOOLNO ;记录主轴刀具号 _SIMU2: ; T=$P_TOOLP ; M206 GOTOF _END ;%% 故障信息显示 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% _NOCHG1: MSG("### 没有换刀: 编程刀具等于主轴刀具") G04 F3 GOTOF _EOSBR _NOCHG2: MSG("### 没有换刀: 编程刀号超过最大值. 循环启动继续或复位") M00 GOTOF _EOSBR _E_PAR1: MSG("*** PLC 参数错: 刀盘刀位数 MD14510[15] 没有设定") M00 GOTOF _EOSBR _E_PAR2: MSG("*** PLC 参数错: 换刀准备位置14514[1]等于换刀位置14514[2]"); M00 GOTOF _EOSBR _E_PAR3: MSG("*** PLC 参数错: 抓刀速度 MD14514[3] 等于 0") M00 GOTOF _EOSBR _E_PAR4: MSG("*** PLC 参数错: 提刀速度 MD14514[4] 等于 0") M00 GOTOF _EOSBR _E_PAR5: MSG("*** PLC 参数错: 换刀位置误差 MD14514[6] 等于 0") M00 GOTOF _EOSBR ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% _END: M18 ; 主轴恢复速度控制方式 S100M3 M5 _EOSBR: MSG(" ") M17 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
西门子的多年使用者http://yinshenren.ys168.com/、
|