I have a question regarding moving the robot through a lot of points, for example when using the robot for milling / plasma cutting and the robot has to follow a path created by some sort of post processor. When the points are too close to eachother (the points are too 'dense') the tool will move slower than the commanded velocity.
For instance, this code will be executed 'normally', with the commanded velocity:
$advance = 1
LIN {X 0.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
LIN {X 2.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
LIN {X 4.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
[...]
LIN {X 96.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
LIN {X 98.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
LIN {X 100.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
Display More
Using this code however, the robot will move much slower:
$advance = 1
LIN {X 0.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
LIN {X 0.1, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
LIN {X 0.2, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
[...]
LIN {X 99.8, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
LIN {X 99.9, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
LIN {X 100.0, Y 0.0, Z 0.0, A 0.0, B 0.0, C 0.0} C_DIS
Display More
I have 2 questions about this behavior:
1: Am I correct in assuming that the reason for this, is that the advance pointer cannot look ahead far enough within the cycle time of the internal clock, which I beleive is 12ms?
2: How does one determine the minimum distance between two points before the velocity drops below the commanded velocity? If statement 1 is correct then I beleive it could be as simple as Commanded velocity / (1000 / 12) ? Or is it more complex, and is trial and error the only way to find out the minimum distance between 2 points
I am aware that putting the motion commands in a spline block can fix this problem, but this is not possible in my case, because in my application I sometimes need the robot to start at a given point instead of the first line (this is possible in my case because I use an array of E6Pos that I loop through instead of the code provided in the example)