# Einzelne Bit in einer vordeklarierten Bytevariable ansprechen



## apfelring (1 Februar 2013)

Hallo,

ich versuche gerade eine KL2541 Schrittmotorklemme in mein Programm einzubinden
Dabei muss ich manchmal über Prozesskommuikation und machmal über Registerkommunikation auf das Conrol/Status -byte/word zugreifen.
Ich habe mir gedacht es wäre einfacher den einzelnen Bits des Byte/Words via Variablendeklaration Namen zu geben.
Dann habe ich aber das Problem, dass ich das ganze Byte/Word nicht mehr als Variable deklarieren kann (was zur Registerkommunikation aber wichtig wäre), weil das ja zu mehr als einer Verknüpfung führen würde.

Weis da zufällig wer eine Lösung?
Ich habe daran gedacht das man vielleicht auf einzelne Bits einer deklarierten Byte/Wordvariable zugreifen kann aber ich habe keine Ahnung wie das funktioniert.
Ich hoffe das ist keine zu "blöde" Frage aber ich bin noch Schüler und deshalb Programmieranfänger


Vielen Dank im Voraus

Euer Apfelring


----------



## MasterOhh (1 Februar 2013)

Ein wirklich elegante Lösung ist mir da bisher auch nicht eingefallen.
Für die Steuer-/Zustandswort Kommunikation mit FUs arbeite ich mit Strukturen, die die einzelnen Bits als Bool-Variable beinhalten. Die müssen dann aber auf das eigentliche Steuerwort gemappt werden.

z.B. Für das Steuerwort:

Die Struktur

```
TYPE Struc_Steuerwort:
  STRUCT
     Einschalt :Bool;
     Freigabe  :Bool;
     Schnellhalt :Bool;
    ...usw....
  END_STRUCT
END_TYPE
```

Deklaration und Mapping

```
STW : Struc_Steuerwort;
SteuW AT%Q*: WORD;

SteuW.0 := STW.Einschalt;
SteuW.1 := STW.Freigabe;
SteuW.2 := STW.Schnellhalt;

etc.
```

So kann ich dann im Programm immer mit der Struktur arbeiten und habe die einzelnen Bits als Name verfügbar.
Das macht den Code wesentlich besser lesbar.


Wenn jmd eine Bessere Lösung weiss, dann nur her damit!


----------



## Nost (1 Februar 2013)

Also wenn es eine Byte Variable ist dann mit 
Beispielvariable.0 für Bit 0
.
.
.
.
.
.
.
.
.
Beispielvariable.7 für Bit 8

such mal in der Codesyshilfe nach Bit Addressierung


----------



## StructuredTrash (4 Februar 2013)

Wenn man in den Übersetzungsoptionen den Punkt "Konstanten ersetzen" anhakt, kann man die Bitposition auch mit Konstanten angeben, also "Beispielvariable.BedeutungVonBit0".


----------

