-> Hier kostenlos registrieren
Guten Morgen Zusammen,
ich bin gerade dabei in WinCC Professional v16 eine f(x)-Anzeige mit insgesamt 8 Kurven darzustellen.
Der Zugriff erfolgt hierbei auf 8 Arrays mit jeweils 490 Werten, die ich in meinem Fall mit VB in einer Schleife auslese.
In der Simulation erfolgt hierbei der Aufbei der Ansicht sehr langsam, es wird hier das Script optisch sehr langsam durchlaufen, was ich mit der Trace-Anweisung beobachten kann.
Gibt es hier eventuell Verbesserungspotential was die Laufzeit angeht oder vielleicht einen eleganteren Weg die Daten auszulesen und darzustellen?
Hier der aktuelle Code (für 2 Kurven, das ist schon recht langsam...)
Hinweis zum Code:
Es handelt sich noch um einen Test der bereits funktioniert. Ich lese aktuell zum Testen nur 30 Werte je Kurve aus, aber das dauert schon recht lange.. Wenn ich dann auf 8x490 Werte hoch gehe läuft das Script ja gefühlt eine Ewigkeit...
Gruss,
Michael
ich bin gerade dabei in WinCC Professional v16 eine f(x)-Anzeige mit insgesamt 8 Kurven darzustellen.
Der Zugriff erfolgt hierbei auf 8 Arrays mit jeweils 490 Werten, die ich in meinem Fall mit VB in einer Schleife auslese.
In der Simulation erfolgt hierbei der Aufbei der Ansicht sehr langsam, es wird hier das Script optisch sehr langsam durchlaufen, was ich mit der Trace-Anweisung beobachten kann.
Gibt es hier eventuell Verbesserungspotential was die Laufzeit angeht oder vielleicht einen eleganteren Weg die Daten auszulesen und darzustellen?
Hier der aktuelle Code (für 2 Kurven, das ist schon recht langsam...)
Code:
Sub VB_ReadOutCurves(ByRef TrendControl, ByRef ScaleXAxis, ByRef Array_1, ByRef Array_2)
'Tip:
' 1. Verwenden Sie die Tastenkombination <CTRL+SPACE> oder <CTRL+I>, um eine Liste aller Objekte und Funktionen zu öffnen
' 2. Schreiben Sie den Code unter Verwendung des HMI Runtime Objekts.
' Beispiel: HmiRuntime.Screens("Screen_1").
' 3. Verwenden Sie die Tastenkombination <CTRL+J>, um eine Objektreferenz zu erstellen.
'Schreiben Sie den Code ab dieser Position:
Dim i ' Schleifenzähler
Dim dblAxisX(491) ' Werte-Array für X-Achse
Dim dblAxisY_C1(491) ' Werte-Array für Kurve #1
Dim dblAxisY_C2(491) ' Werte-Array für Kurve #2
Dim objTrendControl ' f(x) Kurvenanzeige
Dim objCurve1 ' Kurve #1 in der Kurvenanzeige
Dim objCurve2 ' Kurve #1 in der Kurvenanzeige
Set objTrendControl = ScreenItems(TrendControl) ' Name der f(x)-Kurvenanzeige
Set objCurve1 = objTrendControl.GetTrend("Curve1") ' Name der Kurve in der f(x)-Kurvenanzeige
Set objCurve2 = objTrendControl.GetTrend("Curve2") ' Name der Kurve in der f(x)-Kurvenanzeige
' Ab hier Test ein Array anzeigen
For i = 0 To 30
dblAxisX(i) = CDbl(i * 5)
dblAxisY_C1(i) = SmartTags(Array_1 & "[" & i & "]")
HMIRuntime.Trace "Array-Element (1) = " & i & "; Array-Wert = " & SmartTags(Array_1 & "[" & i & "]") & vbNewLine
dblAxisY_C2(i) = SmartTags(Array_2 & "[" & i & "]") * 2
HMIRuntime.Trace "Array-Element (2) = " & i & "; Array-Wert = " & SmartTags(Array_2 & "[" & i & "]") & vbNewLine
Next
objCurve1.InsertData dblAxisX, dblAxisY_C1
objCurve2.InsertData dblAxisX, dblAxisY_C2
End Sub
Hinweis zum Code:
Es handelt sich noch um einen Test der bereits funktioniert. Ich lese aktuell zum Testen nur 30 Werte je Kurve aus, aber das dauert schon recht lange.. Wenn ich dann auf 8x490 Werte hoch gehe läuft das Script ja gefühlt eine Ewigkeit...
Gruss,
Michael