Posts by bokodimate

    I've attached a sample program for this particular part. I don't have the DPM function in this yet.

    Here's the settings but I don't think it is relevant. It is still the default settings mostly. Because I don't know what and how to set in order for this to work. That's why I asked for help.

    I just want a simple settings so it would raise or lower the head depending on the distance to the sheet.

    The -1 slope does nothing. The Z would not change.

    I don't get any errors, it just won't change height.

    Hi PnsStarter ,

    More infos:

    I work at a company where we make automated machine lines for big factories. We use a lot of metal, so we built a laser cutting machine for ourselves using a refurbished fanuc robot. (I told them we should have used servo motors instead of a motor...) We had problems with the cutting because the metal sheets are always a little bent so sometimes the laser head would touch the sheet or it would be too far and it results in bad cut quality. Someone here on the forum recommended the DPM function to follow the sheet. If it's closer to the head, move away, if it's getting far away, move closer.

    For example this is one piece I want to cut out. I generate a toolpath for this using RoboDK.

    I move in a UFRAME so the Z of the robot would always be constant now. I don't know where would be bents on the sheet. For example when I cut this piece, at the "top" of this drawing the Z distance would be 1 mm, at the middle it would be 0 and scratching the sheet with the nozzle, at the bottom it would be 1.5 mm.

    I modified the RoboDK post processor so I have linear moves only, even the circles are made out of linear points.

    The documentation is not much of a help unfortunately.

    I think for this I need the modal function. For the DPM type I tried the UFRAME setting.

    For the conversion offset and slope I found this equation:

    Distance = (analog input value - A/D conversion offset) / A/D conversion slope

    The distance here is how much I want to compensate?

    For example, I want the Z height to be 1. That would be analog input 400.

    So if the analog input is 800, I need the distance to be -1 so the robot would move down 1 mms?

    I tried to play with these values and got the robot to move in z direction a lot but I still don't really understand how this works and I couldn't solve my problem.


    I need help in configuring the DPM software option.

    I have an analog height sensor on the robot that goes from 0 (0mm) to 2000 (5mm).

    I want the Z axis to be always 1 mm above the table surface, which is 400 in the analog input.

    I have the docs but I can't really understand these settings. I figured out I have to use only channel 3, I've disabled the others. I've added the Track DPM[1] line in the code before the paths. When I run the code, the robot goes up instead of down and then it won't follow the surface height.

    The robot is M20-iA, the controller is R30-iB

    The maximum travel speed would be 50 mm /s.

    The z distance should always be around 1 mm. I'd say ±0.2mm tolerance is acceptable.

    The height is really important. Sometimes the robot goes too close to the table it would touch the steel it is cutting, damaging the nozzle.

    Sensor model is EIM 88C1. It is an EtherCAT hight precision capacitive sensor with the accuracy of ±0.001mm.

    I can read the values of the sensor real time from an Analog Input. This input value is 0 when touching, and 2000 at the maximum distance. So the value would always be between 0 and 2000.

    The added options are:

    H541 ArcTool

    H896 Basic Positioner

    J686 Coord Motion Package

    R785 SW Ethernet/IP Scanner

    R507 ASCII Upload

    J644 Small Circle Accuracy

    R806 ADV-CP Path Ctrl

    R632 KAREL


    We have a fanuc m20ia with an rbi30 controller. It has a raycus laser head attached to the 6th axis with a capacitive height sensor.

    My question is:

    Can we adjust the Z position according to the height sensors reading while moving?

    For example:

    I want to go above a table from A to B points. The height is not constant (see the attached image, table path is black line)

    Using only two points, 1 linear movement. Can I shomehow adjust the Z distance from the table using the height sensors readings? Wanted path value is the red line


    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?

Advertising from our partners