Sonstiges VB-Script For-Schleife

estan

Level-2
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
ich suche die Syntax in VB-Script um in einer For-Schleife ein Feld ausgeben zu können.
D.h. ich möchte anstelle der {0} das aufwärtszählende {i} nutzen um Schritt für Schritt die Variablen ausgeben zu können.

Code:
For i=0 To SmartTags("Verschiedene_Sorten_Anz")-1
                f.WriteLine SmartTags("Produktion_DB_Zaehler{0}_Produkt")
Next
i=0

Ich könnte das so lösen:

Code:
'If SmartTags("Verschiedene_Sorten_Anz")>0 Then
'               f.WriteLine SmartTags("Produktion_DB_Zaehler{0}_Produkt")
'End If
'If SmartTags("Verschiedene_Sorten_Anz")>1 Then
'               f.WriteLine SmartTags("Produktion_DB_Zaehler{1}_Produkt")
'End If
'If SmartTags("Verschiedene_Sorten_Anz")>2 Then
'               f.WriteLine SmartTags("Produktion_DB_Zaehler{2}_Produkt")
'End If
Â…Â…

aber da ich 20 variablen im Feld angelegt habe wäre dass ein wenig mühselig vor allem wenn man dann noch entscheiden sollte das Feld zu erweitern.


Vielen Dank für eure Unterstützung.


Grüße
estan

_________________________

Geklärt:
Lösung:
Code:
For i=0 To SmartTags("Verschiedene_Sorten_Anz")-1

                  f.WriteLine SmartTags("Produktion_DB_Zaehler{"&i&"}_Produkt")
  Next
  i=0
falz noch einer vor dem Problem stehen sollte
 
Zuletzt bearbeitet:
Du kannst den Namen einer Variablen zusammensetzen
Allerdings verwende ich das bisher nur mit Arrays.

Das sieht dann so aus:
SmartTags("Produktion_DB_Zaehler_Produkt")(i)

In der Schleife dann so:

For i=0 To SmartTags("Verschiedene_Sorten_Anz")-1
f.WriteLine SmartTags("Produktion_DB_Zaehler_Produkt")(i)
Next
i=0


Ob das so funktioniert, hab ich nicht getestet:

For i=0 To SmartTags("Verschiedene_Sorten_Anz")-1
f.WriteLine SmartTags("Produktion_DB_Zaehler" & (i) & "_Produkt")
Next
i=0


Gruß
0815prog
_______________________________________________________________________________



 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,
was ist das für eine HMI? (TIA) WinCC (flexible)?
Was sind das für Variablen? Variablen aus einer SPS CPU?
Ist das wirklich ein Array oder sind nur die Namen der HMI-Variablen array-ähnlich aufgebaut?

Wenn in WinCC TIA/flex die Namen von Variablen erst im Skript zusammengebastelt werden dann weiß die RT nichts von der Verwendung der Variablen im Skript und aktualisiert die Werte erst NACH der Verwendung.
Garantiert aktualisiert bekommt man Variablenwerte nur mit Handshake (z.B. als Rezeptur) ins HMI.
Jeder Zugriff auf ein Array-Element löst die Aktualisierung des gesamten Arrays aus und kann zu Kommunikationsüberlastung führen.

Diese Probleme wurden hier im Forum schon unzählige male diskutiert.Bitte suche mal ein bisschen.

Harald
 
was ist das für eine HMI? (TIA) WinCC (flexible)?
Was sind das für Variablen? Variablen aus einer SPS CPU?
Ist das wirklich ein Array oder sind nur die Namen der HMI-Variablen array-ähnlich aufgebaut?



Das ist ein Comfort Panel mit TIA programmiert.
Ok wenn man es genau nimmt sind das alles einzelne HMI-Variablen, die von der CPU die Informationen durch einem Array bekommen.
Das oben genannte Script habe ich in der Simulation getestet und das virtuelle Panel hat mir eine CSV-Datei nach meinen Wünschen erstellt.
Allerdings habe ich da nicht auf Laufzeit oder Sicherheit achten können. Kann es bei dieser Vorgehensweise zu Problemen kommen?
 
Mir ist das Problem mit der Performance bekannt. Es tritt aus meiner Erfahrung aber nur beim Schreiben auf.
Es macht außerdem einen Unterschied, ob es sich bei den Variablen um welche vom Typ STRING handelt oder andere Typen.
In diesem Skript werden die Variablen ja nur gelesen. Deshalb sehe ich es unkritisch.

Zur Sicherheit kann man die Variablen in einer For-Schleife in eine lokale Variable einlesen.


Dim Produktzaehler(20) 'lokales Array definieren

For i=0 To 20
Produktzaehler(i) = SmartTags("Produktion_DB_Zaehler{"&i&"}_Produkt")
Next
i=0


Und dann:

For i=0 To SmartTags("Verschiedene_Sorten_Anz")-1
f.WriteLine Produktzaehler(i)
Next
i=0

Gruß
0815prog
_______________________________________________________________________________
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das oben genannte Script habe ich in der Simulation getestet und das virtuelle Panel hat mir eine CSV-Datei nach meinen Wünschen erstellt.
Allerdings habe ich da nicht auf Laufzeit oder Sicherheit achten können. Kann es bei dieser Vorgehensweise zu Problemen kommen?
Ja, sicher kommt es zu Problemen, und zwar daß in die csv-Dateien Werte geschrieben werden, die nicht den aktuellen Werten in der PLC entsprechen, weil die HMI-Variablen vor dem Schreiben in die csv-Datei nicht aktualisiert wurden. Es werden Werte vom vorherigen Aufruf des Skriptes geschrieben (möglicherweise Stunden vorher?), oder vom Zeitpunkt, als das letzte mal ein Bild mit der/den Variablen angezeigt wurde, oder z.B. 0-Werte falls die Variablen noch nie aktualisiert wurden.

Suchbegriffe: wincc variablen aktualisierung csv
und siehe z.B. hier

Harald
 
Zurück
Oben