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

Ergebnis 1 bis 10 von 10

Thema: bitweise auf ein byte in einem db zugreifen

  1. #1
    Registriert seit
    14.01.2016
    Beiträge
    15
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich bin neu in der SCL Welt ...

    ich möchte das bit 7 einer Byte Variablen aus einem DB abfragen.
    Wie geb ich das von der Syntax her ein?
    Geändert von Lukas_Ink (02.02.2016 um 12:18 Uhr)
    Zitieren Zitieren bitweise auf ein byte in einem db zugreifen  

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

    Standard

    Z.B. per Slice: MyByte.X7

  3. #3
    Registriert seit
    21.11.2014
    Beiträge
    228
    Danke
    7
    Erhielt 30 Danke für 28 Beiträge

    Standard

    Zitat Zitat von hucki Beitrag anzeigen
    Z.B. per Slice: MyByte.X7
    Bei alten CPUs gehts leider nicht. Zumindest eine 300er lässt es nicht zu. Da muss noch absolut adressiert werden (DB?.DBX?.?). Gibt dann beim kompilieren eine Warnung.

  4. #4
    Lukas_Ink ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.01.2016
    Beiträge
    15
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ist ein WINAC-RTX
    und mit dem DB zusammen dann myDB.MyByte.x7 ?

  5. #5
    Lukas_Ink ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.01.2016
    Beiträge
    15
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hier sollte das Bild kommen
    Geändert von Lukas_Ink (02.02.2016 um 13:02 Uhr)

  6. #6
    Lukas_Ink ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.01.2016
    Beiträge
    15
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    fehlermeldung.jpg
    das kommt dann als Fehlermeldung

  7. #7
    Registriert seit
    15.04.2009
    Ort
    Nordsachsen
    Beiträge
    252
    Danke
    171
    Erhielt 105 Danke für 97 Beiträge

    Standard

    Die WinAC-RTX hat den Befehlssatz einer S7-400. Damit ist Slice nicht möglich (s. Beitrag #3).

    MfG Ralph

  8. Folgender Benutzer sagt Danke zu RGerlach für den nützlichen Beitrag:

    Lukas_Ink (02.02.2016)

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

    Du kannst entweder absolut darauf zugreifen, also im DB nachsehen, welches Byte dort belegt ist und dann z.B. DB1.DBX10.7

    Oder du schaust dir mal in der Hilfe von TIA und Step7 Classik (die ist oft besser) und hier im Forum den "AT"-Befehl an (Suche im Forum nach "AT"). Damit kannst du in SCL eine AT-Ansicht auf das ein Byte legen, welche z.B. aus 8 Bit besteht.
    Das geht nicht direkt mit den DB.xxx, du mußt dazu die Daten im FC erst umkopieren. Sieh dir das zuerst an, dann wieder fragen.
    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

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

    Lukas_Ink (02.02.2016)

  11. #9
    Lukas_Ink ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    14.01.2016
    Beiträge
    15
    Danke
    5
    Erhielt 0 Danke für 0 Beiträge

    Standard

    wie muss ich das dann absolut schreiben?

  12. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.197
    Danke
    926
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Christmaspoo Beitrag anzeigen
    Da muss noch absolut adressiert werden (DB?.DBX?.?).
    Muß nicht. Das geht auch symbolisch, indem man mit einer passenden Bitmaske ver-UND-et und schaut, ob dabei 0 oder <>0 rauskommt. Eventuell kann man auch eine AT-Sicht drüber legen. Oder aufwendiger: man verschiebt das zu testende Bit zum niederwertigsten Bit und konvertiert dann ..._TO_BOOL
    Code:
    BoolVar := (MyByte AND 2#10000000) <> 0 ;
    oder
    BoolVar := BYTE_TO_BOOL( SHR(IN:=MyByte, N:=7) ) ;
    Nachtrag: speziell das höchstwertige Bit abfragen kann man auch durch Vergleich
    Code:
    BoolVar := BYTE_TO_INT(MyByte) >= 128 ;
    Harald
    Geändert von PN/DP (02.02.2016 um 13:44 Uhr)
    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:

    Lukas_Ink (02.02.2016)

Ähnliche Themen

  1. Auf ein bestimmtes Element in einem Array zugreifen
    Von Erema im Forum Sonstige Steuerungen
    Antworten: 0
    Letzter Beitrag: 05.05.2015, 09:04
  2. Antworten: 33
    Letzter Beitrag: 22.10.2010, 17:13
  3. Antworten: 5
    Letzter Beitrag: 15.07.2008, 16:38
  4. Elau: Ein Byte, bitweise in ein Array schreiben?
    Von Trashman im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 24.10.2007, 19:27
  5. Wincc flex "ein Byte bitweise auflösen"
    Von Volkmer im Forum HMI
    Antworten: 0
    Letzter Beitrag: 15.02.2007, 16:00

Lesezeichen

Berechtigungen

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