Startpunkt verschieben

    • Hilfreich

    Wenn es um das Programm in dem Bild geht: Ist klar, weil Du Punkt 2 anfährst VOR der Zeile mit der Baseänderung. (Zeilen 6 und 7 vertauschen)

    Punkt 1 ist ja im Welt, der wird in Welt umgeteacht. Der hat damit gar nichts zu tun, der speichert nur.

    Punkt 2 ist tatsächlich über BASE_DATA[1] verschiebbar und sollte sich ändern.

  • Schritt für Schritt zum Roboterprofi!
  • Anbei nochmal das Programm:


    wenn ich P3 verschieben will(obwohl in der selben Base, verschibt sich nur dieser Punkt um den Wert, der P4 bleibt gleich...


    Das einzige was funktioniert, dass ich ein Programm schreibe, und dann danach beim Vermessen die Basis neu vermesse, dann ändern sich alle Punkte automatisch. (Aber auch nicht gerade Perfekt...)

  • Den Dialog in Deinem letzten Bild habe ich noch nie benutzt. Ernsthaft. Den brauchst Du nicht.


    Das entwickelt sich gerade wieder komisch auseinander.


    Nochmal: Du hast ein Programm "fahren" oder wie immer es genannt wird, darin sind Punkte in einem BASE geteacht. Hier: BASE_DATA[1], oder eben, wie da zu lesen ist, Base 1.


    Und Du hast

    ENTWEDER eine Methode, Base 1 einzumessen über KUKAs Systemfunktion "Vermessen|BASE|...".

    ODER das von mir beschriebene Programm "ankratzen", nennen wir es mal so, aus dem Bild auf der vorigen Seite.


    In beiden Fällen steht VOR der Maßnahme (entweder / oder) in "Ansicht|Variable|Einzeln" bei Eingabe von BASE_DATA[1] was anderes als danach.


    Deswegen wird das Programm "fahren" nachher andere Positionen im "Weltraum" haben als vorher.

  • Könnte mir nur noch jemand sagen (Dann gebe ich endlich Ruhe :D ) wie ich ein wait Kommando einbaue. Da ich zuerst einen Deckel abfräse, danach den Stamm ausrichten muss und die Base dann eben verschieben will, muss der Robby nach dem Deckelfräsen so lange warten, bis ich wieder auf die Starttaste drücke... ist das möglich ? Finde nur etwas mit time...

  • Ich rate Dir DRINGEND, dazu zwei Programme zu verwenden.

    Also, das mit dem Deckelfräsen abfahren, dann abwählen, das dazwischen machen, dann das mit dem Becken fräsen anwählen und starten.


    Wenn Du das unbedingt in einem haben willst, benutze bitte die Anweisung

    Code
    HALT

    die hält das Programm an, bis Du wieder nachstartest.


    Was Du keinesfalls machen solltest: bei einem wartenden Programm im Arbeitsbereich rumfuchteln. Normalerweise ist der Roboter auch totgelegt, wenn man dort ist, aber ich fürchte, ich fürchte, ich fürchte....

  • So leider muss ich jetzt nochmal etwas fragen.


    Habe Base Data 1 so getacht (numerische Eingabe) dass diese alle Positionen mit 0 hat.

    Die 2. Base habe ich dann alle ebenfalls mit 0 geteacht. Außer Z, -5mm wegen der Zustellung


    Nun wenn ich das mit dem Code BASE_DATA[1] = Xnullpunkt mache passiert folgendes.


    Die erste Base funktioniert natürlich wunderbar, wenn ich dann die Punkte kopiere und dann auf die zweite Base (Z-05) ändere, rechnet der Robby wieder mit dem Xnullpunkt zu den Koordinaten... und er fährt natürlich komplett falsch...

    kann man das irgendwie ändern ?

  • Man muss es halt von Anfang an richtig machen.

    Hier wurden verschiedene Lösungsmöglichkeiten aufgezeigt, du bringst die jetzt etwas durcheinander, bzw die wurden auch etwas durcheinander beschrieben.

    Du teachst die Punkte in einem Base, in dem alle Koordinaten 0 sind.

    Hinterher kopierst den Startpunkt in das Base: BASE_DATA[1] = Xnullpunkt

    Das verschiebt jetzt das Base um die Koordinaten des Startpunkt und zwar in allen Koordinaten X, Y, Z, A, B, und C. Wenn der Startpunkt nur in X so ca. 1m vom Mittelpunkt des Roboters weg liegt, dann werden die ganzen Punkte um eben diesen einen Meter verschoben angefahren. Das gilt auch für alle anderen Koordinaten, bei A, B, C wird das dann besonders lustig, denn das verdreht dann das Koordinatensystem in allen Achsen, was da dann rauskommt ???

    Vorgehensweise wäre Z. Bsp.

    Erst mal alle Koordinaten des Base 1 und 2 auf Null setzen.

    Den Start teachen, dieser muss im base $nullframe geteacht sein.

    Dann dem Base 1 die x, y, Z Koordinaten des Xstart zuweisen.

    Dann das Base 1 auf Base 2 kopieren.

    Dann alle Fräspunkte anlegen/teachen alle im Base 2. Diese kann man schon in einer Schleife in der das base 2 jeweils um die Zustellung in Z verschoben wird einbetten.

    Fertig ist die Laube.

    Da brauchst du keine Punkte kopieren, verschieben oder sonst was seltsames damit anfangen.

    Den Zwischenschritt mit base 1 kann man auch weglassen, habe sowas aber ganz gerne um bei Problemen das ganze besser nachvollziehen zu können. Dann muss man in der Schleife halt das z aufsummieren.

  • Servus Hermann,


    ich habe es so ähnlich gemacht... habe das mit xNullpunkt beibehalten.


    Alle Punkte dann in der Base 1 geteacht.


    Habe nur diesmal das Tool[1] mit 0,0,0.. geteacht.


    wenn ich dann 5mm zustellen wollte habe ich die vier Punkte vom Becken kopiert, wieder eingefügt mit und auf das neue Tool[2] (0,0, Z-0,5) geändert. Hat auch geklappt...


    keien Ahnung ob das dann richtig ist, aber es funktioniert zumindest...

  • .. wenn ich dann 5mm zustellen wollte habe ich die vier Punkte vom Becken kopiert, wieder eingefügt mit und auf das neue Tool[2] (0,0, Z-0,5) geändert. Hat auch geklappt...

    Warum kopierst du immer Punkte?

    Völlig unnötig. Probiere meinen Programmvorschlag von oben.

    Die Zustellung passiert da in der Schleife mit der Berechnung des Z-Werts des Base.

    Das Tool sollte man nicht ändern, der Fräser (das Tool) ändert sich ja auch nicht. Was machst, wenn du nächsten Monat einen Fräser mit anderen Abmessungen hast: Wieder alles teachen.

    Wenn der TCP dem Fräser entspricht, brauchst nur den neuen TCP einrichten und es passt wieder.

    Ob der Punkt jetzt Start oder Nullpunkt heisst ist wumpe. Kannst ihn in meinem Programmvorschlag einfach umbenennen.

    Oder meinst du die Zustellung in der Ebene und nicht die Tiefe?

  • Sorry, anscheindend kann man wohl keine Arrays in for/endfor benutzen, wollte das Definieren einer eigenen Variable vermeiden.

    Also einfach eine eigene Scheifenvariable definieren, ganz oben am Anfang des Programms, oder im zugehörigen DAT File.

    Code
    decl int ii

    Dann noch die Zeilen ändern:

    Code
    For i1=0 TO 10
    ;hier 5mm Zustellung
    Base_data[2].z=base_data[1].Z-5*I1

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