Posts by Mike13815

    If you're trying to do it via the teach pendant, just open DATA and scroll to that register. Keep it on that screen and everyone can see how many cycles are left.

    You can also build it into HTML using the teach pendant HMI.

    If you want to do it via an outside interface, throw that data to an output and read it from an HMI.

    If you don't have any of the I/O packages installed (they're ridiculously expensive) set up a group output register with 7 bits and tie a 30 cent BCD converter to a 30 cent 2 digit 7-segment display. Connect to the internal honda 50 port.

    If you want it available via an app or webpage or even ask alexa "how many cycles are left?" message me. I made some pretty awesome modbus interfaces for my students and would be happy to send you one.UZrWE2w.png

    If the failure is somewhere inside the winding, yes.

    If the failure is where the windings terminate to the connector, no - you can fix that with an hour of work.

    If it's not under warranty or you have no contracts preventing you from doing so, carefully disassemble the motor. Failures to chassis are usually obvious, especially if it is the small run between windings and connector. If so, crimp on a nice piece of extension copper, test it with your meter, then cover your entire repair in quality insulating epoxy as strain relief. Let it set and then throw it at a highpot tester.

    I've fixed 3 alpha motors this way. Great feeling when it works. More than makes up for the dozen or so that didn't work.

    Make sure to grab a manual and follow the motor removal process word for word. That wave generator for the harmonic drive is easy to damage.

    I suggest a mix of soft and hard tracking.

    Laser break sensors (like you'd see at a checkout at the grocery store) are unbelievably cheap so you'll want to throw that down before each robot.

    Grab a free robot input for each (just use the simple digital IO).

    Hook an encoder on one of the tensioning bearings for the conveyor.

    Have a register count every so many ticks of the conveyor's encoder (you'll have to adjust this according to the distance between the robots, just sort of wing it and test it with some objects after).

    Grab a free position register and while one laser detects an object, it *measures* its length by the number of ticks of the conveyor. For the first robot, it places it in the first element. It actually doesn't matter how many millimetres a tick is, just be sure you won't overflow a variable with ticks before it leaves the robot's reach.

    Every so many ticks of the conveyor (BGLOGIC) the number shifts to the next position register element.

    First robot deals with PR[#,1] and PR[#,2], second robot deals with 3 and 4, and so on. 6th position register doesn't shift, just gets overwritten because the robots won't care anymore about objects down stream. You could technically send that info to something down stream so it knows what to expect.

    You'd run it and figure out how many ticks each robot is capable of reaching, and how many ticks your longest objects represent.

    If a robot has an object ready to load, it checks to see if its upstream pr element has free space. It then picks one up and loads it into the downstream pr element when time is right (in ticks of the conveyor)

    If your objects significantly differ in size, you could instead measure the gaps between the objects on the bed, to ensure a perfect fit.

    I have an LR Mate 200iB (A05B-1138-B201) with no controller.

    I've found an R-J3iB controller (A05B-2442-B160) for it.

    The controller contains the amplifier modules A06b-6114-H302. These are designed to run off of the rectified DC from a three phase supply. I do not have three phase where this robot is going to be installed, only single phase 220 (30A).

    I understand rectified single phase is nowhere near clean enough and will throw errors, possibly burn out parts.

    I have a dc supply capable of delivering the required 283-339V DC the amplifiers want. Specifically I was hoping to use AIF04ZPFC-01L modules, which can be turned down to a healthy 311V.

    Two questions:

    1. Is this robot compatible with this controller?

    2. Will I have to trick it into thinking 3 phase supply is available, or will it just accept that there's perfect DC at the units? Is there any reason pure DC wouldn't work?

    Thank you all, this is a wonderful community.

    Take a dry erase marker and darken the plastic around the crack. Take a piece of wide tape and lay it over the hole, then remove. Anywhere ink didn't transfer - thats your hole shape and size.

    Lay it on a sheet of paper then use a document scanner to scan it into the PC.

    Bring it into any cad/modeling software and extrude to the thickness (or just above) of the original plastic. Export as STL.

    Have it laser cut from a plastic sheet, or 3d printed.

    Heat it with a bulb or element, bend it into the L shape. Dry fit it and trim to fit perfectly.

    Epoxy the shit out of it to the original.

    Total cost: $10.

    Here is the lab I wrote for my students to learn offsets:

    Complete the lab and experiment with the code until you understand what is going on.

    Read through this for more information:

    Your task is almost identical to the code in the lab, so this will get you about 95% of the way. You could technically just use it and change a few variables to get what you need, but please don't let that discourage you from really learning what is going on.

    It's hard to know what you're actually asking.

    If you're looking to create that new user frame, everyone is right and you should use the three point method.

    Direct entry is mostly used for when you already know how much an existing user frame is changing and just want to enter one or two measured values on the fly. This for example would be if you need to move the pickup position for products on an assembly line slightly up the line to make room for sensors or other things.

    This will set the conveyor to run for whatever amount of seconds you put into R[10]. It won't wait for that to complete, it will immediately start the next instruction, joint to P[2]. So while it is moving to P[2], the conveyor is running.

    J P[1] 100% FINE

    DO[101:Conveyor] = PULSE, R[10:Encoder]

    J P[2] 100% FINE

    Alternatively, you can use the "time before" modifier on any motion instruction to do something before a motion instruction reaches its destination. That would look like the following:

    J P[1] 100% FINE TB 1.00sec CALL RUNCONVEOR

    With RUNCONVEYOR being a non-motion program that only does a pulse instruction on the conveyor.

    You MAY be able to do TB 1.00sec DO[101:Conveyor] = PULSE, R[10:Encoder] but I have not tested whether it will let you do pulse on a motion modifier.

    There's also "time after" which you would put onto the previous motion instruction, the same way.

    Is this about what you were looking for?

    Here's an example of picking objects and placing them in a grid.

    This program's "destination" half is almost identical to what you want to do. Once a location is used, move to the next. Once all items in a row are used, move to the next row and begin again from the first column. Continue on until finished.

    In your case, the program for picking up a piece would be the same positions and offsets as the placing, simplifying matters a bit. You only have to use one offset position register, and all of your motion instructions would be the same.

    I've written an example below. I don't know what inches look like on the FANUC controllers so I've written it in millimeters, but you probably know how to do it in the units you use.

    You're absolutely correct about only wanting two positions. Motion would look like this:


    Pick up from tray:

    J P[1:Above_Part] 100% FINE OFFSET PR[18:GRID]

    L P[2:At_Part] 100mm/s FINE OFFSET PR[18:GRID]

    RO[1:Vacuum] = ON

    L P[1:Above_Part] 100mm/s FINE OFFSET PR[18:GRID]

    (your motion to the engraver would go here)

    Placement back in tray:


    J P[1:Above_Part] 100% FINE OFFSET PR[18:GRID]

    L P[2:At_Part] 100mm/s FINE OFFSET PR[18:GRID]

    RO[1:Vacuum] = OFF

    L P[1:Above_Part] 100mm/s FINE OFFSET PR[18:GRID]

    After each cycle of pick and place, add 2.5 inches to the X element of the position register.

    PR[18, 1:GRID] = PR[18, 1:GRID] + 63.5

    Check to see if the X element is still within your grid. If so, the row isn't finished, so jump back up to before the motion.

    IF PR[18,1:GRID] < 762 JMP LBL[1]

    If not - set the X offset to zero, and add 4 inches to the Y element of your offset to start the next column.

    PR[18, 1:GRID] = 0

    PR[18, 2:GRID] = PR[18, 2:GRID] + 101.6

    Check to see if the Y offset is still within your grid. If so, the columns aren't finished, so jump back to before the motion.

    IF PR[18,2:GRID] < 508 JMP LBL[1]

    If not - go to a safe HOME position and alert the technician to load a new batch of product.

    The if statements may not build with PR elements using the < selection on older robots (dunno why) but you can do it with the mixed logic selection (...).

    The very beginning of your program should include PR[18] = PR[18] - PR[18] to clear all of its elements as zero, so that every time it starts a tray it will start from the beginning. You can also add instructions for manually setting the start row/column, but since PR's are global variables and non-volatile, a power outage and reboot will start right from where it left off without issue.

    I assume you turned the teach pendant off, before hitting the start button? Also, did you abort any previously running programs before trying to run from the beginning your intended program? If not, FCTN - ABORT ALL, then select your intended start program.

    Did you mean to say you believe the robot is waiting for a signal from the CNC? The rest of the post suggests you're having issue with the robot not running, not the CNC.

    There also may be a series string or BGLogic in use where all inputs must be in a specific state before it is allowed to begin. Door closed, CNC head moved to a safe non-collision position, part disengaged from clamp and moved to a changeout position, storage of completed parts with empty space, etc. You're supposed to tie everything separately to the robot and then add logic for it, but too often integrators tie a bunch of sensors together to a single input instead.