TIA Word to Bit

BoB2

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Nabend,

sind noch neu in der TIA Thematik und bräuchten eure Hilfe.
Wir benutzen einen Datenbaustein mit 16 Bits (Word), nun müssten wir um einen Ausgang zu setzen auf ein Bit des DB's(Word) zugreifen/zuweisen.
Nur wie?

Bob
 
Wenn Ihr uns noch mitteilt welche CPU Ihr programmiert und ob das Word in einem "optimierten" DB liegt, dann können wir Euch sagen, welche der vielen Möglichkeiten nicht gehen.

Übliche Arten auf Bits zuzugreifen:
- Slice-Zugriff (Word.%X0)
- über das Word per AT eine Bool-Struktur oder ein Bool-Array legen
- das Word über eine temporäre Bool-Struktur oder Bool-Array kopieren
- oder klassisch ausmaskieren: ( (Word AND Bitmaske) <> 0), wobei in der Bitmaske nur 1 Bit true ist
- oder hier im Forum nach den unzähligen Codebeispielen suchen

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
TIA für S7-1200/1500 unterstützt Slice-Zugriffe.
Bei Bits wäre das z.B. "MyVar".%X0.


Ansonsten wären etwas genauere Angaben wie z.B. Screenshots der Deklaration, von dem, was Ihr habt, und zu dem, was Ihr wollt, schon hilfreich.




PS: Hab' ich jetzt echt 'ne 3/4 Stunde gebraucht, um Haralds Beitrag zu übersehen?
:rolleyes:
 
Zuletzt bearbeitet:
Wir bedanken uns für die schnelle Hilfe. Die CPU ist eine 314C-2 DP.
Welche Methodik wäre denn für Anfänger am besten?

Bob
 
Wie Harald schon sagte wären bei einem optimierten Bausteinzugriff diese Methoden am elegantesten

Übliche Arten auf Bits zuzugreifen:
- Slice-Zugriff (Word.%X0)
- über das Word per AT eine Bool-Struktur oder ein Bool-Array legen
- das Word über eine temporäre Bool-Struktur oder Bool-Array kopieren

Das ist bei deinem CPU Typ so nicht möglich.
Grundsätzlich sind in dem Datentyp Word aber ja schon immer deine 16 Bit drin die du auch benutzen kannst.

Beispiel Wordzugriff:
L DB2.dbw0
t irgendwo anders hin

Bit Zugriff:
u db2.dbx0.0
= irgendwas

Wenn du deine Wort Variable in einem Datenbaustein so deklariert hast ist bei dem Bitzugriff allerdings keine Symbolik vorhanden.

// sollte aber kein Problem sein ;)

mfg
Rene
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Absolut auf Variablenbestandteile zuzugreifen ist nicht sinnvoll wenn man Symbolisch programmiert, Bei Konsistenzprüfungen kann es verschiebungen geben die einem dann nicht auffallen. Wenn eine Symbolik vorhanden ist würde ich die Vorschläge von Harald anwenden.
also entweder Bitmaske mit Variable verunden und auf Undleich 0 Abfragen (imho die für jeden verständliche Lösung aber vielleicht nicht die optimalste wenn man 1000 Einzelbits rausholen will)
Oder das Wort in eine Bitstruct oder Array kopieren (blkmov). und dann mit dem Array of Bool weiterarbeiten.

Damit wären dann sowohl Symbolvorrang wie auch Absolutvorrang bei der Konsistenzprüfung keine Stolperfallen.

mfG René
 
Zurück
Oben