CNC-Fraese/Spindel
Als wir die Maschine bekamen, lag ein Kress FM6990E Spindelmotor bei. Die Besonderheit bei diesem Gerät ist, dass man die Drehzahl stufenlos einstellen kann. Diese Einstellung erfolgt durch Verschieben der Kohlen des Repulsionsmotor. Leider hatte dieses Exemplar leider auch einen kapitalen Lagerschaden, der sich dich ein sehr lautes Laufgeräusch und regelmäßiges Verklemmen des Rotors äußerte. Glücklicherweise konnte Tixiv noch eine passende Hochfrequenzspindel von Isel besorgen. Der Umrichter für den Spindelmotor ist ein Isel FC1200-is. Für ein ähnliches Modell gibt es eine ausführliche Anleitung im Netz. Es gibt jedoch ein paar Unterschiede:
- RS232-Schnitstelle statt 20mA Current Loop
- Anderes Datenformat: 9600:8N1 statt 9600:7E1
- Keine Jumper und DIP-Switches im Inneren
- Adresse ist 0x30 (48 dezimal) statt 32-63
An den Steckern ist noch wildes Gebastel von Freitag Elektronik angeschlossen. Der Umrichter braucht eine externe Einspeisung von 24V (siehe Anleitung), die hier von einem 12V?!?-Netzgerät erledigt wird. Ohne diese Einspeisung geht nichts. Ausserdem waren noch ein Poti und ein Richtungsumschalter zur Manuellen Steuerung angeschlossen, welche aber trotz richtigem Anschluss (haben wir nach denr Anleitung gecheckt) keine Funktion zeigten.
Der Umrichter lässt sich aber über die serielle Schnittstelle steuern. Laut Anleitung lässt sich der Steuermodus per serieller Schnittstelle auch auf analog umschalten, was uns allerdings bisher nicht gelungen ist. Aufgrund der aktuellen Erfolge mit der Integration in die Steuerung, wurde die externe Beschaltung entfernt.
Auf dem beigelegtem Windows95 PC befinden sich 2 Programme, um den Umrichter zu steuern: "Spindle Windemo" (Link auf dem Desktop), und ein DOS-Programm namens isd.exe unter C:/isd . Über "isd /?" bekommt man Hilfe. Über "isd -smod:ZAHL" Lässt sich der Steuermodus umschalten. Allerdings wird das nicht beim Ausschalten gespeichert. Erstes Workaround um den Motor ein/aus zu schalten war: Drehzal in isd.ini setzen. Motor mit Kommando "isd -on" einschalten und über "isd -off" ausschalten. Wenn man vorher "doskey" aufruft kann man die Kommandos wechelweise ausfüren, indem man 2 mal Pfeil rauf und Enter drückt. Der Bildschirm kam dann wieder an den EMC-Rechner....
Durch Studium der vorhandenen Dokumentation und Mitsniffen der Kommunikation wurden die ersten Erkenntnisse gewonnen:
Das Telegramm baut sich so auf:
0x04 0x30 0x02 [Befehl in Acii] 0x03 [XOR des Befehls incl. dem EOT 0x03]
Zum Initialisieren:
003=0
010=0 //Drehzahl 0
Starten:
007=1
Drehzahl einstellen:
010=n [u/min]
Stoppen:
008=0
Diese Erkenntnisse wurden in ein erstes Visual Basic.net Programm gegossen mit dem man Parameter auslesen und setzen konnte, den Motor starten und stoppen, wie die Drehtzahl vorgeben kann.
Im Laufe des Bastelabends entstand dann ein Python-Script, welches in dem HAL der Steuerung läuft. Dort stellt es eine Komponente zur Steuerung der Spindel bereit. Die Daten des motion-controllers werden an diese Komponente weitergereicht, das sind im Moment Betriebszustand (an/aus) und Soll-Drehzahl. Die Komponente meldet zurück, wenn diese Drehzahl erreicht ist (Im Moment nur ein Timeout von 4s). So wird die Spindel völlig transparent angesteuert und kann entweder über die Bedienoberfläche von EMC2 oder direkt aus dem G-Code gesteuert werden.