Posts by creek006

    Thanks for your help. I'm guessing what I did was basically the same as a quick skip.


    Since I'm searching very slow, 10 mm/sec, should I worry about having a deceleration higher than 100% effecting the life of my joints?

    Work around found! I turned up the deceleration on that line to improve accuracy. I'm open to any other suggestions for work around.


    According to Fanuc, Arc Mate doesn't support quick skip. If you know differently, please let me know.

    When I highlighted Skip LBL and pressed choice, the only options I had were:

    1. No Option

    2. Arc Start[]

    3. Search

    4. Arc End[]

    5. Wrist joint

    6. ACC

    7. Skip,LBL[]

    8. Offset/Frames

    9. Offset,PR[]

    10. Incrimental

    11. Tool_Offset

    12. Tool_Offset, PR[]

    13. Coord

    14. PTH


    When I checked choices on the PR[100]=LPOS the only options were:

    1: <cr>

    2: +

    3: -

    What I meant was at the end of the line after skip LBL. I couldn't find the option to add in the PR = LPOS. I didn't try to change the skip function itself however. I'll try it on Monday morning. Thanks for your help.

    I got this search to work, however, it has a delay from when it touches until the DI comes on.


    /PROG DF_SRCH2

    /ATTR

    OWNER = MNEDITOR;

    COMMENT = "";

    PROG_SIZE = 745;

    CREATE = DATE 23-04-14 TIME 07:38:04;

    MODIFIED = DATE 23-04-14 TIME 13:24:10;

    FILE_NAME = ;

    VERSION = 0;

    LINE_COUNT = 33;

    MEMORY_SIZE = 1213;

    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 = 1,*,*,*,*;

    CONTROL_CODE = 00000000 00000000;

    /APPL

    ARC Welding Equipment : 1,*,*,*,*;

    /MN

    1: ;

    2: DO[27:TOUCH OUTPUT]=ON ;

    3: ;

    4: R[1]=AR[1] ;

    5: R[2]=AR[2] ;

    6: R[3]=AR[3] ;

    7: R[4]=AR[4] ;

    8: ;

    9: IF (R[4]=0),JMP LBL[1] ;

    10: JMP LBL[2] ;

    11: LBL[1] ;

    12: PR[GP1:R[3]]=PR[GP1:R[3]]-PR[GP1:R[3]] ;

    13: LBL[2] ;

    14: ;

    15: PR[GP1:R[1],1]=(PR[GP1:R[2],1]+PR[GP1:R[2],1]-PR[GP1:R[1],1]) ;

    16: PR[GP1:R[1],2]=(PR[GP1:R[2],2]+PR[GP1:R[2],2]-PR[GP1:R[1],2]) ;

    17: PR[GP1:R[1],3]=(PR[GP1:R[2],3]+PR[GP1:R[2],3]-PR[GP1:R[1],3]) ;

    18: ;

    19:L PR[R[1]] 10mm/sec FINE Offset,PR[R[3]] Skip,LBL[5] ;

    20: PR[GP1:100]=LPOS ;

    21: ;

    22: PR[GP1:R[3],1]=(PR[GP1:100,1]-PR[GP1:R[2],1]) ;

    23: PR[GP1:R[3],2]=(PR[GP1:100,2]-PR[GP1:R[2],2]) ;

    24: PR[GP1:R[3],3]=(PR[GP1:100,3]-PR[GP1:R[2],3]) ;

    25: ;

    26: JMP LBL[6] ;

    27: LBL[5] ;

    28: UALM[1] ;

    29: LBL[6] ;

    30: ;

    31: DO[27:TOUCH OUTPUT]=OFF ;

    32: ;

    33: ;

    /POS

    /END

    Loaded wrong search program. I couldn't get PR[100] to fit on line 19. I had to move it to line 20.


    /PROG DF_SRCH2

    /ATTR

    OWNER = MNEDITOR;

    COMMENT = "";

    PROG_SIZE = 695;

    CREATE = DATE 23-04-14 TIME 07:38:04;

    MODIFIED = DATE 23-04-14 TIME 13:14:27;

    FILE_NAME = ;

    VERSION = 0;

    LINE_COUNT = 33;

    MEMORY_SIZE = 1163;

    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 = 1,*,*,*,*;

    CONTROL_CODE = 00000000 00000000;

    /APPL

    ARC Welding Equipment : 1,*,*,*,*;

    /MN

    1: ;

    2: DO[27:TOUCH OUTPUT]=ON ;

    3: ;

    4: R[1]=AR[1] ;

    5: R[2]=AR[2] ;

    6: R[3]=AR[3] ;

    7: R[4]=AR[4] ;

    8: ;

    9: IF (R[4]=0),JMP LBL[1] ;

    10: JMP LBL[2] ;

    11: LBL[1] ;

    12: PR[R[3]]=PR[R[3]]-PR[R[3]] ;

    13: LBL[2] ;

    14: ;

    15: PR[R[1],1]=(PR[R[2],1]+PR[R[2],1]-PR[R[1],1]) ;

    16: PR[R[1],2]=(PR[R[2],2]+PR[R[2],2]-PR[R[1],2]) ;

    17: PR[R[1],3]=(PR[R[2],3]+PR[R[2],3]-PR[R[1],3]) ;

    18: ;

    19:L PR[R[1]] 10mm/sec FINE Offset,PR[R[3]] Skip,LBL[5] ;

    20: PR[100]=LPOS ;

    21: ;

    22: PR[R[3],1]=(PR[100,1]-PR[R[2],1]) ;

    23: PR[R[3],2]=(PR[100,2]-PR[R[2],2]) ;

    24: PR[R[3],3]=(PR[100,3]-PR[R[2],3]) ;

    25: ;

    26: JMP LBL[6] ;

    27: LBL[5] ;

    28: UALM[1] ;

    29: LBL[6] ;

    30: ;

    31: DO[27:TOUCH OUTPUT]=OFF ;

    32: ;

    33: ;

    /POS

    /END

    Sorry it took so long been fighting syntax errors and for information overload. Currently showing error INTP-215 (DF_SRCH2, 15). Group Mismatch. I assume this is from the default groups not matching. However, when I changing the DF search to contain both default groups doesn't help.


    The arguments are passing in correctly?

    Registars

    Code
    [*NUMREG*]$NUMREG  Storage: CMOS  Access: RW  : ARRAY[200] OF Numeric Reg  [1] = 97  ''   [2] = 98  ''   [3] = 1  ''   [4] = 0  '' 



    Position registars

    Don't know about PR[0]

    Code
    [*POSREG*]$POSREG  Storage: CMOS  Access: RW  : ARRAY[2,200] OF Position Reg    [1,1] =   'TORCH_MATE'   Group: 1   Config: N U T, 0, 0, 0  X:     0.000   Y:     0.000   Z:     0.000  W:     0.000   P:     0.000   R:     0.000
    Code
     [1,97] =   ''   Group: 1   Config: N U T, 0, 0, 0  X:  1311.341   Y:  -264.416   Z:  -221.024  W:   -44.983   P:      .294   R:  -178.707    [1,98] =   ''   Group: 1   Config: N U T, 0, 0, 0  X:  1311.444   Y:  -264.419   Z:  -241.024  W:   -44.983   P:      .294   R:  -178.707
    Code
       [2,1] =   ''   Group: 2  J1 =     0.000 deg   J2 =     0.000 deg 
    Code
     [2,97] =   ''   Group: 2  J1 =     0.000 deg   J2 =     0.000 deg     [2,98] =   ''   Group: 2  J1 =     0.000 deg   J2 =     0.000 deg 






    Program that is calling search.

    /PROG test0088

    /ATTR

    OWNER = MNEDITOR;

    COMMENT = "test0088 by Delfoi 4";

    PROG_SIZE = 64000;

    CREATE = DATE 23-04-14 TIME 10:46:35;

    MODIFIED = DATE 23-04-14 TIME 10:46:35;

    FILE_NAME = test0088;

    VERSION = 0;

    LINE_COUNT = 32;

    MEMORY_SIZE = 64000;

    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 = 1,1,*,*,*;

    CONTROL_CODE = 00000000 00000000;

    /APPL

    ARC Welding Equipment : 1,*,*,*,*;

    /MN

    1: ;

    2: !S1 ;

    3: UFRAME_NUM=1 ;

    4: UTOOL_NUM=1 ;

    5:J P[1] 100% CNT100 ;

    6:L P[2] 1000mm/sec CNT100 ;

    7:L P[3] 400mm/sec FINE ;

    8: ;

    9: SKIP CONDITION DI[26]=ON ;

    10:L P[4] 60mm/sec FINE ;

    11: PR[97]=P[4] ;

    12: PR[98]=P[5] ;

    13: !L P[5] 10mm/sec FINE ;

    14: CALL DF_SRCH2(97,98,1,0) ;

    15:L P[4] 60mm/sec FINE Offset,PR[1] ;

    16: SKIP CONDITION DI[26]=OFF ;

    17: ;

    18:L P[7] 400mm/sec FINE ;

    19:L P[8] 1000mm/sec CNT100 ;

    20:L P[9] 1000mm/sec CNT100 ;

    21: ;

    22: !W2 ;

    23:J P[10] 100% CNT100 ;

    24:L P[11] 1000mm/sec CNT100 ;

    25:L P[12] 400mm/sec FINE ;

    26:L P[13] 100mm/sec FINE ;

    : Arc Start[1];

    : Weave Sine[4];

    27: Track TAST[1] ;

    28:L P[14] WELD_SPEED CNT100 ;

    29:L P[15] WELD_SPEED CNT100 ;

    30:L P[16] WELD_SPEED FINE ;

    : Arc End[1];

    : Track End;

    : Weave End ;

    31:L P[17] 400mm/sec FINE ;

    32:L P[18] 1000mm/sec CNT100 ;


    Search Program

    /PROG DF_SRCH2

    /ATTR

    OWNER = MNEDITOR;

    COMMENT = "";

    PROG_SIZE = 681;

    CREATE = DATE 23-04-14 TIME 07:38:04;

    MODIFIED = DATE 23-04-14 TIME 07:40:14;

    FILE_NAME = ;

    VERSION = 0;

    LINE_COUNT = 32;

    MEMORY_SIZE = 1153;

    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 = 1,*,*,*,*;

    CONTROL_CODE = 00000000 00000000;

    /APPL

    ARC Welding Equipment : 1,*,*,*,*;

    /MN

    1: ;

    2: DO[27:TOUCH OUTPUT]=ON ;

    3: ;

    4: R[1]=AR[1] ;

    5: R[2]=AR[2] ;

    6: R[3]=AR[3] ;

    7: R[4]=AR[4] ;

    8: ;

    9: IF (R[4]=0),JMP LBL[1] ;

    10: JMP LBL[2] ;

    11: LBL[1] ;

    12: PR[R[3]]=PR[R[3]]-PR[R[3]] ;

    13: LBL[2] ;

    14: ;

    15: PR[R[1],1]=(PR[R[2],1]+PR[R[2],1]-PR[R[1],1]) ;

    16: PR[R[1],2]=(PR[R[2],2]+PR[R[2],2]-PR[R[1],2]) ;

    17: PR[R[1],3]=(PR[R[2],3]+PR[R[2],3]-PR[R[1],3]) ;

    18: ;

    19:L PR[R[1]] 10mm/sec FINE Offset,PR[R[3]] Skip,LBL[5] ;

    20: ;

    21: PR[R[3],1]=(PR[100,1]-PR[R[2],1]) ;

    22: PR[R[3],2]=(PR[100,2]-PR[R[2],2]) ;

    23: PR[R[3],3]=(PR[100,3]-PR[R[2],3]) ;

    24: ;

    25: JMP LBL[6] ;

    26: LBL[5] ;

    27: UALM[1] ;

    28: LBL[6] ;

    29: ;

    30: DO[27:TOUCH OUTPUT]=OFF ;

    31: ;

    32: ;

    /POS

    /END

    The skip condition, DI[26]=ON, is called out in the main program before it calls the df_search. Not sure why, but that is how their post processor work.


    I'm new to coding robots and can not find any good literature on the language.


    Is this what you are suggesting? What is the offset actually doing?

    18: ,PR[100]=LPOS Offset,PR[R[3]];

    19: L PR[R[1]] 10mm/sec FINE Skip,LBL[5] ;


    I got a rough idea that it is storing the last linear position into PR[100]. The skip condition works backwards from what you would expect. if it reaches PR[R[1]] it'll skip to LBL[5]. If the skip condition is met, it'll read the next line of code.

    Program line 19 is where it'll fail to load into controller. When I move the PR[100] part of line to the next line down, It'll load in and work. However, it makes a delay in the touch sense and makes an inaccurate search.

    /PROG DF_SRCH2

    /ATTR

    OWNER = MNEDITOR;

    COMMENT = "";

    PROG_SIZE = 623;

    CREATE = DATE 20-06-02 TIME 14:07:48;

    MODIFIED = DATE 20-06-10 TIME 08:27:54;

    FILE_NAME = ;

    VERSION = 0;

    LINE_COUNT = 32;

    MEMORY_SIZE = 1031;

    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 = 1,*,*,*,*;

    CONTROL_CODE = 00000000 00000000;

    /APPL

    ARC : TRUE ;

    ARC Welding Equipment : 1,*,*,*,*;



    /MN

    1: ;

    2: DO[27]=ON ;

    3: ;

    4: R[1]=AR[1] ;

    5: R[2]=AR[2] ;

    6: R[3]=AR[3] ;

    7: R[4]=AR[4] ;

    8: ;

    9: IF (R[4]=0),JMP LBL[1] ;

    10: JMP LBL[2] ;

    11: LBL[1] ;

    12: PR[R[3]]=PR[R[3]]-PR[R[3]] ;

    13: LBL[2] ;

    14: ;

    15: PR[R[1],1]=(PR[R[2],1]+PR[R[2],1]-PR[R[1],1]) ;

    16: PR[R[1],2]=(PR[R[2],2]+PR[R[2],2]-PR[R[1],2]) ;

    17: PR[R[1],3]=(PR[R[2],3]+PR[R[2],3]-PR[R[1],3]) ;

    18: ;

    19: L PR[R[1]] 10mm/sec FINE Skip,LBL[5],PR[100]=LPOS Offset,PR[R[3]] ;

    20: ;

    21: PR[R[3],1]=(PR[100,1]-PR[R[2],1]) ;

    22: PR[R[3],2]=(PR[100,2]-PR[R[2],2]) ;

    23: PR[R[3],3]=(PR[100,3]-PR[R[2],3]) ;

    24: ;

    25: JMP LBL[6] ;

    26: LBL[5] ;

    27: UALM[1] ;

    28: LBL[6] ;

    29: ;

    30: DO[27]=OFF ;

    31: ;

    32: ;

    /POS

    /END

    Yes I am. I switched to pulse weld. Fine termination before and after the corner with C and CNT move in between. Still a small bit but don't think it'll ever be perfect.

    I'm having an issue with undercut when wrapping a weld around sharp corners. I have a 3/4" thick plate T with a 1" thick plate. the 3/4 requires 1/2" all around weld. .052 wire size, 375 ipm wire speed 14.5 ipm travel speed 30V tracking at 350 amps. Rj3ib controller Fanuc 120ib arm. Any suggestions? :help:

Advertising from our partners