okay vielen dank
Beiträge von ToDi123
-
-
Das Programm habe ich schon erstellt!
wie lautet dann die weitere Vorgehensweise??
-
Hallo zusammen,
habe auch folgendes Problem, sobald in meinem Programm ein Fehler vorliegt möchte ich automatisch nach dem setzten eines Einganges ein Unterprogramm starten um zur Startposition zurückzukehren, ich glaube man könnte das am besten mit einem Interrupt im cell lösen!!
Leider habe ich noch nie damit gearbeit, kann mir jemand weiterhelfen!
Mit den Infos im Handbuch komme ich nicht weiter!!!
Wo füge ich den Interrupt am besten hinzu und wie breche ich das aktuelle Programm ab, welches gerade abgearbeitet wird???
Der aktuelle Ablauf im Cell:
LOOP
$out[289] = false
braketestreq()
wait for (($out[252] == true) or ($out[241] == true))
masrefreq()
P00 (#EXT_PGNO,#PGNO_GET,DMY[],0 )
SWITCH PGNO ; Select with Programnumber
CASE 1
;nur starten wenn in Startpos
wait for $out[252] == true
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
part1 ()
CASE 2
;nur starten wenn in Startpos
wait for $out[252] == true
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
part2 ( ) ; Call User-Program
CASE 3
;nur starten wenn in Startpos
wait for $out[252] == true
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
part3 ( ) ; Call User-Program
CASE 4
;nur starten wenn in Startpos
wait for $out[252] == true
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
part4 ( ) ; Call User-Program
CASE 98
;nur starten wenn in Startpos
wait for $out[252] == true
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
servicepos ( ) ; Call User-Program
CASE 97
;nur starten wenn in Servicepos
wait for $out[241] == true
P00 (#EXT_PGNO,#PGNO_ACKN,DMY[],0 ) ; Reset Progr.No.-Request
startpos ( ) ; Call User-Program
DEFAULT
P00 (#EXT_PGNO,#PGNO_FAULT,DMY[],0 )
ENDSWITCH
ENDLOOP
END
-
Vielen Dank für die Hilfe!
Wir haben den Fehler gefunden!
das Kabel von dem CI-3 Board zum X11 war defekt!
-
Nein, da meckert er auch nicht!
Siehe Bild!
-
Passen diese Bilder so??
-
Es ist ein Gebrauchtroboter!
Der Roboter wurde neu in Betrieb genommen aber der Fehler war von Anfang an!
-KSS: Krc V5.5.12 und Safe-OP: 2.1.4
-Was meinen Sie mit der Default Konfiguration???
-KCP: KCP2 Std Ed 05 00-30-647, Ser.Nr.:03004, andere Nummern kann man nicht mehr lesen!
-Wir haben das CI3- Board rechts im Schaltschrank erneuert!
-Mit X40 Brückenstecker, welchen ich auch schon getauscht haben von einem gleichen Roboter, auf der Innenseite ist auch kein Stift zurückgedrückt!
->keine weiteren Fehler
-
Hallo zusammen,
wir haben in unserer Firma an einem Krc 2 Ed 05 auch den Fehler "Betriebsart stimmt nicht mit T1 - Eingang der SafeRDW überein", wir haben schon alles getauscht, KCP, Ci3-Board, SafeRDW, Kabel vom Schrank zum Roboter, leider liegt der Fehler immer noch an!
Woran kann es noch liegen??
Kann es an einer falschen Safe Version liegen??
Ich hoffe Ihr könnt uns weiterhelfen!
Gruß
-
Baue ich diese if anweisung in der for oder while schleife am besten ein (siehe oben)?
-
Es funktioniert jetzt alles!
Ich habe aktuell 26 Reihen/2Spalten/24Ebenen, nun wäre meine Frage, wie kann ich in dieser Schleife z.B. berücksichtigen, dass der Roboter in Spalte 2 die B-Achse auf 0 stellt??
Kann mir jemand helfen??
-
Ich finde leider kein ähnliches Thema im Roboterforum!
Wie lautet der Titel??
-
Ok da schaue ich gleich!!
Profinet steht zur Verfügung
Okay wie mache ich das??
-
Servus zusammen,
Wir bekommen X/Y und den Winkel des zu entnehmenden Bauteils von einer Keyence Kamera an eine übergeordnete Steuerung!
Mit der Steuerung möchte ich dem Roboter(KUKA KRC 4 KR 6 sixx) diese Koordinaten mitteilen und anschließend anfahren!
Wie würdet ihr das am besten lösen ??
Welche Befehle würdet ihr benutzen um diese Koordinaten anzufahren?
Wie lege ich in diesem Fall eine Base an um das gleiche Koordinatensystem wie die Kamera zu haben??
Ich bin ein Neuling in der Programmierung, ich hoffe ihr könnt mich unterstützen!
Vielen Dank!!
-
Vielen Dank für deine Tipps!
ich habe mich im Internet informiert, da gibt es echt gute Tutorials zum Thema Programmiersprachen, mit denen man sehr gut lernen kann!
Die geschwindigkeit und die eingelernte Base lege ich an sobald das Programm läuft wie ich möchte !
Ich wünsche Ihnen noch einen schönen Abend!
-
nach dem
Bauteiltransport () wird ja die Vorposition und anschließend die Ablegeposition angefahren müssen die dann nicht auch
LIN Vor_Position[Ebene_vorpos,Reihe_vorpos,Spalte_vorpos]
LIN Abl_Position[Ebene_vorpos,Reihe_vorpos,Spalte_vorpos]
heißen oder liege ich da auch falsch??
-
Vielen Dank!
Ja ich bin noch sehr jung und das ist mein erster Roboter den ich selber in Betrieb nehme!
Sobald es Corona wieder ermöglicht vor Ort eine Schulung zu machen möchte ich das tun!
Wo empfehlen sie mir eine Schulung für die Programmierung von Kuka Robotern???
-
Passt es so für die Zählervariablen der Vorposition und in der Whileschleife??
Kann man die Zählerinitialisierung mit einer if Anweisung durchführen siehe Programm oder macht man das anders??
Ich habe sowas leider noch nie gemacht!
Vielen Dank schonmal für die Hilfen!!
Code
Alles anzeigenProgramm: FOR Ebene = 1 TO MaxEbenen FOR Reihe = 1 TO MaxReihen FOR Spalte = 1 TO MaxSpalten Abl_Position[Ebene,Reihe,Spalte]=XMasterPos1 Abl_Position[Ebene,Reihe,Spalte].x=Abl_Position[Ebene,Reihe,Spalte].x+(Spalte-1)*x_Abl Abl_Position[Ebene,Reihe,Spalte].y=Abl_Position[Ebene,Reihe,Spalte].y+(Reihe-1)*y_Abl Abl_Position[Ebene,Reihe,Spalte].z=Abl_Position[Ebene,Reihe,Spalte].z+(Ebene-1)*z_Abl ENDFOR ENDFOR ENDFOR ;Vorpositionen FOR Ebene_vorpos = 1 TO MaxEbenen FOR Reihe_vorpos = 1 TO MaxReihen FOR Spalte_vorpos = 1 TO MaxSpalten Vor_Position[Ebene,Reihe,Spalte]=Abl_Position[Ebene,Reihe,Spalte] Vor_Position[Ebene,Reihe,Spalte].z=Vor_Position[Ebene,Reihe,Spalte].z+z_Vor ENDFOR ENDFOR ENDFOR ;***************************************************************************** ;Palette befuellen WHILE Ebene <= (MaxEbenen) WHILE Reihe <= (MaxReihen) WHILE Spalte <= (MaxSpalten) WHILE Ebene_vorpos <= (MaxEbenen) WHILE Reihe_vorpos <= (MaxReihen) WHILE Spalte_vorpos <= (MaxSpalten) Bauteiltransport() LIN Vor_Position[Ebene,Reihe,Spalte] c_dis LIN Abl_Position[Ebene,Reihe,Spalte] ;Greifer oeffnen GREIFER_AUF() ;FOLD PTP P4 Vel=100 % PDAT4 Tool[1]:PALLETIERGREIFER Base[0];%{PE}%R 8.3.44,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P4, 3:, 5:100, 7:PDAT4 $BWDSTART=FALSE PDAT_ACT=PPDAT4 FDAT_ACT=FP4 BAS(#PTP_PARAMS,100) PTP XP4 ;ENDFOLD Spalte=Spalte+1 ENDWHILE Reihe=Reihe+1 Spalte=1 ENDWHILE Ebene=Ebene+1 Reihe=1 ENDWHILE Spalte_vorpos=Spalte_vorpos+1 ENDWHILE Reihe_vorpos=Reihe_vorpos+1 Spalte_vorpos=1 ENDWHILE Ebene_vorpos=Ebene_vorpos+1 Reihe=1 ENDWHILE ;Zähler nach Palette ausgetauscht initialisieren if $in[251] == true then Ebene=0 Reihe=0 Spalte=0 Ebene_vorpos=0 Reihe_vorpos=0 Spalte_vorpos=0 endif END
-
Wenn ich das in der config ändere müsste es funktionieren?
Muss ich im palettieren programm, nach den ;Vorpositionen
Ebene=1
Reihe=1
Spalte=15
Löschen?
-
was genau muss ich hier abändern, dass der Zählwert nach dem anwählen, dem Zählwert vor dem abwählen entspricht um beim Palettieren wieder richtig weiter zu fahren??
Ich wäre dankbar für eine Hilfe!
-
ich hoffe hiermit könnt ihr mir weiterhelfen!!!
Code
Alles anzeigen;Palettieren Roboter 3 ;***************************************************************************** ;Deklaration DECL E6POS Abl_Position [28,28,28] DECL E6POS Vor_Position [28,28,28] DECL REAL x_Abl,y_Abl,z_Abl,z_Vor ;***************************************************************************** ;Konfiguration der Gitterbox MaxReihen=3 MaxSpalten=8 MaxEbenen=27 ;Teilemaße x_Abl=-50.0 y_Abl=350.0 z_Abl=20.0 ;Vorposition z_Vor=100.0 ;***************************************************************************** ;Ausgangspositon der Palettierung XMasterPos1 = {x 1000, y -420,z -200,a -180,b 25, c -180} FOR Ebene = 1 TO MaxEbenen FOR Reihe = 1 TO MaxReihen FOR Spalte = 1 TO MaxSpalten Abl_Position[Ebene,Reihe,Spalte]=XMasterPos1; Suppress UndeclaredId Abl_Position[Ebene,Reihe,Spalte].x=Abl_Position[Ebene,Reihe,Spalte].x+(Spalte-1)*x_Abl Abl_Position[Ebene,Reihe,Spalte].y=Abl_Position[Ebene,Reihe,Spalte].y+(Reihe-1)*y_Abl Abl_Position[Ebene,Reihe,Spalte].z=Abl_Position[Ebene,Reihe,Spalte].z+(Ebene-1)*z_Abl ENDFOR ENDFOR ENDFOR ;Vorpositionen FOR Ebene = 1 TO MaxEbenen FOR Reihe = 1 TO MaxReihen FOR Spalte = 1 TO MaxSpalten Vor_Position[Ebene,Reihe,Spalte]=Abl_Position[Ebene,Reihe,Spalte] Vor_Position[Ebene,Reihe,Spalte].z=Vor_Position[Ebene,Reihe,Spalte].z+z_Vor ENDFOR ENDFOR ENDFOR Ebene=1 Reihe=1 Spalte=15 ;***************************************************************************** ;Palette befuellen WHILE Ebene <= (MaxEbenen) WHILE Reihe <= (MaxReihen) WHILE Spalte <= (MaxSpalten) Bauteiltransport() LIN Vor_Position[Ebene,Reihe,Spalte] c_dis LIN Abl_Position[Ebene,Reihe,Spalte] ;Greifer oeffnen GREIFER_AUF() ;FOLD PTP P4 Vel=100 % PDAT4 Tool[1]:PALLETIERGREIFER Base[0];%{PE}%R 8.3.44,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:P4, 3:, 5:100, 7:PDAT4 $BWDSTART=FALSE PDAT_ACT=PPDAT4 FDAT_ACT=FP4 BAS(#PTP_PARAMS,100) PTP XP4 ;ENDFOLD Spalte=Spalte+1 ENDWHILE Reihe=Reihe+1 Spalte=1 ENDWHILE Ebene=Ebene+1 Reihe=1 ENDWHILE Ebene=MaxEbenen Reihe=MaxReihen Spalte=MaxSpalten END Config.dat ;FOLD USER GLOBALS ;******************************************* ;Make your modifications -ONLY- here ;******************************************* ;================================== ; Userdefined Types ;================================== ;================================== ; Userdefined Externals ;================================== ;================================== ; Userdefined Variables ;================================== ;Deklarieren der Variablen für das Palettieren decl int Spalte decl int Ebene decl int Reihe decl int MaxSpalten decl int MaxEbenen decl int MaxReihen SIGNAL PrgNr $IN[273] TO $IN[288] SIGNAL Speed $IN[289] TO $IN[304] SIGNAL RetPrgNr $OUT[257] TO $OUT[272] SIGNAL RetSpeed $OUT[273] TO $OUT[288] ; Startposition Palettierung E6POS XMasterPos1 ;aktuelle Position bild E6POS Pos_aktuell ;ENDFOLD (USER GLOBALS) ENDDAT