Funktion mehrere male benutzten

mainky

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

ich bastel momentan an einem Projekt an dem ich momentan nicht weiterkomme...

Und zwar habe ich folgendes Problem...

Ich habe mir eine Funktion gebastelt die ich mehrere male aufrufen möchte.

Und zwar habe ich mir ein FC gebastelt den ich mehrere male in einem FB aufrufen möchte. Dieser FB wird mit IN_OUT deklariert und in einem anderen FB unter Multiinstanzen aufgerufen. (Ziel -> ein großer DB)

Mein Problem ist das sich der mehrmals aufgerufene FC selbst überschreibt... was mache ich falsch...
Irgendwas habe ich falsch verstanden! :/

bitte helft mir :)
 
Mein Problem ist das sich der mehrmals aufgerufene FC selbst überschreibt... was mache ich falsch...
Irgendwas habe ich falsch verstanden! :/

bitte helft mir :)

Ich habe nicht etwas falsch verstanden, sondern nichts verstanden. Wie kann eine FC sich selbst überschreiben?

Vernüftige Angaben und Dein Programm wären schon hilfreich...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich verstehe nicht ganz was Du vor hast, warum verwendest Du einen FC im FB um diesen in einen FB zu packen, Lass den FC weg und nimm gleich einen FB, dann sollte es mit deinem Multiinstanz DB auch funktionieren. Forteil des FB er wird mit Hilfe des DB`s zwischengespeichert, während der FC lediglich mit Temporärvariablen arbeitet.
Zu S5 Zeiten hat man für diese Fälle Schmiermerker verwendet, um sich die Zustände zu retten!

Viel Erfolg

PS: Multiinstanz nicht schlecht, aber für die Fehlersuche für nicht so vesierte Kollegen ist meiner Meinung nach die Variante mehrerer FB`s mit instanz DB`s sinnvoller.
 
Hallo,
natürlich überschreibt sich ein FC, was logisch ist, denn es gibt ja keine Instanz wo die Daten gespeichert werden könnten. Die Daten die später, nach dem Aufruf benötigst mußt Du dir in Merker oder DB schieben.
 
Du kannst FC's mehrfach aufrufen, dann musst du aber bei jedem FC andere Variablen an den IN und OUT anknüpfen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich mach mal beim Rätselraten mit
Ich vermute er schreibt das Ergebnis immer in die gleiche Variable.
Wird ein FC mehrmals aufgerufen und schreibt immer in die gleiche Variable. Dann hat das Ergebnis des letzten FC gewonnen.
 
Und wenn du in dem FC irgendwelche Zustände mit Merker oder DBX erzeugst, dann werden die natürlich mehrmals aufgerufen und mehrmals geändert. Falls also Zustände innerhalb des FC gespeichert werden sollen, nehme FB mit verschiedenen DB, z.B.:

Call FB100, DB100
Call FB100, DB101
Call FB100, DB102

Die Netzwerke aus dem FC kannst du in den FB übernehmen, musst halt schauen, welche Variablen du dann benutzt.


Aber warum willst du einen grossen DB haben? Sehe ich keinen Sinn drin. Also 3 FB ineinander aufrufen finde ich sehr schrecklich. Hast du dir mal Gedanken gemacht, wie du dann den Online- Zustand analysieren möchtest? Klar geht das (meistens), aber sinnlos kompliziert.....

Gerade am Anfang solle man möglichst einfach programmieren, siehe meine Signatur. Auch wenn das Programm dann etwas grösser wird, aber die S5- Zeiten mit kleinem Speicher sind lange vorbei....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hi !
Also 3 FB ineinander aufrufen finde ich sehr schrecklich. Hast du dir mal Gedanken gemacht, wie du dann den Online- Zustand analysieren möchtest? Klar geht das (meistens), aber sinnlos kompliziert.....

Die SuFu für "Multiinstanz" hier im Forum liefert durchaus gute Argumente zu Für und Wider !

Gruss
 
danke....

Mein Vorhaben sieht folgendermaßen aus.... ich möchte eine Funktion erstellen die ich beliebig oft in der S7 einsetzen kann. In meinem Fall ist es ein Ansteuerung-Rückmeldevergleich.

Diese Funktion soll insgesamt 9x unabhängig voneinander aufgerufen werde.
Da noch mehr Funktionen wie Behälterstände und Druckanzeigen mit in anderen Bausteinen sind, soll später alles in einen FB gepackt werden und dieser soll halt einen GROßEN DB bekommen. Deswegen Multiinstanz....
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
das alles in einem ist... das Programm ist auch in dem Sinne auch nicht RIESIEG.

Aber anscheinend sollte ich es lieber ersteinmal mit mehreren FB'S und InstanzDB's versuchen......
 
Zuletzt bearbeitet:
Soll es denn auch irgendwie übersichtlich bleiben? Oder willst Du "nur" machen, was machbar ist? ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber anscheinend sollte ich es lieber ersteinmal mit mehreren FB'S und InstanzDB's versuchen..
Das ist grundsätzlich eine gute Entscheidung für dein Vorhaben.
Pack deine bisherige Programmierung in einen FB ("FB-Vergleicher").
Dann erstellst du einen weiteren FB ("FB-Aufruf").
In dem "FB-Aufruf" erstellst du deine gewünschte Anzahl an Netzwerken und rufst in jedem Netzwerk deinen "FB-Vergleicher" auf.
Jeder "FB-Vergleicher" benötigt einen Instanz-DB, den du dann im Lokaldatenteil deines "FB-Aufruf" als Multiinstanz deklarierst.
Dann beschaltest du deine "FB-Vergleicher" in jedem Netzwerk entsprechend.
---Fertig---

Wenn deine Kenntnisse eingerostete S5er sind, dann könnte allerdings bis "fertig" ein wenig Frust aufkommen;-) .
Nur den Mut nicht verlieren.
Anfangen, ausprobieren, Probleme mit Code posten...
Dein Ziel sollte machbar sein.

Gruß
Toki
 
Hallo zusammen...

Und zwar habe ich mir ein FC gebastelt den ich mehrere male in einem FB aufrufen möchte. Dieser FB wird mit IN_OUT deklariert und in einem anderen FB unter Multiinstanzen aufgerufen. (Ziel -> ein großer DB)

Mein Problem ist das sich der mehrmals aufgerufene FC selbst überschreibt... was mache ich falsch...
Irgendwas habe ich falsch verstanden! :/

bitte helft mir :)

Hallo,

was nun? FC oder FB?

Und wieso lästert hier eigentlich jeder über seinen "großen DB"?

Grüße
 
was nun? FC oder FB?
Ich denke das war geklärt...?!
Und wieso lästert hier eigentlich jeder über seinen "großen DB"?
Das scheint wieder mal ein Fall von persönlichem Geschmack zu sein.
Für eine Anwendung seiner Art als eine Gruppe zusammenhängender Auswertungen finde ich es "gut"...
Als generelle Handhabung eher nicht...
Wobei wir halt beim Geschmack sind :rolleyes:

Gruß
Toki
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und wieso lästert hier eigentlich jeder über seinen "großen DB"?

Grüße

Weil es keinen Sinn macht vielleicht?
Man muss heute keine DB mehr sparen, außerdem ist es etwas unbequem bei laufender Maschine oder Anlage den IDB zu übertragen, wenn sich dieser geändert hat.


bike
 
Multiinstanzen sind pauschal klasse. Er hat nur nicht verstanden, dass ich mit FCs keine MI machen kann, sondern immer FBs benötige, die ich dann als Multiinstanz in einem FB aufrufe und die haben dann einen gemeinsamen Instanzdatenbaustein. Mache ich vor allem immer bei meinen T-CPU Projekten, sonst hat man mit jedem FB Aufruf jedesmal einen neuen DB und da kommt einiges unnötig zusammen...
 
Multiinstanzen sind pauschal klasse. Er hat nur nicht verstanden, dass ich mit FCs keine MI machen kann, sondern immer FBs benötige, die ich dann als Multiinstanz in einem FB aufrufe und die haben dann einen gemeinsamen Instanzdatenbaustein. Mache ich vor allem immer bei meinen T-CPU Projekten, sonst hat man mit jedem FB Aufruf jedesmal einen neuen DB und da kommt einiges unnötig zusammen...

Wenn ich Standardbausteine verwende z.B: TON oder TOFF keine Frage, aber wenn ich Datenbausteine habe in denen Daten gehalten werden. die zur Laufzeit nicht geändert werden sollen, da es sonst kracht, macht es keinen Sinn dies in Multiinstanzen zu programmieren.

Jeder so wie er oder sie will, doch eine Universiallösung gibt es für die Programmierung wie meist nicht.


bike
 
Zurück
Oben