Polieren mit dem Robi..

  • Hallo Stern,

    ja genau. Du fährst im ersten Versuch deine ursprüngliche Bahn (x mal). Danach fährst du x-mal die angepasste Bahn usw.


    Schöner wäre es natürlich eine definierte Bahn zu fahren und das Werkzeug mit definiertem Druck gegen das Bauteil zu fahren.


    Gruß

  • Schritt für Schritt zum Roboterprofi!
  • Guten Morgen Nuri,

    leider verstehe ich die Logik deines Programmes nicht ganz. Hättest du evtl. ein Bild auf dem erläutert ist, wo Punkt P1-P26 liegen?

    Hast du darüber eine Steuerung hängen? (WAIT for $IN (68) = TRUE)


    Gruß

  • Moin,

    wir haben uns da scheinbar missverstanden.

    Die Base muss am Schleifer eingemessen werden.

    Du nimmst dein aktuelles Tool und das eingemessen BASE am Schleifer musst du mit #TCP definieren, wie weiter oben beschrieben.


    Aber du kannst durchaus die andere Variante verwenden, wird dir aber Probleme bei Zirkularbewegungen machen, da die Rotation und Berechnung der Bahnplanung dann um deinen normalen TCP stattfinden wird und nicht um den stationären Schleifer.

    Da ja während deines Bewegungsablaufes der Bezug Schleifer <-> normale TCP sich immer ändern, Ändert sich auch der Bezug zu deiner tatsächlichen Werkstückoberfläche und somit wird das die Qualität wie auch die Einstellmöglichkeiten beeinflussen unter Umständen.


    Aber, by the way, is your choice!

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Hallo Nuri,

    ich würde dann die unterschiedlichen "Jobs" über die Liniensteuerung starten (über IN/OUT).z.B. so

    CONTINUE
    IF (($IN[67]==TRUE) AND ($OUT[67]==FALSE)) THEN

    Ablauf 1

    $OUT[67]==TRUE

    WAIT FOR  (  NOT $IN[67] )

    CONTINUE

    IF (($IN[68]==TRUE) AND ($OUT[68]==FALSE)) THEN

    Ablauf 2

    $OUT[68]==TRUE

    WAIT FOR  (  NOT $IN[68] )

    usw.

    In der Liniensteuerung könntest du auch einen Zähler einbauen um den an den abgenutzten Polieraufsatz angepassten Ablauf zu starten.

  • Ich würde aber auch, wie bereits von Sven erwähnt, für jeden Abnutzungsgrad ein externes Tool anlegen, so hatte ich das auch im vorherigen Beitrag gemeint.

  • Hallo KV,


    Muss ich das über Liniensteuerung ansteuern..?? und wöfür ist IN67..??

    Der IN 68 ist ja nur die Einfahrfreigabe..


    Das mit dem Stückzähler hatte ich auch vor aber wie würde ich zum Beispiel nach 10 Abläufe einen Stopp erzwingen..??


    Wie soll ich verstehen, was du mir bei deneim zweiten Beitrag sagen wolltest..??

    Für jeden Abnutzungsgrad einen anderen TCP definieren..?

    10 Abläufe -->10 Werkeug-TCP


    Gruß

    Nuri

  • Hallo,

    das mit IN67 und IN68 war nur ein Beispiel... Hatte ich extra dazu geschrieben du kannst genauso gut IN125 holen.


    Du hattest anfangs erwähnt, dass nach 5 Durchläufen kein Poliereffekt mehr entsteht. Mit diesem Abnutzungsgrad solltest du ein neues Werkzeug anlegen usw.


    Über die Liniensteuerung kannst du z.B. nach 10 Durchläufen eine Grundstellung anfordern und ggf. eine Meldung generieren. "Bitte Werkzeug wechseln"


  • Hallo KV,

    wie kann ich das generieren oder schreiben ins Programm..?


    Aber wozu brauch ich die Ein/Ausgänge...??


    Eigentlich bräuchte ich immer die exakte Bahn..!! Es ist nicht sicher das ich 5 oder 6 Abläufe fahren kann. Deswegen ist es Sinvoll das der Roboter bei jedem Zyklus minimal ( Als Beispiel 0,5 mm ) eine Bahnkorrektur Richtung Schleifkern selber durchführt.


    Bin aber ehrlich und weiss nicht genau wie man das macht.


    Ich kann schon eine Tool ( 4 Punkt ) oder Base ( 3 Punkt ) vermessen, aber wie ich das in kombnation, verbunden am schleifer oder am Bauteil machen soll.


    Dann noch eben die Berechnung, das er selber um das Maß korigieren soll.


    Gruß

    Nuri

  • Wenn das so genau sein sollte, würde ich den Schleifkern kraftgeführt gegen das Bauteil drücken. Alles andere wird nie so genau sein.

  • Wenn das so genau sein sollte, würde ich den Schleifkern kraftgeführt gegen das Bauteil drücken. Alles andere wird nie so genau sein.

    brauch ich da was externes ( Messgerät ) oder kann ich das im Programm auch machen und wenn ja, wie...??

  • Muss ich das über Liniensteuerung ansteuern..?? und wöfür ist IN67..??

    Nö, rate ich dringend davon ab. Da ist man viel zu unflexibel. Bei diesen Abnutzungsgeschichten muss man viel probieren/anpassen, da jedesmal auch noch in der SPS rumprogrammieren macht gar keinen Sinn.

    Jetzt ist der arme Nuri/Stern_1974, so scheint's komplett verwirrt.

    Die Methode mit dem TCP nachstellen wird wahrscheinlich nicht funktionieren, da die Berührung beim Polieren nicht immer auf der selben Stelle am Umfang stattfindet. D. h. im Extremfall würde (wenn man sich den Schleifer als Zifferblatt vorstellt) mal auf 3 Uhr, mal auf 6 Uhr und mal auf 9 Uhr berührt. Da wandert der TCP auf dem Umfang des Schleifers, daher reicht es nicht die Mitte zu vermessen und mit dem Verschleiß nachzuführen.

    Schön wäre man könnte die Bewegung so programmieren, dass immer z. Bsp.auf 6Uhr berührt wird. Dann kann man einfach den TCP nachstellen und ist fertig.

    Der Berechnungsvorschlag von Sven Weyer wäre eine Möglichkeit, aber da muss jeder Punkt einzeln betrachtet und berechnet werden, da man sich den Berührpunkt nicht aus den Koordinaten rausberechnen kann.

    Bleibt noch die Methode mit den verschiedenen Bahnen je nach Durchlauf, dürfte die Einfachste sein, aber halt mächtig viel Teacharbeit.

    Allerdings ist da der erste Programmansatz noch ziemlich daneben. Da braucht es noch Hilfe.

    Nur ganz kurz: die for Schleife ist unnötig, stattdessen einen globalen Zähler bei jedem Teil erhöhen, und im up schleifen dann in einem switch case je nach zählerstand eine andere Bahn abfahren.

  • Hallo Hermann,


    das bin jetzt ^^ ^^ schon, total verirrt... :)


    ja das stimmt, ich fahr schon mit dem Roboter mehrere Berührungspunkte an. Ich denke wenn ich es schaffen würde, so wie du es geschrieben hast, das ich z.Bsp nur auf 6 Uhr berühre..!!

    Muss ich dann trotzdem die Spitze vom Schleifer als Base vermessen...??


    Hab noch nie dieses switch Case angewendet, wie würde das den aussehen..??

    Verstehe ich das so das ih jede Schleife eine andere Bahnbewegung selber teachen muss..!

    --> z.Bsp: 15 Schleife, mit je 5 LIN/PTP macht in der Summe 75 selber geteachten Punkte.


    Wenn die 15 Schleifen durch sind bekomm ich einen Linienstopp oder HALT


    Schick dir mal das Video wie ich es jetzt gemacht habe..


    Gruß

    Nuri

  • Muss ich dann trotzdem die Spitze vom Schleifer als Base vermessen...??

    Ja klar. Die Sache mit dem ortsfesten TCP finde ich bei Kuka auch etwas gewöhnungsbedürftig. Da hilft evtl. mal die Doku dazu zu lesen.


    Hab noch nie dieses switch Case angewendet, wie würde das den aussehen..??


    Verstehe ich das so das ih jede Schleife eine andere Bahnbewegung selber teachen muss..!

    --> z.Bsp: 15 Schleife, mit je 5 LIN/PTP macht in der Summe 75 selber geteachten Punkte.


    Wenn die 15 Schleifen durch sind bekomm ich einen Linienstopp oder HALT

    So war der Vorschlag.

  • Ja klar. Die Sache mit dem ortsfesten TCP finde ich bei Kuka auch etwas gewöhnungsbedürftig. Da hilft evtl. mal die Doku dazu zu lesen.



    So war der Vorschlag.

    Guten Morgen Hermann,

    das hört sich gur an..!!

    hätte noch eine frage:

  • Such mal mit der Suchmaschine deiner Wahl nach 'switch Case' da gibt es jede Menge Erklärungen, wie das funktioniert, nur das break wie bei C benötigt man bei KRL nicht. Das ist nix roboterspezifisches.

    Will hier keinen Programmierkurs geben, das können andere besser.

    Nur soviel: das 1,2,3 führt dazu, dass 3 mal die erste Bahn gefahren wird, dann geht es mit der zweiten weiter usw. das ist dann das was man empirisch ermitteln muss.

    Ich sag es immer wieder : bevor man Roboter programmiert sollte man Programmiererfahrung in irgend einer fast beliebigen Programmiersprache haben, sonst hat man einfach zu viele Baustellen zugleich. Bitte nicht böse sein, anhand der Fragestellung sieht man halt, dass keinerlei Hintergrundwissen vorhanden ist. Das lässt sich aber ganz einfach per Selbststudium aneignen, vorausgesetzt man hat die Zeit und Muße dazu. ;)

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden