Beitragstyp: FAQ, Beitrags-ID: 97552147, Beitragsdatum: 08.07.2014
(4)
Bewerten

Wie können Sie in STEP 7 (TIA Portal) sicher und indirekt adressieren?

  • Beitrag
  • Betrifft Produkt(e)

Beschreibung
Bei der indirekten Adressierung wird die Adresse, deren Wert gelesen oder geschrieben werden soll, erst während der Ausführung des Programms bestimmt. Mit dieser Methode können Sie den Programmieraufwand reduzieren und Ihr Programm flexibler gestalten. Meistens sind die Zugriffsadressen bei der Programmerstellung bekannt. Um die indirekte Adressierung flexibel und sicherer zu machen,

  • nutzen Sie den Datentyp "Array" für die zusammenliegenden Daten des gleichen Datentyps,
  • verwenden Sie für unterschiedliche Bereiche den Index, über den der Zugriff auf die jeweilige Variable erfolgt.

Im nachfolgenden Beispiel wird auf drei Variablen mit unterschiedlichen Speicherbereichen zugegriffen. Die Tabelle 01 zeigt die Zugriffsliste der drei Variablen, die je einem Index zugeordnet sind:
 

Index Zugriff auf Variable Speicherbereich
1 Input_Word_0 EW 0
2 "Processdata".Temperature DB 1
3 Output_Word_4 AW 4
Tabelle 01

Erzeugen Sie eine Funktion und deklarieren Sie eine Eingangsvariable mit dem Datentyp "Int". Definieren Sie auch den Rückgabewert mit dem gleichen Datentyp. Bild 01 zeigt ein Beispiel für die Programmierung der Funktion "AccessGroupInt", in der indirekte Zugriffe deklariert und mittels Index zurückgegeben werden. Die indirekten Zugriffe können Sie direkt im Programm verwenden, z.B. mit der definierten Anweisung #TempValue:= "AccessGroupInt"(#Index);. Diese Methode der Programmierung ist nun

  • nachvollziehbar, da Sie die Querverweislisten anwenden können,
  • sicher, da Sie nur die vorher definierten Speicherbereiche nutzen,
  • universell für Standard als auch für optimierte Datenbereiche anwendbar.


Bild 01

Im nachfolgenden Beispiel werden Daten von drei verschiedenen optimierten Datenbausteinen gelesen und geschrieben. Alle drei Datenbausteine "Silo_Water", "Silo_Sugar" und "Silo_Milk" enthalten die gleichen Variablendeklarationen:

  • DB-Variable 1: "MyBool" vom Datentyp Bool,
  • DB-Variable 2: "MyInt" vom Datentyp Int,
  • DB-Variable 3: "MyWord" vom Datentyp Word.


Bild 02

Für die Adressierung der DB-Variablen mit den unterschiedlichen Datentypen wird der PLC-Datentyp "SiloUDT" erstellt. Das Auslesen erfolgt mit dem Rückgabewert der Funktion "AccessGroupSiloRead", der mit dem PLC-Datentyp "SiloUDT" definiert ist. Auf dieser Basis können Sie die indirekten Zugriffe in einem FB programmieren, wie z.B. mit der Anweisung im Bild 03:

  • "Silo_Handling_OnlyReading"("AccessGroupSiloRead"(Index:= #Silo_Index));


Bild 03

Erstellumgebung
Die Bilder in diesem FAQ sind mit STEP 7 (TIA Portal) V13 erstellt worden.

Ergänzende Suchbegriffe
Symbolisch

ProductSupport.EntityResultListTitle
ProductSupport.EntityResultListDescription

ProductSupport.EntityResultListButtonText
URL kopieren
mySupport Cockpit