Einzelne Bit in einer vordeklarierten Bytevariable ansprechen

apfelring

New member
Beiträge
4
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
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

Well-known member
Beiträge
1.545
Punkte Reaktionen
372
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
Code:
TYPE Struc_Steuerwort:
  STRUCT
     Einschalt :Bool;
     Freigabe  :Bool;
     Schnellhalt :Bool;
    ...usw....
  END_STRUCT
END_TYPE

Deklaration und Mapping
Code:
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

Well-known member
Beiträge
168
Punkte Reaktionen
23
Zuviel Werbung?
->Hier kostenlos registrieren
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

Well-known member
Beiträge
1.100
Punkte Reaktionen
291
Wenn man in den Übersetzungsoptionen den Punkt "Konstanten ersetzen" anhakt, kann man die Bitposition auch mit Konstanten angeben, also "Beispielvariable.BedeutungVonBit0".
 
Oben