Unterschied Auf DB oder Auf DI

Nein ...

Wobei du auch einen Instanz-DB mit "AUF DB xyz" (und umgekehrt) öffnen kannst ...
Das hat nur etwas mit der indirekten Adressierung zu tun ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Die Step7 besitzt gegenüber der S5 zwei DB-Register
Die Register haben eine grösse von 16Bit

Register Nr.1 (DB-Register)
Register Nr.2 (DI-Register)

In diese beide Register kann eine DB-Nummer geladen werden
AUF DB10 -> Wert 10 steht im Register Nr.1
AUF DI10 -> Wert 10 steht im Register Nr.2

Der Zugriff auf einen Datenbaustein kann symbolisch oder absolut erfolgen.
symbolisch:
L "DB_Soll".Parameterwert (DB-Nr. wird in das Register Nr.1 geschrieben)

absolut:
L DB30.DBW2
L DI20.DBW2 (geht nicht)

DB auschlagen und Zugriff auf Variable mit herkömlichen Zugriff.
Diese Variante wird z.B. bei der indirekten Adressierung verwendet.

AUF DB30
L DBB0
L DBW2
L DBD4

AUF DI20
L DIB0
L DIW2
L DID4

Bei Aufruf eine FBs verwendet der Step7-Editor automatisch das 2.DB-Register für den Zugriff auf den Instanz-DB

Diese Befehl können in diesem zusammenhang ebenfalls verwendet werden.
L DBNO (Die aktuelle DB-Nr. im Register 1 wird in den Akku1 geladen)
L DINO (Die aktuelle DB-Nr. im Register 2 wird in den Akku1 geladen)
L DBLG (Die Länge in Byte des DBs im Register 1 wird in den Akku1 geladen)
L DILG (Die Länge in Byte des DBs im Register 2 wird in den Akku1 geladen)
 
Zusätzlich kannst du wenn du auf zwei DBs gleichzeitig zugreifen willst folgendes machen:

L DB1
TDB //DB Register tauschen
L DB2

l dbw0 //DB2
t diw0 //DB1

Natürlich unter der Bedingung das du die DB Register währenddessen nicht änderst (zB durch FB Aufruf zwischendurch)

Gruss tonga...
 
Zusätzlich kannst du wenn du auf zwei DBs gleichzeitig zugreifen willst folgendes machen:

L DB1
TDB //DB Register tauschen
L DB2

l dbw0 //DB2
t diw0 //DB1

Natürlich unter der Bedingung das du die DB Register währenddessen nicht änderst (zB durch FB Aufruf zwischendurch)

Gruss tonga...

Übersichtlicher wäre dann aber:
Code:
AUF DB2
AUF DI1
 
L DBW0   //DB2
...
L DIW0   //DB1
...

Grüße...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
am Rande bemerkt (und wenn ich das grad zum zweiten Mal durchles, gar nicht mal so OT):
auf den Befehl "Auf DB" konnte ich inzwischen verzichten. Der Befehl "Auf DI" birgt Zündstoff für eine Grundsatzdiskussion...
 
Eigentlich nicht aber ...

Solange man innerhalb eines Bausteins (FC!) die Aufrufe benutzt, um z.B. Daten zwischen verschiedenen DB's zu kopieren ist meiner Erfahrung nach kein Unterschied zu merken. Ruft man jetzt aber einen FB auf merkt man den Unterschied:

Auf DB12
Auf DI10
.
.
L DBB18
T DIb25
.
.

Call FB1,DB1 //funktioniert
var1:=DBW0
var2:=DBD10

Call FB2,DB2 //geht schief
var1:=DIW0
var2:=DID10
 
Zurück
Oben