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

Indizierter Zugriff auf eine Array-Variable

  • Beitrag
  • Betrifft Produkt(e)


FRAGE:
Wie kann ich in einem Array, bestehend aus elementaren Datentypen, eine Variable über deren Index ansprechen?

ANTWORT:
Der Zugriff auf eine Variable über deren Index ist über die absolute Adresse dieser Variable möglich. Anhand der Anfangsadresse des Arrays und des verwendeten elementaren Datentyps können Sie die Pointeradresse des gewünschten Elements bestimmen. Über die direkte Adressierung im Adressregister kann diese Variable anschließend gelesen und verändert werden.

Funktionsbeispiel:

Im beigefügten Beispiel wird in der Funktion FC1, die absolute Pointeradresse einer gewünschten Array-Variablen anhand des Index ermittelt.

FC Parameter:

Parameter

Deklaration

Datentyp

Beschreibung

data_type

INPUT

BYTE

Codierung Datentyp

index

INPUT

INT

Index der Array-Variablen

address

OUTPUT

DWORD

Absolutadresse Pointerformat

db_number

OUTPUT

WORD

DB-Nummer

field_address

IN_OUT

ANY

ANY-Pointer auf Anfangsadresse

Die Funktion benötigt am Eingangsparameter "data_type" die Codierung für den im Feld verwendeten Datentyp:

 

B#16#00

Datentyp BOOL

 

B#16#01

Datentyp BYTE

 

B#16#02

Datentyp WORD / INT

 

B#16#03

Datentyp DWORD / DINT

Geben Sie am Eingangsparameter "index" den Index der Array-Variablen an, deren Adresse Sie ermitteln wollen.
Dem Ein-/Ausgabeparameter "field_address" übergeben Sie den ANY-Pointer der Anfangsadresse des Variablenfeldes.
Die Funktion liefert Ihnen die Ausgangsparameter "address" und "db_number" zurück.

Der Parameter "address" enthält die Pointeradresse des indizierten Elements. Im Parameter "db_number" erhalten Sie, falls sich das Array in einem Datenbaustein befindet, die Nummer des Datenbausteins. Ist das Array nicht in einem Datenbaustein hinterlegt, liefert dieser Parameter den Wert "0" zurück.

Der Download enthält ein STEP 7 V5 Projekt mit der Funktion FC1, dem Datenbaustein DB1 sowie zwei Beispielaufrufe aus dem Organisationsbaustein OB1. Sie können die Bausteine beliebig an Ihre Anforderung anpassen.

array_index.exe

Kopieren Sie die Datei "array_index.exe" auf ein separates Verzeichnis und starten Sie die Datei anschließend per Doppelklick. Anschließend können Sie das Projekt mit dem SIMATIC Manager öffnen.

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.