Testen der CPU Reserve eines CX70xx

Dieses Beispiel ist ein Testprojekt zum Testen der CPU Reserve eines CX70xx. Der enthaltene Baustein FB_Test_CPU_Performance misst die CPU-Reserve, die Sie mit ihrer Applikation haben. Der Baustein liest die aktuelle CPU-Leistung und Zykluszeit aus. Der Baustein steigert dann die CPU-Last so lange, bis der CX7k nicht mehr in Echtzeit arbeitet. Dann reduziert er die Last so lange wieder, bis eine stabile Echtzeit erreicht wird. Der Baustein ermittelt dann die CPU-Leistung und die Zykluszeit und verrechnet sie mit der Zeit und Last, die am Anfang der Messung gemacht wurde und gibt Ihnen das Delta an. Verwenden Sie den Baustein nur zu Testzwecken und nicht in einer realen Umgebung.

Wenn die CPU-Reserve größer als 20% ist, können Sie die Task-Zykluszeit schneller machen als die aktuell verwendete. Vorteile einer schnelleren Task sind das schnelleres Reagieren auf Eingänge und je nach Programminhalt eine schnellere Applikation. Wenige Millisekunden können in der Summe den Output einer Maschine erhöhen. Eine Reserveleistung von 20 % ist ideal.

Die Sourcen zu dem Beispielprojekt können hier entpackt werden: TC_CX70xx_Test_Performance.zip

Testen der CPU Reserve eines CX70xx 1:

Verfälschtes Messergebnis

Wenn der Baustein in einer niederprioren Task verwendet wird, ist das Ergebnis verfälscht und die realen Daten können nicht ermittelt werden. Durch das lange Messen werden auch die langsamen Tasks mit berücksichtigt.

  • Verwenden Sie den Baustein möglichst immer in der schnellsten hochprioren Task.
Testen der CPU Reserve eines CX70xx 2:

Nicht durchlaufene Schleifen oder Programmteile während der Messung verfälschen die Messung

Schleifen, mehrere Tasks und damit stark schwankende Zykluszeiten verursachen eine stark schwankende CPU-Auslastung.

  • Stellen Sie den TimeOut des Bausteins auf einen größeren Wert, weil der Baustein sich die höchste CPU-Auslastung sucht und dann länger braucht als bei einer konstanten CPU-Auslastung.
Testen der CPU Reserve eines CX70xx 3:

Abbruch der Messung

Der Baustein kann nur verwendet werden, wenn es keine Echtzeitverletzungen in Ihrer Konfiguration gibt. Sollte der Baustein schon beim Starten Echtzeitverletzungen auslesen, bricht der Baustein die Messung ab.

Informationen zum Baustein FB_Test_CPU_Performance:

VAR_INPUT

Name

Type

Beschreibung

bExecute

BOOL

Positive Flanke aktiviert den Baustein.

tTimeOut

TIME

Zeit, die bei einer Überschreitung die Messung abbricht.

VAR_OUTPUT

Name

Type

Beschreibung

bBusy

BOOL

Der Baustein ist aktiv und arbeitet.

bError

BOOL

Der Baustein hat einen Fehler.

nErrorID

UDINT

ADS Fehler Code

nCpuLoadReserve

UDINT

Reserve der CPU in [%]

fCycleTimeReserve

LREAL

Reserve der Zykluszeit in [ms]

Entwicklungsumgebung

Zielplattform

Einzubindende SPS- Bibliotheken

TwinCAT v3.1.4024.22

PC oder CX (x86, x64, ARM)

Tc2_System (System) >= 3.4.25.0