Byte im DB in Bits auflösen

SIMREU

Level-1
Beiträge
22
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
das auf dem Bild makierte Byte soll zur besseren Dokumentation in einzelne Bits aufgelöst werden. Kann mir einer erklären wie man das macht...

Gruß SIMREU
 

Anhänge

  • DB.JPG
    DB.JPG
    134 KB · Aufrufe: 137
kann ich nicht auch aus dem datentyp Byte einfach 8 Zeilen mit Datentyp BOOL anlegen? oder zerschieß ich dann irgendwas? der Bereich ist in einer "Struct" angelegt.
 
du musst aufpassen. ein array belegt immmer 1 oder mehrere worte.

wenn du alle bit als bool untereinanderschreibst kann nix passieren
 

Anhänge

  • Zwischenablage02.gif
    Zwischenablage02.gif
    7,7 KB · Aufrufe: 69
Zuletzt bearbeitet:
Hallo zusammen,
ich stehe vor einen Ähnlichen Problem.

Möchte gerne in einem Multiinstanz ein EB auflösen in seine Bits. Wenn ich ein Array of Bool definieren, kan ich kein EB anlegen. Gibt es einen Befehl der das Ganz wandelt oder schiebt??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Code ist eine AWL-Quelle. In TIA mußt Du die Deklarationen bis zum "BEGIN" im Kopfbereich des Bausteins mit der Maus zusammenklicken, die Deklarationen gehören nicht in die Netzwerke.
Alternativ gibt es vermutlich in TIA eine Möglichkeit um AWL-Quellen zu importieren. Check mal die TIA-Hilfe.

Harald
 
Habe es jetzt hiermit auch mal probiert, ohne Erfolg:

Code:
      CALL  DPWR_DAT
         LADDR   :=#EingangsByte_Antrieb
         RECORD  :=#Eingang
         RET_VAL :=#Schreiben_OK
      NOP 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
DPWR_DAT hat mit Bit-Zerlegung oder Kopieren im Speicher nichts zu tun. Wie bist Du drauf gekommen, daß man den Baustein irgendwie benutzen könnte? :confused:

Deinen Anhang im Beitrag #16 kann ich nicht öffnen.
Das Bit-Zerlegungs-Struct in Static legen wäre komplizierter, weil bei der indirekten Adressierung noch der Multiinstanz-Offset berücksichtigt werden müßte. In TEMP ist die nur temporär benötigte Struktur am besten aufgehoben.

Hast Du die Struktur #tempWord in TEMP angelegt so wie die Deklaration in dem "roten" Bild zu sehen ist? Dann sollte Dein Programmcode zum zugreifen und beobachten der Bits so aussehen:
Code:
//Eingangbyte in Bit-Struktur in TEMP kopieren
      LAR1  P##tempWord                 //Adresse der Bit-Struktur in TEMP
      L     #EingangsByte_Antrieb       //Eingangsbyte
      T     LW [AR1,P#0.0]              //in die Bit-Struktur kopieren

//die einzelnen Bits der Kopie des EingangsByte beobachten und z.B. nach Static umkopieren
      U     #tempWord.Bit0
      =     #MyBit

      U     #tempWord.Bit1
      =     #MyBit

      U     #tempWord.Bit2
      =     #MyBit

      U     #tempWord.Bit3
      =     #MyBit

      U     #tempWord.Bit4
      =     #MyBit

      U     #tempWord.Bit5
      =     #MyBit

      U     #tempWord.Bit6
      =     #MyBit

      U     #tempWord.Bit7
      =     #MyBit
#MyBit kann jeweils irgendeine Bool-Variable sein, z.B. auch ein Bool in Static.

Harald
 
Mogren, ich habe es jetzt mit einem Platzhalter gemacht:

Motous.png

funktioniert.
Kann es aber auch gerne noch in Temp umstelle, wenn du sagt das es somit deutlicher ist.
 
Mogren, ich habe es jetzt mit einem Platzhalter gemacht:

Anhang anzeigen 31554

funktioniert.
Kann es aber auch gerne noch in Temp umstelle, wenn du sagt das es somit deutlicher ist.

Wenn Sie dieser FB wie MultiInstanz braucht is dieser code nicht richtig.
Sie muste die inhalt von AR2 bei AR1 addieren.
Oder Sie must die Struct Eingangs_Word in Temp bereich declarieren wie Harold schreib.
Wenn die Struct in Stat bereich steht must die code mit TAR2 und +AR1 gebraucht wurde wenn der FB multiInstanz verwendet wurde. Sie konte die test machen um diese FB 2 x hinter einander in ein andere FB als MultiInstanz auf zu ruffen. Wenn die Haup FB keine iN,OUT un INOUT var und ach nog keine Stat Var habe Solt die erste Aufruf nog auf die richtige werte aufgreifen aber bei die 2e aufruf geht es nicht gut.
Code:
LAR1  P##Eingang_Word
TAR2
+AR1
L #Eingansbyte_Antrieb
T W[AR!,P#0.0]
 
Zurück
Oben