Posts by bokodimate


    I would like to know if there is any way to monitor the arms position like the Fanuc robot's DCS.

    I know you can add spheres to cover the tool. We want to add spheres to all arms.

    On the image you can see the KUKA on the left, Fanuc DCS on the right.

    The axis monitoring (limits) is not an option for now. We might consider it later.

    We want to be sure that the future operator can't go out of the cell and break something.

    Thank you for your reply Jeremy.

    Frankly, this is not the problem. I don't even understand this function.

    This: str(int(min(100,max(1,zone_mm))))

    It just gives back the zone_mm parameter.

    Also, I don't want rounding. That's the whole point. We need precise movements, not rounded off movements. CNT will not be precise in this case.

    Sorry for the late reply, I've been a bit busy. I did a lot of testing. The more points I have, the more accurate the cut with CNT.


    That note in your quote might be in the Fusion360 software. We don't use that. I don't have Linear Tolerance in RoboDK.

    Jeremy RoboDK

    We use AlphaCam to import the DXF file, after Nesting we apply a Rough/Finish Machine Style and then click on the "Launch Robot Integration" button. This will open RoboDK with the tool path.

    In RoboDK I see a lot of points but in the generated program there are only a few points.

    In the "Tools"->"Options"->"Programs" there is no "Minimum distance between point" setting.
    I only have min/max step size and min/max arc size.

    I tried to set the max arc size to 1mm, but... For example I have a circle with 1mm radius. The circumference is 2*radius*pi = 2*1*3,14 = 6,28 mm This should be 7 arcs at least, with the 1 mm max arc size set. But in the generated program I got only 2 circular movements.

    Circles with 5, 10, 20, 40 mm diameters are all generated with 37 circular movements each.

    I don't exactly understand how this arc size works.

    One more thing: Is there a way in the post processor to know the size of the full circle? For larger circles I could increase the speed.

    What version of controller do you have? Starting with v9.30p04, there is a new option called spline motion. This will do exactly what you need it to do, but I don't know if RoboDK supports it.

    The controller is an R30-iB with a software version of v8.30p65

    What is the distance between your points?

    Depends of the CAD file we want to cut. It can range from 1 mm to 1000 mm

    You could try to decrease distance between points, which should allow you to increase the CNT value. You will need to maintain a very high CNT value to get steady speed.

    RoboDK generates the code and the points for each CAD file. Unfortunatelly, I can't decrease the distances nor set the CNT value manually for every point.

    For example this is one piece we cut last week.

    The small holes are 3mm in diameter. Those are made out of 2 circular movements. So it stops twice per circle.

    The big holes are 22mm long, the diamater on the sides are 6.5mm. This hole is made out of 2 circular and 2 linear movements. Thats 4 stops for the big holes each.

    RoboDK generates 103 points for this one piece. Thats 103 fine movements, so 103 stops for the robot.

    We use Nitrogen gas for the laser cutting and at every stop it gets wasted. We can't turn off and on the gas and the laser at every point because it leaves a mark and would ruin the piece.

    I will do a search for this Spline Motion. Thank you for the suggestion!


    We have a Fanuc M-20iA with a laser cutting head. We generate the robot path using RoboDK. The problem is that it has all the movements with the FINE option so the robot stops a lot.

    In the RoboDK simulation the movement is continous.

    I tried using CNT, but then the cuts are not precise. For example the circle becomes an ellipse, like an egg.

    Is there any way to have precise robot movement but without stopping at points?

    So it is not possible to do this from the software side. I was just curious only about this. Thank you for your answers. I think we will change the safety circuit for this "window" to the laser only.

    FYI: There is no possible way for the robot to crush the operator or to shoot their eye out.
    There is a big cell around the robot, from this "window" you can only see it from distance. If it's open, the laser can't be turned on by safety.


    We have a camera inside the cell right now but it's far away with a big field of view so we can see the whole robot but we can't see if it would cut into a previously cut hole.

    So to summarize, the cheapest way would be to change the safety circuit. Or to put a camera on the laser head itself.

    Fabian Munoz

    I can't show you the macro. It's not a macro program. It's a "SETUP > MACRO" assign to a FLAG.

    for example:

    program HOME assigned to FLAG[1]. If I set FLAG[1]=ON, the HOME program starts.

    I know how to run the robot manually but the main problem is that the worker who will use the laser cutter he doesn't know anything about robots. That's why I am creating a HMI screen where you can choose the program from a list, you can set the position register using textbox, you can disable or enable the laser permission IO with a button and at the end you can start the robot program.

    It is mandatory to run the robot with a press of a button ON the HMI. Not manually, not from TP.

    The programs with the paths are generated by a computer program and it is different for each cut. The operator can't change this program. He just has to run it with a touch of a button. Still not from TP.


    No one can get hurt. The "door" rather a "window" where you can see the robot from a distance. You can't get close to it. It is only there to protect your eyes if you cut with the laser. But if the laser is on, there is no way you could get hurt. Also if the door is open, you can't turn on the laser.


    Is it possible to move the robot in AUTO mode with the fence (door) open? Without any hardware, wiring modification.

    To understand the conditions. We are building a laser cutter with a fanuc robot. The cell is not transparent. The robot can only move in auto mode when the cell's door is closed.

    We are using it now in T1 with the teach pendant.

    I am writing a custom HMI interface that can be accessed from a PC. I have a button that starts a selected program. Right now I am using a karel code to set F[1] flag to ON. The MACRO option uses this signal to run the program. The problem is that MACRO only works in AUTO mode.

    I want a "TEST program" with laser OFF to simulate the movement for the cut. So for it I want to

    • move the robot
    • without teach pendant
    • with door open

    Then if the move path is correct I can close the door and start cutting.


    I'm creating a custom HMI screen to the TP. I have a dropdown list to select from the TP programs available. This sets the currently active program to the selected.

    Then I can run the program from the controllers CYCLE START button.

    Instead I want to control the start from the HMI screen, using KAREL, without OUP mapping. So I want the CYCLE START button on the HMI screen.

    Could the CONTINUE karel action work? This gives me a lot of errors at compilation.

    Is there any way in KAREL to just start the currently active program?


    I'm trying to learn Karel programming. I wrote a small program that returns the value of R[1]. My problem is it only displays it on the TP's USER menu.


    I run this karel from my PC's browser, using the link: http://robotip/KAREL/GETREG

    On the PC I see this:


    Instead I want to see this:


    Is there any way to accomplish this with Karel? To return the value to the browser, not the user screen.

    My code:

    Thank you for your replies!

    I've found the solution in rf103 's answer.

    To modify DO from url you can use this:






    I want to control a fanuc robot's Digital I/O ports from a PC through Ethernet.

    I've found a solution for controlling register from PC, this will set R[1]=10


    Is there a similar option for setting ports? Like DO[1] = ON

    Thank you!