[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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.