Multiinstanzaufruf mit eigenen FBs nicht möglich!?

Beiträge
62
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen!

Frage: habe einen "Haupt-FB", den ich im OB1 aufrufe. In diesem FB sollen mehrere weitere FBs als Multiinstanzen aufgerufen werden. Wenn ich also im Deklarationsbereich für statische Variablen als Datentyp den gewünschten FB angebe, wird zwar direkt das entsprechende Symbol eingetragen, allerdings bleibt der Eintrag rot (gebe also z.B. als statische Variable FB12 an, es erscheint statt FB12 auch direkt die entsprechende Symbolik, z.B. "Muster-FB", allerdings in roter Schrift.)

--> die Multiinstanz wird nicht korrekt angelegt. In anderen Projekten habe ich das schon mehrfach gemacht, hat auch alles problemlos funktioniert, ist ja jetzt echt nicht kompliziert. Habe auch schon ein neues Projekt angelegt und die FBs dort hinein kopiert, ging dann auch nicht. Auch Neustart des SIMATIC Managers hat nichts gebracht.

Was jedoch interessant ist: Deklariere ich FBs wie z.B. die SFBs 3 - 5 (TP, TON, TOF) oder andere Standard-FBs aus den Bibliotheken als Multiinstanz, funktioniert alles einwandfrei.

Hat jemand Ideen, woran das liegen könnte? Achja. Selbstverständlich sind meine FBs multiinstanzfähig.

(Step 7 v5.4 SP5 HF1)

Danke schon mal für ein paar Ratschläge...
 
Es ist möglich. Ich verwende sehr viel selbsterstellte multiinstanz FBs.

Probier einmal den Baustein-Konsistenz zu überprüfen. Bausten-Konsistenz überprüfen soll man regelmässig durchführen, auch wenn man glaubt das alles ist in Ordnung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß, dass es möglich ist, habs ja auch schon gemacht!
Auch die Bausteinkonsistenz habe ich mehrfach überprüft, Referenzdaten generiert, Zugriffe aktualisiert etc... es funktioniert nicht. Allerdings nur in diesem Programm nicht, wie gesagt, andere Projekte --> kein Thema! Und andere FBs / SFBs --> auch kein Thema!

Trotzdem danke für die Antwort!
 
Als test, kannst du den FB12 "normal" in Code plazieren, also nicht in den Deklarationsteil ?

Kannst du den Code anhängen, eventuell als Bibliotek ?
edit: Muss mindestens FB12 sein, inkl. alle darin deklarierte multiinstanz FBs, und auch den FB worin du FB12 plazieren willst. Und dein Symbol-Datei.
 
Das geht, ja. Instanz-DB erzeugen und fertig...

Hab mal von Hand ein neues Projekt angelegt und ein paar der fraglichen FBs dort rein kopiert. Dann hats funktioniert. Nur eben in diesem Projekt nicht... Scheint wohl irgendein interner Fehler von S7 zu sein oder sowas... anders kann ichs mir nicht erklären...
 
Update:

Manchmal, wenn ich erst einen anderen FB als Multiinstanz anlege (einer aus der lib, der funktioniert), und danach eine Multiinstanz von denen, die nicht gehen, kann ich dann trotzdem den nicht funktionierenden FB in einem Netzwerk aufrufen, auch wenn er quasi nicht korrekt angelegt wurde und der Text bei der Deklaration weiterhin rot ist. Als Fehlermeldung wird mir übrigens folgendes angezeigt:

Der Datentyp ist an dieser Stelle nicht erlaubt.
 
Was auch nicht geht, sind bestimmte Schlüsselwörter als FB Namen

Ich habe mal nem FB den Namen Timer gegeben.

Diesen konnte man auch nicht (symbolisch) als Multiinstanz aufrufen.

Namensänderung brachte Abhilfe...

Micha
 
Hab den Fehler gefunden...

Das Problem war folgendes:
Sämtliche Bausteine des Projekts habe ich aus der SPS zurückgeladen, weshalb die komplette Symbolik natürlich weg war, außer die, die ich über die Symboltabelle wiederherstellen konnte. Mit IN/OUT-Variablen von FBs / FCs war das natürlich nicht möglich, d.h. z.B. beim SFB4 "TON" hießen die IN-Variablen "IN1" und "IN2" und nicht "IN" und "PT".

Später habe ich dann noch ein paar Bausteine aus einer eigenen Bibliothek hinzugefügt, die intern ebenfalls die SFB4 als Multiinstanz aufriefen. Da diese jedoch aus einem anderen Projekt kamen und die Symbolik daher noch vollständig war (also auch tatsächlich z.B. "IN" und "PT" hießen). Hier war dann das Problem. In zwei verschiedenen FBs (einmal aus Projekt und einmal aus Lib) wurden jew. FBs (Bsp. SFB4) als Multiinstanz aufgerufen, einmal mit der "falschen" Symbolik und einmal mit der "richtigen". Deshalb konnte ich zwar den SFB4 als Multiinstanz deklarieren, aber eben nicht die FBs, in denen der "richtige" SFB als Multiinstanz aufgerufen wurde, da hier die Symbolik eine andere war.

Abhilfe: Die betroffenen FBs / SFBs löschen und neu einfügen bzw. generieren (SFB4 wird ja dann automatisch korrekt angelegt, wenn man ihn aufruft). Danach hat alles funktioniert.

Hoffe, ihr versteht ungefähr, was das Problem war, ist etwas kompliziert zu erklären :-D

Trotzdem danke für die Antworten, aber:
z.B. @astralavista: lies doch mal meine Frage richtig durch, da steht doch, dass alle FBs multiinstanzfähig sind (eben das Häkchen gesetzt). Ist nicht böse gemeint, aber für Dinge, die ja gar nicht zur Debatte stehen, brauchst dir ja auch keine Mühe zu machen ;-) Aber danke für den guten Willen!

Naja, hoffe, jemand anderes profitiert später mal von unseren Erfahrungen ;-)
 
Zurück
Oben