Ethernet-KRL, Roboter wartet bis Daten angekommen sind

  • Hallo,
    Ich habe das Softwarepaket Ethernet-KRL und möchte Daten von meinem PC an den Roboter senden und dann die Koordinaten anfahren. Wie kann ich es erreichen, dass der Roboter so lange wartet mit dem Auslesen des Empfangsspeichers, bis ich ihm tatsächlich etwas gesendet habe? Da die Auswertung im externen System nicht immer gleich lange dauert kommt auch kein wait sec x Befehl in Frage.
    Zur Info: mein Roboter ist Client und der PC ist als Server konfiguriert.

  • Schritt für Schritt zum Roboterprofi!
  • Welche Softwareversion (KSS und Ethernet.XML) hast du eigentlich? Häng doch bitte mal den Programmauszug und die XML-Konfiguration an.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Die Softwareversion des Ethernetpakets ist 2.5 und der KSS 8.3


    Hier das momentane Roboterprogramm zum Testen:


    Und hier die XML- Konfiguration:

  • Ich habe gerade die Funktion EKI_CheckBuffer gefunden. Mit dieser müsste es doch realisierbar sein oder geht das nicht?
    Wenn ja, was muss hier als Position des Speichers eingetragen werden?


  • Ich habe in meiner Konfiguration ja des Ausgang 1 konfiguriert. Dieser wird jedoch nie gesetzt.
    ..


    Das ist das Keepalive-Signal, das ist nicht gemeint.
    Dazu muss im Abschnitt <ELEMENT> das Attribut Set_Flag="2" oder Set_Out="2" vorhanden sein, dann wird das Flag 2/der Ausgang 2 gsetzt, wenn Daten angekommen sind.


    Das Element <ALIVE> gehört in den Abschnitt <INTERNAL>, dann sollte auch der Ausgang 1 bei aktiver Verbindung gesetzt werden.


    Bei dem Ethernetpaket sind so schöne Beispiele dabei, die braucht man doch nur zu kopieren und entsprechend anzupassen.

  • Okay, vielen Dank.
    Aber es funktioniert auch über die Abfrage EKI_CheckBuffer:
    EKI_Status=EKI_CheckBuffer("Config","Position/Position1/x-Koordinate")


    WHILE (EKI_Status.Buff==0)
    wait sec 1
    EKI_Status=EKI_CheckBuffer("Config","Position/Position1/x-Koordinate")
    ENDWHILE
    Abfrage wird erst verlassen wenn etwas im Buffer ankommt.

    Einmal editiert, zuletzt von Dennisprog ()


  • Abfrage wird erst verlassen wenn etwas im Buffer ankommt.


    Du willst aber normalerweise nicht wissen, ob etwas im Puffer ankommt, sondern du willst wissen, ob es vollständig im Puffer angekommen ist. Das ist, wenn es schlecht läuft, etwas anderes....


    Grüße,
    Michael

  • Möchte auch noch meinen Senf dazugeben:
    Wenn Du das Ganze mit Flag/Ausgang realisierst, dann könntest Du die Daten auch in einem Interrupt auslesen und Dein Robi kann in der Zeit noch was anderes machen.

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