×
Siemens Industry Online Support
Siemens AG
Beitragstyp: FAQ Beitrags-ID: 15360455, Beitragsdatum: 15.09.2011
(21)
Bewerten

Welcher Unterschied besteht zwischen einem Instanz- und einem Global-Datenbaustein und wie wird durch einen CALL-Aufruf das DB-Register beeinflusst?

  • Beitrag
  • Betrifft Produkt(e)

Beschreibung

Unterschied zwischen Global- und Instanz-Datenbausteine
Beim Global-DB können alle Bausteine (FBs, FCs und OBs) die Daten im enthaltenen Datenbaustein lesen oder schreiben. Der Instanz-DB ist einem bestimmten Funktionsbaustein zugeordnet und enthält Lokaldaten für diesen zugeordneten FB.
 

Global-Datenbausteine Instanz-Datenbausteine
Alle Bausteinen (FBs, FCs und OBs) können im Programm auf den Global-DB zugreifen. Der Instanz-DB ist einem FB zugeordnet.
Ein Global-DB kann unabhängig von anderen Bausteinen im Programm erstellt werden. Der Instanz-DB kann erst erzeugt werden, wenn der zugehörige FB im Programm vorhanden ist.
Es können keine statischen Lokaldaten deklariert werden. Statische Lokaldaten können im FB deklariert werden.
Die abgelegten statischen Lokaldaten gehen nach der Beendigung des Bausteins nicht verloren und bleiben über mehrere Zyklen lang erhalten, bis sie neu geschrieben werden.
Das Hinzufügen, Löschen und Ändern von Variablen erfolgt im Datenbaustein. Das Hinzufügen, Löschen und Ändern von Variablen erfolgt im zugehörigen Funktionsbaustein.
Anfangs- und Aktualwerte können im Global-DB geändert werden. Anfangs- und Aktualwerte können im Instanz-DB nicht geändert werden.
Die Struktur im Global-DB kann selbst bestimmt werden. Die Struktur im Instanz-DB ist durch die Variablendeklaration im zugehörigen FB vorgegeben.
Tabelle 1

Hinweis
Das STEP 7 Programm kann in der CPU auf Global- und Instanz-DBs gleichwertig lesend und schreibend zugreifen.


Bild 01

Die Daten für verschiedene FBs können auch in einem einzigen Instanz-DB (Multiinstanz) abgelegt werden. Bild 02 zeigt ein Beispiel für den Aufruf der beiden Funktionsbausteine FB5 und FB6 als Multiinstanzen im FB1. Die beiden aufgerufenen FBs legen ihre Daten in dem Instanzdatenbaustein DB1 des aufrufenden Bausteins FB1 ab. In der Deklaration des FB1 werden die Multiinstanz-Bausteinaufrufe als statische Variablen abgelegt.


Bild 02

Weitere Informationen finden Sie in der STEP 7 Onlinehilfe, unter

  • "Instanz-Datenbausteine"
  • "Anlegen von Datenbausteinen (DB)"
  • "Aufbau eines Datenbausteins (DB)"
  • "Verwendung von Multiinstanzen"

Hinweis zur Hochrüstung von STEP 7 V4.02 auf V5.x
Bei der Hochrüstung von STEP 7 V4.02 auf V5.x kann es vorkommen, das einige CALL-Aufrufe im KOP/AWL/FUP-Editor rot erscheinen. Die Ursache für dieses Verhalten ist, dass ein im Bausteinaufruf verwendeter Instanz-DB in der Symboltabelle als Global-DB definiert wurde. Dies ist bezüglich der STEP 7 Programmierregeln nicht erlaubt und wird ab den STEP 7 Versionen V5.x nicht mehr akzeptiert.

Abhilfe
Damit die falsch deklarierten Datenbausteine richtig angelegt werden, empfehlen wir Ihnen die folgende Abhilfe:

  1. Löschen Sie die Symboltabellenzeilen, in denen die beanstandeten DBs deklariert werden.
  2. Löschen Sie anschließend die Datenbausteine, die falsch deklariert wurden.
  3. Öffnen Sie den aufrufenden Baustein und erzeugen Sie mit den CALL-Aufrufen die Instanz-DBs neu.

Beeinflussung der DB-Register durch einen Call-Aufruf
Mit dem Bausteinaufruf in STEP 5 und in STEP 7 wird der ursprüngliche Inhalt der DB1- und DB2-Register wiederhergestellt. Ein aufgeschlagener Datenbaustein bleibt solange "gültig", bis ein anderer Datenbaustein aufgeschlagen wird. Die Inhalte der DB-Register spiegeln die momentan aufgeschlagenen Datenbausteine (DB / DI) wieder.

Es ist jedoch darauf zu achten, dass nicht jede Änderung der DB-Register durch den S7-Editor/Compiler für den Anwender offensichtlich ist. Rufen Sie beispielsweise über einen Call-Aufruf eine Funktion auf, der Sie einen voll qualifizierten DB-Parameter übergeben, wird durch den Compiler der angegebene Datenbaustein aufgeschlagen. Diese DB-Nummer steht nach Beendigung der Funktion wieder im DB1-Register. Änderungen innerhalb der Funktion haben keine Auswirkungen auf die Inhalte der DB-Register nach dem Funktionsaufruf.
 

Beispiel:

DB1-Register

AUF DB1 1
L DBB 0  
CALL FC1

Eingang1:= DB2.DBB0
Eingang2:= DB3.DBB0

 
L DBB 0 3
Tabelle 2

Rufen Sie einen Funktionsbaustein mit dem dazugehörigen Instanzdatenbaustein auf, steht nach dem Call-Aufruf der Instanz-DB im DB1-Register. Die Übergabe von voll qualifizierten DB-Zugriffen an den FB sowie Änderungen der DB-Register innerhalb des FBs haben darauf keinen Einfluss.
 

Beispiel:

DB1-Register

AUF DB1 1
L DBB 0  
CALL FB1, DB10

Eingang1:= MW0
Eingang2:= DB3.DBB0

 
L DBB 0 10
Tabelle 3

Nach dem Aufruf eines Systemfunktionsbausteins (SFB) steht die dazugehörige Instanzdatenbausteinnummer ebenso im DB1-Register. Die Inhalte der Datenregister bleiben aber nach einem Bausteinwechsel über einen UC- oder CC-Befehl immer erhalten, da bei diesen Aufrufen keine Parameter oder Instanzdatenbausteine angegeben werden.

Hinweis
Um bei der STEP 7-Programmierung die Bereichslängenfehler bzw. Zugriffsfehler beim Umgang mit Datenbausteinen zu vermeiden, sollten Sie nur mit vollqualifizierten DB-Zugriffen arbeiten (z.B. DBx.DBBy oder symbolisch "DBName".Variablenname).

Securityhinweise
Um technische Infrastruktur, Systeme, Maschinen und Netzwerke gegen Cyber-Bedrohungen zu sichern, ist es erforderlich, ein ganzheitliches IT Security-Konzept zu implementieren (und kontinuierlich aufrechtzuerhalten), das dem aktuellen Stand der Technik entspricht. Die Produkte und Lösungen von Siemens formen nur einen Bestandteil eines solchen Konzepts. Weitergehende Informationen über Cyber Security finden Sie unter
https://www.siemens.com/cybersecurity#Ouraspiration.