Wago Echtzeitauslastung

Über eine ähnliche Einstellmöglichkeit bin ich noch nicht gestolpert, aber die Beobachtung der Zykluszeiten im Onlinemodus zeigt auch Jitter. Das mit der CPU-Last käme bei meinem System auch nicht in Frage, da es nicht über die CPU des PC's läuft auf dem ich es programmiere.
Beobachten kann man die Zykluszeiten durch Einbindung der Bibliothek "SysTaskInfo.lib" und dann online auf die Taskkonfiguration gehen.

mfg lulex
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe es inzwischen herausgefunden. Was mich etwas beunruhigt ist der Wert: CycleTime (Max) zumal es sonst keine Fehler oder Stop gibt. (Ich verwende SysLibFile und SysLibDir)

Taskzeit.png
 
SysLibFile und SysLibDir haben mit den Zykluszeiten der Tasks nichts zu tun.

CycleTime (Max) zeigt den Wert der längsten gemessenen Zykluszeit dieser Task. Die Frage ist, wie empfindlich ist die Grenze, die du als Anforderung an deine Task gibst. Bei einem eingestellten Intervall von 10ms kann 257ms durchaus eine erhebliche Verletzung von Echtzeitanforderung sein. Das kann verschiedene Ursachen haben. Meiner Meinung nach ist die häufigste zu lange/große Schleifen, besonders da du scheinbar nur eine Task hast.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im Programm ist keine einzige Schleife, dafür aber einige If-Else Bedingungen. Das Programm ist ein Logger, d.h. für dieses Programm ist die Echtzeitfähigkeit kaum Relevant. Allerdings soll es in eine vorhandenes mir unbekanntes System eingebunden werden. Ich werde es dann als extra Task mit 500ms einbinden, damit wäre das Problem zwar gelöst aber irgendwie interessiert mich die Ursache dennoch.
 
Also bei knapp 20000 Durchläufen und einem Durchschnitt von 1ms ist es eher ein statistischer Ausrutscher. Eventuell zu Beginn des ersten Zyklus wenn beispielsweise eine Datei geöffnet wird, was zu vermuten ist, da du ja die Bibliotheken für die Bearbeitung von Dateien eingebunden hast (und vermutlich auch verwendest). Bearbeiten von Dateien kann schon mal einige ms dauern.

Da aber sonst der Durchschnitt nicht beeinflusst scheint würde ich diese Max-Zeit ignorieren.

mfg lulex
 
.... Eventuell zu Beginn des ersten Zyklus wenn beispielsweise eine Datei geöffnet wird, was zu vermuten ist, da du ja die Bibliotheken für die Bearbeitung von Dateien eingebunden hast (und vermutlich auch verwendest). Bearbeiten von Dateien kann schon mal einige ms dauern.
mfg lulex

Solche Effekte sind mir auch schon untergekommen, meine Abhilfe:

entweder in die Visualisierung einen Reset Button einbauen, damit man sieht, was passiert, wenn das System einmal in die Gänge gekommen ist,

oder nach einigen Zyklen am Anfang automatisch rücksetzen für den gleichen Effekt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich bin mir Mittlerweile sicher, das es an den Dateizugriffen liegt. Ich habe die Zykluszeit auf 800ms gesetzt, dadurch kann ich mir jetzt auch fast jeden Zyklus einzeln ansehen. Überschreitungen alle 15 Sekunden zur Aufzeichnungszeit bis ca 180ms sind treten immer auf. Bei vorher 10ms Zykluszeit war das ja nur jeder 1500ste Zyklus da sinkt der Durchschnitt ja enorm. Jetzt ist es jeder 18,75te. Der Durchschnitt liegt jetzt bei 8ms bei einer Ablaufzeit von meist nur oder weniger als 1ms, da lassen sich Ausrutscher die alle 15s auftreten auf ca 18,75*8~150ms schätzen.
 
Ja, Dateizugriffe (durch SysLibFile bzw. SysLibDir) sind blockierend. Solltest du echtzeitrelevante Prozesse haben, solltest du diese Dateizugriffe auf jeden Fall in einer eigenen Task laufen lassen.
 
Für mich ist das jetzt abgeschlossen.

Stichworte: SysLibDir.lib, SysLibFile, Task, Wago, Taskauslastung, Taskzeit, Zykluszeit, Dateizugriffe, Ordnerzugriffe
 
Zurück
Oben