RSI Ethernet

  • Hallo Zusammen


    Ich kämpfe ziemlich mit der Inbetriebnahme des RSI Ethernet, um die KRC mit einem externen PC verbinden zu können. Finde das ganze sehr unübersichtlich und irgendwie blicke ich da nicht ganz durch. Ich habe einige Zeit mit Pingtests verbracht bis ich dann endlich mal das Hauptproblem gefunden habe....die X66 ging nicht auf die KLI, da diese nach der Inbetriebnahme der FTCtrl besetzt war. Da momentan das FTCtrl und der Sensor nicht verwendet wird habe ich die X66 mit der KLI verbunden und den Laptop direkt verbunden. Folgende Einstellungen habe ich vor mir:


    Roboterseitig:


    virtual5 (virtual)
    Adresstyp: Feste IP-Adresse
    IP-Adresse: 172.31.1.2
    Subnet: 255.255.255.0
    Windows-Schnittstelle: ja


    virtual6 (RSI)
    Adresstyp: Gemischte IP-adresse
    IP-Adresse: 192.168.1.2
    Subnet: 255.255.255.0
    Windows-Schnittstelle: nein


    Laptopseitig:
    IP-Adresse: 192.168.1.1
    Subnet: 255.255.255.0


    Vom Laptop aus kann ich das virtual6 (RSI) pingen.
    Vom Laptop aus kann ich das virtual5 (virtual) nicht pingen.
    Vom SmartPad aus kann ich den Laptop nicht pingen.


    Testserver (aus dem Beispiel) läuft nicht, wobei ich im EthernetConfig.xml die IP-Adresse des Laptops eingetragen habe. Port steht auf 49152. Kartenindex bin ich mir nicht wirklich sicher, wie ich den rausbekommen soll.


    Momentan habe ich vorallem Probleme zu verstehen, wie die 2 Netzwerke auf der KRC zusammenhängen und welches für die Ethernet-Verbindung überhaupt interessant ist. Das virtual5 ist soviel ich verstehe das der KLI, also das der Steuerung. Das virtual6 ist somit das Netzwerk des RSI.


    Ich hoffe jemand von euch kann da einwenig Licht ins Dunkle bringen, sodass ich wenigstens mal den Testserver zum laufen bring. Anschliessend sollen Positions- und Sensordaten des Kraft-Momenten-Sensors online an den Laptop übermittelt und dargestellt werden. Dies wird wohl mit einem eigenen Programm realisiert, wobei ich da noch unschlüssig bin, wie wir das umsetzten wollen (Matlab, Phyton, C#). Für Anregungen bin ich offen =)

  • Schritt für Schritt zum Roboterprofi!
  • UPDATE:
    Kleiner Fortschritt...die Serverapplikation läuft nachdem ich mal einige Updates (unter anderem .Netframe 3.5) auf dem externen Laptop installiert und mit dem Kartenindex rumgespielt habe.


    Nun bekomme ich vom TestServer die IP des Laptops, trage die im EthernetConfig.xml ein und der TestServer meldet "Server ready to receive and send UDP packets". Gemäss Manual sollten ja nun sensorgeführte Bewegungen aus den Beispieldatein (Source-Files) möglich sein.


    Starte ich nun beispielsweise das "RSI_Ethernet.src" komme ich bis zum Satz 31:


    ret = RSI_MOVECORR()


    gefolgt von folgenden Fehlern


    "Signalfluss (running): Objekt EHTERNET1 liefert Fehler RSITimeout"
    "Stopp durch $CORRECTION-Funktionalität (Reset oder Satzanwahl erforderlich)".


    Und was nun?


    Verstehe ich das Richtig, das mir der TestServer durch die Buttons (X,Y,Z,A,B,C) die relativen Korrekturwerte, also die sensorgeführte Bewegung, steuert und durch den Satz RSI_MOVECORR() die Bewegung ausgeführt werden sollte? Was sollte mir der TestServer im Anzeigefeld anzeigen?

    Einmal editiert, zuletzt von dene ()

  • UPDATE:
    Ich habe mal den Datenfluss mit Wireshark getrackt und es scheint so, als ob von der Robotersteuerung Datenpackete gesendet werden, jedoch keine Antwort vom externen PC an die KRC gesendet wird. Dies kann ich auch dem Logfile entnehmen was dann jeweils zu einem "RSITimeout" führt.


    Ich hoffe wirklich jemand kann mir da etwas helfen, da ich gerne etwas vorankommen würde. ;)

  • UPDATE:
    Es ist geschafft! Wiedermal war das Problem wohl das naheliegenste, welches man sich überhaupt vorstellen kann. Die Windows-Firewall hat mir die Datenpackete vom Laptop an die KRC geblockt! Nun bekomme ich eine saubere Kommunikation von Roboter und Laptop, der Testserver zeigt mir gesendete und empfangene Daten und ich kann inkrementell Verfahren....jedenfalls hat sich der KUKA kurz bewegt. Die Bewegungen sind aber enorm abrupt sodass ich mich hier nicht traue extrem rumzuspielen =)


    Wie dem auf sei, die Verbindung steht und es scheint zu funktionieren. Hoffe das vielleicht auch andere von den hier beschriebenen Problemen profitieren können.

  • Hallo Zusammen,


    Inzwischen steht das Netzwerk etwa so wie ich mir das vorgestellt habe. Ich habe volle Kommunikation zwischen externem Laptop, KRC und ATI. Das Ethernet Beispiel, welches mit RSI geliefert wurde hat auch geklappt.


    Nun wollte ich als nächsten Schritt die Kraft- und Momentendaten des Sensors an den externen Laptop übertragen, die wir in der späteren Anwendung eine Live Visualisierung dieser Daten benötigen. Dazu wollte ich den Testserver missbrauchen, und durch die Definition eines neuen Datenflusses in RSI Visual Shell die XML-Packete an den Testserver senden.


    Dazu habe ich folgenden Datenfluss definiert:



    Die Ethernet Config sieht wie folgt aus:



    Und zum Schluss der gestartete Server:



    Für das Programm habe ich den Inhalt des Ethernet.src genommen und einfach die Config-Datei beim Erstellen des RSI Objektes angepasst. Alle nötigen Files wurden wie gewohnt im SensorInferace-Ordner auf der KRC abgelegt, doch leider kommt so beim erstellen des RSI-Objektes ein Fehler.


    Sieht jemand per Ferndiagnose, wo das Problem liegen könnte?


    EDIT: Wieder ein Erfolg...die Sensordaten werden nun auf den Testserver übertragen! Problem war die XML-Struktur in der Ethernet_Config. Es waren zwingend die Tags für die Received-Elements einzutragen, auch wenn ich nur eine Abfrage mache. Erstelle ich in der XML-Config leere Gruppen für die Received-Elements funktioniert alles so wie gewünscht.

    Einmal editiert, zuletzt von dene ()

  • Hallo dene,


    ich glaube du bist hier der richtige Ansprechpartner für uns.
    Wir sind ebenfalls gerade dabei unsere KRC4 mit implementiertem KUKA.EthernetKRL 2.2 mit einem externen Computer zu verknüpfen. Generell sollen Daten via Netzwerk an die Robotersteuerung geschickt werden.


    In deinem ersten Beitrag schreibst du von einer hergestellten Verbindung von Robotersteuerung und externen PC via X66/KLI. Wir stehen gerade vor dem Problem diese Verbindung nicht herstellen zu können.
    Wie bist du damals vorgegangen?


    Vielen Dank für Deine Unterstützung,
    es Grüßen die Studenten aus Esslingen.
    =) :merci:

  • Unser Projekt schreitet voran und wir erzielen immer mal wieder kleine Erfolge. Inzwischen sind wir soweit, dass wir auf einer eigens Programmierten Software (C#) aktuelle Daten auslesen und visualisieren können.
    Ausserdem kann ich den Roboter von Hand über eine Kraftregelung bewegen....zwar noch sehr Träge aber die Auslegung des Reglers ist momentan eher sekundär.


    Nun kommt der nächste grosse Schritt, bei dem wir gerne Positionsdaten an die KRC4 senden würden. Als erstes sollen mal inkrementelle Korrekturen ausgeführt werden, also etwa das, was auch der Testserver bietet. Jedoch ist mir hier unklar, wie ich da vorgehen soll.Auf der RSI Seite stelle ich mir folgendes vor:


    Signalfluss:


    Ethernet Config:


    Wie ermögliche ich es aber nun, das ich die Korrekturwerte in meiner Softwareapplikation beschreiben kann? Die Frage bezieht sich klar auf die Umsetzung in C#. Also es soll beispielsweise ein Button für X,Y,Z in meinem GUI vorhanden sein, mit welchem ich dem Roboter bei einem Klick einen vorgegeben Korrekturwert vorgeben kann. So wie ich das sehe, muss ja von der Software der Attributwert von RKorr.X bei den Antwortpacketen geändert werden. Oder muss ich bei einer Korrektur explizit ein neues Packet an die KRC4 senden?


    Bereits aufgefallen ist mir, das die Kommunikation wieder Probleme macht. Gemäss Wireshark kommen die Packete vom externen Laptop nicht bei der KRC an, sobald ich in der Config auch das Senden von Daten zulasse:



    Es scheint, als ob ein falsches Protokoll gesendet wird und/oder der Port Probleme macht. Wo kann ich da an den Einstellungen noch was verändern, damit auch das Senden von Daten funktioniert?

    Einmal editiert, zuletzt von dene ()

  • du musst halt in Deinem Antworttelegram (welches du ja sowieso alle 4ms schicken musst) Deine Korrekturwerte eintragen.
    Wenn Daten vom Laptop --> KRC nicht ankommen, auf welchen Port antwortest Du denn?

  • Zitat von [wEm

    link=topic=12916.msg63465#msg63465 date=1435923981]
    du musst halt in Deinem Antworttelegram (welches du ja sowieso alle 4ms schicken musst) Deine Korrekturwerte eintragen.


    Das Problem ist, das durch RSI ja automatisch ein Antwortdatagram an die KRC gesendet wird und ich nicht sehe, wie ich diese über meine Applikation vorgängig bearbeiten kann. Ich könnte höchsten ein natives XML in der Applikation erstellen, welches ich dann zusätzlich an die Steuerung schicke.


    Zitat von [wEm

    link=topic=12916.msg63465#msg63465 date=1435923981]
    Wenn Daten vom Laptop --> KRC nicht ankommen, auf welchen Port antwortest Du denn?


    Da bin ich ehrlich gesagt überfragt bzw. verstehe die Frage nicht so ganz. Einstellungen kann ich ja nur für den externen Laptop vornehmen (Eintragen der IP und Port in "Ethernet_Config.xml"). Auf der KRC Seite übernimmt ja RSI alles, so wie ich das sehe. Oder muss ich da direkt in den Netzwerkeinstellungen der KRC bei den Filtern und Ports des RSI Netzwerkes rumschrauben?
    Wie gesagt, reines senden klappt gut und auch das Ethernet-Beispiel funktioniert auch...sollte also kein grosses Ding sein.

  • UPDATE:


    Fragen haben sich nach einigen Test alle geklärt. In meiner Applikation habe ich die XML welche an die KRC gesendet selbst konfiguriert und das senden ausgelöst. Es war einwenig verwirrend, da bei meinen ersten Versuchen der Laptop jeweils automatisch versuchte ein Antwortpacket zu senden. Wichtig war nun, dass das Send/Reveice auf einem separaten Thread läuft, damit die IPOC-Stempel übereinstimmen und die Kommunikation sauber läuft. Bezüglich Ports etc. waren keine Einstellungen nötig. Momentan sind diese einfach statisch in der Applikation definiert. Die Portnummer bekommt man da am einfachste durch Wireshark bei reinem Empfangsbetrieb des externen System. Alles in allem funktioniert nun auch das Remote Verfahren mittels externen Laptop über RSI ganz gut. :supi:

  • Hallo Zusammen,


    Wieder einmal ein Problem bezüglich Ethernet-Kommunikation...aber ich denke nur ein kleines =)


    In meiner C#-App habe ich die Port-Nummer der KRC als statische Variable definiert, jedoch scheint die KRC beim aufstarten jedesmal selbst eine Portnummer zuzuweisen. Kann ich das auf der KRC irgendwo fix programmieren, sodass ich nicht jedesmal mittels WireShark den Port rausbekommen und in meiner App anpassen muss?

  • Nein, die KRC sucht sich immer einen freien port aus einem Bereich aus. Aber der Port steht auch im UDP Telegramm drin, und du kannst ihn ganz einfach in C# auslesen

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