GIT repositories

Index page of all the GIT repositories that are clonable form this server via HTTPS. Übersichtsseite aller GIT-Repositories, die von diesem Server aus über git clone (HTTPS) erreichbar sind.

Services

A bunch of service scripts to convert, analyse and generate data. Ein paar Services zum Konvertieren, Analysieren und Generieren von Daten.

GNU octave web interface

A web interface for GNU Octave, which allows to run scientific calculations from netbooks, tables or smartphones. The interface provides a web form generator for Octave script parameters with pre-validation, automatic script list generation, as well presenting of output text, figures and files in a output HTML page. Ein Webinterface für GNU-Octave, mit dem wissenschaftliche Berechnungen von Netbooks, Tablets oder Smartphones aus durchgeführt werden können. Die Schnittstelle beinhaltet einen Formulargenerator für Octave-Scriptparameter, mit Einheiten und Einfabevalidierung. Textausgabe, Abbildungen und generierte Dateien werden abgefangen und in einer HTML-Seite dem Nutzer als Ergebnis zur Verfügung gestellt.

Erläuterungen zum Bahnplaner in C

(Hier die angefragte Einführung, weiter unten wird die Software beschrieben). Um Bewegungsabläufe von CNC-Maschinen oder Roboterarmen richtig zu steuern, benötigt man nicht nur eine Ansteuerung bzw. Regelung für jeden Motor, sondern auch ein Stück Software, welches den Ablauf der Bewegung koordiniert. Diese "Bahnplaner" oder "Bahngeneratoren" sind (normalerweise) Echtzeitprogrammteile, die als Eingabe eine Liste von Fahrbefehlen erhalten (z.B. "Linienbewegung zur Position x/y/z", "Kreisbewegung zu", "Freiformbewegung zu" usw.) und dafür in regelmäßigen Zeitabständen Positionen berechnen, die die einzelnen Achsen anpeilen sollen. Dazu gehört auch die Angabe wie schnell die Bewegungen sein sollen und wie die Maschine beschleunigt. Der Bahnplaner erzeugt also einen virtuellen Punkt, der im Raum auf definierter Bahn wandert - eigentlich noch ein Bisschen mehr: In der Robotik spricht man nicht zwingend von einer "Position" sondern von einer "Stellung" oder "Pose". Diese enthält auch mindestens eine Richtungsangabe, denn die Maschine oder der Roboter "hält" ein Werkzeug, mit dem er etwas tun soll. Stellen wir uns dieses als einen Bleistift vor, so ist die Spitze des Bleistifts der wandernde Punkt, und um diesen Punkt wird der Bleistift in die richtige Richting gedreht. Uns ist dabei erstmal egal wie stark sich der Roboter dafür verrenken muss.

Nachdem (in jedem Takt) eine neue Pose ermittelt ist, muss der Planer die Achsen X,Y und Z sowie die Rotationsachsen A, B und C in "Motorstellungen" umrechnen. (A, B und C sind dabei die Rotationen um X, Y und Z - diese Schreibweise wird oft bei CNC-Maschinen verwendet). Dazu dient ein kinematisches Modell, das von Maschine zu Maschine unterschiedlich ist. Bei der CNC-Fräse daheim mag das einfach sein, denn die X-Achse der Maschine entspricht der wirklichen X-Achse, ebenso stimmen Y und Z überein. A,B,C gibt es oft gar nicht (das stimmt nicht ganz, weil der Dremel nach unten zeigt und daher die A-Achse theoretisch einen Winkel von konstant 180º hat). Bei einem Roboterarm sieht das anders aus. Hier werden fröhlich Matritzen multipliziert, um das Modell zu erhalten, und die Wörter Sinus/Cosinus kommen oft vor. Wichtig am kinematischen Modell ist, dass es eine Funktion für die Rechnung von den Motorpositionen ("joint position") zur Pose und auch eine Rückrechnung gibt ("forward kinematics" und "inverse kinematics" - es gibt neben der Kinematik auch noch die Dynamik, und diese schneiden wir hier gar nicht erst an).

Bei Maschinen kommen oft mehrere Bahngeneratorkonzepte zusammen: Das beschriebene Planerprinzip bezieht sich auf "vollautomatische" Bewegungen, jedoch gibt es auch Planer für die einzelnen Maschinenachsen, für den Joystickbetrieb oder für kleine Positionskorrekturen. Es ist normalerweise immer nur einer davon aktiv.

Weitere Aspekte, die oft in Bahnplanern eingebaut sind:

  • Auxiliary axes: "Hilfsachsen": Neben den Hauptachsen X,Y,Z,A,B,C kann eine Maschine (beliebig viele) Hilfsachsen haben. Diese können entweder unabhängig vom Bahngenerator angesteuert oder in den Bahnplaner integriert werden. Im letzteren Fall hat der Planer etwas mehr zu rechnen, der Vorteil davon ist aber, dass alle Achsen immer eine synchrone Bewegung durchführen. D.h. die Hilfsachsen starten und stoppen zum selben Zeitpunkt wie die Hauptachsen. Weiterhin passen die Positionen aller Achsen immer zueinander, d.h. sie sind in Relation immer an derselben Stelle zum selben Zeitpunkt. Das beugt Kollisionen vor. Die ersten drei linearen Hilfsachsen werden meist U,V,W genannt, wobei U in X-Richtung verläuft, V in Y und W in Z. Bei Rotationsachsen gehen die Bezeichnungen von Maschinenherstellern auseinander.

  • Blending: "Kurvenschneiden": Oft muss die Maschine einfach nur möglichst schnell die Position wechseln, um dann mit der Bearbeitung weiter zu machen. Bei diesen Bewegungen kommt es nicht auf Genauigkeit an, sondern auf Schnelligkeit. Im CNC-Protokoll gibt es dafür extra den G0 (rapid move)-Befehl. Man erlaubt dem Bahnplaner dann eine Überschleiftoleranz, woraus er die Bahn und auch Geschwindigkeiten optimieren kann, um möglichst schnell von A nach B zu kommen.

  • Override: "Erstmal langsam, bitte": Override ist eine Art prozentuale Geschwindigkeitsbegrenzung (gilt evtl. auch für Beschleunigungen), z.B. mit einem Drehknopf am Joystick. Wenn Maschinen eingelernt werden, kann Vieles schief gehen - vor allem wenn etwas massives im Weg ist. Da sich die Maschinen im Automatikmodus oft so schnell bewegen, dass kein Mensch mehr reagieren kann, dreht man die Geschwindikgeit erstmal herunter und prüft, ob alles richtig ist. Danach kann es mit Vollgas losgehen.

  • I/O signal synchronisation: "An-aus": Der Zustand von digitalen Ausgabekanälen kann mit bestimmten Bewegungsabläufen verknüpft sein. Bei CNC-Fräsen kann der Dremel oder das Kühlwasser ein-und ausgeschaltet werden. Bei Lasern ist es z.B. die AOM (akustisch-optischer Modulator=Stahl-Ein-/Ausschalter). Bei einer Messmaschine sind Triggersignale für die Sensoren wichtig. Es kann praktisch alles sein. Neben digitalen Ausgängen können auch analoge Werte ausgegegeben werden, z.B. in Abhängigkeit der Geschwindigkeit oder Beschleunigung.

  • Velocity synchronisation: Hier geht es darum die Bahngeschwindigkeit abhängig von einem externen analogen Signal dynamisch anzupassen. Anwendungen davon haben oftmals damit zu tun, langamer zu fahren, wenn das Werkzeug nicht mehr nachkommt. Bei einer CNC-Fräse muss der Fräskopf eine Mindestgeschwindigkeit haben, um das Werkstück ordentlich "zu zerhackstückeln", allerdings wird er mit zunehmender Belastung immer langsamer. Die Belastung hängt wirderum von der Geschwindigkeit der Bahn ab - je langsamer die Maschine fährt, desto weniger Belastung. Eine Lösung wäre natürlich von Anfang an sehr langsam zu fahren, das ist aber reine Zeitverschwendung. Abgesehen davon gibt es optimierte Einstellungen zwischen Fräskopfgeschwindigkeit und Maschinengeschwindigkeit. Eine bessere Lösung ist daher, am Fräskopf einen Geschwindigkeitssensor anzubringen und die Bahngeschwindigkeit damit dynamisch anzupassen. Ein anderes Beispiel ist ein ABS-Drucker (siehe RepRap). Hier kann der Extruder (Heizelement mit Spritzdüse) stocken oder nicht mehr nachkommen. Ähnlich kann es beim Schweißen zugehen.

  • Position synchronisation: Hierbei geht es darum, dass die Maschine auf ihrer Bahn eine ganz bestimmte Position einnimmt, und zwar abhängig von einem externen Signal. Es ist mehr als nur ein "Hinfahren" zu einer Position, eher ein Nachregeln der Position, d.h innerhalb der gegebenen Beschleunigungs- und Geschwindigkeitsbegrenzungen versucht die Maschine so schnell wie möglich auf eine Stelle ihrer Bahn zu kommen, die dem externen Signal entspricht. Sie darf auch zurückfahren (im Gegensatz zur Geschwindigleitssynchronisation). Ein gutes Beispiel ist wieder bei CNC-Maschinen zu finden. Diese können mit entsprechenden Werkzeugen ein Loch bohren und gleichzeitig ein Innengewinde in das gebohrte Loch schneiden. Dabei wird erst mit der Spitze des Werkzeugs mit schneller Fräskopfgeschwindigkeit gebohrt. Danach wird der Dremel ausgeschaltet und der Bohrkopf so weit in das Loch hineingefahren, bis der Gewindeschneider die Oberfläche des Werkstücks berührt. Nun kommt die Positionssynchronisation ins Spiel: Der Gewindeschneider muss genau so schnell in das Werkstück getrieben werden wie er sich dreht, denn sonst bricht er ab oder die Maschine stoppt, weil die Motoren nicht genug Kraft aufbringen können. Dazu ist am Dremel ein Positionssensor angebracht, und die Position wird zusammen mit einer Skalierung (der Steigung des Gewindes) an den Bahngenerator übergeben. Dieser fährt dann synchron zur Dremelposition.

  • Interpolation: Es ist eigentlich keine Sache des Bahngenerators, aber eng damit verknüpft. Einen neuen Bahnpunkt zu berechnen kostet definitiv ein wenig Zeit - abhängig vom kinematischen Modell und der Prozessorleistung zu lange, um die Taktung einhalten zu können (das ist der wirklich kritische Fall) oder dem (Computer-)System Zeit für andere Aufgaben zu lassen. Eine Maschinensoftware besteht nicht nur aus dem Echtzeitsystem, sondern auch aus einer Nutzerschnittstelle (egal ob graphisch oder nur einer Netzwerkanbindung). Das Problem besteht darin, dass die Motorregler regelmäßig ihre neuen Sollpositionen haben wollen. Greift man oft auf Interpolation zurück: Man berechnet nur alle N Taktzyklen eine neue Pose inklusive Motorpositionen und generiert dazwischen mit eimen schnell gerechneten Algorithmus interpolierte Positionen. Das spart Rechenzeit, hat aber auch Nachteile im Bezug auf die Synchronisation.

  • Adaptive trajectory: Hier geht die normale Bahnplanung in eine hohe Integration über, bei der durch externe Angaben die Bahn vollkommen neu berechnet oder angepasst wird. Bei Messmaschinen dient dies z.B. automatischer Konturverfolgung.

Im Kern funktioniert der hier gezeigte Planer für koordinierte Bewegungen mit linearen Segnemtrepresentationen. Für jedes Segment wird mit der dafür entsprechenden Funktion (ein Mal) die lineare Gesamtlänge bestimmt, und auf dieser Länge mit den angegebenen Daten (in jedem Takt) ein Beschleunigungs- und Geschwindigkeitsprofil für die Restlänge erzeugt. Damit ergibt sich in jedem Takt eine neue lineare "Fortschrittsposition", die wieder auf die Achsen der Bahn umgerechnet wird. Die Rechnungen für dieses Prinzip sind einfach und auch mit kleinen Prozessoren schnell berechnet. Um diesen Kern sind weitere Funktionen implementiert, die im "praktischen Einsatz" wichtig sind.