Posts by Robo_Eng_13

    Modified integration of T1 and T2 with Fence Circuit

    If the robot is in Teach and the Fence Circuit is closed, T2 is active, if the robot is in Teach and the Fence Circuit is open, T1 is active. Allows a person to safely operate the robot at full speed from the teach pendant if and only if the cell is closed and in a safe production state. Otherwise, speed is limited. We have entirely switched to two mode switches to prevent any risk of injury caused by T2 speeds, this would be a big improvement for us.

    Password Option Improvements

    1. Password Mode for PLC integration. - We would benefit a lot from having a pre-made mode for the password option wherein an identification signal and a login signal could be configured such that a thumbprint scanner could be used, run through the PLC and specific users be logged in to the robot at specific levels. Right now, the existing implementation makes it difficult if not impossible to log in via PLC with different levels.

    2. Limit jogging to Cartesian coordinates with no w/p/r component without forcing the user into JGFRM. Would like to be able to force operator to work in TOOL frame but only use x/y/z, no w/p/r. Better granularity on jogging options.

    3. Easier setup duplication, simple file to transfer between robots that can immediately set up User Names and Passwords. Include in the XML for level definition?

    Digital IO are boolean values, either "on" or "off". Group IO is a group of bits that form an integer.

    1. Range, rack, slot start. Range is the range of IO points to configure, in your example DO[1] through DO[8]. Rack is which module or protocol is being used for communication. Rack 0 is for Process IO (or mem port). Slot 1 means the first physical process IO board. Start 21 means that DO[1] is mapped to terminal 21 on the IO board.

    2. Your second question doesn't make sense. You can configure Group IO and Digital IO to the same exact location, by using the same configuration. Remember Group IO is a group of bits so a single group output could control up to 16 digital outputs. The question is why do you want to do this. Why not just turn on DO[3] and DO[5] directly? Why involve another IO type?

    Minor add in for why someone might want to do this.

    We use some instances of Group I/O corresponding to a range of Digital I/O, so that a GI/GO represents the full status of a machine, and as the process runs, individual bits can be toggled as the status is updated, but then at the start or end of the process, the whole Group can be set to an integer to quickly and easily reset to a known status. Can also be helpful using a cross list of integers and meanings so that someone who doesn't understand binary can still see that GI/GO = Number means that this machine is ready to go.

    That is one of the very few courses i have not taken there, but i will say all of their training has been great and well worth the time. Although i will say that if it is just about a useful training course, the electrical maintenance course was my favorite and probably the most useful day to day and in emergencies since then.

    Are you using PMC in your facility? We have all of our PLC's separate and communicating with the robots over ethernet, so it isn't a class i am likely to take. If you do take it, i would love to know what you think and how useful it was.

    Alternatively i think you could send your weld established signal from the robot to the PLC, and use the PLC to set your override. Then you could change your air move speed in one place on the pendant and use the PLC to toggle between weld speed and air speed based on whether or not it detected you to be welding or not.

    I would only worry about the override affecting the start or end of welds, depending on latency.

    We have a schematic with each weld numbered, and a system we are considering is one in which the tech can select a weld on the HMI and the PLC will then set a specific register equal to that number. Then inside the program, before each weld, will be logic checking the register value, like this.

    If R[1] = 1 Then Pause
    //Do Weld #1

    If R[1] = 2 then Pause
    // Do Weld #2


    That way, the tech can tell the robot "stop at weld #7", and the robot will run to weld #7 and then pause for them.

    Why do you suspect that there is damage that needs to be tested for?

    If you had a robot that stopped functioning, and diagnostics and troubleshooting led you to replace the servo amp, after which it worked, and you want to verify that the servo amp really was the problem, the easiest way is to swap it out in a currently working robot. This is a little risky, as you are plugging a suspected faulty electrical component into a known functional electrical system, and it could cause damage besides itself.

    If you have two setting on a tool box, one good and one bad, and need to figure out which is which, the same deal still applies.

    If you want to find out exactly WHAT is wrong inside of a known bad servo amp, that is way more complicated, and probably better to ask Fanuc if they would be willing to do diagnostics on it. In general, if you want to do more than test I/O resistance in a complex integrated circuit, you need a lot of specialized equipment and full detailed schematic of the board.

    You can always roll your own communication protocol, using multiple GO's and GI's and a simple translation program to parse them together. Something as simple as two digits per group, and having 4 groups, two before and two after, would give you as much as 9999.9999 in magnitude and precision. Maybe add a plain DO/DI signal for sign?

    Assuming that stuffing a decimal into a digital group truncates rather than rounding, this should be pretty simple operations.

    I will also throw in that you should take an AOA and IMG backup manually, and keep it separately from the AutoUpdate's backup, just in case. Don't put all your eggs in one basket.

    Excellent! I am glad you got it working! Now, the next step I want is for one signal from the PLC to change which level you get logged in as, then a second signal to preform the login. That way you can assign different people to different levels of access.

    Yes, you can create an XML file which will specify what each password level is and is not able to do. This will overwrite the existing defaults.

    At least with the normal password operation, logging in will put you at the level you logged in at, and logging out will put you at Operator level, not install. It is very odd to me that it would do that for you. If logging out is giving you full access, but logging in is putting you in a specific limited password log in level, maybe you could reverse it? By default you are logged in to a limited account, then a badge swipe would log you out to Install? Dangerous, but a possible work around.

    I haven't had any time to look into how User 1/ User 2 might factor in to this.

    Have you encountered anything you cannot do while logged out? It may just be that your password levels are set up to be too lenient at the operator level. Try touching up a point or adding/deleting a line while in the logged out state. If there is anything you can't do, then it would appear to be working.

    I have never had any interaction with User 1 vs User 2. That is very strange. If i find anything, i will report back here.

    The closest you are likely to get is with Circluar Arc moves (Ex: A P[1] 1000mm/s CNT100). These are only a circular interpolation though.

    For example, a string of A moves


    Moving to A[1] will be a linear move.
    Moving from A[1] to A[2] will follow the arc of the circle defined by A[1], A[2], and A[3].
    Moving from A[2] to A[3] will follow the arc of the circle defined by A[2], A[3], and A[4].

    This can create some very good approximations of variable curves, but it is not a true spline interpolation.

    It looks like no. Seems it only allows you to enter a set time. How variable do you need the time to be? Can you make a subcalled program with if/then statements to pulse one of a set of pre-coded durations based on an argument?

    Additional note to prevent damage, it is a good idea (i believe outlined in the manual) to exercise the robot with a vent open for a while before sealing it after greasing. Otherwise pressure can blow out gaskets.