Beiträge von dene

    Hallo zusammen


    Ich versuche in meiner Applikation die Kraft-/Momentensteuerung in die einzelnen Richtungen in RSI mittels DigOut zu aktivieren/deaktivieren. Dazu habe ich in RSI einen SIGNALSWITCH verwendet, welcher über einen DIGOUT gesteuert wird. Nun möchte ich den DIGOUT über ein ETHERNET setzen und habe dazu ein MAP2DIGOUT verwendet.


    Als Beispiel habe ich dem DIGOUT und MAP2DIGOUT den Index "1" und DataSize "Bit" zugewiese. In der Ethernet-Config habe ich folgendes Element konfiguriert:


    <RECEIVE>
    <ELEMENTS>
    <Element TAG="DiO" TYPE="BOOL" INDX="1" HOLDON="1" />
    </ELEMENTS>
    </RECEIVE>


    Leider bekomme ich jeweils eine Fehlermeldung "Ungültiger Index - Signalausgang" (RSI <16>) beim RSI_Create. Woran könnte das liegen bzw. worauf muss ich achten bei dieser Vernetzung?

    Grundsätzlich funktioniert das...die Frage ist aber was du machen willst. Für den Ethernet-Block brauchst du auf jedenfall eine Config-Datei, welche die Netzwerkschnittstelle (IP, Port etc.) definiert. Darin legst du auch fest, auf welchen Ein-/Ausgängen du welche Variablen sendest/empfängst. Um dir gezielt zu helfen sind noch einige Infos von deiner Seite nötig

    So habe jetzt nochmals den TeamViewer auf dem Remote installiert und den TeamViewer Quick Support auf die KRC gelegt. Dieser sagt aber, das keine Internetverbindung besteht und zeigt mir weder eine ID noch eine Kennwort an. Logisch...soll ja auch über LAN laufen.
    Was noch auffällig ist, das der Quick Support immer wieder einen Dialog anzeigt, welcher auf die Nutzung eines Proxyservers hinweist. Der Remote ist auch in einem Firmennetzwerk mit Proxy aber die Kommunikation soll ja nicht im Firmennetzwerk laufen.
    Bin ratlos was ich falsch mache

    Interessant ist, dass bei dir keine IP sondern eine ID innerhalb des TeamViewers gesetzt wird. Sobald ich bei den TeamViewer Einstellung auf der KRC die LAN-Verbindung zulasse, wechselt die ID zur IP 192.168.0.1 welche ja für die interne Kommunikation der KRC verwendet wird.
    Auf dem Remote PC wechselt TeamViewer die ID zur IP nur, wenn ich die Option "ausschliesslich zulassen" verwende. Ansonsten bekomme ich eine ID, mit welcher ich auch einen Remote Access von der KRC auf den Remote PC bekomme.
    Das Netzwerk scheint also zu funktionieren, aber irgendwie bekomme ich keine verwendbare ID innerhalb des TeamViewers auf der KRC.


    Richtig. Bitte beachte aber bei eventuellen Freigaben, dass Du niemals auf Windowsebene direkt auf das C:\KRC\ zugreifst. Dortige Änderungen führen zur Laufzeit zwangsläufig zu inkonsistenten Daten.


    Das war mir bekannt, wobei ich hier früher oder später landen werde. Wir entwickeln eine Softwareapplikation, bei der wir möglichst viel extern definieren, untere anderem auch die $config. Diese wollen wir dann vor Programmstart auf der KRC austauschen, ohne jedesmal über das KCP die Datei kopieren zu müssen.


    Hast du hierfür direkt einen Input, wie wir das sauber lösen könnten?

    Alles klar.
    Das heisst für den reinen File-Transfer bzw den Zugriff auf die Steuerung über das KLI könnte ich einen neuen User in der WinOberfläche der KRC erfassen, dem ich entsprechenden Zugriff gewähre? Momentan benötige ich diese Login-Daten um via Ethernet auf die Netzlaufwerke zuzugreifen, welche ich eingerichtet habe.

    Hallo,


    Ich versuche gerade via TeamViewer ein Remote Access zur KRC4 bekommen doch leider funktioniert das nicht. Folgendes habe ich:


    - KLI Schnittstelle mit Adressbereich 172.31.1.x -> wird verwendet als Netzwerk um Files auf vom Remote PC auf die Steuerung zu kriegen. Diese ist als virtual5 auf dem KCP konfiguriert.
    -RSI Schnittstelle mit Adressbereich 192.168.1.x -> wird verwendet um mittels eigener Software den Roboter zu steuern (bsp SpaceMouse). Dabei schicken wir UDP Packete im IPO-Takt an die KRC4. Diese ist als virtual6 auf dem KCP konfiguriert.
    -Interne Schnittstelle mit Adressbereich 192.168.0.x -> diese ist wohl für die interne Kommunikation der KRC4 vorgesehen und sollte nicht verändert werden.


    Meine Frage ist nun, wie ich den Teamviewer zum laufen kriege. Dieser ist auf dem Remote PC und der KRC4 installiert und auf LAN Verbindung eingestellt. Doch welches Netzwerk sollte ich verwenden? Versucht habe ich mal auf der WinOberfläche der Steuerung (HMI minimieren) eine zusätzliche Adresse 172.31.1.3 hinzuzufügen, doch diese lässt sich nicht vom Remote PC pingen. Der Adressbereich 192.168.1.0.x lässt sich auch nicht pingen. Firewall auf der KRC4 (WinOberfläche) ist ausgeschaltet. Die restlichen Netzwerke funktionieren einwandfrei.


    Wäre sehr dankbar für einwenig Hilfe...am besten eine Step-by-Step Anleitung =)

    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?

    Danke für den Hinweis...ich wollte mich gerade daran machen, diese Erkenntnis hier niederzuschrieben. Habs nach langem Ausprobieren endlich geschafft und es scheint effektiv der Name zu sein. Wiedermal etwas sehr naheliegendes und klar aus anderen Sprachen ist das auch bekannt. Da ich aber normalerweise mit Entwicklungsumgebungen arbeite wird man da recht schnell darauf hingewiesen. Leider hat mir die Fehlermeldung von KUKA, dass IM Modul Spline eine Fehldefinition vorhanden ist, eher weniger geholfen, da SPLINE die Fehldefinition war. Naja...wieder was gelernt auch wenn mich der Spass einige Stunden und Nerven gekostet hat.


    Schönes Weekend :ylsuper:

    Mach ich genau so. Also ich speichere die Files auf einem Netzlaufwerkordner (D:\Transfer\) und verschiebe dann im HMI die Files in den R1. Habe auch schon versucht direkt in der Windowsoberfläche die Files im Explorer zu verschieben. Dann erkennt die KRC jedoch die Files nicht mehr als Modul sondern kann den Datentyp nicht mehr zuordnen.


    Frage mich wirklich langsam ob der Fehler vielleicht in meiner Applikation liegt, aber die Files die rauskommen sehen grundsätzlich gut aus. Die Frage ist halt ob die KRC noch irgendwelche Attribute auf den Files braucht, welche beim Kopieren in C# nicht übernommen werden.

    So ich habe mal eine kleine Applikation programmiert, welche mir ein .csv einliest und daraus ein .dat/.src aufbereitet. Dabei habe ich einerseits ein Template von der KRC4 und eines aus OrangeEdit verwendet und über die App die FRAMES und den SPLINE-Block ergänzt. Anschliessend wollte ich das File manuell auf die KRC schieben doch leider funktioniert das nicht. Es kommt immer die Fehlermeldung, dass das .src fehlerhaft sei.


    Habe schon verschiedenes ausprobiert (Header etc.) doch selbst ein absolutes Basic-File ohne Fahrbefehle lässt sich nicht auf die KRC schieben. Woran könnte das liegen? Verschieben tue ich im Expert Modus direkt über das HMI. Echt mühsam wenn solche "einfachen" Dinge einfach nicht funktionieren.


    Edit:
    Hab jetzt mal noch 2 absolut identische Programme erzeugt. Eines von Hand direkt im Notpad++ angepasst, so das es funktioniert und ich es als Template verwenden kann. mit Der App mache ich eine Kopie und ersetzte die FRAMES. Das Template lässt sich auf die KRC laden und ausführen, das erzeugte Programm aber nicht. Funkt mir da Windows bei der Kopie irgendwie rein, sodass die KRC das File nicht mehr annehmen will?
    Im Anhang findet ihr die Files. Test funktioniert (Template) und Spline funktioniert nicht (erzeugt durch Kopieren des Template).
    Könnte das jemand vielleicht mal in OfficeLite ausführen?


    1. Könnte ausreichen. Hier werde ich mal testen, wie die Bewegungen aussehen. Das Problem könnte hier halt sein, das je nach Aufnahme und Messfrequenz die Punkte sehr nahe beeinander liegen und ein Überschleifen die Bewegung nicht sauber reproduziert.
    2. Hier ist wieder das Problem, wie ich das effizienten implementieren kann.
    3. Schon wieder zahlen für ein Softwarepaket? Lieber nicht ;)


    Wie gesagt ansonsten bleibt wohl nur das erstellen der Programme direkt über unsere Applikation, da ich so auch grosse SPLINE-Blöcke automatisiert erstellen kann und den Vorteil hätte, das ich wirklich alles vom externen Laptop aus steuern kann. Mal sehn wo es hinläuft.


    Danke jedenfalls für die Inputs...hilft mir schon mal weiter beim ausprobieren :supi:

    Da die Punkte von einer Bewegungsanalyse von anatomischen Gelenken stammen, ist die Anzahl stark unterschiedlich und auch deutlich mehr als nur 10....eher gegen 1000 wenn nicht noch mehr. ;)


    Eine Idee war auch, das ich jeweils nur den aktuellen Punkt an die KRC sende und das Excel mit meiner eigenen Softwareapplikation durchlaufe. Aber da sehe ich das Problem, dass ich keine kontinuierliche Bewegung realisieren kann. Alternativ könnte ich natürlich das Source-File direkt mittels meiner Applikation erstellen...aber für den Moment geht mir das ein wenig zu weit.


    EDIT:


    Zusätzlich habe ich noch ein weiteres Problem. Ich habe versucht, innerhalb des SPLINE-Blocks die Punkte nicht über das Inline-Formular sondern direkt über hardcoding zu programmieren. Dadurch erhalte ich die Fehlermeldung:


    "Erster Zielpunkt im Spline muss vollständig initialisiert sein"


    Das gleiche passiert, wenn ich die Punkte teache und dann die Arraywerte zuweise. Im .Dat werden dadurch auch die Parameter für Status/Turn des E6POS gelöscht und nur das Frame reingeschrieben. Ich dachte, das bei einer solchen Wertzuweisung die nicht geänderten Parameter einfach von der vorangegangen Position übernommen werden? Grundsätzlich geht es hier wohl darum, wie ich einen E6POS mittels FRAME verändere =)


    Hallo


    Wir möchten gerne eine SPLINE-Bewegung mit Positionsdaten aus einem Excel-File erzeugen. Da sich die Anzahl der Punkte stehts ändern kann, muss das ganze etwas dynamisch funktionieren.


    Die Idee war nun, innerhalb des .dat-Files einen Frame-Array mit den Positionen zu erstellen und den SPLINE mithilfe eines FOR-Blocks kontinuierlich abzufahren. Leider kann ich innerhalb des SPLINE-Blocks keine FOR-Anweisungen einfügen. Hat da jemand eine elegante Methode, wie ich so etwas umsetzen könnte? Die Schnittstelle zu Excel ist erstmal sekundär, da wir hier schon einen Ansatz haben. Zu Testzwecken werde ich vorerst alles mal auf dem KCP programmieren.

    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:

    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.

    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?