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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Dynamischer Bitzugriff in Datenbaustein

  1. #1
    Registriert seit
    08.11.2011
    Beiträge
    23
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Ich habe ein Problem und zwar habe ich einen globalen Datenbaustein mit einem Dword. Ich möchte, durch einen Int Parameter, auf die einzelnen Bits dieses Dwords zugreifen. Zum Beispiel wenn der Int wert 5 beträgt auf DB1.DBX0.4 bei 7 auf DB1.DBX1.0 . Ist so etwas in Step 7 mit AWL möglich?

    Danke für die Hilfe
    Zitieren Zitieren Dynamischer Bitzugriff in Datenbaustein  

  2. #2
    Registriert seit
    03.07.2007
    Ort
    Wien
    Beiträge
    38
    Danke
    1
    Erhielt 3 Danke für 3 Beiträge

    Standard

    klar. Bit schieben. Moment, ich such mal ein Bsp. raus...

    vuli

  3. Folgender Benutzer sagt Danke zu vuli für den nützlichen Beitrag:

    ffutsi (11.11.2011)

  4. #3
    Registriert seit
    11.09.2007
    Ort
    Suedwestpfalz
    Beiträge
    917
    Danke
    81
    Erhielt 209 Danke für 192 Beiträge

    Standard

    Da sehe ich keine grossen Probleme,

    Den Parameter ins Adressregister und damit auf das Bit.

    Aber Achtung: In Deinem Beispiel wäre dann DBX0.0 der Parameter 1.

    Wenn dem so sein soll, dann musst Du den Parameter = 0 abfangen und den Parameter um 1 dekrementieren.
    Das Grauen lauert in der Zwischenablage !!

  5. #4
    ffutsi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.11.2011
    Beiträge
    23
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wieso kompliziert wenn es einfach auch geht. Danke für den Tipp. Ich hab die ganze Zeit mit Pointern usw. probiert

  6. #5
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Hallo ffutsi,

    das ist möglich, wenn Du Dich hier vertippt hast:
    Zitat Zitat von ffutsi Beitrag anzeigen
    Zum Beispiel wenn der Int wert 5 beträgt auf DB1.DBX0.4 bei 7 auf DB1.DBX1.0
    Ich hoffe Du meinst bei Int = 7 DBX0.7 und Int = 8 DBX 1.0.

    Stichwort => indirekte Adressierung
    Code:
    AUF DB 1
    L     P#0.0
    L    #INT
    +D
    LAR1
    
    U    DBX[AR1,p#0.0]
    Grüße
    Gebs

  7. #6
    ffutsi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.11.2011
    Beiträge
    23
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Gebs Beitrag anzeigen
    Hallo ffutsi,

    das ist möglich, wenn Du Dich hier vertippt hast:

    Ich hoffe Du meinst bei Int = 7 DBX0.7 und Int = 8 DBX 1.0.
    Ja ich habe mich vertippt, sry

  8. #7
    Registriert seit
    03.07.2007
    Ort
    Wien
    Beiträge
    38
    Danke
    1
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Find grad keine sinnvolles Bsp.
    DBX_Byte : INT;
    DBX_Bit : INT;
    Offset : DWORD;

    Aber so ginge es:
    L DBX_Byte
    SLD 3 (PointerFormat!)
    L DBX_Bit
    OW (Hier hast du den Offset, den du dann gerne hättest)
    LAR1 (Alternative 1)
    T Offset (Alternative 2)
    AUF DB_Quelle
    U DBX[AR1, P#0.0] (Alternative 1)
    U DBX[Offset] (Alternative 2)

    Sollte so hinhauen.

    BG vuli

  9. #8
    ffutsi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.11.2011
    Beiträge
    23
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Gebs Beitrag anzeigen
    Hallo ffutsi,

    das ist möglich, wenn Du Dich hier vertippt hast:

    Ich hoffe Du meinst bei Int = 7 DBX0.7 und Int = 8 DBX 1.0.

    Stichwort => indirekte Adressierung
    Code:
    AUF DB 1
    L     P#0.0
    L    #INT
    +D
    LAR1
    
    U    DBX[AR1,p#0.0]
    Grüße
    Gebs
    Ich habe deine Variante jetzt ausprobiert.
    Wenn ich das DWord auf 2#0000_0000_0000_0000_0000_0000_0000_0001 setze und den Integer Parameter auf 0 müsste das abfragen theoretisch 1 ergeben. Bleibt aber auf null! ?!?

  10. #9
    Registriert seit
    08.04.2008
    Ort
    Köln
    Beiträge
    844
    Danke
    39
    Erhielt 244 Danke für 199 Beiträge

    Standard

    Zitat Zitat von ffutsi Beitrag anzeigen
    Ich habe deine Variante jetzt ausprobiert.
    Wenn ich das DWord auf 2#0000_0000_0000_0000_0000_0000_0000_0001 setze und den Integer Parameter auf 0 müsste das abfragen theoretisch 1 ergeben. Bleibt aber auf null! ?!?
    Das liegt an der byteweisen Adressierung in S7.
    Du müsstest den Int auf 24 setzen um eine 1 zu bekommen.

    Grüße
    Gebs

  11. #10
    ffutsi ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.11.2011
    Beiträge
    23
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie kann ich dann effektiv die Stelle aus dem Int Parameter berechnen?

Ähnliche Themen

  1. Speicher indirekter Bitzugriff?
    Von rerdma3s im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 17.03.2010, 09:18
  2. indezierter Bitzugriff
    Von tinosps im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 04.07.2008, 15:12
  3. LibNoDave Bitzugriff...
    Von Jochen Kühner im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 28.03.2008, 09:29
  4. Bitzugriff in WinCC VBS
    Von Anfängerproggi im Forum HMI
    Antworten: 9
    Letzter Beitrag: 30.07.2007, 10:51
  5. Dynamischer Pointer???
    Von klauserl im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 12.11.2006, 20:28

Stichworte

Lesezeichen

Berechtigungen

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