direkte Bitadressierung in einer Variable WORD möglich?

Bär1971

Level-1
Beiträge
220
Reaktionspunkte
18
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte mit Step7V5.3prof. für eine S7-300 einen bibliotheksfähigen Baustein (FB) multiinstanzfähig programmieren.

In diesem Baustein habe ich im Vorkopf eine STAT-Variable "Register" vom Typ WORD mit der Anfangsadresse 6.0 deklariert. Das Bitmuster dieser Variable wird in diversen Verknüpfungen gebildet.

Wie kann ich die einzelnen Bits dieser WORD-Variable einzeln abfragen (adressieren)?

Ich habe es mit diesen Befehlen probiert:

U DBX7.0
= #Ausgang_1
.
.
U DBX6.0
= #Ausgang_9
.
.
U DBX6.7
= #Ausgang_16

Allerdings geht mir hier sofort die CPU mit Fehler auf STOP.

Wie kann ich also auf die einzelnen Bits einer deklarierten WORD-Variable innerhalb des Bausteins zugreifen?
 
Probiers mal mit DIX

Mfg
Manuel

DIX ist richtig, ABER:
Damit gibt es Probleme mit der Multiinstanzfähigkeit!

Ich definiere mir üblicherweise eine Struktur mit den entsprechen Bits, die ich dann natürlich auch aussagekräftig benennen kann.
Diese Struct wird dann per Zeigerzugriff von/zum entsprechenden Parameter kopiert.

Gruß
Dieter
 
Hallo Dieter,

ich habe noch keine Erfahrungen mit dem Anlegen von Strukturen und dem Auswerten mit Zeigern. Könntest du mir ein Codebeispiel geben welches für meine Anwendung funktioniert?

MfG
Bär
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wennn du in einer Multiinstanz arbeitest,kannst du nicht auf die Adressen
der statischen Variablen gehen,es muß der Adressoffset über ADR2 dazu addiert werden.

Code:
L ##Variable //Pointer auf Statische Variable
LAR1           // Inhalt des Pointers in AR1 aden
TAR2          //Laden des Adressgegisters 2 (Offset) in AKKU 1
+AR1          //Aufaddieren des Offsets in AR1
u [ar1,p#0.0] //Befehl Abfrage des ersten bits
u [ar1,p#1.4] //Befehl Abfrage des fünften bits byte (X+1)
 
Zuletzt bearbeitet:
Hallo Bernard,

ich werde das gleich morgen mal umsetzen.
Ich kenne mich wie gesagt noch nicht so aus mit der Adressierung von Pointern und Adressregistern.
Nach Abbarbeitung des von dir beschriebenen Codes steht also der Inhalt der Variable (WORD) im AR1 und alle 16 Bits können so mit dix[ar1,p#x.x] direkt abgefragt werden?

MfG
Bär
 
Standard direkte Bitadressierung in einer Variable WORD möglich?

Mir fällt gerade eine leichtere Varinte ein
Laden der Variablen (Statisch) und Ablage im Temporädatenbereich.
Die Adressen der Temporärdaten sind immer real.

Code:
l #Variable// Statische Variable
t #Variable_t //Temporäre Variable z.B. Anfangsbyte 12 bzgl. der Deklaration

u L 12.4      //Abfrage der Temporär abgelegten Statischen Bitinfo
 
Zuletzt bearbeitet:
Zurück
Oben