AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows echtzeitfähig mit Delphi

Ein Thema von luisk · begonnen am 11. Aug 2014 · letzter Beitrag vom 14. Aug 2014
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#1

Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 20:36
gibt es eine Möglichkeit, Windows echtzeitfähig zu machen ?
Es gibt RT-Kernal, die sind aber sehr teuer .
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 20:40
Nein,

abgesehn von
Es gibt RT-Kernal, die sind aber sehr teuer .
und das eventuell auch nicht unbedingt immer 100%ig.


Was heißt denn "Echtzeit", bzw. was willst du erreichen?



Echtzeit wäre praktisch nur möglich, wenn das Programm der einzige Prozess auf dem Kern wäre und wenn es sonst von nirgendwo unterbrochen oder gebremst werden könnte.
=> also keine störenden Interrups und alleiniger Zugriff auf die sonstige Hardware (Speicher, Festplatte usw.)
Und das ist praktisch nahezu unmöglich.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#3

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 20:50
Die machen sowas
http://www.kithara.de/de
http://www.kithara.de/de/loesungen/echtzeit-ethernet

http://www.sybera.de/german/g_sybera.htm

Warum bieten Microsoft oder Embaccadero so einen Modus nicht an,
sondern nur Spielerei ?

Geändert von luisk (11. Aug 2014 um 21:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

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

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 21:23
Warum bietet Microsoft oder Embaccadero so einen Modus nicht an, sondern nur Spielerei ?
Weil Echtzeitanwendungen für Windows eben eine Nische sind: Für Echtzeitanwendungen hat man halt andere Anforderungen als an ein allgemeines Betriebssystem.
Das es Firmen gibt, die es schaffen solche Lösungen anbieten, ist bewundernswert ... und vermutlich jeden Euro wert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 21:33
Wobei die nicht wirklich 100% Echtzeit anbieten, vorallem seit Windows 8 nicht mehr, da dort vom Windows die CPU geschützt wird.

Im Prinzip geht es darauf hinaus, da die spezielle Sorftare einsetzen, welche gezieht auf diese Aufgabe ausgelegt wurde und dazu noch spezielle Hardware und von der CPU resservieren die sich komplette Kerne in der CPU nur für sich (was aktuell für Win8 im kombinierten RealTime- und NonRealTime-Betrieb nicht mehr möglich ist), welche praktisch komplett getrennt von Windows nur noch für die RealTime-Anwendungen laufen.
Dazu dann noch spezielle Treiber und alles von Windows und Programmen wird mit viel Aufwand von dem System abgekoppelt, bzw. nur mit speziellen Schnittstellen nach außen freigegeben.


Dazu läuft alleine ein billiges Delphi-Program, im Normalbetrieb, gleich mal mit 5 bis 20 Threads (inkl. Styles, Datenbankverbundung usw.), welche sich alle die CPU und Resourcen teilen müssen und vorallem die ihre Resourcen sharen/synchronisieren.
Und schon wird klar, warum das mit Delphi nicht geht.

Die bieten zwar eine Schittstelle zu C# an (was man vestimmt auch zu Delphi hinbekommt), aber der Code vom C#/Delphi wird dann nicht in Echtzeit ausgeführt.


Es gibt extrem abgespeckte Linux-Kernel, wo man fast alles rausgeworfen hat, damit möglichst wenig reinfunken kann, womit man dann praktisch auch sowas wie Echtzeit in speziell angepassten Programmen/Programmteilen hinbekommt.


Das es Firmen gibt, die es schaffen solche Lösungen anbieten, ist bewundernswert ... und vermutlich jeden Euro wert.
Das ist so, als wöllte man zur Rush Hour geziehlt eineige Autos mit einer bestimmten Geschwindigkeit und zu ganz bestimmten Zeiten (Sekundengenau) quer durch Berlin schicken ... selbst wenn man versucht eine Minute vorher per Polizei alle Straßen freizumachen, wird das nicht grade einfach werden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (11. Aug 2014 um 21:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von luisk
luisk

Registriert seit: 18. Mär 2009
402 Beiträge
 
#6

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 21:37
Was heißt denn "Echtzeit", bzw. was willst du erreichen?
Ich hab in Delphi eine objektorientierte Software-SPS entwickelt mit einer vollintegrierten 3D-Visualisierung in OpenGL.

Schwachpunkte:
1. OpenGL bietet keine gescheiten Schriften, da muss man GDI-Bitmaps alias Texturen reinpfuschen.
2. dieses Betriebssystem von MS hat keine Echtzeitfähigkeit.

Meine in Delphi realisierten SPS-Binärbefehle inclusive SFC( s.Siemens) benötigen
ca. 50ns (aufm Laptop 2,5 Ghz.)

Wenn ich über einen Timer oder einen Tread triggere komme ich von System her nur auf Zykluszeit von 15 ms. also 300000 mal so langsam.

Geändert von TBx (11. Aug 2014 um 21:51 Uhr) Grund: Quote-Tag gefixt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 21: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (11. Aug 2014 um 21:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.530 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 23:14
Wenn ich über einen Timer oder einen Tread triggere komme ich von System her nur auf Zykluszeit von 15 ms. also 300000 mal so langsam.
Hast Du dazu einen Multimedia-Timer verwendet? Damit kann man zumindest in einem Intervall von 1 MS triggern.

Zur Messung kann man einen Highperformancecounter (QueryPerformanceCounter) verwenden, der auch im Nanobereich messen kann (einige hundert Nanosekunden).
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

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

AW: Windows echtzeitfähig mit Delphi

  Alt 11. Aug 2014, 23: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
 
#10

AW: Windows echtzeitfähig mit Delphi

  Alt 12. Aug 2014, 00: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
Seite 1 von 4  1 23     Letzte »    


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 14:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz