AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Windows echtzeitfähig mit Delphi

Ein Thema von luisk · begonnen am 11. Aug 2014 · letzter Beitrag vom 14. Aug 2014
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.401 Beiträge
 
Delphi 12 Athens
 
#1

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 20:52
Du wirst immer Pausen bekommen, selbst wenn man die Thread- und Process-Priority extrem hochschraubt und "versucht" überall die Prozesse an bestimmte Kerne zu binden. (sowas machen diese Echzeitspezialisten raktisch und der Aufwand dafür ist nicht grade sehr gering, wenn das durchgängig und vorallem zuverlässig funktionieren soll)

Es gibt ja immer mehr Prozesse als CPU-Kerne, womit Windows deinen Prozess vermutlich immer mal wieder aus der CPU rauswirft, um andere Threads bearbeiten zu können. Damit wird dein Thread also immer mal wieder kurz schlafengelegt. (Windows schaltet das durchschnittlich so etwa alle 15-50 Millisekunden um)

Und Timer kannst'e eh vergessen denn der liebt numal aktuell bei einer Auflösung von etwa 15-16 Millisekunden -> siehe die vielen Threads zu GetTickCount und sessen Auflösung.
Abgesehn von gewissen Multimediatimern, welche oft auch über Threads getriggert werden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Aug 2014 um 20:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 22:14
Im Nanosekunden-Bereich werden selbst solche Sachen wie Cache-Misses interessant. Da wird es schon extrem eng.
Neben dem Scheduling können dir auch Interrupts den Spaß verderben, TLB-Misses, Paging ... im Prinzip alles was nicht dein Code ist.

Andererseits ... wenn du Aussetzer/Jitter verträgst und nicht gerade ein Atomkraftwerk an deiner Steuerung hängt: Ich würde es ausprobieren ... vielleicht genügt es dir ja.
"Echtzeit"-Priorität, alles andere auf einen anderen physischen Kern. In diesem "Echtzeit"-Thread läuft dann nur das absolut nötige und wenn du warten musst, dann wartest du halt aktiv.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 23:06
Generell ist das mit „Echtzeit“ so eine Sache. Es hängt ja nicht nur am Scheduling, sondern auch so Dinge wie Speicherverwaltung, evtl. Swapping, und propabilistische Algorithmen (z.B. Quicksort) muss man berücksichtigen. Die ganze Laufzeitbibliothek muss echtzeitfähig sein. Die Delphi-RTL ist auf sowas aber nicht ausgelegt, und auch OpenGL dürfte damit kaum vereinbar sein.

Ich habe keine Erfahrung mit Echtzeitsystemen, aber ich denke, die einzige sichere Lösung wäre, den Echtzeit-Teil von der Oberfläche komplett physisch zu trennen. Also einen dedizierten Rechner/Platine (?), der sich nur um die Ansteuerung der Maschine kümmert und mit einem abgespeckten Echtzeit-Kernel (oder gleich ohne Betriebssystem) läuft, und einen getrennten Rechner mit Windows, auf dem die Benutzeroberfläche läuft. Die beiden Rechner kommunizieren dann über eine serielle Schnittstelle o.ä..
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz