Beiträge von FlashbackXXL

    Hallo zusammen


    Seit Tagen suche ich und finde keine klare Aussage dazu...


    Gibt es eine Möglichkeit beim Fanuc, ein Macro mit Bewegungen (also gesperrter Group1) per Tastendruck auszuführen, wenn sich der Programmzeiger in einem Programm befindet, welches ebenfalls schon die Group 1 gesperrt hat? So eine Art Instruktion zum vorübergehenden Freigeben der Motion Group. Mit der Call Instruktion geht es ja schließlich auch.

    Sobald ich das Macro ausführen möchte kommt immer nur der Fehler "PROG-040 Already locked by other task".

    Ich bin im Handbetrieb und der Roboter steht während ich das Marco ausführen möchte. Sobald ich FTCN - ABORT ALL gedrückt habe funktioniert mein Marco wieder.... das ist aber nicht was ich will...

    Viele Roboter da draußen haben zwar Lastdaten definiert, nicht aber die Armlast, welche laut Doku immer VOR der Lastdatenidentifikation definiert werden sollte.


    Bei der Verwendung von externen TCPs geht die Verwendung von Lastdaten gerne ganz verloren, da sie weiterhin im "Tool" definiert werden müssen und da der Roboter das "Workobject" hält vergessen das die Leute scheinbar gerne...


    Beim Teachen von Bewegungsabläufen immer zuerst überlegen, welche Bahn man fahren möchte und dann direkt die Zone anpassen und zwar so groß wie sinnvoll möglich. Wenn man hinterher erst die Zonen optimiert werden leider allzu oft welche vergessen. Leider sehe ich immer wieder Roboter, welche mit vmax auf z10 Zonen überschleifen obwohl problemlos z100 oder sogar z200 möglich gewesen wäre.... die armen Robis.... :schinder:

    Ich finde die Idee eines solchen Videos übrigens klasse. Ich würde mir wünschen, dass darin z.B. auch die wichtigsten Konsolen-Kommandos aufgeführt werden, wenn die Steuerung mal aus dem Endlos-Boot nicht mehr heraus kommt. Und die "geheimen" Joystick-Kombination(en) ...

    Ich hole den Thread mal aus der Versenkung, da ich leider nicht weiterkomme mit exakt demselben Problem...

    Ich habe mir also das Macro geschrieben, wie von Detlef vorgeschlagen und das funktioniert einzeln ausgeführt super. Aber sobald ich in einem TP Programm mit locked motion group bin und dann das Macro ausführen möchte kommt immer nur der Fehler "PROG-040 Already locked by other task".

    Ich bin im Handbetrieb und der Roboter steht während ich das Marco ausführen möchte. Sobald ich FTCN - ABORT ALL gedrückt habe funktioniert mein Marco wieder.... ist aber irgendwie unbequem, jedesmal nach dem Ausrichten wieder an die selbe Stelle im Ablauf springen zu müssen...


    Gibt es eine Möglichkeit, ohne "abort all" aus einem Programm mit programmierten Bewegungen heraus ein Macro mit Bewegung per SU-Key auszuführen? :zweifel:

    Hallo liebe Freunde der Automation


    Ich habe leider zu meinem konkreten Anliegen weder über die Suchfunktion hier im Forum noch bei Dr. Google was brauchbares gefunden. Zum Thema:


    Ich möchte, dass der Roboter in einer bestimmten Situation nach einer Kollision OHNE Bedienereingriff vollautomatisch weiterarbeitet. Ich habe hier ein System mit RW 6.XX, an dem ich das wunderbar lösen konnte dank "CollisionErrorHandling" und einer auf die Anwendung zugeschnittenen Fehlerbehandlungs-Routine.

    So weit so gut.

    Ich habe hier noch ein zweites System mit RW 5.14, an dem ich gerne die selbe Funktionalität hätte. Jedoch gab es damals diesen Parameter "CollisionErrorHandling" wohl noch nicht.


    Hat irgendjemand so etwas schon mal an einer älteren Steuerung gelöst bekommen? Es geht mir wie gesagt hauptsächlich darum, wie der Prozess nach einer Kollision fortgeführt werden kann, OHNE das ein Mensch am FP irgendwas bestätigen muss.


    Option MultiTasking ist vorhanden.

    Ein Upgrade von RW 5.14 auf 6.XX ist meines Wissens ohne Austausch des Hauptrechners nicht ohne Weiteres möglich.


    PS: Ich bin mir der Gefahren durch ein autom. Weiterarbeiten nach einer Kollision und allem was das mit sich bringt bewusst. Es handelt sich um eine spezielle Anwendung, bei der sich nicht mit 100% Sicherheit Kollisionen vermeiden lassen aber dennoch ohne Bedienereingriff weitergearbeitet werden könnte, da der Grund für die Kollision ebenso autom. behoben werden kann.


    Schon mal Vielen Dank für Euren Input.

    Hallo


    Ich muss mich anschließen. Ich würde gerne mein Thema abschließen, habe aber den Button "Ändern" wie im Video von IrrerPolterer zu sehen ist nicht zur Verfügung.
    https://www.roboterforum.de/ro…chnung-real-werten/14323/


    Und ich kann auch meinen Screenshot der fehlenden Buttons (.jpg / 240kb) nicht über die Funktion "Datei anhängen" anhängen, weil mein Browser (Chrome) immer denkt ich wolle das JPG in Chrome öffnen anstatt es bei "Drop files here" abzulegen.


    Grüße


    Autsch... :schwitz: ...das hat gezwiebelt...


    Zitat vom Wikipedia-Artikel:

    Zitat


    [size=2]Gleitkommazahlen warten besonders für den mathematischen Laien mit einigen Überraschungen auf...... ......so[/size][size=2] erwartet der unbefangene Laie als korrekt gerundetes Ergebnis......[/size]


    Also... ...wenn ich als unbefangener Laie das richtig verstanden habe liegt das Problem bei der Gleitkomma-Arithmetik bei den Rundungsfehlern aufgrund der begrenzten Genauigkeit.
    Was ich dann aber immer noch nicht verstanden habe ist, warum beim Berechnen von
    1796 / 10,0
    oder bei
    179,6 - 180,0
    Rundungsfehler auftreten sollen, bei nur einer Nachkommastelle? :nocheck:


    Wäre weiterhin dankbar, wenn jemand Licht in mein Dunkel bringen würde.

    Hallo geschätzte Roboter-Enthusiasten


    Ich erhalte bei meiner Berechnung von REAL Werten ein (falsches) Ergebnis mit vielen Nachkommastellen, das dem erwarteten (richtigen) Ergebnis sehr nahe kommt aber eben nicht 100% richtig ist. Hier mal der Code:


    Sinn des Ganzen ist, anhand eines von der SPS übergebenen Winkels meinen TCP zu rotieren, und zwar entweder um bis zu +90° oder eben in die andere Richtung.
    :backtotopic:
    Ich erhalte nun in der Variablen "ANGLE" seltsame Ergebnisse wie z.B. -0.399993896


    Vollständiges Beispiel:
    giTcpTorsion zB. = > 1796


    ANGLE = 1796
    1796 / 10 = 179,6
    179,6 - 180.0 = -0,4
    In der REAL Variablen steht aber stattdessen -0.399993896 :nocheck:


    Ebenso charakteristisch für diesen Fehler ist, dass sich die Werte bis auf die neunte Nachkommastelle wiederholen, also bei gleichem Eingangswert das gleiche (falsche) Ergebnis liefern. Weitere Ergebnisse (abhängig vom Wert auf der Schnittstelle) sind z.B.:

    Code
    -0.500000
    -0.100006104
    -0.300003052
    0.300000
    0.600000
    -0.800003052
    -0.600006104
    -0.399993896
    -0.699996948


    Die negativen Ergebnisse liegen also meistens sehr nah an den richtigen, sind aber eben doch nicht immer ganz korrekt. Die positiven Ergebnisse scheinen immer zu passen...


    Das Ganze riecht mir irgendwie nach REAL - INTEGER Konflikt bzw. Rundungsfehler, aber ich verstehe nicht was ich falsch mache...
    Kann mir das bitte mal jemand erklären?

    Guten Abend liebe Roboter-Enthusiasten


    Leider stehe ich grade auf dem Schlauch und bin bei meiner Internet-Recherche nicht fündig geworden:


    --> Wenn ich Multitasking auch im Single-Roboter-System (IRC5) anwenden möchte, muss dann zwingend die MultiMove-Option dazu bestellt werden oder gibt es noch eine andere Option welche mir die Funktion bietet?
    Mir hat mal jemand erzählt es gäbe da eine "kostengünstigere Option" von ABB, welche mir mehrere SemiTasks ermöglicht auch ohne MultiMove.
    Freundlicher Gruß :)


    :goodpost:


    Leider kann ich den "DANKE"-Button nur einmal drücken.
    Das ist exakt wonach ich gesucht habe und es war die ganze Zeit direkt vor meiner Nase. :uglyhammer_2:


    :OLA:


    Micky, :heildir:


    Ist das Thema noch aktuell?
    Ich habe mir einen Pythonscript geschrieben, der *-Punkte mit Dummynamen versieht und die Koordinaten mit Robtarget neu ablegt.
    Hatte sowas in der Art eh schon länger vor.


    Wenn man noch helfen kann, meld dich. :zwink:


    Hallo und JA, dass Thema ist noch immer aktuell, wenn auch nicht mehr an exakt der selben Stelle wie ursprünglich (der User bocmok war so freundlich und hat mir da schon weitergeholfen).


    So ein Tool ist ja generell nützlich und kann u.U. immer mal wieder zum Einsatz kommen (bei mir zumindest...).


    Wenn du bereit bist dein Tool zu teilen sag ich auf jeden Fall schon mal im Voraus :danke:


    Ich schicke dir ne PN mit meiner e-Mail-Adresse.


    Viele Grüße


    Ich meine mich zu erinnern, dass das verschieben kompletter Routinen über Robotstudio möglich war?


    Das ganze Modul verschieben mittels adjustRobtarget geht, ändert bei mir aber leider nur solche Punkte welche auch als Robtaget angelegt sind, nicht aber die mit * geteacht sind.


    Gesendet von meinem SM-G900F mit Tapatalk

    Also nochmal für Langsame...


    Während der Robi mit voller Geschwindigkeit von A nach B fährt wird die Stop-Taste an der Anlage gedrückt was (wenn das gleich wie bei unseren Anlagen funktioniert) bedeutet, dass dem Robi auf einen Schlag die Motoren ausgeschaltet und die Bremsen reingehauen werden so wie wenn einer plötzlich den Schutzkreis aufreißt, der bleibt also sofort stehen und auch seine Programm-Abarbeitung wird schlagartig gestoppt...


    Hab' das ich soweit richtig verstanden?


    Wäre vielleicht eine Event-Routine mit dem Event "RESTART" denkbar? Die sollte dann, wenn das Programm in BA3 wieder gestartet wird auslösen und die berechnete Bahn mit ClearPath löschen um das Anlaufen mit der alten Geschwindigkeit zu unterbinden?


    Also quasi beim event restart


    PROC Eventroutine()


    IF diBA3aktiv Clearpath;


    ENDPROC



    Ist nur so ein Gedanke, ich weiß nicht ob das funktioniert. Vielleicht wär's den Versuch wert.




    EDIT: sorry der erste Post war unvollständig aus Versehen abgesendet worden....




    nur wenn der Roboter auf der Bahn ist, fährt er bis zum nächsten Punkt mit den alten Speeddata,


    ...und das Umschalten von BA1 in BA3 erfolgt während der Roboter sich bewegt ohne vorher auf Grundstellung zu fahren?


    Wenn Dein Kumpel (der Programmierer) Dir helfen will, dann lass ihn lieber was machen, was alle "*"-Punkte in Variablen umwandelt. Er sollte sich mit Regular Expressions gut auskennen. Im Prinzip geht es darum, diesen

    Code
    (\[\[.*\],\[.*\],\[.*\],\[.*\]\])

    regulären Ausdruck zu finden, am Auftreten mit einem fortlaufend erzeugten Namen zu ersetzen und dann noch eine Liste zu erzeugen, in der jener fortlaufend erzeugte Name in der Form:

    Code
    TASK PERS robtarget (name) := \1;

    rausgeschrieben wird. (Wobei \1 der Platzhalter für die oben gefundene Klammer sei).
    Notfalls lass ihn ein Notepad++-Script schreiben dafür, das wird Dir eher helfen als die einmalige Verschiebung in einer Richtung.


    Hallo Michael


    Lass mich Dir zunächst für deine ausführlichen Ratschläge und Gedankenansätze danken.


    Ich habe mittlerweile nach deinem Vorbild aus dem letzten Post eine Event-Routine mit dem -shelf "STEP" verknüpft und mir ein virtuelles Signal "voShift" auf Taste 3 am FP gelegt.



    Die Idee dahinter war, jeden Punkt einmal im Einzelschritt verschoben anzufahren, dann einen weiteren Step zu machen und wenn die Meldung "Stop, ...." kommt den Zustimmtaster loszulassen, den noch markierten vorangegangenen Punkt im nicht mehr verschobenen Koordinatensystem zu überspeichern und den nächsten Punkt wieder im verschobenen Koordinatensystem anzufahren usw. usw.
    ...und was soll ich sagen... ...das funktioniert super.... ...für genau einen Punkt, und sobald ich auf "Position korrigieren" drücke verliere ich ohne vorherige Warnung den PZ und muss mich wieder von vorne durch das Programm wurschteln. :wallbash: :wallbash: :wallbash:


    Ich hätte noch ne Idee wie ich das Problem mit dem Zusammenspiel von Event-Routine und SemiTask lösen könnte, aber leider hat mein Chef bei diesem Robi die Option Hintergrundtask "vergessen" mitzubestellen (obwohl wir Programmierer bei uns intern in dem Punkt einig sind und darauf bestanden haben dass diese Option generell mitbestellt werden muss). Naja, er hat entschieden das es jetzt auch einmal so gehen muss.



    Zu Deinem aktuellen Post:


    Ich habe schon die gleiche Überlegung gehabt (also ob ich nicht besser mal noch alle Teach-Punkte als Variablen anlege). Ob ich das bei dieser Anlage noch umsetze weiß ich noch nicht, aber für die Zukunft stelle ich fest:


    Grundsätzlich habe ich beim ABB immer die Freiheit genossen Teachpunkte nicht deklarieren zu müssen. Ich habe mich dagegen gewehrt RobTargets pauschal anzulegen und fortlaufend zu benennen, habe dies eigentlich nur dann getan wenn ich einen sinnvollen Nutzen darin gesehen habe, z.B. wenn ich mit Offset-Verschiebungen arbeiten wollte. Ich bin nach dieser Geschichte ehrlich gesagt geläutert. Wenn ich dran denke wie einfach und schnell und auf vielfältige Weise ich mir hätte helfen können wenn ich mit deklarierten RobTargets gearbeitet hätte könnt ich gut und gerne mal ein bisschen :wallbash:


    Viele Grüße