Mit 1500/1200 gibts da meiner Meinung gar keine Anwendung, aber du fragst ja in Step 7… In Classic konnte man nur in SCL Variablen als Array-Indizes verwenden (also Array[#Index] schreiben). In KOP/FUP/AWL ging das nicht, brauchte man aber ab und zu trotzdem.
Im TIA geht das inzwischen auch in KOP/FUP. Bei AWL kann ich es dir grad nicht sagen, würde mich aber wundern wenn nicht.
Hätte jemand für mich praktische Beispiele wo er das Ganze schon Mal eingesetzt hat?
Kommt drauf an welche "Art" von indirekter Adressierung dich interessiert.
Die von
@TP-Inc und
@Oberchefe erwähnten Zugriffe mit auf Array mittels Index sind Standard, speziell bei Verwendung von Schleifen.
Schau dir mal als Code-Beispiel den "LGF_SearchMinMax_DInt" aus der
Siemens LGF-Bibliothek an, ist ein Klassiker.
Der Baustein bekommt ein "Array[*] of Dint" (also mit variablen Grenzen), ermittelt die Grenzen & durchsucht das Array von Anfang bis Ende nach Min/Max-Werten.
Code:
REGION Searching the array
// Assign first value as min / max
#tempMinValue := #tempMaxValue := #values[#tempArrayLowerBound];
// Search the Array for min/max values
FOR #tempCounter := #START_FROM_SECOND_ELEMENT TO #tempArrayUpperBound DO
#tempActValue := #values[#tempCounter];
// check for min
IF #tempActValue < #tempMinValue THEN
#tempMinValue := #tempActValue;
#tempArrayIndexMin := #tempCounter;
// check for max
ELSIF #tempActValue > #tempMaxValue THEN
#tempMaxValue := #tempActValue;
#tempArrayIndexMax := #tempCounter;
END_IF;
END_FOR;
END_REGION
Ein weiteres Thema der indirekten Adressierung wären Pointer.
Kenne ich vorallem aus Bestands-AWL.
Wenn man diese beherscht kann man damit einiges an "dark Magic" betreiben

Sollte hier im Forum mehr als genug Material dazu geben.
E/As kann man auch indirekt lesen, kenne ich aber nicht aus der Praxis.
Problem ist hier, dass indirekte Zugriffe auf E/As keine Querverweise generieren (oder ich zu blöd bin diese zu finden).
Das kann die Fehlersuche...interessant machen^^