Routine in x, Y, zwischen verschieben in einer schleife

  • Hallo leute,


    Ich habe eine Bewegungs Routine die soll in x, Y, z verschoben werden. Und das auf eine bestimmte Strecke immer wieder. Bis das Ende erreicht ist.

    Es wurde kein wobjekt angelegt.

    Kein robotstudio vorhanden.

    Wenn ich die einzelne MoveL Punkte verschieden würde dann wird das Programm ewig große und ich bräuchte ewig Zeit.

    Arbeite mit note++

    Danke für eure Zeit

  • ANZEIGE
  • Hallo,

    Danke für die Antwort.

    Hier besser beschrieben :

    Ich habe eine Routine mit der ich in ein Material kleine Löcher hinein schneide es ist ein Design Muster. Es ist in etwa eine perforierung. Also diese Routine gibt es schon und soll so bleiben. Nun soll diese Routine auf einer bestimmten Strecke etwa 20-30 cm die allerdings nicht gerade verläuft wiederholt werden. Und das immer wieder bis das Ende erreicht ist. Ich möchte die Routine in x, Y, z unterschiedliche Werte geben. So das es zum Schluss optisch ein großes zusammhangentes Design gibt. Die Routine hat leider kein werkobjekt.

    Also ich denke ich bräuchte eine Schleife und etwas wo ich die Werte von x, Y, z immer dazu addieren.

    Ich hoffe es war verständlich.

    Sollte doch kein Problem sein für euch.

    Danke eure Hilde

  • Thema ist zwar schon über Monat her.

    Es gibt auch PDisp. (PDispSet, PDispOn, PDispOff).

    Alles was zwischen PDispOn und PDispOff liegt, wird nach PDispSet im Werkobjekt versetzt abgefahren (hier Wobj0),
    so als ob Du den Objektframe eines Werkobjektes schieben würdest, was man im Wobj0 natürlich nicht macht.

  • Hallo,

    Danke.

    Wir haben das nun so gelöst.

    Wir haben ein for schleife gemacht.

    For in for :-}

    Variablen für x, Y, z.

    Und haben dann x, Y, z immer wieder addiert,

    Am Ende und dann wiederholt.

    War nicht die erste Idee aber ich wusste keinen anderen Weg.

    Haben nun ein Problem.

    Möchte einen viertel Radius, perforieren.

    Praktisch 5,3mm schneiden, steg1. 7mm.

    Habe keine Idee wie man so was im Radius macht. Kann ja dem move C nicht sagen das er in der Hälfte der Strecke den Eingang schließt und nach 1,7mm wieder öffnet.

    Habt ihr das eine Idee?

    Gruß Hilde.

  • ITimer (Interrupt Timer) wird zum Anfordern und Freigeben eines zeitgesteuerten Interrupts verwendet.

    Mithilfe dieser Instruktion kann z. B. der Status von Peripheriegeräten einmal pro Minute geprüft werden.


    Du kennst ja die Geschwindigkeit in mm/sec.
    Dementsprechend schalten.
    Ich mache das so auf dem S4 um alle xx Sekunden Polierpaste auf die Polierscheibe zu drücken.
    Allderdings ist da keine Genauigkeit nach mm gefragt.

  • Hallo,

    Wie geschrieben alles bei teach in Verfahren :(

    Ist wirklich schwer zu treffen da auch drei Dimensionen.

    Aber Itimer das könnte ich mal versuchen. Kenne ich so nicht.

    Den setze ich vor den movec und sage alle 0,5sec aus und dann wieder +0,1=0,6 wieder an. Dann passe ich die Geschwindigkeit des movec an und schau mal wenn es passt.

    Mahlzeit, so stelle ich es mir vor.

    Könnte gehen.

    Gruß Hilde

  • Hallo Hilde,
    damit Du einen sauberen Anfang hast solltest Du vielleicht mit MoveLSync das Aufwecken des Interrupt in einer PROC WakeInt starten.
    Oder TriggerL, dann kannst Du auch die Startzeit besser anpassen, den für MoveLSync gilt:

    Wenn der Roboter die Mitte der Zonenbahn erreicht, wird die RAPID-Routine in der Regel nach einer Verzögerung von 20-30 ms abgearbeitet, je nach Typ der zu diesem Zeitpunkt ausgeführten Bewegung.

    Ein Wechsel des Abarbeitungsmodus nach einem Programmstopp von kontinuierlich oder zyklisch zu vorwärts oder rückwärts ergibt einen Fehler. Dieser Fehler teilt dem Anwender mit, dass der Moduswechsel zum Auslassen der RAPID-Prozedur in der Warteschlange für die Abarbeitung auf der Bahn führen kann.

    Die Instruktion MoveLSync kann nicht auf der Interrupt-Ebene verwendet werden. Die angegebene RAPID-Prozedur kann nicht mit einer schrittweisen Abarbeitung getestet werden.

    MoveLSync kann nicht in einer UNDO-Behandlung oder RAPID-Routine ausgeführt werden, die mit einem der folgenden speziellen Systemereignisse verknüpft ist: PowerOn, Stop, QStop, Restart, Reset oder Step.


    Also, was gemeint ist mit "kann nicht auf der Interrupt-Ebene" zu verstehen ist, wrde ich grad nicht schlau draus.

    Aber das hier sollte funktionieren:

    TriggInt wird verwendet, um Bedingungen und Aktionen für das Ausführen einer Interrupt-Routine an einer angegebenen Position der Roboterbewegungsbahn auszuführen.

    Die definierten Daten können in einer oder mehreren nachfolgenden Instruktionen TriggL, TriggC oder TriggJ verwendet werden.

    Diese Instruktion kann nur in der Haupttask T_ROB1 bzw. in einem MultiMove-System in Bewegungstasks verwendet werden.

  • Frage zum Verständnis.

    Ich habe ein Start MoveL Befehl und ein end MoveL Befehl.

    Darüber setze ich dann den Itimer für schneiden an auf 2sec.

    Würde er dann alle 2sec. Das schneiden öffnen???

    Kann ich mir das so vorstellen? Klar müsst dann noch einen Itimer setzen das er alle 2,1sec. Das schneiden schließt.

    Nach erreichen dann den Itimer wieder schließt.

    Geht das so?

    Also eine Perforation nach zeit...

    Gruß Hilde

  • Also, ich habe so etwas noch nie probiert, aber so würde ich es machen.
    Ähnlich Kleberauben auftragen.
    Man kann die Bahn unterteilen, oder mit dem Itimer arbeiten.


    Der Gedanke dabei ist, der Programmzeiger läuft ja dem Bewegungszeiger voraus.
    daher, wenn du deinen Schneidevorgang startest mit setzen eines Signals, dannn wird der immer früher gestartet, als das sich der Roboter wirklich an der Position befindet.
    Deshlab musst Du den Start des Scheidevorgangs "triggern".

    Dafür die Triggerfunktion.

    Und wenn Du den Zeitpunkt des Schneidvorganges mit einem Fine-Punkt starten würdest, dann müsste der Roboter ja erst von Null auf die angegebene Geschwindigkeit beschleunigen.
    Deshalb den Schaltorgang so schalten, dass der Roboter bereits die Geschswindigkeit hat, also On-The-Fly. Und dazu benötigstst Du den Trigger.

  • Sorry, bin schon trunken, wie man an der Schreibweise erkennt, aber im Denken bin ich Roboter.
    Aber: Trunken lasse ich die Finger von einem Roboter!

  • Also Hilde,
    lass mal gut sein für heute Abend und wenn es Dir möglich ist, poste mal, wie Du es umgesetzt hast.
    Würde sichelich so manchen hier interesieren.

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

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