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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: DWord Bit 0.7=Vorzeichen

  1. #11
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.190
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von SPS`ler Beitrag anzeigen
    ich generiere darüber Meldenummern.
    Was machst Du wenn mehrere Meldungen gleichzeitig anstehen? Nur die "höchstwertige" Meldung anzeigen und die anderen ignorieren/verschweigen?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  2. #12
    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

    Hallo Harald,

    ich lösche das Bit mit Schiebefunktion um die ermittelte Position und widme mich dann dem nächsten Bit. Bin mir aber noch nicht sicher ob mir das gefällt. :/
    Geändert von SPS`ler (15.12.2015 um 07:25 Uhr)

  3. #13
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.190
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von SPS`ler Beitrag anzeigen
    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.
    Hmm, dieser Code (und leichte Abwandlungen) wird wohl oft kopiert ohne ihn richtig zu verstehen und ohne genügend zu testen.
    Stand da im "internetz" auch, daß dieser Code nur für WORD funktioniert, aber für DWORD nicht geeignet ist (von dem Vorzeichenproblem/Bit.31 ganz abgesehen)?
    Mit DWORD funktioniert er nämlich nicht "super", sondern kann falsche Ergebnisse liefern.
    RONIN hat in dem von ihm in Beitrag #7 verlinkten Thread darauf hingewiesen, daß die Formel bei DWORD problematisch ist.


    Eigentlich naheliegend ist, mal die Ergebnisse dieser "Wunder"-Formel bei Grenzwerten wie 0 und DW#FFFFFFFF und DW#16#7FFFFFFF ... zu testen - und siehe da, die Formel liefert viele falsche Ergebnisse:
    - 0 liefert -126 --> OK, mit 1 Spezialfall können wir leben, Check auf 0 ist einfach
    - DW#16#FFFFFFFF liefert 257 --> richtig wäre 32 --> OK, noch eine Gruppe von Spezialfällen wegen Vorzeichen-Bit
    - DW#16#7FFFFFFF liefert 32 --> richtig wäre 31
    - DW#16#7FFFFFC0 liefert 32 --> richtig wäre 31
    - DW#16#7FFFFFBF liefert 31 --> korrekt
    - DW#16#3FFFFFFF liefert 31 --> richtig wäre 30
    - DW#16#1FFFFFFF liefert 30 --> richtig wäre 29
    - DW#16#1FFFFFF0 liefert 30 --> richtig wäre 29
    - DW#16#1FFFFFEF liefert 29 --> korrekt
    ...
    - DW#16#01FFFFFF liefert 26 --> richtig wäre 25
    - DW#16#01FFFFFE liefert 25 --> korrekt
    ...
    Verdammt, wie viele "Spezialfälle" gibt es denn noch?!!

    Warum diese falschen Ergebnisse?
    Weil DTR zum nächsten als Gleitkommazahl darstellbaren Wert rundet, wenn der REAL aus mehr als 24 Bit Ganzzahl gebildet werden soll, weil im REAL-Format nur 23 Bits für die Mantisse zur Verfügung stehen. Und wenn DTR dabei aufrundet, dann wird ein um 1 zu hoher Wert zurückgegeben.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. Folgende 3 Benutzer sagen Danke zu PN/DP für den nützlichen Beitrag:

    borromeus (16.12.2015),Gecko 65 (17.12.2015),RONIN (17.12.2015)

  5. #14
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Das habe ich damals auch dabei geschrieben, dass die Prüfung nur bis 24 Bit funktioniert. Die Aufgabenstellung des Fragestellers lautete damals, die Bits in einem WORD zu prüfen, und 16 Bit sind damit immer möglich.
    Dass jemand auf die Idee kommt sowas wirklich in der SPS mal zu verwenden, hätte ich auch nicht geglaubt. Ich würde es nicht tun.

  6. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    borromeus (16.12.2015)

  7. #15
    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

    Ich gebe zu, habe mich wirklich nicht mit dem code großartig beschäftigt und über die Grenzen der Datentypen nachgedacht. Vielen Dank für die Info

  8. #16
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Habe gerade von PN/DP einen Link zu einem Siemens-FAQ bekommen in dem dieser Algorithmus (der uns ja schon über mehrere Themen hinweg Kopfzerbrechen bereitet) sehr schön erklärt wird.
    Da steht dann auch drinnen das dieser (aus schon genannten Gründen) auch nur für WORD geeignet ist.

    Ist einen Blick wert:
    Maskieren vom niederwertigsten oder höchstwertigen gesetzten Bit in WORD und DWORD Variablen.

    Mit der Beschreibung ist eigentlich alles klar wie die Sache funktioniert, warum der Wert 126, usw.
    Aber als ich es begriffen habe war der erste Gedanken schon... "Meine Fresse.... was für ein....Schmarrn...."

    Nochmal Danke, Harald.
    Geändert von RONIN (18.12.2015 um 00:23 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

Ä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
  •