Posts by Doctor_C

    First thing I would do is make sure you put the User frame data into the PR as cartesian.


    $PR_CARTREP = 1

    PR[210:Uframe5] = Uframe [5]


    Then you can manipulate PR[210] X,Y, or Z all you want, And stuff it back into the userframe.


    (And then switch cartrep back to Zero if it causes other issues).

    "Zero out your offset register, in Linear"

    PR[10:offset] = LPOS - LPOS

    "Now create your offset"

    PR[10,1:offset] = GI[1] * R[... X spacing]

    PR[10,2:offset] = GI[2] * R[... Y spacing]


    "apply it to your point"

    L P[1:set part] 100mm/sec fine, Offset PR[10:offset]


    Make sure you apply to the above coming in and the above going out also.

    Fun with math....

    ACE,

    here's a way to get zero speed, before they had 0 speed. Dirty deeds done dirt cheap. LOL



    Override override.

    I wanted the Yellow collaborative to “stop” when red zone was broken. MCR_GRP[1].$PROGOVERRIDE is a multiplier of gen override, usually set 100. I set MCR_GRP[1].$PROGOVERRIDE to 10, and $MCR.$GENOVERRIDE to 1, can’t see it moving. Set it back when the zone is clear.

    1st the switch you are using has 1 NO and 1 NC contact, and it is not safety rated. "I'm following the instructions of my boss, who is our current robot programmer." Well he should know better.


    None of what you are attempting is safety rated, all I will say is will your Boss jump in front of the bus when it comes. Because it will come.

    We are talking Human safety here, it will not/can not be done with a 20 dollar non-safety push button and programming.

    DCS at the least, dual channel safety rated deadman device, with a 0% speed tied in through DCS speed check is doable.

    We would utilize light curtains/area sensors with DCS position checks, a 0% speed in background if the operator entered the area, and a DCS speed check. Of course only the future of our company as an integrator relies on the operators safety.


    With 43 years of industrial maintenance and robot programming/installation background I can tell you when the $#!t hits the fan, YOU will be the fall guy. I'm sorry, it needed to be said and it's not meant as a slam against you ACE.

    If you used a normal "layout" here you could use a counter based picking, starting at Zero.


    R[54:col] = (R[50:count] div R[57:row max]

    R[53:row= (R[50:count] mod R[57:row max]


    Tiers (or layers) takes a little more


    R[60:Tier] = (R[50:Count] div (R57:Row max * R[58:col max]))

    R[61:Parts on Layer] = (R[50:Count] mod (R57:Row max * R[58:col max]))

    then row and column would be.....

    R[54:col] = (R[61:Parts on Layer] div R[57:row max]

    R[53:row= (R[61:Parts on Layer] mod R[57:row max]

    I like rows/columns *Row spacing/column spacing for offset calculations. Only 1 taught point.

    But I can't come up with a matrix for your picking sequence, other than a hard coding.



    Assuming the Yellow is the "row number"

    and the pink is "column number"


    1: LBL[1] ;

    2: IF R[51:Place#]<>1,JMP LBL[2] ;

    3: R[53:Row]=0 ;
    4: R[54:Col]=0 ;

    5: JMP LBL[99] ;

    6: ;

    7: LBL[2] ;

    8: IF R[51:Place#]<>2,JMP LBL[3] ;

    9: R[53:Row]=1 ;

    10: R[54:Col]=0 ;

    11: JMP LBL[99] ;

    12: ;

    13: LBL[3] ;

    14: IF R[51:Place#]<>3,JMP LBL[4] ;

    15: R[53:Row]=0 ;

    16: R[54:Col]=1 ;

    17: JMP LBL[99] ;

    18: ;

    19: LBL[4] ;

    20: IF R[51:Place#]<>4,JMP LBL[5] ;

    21: R[53:Row]=2 ;

    22: R[54:Col]=0 ;

    23: JMP LBL[99] ;

    24: ;

    25: LBL[5] ;

    26: IF R[51:Place#]<>5,JMP LBL[6] ;

    27: R[53:Row]=1 ;

    28: R[1:Stop]=0 ;

    29: JMP LBL[99] ;

    30: ;

    31: LBL[6] ;

    32: IF R[51:Place#]<>6,JMP LBL[7] ;

    33: R[53:Row]=3 ;

    34: R[54:Col]=0 ;

    35: JMP LBL[99] ;

    36: ;




    With a BG_LOGIC program, do what AlanL said. Then under setup, BG_LOGIC, put your program name in and F2 RUN

    Just has to be mixed logic with the parenthesis.


    Not directly, But you can load the 6 data's individually. You would have to break the PR out into registers, then...



    I'm curious though, why do you want to do this.


    I have applied the above to taking rotation out of the VR and applying it in a tool offset on R.

    You have to CALL USERCLEAR as Energy Addict said before posting. Or I prefer where you call the command to put spaces in so it will post center screen, Do the message command, enter nothing in it.



    message[...]

    message[...]

    message[...]

    message[...]

    message[...]

    message[Hang up the teach pendant cable Dumass]

    message[...]

    message[...]

    message[...]

    message[...]

    message[...

    The system should do what you are trying to do. 1 image RunFind, then it will do GET OFFSET until there are no more parts.

    BUT, do you have the process looking for more than 1 part in the top of your tree, default is 1 i think. Check that out Remigijus

    Also check out the Sorting function, you can determine the order of picking.


Advertising from our partners