Ok habe es nochmal versucht....
C_SPL geht tatsächlich nicht aber C_DIS....
Sehe da aber keinen unterschied in der Simulation...
viel Erfolg
Ok habe es nochmal versucht....
C_SPL geht tatsächlich nicht aber C_DIS....
Sehe da aber keinen unterschied in der Simulation...
viel Erfolg
Bei Achslimits anhalten den hacken raus nehmen.
Beim Roboter beim KRL Executor Bewegungsausführung / Bewegung auf Integriert stellen.
So sollte es eigentlich gehen...
einziges Problem es sind alle Achsen endlosdrehend wenn das nicht stört...
Ansonsten mal beim Kukasim Team nachfragen wenn die es nicht wissen wer dann....
goVariable = 'B00110'
So geht es auch.
Vieleicht schmutz auf dem Display das kann zumindest zu Problemen führen...
Kalibrieren musste ich eigentlich nie...es war bei uns immer verschmutzung bis jetzt...
Beispiel :
Man drückt irgendwo oben und unten wird der Druck angenommen.
Oder er reagiert garnicht auf irgend einen Druck...
Wenn sich der Mauszeiger bewegt und kein Druck angenommen wird...ist es eher die HMI.
nein das for endfor ist nur dafür wie oft er die bewegung und die zustellung wiederholen soll....
kannst auch.
for i = 0 to 100
dann macht er es 100 mal man weis halt auch nicht was du möchtest wieviel soll er zustellen wie oft soll er wiederholen... was ist die max tiefe...
oder machst die nen eigenen zähler und machst ne Repeat until schleife....
gibt so viele möglichkeiten ans Ziel zu kommen...
Er Fräst dann aber natürlich direkt -80 rein je nachdem wie die Geschwindigkeit ist könnte das auch nicht gut aussehen....
Wenn Fraes1 und Fraes2 die Punkte sind die Links und rechts sein sollen...
Dann so...
Base_data[2].z = base_data[1].Z-80
LIN Fraes 1
Base_data[2].z = base_data[1].Z
LIN Fraes 1
LIN Fraes 2
Base_data[2].z = base_data[1].Z-80
LIN Fraes 2
LIN Fraes 1
Base_data[2].z = base_data[1].Z
LIN Fraes 1
Vieleicht auch nochmal ein Beispiel aus dem Kurs Programmieren 2.
;fold Berechnungen der Positionen
for reihe = 1 to 4
for spalte = 1 to 4
Ablage[reihe, spalte] = XP1
Ablage[reihe, spalte].x = Ablage[reihe, spalte].x + (reihe * 80 - 80)
Ablage[reihe, spalte].y = Ablage[reihe, spalte].y + (spalte * 80 - 80)
Vorpos[reihe, spalte] = xp1
Vorpos[reihe, spalte].z = Vorpos[reihe, spalte].z + 100
Vorpos[reihe, spalte].x = Vorpos[reihe, spalte].x + (reihe * 80 - 80)
Vorpos[reihe, spalte].y = Vorpos[reihe, spalte].y + (spalte * 80 - 80)
endfor
endfor
;endfold
Alles anzeigen
es würde einfach ein offset in z reichen es braucht keine 3te Base.
Man benötigt wenn man es anderst macht auch nur 1 Base...
Jetzt ist die 2 Base nur dafür da das man sich die 1 nicht überschreibt.
Man möchte ja in der Regel seine Saubere Base behalten...
Mit der oben gezeigten funktion wird nur der Punkt um den Wert geschoben nicht die Base selbst.
Daher 1 punkt ausgewählt auch nur 1 Punkt verschoben....alle ausgewählt alle verschoben...
Ich weiß auch nicht ob auf deinem Robby ExpertTech vorhanden ist eventuell kannst du dann "startpos" garnicht teachen.
Der 1 code ist das eigentliche Programm also SRC und der 2 code ist der DAT file.
DEF MAIN ( )
DECL FRAME OFFSET_X_Y
DECL REAL Beckenlaenge,Beckenbreite
;FOLD INI;%{PE}
;FOLD BASISTECH INI
GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
INTERRUPT ON 3
BAS (#INITMOV,0 )
;ENDFOLD (BASISTECH INI)
;FOLD USER INI
;Make your modifications here
;ENDFOLD (USER INI)
;ENDFOLD (INI)
BAS(#BASE,1)
BAS(TOOL,1)
;Hier Teachen
;FOLD TEACHEN
IF FALSE THEN
BAS(#BASE,1)
BAS(TOOL,1)
HALT
LIN StartPos
ENDIF
;ENDFOLD
Beckenlaenge = 500
Beckenbreite = 250
OFFSET_X_Y = $NULLFRAME
OFFSET_X_Y.X = Beckenlaenge
; Geschwindigkeit festlegen
BAS(#VEL_PTP,50) ;PTP SPEED
BAS(#VEL_CP,2.0) ;LIN SPEED
PTP {X 0,Y 0,Z 500,A 0,B 0,C 0}:StartPos
LIN StartPos
LIN OFFSET_X_Y:StartPos
OFFSET_X_Y.Y = Beckenbreite
LIN OFFSET_X_Y:StartPos
OFFSET_X_Y.X = 0
LIN OFFSET_X_Y:StartPos
OFFSET_X_Y = $NULLFRAME
LIN OFFSET_X_Y:StartPos
LIN {X 0,Y 0,Z 500,A 0,B 0,C 0}:StartPos
END
Alles anzeigen
DEFDAT MAIN
;FOLD EXTERNAL DECLARATIONS;%{PE}%MKUKATPBASIS,%CEXT,%VCOMMON,%P
;FOLD BASISTECH EXT;%{PE}%MKUKATPBASIS,%CEXT,%VEXT,%P
EXT BAS (BAS_COMMAND :IN,REAL :IN )
;ENDFOLD (BASISTECH EXT)
;FOLD USER EXT;%{E}%MKUKATPUSER,%CEXT,%VEXT,%P
;Make your modifications here
;ENDFOLD (USER EXT)
;ENDFOLD (EXTERNAL DECLARATIONS)
DECL E6POS StartPos={X 0.0,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0,S 0,T 0}
ENDDAT
Alles anzeigen
So vieleicht?
Falls es noch nicht Erledigt ist....
Bei Achslimits anhalten den hacken raus nehmen.
Beim Roboter beim KRL Executor Bewegungsausführung / Bewegung auf Integriert stellen.
So funktionierts zumindest bei mir ohne das ein Fehler kommt.
Du könntest auch den Flag des Timers abfragen anstatt der 0.
IF ($IN[20] == TRUE) OR ($Timer[1]>=0) THEN
IF ($IN[20] == TRUE) OR $TIMER_FLAG[1] THEN
Also bei uns war das Problem auch mal und da war es Software gewesen.
Das Logbuch am Roboter zeigte immer nur die letzten paar Stunden und der Rest war nur per Logviewer einsehbar.
Eigentlich sollte das Kuka beheben können.
Also ich denke man müsste sehr viel tricksen bzw. anderst wüste ich nicht wie man es angeht...
Du müsstest dir ein kleines Band an die Stelle stellen es unsichtbar machen und darauf ablegen das es quasi aus dem Bild fährt halt so kurz wie möglich machen.
Dann könntest du per Conveyor Creator das andere Teil erscheinen lassen.
Also so würde ich das bestimmt hin bekommen.
Ist aber halt keine schöne Arbeit aber wenn es gewünscht wird ok....
Den TCP so legen das er auf der Öberfläche ist oder die Toleranz für das Andocken erhöhen.
Du schreibst dein Programm am Endpunkt setzt du $Out[1] oder deine verwendete Tool nummer.
Das ist in Sim schon so vor konfiguriert das das funktioniert.
Das einzige das es zu beachten gibt das der Toolpunkt tatsächlich die Ebene des Teils berührt.
Einfach das Teil via $OUT[1] oder je nach Tool eine andere nummer.
Mit nehmen.... das sieht auch viel besser aus.