SCL Bit einer Wortvariable in FB über Symbol schreiben

soma

Level-1
Beiträge
54
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe in scl einen fb programmiert.
in diesem befindet sich eine Variable also ein Word namens STW.
STW is somit im zugehörigen DB gespeichert ,was auch gut so
ist.
nun kann ich schreiben:
STW:=2#1100_0100_0111_1110;
was auch funktioniert.
nun möchte ich gern ein bit in diesem wort setzen ohne das ganze wort neu
zu schreiben.
funktionieren tut das in dem ich schaue auf welcher adresse im db diese variable liegt und so schreibe ich dann dbxx.dbXxx.x:=1;
lieber wäre mir jedoch etwas wie zb
STW[16]:=1 oder STW[2.1]:=1
doch leider funktioniert das nicht.
kennt jemand eine lösung oder eine idee mit der ich die einzelnen bits symbolisch beschreiben kann?
 
Hallo,
du kannst mit dem Befehl AT deiner Variablen STW z.B. einen Struct oder ein ARAAY of BOOL zuordnen. Auf die Weise kommst du auch an die Bits.

Beispiel :
Code:
VAR
   STW : word ;
   a_STW AT STW : array [1..16] of BOOL ;
   s_STW AT STW : struct
                            Bit_08 : bool ;
                            ...
                            Bit_01 : bool ;
                            Bit_16 : bool ;
                            ...
                            Bit_09 : bool ;
                            end_struct ;

ansonsten auch die Hilfe zu diesem Befehl lesen ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weis jetzt nicht ob das auch bei Step7 SCL geht aber in ST würde ich das nehmen:

3s schrieb:
Adressierung von Bits in Variablen In ganzzahligen Variablen können einzelne Bits angesprochen werden. Dazu wird an die Variable mit einem Punkt abgetrennt der Index des zu adressierenden Bits angehängt. Der Bit-Index kann durch eine beliebige Konstante gegeben werden. Die Indizierung ist 0-basiert.
Beispiel:
a : INT;
b : BOOL;
...
a.2 := b;
Das dritte Bit der Variablen a wird auf den Wert der Variable b gesetzt.
Ist der Index größer als die Bit-Breite der Variablen so wird folgender Fehler ausgegeben: Index '<n>' außerhalb des gültigen Bereichs für Variable '<var>'!
Die Bitadressierung ist bei folgenden Variablentypen möglich: SINT, INT, DINT, USINT, UINT, UDINT, BYTE, WORD, DWORD.
...
 
Nö zotos, das geht in SCl leider nicht. Aber der AT-Befehl ist dafür gut.
 
Zurück
Oben