RobotStudio event

Change of speed during one linear motion

Hello to all, we have request from customer to accelerate or decelerate in one MoveL instruction in the way to enter beginning speed and ending speed between two points. I was looking at Accset and PathAccLim instructions but they it looks to me tha are not providing such functionality. Do you have any idea how to solve this request? Thanks a lot in advance.

Comments

  • Those will not work.  Speedrefresh will.  There will be a lag, but it will be the best that you can do.  It will work better with slower speeds.
    Lee Justice
  • Why not split movement instructions?
  • lemster68 said:
    Those will not work.  Speedrefresh will.  There will be a lag, but it will be the best that you can do.  It will work better with slower speeds.
    Hello Lemster, wouldn't speed refresh steady decrease or increase speed for full length of linear motion between two points? Is there some way to get gradual increase or decrease during motion? Thanks.
  • You can use a timed interrupt to set the speedrefresh value, taking into consideration the distance from the start point, where the robot is at that point, and the distance remaining to the destination.
    Lee Justice
  • Hello @lemster68 ,
    I am facing the same kind of challenge and I tried your solution but I get to a dead end;
    I have 2 consecutive MoveL instructions, MoveL p1, speed1 and MoveL p2, speed2, with different speeds, say, 100 mm/s and then 50 mm/s.
    In order to avoid having a sudden speed drop from 100 to 50 after reaching P1, I want to linearly decrease the speed from 100 to 50. 
    I have used speedrefresh based upon the distance remaining to destination for the oppposite case (speed1=50, speed2=100) and it works fine.
    But in this "decreasing case" I can't, since at the execution of instruction MoveL p2, speed2 is in memory and a speedrefresh does not accept values > 100%. I can't override the speed2 of 50 from 200% to 100% (i.e. from 100 mm/s to 50 mm/s)
    The use of this function would instead override the speed2 and give a fraction of 50 during the MoveL p2, which would lead to a jump from 100 mm/s to a % of 50 mm/s.

    How can I solve this issue ?
  • lemster68
    lemster68 ✭✭✭
    Make speed 2 100 also and decrease the speed refresh, if I am understanding you correctly.
    Lee Justice
  • Thank you @lemster68 . I'm afraid I can't change the nominal speed value though.
    In fact, all speeds of my sequence are defined in advance and shall not be changed.
    Basically, I just want to have control on "How long" it takes for the speed to change from the value of the move instruction that has just been executed,  to the next one.
    When two consecutive speeds have values in an ascending order, speedrefresh routine does the job with a timed interrupt and the distance to the next point.
    When two consecutive speeds have values in a descending order, I haven't found any solution to ramp down the speed...
    Would you see any other alternative ?