Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: direkte Bitadressierung in einer Variable WORD möglich?

  1. #1
    Registriert seit
    18.10.2009
    Beiträge
    220
    Danke
    71
    Erhielt 17 Danke für 16 Beiträge

    Standard


    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?
    Zitieren Zitieren direkte Bitadressierung in einer Variable WORD möglich?  

  2. #2
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Probiers mal mit DIX

    Mfg
    Manuel
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  3. #3
    Bär1971 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.10.2009
    Beiträge
    220
    Danke
    71
    Erhielt 17 Danke für 16 Beiträge

    Standard

    Mit dem Befehl:

    U DIX7.0

    bleibt die Zeile rot (also fehlerhaft Markiert)

    MfG
    Bär

  4. #4
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.480
    Danke
    1.141
    Erhielt 1.242 Danke für 973 Beiträge

    Standard

    Zitat Zitat von MSB Beitrag anzeigen
    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

  5. #5
    Bär1971 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.10.2009
    Beiträge
    220
    Danke
    71
    Erhielt 17 Danke für 16 Beiträge

    Standard

    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

  6. #6
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard

    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)
    Geändert von Bernard (18.10.2009 um 12:13 Uhr) Grund: Erweiterung
    Zitieren Zitieren direkte Bitadressierung in einer Variable WORD möglich?  

  7. Folgender Benutzer sagt Danke zu Bernard für den nützlichen Beitrag:

    Bär1971 (18.10.2009)

  8. #7
    Bär1971 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.10.2009
    Beiträge
    220
    Danke
    71
    Erhielt 17 Danke für 16 Beiträge

    Standard

    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

  9. #8
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard

    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
    Geändert von Bernard (18.10.2009 um 12:00 Uhr) Grund: Syntaxfehler
    Zitieren Zitieren Standard direkte Bitadressierung in einer Variable WORD möglich?  

  10. Folgender Benutzer sagt Danke zu Bernard für den nützlichen Beitrag:

    Bär1971 (18.10.2009)

  11. #9
    Bär1971 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.10.2009
    Beiträge
    220
    Danke
    71
    Erhielt 17 Danke für 16 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Bernard,

    prima, das liest sich wirklich einfacher und für mich verständlicher.

    Vielen Dank erstmal an eure Hilfe.

    MfG
    Bär

Ähnliche Themen

  1. Steuern einer Variable nicht möglich
    Von Bensen83 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 04.05.2011, 15:31
  2. Interne Variable als DInt nicht möglich?
    Von Bensen83 im Forum HMI
    Antworten: 1
    Letzter Beitrag: 18.02.2011, 08:33
  3. BIT aus einer WORD Variablen verarbeiten
    Von ziede im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 11.12.2010, 14:18
  4. WORD Variable umwandeln
    Von boggle im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 06.08.2009, 11:41
  5. direkte Adressierung in einer Multiinstanz
    Von psum im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 11.08.2006, 13:16

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •