Programm schreibt sich um

Wölli

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Freunde,
ich habe da ein seltsames Problem. Ich habe einen Funktionsbaustein programiert zur kommunikation mit einem DC-Stromrichter (SIMOREG). Diesen Funktionsbaustein habe ich dann in einer Funktion eingefügt und im OB 1 aufgerufen. Nun das Seltsame, wenn ich den Funktionsbaustein einfüge und den Instanz DB zuweise und abspeichere. Weist das Programm ihn immer einen anderen DB (kein Instanz DB) zu. Dies habe ich anhand der "Aufrufstruktur" festgestellt.

vielen Dank schon mal.

Wölli
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine Funktion hat soweit ich das verstanden hatte keine Instanzen, warum soll dann der Funktionsbaustein Instanzen haben (können)? Die Funktion kann öfters (unter dem gleichen Namen) aufgerufen werden, wie soll denn das funktionieren?
 
Eine Funktion hat soweit ich das verstanden hatte keine Instanzen, warum soll dann der Funktionsbaustein Instanzen haben (können)? Die Funktion kann öfters (unter dem gleichen Namen) aufgerufen werden, wie soll denn das funktionieren?

Also deine Antwort verstehe ich nun nicht.
 
Hallo Wölli,

das kann eventuell an der Step7 Einstellung für den Operandenvorrang (Eigenschaften - Bausteinordner offline) liegen. Da wird "Symbol hat Vorrang" eingestellt sein.

Gruss

Andi F
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich zitiere mal aus der Codesys Hilfe:
Instanzen von Funktionsblöcken

Es können Vervielfältigungen, genannt Instanzen (Kopien) eines Funktionsblocks geschaffen werden.
Jede Instanz besitzt einen zugehörigen Bezeichner (den Instanznamen), und eine Datenstruktur, die ihre Eingaben, Ausgaben und internen Variablen beinhaltet. Instanzen werden wie Variablen lokal oder global deklariert, indem als Typ eines Bezeichners der Name des Funktionsblocks angegeben wird.
Beispiel für eine Instanz mit Namen INSTANZ des Funktionsblocks FUB:
INSTANZ: FUB;
Aufrufe von Funktionsblöcken geschehen stets über die oben beschriebenen Instanzen.
Nur auf die Ein-und Ausgabeparameter kann von außerhalb einer Instanz eines Funktionsblocks zugegriffen werden, nicht auf dessen interne Variablen.
Die Deklarationsteile von Funktionsblöcken und Programmen können Instanzdeklarationen beinhalten. Instanzdeklarationen in Funktionen sind nicht zulässig.
Der Zugriff auf die Instanz eines Funktionsblocks ist auf den Baustein beschränkt, in dem sie instanziert wurde, es sei denn, sie wurde global deklariert.
Der Instanzname einer Instanz eines Funktionsblocks kann als Eingabe einer Funktion oder eines Funktionsblocks benutzt werden.

Man beachte dabei den Satz:
Instanzdeklarationen in Funktionen sind nicht zulässig.

Wird beispielsweise die Funktion an Stelle A und an Stelle B im Programm aufgerufen, dann ist das Ergebnis normalerweise das gleiche, eine Funktion sollte ja eigentlich keine internen Variablen haben, die über mehrere Programmzyklen erhalten bleiben.
Wird jetzt aber von der Funktion aus wiederum ein Funktionsbaustein aufgerufen, der eigentlich interne Variablen hat, die gespeichert werden, woher soll die SPS dann noch wissen, wofür die Variablen gelten, Aufruf A oder B?

Sorry, aber besser kann ich es nicht erklären, vielleicht ist jemand anderes dazu in der Lage.
 
Zurück
Oben