Verhalten der Zykluszeit unter Twincat3

D4Rkl1Gh7

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe folgendes Problem:

Ich verwende Twincat3 (unter Windows 7 64 Bit) um die Daten eines Helligkeitsensors über Funk (EnOcean) auszulesen und aufzuzeichnen. Die Daten werden in einem Array abgespeichert und in einem Diagramm visualisiert.
Ich verwende einen BK9050 und eine KL6581.
Bis hierher funktioniert auch alles, das Programm wird ausgeführt und die Sensorwerte ausgelesen, umgerechnet und im Array gespeichert.

Im nächsten Schritt möchte ich die Messwertaufnahme zeitlich skalieren und hier beginnt mein Problem:

Das Programm läuft mit einer Zykluszeit von 50 ms. Jeden Zyklus lasse ich eine Integervariable um den Wert 1 erhöhen. Nach 200 Zyklen hat die Variable folglich den Wert 200 haben und es sollten 10 Sekunden vergangen sein. Zu diesem Zeitpunkt wird die Variable wieder auf 0 gesetzt und das zählen beginnt von vorne.

Leider ist es so, dass das Programm nicht im Takt läuft. Die Zyklen verlaufen unregelmäßig und es dauert ca. 35-40 Sekunden (nachgemessen mit der Stoppuhr), bis die Integervariable den Wert 200 hat.

An der Auslastung des Systems kann es nicht liegen, der Prozessor arbeitet im unteren Prozentbereich, zudem wird nicht viel Programmcode ausgeführt.
Alternativ habe ich die Verwendung eines Timers (TON) probiert. Hier habe ich das gleiche Problem, dass der Timer viel zu langsam und unregelmäßig nach oben zählt.

Vielleicht weiß jemand, woran es liegen könnte?

Vielen Dank für die Hilfe,

D4Rkl1Gh7
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die TwinCAT 3 Runtime läuft als Soft-SPS auf einem Windowsrechner (Tower, kein Laptop). Der Prozessor ist ein I7 990 x und eigentlich ziemlich schnell.
Ich habe die Zykluszeit zum testen auch schon mehrmals variiert (von 10- 100 ms) und die Zeit manuell mitgestoppt. Die Zyklen laufen immer deutlich zu langsam ab.
Wenn ich eine Zykluszeit von 50 ms vorgebe heißt das doch, dass der Prozessor am Ende aller Berechnungen solange pausiert, bis die 50 ms abgelaufen sind und dann erst von vorne beginnt.

LG
 
Ich weiss das es bei Laptops zu den von dir beschriebenen Problemen kommen kann, wenn die ihre CPU Taktung varieren um Energie zu sparen. Der Echtzeittreiber von TwinCAT kommt damit nicht klar.
Bei Intel heisst das Speed-Stepping und exisitiert auch als EIST (Enhanced Intel SpeedStep) für Desktop CPUs. Ich würde einfach mal vorschlagen, du schaust bei dir im Bios nach, ob Energiesparfunktionen wie EIST aktiv sind und schaltest sie dann ab. Vieleicht hilft dir das dann schon weiter.

Bei Siemens SoftSPSen löst man das Problem glaube auf die brachiale Tour. Die lasten einfach einen Kern voll aus (mit Absicht), sodass der Rechner garnicht auf die Idee kommt den Takt zu reduzieren. ;)
 
Wirf mal einen Blick auf die Latenzzeit deines Systems:

System-->Echtzeit-->Online

Hört sich nach einem Echtzeitproblem des Windows-Rechners an.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo und vielen Dank für die Antworten, ich konnte mein Problem lösen:
Ich habe im BIOS die Funktionen
Intel HT Technology
Intel Speed Step und
Intel C-State tech

deaktiviert. Seitdem läuft das Programm in Echtzeit!
Vielen Dank,

D4Rkl1Gh7
 
Zurück
Oben