FB-Aufrufe (die Zweite)

Larry Laffer

Super-Moderator , User des Jahres 2008-2009
Teammitglied
Beiträge
14.468
Reaktionspunkte
3.305
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe da auch etwas Nettes.
Ich habe bei meinem FB einen IN-Parameter Typ Block_DB. Diesen "Block_DB" übergebe ich einem anderen FB, den ich innerhalb des ersten genannten FB's aufrufe. Das ist von der Eingabe her auch OK. Wie wird aber nun der Instanz-DB, den ich als Übergabe-Parameter an den 2. Aufruf übergeben habe, erzeugt ...?

Die ganze Sache wäre für mich für die Weiter-Entwicklung meiner "Standard"-Bausteine hilfreich ...
 
Wenn ich das richtig verstanden habe, musst Du im SIMATIC Manager einen neuen DB einrichten,
aber nicht als "globalenDB" sondern als "InstanzDB" vom Typ "FBx", also Deinem FB.
So kannst Du beliebig viele Instanz DBs für Deinen FB einrichten.

Gruß
raika
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke ...
ich hatte mich bisher immer mit der Variante begnügt, das jeder FB-Aufruf ja seinen Instanz-DB mit-erzeugt. Das ist ja auch ganz praktisch, wenn man in dem FB mal noch etwas geändert hat ...
Wenn ich das richtig verstehe gibt es diese Variante in dem von mir skizzierten Fall aber nicht ...?
 
Danke ...
Wenn ich das richtig verstehe gibt es diese Variante in dem von mir skizzierten Fall aber nicht ...?

Warum nicht?
Wenn Du den FB2 im FB1 aufrufst, richtest Du dir verschiedene InstanzDBs für den FB1 ein.
Im FB2 trägst Du beim Aufruf des FB1 als InstanzDB den Namen des Block_DB ein.

Gruß
raika
 
Ja klar, verstanden, so habe ich es ja aktuell auch gemacht.
Ich hääte jetzt am liebsten die Variante gehabt, dass der FB1 beim Aufruf den Instanz-DB für sich selbst und für den FB2 erzeugt ...:twisted:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Woher soll der FB2 denn wissen, welchen IDB Du dem FB1 zuordnen möchtest. Dafür hast Du doch die Block_DB-Übergabe.

Einen Instanz-DB für den FB2 kannst Du ja beim Aufruf desselben einrichten lassen.

Ansonsten musst Du halt mit richtigen Multiinstanzen arbeiten.

Gruß
raika
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Instanz-DB erzeugen lassen

Hallo,

es gibt noch folgende Möglichkeit:

In der Variablendeklaration des aufrufenden FBs eine Variable vom Typ FB <nr>
deklarieren, z.b. Aufruf_FB2 : Datentyp FB2, der muss natürlich vorher schon da sein.
Im Code-Teil dann den FB2 mit call "Aufruf_FB2" aufrufen.
Der Instanz-DB für den FB2 wird dann in dem Instanz-DB des aufrufenden FBs
"integriert", es gibt also nur einen Instanz-DB für beide FBs.
Wenn dann allerdings der FB2 geändert wird muss ggf. der Instanz-DB des aufrufenden FBs neu generiert werden.
 
Hallo,

es gibt noch folgende Möglichkeit:

In der Variablendeklaration des aufrufenden FBs eine Variable vom Typ FB <nr>
deklarieren, z.b. Aufruf_FB2 : Datentyp FB2, der muss natürlich vorher schon da sein.
Im Code-Teil dann den FB2 mit call "Aufruf_FB2" aufrufen.
Der Instanz-DB für den FB2 wird dann in dem Instanz-DB des aufrufenden FBs
"integriert", es gibt also nur einen Instanz-DB für beide FBs.
Wenn dann allerdings der FB2 geändert wird muss ggf. der Instanz-DB des aufrufenden FBs neu generiert werden.

Aber genau das ist doch die Vorgehensweise, um Multiinstanzen zu bilden!
Im Bausteineditor erscheint dieser doch dann in den Übersichten unter "Multiinstanzen".

Leider doch kein neuer Trick.

Gruß
raika
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@LL

man könnte den FB mit "UC FB yy" aufrufen (dann ist keine Parameterschnittstelle beim Aufruf verfügbar)
und im FB yy dann AUF DI xx.
Ob das praktikabel ist, kannst du ja mal testen.
 
Hallo Ralle,
netter Vorschlag, aber ich wollte ja am Liebsten die erzwungene Generierung des DI ...
 
Zurück
Oben