作者 | 主题 |
---|---|
隐身人 至圣 经验值: 38462 发帖数: 10306 精华帖: 72 |
楼主 2019-03-06 08:02:10
主题:机械手刀库调试小结; 最近升级一台德国老设备,链条式刀库,小谈一下: 随机找刀、机械手换刀控制 基本原理: 1. Txx代码激活刀库控制固定循环-MGZ。MGZ根据编程刀具号计算出该刀具所在的刀套位置,以及就近找刀的方向。位置和方向通过辅助功能H1(带符号的符点数)送到PLC。由PLC程序控制刀库按就近方向转动到编程刀具所在的位置,等待换刀。 2. M06启动换刀固定循环-TOOL。TOOL控制各坐标加入换刀位置,并启动机械手换刀动作。换刀完成后,激活刀具参数。 3. 边界条件:在程序参测试(V33000001.7=1)生效时,刀库和机械化手无换刀动作且编程的刀具参数生效。目的是在仿真时,刀库和机械手无动作,但刀具参数生效,以便仿真时可以检测软限位。 编程约定: Txx ; 刀具号(控制刀库加入准备位置等待换刀) M06 ; 激活机械手换刀动作并且激活刀具参数; 注:1. Txx 和M06不能编在同一程序段内 2. 固定循环TOOL中,所有位移程序段应加G153(段有效)取消基本偏移。 3. 三个换刀过程: 装刀:主轴无刀,Txx / M06 直接安装编程刀具 换刀:主轴有刀,交换编程刀具和主轴刀具 还刀:主轴有刀,编程T0,将主轴刀具还回刀库 4. 主轴准停角度利用PLC符点参数 MD14514[0]: $MN_USER_DATA_FLOAT[0] 其换刀过程是靠宏程序来实现的,换刀程序如下: %_N_MGZ_SPF ;$PATH=/_N_CST_DIR PROC MGZ SAVE DISPLOF ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; 前提条件: ; 初始化后, 刀具号与刀套号相等: 刀套号1 安装刀具T1 ; 并且主轴刀套上无刀. ; - - - - - - - - - - - - - - - - - - - - - - - - - ; 参数说明: ; _TM[0]: 当前刀库刀套号 ; _TM[1]: 编程刀具所在的刀套号 ; _TM[3]: 主轴刀套上安装的刀具号 ; _TM[5]: 1=程序测试标记 ; _TM[6]: 程序测试时主轴上的刀具号 ; _ZSFR[0]: 刀位差 ; $C_T: 编程刀具号 ; $PTOOLNO: 主轴刀套内的刀具号 ; 刀具数据: ; $TC_DP1[刀具号 ,1]: 刀具类型 ; $TC_DP3[刀具号 ,1]: 刀具几何参数-刀具长度1 ; $TC_DP6[刀具号 ,1]: 刀具几何参数-刀具半径 ; $TC_DP12[刀具号,1]: 刀具磨损- 长度1 方向 ; $TC_DP15[刀具号,1]: 刀具磨损- 半径 方向 ; $TC_DP24[刀具号,1]: 刀具尺寸0:正常 1: 过大 ; 在该子程序中表示空刀套 ; $TC_DP25[刀具号,1]: 刀套号 ; - - - - - - - - - - - - - - - - - - - - - - - - - ; 程序结果: ; 通过辅助功能 H1 向 PLC发送编程刀具所在的刀套号以及 ; 刀库的旋转方向 (方向通过 H1 的符号表示) ; 特殊情况: ; 在程序仿真和程序测试状态下无刀库和换刀动作. 为使程 ; 序仿真时的刀具参数可以起作用, 本固定循环记录仿真前 ; 主轴的有效刀具号, 在仿真结束时恢复主轴刀具, 然后再 ; 进行换刀. ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _TM[10]=0 ;跳转标志初始化 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 _ZSFR[1]=$MN_USER_DATA_INT[0] ;刀库最大刀位数 _ZSFR[2]=_ZSFR[1]/2 ;最大刀位数/2 IF $C_T==$P_TOOLNO GOTOF NOCHG1 IF $C_T>_ZSFR[1] GOTOF NOCHG2;编程刀具> 最大刀具号 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _T_CHG: IF $C_T<>0 GOTOF _T_N0 ;T=0 时, 取出存储的空刀套号vvvvvvvvvvvvvvvvvvvvvvvv _TM[1]=_TM[4] GOTOF _T_POS _T_N0: MSG("编程刀具号为: T" <<$C_T) _TM[1]=$TC_DP25[$C_T,1] _T_POS: ;判断刀库旋转方向vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv _ZSFR[0]=_TM[1]-_TM[0] ;位置差 IF _ZSFR[0]==0 GOTOF _T_STEP IF (((_ZSFR[0]>0)AND(_ZSFR[0]<=_ZSFR[2]))OR((_ZSFR[0]<0)AND(_ZSFR[0]<-_ZSFR[2]))) GOTOF _MGZ_P IF (((_ZSFR[0]>0)AND(_ZSFR[0]>=_ZSFR[2]))OR((_ZSFR[0]<0)AND(_ZSFR[0]>-_ZSFR[2]))) GOTOF _MGZ_N _MGZ_P: H1=_TM[1] GOTOF _T_STEP _MGZ_N: H1=-_TM[1] ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _T_STEP: ;正常换刀时,T功能生效, 刀具参数在换刀后生效======== ;R0=H1 T=$C_T ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ GOTOF _END _E_SIM: ;-------------------------------------------------- T=_TM[6] ;恢复主轴刀具号 M96 ;主轴刀具参数生效 MSG("恢复主轴刀具号:"<<_TM[6]) G04 F5 _TM[5]=0 ;清除程序测试标记 _TM[6]=0 ; _TM[10]=0 ; GOTOB _T_CHG _SIMU1: ;仿真方式时,T功能生效, 刀具参数立即生效============ _TM[5]=1 ;记录程序测试状态 _TM[6]=$P_TOOLNO ;记录主轴刀具号 _TM[10]=10 ;无换刀动作 _SIMU2: T=$C_T M96 ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ GOTOF _END NOCHG1: _TM[10]=10 ;无换刀动作 MSG("没有换刀: 编程刀具等于主轴刀具 ") G04 F2 GOTOF _END NOCHG2: _TM[10]=10 ;无换刀动作 MSG("没有换刀: 编程刀号超过最大值. 循环启动继续或复位") M00 _END: M17 %_N_TOOL_SPF ;$PATH=/_N_CST_DIR PROC TOOL SAVE DISPLOF IF _TM[10]==10 GOTOF _END ;没有找到刀具 ;-------------------------------------------------- G500 ;取消工件坐标系 D0 ;取消刀补 ; Z 轴返回固定点, 主轴准停, Mxx 启动机械手动作 M86 ;SPOS=$MN_USER_DATA_FLOAT[0] ;启动机械手换刀 ;-------------------------------------------------- ; ; ; ;-------------------------------------------------- IF $C_T==0 GOTOF _RE_T ;还刀 IF $P_TOOLNO==0 GOTOF _IN_T ;取刀 STOPRE ; 交换刀具 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $TC_DP25[_TM[3],1]=_TM[1] ;编程刀具所在刀套号 $TC_DP24[_TM[3],1]=0 ;清除主轴刀具标志 _TM[3]=$C_T ;主轴刀具套中为编程刀具 STOPRE $TC_DP25[_TM[3],1]=_TM[4] ;编程刀具所在刀套号 $TC_DP24[_TM[3],1]=1 ;标出在主轴上的刀具 _TM[0]=_TM[1] MSG("换刀步骤3: 换刀完成") G04 F1 GOTOF _T_ACT ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _IN_T: ; 装入刀具 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv _TM[3]=$C_T ;主轴刀具套中为编程刀具 _TM[0]=_TM[1] ;刷新当前刀套号 _TM[4]=_TM[1] ;记忆首次取刀的刀套号 $TC_DP24[_TM[3],1]=1 ;标出在主轴上的刀具 MSG("换刀步骤1: 装刀完成") G04 F1 GOTOF _T_ACT ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _RE_T: ; 退还刀具 vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $TC_DP24[_TM[3],1]=0 ;清除空刀套的位置 _TM[0]=_TM[4] ;主轴刀具返回空刀套 _TM[3]=0 ;主轴刀具套中刀具号为0 _TM[4]=0 ;主轴刀具套中刀具号为0 MSG("换刀步骤2: 还刀完成") G04 F1 _T_ACT: M96 ;激活刀具参数 D1 ;主轴恢复速度控制方式 _TM[0]=_TM[1] ;刷新当前刀套号 STOPRE _END: M17 %_N_INI_SPF ;$PATH=/_N_CST_DIR PROC INI SAVE DISPLOF _TM[11]=$MN_USER_DATA_INT[0] ;刀库最大刀位数 _TM[0]=1 ;当前刀套号 _TM[1]=0 ;编程刀具所在刀套号 _TM[3]=0 ;主轴刀套中刀具号 _TM[4]=0 ;首次换刀的刀套号 _TM[5]=0 ;非程序测试状态 _TM[6]=0 ;程序测试时主轴刀具号 _TM[10]=1 ;计数器, 换刀步骤 _INI: $TC_DP25[_TM[10],1]=_TM[10] ;初始化刀套号 $TC_DP24[_TM[10],1]=0 ;标出空刀套的位置 _TM[10]=_TM[10]+1 _TM[11]=_TM[11]-1 IF _TM[11] > 0 GOTOB _INI _TM[10]=0 M99 ;初始化PLC刀库计数器 T0 M96 ;激活刀具参数 M17 里面有注释, 刀库的调整可以参考这些进行,资料来源西门子调试笔记以及相关资料加实践整理;
西门子的多年使用者http://yinshenren.ys168.com/、
|
xue_ang 至圣 经验值: 16989 发帖数: 5834 精华帖: 0 |
1楼 2019-03-06 09:36:00
主题:回复:机械手刀库调试小结; |
菲戈 至圣 经验值: 28599 发帖数: 5906 精华帖: 61 |
2楼 2019-03-06 09:44:11
主题:回复:机械手刀库调试小结;
欢迎交流,QQ:2301013064 邮箱:feige6@139.com
|
HUANGZE75 至圣 经验值: 63227 发帖数: 12657 精华帖: 121 |
3楼 2019-03-06 15:04:11
主题:回复:机械手刀库调试小结; |
阿甘致远 游侠 经验值: 347 发帖数: 17 精华帖: 0 |
4楼 2019-03-06 17:33:59
主题:回复:机械手刀库调试小结; |
tc350 游士 经验值: 279 发帖数: 61 精华帖: 0 |
5楼 2019-03-06 20:57:33
主题:回复:机械手刀库调试小结; |
千万个为什么 至圣 经验值: 10572 发帖数: 848 精华帖: 9 |
6楼 2019-03-07 08:04:21
主题:回复:机械手刀库调试小结;
学如逆水行舟,不进则退! wwhoho@163.com
|
华山松柏 奇侠 经验值: 5622 发帖数: 541 精华帖: 3 |
7楼 2019-03-07 10:41:34
主题:回复:机械手刀库调试小结;
学无止境
|
Qin. 侠圣 经验值: 3892 发帖数: 236 精华帖: 1 |
8楼 2019-03-08 09:00:48
主题:回复:机械手刀库调试小结; 刀库一直是咱们的重点难点,一般的时候都不敢动,弄不明白怎么换的刀和那么多刀如何管理的,而且这东西危险,没弄好就直接撞主轴上了,值得好好学习~
Stay Hungry ,Stay Foolish .
|
不断攀登 至圣 经验值: 12543 发帖数: 1843 精华帖: 0 |
9楼 2019-03-08 18:53:35
主题:回复:机械手刀库调试小结;
邮箱 yongquancun@126.com
|