Länge zwischen zwei Punkten ermitteln?

  • Hallo,


    wie kann ich am einfachsten den gefahrenen Weg zwischen mehreren LIN Bewegungen


    ermitteln?


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Rainer,
    hilfreich ist folgender Zusammenhang


    l=wurzel((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)


    x2 ist die x-Koordiante von Punkt 2 usw. Damit solltest Du weiterkommen. Bei Fragen, nochmals melden.


    Gruß, robots

  • Hallo,


    Vielen Dank!


    die eigentliche Aufgabenstellung:


    Ich möchte den zurückgelegten Weg zwischen beliebig vielen Punkten in eine
    Variable speichern! $Distance gilt eben nur von Punkt zu Punkt --> hilft mir also nichts!
    könnt ihr mir bitte weiterhelfen?


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • Hallo Rainer,
    falls ich Dich richtig verstehe würde ich mit obiger Formel und einer for-Schleife die Berechnung eben für beliebig viele Punkte durchführen, oder?


    Gruß, robots

  • Hallo,


    soll alles während der laufenden Bewegung geschehen! und ich weiß ja nie wiel viele Punkte das werden?


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • So jetzt muss ich weiter ausholen:


    Ziel der ganzen Aktion ist es, alle Prozessrelevaten Parameter mehrerer Schweissnähte
    in einem Programm, mit den jeweils vorherigen zu vergleichen. Haben sich diese geändert, wird der gepackte String übers Netz verschickt! --> Kontrolle der Prozessparameter!
    Nun ist bei einer Schweissnaht eben das auch das "Nachteachen" der Bahn Prozessrelevant! Mir wäre eine Art "Checksummen" Lösung am liebsten! bin da aber offen! :lol:
    Ich habe bisher nur Start und Endpunkt der Naht erfasst, und diese Daten verschickt!
    kannst Du mir folgen?


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • Hallo Rainer,
    Dein eigentliches Ziel ist es also festzustellen, ob sich die Bahn gegenüber einer vorherigen (wegen nachteachen) verändert hat?
    Warum addierst Du dann nicht die Distanzen zwischen den gefahrenen Punkten auf und vergleichst diesen Wert mit dem vorherigen, oder sind diese Koordianten auch nicht bekannt? :kopfkratz:


    Gruß, robots

  • Hallo,


    stimmt genau! die Koordinaten der dazwischen liegenden Punkte sind nicht bekannt!
    hatte am Anfang des Projekts zu wenig Zeit (bzw. hab's vergessen) entsprechende Absprünge bei den durch UserTech erstellten Bewegungspunkten einzufügen.
    Deshalb hab ich jetzt auch so ein Sch.... Problem am Hals!


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • Hallo,
    kannst Du nicht an diversen Stellen im Programm $POS_ACT in Variablen schreiben, deren Distanzen Du berechnest und aufaddierst?


    Gruß, robots

  • sehe mich schon wieder im sub --> wursteln! :MAD: :MAD:
    Bitte bewahrt mich bitte davor!


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • Hallo,
    wenn's durch UserTech erstellte Punkte sind fällt mir sowas ein:


    - UserTech-Formular anpassen, damit werden neue Punkte erfasst,


    - die alten Punkte durch Suchen/Ersetzen im Editor auf den neuen
    Stand bringen, da hilft ein Editor, der Reguläre Ausdrücke kennt,
    so dass man nicht nur sture 1:1 Ersetzungen machen kann sondern
    etwas variabler suchen/ersetzen kann.


    - im neuen Usertech je Punkt ein Unterprogramm aufrufen, der die
    Teilstrecke vom letzten Aufruf berechnet und aufsummiert, da hat
    man ja schon die Koordinaten des entsprechenden Punkts und
    kann die an das Unterprogramm weiterreichen.


    Hermann

  • Ich weiß ja nicht wie viele UP's Du hast, aber ein Ansatz wäre ein UP zu schreiben in dem die Gleichheit zweier Positionen ermittelt wird.


    Erst mal gehst Du mit nem Makro (UltraEdit oder Excel) über Deine UP's und kopierst alle PTP's und LIN's zwischen BrennerEin und BrennerAus raus.


    Dann legst Du Dir ein Vergleichsarray in jedem UP an. Kanns ja jedesmal das selbe nehmen.


    Nun schreibst Du mit einer Funktion die Positionen in ein Vergleichsarray z.B. mPOS_Last[50]


    Es wird als nächster Schritt am Anfang des UP's ein Vergleich auf Gleichheit aufgerufen.


    CheckPosition(XDeinErsterPunkt,mE6POS_Last[1])


    Bei Ungleichheit gibts ne Meldung versendet - Position XDeinXterPunkt ist geändert worden - AlterWert,NeuerWert


    Und schließlich den mE6POS Last aktualisieren.

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