RobotStudio event

How to offset an external axis for wear. Such as a buff mounted on a coordinated external axis

We have a left and right buff that opens and closes with a single actuator mounted in the center.  This external axis coordinates with the robot to run the shape of a knife handle.  As the buff wears and we need to offset-or close the buffs tighter, what would be the recommended method to control the external axis for wear??  The robtargets like a CONST for AX1 parameters.  We are hoping to laser gauge the buff size in the future.

Thanks,  RobJ


! CUT Robot Target Array for Handle Patterns; {1=FBcw, 2=FBccw, 3=sides, 4=spare} - [Profile Points 1-8]
    CONST robtarget rt_Handle_c1720_Patt1{4,8}:=
! PASTED as a sample of the array...                                                                             v---- Buff_Offset ???
[[24.83,536.71,-235.26],[0.712618,0.00976173,-0.00997725,-0.701413],[-2,1,-2,0],[179.177,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[24.92,542.76,-235.26],[0.712603,0.00978352,-0.00999331,-0.701428],[-2,1,-2,0],[182,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[23.60,552.79,-235.28],[0.712602,0.00979557,-0.00996938,-0.701429],[-2,1,-2,0],[180.409,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[23.83,569.51,-235.28],[0.712595,0.0098047,-0.0099725,-0.701436],[-2,1,-2,0],[179.835,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[24.14,587.38,-235.29],[0.712604,0.00982315,-0.00995966,-0.701427],[-2,1,-2,0],[185,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[24.57,595,-229.34],[0.705339,0.00993107,-0.00981678,-0.708733],[-2,1,-2,0],[181.5,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[24.35,600.45,-229.33],[0.705339,0.00992879,-0.00982557,-0.708732],[-2,1,-2,0],[175.346,9E+09,9E+09,9E+09,9E+09,9E+09]],
[[24.57,614.38,-229.33],[0.705341,0.00992902,-0.00981714,-0.708731],[-2,1,-2,0],[178.346,9E+09,9E+09,9E+09,9E+09,9E+09]];
! END of PASTED ARRAY SAMPLE   

  ! {1=FBcw, 2=FBccw, 3=sides, 4=spare} - [Profile Points 1-8]
        ! Cut Buff Sides 
MoveJ [[22.85,568.83,189.42],[0.711671,0.0508236,0.0179952,-0.700441],[-2,0,-2,0],[189.073,9E+09,9E+09,9E+09,9E+09,9E+09]], v1000, z50, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_D12_StartCBuff, v1000, z5, tool_D12\WObj:=wobj_MiniOFM;
FOR i FROM 1 TO 3 DO
MoveL rt_Handle_c1720_Patt1{3,1}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,2}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,3}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,4}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,5}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,6}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,7}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,8}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
            ! Reverse ----------Up to 8 profile points max.----------;
            MoveL rt_Handle_c1720_Patt1{3,8}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,7}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,6}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,5}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,4}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,3}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
MoveL rt_Handle_c1720_Patt1{3,2}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
            MoveL rt_Handle_c1720_Patt1{3,1}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM;
ENDFOR

Comments

  • Are you using a remote tool center point?  Does the robot hold the buffer or the knife?
    Lee Justice
  • Hello rJackson !

    You can use your own movement instructions.

    Add this two procedures in your code and change your MoveL/J to MoveL/J_Tune.
    <div><b>PROC MoveL_Tune(robtarget position, speeddata speed, zonedata zone, PERS tooldata tool\PERS wobjdata wobj\num ExtATune</b><br><b>&nbsp; &nbsp; ! Adding tune on ExtA axis</b></div><div><b>&nbsp; &nbsp; IF present(ExtATune) Add position.extax.eax_a,ExtATune;</b><br><b>&nbsp; &nbsp; </b><br><b>&nbsp; &nbsp; ! Movement to the position</b></div><div><b>&nbsp; &nbsp; MoveL position,speed,zone,tool\wobj?wobj;</b><br><b>ENDPROC</b><br><b>&nbsp; </b><br><b>PROC MoveJ_Tune(robtarget position, speeddata speed, zonedata zone, PERS tooldata tool\PERS wobjdata wobj\num ExtATune)</b><br><b>&nbsp; &nbsp; ! Adding tune on ExtA axis</b><br><b>&nbsp; &nbsp; IF present(ExtATune) Add position.extax.eax_a,ExtATune;</b><br><b>&nbsp; &nbsp; </b><br><b>&nbsp; &nbsp; ! Movement to the position</b><br><b>&nbsp; &nbsp; MoveJ position,speed,zone,tool\wobj?wobj;</b><br><b>ENDPROC</b></div>
    After add a new num data with your tune (perhaps calculated somewhere or measured with laser) and add this value on the new optionnal argument like the example below
    <b>VAR num nTune:=.....;</b><br><b>...</b><br><div><span><b>MoveL rt_Handle_c1720_Patt1{3,1}, sFeedrate, z0, tool_D12\WObj:=wobj_MiniOFM\ExtATune:=nTune;</b><br></span><b>...</b></div>
  • DenisFR
    DenisFR ✭✭✭
    Hello,
    @rJackson, If like me you doesn't see all text, you can click on Quote button to see all in edit frame.

  • You're right @DenisFR .

    I send a file with the code.
  • DenisFR
    DenisFR ✭✭✭
    @Aurelien: I've already report this format error here:
    Maybe you've got more power than me to reports this to ABB. ;)