Beiträge von Thilbi

    Leider sind meine Erfahrungen, und auch die von Kollegen, nicht so positiv zu dem Umsteigerkurs in Neuhausen. Wir waren in verschiedensten Abständen zu den Kursen dort. Allerdings war das im Prinzip nur ein Grundlehrgang. Das gleiche was eben auch als Grundkurs buchen kannst.


    Unter einem Umsteigerkurs verstehe ich jetzt z. B. dass auf die Grundlagen ( was ist ein TCP, welche unterschiedlichen Koordinatensysteme gibt es, usw.) verzichtet wird.

    Dafür aber mehr auf die Bedienung, Konfiguration des Systems bzw. der Ein- und Ausgänge, erweiterte Programmierung eingegangen wird. Es wurden selbst in den Pausen oder während der Übungseinheiten keine großen bzw. tiefere Informationen weitergeben.

    Wir hatten immer den Eindruck dass hier bewusst geblockt wurde um weitere Kurse belegen zu müssen.

    Hallo sonny,


    ohne die Situation zu kennen, aber wenn ein KR180 bis auf ein paar Millimeter an den Schutzzaun fahren muss kann die Zelle nie sicher betrieben werden. Es sei denn der Schutzzaus wird so massiv ausgeführt dass der Roboter diesen nicht durchbrechen kann.

    Hier dann konstruktive/planerische Fehler über die Sicherheitskonfiguration ausbügeln zu wollen ist nicht sinnvoll.



    Grüße

    Thilbi

    Man kann auch Dokumentationen so umfangreich schreiben, dass sie niemand mehr liest!


    Prinzipiell reden wir hier von Basics, die an einer guten Schulung Dir beigebracht werden.

    Dann fällt der Einstieg in KRL relativ leicht.

    Hallo,

    wie eine gute Dokumentation aussehen kann, kann man sich bei ABB anschauen. Hier wird das komplette Rapid in zwei Dokumenten vollständig erklärt.


    Natürlich ersetzt auch diese Doku keine Schulung, aber man findet sich wesentlich besser und schneller zurecht als in den Dokumenten von KUKA.



    Grüße

    Thilbi

    Hallo,


    ich kenne es so, dass es für alle lizenzierten Optionen in der Steuerung die entsprechenden Aufkleber mit einem Barcode und der Bezeichnung der Optionen gibt. Wenn Optionen nachbestellt werden liefert Kuka die Installationsdateien, KOP-File und den Aufkleber. Der muss dann im Schrank angebracht werden.



    Grüße

    Thilbi

    Wenn ich mir das Bild so anschaue verwendet ABB bei dem Beispiel nur temporäre Weltzonen und definiert diese auch direkt in dem Pfad.


    Könnte mir vorstellen dass du das auch so machen machen musst. Also erst in Rapid eine Bewegungsroutine mit den temporären Weltzonen anlegen und dann Rapid mit Station synchronisieren. Hast du das auch so probiert?


    Leider habe ich zur Zeit keine Vollversion von RS zur Hand um es selbst testen zu können.

    Hallo easywork,


    ich habe das System auch schon des Öfteren verbaut und bei Kunden eingerichtet. Da die Greiferwechsel bei den Anwendungen nie zeitkritisch waren habe ich mich auch nicht um den zeitlichen Aspekt gekümmert.
    Dass du die Zeit runter bekommst kann ich mir aber nicht vorstellen, da das nach meiner Meinung nicht am Schalter liegt, sondern an der von Walther verbauten Elektronik, die die eigentliche Ent- und Verriegelung durchführt.

    Wenn du einen anderen Sicherheitsschalter inkl. Betätiger findet, der einen größeren Schaltabstand als der eingesetzte Schmersal-Schalter bietet, kann du evlt. die Störanfälligkeit verbessern.


    Bis dahin musst du das System ideal zueinander ausrichten (du hast die Schablone von Walther?) und die Greifpositionen und die Bewegung beim Koppelvorgang optimal teachen.



    Grüße

    Thilbi

    Vermutlich wird der Wert, der in Temppos.trans.x steht größer sein als die angegebenen -5200.

    Du musst schone einen sehr großen Roboter haben der sich auf diese negative Position bewegen kann.


    Wenn der Wert z. b. -100 ist, dann ist die IF-Bedingung ja erfüllt. Denn, -100 ist größer als -5200.

    Alles sollte ein Programmierer nicht machen können. Die Grundsicherheit der Anlage muss gegeben sein. Sprich, bei geöffneter Schutztür müssen elektrische Antriebe, hydraulische bzw. pneumatische Antriebe prinzipiell abgeschaltet sein.

    Aber ein entsprechend unterwiesenes Fachpersonal, zu dem auch die Programmierer und ggf. Instandhalter gehören, müssen in die Lage gesetzt werden spezielle Antriebe bzw. Bewegungen wieder zuzuschalten. Beispielsweise wird die Druckluft und Aktorenspannung an einem Robotergreifer durch drücken der Zustimmstaste wieder zugeschaltet. Für die Druckluft kann in dem Fall auch ein separates Einschaltventil, das nur diesen einen Roboter versorgt, eingesetzt werden.

    Als zusätzliche Sicherheit, wie in einem vorherigen Post schon erwähnt, kann man Schlüssel verwenden. Wir hatten das auch in England mal gehabt. Im Automatikmodus mit geschlossener Türe muss ein EKS-Chip außen an der Zelle gesteckt sein. Wird die Zelle betreten und man möchte mit dem Roboter in der Zelle etwas fahren bzw. steuern muss genau dieser Chip in der Zelle gesteckt sein. Wenn mehrere Roboter in einem Schutzbereich sind gab es für jeden Roboter eine separate EKS-Leseeinheit. So war sichergestellt dass nur an einem Roboter eine Bewegung stattfand.

    Bei einem schwäbischen Automobilhersteller wird das mit den EKS noch weiter verfeinert. Hier gibt es für die verschiedenen Gruppen (Bediener, Instandhalter, Fremdfirmen usw.) verschiedenste Kodierungen auf den Chips. Somit wird sichergestellt dass nur derjenige der auch unterwiesen ist die entsprechende Funktion ausführen darf, denn nur wenn der richtige Chip gesteckt ist wird auch die Funktionsgruppe aktiviert.

    Hallo,


    ein theoretischer Ansatz wie man es lösen könnte.


    - Die Datei mittels "Open" lesend und schreibend öffnen.

    - In einer While-Schleife bis zum Dateiende "EOF" die Zeilen nacheinander auslesen und gleich wieder schreiben. In der Schleife ein Zähler mitlaufen lassen mit dem zu die einzelnen Zeilen nacheinander auslesen kannst, \Line:=nZeilenzaehler

    - Wenn die Zeile #3 erreicht ist deinen String mit den entsprechenden Daten zusammensetzen und in die Datei schreiben. Mit CDate kannst du das Datum auslesen, Mit CTime die Uhrzeit

    - Nach der While-Schleife dann die Datei wieder schließen und erst dann das Modul mittels "load" wirklich laden.



    Grüße

    Thilbi

    Hallo R47,


    sicher kann man mit dem Fanuc viele Aufgaben so erledigen wie mit den anderen Systemen. Die Frage ist immer wie effektiv man zu dem Ziel gelangt. Karel ist bei Fanuc eine Möglichkeit fehlende Funktionen in den TP-Programmen nachzuprogrammieren. Nur, warumm benötigt man eine zweite Programmiersprache auf dem gleichen System um das zu realisieren ? Dazu auch noch eine kostenpflichtige Software (RoboGuide) um dann den Karelcode zu compilieren und keine Möglichkeit das Karel-Programm bei Fehlern zu debuggen.

    Bei uns ist auch schon vorgekommen dass Kunden es nicht zulassen Karel-Programme zu benutzen, da sie eben nur mit TP auskennen und sich nicht noch mit Karel beschäftigen wollen/können.


    Zu meinem Beispielprogramm.

    Im Prinzip hast du recht. Man arbeitet hier mit Strings und setzt diese zu einen neuen String zusammen. Der Inhalt von dem String ist dann der Programmname von dem Programm welches man aufrufen möchte. Durch die %-Zeichen definiert man das Late-Binding und kann damit jedes beliebige Programm aufrufen. Denn da ist dann nicht mehr der Variblenname, sondern nur deren Inhalt, entscheidend. Bei Fanuc kann man bei dem CALL-Befehl nur ein Programm aufrufen. Sprich wenn man z. B. verschiedene Typen mit mehreren Stationen auf einer Anlage hat macht man das bei ABB mit einer Zeile

    %"Entlade"+stStation+"_Typ"+stTypnr %;

    selbst wenn die Stations- und Typnummer nur als Interger vorliegen reicht eine Zeile, da man den Variablentyp noch direkt darin wandeln kann

    %"Entlade"+NumToStr(nStation,0)+"_Typ"+NumToStr(nTypnr,0) %;


    Bei Fanuc, und auch KUKA, kenn ich bis jetzt nur die Möglichkeit das über verschachtelte Switch-Case zu realisieren. Bin aber für jede Anregung wie man das einfacher gestalten kann offen.

    Ok,


    ein kleines Beispiel. Wir definiferen i. d. R. für jede Station eine Vorposition haben dann die entsprechenden Bewegungsprogramme um zwischen den Vorpositionen beliebig hin- und herfahren zu können.

    Um die Bewegungsprogramm aufzurufen gibt es eine Routine die als Übergabeparameter die Zielposition enthält. Durch das bei ABB mögliche "late-binding" sieht die Routine (vereinfacht, ohne Fehlerbehandlung) so aus.


    PROC MoveTo(

    string stTarget)


    VAR num nFKey;


    stTarget:=StrMap(stTarget,STR_LOWER,STR_UPPER);

    WHILE stTarget="" DO

    Message emNoTarget;

    ENDWHILE

    IF stTarget=stAktPos RETURN ;

    %"mv"+stAktPos+"_"+stTarget %;

    stAktPos:=stTarget;

    ENDPROC


    Bei Fanuc, beispielhaft für vier Vorpositionen und nur der Anfang des Programms:


    JMP LBL[1] ;

    !******************************** ;


    ! ; ;

    !Program: ;

    !M_ROUTER ;

    ! ;

    !Move Robot from ;

    !PrePos to PrePos ;

    !******************************** ;

    LBL[1:Init] ;

    R[112:Dest PrePos]=AR[1] ;

    ;

    !Set User and Tool frame ;

    !UTOOL [1]: Gripper ;

    !UFRAME [1]: World ;

    UFRAME_NUM=1 ;

    UTOOL_NUM=1 ;

    ;

    IF R[113:Curr PrePos]=0,JMP LBL[2] ;

    IF R[113:Curr PrePos]=R[112:Dest PrePos],JMP LBL[99] ;

    ;

    !Check if robot was in manual ;

    IF (F[3:bRobInManual]=OFF),JMP LBL[4] ;

    ;

    !******************************** ;

    LBL[2:get PrePos] ;

    CALL M_GET_PREPOS ;

    IF R[113:Curr PrePos]<>0,JMP LBL[4] ;

    CALL M_MOVE_PREPOS ;

    JMP LBL[2] ;

    ;

    !******************************** ;

    LBL[4] ;

    IF R[112:Dest PrePos]>R[110:Nbr. PrePos],JMP LBL[1410] ;

    IF R[113:Curr PrePos]>R[110:Nbr. PrePos],JMP LBL[1420] ;

    ;

    SELECT R[113:Curr PrePos]=1,JMP LBL[100] ;

    =2,JMP LBL[200] ;

    =3,JMP LBL[300] ;

    =4,JMP LBL[400] ;ELSE,JMP LBL[1410] ;

    ;

    !******************************** ;

    LBL[100: from Home] ;

    R[113:Curr PrePos]=0 ;

    SELECT R[112:Dest PrePos]=1,JMP LBL[99] ;

    =2,JMP CALL Move_1VP_2VP ;

    =3,JMP CALL Move_1VP_3VP ;

    =4,JMP CALL Move_1VP_4VP ;

    ELSE,JMP LBL[1420] ;

    ;

    JMP LBL[99] ;

    ;

    !******************************** ;

    LBL[200: from Maint] ;

    R[113:Curr PrePos]=0 ;

    SELECT R[112:Dest PrePos]=1,Move_2VP_1VP ;

    =2,JMP LBL[99] ;

    =3,Move_2VP_3VP ;

    =4,Move_2VP_4VP ;

    ELSE,JMP LBL[1420] ;

    ;

    JMP LBL[99] ;

    ...

    Hallo,


    da ich alle drei großen Hersteller kenne, frage ich mich wie man auf Fanuc wechseln will.

    Das normale Pick and Place kann der bestimmt so gut wie KUKA. Aber sobald man etwas komplexere Aufgaben zu programmieren hat kommt man relativ schnell an die Grenzen der normalen Programmiersprache.

    Wenn ihr euch nach Alternativen umschauen wollt, würde ich auf ABB wechseln.


    Grüße

    Thilbi

    Privet Privet,


    bei Fanuc gibt es drei Möglichkeiten die vergleichbar mit den Trigger-Befehlen von KUKA sind.

    TB = Time before, also die Zeit bevor ein Punkt erreicht wird

    TA= Time after, entspricht der Zeit nachdem ein Punkt verlassen wurde

    DB = Distance before, also der Abstand bevor ein Punkt erreicht wird



    Grüße

    Thilbi

    Hallo Kollegen,


    ich habe in Roboguide ( V9) ein komplettes System konfiguriert, kommentiert und programmiert. Nun möchte ich das komplett auf die reelle Steuerung bringen (R-30iB Plus, V9.4) kopieren. Dazu habe ich mich mit dem Robot Neighorhood mit der Steuerung verbunden. Programme, Register und Pos-Register gehen so ohne Probleme zu übertragen.


    Wie bekomme ich aber nun z. B. die ganzen UTOOL, UFRAME, User-Alarme, E/A-Kommentare auch so übertragen?

    Kennt ihr einen Weg?



    Danke für die Hilfe

    Thilbi

    Nein, leider nicht. Ich hatte mal vor längerer Zeit mich auch an der Erstellung von Kinematiken versucht. Musste es dann aber, da andere Projekte wieder wichtiger wurden, aufgeben und habe es nicht weiter verfolgt.

    Ja, bei zwei Drive-Modulen muss die Option MulitMove mit aktiviert werden. Müsstest dann noch entscheidenn welche der beiden Varianten du benötigst.

    Ansonsten könnte man es auch evtl. so lösen dass du das Portal als zusammenhängende Kinimatik definierst, was dann dem Manipulator entspricht.

    Die drei Achsen des Positioniers werden dann als externe Achsen, welches das Drive-Modul ansteuern kann, definiert.

    So hättest du nur ein Drive-Modul und benötigst kein zweites. Allerdings wäre dann wohl der Positionierer keine zusammenhängede Kinematik mehr.