Zugriff auf einzelne Bit's TIA-Portal

MarkusP

Level-2
Beiträge
324
Reaktionspunkte
31
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich komme aus der TwinCAT Welt und wühle mich gerade durch das TIA-Portal. Ich fürchte ich werde noch mehrere Fragen an Euch haben..

Ich möchte aus Kompatibilitätsgründen zur bestehenden VISU gerne auf einzelne Bits einer Variable schreibend und lesend zugreifen. Bei TwinCAT geht das ja ganz einfach über Variablenname.Bit.

Soweit bekomme ich das auch bei STEP7 hin, aber bei symbolischen Variablen klappt das offenbar nicht.

#bDummy:=%DB10.DBX24.0; (absoluter Zugriff auf Element funzt)
#bDummy:="DB10".HMI.nSteuerbits.0; (das funktioniert nicht, obwohl eigentlich das gleiche sein sollte)

Die zweite Variante wäre halt schöner, da ich mir nicht alle Adressen merken kann, bzw. bei späteren Änderung des DB's dies böse enden kann. Bin ich generell auf dem Holzweg oder gibt es einen Trick?

Verwendete Software STEP7 V11

Vielen Dank
 
Da du das offensichtlich in SCL (ST) machst, kannst du für so etwas die AT-Anweisung nutzen. Suche dazu mal hier im Forum, da ist auch irgendwo Code dazu und auch in der Hilfe von Step7 wirst du fündig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke,

soweit war ich schon, ich wollte es nur nicht wahr haben, dass das
nicht einfach gehen soll! Bei der TIA-Schulung wurde uns gesagt, dass diese Art der Addressierung funktionieren sollte, vielleicht erst bei SP2 oder so..

LG
 
Ich möchte aus Kompatibilitätsgründen zur bestehenden VISU gerne auf einzelne Bits einer Variable schreibend und lesend zugreifen. Bei TwinCAT geht das ja ganz einfach über Variablenname.Bit.

Soweit bekomme ich das auch bei STEP7 hin, aber bei symbolischen Variablen klappt das offenbar nicht.

#bDummy:=%DB10.DBX24.0; (absoluter Zugriff auf Element funzt)
#bDummy:="DB10".HMI.nSteuerbits.0; (das funktioniert nicht, obwohl eigentlich das gleiche sein sollte)
Das sollte schon gehen.
Allerdings muss das Bit in dem DB10 auch als Bool deklariert sein und einen Symbolnamen haben:
Code:
   "DB10".HMI.nSteuerbits.Start
 
Das sollte schon gehen.
Allerdings muss das Bit in dem DB10 auch als Bool deklariert sein und einen Symbolnamen haben:
Code:
   "DB10".HMI.nSteuerbits.Start

Das ist eben das "Problem", die Variable ist vom Type INT, und ich will direkt auf die Bit's zugreifen, wie gesagt um zur bestehenden VISU möglichst kompatibel zu bleiben.
 
Meines Wissens braucht man nicht erst in TEMP Variabeln zu übertragen.

Probier mit "DB10".HMI.nSteuerbits.%X0

edit: Es geht nicht mit V11. Fur S7-1200 hilft es mit diverse Service Packs und Updates.
Auf der Siemens Support:
Um bitweise auf Variablen vom Datentyp Byte, Word oder DWord zuzugreifen, benötigen Sie für die
  • S7-1200 (ab FW V2.0) STEP 7 (TIA Portal) V11+SP1+Upd 2 (oder höher),
  • S7-1500 STEP 7 (TIA Portal) V12 (oder höher).

Und
  • Ab STEP 7 (TIA Portal) V13 ändert sich die Syntax von "Variable.X0" nach "Variable.%X0". Nach der Eingabe wie im oben beschriebenen Beispiel "inByte.X0" ändert STEP 7 (TIA Portal) ab der V13 die Syntax automatisch in "inByte.%X0".

 
Zuletzt bearbeitet:
Meines Wissens braucht man nicht erst in TEMP Variabeln zu übertragen.

Probier mit "DB10".HMI.nSteuerbits.%X0

edit: Es geht nicht mit V11. Fur S7-1200 hilft es mit diverse Service Packs und Updates.
Auf der Siemens Support:

Und


Man braucht es auch vorher nicht in eine TEMP-Variable laden.
Der Zugriff mittels ".%X0" für Bit 0 funktioniert auch bei mir einwandfrei.
 
Zurück
Oben