Step 7 Instanz-DB aufschalgen - Wozu ?

TP-Inc

Level-3
Beiträge
1.029
Reaktionspunkte
220
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich kenne die Befehle AUF DB[..] und AUF DI[..]. Das aufschlagen eines DBs und das anschließende hantieren mit des Inhalt ist mir geläufig und ich verstehe auch den Sinn. Warum kann man allerdings einen DB als I-DB öffnen ? Ich verstehe nicht wozu das gut sein soll einen Global-DB als Instanz-DB aufzuschlagen :confused: Und kann man nachdem man einen DB als I-DB aufgeschlagen hat noch symbolisch auf die Variablen des "echten" Instanz-DBs (sprich die Schnittstellen-Variablen) zugreifen ?
 
Das ist nützlich, falls man mal gleichzeitig zwei DB öffnen will, z.B. um (in einer Schleife) indirekt von einem in einen anderen DB zu kopieren (oder zu vergleichen):
Code:
      AUF   DB [#DB1]
      AUF   DI [#DB2]
      L     DBD [AR1,P#0.0]   //indirekt lesen aus dem als "DB" geöffneten DB
      T     DID [AR2,P#0.0]   //indirekt schreiben in den als "DI" geöffneten DB

Vorsicht:
Wenn man in einem FB einen anderen als den eigenen IDB als DI öffnet, dann kann man nicht mehr auf die eigenen Instanzvariablen zugreifen - die Zugriffe greifen auf den anderen "fremden" DB zu.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
"AUF DI" wird im Hintergrund verwendet, wenn du mit "CALL FB x, DB y" einen FB aufrufst. Ist wahrscheinlich nur eine Nettigkeit/Schlampigkeit von Siemens, dass sie dich dieses Register auch in AWL modifizieren lassen.
Du musst ja auch nicht unbedingt jeden Befehlstyp in deinem Programm verwenden. Es hat bisher auch noch keiner gefragt, wie er die Anweisungen zur Behandlung des Master Control Relay in seinem Programm einbauen kann.
 
Zurück
Oben