Adept Cobra 600 & Adept Windows

  • Hallo an alle.


    Ich bin froh so ein ausführliches Forum gefunden zu haben, welches mir schon oft weitergeholfen hat. Nur bei unserem jetzigen Problem kam ich dann doch nicht umhin mich hier auch anzumelden. Folgendes Problem haben wir bei uns in der Firma. Eine neue Fertigungsstrecke soll unter anderen mit 3 Adept Cobra 600 aufgebaut werden. Die Cobra's wurden wie immer aus Kostengründen gebraucht gekauft und sind dementsprechend nicht mehr die neusten. Außerdem haben wir noch keinerlei Erfahrungen mit Adept.
    Jetzt zu meiner Frage. Wie programmiert man diese Geräte mit Adept Windows? Kennt jemand eine deutsche Anleitung wie man vorgehen muss? Gibt es so was ähnliches wie das "Cell-Programm" bei Kuka bzw wie startet man den Roboter über externe I/O's?
    Zum besseren Verständniss, die Cobras sollen "nur" Pick and Place Aufgaben erledigen. Ohne eine Fließbandverfolgung oder ähnliches.
    Danke schonmal im Vorraus.


    Johannes

  • ANZEIGE
  • Hi,
    schwieriges unterfangen, hatte da auch meine Probleme obwohl Erfahrung mit Kuka, ABB, Fanuc etc., sind keine App's mehr auf den Steuerungen!?
    Ein 'Cell' gibt es nicht, musst du alles zu Fuß machen, gibt nur eine auto.v2 die du auch anlegen musst und in den Syspar's aktivieren musst die dann nach dem hochlaufen der Steuerung gestartet wird und über die du dann deine eigenen Prog's ausführen kannst, wie schon gesagt, es wird schwierig und dauert seine Zeit!
    Was hast du für eine Steuerung Smart Controller CX?

  • Guten Morgen.


    Danke für deine erste schnelle Einschätzung. Das es doch etwas aufwendiger ist habe ich schon gemerkt. Alte Programme sind auch noch auf den Geräten, konnte sie aber erst gestern anfangen zu verstehen da ich gestern auch das erste mal ne Verbindung mit AdeptWindows über Ethernet herstellen konnte. Momentan versuche ich über den NFS Server Programme auf den PC und umgekehrt auf den Robi laden zu können.
    Als Steuerungen sind MV10 und MV compact Controller verbaut.


    Gruß
    Johannes

  • ja der NFS Server läuft. :) konnte hier im Forum schon ne hilfreiche Anleitung finden.
    immoment bin ich auf suchen wo Positionen die ich mit "here" geteacht habe hinterlegt werden. Die Punkte sind ja glaub ich dann auch nur im Arbeitsspeicher und nach einem Neustart wieder weg?!
    Das nach dem Hochfahren die Antriebe eingeschaltet werden und sich der Roboter selber Calibriert ist auch möglich, oder?


    Danke

  • Hi,


    die liegen in den LOCATIONS, also darunter werden die Positionsvariablen abgelegt wenn du den Speicher über store auf die Disk sicherst (schau dir mal monitor commands an), wenn die nicht gesichert werden ist nach einem Neustart alles wieder platt!
    Das ist beides möglich, siehe ENABLE POWER und CALIBRATE!

  • hallo,


    ja die Befehle ENABLE POWER und CALIBRATE sind mir bekannt nur habe ich momentan noch das Problem sie vernünftig in mein Programm (in die Auto.V2) einzubinden. Der Gedanke ist das nach dem Hochfahren des Robi dies automatisch passiert. Nur wenn ich die Befehle verwende kommt der Fehler "Cant't mix MC & program instructions" und das obwohl ich keine MC Befehle verwende. Da der Roboter an einer übergeordneten Steuerung betrieben wird ist für diese Einschaltsequenz ein Handshake erforderlich. Dachte mir dazu folgendes.


    Signal(+33)
    Enable Power
    DO
    UNTIL POWER
    Signal(-33)
    CALIBRATE



    Doch so funktioniert das halt nicht. :-/
    Vielleicht hast du ja noch ne idee was ich verkehrt mache?


    Danke

  • ...kleiner Nachtrag


    habe gerade eine Lösung gefunden. schreibe es folgendermaßen.


    MC SIGNAL(+33)
    MC ENABLE POWER
    MC SIGNAL(-33)
    MC CALIBRATE


    das hat sehr gut funktioniert. Das drücken des High Power Button wird dann ja auch noch von meiner Steuerung übernommen. :)
    Oder würdest du bei dieser Vorgehensweise bedenken anmelden?
    Schutztüren und soweiter werden natürlich ebenfalls abgefragt unterandern auch über die JUSER Schnittstelle.


    Gruß

  • Hi,
    wenn geht, dann geht, würde aber aus der auto.v2 immer nur weitere *.v2 aufrufen mit MC load und execute, der Fehler vorher kommt weil die auto.v2 keine Task ist, sondern Monitorbefehle abarbeitet. Bei mir würde die ungefähr so aussehen,



    damit kannst dir einen eigenen Ordner für deine Programme anlegen (myprog z.B.), also nach dem Hochlauf wird in den Ordner gewechselt das Programm und die Locations geladen (wenn separiert von dir) und die Task robot.main gestartet die in robot.v2 liegt!

  • Hallo JohannesM,


    was hälst von einem Programmierkurs bei Adept? Da werden alle Dinge die du wissen möchtest behandelt und das ganze gibt es inklusive Trainingsunterlagen auf Deutsch.


    Deine Lösung zum Einschalten der Power
    MC SIGNAL(+33)
    MC ENABLE POWER
    MC SIGNAL(-33)
    MC CALIBRATE
    hat einen ganz großen Nachteil. Wenn keiner während des Timeouts den High Power Knopf drückt (normale Einstellung 10s) geht die auto weiter, beim CALIBRATE gibt es eine Fehlermedlung und das System hängt. Das ganze geht erst wieder durch Neuboot zu reparieren und diese Prozedur willst du doch keinem Anlagenbediener antun.


    Benutze das Programm auto nur um deine Applikationsmodule und Daten zu laden und dann dein Hauptprogramm zu starten. Dieses Hauptprogramm kann alle notwendigen Tasks starten, den Grundzustand der Maschine herstellen (Power Ein, Calibrate ...) und danach startest du mit deinem Pick- und Placeablauf.



    Das Programm zum Einschalten der Power könnte so aussehen:


    o.power.ein = 33


    DETACH(0)


    SIGNAL(o.power.ein)


    WHILE NOT SWITCH(POWER) DO
    ENABLE POWER
    WAIT
    END


    IF PARAMETER(NOT.CALIBRATED) <> 0 THEN
    CALIBRATE
    END


    WAIT.EVENT, 0.3


    DETACH(0)


    SIGNAL(-o.power.ein)


    Der Vorteil ist, dass du dieses Programm auch in deiner Fehlerbehandlung benutzen kannst, denn du musst ja damit rechnen, dass mal jemand einen NOT-AUS betätigt oder die Tür öffnet.


    Viele Grüße,


    Pitl

  • Hallo Pitl,


    du hast natürlich recht das ein Programmierkurs mehr als hilfreich ist. Ich selber denke auch das, dass die richtige vorgehensweise wäre, doch wie es halt so oft ist soll alles ja nix kosten und der Betrieb geht einfach davon aus das man das alles so hinbekommt. Lehrgang? Nein da bin ich ja ne woche weg und koste der Firma auch noch Geld. Nagut ich hab mich damit abgefunden und zum Glück gibt es ja auch solche Foren die ne sehr gute Unterstützung sind.
    Ich danke dir auf jedenfall für dein Programmbeispiel. Habe auch schon, nachdem Hinweis von Titan72, mein Programm dahingehen geändert, die Auto.v2 nur zum laden zu nutzen.
    Eine Befehl habe ich aber noch nicht richtig verstanden. Was für Auswirkungen hat das "Detach(0)" und was sagt die "0" aus? Und muss nach einem Detach nicht auch ein Attach folgen?


    Grüße

  • Ich finde es schade wenn Firmen immer denken sie können durch das Weglassen von Lehrgängen Geld sparen. Nach einer Woche Programmierkurs wärst du sicher in der Lage dein Programm so zu schreiben, dass du den grössten Teil der geschriebenen Module für die anderen Roboter weiterverwendest. Der grösste Teil der Programme wird gleich sein nur der Ablauf ändert sich eventuell.
    Wo steckt die Ersparnis, wenn du dich da jetzt durchwühlen musst.



    Jetzt zu deiner Frage:
    DETACH(0) bedeutet Koppel das Device 0, den Roboter, von der Task ab.


    Das Adept System ist ein Multitasking System und die Task 0 hat eine Besonderheit. Du kannst die Task 0, Robotertask, nur starten, wenn die High Power des Roboters eingeschaltet ist und der Roboter kalibriert ist. Das musst du also vorher in einer anderen Task machen. Da das Calibrate Kommando aber den Roboter attached musst du ihn nach dem Calibrate detachen, da er sonst an der Task <> 0 hängt.
    In Task 0 kannst du jetzt mit einem ATTACH(0) beginnen.


    Viele Grüße,


    Pitl

  • Guten Abend.


    Danke für deine ausführlich Antwort, Pitl. Habe es heute auch bemerkt das im Task null meine "Startsequenz" nicht funktioniert. Im Task 1 gings dann. Nur jetzt weis ich auch, dass ich nix verkehr gemacht habe. :)
    Eine weitere Frage ist allerdings aufgetaucht. Wenn ich den Schutzkreis öffne oder die Antriebe am MCP abschalte, dann beendet mir der Robi meine laufenden Programme. Nur wie startet man dann wieder ein Programm, z.B. über eine Quittiertaste? Habe auch mit schnellen Eingängen und dem REACT-Befehl experimentiert doch keine Lösung gefunden. Danke und allen noch nen tollen Abend.


    Gruß

  • Es gibt für den Fall eigentlich zwei Lösungsansätze. Einen einfachen, der aber nicht so komfortabel ist und einen etwas komplizierteren, der jeden Komfort bietet.


    Zuerst einmal werden im Fehlerfall nur die Tasks beendet die einen Roboter ATTACHed haben, da du dem Roboter die Power nimmst durch den Not-Aus. Dies passiert aber auch nur, wenn du deine Fehler nicht mit einem REACTE abfängst. Du warst mit dem REACT also schon ganz richtig, nur beim falschen Befehl gelandet.


    Variante 1:
    Du lässt einen sperate Task in einer Endlosschleife laufen und fragst den TASK(1,0) den Status deiner Task 0 ab. Der wird z.B. 3 wen deine Task 0 wegen eines Fehlers abbricht. Jetzt kannst du in deiner Überwachungstask warten bis der Not-Aus vorbei ist STATE(4), die High Power wieder einschalten, Roboter eventuell kalibrieren und dann Task 0 wieder starten. Das Ganze hat halt den Nachteil, dass du entweder in deinem Roboterpogramm jetzt von vorne anfangen musst oder dir eine Schrittkette programmierst, so dass du weisst wo du ausgestiegen bist und dann dort weiter machst.
    Dies ist übrigends die Variante die für die Roboter iCobra und e-Vario als einzigste verfügbar ist.


    Variante 2: (geht nur bei externen Controller)
    Du aktivierst mit dem REACTE ein Proramm, das im Fehlerfall automatisch (Interrupt) angesprichen wird. Das REACTE detached den Roboter automatsich, Task 0 läuft also weiter. Jetzt kannst du in dem Programm die die Fehlermeldungs abfragen (ERROR -1,0), die letzte Position speichern, Abwarten bis der Not-Aus Vergangenheit ist, die Power einschalten, Kalibrieren, den Roboter wieder attachen, auf eine Safeposition fahren usw. Wenn du das REACTE Programm mit einem RETURN verlässt macht dein Programm an der Stelle weiter wo es ausgestiegen ist. Vor dem RETURN musst du den Interrupt mit einem REACTE aber wieder scharf machen.



    Ich hoffe ich konnte dir helfen.



    Pitl

  • Hallo.


    Ich bedanke mich für deine Antwort. War wieder sehr ausführlich und hat mir geholfen. Komme in nächster Zeit aber erstmal nicht dazu weiter zu forschen da zunächst andere Komponenten an der Fertigungsstrecke in betreib genommen werden müssen. Werde mich aber bestimmt nochmal in den nächsten Wochen melden.


    Danke und nen schönen abend.

  • Hallo,


    interessanter Thread, zu dem ich auch noch ein paar Fragen habe.


    Variante 2: (geht nur bei externen Controller)
    Du aktivierst mit dem REACTE ein Proramm, das im Fehlerfall automatisch (Interrupt) angesprichen wird. Das REACTE detached den Roboter automatsich, Task 0 läuft also weiter. Jetzt kannst du in dem Programm die die Fehlermeldungs abfragen (ERROR -1,0), die letzte Position speichern, Abwarten bis der Not-Aus Vergangenheit ist, die Power einschalten, Kalibrieren, den Roboter wieder attachen, auf eine Safeposition fahren usw. Wenn du das REACTE Programm mit einem RETURN verlässt macht dein Programm an der Stelle weiter wo es ausgestiegen ist. Vor dem RETURN musst du den Interrupt mit einem REACTE aber wieder scharf machen.


    Wir haben bei uns im Labor der FH eine ähnliche Problemstellung wie JohannesM.


    Eine Viper 650s mit Smartcontroller wird von einem Pilz SafetyEye (sicheres 3D-Kamerasystem, 3d Schutzräume, die auch nicht hinter treten werden können) überwacht.
    Hier hätten wir gerne einen automatischen Wiederanlauf nachdem der Roboter durch eine Verletzung des Schutzraums durch einen E-Stop (muted Safetydoor) gestoppt wurde und der Schutzraum danach wieder freigeben wird (inkl. Auswertung weiterer Signale durch die Sicherheits-SPS).


    Hier hatte ich testweise mit kleineren Programmen gearbeitet, bei denen ich REACTE nutze um den E-Stop zu erkennen und dann abwarte, bis dieser beendet ist. Danach führe ich in einem Task ENABLE POWER aus und parallel dazu gebe ich in einem weiterem Task über einen digitalen Ausgang ein Signal an die Sicherheits-SPS. Diese prüft dann weitere Bedingungen und schaltet den High Power Button.
    Danach möchte ich das Programm dann automatisch an der Stelle weiterlaufen lassen, an der es durch den E-STOP unterbrochen wurde. Hierfür finde ich jedoch keine passenden Befehle, die z.B. "Return last failed Step" im adept Desktop entsprechen.
    Mit RETURN wird ja die letzte Zeile des Programms, bei deren Ausführung der Fehler (E-Stop) aufgetreten ist, ausgelassen.


    Wäre super, wenn ich hier einen Tipp bekommen würde. Z.B. wie ich die aktuelle Zeilennummer beim E-Stop auslesen kann und den Task genau da wieder aufrufen kann.


    Viele Grüße
    Mario

  • Hallo,


    ein "Return last step failed" gibt es nicht.


    Du kannst das aber in deinem Errorhandling machen.


    Wenn der Fehler auftritte speicherst du die zuerst einmal die ist Position des Roboters mit HERE oder #PHERE und die Zielposition mit DEST oder #PDEST als Variablen ab. Wenn ich deinem Errorhandling die Power wieder eingeschaltet ist und der Roboter ATTACHED wurde kannst du die Zielposition anfahren. Ein danach folgendes RETURN macht dann ein deinem Programm ab der nächsten Zeile nach dem Fehler normal weiter.



    Da dein Roboter aber gerade während eines Konfigurationswechsels in den Fehler geraten ist solltest du dir mit CONFIG(0) die momentane Armkonfiguration und mit CONFIG(2) die Armkonfiguration am Ende der Bewegung als Variable abspeichern. Die CONFIG(13), geradlinige oder Joint Interpolierte Bewegung, sollte ebenfalls wichtig sein um deine Bewegung im Errorhandling zu machen.


    Viele Grüße,


    Pitl

  • Hallo Pitl,


    vielen Dank für die Informationen. Mit dem Ansatz sollte ich weiterkommen und in den nächsten Tagen sollte ich auch etwas Zeit haben, mich wieder mit der Viper zu beschäftigen. Ich werde mich dann noch mal melden.



    ein "Return last step failed" gibt es nicht.


    Stimmt war ein Vertipper müsste "Retry failed step" sein und dem Monitorbefehl RETRY entsprechen,


    Viele Grüße
    Mario

    Einmal editiert, zuletzt von lxuser ()

  • Hallo Pitl,


    dank deinem Tipp haben wir erstmal eine brauchbare Lösung mit der wir nach Verlassen des Schutzbereiches den Roboter weiterlaufen lassen können.


    Ein paar störende Kleinigkeiten gibt es noch, z.B. geht der erneute automatische Wiederanlauf noch nicht, wenn der Schutzbereich in einem kurzem Zeitfenster nach dem Wiederanlauf direkt wieder verletzt wird.


    Die Überwachung davon wird aber in Zukunft von der Sicherheits-SPS PSS3047 des Pilz Safety Eyes übernommen sobald wir die Software zur Programmierung erhalten haben.


    Viele Grüße
    Mario


    PS: Wenn ich deinen Forumsnamen richtig deute, sieht sich man sich evtl. bald mal in Dortmund.

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