S5 Datenbasteinhandling bei FB-Aufrufen

Markus

Administrator
Teammitglied
Beiträge
6.324
Reaktionspunkte
2.342
Zuviel Werbung?
-> Hier kostenlos registrieren
CPU 945

Wenn im PB1 der DB1 geöffnet wird und anschliessend in den FB2 oder PB2 gesprungen wird in dem der DB2 geöffnet wird, dann wird doch nach der Rückkehr in den PB1 wieder der DB1 geöffnet, das ist doch so bei S5? Oder?



Gut wenn im PB1 der DB1 geöffnet wird und dann folgender FB Aufruf kommt:

A DB1

FB 10
DBNR: 20
DW: DW 50


Im ersten Netzwerk von FB10 wird indirekt der DB10 geöffnet.
Im zweiten Netzwerk wird indirekt auf ein DW zugegriffen das mit dem Parameter "DW" also mit dem Wert in DW50 adressiert wird.

Aus welchem DB kommt der Wert für DW50?
Aus DB1 oder DB20???

Danke!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Markus,
so wie ich das in Erinnerung habe müßte das DW50 in deinem Fall vom DB1 kommen.
Ich habe da aber so meine Zweifel, ob die Pointer bei FB-verlassen wieder restauriert werden. Das heißt, wenn der FB10 wirklich den DB20 öffnet, dann ist er es auch noch nach Verlassen des FB10. Das liesse sich aber im Zweifel leicht feststellen.

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
CPU 945

Wenn im PB1 der DB1 geöffnet wird und anschliessend in den FB2 oder PB2 gesprungen wird in dem der DB2 geöffnet wird, dann wird doch nach der Rückkehr in den PB1 wieder der DB1 geöffnet, das ist doch so bei S5? Oder?



Gut wenn im PB1 der DB1 geöffnet wird und dann folgender FB Aufruf kommt:

A DB1

FB 10
DBNR: 20
DW: DW 50


Im ersten Netzwerk von FB10 wird indirekt der DB10 geöffnet.
Im zweiten Netzwerk wird indirekt auf ein DW zugegriffen das mit dem Parameter "DW" also mit dem Wert in DW50 adressiert wird.

Aus welchem DB kommt der Wert für DW50?
Aus DB1 oder DB20???

Danke!

Der Wert kommt aus DB20 ! (Ich nehme dabei an, DB10 ist ein Tippfehler)
 
Zuletzt bearbeitet:
Der Wert kommt aus DB20 ! (Ich nehme dabei an, DB10 ist ein Tippfehler)

ja db10 ist ein tippfehler


also dw50 ist ja ein pointer.

der wert den dw50 adressiert den hole ich aus db20, das ist klar.

aber dw50 wird ja an der schnittstelle übergeben, kommt der wert aus dem im aufrufenden baustein geöffneten db1 oder aus dem im fb10 geöffneten db20?


kann nix beobachten oder testen hier...
 
Oh ja, hab ich übersehen.
Also der Wert des Parameters kommt aus dem
DB, der im aufrufenden Baustein geöffnet ist,
hier also DB1.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aus DB1 oder DB20???
werder noch ;)

du öffnest doch den db10. ob direkt oder indirekt ist egal.

Im ersten Netzwerk von FB10 wird indirekt der DB10 geöffnet.
falls das aber db20 heissen sollte natürlich dieser.

EDIT:
dw50 kommt auf jeden fall aus dem db der als letztes geöffnet wurde. also hier db20
 
Zuletzt bearbeitet:
sicher?

also angenommen in db1.dw50 steht 15
und in db20.dw50 steht 35


dann wird dem aufgerufenen fb doch der wert 15 übegeben. so wäre das bei s7...

oder wird bei s5 erst das anparametirerte dw50 gelesen wenn der parameter im aufgerufenen fb verwendet wird?

das der wert den dw50 im aufgerufenen fb aus dem db89 kommt ist schon klar, aber was ist mit dw50 selbst?

hoffe ich drücke mich klar genug aus... :-D
 
sicher?

also angenommen in db1.dw50 steht 15
und in db20.dw50 steht 35


dann wird dem aufgerufenen fb doch der wert 15 übegeben. so wäre das bei s7...

So ist es auch bei S5.
Im Grunde brauchst Du nur zu wissen, dass
L DB10.DW50 die abkürzende Schreibweise ist für

A(UF) DB 10
L DW 50


oder wird bei s5 erst das anparametirerte dw50 gelesen wenn der parameter im aufgerufenen fb verwendet wird?

Nein, erst nach einem "A DBNR" im FB.

das der wert den dw50 im aufgerufenen fb aus dem db89 kommt ist schon klar, aber was ist mit dw50 selbst?

hoffe ich drücke mich klar genug aus... :-D
Nein, etwas konfus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ok problem glöst... (hoffe ich)

an den fb wird ja "DW50" an "DW" anparametriert.

im FB steht aber nicht "L =DW" --> Das würde den inhalt des DW50 lesen

sondern "LW =DW" --> Es wird also DW50 verwendet...
 
sicher?
also angenommen in db1.dw50 steht 15
und in db20.dw50 steht 35

ok. relativ.
zuerst wird natürlich der zuletzt aufgerufene db mit in den fb genommen, der also immer noch aktiv ist.
hier öffnest du diverse dbs.
bei rücksprung in den aufrufenden baustein wird wieder der zu der zeit gültige db geöffnet.

aber du hattest geschreiben 'am anfang'.

wie auch schon erwähnt, kommt hier natürlich auch zum tragen wie geladen wird
L ...
LW ...
 
Zurück
Oben