Einzelnes Bit aus Word

sps-welt

Level-1
Beiträge
75
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich habe derzeit folgendes Problem das ich ein einzelnes Bit aus dem Zustandsword eines Profibus teilnehmers haben muss.

Ich möchte mir einen Parametrierbaren Baustein anlegen.

Ich möchte aber das word nicht in einen Datenbaustein schieben und die einenzelnen Bits herausholen. (U DBXX.dbx0.0 zb.)

Wie kann ich das anders lösen um mir einzelne Bits aus dem Word herauszuholen???

Danke im vorraus

Gruss Stefan
 
Hallo,
ein Beispiel ist das maskieren mit der UND-Word-Verknüpfung (UW) und Test ob Ergebnis > 0.
L #I_WORD // das zu prüfende Wort
L B#16#1 // Bit 0 prüfen
UW
T #temp
L #temp
L 0
>I // Bit 0 >0 ?
= #Bit_0 // Zuweisung

Das ganze in eine Schleife und das Problem ist gelöst….
mfg.
 
Hallo,
ein Beispiel ist das maskieren mit der UND-Word-Verknüpfung (UW) und Test ob Ergebnis > 0.
L #I_WORD // das zu prüfende Wort
L B#16#1 // Bit 0 prüfen
UW
T #temp
L #temp
L 0
>I // Bit 0 >0 ?
= #Bit_0 // Zuweisung

Das ganze in eine Schleife und das Problem ist gelöst….
mfg.
Hallo

Das ganze sieht ja mal gut aus!

Bei der Anweisung L B#16#1 Warum Bit 0 Prüfen?? Das ist doch Bit 1 in deiner Anweisung???

Wie sieht das ganze aus für Bit 2???

Gruss Stefan
 
Hallo!

L W#16#1 = Bit 0 abfragen
L W#16#2 = Bit 1 abfragen
L W#16#4 = Bit 2 abfragen
L W#16#8 = Bit 3 abfragen

usw.

Gruß,
Jupp
 
Genau so...
aber wenn du Arbeit sparen willst, zähl in einer Schleife hoch, ansonsten kannst du gleich jedes Bit einzeln abfragen


X = 1

#Schleifenanzahl = Nummer des zu prüfenden Bits

Schleife_Anfang
L X
L 2
*R
T X
Schleife_Ende
 
Bits

aus dem oben gelinkten Beitrag mit Fehlerkorrektur:

Code:
      L     P##WERT_IN
      LAR1  

      U      [AR1,P#1.0]
      =     #Bit_0

      U      [AR1,P#1.1]
      =     #Bit_1

      U      [AR1,P#1.2]
      =     #Bit_2

      U      [AR1,P#1.3]
      =     #Bit_3

      U      [AR1,P#1.4]
      =     #Bit_4

André
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

L W#16#1 = Bit 0 abfragen
L W#16#2 = Bit 1 abfragen
L W#16#4 = Bit 2 abfragen
L W#16#8 = Bit 3 abfragen

usw.

Gruß,
Jupp

Es geht auch noch so: (Ist für Anfänger vllt. übersichlicher)
Code:
L 2#1    = Bit 0 abfragen
L 2#10   = Bit 1 abfragen
L 2#100  = Bit 2 abfragen
etc.
Grüße
Gebs
 
Man könnte sich auch das Wort in ein Lokalwort (z.B. eines FC) kopieren und dann hiervon die Bits nehmen.

oder ...

die Perepherie-Adresse des Teilnehmers in den Bereich des Prozess-Abbildes legen. Dann könnten man direkt die Eingänge einlesen ...

Gruß
LL
 
Hallo,
ein Beispiel ist das maskieren mit der UND-Word-Verknüpfung (UW) und Test ob Ergebnis > 0.
L #I_WORD // das zu prüfende Wort
L B#16#1 // Bit 0 prüfen
UW
T #temp
L #temp
L 0
>I // Bit 0 >0 ?
= #Bit_0 // Zuweisung

Das ganze in eine Schleife und das Problem ist gelöst….
mfg.

Hallo

Diese Version gefällt mir am besten!

Wie muss den hier der Datentyp deklariert sein??

T #temp

L #temp

Word oder Int???

Ich vermute mal Int!

Ist das korrekt?

Danke erstmal soweit für alle Antworten!
Gruss Stefan
 
Zurück
Oben