| |
|
|
Web Scanner | Habe die Aiuto bemüht und was gefunden, ist per meine Zwecke leider nicht ausreichend.
Sleep N - geht nur in ms.
Ich brauche Zeiträume die kürzer sind und naturalmente vom PC-Takt unabhängig sind.
Beispiel: Zwischen den Impulsen, die ich auf meine Schrittmotoren gebe soll eine Zeit zwischengesetzt werden. Bisher habe ich eine einfache Zeitschleife programmiert, aber die ist naturalmente von der CPU Leistung abhängig und daher ungenau.
Also so habe ich mir das gedacht:
Schleife: Out ( bla Bla) Sleep 0,01 ms Out (Bla bla) Sleep 0,01 ms Schleifenende
Geht so nicht, weil N Long Int. Oder hab ich wieder was falsch vestanden?
Grüße
Web |
|
|
| |
|
|
|
Jörg Sellmeyer | Sleep geht definitiv nur mit Millisekunden. Du kannstDir aber eine Schleife bauen, die durchrennt, ohne WaitInput und mit Bedingungen eine Ifabfrage steuern: KompilierenMarkierenSeparieren |
|
|
|
|
Web Scanner | So geht es naturalmente, aber die Laufzeit ist doch trotzdem von der Rechnerleistung abhängig? Es ist ja so, einer nimmt einen 1GHz PC per die Anwendung, ein anderer einen mit 3GHz. Durch die genaue Zeitstaffelung kann ich sagen der Motor dreht mit 10 Umdrehungen/s. Das entspricht dann unterschiedlich langen Fahrwegen/Zeiteinheit.
Wenn der PC unterschiedllich schnell ist, kommen andere Drehzahlen und Längen raus. Das will ich eigentlich vermeiden...
Die kürzeste Zeitschleife die ich im Moment habe sieht so aus:
vymax% = 20
PROC Zeitschleifey
Whileloop vymax% Endwhile
ENDPROC
Grüße
Web |
|
|
| |
|
|
|
Jörg Sellmeyer | und dabei kommt naturalmente auch die Geschwindigkeit des Prozessors voll zum Tragen. Mit meiner Methode könntest Du ein paar Tests an verschiedenen Systemen durchführen, um einen halbwegs optimalen Teiler zu ermitteln. Es kommen aber noch soviele andere Sachen dazu, die die Performance beeinflussen, daß Du wohl kaum ein vom System unabhängig performantes Programm hinkriegen wirst. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 24.06.2008 ▲ |
|
|
|
|
| Jupp, und schon ist man dabei eine Art Protokoll zu programmieren, oder, ein Prozess liesst in Echtzeit permanent Daten und ein zweiter Prozess empfängt von diesem nur relevante userMessages. Dadurch trennst Du Benutzerinterface (UI) vom Dienst was Dir das Programmieren damit deutlich einfacher gestalten wird und auch die letztendliche Abarbeitungsqualität steigert. |
|
|
| |
|
|
|
Web Scanner | Ahso geht das.
Gib es ev. ein Beispiel per so ein Protokoll und wie man sowas in Profan einbindet? Mit sowas hab ich mich noch nicht befasst
Grüße
Web |
|
|
| |
|
|
|
| Prozessübergreifende Kommunikation mit XProfan10, hm - dafür sollte meine pipe-Unit gut dienen.
Ab XProfan11 jedoch sind die userMessages gestackt, dort würde ich es per userMessages erledigen.
Wär ich Du würde ich jedoch nicht gleich damit beginnen jetzt client und server zu programmieren, sondern erstmal nur am Server rumwursteln. Dieser soll erstmal lecker unbeendbar in einer Schleife Dein Comzeugs erledigen, ein einfaches hwnd per cls reicht damit dieser Server zunächst einfach beendbar ist. Lege dann dort fest welche Events überhaupt an den Client gesendet werden müssten und sende diese zum Client. Ich glaub im Unitpaket habe ich hierzu ein Beispiel.
Frag einfach nach wenns wo hakt. |
|
|
| |
|
|
|
GDL | Hi,
mit Zeitmessungen (Einlesen/Ausgeben) im unter 20ms Bereich und mit 1% Genauigkeit habe ich unter Windows nach unzähligen Versuchen aufgegeben. Hier greift einfach die Prozeßaufteilung von Windows zu stark in die Taktgenauigkeit ein.
Nicht umsonst haben unsere Labormeßgeräte und mein MoBasystem externe Zeitaufbereitungen mit Ergebnis senden bzw. Änderungsbefehlen senden.
Im µs Bereich und 5% Genauigkeit ging unter Windows überhaupt nix. DOS hatte halt auch seine Vorzüge.
Servus Georg |
|
|
| |
|
|
|
Web Scanner | Hmm, Danke per die Infos.
Habe ich nicht bedacht, das es programmtechnisch so einfach nicht geht. Werde ich mit meinen Schleifen erstmal weiterwursteln. Die beste Lösung ist sicher eine externe Hardwarelösung mit einem Zwischenspeicher der die Impulse dann auch Zeitkorrekt ausgibt.
Grüße
Web |
|
|
| |
|
|
|
Frank Abbing | Hier eine annähernd sichere Methode der Zeitmessung. Sleep und WM_TIMER gehen unter NT-Versionen nur auf 15-16 ms genau. KompilierenMarkierenSeparieren |
|
|
| |
|
|
|
| [offtopic]hehe das xp-script [...] ist so *eil, bei Deinem o.g. Code funtz es zum Beispiel ganz hervorragend. [/CODE] |
|
|
| |
|
|
|
GDL | Hi,
schau mal hier, noch einer von vielen die mit dem Windows Multitasking Probleme haben. [...]
Windows ist ohne externen Zeitslave fast unbrauchbar.
Servus Georg |
|
|
| |
|
|