RobotStudio event

Reltool

I am working on a ABB robot IRB2400 using IRC5 controller . The robot is used to cut keypad slots for ATM machines. Iam using Reltool command , as it becomes lot easier to define one point and use reltool and offset the robot in relation to my master point.

I have to cut keypad slots which are rectangular in shape and I have found that even if you give proper xyz (dimensions). The robot shows signs of overshooting at the four corners of the robot.  I have posted pictures to give a better understanding of what Iam tryin to say. I have checked the aligned of the tool and everthing is fine. But i cannot get rid of this overshooting. Looking at the last picture you can see the left hand botton corner has a curve like feature, which is the most annoying bit here. I cannot figure out why it takes extra material from the corner and then follows the straght line. I will attach a part of the code here so that everyone gets an understanding of what I have done.  I have numbered the whole sequence. The corners are 1-2-3-4 in clockwise direction. But I am machining the hole in  a sequence, which is 1-4-3-2 and then it does the final bit at the top that is 2-1.
IT WOULD BE REALLY GREAT IF FORUM USERS COULD GIVE ME SOME SUGGESTION ON HOW TO SOLVE THIS PROBLEM.
PROC VW3_KEYBOARD()
          VAR num  rx := 13;
          VAR  num ry := 45;
          VAR  num rz := 3;
          VAR num  y := 6;
          SetGO tmp2, 6000;
          !
         
         
          !MoveL Test_largekey, v50, z50, Machine_ToolWObj:=wobj_V1;
          !MoveL RelTool( Test_largekey,0.5,0,0.5Rx:=0Ry:=0.0Rz:=-0.0), v40, fine, Machine_ToolWObj:=wobj_V1;
          !MoveL RelTool( Test_largekey,0,0,-80Rx:=0Ry:=0Rz:=-0.0), v40, fine, Machine_ToolWObj:=wobj_V1;
          !
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          !!!Large Key board First cut(smaller hole 0.5x0.5mm inward.
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          !
         
          !start from some random point and then move to first
           MoveJ common, v400, z30, Machine_ToolWObj:=wobj_V1;
          MoveJ common10, v400, z30, Machine_ToolWObj:=wobj_V1;
          MoveJ common80, v400, z30, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,0.3,-10,44.75Rx:=0Ry:=0Rz:=0), v200, fine, Machine_ToolWObj:=wobj_V1;
          !
          !Drill the first hole
          MoveL RelTool( vw3_key,1,y,44.75Rx:=0Ry:=0Rz:=0), v40, z1, Machine_ToolWObj:=wobj_V1;
          !1
        
          MoveL RelTool( vw3_key,0,y,89.5Rx:=rxRy:=ryRz:=rz), v40, z0, Machine_ToolWObj:=wobj_V1;
          !4
          MoveL RelTool( vw3_key,0,y,20Rx:=rxRy:=ryRz:=rz), v40, z0, Machine_ToolWObj:=wobj_V1;
           MoveL RelTool( vw3_key,1,y,20Rx:=0Ry:=0Rz:=0), v10, z0, Machine_ToolWObj:=wobj_V1;
           MoveL RelTool( vw3_key,0,y,20Rx:=0Ry:=0Rz:=0), v10, z1, Machine_ToolWObj:=wobj_V1;
           MoveL RelTool( vw3_key,0,y,0Rx:=0Ry:=0Rz:=-0.0), v20, z0, Machine_ToolWObj:=wobj_V1;
          !3
          MoveL RelTool( vw3_key,186.91,y,0Rx:=0Ry:=0Rz:=-0.0), v40, z0, Machine_ToolWObj:=wobj_V1;
          !2
          MoveL RelTool( vw3_key,186.91,y,50.00Rx:=0Ry:=0Rz:=0), v40, z0, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,186.00,y,50.00Rx:=rxRy:=ryRz:=rz), v10, z0, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,186.91,y,50.00Rx:=rxRy:=ryRz:=rz), v10, z1, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,186.91,y,89.5Rx:=rxRy:=ryRz:=rz), v10, z0, Machine_ToolWObj:=wobj_V1;
          !
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          !MOVE TO FINISHING POINT FROM !2 TO !1 BY MOVE IN SOMEHWRE IN THE MIDDLE.
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          MoveL RelTool( vw3_key,186.00,y,88.5Rx:=rxRy:=ryRz:=rz), v10, z20, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,186.00,-20,49.5Rx:=rxRy:=ryRz:=rz), v80, z20, Machine_ToolWObj:=wobj_V1;
           MoveL RelTool( vw3_key,0.3,-20,44.75Rx:=0Ry:=0Rz:=0), v80, z20, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,0.3,y,85.9Rx:=rxRy:=ryRz:=rz), v40, z0, Machine_ToolWObj:=wobj_V1;
          !
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          !!!!!Large Key Board Finishing!!
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          !1
          MoveL RelTool( vw3_key,-0.1,y,90.8Rx:=rxRy:=ryRz:=rz), v20, z0, Machine_ToolWObj:=wobj_V1;
          !4
          MoveL RelTool( vw3_key,-0.5,y,3Rx:=rxRy:=ryRz:=rz), v40, z1, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,-0,y,3Rx:=0Ry:=0Rz:=0), v10, z1, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,-0.5,y,-0.5Rx:=0Ry:=0Rz:=-0.0), v10, z1, Machine_ToolWObj:=wobj_V1;
          !
          !3
          MoveL RelTool( vw3_key,186.41,y,-0.5Rx:=0Ry:=0Rz:=-0.0), v40, z1, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,187.41,y,-0.5Rx:=0Ry:=0Rz:=-0.0), v10, z1, Machine_ToolWObj:=wobj_V1;
          !2
          MoveL RelTool( vw3_key,187.41,y,89.8Rx:=rxRy:=ryRz:=rz), v40, z1, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,187.41,y,90.8Rx:=rxRy:=ryRz:=rz), v10, z1, Machine_ToolWObj:=wobj_V1;
          !
         
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          !NOW MOVE TO LARGE KEYBOARD FIRSTCUT FROM 2-1
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          !2
          MoveL RelTool( vw3_key,185.91,2,89.0Rx:=rxRy:=ryRz:=rz), v40, z0, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,186.91,2,89.5Rx:=rxRy:=ryRz:=rz), v10, z0, Machine_ToolWObj:=wobj_V1;
          !1
          MoveL RelTool( vw3_key,0,2,89.5Rx:=rxRy:=ryRz:=rz), v40, z0, Machine_ToolWObj:=wobj_V1;
          !        !
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          !MOVE TO 2 AND DO THE FINAL FINISHING CUT
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          !
          !*******************
          !MOVING FROM POINT 1
         MoveL RelTool( vw3_key,0.3,y,89.0Rx:=rxRy:=ryRz:=rz), v10, z1, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,0.3,-20,49.5Rx:=rxRy:=ryRz:=rz), v80, z1, Machine_ToolWObj:=wobj_V1;
          !********************
           !MOVING IN AT POINT 2
          MoveL RelTool( vw3_key,186.91,-20,49.5Rx:=rxRy:=ryRz:=rz), v80, z20, Machine_ToolWObj:=wobj_V1;
          !
          !!!!!!!!!!!!!!!!!!!!!!!!!!!
          !FINISHING CUT FROM 2 TO 1
          !!!!!!!!!!!!!!!!!!!!!!!!!!!
          !
           !2
          MoveL RelTool( vw3_key,186.41,y,89Rx:=rxRy:=ryRz:=rz), v20, fine, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,186.91,y,89.5Rx:=rxRy:=ryRz:=rz), v10, fine, Machine_ToolWObj:=wobj_V1;
          !1
          MoveL RelTool( vw3_key,-0,y,89.5Rx:=rxRy:=ryRz:=rz), v10, fine, Machine_ToolWObj:=wobj_V1;
          !
          !****************** 2ND FINISHING CUT***********************
          !
           !MOVE TO 2 AND DO THE FINAL FINISHING CUT
          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          !
          !*******************
          !MOVING FROM POINT 1
          MoveL RelTool( vw3_key,0.3,y,89Rx:=rxRy:=ryRz:=rz), v10, z20, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,-0,-20,49.5Rx:=rxRy:=ryRz:=rz), v80, z20, Machine_ToolWObj:=wobj_V1;
          !********************
           !MOVING IN AT POINT 2
          MoveL RelTool( vw3_key,186.91,-20,49.5Rx:=rxRy:=ryRz:=rz), v80, z20, Machine_ToolWObj:=wobj_V1;
          !
          !
          !!!!!!!!!!!!!!!!!!!!!!!!!!!
          !FINISHING CUT FROM 2 TO 1
          !!!!!!!!!!!!!!!!!!!!!!!!!!!
          !
           !2
          MoveL RelTool( vw3_key,187,y,90.4Rx:=rxRy:=ryRz:=rz), v40, z0, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,187.41,y,90.9Rx:=rxRy:=ryRz:=rz), v10, z0, Machine_ToolWObj:=wobj_V1;
          !1
          MoveL RelTool( vw3_key,-0.1,y,90.9Rx:=rxRy:=ryRz:=rz), v40, z0, Machine_ToolWObj:=wobj_V1;
          MoveL RelTool( vw3_key,-0.5,y,90.9Rx:=rxRy:=ryRz:=rz), v10, z0, Machine_ToolWObj:=wobj_V1;


imageimageimage

Bharat Suvarna
«1

Comments

  • Have you looked into Advanced Shape Tuning and axis Friction Tuning?
     

    Have you tried to decrease your accelerations in the cutting path when going arond a corner?

     

    Resequence your cutting path for straight lines only, ending in the corners - decreasing your speeed as you approach the corner, do not turn and cut - too many axis have to change speed /direction suddenly -

     
    Thomas H. Johnston
    PACs Application Engineer
  • HI Thomas,
    I haven't tried Advanced shape tuning and axis friction tuning. I will have a lot for it in the documentation Cd and find out more about it. In the mean time if you have any info on them please do let me know.

    I have tried decreasing the acceleration at the corners and that didnt seem to make a difference. I had to add angles as the robot cannot reach the top bit of the square without the angle and there used to be a joint collision fault coming up wthout angles being added. I tried cutting in clockwise and anticlose wise directions but that didnt seem to help either.
                          Thanks for your help.
    Cheers,
    Bharat

    Bharat Suvarna
  • Hi

    I have noted this behaviour on other 2400 robots.. only when cornering.

    Is it possible to add a wait time at the corner... I appreciate this will slow down your cycle time.

     

  • Hi Sturner,
    I will try that. Let me see if that makes a difference.

    Thanks

    Bharat Suvarna
  • I have tried the waittime to produce a delay at the corners but didnt help.
    The problem seems to occur as soon as the robot runs a instruction even if its feed rate is small say v15. Its like the robot is jerking at the start of a instruction and then continues to jog in a straight line. It is seen in automatic mode as well. I spoke to ABB about it and they are confused as well.

    Bharat Suvarna
  • How well defined and accurate is the tool load in your TCP decleration?
     

    Are you near or over capacity? - Overshoot is normally caused by poor dynamics for load def. -

     

    Run LoadID more than once - observe the results - if they float alot you either have a load that is over capacity - or you have some other influences (such as cabling) causing unwanted dynamics - if it is possible to run Load ID withiout cables insltalled, do that as well and compare to LoadID results with cabling -

     

    Do you have proper upper arm loads defined to account for cabling? - can the cables be controlled by a tool balancer or removed from robot arm and routed above in any way -

     

    The shorter the cables the better - provide sufficent support for them so they do not influence your process

     

    Post your RTAPID decleration for the TCP Machine_Tool

     
    Thomas J2009-06-09 15:02:21
    Thomas H. Johnston
    PACs Application Engineer
  • I have run LoadID twice and come up with a tool load of 6.6kg ,  and 98% accuracy. The cables are sufficient for the job and they cant be made smaller than this.
    Here is the Information about the tool, hope this is will be helpful.
    TASK PERS tooldata Machine_Tool:=[TRUE,[[-1.73141,181.756,99.75],[1,0,0,0]],[6.6,[7.8,0,101.5],[1,0,0,0],0,0,0.123]];

    Bharat Suvarna
  • Look at Cable routing - not cable size - for possible influences.
     

    Have you taken the complete EOAT off the robot and weigh it? - use that weight as input to Load ID.

     

    Hard to beleive the COG and Inertia set in the tool load. Was that what LoadID Set when it updated the TCP.load values?

     

    Never seen it set any COG or Inertias to zero....
    Thomas H. Johnston
    PACs Application Engineer
  • I had called the service routine, Loadidentify and this is wat it had set the tool data after running it. Once the process completed, I saved the values using the pendent. The weight found by the robot is right, the weight value replicates the drill motor and the any fixtures attached at the end of the robot.The cables from the tool are routed in the same way as the robot cables are routed. Thus Iam sure it is caused by the cabling. 
    Bharat Suvarna
  • I have run the Load identify routine 2 more times and found that the mass remains the same but the COG values vary slightly fro first run it was
    1. COG  x= 9.2, y= 0 and z=105 accuracy 99%
    2. COG x= 6.2, y=0 and z= 101.5 accuracy 98%

    Bharat Suvarna
  • Look into Advanced Shape Tuning and Friction Tuning then if you are comfortable with the load def in the TCP -
    Thomas H. Johnston
    PACs Application Engineer
  • At the moment the Friction compensation under motion settings  are not active. The friction FFW on is set as NO for all 6 axis. Just incase I want to revert back to the default values Can I do that or the values lost as soon as change them?


    Bharat Suvarna
  • Hi,
     

    Have you tried fine points instead of Z0?

     

    Regards

    Graeme
  • Yes I have tried fine and it doesnt make any difference. 
    Bharat Suvarna
  • Hi

    If you can use a small tool with moveC

  • I HAV ESCALATED THE ISSUE TO ABB UK. THEY HAVE FORWARDED IT TO SWEDEN. HOPEFULLY A SOLUTION SHOULD BE OUT SOON.
    IN THE MEAN TIME THERE IS THIS ISSUE THAT IS BOTHERING ME. IT IS TO DO WIT THE MENU TASK I HAVE CREATED. COULD SOME ON EGIVE ME A SOULTION FOR THIS. MY MAIN TASK DISPLAYS A MESSAGE VIA TPWRITE ON THE TASK SCREEN. BUT THE MENU TASK WHICH IS SEMISTATIC AND THUS THE MENU SCREEN POPS UP ALL THE TIME NOT ALLOWING THE TPWRITE MESSAGES TO BE SHOWN ON THE SCREEN.
    PLEASE LET ME KNOW IF THERE IS A WAY AROUND IT.

    Bharat Suvarna
  • THIS IS THE MENU TASK

    MODULE MainModule
        TASK PERS tooldata DRILL_BIT:=[TRUE,[[-1.5959,180.821,99.539],[0.70668,-0.70486,-0.0435024,0.0433906]],[5,[0,0,90],[1,0,0,0],0,0,0]];
        CONST robtarget common:=[[808.00,56.04,952.70],[0.0819994,-0.702442,0.702437,0.0801998],[0,0,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
        CONST robtarget common10:=[[397.61,-60.64,1188.30],[0.0876785,-0.0675001,0.00262596,-0.993856],[0,0,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
        CONST robtarget PARK_POINT:=[[374.53,-32.49,1231.91],[0.130241,-0.15111,0.688131,-0.697623],[0,-1,-3,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
        CONST robtarget PARK_POINT10:=[[298.21,-220.72,844.62],[0.09782,-0.0573678,-0.711884,0.693081],[-1,1,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
        CONST robtarget PARK_POINT20:=[[298.21,-220.72,844.62],[0.0978206,-0.0573632,-0.711884,0.693081],[-1,1,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
        CONST robtarget CHANGE_DRILl:=[[335.48,-219.34,811.16],[0.0212412,-0.0842365,0.995021,0.0488424],[-1,1,-2,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

        !*********************************************************************
        VAR btnres btnresMainMenu:=0;
        VAR btnres btnresProductSelect:=0;
        !*********************************************************************
        PERS errnum errnoDibreak:=0;
        !*********************************************************************
        PERS string stCurrProduct:="VW1P_BARCODE_2ND_DIP";
        PERS string stCurrModel:="VW1P";
        !*********************************************************************
        CONST string MyButtonsMain{2}:=["Press to continue"," "];
        !CONST string MyButtonsMain1{2}:=["A","B"];
        CONST string MyButtonsProdSel1{4}:=["A","B","C","D"];
        CONST string MyButtonsProdSel2{4}:=["A","B","C","Main Menu"];
        CONST string MyButtonsProdSel3{3}:=["A","B","Main Menu"];
        CONST string MyButtonsProdSel4{4}:=["A","B","Main Menu", "Test_routine"];
        !*********************************************************************
        !CONST string MyMessageMain {2}:=["A = Park Robot","B = Change Drill Bit"];
        CONST string MyMessageProdSel1{4}:=["A = MODEL VW3","B = MODEL VX4","C = MODEL VW1P","D = Service"];
        CONST string MyMessageProdSel2{4}:=["A = MACHINE THE BARCODE SLOT","B = MACHINE THE KEYBOARD SLOT","C = MACHINE THE BARCODE & KEYBOARD SLOT","MAIN MENU = RETURN TO MAIN MENU"];
        CONST string MyMessageProdSel3{3}:=["A = MACHINE THE BARCODE SLOT","B = MACHINE THE BARCODE 2ND DIP SLOT","MAIN MENU = RETURN TO MAIN MENU"];
        !added
        CONST string MyMessageProdSel4{4}:=["A = Park Robot","B = CHANGE TOOL","MAIN MENU = RETURN TO MAIN MENU","Test_routine"];
        !*********************************************************************
        PERS bool bProdSelect:=TRUE;
        
        PROC main()
        TPErase;
        !WaitUntil ICH01 = 1
        WaitTime 2;
        !WHILE TRUE DO
        IF UIClientExist() THEN
            btnresMainMenu := UIMessageBox(Header:="Waiting  For  Operator  Ready"Message:="Current Product: " + stCurrProductBtnArray:=MyButtonsMainIcon:=iconInfoDIBreak:=ICH01BreakFlag:=errnoDibreak);
        ENDIF
                IF btnresMainMenu = 1 THEN
                    Product_Select;
                !
                ELSEIF errnoDibreak = ERR_TP_NO_CLIENT THEN
                WaitTime 3;
                RETURN;
                !
                ELSEIF errnoDibreak = ERR_TP_DIBREAK AND stCurrModel = "PARK" THEN
                !TPWRITE"MOVING ROBOT TO PARK POSITION";
                !ADDED
                RETURN;
                ELSEIF errnoDibreak = ERR_TP_DIBREAK THEN
                !****THE MOTION TASK WILL START IN T_ROB1/MAINMODULE
                RETURN;
                ENDIF
                      !!!CHECK TO SEE IF A PRODUCT HAS BEEN SELECTED
                !!
       !!!!!!!!!!!!!!!!Check for the correct fixture ICH04,ICH05,ICH06!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       !!!
       !!!Here I have grouped inputs ICH04(fixture check senser for VW3), ICH05(fixture check senser for VW1P), ICH06(fixture check ssenser for VX4)
       !!!
       !!!ICH07(PART CLAMPED SENSOR), ICH08(PART CLAMPED SENSOR)
       !!!
       !!!IAM NAMING THE GROUP AS SENSOR_GROUP
       !!!USING A TEST STATEMENT TO CHECK THE VALUES OF THE SENSOR AND GIVING THE OUTPUT
       !!!UNIT MAPPING 7-3
       !!!AT A TIME ONE OF THE SENSORS FOR FIXTURES ICH04,ICHO5,ICH06 SHOULD BE HIGH AND BOTH ICH09 AND ICH10 SHOULD BE HIGH
        !!!THE THREE BINARY INPUT POSSIBILITIES ARE 10011 = 19 ,01011 = 11 ,00111 = 7
        !!!
        !!TEST SENSORGROUP
            !!CASE 19:
                !!IF stCurrModel = "VW3" THEN
                    !!TPWRITE"THE "+stCurrProduct+" WILL BE MACHINED";
                !!ELSE
                    !!TPWRITE "THE FIXTURE DOES NOT MATCH THE MODEL SELECTED BY THE OPERATOR";
                    !!TPWRITE" ";
                    !!TPWRITE "PRESS THE RESET BUTTON TO RETURN TO MAIN MENU";
                    !!!
                    !!WaitUntil ICH03 = 1;
                    !!EXITCYCLE;
                !!ENDIF
             !!CASE 11:
                !!IF stCurrModel = "VW1P" THEN
                    !!TPWRITE"THE "+stCurrProduct+" WILL BE MACHINED";
                !!ELSE
                    !!TPWRITE "The Program selected and model placed in the machine doesnt match";
                    !!TPWRITE" ";
                    !!TPWRITE "PRESS THE RESET BUTTON TO RETURN TO MAIN MENU";
                    !!!
                    !!WaitUntil ICH03 = 1;
                    !!EXITCYCLE;
                !!ENDIF
            !!CASE 7:
                !!IF stCurrModel = "VX4" THEN
                    !!TPWRITE"THE "+stCurrProduct+" WILL BE MACHINED";
                !!ELSE
                    !!TPWrite "The Program selected and model placed in the machine doesnt match";
                    !!TPWRITE" ";
                    !!TPWRITE "PRESS THE RESET BUTTON TO RETURN TO MAIN MENU";
                    !!!
                    !!WaitUntil ICH03 = 1;
                    !!EXITCYCLE;
                !!ENDIF
                !!DEFAULT:
                    !!TPWRITE "Please check the fixture and whether the model is clamped properly";
                    !!TPWRITE" ";
                    !!TPWRITE "PRESS THE RESET BUTTON TO RETURN TO MAIN MENU";
                    !WaitUntil ICH03 = 1;
                    !EXITCYCLE;
                    !!!
        !ENDTEST
            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            !!!!*******THE MAIN TASK (T_ROB1)WILL HANDLE THE REST
            !!!!*****THE MAIN TASK WILL START THE ROUTINE;
            !!!!**STRCURRPRODUCT IS BEING USED AS A PERS VARIABLE TO CARRY INFOR TO MAIN MENU*
            !ENDWHILE
         ENDPROC
        !
        !
        PROC Product_Select()
            bProdSelect := FALSE;
            WHILE bProdSelect = FALSE DO
                btnresProductSelect := UIMessageBox(Header:="Current Product: " + stCurrProductMsgArray:=MyMessageProdSel1BtnArray:=MyButtonsProdSel1Icon:=iconInfo);
                TEST btnresProductSelect
                    CASE 1:
                        stCurrModel:= "VW3";
                    CASE 2:
                        stCurrModel:= "VX4";
                    CASE 3:
                        stCurrModel:= "VW1P";
                    CASE 4:
                        stCurrModel:= "Service";
                ENDTEST
                IF stCurrModel = "VW3" OR stCurrModel = "VX4" THEN
                    btnresProductSelect := UIMessageBox(Header:="Current Model: " + stCurrModelMsgArray:=MyMessageProdSel2BtnArray:=MyButtonsProdSel2Icon:=iconInfo);
                    TEST btnresProductSelect
                        CASE 1:
                            stCurrProduct:= stCurrModel+"_BARCODE";
                            bProdSelect := TRUE;
                        CASE 2:
                            stCurrProduct:= stCurrModel+"_KEYBOARD";
                                bProdSelect := TRUE;
                        CASE 3:
                            stCurrProduct:= stCurrModel+"_BARCODEANDKEYBOARD";
                                bProdSelect := TRUE;
                ENDTEST
                ELSEIF stCurrModel = "VW1P" THEN
                    btnresProductSelect := UIMessageBox(Header:="Current Model: " + stCurrModelMsgArray:=MyMessageProdSel3BtnArray:=MyButtonsProdSel3Icon:=iconInfo);
                    TEST btnresProductSelect
                        CASE 1:
                            stCurrProduct:= stCurrModel+"_BARCODE";
                                bProdSelect := TRUE;
                        CASE 2:
                            stCurrProduct:= stCurrModel+"_BARCODE_2ND_DIP";
                                bProdSelect := TRUE;               
                    ENDTEST
                !ADDED
                ELSEIF stCurrModel = "Service" THEN
                    btnresProductSelect := UIMessageBox(Header:="Current Model: " + stCurrModelMsgArray:=MyMessageProdSel4BtnArray:=MyButtonsProdSel4Icon:=iconInfo);
                    TEST btnresProductSelect
                        CASE 1:
                            stCurrProduct:= "PARK";
                                bProdSelect := TRUE;
                        CASE 2:
                            stCurrProduct:= "CHANGE_TOOL";
                                bProdSelect := TRUE;
                        CASE 4:
                            stCurrProduct:= "Test_routine";
                                bProdSelect := TRUE;   
                    ENDTEST
                ENDIF
            ENDWHILE
        ENDPROC
        ENDMODULE
    Bharat Suvarna
  • THIS IS MY MAIN TASK(TASK WITH ROBOT MOTION PROGRAMMED)
    PROC main()
                TPERASE;
                !TPShow TP_LATEST;
                waituntil ICH01=1;
                !!!!!!!!!!!!!!!!!
                !RESET BEACON ALARM
                Reset OCH01;
                !!!!!!!!!!!!!!!!!
                !RESET RED BEACON
                Reset OCH02;
                !!!!!!!!!!!!!!!!!
                !SET GREEN BEACON
                Set OCH03;
                !!!!!!!!!!!!!!!!!
                !
                IF stCurrProduct = "PARK" then
                    %stCurrProduct%;
                ELSEIF
                    stCurrProduct = "CHANGE_TOOL" then
                    %stCurrProduct%;
                    ELSEIF
                    stCurrProduct = "Test_routine" then
                    %stCurrProduct%;
                    !!!!!!!!!!!!!!Check for the correct fixture ICH04,ICH05,ICH06!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    !
                    !Here I have grouped inputs ICH04(fixture check senser for VW3), ICH05(fixture check senser for VW1P), ICH06(fixture check ssenser for VX4)
                    !
                    !ICH07(PART CLAMPED SENSOR), ICH08(PART CLAMPED SENSOR)
                    !
                    !IAM NAMING THE GROUP AS SENSOR_GROUP
                    !USING A TEST STATEMENT TO CHECK THE VALUES OF THE SENSOR AND GIVING THE OUTPUT
                    !UNIT MAPPING 7-3
                    !AT A TIME ONE OF THE SENSORS FOR FIXTURES ICH04,ICHO5,ICH06 SHOULD BE HIGH AND BOTH ICH09 AND ICH10 SHOULD BE HIGH
                        !THE THREE BINARY INPUT POSSIBILITIES ARE 10011 = 19 ,01011 = 11 ,00111 = 7
                        !
               
                Else
                    SetGO tmp2, 3000;
                    SetGO tmp1, 97;
                !
            TEST SENSORGROUP
                CASE 19:
                    IF stCurrModel = "VW3" THEN
                        TPWRITE"THE "+stCurrProduct+" WILL BE MACHINED";
                        %stCurrProduct%;
                    ELSE
                        !SET BEACON ALARM
                        Set OCH01;
                        WaitTime 1;
                        !!!!!!!!!!!!!!!!!
                        !RESET BEACON ALARM
                        Reset OCH01;
                        !SET RED BEACON
                        Set OCH02;
                        !!!!!!!!!!!!!!!!!!
                        !RESET GREEN BEACON
                        Reset OCH03;
                        !
                        TPWRITE "The Program selected and model placed in the machine doesnt match";
                        TPWRITE "PRESS THE RESET BUTTON TO RETURN TO MAIN";
                        !
                        WaitUntil ICH03 = 1;
                        EXITCYCLE;
                    ENDIF
           
                CASE 11:
                    IF stCurrModel = "VW1P" THEN
                        TPWRITE"THE "+stCurrProduct+" WILL BE MACHINED";
                        %stCurrProduct%;
                    ELSE
                        !SET BEACON ALARM
                        Set OCH01;
                        WaitTime 1;
                        !!!!!!!!!!!!!!!!!
                        !RESET BEACON ALARM
                        Reset OCH01;
                        !SET RED BEACON
                        Set OCH02;
                        !!!!!!!!!!!!!!!!!!
                        !RESET GREEN BEACON
                        Reset OCH03;
                        !
                        TPWRITE "The Program selected and model placed in the machine doesnt match";
                        TPWRITE "PRESS THE RESET BUTTON TO RETURN TO MAIN";
                        !
                        WaitUntil ICH03 = 1;
                        EXITCYCLE;
                    ENDIF
                   
                CASE 7:
                    IF stCurrModel = "VX4" THEN
                        TPWRITE"THE "+stCurrProduct+" WILL BE MACHINED";
                        %stCurrProduct%;
                    ELSE
                        !SET BEACON ALARM
                        Set OCH01;
                        WaitTime 1;
                        !!!!!!!!!!!!!!!!!
                        !RESET BEACON ALARM
                        Reset OCH01;
                        !SET RED BEACON
                        Set OCH02;
                        !!!!!!!!!!!!!!!!!!
                        !RESET GREEN BEACON
                        Reset OCH03;
                        !
                        TPWrite "The Program selected and model placed in the machine doesnt match";
                        TPWRITE "PRESS THE RESET BUTTON TO RETURN TO MAIN";
                        !
                        WaitUntil ICH03 = 1;
                        EXITCYCLE;
                    ENDIF
               
                    DEFAULT:
                        !SET BEACON ALARM
                        Set OCH01;
                        WaitTime 1;
                        !!!!!!!!!!!!!!!!!
                        !RESET BEACON ALARM
                        Reset OCH01;
                        !SET RED BEACON
                        Set OCH02;
                        !!!!!!!!!!!!!!!!!!
                        !RESET GREEN BEACON
                        Reset OCH03;
                        !
                        TPWRITE "Please check the fixture and whether the model is clamped properly";
                        TPWRITE "PRESS THE RESET BUTTON TO RETURN TO MAIN";
                        WaitUntil ICH03 = 1;
                        EXITCYCLE;
                        !
                ENDTEST
                    ENDIF
                !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                !!%Procedure call% it calls the procedures local to the task
               
                !!!!!!!!!!!!!!!
                !SET RED BEACON
                Set OCH02;
                !!!!!!!!!!!!!!!!!
                !RESET GREEN BEACON
                Reset OCH03;
                WaitTime 0.1;
                !!!!!!!!!!!!!!!!!
                !stop the Drill
                SetGO tmp1, 32;
                !!!!!!!!!!!!!!!Notify the operator of the end of cycle!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                !SET BEACON ALARM
                Set OCH01;
                WaitTime 1;
                !!!!!!!!!!!!!!!!!
                !RESET BEACON ALARM
                Reset OCH01;
                TPERASE;
                TPWRITE"THE OPERATION HAS BEEN COMPLETED";
                WaitTime 1;
                TPERASE;
                TPShow TP_LATEST;
                !!END OF THE MACHINING TASK
                !
            ENDPROC
            !!!!!!!!!!!!!!!!!!!!!!!!!!PARK ROBOT ROUTINE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                PROC PARK()
                    TPWRITE"MOVING ROBOT TO PARK POSITION";
                    MoveJ common, v400, z30, Machine_ToolWObj:=wobj_V1;
                    MoveJ Parkrobot, v400, z30, Machine_ToolWObj:=wobj_V1;
                   
                ENDPROC
                PROC CHANGE_TOOL()
                    TPWRITE"MOVING ROBOT TO PARK POSITION";
                    MoveJ common, v400, z30, Machine_ToolWObj:=wobj_V1;
                    MoveJ CHANGE_DRILl, v400, z30, Machine_ToolWObj:=wobj_V1;
                   
                ENDPROC

    Bharat Suvarna
  • Hi

    I dot not know but check for raisetouser command

  • Is there a instruction to raise to user?
    Bharat Suvarna
  • hi

    Sorry after check its a instruction ifor error handle in nostepin module

  • Hi<?: prefix = o ns = "urn:schemas-microsoft-com:office:office" />

     

    This week, i try tune my robot for laser head cutting in 3d

     

    My conclusion is AccSet designed for protect weaken tool not for tune path.

    Same conclusion for pathacclim set acceleration at the path do not help for me

     

     

     

  • Iam a bit stuck with the project Iam working at the Moment. ABB sweden hasnt come back with a solution. They have asked us to tune the servos all the Axis od the robot but that didnt help either. I have tried varing acceleration and Velocity as well but That doesnt seem to solve the problem I have with robot. It is strange that a Robot built to precision, in Microns could cause a jerk before starting a fine Linear movement and which cause a cut becoming wider by 0.5mm. I have a small window for error say about + or - 0.3mm thats it and this is bad. Anways hope that ABB comes with a solution for it soon. 
    Bharat Suvarna
  • I have tried Pathacclaim and Accset as well and it didnt help me either. Disapprove
    Bharat Suvarna
  • Hi

    i found this documentation. When i cut a square one corner overshoot and i do not have external force with laser head cutting.

  • There was a tech support guy from ABB Milton Keynes today. He assessed the problem and found that the robot overshoots when it is jogged manually in say x , y or z direction. I dont know what is causing this problem.
    Disapprove

    Bharat Suvarna
  • THE TECH FROM ABB REPLACED ALL THE UNITS IN THE CONTROLLER AND FOUND THE ROBOT OVERSHOOTS. 
    Bharat Suvarna
  • hi

    Can send me more information on this problem and how your precision now

  • The problem is still the same, No change in it. He stated if you see the robot overshooting when you jog it in x, y or z directon, then it would definetly do the same if we run it in AUTOMATIC MODE. Now he will be escalating the issue to sweden and will ask them to look at it. He states that the problem might be with the robot software. BUt he alos has tried doing a firmware update for the robot, he replaced the processor , the drives , the control unit, the backup battery and the encoder unit. BUt the problem still persists.

                            This is all that he has done today. I dont know what the solution for this problem will be, but the customer is nt happy, thats all I know.

    Bharat Suvarna
  • tanks you