Funtionsbaustein mit internen Variablen

delacasa

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

ich habe einen FB "Motorbaustein" geschrieben. Dieser wird im Programm häufiger verwendet. Er enthält mehrere Flankenbausteine, sowie FlipFlops, etc. Die dafür benötigten Hilfsmerker schreibe ich über "IN/OUT" auf jeweils entsprechende Merker außerhalb des FB's. Funktioniert perfekt. Ist leider für die Projektierung relativ aufwendig. Viel Arbeit in der Symbolik. Gibt es eine Möglichkeit, die Flankenmerker nicht nach draußen zu schreiben? Vielleicht mit einem Instanz-DB? Mein Ziel ist, den FB aus der Bibliothek zu ziehen und nur noch mit den nötigen Variablen zu verknüpfen.

Wäre super, wenn mir einer von Euch weiterhelfen könnte. Vielleicht hat sich einer von Euch schon einmal mit diesem Thema auseinandergesetzt.

Danke!
Gruß delacasa
 
Die Hilfsmerker, die du nur intern benötigst kannst du von IN/OUT nach STAT legen (geht nur in FB). Dann werden sie als statische Variablen im Instanz-DB erzeugt. Danach brauchst du aber für jeden FB einen Instanz-DB, oder du arbeitest mit Multiinstanzen. Eine weitere Moglichkeit wäre, ein (z.Bsp) DWORD als IN/OUT festzulegen und dieses dann intern am Anfang vom FC auf die Lokaldaten zu legen und am Ende wieder von dort zu holen. Dazu legst du die betreffenden IN/OUT- Var in dir TEMP_Var und siehst dir die Lokal-Adresse an (Z.Bsp. 2.0) du erzeugst soviel Einträge, daß 1 DWord gefüllt wird (Was du nicht brauchst ist Reserve).

L SCHMIER_DW (IN/OUT)
T LD 2

..
lesen und schreiben auf Tepm-Variablen mit von dir festgelegten Namen
..

L LD2
T SCHIER_DW
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Ralle. Die Sache mit dem DWord würde die Sache schon wesentlich vereinfachen. Jedesmal einen neuen Instanz-DB anlegen wäre ein wenig blöd. Kannst Du mir bitte noch sagen, was Multiinstanzen sind? Werde das mit dem DWord gleich mal ausprobieren!

Nochmal Danke!
 
Kurz gesagt:

Du schreibst einen FB X, in diesem willst du einen anderen FB Y aufrufen. Diesen FB Y deklarierst du im Variablenteil des FB X und rufts ihn dann im FB X mit seinem Variablennamen auf. Du brauchst dann keinen extra Instanz-DB angeben, da der Instanz-DB des FB Y mit im Instanz-DB des FB X aufgenommen wird.

Suche mal im Step7-Bausteineditor unter Multiinstanzen. Es gibt da ein Beispiele mit Programmcode, das ist dann ganz gut zu sehen.
 
Zurück
Oben