Hi,
ah du hast schon ein 8.5er ... da gibt es ne extra Seite.
Editoren -> Bremsentestkonfiguration.
Wobei ich jetzt noch kein 8.5er hatte der kein Safeop hatte. Der hier hat es, schau mal ob es auswählen kannst.
Hi,
ah du hast schon ein 8.5er ... da gibt es ne extra Seite.
Editoren -> Bremsentestkonfiguration.
Wobei ich jetzt noch kein 8.5er hatte der kein Safeop hatte. Der hier hat es, schau mal ob es auswählen kannst.
Ob es nun nötig ist oder kann man drüber streiten, es gibt mittlerweile aber auch paar Kunden die es auch wollen wenn kein Safeoperation installiert ist.
Du kannst den Bremsentest auch aktivieren wenn du keine Sicherheitssteuerung hast.
Im WoV das Projekt aktivieren -> Editoren -> Zusätzliche Steuerungseigenschaften -> Bremsentest erzwingen.
Dann hast deinen Regelmäßigen Bremsentest bzw. kannst ihn auch mit dem Signal $BRAKETEST_REQ_EX erzwingen.
Hi,
danke so funktioniert es schon viel besser:)
Hi,
ich hab das mal ausprobiert. Die schritte sind so wie du beschrieben hast, aber mit und ohne shifttaste.
Schön wäre es ohne Shift kleine Sprünge, mit Shift große Sprünge.
Hi,
ich habe eine Frage zum Override.
Am Panel ist es ja möglich den Override mit +/- zu um je 5% zu verstellen.
Ich hatte auch schon einen Fanuc da konnte man mit Shift und +/- den Override in größeren Schritten (100,75,50,25,10,5, usw) verstellen.
Wo kann man das einstellen?
Hallo,
ich fange gerade mit den Fanucs an. Soweit so gut allerdings hat der Roboter hier das Problem das er bei den Programmwechseln stehen bleibt, gefühlt 1sekunde.
Gibt es Einschränkungen wann ein Programmwechsel nicht überschliffen werden kann?
Soweit sei gesagt das die SPS Signale bereits anstehen für das neue Programm.
Optisch am Panel bleibt das Programm genau auf dem Sprungverteiler stehen wo er rein ist. Erst wenn der Roboter zum stehen gekommen ist läuft es weiter.
Hier mal der Programmverteiler:
16: LBL[2:Begin] ;
17: DO[243:OFF]=ON ;
18: DO[244:ON ]=ON ;
19: ! check gripper state ;
20: CALL GRP1_STAT ;
21: ! read decision code from cell ;
22: CALL READDEC ;
23: IF (F[1:ON :OK to continue]=OFF),JMP LBL[100] ;
24: ;
25: DO[243:OFF]=OFF ;
26: SELECT R[51:DecisionCode]=1,CALL PICK1A ;
27: =2,CALL PLAC1A ;
28: =3,CALL PICK4A ;
29: =4,CALL PLAC5A ;
30: =5,CALL PICK5A ;
31: =6,CALL PLAC4A ;
32: =7,CALL PICK8A ;
33: =8,CALL PLAC8A ;
34: =9,CALL PICK2A ;
35: =10,CALL PLAC2A ;
36: =12,CALL PLAC11A ;
37: =15,CALL TOHOME ;
38: =21,CALL PROC01A ;
39: =22,CALL PROC02A ;
40: =23,CALL PROC03A ;
41: =24,CALL PROC04A ;
42: =25,CALL PROC05A ;
43: =26,CALL PROC06A ;
44: =30,CALL PROC016A ;
45: =60,CALL PROC10A ;
46: =70,CALL PROC11A ;
47: =80,CALL PROC20A ;
48: =90,CALL PROC21A ;
49: =255,JMP LBL[100] ;
50: ELSE,JMP LBL[2] ;
51: //IF (F[1:ON :OK to continue]=OFF),JMP LBL[100] ;
52: JMP LBL[2] ;
Alles anzeigen
Hier mal beispielhaft ein Programmende:
123: ! offset out of fixture ;
124: CALL XYZOFFST(91,0,(-400),150,0,0,0,0) ;
125: !move in direction pounce ;
126:L PR[30:pPickUp1] 2000mm/sec CNT20 Offset,PR[91:cPlaceOffset] DB 0.0mm,CALL SET_STEP(8) ;
127: ;
128: ;
129: ;
130: CALL PROGSTAT(15) ;
131: CALL SET_STEP(9) ;
132: ;
133: !Change of colision guard ;
134: R[200:ActCollGuard]=R[191:LowSensCollGd] ;
135: COL GUARD ADJUST R[200] ;
136: ;
137: ! back to Pounce 1 ;
138:J PR[3:pPounce1] 100% CNT100 ;
139: ;
140: DO[178:OFF:pboAtPickPos]=OFF ;
141: DO[180:ON :pboRobOutOfCollPickPo]=ON ;
142: ;
143: !reset current program counter ;
144: CALL SET_STEP(1) ;
145: CALL PROGCURR(1) ;
146: ;
147: !If grippart failed above then ;
148: !F[1:OK to Cont]=OFF ;
149: DO[137:ON :pboComplMach1]=(F[1:ON :OK to continue]) ;
150: ;
151: !------------------------------- ;
152: LBL[100:End] ;
153: !------------------------------- ;
Alles anzeigen
In den Programmen Set_Step und ProgCurr werden nur ein paar Register beschrieben, nix wildes.
Hallo,
versuchs mal mit dem Befehl "UIMsgBox". Tipp den Befehl mal in der Hilfe von Robotstudio ein dann wirst du fündig.
Ok vielen Dank.
Ich habe es nun so gemacht sobald das Signal ausgewählt wird aber der Status nicht vorhanden ist wird der Ausgang gesetzt. Falls Status vorhanden dann halt das was im Status steht.
Hallo,
hier die allgemeine Lösung die glaub so in der einen oder anderen Art benutzt wird.
PROC SMove(\switch J|switch L,dnum dnValue,robtarget ToPoint,speeddata Speed,zonedata Zone,PERS tooldata Tool,\PERS wobjdata Wobj)
!****************************************
!* Funktion: [ SMove\J ] *
!* [ ] *
!* Bemerkung: [ ] *
!* [ Mit den Übergebenen Werten ] *
!* [ wird ein Bewegegungsbefehl ] *
!* [ erstellt bei dem die Positions- ] *
!* [ nummer per Trigger erfasst wird ] *
!*--------------------------------------*
!* Input: [ ] *
!* pToPoint = Zielposition ] *
!* nValue = Positionsnummer ] *
!* vSpeed = Geschwindigkeit ] *
!* zZone = Zonendaten ] *
!* tTool = Werkzeugdaten ] *
!* wWobj = Werkobjektdaten ] *
!* ] *
!* Output:[ ] *
!*--------------------------------------*
!* Referenzen: [ ] *
!* [ ] *
!* [ ] *
!*--------------------------------------*
!* [ ] *
!*--------------------------------------*
!****************************************
!
!Definieren des Triggersignals
TriggIO trTrigg1,10\GOp:=go_Grundstellung,dnValue;
!
!Daten in Logbuch schreiben
RoboLog\stInput:="Anfahren Position: "+DnumToStr(dnValue,0);
!
!Auswahl der Bewegungsart
IF Present(L) THEN
!Linear
TriggL ToPoint,Speed,trTrigg1,Zone,Tool,\WObj?Wobj;
ELSE
!Joint
TriggJ ToPoint,Speed,trTrigg1,Zone,Tool,\WObj?Wobj;
ENDIF
!
BACKWARD
!
!Auswahl der Bewegungsart
IF Present(L) THEN
MoveL ToPoint,speed,fine,Tool,\WObj?Wobj;
ELSE
MoveJ ToPoint,speed,fine,Tool,\WObj?Wobj;
ENDIF
!
!Setzen der Positionsnummer
SetGO go_Grundstellung,dnValue;
!
ENDPROC
Alles anzeigen
Im Programm soeht das dann später so aus:
SMove\J,999,pGrundstellung,v200,z100,tGreifer1;
SMove\J,960,pPruefpos_VP1,v200,z100,tGreifer1;
SMove\J,961,pPruefpos_VP2,v200,z100,tGreifer1;
Und im grundstellungsfahren dann einfach den gruppenausgang abfragen und abhängig davon den Roboter rausfahren lassen.
Hallo,
danke für den Tips.
Ich werde es mal ausprobieren. Wobei ich es gerne mit einer Routine erschlagen hätte und die Option hätte auch mal zwei oder gar optionale Signale auf der Bahn zu triggern und immernoch die Positionszählung zu haben.
Hallo,
wir haben eine Bewegungsroutine die mit Triggerfunktion die Positionsnummer mitschreibt.
Funktioniert soweit Prima. Ich habe nun aber schon des öfteren das Problem gehabt das ich dadurch mir die Möglichkeit nehme andere Triggerfunktionen auf der Bahn auszulösen.
So nun zum Punkt, ich würde gerne das ganze Erweitern das ich optional einen Ausgang mit angebe. Geht soweit auch. Nun will ich aber das wenn der Ausgang als optionaler Parameter angewählt wird der Status zwingend mit einzugeben ist. Derzeit bekomme ich das nur so hin das ich den Status den das signal haben soll auch optional mache.
Wir haben derzeit V8.3.20 im Einsatz.
Hi,
danke für die Ideen. Hatte gehofft nicht wieder hintenrum mit anderen Programmen aufzuräumen. Wäre auch mal zu schön.
Nein leider können wir die alten Befehle nicht nutzen.
Wir haben eine begrenzte TCP und Achsgeschwindigkeit im Safemove Nur die neuen Befehle halten beide Grenzen ein.
Ist ne kleine Anlage mit Lichtgitter davor, daher musste da die Bremse rein.
Ich habe nun fast alles in SplineBlöcke geteacht. Jetzt laufen auch die Programme, derzeit sind es genau 214 Positionen im größten. Wobei man sich estmal an das Spline fahren stark gewöhnen muss und viel Geduld braucht.
Hi,
ich stehe vor dem selben Problem. Wie war nun die Lösung?
Derzeit hatte ich ca. 200 SPTP,SLIN und SCIRC Befehle in einem Verfahrprogramm.
Der Kuka Service hat mir angeraten es mit SplineBlöcken zu probieren. Derzeit bin ich dabei, allerdings ist das sehr aufwendig da man alles neu machen darf
Hallo,
ich habe gerade ca. 20 Teile zu Programmieren mit jeweils bis zu 200 Positionen.
Wenn ich einen Namen vergeben habe zählt der Kuka die nächste Position in einer schritten hoch.
Der Name soll zb. Bahn1_10, Bahn1_20 usw. heißen. falls doch mal noch was dazwischen gepackt werden muss.
Kann man es anpassen das er in 10er schritten die Positionen zählt? Derzeit muss ich das immer von Hand bei jeder machen, dauert länger als die neue Position anzufahren
Hallo zusammen,
ich habe derzeit das Vergnügen mich auf einen VKRC4 vorzubereiten.
Die Aufbauschulung bei Kuka war auch sehr aufschlussreich und nun wollte ich anfangen offline alles vorzubereiten. In der Schulung wollte man uns die Kuka VM schmackhaft machen nur die ist nicht sehr günstig.
Habe es mit dem Orange Edit probiert, mit mäßigem Erfolg. Dort kann ich es nur einsehen aber nichts anpassen. Mache ich da was falsch?
Ultra Edit : Durch die Verschachtelte FOLD Struktur ist mir das etwas zu heikel alles von Hand einzutippen.
Gibt es einen kostenlosen brauchbaren Editor?
Als kostenpflichtige hab ich noch Steineke OLP gefunden aber keine Bilder/Demo oder ähnliches wie dies aussieht und funktioniert. Gibt zu diesem Erfahrungsberichte?
Hallo,
am ABB Roboter kann man Programme flexibel mit hilfe einer Stringvariable aufrufen.
Hier mal das Beispiel:
%"mv"+ValToStr(nAktPos)+"_"+ValToStr(nZiel)+"_"+ValToStr(nProgNr)%;
Nun die einfache Frage kann das der Kuka auch? Wenn ja wie
Edit:
Mittlerweile hab ich im Forum ein paar Beiträge gefunden, allerdings war die Aussage das es so nicht möglich ist. Nur mit Cwrite aufrufen aus der SPS :-|
Die Beiträge waren aber alle etwas älter. Hat sich da was getan?
Also der Teachpunkt ist bei c1Position 0 bzw nahe dran.
Wenn die c1Position 300 mm zurückgelegt hat und der Roboter folgt ihm gerade dann soll er wenigstens anhalten. Am besten wäre natürlich hochfahren und Fehler ausgeben.
Das Band fährt mit ca 14mm/minute also eher langsam.
Nur wie verhindere ich das er sich in den Ofen "trackt" ?
Hallo zusammen,
ich habe ein Problem mit dem Conveyor Tracking.
Der Roboter beläd ein Ofenband mit 4 Bauteilen, dabei fahren die Bauteile natürlich weiter die abgelegt wurden und am Ende liegen Sie in einer Reihe wenn er fertig ist.
Nun kommt es laut Kundenaussage vor das der Roboter gegen den Ofen fährt. Genaueres weiß wieder keiner, Fehlermeldungen oder in welchem Programm er unterwegs war.
Die Maximale Distanz ist auf 300mm eingestellt. Vom Teachpunkt der Ablagen sind es 380mm bis zum Ofen. Sollte also reichen. Ich bin davon ausgegangen das der Roboter stoppt wenn er die maximale Distanz erreicht. Dies scheint aber wohl nun nicht der Fall zu sein.
Muss ich nun mit einem Interrupt während des Beladen des Bandes die c1Position ständig prüfen? Bzw. wie macht man es richtig