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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: 8 Bits in Byte speichern

  1. #1
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich steh gerade auf dem Schlauch. Ich lese mir aus einem DB indirekt jeweils ein Bit aus 8 verschiedenen Adressen aus und möchte jeweils dieses Bit in einem Byte laden. Nur steh ich auf dem Schlauch gerade wie ich das am Besten programmier. Normalerweise hab ich mit indirekten Programmieren keine Probleme - nur jetzt komm ich einfach nicht vom Schlauch runter. Vielleicht könnte mir das jemand kurz erklären.
    mfg
    Helmi
    Zitieren Zitieren 8 Bits in Byte speichern  

  2. #2
    Registriert seit
    30.07.2011
    Ort
    Uithuizen,Niederlande
    Beiträge
    45
    Danke
    7
    Erhielt 5 Danke für 5 Beiträge

    Standard

    mit awl

    a db10.dbx0.0
    = db20.dbx0.0
    a db10.dbx1.5
    = db20.dbx0.1

  3. #3
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    das ist mir schon klar.

    ich muss etwas weiter ausholen.

    ich habe einen db der etwa so aufgebaut ist:

    0.0 1_bool1
    0.1 1_bool2
    2.0 1_int1
    4.0 1_int2
    6.0 1_int3
    8.0 2_bool1
    8.1 2_bool2
    10.0 2_int1
    12.0 2_int2
    14.0 2_int3

    ich errechne mit AR1 und lese dann dementsprechend die bool1´s aus.
    Ausgelesen werden insgesamt 8 Bits

    Die Bools möchte ich dann in einem DB126.DBB16 speichern.
    mfg
    Helmi

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

    Standard

    Kann es sein, daß Du gerade etwas zu kompliziert denkst und sozusagen den Wald vor lauter Bäumen nicht siehst?

    So wie's PeterHollanda geschrieben hat:
    Code:
    U #ausgelesenes_Bit_1
    = DB126.DBX16.0
    
    U #ausgelesenes_Bit_2
    = DB126.DBX16.1
    
    ...
    oder ist das eigentliche Problem, daß das Ganze in 'ner Schleife geschieht?

  5. #5
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ja sorry
    ich denk leider schon den ganzen Tag kompliziert - und komme dann nicht auf die einfachsten Lösungen

    das ist eine Schleife, die 8 mal durchläuft

    theoretisch müsste es so funktionieren

    U #ausgelesenes_Bit
    SPBN end

    SET
    = db126.dbx16.0

    L DB126.DBB16
    shl 1
    T DB126.DBB16

    end: NOP0

    oder steh ich immer noch wie der Ochs vorm Berg?
    Geändert von HelmiMUC (04.02.2013 um 21:16 Uhr)
    mfg
    Helmi

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

    Standard

    Ich vermute mal, wenn so:
    Code:
    //Schleifenstart, Durchlauf 8x
    
    
    // letztes Bit zum Speichern frei machen:
    L DB126.DBB16        // Byte laden
    SLW 1                // Bits 1 Stelle nach links verschieben
    T DB126.DBB16        // Byte speichern
    
    
    // Bit an letzter Stelle speichern:
    U #ausgelesenes_Bit  // ausgelesenes Bit
    = db126.dbx16.0      // an letzte Bitstelle schreiben
    
    
    //nächster Schleifendurchlauf
    Bin mir jetzt aus dem Stehgreif aber nicht sicher, ob Du links oder rechts schieben mußt.

  7. #7
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Das schaut gut aus - hatte ich in meinem letzten Post auch (ähnlich) geschrieben

    und links schieben ist meines Erachtens richtig

    Aber das Bit 16.0 muss vor dem Schieben geschrieben werden, denn sonst würde beim ersten Schleifendurchgang sofort geschoben werden, ohne überhaupt zu schreiben
    mfg
    Helmi

  8. #8
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.716
    Danke
    443
    Erhielt 914 Danke für 739 Beiträge

    Standard

    Zitat Zitat von HelmiMUC Beitrag anzeigen
    ...
    Aber das Bit 16.0 muss vor dem Schieben geschrieben werden, denn sonst würde beim ersten Schleifendurchgang sofort geschoben werden, ohne überhaupt zu schreiben
    Nein, Du mußt erst den alten Brams wegschieben und dann das neue Bit an die freigewordene Stelle schreiben.

    Denk mal an den 8. Durchlauf ->

    Deine Variante: an
    db126.dbx16.0 schreiben, schieben, Bit steht an db126.dbx16.1
    bei mir: schieben, altes 8.bit fällt raus, letzten 7 bleiben erhalten, an db126.dbx16.0 schreiben -> 8 gespeicherte Bits


    PS: Wieso fügt die Forumssoftware einfach (immer vor den db126) irgendwelche Enter ein?
    Nüschts zu machen. Eigentlich soll alles hinter "Deine Variante:" und "bei mir:" in jeweils einer Zeile stehen.
    Kann mir das mal jemand erklären, warum das nicht geht? Ist doch nur simpler Text?
    Geändert von hucki (04.02.2013 um 22:02 Uhr) Grund: die Forumssoftware fügt mal wieder unkontrolliert <BR>s ein

  9. #9
    Registriert seit
    01.05.2008
    Beiträge
    93
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ja - du hast recht!
    Daran hab ich nicht gedacht - somit ist beim letzten Durchgang das letzte Bit auf 16.0

    Dank dir!
    mfg
    Helmi

  10. #10
    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
    Greift ein HMI auf das gesammelte Byte zu?
    "arbeite klug, nicht hart" - deutsches Sprichwort

Ähnliche Themen

  1. Byte im DB in Bits auflösen
    Von SIMREU im Forum Simatic
    Antworten: 26
    Letzter Beitrag: 11.03.2016, 09:58
  2. Bits in Byte setzen
    Von bass im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 14.07.2011, 14:42
  3. Bits aus Byte-Array holen
    Von MW im Forum Hochsprachen - OPC
    Antworten: 7
    Letzter Beitrag: 11.07.2007, 20:29
  4. Bits aus Byte
    Von Reto im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 30.01.2007, 23:53
  5. Bits in temporäres Byte mappen und gesetzte Bits zählen
    Von yetibrain im Forum PC- und Netzwerktechnik
    Antworten: 3
    Letzter Beitrag: 19.02.2005, 16:31

Lesezeichen

Berechtigungen

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