Delfoi search

  • Fubini

    Approved the thread.
  • /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

  • 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.

  • I don't see a skip condition defined. There needs to be a line of code before line 19 like this:


    : SKIP CONDITION DI[x]=ON;


    Also, it may not matter, but I would put the offset before the skip on that motion.

  • 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.

  • No, like this:


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


    Don't do it in text. Modify it manually on the teach pendant. Then you need to verify that all 4 arguments are populated when you call the program. Then you need to verify the value of R[1] though 4 and ensure that there exits a PR of that number. You may be trying to index a PR that doesn't exist.

  • 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

  • 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

  • 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

  • To use the quick skip feature you must have the PR[GP1:100]=LPOS on the same line as the skip movement. Highlight the skip instruction, press choice and change it.


    Theres no such thing as "not getting it to fit". You just have to select the correct instruction.


    It seems that the entire issue was related to the group mask not being set correctly.

  • 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.

  • 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: -

  • 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.

  • I didn't realize it wasn't an option on Arc mate. If it was available, it would be in the menu as Skip,LBL[], PR[].


    Basically quick skip uses uses max deceleration without brakes, similar to tripping the fence safety circuit.


    Sounds like your solution is probably the best. You may be able to use the UI signal for immediate stop, but I'm not sure if that would be any better or cause other issues.

Advertising from our partners