Für den Datenaustausch zwischen meiner CNC-Fräse und dem normalen Büro-PC dient ein kleiner Raspberry Pi. Als Subversion-Server stellt er gleichzeitig ein Versionsverwaltungssystem zur Verfügung und erlaubt so eine einfache Archivierung von CAD-Daten, CAM-Daten und Maschinenprogrammen.
Der Steuer-PC meiner CNC-Fräse ist auch für einfache CAD-Anwendungen hinreichend leistungsfähig. Aufwendige Zeichnungen sind dagegen am normalen Büro-PC deutlich bequemer zu erstellen: Erstens muß man beim Zeichnen nicht stehen, zweitens ist der Monitor deutlich größer, drittens sind Maus und Tastatur deutlich einfacher zu bedienen, wenn sie frei von Späne-Rückständen sind und viertens ist auch ein Drucker für abschließende Plausibilitätsbetrachtungen nicht zu verachten.
Zwischen beiden Computern muß dann irgendwie ein Datenaustausch bewerkstelligt werden. Da auf dem CNC-Steuer-PC kein Virenschutzprogramm oder Firewall läuft, wäre es unverantwortlich, ihn ins lokale Netzwerk mit Internetzugang einzubinden. Andererseits besteht beim Hantieren mit USB-Speichersticks immer die Gefahr, den Überblick über alte und neue Dateien zu verlieren und irgendwann neue Zeichnungsversionen durch ältere Varianten zu überschreiben.
Hier bietet ein kleiner Server mit Versionsverwaltung die perfekte Lösung: Verschiedene Versionen der CAD-Daten, CAM-Daten, Maschinenprogramme und auch Maschinen-Einstellungsdaten lassen sich so sehr komfortabel hinterlegen und auch später nachvollziehen. Gleichzeitig vollzieht er die Trennung zwischen dem Büro-Netzwerk und der CNC-Steuerung.
Der Raspberry Pi ist momentan der bekannteste Linux-Einplatinenrechner und für den angedachten Zweck hinreichend leistungsfähig. Mit der Debian-Variante „Raspbian” ist die passende Software sehr einfach aus Standard-Paketquellen verfügbar, und es existieren für fast jeden erdenklichen Anwendungszweck schon passende Beschreibungen und Anleitungen im Netz, so daß der Anfangsaufwand extrem niedrig ist.
Im vorliegenden Fall wurde die Version „B+” verwendet, weil sie sich besonders einfach installieren läßt: Durch die insgesamt vier USB-Anschlüsse sind neben dem Anschluß für den nötigen USB-Speicherstick und den WLAN-Stick noch zwei USB-Buchsen frei, an der sich für die Installation eine Tastatur anschließen läßt.
Ergänzt wird der Einplatinencomputer noch um eine Echtzeit-Uhr, da ein Versionierungsserver ohne eine korrekte Uhrzeiteinstellung entschieden an Nutzwert einbüßt.
Beim Raspberry Pi B liegt ein Faltblatt bei, auf dem die Einrichtung einer (Micro-)SD-Karte mit Raspbian beschrieben wird. Das Meiste steht so in der Anleitung und ist hier in grauer Schrift, die wenigen Fallstricke in normaler Schrift dargestellt.
Die Subversion-Repositories finden auf einem USB-Stick mit einem EXT2-Dateisystem Platz. Im Gegensatz zu der Unterbringung auf der SD-Karte bietet das den Vorteil, Repository-Daten auch dann noch sichern zu können, wenn der Raspberry Pi oder die SD-Karte nicht mehr funktionieren sollte.
Als Versionsverwaltungssystem kommt Subversion zum Einsatz, da mit TortoiseSVN[1] ein sehr komfortabler Windows-Client existiert, der die Funktion des Steuer-PCs nicht beeinträchtigt.
Auch für die Installation von Subversion auf einem Raspberry Pi gibt es ausgezeichnete Tutorials[2]. Hier folgt deshalb nur eine kurze Beschreibung für die hier vorliegende Konfiguration:
<Location /svn>
DAV svn
SVNParentPath /mnt/repostick/repos
AuthType Basic
AuthName "Subversion Repo"
AuthUserFile /etc/apache2/dav_svn.passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
(In Putty kann man übrigens mit einem Rechtsklick auf den Cursor
Texte aus der Zwischenablage einfügen.)
Der Subversion-Server-Teil ist jetzt fertig eingerichtet. (Für den Betrieb eines Versionsverwaltungsserver ist das Subversion-Handbuch[3] immer einen Blick wert.) Soll er in einem Inselnetz betrieben werden, wird noch eine Echtzeit-Uhr benötigt, damit er sinnvoll versionieren kann.
Der Uhrenbaustein DS1307 ist eine komplette Echtzeit-Uhr und läßt sich aus einer Knopfzelle betreiben. Er wird über den I²C-Bus angesprochen und benötigt minimale Außenbeschaltung. Für die Anbindung dieses Uhrenbausteins an den Raspberry Pi gibt es ein sehr kleinschrittiges Tutorial[4]
Die folgende Beschreibung ist eine Kurzform des Tutorials[4].
Die Echtzeit-Uhr ist jetzt bereit und wird beim nächsten Systemstart gelesen.
Es ist sehr praktisch, wenn eine LED anzeigt, wann das Gerät fertig gestartet ist bzw. wenn der shutdown eingeleitet ist. Unter alten Raspbian-Versionen war die Einbindung von Status-LEDs an die GPIOs absolut geradeheraus und mußte lediglich in die init.d eingetragen werden:
Leider funktioniert diese Methode nicht mehr seit Raspbian 3.5, da sich seitdem die GPIOs nicht mehr dauerhaft in den user space einbinden lassen.
Der Raspberry-Pi befindet sich in zwei lokalen Netzwerken: In das normale Heimnetzwerk ist er per WLAN eingebunden, an das CNC-Netzwerk per Kabel. Der Raspberry Pi B+ benötigt dafür einen USB-WLAN-Stick.
Die Netzwerkeinstellungen erfolgen zum Schluß, weil bei dieser Gelegenheit unserem kleinen Versionsverwaltungsserver der Internetzugang gesperrt wird. Bei manchen WLAN-Routern kann der Internetzugang direkt gesperrt werden. Ist dies nicht möglich, können dem Raspberry-Pi IP-Adresse, Subnetz und Gateway manuell vorgegeben werden: Hier bewirkt eine ungültige Gateway-IP die Netztrennung.
In der Firewall müssen lediglich die Ports 22 (SSH) und 3690 (Subversion) offen bleiben.
Ein Datenaustausch-Server zwischen der CNC-Fräse und dem normalen Heimnetzwerk ist mit vertretbarem zeitlichen und finanziellen Aufwand einrichtbar. Die gleichzeitige Einführung einer Versionsverwaltung führt dabei zu keinerlei Mehraufwand, erleichtert in der Praxis aber erheblich den Umgang mit unterschiedlichen Versionen von Zeichnungen, CAM-Daten und Maschinenprogrammen auf unterschiedlichen Rechnern.
Konfig-Datei Status-LED |