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

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

Thema: Position einer STAT-Variable feststellen

  1. #1
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Gibt es eine Möglichkeit die Position einer STAT-Variable im AR2 festzustellen? In einem FB habe ich 16 Statusbits die ich für mein Panel auf ein Wort kopiere, dabei mache ich denn dreher mit den MSB & LSB gleich rein, ich möchte aber nicht direkt auf mein AR2 zugreiffen da ich bei einer Änderung am Baustein sonst alles verschieben kann.

    Im Moment sieht es so aus, und funktionert, ist nur leider nicht dynamisch:
    Code:
         
          L     DIB [AR2,P#6.0]
          T     DIB [AR2,P#9.0]
    
          L     DIB [AR2,P#7.0]
          T     DIB [AR2,P#8.0]
    Wobei auf Byte 6 & 7 meine Statusbytes lieben und auf Byte 8 & 9 mein Protokol-Wort

    Ich hoffe ich hab mich einiegermassen verständlich ausgedrückt, bin für jede Hilfe dankbar.
    Zitieren Zitieren Position einer STAT-Variable feststellen  

  2. #2
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Du kannst die Adresse der Variable über "L P##Variable" laden.
    Gruß
    Michael

  3. #3
    Züttu ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard

    Danke dir, werde das gleich versuchen und meine Erfahrungen posten.

  4. #4
    Züttu ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard

    Soweit so gut, aber leider krieg ich es nicht hin Variablen in verschachtelten Struct zu suchen.

    z.B L P##Status.HMI.protocol

    Gibt es dafür auch eine Möglichkeit?

  5. #5
    Registriert seit
    30.10.2009
    Ort
    10 km vom Herzen der Natur
    Beiträge
    1.626
    Danke
    120
    Erhielt 340 Danke für 255 Beiträge

    Standard

    Habe ich auch noch nicht probiert.

    Wenn es wirklich nur darum geht die Bytes zu tauschen, dann reicht es vielleicht schon aus, wenn Du ganz normal symbolisch auf Deine Variable zugreifst und dann ein "TAW" hinterschiebst.
    Gruß
    Michael

  6. Folgender Benutzer sagt Danke zu M-Ott für den nützlichen Beitrag:

    Züttu (24.01.2011)

  7. #6
    Züttu ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard

    denn TAW Befehl kann ich in der Tat einsetzen, vielen Dank für deinen Tipp. Was die Funktionen betrifft funktionert mein Baustein auch, möchte nur verhindern das bei Änderungen im STAT-Register meine direkte Adressierung nicht mehr funktionert.....


    Werde das ganze wahrscheinlich mit Kommentaren versehen und auf mein Erinnerungvermögen hoffen.

    Danke trotzdem für deine Hilfe!!

  8. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Wie hast Du die Variable(n) symbolisch deklariert? Ist das eine 32-Bit-Variable (DWord?)?
    Dann kannst Du einfach symbolisch schreiben:
    Code:
          L     #Status.HMI.protocol
          TAD   
          T     #Ausgabe_DW
    Du kannst Deine Variablen auch symbolisch in die temporären Lokaldaten umkopieren und dabei die Lokaldaten absolut adressieren.
    Da mußt Du Dir nur merken, daß die Kopier-Lokaldaten immer z.B. gleich am Anfang ab LB0 liegen müssen:
    Code:
          L     #Status.HMI.Byte6
          T     LB     3
          L     #Status.HMI.Byte7
          T     LB     2
          L     #Status.HMI.Byte8
          T     LB     1
          L     #Status.HMI.Byte9
          T     LB     0
          L     #Temp_LD0
          T     #Ausgabe_DW
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #8
    Züttu ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard

    Das Problem ist das ich 16 Bits habe die ich symbolisch deklariert habe und einen Protokol-Variable (word). Gelöst habe ich das nun folgendermassen:

    Code:
          LAR1  P##command
          L     #command.hmi.protocol
          TAW   
          T     DIW [AR1,P#0.0]

  10. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Um Dir bessere Tips geben zu können, müßte man mal die genaue Deklaration Deiner Struktur sehen und wohin die gedrehten Bytes gespeichert werden sollen.

    Die Operation TAW tauscht übrigens nur die 2 Bytes im Low-Word des Akku1. Du wolltest aber 4 aufeinanderfolgende Bytes komplett umdrehen - dafür ist TAD besser geeignet.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  11. #10
    Züttu ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    05.10.2006
    Beiträge
    169
    Danke
    21
    Erhielt 19 Danke für 11 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Meine Deklaration sieht wie folgt aus:

    STAT-Register

    command.hmi.bit1 Bool
    command.hmi.bit2 Bool
    command.hmi.bit3 Bool
    command.hmi.bit4 Bool
    command.hmi.bit5 Bool
    command.hmi.bit6 Bool
    command.hmi.bit7 Bool
    command.hmi.bit8 Bool
    command.hmi.bit9 Bool
    command.hmi.bit10 Bool
    command.hmi.bit11 Bool
    command.hmi.bit12 Bool
    command.hmi.bit13 Bool
    command.hmi.bit14 Bool
    command.hmi.bit15 Bool
    command.hmi.bit16 Bool
    command.hmi.protocol Word

    Ich möchte nur die ersten 16 command-bits auf mein protocol kopieren und dabei MSB und LSB tauschen.

Ähnliche Themen

  1. Frage bez. Graf 7 und Stat Variable?
    Von J.BORGER im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 22.06.2011, 12:42
  2. Globale Variable in einer Aktion?
    Von Phase8421 im Forum HMI
    Antworten: 3
    Letzter Beitrag: 17.06.2008, 15:00
  3. Antworten: 5
    Letzter Beitrag: 29.08.2006, 05:07
  4. Bit in einer 8Bit Variable mit VBS setzen
    Von Anonymous im Forum HMI
    Antworten: 4
    Letzter Beitrag: 14.12.2005, 11:45
  5. Flankenmerker->Merker oder Stat-Variable?
    Von oliver2306 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 14.11.2003, 13:21

Lesezeichen

Berechtigungen

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