Posts by IrrerPolterer

    Warum stört dich denn das rückzugsprogramm?

    Wenn man es gut gestaltet kann man „immer“ sicher nach Hause fahren…

    Solch ein Rückzugsprogramm möchte ich mal sehen. "Immer" geht einfach nicht. Es gibt Situationen, da wird der Roboter von Hand irgendwo hingefahren, wo man man ihn schon im Handbetrieb nur mühselig wieder weg bekommt. Da habe ich schon echt geile Situationen gesehen. Kommt auf jeden fall auch auf die Komplexität der Anlage an. Und heute will ja jeder 'ne eierlegende Wollmichsau.


    Aber klar, kann man es so optimal wie möglich gestalten.

    Würde ich nur das Signal $near_posret benutzen, könnte ich den Start verhindern, aber nicht starten, wenn zurückgesetzt wurde.

    Du könntest aber im Programm einen Interrupt auslösen, der ein automatischen Programmreset erzwingt und dann eben eine langsame Rückzugstrategie auslösen.


    Seit dem ich die Funktion von Hermann geklaut habe, mache ich das bei allen Robis so.

    Hermanns total geiler Scheiß für Rückzugsanforderungsüberwachnung

    Weisst du zufällig wie das Trainingsprogramm heißt?

    In denen die ich gefunden habe kommt kein Würfel nach.

    Du kannst die stattdessen einfach mal Komponenten mit Fördertechnik ansehen. Bin mir jetzt nicht sicher wo die waren. Bei Visual Components gab's mal recht gute Trainingsvideos zu solchen Themen (ob's die noch gibt weiß ich nicht). Leider habe ich mit der Simulation seit geraumer Zeit nichts mehr zu tun und kann nichts nachsehen.

    Hallo,

    wir haben hier eine defekte X94 Buchse an einem unserer KUKA. Ersatzteil haben wir bekommen, aber wie kommt man da ran. Muss man dazu die Ventilplatte lösen? Bei Kuka Xpert habe ich keine Anleitung gefunden. Und welches Crimp-Werkzeug wird hier benötigt?


    Buchse mit der 3

    Warum schreibst du $IN[90] zuerst in ein CYCFLAG? Aber auch egal.

    Kann es sein, dass wenn du den Interrupt einschaltest die Bedingung bereits erfüllt ist? Sprich $CYCFLAG[10] ist schon TRUE? Dann würde der Interrupt nicht auslösen.


    Sollte also so aussehen:

    Code
    UP1()
        $CYCLEFLAG[10] = $IN[90] ; Fahrfreigabe
        INTERRUPT DECL 20 WHEN NOT CYCFLAG[10] DO Stop()
        WAIT FOR NOT $CYCFLAG[10] ;Warten bis Bedingung nicht erfüllt
        INTERRUPT ON 20

    Ist $IN[90] die Fahrfreigabe der AutExt-Schnittstelle?

    So genau weiß ich das nicht mehr, da ich es später anders gelöst hatte.

    Das Array kannst du IMO einfach in dem gleichen UP deklarieren, in dem du es auch liest. Ich meine mich zu erinnern, es dann initialisiert zu haben.

    Zum Beispiel:

    Code
    FRAME fPos[8]
    INT Counter
    FOR Counter=1 to 8
    fPos[Counter]=$NULLFRAME
    
    ENDFOR

    Aber ganz sicher bin ich mir leider nicht. Wie gesagt, habe es später anders gelöst. Sorry.

    ich glaube ich hab's wieder: ^^


    Code
    SET_TORQUE_LIMITS(1, {monitor #on})
    SET_TORQUE_LIMITS(1, {upper 10001})
    SET_TORQUE_LIMITS(1, {lower -10001})
    SET_TORQUE_LIMITS(1, { lower -1, upper 1, monitor #off})

    muss ich nur noch testen....

    Hallo Freaks,


    ich habe hier die KSS 8.6 mit einem KR 30/3. Früher bei der KRC2 (und ich meine auch bei KRC4 mit KSS8.2) konnte ich mit folgendem Code die Achse 1 weichschalten:


    Code
    $torque_axis='B00000001'
    $TORQ_VEL[1] = 130
    $curr_red[1,1]=0
    $curr_red[1,2]=0
    PTP_REL {A1 0}

    Die KSS 8.6 scheint diese Befehle / Variablen nicht mehr zu kennen. Wie macht man das jetzt - ohne kartesisches Weichschalten per Vector Move Option?

    Kleine Nachtrag:


    Habe hier gerade zu Testwecken ein Frame-Array mit 256 Frames übetragen.

    Man darf nicht vergessen, in der XML-Date die Größe des Puffers zu Parametrieren:


    Code
            <INTERNAL>
                ...
                <BUFFERING Mode="FIFO" Limit="256"/> ;oder noch mehr...max 512
                <BUFFSIZE Limit="65534"/>
                 ...
            </INTERNAL>

    Ja - saugeil! :dance:

    Das hat hervorragend geklappt. Nachdem ich Trottel eben nochmal mit deinem XML-String verglichen habe , ist mir aufgefallen, dass ich nur einen simplen Copy/Paste-Fehler hatte.


    Auf die simple Deklaration in der XML...

    Also, die Tatsache das es ein Array ist einfach Ignorieren.

    ...wäre ich glaube ich niemals gekommen.


    Vielen Dank für deine kompetente Hilfe! :supi:

    Danke für deine Antwort,


    aber in der Doku steht, dass die Funktion EKI_GetFrameArray() eine Array von Frames lesen kann.


    Unter 6.2 Funktionen für den Datenaustausch

    EKI_STATUS = EKI_GetFrameArray(CHAR[], CHAR[], FRAME[])


    Sowie auch Arrays von Integer, Bool, etc. möglich sein sollen.


    Quote

    Ein wirkliches Array hat ja in XML auch keine Nummerierung, weshalb ich mir die durchnummerierung auch schwierig vorstelle, das müsste dann ja bei der Deserialisierung geschehen, und in verschiedene Speicheradressen abgelegt werden.


    Korrekt. Aber wenn ich z.B. in C oder VB o.ä. deserialisiere, habe ich ja auch anschließend en durchnummeriertes Array. Aber was wieß ich, wie das bei Ethernet KRL so funktioniert... :)

    Hallo Leute,


    ich tausche zwischen Leitrechner und Roboter via EthernetKRL Daten aus. Das funktioniert auch hervorragend. Zwecks Optimierung (Dauer der Übertragung aller Datensätze) möchte ich nun mehrere Frames als Array übergeben, um es mit EKI_GetFrameArray() auslesen zu können.

    Ich weiß nicht, wie ich das Frame-Array in der XML-Datei deklarieren muss und kann es auch noch nicht per Try and Error ausprobieren.


    Meine Struktur eines Datensatzes vom Leitrechner soll also so aussehen:

    TransmissionID INTEGER - Nur zur verifizierung

    StepCount INTEGER - Anzahl der einzelnen Schritte in diesem Job

    StepType INTEGER - Ein Parameter fuer die Bearbeitung

    POSITIONS Frame Array - Die Frames, welche ich als Array übertragen möchte


    in der XML-Datei habe ich bisher folgendes unter RECIEVE eingetragen:


    Code
        <RECEIVE>
            <XML>
                <ELEMENT Tag="JOBSTEP/TransmissionID" Type="INT"/>
                <ELEMENT Tag="JOBSTEP/StepCount" Type="INT"/>
                <ELEMENT Tag="JOBSTEP/StepType" Type="INT"/>
                !!! Hier fehlt noch das Frame-Array !!!
                <ELEMENT Tag="JOBSTEP" Set_Flag="998"/>
            </XML>
        </RECEIVE> 

    Wäre das dann so richtig?

    Code
    <ELEMENT Tag="JOBSTEP/POSITIONS" Type="FRAME[]"/>

    Die Doku sagt da leider nix...oder ich find's einfach nicht.