Posts by robotecnik

    Hi all,

    How should I make the robot to move faster?

    The code I have done looks like:

       9:  PR[3,3:offset]=0    ;
      10:J P[1] 100% CNT25 Offset,PR[3:offset]    ;
      11:J P[1] 100% FINE    ;
      12:  CALL FX    ;
      13:J P[1] 100% CNT25 Offset,PR[3:offset]    ;
      14:  PR[3,3:offset]=0    ;
      15:J P[2] 100% CNT25 Offset,PR[3:offset]    ;
      16:J P[2] 100% FINE    ;
      17:  CALL FX    ;
      18:J P[2] 100% CNT25 Offset,PR[3:offset]    ;

    The issue is that the robot moves very slowly between points. It's a SR6iA scara robot.

    As you can see all the points are J and are set to 100%. It's an application that requires the robot to go to FINE positions, execute a PLC instruction with handshake (glue application/shot) and then leave to another position as fast as possible.

    Now offsets are set to 0, but I plan to leave the offset movements there for later use if needed.

    Tool weight still has not been initialized.

    What I can see now is super slow even the speed override is 100% on the pendant and that the robot is in AUTO mode.

    Any hint on how to speed things up?

    Thank you all.

    To keep things easier for the final customer:

      9: PR[3,3]=0;
    10:  J P[1] 100% CNT25 Offset,PR[3] ;
    11:  J P[1] 100% FINE ;
    12:  CALL FX;
    13:  J P[1] 100% CNT25 Offset,PR[3] ;
    14: PR[3,3]=0;
    15:  J P[2] 100% CNT25 Offset,PR[3] ;
    16:  J P[2] 100% FINE ;
    17:  CALL FX;
    18:  J P[2] 100% CNT25 Offset,PR[3] ;

    That way I can write whatever I need, they can touch up the points.

    A pity because it is a super verbose solution and it makes making modifications slow, but, a small excel VBA made it a breeze to make the code.

    Thanks all for your comments.

    And... would it be possible to loop to assign PR[x] to P[x] at the beginning?

    something like FOR x = 1 to 200 PR[x]=p[x];

    I could use the J P[x] after the END instruction and then everything would be very easy to do:

    In the same loop, I could execute all the movements and calculations only calling one function...

    Thank you all...

    OK, given your answers maybe the best option for my case would be:

    PR[200] = P[1];

    CALL work;

    PR[200] = P[2];

    CALL work;

    PR[200] = P[3];

    CALL work;

    PR[200] = P[4];

    CALL work;


    And inside work:

    PR[201] = PR[200];

    PR[201.3] = x;

    J PR[201] 100% CNT25;

    J PR[200] 100% FINE;

    CALL plc_thing;

    J PR[201] 100% CNT25;

    This would make the program easy to maintain, as far as I remember I should be able to touch up the points and, if I make the function dependant on a dummy parameter noone should be able to call it directly from the pendant without having to jump lines of code manually.

    Maybe the best would be to use normal offsets to prevent problems while editing and manually setting the program pointer in the wrong line...

    Thank you all.

    Hello all,

    I am not in front of the robot now and I can't test it till the next week. So, to gain a little bit of time I've thought of asking for help here.

    I must store +/- 30 points and before and after all those points, the robot should move to a certain height.

    MAIN ROUTINE (pseudocode)

    CALL Move_To_Aprox(P[1]);
    J P[1] 100% FINE    ;
    CALL Move_To_Aprox(P[1]);
    CALL Move_To_Aprox(P[2]);
    J P[2] 100% FINE    ;
    CALL Move_To_Aprox(P[2]);

    I could use Excel to create that text for me.

    Move_To_Aprox ROUTINE (pseudocode)

    PR[200] = AR[1];
    PR[200,3] = 100;
    J PR[200] 100% CNT25;


    * I've chosen using points instead of PR because there will be lots of programs and it could be a mess having all the points mixed.

    * I could use offsets, which would be simpler, but I should calculate the value every time the point is modified to ensure the robot goes to the desired height.

    * I could use a LPOS/JPOS instruction to read the coords of the robot once inside Move_To_Aprox, but that seems risky if CNTs are involved (which should not after the work point, but could be messy between the two union points).

    Is there an easier way in Fanuc to achieve this?

    Thank you all!

    Maybe I've not explained it correctly, at the end I've been able to speak with a Fanuc technician and he told me the plane orientation would be wrong, not a big deal, the customer will just mount the pins as they should.

    A pity I have not been able to test it directly... all would have been much faster.

    Thanks for your post!

    Hello all,

    I am working at a new customer who has set the typical 3 pins to create user frames not at 90º.

    I have a straight line in the XY axis (X1 to Y1), but the X2 position is not aligned with X1. In other words, the angle defined between X1-X2-Y1 is not 90º.

    Is the Fanuc robot capable to create a user frame this way?

    And will the Z axis work as it would in a perfectly 90º pins distribution?

    Sorry for this simple question, but I have never done this like that, and the robot is still not properly connected so I can't try it. And, as usual, customer is on a hurry.

    Thank you all in advance.

    Sorry for being so late answering DS186 ,

    This morning I have spent one hour with a Fanuc technician and at the end he told me they would have to come, connect a TP and reconfigure the robot.

    An "All of above" backup recovery has not helped at all.

    Unless somebody here knows of a method to go back to AUTO without a TP connected, I will have to wait for them to come (or send a TP).

    Thanks for your messages!

    pdl the option you pointed out is not present in my system.

    DS186 when I try to enter irProgrammer I get "Auto mode is required" text in white background only.

    As far as I know, there is no option installed to select the operating mode at all.

    It's my fist robot without pendant and I thought all the time it would have to be in AUTO because everything seems to require that to work...

    No idea, I think the electricians have connected only the cap that is tied with a small "chain" to the cabinet to the plug where the pendant should be connected.

    Thank you both.

    Hello all,

    I must activate the TP to be able to keep working in a robot without TP.

    It worked, something changed and now it is not working anymore, I can't access the irProgrammer, neither I can jog the robot.

    If I select NAVIGATE IPENDANT (JCGTP) :: under the 3D display a yeld with "Turn the teach pendant enable switch to [on]" message appears.

    If I select JOGGING IPENDANT (JITP) :: a white web page with "Auto mode is required" text appears.

    If I select SOFT OPERATOR PANEL :: a white web page with a lot of text appears:

    "SYST-244 Auto mode is required


    This operation requires Auto mode.


    Change the mode switch to Auto.

    SYST-245 Local mode is required


    This operation requires Local mode.


    Change the mode to Local.

    SYST-246 Teach mode is required


    This operation requires Teach mode.


    Change the mode to Teach.

    SYST-247 Master ON is required


    This operation requires a Master ON situation.


    Ensure that the Master ON situation exists.

    SYST-248 Alarm condition


    This operation requires no alarm situation.


    Clear the alarm situation.

    SYST-249 No system ready input


    With all that information... given this is a robot without pendant, how could I activate AUTO and the TP?

    Thank you all.

    Hello all,

    Trying to start a Scara robot without pendant (it came like this from Fanuc, the final customer prefers it this way).

    I am getting the alarm SRVO-002 Teach pendant E-stop alarm (that one should not be there given the robot has no pendant).

    I also get SRVO-037 IMSTP input (Group:1). That one should not be there too... I can see the PLC activating the signal and the signal in the UOP robot inputs to be active/ON.

    I get SYST-305 System startup in progress both in red and in yellow.

    And SRVO-001/007 which is normal because the machine is still in emergency condition.

    Will the previous errors disappear as soon as the machine has the emergency channels ready?

    Thank you very much in advance.

    Hello all,

    - Could you confirm that UI[6] makes the robot to continue the program where it was (resume a paused program or start a program from the cursor position).

    - Could you confirm that UI[18] makes the robot to start from the scratch/beginning of the loaded program.

    I will always work with the same program, it will choose what to execute in a small SELECT clause at the start of the loaded program.

    Seen the PNS,RSR.... how could I do this? I mean I can program that logic, it's easy, but I don't know how to ensure always the same program will be launched no matter what I have selected in the pendant. And of course I must ensure the UI[18] will execute that program from it's beginning too.

    Thank you all!

    Hello all,

    We can store data in PR in cartesian and in joint modes.

    If I understood it correctly, if in the PR[1] I have a position stored in degrees/joints, If the programmed line is L PR[1] it will go to PR[1] using the shortest path, but, if I use J PR[1] it will work as a MoveAbsJ in ABB, granting that the robot will move to the position in degrees for each axis, allowing me to grant a known starting position.

    If I have not understoodf it correctly, how can I execute a movement to degrees like MoveAbsJ in ABB?

    Thank you all!

    Yes, the KCP is a simple display with a membrane keyboard and the safety devices in it.

    You should be able to exchange them without any issue.

    Another option you can do is to plug a keyboard, mouse and VGA monitor into the PC to do the same.

    I can't remember now, but maybe it was needed to activate the VGA output in the BIOS before being able to do that.

    Hibernation: the computer stores everything in RAM into the HDD before shutting down. Then, at boot, it reloads everything again in RAM.

    This means that, after the operator loaded one program the first time, he will have the program working until something fails and they need to cold start the robot (which almost never happens).

    In any case, if this happens then their maintenance department will just recover the file using the depicted steps and everything will be OK again.

    You don't have the complete picture: the program itself stores program local variables (used by the libraries) (i.e. limits of the pallet table for that model) and of course, those variables are not there if the program is not there... and, following with the example, the pallet control library won't find those variables...

    That also happens with a few functions (and as far as I know KRL doesn’t offer late binding).

    But this is another story, I can explain you how the design was done years ago (by a group of programmers with master degrees) and why this was the best solution (given KRL limitations) but this has nothing to do with the problem itself and I’m sure no one has time for that.

    What it was not acceptable was to go through the risk of relying on a human being every morning.

    Now, if they need technical support an expert will come and follow the simple steps to reload a program file, but in a daily basis the problem is solved. As I told in previous posts this structure has been working in plenty of robots for years without any issue.

    In any case, thanks for posting and for helping people here panic mode, you do a terrific job in this forum.

    I already found what was happening, that robot came from KUKA Germany, a technician from Spain came to make the final touch and adaptations...

    And that guy configured the controller to stop without hibernating.

    He changed the robot name (to something different than the customer standard, wrong), the fact the robot is hanging in the ceiling (good), he did not install the bought technologies (wrong) and for who knows why, he changed this setting (wtf).

    OK, at the end the problem is solved, now that I know what it was going on, it was a really easy thing. All working as usual.