da ich einen Funktionsblock x-fach aufrufe, habe ich ein Array of Struct erzeugt, in dem die unterschiedlichen Parameter gespeichert sind.
Nun habe ich 2 Probleme:
Habe ich mehrer Temperaturfühler. Die Bezeichnung der Temperaturfühler z.B. Variable: Temp1 habe ich im Array NameArray[index].Temperaturfühler als String gespeichert.
Nun will ich beim Aufruf des Funktionsblock mit hilfe von NameArray[index].Temperaturfühler den String als Variablenname übergeben. Der Funktionsblock soll als Wert nicht den String an sich (also in diesem Beispiel 'Temp1' übernehmen sondern mit dem aktuellen Wert der Variable Temp1.
Ich hoffe ihr könnt mir Folgen und habt ne Lösung?!
Würde ich gerne in einem weiteren Schritt in ST mit einer For-Schleife die Funktionsblöcke automatisch aufrufen.
Da habe ich wieder das Problem, dass der Bezeichner des Funktionsblock als String im Array gespeichert ist. Darüber hinaus muss der FB aus deklariert werden. Kann ich das automatisieren?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
da ich einen Funktionsblock x-fach aufrufe, habe ich ein Array of Struct erzeugt, in dem die unterschiedlichen Parameter gespeichert sind.
Nun habe ich 2 Probleme:
Nun will ich beim Aufruf des Funktionsblock mit hilfe von NameArray[index].Temperaturfühler den String als Variablenname übergeben. Der Funktionsblock soll als Wert nicht den String an sich (also in diesem Beispiel 'Temp1' übernehmen sondern mit dem aktuellen Wert der Variable Temp1.
Ich hoffe ihr könnt mir Folgen und habt ne Lösung?!
Da habe ich wieder das Problem, dass der Bezeichner des Funktionsblock als String im Array gespeichert ist. Darüber hinaus muss der FB aus deklariert werden. Kann ich das automatisieren?
Nein
Den Name der Funktionsblöcke als String in einem Array zu speichern hört sich umständlich an.
Warum nimmst du in dem Array / Struct nicht einfach direkt den Variablentyp von Temp1 bzw. den Funktionsblock ?
Oder falls du die Variablen / FB-Instanzen schon wo anders deklariert hast, könntest du ev. auch Pointer nehmen.
Gerade bei den Funktionsblöcken würde sich doch sowas anbieten:
FOR i := 0 to iMax
DO
arrayFB[i].Start := TRUE;
END_FOR