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

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

Thema: Struct Eingangsvariabeln in FB

  1. #1
    Registriert seit
    28.11.2007
    Beiträge
    51
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Ich habe einen FB mit einem Struct als Eingangsvariable.

    Call FB1
    IN1: AlleEingaenge // AlleEingaenge ist ein struct

    Die Definition von FB1 sieht wie folgt aus:

    AlleEingaenge struct
    E1 BOOL
    E2 BOOL
    End Struct

    Der FB1 ist in der Deklaration des aufrufenden FB integriert.
    Nun möchte ich auf die Eingangsvariablen zugreifen:

    U M0.0
    S #FB1.AlleEingaenge.E1

    Wenn die Variablen nicht als Struct definiert sind funktioniert das.
    Aber wenn die Variablen in einer Struktur sind geht das nicht mehr.
    Was kann ich machen damit das funktioniert?
    Wie können Strukturen als Ein-/Ausgangsparameter an FBs genutzt, gelesen und geschrieben werden?

    Gruss
    Isha
    Geändert von Isha (31.01.2008 um 17:59 Uhr)
    Zitieren Zitieren Struct Eingangsvariabeln in FB  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Bei mir geht das aber:
    Code:
          U     M      0.0
          S     #MyFB.AlleEingaenge.E1
    Wobei MyFB als Statvar im aufrufenden FB definiert ist.

    Klapp mal oben in der Deklarationstabelle den FB soweit auf, daß du E1 siehst, rechte Maustaste drauf und kopieren, anschließend im Codebereich einfügen, dann fügt er die komplette Variable ein.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Isha ist offline Benutzer
    Themenstarter
    Registriert seit
    28.11.2007
    Beiträge
    51
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Fast OK!

    Jetzt habe ich aber IN_OUT Variablen als Struktur. Wie geht es da?
    (Bei IN-Variablen gehts wirklich)

    Gruss
    Isha

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.716
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    Bei mir geht das aber ...
    Bei mir auch, auch bei den IN_OUT's ... nicht nur im STAT-Bereich ...

    Gruß
    LL

  5. #5
    Isha ist offline Benutzer
    Themenstarter
    Registriert seit
    28.11.2007
    Beiträge
    51
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Als bei mir gehen IN und OUT variablen. IN_OUT gehen nicht!
    Warum? Ich bräuchte die Funktion dringend.

    Gruss
    Isha
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg FB2.JPG (45,6 KB, 66x aufgerufen)

  6. #6
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Du könntest mit einem Pointer indirekt auf eine IN_OUT-Variable vom Datentyp STRUCT zugreifen:

    http://www.sps-forum.de/showpost.php...94&postcount=7

    Gruß Kai

  7. #7
    Isha ist offline Benutzer
    Themenstarter
    Registriert seit
    28.11.2007
    Beiträge
    51
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von Kai Beitrag anzeigen
    Du könntest mit einem Pointer indirekt auf eine IN_OUT-Variable vom Datentyp STRUCT zugreifen
    Das würde vermutlich funktionieren. Nur leider kann dann niemand mehr das Programm lesen.

    Gruss
    Isha

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Ich kannst einfach nicht finden, diese räudige Step7-Hife zeigt einem doch nie, was man wirklich sucht . Allerdings meine ich mich zu erinnern, daß bei bestimmten zusammengesetzten Typen (wohl auch Struct) eben bestimmte Dinge nicht gehen, warum weiß sicher irgendwer bei Siemens. Fakt ist, das Struct-Typen bei IN_OUT-Variablen nur als Adresse übergeben werden (call by referenz), Ich vermute mal, daß es damit zusammenhängt, daß man sie dann in einem Multiinstanz-FB nicht so einfach als Parameter adressieren kann. Vielleicht weiß ja noch irgend wer, wo das in der Step7-Hilfe zu finden ist, es war eine Tabelle, für alle Bausteine und Parametertypen mit den dort erlaubten Deklarationen.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  9. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Isha (01.02.2008)

  10. #9
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    is zwar keine tabelle, aber meinste vielleicht das:

    Übergabe an IN_OUT-Parameter eines FB

    Bei der Übergabe von zusammengesetzten Datentypen an IN_OUT-Parameter eines Funktionsbausteins (FB) wird die Operandenadresse der Variable übergeben (call by reference).
    Bei der Übergabe von elementaren Datentypenan IN_OUT-Parameter eines FB werden die Werte in den Instanz-Datenbaustein kopiert, bevor der FB gestartet wird und aus dem Instanz-Datenbaustein herauskopiert, nachdem der FB beendet ist.
    Dadurch können IN_OUT-Variablen elementaren Datentyps mit einem Wert initialisiert werden.
    Es ist jedoch nicht möglich, in einem Aufruf eine Konstante als Aktualparameter an der Position einer IN_OUT-Variablen anzugeben, da auf eine Konstante nicht geschrieben werden kann.
    Variable vom Datentyp STRUCT oder ARRAY können nicht initialisiert werden, da in diesem Fall im Instanz-Datenbaustein nur eine Adresse liegt.
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  11. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    Isha (01.02.2008)

  12. #10
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Ralle Beitrag anzeigen
    Fakt ist, das Struct-Typen bei IN_OUT-Variablen nur als Adresse übergeben werden (call by referenz), Ich vermute mal, daß es damit zusammenhängt, daß man sie dann in einem Multiinstanz-FB nicht so einfach als Parameter adressieren kann.
    Parameterablage bei Funktionsbausteinen:

    Zusammengesetzte Datentypen (STRING, ARRAY, STRUCT, UDT)

    INPUT - Wert

    IN_OUT - DB-Zeiger (Im Instanz-DB DB-Zeiger auf Aktualoperand)

    OUTPUT - Wert

    Gruß Kai

  13. Folgender Benutzer sagt Danke zu Kai für den nützlichen Beitrag:

    Isha (01.02.2008)

Ähnliche Themen

  1. DB Struct
    Von redscorpion im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.04.2011, 23:44
  2. Antworten: 5
    Letzter Beitrag: 08.04.2011, 14:36
  3. SCL Struct in Struct
    Von Techniker_85 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 18.02.2011, 09:45
  4. Struct??
    Von broesel im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 20.12.2007, 09:41
  5. DB-Struct in DB-Struct transferieren
    Von Marvin II im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 20.11.2007, 08:29

Lesezeichen

Berechtigungen

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