2 Datenbausteine gleichzeitig aufschlagen, geht das ?

Outrider

Level-1
Beiträge
745
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte in einer Schleife Werte aus einem DB in einen anderen DB schreiben ( Es gibt auch die Blockmove funktion, ich weis ).
Dazu müßte ich beide DBs aufmachen, oder erst den einen auf und dann den anderen auf, wobei der erste wieder zu geht.
Könnten beide DBs ausserhalb der Schleife nur einmal aufgemacht werden ?

Ein anderer Punkt, ich habe in dem Buch von Wellenreuther aus Seite 292 ein ähnliches Thema gesehen. Bin dabei auf ein Befehl gestoßen der mir fremd ist.
" AUF DB10 "
" AUF DI20"

Was bedeutet DI20 ?
Mit dem ersten Befehl wird der DB10 aufgemacht, und mit dem zweiten...?

Gruß und Danke für Infos.
 
DI bedeutet Instanz-DB. Einfach danach mel in der Siemens-Hilfe suchen.
Es kann immer nur ein DB und ein DI aktuell sein.
Somit können zwischen DB und DI Werte ohne Blockmove transferiert werden.

Damit der Zugriff auf die Daten der DBs symbolisch erfolgen kann, muss allerdings der kombinierte Befehl wie L DB123.DBX1.2 bzw. L "DBIrgendwas".BitWeisNicht verwendet werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Mit der Operation AUF (Öffne Datenbaustein) können Sie einen globalen
Datenbaustein oder einen Instanz-Datenbaustein öffnen. Es kann gleichzeitig im
Programm je ein globaler Datenbaustein und ein Instanz-Datenbaustein geöffnet
sein.
somit könnte man z.B.
Code:
AUF DB20
AUF DI21
L DBB0
T DIB0
Daten kopieren.

Gruss Daniel
 
Das ganze sollte man aber nur in FCs machen, da damit der Instanzdatenbaustein geändert wird, gehen nämlich in einem FB anschließend alle Zugriffe auf STAT, IN, OUT und INOUT an den neuen Instanz-DB und nicht mehr an den, der beim Aufruf des FB deklariert wurde.
 
Dazu müßte ich beide DBs aufmachen, oder erst den einen auf und dann den anderen auf, wobei der erste wieder zu geht.
Könnten beide DBs ausserhalb der Schleife nur einmal aufgemacht werden ?
Gruß und Danke für Infos.

Wenn es sich um "normale" DB's handelt- von denen Du vermutlich sprichst- nicht.

In der Schleife schreibst halt:

AUF DB 1
L [was auch immer]
AUF DB 2
T [wohin auch immer]

lG
Karl
 
Vielleicht sollte man noch ergänzen, dass es sich beim DI eigentlich um einen normalen DB handelt, zumindest aus der Sicht eines FC.
(Oder liege ich da falsch?)

du liegst fast vollkommen richtig, das mit dem fc ist nicht ganz richtig, denn natürlich funktioniert der selbe mechanismus auch in einem FB, man muß nur nach der operation den eigentlichen instanzDB wieder in das adressregister laden. (was ich sowieso empfehlen würde, denn wer weiß schon in welcher aufrufumgebung der baustein irgendwann mal zum einsatz kommt - lieber heute schon an morgen denken)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ganze sollte man aber nur in FCs machen, ...
ich finde, man sollte es gar nicht machen. Ich komme seit Jahren ohne Auf-Befehl und ohne qualifiziertem Zugriff (L "DBIrgendwas".BitWeisNicht) und ohne Global-DB aus. Und FC gibt es bei mir praktisch auch nicht. Aber kann sein, dass andersartige Aufgabenstellungen andersartig strukturierte Programme erfordern.
 
ich finde, man sollte es gar nicht machen. Ich komme seit Jahren ohne Auf-Befehl und ohne qualifiziertem Zugriff (L "DBIrgendwas".BitWeisNicht) und ohne Global-DB aus. Und FC gibt es bei mir praktisch auch nicht. Aber kann sein, dass andersartige Aufgabenstellungen andersartig strukturierte Programme erfordern.

du bist mein persönlicher held
 
@Perfektionist
War auch nur ein kleiner Scherz am Rande! :)

Wenn Du solche Strukturen bei Deinen Programmen sauber beibehalten kannst, freut es mich für Dich. Ein sauberes Programm ist eine schöne Sache.
Ich bin aber der Meinung, dass man fast alles was möglich ist, auch nutzen können sollte, ohne sich dafür schämen zu müssen. Man sollte nur immer wissen was man tut.

Ich erinnere mich noch an einen typischen Satz aus der Lehre:
"Doppelzuweisungen sollte man vermeiden" *ROFL*
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin aber der Meinung, dass man fast alles was möglich ist, auch nutzen können sollte, ohne sich dafür schämen zu müssen. Man sollte nur immer wissen was man tut.
Dies sind die Sätze, die mich zum Wahnsinn treiben können. Ersetze mal das recht allgemein gehaltene "man" durch eine konkrete Person (z.B. durch ich oder du), und schau nochmal, ob Deine Aussage dann immer noch einen Sinn ergibt, hinter dem Du stehen kannst. Ich persönlich für meinen Teil bin der Meinung, dass man (ich+Du, in dieser Reihenfolge) nicht alles tun sollte, was möglich ist. Aber die Grenze zwischen gut und schlecht zu ziehen, da gibt es halt auch keine schwarz/weiss-Antworten. Im Falle von Doppelzuweisungen gibt es auch Argumente, die gegen ein solches Vorgehen sprechen. Weniger bei Siemens, aber bei anderen Herstellern, die nicht mit einem PAA arbeiten, sondern direkt auf die Peripherie schreiben. Und selbst bei Siemens ist es möglich, doppelt direkt auf Peripherie zu schreiben. Wenn ich nun einem, der nicht weiss, was er tut, von vorneherein abdressiere, doppelt auf Ausgänge zuzuweisen, dann schreibt der mir auch nicht "aus Versehen" auf ein PAW doppelt seine Zwischen- und Endergebnisse.
 
Dies sind die Sätze, die mich zum Wahnsinn treiben können. Ersetze mal das recht allgemein gehaltene "man" durch eine konkrete Person (z.B. durch ich oder du), und schau nochmal, ob Deine Aussage dann immer noch einen Sinn ergibt, hinter dem Du stehen kannst.

Ja, kann ich voll und ganz! Ich habe nicht geschrieben, dass man prinzipiell alles machen was sollte, was geht, sondern:

Ich bin aber der Meinung, dass man fast alles was möglich ist, auch nutzen können sollte, ohne sich dafür schämen zu müssen. Man sollte nur immer wissen was man tut.

Sprich: Manche Leute sollten noch nicht einmal ein XOR verwenden!
 
ich finde, man sollte es gar nicht machen. Ich komme seit Jahren ohne Auf-Befehl und ohne qualifiziertem Zugriff (L "DBIrgendwas".BitWeisNicht) und ohne Global-DB aus. Und FC gibt es bei mir praktisch auch nicht. Aber kann sein, dass andersartige Aufgabenstellungen andersartig strukturierte Programme erfordern.

Verwendest Du überhaupt DBs?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
zitat von perfektionist
ich finde, man sollte es gar nicht machen. Ich komme seit jahren ohne auf-befehl und ohne qualifiziertem zugriff (l "dbirgendwas".bitweisnicht) und ohne global-db aus. Und fc gibt es bei mir praktisch auch nicht. Aber kann sein, dass andersartige aufgabenstellungen andersartig strukturierte programme erfordern.

verwendest du überhaupt dbs?

ob1
fb1
idb1
vat1 :d
 
Man sollte nur immer wissen was man tut.
Ich sollte immer wissen was ich tue.
Du solltest immer wissen was du tust.
Ich sollte immer wissen was du tust.
Du solltest immer wissen was ich tue.

da sehe ich durchaus Parallelen zu dem kategorischen Imperativ:
Er gebietet allen endlichen vernunftbegabten Wesen und damit allen Menschen, Handlungen darauf zu prüfen, ob sie einer universalisierbaren Maxime folgen und ob dabei die betroffenen Menschen je auch in ihrer Selbstzweckhaftigkeit berücksichtigt werden.

Langer Rede, kurzer Sinn: einen AUF DBxx (der sich auch in einem L "DB",wert versteckt), will ich weder mir selbst noch anderen antun. Diese Art zu programmieren empfinde ich als fehlerträchtig und ist nur dadurch zu rechtfertigen, da es sich um ein Relikt aus S5-Zeiten handelt.
 
Zurück
Oben