Beiträge von derwestermann

    Moin!


    Ich habe das Vergnügen, einen ABB mit S4 und einen Interbusteilnehmer zusammenknoten zu sollen. Der Robi stand bei BMW und soll jetzt Laserlöten. Die Drahtzuführung ist von KUKA und kann nur mittels LWL-Interbus mit dem ABB verbunden werden, wie das ja auch mal der Fall war. Dümmlicherdings weiß ich von ABB so viel wie 'ne Kuh vom fliegen, jedoch hat uns der Roboterprogrammierer irgendwie versetzt, im Stich gelassen, oder so. Wir haben einfach mal alle Teilnehmer aus der EIO.cfg gelöscht, die nicht mehr da sind und von der KUKA-Box die IBS-Adresse auf 2.0 geändert. 1.0 ist der Mediaconverter. Aber es funzt immer noch nicht. Ich kenn das von anderen IBS-Mastern, daß eine SVC-Datei mittels des CMD-Tools geschrieben wird, die dann anderweitig gelesen wird; so wie z.B. bei einem KUKA-Rob.


    Hat jemand noch einen heissen Tip?


    Anbei die EIO.cfg, umbenannt in EIO.txt.

    Es handelt sich um ein paar KUKA's.
    Aber ich dachte das wäre was für Excel, Trafo.exe oder so und somit nicht markenspezifisch.


    Naja, das Problem ist wie in der Taskeröffnung geschrieben. Daher nutzt mir der geometrische Operator irgendwie nix.

    Hm.....das mit dem geometrischen Operator habe ich jetzt nicht begriffen.
    Aber ich lese diesbezüglich noch ein wenig.


    Die Tools stellen hier kein Problem dar, die sind vermessen,
    oder ich bin so vermessen zu behaupten sie wären vermessen, weil jemand so vermessen war mich so zu instruieren.

    Moin!


    Wenn ich ein Programm habe, welches ohne jegliche Änderung in einer Parallelanlage laufen soll,
    die aber nicht 100%ig gleich zum Werkstück steht,
    dann müßte ich doch die Baseverschiebung aus der Koordinatenverschiebung dreier Raumpunkte ermitteln können, oder?


    Bleistift: Ich habe drei Punkte mit den Koordinaten
    X 10, Y 10 , Z 10; X 20, Y 20 , Z 20; X 30, Y 30 , Z 30.


    Fahre ich die selben Punkte an meinem Werkstück an, so haben diese Punkte die Koordinaten:
    X 10, Y 10 , Z 8; X 21, Y 20 , Z 18; X 31, Y 30 , Z 31.


    Daraus muß ich doch die Baseverschiebung herleiten können, jemand eine Idee?


    Ersma

    Moin, Wolfram!
    Es geht zwar um KUKAs, aber die Berechnung der Kugelposition im Raum, soll völlig unabhängig in Excel geschehen.
    Es sei denn, man kann die Position der Werkzeugkugeln der Safe-Konfiguration irgendwo herbekommen. Das wäre latürnich auch ganz klasse.

    Moin!


    Folgendes Problem: Ich möchte mir die Lage einer Kugel, welche im Bezug zum Roboterflansch im Raum steht anzeigen.
    Ich habe die Lage des Tool-TCP zum Base, die Lage des Tool zum Flansch und die Lage der Kugel zum Flansch.
    Wie bekomme ich die Lage der Kugel zur Base?

    javascript:replaceText(' :hilfe:', document.forms.postmodify.message);
    Dieses Bild wird in 2 Sekunden mit originaler Qualitaet neu geladen


    Weia !


    Was kann denn da schief gelaufen sein, wenn ich keine Bewegungssätze mehr in einer KRC32 anlegen kann?
    Es erscheint die Fehlermeldung H2047: Objekt nicht vorhanden.


    Ersma

    Moin !


    Nach einer Interrupt-Suchroutine, bei der ein Palettenstapel erkannt wird und die oben liegende solche Aufgenommen wird, will ich in Z relativ nach oben fahren. Ich habe den Befehl LIN_REL {Z 300} eingefügt. Darüber meckert die KRC 32 auch nicht. Nur wenn ich dieser Befehl aufgerufen wird, kommt "Anweisung unzulässig"....
    Allerdings haut mir immer ein Bauteilkontrollinterrupt dazwischen. Einmal wurde die Palette ein Stück ausgehoben, dann kam besagter Bauteilkontrollinterrupt (BKI) und dann kommt die Fehlermeldung. Ich kann wohl den BKI ausschalten, aber wenn dann z.B. einer in den Sicherheitslichtvorhang latscht, habe ich vermutlich das gleiche Problem.
    Was kann ich tun?

    Da benötigst Du den Speicherabzug des Roboters. Es sei denn das Programm ist noch auf der Steuerung. Dann benötigst Du das APS-Programm, um Dateien zu Laden und zu Sichern und/oder Speicherabzüge zu machen.
    Hast Du keinen Speicherabzug und die Steuerung ist leer, versuche diesen vom Händler oder dem vorigen Nutzer zu bekommen. Ansonsten kann Dir die KUKA-Hotline tatsächlich helfen. Für die Neugenerierung von Maschinendaten wollen die Herren jedoch Geld sehen (ich stand neulich vor dem selben Problem, bekam aber vom Händler einen Speicherabzug).

    javascript:replaceText(' :genau:', document.postmodify.message);
    genau


    >wenn keiner was dazu weiß, gibts keinen Grund was zu schreiben...
    >Sorry.


    Das meinte ich ja. Meine Idee ist wohl eher unüblich. Nicht, daß da keiner was zu weiß, oder gar, daß keiner was schreibt. Das ist ja auch nicht der Fall.


    Trotz allem: Tak for hjaelp, würde der Däne sagen.

    Welche Datei soll ich mit was vergleichen? Und ich habe hier nur einen Roboter.....
    Diese Antwort ist komplett unbrauchbar Spiral, arbeitest Du bei 'ner Hotline???


    Vergesst den Task. Ich habe eine KlöMö EASY eingebaut, 2 Stunden später lief die Fördertechnik.


    Ersma


    P.S.: 69 mal gelesen und keine brauchbare Antwort, scheint doch eher unüblich zu sein.

    Moin !


    Sorry, ich glaube ich werde langsam penetrant, aber ich soll, kann, darf, muß, oder so ein wenig Fördertechnik an einem KRC32 steuern. Das kann doch eigentlich nicht so schwer sein, aber ich bekomme die SPS.SUB nicht ans laufen.
    Ich schicke auch gern mal den Speicherabzug, dekodiert versteht sich.


    Der Task unter dem ich schon mal angefragt habe: .SUB-Datei im KRC32


    Ersma

    javascript:replaceText(' :meld:', document.postmodify.message);
    meld


    By the way: Also der Roboter reagierte gar nicht. Der Suchlauf wurde begonnen und am LIN-Punkt beendet. Würde da ein Palettenstapel gelegen haben, täte der Rob versuchen diesen zu zerdrücken. Der Interrupt wurde schlicht nicht ausgelöst. Jetzt findet er die oberste Palette.


    Ersma

    Moin !


    Langsam kriege ich die Krise mit diesem sch****-Roboter.
    Was mache ich falsch? Der Roboter soll Suchläufe durchführen, stoppen, dann die Palette aufnehmen, oder den Deckel ablegen. Das tut aber nicht. Anbei das Programm.


    Ersma


    Programm:
    ____________________________________________________
    INTERRUPT DECL 10 WHEN NOT E_0B1 DO GEFUNDEN ( )
    INTERRUPT DECL 11 WHEN NOT E_0B2 DO GEFUNDEN ( )
    INTERRUPT DECL 12 WHEN E_0B1 DO VERLOREN ( )



    PTP HOME ; Homeposition anfahren



    LOOP
    ;----------------------
    ;- Hauptprogramm- -
    ;- schleife -
    ;----------------------



    ;----------------------
    ;- Abfrage ob Leer- -
    ;- palette auf Deckel--
    ;- stapelposition und -
    ;- nicht voll beladen -
    ;----------------------
    IF E_2B1 AND (STAPEL<40) THEN
    ;---------------------------
    ;- Deckelabholprogramm -
    ;---------------------------


    WAIT FOR E_0B1 AND E_0B2
    WAIT FOR E_SIG_DECKEL


    PTP P001 C_PTP ;Vorposition nach Home
    PTP P002 C_PTP ;Vorposition vor Deckel holen
    LIN P_DECKEL_HOL C_DIS ;Deckelabholposition


    WAIT FOR NOT E_0B2
    SAUG_AN ( ) ;Deckel aufnehmen
    STAPEL=STAPEL+1


    LIN P003 C_DIS ;Vorposition nach Deckel holen
    PTP P004 C_PTP ;Vorposition vor Deckelablage
    PTP P_START_ABL C_PTP ;Startposition Suchlauf Deckelstapel
    SUCHE_DECKEL ( )
    SAUG_AUS ( ) ;Deckel ablegen


    PTP HOME ; Homeposition anfahren


    ENDIF


    ;----------------------
    ;- Abfrage ob Leer- -
    ;- palette auf Deckel--
    ;- stapelposition und -
    ;- nicht voll beladen -
    ;----------------------
    IF NOT E_2B1 AND E_1B1 AND (STAPEL>=40) THEN
    ;---------------------------
    ;- Leerpalettenholprogramm
    ;---------------------------


    WAIT FOR E_0B1 AND E_0B2


    PTP P101 C_PTP
    PTP P102 C_PTP
    PTP P103 C_PTP
    SUCHE_PALETT ( )
    SAUG_AN ( ) ;Leerpal. aufnehmen


    PTP P104 C_PTP
    SAUG_AUS ( ) ;Leerpal. abgeben


    PTP HOME ; Homeposition anfahren


    ENDIF


    ENDLOOP
    END


    ;---------------------------
    ;- Allgemeine Unterprogr -
    ;---------------------------


    ;----------------------------
    ;- Suchen Deckelstapel -
    ;----------------------------
    DEF SUCHE_DECKEL ( )
    INTERRUPT ON 11 ;Suchinterrupt EIN
    LIN P_END_ABLAGE C_DIS ;Endposition Suchlauf Deckelstapel
    $ADVANCE=0
    INTERRUPT OFF 11 ;SUCHINTERRUPT AUS


    PTP HOME ; Homeposition anfahren
    $ADVANCE=3
    END


    ;----------------------------
    ;- Suchen Leerpalette -
    ;----------------------------
    DEF SUCHE_PALETT ( )
    INTERRUPT ON 10 ;Suchinterrupt EIN
    LIN P_AUFNAHME C_DIS ;Endposition Suchlauf Leerpaletten
    $ADVANCE=0
    INTERRUPT OFF 10 ;SUCHINTERRUPT AUS


    PTP HOME ; Homeposition anfahren
    $ADVANCE=3
    END


    ;----------------------------
    ;- Suchen Deckel/Leer- -
    ;- palette beenden -
    ;----------------------------
    DEF GEFUNDEN ( )
    INTERRUPT OFF 10 ;SUCHINTERRUPT DECKEL AUS
    INTERRUPT OFF 11 ;SUCHINTERRUPT LEERPAL AUS
    $ADVANCE=0
    BRAKE
    RESUME
    END


    ;-------------------------------
    ;- Stoerung Stueck verloren -
    ;-------------------------------
    DEF VERLOREN ( )
    INTERRUPT OFF 12 ;Teil-verloren-INTERRUPT AUS
    $ADVANCE=0
    BRAKE
    HALT
    RESUME
    END



    ;-------------------------------
    ;- Palettensauger einschalten -
    ;-------------------------------
    DEF SAUG_AN ( )
    ;Ventil 1 und 2 ansteuern
    A_SAUG1_EIN=TRUE
    A_SAUG2_EIN=TRUE
    WAIT SEC 0.8
    INTERRUPT ON 12 ;Teil-verloren-INTERRUPT EIN
    END


    ;-------------------------------
    ;- Palettensauger ausschalten -
    ;-------------------------------
    DEF SAUG_AUS ( )
    INTERRUPT OFF 12 ;Teil verloren INTERRUPT AUS
    ;Ventil 1 und 2 ansteuern
    A_SAUG1_EIN=FALSE
    A_SAUG2_EIN=FALSE
    WAIT SEC 0.5
    END

    Ich täte dies so angehen:


    STRUC DATSATZ DATE Datum, TIME Uhrzeit


    DECL AUTOOLSATZ DATSATZ[128]
    DECL INT Zaehler


    Dann im Programm einfügen
    ...
    PTP Check_TCP Vel= 33 % PDAT1 Tool[0] Base[0]
    PTP P3 CONT Vel= 100 % PDAT Tool[1]:Brenner IR2 Base[0]
    PTP P4 CONT Vel= 100 % PDAT Tool[1]:Brenner IR2 Base[0]
    PULSE 60 'R2 Autotool ist fertig' State= TRUE CONT Time= 0.5 sec


    Zaehler=Zaehler+1
    AUTOOLSATZ[Zaehler].Datum=$DATE
    AUTOOLSATZ[Zaehler].Uhrzeit=$TIME


    PTP HOME Vel= 100 % DEFAULT
    END
    .....
    So in etwa. Ich kann gerade nicht prüfen ob der Aufruf AUTOOLSATZ.Datum[Zaehler] oder wie oben heißen muß. Wenn's ganz dumm läuft, habe ich noch irgendwo einen Formalfehler, aber im Prinzip sollte das so gehen.


    Ersma