PR[?,4] = PR[?,4]-VR[?,4]
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:
Code
Display MoreSub ReadDIOCFGSV() Dim F As FileDialog Dim TextLine As String, Ary As Integer Dim Idx As Integer, Valu As Integer, MyStr As String Dim Pt(512) As Integer, Pn(512) As Integer, Nm(512) As String, S As String Set F = Application.FileDialog(msoFileDialogOpen) F.AllowMultiSelect = True F.Filters.Add "DIOCFGSV", "*.VA", 1 F.FilterIndex = 1 F.InitialFileName = "DIO*" F.Show For Each FFile In F.SelectedItems 'files selected one at a time If InStr(FFile, "DIOCFGSV") Then 'Only if user picked the right file Open FFile For Input As #1 ' Open file. Do While Not EOF(1) ' Loop until end of file. Line Input #1, TextLine ' Read line into variable. If Len(TextLine) > 8 Then 'Not an empty line Idx = Val(Mid(TextLine, 4)) Valu = Val(Mid(TextLine, InStr(TextLine, "=") + 1)) MyStr = Mid(TextLine, InStr(TextLine, "= '") + 3) MyStr = Left(MyStr, Len(MyStr) - 1) Else Ary = 0 ' Empty? don't process this line End If Select Case Ary ' store value in an array Case 1: Pt(Idx) = Valu Case 2: Pn(Idx) = Valu Case 3: Nm(Idx) = MyStr Case 4: Nm(Idx) = Nm(Idx) & MyStr End Select ' New array line? If InStr(TextLine, "[MDIO_MAIN]NAME_LOG_PT") Then Ary = 1 If InStr(TextLine, "[MDIO_MAIN]NAME_LOG_PN") Then Ary = 2 If InStr(TextLine, "[MDIO_MAIN]NAME_NAME ") Then Ary = 3 If InStr(TextLine, "[MDIO_MAIN]NAME_NAME2") Then Ary = 4 Loop Close #1 'done with loop For t = 1 To 511 ' Store in sheet If Pt(t) = 1 Or Pt(t) = 2 Then ' Only DI and DO's ActiveSheet.Cells(Pn(t), Pt(t)) = Nm(t) End If Next End If Next End Sub
-
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 have never used Yaskawa Motoman, but yes you can add external IO. You have to have that in the design when you order the robot. Make sure your sales person knows which options you need. To add options after delivery is $500-$2000 for each call to support about why it is not working....
-
The Robotic Industries Association set the "standard practices" for safety. Quote because that is verbiage that OSHA uses to enforce safety.
-
Also, it might be PNP, but no 24V on applied to circuit.
-
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.
-
Anyone have a list of "Information ID number", the help file just indicates that 1 is temp, and 2 is temp max... Any other things hiding in this function?
-
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.
-
You need to make it more consistent. If the robot interacts with a moving cart or a magazine of operator loaded parts, Our mechanical engineer makes it out of Bosch and pins it in place. That way it is locked into place when the robot is doing its thing. https://www.grainger.com/product/GRAING…ch-Clamp-13G554
-
I don't think they can copy right the GSDML file. But the pdf's can't be distributed. You can call them and ask about getting the documentation for that robot F#, but I'm sure they will charge.
1(800)477-6268
-
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.
-
I have had a problem with "look ahead"
-
$MNUserFrame
I think if you added the current user frame, then subtracted the desired user frame. Haven't ever done this, but I think that would work. Let me know if it does....
-
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.
-
$SYS_TIME.$Month
$SYS_TIME.$Day
$SYS_TIME.$Hour
$SYS_TIME.$Minute
$SYS_TIME.$DOW ! day of week.