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

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

Thema: DWord Bit 0.7=Vorzeichen

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hab auch mal ne Frage zum Word bzw DWord.
    Wieso bekomme ich bei einem in der Symboltabelle angelegten Dword eine -2147483648 raus wenn ich bit 0.7 setze?
    Ich dachte bei DWord gibt's kein Vorzeichen?

    0.7-0.0 1.7-1.0 2.7-2.0 3.7-3.0
    Für einen Störmanager benötige ich die Stelle des Bits mit der höchsten Wertigkeit um die dazugehörige Stelle auszugeben. Dies
    funktioniert auch super bis bit 0.7 auslöst. Ich brauche keine -2147483648 sondern +2147483648 (10000000000000000000000000000000)

    verwende ich ABS bei -2147483648 kommt ne 0

    Was mach ich denn nun damit?
    Zitieren Zitieren DWord Bit 0.7=Vorzeichen  

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

    Standard

    Wo steht denn der Wert -2147483648?

    Ich verstehe Dein Problem noch nicht. Du kannst ja mit Deinen Bits machen was Du möchtest. Wenn das als REAL definiert ist in der Symboltabelle kommen die Bits ja trotzdem.
    Was macht der "Störmanager"?

  3. #3
    Registriert seit
    06.05.2012
    Beiträge
    1
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Doppelwort: -2147483648 bis +2147483647
    Das Bit 31 ist das Vorzeichenbit.

  4. #4
    Registriert seit
    04.10.2010
    Beiträge
    166
    Danke
    45
    Erhielt 34 Danke für 27 Beiträge

    Standard

    Wie lässt du dir dein Doppelword anzeigen?

    Doppelword ist vorzeichenlos. Liegt meiner Meinung nach nur an der Darstellung. Stell doch mal auf Hex oder Binär um und schau da doch mal.

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.207
    Danke
    927
    Erhielt 3.293 Danke für 2.662 Beiträge

    Standard

    Das kommt daher, weil jegliche Operationen mit numerischen Datentypen stets "signed" (vorzeichenbehaftet) sind - S7 kennt keine vorzeichenlosen numerischen Datentypen und Operationen. (*) Deshalb werden beim Beobachten (als Dezimal) die Werte auch als signed interpretiert und ggf. negativ angezeigt. Alle Ganzzahl(Festpunkt)-Operationen gehen davon aus, das die Operanden signed sind.

    Wenn Du 32-Bit-Werte als "vorzeichenlos" verarbeiten willst, dann darfst Du das nur dann mit den vorzeichenbehafteten Operationen tun, solange der Wert positiv (>= 0) ist, d.h. das Bit .31 = 0 ist.
    Für das Bit .31 brauchst Du eine Sonderbehandlung: vergleiche Deinen Wert mit 0
    * < 0 : Bit .31 ist 1 --> Du hast das höchstwertige gesetzte Bit gefunden
    * >= 0: Bit .31 ist 0 --> Du kannst mit den signed-Operationen weiterarbeiten


    (*) DWORD bedeutet NICHT unsigned-DINT! DWORD ist kein numerischer Datentyp zum Rechnen sondern eine Ansammlung von 32 Bits. Einfach den Inhalt eines DWORD als unsigned-DINT interpretieren ist nicht korrekt.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    SPS`ler (14.12.2015)

  7. #6
    SPS`ler ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.03.2014
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Vielen Dank für die Antworten =)

    ich ermittle mit einem code die höchste ausgelöste Stelle im DW

    L #MSB_Data_1
    DTR
    SRD 23
    L 126
    -I
    T #MSB1

    funktioniert auch super bis bit 0.7 auslöst. Den code habe ich aus dem internetz.

    Danke Harald für die genaue Erläuterung. Das hilft mir weiter

  8. #7
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.358
    Danke
    456
    Erhielt 695 Danke für 520 Beiträge

    Standard

    Zitat Zitat von SPS`ler Beitrag anzeigen
    funktioniert auch super bis bit 0.7 auslöst. Den code habe ich aus dem internetz.
    Sobald das Vorzeichenbit gesetzt ist funktioniert der Code normaleweise nicht mehr da das DTR vorbezeichenorientiert von einem DINT ausgehend wandelt.

    In dem Beitrag hier hatten wir das schon mal detailliert ausprobiert. Da sind auch einige Beispiele drin wie du an deine Bitposition kommst.
    Bit in Wort nach Integer
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  9. #8
    SPS`ler ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.03.2014
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke Ronin, ich hab es wie Harald schrieb über Vergleicher gemacht. Bei einem negativen Wert schreib ich 31 in meine Variable (#MSB1).

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

    Standard

    Lieber SPS'ler,
    wozu braucht man sowas?
    Also ich meine in Verbindung mit Alarmverarbeitung.

  11. #10
    SPS`ler ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    05.03.2014
    Beiträge
    11
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ist das ne Fangfrage? ich generiere darüber Meldenummern. Über Schleifen kopiere ich dann zusätzliche Daten (Zeitstempel, K,G,Q) zur Meldenummer.
    dieses Pakete schieb ich dann auf ein 4-zeiligen Display. reicht dir das als info?

Ähnliche Themen

  1. TIA TIA V12 einzelnes Bit aus Dword Variable verschalten
    Von Neuling74 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 10.06.2013, 07:28
  2. 25 Bit Zähler als DWord umwandeln
    Von Schmittschmitt im Forum CODESYS und IEC61131
    Antworten: 13
    Letzter Beitrag: 05.04.2012, 16:38
  3. Dword auf Bit Array übertragen
    Von SCM im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 22.07.2011, 14:22
  4. SCL Bit in Dword
    Von enter im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.08.2010, 00:08
  5. Antworten: 5
    Letzter Beitrag: 24.06.2010, 10:18

Lesezeichen

Berechtigungen

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