Posts by DuhbCakes

    there are a lot of potential sources of error. was it ever working properly before? if not i would suspect your problem comes from one of the following.


    Robot Mastery is incorrect ( cant make a right angle in world )
    2D/3DL camera tcp is wrong
    2D/3DL camera calibration is wrong
    2D/3DL camera is tied to the wrong user frame
    2D/3DL camera is tied to the wrong application frame
    user frame for the camera calibration is wrong
    user frame for the application frame is wrong
    camera calibration and 3dl laser are not tied together properly
    the reference position is incorrect
    the wrong offset is being applied ( VR[i] or VR[i].FOUNDPOS )
    gpm settings are incorrect
    rotation, scale, skew can cause problems. try limiting the rotation to +/- 90
    set your score threshold to over 90%. if you cant get it that high constantly, then you need to adjust the contrast settings.
    modify your image mask to only include a few very unique features. ( the more lines you have, the more features can be missing and still have the vision pass it)

    run the vision process and when the robot goes in to pick up the bag, jog it to where it should be and touch up the point. when prompted if you wish to subtract the offset. say YES.


    vision is a pain because there are a bunch of things you need to set up before you can even test it, and determining where your error comes from is more of an art form than a science. please post any relevant details and good luck.

    Im not sure what your background is, but if you know your CNC, then you are probably used to circular points being a start, a finish, and then a radius. Fanuc tries to make it easier on the programmer by calculating the radius using the values in the second point of your move.


    L P[1:start] 500mm/sec FINE
    C P[2:radius] 500mm/sec FINE
    P[3:end] 500mm/sec FINE



    if point 3 is offset too much from the other points it cannot make a circle from 1 to 3 and still go though the second point. i suggest you hard code the points then touch them up after you get it working.


    P[1:start]
    X=0 P=0
    Y=0 W=0
    Z=0 R=0


    P[2:radius]
    X=50 P=0
    Y=50 W=0
    Z=0 R=0


    P[3:end]
    X=100 P=0
    Y=0 W=0
    Z=0 R=0


    if you cant get it to work like that, then you might have some bigger issue. you can try a full circle.

    L P[1:start] 500mm/sec FINE
    C P[2:radius] 500mm/sec FINE
    P[3:end] 500mm/sec FINE
    C P[4:radius] 500mm/sec FINE
    P[1:start] 500mm/sec FINE




    P[4:radius]
    X=50 P=0
    Y=-50 W=0
    Z=0 R=0

    if you have ever tried to load a PAC code onto a new 30iB you might have noticed it demands that you run the auto update. as annoying as this is, there is a good reason. the early release of 8.20 /02 is extremely buggy. The update takes care of a lot of the little bugs you might not know about or ever see. for example. On 8.20 P/02 the following program gives the incorrect result.


    R[1] = 123
    R[2] = 456
    R[3] = (R[1] + (R[2] / 1000))


    in this case R[3] comes out as 123.455


    When loading the auto update files onto a MC, or USB. the files should be in the native folder for best results. you can get the files you need from Fanuc through their CRC website.

    Fanuc does have a password option that they will sell you for $750ish. it has up to 10 base user profiles, and can keep people from changing registers or modifying programs. i think even the most restricted level still lets them start and stop programs though. depending on what robot you have, you might be able to get a teach pendent jumper from fanuc. this will let you run without a teach pendent attached to the controller. if you did go that route i would invest in the remote tp platform, so you can still log in from a pc. as far as disabling the keys on the front of the controller, that is simple matter of changing to remote start. MENU-SYSTEM-CONFIG remote/local setup line 43ish.

    hmm without the bg option, you can still make your own. you might have to open up your max tasks. go into controlled start and bump up $SCR.$MAXNUMTASK. create a program in an offline editor with the following header. (not able to modified from within the TP editor) and create a program similar to the one at the bottom. make a run statement somewhere at the start of your program to start it up.
    be sure to put a small wait statement somewhere in it, or it will lock up the robot. be very careful with jump statements, and dont use any calls.



    /PROG PROGRAM_NAME Macro
    /ATTR
    OWNER = MNEDITOR;
    COMMENT = "Comment";
    PROG_SIZE = 1429;
    CREATE = DATE 13-07-25 TIME 11:40:18;
    MODIFIED = DATE 13-07-25 TIME 11:40:18;
    FILE_NAME = ;
    VERSION = 0;
    LINE_COUNT = 46;
    MEMORY_SIZE = 1745;
    PROTECT = READ_WRITE;
    TCD: STACK_SIZE = 0,
    TASK_PRIORITY = 50,
    TIME_SLICE = 0,
    BUSY_LAMP_OFF = 0,
    ABORT_REQUEST = 0,
    PAUSE_REQUEST = 0;

    DEFAULT_GROUP = *,*,*,*,*;
    CONTROL_CODE = 00000000 00000000;
    /APPL


    AUTO_SINGULARITY_HEADER;
    ENABLE_SINGULARITY_AVOIDANCE : TRUE;
    /MN



    :F[1:BG Running]=ON;
    :R[200:100 to stop BG]=(0);
    :LBL[1:Start];
    :WAIT 0.01sec;
    : ;
    :!Put your logic here;
    : ;
    :IF R[200:100 to stop BG]=(100),JMP LBL[1];
    :F[1:BG Running]=OFF;
    :END;


    /POS
    /END






    P.S. the "above sticky" refers to the permanent post at the top of the forum about BG Logic. got some useful code there.

    unfortunately much of what you are finding is for options you probably don't have installed. i ran into a similar problem when i was trying to set up the smtp options. The pages are there in the teach pendent, but there is no supporting code. i would start by getting a list of the options you do have installed on your controller and seeing what those are capable of. you can view the options under STATUS-Version ID-SOFTWARE.

    syst-079 is a general category of faults. it should be paired with another fault condition, try checking the alarm history right after that happens. there might have been a system fault that cleared itself after the fact. i have run into problems like this on cells where a PLC will reset and cycle start the robot on a single pushbutton. do you have a external servo disconnect on the robot? and is there any logic tied to the fence closing?

    bg logic is a utility that lets you run some programs in the background. there are restrictions to what commands you can use, no call statements no timers no jump lables and such. create your program, then navigate to the bg logic screen. MENU-SETUP-BG LOGIC. choose a program, then enable it. keep in mind that the program runs as fast as the robot can manage, so some signals change state far to fast for every application. check the above sticky for example logic.

    you could use time after point logic.


    J P[1:pick first cube] 100% FINE TA 0.10sec POINT_LOGIC ;
    MONITOR VAC_STATUS;
    ------;


    in the TP highlight the blank space after a move, in the same line, and press CHOICE. choose TIME AFTER that should give you access to point logic. point logic is like an embedded CALL statement.
    good luck

    if you cant get the extra user frames, you can always store one as a PR[].


    : PR[1]=UFRAME[1] ;
    : UFRAME[1]=PR[1] ;


    if needed you can add offsets to the user frame as well.


    : CALL TABLE(const,const,const,const) ;


    : !Set user frame and tool via arguments ;
    : R[1]=AR[1] ;
    : R[2]=AR[2] ;
    : R[3]=AR[3] ;
    : UTOOL_NUM=(AR[4]) ;
    : PR[1]=PR[R[1]]+PR[R[2]] ;
    : UFRAME[1]=PR[1]
    : UFRAME_NUM=(1) ;
    : PR[2,3]=100 ;
    :
    :JMP LBL[R[3]] ;
    :
    : LBL[1:Part Num 1] ;
    :J P[1:Pick Part 1] 100% CNT 100 Offset,PR[2] ;
    :L P[1:Pick Part 1] 500mm/s FINE ;
    :CALL GRIP_CLAMP(AR[4]) ;
    :L P[1:Pick Part 1] 500mm/s FINE Offset,PR[2] ;
    :END

    This will monitor if someone has jogged the robot. i use it for auto recovery. The bit can be cleared by moving to a point in a program, ether in auto or T1.


    : DO[1:Robot Jogged]=($MOR_GRP[1].$JOGGED) ;


    you can run this in BG logic.

    provided that you are not welding, or doing any line tracking. a simple cycle start on UI will continue the program from where it stopped. dont use the pns call over again. you can map the UI from DI if needed, and set the UI signals true in your settings screen. also will need the robot in remote and not local.


    there are some options from fanuc that are for returning to path, but those are more for when the robot is jogged off of its path.


    menu-next-settings - UI signals = True

    you can get the same thing accomplished with a FOR statement.



    FOR R[1]=R[2] TO R[3]
    CALL SUBPRGM
    ENDFOR


    the registers can be changed to constants, or arguments as needed.


    as far as having user input, there are a couple of options. the easy way is to use the Menu Utilities from Fanuc. This isnt a standard option anymore, so your robot might not have it. if it does you can find it under the menu-setup. another option is to use the webpage utilities availible on the Fanuc CRC site

    if i understand what you are trying to do correctly, the easiest thing to do would be to make a user frame for each table. UF1-UF10. then on table 1 while in UF1 teach your first PR. then when you change your UF and move back to that PR it will take you to the table for that frame. this way you can teach only 1 point for each part, and have it updated for each table. it is important to watch the user tool and frame you are in when you touch up the PR.

    Monitoring for an E-Stop condition is harder than it should be on Fanuc. UI[1] *IMSTP will flag any external E-Stops. $MOR.$safety_stat gives a bitwise breakdown of what is causing the E-stop condition. The easiest way i have found is to set a digital output through the config menu.
    Menu - next - system - config - Signal to set if E-STOP D0[**]


    as far as the z offest, that can be done with an incremental move.


    L P[1] 100mm/sec FINE INC


    create a point and add the INC, then change the position of the point to
    x 0 w 0
    y 0 p 0
    z 200 r 0

    any text editor will work. TPwrite doesn't care about the numbers for each line. it only compiles what is between the : and ; . I use UltraEdit, as there are karel profiles for it.

    This will allow you to toggle a digital output from a DCS CPC zone without using safe I/O. obviously by using a single channel output, it is no longer a safety signal but it is useful for protecting equipment.


    : IF ($DCSS_PSTAT.$STATUS_CPC[1]=0),DO[1:Clear Transfer DCS]=(ON) ;
    : IF ($DCSS_PSTAT.$STATUS_CPC[1]=1),DO[1:Clear Transfer DCS]=(OFF) ;


    This will monitor if someone has jogged the robot. i use it for auto recovery. The bit can be cleared by moving to a point in a program, ether in auto or T1.


    : DO[1:Robot Jogged]=($MOR_GRP[1].$JOGGED) ;

    The teach pendent software is contained on the pendent itself, so they are generally interchangeable. some features wont work properly on older model robots, but they function in a legacy mode that will allow all basic features.


    don't ever try and use the TP usb port if you have the option. it is horrible, and can cause your robot to lock up.

Advertising from our partners