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

Ergebnis 1 bis 7 von 7

Thema: WinCC flexible 2008: Bitweise Verknüpfung von Doppelwortvariablen in VB

  1. #1
    Registriert seit
    01.01.2008
    Beiträge
    104
    Danke
    43
    Erhielt 21 Danke für 19 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe ein Problem mit folgendem VB Skript Code:

    Code:
    If (statdbd4 And (2^26)) And (statdbd14 And 2^29) Then
                    var4 = True
    Else
                    var4 = False
    End If
    var4 soll auf True gesetzt werden sobald das 26 Bit im Doppelwort statdbd4 und das 29 Bit im Doppelwort statdbd14 "1" haben.
    Warum funktioniert der Code so nicht? var4 bleibt immer False obwohl beide Bits gesetzt sind. Es muss zu 99% am Syntax der UND Verknüpfung der beiden bitweisen Verknüpfungen liegen.

    Wenn ich nur eine Doppelwortvariable in der IF Anweisung benutze funktioniert es.
    Also so:

    Code:
    If (statdbd4 And (2^26)) Then
      var4 = True
    Else
                    var4 = False
    End If
    Vielen Dank für eure Antworten!
    Gruß
    Da_Basco


    Ich kann über das Wasser laufen,
    weil ich weiß wo die Steine sind... (Rainald Grebe)
    Zitieren Zitieren WinCC flexible 2008: Bitweise Verknüpfung von Doppelwortvariablen in VB  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    es liegt daran, dass die Byte-Reihenfolge in der Betrachtung verdreht ist. Wenn du das Bit 26 im DWord setzt dann ist es nicht 2^26 in der Visu.
    Das Dword wäre dann so aufgebaut (für die Visu) :
    LowWord , Highword
    Bit 7..0 , Bit 15..8 , Bit 23..16 , Bit 31..24

    Gruß
    Larry

  3. #3
    Avatar von Da_Basco
    Da_Basco ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.01.2008
    Beiträge
    104
    Danke
    43
    Erhielt 21 Danke für 19 Beiträge

    Standard

    Hallo Larry,

    das ist nicht richtig. Wenn ich die entsprechenden Bits des DWords in der SPS setze, kommen diese auch richtig im Skript an. Es funktioniert ja lediglich diese UND Verknüpfung der beiden Klammerausdrücke nicht.
    Code:
    If (statdbd4 And (2^26)) And (statdbd14 And 2^29) Then
    Gruß
    Da_Basco


    Ich kann über das Wasser laufen,
    weil ich weiß wo die Steine sind... (Rainald Grebe)

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    ... dann mach doch mal bitte das Folgende :
    Code:
    If ((statdbd4 And (2^26))<>0) And ((statdbd14 And 2^29)) <>0) Then ...

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

    Da_Basco (27.04.2012)

  6. #5
    Avatar von Da_Basco
    Da_Basco ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.01.2008
    Beiträge
    104
    Danke
    43
    Erhielt 21 Danke für 19 Beiträge

    Standard

    Das funkioniert. Danke schonmal. Aber warum muss es jetzt auf einmal so aussehen wenn es mit einer Bedingung auch ohne <>0 geht?
    Gruß
    Da_Basco


    Ich kann über das Wasser laufen,
    weil ich weiß wo die Steine sind... (Rainald Grebe)

  7. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    ... dann geht auch :
    Code:
    var4 = ((statdbd4 And (2^26))<>0) And ((statdbd14 And 2^29)) <>0)
    ohne if und Konsorten ...

    Zu deiner letzten Frage :
    Die Verknüpfung "statdbd4 And (2^26)" bringt als Ergebnis entweder "0" (wenn das Bit nicht gesetzt ist) oder "2^26" (wenn das Bit gesetzt ist) zurück.
    Ich denke mal, das VB-Script den Wert "2^26" nicht als TRUE interpretiert ...
    Die Verknüpfung "((statdbd4 And (2^26))<>0)" kann als Ergebnis aber nur entweder TRUE oder FALSE haben ...

    Gruß
    Larry

  8. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Da_Basco (27.04.2012)

  9. #7
    Avatar von Da_Basco
    Da_Basco ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.01.2008
    Beiträge
    104
    Danke
    43
    Erhielt 21 Danke für 19 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Das klingt verständlich.

    Vielen Dank Larry!
    Gruß
    Da_Basco


    Ich kann über das Wasser laufen,
    weil ich weiß wo die Steine sind... (Rainald Grebe)

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 06.04.2012, 18:51
  2. Antworten: 4
    Letzter Beitrag: 08.03.2011, 12:29
  3. Antworten: 1
    Letzter Beitrag: 16.02.2011, 15:09
  4. Antworten: 3
    Letzter Beitrag: 26.02.2010, 09:22
  5. Antworten: 3
    Letzter Beitrag: 20.08.2009, 07:45

Lesezeichen

Berechtigungen

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