Posts by robotecnik

    Maybe you have any offset active?


    Check

    PDispOff;

    EOffsOff;...


    Maybe you modified the workobject or the tool... and even the target point is the same you could have modified the position while an offset or change in your workobject/tool was active.


    Hope this helps.

    Yes, exactly that, I don't want to interrupt the work, but I want to be able to press the button at any moment to store the state ready of that tray.


    Knowing there is that Background Logic thing, I should be able to do this super easily.


    THANK YOU VERY MUCH!

    Thank you both.


    HawkME thanks for the detailed explanation related to UFs. Will check it and see what I like the most.

    I want interruptions, I want the operator to be able to press the button informing the robot the tray 1 is ready meanwhile the robot is working on the tray number 2. Looks like Background logic can do it.


    hermann searched for Background logic in the internet... looks pretty neat, it's like multitasking preinstalled into the robot. Thanks!


    As always, thank you both!

    Hello all,


    At the end it seems I will have to program a super simple application using a FANUC robot...


    I have to pick parts from a couple of trays and then place those parts into a belt, there won't be PLC in that cell, only the robot.

    The operator will place and remove the trays manually into/from the machine.


    I was wondering:

    • Given both trays have the same sizes and the same products inside, can I use the same program using a different USER FRAME for each tray?
    • Do the Fanuc robots have INTRRUPTIONS? if I could use an interruption, I could activate a register every time the operator would press a button. That register would mean the tray is ready for the robot. In case interruptions exist, how are they named? could you point me to a manual where I could check how interruptions work?


    Thank you in advance!

    Thank you both!


    Those are nice pointers that will have me programming in no time.

    I guess I will struggle more with using the pendant than in programming with what you said.


    Thanks again!

    Hi all,


    Been programming robots, PLC and CNC since 1998, but somehow I managed to never making a complete project with FANUC since then.

    I've only finished a program for a customer whose roboticist left the company and all the setup was done.


    I've seen/know how to define TCPs and User frames.

    I've seen how to call routines stored in different files.


    But I have a few questions:

    1. Let's say I create the PROG_1 TP program, how can I define that this is the MAIN routine (the program entry point for that robot)? (like Main is in ABB robots).
    2. Is it possible to call a function passing parameters to it? and can a function return a value? (could you tell me where could I get information about it?) (or pasting a small example).
    3. Of course I will need inputs and outputs. I know there are the DI[x] and DO[x]... and how to use them, but... How do I tell the system how many of them exist? I mean, seen the maintenance manual, but not seen how to define the signals available... Are they simply present when IO cards are connected? and what happens when you connect IOs from a fieldbus?
    4. When I had to finish that cell in the past, they did not explained anything to me and I ended up using a USB stick to send the programs to the robot controller... Is there any way I can connect my laptop to it using an ethernet cable? Is there any manual that explains where should I connect (port), the IP addresses needed, if it must be an FTP connection... ?


    Thank you very much in advance!

    So let me explain it a little more...


    I got a "Pack & Go" virtual cell from one customer that I used to program a set of points.

    The guy who prepared the "Pack & Go" did not include a small wall near the piece that needs to be worked so I have to rotate all the points +/- 90 degrees in the tool Z axis.

    But the tool is well defined and I don't want to rotate it.


    I could define another tool, send the robot to each point using that new rotated tool and then, store the point using the original tool, but... is there any automated way to do it?


    "Adjust robtargets" is exactly the opposite as that option maintains the robot position with a new tool and workobject...

    Well, now that I have written that, maybe I could just copy the current tool, rotate the current tool and then apply the Adjust robtargets with the old tool again... this should, in fact make it.


    As always thank you in advance.

    Hi all,


    I've inherited a robotstudio cell.

    The guy who sent it to me attached the 3D clamp to the robot for me.

    This said, yesterday I went to my customer and I've noticed the robot was moving in a very strange way... the tool was wrong mounted into the robot (rotated 60º).


    SIMULATION PART

    This morning, back in the office, and in robotStudio, I detached the tool from the robot.

    Exported it to a 3D part, imported the 3D part again, moved that 3D part to 0,0,0 and rotated it 60º.

    Created 2 frames (one for each tcp (it's a double clamp).

    Created a tool using those frames.

    Attached the clamp to the robot again.

    Executed the simulation paths and the robot (with the rotated tool) moved along the path perfectly fine.

    That part worked well...


    SYNCHRONIZATION PART

    After all this, I deleted all the related data from the old rapid programs, calib data (tooldata stored there) and Module 1 (simulation paths stored there).

    And synchronized the simulation to RAPID to regenerate all the paths and tools.

    If I execute the paths in the rapid program while seeing the graphical window, it shows the robot moving across the paths, but with the clamp rotated as it was before.

    Which should not happen.


    Am I missing any step? Have you noticed this before? Do you know how could I solve this?


    Thank you in advance.

    verove Thanks for your post...


    But it has nothing to do with my question. :winking_face:


    I always set the World Zones at the power on event to ensure that, at the first motors on I will know where the robot is.


    This said, I was asking if it was possible (or not) to increase the limit of 20 world zones active at the same time.


    I guess I will have to stop setting the world zones as static and will have to make them volatile and activate them only when needed.


    And at the power on event do a cycle to find out the ones active and keep the signals on or off depending on that state. That is a big amount of extra work, change the poweron routine and then activate and deactivate the world zones every time the program is about to enter one or finished using one...


    I guess I could create a function to activate a bit to "IWillOccuppyThatZoneSoon", that function should activate the world zone and then after working in that place calling another function to deactivate the

    IWillOccuppyThatZoneSoon and the WZ itself.


    I prefer having WZ's active all the time so even if an operator moves the robot manually the protections related to the WZ's are working, but given there is a limit of 20 WZ's active at once...


    :frowning_face:

    Solution:

    Unless that fails because there could be read only files, it seems that Rs allows you to make automated backups...


    In fact it seems it makes exactly what I described before.


    You can go to File->Options->Autosave and there enable automatic backups of station files and enable automatic backup of controllers in solution.


    You can change the number of backups and the minute interval it will use: it is the same amount of time it uses to autosave the station.


    PS: it seems it only creates a certain amount of backups in the folder.


    What I don't know is if the backups on the same day will have different names (which would be the best given the current rate of crashes). Yep, it stores the backup with the time also.


    :smiling_face:

    Hello all,


    Lately RS is giving me all sorts of fun, mostly it decides to crash after a while and I loose 1 or 2 hours of work.

    Given the Autosave thing is useless (after a crash the only auto-thing you can do is crying under the table).

    Is it possible to automate the backups generation?


    I would like to be able to get a backup done every 10 or 20 minutes in a temporal folder... of course, I could delete that folder at the end of the day and just keep the interesting backups.


    Any idea if this is possible?


    PS: just in case, my current development machine is a Thinkpad P14s with 32GB RAM, a Ryzen 5850u with 8 cores and 16 threads which is more than capable to run RS.


    As always, thank you in advance!

    Hi all,


    I need 23 world zones and it seems I can use only 20 of them.


    Those are static world zones as, are positions that help me know where the robot is and allow several operations like releasing the clamp. Being sure robot is at HOME or maintenance positions, ...


    I could try to check the position comparing the current position to the point that would activate the world zone... but that would make it all much more complicated/tedious to maintain.


    There is no multitasking either so I can't keep those comparisons running in a different task.


    Thank you in advance.

    Hi Lemster.


    Using a PERS variable in a library module is direct in RAPID. Just write the name of the variable and that's it.

    Imagine I declare a variable named "i" that is pers.

    Then imagine that my library is loaded in a robot that has another "i" variable somewhere else.

    This can cause all sorts of problems.


    I need the variable "i" to be global, but at the same time I want to prevent the mentioned problem.


    It would be better if I could enforce the programmers that want to use my library to write the name of the module before the variable name, something like:


    library.i := 10;


    That would remove the ambiguous usage of i and would not make it necessary to write a_very_large_and_obscure_name_i := 10; to "avoid" that problem.


    But I can't use records because I can't initialize them at declaration time.

    the long and obscure prefix could help, but it's not a guarantee.

    I would prefer being able to enforce the scope/qualifier before the usage of the library variables and/or procedures / functions.


    Hope it's clearer now.


    Thanks for your time.

    Hi all,


    As in the subject states, I am writing a code library. And, in order to keep things tidy and avoid variable, procedure, function names... collisions with whatever any operator could have declared outside the library...


    Is there any way to add a forced qualifier?


    I could insert all variables inside a RECORD, but that would leave procedures and functions out of this, plus I could not initialize the variables at declaration time.

    I could set a prefix, but it would be super that the programmers who would use it would need to add the module name in front of the functions and variables names.


    Is enforcing that possible?


    Thank you in advance.

Advertising from our partners