ich möchte die ByVal Variable für die Array Ziffer einsetzen.
Deine HMI-Variablen sehen gar nicht aus wie Arrays (bzw. WinCC kann meines Wissens gar keine "Array of Struct")?
Wenn die HMI-Variable wirklich ein Array ist, dann erfolgt der Zugriff auf ein Array-Element so:
Code:
SmartTags("MyHMI-Variable")(index) = value
Beachte: Jeder Lese/Schreibzugriff auf ein Array-Element einer Array-HMI-Variable mit PLC-Anbindung (PowerTag) löst das Lesen/Schreiben/Aktualisieren des gesamten Arrays aus --> Kommunikationsüberlastung droht!
Alternative:
Viele einzelne HMI-Variablen anlegen, deren Name wie ein Array aussieht, und dann den Variablenname zusammenbasteln. Die HMI-Variablen müssen vor dem Zugriff bereits existieren. Das erhöht ggf. die Anzahl PowerTags!
für HMI-Variablen nach dem Muster: MyHMI-Variable_00000, MyHMI-Variable_00001, MyHMI-Variable_00002, ...
Code:
varname = "MyHMI-Variable_" & Right("00000" & CStr(index), 5)
SmartTags(varname) = value
oder wie bei dir:
Code:
SmartTags("DB_Bildbaustein_ZYLINDER[" & CStr(ZylNr) & "].xyz" = value
Irgendwie habe ich im Hinterkopf, dass es in WinCC flexible oder -TIA manchmal Probleme gab, wenn der Variablenname innerhalb der Klammer von
SmartTags(...)
zusammengebastelt wird, deshalb bastele ich den Variablenname meistens vorher zusammen und weise einer Variablen zu und setze dann die Variable ein bei
SmartTags(varname)
PS: Ob in neueren TIA-Versionen der Name von PLC-Variablen bei symbolischer Anbindung an HMI-Variablen zusammengebastelt werden kann, weiß ich nicht (glaube ich aber nicht).