Koordinaten übertragen

  • Hallo liebe Robotergemeinde,


    ich brauche mal wieder eure Hilfe. Bei meiner vkrc4 Steuerung übertrage ich Koordinaten von der Technologie SPS auf den Roboter.
    Die Werte sendet die Technologie SPS mit 32 Bit Länge als Gleitkommazahl. Gesendete Bit passen mit dem empfangenden Bits im Roboter über ein. Auswerten bzw. zurück rechnen tue ich mit dieser Funktion.


    Deffct real Bits2Real(n:in)
    Decl Int n
    Decl Real F ; significand
    Decl Int e ; exponent
    Decl Bool neg ; negative sign


    neg = n < 0 ; Save sign
    n = n b_and 'h7fffffff' ; get magnitude
    e = n/'h800000' ; extract exponent
    e = e - 127 ; offset exponent
    F = (n b_and 'h07fffff')/('h800000' + 0.0)
    F = 1 + F


    while e<>0
    if e>0 then
    f = f + f
    e = e - 1
    else
    f = f / 2
    e = e + 1
    endif
    endwhile


    If neg Then ; Restore sign
    F = -F
    EndIf


    return F
    EndFct



    Nun mein Problem die Rückrechnung ergibt nicht eine Gleitkommazahl wie in meinen Fall von 38.370 sondern dieses Ergebnis


    FRAME KORR_FRAME={X 6.32652351E-12,Y 0.0,Z 0.0,A 0.0,B 0.0,C 0.0}


    Was ist bei der Funktion falsch damit ich wieder eine Gleitkommazahl bekomme? Oder wie kann man es anders machen bzw. besser?



    Gruß

  • Schritt für Schritt zum Roboterprofi!
  • momentmal... beschwerde ueber mein spielzeug? :shock: :aufsmaul:


    1. beweise das function nicht funzt...? (beispiele?)
    2. beweise das dein SPS code funzt? (beispiele?)


    mal Ernst,


    man muss immer ergebnise als HEX werte ueberpruefen. ;)
    und ich sehe keine werte:



    Gesendete Bit passen mit dem empfangenden Bits im Roboter über ein.


    wo sind die bits?


    zB.

    38.370 (decimal) = 0x42197AE1 (hex)
    6.32652351E-12 (decimal) = 0x2CDE9842 (hex)


    eindeutig 3 bytes stimmen nicht (nur 0x42 ist da - auch when platz ist falsch)

    Wiki hat alles ueber Gleitkommazahlen:
    https://de.wikipedia.org/wiki/Gleitkommazahl



    bist du dir ganz sicher das byte-order is daselbe fuer KRC4 und SPS?
    https://de.wikipedia.org/wiki/Byte-Reihenfolge


    KRC4 nutzt 32-bit IEEE-754 gleitkomma format ("single" oder "real"). und SPS? (Siemens..??)




    probeweise mann soll auch verschiedene numern auswerten:
    http://www.binaryconvert.com/r…ecimal=051056046051055048

  • Hallo Ghostman,


    ich verstehe nicht ganz warum du wieder einen neues Thema anfängst, wenn es immer noch das alte Problem betrifft???


    Ich habe dir einen funktionierenden Code für den User zur Verfügung gestellt, der an mehreren Anlagen seit Jahren einwandfrei läuft.


    Damit du am Roboter 38.37 bekommst, muss am Bus 3837 anliegen. Tut das auch?? Was legt die SPS/Kamera für ein Wert auf den Bus?


    anbei einpaar Beispiele.


    Gruß

  • Hallo KukaRider und panic mode,


    Ich möchte mich erst mal bedanken für die ganzen Hinweise leider hat ich immer wieder Probleme mit den ganzen hinweise sie umzusetzen egal was ich getan hatte und eure Programme eingesetzt habe hat es nicht funktioniert ich kam nie auf den wert den ich wollte. Ich habe dann langsam nicht mehr gewusst was ich machen sollte deshalb das nochmalige reinsetzen. Aber gute Nachrichte heute kam der Durchbruch es hat endlich funktioniert. Der Hinweis war gestern mit dabei nach nochmaliger Kontrolle der Signale bei der Übertragung sahen wir es,es lag an der Technologie SPS die Bytes waren alle verdreht die sie mir geschickt hatte deshalb keine richtigen werte.


    Jetzt noch ein anderes Problem was heute aufgetreten ist, habe alles in den user_trig reingeschrieben weil ich die Verschiebung punktgenau haben möchte soweit alles in Ordnung. Lasse es durch tech paket aufrufen danach verschiebt der RB die Koordinaten und dann kommt eine Fehlermeldung " Rückpositionieren" wenn das Programm weiterlaufen soll. Ich möchte dann an der verschiebe pos
    nieten und das Programm soll ganz normal weiterlaufen tut es aber nicht eben wegen dieser Fehlermeldung. Was kann ich machen das das Programm normal weiterläuft bzw. die Fehlermeldung nicht mehr kommt. Habt ihr eine Idee?



    Gruß

    Einmal editiert, zuletzt von Ghostmen ()

  • Hallo


    Funktioniert so nicht. Ich rufe das tech_paket in der Punkt sps auf will dann nieten dann kommt dieser Fehler rückpositionieren.
    Die Eingabe von aktiven Kommandos (roboter Bewegung ,programmstart) ist blockiert.

    Einmal editiert, zuletzt von Ghostmen ()

  • Wenn du im trigger den Roboter verschiebst und dann den User wieder verlässt,will der Rob rückpositionieren(sollte mit ptp $posact eigentlich verhindert werden,kann ich jetzt aber leider nicht überprüfen). Wenn du das im Main machst, will er nicht rückpositionieren.

  • Hallo Stethi,


    das habe ich schon verstanden ich weis das der Fehler im User Main nicht kommt.
    Das Problem ich rufe in einem punkt Kamera bild machen, Tech_Paket zum verschieben , Niet zuführen , nieten.
    Im Main verschiebt er aber erst nach dem Punkt, in dessen Punkt-SPS das Inline-Formular USER eingefügt wurde.
    Das heist er verschiebt erst nach dem nieten. Ich brauche aber alles im gleichen Punkt: Bild machen, verschieben, nieten (alles nacheinander abarbeiten). Nächster Punkt beginnt alles wieder von neuen usw.
    So ist es aktuell oder habe ich ein Denkfehler.

    Einmal editiert, zuletzt von Ghostmen ()

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