Nachdem ich immer wieder mal an meiner Soft- und Hardware zur Fernsteuerung meiner A807 im Arbeitszimmer und jener im Schlafzimmer gewerkelt habe, ist es an der Zeit, einen kleinen Bericht zu schreiben.
Die Idee, meine beiden Maschinen über das lokale Netzwerk fernzusteuern, hatte ich während einer Diskussion über verteilte Systeme mit einem Mitstudenten. Ich begann mich zu informieren, wie es möglich wäre, eine Maschine über das Netzwerk fernzusteuern und grub meine alten "Lernprojekte", die ich damals während meiner Zeit bei Studer erstellt habe, aus, um das Prinzip von Netzwerkkommunikation unter C# zu verstehen, wieder aus, machte mich mit einem Mitstudenten auf die Suche nach einem passenden System für die Maschinensteuerung und begann zu programmieren.
Die ersten Versuche lancierte ich auf einem ALIX Industrie-Computer vom schweizer Händler PC-Engines ( http://pcengines.ch/alix3d3.htm ), welcher nicht grösser als eine Eurokarte ist. Darauf wurde ein Xubunu Linux installiert und die Kommunikation zwischen Netzwerkseite und der seriellen Schnittstelle mit einem JAVA Programm bewerkstelligt. Grundsätzlich funktionierte diese Seite - das Benutzerprogramm war jetzt an der Reihe. Auch hier entschied ich mich, die plattformunabhängige Sprache JAVA zu verwenden.
Sehr schnell stellte sich aber heraus, dass diese Lösung mit dem ALIX Board sehr ungünstig ist. Die Boot-Zeit ist ziemlich lange, das System muss, bevor die A807 ausgeschaltet wird, heruntergefahren werden etc. Es musste eine andere Lösung her.
Diese Lösung kam in Form eines "Experimentierboards" von Pollin namens "AVR-NET-IO" ( http://www.pollin.de/shop/dt/MTQ5OTgxOT ... ET_IO.html ). Eine Platine, welche einen ATMEL ATmega32 Mikrocontroller, Taktrate 16 MHz, einen Ethernet Controller für 10 Mb/s Ethernet, eine serielle Schnittstelle und weitere nützliche Schnittstellen beherbergt. Leider war die originale Firmware derart schlecht und träge, dass ich mir eine komplett eigene schreiben musste. Meine Kenntnisse in C/C++ waren mal wieder gefragt.
Ich griff dabei auf den TCP/IP-Stack von Ulrich Radig zurück ( http://www.ulrichradig.de/home/index.php/avr/eth_m32_ex ) welcher er für seine Netzwerkprojekte verwendet hat und programmierte die Funktionen für die Steuerung der Maschine aus.
Inzwischen wurde auch die Benutzersoftware weiterentwickelt und erhielt eine grafische Oberfläche. Da jedoch die Updates von Zeit und Laufwerkszustand doch auch einigermassen in Echtzeit erfolgen müssen, kam ich schnell an die Grenzen der 16 MHz Taktrate des Mikrocontrollers. Es war nötig, einige Vorgänge abzuspecken oder gänzlich aus dem Code zu entfernen, um den Datendurchsatz zu erhöhen - dies gelang auch mit einer Umstellung vom ATmega32 auf den mit bis zu 20 MHz taktbaren ATmega324P Mikrocontroller. Neben all diesen Schlankheitskuren mussten auch noch ein paar kleine und kleinste Fehlerchen bereinigt werden, die unter anderem dazu führten, dass das Modul plötzlich nicht mehr antwortet oder ganz einfach "abstürzt".
Das Projekt ist nun soweit fertiggestellt, dass man die Maschine einschalten kann, das Board startet, nach maximal einer Sekunde steht die Fernsteuerung zur Verbindung bereit, Benutzersoftware verbinden, fertig. Weitere Funktionen, wie die Ansteuerung einer externen Rauschreduktion etc. sind noch in Bearbeitung, wobei hier das Grundgerüst in den Quellcodes bereits steht.
Die Software:

Die Hardware:

... wenn ich mal wieder Zeit und Musse habe, muss dieses Kabelwirrwar noch aufgeräumt werden ...