Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Umwandlung Word in Real

  1. #1
    Registriert seit
    30.06.2008
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,
    ich hatte ein Problem bei der Umwandlung von Ganzzahlen im Word-Format in Gleitpunktzahlen.
    die Umwandlung erfolgte so:

    L MW...(als Word)
    ITD
    DTR
    T MD...(als Real)

    Wenn die Ganzzahl aber mehr als 32768 betrug, bekam die Gleitpunktzahl negative Werte.
    Das lag daran, dass durch ITD die vorderen 16bit mit Einsen aufgefüllt wurde.

    Nach langem hin und her hab ich dann das ITD einfach weggelassen und alles hat funktioniert.

    In der Beschreibung zum Befehl DTR heißt es aber:Umwandlung einer Ganzzahl, 32 Bit, in eine Gleitpunktzahl, 32 Bit.

    Wieso geht das dann aber nur richtig mir einer 16bit Zahl und nicht mit einer 32 bit Zahl?
    Ich bin ja froh dass jetzt alles funktioniert, wollte aber wissen ob man das wirklich so macht, oder ob das bei mit jetzt Zufall ist dass es funktioniert.
    Und wenn ja, wie das richtig gemacht wird.

    Ich hoffe ihr könnt mir helfen.

    Grüße Eddie
    Zitieren Zitieren Umwandlung Word in Real  

  2. #2
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Dann schau Dir mal genau ein INT an
    +- 32768
    Das Heisst nach +32768 wird das oberste Bit gesetzt und es geht ins Minus. Das oberste Bit ist das Vorzeichen. Also sind dies 15 Bit plus Vorzeichen. Mann kann keine Dezimal Zahl größer als 32768 mit einem INT (Word) darstellen.

  3. #3
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    wenn du nur positive zahlen verwendest, dann kannst du mit nur DTR auskommen ...siehe jabba

    du schreibst, du möchtest ein wort wandeln, wenn dieses unsigned ist, was es ja zwangsläufig sein muß, da du werte größer 32767 bekommen kannst, mußt du sogar mit DTR arbeiten ...

    das DTR interpriert dann die 16 bit zahl als 32 bit zahl ... da diese zuvor in den akku geladen wird, ist da der L-teil mit deiner zahl beladen, der H-teil wird genullt ... deswegen funktionierts halt, aber wie gesagt, nur mit positiven zahlen

    @jabba: war es nicht -32768 bis +32767 wegen 0?
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  4. #4
    Registriert seit
    29.01.2008
    Ort
    ´s Stauferstädtle
    Beiträge
    314
    Danke
    54
    Erhielt 53 Danke für 44 Beiträge

    Standard

    nochmals zur Verdeutlichung:

    Dein MW, das Du als Word interpretierst (Wertebereich 0..65535) wird vom ITD-Befehl als Integer (-32768..+32767) interpretiert und daher erweitert ITD das Vorzeichen der Integerzahl auf eine im DINT-Format.

    sprich:
    8000h entspricht als Word 32768.
    als Integer -32767.
    als Doubleinteger wieder 32768.
    und ITD macht aus Integer -32768 einen DINT mit -32768, der mit FFFF8000h codiert ist.
    Geändert von kermit (12.11.2008 um 20:29 Uhr)
    Ein Frosch ohne Humor ist nur ein kleiner grüner Haufen!

  5. Folgender Benutzer sagt Danke zu kermit für den nützlichen Beitrag:

    Helmut (12.11.2008)

  6. #5
    Eddie ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.06.2008
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für die vor allem schnellen Antworten.
    Sowas in der Art hab ich mir gedacht, nur so ganz genau bin ich nicht durchgestiegen. aber jetzt ists klar.
    und da ich nur positive zahlen verwende funktioniert auch alles.
    Also nochmal vielen Dank

  7. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    ... wenn du das so richtig "schick" machen möchtest um damit zu verhindern, dass dir ggf ein Vorgängerwert, der noch im High-Wort des Akku herumspukt, in die Suppe spuckt, dann könntest du es so machen :
    Code:
    L#0
    L MW...(als Word)
    DTR
    T MD...(als Real)
    Gruß
    LL

  8. #7
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard

    dazu so viel aus der Hilfe:
    L <Operand> lädt den Inhalt des adressierten Bytes, Wortes oder Doppelwortes in AKKU 1, nachdem zuvor der alte Inhalt von AKKU 1 in AKKU 2 gespeichert wurde und AKKU 1 auf "0" zurückgesetzt wurde.

  9. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.728
    Danke
    398
    Erhielt 2.406 Danke für 2.002 Beiträge

    Standard

    ... wenn das bei Siemens so steht ...
    Allerdings frage ich mich dann, wozu die den Befehl ITD gemacht haben ... hast du mal nachgesehen, was der Befehl mit den Akku's macht ...?

  10. #9
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... wozu die den Befehl ITD gemacht haben
    um vorzeichenrichtig zu wandeln, oder? verstehe die frage nicht!
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  11. #10
    Registriert seit
    01.10.2007
    Ort
    Waiblingen
    Beiträge
    3.317
    Danke
    767
    Erhielt 536 Danke für 419 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    ... hast du mal nachgesehen, was der Befehl mit den Akku's macht ...?
    ähm, bist Du im Urlaub? Du sitzt doch bestimmt nicht weiter weg von der F1-Taste, wie ich oder?

Ähnliche Themen

  1. Umwandlung real -> hex und zurück
    Von Flo im Forum Programmierstrategien
    Antworten: 3
    Letzter Beitrag: 20.08.2008, 22:34
  2. Umwandlung von BCD nach REAL
    Von Anonymous im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.07.2005, 15:07
  3. Umwandlung REAL in INT
    Von cmm1808 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 24.06.2005, 10:22
  4. Umwandlung Real in ASCII
    Von SFx im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 27.04.2005, 16:05
  5. Umwandlung Word in Byte
    Von christoph im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.10.2003, 09:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •