Step 7 FB im FB aufrufen

EPaulo

Level-1
Beiträge
91
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich möchte einen FB erstellen und in diesem weiter FB aufrufen. Nun benötigen die FB´s ja einen Instanz DB.
mein Frage ist, gibt es eine Möglichkeit die Instanz Db´s im FB zu integrieren. So das man Später nur den von mir erzeigten Fb nimmt und diesem 1 Instanz DB zuweisen muss, alles andere ist im Inneren des FB´s
Danke im Voraus
 
Du legst im Stat-Bereich eine Instanz des FB an, den du in diesem FB aufrufen möchtest. (beliebiger Variablennahme, als Typ dann den FB)
Statt des direkten FB-Aufrufes, rufst du in deinem FB dann diese Instanz auf.
Hierbei brauchst du keinen IDB angeben, denn der ist ja im IDB des aufrufenden FB integriert (über die Instanz).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja ... genau so, wie du es schreibst.
Du mußt deinen einzulagernden FB einfach nur im STAT-Bereich deines Haupt-FB deklarieren. Dadurch entsteht die Instanz an der Stelle und ist somit Bestandteil der Instanz des Haupt-FB.
Im Code verwendest du dann diese Deklaration.

Gruß
Larry
 
Mehrere FB-Instanzen im selben Instanz-DB nennt sich "Multiinstanz".
Tip für die Step7-Hilfe: Stichwort "Multiinstanz"

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

danke für die Antworten. Aber ich komme immer noch nicht dahinter wie ich das einsetzten soll.
Als Beispiel.
Ich möchte meinen FB machen, und in meinem FB Weill ich den Siemens FB "TCON" verwenden. Dieser FB erstellt ja einen Instanz DB. Nun würde ich gerne diesen Instanz DB in meinen FB integrieren.
Aber wie bekomme ich das hin, Sorry aber stehe da voll auf dem Schlauch. Das ich eine Multiinstanz benötige ist mir schon klar.
Danke für die Unterstützung
 
Code:
VAR
  TCON_INSTANZ : TCON;
END_VAR

Code:
TCON_INSTANZ(REQ:=T_TCON_REQ,          // Anstoss Verbindungsaufbau
ID:=I_VERB_ID,                        // Verb.-ID muß mit Parameter-DB übereinstimmen
DONE:=T_TCON_DONE,                    // Verbindungsaufbau abgeschlossen
BUSY:=T_TCON_BUSY,                    // Verbindungsaufbau läuft
ERROR:=T_TCON_ERROR,                  // Verbindungsaufbau Fehler
STATUS:=T_TCON_STATUS,                // Verbindungsaufbau Status
CONNECT:=T_TCON_ANY);                 // DB mit Verbindungsparameter
 
Dieser FB erstellt ja einen Instanz DB. Nun würde ich gerne diesen Instanz DB in meinen FB integrieren.
Aber wie bekomme ich das hin
Gleich in #2 hat Ralle kurz beschrieben was Du machen mußt und in #5 (direkt vor Deinem Beitrag) hat Kabeläffle eine Schritt-für-Schritt-Anleitung-mit-Bildern verlinkt.

Was genau ist jetzt Dein Problem?

Etwas exakter formuliert: Du mußt nicht einen Instanz-DB in einen FB integrieren sondern eine Instanz in Deinem FB anlegen. Dazu legst Du eine Instanz des TCON im STAT-Bereich Deines FB an und beim Aufruf der Instanz im Code schreibst Du nicht "Call "TCON", "InstanzDB" " sondern "Call #meine_TCON_Instanz_1"
Code:
STAT:
  meine_TCON_Instanz_1 : "TCON"

Code:

  CALL #meine_TCON_Instanz_1
   ...
Für genauere Beispiele: Welche Step7-Version verwendest Du?

Ein FB erstellt keinen Instanz-DB. Ein FB greift auf Instanz-Daten zu, die aber nicht im FB enthalten sind (er enthält nur Programmcode). Beim Aufruf des FB muß ihm ein Instanzdaten-Speicherbereich (die Instanz) mitgegeben werden. Das kann ein eigener DB sein (Instanz-DB) oder ein Speicherbereich in einem "Mutter"-Instanz-DB (die Multiinstanz im Instanz-DB des aufrufenden FB). Dadurch daß man dem FB den Instanzdaten-Speicherbereich erst beim Aufruf zuordnet kann man mit dem selben FB leicht mehrere verschiedene Objekte (Instanzen) einer Objektklasse (FB) bearbeiten.

Harald
 
Zurück
Oben