Step 7 Aufschlagen von IDBs in FBs

Mare232

Level-2
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend die Herren,
Ich schreibe derzeit an einem Programm mit welchem ich Daten aus einer UDP-Verbindung aufbereite.
Hierzu muss ich Daten zwischen 2 DBs Austauschen bzw vergleichen. Ich würde nun normalerweiße beide DBs aufschlagen mit
Auf DB 4
Auf DI 5
Mein Problem ist jetz, dass ich mir wahrscheinlich durch "Auf DI 5" meine auktuelle Instanz im FB zerschieß:-?
Meine Frage desshalb:
-Wird Automatisch wieder mein IDB meines FB geladen sobald ich auf Statische Variablen zugreife?
oder muss ich den IDB manuell wieder Aufschlagen?
Bspb.

Auf db 4
Auf di 5
L DBW 2
T DIW 2
Auf DI 1 //Mein Instanzdb vom FB


Bis jetzt hat es komischerweie funktioniert obwohl ich direkt nach dem Bearbeiten der DBs eine Statische Variable meines FBs abgefragt habe.

set
s test1
Auf db 4
Auf di 5
L DBW 2
T DIW 2
u test 1
....

Mein FB ist eine Multiinstanz eines übergeordneten FBs.

Danke schonmal im Vorraus

Mit freundlichen Grüßen
Marinus O.
 
Meines Wissens ist das Zugreifen auf Instanzvariablen nach auf DI (mit einem fremden IDB) nicht erlaubt. Versuch doch dein Beispiel mal mit einem Doppelwort mit beliebigen Inhalt. Bei Bool ist die Wahrscheinlichkeit das es zufall ist sehr hoch. Vlt wird dein test1 sogar mit einem Wert aus DB4 überschrieben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier musst du dann - händisch - auf 2 Sachen aufpassen.

1. DI Register vorher sichern, und hinterher wieder den richtigen DI aufschlagen.
L DINO
T DISafe

...

Auf DI[DISafe]
...

2. Mit dem AR2 musst du genau so verfahren.


Wenn du im DI Register rumpfuscht, dann sind alle Folgezugriffe auf die FB-Schnittstelle dann im falschen DI.
Im AR2 steht der Adress-Offset = Startbyte der Instanz im übergeordneten FB, hier würdest du dann auf falsche Adressen innerhalb des DI zugreifen.

Mfg Manuel
 
Danke erstmal für die Antwort :D
Noch eine Frage:
Würde es etwas änderen wenn ich relevanten Zeilen in FCs auslagere?
Bei einem Call wird doch die Herkunft gespeichert um später wieder zurrück zu kommen.
sonst könnte ich ja keine FBs innerhalb anderer FBs(keine Multiinstanz) Aufrufen.

Nur so ein gedanke meinerseits :D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke erstmal für die Antwort :D
Noch eine Frage:
Würde es etwas änderen wenn ich relevanten Zeilen in FCs auslagere?
Bei einem Call wird doch die Herkunft gespeichert um später wieder zurrück zu kommen.
sonst könnte ich ja keine FBs innerhalb anderer FBs(keine Multiinstanz) Aufrufen.

Nur so ein gedanke meinerseits :D

Ja das kannst du machen. Du könntest zB SFC20 dazu verwenden.
 
Wenn Sie ein block of Words ubertragen muste konte Sie das Mit SFC20 machen
Aber wenn das nur ein word ist konte SIe das auch so machen:

Code:
L DB4.DBW2                     // IDB von FB beib derselbe nur DB anderd nach DB4
T DB5.DBW2                     // IDB von FB beib derselbe nur DB anderd nach DB5
Wenn dass ein IDB welche nicht bei der aktuele FB behort kan man diese wie ein normale DB ansprechen.
 
Zurück
Oben