TIA - SCL: Indirektes Adressieren einer Struktur

ASi-Master

Level-1
Beiträge
21
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich möchte eine FC in SCL schreiben, in der ich gezielt Strukturelemente auswerten kann. Da es eine Menge Kombinationsmöglichkeiten gibt, wäre das eine große Hilfe.

- INPUT_1 und INPUT_2 sollen als Variablen auf die Strukturelemente zeigen
- OUTPUT ist eine boolsche Variable

Vereinfacht soll es so aussehen:

U DB_FAHRAUFTRAEGE.PL19.[INPUT_1].QUELLE.[INPUT_2].SELECTED
U DB_FAHRAUFTRAEGE.PL19.[INPUT_1].ZIEL.[INPUT_2].SELECTED
= OUTPUT

Mir fehlt komplett der Ansatz bzw. ich weiß nicht, nach welchen Stichworten ich suchen soll. Oder das geht (mal wieder) einfach nicht. Danke im Voraus für die Hilfe.

Mit freundlichen Grüßen
Andreas
 
- INPUT_1 und INPUT_2 sollen als Variablen auf die Strukturelemente zeigen

Kommt drauf an was Input_1/2 für Typen sind? Strings? Willst du die Variable symbolisch vorgeben? Das geht dann nicht (leider)
Pseudoarrays gehen auch nicht. Also kein PL191 - PL199. Dafür gehen bei Siemens Array auch frei definiert also Array[190..199] of Struct.
ist aber PL19 und QUELLE vom Typ Array, dann kann INPUT_1 als Arrayindex verwendet werden. also
U DB_FAHRAUFTRAEGE.PL19[INPUT_1].QUELLE[INPUT_2].SELECTED
oder
U DB_FAHRAUFTRAEGE.PL[INPUT_1].QUELLE[INPUT_2].SELECTED
mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

danke für die prompte Antwort.

Input kann in der Funktion sein, was immer es sein müsste. Leider ist es ein bestehendes Projekt und das Strukturelement INPUT_n selbst eine Struktur.

Alles auf ein Array umzuschreiben ist ein viel zu großer Aufwand. Der indirekte Umgang mit Arrays ist mir geläufig und findet regelmäßig Anwendung.

Ich sehe dann nur zwei Möglichkeiten:

1. Den optimierten DB in nicht optimiert wandeln und dann in SCL die Adressen errechnen und ansprechen.

2. Hunderte Verknüpfungen zu Fuß schreiben...

Aber vielleicht hat ja noch jemand eine andere Idee, obwohl René‘s Antwort schon ernüchternd genug war.

Mit freundlichen Grüßen
Andreas
 
Zurück
Oben