电工学习网

 找回密码
 立即注册
查看: 1024|回复: 1

西门子828D斗笠刀库的控制调试过程

[复制链接]
发表于 2020-7-10 17:26:01 | 显示全部楼层 |阅读模式
斗笠刀库的调试,作为调试人员,首先要清楚,斗笠刀库的控制过程:
简述其过程:执行换刀M6T指令后,主轴切换到换刀高度--主轴定位---斗笠刀库出到换刀位置--主轴松刀---Z轴抬起准备换刀---刀盘旋转到预换的刀具---Z轴移动到换刀点---主轴夹刀且夹刀信号到位后---刀库回原位;
  此过程时斗笠刀库更换的全过程,该过程由几部分配合共同完成,首先,动作依靠换刀子程序来完成,换刀子程序有三个组成部分:
1; L6.SPF:斗笠式刀库的换刀子程序,实现刀库的主要动作 ·;
该程序是由宏指令NC程序格式执行完成;
N10 PROC L6 SAVE DISPLOF SBLOF
N20 DEF INT T_SP,T_ORDER
N30 T_SP=$TC_MPP6[9998,1]
N40 GETSELT(T_ORDER)
N50 STOPRE
N60 IF(($P_SIM==1) OR ($P_ISTEST==1)) GOTOF END1;程序模拟,程序测试激活
N70   IF(($P_SEARCH<>0) OR ($P_DRYRUN==1)) GOTOF END1;程序段搜索,空运行激活
N80   IF (($P_SEARCH==0) AND (T_SP==T_ORDER) AND (T_SP>0) AND (T_ORDER>0))  GOTOF INFO1
N90   IF (($P_SEARCH==0) AND (T_SP==T_ORDER) AND (T_SP==0) AND (T_ORDER==0))  GOTOF INFO1
N100 IF $A_DBW[0]==5 GOTOF INFO2 ;5 = 刀库未回零,不能换刀
N110 IF $A_DBW[0]==4 GOTOF INFO3 ;4 = 轴未回零,不能换刀
N120 IF $A_DBW[0]==6 GOTOF INFO4 ;6 = 刀库调试模式激活,不能换刀
N120 IF $MN_USER_DATA_FLOAT[4]==0 GOTOF INFO5 ;MD14514[4]=0,换刀速度未设置,不能换刀;
N130 $A_DBW[2]=5
N140 _WAITK1:
N150 G4F0.1
N160 MSG("等待 刀库==刀具表 确认,一致请按[刀位一致]继续");
N170 IF $A_DBW[2]<>1 GOTOB _WAITK1
N180 D0

N190 STOPRE
N200 M206; 换刀命令生效
N210 IF (($A_DBW[0]==2) OR ($A_DBW[0]==3)) GOTOF T_RET  ;2 = T0  3 = 交换刀
N220 IF $A_DBW[0]==1 GOTOF T_NEWLOC ;1 = 只抓新刀
N230 STOPRE
N240 T_RET: ;还旧刀

N250 M05 ;主轴停止
N260 MSG("主轴定向")
N270 SPOSA=$MN_USER_DATA_FLOAT[0]
N280 MSG("Z轴回到换刀位")
N290 SUPA G00 G90 Z=$MN_USER_DATA_FLOAT[1] ;Z轴定位到换刀点
N300 WAITS
N310 MSG("刀库推出")
N320 M62    ;刀库推出
N330 G4 F1
N340 MSG("主轴松刀")
N350 M58 ;主轴松刀
N360 G4 F2
N370 MSG("Z轴退到刀库旋转安全位置") ;
N380 SUPA G00 G90 Z=$MN_USER_DATA_FLOAT[2] ;Z轴返回刀库旋转的安全位置
N390 IF $A_DBW[0]==3 GOTOF T_GET ;交换刀具,先还旧刀,再抓新刀
N400 MSG("主轴抓刀")
N410 M59 ;主轴拉刀
N420 STOPRE
N430 MSG("刀库退回")
N440 M63 ;刀库回退
N450 MSG("Z轴退到安全位置")
N460 SUPA G00 G90 Z=$MN_USER_DATA_FLOAT[3] ;Z轴返回安全位置
N470 GOTOF END
N480 T_NEWLOC: ;只抓新刀

N490 M05 ;主轴停止
N500 MSG("主轴定向")
N510 SPOSA=$MN_USER_DATA_FLOAT[0]
N520 MSG("Z轴回到刀库旋转安全位置")
N530 SUPA G00 G90 Z=$MN_USER_DATA_FLOAT[2] ;Z 轴定位到刀库能旋转的安全位置
N540 WAITS
N550 MSG("刀库推出")

N560 M62    ;刀库推出
N570 G4 F1
N580 MSG("主轴松刀")
N590 M58 ;主轴松刀
N600 G4 F2
N610 GOTOF T_GO_ON ;继续抓刀
N620 T_GET:

N630 MSG("刀盘旋转") ;抓新刀
N640 M55 ;刀库旋转指令
N650      STOPRE
N660 T_GO_ON: ;继续抓刀
N670 MSG("Z轴扣刀")
N680 SUPA G01 G90 Z=$MN_USER_DATA_FLOAT[1] F=$MN_USER_DATA_FLOAT[4];Z轴定位到换刀点
N690 MSG("主轴抓刀")
N700 M59 ;主轴紧刀
N710 G4 F2
N720 MSG("刀库退回")
N730 M63 ;刀库回退
N740 MSG("Z轴退到安全位置")
N750 SUPA G00 G90 Z=$MN_USER_DATA_FLOAT[3] ;Z轴返回安全位置
N760 SETPIECE(1) ;刀具计数加1用于刀具寿命监控
N770 END:

N780 MSG("")
N790 D1
N800 $A_DBW[0]=0
N810 M05
N820 STOPRE
N830 M17
N840 END1:

N850 M206
N860 GOTOB END
N870 INFO1:MSG("**** 无换刀动作  原因:编程刀具号 = 主轴刀具号 ****")

N880        $A_DBW[0]=0
N890        G04F3
N900        MSG("")
N910        M17
N920 INFO2:MSG("**** 刀库未回零,不能换刀 ****")
N930        $A_DBW[0]=0
N940        G04F1
N950        GOTO INFO2
N960        M17
N970 INFO3:MSG("**** 轴 X Y Z 未回零,不能换刀 ****")
N980        $A_DBW[0]=0
N990        G04F1
N1000       GOTO INFO3
N1010       M17
N1020 INFO4:MSG("**** 刀库调试模式激活,不能换刀 ****")
N1030       $A_DBW[0]=0
N1040       G04F1
N1050       GOTO INFO4
N1060       M17
N1020 INFO5:MSG("**** 换刀速度MD14514[4]=0,不能换刀 ****")
N1040       $A_DBW[0]=0
N1050       G04F1
N1060       GOTO INFO5
N1070       M17
2.MAG_CONF.SPF:刀库初始化时,需要对刀库参数做基本参数配置 ;
3.CYCPE_MA.SPF:程序段搜索处理程序;
承接上一贴有介绍,其中起着决定性的参数如下:
MD14514[0] 主轴定位角度;
;  MD14514[1] Z轴换刀点位置;
;  MD14514[2] 用于刀库旋转的Z轴位置;
;  MD14514[3] Z轴安全位置;
第二个子程序:MAG_CONF.SPF:刀库初始化时,需要对刀库参数做基本参数配置详细如下:
N10 def int NUM_MAG,MAG_TYPE, LOCATIONS, PLACE, NUM_BUFFER, NUM_LOAD, PLACE_SEARCH
;IF $MN_USER_DATA_INT[0]==0
MSG("刀盘刀位数量  MD14510[0] 未设定")
M0
ENDIF
N20 NUM_MAG = 1        ;Nummer des  Magazins
N30 MAG_TYPE = 1       ;Magazinart (1: Kette, 3: Revolver,; 5: Flaechenmagazin)
N40 LOCATIONS = $MN_USER_DATA_INT[0]     ;Anzahl der Magazinplaetze
N50 NUM_BUFFER = 1     ;Anzahl der Zwischenspeicher(Spindel, Greifer)
N60 NUM_LOAD = 1       ;Anzahl der Beladestellen
N70 PLACE_SEARCH = 257 ;Art der Suchstrategie,
;=257 Bit13=0 kein Tausch Altwerkzeug auf Platz von Neuwerkzeug
;Einstellung fuer Revolvermagazin
;=12289 Bit13=1 Tausch Altwerkzeug auf Platz von Neuwerkzeug
;Einstellung fuer Kettenmagazin
N80;
N90;
;Parameter pruefen
N100 stopre
N110 if ((NUM_MAG==0)or(LOCATIONS==0))
N120  Err1:STOPRE
N130  MSG("Wrong Parameter --> Cancel")
N140  G04 F4
N150  stopre
N160  M0
N170  GOTOB Err1
N180 endif
N190; Magazin Konfiguration
N200;
N210;
N220; Loesche alte Daten wenn Magazin 1 angelegt wird
N230 if NUM_MAG ==1
N240 $TC_MAP1[0]=0; loesche Magazine
N250 $TC_DP1[0,0]=0; loesche Werkzeuge
N260 STOPRE
N270 endif
;Konfiguration
N280 $TC_MAMP2= PLACE_SEARCH ; Art der Suchstrategie
; Magazin einrichten
N290 $TC_MAP1[NUM_MAG]= MAG_TYPE ; Magazinart (1: Kette, 3: Revolver,; 5: Flaechenmagazin)
;N300 $TC_MAP2[NUM_MAG]="MAGAZIN"<<num_mag
N310 if PLACE_SEARCH == 257
N320 $TC_MAP3[NUM_MAG]= 81 ; Magazinzustand alle Plaetze festplatzkodiert bei Revolvermagazin
N330 else
N340 $TC_MAP3[NUM_MAG]=17 ; Magazinzustand
N350 endif
N360 $TC_MAP4[NUM_MAG]=-1
N370 $TC_MAP5[NUM_MAG]=-1
N380 $TC_MAP6[NUM_MAG]=1 ; Anzahl Zeilen des Magazines
N390 $TC_MAP8[NUM_MAG]=0
N400 $TC_MAP9[NUM_MAG]=0
N410 $TC_MAP7[NUM_MAG]= LOCATIONS ; Anzahl Magazinplaetze
;N420 $TC_MAP10[NUM_MAG]=PLACE_SEARCH ; Art der Suchstrategie
;Magazinplaetze
;N430 for PLACE=1 to LOCATIONS
N440   STOPRE
N450   $TC_MPP1[NUM_MAG,PLACE]=1 ; Platzart
N460   $TC_MPP2[NUM_MAG,PLACE]=0 ; Platzytp,0 mit jedem WZ Platztyp vertraeglich
N470   $TC_MPP3[NUM_MAG,PLACE]=1 ; Nebenplatzbetrachtung ein (aus waere 0)
N480   $TC_MPP4[NUM_MAG,PLACE]=2 ; Platzzustand; (siehe FB WZV)
N490   $TC_MPP5[NUM_MAG,PLACE]= PLACE ; Platzartindex
N500 endfor
N510 STOPRE
;N520 ; Definition Zwischenspeichermagazin (immer Nummer 9998)
;N530 $TC_MAP1[9998]=7 ; Magazinart: 7: Zwischenspeicher
;N540 $TC_MAP2[9998]="Buffer"<<num_mag
N550 $TC_MAP3[9998]=17 ; Magazinzustand
N560 $TC_MAP6[9998]=1 ; Anzahl Zeilen
N570 $TC_MAP7[9998]=NUM_BUFFER ; Anzahl Plaetze
; Plaetze des Zwischenspeichers
;Spindel
N580 $TC_MPP1[9998,1]=2 ; Platzart (hier Spindel)
N590 $TC_MPP2[9998,1]=0 ; Platztyp (hier immer 0)
N600 $TC_MPP3[9998,1]=0 ; Nebenplatzbetrachtung aus
N610 $TC_MPP4[9998,1]=2 ; Platzzustand
N620 $TC_MPP5[9998,1]=1 ; Platzartindex
;N630 ;Greifer
N640 FOR PLACE=2 to NUM_BUFFER
N650     STOPRE
N660     $TC_MPP1[9998,PLACE]=3 ;(hier Greifer)
N670     $TC_MPP2[9998,PLACE]=0 ;(hier immer 0)
N680     $TC_MPP3[9998,PLACE]=0 ;Nebenplatzbetrachtung aus
N690     $TC_MPP4[9998,PLACE]=2 ;Platzzustand
N700     $TC_MPP5[9998,PLACE]=PLACE ;Platzartindex
N710 endfor
N720 STOPRE
;N730 ; Definition Belademagazin (immer Nummer 9999)
;N740 $TC_MAP1[9999]=9 ; Magazinart: 9: Belademagazin
;N750 $TC_MAP2[9999]="BELADEMAGAZIN"<<num_mag
N760 $TC_MAP3[9999]=17 ; Magazinzustand
N770 $TC_MAP4[9999]=-1
N780 $TC_MAP5[9999]=-1
N790 $TC_MAP6[9999]=1 ; Anzahl Zeilen
N800 $TC_MAP7[9999]=NUM_LOAD; Anzahl Plaetze
N810 STOPRE;
;N820 ; Belademagazinplaetze
;N830 for PLACE=1 to NUM_LOAD
N840     STOPRE
N850     $TC_MPP1[9999,PLACE]=7 ; Platzart Beladestelle
N860     $TC_MPP2[9999,PLACE]=0 ; Platztyp (hier immer 0)
N870     $TC_MPP3[9999,PLACE]=0 ; Nebenplatzbetrachtung aus
N880     $TC_MPP4[9999,PLACE]=2 ; Platzzustand
N890     $TC_MPP5[9999,PLACE]=PLACE ; Platzartindex
N900 endfor
N910 STOPRE
N920 ; Offsets (Abstaende) ; Abstaende zum Magazin
Zwischenspeicher
N930 for PLACE=1 to NUM_BUFFER
N940  $TC_MDP2[NUM_MAG,PLACE]=0
N950 endfor
N960 STOPRE
;Beladestellen
N970 for PLACE=1 to NUM_LOAD
N980    stopre
N990    $TC_MDP1[NUM_MAG,PLACE]=0
N1000 endfor
;Spindel-Greifer Zuordnung
;N1010 stopre
N1020 for PLACE=2 to NUM_BUFFER
N1030    stopre
N1040    $TC_MLSR[PLACE,1]=0
N1050endfor
Ende
N1060 M30

回复

使用道具 举报

 楼主| 发表于 2020-7-10 17:26:21 | 显示全部楼层
承接主贴:

CYCPE_MA.SPF:程序段搜索处理程序:

PROC CYCPE_MA SBLOF DISPLOF

DEF INT _NWT

DEF INT T_Vor,T_Spi,T_active

IF $P_PROG_EVENT==1 ;start part program

ENDIF


IF $P_PROG_EVENT==2 ;end part program


ENDIF


IF $P_PROG_EVENT==3 ;reset


ENDIF


IF $P_PROG_EVENT==4 ;power up


ENDIF


IF $P_PROG_EVENT==5 ;block search


GETEXET(T_active)

GETSELT(T_Vor)

T_Spi=$TC_MPP6[9998,1]

if ((T_Spi<>T_active)and(T_active>0))

T=$TC_TP2[T_active]

L6

Endif

if T_Vor<>T_active

if T_Vor>0

T=$TC_TP2[T_Vor]

Endif

if T_Vor==0

T0

Endif

Endif

ENDIF

EXIT:


RET


M17

有了三个子程序,接下来的操作是:将上述 3 个子程序拷贝至 PPU 上即可,路经如下: 调试——系统数据——NC 数据——循环——制造商循环;

使用方法:


L6:在换刀时系统会自动调用;无需修改; 需要察看其实时运行时,可以将 L6 开头语句中的“DISPLOF”临时删除;

MAG_CONF:初始化刀具表(刷新刀具表)文件,该文件需要拷贝至“程序管理” ——“零件程序”下单独执行; 执行前请确保 MD14510[0]刀位数量填写无误; 执行完成后,刀具表会变为与实际刀库对应的模式(刀位数量、主轴数量、刀爪数量) 注意:初始化刀具表可以在首次刀库调试时使用;也可以在刀具表需要清空时使用; 在“乱刀”时(即刀具表与实际刀库位置不一致且手动调整比较困难时)执行用于清 空刀具表;此时注意做好刀具加工属性的有关纪录。

CYCPE_MA:使用段搜索功能时,会自动调用,无需修改;

此文本,主来源于刀库应用范本,实际应用中,只要了解各程序含义,已经应用过程,以前过程不唯一;

回复 支持 反对

使用道具 举报

|电工学习网 ( )

GMT+8, 2020-12-4 15:56

Powered by © 2011-2020 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表