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

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

Thema: Status-Byte aus Bits zusammen setzen

  1. #1
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    In meinem AWL Programm, entstehen im Laufe eines Durchlaufes verschiedene Stati. Diese setze ich im Programm in boolschen Variablen.

    Am ende liegen mir dann die Bools "SatusByte_bit0" bis "StatusByte_bit7" vor. Nun will ich diese 8 bit in einer Variable des Typs Byte zusammen fassen. Dass ich dieses Byte über die Peripherie versenden kann.

    Wie gelingt es mir diese ByteVariable zu erstellen?

    würde mich sehr über eure Hilfe freuen

    Beste Grüße
    FinalMistery
    Zitieren Zitieren Status-Byte aus Bits zusammen setzen  

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

    Standard

    liegen die bits hintereinander?
    ist statusbit 0 auch als Adresse Bit0?

    fall beides zutrifft, kannst du einfach:

    Code:
    l statusbyte
    t ....
    schreiben.
    "arbeite klug, nicht hart" - deutsches Sprichwort

  3. #3
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard

    Wo entstehen diese StatusBits?

    Nur in einem Baustein oder in mehreren?

    Was ist ein Wort?
    Ein Wort besteht aus 2 Byte's (HI und LOW-Byte)
    Ein Byte besteht aus 8 Bit's (Bit 0 bis Bit 7)

    Jetzt hast Du mehrere Möglichkeiten der Adressierung!

    Mal als Beispiel im Merkerbereich:

    Merker-Byte 10
    MB 10 // Symbolisch Status_Byte
    besteht aus:
    M 10.0 // Status_Bit_01
    M 10.1 // Status_Bit_02
    ...
    M 10.7 // Status_Bit_08

    im Merkerbereich kannst Du allem (Bit's und Byte) einen symbolischen Namen geben, das geht nicht direkt im Datenbaustein! Dann kannst Du das Ganze auch in den Lokaldaten eines Bausteins machen, etc.
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

  4. #4
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    leider liegen sie nciht hinertereinander im Adressereich und auch nicht am Anfang.
    Gibt es ein Möglichkeit mein Vorhaben zu realiesieren auch wenn die die Variablen dort liegen lasse, wo sie sind und auch bei eventuellen Verschiebungen die Funktionalität beibehalten wird?

  5. #5
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von MCerv Beitrag anzeigen
    Wo entstehen diese StatusBits?

    Nur in einem Baustein oder in mehreren?

    Was ist ein Wort?
    Ein Wort besteht aus 2 Byte's (HI und LOW-Byte)
    Ein Byte besteht aus 8 Bit's (Bit 0 bis Bit 7)

    Jetzt hast Du mehrere Möglichkeiten der Adressierung!

    Mal als Beispiel im Merkerbereich:

    Merker-Byte 10
    MB 10 // Symbolisch Status_Byte
    besteht aus:
    M 10.0 // Status_Bit_01
    M 10.1 // Status_Bit_02
    ...
    M 10.7 // Status_Bit_08

    im Merkerbereich kannst Du allem (Bit's und Byte) einen symbolischen Namen geben, das geht nicht direkt im Datenbaustein! Dann kannst Du das Ganze auch in den Lokaldaten eines Bausteins machen, etc.
    Die Daten liegen im Instanzbaustein eines FB's also mit Merkern schwer zu realisieren

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

    Standard

    Wenn die Daten in einem IDB liegen, sollte es doch einfach sein da ne anständige Struktur reinzubekommen.

    Stell doch mal den FB rein.
    "arbeite klug, nicht hart" - deutsches Sprichwort

  7. #7
    Registriert seit
    08.07.2011
    Beiträge
    37
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Code:
     
    IDB:
     
    stat Byte0 Byte
    stat SatusByte_bit0 bool
    stat SatusByte_bit0_old bool
    stat SatusByte_bit1 bool
    stat SatusByte_bit1_old bool
    stat SatusByte_bit2 bool
    stat SatusByte_bit2_old bool
    stat SatusByte_bit3 bool
    stat SatusByte_bit3_old bool
    .
    .
    .

    an für sich kann man das einfach um schriben und absolut adressieren. Aber da der Baustein nach seiner Fertigstellung zur Anwendung an andere Benutzer geht, soll er ausbaubarsein, auch in der Hinsicht, dass er weitere Variablen im IDB hinzufügen kann. Ohne die Adressierungen anpassen zu müssen.

    Gäbe es die Möglichkeit, dass ich die Bits in ein Array oder Struktur schreibe mit der Länge 8 und datentyp Bool und dann über die symbolische Adressierung an das "gewünsche Byte" komme.
    Geändert von FinalMistery (19.09.2011 um 11:46 Uhr)

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

    Standard

    aus diesem Bild werde ich nicht schlau!
    Was soll das denn sein?

    37.0 37.0 37.0 ???

    Poste bitte mal den ganzen Baustein.
    "arbeite klug, nicht hart" - deutsches Sprichwort

  9. #9
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard

    Zitat Zitat von FinalMistery Beitrag anzeigen
    leider liegen sie nciht hinertereinander im Adressereich und auch nicht am Anfang.
    Gibt es ein Möglichkeit mein Vorhaben zu realiesieren auch wenn die die Variablen dort liegen lasse, wo sie sind und auch bei eventuellen Verschiebungen die Funktionalität beibehalten wird?
    Wie wärs mit:

    U DeinStatusBit1
    = M10.0

    U DeinStatusBit2
    = M10.1

    Und alle sind dann im MB 10
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In so einem Fall mache ich das über indirekte Adressierung.
    Ich deklariere im Temp-Bereich ein Byte #status

    Dann lade ich die Adresse von #status und adressiere auf die Bit:

    Code:
          L     P##status
          LAR1  
          L     0
          T     LB [AR1,P#0.0]    //erst einmal löschen
    
          U     #ENDLAGE_G
          =     L [AR1,P#0.0]
    
          U     #ENDLAGE_A
          =     L [AR1,P#0.1]
    
          UN    #ENDLAGE_G
          UN    #ENDLAGE_A
          =     L [AR1,P#0.2]
    
          U     #STOERMELDUNG
          =     L [AR1,P#0.3]
    
          UN    #FRG
          O     
          U     #GRUNDFAHRT
          UN    #GRUNDBEDINGUNG
          =     L [AR1,P#0.4]
    
          U     #AUSGANG_A
          =     L [AR1,P#0.7]
    
          L #status
          T #outStatus
    Noch schöner geht es, wenn du als OUT oder IN_OUT eine Struktur mit deinem Byte definierst, die die einzelnen BiTs enthält. Dann kannst du im FC/FB direkt mit den definierten Namen in der Struktur arbeiten und außen an den FC/FB einfach ein Byte mit dieser Struktur (definiert in einem DB) anlegen.
    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. Folgende 2 Benutzer sagen Danke zu Ralle für den nützlichen Beitrag:

    FinalMistery (19.09.2011),roadrunner (18.04.2012)

Ähnliche Themen

  1. Bits in Byte setzen
    Von bass im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 14.07.2011, 14:42
  2. Int werte zusammen setzen
    Von skyvan im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 03.05.2011, 12:32
  3. Antworten: 1
    Letzter Beitrag: 17.09.2009, 13:50
  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
  •