[SOLVED] Limiting acceleration for SPLINE blocks

  • Hi


    I'm working on an automated laser marking and inspection solution using an Agilus robot.
    The robot is equipped with 3-jaw self-centering gripper and X-Y position compensator. Products to be marked are arranged on palettes standing vertically. The robot grips them from above, with flange parallel to the cell floor, moves up about 100mm first few mm slowly, then accelearting to full speed, then moves horizontally in a straight line in $world X-Y plane with the product still perpendicular to the table about 400mm at full speed to a comperssed air nozzle cleaning the area to be marked from any dust. Near the nozzle, the robot slows down and moves the product over the nozzle itself at 0.2m/s. After cleaning, the product is moved to a marking laser with beam oriented horizontally, along $world Y axis again at 1 m/s. Near the laser the robot slows down again and the final approach is done as linear movement at 0.2m/s.


    All of this is executed as single spline block and overall it works great with $ORI_TYPE=#IGNORE allowing for smooth reorienting along the path and path-related triggers control unlocking and locking for position/rotation compensator and the compressed air nozzle.


    However despite spline smoothing some motions, especially transition from initial vertical movement to horizontal one shakes the entire cell. Since marked products are long (think 60mm-long M4 screws) this jerking can cause them to topple.


    Here's the code for the motion:


    So, my question is: How can i limit maximum acceleration for spline motions?
    Before i converted the program to splines and used just PTP and CP motions i could use BAS(#ACC_CP, 50) to limit accelerations and smooth the overall movement.


    Now, even if i set BAS(#ACC_CP, 1) or even BAS(#ACC_CP, 0.01) before the spline block, it is executed in exactly the same way.


    I tried adding $ACC.CP to spline block header:

    Code
    SPLINE WITH $ACC.CP=0.1
      <spline motions>
    ENDSPLINE


    No matter if i used 50, 1, 0.1 or 0.001 value, there was no change in the motion.


    I also tried to add acceleration setting directly to motions:

    Code
    SPLINE
             SLIN $POS_ACT : {X 0, Y 0, Z -10, A 0, B 0, C 0} WITH $VEL.CP=0.1, $ACC.CP=0.1
             SLIN over_screw ;WITH $VEL.CP = 1, $ACC.CP=0.1
             SPL blower_transit_midpoint WITH $ORI_TYPE = #IGNORE, $ACC.CP=0.1
             SPL blower_entry_step_1 WITH $ORI_TYPE = #IGNORE, $ACC.CP=0.1
             (...)
    ENDSPLINE


    Still no change.
    I could limit shaking by limiting maximum velocity, but since the distance from picking up the product to compressed air nozzle is variable, i'd be needlessly loosing time on long transits - there's enough room for a smooth acceleration, some travel at max speed and deceleration.


    So, is there some extra variable i need to set to limit spline acceleration? I read both the System integrator manual and variable manual (and attended programming 1 and 2 courses) bot found no clues there.



    Manipulator: Agilus KR 10 R1100 sixx
    KSS: 8.3.22
    SafeOperation 3.2.0
    EthernetKRL 2.2

Advertising from our partners