Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Windows echtzeitfähig mit Delphi (https://www.delphipraxis.net/181402-windows-echtzeitfaehig-mit-delphi.html)

luisk 11. Aug 2014 23:55

AW: Windows echtzeitfähig mit Delphi
 
Zitat:

Zitat von Harry Stahl (Beitrag 1268407)
Hast Du dazu einen Multimedia-Timer verwendet? Damit kann man zumindest in einem Intervall von 1 MS triggern.

Danke für Tipp
werde ich mal testen:http://www.delphipraxis.net/172777-m...dia-timer.html

Da steht, dass timeSetEvent durch CreateTimerQueueTimer function ersetzt wurde:
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

timesetevent funktioniert unter Delphi 6.
Auf CreateTimerQueueTimer kann ich mit Delphi 6 nicht zugreifen. Gibt es dazu eine Unit ?

hanspeter 12. Aug 2014 06:35

AW: Windows echtzeitfähig mit Delphi
 
Ich habe so was mal für Prüfstände gemacht.
Da wird für einige Sensoren eine Abtastrate von 1 ms benötigt.
Gesteuert habe ich das ganze über einen hoch priorisierten Thread, der den Zeittakt erzeugt.
Das Programm ist allerdings das einzige Programm, welches auf dem Rechner läuft.
Für industrielle Aufgaben bietet sich noch eine Soft-SPS an.
Die läuft in einer Schicht unter Windows und bietet einen reproduzierbaren Zeittakt ab 100 ns an.
Auf dieser Basis habe ich auch eine größere Anlagensteuerung am Laufen.
Zwischen Prozess-Sensorik und PC eine kleine SPS, da gibt es auch einige preiswerte und fertig konfektionierte Lösungen.

Peter

Sherlock 12. Aug 2014 07:12

AW: Windows echtzeitfähig mit Delphi
 
Windows ist prinzipbedingt nicht echtzeitfähig. Alles was man drumherum dranflanscht macht es nur vordergründig besser, in wirklichkeit aber schlechter. Wenn Du sowas wirklich brauchst, dann benutz doch ein echtes RTOS, so wie LynxOS oder RT Linux. Freilich wirst Du mit Delphi da nicht weit kommen, aber eventuell gibts ja nen FPC dafür.

Sherlock

hanspeter 12. Aug 2014 07:36

AW: Windows echtzeitfähig mit Delphi
 
Zitat:

Zitat von Sherlock (Beitrag 1268429)
Windows ist prinzipbedingt nicht echtzeitfähig. Alles was man drumherum dranflanscht macht es nur vordergründig besser, in wirklichkeit aber schlechter. Wenn Du sowas wirklich brauchst, dann benutz doch ein echtes RTOS, so wie LynxOS oder RT Linux. Freilich wirst Du mit Delphi da nicht weit kommen, aber eventuell gibts ja nen FPC dafür.

Sherlock

Du hast schon mal mit einer industriellen Soft-SPS (z.B.) Beckhoff unter Windows gearbeitet?
Windows selbst ist vom Prinzip nicht oder nur eingeschränkt echtzeitfähig. Ist in dieser Richtung aber erweiterbar.
Dazu bieten einige Firmen industriuetaugliche Lösungen an (z.B. Beckhoff oder Kithara).
Ich habe mehrere Industrieanlagen auf Basis dieser Technologie realisiert.
Die laufen seit Jahren stabil(24/365). Im Sensorbereich wird teilweise eine Taktrate von 500 ns realisiert.
Die SPS ist in strukturierten Text (Pascal ähnlich) realisiert. Die Bedienoberfläche in Delphi.

luisk 12. Aug 2014 12:26

AW: Windows echtzeitfähig mit Delphi
 
Hier steht, dass timeSetEvent durch CreateTimerQueueTimer function ersetzt wurde:
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

timesetevent funktioniert unter Delphi 6.
Auf CreateTimerQueueTimer kann ich mit Delphi 6 nicht zugreifen.
Gibt es dazu eine Unit für Delphi 6?

Harry Stahl 12. Aug 2014 16:50

AW: Windows echtzeitfähig mit Delphi
 
Zitat:

Zitat von luisk (Beitrag 1268416)
timesetevent funktioniert unter Delphi 6.
Auf CreateTimerQueueTimer kann ich mit Delphi 6 nicht zugreifen. Gibt es dazu eine Unit ?

Ich verwende CreateTimerQueueTimer nicht, TimeSetEvent funktioniert auch bis unter Windows 8.1 ohne Probleme.

In den aktuellen Delphi-Versionen ist es in der Winapi.Windows-Unit importiert.

Aber Du kannst das ja selber in einer Unit importieren:

Delphi-Quellcode:
function CreateTimerQueueTimer; external kernel32 name 'CreateTimerQueueTimer';

luisk 12. Aug 2014 18:16

AW: Windows echtzeitfähig mit Delphi
 
TimeSetEvent funktioniert bei mir auch mit D6 unter Win8.1
Allerdings würde ich das Event gerne auf eine Prozedur einer Klasse setzen.
Das hat jedoch nicht funktioniert. Ist das überhaupt möglich ?
Multimedia Timer
You can't declare the TimeCallBack as a method of an object, it must be a
stand-alone function
http://www.delphigroups.info/2/5a/498369.html


Danke für den Tipp mit CreateTimerQueueTimer.

hathor 12. Aug 2014 20:10

AW: Windows echtzeitfähig mit Delphi
 
Hier ist ein Programmpaket incl. TksTimer.pas:
https://kstools.googlecode.com/files/ksTools050.zip

Zitat:
TksTimer is a high resolution replacement for the standard VCL TTimer component.

TksTimer is a wrapper for the Win32 API functions CreateTimerQueueTimer and DeleteTimerQueueTimer.

When the Enabled property of TksTimer instance is assigned True, an underlying queue timer is created. If DueTime is nonzero and Period is zero, the timer is signaled only once after due time. If the DueTime and Period properties are both nonzero, the timer will be signaled first at the due time, then periodically. A periodic timer automatically reactivates each time the period elapses, until an underlying queue timer is canceled by setting the Enabled property to False. When the timer is signalled, the OnTimer event is triggered. The timer events are subject to scheduling delays, so the timing can vary depending on what else is happening in the application or the system.

Interval____TTimer____TksTimer
------------------------------
100_________108_________100
50__________62__________50
20__________31__________20
10__________15__________11
5__________15___________6
2__________15___________3
1__________14___________2

stoxx 12. Aug 2014 20:11

AW: Windows echtzeitfähig mit Delphi
 
Zitat:

Zitat von hanspeter (Beitrag 1268422)
Die läuft in einer Schicht unter Windows und bietet einen reproduzierbaren Zeittakt ab 100 ns an.
Peter

Kannst Du vielleicht bitte etwas näher darauf eingehen, wie Du das realisiert hast?
Es scheint, als sei alles auf Millisekunden unter Windows ausgerichtet ...
Danke Dir :-)

himitsu 12. Aug 2014 20:59

AW: Windows echtzeitfähig mit Delphi
 
Zitat:

Zitat von stoxx (Beitrag 1268508)
Kannst Du vielleicht bitte etwas näher darauf eingehen, wie Du das realisiert hast?

Wurde doch erwähnt?
MSDN-Library durchsuchenQueryPerformanceCounter


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.
Seite 2 von 4     12 34      

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