Optimierung von WinCC OA

Der Programmteil mancher Managers enthält gewisse Control-Anweisungen. Diese werden in regelmäßigen Abständen über die interne Funktion work() aufgerufen. Jeder Aufruf führt eine bestimmte Anzahl an CTRL-Anweisungen aus. Je mehr Anweisungen in einem work()-Aufruf ausgeführt werden, desto schneller werden CTRL-Funktionen abgearbeitet. Dadurch verzögert sich die Ausführung anderer Programmteile, wie z.B. der Bildschirmaufbau des User Interface.

Abhängig vom verwendeten Betriebssystem und der Hardwareplattform, hat dies einen erheblichen Einfluss auf das Verhalten von WinCC OA.

Mit dem Eintrag ctrlMaxWeight in der Datei config können Sie die Leistung von WinCC OA optimieren.

Defaultmäßig ist der Eintrag in der Sektion [general] auf 5000 eingestellt. Die Werte der anderen zulässigen Sektionen überschreiben den Wert in der Sektion [general].

Das Schlüsselwort ctrlMaxWeight kann in den folgenden Sektionen eingetragen werden:

[ui] Default = 30,

[ctrl] Default = 10000 und

[event] Default = 5000

Syntax:

ctrlMaxWeight = <aWeight>

Um einen vernünftigen Wert für <aWeight> zu erhalten, gibt es die Funktion avgSmentTime() aus der Datei libCTRL.ctl. Damit ist es möglich, unabhängig vom Eintrag ctrlMaxWeight, den Einfluss der verwendeten Plattform und des Betriebssystems zu ermitteln. Unter der Annahme einer maximalen Zeit Tmax, die das Control in work() verbrauchen soll, kann man den maximal zulässigen Wert für <aWeight> berechnen:

aWeight = Tmax / avgSmentTime

Wobei avgSmentTime() von dem Manager aus gestartet werden sollte, für den der Wert <aWeight> ermittelt werden soll. Die Ausgabe erfolgt dabei mit Debug() oder durch Schreiben auf ein File.

Beispiel

Es soll die Leistung des User Interface optimiert werden. Dazu wird in einem ersten Schritt der Wert von avgSmentTime() bestimmt. Im GEDI wird ein Panel erstellt, das einen einfachen Text mit folgender Parametrierung enthält:

main()
{
  setValue("","text",avgSmentTime(1000));
}

Das angezeigte Ergebnis ist beispielsweise 4E-5. Bei einer vorgegebenen maximalen Zeit Tmax von 20ms ergibt sich ctrlMaxWeight:

ctrlMaxWeight = 20E-3/4E-5

ctrlMaxWeight = 500

Dieser Eintrag wird in den Abschnitt [ui] der Datei config eingefügt.