Frame

  • Hallo Leute.


    Meine Aufgabenstellung:


    Ein Frame übertragen mit jeweils 2Nachkommastellen.


    Mein Problem:


    Ich bastel mir mit SRead und Swrite Variablen mit 2 Nachkommastellen. Sobald ich dann aber den Frame beschreibe mit 2 Nachkommastellen, werden 6Nachkommastellen draus gemacht.


    Frage:


    Gibt es eine Möglichkeit, dem Frame zu sagen, bitte nur 2 Nachkommastellen?


    Danke schon mal.

  • Schritt für Schritt zum Roboterprofi!
  • guten morgen!


    auch wenn es formatier-befehle gibt, wird dir das hier nichts nützen. der variablentyp "frame" ist schließlich systemweit von kuka vordefiniert und wird immer die volle anzahl kommastellen haben. das heißt ja nicht, dass der wert genauer/ungenauer ist, sondern einfach, dass immer zb 6 stellen angezeigt werden. meines erachtens ist frame eine struktur aus sechs real-zahlen. fertig. und einer real kannst du ja auch nicht vorgeben, dass sie heute mal nur zwei kommastellen speichern soll.


    mfg speed

    200% Override ... irgendwas klingt hier komisch ... und irgendwie riecht es auch ...<br /><br />Abkühlzeit Bremsen Achse 2: 57 Sekunden :D

  • Hihi, die Frage bringt mich auch ins Grübeln - wozu braucht man das?
    Man kann trefflich schwadronieren über eigene Strukturen mit 6 Integers, wo man einfach die Reals mal 100 genommen hat, oder mit speziell formatierten Strings... aber solang die Frage nach dem Sinn offen ist, bringt das nichts...


    Grüße,
    Michael

  • Über Sinn und Unsinn von 6Nachkommastellen wollt ich hier nicht diskutieren.Dass der Frame automatisch die Nachkommastellen ergänzt, war mir klar. Deshalb ja meine Frage, ob mann das kürzen kann.


    Mit SRead und SWrite kann man formatieren.Hab ich auch gemacht, meine Variablen mit 2Nachkommastellen beschrieben.


    Ich muss aber Positionsframes übertragen. Da mein Empfänger aber nur 256 Zeichen empfangen kann, wird es mit der Telegrammlänge schon eng. Wenn ich 6*4Zeichen spare, kann ich im Rest mehr übertragen.Das ist der Hintergrund.


    MfG

  • Hallo


    der Stethi wollt wissen wie man das löst. er will nen string daraus machen mit 2 nachkommastellen.
    warum ist doch irrelevant. vllt hat er nen begrenzten string und brauch ein paar stellen zuviel aber auch das ist doch egal.


    mit swrite geht es durch das formatieren


    formatierungen sind in dieser http://www.roboterforum.de/rob…h;topic=3613.0;attach=844 Doku
    im Kapitel 6.11.4 behandelt


    war nen f.2 als format ^^


    diese grundsatz diskussion bei einer einfachen frage finde ich unangebracht.


    Gruß Loipe



    [edit] upps zu schnell^^

  • sread und swrite mit formatierung nutzen, interne speicherung realzahl ist 4 byte, darstellung ist variabel. nur bei umwandlung in strings wirds komisch.
    über serielle schnittstelle kannst du realzahlen übertragen, dann werden 4 byte/Zahl benutzt und fertig.


    wh

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • über sinn oder unsinn will ich auch nich diskutieren.


    er hat aber geschrieben:
    "Sobald ich dann aber den Frame beschreibe"
    das verstehe ich so, dass er eine bereits formatierte Zahl nun IN den frame reinschreiben will. und das wiederum bringt zwangsläufig die besagte anzahl an kommastellen mit sich, da ein frame das nunmal so vorgibt.
    wie die zahl dann dargestellt wird, steht auf einem anderen blatt, aber du kann einem fest definierten variablentyp (frame) nicht vorgeben, dass er sich heute mal anders verhalten soll, als sonst


    mfg speed


    ps: wenn es darum geht die zu ÜBERTRAGENDE zeichenmenge zu reduzieren, kannst du es doch so machen, dass die zahlen aus deinem frame ausliest und dann vor dem senden umformatierst, statt andersherum. oder verstehe ich da jetz falsch, was du machen willst?

    200% Override ... irgendwas klingt hier komisch ... und irgendwie riecht es auch ...<br /><br />Abkühlzeit Bremsen Achse 2: 57 Sekunden :D

    Einmal editiert, zuletzt von SpeedFreak ()


  • Du hast das richtig verstanden.


    Nur muss ich den Frame übertragen. Einen String möchte mein Kunde nicht.


  • sread und swrite mit formatierung nutzen, interne speicherung realzahl ist 4 byte, darstellung ist variabel. nur bei umwandlung in strings wirds komisch.
    über serielle schnittstelle kannst du realzahlen übertragen, dann werden 4 byte/Zahl benutzt und fertig.


    wh


    Das ist richtig.Nur übertrage ich nicht seriell, sondern EthernetKRL. In meinem XML steht der Frame drine. Sicher kann ich auch Real oder Int übertragen, aber ich muss Frame übertragen. Sonst hätte ich mir die Werte schon als Int,Real oder Char übertragen.

  • der FRAME ist 6x REAL also 6 X 4 = 24 Bytes = 192 Bit lang

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • Hallo Stethi,


    Deine Ausgangsfrage war wirklich nicht zu verstehen, deshalb auch meine Frage.


    Vielleicht hilft ja CAST_TO und CAST_FROM weiter? Da kann man alle Daten zunächst in einen Puffer zusammenfassen, und dann binär mit einem einzigen Aufruf von cwrite übertragen. Habe das allerdings noch nicht ausprobiert.


    Tilman


  • Es geht in der Fragestellung ja auch nicht darum, wie ich was übertrage. Sondern darum, ob man einen Frame dazu bringen kann, 2Nachkommastellen zu aktzeptieren.


    Mit Cast übertrage ich aber einen Binärdatensatz und nicht eine vollständige XML-Struktur.

    Einmal editiert, zuletzt von Stethi ()

  • ich kann mich dennoch nur wiederholen. wie soll das gehen, dass eine vom system definierte variablenstruktur zb frame (6mal real) sich heute auf einmal anders verhalten soll, als sonst??!!!!!


    real bleibt nunmal real. und teile von frame ist nichts anderes als frame.real


    da gibts nix zu schnippeln

    200% Override ... irgendwas klingt hier komisch ... und irgendwie riecht es auch ...<br /><br />Abkühlzeit Bremsen Achse 2: 57 Sekunden :D


  • ich kann mich dennoch nur wiederholen. wie soll das gehen, dass eine vom system definierte variablenstruktur zb frame (6mal real) sich heute auf einmal anders verhalten soll, als sonst??!!!!!


    real bleibt nunmal real. und teile von frame ist nichts anderes als frame.real


    da gibts nix zu schnippeln


    Deswegen ja meine Frage,ob es irgendwie geht. Da es aber anscheinend nicht geht, möchte ich das Thema hiermit beenden.


    Danke an alle


    MfG

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