Indirekte Adressierung

Bei den Anfängen der SPS-Steuerungen, hat es ausgereicht, die digitalen Signale entsprechend mit UND/ODER- Verknüpfungen zu programmieren, oder die einfache Auswertung von Analogwerten.

Mit der höheren Leistungsfähigkeit der SPS-Systeme, wurden auch aufwändigere Funktionen mit der SPS umgesetzt,  z.B. Regeln, positionieren oder der Berechnungen von Werten. Die Anforderungen an die Maschine/Anlage für die einfache Bedienung, Datenauswertung, Rezeptverwaltung, Fehlerauswertung, usw. sind im Laufe der Zeit ebenfalls gestiegen.

Um viele Anwendungen überhaupt umsetzen zu können, wird die indirekte Adressierung benötigt.

Die übliche Weise der Programmierung ist die, Signale, Daten und Variablen absolut oder symbolisch im SPS-Programm anzugeben, wodurch immer die Adresse des Signals deutlich hervor geht.

Hier ein paar Beispiele:

  • E0.0 / Digitaler Eingang, Adresse: Byte 0 + Bit 0
  • A12.4 / Digitaler Ausgang, Adresse: Byte 12 + Bit 4
  • M99.7 / Merker, Adresse: Byte 99 + Bit 7
  • PEW402 / Peripherie Eingangswort, Adresse: Wort 402
  • PAW888 / Peripherie Ausgangswort, Adresse: Wort 888
  • DB99.DBD10 / Datenbaustein DINT-Wert, Adresse: DB99,  Dword 10

Bei der indirekten Adressierung kann die Adresse über eine Variable übergeben werden. Diese Variable wir dann als Pointer oder auch Adresszeiger bezeichnet. Dabei ist vom System festgelegt, wie dieser Adresszeiger aufgebaut ist.

Hier ein paar Beispiele für die indirekte Adressierung, inkl. SPS-Anweisung:

  • U E[MD100] / Digitaler Eingang, mögliche Adresse: Byte 0 + Bit 0
  • = A[DB10.DBD4] / Digitaler Ausgang, mögliche Adresse: Byte 12 + Bit 4
  • O M[AR1, P#0.7] / Merker, mögliche Adresse: Byte 99 + Bit 7
  • L PEW[MD46] / Peripherie Eingangswort, mögliche Adresse: Wort 402
  • T PAW[DB90.DBD0] / Peripherie Ausgangswort, mögliche Adresse: Wort 888
  • L DBD[AR1, P#20.0] / Datenbaustein DINT-Wert, mögliche Adresse: DB99,  Dword 10

In den oberen Beispielen wird die entsprechende Adresse über eine Variable oder das Adressregister AR1 übergeben, und ist im Programm nur schwierig nachzuvollziehen. Durch entsprechendes verändern des Pointers ist es nun möglich,  flexibel auf die gewünschten Signale/Daten zuzugreifen, und sich entsprechende Datenfelder aufzubauen.

Eine großes Problem, welches bei der indirekten Adressierung auftritt ist, dass versucht wird auf Adressbereiche zuzugreifen, die nicht in der SPS vorhanden sind.

Das können nicht existierende DB’s sein, eine negative Byte-Adresse,  eine zu große Adresse. Durch solche Fehler kann die SPS bei fehlendem Fehler-OB in Stop gehen, oder das Programm mit falschen Signale/Daten weiter ausgeführt werden.

Daher empfehlt die Firma  " Gersch SPS-Technik  "  eine Überprüfung der Adressangabe. In den FC/FB-Bausteinen mit indirekter Adressierung der Firma Gersch SPS-Technik sind einige logische Überprüfung der Adressen vorhanden, wodurch vieles abgefangen wird, aber keine 100%-tige Sicherheit garantiert werden kann.

Hier einige Beispiele für die eine Überprüfung eines Adresszeigers:

Kommentieren ist momentan nicht möglich.