Meine Schrittmotorensteuerung - Probleme

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Ich werde woll langsam anfangen zu nerven,
deswegen schreibe ich jetzt alle probleme die ich mit Schrittmotorensteuerung habe.

Ich komme mal wieder nicht weiter.

Code: Alles auswählen

import parallel
p = parallel.Parallel() 
p.setdata(0x00)
(0x00) Ich wahrscheinlich auch falsch (ich will ersr mal ein Signal rausschicken. Das problem das ich jetzt habe liegt in in der zweiten Zeile.
Es kommt der Fehler:

Traceback (most recent call last):
File "C:\Python25\cnc1.py", line 5, in <module>
p = parallel.Parallel() #open LPT1
File "C:\Python25\Lib\site-packages\parallel\parallelwin32.py", line 74, in __init__
self.ctrlReg = _pyparallel.inp(self.ctrlRegAdr)
WindowsError: exception: priviledged instruction

Ich weiss es gibt schon ein ähnliches Thema, nur das was man da sagt hilft bei mir nicht. Ich habe versucht die giveio.sys zu installieren, was aber nicht geklappt hat. Hat jemand eine gute Installationsdatei?

Ich Arbeite gerade mit WinXP.
Ist es einfacher unter Ubuntu auf die LPT zuzugreifen (Python lauft doch unter Ubuntu?).

Gruß
Andyh
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Andyh hat geschrieben:Ich habe versucht die giveio.sys zu installieren, was aber nicht geklappt hat.
Hallo Andyh!

http://www.nf.fh-nuernberg.de/~jesorsky ... c/port.htm

- Kopiere die Datei giveio.sys http://www.nf.fh-nuernberg.de/~jesorsky ... giveio.sys in den Ordner *C:\WINDOWS\system32\drivers*.

- Starte das Programm LoadDrv.exe http://www.nf.fh-nuernberg.de/~jesorsky ... oadDrv.exe. Gib dort den genauen Pfad zur Datei giveio.sys ``C:\WINDOWS\system32\drivers\giveio.sys`` ein und klicke danach auf "Install" und danach auf "Start". Falls es Probleme gibt, dann versuche es in dieser Reihenfolge: "Stop", "Remove", "Install" und "Start"

Damit sollte die giveio.sys korrekt installiert sein. Auch nach einem Neustart des Computers sollte dein Programm immer noch funktionieren.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Andyh!

Ich merke soeben, dass das bei mir auch nicht mehr richtig funktioniert. Nach einem Neustart ist alles wieder beim Alten. :roll:

Jetzt weiß ich auch wieder, warum ich nichts mehr mit dem Parallelport mache. Ich arbeite schon länger nur mehr mit dem Seriellen Port und mit USB. Es tut mir leid.

EDIT:

Unter Ubuntu ist es dahingehend einfacher, weil man sich "nur" vor dem Start des Programmes darum kümmern muss, dass das Kernelmodul "lp" entladen wird. --> http://www.python-forum.de/post-73577.html#73577


mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Danke für die Bemühungen

Werde mich mal dahinterklemmen!

Gruß
Andyh
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Klappt bei mir auch nicht. Habe es zusätzlich noch hiermit probiert:
http://www.holger-klabunde.de/multiprom/ntdriver.zip
Ich habe noch das hier gefunden:

Code: Alles auswählen

===============================
Installing GiveIO on Windows XP
===============================

1. Copy giveio.sys to C:\WINDOWS\system32\drivers

2. Go to Control Panel, open System and go to the hardware tab.

3. Click on the Device Manager button. This will open a new window.

4. In the Device Manager window, click on the View menu and select 
"Show hidden devices." This will reveal a Non-Plug and Play Drivers icon 
in the file tree.

5. Expand the Non-Plug and Play Drivers tree.

6. Find and right click giveio and select Properties from the popup menu. 
This will bring up a window of the giveio Properties.

7. In the Properties window, select the Driver tab.

8. Select Automatic from the dropdown box for the type and Start the Driver!
Es scheitert bei mir aber bei Punkt 6, weil giveio nicht in der Liste auftaucht.
Ich benutze übrigens Windows XP SP 2.
MfG
HWK

Edit: Hab jetzt den Rechner mit giveio.sys in windows\system32\drivers neu gestartet. Dann habe ich giveio.sys mit loaddrv.exe installiert und gestartet. Danach funktioniert es:

Code: Alles auswählen

>>> import parallel
>>> p = parallel.Parallel()
>>> p
<parallel.parallelwin32.Parallel instance at 0x009D9850>
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

So bei mir hats jetzt geklappt (neustart habe ich och nicht gewagt)
Ich habe einfach den Download von HWK genommen und die Datei "loaddrv2_XP" gestartet und auf "install" geklickt.

Der fehler ist jetzt weg und der nächste kommt gleich in der zeile:

Code: Alles auswählen

p.setdata(0x55)
Fehler:
Traceback (most recent call last):
File "C:\Python25\cnc1.py", line 6, in <module>
p.setdata(0x55)
AttributeError: Parallel instance has no attribute 'setdata'

Gruß
Andyh
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Probier mal setData.
MfG
HWK
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

HWK hat geschrieben:Probier mal setData.
Oder bei der Gelegenheit auch ``dir(p)``.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo also wenn ich setdata eingebe kommt nur das es nicht definiert ist.

Wie schreibe ich das mit dir(p)?

Danke für die hilfe bis hier her (muss man mal sagen, klasse Forum)

Gruß
Andyh
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Hi Andyh...
Andyh hat geschrieben:Wie schreibe ich das mit dir(p)?
dir(p) gibt dir aus, was fuer Methoden das Objekt "p" mit sich bringt.
Außerdem ist die Groß-/Klein-Schreibung in Python zu beachten. Deshalb gibt es also einen Unterschied, ob du setdata oder setData benutzt!
Andyh hat geschrieben:Danke für die hilfe bis hier her (muss man mal sagen, klasse Forum)
Deshalb sind wir ja alle hier.. nicht wahr? ;)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Andy ist jetzt auf Sendung.

Edit: das hat sich erledigt
Hat jemand eine Tabelle wo drin steht was ich eingeben muss wenn Pin1 angesteuert werden soll. Für Qbasic habe ich schon welche gefunden für Python noch nicht (vieleicht kann ich nur nicht suchen)

Habe noch ne frage (gut das geht jetzt in die CNC technik)
Weiss jemand wie das Takt/Tichtungssignal aussieht?

Gruß
Andyh
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Andyh hat geschrieben:Hat jemand eine Tabelle wo drin steht was ich eingeben muss wenn Pin1 angesteuert werden soll.
Hallo Andyh!

Das kannst du dir selber zusammensetzen.
Du hast 8 Bit. Diese 8 Bit entsprechen deinen 8 Datenleitungen. Im Binärsystem: ganz rechts ist Bit 1 und ganz links ist Bit 8:

Code: Alles auswählen

>>> int("00000000", 2)
0
>>> int("00000001", 2)
1
>>> int("00000010", 2)
2
>>> int("00000100", 2)
4
>>> int("00001000", 2)
8
>>> int("00010000", 2)
16
>>> int("00100000", 2)
32
>>> 
Usw.

Wenn mehrere gleichzeitig ON sein sollen, dann kombinierst du das einfach:

Code: Alles auswählen

>>> int("10101010", 2)
170
>>> 
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

@gerold
Perfekt!

Ich hatte es gerade mit HEX zahlen gemacht also (0x40) aber mit den Binar zahlen ist es ja 100 mal einfacher.

Dankender Gruß
Andyh
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Wenn du mehrere Bits kombinieren willst, bietet sich auch die boolesche Algebra an:

Code: Alles auswählen

>>> 1 & 4
0
>>> 1 | 4
5
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo
Also Pin 2-9 kann ich ohne weiteres ansteuern, aber Pin 1, 14, 16, 17 kann man doch auch als ausgang benutzen. Wie bekomme ich die geschalten.

Zur überprüfung der signalle habe ich das Prohramm "Parallel Port Monitor" Das Programm hat drei Zeilen:
In der ersten den Port 378 (also LPT1) in der zweiten 379(LPT2) und in der dritten 37A (keine ahnung), wenn ich jetzt denn Pin 2 anteuere sehe ich schön wie die Binar , Hex und die Dec Zahlen unschalten. Wenn ich dann im Parallel Port Monitor" den Pin 14 ankicke schaltet der auch. Nur das die Zahlen sich dieses mal bei der Zeile von 37A ändern.

Gruß
Andyh
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Andyh hat geschrieben:Pin 1, 14, 16, 17 kann man doch auch als ausgang benutzen
Hallo Andyh!

Ohne dass ich das jetzt wüsste oder ausprobiert hätte:

Hast du die Methoden
- setDataStrobe
- setInitOut
- setAutoFeed
- setSelect
schon ausprobiert? Damit kannst du evt. etwas anfangen.

Wenn du wissen willst, welche Attribute ein Objekt hat, dann kannst du dir diese mit dem Befehl dir() ausgeben lassen. Dann weißt du meist was du alles mit einem Objekt wie z.B. dem ``parallel.Parallel`` so machen kannst.

Und wenn du noch mehr wissen willst, dann bringt oft ein Blick in den Quellcode etwas. -- Oft, aber nicht immer!

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Hätte man auch selber drauf kommen können.
Danke Gerold

Und ich habe gleich die nächste Frage:

Kann man zwei Schleifen unabhänging von einander laufen lassen?
Ich brauche eine die das signal ausgibt und eine die den Ververweg in mm anzeigt.

Gruß
Andyh
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Andyh hat geschrieben:Kann man zwei Schleifen unabhänging von einander laufen lassen? Ich brauche eine die das signal ausgibt und eine die den Ververweg in mm anzeigt.
Hallo Andyh!

Das geht schon, ist aber nicht für Anfänger geeignet. :roll: Nämlich mit Threads. Was willst du denn machen? Willst du dir eine CNC-Fräse selber programmieren? Dann hast du noch viel vor dir. Es gibt aber auch fertige Programme mit denen man Fräsen ansteuern kann.

Threading:
http://www.python-forum.de/viewtopic.php?p=32524

Das sind meine Links zum Thema "Fräsen und Plotten":
http://www.tron-cnc.de/
http://www.8linx.com/cnc/
http://www.jensn.de/cnc_portalfraese.html
http://home.arcor.de/thoradam1970/Programme.htm
http://www.mikrocontroller.net/articles ... r%C3%A4sen
http://www.abacom-online.de/html/sprint-layout.html
http://www.strippenstrolch.de/4-0-1-fraesplotter.html
http://www.strippenstrolch.de/4-0-6-x-y-z-maschine.html

Ich möchte mir demnächst auch eine Fräse bauen. Mein Plan ist der, dass ich einen ATmega per USB ansteuere und diesem nur mitteile, wohin der Wagen in welcher Geschwindigkeit fahren soll. Diese einzelnen Schritte schreibe ich in einen Speicher und lasse sie vom ATmega hintereinander selbständig ausführen.
Nullpunkteinrichtung und andere Einstellarbeiten möchte ich auch direkt vom ATmega erledigen lassen. Der ATmega kriegt nur die Koordinaten vom Nullpunkt aus gerechnet. Ich komme nur nie dazu, mir endlich mal einen Plan zu zeichnen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Danke für die Links!

Ja ich möchte meine CNC Fräse ansteuern und ich habe auch schon ein wunderbares Programm.

Nur will ich auch mal so eins machen, eins was in meinen Augen alles kann was man braucht und nicht mehr.

Gruß
Andyh
Antworten