Beiträge von PAW

    Die Meldung


    *** Translation successful, 414 bytes of p-code generated, checksum 23472. ***
    Build fehlgeschlagen: ????-820 $ 4A0F34, no message found
    0x70044 - File sinus.pc


    erscheint, wenn im Variablenteil z. B. die Größe von Arrays geändert wurde. Vor dem Kompilieren im TeachPendant von Roboguide das Programm UND die zuhörige Variablenliste löschen. Dann sollte beim nächsten Kompilieren die Meldung weg sein.


    Gruß


    PA

    Ich verwende OLPCPRO zur Offline-Programmierung. Vor dem Download der Programme muss man nun zuerst, ich sage mal, den realen Roboter bei OLPCPRO anmelden. Beim allerersten Roboter hat das mit dem Programm FRADDRobot auch funktioniert. Den Hostnahmen "Robot" hatte ich bei der TCP/IP-Einstellung der IP-Adresse unverändert gelassen.


    In der Roboter-Liste von OLPCPRO tauchte dieser Roboter sowohl mit seiner IP-Adresse als auch mit seinem Host-Namen auf. Eigenartigerweise hat die Verbindung nur funktioniert, wenn ich den Host-Namen anklickte, bei Auswahl der IP-Adresse kam nach einiger Zeit die Fehlermeldung "Connection closed, ... FTP ..." (genaue Meldung weiß ich nicht mehr).


    Jetzt kommt das eigentliche Problem.
    Für einen neuen Roboter habe ich in OLPCPRO eine neue Zelle erstellt, der Roboter hat eine andere IP-Adresse als der erste Roboter, den Host-Namen hatte ich zunächst nicht verändert. Die oben beschriebene Problematik hatte ich bis jetzt schon wieder vergessen. Nach der Anmeldung wie oben beschrieben hatte ich in meiner Roboterliste die neue IP-Adresse mit drin. Die Roboter-Auswahl per IP-Adresse wie oben bringt den beschriebenen Fehler, die Auswahl "ROBOT" (Host-Name) lässt das Programm nach dem ersten Roboter suchen, der bei dieser Anlage natürlich nicht da ist.


    Die alleinige Änderung des Host-Namens brachte nix, da FRADDRobot bei schon verwendeter IP-Adresse einen Laufzeit-Fehler bringt. Ein Versuch mit neuer IP-Adresse und Host-Namen <> "ROBOT" brachte auch nix. Die neue IP-Adresse wurde in die Auswahl-Liste eingetragen, als Host-Namen gibt es weiterhin nur "ROBOT".


    Jetzt die Fragen:
    1. Wie kann ich den nutzlosen Eintrag wieder löschen, um die IP-Adresse des Roboters weiterhin benutzen zu können und das Einfügen dieses Roboters ohne Laufzeitfehler wieder zu probieren (ich kann nur die 1 vorgeg. IP-Adresse benutzen)?


    2. Welche Einstellungen müssen am Roboter und bei OLPCPRO genau gemacht werden, damit ich mehrere Roboter verwalten kann? Am Roboter habe ich nur unter TCP/IP die IP-Adresse und den Host-Namen oben rechts geändert.


    Mit dem Internet-Explorer meines Notebook kann ich sowohl per http als auch per ftp auf den Roboter zugreifen.


    :danke:


    Gruß


    PA

    Hallo, WolfHenk,


    seit wann ist RUN ... eine kostenpflichtige Systemoption? Wir haben bisher nix dafür bezahlt. Ich werde das für einen neuen Roboter brauchen, den ich in den nächsten Wochen in Betrieb nehmen und programmieren muss.


    Gruß


    PA

    Hallo Chili1886,


    TP-Prog. u. Karel-Prog. können Werte nur über die Register austauschen. Ein Prog. mit TP für einen Durchlauf starten, wobei das aufrufende TP-Prog. bis zum Ende des aufgerufenen Prog. wartet, mit


    1: CALL Beispiel;


    aufrufen, für Parallelbetrieb von TP und Karel (so mache ich das immer, daher weiß ich nicht sicher, ob ein TP ein Karel mit "CALL" aufrufen kann)


    1: RUN Beispiel;


    Das TP-Prog. läuft dann natürlich weiter, wenn es nicht auf PAUSE kommt.
    In Deinem Fall wäre die 2. Variante bestimmt nicht schlecht. Du benutzt ein Register, um dem Karel mitzuteilen, welche Routine es verwenden soll, und ein Register, um dem Karel die Nr mitzuteilen.


    Das Karel in einer Dauerschleife laufen lassen mit einem DELAY 10 darin, um die Systemressourchen nicht zu überlasten. Das Karel guckt mit GET_REG(10,regflg,ivar,rvar,regstat), was in Register 10 steht.


    Wenn der Registerwert ein Integer ist, steht der Registerwert in ivar, und regflg ist false. In Abhängigkeit dieses Registerwertes kann die gewählte Routine weitere Aktivitäten durchführen.


    Ich hoffe, das hilft weiter.


    Gruß


    PA




    Nummer1

    Hallo heini0707,


    die Nummer mit 2 Sensoren mache ich, wenn solche da sind. Die Suchaktion mit Saugern war nur 1 Beispiel, vielleicht ein unglückliches (da habe ich sogar für die Suche aus großer Höhe einen Vorsensor). Es gibt einen weiteren Suchmodus, bei dem der Roboter gelegentlich vor einem Stapel herunterfahren muss, dessen Höhe variiert und nicht immer bekannt ist. Bei dieser Aktion habe ich nur unten am Greifer einen nach vorn schauenden Lichttaster. Wenn die Oberkante des Stapels dicht über dem Boden ist, muss das Bremsen schnell gehen.


    Aber während ich das schreibe, denke ich, dass die Suchfahrt in einem solchen Fall in eine größere und eine bedeutend kleinere Bahn aufgeteilt werden muss, damit das Ganze flott geht. Das mit der verringerten Beschleunigung probiere ich auf jeden Fall aus. :danke:


    Gruß


    PA

    Hallo, rob76,


    das "normale" skip ist so träge, dass der Roboter nach Eintritt des Ereignisses noch ca. 50 mm weit ausläuft, bis er zum Stillstand kommt. Deshalb ist diese Suchfunktion nicht geeignet, wenn der Greifer von oben auf das Objekt der Begierde fährt, um die Oberfläche beispielsweise mit Saugern zu finden. Ich werde deshalb das Anhängen von ACC ausprobieren, werde aber erst in einigen Wochen dazu kommen. Dann kann ich das Ergebnis mitteilen. Danke.


    Gruß


    PA

    Hallo, Leute,


    wenn ich zum Suchen eines Teils Fine Skip auf einen Sensorpegel verwende, wird der Roboter (R2000 iB mit aktueller Steuerung) bei ansprechen des Sensors so heftig gebremst, dass man Angst um die Mechanik kriegt. Kann man die entsprechende Bremsrampe etwas sanfter machen?


    Gruß


    PA

    Hallo,


    nach meinen Erfahrungen muss man immer genau auf das NUT x.x.x in der Achs-Konfiguration schauen. Für Achse 6 ist der letzte Wert wichtig (NUT x,x,1 f. Achse 6 >180°, NUT x,x,0 f. Achse 6 180 ... -180°, NUT x,x,-1 f. Achse 6 <-180°). Mit Achse 6 meine ich die Flanschachse, FANUC nennt das beim 4-Achs-Roboter glaube ich J4, KUKA bleibt bei Achse 6. Vielleicht ist der Vorpunkt ungünstig in der Drehung? Aber ich denke eher, dass es an NUT x,x,xliegt. Vielleicht sind die Werte für die letzte Achse beim 4-Achser anders gelegen als beim 6-Achser.


    Gruß


    PA

    Hallo, WolfHenk,


    DELAY ist offenbar nicht das Problem. Das Programm kommt in die READ-Funktion und bleibt da, weil ein byte wohl unvollständig ist und damit das Ende fehlt. Das Ganze ist bedingt durch elektrische Störungen.


    Ich habe testweise einen Abstandssensor über die gleiche Schnittstelle angesprochen, und zwar 10000 Mal. Ein Auslesevorgang dauert ca. 24 ms, das System war entsprechend ca. 4 min damit beschäftigt, das Programm lief komplett durch und wurde ordnungsgemäß beendet.


    Gruß


    PA

    Hallo, Christian,


    ich würde die Pyramide etwa wie folgt programmieren:


    &ACCESS RVP
    &REL 232
    &PARAM TEMPLATE = C:\KRC\Roboter\Template\ExpertVorgabe
    &PARAM EDITMASK = *
    DEF Zylstapeln( )
    FRAME myframe
    INT reihe
    int reihenzahl; Anzahl Reihen, hier 4
    int zylinderzahl; Zylinder je Reihe, je Reihe einer weniger
    int zylindernum; aktueller Zylinder in der Reihe
    int ZYLINDER_D; Konstante Durchmesser
    int ZYLINDER_H; Konstante Hoehe des Zylinders


    $VEL_AXIS[1]=100
    $VEL_AXIS[2]=100
    $VEL_AXIS[3]=100
    $VEL_AXIS[4]=100
    $VEL_AXIS[5]=100
    $VEL_AXIS[6]=100


    $ACC_AXIS[1]=100
    $ACC_AXIS[2]=100
    $ACC_AXIS[3]=100
    $ACC_AXIS[4]=100
    $ACC_AXIS[5]=100
    $ACC_AXIS[6]=100
    $VEL.CP=1.5
    $ACC.CP=1.5
    $VEL.ORI1=1.5
    $VEL.ORI2=1.5
    $ACC.ORI1=1.5
    $ACC.ORI2=1.5
    $ADVANCE=3
    $BASE=BASE_DATA[1]; das muss man nicht jedes Mal wiederholen
    $TOOL=TOOL_DATA[1]; das muss man nicht jedes Mal wiederholen


    reihenzahl=4
    ZYLINDER_D=40
    ZYLINDER_H=25
    reihe=1


    Repeat

    PTP XP1
    $OUT[1]=FALSE
    $OUT[2]=TRUE
    PTP XP2
    $OUT[2]=FALSE
    $OUT[1]=TRUE
    ;FOLD WAIT Time= 0.2 sec;%{PE}%R 5.2.34,%MKUKATPBASIS,%CWAIT,%VWAIT,%P 2:0.2
    WAIT SEC 0.2
    ;ENDFOLD
    PTP XP1
    $APO.CPTP=50
    PTP XP3 C_PTP
    PTP XP4 C_PTP
    PTP XP6 C_PTP


    zylinderzahl=reihenzahl+1-reihe
    zylindernum=1


    repeat
    droppos=XP5
    myframe=$NULLFRAME; im folgenden wird der 1. Zylinder mit seinem Mittelpunkt auf $NULLFRAME.x gesetzt, in der Hoehe auf$NULLFRAME.Z
    myframe.X =-(zylindernum-1)*ZYLINDER_D+(0.5-0.5*reihe*ZYLINDER_D); ab der 2. Reihe Verschiebung X um halben Durchmesser
    myframe.Z =(reihe-1)*ZYLINDER_H


    $APO.CDIS=20
    LIN myframe:droppos
    LIN_REL{Z-26}


    $OUT[1]=FALSE
    $OUT[2]=TRUE



    LIN_REL{Z 20}
    $OUT[2]=FALSE
    $OUT[1]=TRUE



    PTP XP6 C_PTP
    PTP XP7 C_PTP
    PTP XP3 C_PTP

    zylindernum=zylindernum+1

    UNTIL (zylindernum > zylinderzahl)


    reihe=reihe+1
    UNTIL (reihe>4)


    PTP HOME
    end


    Generell würde ich Schleifen, IF/ELSE/ENDIF immer mit Einrückungen machen, damit man bei Fehlersuche besser zurechtkommt. Ich habe den obigen Vorschlag auf die Schnelle gemacht und habe keinen KUKA zum probieren zur Hand, deshalb keine Garantie auf Fehlerfreiheit. Ich wüde als Bezugspunkt für die Zielrechnung auch eher eine Grundpos der Pyramide definieren, mit $NULLFRAME habe ich mehr als 10 Jahren KUKA-Programmierung nie gearbeitet.


    Gruß


    PA

    Liebe Gemeinde,


    wir benutzen eine serielle Schnittstelle aus dem FANUC-Schrank jetzt, um eine Motorsteuerung anzusprechen. Offenbar verursachen größere Motorströme Störungen auf der seriellen Schnittstelle (diese Störungen sind elektrischer Natur und sollen von uns selbst eliminiert werden, sind hier also nicht das Thema).


    Das Problem ist, dass diese Störungen von der FANUC-Steuerung offenbar teilweise für bits gehalten werden und die Funktion BYTES_AHEAD "annehmen lassen", dass mehr Bytes als tatsächlich vorhanden sind. Die Bytes sind aber teilweise unvollständig.
    In der ersten Zeit unserer Tests ist mein Kommunikationsprogramm nach Prüfung mit BYTES_AHEAD und Ergebnis, dass mind. 1 Byte vorhanden, in der READ file ()-Funktion hängengeblieben und konnte mit drücken der ABORT-Taste beendet werden.


    Inzwischen hängt sich irgendetwas bei diesem Fehler derart auf, dass die Anzeige auf dem TeachPendant einfriert und ABORT nicht mehr geht, weil keine Tastenfunktion mehr reagiert. Fehlersuche mittels FANUC-Hotline ergab, dass der Speicher physikalisch in Ordnung ist und die CPU noch läuft, nachdem der Fehler aufgetreten ist. Die Hotline vermutet nun, dass etwas mit dem sogenannten Kommunikationsspeicher nicht stimmt. In der Doku steht, dass das TeachPendand ebenfalls an einer seriellen Schnittstelle hängt, so dass dessen Verhalten in Bezug auf den Kommunikationsspeicher erklärlich ist.


    Was kann man in Sachen des Kommunikationsspeichers unternehmen? Rekonfigurieren, ... ?


    Vielen Dank für Hilfe.


    Gruß


    PA

    Der Port kann sogar 38400. Das Gespräch gestern mit FANUC und die Konsante BAUD_9600 ließ vermuten, dass da nicht mehr ist. Die Baudratenerhöhung scheint aber nix zu bringen. Wir müssen in schneller Folge Messungen machen, deshalb öffne ich den Port 1 Mal zu Beginn der Mess-Schleife, in jedem Schleifendurchlauf wird dann CLR_IO_STAT (file) gemacht, dann gelesen.


    Unter Verwendung von $fast_clock (incrementiert inzwischen alle 2 ms um 1) habe ich f. 15 byte zwischen 40 u. 48 ms bei 9600 baud , der Maximalwert ist auch bei 38400 Baud nicht kleiner. Es wurden je 3 Zyklen mit jeweils 20 Messungen gemacht, also 60 Messungen mit 9600 Baud, dann 60 Messungen mit 38400 Baud.. Der Sensor schreibt Daten, wenn er hardwaremäßig getriggert wird. Nach Messung, also vor Rückkehr an den Schleifenanfang, habe ich den nächsten Triggerpuls f. die Folgemessung und damit die nötige Pause (da PULSE ohne nowait), um die Messungen durchzukriegen. Ohne Pause verharrt das System nach wenigen Messungen in READ ... und macht nicht mehr weiter. Bei diesen Tests lief kein weiteres Programm.


    Bei XML-Kommunikation ist das übrigens genauso, ohne einige Delays läuft eine XML-Kommunikation nicht zuverlässig.


    Gruß


    PA

    Das Problem hat sich erledigt. Den benutzten Port unter MENU > SETUP > PortInit auf [no use ] setzen, dann spielt XONOFF etc. keine Rolle.


    GET_PORT_ATR funktioniert wahrscheinlich nicht (Auskunft von Fanuc-Mitarbeiter war, dass nicht alle Funktionen wirklich gehen, deshalb darf man wohl davon ausgehen, dass diese Funktion auch nicht geht). Die angefragten Konstanten kann man offenbar getrost vergessen.


    Jetzt funzt das Auslesen des Sensors, schade ist nur, dass mehr als 9600 Baud nicht möglich sind.


    Gruß


    PA

    Hallo, Spezialisten,


    wir wollen einen Sensor mit RS232-Schnittstelle am Konsolen-Port auslesen. Getriggert wird er mit einem Hardware-Signal. Das funktioniert. Die Daten kommen bei meinem Programm nur teilweise oder auch gar nicht an. Der Sensor wurde bisher über eine Umsetzung RS232 -> DeviceNet betrieben (früheres Thema KL6031), daher wissen wir, dass der Sensor auswertbare Daten sendet. Die Umsetzung dauert für schnelle Messanwendungen aber zu lange, deshalb wollen wir es direkt mit der RS232-Schnittstelle versuchen.


    An die Schnittstelle am Schaltschrank (DSub 25 polig) werden vom Sensor mit 9600 Baud 15 byte gesendet (das Geschehen wurde mit Schnittstellentester und Oszilloskop geprüft). Am DSub-Stecker, der von außen aufgesteckt wurde, wurde Pin 4 mit 5 und Pin 6 mit 20 gebrückt gemäß Handbuch 82595.


    P2: soll konfiguriert werden:
    1. Beabsichtigt ist, für P2: X on/off zu deaktivieren mit
    stat=SET_PORT_ATR(port_?,atr_xonoff,xf_not_used)
    Da die Ports standardmäßig mit XONOFF arbeiten, muss man es deaktivieren. Ich habe versucht, den richtigen Port zu finden, indem ich nachfolgende Abfrage verwendet habe:


    atr_value=-1
    stat=GET_PORT_ATR(port_2,atr_baud,atr_value)
    -- atr_value bleibt -1, egal, ob statt port_2 port_1 oder port_3 angegeben ist
    In der Karel-Doku auf S. 138 findet sich


    The following STRING values can be used to associate file variables with serial communication
    ports on the KAREL controller. Defaults for are:
    — ’P2:’ - Debug console connector on the outside of the operator panel


    Auf S. 139 kommt
    --literal communication port
    OPEN FILE file_var4 (’RW’, ’P2:’)


    d.h, man kann diesen Port benutzen.


    Jetzt fehlt f. das Setzen und Abfragen der Port-Attribute die Zuordnung der phys. Ports zu den vordefinierten Konstanten port_1, port_3, port_4 und port_5. Zufällig habe ich entdeckt, dass der Floppy port_2 zugeordnet ist (s. S. 365). Zu den anderen Konstanten gibt es keine Angaben.
    stat=SET_PORT_ATR (port_2, ATR_READAHD, 1) -- sets FLPY: to have a read
    -- ahead buffer of 128 bytes.


    Weiß jemand, welche Konstante (port_1, port_3, port_4 und port_5) dem phys. Port P2: zugeordnet ist?



    :danke:


    Gruß


    PA

    Hallo, KUKA-Gemeinde,


    wir umfahren mit einem KR2180L150, KRC2, SW 4.7, quaderförmige Gebilde unterschiedlicher Höhe. Die Quaderbreite ist immer gleich. Die Quader werden so umfahren, dass der Roboter ein senkrecht stehendes Rechteck mit abgerundeten Ecken abfährt (CIRC-Bewegungen). Der Roboter ist vom Typ FLOOR und führt das Werkzeug waagerecht um diesen Quader herum (Achse 5 ist also in Kanonenstellung). Die Geschwindigkeits- u. Beschleunigungswerte beim Umfahren werden immer gleich vorgegeben. Trotzdem wird ein flacher Quader deutlich langsamer umfahren, als es die Werte vorgeben.


    In einigen Fällen (alle paar Tage) kommt es zu der obigen Fehlermeldung. KUKA hat uns 2 Mal empfohlen, den Wert für $curr_mon[5] (max. Effektivstrom in Ampere) zu erhöhen. Selbst eine Erhöhung von 9.3 auf 13.3 ändert nichts. Gibt es noch andere Variable, mit denen eine Besserung erzielt werden könnte? Die Reduzierung der Beschleunigung dürfte nicht das richtige Mittel sein, Die Verwendung von KUKALOAD und damit einhergehende Änderung der Lastdaten hat nix gebracht. Die Motoren sind auch im Dauerbetrieb höchstens handwarm. Wir betreiben den Roboter im Grenzbetrieb, das ist uns bekannt. Die Anlage läuft seit 7 Jahren, der Fehler ist auch schon so lange vorhanden, jetzt wollen wir es aber wissen.


    Danke für Infos.


    Gruß


    PA