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

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 49

Thema: Word Bit auslesen

  1. #1
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Hallo,

    habe ein word oder dword, in dem ich ein byte array mit 30 bools reinkopiert habe. so weit so gut.
    nun würde ich gerne -flexibel- ein bit aus dem word auslesen oder abfragen ist es gesetzt oder nicht.
    ich denke nicht dass ich der erste bin der soetwas frägt...hat jemand ein kleines Beispiel parat ?
    habs mit "SHR_DW" und einem Vergleicher probiert, funktioniert aber so glaub nicht.
    Zitieren Zitieren Word Bit auslesen  

  2. #2
    Registriert seit
    12.05.2009
    Beiträge
    61
    Danke
    21
    Erhielt 14 Danke für 12 Beiträge

    Standard

    Hallo,

    was verstehst du unter flexibel?
    Ich würde das mit der AT Sicht und einem Index in SCL lösen...

    Grüße

  3. #3
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    flexibel: ein mal bitstelle 4, ein mal bitstelle 14...usw
    je nachdem was ich gerade brauche.

  4. #4
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von Limette Beitrag anzeigen
    ...
    habs mit "SHR_DW" und einem Vergleicher probiert, funktioniert aber so glaub nicht.
    Der Ansatz ist doch gut. Die restlichen Bits vor dem Vergleich noch mit AND ausmaskieren und dann sollte es funktionieren. Poste doch mal Deinen Ansatz.

  5. #5
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    naja, viel ists nicht. ^^
    mit der bitnummer entsprechend die bytes verschieben. wenn ich bit 5 will muss ich dann Bitnummer = 5 nehmen ?
    danach vergleiche ich die verschobene Worddatei mit 1. kann man das so vergleichen ?

    Code:
    U( 
    L #BitNummer
    L #Worddatei
    SRD 
    T #Worddatei
    SET 
    SAVE 
    CLR 
    U BIE
    ) 
    U( 
    L #Worddatei
    L 1
    ==D 
    ) 
    = #_OK

  6. #6
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    ... Die restlichen Bits vor dem Vergleich noch mit AND ausmaskieren ...
    Ich denke, der Vergleich mit 1 kann meistens noch nicht funktionieren, da ja die restlichen, nicht weggeschobenen Bits auch 1 sein können. Deswegen musst Du die restlichen Stellen mit einem UD auch auf Null setzen.

    Und zur Sicherheit - Bit 5 ist dann das 6. Bit, ja?

  7. #7
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Und zur Sicherheit - Bit 5 ist dann das 6. Bit, ja?
    jup.

    wie würde ich das machen - alles auf Null setzen ?

  8. #8
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    ja, alle Bits die nicht benötigt werden, mit Null verANDen. Also hier L #Worddatei, L #1 und anschließend UD, dann bleibt nur daß 1.Bit übrig, und Du kannst kontrollieren, ob es gesetzt ist.

    Da wir aber gerade einen ähnlichen Thread hatten - Du kannst Dein DWORD auch einfach in ein MD kopieren, die entsprechenden Stellen schieben und dann prüfen, ob Mx.0 gesetzt ist.
    Geändert von hucki (16.03.2012 um 12:48 Uhr) Grund: Link eingefügt

  9. #9
    Registriert seit
    02.12.2008
    Beiträge
    58
    Danke
    35
    Erhielt 4 Danke für 3 Beiträge

    Lächeln

    So in etwa:

    Code:
    IN: m_dword Typ dword
    IN: bitnr Typ word
    RETURN: Ret_val Typ bool
    
    Code:
          L     #bitnr
          DEC   1
          L     #m_dword
          SRD   
          L     2#1
          UD    
          L     2#1
          ==I   
          =     #RET_VAL
    gruß
    roadrunner

  10. Folgender Benutzer sagt Danke zu roadrunner für den nützlichen Beitrag:

    Limette (16.03.2012)

  11. #10
    Limette ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.10.2010
    Beiträge
    239
    Danke
    107
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von roadrunner Beitrag anzeigen
    So in etwa:

    Code:
    IN: m_dword Typ dword
    IN: bitnr Typ word
    RETURN: Ret_val Typ bool
    
    Code:
          L     #bitnr
          DEC   1
          L     #m_dword
          SRD   
          L     2#1
          UD    
          L     2#1
          ==I   
          =     #RET_VAL
    gruß
    roadrunner

    L 2#1
    kann mir jemand diese zeile noch erklären ?

Ähnliche Themen

  1. Codesys 2.3 : Bit TO word
    Von Kieler im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 26.02.2012, 21:02
  2. Bit in FB von IDB Word adressieren
    Von Garog im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 10.01.2012, 12:54
  3. Einzelnes Bit aus Word
    Von sps-welt im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 28.04.2009, 09:44
  4. Bit im Word, InstanzDB...
    Von AndreK im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 09.03.2009, 11:36
  5. Bit im Word abfragen
    Von johnij im Forum HMI
    Antworten: 15
    Letzter Beitrag: 09.06.2008, 13:33

Lesezeichen

Berechtigungen

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