Posts by Robot Programmer

    Working on a robot that has a DI81-88 rack 48 slot 1 start 21. Not labeled, anyone know what these might be? DO81-84 rack 48 slot 1 start 21 also defined, but not labeled

    I'll try that next time. I did figure it out though. wrote this for Excel:

    Does anyone know how DIOCFGSV.VA tell me the names of DI and DO? I see " [MDIO_MAIN]NAME_NAME Storage: DRAM Access: RW : ARRAY[167] OF STRING[16]" but how does it relate to the digital input names and output names? Looks like it is jumbled up?:/

    I use Reference positions to indicate to the PLC when not to let something move while the robot is interacting with it. The advantage is Reference positions work independently of the program. So if E-Stopped in the press, nothing bad can happen... Programmatic bit saying I'm ready to enter the press (I call this handshaking) is for keeping the PLC and Robot in sync.


    That being said I have had need for moving to a reference position during operation. So I call this sub when the program starts:

    1: R[22:TEMP2]=$REFPOS1[1].$PERCHPOS[1] ;

    2: R[22:TEMP2]=R[22:TEMP2]*57.2958 ;

    3: PR[1,1:Ref Pos 1 PK]=R[22:TEMP2] ;

    4: R[22:TEMP2]=$REFPOS1[1].$PERCHPOS[2] ;

    5: R[22:TEMP2]=R[22:TEMP2]*57.2958 ;

    6: PR[1,2:Ref Pos 1 PK]=R[22:TEMP2] ;

    7: R[22:TEMP2]=$REFPOS1[1].$PERCHPOS[3] ;

    8: R[22:TEMP2]=R[22:TEMP2]*57.2958 ;

    9: PR[1,3:Ref Pos 1 PK]=R[22:TEMP2] ;

    10: R[22:TEMP2]=$REFPOS1[1].$PERCHPOS[4] ;

    11: R[22:TEMP2]=R[22:TEMP2]*57.2958 ;

    12: PR[1,4:Ref Pos 1 PK]=R[22:TEMP2] ;

    13: R[22:TEMP2]=$REFPOS1[1].$PERCHPOS[5] ;

    14: R[22:TEMP2]=R[22:TEMP2]*57.2958 ;

    15: PR[1,5:Ref Pos 1 PK]=R[22:TEMP2] ;

    16: R[22:TEMP2]=$REFPOS1[1].$PERCHPOS[6] ;

    The gap sets the voltage. the current sets the depth of the melted material. You will have to find the right combination of these 3 things to allow the material to weld and not liquefy enough to fall out of the weld.

    Fluke, I've never seen TIA generate a GSD file. Siemens Tech support is pretty helpful, except if you ask them for a GSD file - they refer you to the manufacture.


    Mario, I have had problems with the GSD file for the profi-net card on two projects. Both times Fanuc had to give me a different GSD file to resolve this issue. They had the same name! I don't know what they did to make the new file work.


    Good luck.?(

    I call this sub LOAD_POS


    1: !Load Position ;

    2: !Called from MoveSafe ;

    3: !Get Joint data ;

    4: PR[21:C_Lpos]=JPOS ;

    5: R[30:J1]=PR[21,1:C_Lpos] ;

    6: R[31:J2]=PR[21,2:C_Lpos] ;

    7: R[32:J3]=PR[21,3:C_Lpos] ;

    8: R[33:J4]=PR[21,4:C_Lpos] ;

    9: R[34:J5]=PR[21,5:C_Lpos] ;

    10: R[35:J6]=PR[21,6:C_Lpos] ;

    11: ;

    12: !Get World data ;

    13: PR[21:C_Lpos]=LPOS ;

    14: R[40:LX]=PR[21,1:C_Lpos] ;

    15: R[41:LY]=PR[21,2:C_Lpos] ;

    16: R[42:LZ]=PR[21,3:C_Lpos] ;

    17: R[43:LW]=PR[21,4:C_Lpos] ;

    18: R[44:LP]=PR[21,5:C_Lpos] ;

    19: R[45:LR]=PR[21,6:C_Lpos] ;


    And this one MOVE_SAFE (your home program)


    1: !Move Safe: Look around and ;

    2: !Move Accordingly ;

    3: !Called from AAAMain ;

    4: ;

    5: CALL A_LOAD_POS ;

    6: !If at home leave program ;

    7: IF DO[7:At Home]=ON,JMP LBL[999] ;

    8: ;

    9: !If at Pick ;

    10: IF DO[58:At Pick Cnvr]=ON,JMP LBL[100] ;

    11: ;

    12: !If at Chute ;

    13: IF DO[59:At Chute]=ON,JMP LBL[100] ;

    14: ;

    15: !If at Pallet ;

    16: IF DO[60:At Pallet]=ON,JMP LBL[200] ;

    17: ;

    18: !If at Maintenance ;

    19: IF DO[30:At Maint Pos]=ON,JMP LBL[300] ;

    20: ;

    21: !If at Unknown ;

    22: UALM[2] ;

    23: ABORT ;

    24: !Near Pick / chute. Lets go home ;

    25: LBL[100] ;

    26: UTOOL_NUM=1 ;

    27: UFRAME_NUM=0 ;

    28: CALL A_LOAD_POS ;

    29: PR[21,3:C_Lpos]=R[102:ClearOPickZ] ;

    30:L PR[21:C_Lpos] 100mm/sec FINE ;

    31:J P[3:Home] 100% CNT100 ;

    32: JMP LBL[999] ;

    33: ;

    34: !Near Pallet ;

    35: LBL[200] ;

    36: UTOOL_NUM=1 ;

    37: UFRAME_NUM=0 ;

    38: CALL A_LOAD_POS ;

    39: PR[21,3:C_Lpos]=R[103:ClearOPlaceZ] ;

    40:L PR[21:C_Lpos] 100mm/sec FINE ;

    41:J P[3:Home] 100% CNT100 ;

    42: JMP LBL[999] ;

    43: ;

    44: !Near Maint ;

    45: LBL[300] ;

    46: UTOOL_NUM=1 ;

    47: UFRAME_NUM=0 ;

    48:J P[1:Orient] 100% CNT10 ;

    49:J P[3:Home] 100% CNT100 ;

    50: ;

    51: !End of program ;

    52: LBL[999] ;

    I just finished a project with 6 robots. I was doing 3 of them, but had to get all the profi-safe stuff working. My problem was .gsdml file related. The file tech support sent me was titled the same as the one I had installed, but it worked.... My boss recently had the same problem with the same fix. He had to get a different file with the same name from Fanuc Tech support.


    I was joking with site personnel that the .gsdml file was serialized.

    Fanuc actively prevents that information from getting out. They want you to go to there classes. PDF's are copy write material, they also prevent you from copying and pasting from the PDF's.


    If you have access to a robot, it came with a CD that has all the PDF's on it, each is named book1.pdf (yes I mean all the pdf's are named book1.pdf)


    However, they leave out all the details. You can call tech support. If you have the F number of the robot and ask a very specific question, they will email an excerpt from a PDF. but it will not be of much help.

    Don't use the wait statement unless you can't do anything else but wait.


    Always set in a loop and evaluate states. As shown above. You may need to answer other states like "Go Home", "Go maintenance", "Entry Request". I put these is a subroutine and look at them when I'm waiting on something.