FANUC多层多道.docx
《FANUC多层多道.docx》由会员分享,可在线阅读,更多相关《FANUC多层多道.docx(13页珍藏版)》请在冰豆网上搜索。
FANUC多层多道
AdaptiveWeldingforHeavyPlateFabrication
FANUCRoboticsAmerica
11/23/2010
Thisapplicationnotedescribesastrategyforadjustingwelddepositionratetovaryingvolumeweldjointsbasedonmeasurementoftheweldjointgapandweldcenterlocationattwoendsofastraightweldseaminordertoproduceauniformlayerthickness.Theweldjointinthisexampleisahalf-veejointwithrootbacking:
ThebasicapproachtoweldsofthistypeuseseitherTouchSensingoriRVisiontomeasuretheweldjointgapattherootopeningateitherendoftheweldjoint.TheweldingprogramsuseTASTwithMultipass/RPMtoaccommodateseamtrackingrequirements.Thegapmeasurementsareusedtocalculatethevolumeofweldmetalrequiredtofillthegapforeachweldpassandsettheweaveamplitudeandweldtravelspeedtoaccomplishthisgoal.
Conditions
R-30iAControllerwithV7.40P/11(orlater)ArcToolsoftware
OptionsRequired:
TouchSensingoriRVision2Dpackage
ArcRamping(includedinStandardArcToolbeginninginV7.40P/09)
TAST+MP/RPMoption
SystemVariableSettings:
Setthefollowingsystemvariables:
$AWERAMP[1].$RAMP_ENABLE=TRUE
$AWERAMP[1].$RAMP_TO_POS=TRUE
$WVCFG.$RAMP_ENB=TRUE
$WV_OTF_GP[1].$OTF_ENABLE=TRUE
$WV_OTF_GP[1].$GET_AMP=TRUE
$SCR_GRP[1].$M_POS_ENB=TRUE
$SCR_GRP[1].$M_DST_ENB=TRUE
The$SCR_GRPvariablesarenotnecessaryforoperationbutareenabledsoDataMonitorcanbeusedtorecordtheactualpositionandtravelspeedduringoperation.TheprogramSETSYSVAR.TPcanbeusedtosetthesevariables.
TPProgramStructure
MAINWELD(shellprogramtocontroloverallsequence)
-CALLMEASGAPS(Collectsthejointmeasurementroutines)
oCALLINITGAPS(zerosthegapwidthregisters)
oCALLFIND_JT1(findsjointandmeasuresgapatposition1)
oCALLFIND_JT2(findsjointandmeasuresgapatposition2)
-CALLREGMATH(CalculateTravelSpeed)
-CALLADPTWV(Calculateweaveamplitude)
-CALLCALC_TVL(Settravelspeedinweldschedules)
-CALLPASSES(Performstheweldingoperation)
oCALLSCALEGAP(adjuststhegapmeasurementforfillpasses)
Detaillisting:
MAINWELD.TP
1:
CALLMEASGAPS;
2:
CALLREGMATH;
3:
CALLADPTWV;
4:
CALLCALC_TVL;
5:
PAUSE;
6:
CALLPASSES;
MEASGAPS.TP
1:
UFRAME_NUM=0;
2:
UTOOL_NUM=1;
3:
CALLINITGAPS;
4:
JP[1]30%FINE;
5:
JP[2]20%FINE;
6:
CALLFEEDWIRE;
7:
CALLFIND_JT1;
8:
PR[150:
TEMP]=LPOS;
9:
PR[150,3:
TEMP]=PR[150,3:
TEMP]+100;
10:
JPR[150:
TEMP]30%FINE;
11:
JP[1]30%FINE;
12:
CALLFIND_JT2;
13:
PR[150:
TEMP]=LPOS;
14:
PR[150,3:
TEMP]=PR[150,3:
TEMP]+100;
15:
JPR[150:
TEMP]30%FINE;
16:
JP[1]30%FINE;
17:
DO[5:
WireInchBkwd]=PULSE,0.7sec;
INITGAPS.TP
1:
R[140:
GAP1mm]=0;
2:
R[141:
GAP2mm]=0;
3:
R[144:
MultipassIndex]=0
FEEDWIRE.TP
1:
PR[10]=LPOS;
2:
JPR[10]5%FINE;
3:
LBL[1];
4:
DO[3:
TouchON]=ON;
5:
DO[4:
WireInchFwd]=ON;
6:
IFDI[2:
TouchInput]=ON,JMPLBL[2];
7:
WAIT.01(sec);
8:
JMPLBL[1];
9:
LBL[2];
10:
DO[4:
WireInchFwd]=OFF;
11:
WAIT.10(sec);
12:
DO[3:
TouchON]=OFF;
13:
DO[5:
WireInchBkwd]=ON;
14:
WAIT.10(sec);
15:
DO[5:
WireInchBkwd]=OFF;
FIND_JT1…JT2.TP
TheFIND_JTx.TPprogramsarethesameexceptforthesearchstartlocation,thegapregister,andthepositionregisterindexforsavingthefoundjointcenterlocation.ThelinesshowninREDchangeforasmanygapmeasurementlocationsareneeded.
1:
UFRAME_NUM=0;
2:
UTOOL_NUM=1;
3:
R[145:
Z-ZeroPlane]=0;
4:
JPR[151:
SearchPos1]30%FINE;
5:
PR[150:
TEMP]=PR[151:
SearchPos1];
6:
LBL[1];
7:
!
FINDJOINT;
8:
JPR[150:
TEMP]30%FINE;
9:
SearchStart[1]PR[40];
10:
JPR[150:
TEMP]30%FINESearch[-Z];
11:
SearchEnd;
12:
R[145:
Z-ZeroPlane]=PR[40,3];
13:
IFR[145:
Z-ZeroPlane]<(-2),JMPLBL[2];
14:
PR[150,1:
TEMP]=PR[150,1:
TEMP]+3;
15:
JMPLBL[1];
16:
!
FINDEDGE1;
17:
LBL[2];
18:
PR[150:
TEMP]=PR[32];
19:
PR[150,1:
TEMP]=PR[150,1:
TEMP]+3;
20:
JPR[150:
TEMP]30%FINE;
21:
SearchStart[1]PR[40];
22:
JPR[150:
TEMP]30%FINESearch[X];
23:
PR[150:
TEMP]=PR[32];
24:
SearchEnd;
25:
PR[150,1:
TEMP]=PR[150,1:
TEMP]-2;
26:
JPR[150:
TEMP]20%FINE;
27:
;
28:
!
FINDROOTGAP;
29:
SearchStart[1]PR[40];
30:
JPR[150:
TEMP]30%FINESearch[-Z];
31:
SearchEnd;
32:
PR[150,3:
TEMP]=PR[32,3]+2;
33:
JPR[150:
TEMP]30%FINE;
34:
SearchStart[1]PR[40];
35:
JPR[150:
TEMP]30%FINESearch[X];
36:
PR[150:
TEMP]=PR[32];
37:
SearchEnd;
38:
WAIT.10(sec);
39:
SearchStart[1]PR[40];
40:
JPR[150:
TEMP]30%FINESearch[-X];
41:
SearchEnd;
42:
R[139:
TMP]=PR[150,1:
TEMP]-PR[32,1];
43:
R[139:
TMP]=R[139:
TMP]+R[150:
WireDiameter];
44:
R[140:
GAP1mm]=R[139:
TMP];
45:
R[139:
TMP]=R[139:
TMP]/2;
46:
PR[150,1:
TEMP]=PR[32,1]+R[139:
TMP];
47:
PR[150,2:
TEMP]=PR[32,2];
48:
PR[150,3:
TEMP]=PR[32,3]-2;
49:
PR[155:
Pos1]=PR[150:
TEMP];
50:
JPR[155:
Pos1]30%FINE;
/POS
/END
REGMATH.TP
1:
!
DepositVolume;
2:
;
3:
R[154:
WireCSA]=((R[150:
WireDiameter]/2*(R[150:
WireDiameter]/2))*R[151:
PI]);
4:
;
5:
R[155:
WSPD(fromsch1]=$AWESCH[1,1].$CMD_VOLTS;
6:
R[157:
WireVol/min]=R[156:
Transfereff.]*R[155:
WSPD(fromsch1]*R[154:
WireCSA];
7:
;
8:
;
9:
!
PassLayerVolume;
10:
R[146:
Gap1ininches]=R[140:
GAP1mm]/25.4;
11:
R[147:
Gap2ininches]=R[141:
GAP2mm]/25.4;
12:
R[163:
Layer(thk)inch]=R[161:
Mtl.thk(inch)]/R[162:
Numofpasses];
13:
R[164:
AreaofA]=(R[249:
TAN45degrees]*R[163:
Layer(thk)inch]*R[163:
Layer(thk)inch])/
(2);
14:
R[167:
Gap1area]=R[146:
Gap1ininches]*R[163:
Layer(thk)inch];
15:
R[168:
Gap2area]=R[147:
Gap2ininches]*R[163:
Layer(thk)inch];
16:
R[171:
Passareaat1]=R[167:
Gap1area]+R[164:
AreaofA];
17:
R[172:
Passareaat2]=R[168:
Gap2area]+R[164:
AreaofA];
18:
;
19:
!
TravelSpeedCalc;
20:
R[175:
Travelspdat1]=R[157:
WireVol/min]/R[171:
Passareaat1];
21:
R[176:
Travelspdat2]=R[157:
WireVol/min]/R[172:
Passareaat2];
ADPTWV.TP
1:
R[130:
WVSCH1]=R[140:
GAP1mm]-1;//NOTE:
the“1”is1mmlessthangapYoumaywishtochangetoadifferentvalue.
2:
R[130:
WVSCH1]=R[130:
WVSCH1]/2;
3:
!
********************************;
4:
R[131:
WVSCH2]=R[141:
GAP2mm]-1;//NOTE:
the“1”is1mmlessthangap
5:
R[131:
WVSCH2]=R[131:
WVSCH2]/2;
6:
!
SETWEAVESCHEDULE;
7:
$WVSCH[1].$AMPLITUDE=R[130:
WVSCH1];
8:
$WVSCH[2].$AMPLITUDE=R[131:
WVSCH2];
CALC_TVL.TP
1:
$AWESCH[1,1].$CMD_WSPEED=R[175:
Travelspdat1];
PASSES.TP
1:
UTOOL_NUM=1;
2:
LBL[10];
3:
IFR[144:
MultipassIndex]=1,JMPLBL[2];
4:
IFR[144:
MultipassIndex]=2,JMPLBL[3];
5:
IFR[144:
MultipassIndex]=3,JMPLBL[4];
6:
IFR[144:
MultipassIndex]=4,JMPLBL[5];
7:
!
*************;
8:
!
PASS1;
9:
JP[1]30%FINE;
10:
JP[2]30%FINE;
11:
JP[21]20%FINE;
12:
JPR[155:
Pos1]30%FINE
:
ArcStartE1[1];
13:
WeaveSine[1];
14:
TrackTAST[1]RPM[1];
15:
LPR[156:
Pos2]WELD_SPEEDFINE
:
ArcEndE1[1]WV[2]RampToR[176];
16:
WeaveEnd;
17:
TrackEnd;
18:
JP[22]20%FINE;
19:
JP[1]30%FINE;
20:
PAUSE;
21:
R[144:
MultipassIndex]=1;
22:
JMPLBL[10];
23:
;
24:
LBL[2];
25:
!
PASS2;
26:
!
*************************;
27:
CALLSCALEGAP;
28:
CALLREGMATH;
29:
CALLADPTWV;
30:
CALLCALC_TVL;
31:
JP[1]30%FINE;
32:
JP[2]30%FINE;
33:
JP[21]20%FINE;
34:
LOCKPREG;
35:
MPOffsetPR[160]RPM[1];
36:
LPR[155:
Pos1]600mm/secFINE
:
ArcStartE1[1];
37:
WeaveSine[1];
38:
LPR[156:
Pos2]WELD_SPEEDFINE
:
ArcEndE1[1]WV[2]RampToR[176];
39:
WeaveEnd;
40:
MPOffsetEnd;
41:
JP[22]20%FINE;
42:
JP[1]30%FINE;
43:
UNLOCKPREG;
44:
PAUSE;
45:
R[144:
MultipassIndex]=2;
46:
JMPLBL[10];
47:
;
48:
LBL[3];
49:
!
PASS3;
50:
!
*************************;
51:
CALLSCALEGAP;
52:
CALLREGMATH;
53:
CALLADPTWV;
54:
CALLCALC_TVL;
55:
JP[1]30%FINE;
56:
JP[2]30%FINE;
57:
JP[21]20%FINE;
58:
LOCKPREG;
59:
MPOffsetPR[162]RPM[1];
60:
JPR[155:
Pos1]30%FINE
:
ArcStartE1[1];
61:
WeaveSine[1];
62:
LPR[156:
Pos2]WELD_SPEEDFINE
:
ArcEndE1[1]WV[2]RampToR[176];
63:
WeaveEnd;
64:
MPOffsetEnd;
65:
UNLOCKPREG;
66:
JP[22]20%FINE;
67:
JP[1]30%FINE;
68:
R[144:
MultipassIndex]=3;
69:
JMPLBL[10];
70:
;
71:
!
ADDPASSESASNEEDED;
72:
LBL[4:
1STCAPPASS];
73:
R[144:
MultipassIndex]=4;
74:
;
75:
LBL[5:
2NDCAPPASS];
76:
;
77:
R[144:
MultipassIndex]=0;
SCALEGAP.TP
1:
IFR[144:
MultipassIndex]=0,JMPLBL[100];
2:
IFR[144:
MultipassIndex]=1,JMPLBL[1];
3:
IFR[144:
MultipassIndex]=2,JMPLBL[2];
4:
IFR[144:
MultipassIndex]=3,JMPLBL[3];
5:
LBL[1];
6:
R[140:
GAP1mm]=R[140:
GAP1mm]+4;
7:
R[141:
GAP2mm]=R[141:
GAP2mm]+4;
8:
END;
9:
LBL[2];
10:
R[140:
GAP1mm]=R[140:
GAP1mm]+3;
11:
R[141:
GAP2mm]=R[141:
GAP2mm]+3;
12:
END;
13:
LBL[3];
14:
R[140:
GAP1mm]=R[140:
GAP1mm]+3;
15:
R[141:
GAP2mm]=R[141:
GAP2mm]+3;
16:
END;
17:
LBL[100];
SETSYSVAR.TP(forreference)
1:
$AWERAMP[1].$RAMP_ENABLE=1;
2:
$AWERAMP[1].$RAMP_TO_POS=1;
3:
$WVCFG.$RAMP_ENB=1;
4:
$WV_OTF_GP[1].$OTF_ENABLE=1;
5:
$WV_OTF_GP[1].$GET_AMP=1;
6:
$SCR_GRP[1].$M_POS_ENB=1;
7:
$SCR_GRP[1].$M_DST_ENB=1;
NUMERICREGISTERS
R[130]
WVSCH1amplitude
R[131]
WVSCH2amplitude
R[139]
TMP
R[140]
GAP1(mm)
R[141]
GAP2(mm)
R[144]
MultipassIndex
R[145]
Z–ZeroPlane
R[146]
GAP1(inches)
R[147]
GAP2(inches)
R[150]
WireDiameter(inches)
R[151]
PI(3.1416)
R[154]
WireCSA
R[155]
WSPD(fromsch.1)
R[156]
Transferefficiency(.95)
R[157]
WireVol/min
R[160]
BevelAngle
R[161]
Mtl.Thk.(inch)
R[162]
Numofpasses
R[163]
Layer(thk)inch
R[164]
Are