LabVIEWForum.de
Schrittmotorsteuerung über LPT bzw. parallel Port - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: Schrittmotorsteuerung über LPT bzw. parallel Port (/Thread-Schrittmotorsteuerung-ueber-LPT-bzw-parallel-Port)



Schrittmotorsteuerung über LPT bzw. parallel Port - StudiFH - 20.11.2013 09:17

Hallo zusammen

Ich versuche seit einiger Zeit eine 3-Achsen Schrittmotorsteurung über die parallele Schnittstelle anzusteuern. Leider sind meine Kenntnisse in diesem Bereich eher beschränkt und bin daher auf Hilfe angewiesen. Es handelt sich um ein TB6560 driver board.

Mein Ziel ist es die gesamte Platine, also alle drei Achsen über das LPT zu steuern. Auf der mitgelieferten CD war leider keine dll
oder anere Kommunkationsmöglichkeit beschrieben.

Vielen Dank für eueren Input!


RE: Schrittmotorsteuerung über LPT bzw. parallel Port - GerdW - 20.11.2013 11:27

Hallo Studi,

hat dein PC überhaupt noch einen LPT-Anschluß?

Ansonsten: Wenn man sich die PIN-Belegung anschaut, dann muss der Hersteller eine Software mitgeliefert haben (oder wenigstens simple BASIC/PASCAL-Beispiele)...

Dein Treiberboard macht anscheinend nur genau das: den Motor treiben. Alles weitere musst du in Software erledigen: Drehrichtungsvorgabe, Motorfreigabe und Clock-Generierung. Dafür benötigst du entsprechend viele digitale Ausgänge (DOs), die evtl. am LPT vorhanden sind. Ansonsten solltest du etwas in der Art einer USB6008 (software-getaktet, d.h. nur langsamer Clock möglich) nutzen.


RE: Schrittmotorsteuerung über LPT bzw. parallel Port - StudiFH - 20.11.2013 12:02

Hallo GerdW

Vielen Dank für deine Antwort.

Der Hersteller hat eine Software mitgeschickt. Allerdings keine welche ich in LabVIEW verwenden könnte. Daher hatte ich gehofft, über die parallele Schnittstelle die einzelnen Pins zu steuern. Würde denn das gehen?

Andernfalls könnte ich es natürlich, wie du erwähnt hast, mit einer NI-Karte versuchen. Die erste Variante wäre allerdings "schöner".


RE: Schrittmotorsteuerung über LPT bzw. parallel Port - Y-P - 20.11.2013 12:17

http://www.ni.com/example/29213/en/

Gruß Markus

(20.11.2013 12:02 )StudiFH schrieb:  Der Hersteller hat eine Software mitgeschickt. Allerdings keine welche ich in LabVIEW verwenden könnte. Daher hatte ich gehofft, über die parallele Schnittstelle die einzelnen Pins zu steuern. Würde denn das gehen?



RE: Schrittmotorsteuerung über LPT bzw. parallel Port - Kiesch - 20.11.2013 14:40

Da ich sowas auch gemacht habe (quasi) und de facto die gleiche Architektur vorliegen habe:

Ansteuern konntest (bzw. kannst) die den Parrallel Port über die inPort bzw. outPort VIs. *weis grad nichtmehr wo die zu finden sind*
Das geht allerdings maximal bis Win Vista 32 bit bzw. Win XP (Win Vista 64 und neuere unterstützen die wohl garnichtmehr; bei Vista 32 Bit kann es wohl noch eingeschränkt funktionieren). Dafür musst du dann die Registeraddresse des Parralel Port raussuchen und benutzen. Funktioniert auch mit Steckkarten die einen Parralel Port haben. Du liest dann die entsprechende Registeraddresse ein für die ersten 8 Pins; die Addresse +1 für die Nächsten 8; anschließend wurde es glaube komplizierter. Schreiben geht natürlich genauso. Kann auch sein das du erst ab Pin 2 ansprichst, müsste ich nochmal nachschauen (also bei der Registeraddresse vom Parralelport Pin 2 - 9 und bei der Addresse +1 Pin 10 - 17).

Da du die Pins nicht einzeln setzen kannst besteht also ein Vorgang immer aus: Lesen --> Ändern --> Setzen (das muss also von anderen Zugriffen isoliert werden, wenn dein Programm nicht Scheiße machen soll). Das ganze sollte man dann noch auf 1ms pro Vorgang runterbremsen, dann taktest du das ganze auf 1kHz (was die Schrittmotoren leisten können sollten; falls immer noch zu schnell entsprechend Zeit weiter hochsetzen.

Empfehlen würde ich das ganze nur bedingt, da die Schnittstelle aus der Unterstützung von Labview rausgefallen ist / rausfällt (da man einfach keine neuen Treiber für die neue Win Architektur schreiben will / kann; wegen der entsprechenden MS seitigen Restriktionen).

Ich habe meine Architektur auf eine
NI USB 6501
http://sine.ni.com/nips/cds/view/p/lang/de/nid/201630

umgebaut. Sprich also: Über diese USB Box einen Parralelport "emuliert" (ergo: Die einzelnen Anschlüsse einfach entsprechend den PINs zugeordnet). Das dürfte einigermaßen Zukunftssicher sein, hat aber einen Nachteil: Dein Maximaltakt sinkt auf 500Hz (liegt wohl irgendwie an der USB Schnittstelle die eine Setzoperation auf 1ms Ausführungszeit runterbremst).


Wie funktioniert das ganze dann praktisch:

Wenn ich den Schaltplan sehe springen mir Spontan Ausgänge ins Auge die mit "X Step", "Y Step" etc. bezeichnet sind. Die dürften (wahrscheinlich) entweder auf einen Abfallende oder auf eine Ansteigende Flanke triggern und einen Step auslösen. Die Richtung wird dabei vorgegeben durch "X Dir", "Y Dir", etc. (dir = direction). Welche Richtung High ist und welche Low musst du natürlich noch selbst austesten. "X Enable", "Y Enable", etc. musst du vermutlich auf True setzen damit der überhaupt was macht (im schlimmsten Fall musst du da sogar nen Rechtecksignal dran haben damit der angeschaltet ist). Das kannst du an sich nur rausfinden indem du entweder High anlegen testetst und es geht ^^ oder indem du im Betrieb mit der Software mit einem Oszilloskop abgreifst was da genau anliegt.
Über den Bezeichnungen steht jeweils auf welchem Pin sich das befindet, so dass du das also auch per PC beschalten können solltest.

Im Betrieb musst du dann jeweils nur zuerst den Dir Eingang auf die Richtung setzen die du haben willst (High oder Low). Und dann ein Rechtecksignal am entsprechenden Step Eingang erzeugen (du brauchst zwar vermutlich nur eine der Flanken - bei meinem Aufbau mit einer anderen Treiberkarte Low auf High - allerdings musst du natürlich danach wieder auf Low zurück um eine neue Flanke zu erzeugen. Bei dem USB 6501 dauert einmal setzen jeweils 1ms, so dass du dann effektiv auf eine Taktfrequenz von 500Hz (also 500 Schritt pro Sekunde) kommst. Bei den inPort und outPort VIs geht das deutlich schneller als 1ms, da musst du schauen dass du die Funktion einbremst, da vor deutlich mehr als 1kHz die Motoren + Treiberkarte vermutlich kapitulieren werden (du merkst das daran, dass Schritte verloren gehen).
Das dürfte wahrscheinlich das Wesentliche sein was du für den Betrieb brauchst.

Was mich wundert ist, dass scheint es keine Endschalter vorgesehen sind auf dem Board. Die solltest du im Zweifel anbringen wenn du irgendwie mal ne Chance haben willst das zu kalibrieren und sinnvoll automatisiert zu fahren (Stichwort: Feststellen wo der Schrittmotor gerade steht - das geht quasi nur über fahren zu nem Endschalter).

Ansonsten: Die Angaben sind natürlich ohne Gewähr - ich kann nur deuten was ich da geschrieben sehe. Im Zweifel kann dir der Hersteller der Karte sicher auch weiterhelfen dabei, welche Signale auf welchem PIN erwartet werden. Den also am besten einfach mal ansprechen. Mit viel Glück bieten die dir sogar ne DLL mit der du Grundfunktionen zur Verfügung gestellt kriegst.

Ich muss auch mal schauen ob ich meine Ansteuerung über die inPort und outPort VIs hier noch rumliegen habe, dann kann ich dir die auch als Beispiel mal anhängen (auch wenn ich mich für das Programm eigentlich schämen muss da es noch aus meiner LV Anfangszeit stammt und entsprechende Unschönheiten enthält). Praktisch gesehen kannst du dich daran allerdings maximal orientieren, da bei dir die PIN Belegung natürlich anders ist als sie das bei meinem Aufbau ist.

Gruß Kiesch


RE: Schrittmotorsteuerung über LPT bzw. parallel Port - StudiFH - 20.11.2013 17:05

Vielen Dank für eure Inputs !

Ich konnte das Problem mittlerweile über die parallele Schnittstelle lösen. Dazu werden die Daten (x738) und Status (x73A) Bytes der Schnittstelle verwendet. Trotzdem ich finde deinen Hinweis sehr hilfreich, dass diese nur bis Win XP funktioniert bzw. von NI supportet wird. Eventuell macht es sogar Sinn, das ganze mit NI-Hardware zu lösen.

Ich habe meinen Code als Anhang angefügt.


RE: Schrittmotorsteuerung über LPT bzw. parallel Port - jg - 20.11.2013 17:26

(20.11.2013 17:05 )StudiFH schrieb:  Trotzdem ich finde deinen Hinweis sehr hilfreich, dass diese nur bis Win XP funktioniert bzw. von NI supportet wird. Eventuell macht es sogar Sinn, das ganze mit NI-Hardware zu lösen.
Support bis Win XP hat weniger mit NI zu als vielmehr mit Winzigweich, die nicht mehr den direkten Speicher-Zugriff erlaubt.

Gruß, Jens


RE: Schrittmotorsteuerung über LPT bzw. parallel Port - StudiFH - 20.11.2013 23:48

Wie meinst du das mit dem WinzigWeich?


RE: Schrittmotorsteuerung über LPT bzw. parallel Port - Y-P - 21.11.2013 07:18

Übersetz mal ins Englische. Big Grin

Gruß Markus

(20.11.2013 23:48 )StudiFH schrieb:  Wie meinst du das mit dem WinzigWeich?



RE: Schrittmotorsteuerung über LPT bzw. parallel Port - StudiFH - 21.11.2013 08:42

Microsoft Construction