Posts by doc_rob

    Ja, habe ein kleines Testprogramm um eine (sanfte) Kollision zu provozieren.

    Hatte das mit dem manuell 0 setzen irgendwie ausgeblendet, mein Fehler!

    Die Funktion zeigt nun das gewohnte Verhalten, also geht hoch von 0 und bleibt am Maximalwert hängen.


    Ich muss nun sicherstellen, dass der Maximalwert bei der Kollision auftritt...ihr hört von mir!

    Danke erstmal!

    Hallo Robomann,


    leider wird die Variable $COLLMON_MAX[] nur verwendet wenn $IMPROVED_COLLMON== TRUE gesetzt ist....was bei dem vorhanden (und recht umfangreichen) Programm nicht der Fall ist :(

    In der Doku für Systemintegratoren scheint $COLLMON_MAX[] auch erst ab KSS 8.5 auf...hast du das in Kombination mit SET_TQ_VALUES{} verwenden können?


    Danke trotzdem für den Input!

    Hallo SJX,


    vielen Dank für deinen Input!

    $IMPROVED_COLLMON ist ohnehin auf FALSE, da sonst SET_TQ_VALUE nicht verwendet werden kann, lt. Doku.

    Leider bleiben dann die Werte von $TORQ_DIFF[] immer unverändert, also fix. Habs gerade ausprobiert mit verschiedenen Geschwindigkeiten, Betriebsarten und Kollisionen.


    Im Logbuch kann man die ausgestiegene Achse schön bestimmen...ich muss die Info nur irgendwie automatisch an die SPS bringen...


    Gruss

    Hallo,


    ich kann nun die Kollisionsmeldung identifizieren (anhand der Meldungsnummer 1131) und Maßnahmen einleiten.

    Allerdings kann ich noch nicht die auslösende Achse bestimmen.


    -> die Funktion MBX_REC speichert leider keinen Meldungstext...kann man Meldungstexte überhaupt auslesen?


    Hat da jemand einen Tipp für mich?

    Hallo,


    habe hier einen KR240 mit KSS 8.5 und einem fremden Roboterprogramm, welches noch den SET_TQ_VALUES Befehl zur Kollisionserkennung nutzt ->> funktioniert.


    Wie kann ich im Nachhinein automatisch herausfinden, welche Achse die Kollisionserkennung ausgelöst hat?

    - Muss ich da auf den Meldungstext der Quittiermeldung zugreifen, oder gibts da was eleganteres?

    - In gefährlichen Bereichen für die Maschine wird eine automatische Quittierung eingesetzt. Kann ich die Meldung auch nach dem Quittieren noch lesen, oder muss ich sicherstellen, dass die Meldung erst gelesen und dann autom. quittiert wird?


    Danke!


    Gruß

    Danke! Genau danach habe ich gesucht :thumbup: Jetzt habe ich dazu nur noch eine Frage und zwar gibt es eine Möglichkeit dieses Backup der Position auch im Hauptprogramm aufzurufen? Oder muss das Lokal im Unterprogramm geschehen in der die Position abgelegt ist?

    Es kommt darauf an wo wie Variable abgespeichert ist, die du ändern willst.

    Wenn du die E6Pos die du im DAT. File des Hauptprogramms deklariert hast beschreiben willst, dann kannst du das im HP und in lokalen UP machen (lokales UP: nach der END Zeile des HP, im selben SRC File!)

    Hast du ein Unterprogramm in einem eigenen, getrennten SRC File erstellt, dann musst du die Variablen die du in beiden Programmen manipulieren willst global deklarieren (z.B. in der config.dat, da gibt es ein eigenes Plätzchen dafür -> User Globals).


    Die Variable und deren Inhalt liegen nicht in einem Programm, sondern im .Dat File (-> Datenliste).

    Ein Dat File ist einem SRC File zugeordnet und alles was im SRC File kreucht und fleucht kann auf dieses dazugehörige Dat File zugreifen.


    ich hoffe das stimmt alles so...alle Angaben ohne Gewähr :)


    lg


    PS: gönn dir doch mal den Programmieren 2 Kurs bei Kuka, der ist wirklich sehr hilfreich!

    PPS: hör auf die Kollegen hier, manipuliere nur Kopien der "Originalpunkte". Denn sobald du dein Programm abbrichst bevor du das Pos_backup wieder zurückgeschrieben hast, fährt der Robi beim nächsten Start woanders hin. Ich mach mir für solche Positionen meist ein eigenes Unterprogramm wo die Punkte der Reiche nach liegen, schön kommentiert. Das UP rufe ich nur auf, wenn ich die Positionen wirklich prüfen oder nachteachen will.

    geht zb. so: du deklarierst dir in deinem .dat File einen "Zwischenspeicher" als E6POS:


    DECL E6POS XPos_backup


    Und schreibst dann im Programm (natürlich bevor du die Position verschiebst!) die XPos drauf


    XPos_backup = XPos


    Gegen Ende deines Entnahmevorgangs (also wenn deine Fächer all neu befüllt werden müssen (bzw. bereits befüllt wurden) schreibst du das backup wieder auf die XPos.


    XPos = XPos_backup


    Hinweis:

    du kannst dein Entnahmefach als Basis vermessen und dann einmal den Weg für Hin und Rückfahrt teachen. Um ins nächste Fach zu fahren verschiebst du dann einfach die Basis (geht 1:1 gleich wie bei den Punkten, nur eben im Base Koordinatensystem das du vermessen hast). So musst du nicht jedes mal mehrere Punkte verschieben, sondern einfach nur die eine Basis.


    Grüße,

    Domi

    Hallo,


    gibt es eine einfache Möglichkeit, eine Neigung in die aktuelle Bewegungsrichtung bei einer Circ- Bewegung zu generieren? (Ähnlich einer Kreiselbewegung z.b)

    Mit einfach meine ich, nicht den "Umweg" über die Orientierung im Hilfspunkt. Gibts da einen Trick den ich übersehen habe?


    lg Dominik

    Danke für die Antworten!

    Es ist mittlerweile eine pneumatisch gesteuerte Z-Nachgiebigkeit geworden.


    SJX, was meinst du mit einer überlagerten Bewegung via Funktionsgenerator? In welcher Doku kann ich dazu was finden?


    Spiral, das haben wir schon. Das Problem ist eher die Bahn des Roboters zu ändern ohne ihn anzuhalten.

    Dann fällt mir leider nichts mehr ein, außer die üblichen Maßnahmen: Firewall, Dateien neu einlesen usw...


    Bitte berichte weiter, ich bin gespannt woran es liegt!

    Läuft die PN Kommunikation mit der SPS problemlos?

    Wird der Scalance wirklich versorgt? Es kann sein, dass dieser für eine externe 24V Versorgung vorgesehen ist, und man eine Brücke am X11 (ich glaube der wars) machen muss.

    Hast du PN laut Doku eingerichtet? Also roboterseitig das virtuelle Netz?

    Dein Netzwerkkabel vom PC hängt direkt am Switch in der Robotersteuerung?