Rückzug nach crash

  • Hallo zusammne,


    hat jemand von euch schon mal einen kontrollierten Rückzug bis in die Homepos programmiert???


    Habe einen Roboter der an vielen verschiedenen Stellen an einer Maschine arbeiten muss, der Bediener kann den Roboter über Offsets anpassen und wenn er das mal falsch macht kann es zu einem Crash kommen oder wenn ein Bauteil falsch eingelegt ist usw. Nun will der Kunde das der Roboter über einen Tastendruck wieder zurück in die Homepos fährt und danach wieder neu Starten kann.


    Wie geht so was? Hat das jemand schon mal gemacht oder muss ich das Rad neu erfinden :denk: ;)


    Hatte schon mal angedacht jede Position über LPOS abzuspeichern und diese dann wieder Rückwärts zu fahren, aber bei CNT100 sind die aber stark abweichend. Gigt es was wo die Orginal positionsdaten drin stehen??



    Vielen Dank schon mal für eure Hilfe

  • ANZEIGE
  • Es gibt da mehere Möglichkeiten. Die einfachste wird die von dir beschriebene sein. Immer wenn er einen Punkt angefahren hat, diesen abspeichern. Vorteil.. einfach zu programmieren, nachteil, wie du sagst, kann bei grossem CNT ungenau werden. Vielleicht hilft es aber, wenn du bei Freifahren die Punkte direkt anfährst.
    Andere Möglichkeit, jeder Punkt bekommt eine eindeutige ID. Dann speicherst du beim abfahren nicht die Postionen ab, sondern diese ID. Dann kannst du über ein Freifahprogramm die geteachten Punkte direkt wieder zurückfahren.
    Nachteil hier, du musst jeden neuen Punkt in diese Routine einpflegen. Es darf auch keine doppelten ID geben, sonst kann es schnell krachen.
    Wichtig ist aber, dass der Roboter das nur machen darf, solange er nicht von Hand verfahren wurde. Wenn das der Fall ist, am besten immer den Bediener in die Homepos fahren lassen. Sonst passiert es recht schnell, dass jemanden den Roboter in eine Ecke fährt und dann die Steuerung startet und dann kann es schnell knallen.
    Die ID Methode habe ich schonmal so bei einem Kollegen gesehen. Der hatte das sehr gut ausprogrammiert, aber war auch ein riesen Code und man muss halt beim teachen viel beachten.
    Ich selber habe bei einem Stäubli die Methode von dir genommen, wobei ich bei dem die Punkte direkt in ein Array kopiert habe. Und nicht die aktuelle Position. Hatte dann den Vorteil, dass ich keine IDs brauchte, und ich die geteachten Punkte nutzen konnte. Bin mir aber nicht sicher ob das der Fanuc ohne Karel kann.

  • Hallo


    Wir arbeiten mit Masken. Am Anfang vom Programm wird in ein Register die aktuelle SUB Nummer reingeschrieben. Nach jeder Position welche wir anfahren schreiben wir in ein zweites Register die aktuelle Schrittnummer welche gleich dem Label des Schrittes ist. Wenn wir dann Grundstellung fahren wählen wir ein anderes PNS an wie das für den Automtikbetrieb. In diesem PNS fragen wir ab welcher SUB zuletzt aktiv war. Dann rufen wir den Sub auf. Und nun haben wir am Anfang vom Programm und pro Schritt die Abfrage ob die Grundstellungsfahrt aktiv ist oder nicht. Wenn sie aktiv ist dann springen wir zum letzten bekannten schritt und von hier aus springen/fahren wir dann das Programm so lange vor oder zurück bis wir sicher in Homepos fahren können. Wir haben pro Anlage verschiedene Produkte und teilweise sehr enge Stellen (.z.B. Spritzgussmaschine).
    Wenn nun der Fanuc die Zielposition nicht erreicht wegen einem Crash dann fährt er automtisch (bei uns) erstmal auf die Vorposition und von dort dann entsprechend weiter.
    Funktioniert sehr gut aber man muss auch an alle Situationen denken.


    Das mal nur als grobe Übersicht. Wir haben uns eine Maske geschrieben welche wir immer wieder benutzen und hier die Abläufe rein programmieren. Dann braucht man nicht ständig die Registerabfragen neu schreiben.


    Gruss

  • Hallo, nur mal auf die schnelle zusammengeschrieben.


    R10 = Schrittnummer
    R11 = Sub Nummer (Im PNS für die Grundstellung abgefragt und hingesprungen)
    R12 = Grundstellungsfahrt aktiv = 1 ( ist nur während der Grundstellungsfahrt aktiv)



    Am Anfang vom Programm:


    Wenn R12 = 1 springe zu LBL[R10] (somit springt er zum letzten aktiven Schritt)
    :
    :
    :



    Schrtitt 50 Anfang
    LBL [50]


    Positonsanfahrt Übergabe


    R10 = 50
    Wenn R11 = 1 springe zu LBL 60


    Schritt 50 Ende


    Schrtitt 60 Anfang
    LBL [60]


    Positonsanfahrt Vorposition Übergabe


    R10 = 60
    Wenn R11 = 1 springe zu LBL 120 z.B.


    Schritt 60 Ende


    Denn Rest musst Du Dir selber ausdenken. ;o)


    Gruss

  • Ups schreibfehler


    Schrtitt 50 Anfang
    LBL [50]


    Positonsanfahrt Übergabe


    R10 = 50
    Wenn R12 = 1 springe zu LBL 60


    Schritt 50 Ende


    Schrtitt 60 Anfang
    LBL [60]


    Positonsanfahrt Vorposition Übergabe


    R10 = 60
    Wenn R12 = 1 springe zu LBL 120 z.B.


    Schritt 60 Ende

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