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