Posts by Mathias Voegtle
-
-
-
I'm not sure but for milling you definitely need a very rigid robot but rather less range, the more modern Quantec series would certainly not be so well suited.
But it could also be that these models were used a lot in the automotive industry and therefore there are many used models in circulation.
-
-
So I tried a lot, but it really doesn't seem to work, but I can live with it. (BCO after Jog)
Here is a rough test program, but i will do it without interrupt and will also change the submit dialog prog...need more cases like check limits, but it would be nice if an experienced programmer could take a look at it.
Code: teach.src
Display More&ACCESS RVP &REL 23 &PARAM EDITMASK = * &PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe &PARAM DISKPATH = KRC:\R1\Program DEF TeachVersuch( ) ;FOLD INI;%{PE} ;FOLD BASISTECH INI GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( ) INTERRUPT ON 3 BAS (#INITMOV,0 ) ;ENDFOLD (BASISTECH INI) ;FOLD USER INI ;Make your modifications here ;ENDFOLD (USER INI) ;ENDFOLD (INI) $ADVANCE=1 INTERRUPT DECL 100 WHEN NOT touchupAktiv DO touchup() ;FOLD PTP HomePos Vel=100 % PDAT1 Tool[1]:GreiferHexShaft Base[0];%{PE} ;FOLD Parameters ;%{h} ;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=HomePos; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT1; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP ;ENDFOLD $BWDSTART = FALSE PDAT_ACT = PPDAT1 FDAT_ACT = FHomePos BAS(#PTP_PARAMS, 100.0) SET_CD_PARAMS (0) PTP XHomePos ;ENDFOLD GOTO Sprung ;FOLD LIN refPt Vel=2 m/s CPDAT1 Tool[1]:GreiferHexShaft Base[0] ;%{PE} ;FOLD Parameters ;%{h} ;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=refPt; Kuka.BlendingEnabled=False; Kuka.MoveDataName=CPDAT1; Kuka.VelocityPath=2; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=LIN ;ENDFOLD $BWDSTART = FALSE LDAT_ACT = LCPDAT1 FDAT_ACT = FrefPt BAS(#CP_PARAMS, 2.0) SET_CD_PARAMS (0) LIN XrefPt ;ENDFOLD Sprung: ptRef = XrefPt:refPtKorr BAS(#VEL_CP,0.5) LIN {x 0, y 0, z 80, a 0, b 0, c 0}:ptRef BAS(#VEL_CP,0.1) LIN {x 0, y 0, z 20, a 0, b 0, c 0}:ptRef WAIT SEC 0.2 touchupStart() BAS(#VEL_CP,0.5) LIN {x 0, y 0, z 80, a 0, b 0, c 0}:ptRef ;FOLD PTP HomePos Vel=100 % PDAT1 Tool[1]:GreiferHexShaft Base[0];%{PE} ;FOLD Parameters ;%{h} ;Params IlfProvider=kukaroboter.basistech.inlineforms.movement.old; Kuka.IsGlobalPoint=False; Kuka.PointName=HomePos; Kuka.BlendingEnabled=False; Kuka.MoveDataPtpName=PDAT1; Kuka.VelocityPtp=100; Kuka.CurrentCDSetIndex=0; Kuka.MovementParameterFieldEnabled=True; IlfCommand=PTP ;ENDFOLD $BWDSTART = FALSE PDAT_ACT = PPDAT1 FDAT_ACT = FHomePos BAS(#PTP_PARAMS, 100.0) SET_CD_PARAMS (0) PTP XHomePos ;ENDFOLD END DEF touchupStart() posTouchRef = XrefPt posTouchKorr = refPtKorr WAIT SEC 0.2 touchupAktiv = TRUE WAIT SEC 0.2 INTERRUPT ON 100 LIN $POS_ACT_MES WAIT FOR NOT touchupAktiv END DEF touchup() refPtKorr = posTouchKorr ptRef = XrefPt:refPtKorr INTERRUPT OFF 100 BRAKE LIN $POS_INT WAIT FOR TRUE RESUME END
Code: teach.dat
Display More&ACCESS RVP &REL 23 &PARAM EDITMASK = * &PARAM TEMPLATE = C:\KRC\Roboter\Template\vorgabe &PARAM DISKPATH = KRC:\R1\Program DEFDAT TEACHVERSUCH DECL MODULEPARAM_T LAST_TP_PARAMS={PARAMS[] "Kuka.MoveDataPtpName=PDAT1; Kuka.MovementDataPdat.apo_mode=#CDIS; Kuka.MovementDataPdat.apo_dist=250; Kuka.MovementData.vel=2; Kuka.MovementData.acc=30; Kuka.MovementData.exax_ign=0; Kuka.VelocityPtp=100; Kuka.BlendingEnabled=False; Kuka.CurrentCDSetIndex=0; Kuka.PointName=refPt; Kuka.FrameData.base_no=0; Kuka.FrameData.tool_no=1; Kuka.FrameData.ipo_frame=#BASE; Kuka.isglobalpoint=False; Kuka.MoveDataName=CPDAT1; Kuka.MovementData.apo_fac=50; Kuka.MovementData.apo_dist=250; Kuka.MovementData.axis_acc=100; Kuka.MovementData.axis_vel=100; Kuka.MovementData.circ_typ=#BASE; Kuka.MovementData.jerk_fac=50; Kuka.MovementData.ori_typ=#VAR; Kuka.VelocityPath=2"} DECL E6POS XHomePos={X 466.775909,Y 6.64346647,Z 493.478119,A -176.141830,B -0.441056043,C -179.800339,S 2,T 3,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} DECL FDAT FHomePos={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " "} DECL E6POS XrefPt={X 630.984253,Y 15.6738176,Z 89.7787399,A -176.141586,B -0.441064805,C -179.800278,S 2,T 3,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} DECL E6POS refPtKorr={X 2.34972644,Y -57.9963074,Z -5.81291962,A 0.00305029773,B -0.00158185582,C 0.000782311,S 2,T 3,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} DECL E6POS ptRef={X 632.587341,Y -42.3254623,Z 95.8117,A -176.144638,B -0.439472318,C -179.799469,S 2,T 3,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} DECL E6POS tempTeach={X 0.0278922413,Y 0.0207954589,Z -0.0419512615,A -0.00191420852,B -0.00396984164,C -0.000341246312,S 0,T 0} DECL FDAT FrefPt={TOOL_NO 1,BASE_NO 0,IPO_FRAME #BASE,POINT2[] " "} ENDDAT
Code: global.dat
Display More&ACCESS RVO1 &COMMENT DEFDAT TouchupData PUBLIC DECL GLOBAL BOOL touchupAktiv = FALSE DECL GLOBAL BOOL touchupInit = TRUE DECL GLOBAL E6AXIS axisTouchRef={A1 0.0,A2 0.0,A3 0.0,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} DECL GLOBAL E6AXIS axisTouchKorr={A1 0.0,A2 0.0,A3 0.0,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} DECL GLOBAL E6AXIS axisTouchTemp={A1 0.0,A2 0.0,A3 0.0,A4 0.0,A5 0.0,A6 0.0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} DECL GLOBAL E6POS posTouchRef={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0,S 0,T 0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} DECL GLOBAL E6POS posTouchKorr={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0,S 0,T 0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} DECL GLOBAL E6POS posTouchTemp={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0,S 0,T 0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} ENDDAT
Code: touchup.sps
Display More&ACCESS RVO &REL 4 DEF TouchupDialog() DECL KrlMsg_T msg DECL KrlMsgPar_T par[3] DECL KrlMsgOpt_T opt DECL KrlMsgDlgSK_T SK[7] DECL State_T state DECL INT nHandle, keyNr, offset DECL FRAME pt LOOP IF touchupAktiv THEN msg.modul[] = "TouchUp" msg.Nr = 1 IF touchupInit THEN msg.msg_txt[] = "Refpunkt" SK[1] = {sk_Type #value, sk_txt[] "Starten"} SK[2] = {sk_Type #value, sk_txt[] "Abbrechen"} nHandle = SET_KRLDLG(msg, par[], SK[], opt) IF (nHandle > 0) THEN WHILE (EXISTS_KRLDLG(nHandle, keyNr)) WAIT SEC 0.2 ENDWHILE SWITCH keyNr CASE 1 touchupInit = FALSE CASE 0,2 touchupAktiv = FALSE touchupInit = TRUE ENDSWITCH WAIT SEC 0.2 ENDIF ELSE IF ($SAFETY_SW == #RELEASED) THEN WAIT SEC 0.2 posTouchTemp = $POS_ACT_MES:INV_POS(posTouchRef:posTouchKorr) pt = posTouchTemp msg.msg_txt[] = " " offset = 0 SWRITE(msg.msg_txt[], state, offset, "Abweichung: X%.3f Y%.3f Z%.3f A%.3f B%.3f C%.3f", pt.x,pt.y,pt.z,pt.a,pt.b,pt.c) SK[1] = {sk_Type #value, sk_txt[] "Speichern"} SK[2] = {sk_Type #value, sk_txt[] "Abbrechen"} WAIT SEC 0.2 nHandle = SET_KRLDLG(msg, par[], SK[], opt) IF (nHandle > 0) THEN WHILE (Exists_KrlDlg(nHandle, keyNr)) IF ($SAFETY_SW == #PRESSED) THEN WAIT FOR CLEAR_KRLMSG(nHandle) OR TRUE ENDIF ENDWHILE SWITCH keyNr CASE 1 posTouchKorr = $POS_ACT_MES:INV_POS(posTouchRef) touchupAktiv = FALSE touchupInit = TRUE CASE 2 touchupAktiv = FALSE touchupInit = TRUE ENDSWITCH ENDIF ENDIF ENDIF ENDIF ENDLOOP END
-
Oh yes should have written a little more (KSS 8.6).
I have another idea that I will try later at work, after which I will answer in more detail.
Maybe it works if the last move is LIN $ POS_ACT.
In short, teachmode is just a global variable to start the dialog in the submit and to compare the current position via global position data, that works so far.
-
Hello,
I would like to do a teach routine for re-teaching reference points and bases in T1 Mode.
- Robot moves over the point
- Sub Prog activate Teachmode > Interrupt On > WAIT FOR Teachmode off
- when Teachmode on > Submit Dialog to confirm
- second Submit dialog that shows the deviation of the position and to save the new coordinates
- jog to new position
- when Teachmode off > Interrupt cancels last motion
- Robot moves away from the new position
Tried a lot yesterday, but had problems with interrupt resume and when continuing the main program the old position is approached first.
Unfortunately, I can't test anything now, but is this even possible?
Hope someone can help me and thank you in advance.
Greetings Mathias