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

Ergebnis 1 bis 5 von 5

Thema: 64 Bit Zahl interpretieren

  1. #1
    Registriert seit
    06.01.2012
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Tag zusammen,

    ich habe eine 64 Bit Zahl die ich über Modbus in 4 verschiedenen Registern bekomme.
    Diese Zahl möchte ich jetzt in eine MD (32Bit) schieben.
    Mir fehlt im Augenblick jeglicher Lösungsansatz.
    Kann mir bitte jemand weiterhelfen?

    PS: Ich verwende einen WAGO Controler 750-841.

    Vielen Dank.
    Zitieren Zitieren 64 Bit Zahl interpretieren  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zunächst solltest du wissen, was die 64-Bit bei dem Gerät bedeuten, was sie auf den Modbus schickt. Bei 64-Bit fallen mir ein:
    1) Eine natürliche Zahl im Bereich 0 bis +2^64-1
    2) Eine ganze Zahl im Bereich -2^63 bis +2^63-1
    3) Ein doppelt genaue Fließkommazahl nach IEE754
    4) Zeitstempel
    5) etwas ganz Anderes.

    Im Fall 1) müsstest du z.B.
    - die niederwertigen 32 Bits in ein 32-Bit DWort kopieren.
    - Prüfen, ob der Rest 0 ist, wenn nicht, ist der Werte mit 32-Bit nicht darstellbar. Überlauf behandeln.
    Alles andere wird komplizierter.

  3. #3
    arkeq ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.01.2012
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für die schnelle Antwort.
    Es handelt sich um eine natürliche Zahl.
    Was meinst du mit Überlauf behandeln?
    Wie sieht das konkret aus?

  4. #4
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard

    Wenn zB das 37 Bit in der 64 Bit Integerzahl "1" ist kann man es eben nicht darstellen mit 32 Bit->Überlauf!
    Bestenfalls kann man es in eine Gleitkommazahl wandeln.

  5. #5
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In eine 32-Bit Zahl passen halt nur Werte bis 2^32-1.
    Im einfachsten Fall wurde auf der Modbus-Seite nur ein "übertrieben" großer Datentyp gewählt, aber der Wert überschreitet im Normalfall nie 2^32-1.
    Dann zeigt ein Überlauf einfach, dass jetzt etwas nicht normal ist. Vielleicht muß ein Bediener das Modbus-Gerät zurücksetzen, neu starten. Es hängt ganz von deiner Anwedung ab.

    Wenn aber der Zahlenwert normalerweise tatsächlich größer werden kann/soll, dann legst du die oberen Stellen in einem eigenen UDINT ab.

    Berechnungen müssen dann mit beiden Hälften durchgeführt werden Überträge berücksichtigt werden. Das wird dann schnell sehr umständlich. Ein Beispiel kann ich aus Zeitmangel nicht geben.

Ähnliche Themen

  1. Antworten: 20
    Letzter Beitrag: 18.07.2012, 16:17
  2. Bit bei Max einer Zahl setzen
    Von MK_Auto im Forum Simatic
    Antworten: 54
    Letzter Beitrag: 20.12.2010, 23:42
  3. BCD-Zahl in Ganzzahl (16 Bit) wandeln
    Von baui im Forum Programmierstrategien
    Antworten: 3
    Letzter Beitrag: 05.03.2009, 17:08
  4. INT-Zahl in eine S5T#-Zahl umwandeln ?
    Von Stefan B. im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 02.03.2006, 22:40
  5. 5-stellige ascii zahl in normale zahl umwandeln
    Von Anonymous im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 04.01.2006, 16:12

Lesezeichen

Berechtigungen

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