motiviert durch diesen Fred möchte ich den Aufbau von mach4 erläutern. Denn nicht alles, was bei der Verwendung von mach4 schief gehen kann, liegt auch an artsoft.
Deshalb sollte man sich mit dem Aufbau und der Funktionsweise von mach4 vertraut machen, bevor man mach4 als fehlerhaft bezeichnet (nicht dass mach4 fehlerfrei wäre, aber das ist eine andere Geschichte).
Auch wenn mach3 und mach4 das Anwendungskonzept teilen, ist der Unterschied zwischen mach3 und mach4 ungefär so, als würde man einen Golf GTI erster Generation mit einem aktuellen Maserati vergleichen. Beides sind Autos und beide werden von einem Verbrennungsmotor angetrieben. Schaut man genauer hin, werden sich kaum Ähnlichkeiten zeigen.
mach3 und mach4 sind beides CNC-Steuerungen und beide erlaube es dem Anwender, sich seine eigene Oberfläche zu erstellen (meiner Ansicht nach der Punkt, der die Anwendungen so attraktiv macht).
mach3 verwendet einen Basic-Dialekt für Benutzer-Erweiterungen, während mach4 auf lua setzt.
mach3 benötigt eine separate Anwendung, um eine Oberfläche zu bearbeiten. Bester (so rein subjektiv) Screen-Designer ist MachScreen von Klaus Dietz - und das ist (meiner Ansicht nach) der einzige Vorteil von mach3: Klaus Dietz ist ein sehr hilfsbereiter Mensch, der auch schnell in der Fehlerbehebung ist. Wenn man ihm also einen Fehler meldet, dauert es nicht lange, bis der behoben ist.
Das sieht bei mach4 leider ganz anders aus.
Bei mach4 ist der screen-Designer Teil der Anwendung. Kommt also von artsoft.
So wie es sich mir darstellt, wird die Entwicklung von mach4 durch industrielle Kunden voran getrieben. Das Produkt für die Hobbyanwender ist mehr oder weniger ein Abfallprodukt der Industrievariante. Industrielle Kunden setzen sich nicht hin und ändern sich selbst die Oberfläche. Dort heißt es dann, so soll die Oberfläche für uns aussehen, was kostet uns das?
Damit ist die Motivation für artsoft, Fehler im Screen-Designer zu beheben klein bis eben nicht vorhanden. Auch wenn sie noch so oft beteuern, dass ihnen die Hobbykunden wichtig sind. Die Realität spricht eine andere Sprache.
Trotzdem halte ich mach4 für ein phantastisches Produkt!
Und was meiner Ansicht nach die Waagschale völlig zu Gunsten von mach4 kippt: bei mach3 gibt es viele "Vielleicht"-Funktionen, was bedeutet, dass ein Knopf mal funktionieren kann und ein anderes Mal eben nicht funktioniert.
Sowas gibt es bei mach4 nicht. Die Anwendung ist zuverlässig. Ein Fehler ist reproduzierbar und etwas was funktioniert, funktioniert immer.
Bei der Installation gibt es nicht viele Anpassungsmöglichkeiten. Einfach alles installieren und nachher aussieben, bzw. aufräumen.
Unter dem Verzeichnis "Mach4Hobby" gibt es div. Unterverzeichnisse.
Das wichtigste ist das Verzeichnis "Profiles" - denn das Profil ist Aufrufparameter für mach4.
Unter Profiles/<Profilbezeichnung> werden die Anwendungseinstellungen gespeichert.
In "FixtureTables" liegen die Werte für die div. Koordinatensysteme (G54 und Co).
Unter "Macros" können M## Befehlen eigene Makros zugeordnet werden, wie z.B. M6 für einen Wechsler ...
In "ToolLife" werden Einsatzzeiten der Werkzeuge verwaltet (nicht in der Hobby-Variante verfügbar).
In "ToolTables" liegt die Liste der Werkzeuge (sollte nicht direkt bearbeitet werden. mach4 bietet eine Oberfläche zur Verwaltung der Werkzeuge an).
Im Profil-Verzeichnis gibt es eine Datei "Machine.ini". Auch diese Datei sollte als nicht-editierbar angesehen werden. Sie enthält Einstellungen für mach4 und wird beim Start gelesen und beim Beenden geschrieben.
Als reine Textdatei kann sie aber problemlos gelesen werden.
Die ersten beiden Zeilen sind die wichtigsten:
Code: Alles auswählen
Profile=Mach4_fuer_mich
Screen=meinScreen01.set
Die Screen-Datei ist ein Zip-Archiv, bei dem die Endung "zip" gegen "set" getauscht wurde. Sie kann also mit jedem Werkzeug für Zip-Archive angeschaut werden.
Der Aufbau ist einfach: es gibt eine Datei "screen.xml" und ein Verzeichnis "images". In images liegen alle Bilder, die in der Oberfläche verwendet werden und screen.xml ist eine Textdatei, die mit gängigen XML-Editoren angeschaut werden kann.
mach4 kann in den Screen-Designer-Modus wechseln und schreibt dann diese Screen-Datei.
Schließlich ist noch das Verzeichnis "Mach4Hobby/Lang" interessant. Hier liegen die übersetzten Texte nach dem gettext-Standard. Unter "Mach4Hobby/Lang/de" finden sich die deutschen Texte. Wer also irgendwelche Texte ändern will, sollte hier schauen. Dateien mit der Endung "po" sind die editierbaren Texte, die Dateien mit Endung "mo" sind die komprimierten Übersetzungen, die mach4 verwendet.
Leider ist die Verwendung von gettext in mach4 nicht einheitlich und so kommt es vor, dass viele Texte direkt in der screen.xml Datei stehen, oder direkt in Makros fest einprogrammiert sind.
Was also ist mach4?
mach4 ist eine kleine unsichtbare Anwendung, welche eine Oberfläche erzeugen und mit Funktion belegen kann.
Hauptfunktionalität ist die Abarbeitung von GCode-Dateien, wie sie beispielsweise von einem CAM erzeugt werden.
GCode kann aus Bewegungsbefehlen und Konfigurationsbefehlen bestehen. Erstere bewegen das Werkzeug, letztere verändern die Einstellung der Maschine.
Viele Funktionen verändern den Maschinenstatus und viele Funktionen hängen vom Maschinenstatus ab, was bedeutet, dass sie nur in einem speziellen Maschinenstatus funktionieren.
Um aus Bewegungsbefehlen (und ggf. aus Konfigurationsbefehlen) die elektrischen Impulse zu erzeugen, die letztlich die Motoren bewegen (oder auch Relais schalten), benutzt mach4 andere, die die (Schritt-)Signale erzeugen. Die Schnittstelle dazu nennt sich Plugin.
Im einfachsten Falle wird das Plugin für die parallele Schnittstelle verwendet. Bei diesem Plugin läuft die Schritterzeugung im PC ab. Die parallele Schnittstelle ist nur mäßig schnell, weshalb mit diesem Plugin keine Höchstleistungen möglich sind.
Alle anderen Plugins erfordern zusätzliche Hardware, die über USB oder Ethernet angesteuert wird. Bei diesen Varianten wird die Schritterzeugung an die externe Hardware ausgelagert. Um den Vorteil der externen Hardware auszureizen, wird zu der Steuerungshardware nur die Bahninformation (des Werkzeug-Verfahrweges) übermittelt. Die Steuerungshardware erzeugt aus den Bahninformationen dann die Motorimpulse.
Dieser Verarbeitungsweg zeigt auch das Problem mit günstiger Steuerungshardware, wie z.B. dem ESS:
da mach4 nur ganze Bahnen an die Steuerung übermittelt, kann während der Abarbeitung der Bahn keine Beeinflussung durch mach4 erfolgen. Das bedeutet, dass Geschwindigkeitsregler, die an mach4 angeschlossen sind, die Bahn nicht während der Fahrt beeinflussen können.
Die Geschwindigkeitsregelung während der Fahrt funktioniert nur bei Steuerungen, die einen Eingang für die Geschwindigkeitsregler haben und diese selbst auswerten. ESS hat nur eine digitale Schnittstelle, kann dies also nicht bieten. Die meisten Steuerungen für's Hobbybudget können dies nicht.
Zu Pokeys gibt es widersprüchliche Aussagen, weshalb ich hier keine definitive Aussage machen kann.
Laut artsoft-Entwickler gibt es Steuerungen von Galil und Vital Systems, die Geschwindigkeitsregulierung während der Bewegung erlauben. Bei Galil muss man wohl den Kontroller noch selbst programmieren, um diese Funktionalität zu erreichen.
Wie auch immer - beide Varianten liegen preislich deutlich im 4stelligen Bereich - meiner Ansicht nach damit außerhalb eines üblichen Hobbybudgets.
interner Aufbau:
mach4 ist eine multithread-Anwendung, was bedeutet, dass die Anwendung aus mehreren Teilen besteht, die kwasi gleichzeitig laufen. Das hat natürlich Auswirkung auf die Makroprogrammierung.
Unter "Mach4Hobby/Modules" liegen Anwendungsteile/Bibliotheken, die von mach4 verwendet werden. So eine Bibliothek kann viele unabhängige Funktionen enthalten und es ist nicht vorhersehbar, in welchem Thread die Funktion mal zur Anwendung kommt. Wenn also Daten zwischen Funktionen ausgetauscht werden sollen, müssen die zentral abgelegt werden. mach4 bietet dazu Funktionen an (siehe Programmierhandbuch). Wenn man dran denkt, dann klappt es auch mit dem Nachbar
Schauen wir mal etwas genauer in die Datei screen.xml:
Anfangs kommen einige Property-Einträge:
"Refresh Interval" bezieht sich auf die Oberfläche und "PLC Interval" auf die interne Verarbeitung von Signalen. Die Einheit ist Millisekunde, d.h. nach Vorgabe laufen die Teile alle 50 Millisekunden einmal.
Schnellste Signalverarbeitung ist demnach ein Durchlauf pro Millisekunde - was natürlich bedeutet, dass die Laufzeit des "PLC Script" unter einer Millisekunde liegen muss.
Nach den Property-Einträgen kommen die Event-Einträge. Event heißt Ereignis.
Das erste Ereignis ist das Erzeugen des Bildschirmes Screen Load Script.
Dieses Skript wird beim Start der Anwendung einmalig ausgeführt und zwar im Oberflächen-Thread. Globale Variablen die hier geladen und vorbelegt werden, sind später für die Funktionen der Oberflächen-Elemente verfügbar.
Zweites Ereignis-Skript ist das Zerstören und Entladen des Bildschirmes Screen Unload Script, wird also beim Beenden von mach4 ausgeführt. In diesem Skript können Zustände für den nächsten Anwendungsstart gesichert werden. Benutzt man die Funktionen von mach4 um Register als globale Variable zu verwenden, dann kümmert sich mach4 um das Speichern und Wiederherstellen der Register-Einträge.
Drittes Ereignis-Skript nennt sich PLC Script und dient der Verarbeitung von Signalen. Wie bereits erwähnt wird dieses Skript zyklisch in einem eigenen Thread ausgeführt (Vorgabe: alle 50ms einmal). Globale Variablen aus dem "Screen Load Script" sind verfügbar.
Mit mcPage beginnt die Beschreibung der Oberfläche. Wer sich also über die Nickligkeiten des Screen-Editors grün und blau ärgert, kann auch einen XML-Editor verwenden.
Wer sorgfältig arbeitet, kann dies auch mit einem ganz normalen Editor tun. Ich verwende z.B. vi und habe keine Probleme mit der screen-Datei.
Wer ein Werkzeug hat, welches Zip-Archive bearbeiten kann, kann die screen.set Datei auch damit bearbeiten. Beispielsweise könnte mit solchen Werkzeugen viele Bilder gleichzeitig ins "image"-Verzeichnis kopiert werden oder die screen.xml Datei kann überschrieben werden.
Muss ich erwähnen, dass mach4 für eine geänderte Screen.set Datei neu gestartet werden muss?
Was tun, wenn's nicht läuft wie gewünscht?
Als erstes mal nachdenken - in welche Ecke gehört der Fehler, bzw. wer ist an dieser Stelle verantwortlich?
Hängt es mit der Oberfläche, bzw. einer Benutzeraktion zusammen, wäre die Screen.set Datei die erste Anlaufstelle.
Hängt es mit Signalen zusammen - dann erstmal schauen, wie die Signale aus Sicht von mach4 aussehen (es gibt eine Übersichtsseite mit allen Signalen).
Kommt ein geändertes Signal nicht an der Hardware an, könnte es auch an der Einstellung im Plugin liegen. Also hier mal nach dem Rechten schauen.
Wenn man nichts findet, was weiter helfen könnte, wäre die erste Anlaufstelle das mach4 Support Forum von artsoft. Das ist ein internationales Forum, also Englisch als Sprache.
Alternativ hier eine Anfrage starten. Dabei möglichst nicht mit Schuldzuweisungen starten (mach4 ist fehlerhaft), sondern das Problem so gut wie möglich beschreiben. Dann ist die Motivation zum Helfen auch größer.
Vielleicht hilft dem einem oder anderen mein Gesabbel ja.
Gruß Reinhard