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

Indizierte Bearbeitung von Arrays mit zusammengesetzten Datentypen

  • Beitrag
  • Betrifft Produkt(e)

FRAGE:
Wie kann ich auf Elemente von Arrays mit zusammengesetzten Datentypen variabel zugreifen?

ANTWORT:
Der variable Zugriff auf Elemente von Arrays mit zusammengesetzten Datentypen lässt sich nur über eine separate Funktion realisieren, Diese Funktion besitzt somit als Übergabeparameter die gewünschte Array-Nummer und die Anfangsadresse des Arrays [0]. Voraussetzung für die Funktion ist, dass sich das Array in einem Datenbaustein befindet und das Array [0] nicht für aktuelle Daten verwendet wird. Die Funktion bestimmt anhand der übergebenen Parameter die Adressen und kopiert das angegebene Array in das Array [0], welches als Arbeitsbereich dient. Anschließend kann das Array symbolisch bearbeitet werden. Danach wird dieses wieder an die ursprüngliche Array-Nummer zurück kopiert.

Programmierhinweise für die Funktion:

  • Projektieren Sie eine Funktion mit den unten aufgeführten Parametern.
  • Bestimmen und berechnen Sie anhand der Parameter die Adressen für das Array [0] und der zu bearbeiteten Array-Nummer. Speichern Sie diese in den temporäre Variablen der Funktion ab.
    L P##Field_Start // Einlesen der Feldadresse [0]
    LAR1
    L D [AR1,P#0.0] // Speichern der Adressen in die temporären Variablen vom Typ ANY
    T LD 0 // temp 'firststruc' = LD 0-9
    T LD 10 // temp 'sourcestruc' = LD 10-19
    L D [AR1,P#4.0]
    T LD 4
    T LD 14
    L W [AR1,P#8.0]
    T LW 8
    T LW 18
    L LD 16 // Bestimmung der Adresse des gewünschten Arrays
    LAR1
    L #Indices
    L LW 12
    *I
    SLD 3
    +AR1
    TAR1 LD 16
  • Kopieren Sie danach -mit Hilfe des SFC20 (BLKMOV)- das zu bearbeitende Array in das Array [0].
  • Sie können nun -je nach Bedarf Ihrer Anwendung- symbolisch auf das indizierte Array zugreifen.
  • Anschließend kopieren Sie -mit Hilfe des SFC20 (BLKMOV)- das Array [0] zurück in den ursprünglichen Bereich.

Hinweis:
Sie finden in der STEP 7 Onlinehilfe unter
"Hilfe > Hilfethemen > Index > Format: BLOCK > Parametertyp ANY"
den Aufbau des ANY-Pointers beschrieben. Unter
"Hilfe > Hilfethemen > Index > ANY, Parameter:Beschreibung und Verwendung"
finden Sie ein Beispiel, wie Sie den Datenbereich indirekt angeben können.

FC Parameter:

Deklaration

Name

Typ

Kommentar

In

Indices

INT

Übergabe der gewünschten Array-Nummer

In_out

Field_Start

ANY

Angabe der Adresse vom Array [0] des DBs mit Ihrer Struktur

temp

firststruc

ANY

Speicher für den ANY-Zeiger von Array [0]

temp

sourcestruc

ANY

Speicher für den ANY-Zeiger von der gewünschte Array-Nummer

temp

ret_value

ANY

Speicher für den ANY-Zeiger für das Array [0]

Das Beispiel enthält die Funktion FC2, die über den Organisationsbaustein OB1 aufgerufen wird. Weiterhin ist ein Datenbaustein DB2 mit einem Array vom Datentyp "STRUC" vorhanden, welcher verschiedene elementare Datentypen enthält. Wenn Sie dieses Beispiel verwenden, müssen Sie den Datenbaustein DB2 für Ihre Anforderungen ändern, sowie auch den Anwendercode im Netzwerk 3. Der FC2 kann für alle zusammengesetzten Datentypen verwendet werden.

Aarray.exe

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

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.