CWRITE Logging über Submit

  • Hallo zusammen,


    ich hab' hier einen LBR4 stehen und möchte (bis das FRI endlich da ist) gerne Kräfte und Positionsdaten über einen externen PC mitloggen.
    Das Nutzen von CWRITE an sich funktioniert auch unproblematisch.


    Ich möchte jetzt aber gerne ein Programm ausführen und parallel dazu (also gleichzeitig) die Kräfte und Positionsdaten übertragen.
    Sehe ich das richtig, dass ich dann ein SUBMIT schreiben muss, wo ich die Kommunikation mit dem PC handle, während parallel dazu dann das eigentliche SRC ausgeführt wird?


    Oder gibt es da geschicktere Ansätze? (Hatte auch an TRIGGER WHEN PATH gedacht, allerdings ist mir aus der Doku nicht ganz klar geworden, ob die Bewegungsanweisungen tatsächlich parallel (ohne Unterbrechung) zur seriellen Kommunikation ausgeführt werden?


    Vielleicht kann mir ja jemand kurz weiterhelfen.


    Gruß
    Nico

  • Schritt für Schritt zum Roboterprofi!
  • Hi Nico,
    also Trigger werden paralel "paralel" zu den Bewegungen ausgeführt ohne die Bewegungen zu unterbrechen.
    Ich hab such schon Programme gesehen wo 8 bis 10 Trigger zu einer Bewegung gehörten und der Robi ist
    ohne zu zucken durchgelaufen.


    Gruß
    Toud

  • Ich habe mein Unterprogrammm in die SPS.sub eingebaut (generell funktioniert die permanente serielle Kommu), allerdings kommt nun ein neues Problem auf.


    Wenn ich eine Kraft versende, dann wird bei der internen Telnet-Ausgabe (192.0.1.1) der korrekte Wert angezeigt (bspw. +2.45896). Beim mit der KRC verbundenen Labview-PC erhalte ich allerdings nur eine 2. und der Rest wird verschluckt. Wenn ich nach dem CWRITE aber ein WAIT SEC 0.06 bspw. einfüge, dann wird der korrekte Wert übertragen.


    Noch interessanter wird es aber, wenn ich bei reinem laufendem Submit-Interpreter eine Kraft auf den Robo ausübe. Dann verschluckt sich CWRITE komplett und ich erhalte im Labview-Programm einen Shift der zu sendenen Zahl (statt 2.4545 bspw. 452.45). [Unabhängig ob ich WAIT SEC einfüge oder nicht]


    Jemand eine Idee? ;)

  • Ich arbeite "Pure", sprich XON/XOFF abgeschaltet - auf beiden Seiten.


    Nun ja, normalerweise würde ich davon ausgehen, dass es CWRITE in den TX-Buffer der Schnittstelle haut und ich es mir dann auslese. Das funktioniert mit nem Char-Array gut, mit Real-Werten weniger gut. (Auf der anderen Seite bekomm ich selbst mit nem RX-Buffer und dem kompletten Auslesen teilweise (wenn ich eine Kraft auf den Rob ausübe) eine Verzögerung/Verschiebung.


    Irgendwo ist da der Wurm drin. Entweder ist es ein Timing-Problem oder auf der Strecke COM3 KRC <-Nullmodemkabel-> <-Seriell/USB-Konverter-> <-Labview> murkst was herum.


    Den Seriell/USB-Konverter werde ich mal gegen eine altmodische onboard-Schnittstelle tauschen und sehen, ob sich nicht was verändert. Am Konverter kann ich immerhin noch an der Latency-Time und Puffergröße spielen ...


    Der Submit-Interpreter sollte doch deterministisch im 12ms Takt ausgeführt werden oder sehe ich das falsch?

    Einmal editiert, zuletzt von FermatS ()


  • Der Submit-Interpreter sollte doch deterministisch im 12ms Takt ausgeführt werden oder sehe ich das falsch?


    Nur kurz: Nach meinen Infos arbeitet der Submit Interpreter nicht in einem festen Takt sondern nach best effort. (siehe auch die while schleife in der sps.sub)


    D.h. der Submit kommt zwar immer wieder zur Ausführung dran. Die Ausführungszeit richtet sich jedoch nach dem, was du in der sps.sub anstellst. (daher sollte man auch auf WAIT SEC im Submit verzichten). Ich würde keine festen Annahmen zur Laufzeit des Submits machen. Eine alternative Lösung wäre die Kräfte mittels RSI zu übertragen. Dann wirds auch deterministisch(er).


    Grüße
    noheton

    Einmal editiert, zuletzt von noheton ()

  • Hallo,


    nur mal eine allgemeine Frage: mich würde interessieren, welche Aufgaben du mit dem LBR betreibst? Wir haben selbst 13Stk. im Einsatz.
    Ist das eine Forschungsarbeit oder geht das in Richtung Produktion?
    Welche Funktionen nützt ihr denn vom LBR? Auch einige "hidden- Features"?


    Für Erweiterungen unserer LBR in deren Funktionen habe ich immer ein offenes Ohr. :supi:


    Wir selbst arbeiten nicht mit dem FRI oder anderen. Nach "Aussen" wird nur mit Profibus kommuniziert, sonst könnte ich dir ev. helfen...


    :merci:
    LG
    Stups

  • Hallo FermatS,


    habe vor ein paar Jahren auf der KRC2 mit CWRITE via Submit-Interpreter auf RS232 bittere Erfahrungen gemacht:


    Grundsätzlich lief alles perfekt (hatte LED Laufschrift-Grossanzeigen seriell angeschlossen), nur musste der Kunde alle paar Wochen einen Kaltstart der Steuerung machen. Nach unzähligen Stunden und zunächst viel "...an uns liegt's nicht" seitens KUKA hat sich herausgestellt, dass wenn CWRITE im Submit-Interpreter verwendet wird und der Modus nicht auf #SYNC steht sich die KRC wegen eines Speicherlecks langsam das RAM vollballert, bis die Kiste sich irgend wann selbst erwürgt. Meine Programmierung sah eigentlich eine asynchrone Bedienung der Schnittstelle vor, es war dabei sicher gestellt dass der Sendepuffer nicht überläuft. Mit SYNC bleibt der Submit nun halt stehen bis die Daten verschickt sind. Einen Patch hab ich damals von KUKA nicht bekommen, und ich weiss nicht ob das Speicherleck im ASYNC-Modus von CWRITE je behoben wurde.


    Grüsse, APT

    APT Techniques GmbH<br />Software-Entwicklung für Roboter &amp; SPS.

  • Servus Stups,


    13 Stk. bei dem Einkaufspreis ist aber auch eine gute Hausnummer. ;) Da könnte ich mich mal so richtig austoben.
    Da fallen mir Dinge ein ... Du arbeitest aber nicht zufällig bei einer Firma mit Stern oder?


    Wir haben hier genau einen zur Verfügung. Ist ein Fraunhofer Institut, in dem er steht. Forschungsmäßig beschäftige ich mich gerade mehr mit Regelungskonzepten (bspw. Kraft, Potentialfelder), Dynamikidentifikation, Nullraum im Rahmen von bestimmten Montageaufgaben. Immer auch im Zusammenspiel mit anderer Sensorik. Wenn Du Regelungen auf Drehmomentebene o.ä. erstellen willst/musst, dann kommst Du um das FRI meiner Meinung nach nicht drum herum. RSI geht nicht tief genug hinein.


    Von den Standardfunktionen im Grunde das gesamte Kraftportfolio (TrigByContact, DesiredForce mit Profilen usw.)


    Finde es generell anstrengend, dass die unteren Schichten bei KUKA so gekapselt und abgeschottet sind. Würde meiner Meinung nach einen Benefit auch für KUKA geben, wenn das etwas offener werden würde.


    Generell geht's natürlich am Ende immer um praxisnahe Anwendungen in der Produktions- und Montagetechnik.


    Grüße

  • Hallo APT,


    danke für die Info. Da sehe ich bei mir weniger Probleme, denn der Robo läuft nicht durch sondern geht abends brav schlafen mit kalter Dusche am nächsten Morgen. ;)


    Meine Meinung:


    Ärgerlich sind solche Dinge allerdings, denn es heisst fast immer am Anfang: Der Fehler liegt bei auf Kundenseite. Ist ja auch einfacher und kostengünstiger als bei sich selber nachzuschaun ... Den einzelnen Kunden besser in den Entwicklungs- und Verbesserungsprozess einbinden und mit mehr Möglichkeiten (Software, Schnittstellen) in den Grundausstattungen, dann wären beide Seiten zufriedener.



    Zur seriellen Schnittstelle:
    Dummerweise liegt das Problem auch schon mal an der Krücke USB-Seriell, wenn nur wenige Byte übertragen werden. Da kann der Adapter echt langsam werden, da USB ja nach dem Polling-Verfahren arbeitet und am liebsten zusammengefasste Pakete verschickt. Bei langen Datenstreams sicherlich sinnvoll, bei vermeintlich kurzen einfachen Sequenzen muss man ewig herumbasteln.


    Deswegen nehm ich mir Montag nen Laptop mit guter alter serieller Schnittstelle mit, um zu schaun ob es nicht auch am Adapter liegen kann.

  • Neee, nicht die mit dem Stern, die mit dem Bogen.


    Ich glaube auch zu wissen, dass eh nur wir und die Stern- Fima den Robi als Industriekunden bekommen haben. Wir haben mittlerweile auch schon richtig gute Konditionen.
    Wenn du genauere Infos/Dokus über die LBR- Features hast, die nicht veröffenlicht wurden (KUKA- Doku), wäre ich dir seeeehr dankbar. Die rücken nämlich immer nur auf Nachdruck und unter vier Augen mit halbfertigen Dokus raus und übernehmen natürlich auch keinerlei Haftung...
    :danke:
    Wir sind ein Industriebetrieb und daher eher auf der Anwender- als Entwicklerseite anzusiedeln. Aber aufgrund dessen, dass diese Vorserie sehr anfällig in der Stabilität der HW/SW ist, habe ich mir gezwungenermaßen schon selbst Spezialwissen aneignen können/müssen.


    Gehen deine Ergebnisse direkt in den LBR5 ein? Den 5er- Launch haben sie uns auch schon mehrmals verschoben. Dein Gebiet klingt recht interessant. Werden deine Outputs als KRL- Funktionen zur Verfügung stehen? Denn wir haben mit der jetzt zur Verfügung stehenden Kraftmessung ziehmliche Probleme. Wir "wiegen" jedesmal unser Werkstück vor dem Transportieren. Bei falschen Lastdaten bzw. Schwerpunkten/Trägheiten löst dann immer Trig-By-Contact aus. :wallbash:
    Oder wenn du paar nützliche Funktionen hast, würden wir sie auch testen- im Dauerbetrieb sozusagen (Natürlich nur, wenn nix passieren kann :aufsmaul:)


    Was die Offenheit der Funktionen betrifft, bin ich deiner Meinung! Bislang haben wir das immer so gelöst, dass wir unsere Probleme bzw. Erfahrungsberichte an KUKA übermittelt haben. Die haben dann lang rumgespielt und irgendwann kam dann wieder eine neue KSS raus. Oder auch oft Mail- Ping-Pong...


    Es soll der LBR ja mal mit JAVA zum programmieren gehen. Hast du in diese Richtung vielleicht schon was rausbekommen? Integration in FRI?



    LG

  • Da wir in dem Fall nicht mit KUKA kooperieren, haben wir den selben dürftigen Informationsstand. ;)
    Das DLR dürfte uns dabei ne ganze Ecke voraus sein - die haben die Dinger ja in Kooperation mit KUKA entwickelt.


    Bedeutet aber auch, dass alles was ich/wir hier noch machen werden, nicht in den LBR5 einfließen wird.
    Zum FRI existieren bisher nur C++ -Funktionen. Von Java höre ich das erste mal, wobei es kein so großer Aufwand sein sollte, diese Funktionen zu portieren. Muss halt nur einer Zeit haben und mal machen. ;) Stört mich aber nicht, denn ich kann auch mit C/C++ leben bzw. würd das dann mal mit Labview kombinieren.



    Auf welche Instabilitäten spielst Du an?


    Die Kraftmessung ist ja eine Rückschätzung/Berechnung der TCP-Kräfte ausgehend von den Achsmomenten. Wenn Du jetzt falsche Lastdaten bzw. Trägheiten hinterlegst, dann wirkt sich das auf den modellbasierten Regler aus. Im schlimmsten Fall bewegt sich dann der Robo ohne Last einfach nach oben oder zur Seite, weil er die Gravitationskräfte ausgleichen will, die er ja größer annimt, als sie tatsächlich sind.


    Das wirkt sich dann aber auch auf die "Gewichtsmessung" aus. KUKA hat ja noch die Varianz als Kriterium für die Kraftschätzungsqualität mit angegeben, aber naja. Du solltest beim Wiegen jedenfalls drauf achten, dass sich der Arm nicht in der Nähe einer singulären Position befindet, denn dann nimmt die Schätzqualität ab.


    An einem Austausch wäre ich aber generell interessiert, denn oft hat der eine die Probleme des anderen schon lange gelöst und man muss das Rad nicht dauernd neu erfinden. ;)

    Einmal editiert, zuletzt von FermatS ()

  • Stups: Kontaktier mich doch mal per PM. ;)


    Zum Problem und der Lösung:


    Mit Xon/Xoff an PC und KUKA, Latenzzeit vom USB-Treiber auf 1ms am PC, Buffer auf 64Byte verkleinert am PC und Termination-Character am PC funktioniert die Übertragung nun gut.


    Jetzt muss ich sie nur noch etwas schneller bekommen.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden