Forum: PC-Programmierung Direkte Schrittmotoransteuerung durch CNC-Programme unter Windows (z.B. Mach 3)


von Georg H. (Gast)


Lesenswert?

Hallo allerseits

Dass die direkte Schrittmotoransteuerung unter Windows über Parallelport 
suboptimal ist, ist ja bekannt. Nun gibts aber z.B. Mach3, das die Takt- 
und Richtungssignale direkt in Windows erzeugt und über den Parallelport 
ausgibt.

Weiß jemand, wie das genau gelöst wurde? Mein persönlicher Ansatz wäre, 
die notwendigen Rampen zum beschleunigen und abbremsen mittels 
Timer-Ereignissen zu erzeugen, das kann aber nicht wirklich eine Lösung 
sein. Mit Windows-Mitteln und Windows-Timern schafft man so gerade mal 1 
kHz als Taktfrequenz, das wäre für eine CNC-Maschine ja viel zu langsam.

Grüße, Georg

von myname (Gast)


Lesenswert?

Darüber wurde schon sooooooovieeeeeelllllll im Inet geschrieben...

von MaWin (Gast)


Lesenswert?

> Weiß jemand, wie das genau gelöst wurde?

Über einen Device-Treiber der ganz tief unten im System steckt,
damit er Interrupts mit hoher Priorität annehmen kann, und
trotzdem hat er Probleme. Unter Win3.1 ging das noch viel
einfacher.

von Georg H. (Gast)


Lesenswert?

>Darüber wurde schon sooooooovieeeeeelllllll im Inet geschrieben...

Sehr hilfreich. Link? Quelle?

Selbst professionelle Anbieter von Echtzeitsystemen für Windows bieten 
nur Frequenzen um die 1 kHz, die man mit Ihren speziellen Timern auf 
Kernel-Ebene erreichen kann. Für CNC-Maschinen unbrauchbar.

von Pieter (Gast)


Lesenswert?


von Reinhard Kern (Gast)


Lesenswert?

Hallo,

ein ganz neuer Ansatz: Windows wird mit weniger Cores gestartet als 
vorhanden, auf den reservierten Cores startet ein "echtes 
Echtzeitsystem".

Gruss Reinhard

von Pieter (Gast)


Lesenswert?

moin Reinhard,

..und wo kann man so etwas einstellen?

Hast Du so etwas (egal welche Anwendung) schon mal getestet?

Mit Gruß
Pieter

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Ich kenne das zumindest für LinuxCNC.

Dort arbeitet ein Echtzeit-Kernel.
Genaugenommen liegt dort der "übliche Linuxkern" nur als normale Task 
unter anderen vor, die aufgerufen wird, wenn sonst nichts zu tun ist. 
Die eigentliche Steuerung und Ausgabe der Schritte erfolgt derweil in 
harter Echtzeit durch entsprechend feine Timereinstellungen und Aufrufe 
der dort eingehängten Funktionen.

Es tritt dann nur noch eine Verzögerung (und vor allem) Jitter durch die 
Umschaltdauern der Taskwechsel auf, die (leider) je nach Board stark 
unterschiedlich sein können.

Es gibt aber schon eine Reihe von Boards, die man guten Gewissens nehmen 
kann und mit denen 50kHz durchaus möglich sind.

Ein Board ist das Intel D525MW mit Atom-Doppelprozessor, welches wir 
hier verwenden.

Dort kann man das in der Tat so wie Reinhard schreibt einrichten, dass 
ein Prozessor nur die Echtzeittasks bearbeitet und der andere für das 
"weiche" Linux zuständig ist. Damit wird die Dauer des Prozesswechsels 
nochmal reduziert und man hat trotzdem einen Flotten Desktop zur 
Verfügung.

Es ist auf jeden Fall beeindruckend, wenn die Fräse mit voller 
Geschwindigkeit läuft und man ohne Probleme und Ruckeln Filme gucken 
kann :-)

Chris D.

von Reinhard Kern (Gast)


Lesenswert?

Pieter schrieb:
> ..und wo kann man so etwas einstellen?

Was heisst einstellen, das kann man bei Kithara kaufen, ist ganz neu 
(neue c't Seite 19). Kithara verspricht "Echtzeitcode mit 1 MHz und 
Abweichungen unter 1 µs".

Cores stillzulegen ist kein Problem, aber nur ein kleiner Teil der 
Lösung.

Wir hatten aber schon mit Windows 3.11 zufriedenstellend laufende 
CNC-Maschinen, das war damals schon so, dass nicht die CNC-Steuerung 
unter Windows lief, sondern Windows als Bedieneroberfläche mit niedriger 
Priorität unter dem CNC- bzw. Realtime-System.

Gruss Reinhard

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.