PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeitkritische steuerung eines motors.. unter win!?



mojo777
28.08.2006, 08:59
Hallo,
ich muss bald einen motor steuern welcher auch signale zurückgibt. also ~taktsignale.. wenn sich das ding dreht, dann wird ein signal generiert...

ich muss dann auf diese signale mit einer geschw. mit unter 100µs reagieren.
wieweit ist windows für solchen spaß zu haben?
wie kann ich (ohne eine hardware anzuschließen, also in windows) testen, ob die zeit eingehalten werden kann? ich kenne z.b. unter delphi due möglichkeit die anzahl der ms auszulesen.. aber das ja zu lahm....

wäre für hilfe sehr, sehr dankbar!


gruß!

ogni42
28.08.2006, 10:01
Da Windows keine harte Echtzeit kann kommst Du wahrscheinlich um eine zusätzliche Hardware nicht herum (sofern Du wirklich im 100us Takt reagieren musst). Es gibt Karten, die externe Trigger anbieten und dann register hochzählen. Die API liefert meistens eine Schnittstelle zur Win-Interrupts, in die man callbacks einhängen kann. Meilhaus hat da wahrscheinlich was im Angebot.

Ich habe mal etwas ähnliches für eine Industrieapplikation gemacht. Windows ist da sehr kritisch, weil es bisweilen einfach mal "innehält" um sich mit sich selbst zu beschäftigen. Mit der extra Hardware haben wir das dann in den Griff bekommen.

Das ging aber auch nur, weil wir Soft-Realtime Anforderungen im Gesamtsystem hatten.

mojo777
28.08.2006, 10:34
hi,
ja. so sieht das problem nun wirklich aus... :-(
eine zusätzliche hardware würde ich dann aber lieber selbst machen. ein 4mhz uc würde da schon mitkommen.. die berechnungen sind nicht kompliziert... leider hatte ich bei meinem letzten versuch mit einem uc probleme bei der kommunikation mit dem uart und habe sie bisweilen nicht gelöst.. :-(
naja... zurück zum thema:

meilhaus ist zu teuer.
ich will das aber dennoch mit win realisieren.. das ist hal im endeffekt VIEL billiger als ein uc, dann noch das rumgelöte etc etc...

ich würde das gerne einfach mal testen und ausprobieren... ich brauche aber dafür die möglichkeit die reaktionszeit zu erfassen...
gibts interrupts mit timer auf den mainboards? :-) das wäre türlich ein passender ersatz für eine teuere meilhauskarte (WENN es denn klappen sollte...)

gruß

PicNick
28.08.2006, 11:13
Klingt vielleicht seltsam, aber Du könntest die Soundblasterkarte verwenden, um die Abstände der Zählimpulse genau zu messen.
Andereseits kannst du auch für das COM-Port Interrupts für die Steuerleitungen definieren, vielleicht reicht das ja auch.
Ansonsten wär so ein Kontrollerchen halt schon die beste Lösung, denk' ich.

ogni42
28.08.2006, 11:18
Puh, da fragst Du besser mal in einem Windows-Forum. IIRC liefert die RTC auf dem MoBo einen Interrupt auf den Du im ms-Takt reagieren kannst. Eine weitere Möglichkeit, um das zu testen wäre der Eingang der Soundkarte.

Vielleicht steht das auch in den Hilfe-Dateien zum VisualStudio/Borland/...

Wenn Du den Aufwand in Betracht ziehst, ist es u.U. viel preiswerter und bei der Implementierung schneller, einen uC zu nehmen und per RS232 mit dem PC kommunizieren zu lassen. Aber das kannst Du sicherlich besser einschätzen als ich.

mojo777
28.08.2006, 16:46
:mrgreen: \:D/
hehe. verpackt euch das mal....
http://www.kithara.de/ge/down/Kithara-ktmr-inf.pdf

btw, hat das schon wer ausprobiert? ich noch nicht.. habs gerade erst entdeckt und werd mir heute abend mal die demo anschauen... :-)

gruß

edit: ui, das ist aber "etwas" teuerer als so ein uc.... :-(
mist.

PasstScho
28.08.2006, 16:52
Hallo mojo777,
Du solltest dir mal QueryPerformanceCounter und QueryPerformanceFrequency unter windows ansehen, die könnten vielleicht interessant werden.
Allerdings ist es immernoch schwer, mit windows eine gute Steuerung zu bauen.

MfG Alex