TIA Skript FOR Schleife für Arrayabfrage

Platinum

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

ich habe ein Problem mit einer Schleife in einem Skript.
Ich habe einen Bildbaustein mit 100 Ausgabefeldern, wo die letzten Taktzeiten gepeichert werden.

Die 100 Felder sind aufgespliettet in einem Array 0-99 of Real.
Jetzt möchte ich anhand einer Schleife die 100 Felder prüfen, welches davon größer als die vorgegebene Solltaktzeit ist und diese Rot markieren.
Meine Idee wäre jetzt ein Array 0-99 of Bool anzulegen, welches in der jeweiligen Gestaltung des Feldes den Farbumschlag macht.

Das Problem ist, das in den Variablen im Tia kein Array angelegt bekomme. Nur im Codeeditor selbst. Auf diesen kann ich aber innerhalb des Bildbausteines mit der Gestaltung nicht zugreifen.
Oder mach ich da was falsch?
Ich bin in Sachen Skripten ziemlich neu unterwegs. Evtl. hat jemand noch einen besseren Vorschlag.

Hier mal der Code (der aber noch nicht funktioniert).

Code:
Sub Grenzen()
Dim i
'Grenzen prüfen
For i = 0 To 99 Step 1
SmartTags(Grenze) = SmartTags("Properties\Visu.Ringspeicher{"& i &"}) > SmartTags("Properties\Visu.Soll")
End For
End Sub

Die Variable "Grenze" wollte ich gerne als Array haben und damit die Gestaltung ändern.

Ich nutze Tia V16 und ein TP900 Comfort

Danke und Gruß
Platinum
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo rostiger Nagel,

in WinCC bekomm ich das angelegt. Aber in einem Bildbaustein nicht.
Ich möchte den innerhalb des Bildbausteines nutzen.
Dort kann ich aber bei den Variablen kein Array anlegen. Oder ich mache was falsch !?

Variable.jpg
 
Trotzdem vielen Dank ;)

Habe es jetzt anders gelöst. Ich habe in den UDT der eh an dem Taktzeit FB angebunden ist, einen Array erweitert, der den Farbumschlag macht.
Diese kontrollier ich dann mittels Schleife auf der S7 Seite.
Das funktioniert ganz gut und ich muss den Weg über das Skript nicht machen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast Du in Deinen HMI-Variablen tatsächlich 100 Variablen "Visu.Ringspeicher{0}" .. "Visu.Ringspeicher{99}" angelegt oder ist "Visu.Ringspeicher" ein Array?
HMI-Variablen-Arrays werden in VBS so adressiert: SmartTags("Properties\Visu.Ringspeicher")(i)

Harald
 
Hallo PN/DP,

nein das ist ein Array in einem DB. Der liegt dann am Bildbaustein an.
Dazu habe ich dann nochmal ein Array [0..99} OF BOOL angelegt, mit dem ich dann die Farbumschläge mache.
Die werden dann nach jeder Taktzeitermittlung einmal durchlaufen und geprüft.

Gruß
 
Hast Du in Deinen HMI-Variablen tatsächlich 100 Variablen "Visu.Ringspeicher{0}" .. "Visu.Ringspeicher{99}" angelegt oder ist "Visu.Ringspeicher" ein Array?
HMI-Variablen-Arrays werden in VBS so adressiert: SmartTags("Properties\Visu.Ringspeicher")(i)

Harald

Das Problem was ich erst hatte, war das Array in dem Bildbaustein direkt anzulegen. Also eben nicht in den normalen HMI Variablen. Das geht aber anscheind in WinCC nicht. Deswegen musste ich den anderen Weg über den DB gehen und es auf der S7 Seite lösen.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi nur so am Rande...
im Script ist das Ende der For-Schleife Next nicht End For...
Sicher das in der Variablen die Arrayklammern geschwungen sind "{}" und nicht Eckig [] ?

Edit:
Im Tia kannst du das Script auf syntax prüfen (oben in der Leiste ganz links) da kommen nähere Infos zu den Fehlern

SmartTags("Properties\Visu.Ringspeicher{"& i &"}) da fehlt am Ende noch ein Anführungszeichen...

Gruß
...
 
Zuletzt bearbeitet:
Alternativvorschlag:
Bildbaustein so gestalten, daß er jeweils ein Array-Element darstellt und diesen Bildbaustein eben x-mal im Bild verwenden z.B. zeilenweise. Dann kann man über Indexvariable (für jede Zeile eine, die müssen per VBS gesetzt werden) auch scrollen und so eine scrollbare "Tabelle" gestalten. Die Farbumschläge wären dann eben nur eine Gestaltung in Abhängigkeit vom Variablenwert.
So stelle ich bei mir Eigenschaftslisten mit 2000 Zeilen für den Bediener zur Verfügung.
 
Zurück
Oben