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

Ergebnis 1 bis 7 von 7

Thema: Warum läuft das nicht?

  1. #1
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich steh grad bissel aufm Schlauch.

    Warum funktioniert diese Anweisung
    Code:
    If (value And &h100) = &h100 Then
    .
    aber die nicht
    Code:
    If (value And &h1000000) = &h1000000 Then
    .
    "value" ist ein DWORD aus der S7. Ich möchte Bits ausmaskieren...

    Kann das VBS mit dem Format nicht umgehen?

    Wenn ich die Variable (value) in ein hex. E/A Feld schreibe wird der Wert korrekt ausgegeben!

    Ich benutze WinCC6.2 SP2

    N Tip wär nett.

    MfG Micha
    Zitieren Zitieren Warum läuft das nicht?  

  2. #2
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Welche Besonderheit ist in VBScript bei der bitweisen Verknüpfung von Variablen zu beachten?

    Konfigurationshinweis:
    Bei einer bitweisen Verknüpfung einer oder mehrerer 32-Bit Variablen in WinCC Global Script / VBScript kommt es zu einem Überlauf und Abbruch des Scripts, wenn in einer der Variablen das höchstwertige Bit (Bit 31) gesetzt ist.

    Beispiel:
    Wird VBScript verwendet, um den Zustand bestimmter Bits eines Doppelworts im Bild anzuzeigen, so kommt es zu einer falschen Anzeige, wenn das Bit 31 innerhalb des Doppelworts gesetzt ist.

    Abhilfen:
    Stellen Sie sicher, dass das Bit 31 nicht verwendet wird bzw. nicht gesetzt ist, wenn Sie bitweise Operationen (z.B. "And"-Operator) auf eine Doppelwortvariable anwenden. Sie sollten eine 32-Bit-Variable vor der ersten bitweisen Verarbeitung auf den Zustand des höchstwertigen Bits (Bit 31) überprüfen und ggf. anpassen. Mit der Abfrage "größer gleich" können Sie ermitteln, ob das Bit 31 einer 32-Bit-Variablen gesetzt ist. Wenn der Wert der 32-Bit-Variablen größer gleich 231 ist, so ist das Bit 31 gesetzt. In diesem Fall können Sie den Wert der 32-Bit-Variablen mit dem Wert 231 subtrahieren, um es rückzusetzen. Dadurch können die restlichen Bits immer korrekt ausgewertet werden. Das folgende Bild zeigt ein VBScript, dass diese Vorgehensweise verdeutlicht. In diesem Beispiel wird der Zustand des Bits 0 einer 32-Bit-Variablen zur Dynamisierung verwendet. Wenn das Bit 0 gesetzt ist, dann wird die Hintergrundfarbe eines Objekts auf den Wert "grün" gesetzt , sonst auf den Wert "grau".
    Welche Besonderheit ist in VBScript bei der bitweisen Verknüpfung von Variablen zu beachten?

    Gruß Kai

  3. Folgender Benutzer sagt Danke zu Kai für den nützlichen Beitrag:

    SPSKILLER (27.06.2008)

  4. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Man lernt nie aus und ich hab wieder mal gelernt, daß bei Siemens wirklich Stümper am Werk sind. Selbst, wenn das ein Problem vom eingebauten VBA ist, das kann man doch in einer scheißteuren Anwendung wie WinCC nicht so stehenlassen, oder? Was für Fallen sind da noch so eingebaut, man kann doch nicht immer erst ein 100-seitiges "Ausnahmeregelbuch" durcharbeiten, wenn man mal 3 Bits setzen will. Langsam bin ich doch froh, daß ich mein WinCC-Projekt durchhabe, na ja war ja Gott sei Dank auch nichts mit Userarchiv und andern Optionen.

    Tschuldige SPSKiller, das mußte mal raus .
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #4
    Registriert seit
    25.09.2005
    Ort
    Neuss
    Beiträge
    278
    Danke
    11
    Erhielt 31 Danke für 29 Beiträge

    Standard

    Einer der sehr vielen Punkte, warum ich Basic soooooooo [Ironie On] liebe [/Ironie On]

  6. #5
    Avatar von SPSKILLER
    SPSKILLER ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.05.2005
    Ort
    Baden-Württemberg
    Beiträge
    669
    Danke
    113
    Erhielt 153 Danke für 124 Beiträge

    Standard

    Hallo,

    ich hab noch mal probiert, und bin zum Ergebnis gekommen, dass mein Problem nix mit dem Posting vom Kai zu tun hat.
    Zum einen weil h1.000.000 meiner Meinung nach Bit 24 ist.

    Zum zweiten: Falls die Bytes zwischen S7 und WinCC irgendwie verdreht
    sind und h 1.000.000 für WinCC wirklich Bit31 wäre, dann müsste ja h 2.000.000 funktionieren.
    Tut es aber auch nicht.

    Wie maskiert ihr Bits in VBS aus?

    Gruß Micha

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

    Standard

    Hallo,
    ich muß zugeben, dass ich in deinem ersten Posting auch irgendwie das Bit 2^31 gesehen habe.
    In meinen eigenen Scripts geht es definitiv bis Bit 2^30 und auch keine Probleme damit. Ich könnte mir aber vorstellen, das du ein Problem mit der Byte-Ausrichtung im Doppelwort hast. Bitte überprüf das doch mal. Das niederwertigste SPS-Byte steht im DWORD vorne (also auf der höchsten VB-Wertigkeit) ...

    Gruß
    LL

  8. #7
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von SPSKILLER Beitrag anzeigen
    ich hab noch mal probiert, und bin zum Ergebnis gekommen, dass mein Problem nix mit dem Posting vom Kai zu tun hat.
    Zum einen weil h1.000.000 meiner Meinung nach Bit 24 ist.
    Das ist richtig, es gilt natürlich:

    BIT 24 = HEX 0100 0000

    BIT 31 = HEX 8000 0000

    Gruß Kai

Ähnliche Themen

  1. SFC14 läuft nicht
    Von Move im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 31.08.2010, 11:28
  2. warum läuft dieser einfach FUP nicht ganz korrekt
    Von forellengarten im Forum CODESYS und IEC61131
    Antworten: 14
    Letzter Beitrag: 24.08.2010, 11:56
  3. Step5 läuft nicht mehr! Warum?
    Von Tobbi18 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 25.01.2008, 22:46
  4. S7-200 Microwin läuft nicht
    Von FKJ im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 08.03.2007, 09:38
  5. X2X läuft nicht mit 50 m!?!
    Von da_kine im Forum Feldbusse
    Antworten: 2
    Letzter Beitrag: 12.02.2007, 21:18

Lesezeichen

Berechtigungen

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