Struct Eingangsvariabeln in FB

Isha

Level-1
Beiträge
55
Reaktionspunkte
0
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
 
Zuletzt bearbeitet:
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.
 
Als bei mir gehen IN und OUT variablen. IN_OUT gehen nicht!
Warum? Ich bräuchte die Funktion dringend.

Gruss
Isha
 

Anhänge

  • FB2.JPG
    FB2.JPG
    45,6 KB · Aufrufe: 87
Ich kannst einfach nicht finden, diese räudige Step7-Hife zeigt einem doch nie, was man wirklich sucht :twisted: . 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.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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 Datentypen an 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.
 
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
 
@vierlagig @Kai

Ne, leider, es war noch eine andere Tabelle, die war nicht schlecht, aber ich finde sie nicht mehr. :confused:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vervollständigung

Bei mir auch, auch bei den IN_OUT's ... nicht nur im STAT-Bereich ...

Gruß
LL

Ich hatte es innerhalb der Instanz versucht (siehe Anhang). Da geht es. Als Multzi-Instanz geht es nicht. Grund wie schon genannt (von Vierlagig).
Siehe dazu auch Bild des I-DB im Anhang.

Gruß
LL
 
Zurück
Oben