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

Ergebnis 1 bis 5 von 5

Thema: AT Sicht auf ein Element eines UDT für S7-300 unter Classic

  1. #1
    Registriert seit
    09.08.2006
    Beiträge
    3.627
    Danke
    912
    Erhielt 656 Danke für 542 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    steh grad auf dem Schlauch, kann ich eine AT Sicht auch auf ein Element eines UDTs in SCL realisieren?

    Code:
    VAR_IN_OUT
        test      : UDT123;            // IN_OUT Variable
        test_ar AT test.var123.Signal_by : ARRAY[0..7] OF BOOL;
    END_VAR
    funktioniert so nicht: "Ein Komma oder ein Doppelpunkt fehlt"
    Signal_by ist ein Byte.
    Das ganze ins so in nem FC in SCL deklariert unter Step7 Classic.

    Danke.
    Zitieren Zitieren AT Sicht auf ein Element eines UDT für S7-300 unter Classic  

  2. #2
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard

    Hi!

    Ein UDT ist ein zusammengesetzter Datentyp.
    In einem FC oder FB ist eine Sicht auf einen zusammengesetzten Datentyp nur möglich, wenn der Datentyp der Sicht dem Datentyp der Variablen entspricht.
    https://support.industry.siemens.com...dti=0&lc=de-WW
    (Tabelle 01)

    Du musst also die Variable "test_ar" auch in der Struktur des UDT deklarieren.
    Leider geht meine VM-Ware derzeit nicht, weshalb ich es nicht selbst testen kann.

    Viel Erfolg,

    Gruß,

    Ottmar
    Geändert von Ottmar (30.03.2016 um 19:04 Uhr)

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Die AT muß sich meines Wissens auf den Anfang der Variable/des STRUCT/UDT beziehen. Beginn bei einem Unter-Element ist nicht möglich. (Die SCL-Hilfe ist da allerdings nicht eindeutig.)

    Es ist aber möglich, die ersten Delarationen der STRUCT/UDT zu wiederholen bis zu dem gewünschten zu überlagernden Element oder ein Dummy-Array zur Offset-Steuerung einzufügen:
    Code:
    VAR_IN_OUT
      test   : STRUCT
        m1 : WORD;
        m2 : BYTE;
        m3 : BYTE;
      END_STRUCT;
    
      test_ar1 AT test : STRUCT
        m1 : WORD; //Wiederholung, Dummy-Element
        m2 : BYTE; //Wiederholung, Dummy-Element
        ar : ARRAY[0..7] OF BOOL; //sollte auf test.m3 liegen
      END_STRUCT;
    
      test_ar2 AT test : STRUCT
        dummy : ARRAY[0..1] OF BYTE; //Dummy-Array nur für Offset-Verschiebung
        ar : ARRAY[0..7] OF BOOL; //liegt vermutlich auf test.m2
      END_STRUCT;
    END_VAR
    Ich habe jetzt nicht geprüft, wo das BOOL-Array tatsächlich anfängt

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    ducati ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.08.2006
    Beiträge
    3.627
    Danke
    912
    Erhielt 656 Danke für 542 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    (Die SCL-Hilfe ist da allerdings nicht eindeutig.)
    Jo, deshalb hab ich hier gefragt, die Tabelle in der SCL Hilfe ist leider nicht selbsterklärend...

    @ Ottmar, das UDT kann ich nicht ändern, da es fest vordefiniert ist (Firmenstandard)

    @ Harald, zur Zeit kopiere ich das UDT-Element in ne Temp-Variable und mach dann ne AT Sicht drauf. Das wollte ich mir eigentlich ersparen. Aber das komplette UDT in die AT Sicht zu legen machts jetzt auch nicht übersichtlicher.

    Gruß.

  5. #5
    ducati ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    09.08.2006
    Beiträge
    3.627
    Danke
    912
    Erhielt 656 Danke für 542 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    Die AT muß sich meines Wissens auf den Anfang der Variable/des STRUCT/UDT beziehen. Beginn bei einem Unter-Element ist nicht möglich. (Die SCL-Hilfe ist da allerdings nicht eindeutig.)

    Es ist aber möglich, die ersten Delarationen der STRUCT/UDT zu wiederholen bis zu dem gewünschten zu überlagernden Element oder ein Dummy-Array zur Offset-Steuerung einzufügen:
    Code:
    VAR_IN_OUT
      test   : STRUCT
        m1 : WORD;
        m2 : BYTE;
        m3 : BYTE;
      END_STRUCT;
    
      test_ar1 AT test : STRUCT
        m1 : WORD; //Wiederholung, Dummy-Element
        m2 : BYTE; //Wiederholung, Dummy-Element
        ar : ARRAY[0..7] OF BOOL; //sollte auf test.m3 liegen
      END_STRUCT;
    
      test_ar2 AT test : STRUCT
        dummy : ARRAY[0..1] OF BYTE; //Dummy-Array nur für Offset-Verschiebung
        ar : ARRAY[0..7] OF BOOL; //liegt vermutlich auf test.m2
      END_STRUCT;
    END_VAR
    Ich habe jetzt nicht geprüft, wo das BOOL-Array tatsächlich anfängt

    Harald
    Auch diese Variante funktioniert bei mir mit nem UDT leider nicht...

    Noch jemand ne Idee

    PS: funktioniert doch, hatte noch nen Schreibfehler drin... Aber trotzdem nicht das, was ich eigentlich suche...

    schön wäre ne AT Sicht auf ein einzelnen Element (Array[0..7] of BOOL Sicht auf ein Byte)
    Geändert von ducati (31.03.2016 um 09:17 Uhr)

Ähnliche Themen

  1. Auf ein bestimmtes Element in einem Array zugreifen
    Von Erema im Forum Sonstige Steuerungen
    Antworten: 0
    Letzter Beitrag: 05.05.2015, 09:04
  2. Antworten: 0
    Letzter Beitrag: 11.08.2014, 12:16
  3. Zugriff auf einen Array eines UDT`s
    Von Andreas- im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.09.2009, 19:02
  4. Antworten: 4
    Letzter Beitrag: 17.11.2005, 11:13

Lesezeichen

Berechtigungen

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