byte zur binaryzahl umwandeln !

candemirkorkmaz

Level-1
Beiträge
53
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Lieber Forum Gemeinde;

İch bin ziemlich ganz neu bei codesys ver 2.3
nun ich möchte ein byte zahl zur binaryzahl umwandeln und Z.B die 3. und 4. bit mit binary zahl vergleichen.
wie kann ich es in kurzem weg es machen?

Danke im voraus
 
Hi,

Du würfelst da einiges durcheinander, so dass zumindest für mich nicht ganz klar ist, was Du eigentlich tun möchtest.


Zunächst einmal wird prinzipiell alles nur binär in der SPS gespeichert. Wenn etwas dann z.B. dezimal oder hexadezimal auf dem Bildschirm dargestellt wird, geschieht dies nur, damit der Mensch davor das besser lesen kann. Am Speicher ändert das aber nichts.

BYTE ist dagegen ein Größenangabe des Speichers, genau wie WORD oder DWORD und besagt, von wieviel BITs als kleinste Speichereinheit die Rede ist. Beim Byte sind es 8 Bits.


Du schreibst was davon, dass Du das nur 3. und 4. Bit dieses Bytes prüfen möchtest. Dafür gibt es verschiedene Möglichkeiten.
Ich persönlich würde wahrscheinlich die Bits per Schiebebefehl auf die Stellen 0 und 1 (kleinste Wertigkeit im Byte) verschieben und dann durch verUNDung alle höheren Stellen auf 0 bringen. Jetzt können nur noch Werte von 0 bis max. 3 vorhanden sein, nach denen man auswerten kann.

Eine weitere Möglichkeit wäre per Slice direkt auf diese Bits zuzugreifen, also z.B.: "MyByte.X3". Somit hast Du einzelne Bits. (Meine zumindest, dass das bei CODESYS auch geht.)


In welcher Programmiersprache möchtest Du das denn umsetzen und was genau hast Du vor?
 
Ein Byte in alle 8 Bits zerlegen kann man mit dem Funktionsblock UNPACK aus der Bibliothek Util.lib
Details siehe Codesys-Handbuch/Hilfe

In Codesys kann man direkt Bits in Variablen ansprechen, z.B.
Code:
BoolVar := MyByte.3
Details siehe Codesys-Handbuch/Hilfe "Adressierung von Bits in Variablen"

Falls Dein Codesys das direkte Adressieren der Bits nicht zuläßt, dann ist das Standard-Verfahren, daß man die Variable mit einer passenden Bitmaske ver-UND-ed und schaut, ob dabei 0 oder <>0 rauskommt:
Code:
BoolVar := BYTE_TO_BOOL(MyByte AND 2#00001000)
siehe Codesys-Handbuch/Hilfe "Bitstring Operatoren"

Ein einzelnes Bit in einem DWORD kann man auch mit der Funktion EXTRACT ermitteln.
Details wiederum: siehe Codesys-Handbuch/Hilfe

Harald
 
Zurück
Oben