TIA Referenzen dynamisch zur Laufzeit an FB übergeben.

Staubsauger

Level-2
Beiträge
70
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich möchte einem FB zur Laufzeit dynamisch Daten zuweisen, welche im Baustein gelesen und geschrieben werden sollen. Der Datentyp ist immer gleich.
Erst wollte ich das per "REF_TO" machen, musst aber leider feststellen, dass das nur bei FCs geht.
Ich habe das jetzt gelöst indem ich die Daten in einem Array of UDT ablege und je nach Situation den Array-Index entsprechend wähle.

1724078805359.png
Kann ich die Übergabe das auch irgendwie dynamisch gestalten ohne ein Array zu nutzen?
Irgendwie habe ich gerade das Gefühl, dass ich hier auf dem Schlauch stehe.

CPU1512 SP
TIA19
 
Hallo zusammen,

ich möchte einem FB zur Laufzeit dynamisch Daten zuweisen, welche im Baustein gelesen und geschrieben werden sollen. Der Datentyp ist immer gleich.
Erst wollte ich das per "REF_TO" machen, musst aber leider feststellen, dass das nur bei FCs geht.
Ich habe das jetzt gelöst indem ich die Daten in einem Array of UDT ablege und je nach Situation den Array-Index entsprechend wähle.

Anhang anzeigen 80600
Kann ich die Übergabe das auch irgendwie dynamisch gestalten ohne ein Array zu nutzen?
Irgendwie habe ich gerade das Gefühl, dass ich hier auf dem Schlauch stehe.

CPU1512 SP
TIA19
Wenn's um Daten innerhalb einer Udt geht, dann einfach die Udt als Inout deklarieren. Ich verstehe noch nicht so ganz was du mit "dynamisch" meinst. Irgendwelche Daten musst du ja auswählen und auswerten, auch wenns nur Fächer in einem Array sind.. irgend einen Zeiger musst du ja vorgeben und die Daten umladen
 
Einen InOut des UDT anlegen und beim Aufruf die jeweils gewünschte Instanz des UDT anschalten.
Genau das tue ich ja in meinem gezeigt Screenshot.
Das funktioniert auch, wenn meine Strukturen in einem Array liegen indem ich über den Array-Index die entsprechend zu übergebende Struktur wähle.

Ich verstehe noch nicht so ganz was du mit "dynamisch" meinst.
Ich möchte meinem FB nun zur Laufzeit Referenzen auf unterschiedliche Strukturen geben ohne, dass diese im selben Array liegen müssen.
Hoffe so ist es verständlich. Ich steh irgendwie auf dem Schlauch wie ich das tun kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich möchte meinem FB nun zur Laufzeit Referenzen auf unterschiedliche Strukturen geben ohne, dass diese im selben Array liegen müssen.
Hoffe so ist es verständlich. Ich steh irgendwie auf dem Schlauch wie ich das tun kann
Oben in dem von mir verlinkten Beitrag unter "Masseoperationen".
Du kannst beispielsweise einen DB of UDT in ein Array of DB_Any oder einen einzelnen Db_any mappen & dann wieder per Index zugreifen.

Ob man das gleiche mit Elementen innerhalb eines DBs machen kann, weiß ich aber grade nicht auswendig.
Evtl. kann man mit den Resolve Symbol Befehlen was stricken.
https://www.sps-forum.de/threads/resolve-symbols-neue-funktionen-in-v18.113075/
Sind recht neu, hab noch nicht ausprobieren können was genau die Dinger ermöglichen können.
 
ResolveSymbols arbeitet halt mit Strings, für PLC-interne Geschichten ist das im Hinblick auf Performance und Querverweise nicht so wirklich ideal..

Du könntest die Referenz nach "außen" verschieben, ich mach sowas immer gern in SCL:
1724180995744.png

je nach dem wie leidenserprobt du bist, geht das aber auch in KOP:
1724180905151.png
new ist ein InOut vom Typ TestType, es würde aber auch als In gehen, weils ja nach außen hin nur eine UDT ist.



Vielleicht hilft dir auch dieser Beitrag.
 
Zurück
Oben