×
Siemens Industry Online Support
Siemens AG
Beitragstyp: Anwendungsbeispiel Beitrags-ID: 6175256, Beitragsdatum: 28.01.2008
(0)
Bewerten

Zugriff auf eine Multiinstanz

  • Beitrag
  • Betrifft Produkt(e)

FRAGE:
Wie kann man die Variablenadresse in multiinstanzfähigen Funktionsbausteinen ermitteln?

ANTWORT:
In multiinstanzfähigen Funktionsbausteinen wird bei den Bausteinparametern und den statischen Lokaldaten die absolute Adresse relativ zum Adressregister AR2 geladen. Wenn man die absolute Adresse der Variablen im Instanzdatenbaustein ermitteln will, muss man den bereichsinternen Zeiger (nur die Adresse von AR2) zur geladenen Variablenadresse addieren.

Beispiel:

TAR2

// Lade Adressregister in den AKKU 1 (Offset)

UD DW#16#00FF_FFFF

// Ausblenden der Bereichskennung

L P##variable

// Lade Adresse der Variablen

+D

// Addiere Offset und Variablenadresse

LAR1

// Speichere das Ergebnis im Adressregister AR1

Die absolute Adresse steht somit für die weitere Bearbeitung im AR1 zur Verfügung.
Diese Methode muss immer dann angewendet werden, wenn Sie die Funktionsbausteine als Lokalinstanz aufrufen, d.h. die Funktionsbausteine werden als statische Variable vom Typ "FB" in einem Funktionsbaustein angelegt. Dadurch werden alle Daten von den aufgerufenen Instanzen (Funktionsbausteinen) in einem Instanzdatenbaustein hinterlegt. Der Offset zu den einzelnen Instanzen steht im AR2. Wenn Sie die Funktionsbausteine nicht als Lokalinstanz aufrufen, kann die Berechnung entfallen. Im Adressregister AR2 steht dann der Wert '0'.
Hinweis:
Wenn Sie in Ihrem Programm das Adressregister AR2 verändern, so ändern Sie auch die Offsetadresse der Variablen. Ein korrekter Zugriff auf die Variablen ist dadurch nicht mehr gewährleistet. Daher müssen Sie das AR2 zuvor sichern und nach Ihrer Programmbearbeitung wieder in den Urzustand zurücksetzen.

Weitere Informationen hierzu finden Sie in unserem Beitrag

  • "Warum werden die indirekten Aufrufe mit Verwendung des AR2 nach dem Speichern des Bausteins durch statische Lokaldaten ersetzt?"
    Beitrags-ID: 22531225.

Hinweis:
Weitere Informationen über die Funktionsweise von Multiinstanzen finden Sie in der STEP 7 Onlinehilfe unter Multiinstanz. Dort finden Sie verschiedene Rubriken zu diesen Thema. Das gleiche gilt für den Datentyp ANY, den Sie in der STEP 7 Onlinehilfe unter
"Hilfe > Hilfethemen > Index > Format: BLOCK > Parametertyp ANY" finden.
Unter "Hilfe > Hilfethemen > Index > ANY, Parameter:Beschreibung und Verwendung"
finden Sie ein Beispiel, wie Sie den Datenbereich indirekt angeben können.

Beispielbeschreibung:
Im Beispiel wird der Funktionsbaustein FB2 zweimal als Lokalinstanz durch den Funktionsbaustein FB1 aufgerufen. Der Funktionsbaustein FB2 zeigt Ihnen auf verschiedene Art und Weise, wie man Variablenadressen ermittelt. Um die Adressenberechnung besser darzustellen bzw. nachzuvollziehen, stehen die Adressen als Ausgangsparameter zur Verfügung. Hierdurch lässt sich das Verhalten (Offset vom AR2) anhand der ausgegebenen aktuellen Adressen nachvollziehen. Als Referenz dient auch die Adressenzuordnung im Instanz-DB. Weiterhin wird die Richtigkeit der Funktionalität bzw. der Adressenberechnung durch Ein- und Ausschaltbefehle bestätigt.

Bausteinparameter des Funktionsbausteins FB2:

 Deklaration

Name

Typ

Kommentar

In

Left

POINTER

Übergabe einer Pointer-Variablen ("1" setzt Variable "ON_L"

In

Right

POINTER

Übergabe einer Pointer-Variablen ("1" setzt Variable "ON_R"

In

OFF

BOOL

Übergabe einer Variablen vom Typ BOOL ("1" reset der Variablen "ON_L" und "ON_R"

Out

ON_L

BOOL

Anzeige ("True" wenn In_Left und nicht In_Right und nicht In OFF)

Out

ON_R

BOOL

Anzeige ("True" wenn nicht OFF)

Out

FB_OFFSET_ADR

INT

Hier wird die absolute Adresse der Variablen "OFFSET_ADR" innerhalb vom FB ausgegeben (Byte-Nr.)

Out

FB_MI_OFFSET_ADR

INT

Hier wird die absolute Adresse zur Instanz der Variablen "OFFSET_ADR" ausgegeben (Byte-Nr.)

Out

ADR_Left

DWORD

Bereichsadresse des Parameters "Left"

Out

ADR_Right

DWORD

Bereichsadresse des Parameters "Right"

Out

ADR_OFF

DWORD

Bereichsadresse des Parameters "OFF"

Stat

OFFSET_ADR

WORD

Testvariable zur Ermittlung der absoluten Adressen.

Kostenpflichtige Software (Bezahlung über die SIMATIC Card):
Das Beispiel enthält ein STEP 7 V5 Projekt mit der Beschreibung der Funktionsbausteine. Des weiteren ist ein Beispielaufruf aus dem Organisationsbaustein OB1 und einer Variablentabelle enthalten. Sie können die Funktionsbausteine beliebig an Ihre Anforderungen anpassen.

Kostenpflichtiger Download AdrMi.exe (52 KB, 25 Einheiten)

Kopieren Sie die Datei "AdrMi.exe" auf ein separates Verzeichnis und starten Sie die Datei anschließend per Doppelklick. Das STEP 7 V5 Projekt wird automatisch mit allen dazugehörigen Unterverzeichnissen entpackt. Anschließend können Sie das entpackte Projekt mit dem SIMATIC Manager öffnen und bearbeiten.

Suchbegriffe:
Adressierungsprogrammierung, Adresszeiger

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.