Beiträge von zteve

    Hallo Spamkiller


    Um gespeicherte Punkte in einem Modul während der Vermessung anfahren zu können:
    Zuerst das Vermessungsfenster öffnen (geht ja nur bei abgewähltem Modul) und wenn der Dialog dazu auffordert den ersten Punkt zu bestätigen, ins Hauptfenster wechseln und Dein vorher erstelltes Modul mit den abgespeicherten Positionen anwählen.


    Jetzt kannst Du beliebig oft das Fenster wechseln, verfahren, korrigieren - und auch teachen!


    Man muss nur darauf achten, daß das Vermessungsfenster geöffnet bleibt bis die Prozedur abgeschlossen ist - sonst muss man natürlich wieder von vorn beginnen, mit Modul abwählen.


    Ganz wichtig!
    Das aktuelle Tool und die aktuelle Base müssen während der Messung (beim Bestätigen) Null sein, sonst stimmen die Koordinaten, die für die Berechnung verwendet werden nicht.


    Deshalb am besten alle Punkte im Modul mit Tool und Base Null teachen.


    Zusatzinformation: Bei einer Vermessung mit einem Referenzwerkzeug z.B.: bei 3-Punkt-Base-Vermessung, muss das aktuelle Tool das Referenzwerkzeug sein (die Base wieder Null).


    Gruß Stefan

    Da fehlt doch glatt was :biggrins:


    Der "Switch-Befehl" ist bei mehreren Abschnitten nötig. Müsste dann lauten:


    LIN P1
    A20 (ARC_ON, AS1, MDEFAULT, 5)
    A20(ARC_SWIP,ADEFAULT,MW1,5)
    LIN P2 C_DIS
    A20 (ARC_OFF_V,ADEFAULT,ME1,5)
    LIN P3
    A20 (ARC_OFF)


    Die Befehle zwischen den Punkten bedeuten keine Bewegungs-Unterbrechung, sie sind so in der Syntax nötig um ArcTech mit seinen Eigenschaften einzusetzen.
    Grundsätzlich ist das Technologiepaket ziemlich umfangreich - mit Simulation, Fehlerbehandlung, Pendeln, Endkrater Zündwiederholung und und und. Deshalb wirst du keinen simplen Schalter für EIN vor Nahtanfang und AUS nach Endposition finden.
    Wenn du das Paket verwenden musst/willst, wirst dich wohl oder übel an die Strukturen halten müssen.
    Ich kenne zumindest keine Vereinfachungen.


    Gruß
    Stefan


    Nein - siehe Beispielprogramme
    src:


    LIN P1
    A20 (ARC_ON, AS1, MDEFAULT, 5)
    LIN P2
    A20 (ARC_OFF_V,ADEFAULT,ME1,5)
    LIN P3
    A20 (ARC_OFF)



    warum geb ich in den decl von AS1 bzw ME1 nochmal programmnummern an, wenn ich die schon beim aufruf von A20 als letzten paramter mit übergebe?


    Vermutlich Reste älterer Versionen. Die Programmnummer in der Strukturvariablen kannst du ignorieren und konstant lassen.



    was bewirkt dabei das A bzw MDEFAULT?


    Nichts - Einfach als Konstante so stehen lassen


    Gruß
    Stefan

    Hallo SpeedFreak
    wenn du das Technologiepaket ArcTechDigital meinst...
    Da muss immer nur die Routine A20() aufgerufen werden - mit halt passenden Übergabeparametern


    EXT A20 (INT :IN,WELD_ST :IN,WELD_FI :IN,INT :IN )


    1. Parameter:


    - Schweißen starten: ARC_ON
    - Schweißbedingungen wechseln: ARC_SWIP
    - Schweißen beenden Vorlauf: ARC_OFF_V
    - Schweißen beenden: ARC_OFF
    Würde ich so verwenden - ist dann eher nachvollziehbar
    die Integer-Werte sind in der Config.dat festgelegt


    2. und 3. Parameter:
    Zwei ähnliche Strukturvariablen für Start bzw. Ende Schweißen mit Schweißprogrammnummer, Schweißgeschwindigkeit, Startverzögerung, Endkraterzeit und Pendel-Parametern (Pendel-Figur oder Aus, Amplitudenlänge, -höhe, Brennerwinkel)


    STRUC WELD_ST INT PRG_NO,REAL VELOCITY,START_TIME,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,END_TIME
    STRUC WELD_FI INT PRG_NO,REAL VELOCITY,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,END_TIME


    Hier würde ich mit meiner eigenen Default-Variablen arbeiten und nur die nötigen Paramter vor der naht überschreiben



    4. Parameter:
    Eigentliche Schweißprogrammnummer - die Nummer in der Strukturvariablen wird nicht gelesen!


    Weglassen kann man nichts, die Variablen sollten alle initialisiert sein - welche Werte sinnvoll sind, z.B.: mit oder ohne Pendeln ergibt sich aus der Schweißaufgabe


    Hab dir Beispiel-Programme mit Inline-Formularen bei verschiedenen Anwendungsfällen angehängt, da kannst du erkennen wann und wie A20() aufgerufen wird.


    Gruß
    Stefan


    Nach der Kalibrierung muss am KCP händisch eine Auswahl getroffen werden, ob der neue TCP übernommen werden soll.


    Sorry, das geht auch anders.
    Martin hat mir gerade eine Doku geschickt, die ich nicht kannte.
    Dort wird erklärt wie man den ganzen Ablauf auch von extern handeln kann
    Danke an Martin


    Stefan

    Eingebunden wird die vermessung als Unterprogrammaufruf.
    Die Überprüfung dauert so ca. 30 s, die Kalibrierung bei Toleranzüberschreitung ungefähr 3-5 Minuten, je nach Einstellungen.
    Nach der Kalibrierung muss am KCP händisch eine Auswahl getroffen werden, ob der neue TCP übernommen werden soll.


    Stefan

    Hallo zusammen


    weiß jemand näheres über diese Funktion?


    Code
    BOOL GETSYSSTATE (CHAR CMD[64]:IN, INT IPAR:OUT, REAL RPAR:OUT) ;Funktion gibt den Status des Systems zurück


    Was für Angaben brauch die Funktion und welche Rückgabewerte gibt es?


    Stefan

    Einen Vorteil hat deine bisherige Methode:
    Man kann eine feste Grenze überwachen.


    Bei der neuen Kollisionsüberwachung werden die Stromwerte bei jedem Durchlauf neu festgelegt (Nur die zulässige Abweichung bleibt konstant und ist einstellbar)
    Wenns dumm läuft und die Stromwerte sind mal sehr niedrig, kann's beim nächsten Durchlauf passieren, daß die Überwachung zu schnell reagiert.
    Sind sie mal sehr hoch und knapp unterhalb der Grenze, liegt die Grenze beim nächsten Mal höher. :shock:


    So richtig sicher, daß man da den idealen Überwachungswert hat, kann man sich nie sein.


    Es fehlt meiner Meinung nach eine Möglichkeit die Überwachungswerte festzusetzen, wenn sie sich bewährt haben.


    Die schwierige Einstellung könnte eben dann nur zur folge haben, dass wir zu früh umdrehen, oder eben zu spät, aber nicht, dass es gar nicht mehr geht - oder?


    :genau:



    Oder kann es sein, wenn die Belastung zu rasch auftritt, dass der Robi dann auch auf Störung geht?


    Störung gibts durch die Überwachung im Normalfall nicht - es wird einfach die tm_useraction ausgeführt. wenn da nix drin steht passiert auch nix.



    Mein Kollege sagt jetzt eben, dass es auf der Baustelle genau einmal geht und dann nicht mehr.


    Anmaßende Frage: Setzt ihr euren Interruptmerker zurück?


    Hilft nichts - du brauchst mehr Infos vom Kollegen :aufsmaul:


    Gruß, Stefan

    Hallo,


    nach meiner Erfahrung ist die Kollisionsüberwachung mit Grundeinstellungen zu empfindlich.


    Die Belastungen werden bei jedem Durchlauf neu ermittelt und die alten Werte überschrieben, das ganze ist also nie konstant. Dabei spielen die Geschwindigkeit, die Motortemperatur und äußere variable Faktoren, z.B. bei Handling rein. Dadurch gibt es nach meinen Erfahrungen in der Grundeinstellung immer wieder "sinnlose" meistens Stoßmoment-Überschreitungen.


    Die Empfindlichkeit kann man über den Offset pro Bewegungssatz einzeln einstellen, aber auch für das ganze Sytem - über Optimierungsparameter in der tm_bib.dat.
    Dort kann man die Empfindlichkeit, nach Änderungen am Programm-Override, bei Änderung der Motortemperatur und einen Faktor für die Handachsen-Stoßmomentüberwachung optimieren.


    Hab das ganze mal zusammengefasst (s. Anhang).


    Bin aktuell noch am optimieren - wenns klappen sollte werde ich die Werte dann posten - kann aber dauern.


    Sonst hatte ich noch Probleme mit Fehler "1422", weil eine Kollisions-Variable (.ID) nicht initialisiert war - leider zu selten um die Ursache festzustellen.


    Und obwohl sie laut Doku in der Anfahrphase nicht aktiv sein soll, kommt es immer wieder vor, daß die Überwachung beim Losfahren anschlägt. Die Gründe weiß ich noch nicht, vermute aber mal hat was mit Warte-Befehlen am Anfang vom Programm zu tun, wenn die Bremsen schon geöffnet sind.


    Um den Programmcode der Kollisionsüberwachung zu verstehen fehlt mir noch ein Puzzleteil:


    Kann jemand die Funktion "GetSysState" genau erklären? :hilfe: Mögliche Über- und Rückgabewerte etc.


    Gruß, Stefan

    Hallo iRobot


    ich würde ausprobieren, diese Initialisierung - wenn möglich - nicht zwischen den beiden zu überschleifenden Punkten, sondern früher zu machen.


    zwpu_vm = ablage_pos[1]
    zwpu_vm.z = ablage_pos[1].z + si_ab_vm


    Und versuchs mit einem CONTINUE vor:
    IF($ext_start == FALSE) THEN


    Gruss Stefan

    Hallo maddin


    auf der BOF lassen sich Ordner erstellen, indem auf der LINKEN Fensterhälfte des Navigators der Ordner markiert wird, in dem der neue Ordner eingefügt werden soll. Dann im Menü: DATEI - NEU
    Im Gegensatz dazu: liegt der Fokus auf der rechten Navigatorhälfte wird über dasselbe Menü eine Datei bzw. ein Modul erstellt.


    Um die gewünschten Dateien in den neuen Ordner zu bringen, muß man sie ausschneiden und einfügen.


    Gruß
    Stefan

    Hallo Martin


    zum geänderten Softwarestand kann ich nichts beitragen.
    Aber zu "Hochlauf" mit "asynchron geschalteter externer Achse" fällt mir was ein.
    Nach Warmstart in Ext bei asynchron geschalteter Achse läßt sich diese nicht mehr "automatisch" ansprechen.
    Die genaue Fehlermeldung weiß ich nicht mehr. Ursache unbekannt. Lösung war, in der Grundstellung dem Roboter die Achse synchron zu schalten. Dann gibts keinen Mecker nach Ausschalten.
    Das war allerdings Softwarestand V5.2.20.


    Sind Eure Hochlauf-Probleme ähnlich?
    Bin sehr an der Thematik interessiert, wir erwarten für nächste Woche eine Neulieferung mit Positionierer.
    Wäre klasse, wenn Du uns auf dem Laufenden halten könntest. :blumen:


    Gruß Stefan

    Probiers mal damit


    Roland Keller
    "Positionen umbenennen" über Menue bei einer neu angelegten Datei funktioniert scheint's erst nach "Speichern unter" der jeweiligen Datei - zumindest geht das Positionenselektieren bei einer neuen ungespeicherten Datei bei mir auch net.
    und gerade gemerkt: Positionen deren Koordinaten in der DAT-File nicht deklariert sind (DECL E6POS ...) können im Umbenennen-Menue nicht markiert werden.


    Matu
    Ist mir noch gar nicht aufgefallen - ich glaub nicht, daß das ein Feature ist, weil sich bei Unachtsamkeit der ursprüngliche, programmierte Wert ändert.


    Wer das anders haben will und nicht auf die neuste Version warten möchte kann folgende Zeilen in der "10CMove.kfd" auskommentieren:


    SHOWVAR (FULLPATH[] "P%ParamListPdat .VEL", PARAM PVEL)
    SHOWVAR (FULLPATH[] "L%ParamListLdat .VEL", PARAM LVEL)


    Dann wird bei unterschiedlichen Vel-Werten die PDAT-Variable dem "BAS-Befehl" angepaßt


    Gruß Stefan