[V] Schrittmotortreiber mit ModBus ansteuerung

OP #5975463
Lesenswert?

Hallo zusammen

Ich habe vor einiger Zeit ein Schrittmotortreiber mit einer ModBus 
Schnittstelle entwickelt. Inzwischen habe ich diesen bereits erfolgreich 
in meiner Pick and Place Machine eingesetzt. 
https://databyte.ch/?portfolio=bestueckungsautomat

Nun dachte ich, dass hier vielleicht auch andere Interesse an solch 
einem Treiber hätten?

Ich könnte eine C# Beispielimplementierung bereitstellen.

Hier ein einfaches Beispielprogramm von mir um ModBus mittels RTU 
anzusprechen:
https://github.com/swissbyte/ModbusMasterTool

Funktionsumfang:

Aktuell bietet der Treiber folgende Funktionen:

- Referenzfahrt
- Statusregister
- Beschleunigungsrampen in steps/s2
- Bremsrampen in steps/s2
- Zielgeschwindigkeit in Rotations per Minute
- Zielgeschwindigkeit in Rotations per Second
- Zielgeschwindigkeit in Steps per Minute

Motion:
- Anzahl Schritte zum fahren
- Gehe an Position in Schritten
- Motorstrom
- Anzahl Mikroschritte
- Schritte pro Umdrehung
- Aktuelle Schrittposition in Schritten

- Eingagn A und B (Zustand)
- Konfiguration von GPIO A und B (Ein oder Ausgang)
- Ausgang A und B (Zustand setzen)
- Referenzfahrt
- Homing einstellungen (Welcher Eingang als Trigger verwendet wird)
- Joystick Modus (Manuelles Fahren)

Weitere Informationen finden sich im entsprechenden Dokument:
https://databyte.ch/?smd_process_download=1&download_id=1704

Wie verwendet man dieses Board konkret:

Am einfachsten durch anschliessen eines USB zu RS485 Kabels.
Wie dieses hier z.B. 
https://www.reichelt.com/ch/de/raspberry-pi-usb-rs485-schnittstelle-ch340c-rpi-usb-rs485-p242783.html
Dann braucht man nur noch die entsprechende Serielle Schnittstelle auf 
dem PC-Auswählen und kann mit obig erwähntem Tool bereits die einzelnen 
Register beschreiben und so den Treiber konfigurieren.

Etwas bequemer geht dies mit der in C# erstellten motion-klasse.
Dann sieht dies so aus:
1
TheMachine = new machine(serialPort1, 3, 4, 1, 5);
2
MotionEngine = new BCMachineMotion(TheMachine);
3
PlacementEngine.setMotionAndMachine(TheMachine, MotionEngine);
4
InitializeMachine();
5
....
6
MotionEngine.MoveZAxisTo(0);
7
TheMachine.DisableAllAxes();


Falls Intersse besteht, könnte ich folgendes anbieten:

- Anpassung der Leiterplatte und Firmware, so dass es einen 
Adressschalter gibt. (Aktuell ist die ModBus Adresse Hard gecoded)

- Andere HW-Anpassungen falls gewünscht?
- Anbieten der unbestückten Leiterplatten
- Bestückte Leiterplatten evtl. aus China organisieren bei grossem 
Interesse.


Würde mich über ein Feedback freuen.

Viele Grüsse
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren