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

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

Thema: SchiebeFrage Byte/Bit

  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,

    Ich habe ein Byte und würde gerne wissen ob Bit 4 null oder eins ist.

    Mit der SHR_L und SHR_R kann ich die bits hin und her schieben. Ist aber für 16 bit. Logischerweise ist dann mein Byte nur Bit 0 bis 7, richtig ?
    Möglich wäre es doch, dass ich solange hin und her schiebe bis nur noch bit 4 da ist. Am ausgang (Int) steht dann entweder 1 oder 0, richtig ?
    Oder werden die freigewordenen Bitpositionen mit 1 aufgefüllt ?

    Gruß und Dank
    Zitieren Zitieren SchiebeFrage Byte/Bit  

  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

    Also ich würds so machen:

    L Byte
    SRW 4
    >0
    =Bit4

    Tschuldigung, ich hatte irgendwie hier reingeschrieben, das sollte titiert werden! Ralle
    Geändert von Ralle (25.09.2012 um 17:18 Uhr)

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

    Limette (25.09.2012)

  4. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Richtig, du kannst 12 Mal nach links schieben, dann 15 Mal nach rechts, so dass dein Bit genau in Position 0 stehen bleibt und hast dann eine Int 0 oder 1 zu auslesen. Aufgefüllt wird mit 0.
    Oder du maskierst aus mit einem Wert, der deiner Bitposition entspricht, in deinem Fall mit 8hex (00000000 00001000bin) mit dem Befehl UW und vergleichst dann auf Null oder ungleich Null.
    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. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Limette (25.09.2012)

  6. #4
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.713
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Warum verUNDest du nicht mit einem Maskenbyte/-word und fragst auf größer 0?
    In der Maske alle nichtbenötigen Stellen auf Null und nur Bit 4 auf 1, dann bleibt nur das über, was Du wissen willst.

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

    Zitat Zitat von hucki Beitrag anzeigen
    Warum verUNDest du nicht mit einem Maskenbyte/-word und fragst auf größer 0?
    In der Maske alle nichtbenötigen Stellen auf Null und nur Bit 4 auf 1, dann bleibt nur das über, was Du wissen willst.
    wie verUNDE ich denn eine Bitposition mit 0. So wie Ralle vorschlägt?

  8. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von borromeus Beitrag anzeigen
    Also ich würds so machen:

    L Byte
    SRW 4
    >0
    =Bit4
    Bin nicht sicher, dass das so funktioniert, denn es kann ja auch noch bit 5 True sein?

    Ich denke vielleicht so:

    Code:
    L Byte
    SRW 4   //Das Bit wird in A1 geschoben (letztes rausgeschobenes Bit)
    SPP MBI4 /wenn das letzte rausgeschobene Bit 1 ist, dann...
    
    R Bit4
    SPA NIX
    
    MBI4: set
    S Bit4
    
    NIX: NOP 0
    Kann man ja mal testen.
    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

  9. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Limette (25.09.2012)

  10. #7
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von Limette Beitrag anzeigen
    wie verUNDE ich denn eine Bitposition mit 0. So wie Ralle vorschlägt?
    Code:
    L Byte
    L w#16#8  //8hex = 1000bin
    UW
    L 0
    <>I
    =Bit4
    PS: Kannst du auch L 8, schreiben, ist ja das geiche wie 8hex!
    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

  11. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Limette (25.09.2012)

  12. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von Limette Beitrag anzeigen
    Ich habe ein Byte und würde gerne wissen ob Bit 4 null oder eins ist.
    Ich würde das Bit mit einer Wortverknüpfung abfragen. Nach einer Wortverknüpfungsoperation ist das Statusbit A0 immer 0 und das Statusbit A1 zeigt an, ob das Ergebnis im Akku1 ==0 oder <>0 ist. Bei ver-unden eines Einzelbits steht dann also genau der Wert dieses Bits in A1 und kann mit "U <>0" oder "U >0" direkt abgefragt werden. Bedingte Sprünge sind nach der Wortverknüpfung auch sofort möglich (SPZ, SPN, SPP).
    Code:
          L     "Byte"
          UW    W#16#10     //Wert des Bit4 steht danach in Statusbit A1
          U     <>0         //A1 ins VKE kopieren
          =     "Bit4"
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    Limette (25.09.2012)

  14. #9
    Registriert seit
    30.08.2010
    Ort
    Östereich
    Beiträge
    1.458
    Danke
    502
    Erhielt 217 Danke für 192 Beiträge

    Standard

    und warum nicht direkt auf das Bit?

    je nach dem ob M oder DB oder E mal als beispiel mit M:

    U M10.3
    = deine Aktion bei "1"

    oder

    UN M10.3
    = deine Aktion bei "0"
    Elektrotechnik und Elektronik funktioniert mit Rauch (Beweis: Tritt Rauch aus, funktioniert auch das Bauteil nicht mehr)

  15. #10
    Registriert seit
    12.04.2005
    Ort
    Black Forest
    Beiträge
    1.334
    Danke
    27
    Erhielt 129 Danke für 116 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von winnman Beitrag anzeigen
    und warum nicht direkt auf das Bit?

    je nach dem ob M oder DB oder E mal als beispiel mit M:

    U M10.3
    = deine Aktion bei "1"

    oder

    UN M10.3
    = deine Aktion bei "0"
    Ich lege mich nieder , das ist das einfachste

Ähnliche Themen

  1. S7 bit /byte
    Von MyNameIsThoms im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.05.2012, 20:46
  2. BIT nach BYTE in SCL
    Von Tigerente1974 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 28.03.2012, 16:42
  3. Byte in 8 bit teilen
    Von d3nnis.c im Forum Simatic
    Antworten: 23
    Letzter Beitrag: 19.01.2010, 01:30
  4. bit and byte
    Von PG710 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 30.12.2008, 21:57
  5. Bit/Byte toggle
    Von Farinin im Forum HMI
    Antworten: 13
    Letzter Beitrag: 19.09.2008, 08:55

Lesezeichen

Berechtigungen

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