FB mehrfach aufrufen

homei

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

ich möchte einen parametrierte Funktionsbaustein 6 mal aufrufen und nur die Flankenmerker als statische Werte zugehörig zu jedem Aufruf in einem DB ablegen. Die Flankenmerker möchte ich aber nicht als IN oder OUT vereinbaren.

Geht das irgendwie ?

MfG
homei
 
FB oder FC

FB
also ich würde im FB meine Hilfsmerker im Statbereich (genauer im InstanzDB ablegen

FC
die Hilfsmerker als InOut Variable definieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
FC
die Hilfsmerker als InOut Variable definieren.

Nein, das möchte ich auch nicht, mir geht es darum, dass die Hilfsmerker nicht beim Aufruf angegeben werden müssen.

Eigentlich möchte ich so eine Art Multiinstanz, bei der nur die Flankenmerker statisch für den jeweiligen Aufruf sind. Ich möchte also nicht die Ein- und Ausgangsparameter einer Multiinstanz im DB ablegen.

Ich weis aber nicht, ob und wie das geht


MfG
homei
 
Wenn Du normalerweise die FP/FN Funktion verwendest, will diese ja einen Hilfsmerker haben, in dem der letzte Zustand des Bits abgespeichert wird.
Z.B.

U E0.0
FP M0.0
= M1.0

Ob Du nun dafür einen Merker verwendest, oder in einem FB ein Bit im "STAT" Bereich, ist völlig egal. Es ist auch egal, ob dieser FB als Multiinstanz aufgerufen wird.
Im FB heißt es dann einfach

U E_Irgendeiner
FP MyStatVar
= MyIrgendwas
 
Danke Grubba,

aber ich habe mich sicherlich noch nicht richtig ausgedrückt. Vom Prinzip her will ich einen Multiinstanzaufruf machen, im "STAT" Bereich, also im DB möchte ich nur die zugehörigen Flankenmerker ablegen, keine IN- und OUT's.

Geht das und wenn ja, wie ?

MfG
homei
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Angenommen, Du hast 2 FBs, FB1 und FB2. In FB1 wird FB2 aufgerufen.

Alles, was bei einem separatem Aufruf Deines FB2 in seinem eigenen InstanzDB steht, würde dann bei einem Multiinstanzaufruf mit in den InstanzDB von FB1 wandern.

Aber so ganz verstehe ich Dein Problem aber immer noch nicht, glaube ich.:confused:

Noch was:

Es ist ja nicht so, das sich die Eingänge Deines FB2 am FB1 wiederfinden würden, falls Du das meinst....
 
Danke Grubba,

aber ich habe mich sicherlich noch nicht richtig ausgedrückt. Vom Prinzip her will ich einen Multiinstanzaufruf machen, im "STAT" Bereich, also im DB möchte ich nur die zugehörigen Flankenmerker ablegen, keine IN- und OUT's.

Geht das und wenn ja, wie ?

MfG
homei

So wie Heinz bereits beschrieben hat, die Flankenhilfsmerker im stat-Bereich deklarieren- wo ist das Problem? Unter Objekteigenschaften musst du übrigen Multiinstanzfähigkeit ausgewählt haben, kontrollier das auch nochmal nach
 
Zuletzt bearbeitet:
Aber so ganz verstehe ich Dein Problem aber immer noch nicht, glaube ich.:confused:

Ja, aber das liegt an mir. Ich sag nochmal was ich gemacht habe:

-in einem FB2 habe ich IN und OUT vereinbart und unter STAT meine FLM's

- in einem FB3 habe ich unter STAT 6 mal den Aufruf von FB2 vereinbart.

- Im zugehörigen Instanz-DB 102 werden von allen Aufrufen die IN- und OUT-Parameter abgelegt sowie die Merker abgelegt.

- Ich möchte aber nur die Merker im DB ablegen aus Platzgründen und diese dann immer aus dem DB lesen bzw den neuen Zustand reinschreiben.
die IN und OUT bekomme ich ja immer aktuell aus dem Prozessabbild. Wozu sollen die noch im DB abgelegt werden.

Ist damit jetzt was anzufangen?
Wie kann man das programmieren?


MfG
homei
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... ich glaube, ich habe die Frage jetzt verstanden ...

Du kannst nicht verhindern, dass die IN's und OUT's deines FB's auch mit im Instanz-DB abgelegt werden. So blöde es klingt, aber das ist nun einmal so ...
 
Zitat von homei:

"- Ich möchte aber nur die Merker im DB ablegen aus Platzgründen und diese dann immer aus dem DB lesen bzw den neuen Zustand reinschreiben.
die IN und OUT bekomme ich ja immer aktuell aus dem Prozessabbild. Wozu sollen die noch im DB abgelegt werden."

Dann gehe ich mal davon aus, das Du jede Menge Eingänge/Ausgänge hast, ansonsten würde ich mir über 100 Byte mehr oder weniger keine Gedanken machen.

Wenn Du's aber kompliziert haben willst, gehts natürlich auch anders:

Du könntest EINEN Eingang an Deinem FB definieren, an dem Du die Adresse Deinen Prozessabbildes einträgst. Dein FB müsste dann intern hingehen, und an dieser Adresse seine Daten abholen. (können theoretisch auch beliebig viele sein, setzt natürlich voraus, das Deine Daten irgendwie geordnet vorliegen. -> 1. Fb-Aufruf z.B. EW0 - EW10, 2. Fb-Aufruf z.B. EW11 - EW20 usw. Du übergibst dann halt jedesmal die Startadresse Deiner Daten.
Ob das allerdings den Aufwand rechtfertigt, kannst nur Du beurteilen.
Um wieviele Ein-Ausgänge reden wir denn pro Aufruf? :rolleyes:
 
Hallo,

ich danke Euch für Eure Antworten.

Wie ich nun weiß, geht es halt nicht so wie gedacht. Ich war der Meinung, dass ich irgend was zu umständlich mache.

Pro Aufruf habe ich so ca. 50 Analog-Werte und noch vernachlässigbare Binärwerte. Ich hab noch kein Gefühl dafür, was man einer CPU 314 zumuten darf.


MfG

homei
 
Zurück
Oben