en to de translation catalogue (17486 entries)

note: vim: set syntax=asciidoc: type: Attribute :lang:
en: en
de: de

note: type: Title =
en: README for Document Writers
de: INFORMATIONEN zur Erstellung der Dokumentation

note: type: Title ==
en: Adding files
de: Dateien hinzufügen

note: type: Plain text
en: The src/Submakefile, src/docs.xml, docs/po4a.cfg and src/index.tmpl files must be updated to add a new document file.
de: Die Dateien src/Submakefile, src/docs.xml, docs/po4a.cfg und src/index.tmpl müssen aktualisiert werden, um ein neues Dokument hinzuzufügen.

note: type: Plain text
en: The relevant pdf.adoc must be updated to include the new document in the pdf documentation. e.g. if a new document belongs in the Master Documentation then an entry is required in src/Master_Documentation.adoc.
de: Die entsprechende pdf.adoc muss aktualisiert werden, um das neue Dokument in die pdf-Dokumentation aufzunehmen. Wenn z. B. ein neues Dokument in die Master-Dokumentation gehört, ist ein Eintrag in src/Master_Documentation.adoc erforderlich.

note: type: Plain text
en: docs.xml is used to create the "previous" and "next" buttons at the top of each individual HTML document. It should generally match the order of the index.tmpl.
de: docs.xml wird verwendet, um die Schaltflächen "Zurück" und "Weiter" oben in jedem einzelnen HTML-Dokument zu erstellen. Es sollte im Allgemeinen mit der Reihenfolge der index.tmpl übereinstimmen.

note: type: Plain text
en: po4a.cfg is used to map source files to translated documentation when generating translated files using the files in docs/po/.
de: po4a.cfg wird verwendet, um Quelldateien der übersetzten Dokumentation zuzuordnen, wenn übersetzte Dateien unter Verwendung der Dateien in docs/po/ erzeugt werden.

note: type: Title ==
en: Notes on LinuxCNC documentation
de: Hinweise zur LinuxCNC-Dokumentation

note: type: Plain text
en: The main LinuxCNC makefile can optionally build the documentation and other files in this directory tree. Use "--enable-build-documentation" when invoking src/configure, and run "make" from src.
de: Das LinuxCNC-Haupt-Makefile kann optional die Dokumentation und andere Dateien in diesem Verzeichnisbaum erstellen. Verwenden Sie "--enable-build-documentation" beim Aufruf von src/configure, und führen Sie "make" von src aus.

note: type: Title ==
en: Notes about drawings
de: Hinweise zu Zeichnungen

note: type: Plain text
en: Many of the documents include drawings. Most of them originally created using the non-free Windows app EasyCAD and then exported to .eps files and included in the the docs. The original 'source' files (EasyCad .FC7 format) were not usable on a free system.  To fix this problem, all of the source files have been converted to .dxf files, and added to Git. The .dxf files can be edited with multiple CAD packages, and serve as the 'source' files for future changes to the drawings.  They can be converted from .dxf to postscript (not .eps) using QCAD, which is available for many systems, see link:https://repology.org/project/qcad/[here].
de: Viele der Dokumente enthalten Zeichnungen. Die meisten von ihnen wurden ursprünglich mit der unfreien Windows-Anwendung EasyCAD erstellt und dann in .eps-Dateien exportiert und in die Dokumente aufgenommen. Die ursprünglichen 'Quell' Dateien (EasyCad .FC7 Format) waren auf einem freien System nicht verwendbar.  Um dieses Problem zu beheben, wurden alle Quelldateien in .dxf-Dateien konvertiert und zu Git hinzugefügt. Die .dxf-Dateien können mit mehreren CAD-Paketen bearbeitet werden und dienen als 'Quell' Dateien für zukünftige Änderungen an den Zeichnungen.  Sie können von .dxf in Postscript (nicht .eps) mit QCAD konvertiert werden, das für viele Systeme verfügbar ist, siehe link:https://repology.org/project/qcad/[hier].

note: type: Plain text
en: Unfortunately, EasyCAD (and AutoCAD) support a number of entities that QCAD does not import properly. Including some that were used in the LinuxCNC drawings: filled circles, filled arrowheads, non-zero width lines, and dashed lines.  Qcad renders filled circles as hollow, it renders all lines the same width, and it renders dashed lines as solid, unless you tell it to do otherwise.  All of these things make the drawings less attractive, but are somewhat acceptable.  However, Qcad doesn't import filled arrowheads at all, which seriously hurts the drawings.  So EasyCad was used to convert the arrowheads to hollow before exporting them.  Hollow arrowheads don't look as nice as solid ones, but at least they are visible.
de: Leider unterstützt EasyCAD (und AutoCAD) eine Reihe von Elementen, die QCAD nicht richtig importiert. Dazu gehören einige, die in den LinuxCNC Zeichnungen verwendet wurden: gefüllte Kreise, gefüllte Pfeilspitzen, Linien mit einer Breite ungleich Null und gestrichelte Linien.  QCAD rendert gefüllte Kreise als hohl, es rendert alle Linien mit der gleichen Breite und es rendert gestrichelte Linien als solide, es sei denn, Sie sagen ihm, etwas anderes zu tun.  All diese Dinge machen die Zeichnungen weniger attraktiv, sind aber einigermaßen akzeptabel.  Allerdings importiert Qcad überhaupt keine gefüllten Pfeilspitzen, was die Zeichnungen erheblich beeinträchtigt.  Daher wurde EasyCad verwendet, um die Pfeilspitzen vor dem Exportieren in hohle Pfeilspitzen umzuwandeln.  Hohle Pfeilspitzen sehen zwar nicht so schön aus wie gefüllte, aber wenigstens sind sie sichtbar.

note: type: Plain text
en: Once exported, the arrowheads lose their relationship with the line they are on, and need to be moved and/or rotated manually if the line is moved.  I believe that even if they were imported back into EasyCad, the line/arrow connection would remain broken. New lines with arrowheads can be created in Qcad with the 'leader' dimension tool.
de: Nach dem Exportieren verlieren die Pfeilspitzen ihre Beziehung zu der Linie, auf der sie sich befinden und müssen manuell verschoben und/oder gedreht werden, wenn die Linie verschoben wird.  Ich glaube, dass selbst wenn sie wieder in EasyCad importiert würden, die Verbindung zwischen Linie und Pfeil unterbrochen bleiben würde. Neue Linien mit Pfeilspitzen können in Qcad mit dem 'leader' dimension Werkzeug erstellt werden.

note: type: Plain text
en: Because the original EPS files with filled lines and circles, wide lines, and dashed lines look so much nicer, they will remain in Git and should probably be used for the documents, however if they become inaccurate because of changes in the software, we will have to edit the DXF files, generate PostScript, and use the less pretty, but factually correct images.
de: Da die ursprünglichen EPS-Dateien mit gefüllten Linien und Kreisen, breiten Linien und gestrichelten Linien so viel schöner aussehen, werden sie in Git verbleiben und sollten wahrscheinlich für die Dokumente verwendet werden. Wenn sie jedoch aufgrund von Änderungen in der Software ungenau werden, müssen wir die DXF-Dateien bearbeiten, PostScript erzeugen und die weniger schönen, aber sachlich korrekten Bilder verwenden.

note: type: Plain text
en: Since QCAD itself is a GUI application, the DXF to PostScript conversion involves going clicky clicky, and can't be automated and made part of the makefile. Also, not everyone will have QCAD installed on their system.  Therefore, both the DXF files and the resulting postscript files are stored in Git, and the normal documentation build process only uses the PostScript files. If/when the DXF files are edited, they have to be converted to PostScript manually as follows:
de: Da QCAD selbst eine GUI-Anwendung ist, erfordert die DXF-zu-PostScript-Konvertierung ein "clicky clicky" und kann nicht automatisiert und in das Makefile integriert werden. Außerdem wird nicht jeder QCAD auf seinem System installiert haben.  Daher werden sowohl die DXF-Dateien als auch die resultierenden Postscript-Dateien in Git gespeichert, und der normale Dokumentationserstellungsprozess verwendet nur die PostScript-Dateien. Wenn die DXF-Dateien bearbeitet werden, müssen sie wie folgt manuell in PostScript konvertiert werden:

note: type: Plain text
en: Start QCAD
de: QCAD starten

note: type: Plain text
en: File → Open → choose DXF file (the drawing appears in window)
de: Datei → Öffnen → DXF-Datei auswählen (die Zeichnung erscheint im Fenster)

note: type: Plain text
en: Edit → Current Drawing Preferences → Paper
    Set:
de: Bearbeiten → Aktuelle Zeichnungsvorgaben → Papier
    Einstellen:

note: type: Plain text
en: Paper size to "Letter",
de: Papierformat auf "Letter",

note: type: Plain text
en: Orientation to "Landscape" or Portrait", depending on the aspect ratio of the drawing.
de: Ausrichtung auf "Querformat" oder Hochformat", je nach Seitenverhältnis der Zeichnung.

note: type: Plain text
en: File → Print Preview
    Click the "Fit to page" button on the toolbar (last button on the right - at least on version 2.0.4.0 of QCAD).
de: Datei → Druckvorschau +
    Klicken Sie auf den "An die Seite anpassen" Button in der Werkzeugleiste (letzter Button auf der rechten Seite - zumindest in Version 2.0.4.0 von QCAD).

note: type: Plain text
en: File → Print
de: Datei → Drucken

note: type: Plain text
en: Select "Print to file".
de: Wählen Sie "In Datei drucken".

note: type: Plain text
en: Set the path to point to the same directory as the source .dxf file.
de: Legen Sie den Pfad so fest, dass er auf das gleiche Verzeichnis wie die .dxf-Quelldatei verweist.

note: type: Plain text
en: Set the name to be the same as the source file, but .ps instead of .dxf.
de: Legen Sie den gleichen Namen wie die Quelldatei fest, aber .ps statt .dxf.

note: type: Plain text
en: Click "OK".
de: "OK" klicken.

note: type: Plain text
en: The makers of QCAD also have a GPL'ed format converter called vec2web, which can do dxf to postscript conversion from the command-line. It is not available as a pre-compiled package, but available in source form from https://github.com/Seablade/vec2web.
de: Die Macher von QCAD haben auch einen GPL'ed Formatkonverter namens vec2web, der die Konvertierung von dxf nach Postscript über die Kommandozeile durchführen kann. Er ist nicht als vorkompiliertes Paket verfügbar, sondern im Quellcode unter https://github.com/Seablade/vec2web.

note: type: Plain text
en: vec2web depends on Qt 3 development packages to compile, so it should not be a dependency for building the LinuxCNC docs. But if configure can detect it, it would be nice to automate conversion from DXF to PS for systems where vec2web is installed.
de: vec2web benötigt Qt 3 Entwicklungspakete zu kompilieren, so sollte es nicht eine Abhängigkeit für den Aufbau der LinuxCNC Docs sein. Aber wenn configure es erkennen kann, wäre es schön, die Konvertierung von DXF zu PS für solche Systeme zu automatisieren, auf denen vec2web installiert ist.

note: type: Plain text
en: To build vec2web, apt-get install qt3-dev-tools.  The vec2web tarball contains a build script, but before you run it you must set $QTDIR to point at your Qt 3 installation — in my case it was:
de: Um vec2web zu bauen, installieren Sie apt-get qt3-dev-tools.  Der vec2web-Tarball enthält ein Build-Skript, aber bevor Sie es ausführen, müssen Sie $QTDIR so einstellen, dass es auf Ihre Qt 3-Installation zeigt - in meinem Fall geschah dies durch:

note: type: Plain text
en: Then run the build script:
de: Führen Sie dann das Build-Skript aus:

note: type: Plain text
en: There is no install step, the executable gets dumped into the build directory.  There is also no man page, but running it with no args prints the following usage instructions:
de: Es gibt keinen Installationsschritt, die ausführbare Datei wird in das Build-Verzeichnis abgelegt. Es gibt auch keine Manpage, aber wenn Sie sie ohne Argumente ausführen, werden die folgenden Verwendungsanweisungen ausgegeben:

note: type: Plain text
en: ```
    Usage: vec2web <input file> <output file> [options]
    Where options are:
            -x #      maximum x size for the output bitmap in pixel
            -y #      maximum y size for the output bitmap in pixel
            -b        black/white instead of using colors
de: ```
    Verwendung: vec2web <input file> <output file> [options]
    Die Optionen sind:
            -x #      maximale x-Größe für die Ausgabe-Bitmap in Pixel
            -y #      maximale y-Größe für die Ausgabe-Bitmap in Pixel
            -b        Schwarz/Weiß anstelle von Farben

note: type: Plain text
en: [l|p]  orientation for PS output (landscape or portrait)
de: [l|p] Ausrichtung für PS-Ausgabe (Quer- oder Hochformat)

note: type: Plain text
en: -s ..     page size for PS output (A4, A5)
de: -s ... Seitengröße für PS-Ausgabe (A4, A5)

note: type: Plain text
en: e.g. vec2web drawing.dxf drawing.png
            converts drawing.dxf to a portable network graphic
    ```
de: z.B. vec2web Zeichnung.dxf Zeichnung.png
            wandelt drawing.dxf in eine portable Netzgrafik um
    ```

note: type: Plain text
en: Initial attempts to use vec2web resulted in the graphical parts of the drawing being converted, but all text was lost. I don't know if vec2web is worth spending much more time on, however, it _is_ GPLv2, and it includes a library for reading DXF files, which might be worthwhile to the LinuxCNC community.
de: Anfängliche Versuche, vec2web zu verwenden, führten dazu, dass die grafischen Teile der Zeichnung konvertiert wurden, aber der gesamte Text verloren ging. Ich weiß nicht, ob vec2web es wert ist, viel mehr Zeit darauf zu verwenden, aber es _ist_ GPLv2, und es enthält eine Bibliothek zum Lesen von DXF-Dateien, welche für die LinuxCNC-Gemeinschaft von Interesse sein könnte.

note: type: Title ===
en: Drawings from QCAD
de: Zeichnungen aus QCAD

note: type: Plain text
en: Save as .dxf to the same directory as the image.
de: Speichern als .dxf im gleichen Verzeichnis wie das Bild.

note: type: Plain text
en: Export the image as 480 x 480 Resolution Auto .png.
de: Exportieren Sie das Bild als 480 x 480 Auflösung Auto .png.

note: type: Title ==
en: Provide translated documentation
de: Bereitstellung übersetzter Dokumentation

note: type: Plain text
en: The complete set of documents are translated using gettext PO files using the https://po4a.alioth.debian.org/[po4a]po4a system.  If you want to contribute a translation, please use the link:https://hosted.weblate.org/projects/linuxcnc/[web based translation editor Weblate].  Registered Weblate users can translate directly, while non-registered users can propose translations for others to review.  Translations are done paragraph by paragraph.  If there is no existing translation of the documentation to your language, you can add it in the Weblate interface.
de: Der gesamte Satz von Dokumenten wird mit Hilfe von gettext PO-Dateien unter Verwendung des https://po4a.alioth.debian.org/[po4a]po4a-Systems übersetzt.  Wenn Sie eine Übersetzung beisteuern möchten, verwenden Sie bitte den Link:https://hosted.weblate.org/projects/linuxcnc/[webbasierter Übersetzungseditor Weblate].  Registrierte Weblate-Benutzer können direkt übersetzen, während nicht registrierte Benutzer Übersetzungen vorschlagen können, die dann von anderen überprüft werden können.  Die Übersetzungen werden absatzweise erstellt.  Wenn es noch keine Übersetzung der Dokumentation in Ihre Sprache gibt, können Sie diese über die Weblate-Schnittstelle hinzufügen.

note: type: Plain text
en: With po4a, the English text is the master document, and each paragraph is translated using gettext, just like the strings in our software.  Some documentation of po4a is available in the https://po4a.alioth.debian.org/man/man7/po4a.7.php[po4a(7)] manpage.  As the po4a support for asciidoc has been rapidly improving since LinuxCNC started using it, based on bug reports from the LinuxCNC community, a very recent version of po4a is needed.  At the moment, at least version 0.67 is needed, available in Debian Bookworm.
de: Bei po4a ist der englische Text das Masterdokument, und jeder Absatz wird mit gettext übersetzt, genau wie die Strings in unserer Software.  Eine Dokumentation von po4a ist in der https://po4a.alioth.debian.org/man/man7/po4a.7.php[po4a(7)] manpage verfügbar.  Da die po4a-Unterstützung für asciidoc sich schnell verbessert hat, seit LinuxCNC es benutzt, basierend auf Fehlerberichten der LinuxCNC-Gemeinschaft, wird eine sehr aktuelle Version von po4a benötigt.  Im Moment wird mindestens die Version 0.67 benötigt, die in Debian Bookworm verfügbar ist.

note: type: Title ===
en: When the master document (english) changes
de: Wenn sich das Masterdokument (englisch) ändert

note: type: Plain text
en: When the master document (english) file has changed, the POT file with the set of translatable strings need to be updated, and the updates need to be propagated into the PO files for each translation.  This can be done using the build system:
de: Wenn sich das Masterdokument (Englisch) geändert hat, muss die POT-Datei mit den übersetzbaren Zeichenfolgen aktualisiert werden, und die Aktualisierungen müssen in die PO-Dateien für jede Übersetzung übertragen werden.  Dies kann mit Hilfe des Build-Systems geschehen:

note: type: Plain text
en: Once this is completed, the files in docs/po/ will be updated, and should be committed into git and pulled into Weblate.
de: Sobald dies abgeschlossen ist, werden die Dateien in docs/po/ aktualisiert und sollten in Git übertragen und in Weblate eingebunden werden.

note: type: Title ===
en: How to add a new translation language
de: Wie man eine neue Sprache hinzufügt

note: type: Plain text
en: Once a new PO files for a fresh translation is added via Weblate, and the translation level raise to a sensible level (for example not 0%), build rules need to be added to use the generated translations to build HTML and PDF editions of the translation.
de: Sobald eine neue PO-Datei für eine neue Übersetzung über Weblate hinzugefügt wurde und die Übersetzungsstufe auf ein vernünftiges Niveau angehoben wurde (z. B. nicht 0%), müssen Build-Regeln hinzugefügt werden, um die generierten Übersetzungen für die Erstellung von HTML- und PDF-Ausgaben der Übersetzung zu verwenden.

note: type: Plain text
en: Add the new language code to the proper place in docs/po4a.cfg.  Update build rules for the new language in `docs/src/Submakefile`.
de: Fügen Sie den neuen Sprachcode an der richtigen Stelle in docs/po4a.cfg ein.  Aktualisieren Sie die Build-Regeln für die neue Sprache in `docs/src/Submakefile`.

note: type: Plain text
en: Edit debian/control.in to add the new linuxcnc-doc-$NEWLANG package.  Add the new doc package to the "or" list of the "Recommends" line of the linuxcnc main package.
de: Bearbeiten Sie debian/control.in, um das neue Paket linuxcnc-doc-$NEWLANG hinzuzufügen.  Fügen Sie das neue doc-Paket zur "or" Liste der "Recommends" Zeile des linuxcnc Hauptpakets hinzu.

note: type: Plain text
en: Add the new language to the list in the DOCS_PACKAGES variable in debian/configure.
de: Fügen Sie die neue Sprache zur Liste in der Variable DOCS_PACKAGES in debian/configure hinzu.

note: type: Plain text
en: If there is a texlive-lang-$NEWLANGUAGE package for your new language, add it to the DOC_DEPENDS variable in debian/configure.
de: Wenn es ein texlive-lang-$NEWLANGUAGE-Paket für Ihre neue Sprache gibt, fügen Sie es der DOC_DEPENDS-Variable in debian/configure hinzu.

note: type: Plain text
en: Add the appropriate `linuxcnc-doc-$NEWLANG.*` files for the new package, probably by copying and editing `debian/linuxcnc-doc-en.*`.
de: Fügen Sie die entsprechenden `linuxcnc-doc-$NEWLANG.*`-Dateien für das neue Paket hinzu, wahrscheinlich durch Kopieren und Bearbeiten von `debian/linuxcnc-doc-de.*`.

note: type: Plain text
en: Test build the packages and verify!
de: Bauen Sie die Pakete, führen Sie die Tests durch und überprüfen Sie sie!

note: type: Title =
en: Build LinuxCNC for "run in place"
de: Bauen Sie LinuxCNC für eine Ausführung ohne Installation

note: type: Title ==
en: Basic Instructions
de: Grundlegende Anweisungen

note: type: Plain text
en: From the repository top level directory:
de: Vom obersten Verzeichnis des Quellcode aus:

note: type: Plain text
en: *Build LinuxCNC* +
de: *LinuxCNC bauen* +

note: type: Plain text
en: Change to source directory
de: Wechsel in das Quellverzeichnis

note: type: Plain text
en: Builds the configure script (uses `configure.in`)
de: Erzeugt das configure-Skript (verwendet `configure.in`)

note: type: Plain text
en: Configure the package for your system
    Running `configure` takes awhile. While running, it prints some messages telling which features it is checking for.
de: Konfigurieren Sie das Paket für Ihr System
    Die Ausführung von `configure` dauert eine Weile. Während es läuft, gibt es einige Meldungen aus, die angeben, auf welche Funktionen es prüft.

note: type: Plain text
en: Remove previous build(s) artifacts
de: Entfernen früherer Build-Artefakte

note: type: Plain text
en: Build/compile the software package
de: Erstellen/Kompilieren des Softwarepakets

note: type: Plain text
en: Set ownership and mode of built files
de: Eigentümerschaft, Zugriffs- aud Ausführrechte der erstellten Dateien festlegen

note: type: Plain text
en: If you're using `csh` on an old version of System V, you might
          need to type `sh ./configure` instead to prevent `csh' from trying
          to execute `configure' itself.
de: Wenn Sie `csh` auf einer alten Version von System V verwenden, müssen Sie möglicherweise
          stattdessen `sh ./configure` eingeben, um zu verhindern, dass `csh' versucht,
          `configure' selbst auszuführen.

note: type: Plain text
en: *Run LinuxCNC* +
de: *LinuxCNC ausführen* +

note: type: Plain text
en: Change back up to top level directory
de: Wechseln Sie zurück in das oberste Verzeichnis

note: type: Plain text
en: Configure shell environment for LinuxCNC commands and Python modules
de: Konfigurieren Sie die Shell-Umgebung für LinuxCNC-Befehle und Python-Module

note: type: Plain text
en: Run LinuxCNC
de: Führen Sie LinuxCNC aus

note: type: Title ==
en: Detailed description
de: Detaillierte Beschreibung

note: type: Title ===
en: Run-time script
de: Skript zum Programmstart

note: type: Plain text
en: The runtime script is called *linuxcnc*, thus allowing you on an installed system to just type `linuxcnc` and get it running.
de: Das Skript zur Ausführung von LinuxCNC heißt *linuxcnc*, so dass Sie auf einem installierten System einfach `linuxcnc` eingeben und es mit allen passend gesetzten Umgebungsvariablen zum Laufen bringen können.

note: type: Plain text
en: On a run-in-place system (e.g. the one you just got out of git), the runscript is `scripts/linuxcnc`.  When you just checked out a fresh copy of LinuxCNC, you'll see there is no `scripts/linuxcnc`, just a `scripts/linuxcnc.in`. By running `configure` that one will get changed to `scripts/linuxcnc`.  `configure` will also replace some default values for your system (folders, paths, etc).
de: Auf einem Run-in-Place-System (z. B. dem, das Sie gerade mit git anlegten), finden Sie das ausführbare Skript `scripts/linuxcnc`. Nur hat eine frisch ausgecheckte lokale Instanz von LinuxCNC nocht nicht dieses scripts/linuxcnc` Datei, Sie finden nur `scripts/linuxcnc.in`. Durch Ausführen von `configure` wird dieses Template zu scripts/linuxcnc`. `configure` wird hierbei einige Standardwerte an Ihr System anpassen (Ordner, Pfade, etc.).

note: type: Title ===
en: Configure script
de: Configure Skript

note: type: Plain text
en: The *`configure`* shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create:
de: Das Shell-Skript *`configure`* versucht, die richtigen Werte für verschiedene systemabhängige Variablen zu ermitteln, die für die Kompilierung benötigt werden. Es verwendet diese Werte zum Erstellen:

note: type: Labeled list
en: `Makefile.inc` file
de: `Makefile.inc` Datei

note: type: Labeled list
en: `config.status` shell script
de: `config.status` shell Skript

note: type: Plain text
en: That you can run in the future to recreate the current configuration;
de: Das Sie zukünftig ausführen können, um die aktuelle Konfiguration wiederherzustellen;

note: type: Labeled list
en: `config.cache` file
de: `config.cache` Datei

note: type: Plain text
en: That saves the results of its tests to speed up reconfiguring;
de: Das speichert die Ergebnisse dessen Tests, um eine erneute Konfiguration zu beschleunigen;

note: type: Labeled list
en: `config.log` file
de: `config.log` Datei

note: type: Plain text
en: Containing compiler output (useful mainly for debugging `configure`).
de: Enthält die Ausgabe des Compilers (nützlich vor allem zur Fehlersuche in `configure`).

note: type: Plain text
en: The *`configure.ac`* file is used by the `autogen.sh` script, from the `autoconf` package, to create the `configure` script.  You only need `configure.ac` if you want to change `configure`, or regenerate it using a newer version of `autoconf`.
de: Die Datei *`configure.ac`* wird von dem Skript `autogen.sh` aus dem Paket `autoconf` benutzt, um das Skript `configure` zu erstellen. Sie brauchen `configure.ac` nur, wenn Sie `configure` ändern oder es mit einer neueren Version von `autoconf` neu erzeugen wollen.

note: type: Title ====
en: Optional Features
de: Optionale Funktionen

note: type: Plain text
en: LinuxCNC can operate hardware only if a _real time system_ has been installed: either *RT-PREEMPT* or *RTAI*. If you don't have any installed, you cannot run LinuxCNC to control any machines. Please install one of the RT patches (refer to the documentation of the project on how to achieve that).
de: LinuxCNC kann Hardware nur betreiben, wenn ein Echtzeitsystem installiert wurde, entweder ein *RT-PREEMPT* oder *RTAI* Kern. Wenn Sie keines hiervon installiert haben, können Sie LinuxCNC nicht nutzen, um eine Maschinen zu steuern. Bitte installieren Sie einen der RT-Patches (lesen Sie hier in der Dokumentation des Projekts nach).

note: FIXME Add pointers for RT install type: Plain text
en: However, it is possible to test LinuxCNC without a realtime system. This is possible using a _simulator mode_, which doesn't allow hardware control.  This is an alternate mode of *uspace* _realtime_.
de: Allerdings ist es möglich, LinuxCNC ohne ein Echtzeit-System zu testen. Dies ist möglich in einem Simulator mode, in dem die Steuerung der Hardware nicht gestattet ist. Dies ist ein alternativer Modus der *uspace*  Echtzeit-Umgebung.

note: type: Plain text
en: To specify RT-PREEMPT or non-realtime, use `--with-realtime=uspace`.  Otherwise, use `--with-realtime=[location where rtai is installed]`.
de: Um RT-PREEMPT oder Nicht-Echtzeit anzugeben, verwenden Sie '--with-realtime=uspace'.  Andernfalls verwenden Sie '--with-realtime=[Ort, an dem rtai installiert ist]'.

note: type: Plain text
en: If you don't want to generate the documentation from source use `--disable-build-documentation`
de: Wenn Sie die Dokumentation nicht aus dem Quellcode erzeugen wollen, verwenden Sie `--disable-build-documentation`

note: type: Plain text
en: `configure` also accepts other arguments. Use `--help` to view the list.
de: `configure` nimmt auch andere Argumente entgegen. Benutzen Sie `--help` um diese Liste zu sehen.

note: type: Title ====
en: Operation Controls
de: Betriebssteuerung

note: type: Plain text
en: `configure` recognizes the following options to control how it operates:
de: `configure` erkennt die folgenden Optionen, um dessen Arbeitsweise zu steuern:

note: type: Labeled list
en: `--cache-file=FILE`
de: `--cache-file=DATEI`

note: type: Plain text
en: Use and save the results of the tests in FILE instead of `./config.cache`.  Set FILE to `/dev/null` to disable caching, for debugging `configure`.
de: Verwenden und speichern Sie die Ergebnisse der Tests in DATEI anstelle von `./config.cache`. Setzen Sie DATEI auf `/dev/null`, um die Zwischenspeicherung zu deaktivieren und`configure` zu debuggen.

note: type: Plain text
en: Print a summary of the options to `configure`, and exit.
de: Eine Zusammenfassung der Optionen für `configure` ausgeben und beenden.

note: type: Plain text
en: Do not print messages saying which checks are being made.  To suppress all normal output, redirect it to `/dev/null` (any error messages will still be shown).
de: Geben Sie keine Meldungen darüber aus, welche Prüfungen durchgeführt werden. Um alle normalen Ausgaben zu unterdrücken, leiten Sie sie nach `/dev/null` um (Fehlermeldungen werden weiterhin angezeigt).

note: type: Plain text
en: Look for the package's source code in directory DIR.  Usually `configure` can determine that directory automatically.
de: Suchen Sie den Quellcode des Pakets im Verzeichnis DIR. Normalerweise kann `configure` dieses Verzeichnis automatisch ermitteln.

note: type: Plain text
en: Print the version of _Autoconf_ used to generate the `configure' script and exit.
de: Gibt die Version von _Autoconf_ aus, die zur Erzeugung des `configure' Skripts verwendet wurde, und beendet sich.

note: type: Title =
en: Developer Manual V{lversion}, {date}
de: Entwickler-Handbuch V{lversion}, {date}

note: type: Title ==
en: Introduction
de: Einführung

note: type: Title =
en: Getting Started & Configuration
de: Erste Schritte & Konfiguration

note: type: Title =
en: Getting Started with LinuxCNC
de: Erste Schritte mit LinuxCNC

note: type: Title =
en: General User Information
de: Allgemeine Benutzerinformationen

note: type: Title =
en: Configuration Wizards
de: Konfigurationsassistenten

note: type: Title ===
en: Configuration
de: Konfiguration

note: type: Title ===
en: Hardware Drivers
de: Hardware-Treiber

note: type: Title =
en: Hardware Examples
de: Hardware-Beispiele

note: type: Title =
en: Advanced Topics
de: Fortgeschrittene Themen

note: type: Content of: <html><body><h3>
en: Usage
de: Anwendung

note: type: Title ==
en: User Interfaces
de: Benutzerschnittstellen

note: type: Title =
en: G-code Programming
de: G-Code Programmierung

note: type: Title ==
en: Virtual Control Panels
de: Virtuelle Schalttafeln

note: type: Title =
en: User Interface Programming
de: Programmierung der Benutzeroberfläche

note: type: Title =
en: Glossary, Copyright & History
de: Glossar, Copyright & Geschichte

note: type: Title =
en: Overleaf
de: Umschlagseite

note: type: Title =
en: LinuxCNC History
de: LinuxCNC Geschichte

note: type: Title =
en: Getting Started V{lversion}, {date}
de: Erste Schritte V{lversion}, {datum}

note: type: Plain text
en: The LinuxCNC Team
de: Das LinuxCNC-Team

note: type: Title =
en: Integrator Information V{lversion}, {date}
de: Integrator Information V{lversion}, {Datum}

note: type: Title =
en: RT Faults
de: RT-Fehler

note: type: Plain text
en: Finding line number information for faults in realtime components
de: Suche nach Zeilennummern bei Fehlern in Echtzeitkomponenten

note: type: Plain text
en: Get a version of LinuxCNC which prints the faulting instruction address (that includes this version of LinuxCNC)
de: Holen Sie sich eine Version von LinuxCNC, welche die fehlerhafte Anweisungsadresse druckt (die diese Version von LinuxCNC enthält)

note: type: Plain text
en: Include debugging info in your modules.
    For built-in modules, below the definition of EXTRA_CFLAGS in Makefile, add:
de: Fügen Sie Debugging-Informationen in Ihre Module ein.
    Für eingebaute Module fügen Sie unterhalb der Definition von EXTRA_CFLAGS im Makefile hinzu:

note: type: Plain text
en: For standalone modules, add the same line just above the line:
de: Fügen Sie bei eigenständigen Modulen dieselbe Zeile direkt über dieser Zeile hinzu:

note: type: Plain text
en: and (re)build the component
de: und bauen (nochmals) die Komponente

note: type: Plain text
en: Run hal until the following fault occurs: *DO NOT EXIT THE HAL SESSION YET*.
    You must find the start of the module (step 5) first.
de: Führen Sie HAL aus, bis folgender Fehler auftritt: *BEENDEN SIE DIE HAL-SESSION NOCH NICHT*. +
    Sie müssen zuerst den Anfang des Moduls finden (Schritt 5).

note: type: Plain text
en: Note the ip (instruction pointer) address in dmesg, e.g.:
de: Beachten Sie die ip-Adresse (instruction pointer, Befehlszeiger) in dmesg, z.B.:

note: type: Plain text
en: Find the module which contains the offending IP.
de: Suchen Sie das Modul, das die beanstandete IP enthält.

note: type: Plain text
en: Now you can exit hal/emc2.
de: Jetzt können Sie hal/emc2 beenden.

note: type: Plain text
en: Subtract the start of the module from the faulting ip (in this case, 0x1a)
    Among other ways to do this, you can use the shell:
de: Subtrahieren Sie den Anfang des Moduls von der fehlerhaften IP (in diesem Fall 0x1a).
    Neben anderen Möglichkeiten, dies zu tun, können Sie die Shell verwenden:

note: type: Plain text
en: Use addr2line to find out the source code line:
de: Verwenden Sie addr2line, um die Quellcodezeile zu ermitteln:

note: type: Plain text
en: Ignore how the directory name is wrong and see whether this has helped you localize the problem:
de: Ignorieren Sie, dass der Verzeichnisname falsch ist, und sehen Sie nach, ob Sie das Problem dadurch lokalisieren konnten:

note: type: Plain text
en: Yup! Looks like it has.
de: Yup! Sieht aus, als hätte es das.

note: type: Plain text
en: Note that even if you do not prefix the address argument to addr2line with 0x, it is interpreted as a hex number, and you'll get the wrong line-number information if passing a decimal number. Thus take care to always use hex addresses with addr2line.
de: Beachten Sie, dass selbst wenn Sie dem Adressargument von addr2line kein 0x voranstellen, dies als Hexadezimalzahl interpretiert wird. Entsprechend erhalten Sie die falschen Zeilennummerninformationen bei der Verwendung von Dezimalzahlen. Achten Sie daher darauf, mit addr2line immer hexadezimale Adressen zu verwenden.

note: type: Title ==
en: Menus
de: Menüs

note: type: Labeled list
en: *File -> Run...*
de: *Datei -> Ausführen...*

note: type: Plain text
en: Prompts for an NC program to run.
    You need to be in Auto mode, or you'll get an error.
de: Fordert Sie auf, ein NC-Programm auszuführen.
    Sie müssen sich im Auto-Modus befinden, sonst erhalten Sie eine Fehlermeldung.

note: type: Labeled list
en: *File -> Reset*
de: *Datei -> Reset*

note: type: Plain text
en: Resets the interpreter.
    The modal G- and M-codes are set to their defaults.
de: Setzt den Interpreter zurück. +
    Die modalen G- und M-Codes werden auf ihre Standardwerte gesetzt.

note: type: Labeled list
en: *File -> Quit*
de: *Datei -> Beenden*

note: type: Plain text
en: Quits the Tkemc graphical application.
    The controller will also shut down.
de: Beendet die grafische Anwendung Tkemc. +
    Der Controller wird ebenfalls heruntergefahren.

note: type: Labeled list
en: *View -> Tools*
de: *Ansicht -> Werkzeuge*

note: type: Plain text
en: Shows the tool table.
    You can edit the table.
    Selecting the 'Done' button will save the table and reload it into the controller.
    Note that Tab and Return affect the text, so you have to click the 'Done' button with the mouse.
de: Zeigt die Werkzeugtabelle und +
    bietet Gelegenheit, diese Tabelle zu bearbeiten. +
    Wenn Sie die Schaltfläche 'Fertig' anklicken, wird die Tabelle gespeichert und in die Steuerung geladen. +
    Beachten Sie, dass Tab und Return den Text beeinflussen, so dass Sie die Schaltfläche 'Fertig' mit der Maus anklicken müssen.

note: type: Labeled list
en: *View -> Offsets and Variables*
de: *Ansicht -> Offsets/Korrekturen und Variablen*

note: type: Plain text
en: Shows the interpreter parameters, which hold the work offsets and user variables.
    You can edit the file.
    Selecting the Done button will save the file and reload it into the controller.
    Note that Tab and Return affect the text, so you have to click the Done button with the mouse.
de: Zeigt die Parameter des Interpreters an, die Arbeitsoffsets und Benutzervariablen enthalten, +
    und ermöglicht, diese Datei zu bearbeiten. +
    Wenn Sie auf die Schaltfläche Fertig klicken, wird die Datei gespeichert und wieder in die Steuerung geladen. +
    Tab und Return werden in den Text übertragen, so dass Sie die Schaltfläche Fertig mit der Maus anklicken müssen.

note: type: Labeled list
en: *Settings -> Relative Display, Actual Display*
de: *Einstellungen -> Relative Anzeige, Tatsächliche Anzeige*

note: type: Plain text
en: Sets the display to show positions as relative to the current work offset, or in absolute machine coordinates.
    In relative display mode, the work offsets are shown also.
de: Stellt die Anzeige so ein, dass die Positionen relativ zum aktuellen Arbeitsversatz oder in absoluten Maschinenkoordinaten angezeigt werden. +
    Im relativen Anzeigemodus werden auch die offsets des Werkstücks angezeigt.

note: type: Labeled list
en: *Settings -> Actual Position, Commanded Position*
de: *Einstellungen -> Aktuelle Position, befohlene Position*

note: type: Plain text
en: Sets the display to show either the actual position of the axes, as reported by their feedback, or the commanded position, which is where the controller is commanding them to go.
de: Stellt das Display so ein, dass es entweder die tatsächliche Position der Achsen anzeigt, wie sie von ihren Rückmeldungen gemeldet wird, oder die befohlene Position, d. h. die Position, die der Controller ihnen vorgibt.

note: type: Labeled list
en: *Help -> Help...*
de: *Hilfe -> Hilfe...*

note: type: Plain text
en: Brings up this help window.
de: Zeigt dieses Hilfefenster an.

note: type: Labeled list
en: *Help -> About...*
de: *Hilfe -> Über...*

note: type: Plain text
en: Brings up a credits window.
de: Zeigt ein Fenster mit den Credits an.

note: type: Title ==
en: Status Command Buttons
de: Status Befehlsschaltflächen

note: type: Plain text
en: The buttons in the next two rows are labeled according to the current EMC status. Click on them to pop up menus that send commands to the EMC. The labels on these buttons will change to reflect the new status.
de: Die Schaltflächen in den nächsten beiden Zeilen sind entsprechend dem aktuellen EMC-Status beschriftet. Klicken Sie auf sie, um Menüs aufzurufen, die Befehle an die EMC senden. Die Beschriftung dieser Schaltflächen ändert sich, um den neuen Status wiederzugeben.

note: type: Labeled list
en: *ON/ESTOP - RESET/ESTOP*
de: *ON/NOTAUS- RESET/NOTAUS* (engl. ESTOP)

note: type: Plain text
en: Changes the power state of the machine.
    At startup the machine is in ESTOP. Selecting Estop Reset will enable the estop circuitry, but the servos will not yet be enabled. Selecting Machine On will enable the servos. Selecting Machine Off will disable the servos. Selecting Estop at any time will return the machine to the initial estopped state. Function keys F1 and F2 will toggle the states of the estop and servo systems, respectively. The Function Keys are listed completely below.
de: Ändert den Betriebszustand des Geräts. +
    Beim Einschalten befindet sich die Maschine im NOTAUS (ESTOP). Wenn Sie Notaus Reset wählen, wird die Notaus-Schaltung aktiviert, aber die Servos sind noch nicht aktiviert. Wenn Sie Maschine Ein wählen, werden die Servos aktiviert. Wenn Sie Maschine aus wählen, werden die Servos deaktiviert. Wenn Sie Notaus wählen, kehrt die Maschine jederzeit in den Ausgangszustand zurück, in dem sie gesperrt war. Die Funktionstasten F1 und F2 schalten die Zustände des Notaus- bzw. Servosystems um. Die Funktionstasten sind unten vollständig aufgeführt.

note: type: Plain text
en: *SAFETY NOTE:* ESTOP will put the machine into the estopped state, but
    should not be relied on for this action in the event of an emergency.
    Always use the hardware estop to assure physical disabling of the
    machine.
de: *SICHERHEITSHINWEIS:* ESTOP versetzt die Maschine in den Sperrzustand, aber
    sollte aber im Notfall nicht verwendet werden, um diese Aktion auszulösen.
    Verwenden Sie immer den Hardware-Estopp, um die physische Deaktivierung des
    Maschine sicherzustellen.

note: type: Plain text
en: Changes the execution mode of the machine. +
de: Ändert den Ausführungsmodus der Maschine. +

note: type: Labeled list
en: *Manual mode*
de: *Manueller Modus*

note: type: Plain text
en: Allows the operator to jog and home the axes, and control
    the coolant and spindle. +
    Function key F3 puts the controller into Manual mode.
de: Ermöglicht dem Bediener, die Achsen zu verfahren und die Referenzposition anzufahren sowie das
    Kühlmittel und Spindel zu steuern.
    Die Funktionstaste F3 versetzt die Steuerung in den manuellen Modus.

note: type: Labeled list
en: *Auto mode*
de: *Auto-Modus*

note: type: Plain text
en: Allows the operator to load programs into the machine, run
    them, and pause/step/resume them. +
    F4 puts the controller into Auto mode.
de: Ermöglicht dem Bediener, Programme in die Maschine zu laden, auszuführen
    laufen zu lassen und sie anzuhalten/(auch schrittweise) fortzusetzen. +
    F4 versetzt die Steuerung in den Auto-Modus.

note: type: Labeled list
en: *Manual Data Input (MDI)*
de: *Manuelle Dateneingabe (MDI)*

note: type: Plain text
en: Mode allows the operator to type in blocks of NC code interactively. +
    F5 puts the controller into MDI mode.
de: Der Modus ermöglicht es dem Bediener, NC-Codeblöcke interaktiv einzugeben. +
    F5 versetzt den Controller in den MDI-Modus.

note: type: Labeled list
en: *MIST ON/OFF, FLOOD ON/OFF*
de: *Minimalmengenschmierung EIN/AUS, Kühlmittel EIN/AUS*

note: type: Plain text
en: Turns mist or flood coolant on or off.
    Function key F7 toggles the state of the mist coolant.
    Function key F8 toggles the state of the flood coolant.
    These buttons and function keys only work in Manual mode.
de: Schaltet die Nebel- oder Flüssigkeitskühlung ein oder aus. +
    Funktionstaste F7 schaltet den Zustand des Nebelkühlmittels um. +
    Funktionstaste F8 schaltet den Zustand des Flüssigkeits-Kühlmittels um. +
    Diese Buttons und Funktionstasten funktionieren nur im manuellen Modus.

note: type: Labeled list
en: *SPINDLE FORWARD/REVERSE/OFF*
de: *SPINDEL VORWÄRTS/RÜCKWÄRTS/AUS*

note: type: Plain text
en: Turns the spindle on forward, reverse,or off. Function key F9 turns the spindle on forward if it's off, or off if it's on.
    F10 turns the spindle on reverse if it's off, or off it it's on.
    These buttons and function keys only work in Manual mode.
de: Lässt die Spindel vorwärts laufen oder rückwärts oder schaltet sie aus. Funktionstaste F9 schaltet die Spindel auf vorwärts, wenn sie ausgeschaltet ist, oder auf aus, wenn sie eingeschaltet ist.
    F10 lässt die Spindel auf rückwärts laufen, wenn sie ausgeschaltet ist, oder schaltet sie aus, wenn sie eingeschaltet ist.
    Diese Tasten und Funktionstasten funktionieren nur im manuellen Modus.

note: type: Plain text
en: The speed of the spindle can be decreased or increased using the < and > buttons to the left and right of the spindle control button, respectively.
    F11 and F12, while pressed, decrease or increase the spindle speed, respectively, until they are released.
    These buttons and function keys work in Manual, Auto, or MDI mode.
    They are not active when the spindle is off.
de: Die Spindeldrehzahl kann mit den Buttons < und > links bzw. rechts neben der Spindelsteuerungsschaltfläche verringert bzw. erhöht werden. +
    F11 und F12 verringern bzw. erhöhen die Spindeldrehzahl, solange sie gedrückt sind, bis sie losgelassen werden. +
    Diese Tasten und Funktionstasten funktionieren im manuellen, automatischen oder im MDI-Modus. +
    Sie sind nicht aktiv, wenn die Spindel ausgeschaltet ist.

note: type: Labeled list
en: *BRAKE ON/OFF*
de: *BREMSE AN/AUS*

note: type: Plain text
en: Puts the spindle brake on, or releases it.
    This can be used to manually operate the spindle brake for maintenance or tramming operations.
    The 'B' and 'b' key, in Manual mode,
de: Zieht die Spindelbremse an oder löst sie. +
    Damit kann die Spindelbremse für Wartungs- oder Feststellarbeiten manuell betätigt werden. +
    Im manuellen Modus verwendet man die 'B' und 'b' Taste,

note: type: Labeled list
en: *ABORT*
de: *ABBRUCH*

note: type: Plain text
en: Stops all motion and any program that is running.
    The Escape key accomplishes the same result.
    Use ABORT or the Escape key to stop machine motions while testing programs.
de: Stoppt alle Bewegungen und alle laufenden Programme. +
    Die Escape-Taste führt zum gleichen Ergebnis. +
    Verwenden Sie ABBRUCH oder die Escape-Taste, um die Bewegungen der Maschine zu stoppen, während Sie Programme testen.

note: type: Plain text
en: ABORT will not affect the estop state of the machine.
de: ABORT hat keinen Einfluss auf den Notaus-Zustand der Maschine.

note: type: Title ==
en: Tool and Tool Offset
de: Werkzeug- und Werkzeugversatz

note: type: Plain text
en: At the left, below the command buttons, is a display of the currently loaded tool and the tool offset, if any. A value of 0 for the Tool means that no tool is in the spindle. The offset is non-zero if a tool length offset is active.
de: Auf der linken Seite, unterhalb der Befehlsschaltflächen, wird das aktuell geladene Werkzeug und die Werkzeugkorrektur, falls vorhanden, angezeigt. Ein Wert von 0 für das Werkzeug bedeutet, dass sich kein Werkzeug in der Spindel befindet. Die Korrektur ist ungleich Null, wenn eine Werkzeuglängenkorrektur aktiv ist.

note: type: Title ==
en: Position Display Options and Work Offsets
de: Optionen zur Anzeige von Postion und Arbeitsversatz

note: type: Plain text
en: At the right, below the command buttons, is a display showing how to interpret the position numbers. There are two sources of position feedback, either Commanded or Actual. Commanded numbers are what the motion system asks for, and is not necessarily what the machine axes positions are (servo lag may mean they are different). Actual numbers reflect the current position of the axes. Normally, actual numbers are what you want. In some cases, for example running a program in simulation with the axes inhibited or disconnected, commanded numbers are what you want.
de: Rechts unter den Befehlstasten befindet sich eine Anzeige, die zeigt, wie die Positionsnummern zu interpretieren sind. Für die Rückmeldung der Positionen gibt es entweder die Ausgabe der definierten oder tatsächlichen Position. Die definierten Werte sind das, was das Achssteuerungssystem anfordert, und entsprechen nicht unbedingt den Positionen der Maschinenachsen zB eine Servoverzögerung ). Der Ist-Wert gibt die aktuelle Position der Achsen wieder. Normalerweise sind der Ist-Wert das, was Sie wollen. In einigen Fällen, z. B. bei der Ausführung eines Programms in der Simulation, sind die befohlenen Zahlen diejenigen, die Sie interessieren, da die Achsen gesperrt oder abgekoppelt sind.

note: type: Plain text
en: Position numbers can also be Absolute or Relative. Absolute numbers are not affected by any work offsets in a program. They are relative to the machine home position. Relative numbers include any work offset. If Relative numbers are selected, the applicable Work Offsets are shown.
de: Positionsnummern können auch absolut oder relativ sein. Absolute Positionsnummern werden nicht von einem Arbeitsversatz in einem Programm beeinflusst. Sie sind relativ zur Grundstellung der Maschine. Relative Zahlen beinhalten einen Arbeitsversatz. Wenn relative Nummern ausgewählt sind, werden die entsprechenden Arbeitsversätze angezeigt.

note: type: Plain text
en: To change these settings, use the '@' key for Commanded/Actual, and the '#' key for Absolute/Relative. The default values can be set in the INI file, e.g.,
de: Um diese Einstellungen zu ändern, verwenden Sie die Taste '@' für befohlen (engl. commanded)/IST (engl. actual), und die Taste '#' für absolut/relativ. Die Standardwerte können in der INI-Datei eingestellt werden, z.B.,

note: type: Plain text
en: or
de: oder

note: type: Title ==
en: Axis Positions
de: Achsenpositionen

note: type: Plain text
en: Axis positions are displayed in a large font in the middle of the display. The values are interpreted in units, commanded/actual, and absolute/relative, as described above.
de: Die Achsenpositionen werden in einer großen Schrift in der Mitte des Displays angezeigt. Die Werte werden in Einheiten, Soll/Ist und absolut/relativ wie oben beschrieben interpretiert.

note: type: Plain text
en: The color of the numbers shows the state of each axis. Yellow numbers mean the axis has not yet been homed. Green numbers mean the axis has been homed and is within limits. Red numbers mean the axis is at a soft or hard limit.
de: Die Farbe der Zahlen zeigt den Zustand der einzelnen Achsen an. Gelbe Zahlen bedeuten, dass die Achse noch nicht referenziert wurde. Grüne Zahlen bedeuten, dass die Achse referenziert wurde und sich innerhalb der Grenzen befindet. Rote Zahlen bedeuten, dass sich die Achse an einer weichen oder harten Grenze befindet.

note: type: Title ==
en: Axis Command Buttons
de: Achsen-Befehlsschaltflächen

note: type: Plain text
en: Below the axis position numbers is a row of command buttons that affect axis motion. The Axis Speed setting, displayed in units/minute, can be changed by clicking and holding the < or > buttons until the desired setting is reached.
de: Unterhalb der Achsenpositionsnummern befindet sich eine Reihe von Buttons zur Steuerung der Achsenbewegung. Die Einstellung der Achsengeschwindigkeit, die in Einheiten/Minute angezeigt wird, kann durch Anklicken und Halten der Tasten < oder > geändert werden bis die gewünschte Einstellung erreicht ist.

note: type: Plain text
en: The Increment button shows the current value of the jog increment, or "continuous" for continuous jogging. Clicking on this button brings up a menu that changes the jog increment or selects continuous jogging.
de: Die Schaltfläche Schrittweite zeigt den aktuellen Wert der Schrittweite an, oder "kontinuierlich" für kontinuierlichen Schnellauf. Wenn Sie auf diese Schaltfläche klicken, wird ein Menü zum Ändern der Schrittweite oder zum Auswählen des Schnellaufs angezeigt.

note: type: Plain text
en: The Axis Motion buttons jog an axis in the negative direction using the "-" button, positive direction using the "+" button, or home the axis using the "home" button.
de: Die Schaltflächen für die Achsenbewegung bewegen eine Achse in negativer Richtung mit der Schaltfläche "-", in positiver Richtung mit der Schaltfläche "+" oder die Achse in die Ausgangsstellung mit der Schaltfläche "home".

note: type: Plain text
en: The Feed Override value in percent is displayed, and can be changed by clicking and holding the < or > buttons until the desired setting is reached.
de: Der Feed Override-Wert (Vorschub) in Prozent wird angezeigt und kann geändert werden, indem Sie die Schaltflächen < oder > gedrückt halten, bis die gewünschte Einstellung erreicht ist.

note: type: Title ==
en: Manual Data Input (MDI) Box
de: Box für manuelle Dateneingabe (MDI)

note: type: Plain text
en: Below the axis command buttons is an input box labeled "MDI:" that is active when the machine is in manual data input (MDI) mode. You can type NC code statements into this box, and hit Enter to send the command. Note that many of the function and alphanumeric accelerator keys don't work as accelerator keys, so that they can be used to compose MDI statements. Keys F1-F5 (estop state and Manual/Auto/MDI mode), and F11-F12 (spindle speed control) do work; others do not.
de: Unterhalb der Achsenbefehlsschaltflächen befindet sich ein Eingabefeld mit der Bezeichnung "MDI:", das aktiv ist, wenn sich die Maschine im Modus der manuellen Dateneingabe (MDI) befindet. Sie können NC-Code-Anweisungen in dieses Feld eingeben und die Eingabetaste drücken, um den Befehl zu senden. Beachten Sie, dass viele der Funktionstasten und alphanumerischen Tastenkombinationen nicht als Tastenkombinationen funktionieren, so dass sie zum Verfassen von MDI-Anweisungen verwendet werden können. Die Tasten F1-F5 (Notaus-Status und manueller/automatischer/MDI-Modus) und F11-F12 (Spindeldrehzahlsteuerung) funktionieren, andere nicht.

note: type: Plain text
en: Below the MDI box is a display of the current modal settings for G, M, F, and S codes. These are only valid when in MDI mode. In Auto mode, they hold the modal values up to the point where the interpreter has read, usually far ahead of the executing line in the program. They do, however, always show the modal groups that are applicable when you next enter an MDI line.
de: Unterhalb des MDI-Feldes werden die aktuellen Modus-Einstellungen für G-, M-, F- und S-Codes angezeigt. Diese sind nur im MDI-Modus gültig. Im Auto-Modus halten sie die Werte bis zu dem Punkt, an dem der Interpreter gelesen hat, normalerweise weit vor der ausführenden Zeile im Programm. Sie zeigen jedoch immer die Modus-Gruppen an, die bei der nächsten Eingabe einer MDI-Zeile anwendbar sind.

note: type: Title ==
en: Program Display
de: Programm-Anzeige

note: type: Plain text
en: At the bottom of the main screen is a label showing the current program, or the last program loaded. Below this is a row of command buttons to Open, Run, Pause, Resume, or Step the program. The Open button is identical to the File->Open... menu at the top, as is the 'o' or 'O' accelerator. The run, pause, resume, and step accelerators are 'r', 'p', 's', and 'a', respectively, lower or upper case.
de: Am unteren Rand des Hauptbildschirms befindet sich ein Label zur Anzeige des aktuellen Programms oder des zuletzt geladenen Programms. Darunter befindet sich eine Reihe von Befehlsschaltflächen zum Öffnen, Pausieren, Fortsetzen oder (auch schrittweise möglich) Auführen des Programms. Die Schaltfläche Öffnen ist identisch mit dem Menü Datei ->Öffnen... am oberen Rand, ebenso wie der 'o' oder 'O' Beschleuniger. Die Beschleuniger 'r', 'p', 's' und 'a' sind jeweils in Klein- oder Großbuchstaben.

note: type: Plain text
en: The window at the bottom shows a few lines of text of the currently loaded program. The display window is moved through the program so that the currently executing line is always at the top.
de: Das untere Fenster zeigt einige Textzeilen des aktuell geladenen Programms an. Das Anzeigefenster wird durch das Programm bewegt, so dass die aktuell ausgeführte Zeile immer oben steht.

note: type: Title ==
en: Function and Accelerator Keys
de: Funktions- und Beschleunigungstasten

note: type: delimited block -
en: Escape  abort motion                        <-|
    F1      toggle estop/estop reset state        |
    F2      toggle machine off/machine on state   |- work in MDI mode also
    F3      Manual mode                           |
    F4      Auto mode                             |
    F5      MDI mode                            <-|
    F6      reset interpreter
    F7      toggle mist on/mist off
    F8      toggle flood on/flood off
    F9      toggle spindle forward/off
    F10     toggle spindle reverse/off
    F11     decrease spindle speed              <-|- work in MDI mode also
    F12     increase spindle speed              <-|
    x       select X axis
    y       select Y axis
    z       select Z axis
    Left, Right Arrow  jog X axis
    Up, Down Arrow     jog Y axis
    Page Up, Down      jog Z axis
    Home    home selected axis
    <, >    decrement or increment axis speed
    c/C     select continuous jogging
    i/I     select incremental jog, and toggle through increments
    1-9,0   set feed override to 10%-90%, 0 is 100%
    @       toggle commanded/actual position display
    #       toggle absolute/relative position display
    o/O     open a program
    r/R     run an opened program
    p/P     pause an executing program
    s/S     resume a paused program
    a/A     step one line in a paused program
    b       take spindle brake off
    Alt-b   put spindle brake on
de: Escape Abbruch der Bewegung
    F1: Umschalten des Zustands "estop/estop reset"
    F2 Umschalten Maschine ein/aus |- funktioniert auch im MDI-Modus
    F3 Manueller Modus |
    F4 Auto-Modus |
    F5 MDI-Modus <-|
    F6 Interpreter zurücksetzen
    F7 Umschalten NebelKühlung ein/aus
    F8 Umschalten Flüssigkeitskühlung ein/aus
    F9 Umschalten Spindel vorwärts/aus
    F10 Umschalten Spindel rückwärts/aus
    F11 Spindeldrehzahl verringern <-|- funktioniert auch im MDI-Modus
    F12 Spindeldrehzahl erhöhen <-|
    x wählt X-Achse
    y wählt Y-Achse
    z wählt Z-Achse
    Pfeil links, rechts: X-Achse verfahren
    Pfeil nach oben, Pfeil nach unten: verfahren der Y-Achse
    Bild nach oben, Bild nach unten Z-Achse verfahren
    Pos1 Taste: ausgewählte Achse referenzieren
    <, > Verringern oder Erhöhen der Achsengeschwindigkeit
    c/C wählt kontinuierliches Achsverfahren
    i/I wählt inkrementelles  Achsverfahren und schaltet zwischen den Inkrementen um
    1-9,0 setzt den Vorschub-Übersteuerung auf 10%-90%, 0 ist 100%
    @ Soll-/Ist-Positionsanzeige umschalten
    # Umschalten zwischen absoluter und relativer Positionsanzeige
    o/O ein Programm öffnen
    r/R Ausführen eines geöffneten Programms
    p/P ein laufendes Programm anhalten
    s/S ein angehaltenes Programm fortsetzen
    a/A in einem angehaltenen Programm eine Zeile weiterschalten
    b Spindelbremse ausschalten
    Alt-b Spindelbremse einschalten

note: type: Plain text
en: Note that MDI mode disables most of the keys, since they are valid symbols that can be typed in. F1-F5 work in MDI, as do the spindle speed change keys F11 and F12.
de: Beachten Sie, dass im MDI-Modus die meisten Tasten deaktiviert sind, da es sich um gültige Symbole handelt, die eingetippt werden können. F1-F5 funktionieren im MDI-Modus, ebenso wie die Tasten F11 und F12 zur Änderung der Spindeldrehzahl.

note: type: Title ==
en: The RS-274-NGC Interpreter
de: Der RS-274-NGC Interpreter

note: type: Plain text
en: The EMC runs a dialect of RS-274 "G-codes" that originated from Allen-Bradley as part of their work for the National Center for Manufacturing Sciences (NCMS) on the Next Generation Controller (NGC)  project. The dialect is similar to the Fanuc series of CNCs.
de: Die EMC arbeitet mit einem Dialekt von RS-274 "G-Codes", der von Allen-Bradley als Teil deren Arbeit für das National Center for Manufacturing Sciences (NCMS) am Projekt Next Generation Controller (NGC) entwickelt wurde. Der Dialekt ähnelt dem der Fanuc-CNC-Reihe.

note: type: Labeled list
en: G-codes
de: G-Codes

note: type: Content of: <html><body><table><tbody><tr><th>
en: Description
de: Beschreibung

note: type: Table
en: rapid feed
de: Schneller Vorschub

note: type: Table
en: linear feed, e.g., G01 X10 Y20 Z30 F60 for 60 ipm
de: linearer Vorschub, z.B. G01 X10 Y20 Z30 F60 für 60 Zoll/min

note: type: Table
en: clockwise circular feed (helical with Z)
de: Kreisbewegung im Uhrzeigersinn (spiralförmig mit Z)

note: type: Table
en: counterclockwise circular feed (helical with Z)
de: Kreisvorschub gegen den Uhrzeigersinn (schraubenförmig mit Z)

note: type: Table
en: dwell # of seconds
de: Verweildauer in Sekunden

note: type: Table
en: set coordinates for system #1-9, 1 = G54, 9 = G59.3
de: Koordinaten für System #1-9 einstellen, 1 = G54, 9 = G59.3

note: type: Table
en: XY plane circular interpolation
de: Kreisinterpolation auf der XY-Ebene

note: type: Table
en: ZX plane circular interpolation
de: Kreisinterpolation auf der ZX-Ebene

note: type: Table
en: YZ plane circular interpolation
de: Kreisinterpolation der YZ-Ebene

note: type: Table
en: English units (inches)
de: Imperiale Einheiten (Zoll)

note: type: Table
en: metric units (millimeters)
de: metrische Einheiten (Millimeter)

note: type: Table
en: cancel cutter compensation
de: Fräserradiuskompensation aufheben

note: type: Table
en: cutter compensation for tool <#>, tool on left
de: Fräserkorrektur für Werkzeug <#>, Werkzeug links

note: type: Table
en: cutter compensation for tool <#>, tool on right
de: Fräserkorrektur für Werkzeug <#>, Werkzeug rechts

note: type: Table
en: use tool length offset for tool #, 0 = no offset
de: Werkzeuglängenkorrektur für Werkzeug # verwenden, 0 = keine Korrektur

note: type: Table
en: cancel tool length offset
de: Werkzeuglängenkorrektur aufheben (zurücksetzen)

note: type: Table
en: turn any coordinate offsets off for this block
de: alle Koordinatenverschiebungen für diesen Block ausschalten

note: type: Table
en: use coordinate offsets for system #1, from G10 L2 P1
de: Koordinatenverschiebungen für System #1 verwenden, von G10 L2 P1

note: type: Table
en: "" for system #2, from G10 L2 P2
de: "" für System #2, von G10 L2 P2

note: type: Table
en: "" for system #3, from G10 L2 P3
de: "" für System #3, von G10 L2 P3

note: type: Table
en: "" for system #4, from G10 L2 P4
de: "" für System #4, von G10 L2 P4

note: type: Table
en: "" for system #5, from G10 L2 P5
de: "" für System #5, von G10 L2 P5

note: type: Table
en: "" for system #6, from G10 L2 P6
de: "" für System #6, von G10 L2 P6

note: type: Table
en: "" for system #7, G10 L2 P7
de: "" für System Nr. 7, G10 L2 P7

note: type: Table
en: "" for system #8, G10 L2 P8
de: "" für System Nr. 8, G10 L2 P8

note: type: Table
en: "" for system #9, G10 L2 P9
de: "" für System #9, G10 L2 P9

note: type: Labeled list
en: exact stop mode
de: exakter Stoppmodus

note: type: Table
en: cutting mode
de: Schneidemodus

note: type: Table
en: threading canned cycle
de: Gewindeschneiden Festzyklus

note: type: Table
en: cancel fixed (canned) cycle
de: Abbruch des Festzyklus

note: type: Table
en: drilling cycle, no dwell, rapid out
de: Bohrzyklus, keine Verweilzeit, schnelles Herausziehen

note: type: Table
en: drilling cycle, dwell, rapid out
de: Bohrzyklus, Verweilen, schnelles Herausziehen

note: type: Table
en: deep hole peck drilling cycle
de: Tiefloch-Bohrzyklus

note: type: Table
en: tapping cycle
de: Gewindebohrerzyklus

note: type: Table
en: boring cycle, no dwell, feed out
de: Bohrzyklus, keine Verweildauer, Vorschub aus

note: type: Table
en: boring cycle, spindle stop, rapid out
de: Bohrzyklus, Spindelstopp, schnelles Herausziehen

note: type: Table
en: back boring cycle
de: Rückbohren des Zyklus

note: type: Table
en: boring cycle, spindle stop, manual out
de: Bohrzyklus, Spindelstopp, manuelles Herausziehen

note: type: Table
en: boring cycle, with dwell, feed out
de: Bohrzyklus, mit Verweilzeit, Vorschub aus

note: type: Table
en: non-incremental programming (the usual)
de: nicht-incrementale Programmierung (die übliche)

note: type: Table
en: incremental programming
de: inkrementelle Programmierung

note: type: Table
en: inverse time feed mode
de: Inverser Zeitvorschubmodus

note: type: Table
en: feed per minute mode (the usual)
de: Vorschub pro Minute Modus (wie üblich)

note: type: Table
en: set canned cycle return level
de: Festzyklus-Rücklaufwert einstellen

note: type: Labeled list
en: M-codes
de: M-Codes

note: type: Table
en: optional program stop
de: *optional_program stop*

note: type: Table
en: M1
de: M61

note: type: Table
en: program stop
de: Programm-Stop

note: type: Table
en: program end
de: Programmende

note: type: Table
en: turn spindle clockwise, e.g., S1000 M3 for 1000 rpm
de: Spindel im Uhrzeigersinn drehen, z.B. S1000 M3 für 1000 U/min

note: type: Table
en: turn spindle counterclockwise
de: 2: dreh die Spindel gegen den Uhrzeigersinn

note: type: Table
en: turn spindle off
de: Spindel abschalten

note: type: Table
en: tool change, e.g., T1 M6 for tool 1
de: Werkzeugwechsel, z.B. T1 M6 für Werkzeug 1

note: type: Table
en: mist coolant on
de: Kühlmittelnebel eingeschaltet

note: type: Table
en: flood coolant on
de: Flutkühlmittel an

note: type: Table
en: all coolant off
de: alles Kühlmittel aus

note: type: Table
en: disable override control for M50-51 switches
de: Deaktivieren der Neufestsetzung für M50-51-Schalter

note: type: Table
en: enable override control for M50-51 switches
de: Aktivieren der Neufestsetzung für M50-51-Schalter

note: type: Table
en: enable/disable feed override
de: Vorschubüberbrückung aktivieren/deaktivieren

note: type: Table
en: enable/disable spindle speed override
de: Spindeldrehzahl-Übersteuerung aktivieren/deaktivieren

note: type: Table
en: enable/disable adaptive feed override
de: adaptive Vorschubneufestsetzung aktivieren/deaktivieren

note: type: Table
en: enable/disable feed hold
de: Vorschubfreigabe aktivieren/deaktivieren

note: type: Table
en: digital IO control
de: digitale E/A ( engl. I/O)-Steuerung

note: type: Table
en: user defined commands
de: benutzerdefinierte Befehle

note: type: Plain text
en: (check the user manual for details).
de: (Einzelheiten finden Sie im Benutzerhandbuch).

note: type: Title ==
en: Frequently Asked Questions (FAQ)
de: Häufig gestellte Fragen (FAQ)

note: type: Labeled list
en: The axes don't move when I try to jog them
de: Die Achsen bewegen sich nicht, wenn ich versuche, sie im Schnellgang zu verschieben

note: type: Plain text
en: Make sure you're out of estop, in Manual mode.
de: Vergewissern Sie sich, dass im manuellen Modus der Notaus nicht aktiv ist.

note: type: Labeled list
en: Software limits don't work. I can jog past a soft limit.
de: Software-Limits funktionieren nicht. Der Schnellauf reicht über eine weiche Grenze hinaus.

note: type: Plain text
en: Software limits only work when an axis has been homed, since otherwise the machine doesn't know where the limits really are.
de: Software-Grenzen funktionieren nur, wenn eine Achse referenziert wurde, da die Maschine sonst nicht weiß, wo die Grenzen tatsächlich liegen.

note: type: Labeled list
en: Why doesn't the mouse or return key work?
de: Warum funktioniert die Maus oder die Return-Taste nicht?

note: type: Plain text
en: Sometimes the cursor needs to be in the part of the window with the text in it. Move the cursor to a different region and try it.
de: Manchmal muss sich der Cursor in dem Teil des Fensters befinden, in dem sich der Text befindet. Bewegen Sie den Cursor in einen anderen Bereich und versuchen Sie es.

note: type: Labeled list
en: Why are the modal G- and M-codes not correct in Auto mode?
de: Warum sind die modalen G- und M-Codes im Auto-Modus nicht korrekt?

note: type: Plain text
en: The modes that will be active when you enter MDI mode are shown. These are read ahead of actual program execution.
de: Alle Modi die aktiv sind, wenn der MDI Modus aktiv wird, werden angezeigt. Diese werden vor der eigentlichen Programmausführung gelesen.

note: type: Labeled list
en: How can I change the fonts/colors/sizes in the Tkemc display?
de: Wie kann ich die Schriftarten/Farben/Größen in der Tkemc-Anzeige ändern?

note: type: Plain text
en: The "Tkemc" file in the emc/ directory contains the X resources used by the program. Almost nothing is hard coded in the program itself. You can change any of these values and see the effects.
de: Die Datei "Tkemc" im Verzeichnis emc/ enthält die vom Programm verwendeten X-Ressourcen. Im Programm selbst ist fast nichts fest kodiert. Sie können jeden dieser Werte ändern und die Auswirkungen sehen.

note: type: Title =
en: Adding Configuration Selection Items
de: Hinzufügen von Konfigurationsauswahlelementen

note: type: Plain text
en: Example Configurations can be added to the Configuration Selector by two methods:
de: Beispielkonfigurationen können der Konfigurationsauswahl auf zwei Arten hinzugefügt werden:

note: type: Plain text
en: Auxiliary applications -- Applications installed independently with a deb package can place configuration subdirectories in a specified system directory.  The directory name is specified using the shell linuxcnc_var script:
de: Hilfsanwendungen -- Anwendungen, die unabhängig mit einem deb-Paket installiert werden, können Konfigurationsunterverzeichnisse in einem bestimmten Systemverzeichnis ablegen.  Der Verzeichnisname wird mit dem Shell-Skript linuxcnc_var angegeben:

note: type: Plain text
en: Runtime settings -- the configuration selector can also offer configuration subdirectories specified at runtime using an exported environamental variable (LINUXCNC_AUX_CONFIGS).  This variable should be a path list of one or more configuration directories separated by a (:).  Typically, this variable would be set in a shell starting linuxcnc or in a user's ~/.profile startup script.  Example:
de: Laufzeiteinstellungen -- der Konfigurationsselektor kann auch Konfigurationsunterverzeichnisse anbieten, die zur Laufzeit mit einer exportierten Umgebungsvariablen (LINUXCNC_AUX_CONFIGS) angegeben werden.  Diese Variable sollte eine Pfadliste von einem oder mehreren Konfigurationsverzeichnissen sein, die durch ein (:) getrennt sind.  Typischerweise wird diese Variable in einer Shell gesetzt, die linuxcnc startet, oder in einem Startskript des Benutzers ~/.profile.  Beispiel:

note: type: Title =
en: Building LinuxCNC
de: Kompilieren ("bauen") von LinuxCNC

note: type: Plain text
en: This document describes how to build the LinuxCNC software and documentation from source.  This is primarily useful if you are a developer who is modifying LinuxCNC.  It can also be useful if you're a user who is testing developer branches, though then you also have the option of just installing Debian packages from the buildbot: http://buildbot.linuxcnc.org
de: Dieses Dokument beschreibt, wie man die LinuxCNC Software und Dokumentation aus dem Quellcode erstellt.  Dies ist vor allem nützlich, wenn Sie ein Entwickler sind, der LinuxCNC modifiziert.  Es kann auch nützlich sein, wenn Sie ein Benutzer sind, der Entwickler-Zweige testet, obwohl Sie dann auch die Möglichkeit haben, einfach Debian-Pakete aus dem Buildbot zu installieren: http://buildbot.linuxcnc.org

note: type: Title ===
en: Quick Start
de: Schnellstart

note: type: Plain text
en: For the impatient, try this:
de: Wer ungeduldig ist, kann dies versuchen:

note: type: delimited block -
en: $ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-dev
    $ cd linuxcnc-dev/src
    $ ./autogen.sh
    $ ./configure --with-realtime=uspace
    $ make
de: > git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-dev
    > cd linuxcnc-dev/src
    > ./autogen.sh
    > ./configure --with-realtime=uspace
    > make

note: type: Plain text
en: That will probably fail! That doesn't make you a bad person, it just means you should read this whole document to find out how to fix your problems.  Especially the section on <<Satisfying-Build-Dependencies, Satisfying Build Dependencies>>.
de: Das wird wahrscheinlich schiefgehen! Das macht Sie nicht zu einem schlechten Menschen, es bedeutet nur, dass Sie dieses ganze Dokument lesen sollten, um herauszufinden, wie Sie Ihre Probleme lösen können.  Insbesondere den Abschnitt über <Satisfying-Build-Dependencies, Bedienen von Build Abhängigkeiten (engl. dependencies)>>.

note: type: Plain text
en: If you are running on a realtime-capable system (such as an install from the LinuxCNC Live/Install Image, see the <<sub:realtime,Realtime>> section below), one extra build step is needed at this time:
de: Wenn Sie auf einem Echtzeit-fähigen System arbeiten (wie z.B. eine Installation aus dem LinuxCNC Live/Install Image, siehe den <<sub:realtime,Echtzeit>> Abschnitt unten), ist ein zusätzlicher Build-Schritt zu diesem Zeitpunkt erforderlich:

note: type: delimited block -
en: $ sudo make setuid
de: >$ sudo make setuid

note: type: Plain text
en: After you've successfully built LinuxCNC it's time to run the tests:
de: Nachdem Sie erfolgreich LinuxCNC gebaut haben, ist es nun Zeit, die Tests durchzuführen:

note: type: delimited block -
en: $ source ../scripts/rip-environment
    $ runtests
de: >$ source ../scripts/rip-environment
    >$ runtests

note: type: Plain text
en: This might fail too! Read this whole document, but especially the section on <<Setting-up-the-environment,Setting up the test environment>>.
de: Auch das kann fehlschlagen! Lesen Sie das gesamte Dokument, insbesondere aber den Abschnitt <<Setting-up-the-environment,Einrichten der Testumgebung>>.

note: type: Title ==
en: Supported Platforms
de: Unterstützte Plattformen

note: type: Plain text
en: The LinuxCNC project targets modern Debian-based distributions, including Debian, Ubuntu, and Mint.
de: Das LinuxCNC-Projekt orientiert sich an moderne Debian-basierte Distributionen, einschließlich Debian, Ubuntu und Mint.

note: type: Plain text
en: We continuously test on the platforms listed at http://buildbot.linuxcnc.org.
de: Wir testen kontinuierlich auf den unter http://buildbot.linuxcnc.org aufgeführten Plattformen.

note: type: Plain text
en: LinuxCNC builds on most other Linux distributions, though dependency management will be more manual and less automatic. Patches to improve portability to new platforms are always welcome.
de: LinuxCNC baut auf die meisten anderen Linux-Distributionen, obwohl die Verwaltung von Abhängigkeiten mehr manuell und weniger automatisch sein wird. Patches zur Verbesserung der Portabilität auf neue Plattformen sind immer willkommen.

note: type: Title ===
en: Realtime
de: Echtzeit

note: type: Plain text
en: LinuxCNC is a machine tool controller, and it requires a realtime platform to do this job. This version of LinuxCNC supports three realtime platforms
de: LinuxCNC ist eine Werkzeugmaschinensteuerung, und es erfordert eine Echtzeit-Plattform, um diesen Anforderungen gerechtzuwerden. Diese Version von LinuxCNC unterstützt drei Echtzeit-Plattformen

note: type: Plain text
en: From https://www.rtai.org. A Linux kernel with the RTAI patch is available from the Debian archive at http://www.linuxcnc.org. See <<cha:getting-linuxcnc,Getting LinuxCNC>> for installation instructions.
de: Von https://www.rtai.org. Ein Linux-Kernel mit dem RTAI-Patch ist aus dem Debian-Archiv unter http://www.linuxcnc.org erhältlich. Siehe <<cha:getting-linuxcnc,Getting LinuxCNC>> für Installationsanweisungen.

note: type: Plain text
en: From https://xenomai.org. You will have to compile or obtain a Xenomai kernel yourself.
de: Von https://xenomai.org. Sie müssen einen Xenomai-Kernel selbst kompilieren oder beziehen.

note: type: Plain text
en: From https://rt.wiki.kernel.org. A Linux kernel with the Preempt-RT patch is occasionally available from the Debian archive at https://www.debian.org, and from the wayback machine at https://snapshot.debian.org.
de: Von https://rt.wiki.kernel.org. Ein Linux-Kernel mit dem Preempt-RT-Patch ist gelegentlich im Debian-Archiv unter https://www.debian.org und in der Wayback Machine unter https://snapshot.debian.org verfügbar.

note: type: Plain text
en: To make use of the realtime capabilities of LinuxCNC, certain parts of LinuxCNC need to run with root privileges.  To enable root for these parts, run this extra command after the `make` that builds LinuxCNC:
de: Um die Echtzeit-Fähigkeiten von LinuxCNC zu nutzen, müssen bestimmte Teile von LinuxCNC mit root-Rechten laufen.  Um root für diese Teile zu aktivieren, führen Sie diesen zusätzlichen Befehl nach dem `make` aus, der LinuxCNC baut:

note: type: Title ===
en: Non-realtime
de: Nicht in Echtzeit

note: type: Plain text
en: LinuxCNC can also be built and run on non-realtime platforms, such as a regular install of Debian or Ubuntu without any special realtime kernel.
de: LinuxCNC kann auch auf Nicht-Echtzeit-Plattformen, wie z.B. einer normalen Installation von Debian oder Ubuntu ohne speziellen Echtzeit-Kernel, gebaut und ausgeführt werden.

note: type: Plain text
en: In this mode LinuxCNC is not useful for controlling machine tools, but it is useful for simulating the execution of G-code and for testing the non-realtime parts of the system (such as the user interfaces, and some kinds of components and device drivers).
de: In diesem Modus ist LinuxCNC nicht nützlich für die Steuerung von Werkzeugmaschinen, aber es ist nützlich für die Simulation der Ausführung von G-Code und für die Prüfung der Nicht-Echtzeit-Teile des Systems (wie die Benutzeroberflächen, und einige Arten von Komponenten und Gerätetreiber).

note: type: Title ==
en: Build modes
de: Build-Modi

note: type: Plain text
en: There are two ways to build LinuxCNC: the developer-friendly "run in place" mode and the user-friendly Debian packaging mode.
de: Es gibt zwei Möglichkeiten, LinuxCNC zu bauen: den entwicklerfreundlichen "run in place" Modus und den benutzerfreundlichen Debian-Packaging-Modus.

note: type: Title ===
en: Building for Run In Place
de: Kompilieren (bauen) für eine Ausführung ohne Installation ("run-in-place")

note: type: Plain text
en: In a Run-In-Place build, the LinuxCNC programs are compiled from source and then run directly from within the build directory.  Nothing is installed outside the build directory.
de: In einem Run-In-Place-Build werden die LinuxCNC-Programme aus den Quellen kompiliert und dann direkt aus dem Build-Verzeichnis ausgeführt.  Nichts wird außerhalb des Build-Verzeichnisses installiert.

note: type: Plain text
en: This is quick and easy, and suitable for rapid iteration of changes.
de: Dies ist schnell und einfach und eignet sich für schnelle Iterationen von Änderungen.

note: type: Plain text
en: The LinuxCNC test suite runs only in a Run-In-Place build.
de: Die LinuxCNC Test-Suite läuft nur in einem Run-In-Place-Build.

note: type: Plain text
en: Most LinuxCNC developers primarily build using this mode.
de: Die meisten LinuxCNC-Entwickler bauen hauptsächlich auf diese Weise.

note: type: Plain text
en: Building for Run-In-Place follows the steps in the <<Quick-Start,Quick Start>> section at the top of this document, possibly with different arguments to `src/configure` and `make`.
de: Das Bauen für Run-In-Place folgt den Schritten im <<Quick-Start,Schneller Einstieg>> Abschnitt am Anfang dieses Dokuments, möglicherweise mit anderen Argumenten für `src/configure` und `make`.

note: type: Title ====
en: `src/configure` arguments
de: `src/configure` Argumente

note: type: Plain text
en: The `src/configure` script configures how the source code will be compiled.  It takes many optional arguments.
de: Das Skript `src/configure` konfiguriert, wie der Quellcode kompiliert werden soll.  Es nimmt viele optionale Argumente entgegen.

note: type: Plain text
en: List all arguments to `src/configure` by running this:
de: Alle Argumente für `src/configure` auflisten, indem man dies ausführt:

note: type: delimited block -
en: $ cd linuxcnc-dev/src
    $ ./configure --help
de: >$ cd linuxcnc-dev/src
    >$ ./configure --help

note: type: Plain text
en: The most commonly used arguments are:
de: Die am häufigsten verwendeten Argumente sind:

note: type: Plain text
en: Build for any realtime platform, or for non-realtime.  The resulting LinuxCNC executables will run on both a Linux kernel with Preempt-RT patches (providing realtime machine control) and on a vanilla (un-patched) Linux kernel (providing G-code simulation but no realtime machine control).  If development files are installed for Xenomai (typically from package libxenomai-dev) or RTAI (typically from a package with a name starting "rtai-modules"), support for these real-time kernels will also be enabled.
de: Bauen für jede Echtzeit-Plattform, oder für Nicht-Echtzeit.  Die resultierenden ausführbaren Dateien von LinuxCNC laufen sowohl auf einem Linux-Kernel mit Preempt-RT-Patches (mit Echtzeit-Maschinenkontrolle) als auch auf einem reguälren (ungepatchten) Linux-Kernel (mit G-Code-Simulation, aber ohne Echtzeit-Maschinenkontrolle).  Wenn Entwicklungsdateien für Xenomai (typischerweise aus dem Paket libxenomai-dev) oder RTAI (typischerweise aus einem Paket, dessen Name mit "rtai-modules" beginnt) installiert sind, wird die Unterstützung für diese Echtzeit-Kernel ebenfalls aktiviert.

note: type: Plain text
en: Build for the RTAI realtime platform using the older "kernel realtime" model.  This requires that you have an RTAI kernel and the RTAI modules installed in `/usr/realtime-$VERSION`. The resulting LinuxCNC executables will only run on the specified RTAI kernel. As of LinuxCNC 2.7, this produces the best realtime performance.
de: Bauen Sie für die RTAI-Echtzeitplattform unter Verwendung des älteren "Echtzeit-Kernel" Pakets.  Dies erfordert, dass Sie einen RTAI-Kernel und die RTAI-Module in `/usr/realtime-$VERSION` installiert haben. Die resultierenden ausführbare Dateien von LinuxCNC werden nur auf dem angegebenen RTAI-Kernel laufen. Ab LinuxCNC 2.7, produziert dies die beste Echtzeit-Leistung.

note: type: Plain text
en: Build the documentation, in addition to the executables.  This option adds significantly to the time required for compilation, as building the docs is quite time consuming.  If you are not actively working on the documentation you may want to omit this argument.
de: Erstellt die Dokumentation zusätzlich zu den ausführbaren Dateien.  Diese Option erhöht den Zeitaufwand für die Kompilierung erheblich, da die Erstellung der Dokumentation recht zeitaufwendig ist.  Wenn Sie nicht aktiv an der Dokumentation arbeiten, sollten Sie dieses Argument weglassen.

note: type: Title ====
en: `make` arguments
de: `make` Argumente

note: type: Plain text
en: The `make` command takes two useful optional arguments.
de: Der Befehl 'make' akzeptiert zwei nützliche optionale Argumente.

note: type: Labeled list
en: Parallel compilation
de: Parallele Kompilierung

note: type: Plain text
en: `make` takes an optional argument `-jN` (where N is a number).  This enables parallel compilation with N simultaneous processes, which can significantly speed up your build.
de: `make` nimmt ein optionales Argument `-jN` (wobei N eine Zahl ist).  Dies ermöglicht die parallele Kompilierung mit N gleichzeitigen Prozessen, was Ihre Erstellung erheblich beschleunigen kann.

note: type: Plain text
en: A useful value for N is the number of CPUs in your build system.  You can discover the number of CPUs by running `nproc`.
de: Ein nützlicher Wert für N ist die Anzahl der CPUs in Ihrem Build-System.  Sie können die Anzahl der CPUs ermitteln, indem Sie `nproc` ausführen.

note: type: Labeled list
en: Building just a specific target
de: Bauen nur eines bestimmten Ziels

note: type: Plain text
en: If you want to build just a specific part of LinuxCNC, you can name the thing you want to build on the `make` command line.  For example, if you are working on a component named `froboz`, you can build its executable by running:
de: Wenn Sie nur einen bestimmten Teil von LinuxCNC bauen wollen, können Sie das, was Sie bauen wollen, in der Kommandozeile `make` nennen.  Wenn Sie zum Beispiel an einer Komponente namens "froboz" arbeiten, können Sie seine ausführbare Datei zu bauen, indem Sie:

note: type: Title ===
en: Building Debian Packages
de: Debian-Pakete erstellen

note: type: Plain text
en: When building Debian packages, the LinuxCNC programs are compiled from source and then stored in a Debian package, complete with dependency information.  This takes more time, and the programs can't be used until the Debian package is installed on a target machine.
de: Beim Erstellen von Debian-Paketen werden die LinuxCNC-Programme aus dem Quellcode kompiliert und dann in einem Debian-Paket gespeichert, komplett mit Abhängigkeitsinformationen.  Dies nimmt mehr Zeit in Anspruch, und die Programme können nicht verwendet werden, bis das Debian-Paket auf einer Zielmaschine installiert ist.

note: type: Plain text
en: This build mode is primarily useful when packaging the software for delivery to end users, and when building the software for a machine that doesn't have the build environment installed, or that doesn't have internet access.
de: Diese Art des Bauens ist vor allem dann nützlich, wenn die Software für die Auslieferung an Endbenutzer verpackt werden soll und wenn die Software für einen Rechner erstellt werden soll, auf dem die Build-Umgebung nicht installiert ist oder der keinen Internetzugang hat.

note: type: Plain text
en: Building Debian packages requires the `dpkg-buildpackage` tool, from the `dpkg-dev` package:
de: Das Erstellen von Debian-Paketen erfordert das Hilfsprogramm`dpkg-buildpackage` aus dem Paket `dpkg-dev`:

note: type: Plain text
en: Building Debian packages also requires that all build dependencies are installed, as described in the section <<Satisfying-Build-Dependencies, Satisfying Build Dependencies>>.
de: Das Bauen von Debian-Paketen erfordert auch, dass alle Build-Abhängigkeiten installiert sind, wie im Abschnitt <<Satisfying-Build-Dependencies, Satisfying Build Dependencies>> beschrieben.

note: type: Plain text
en: Once those prerequisites are met, building the Debian packages consists of two steps.
de: Sobald diese Voraussetzungen erfüllt sind, besteht die Erstellung der Debian-Pakete aus zwei Schritten.

note: type: Plain text
en: The first step is generating the Debian package scripts and meta-data from the git repo by running this:
de: Der erste Schritt ist die Generierung der Debian-Paket-Skripte und Metadaten aus dem Git-Repositorium, indem Sie dies ausführen:

note: type: delimited block =
en: The `debian/configure` script is different from the `src/configure` script!
de: Das Skript `debian/configure` unterscheidet sich von dem Skript `src/configure`!

note: type: delimited block =
en: The `debian/configure` script needs different arguments depending on the platform you're building on/for, see the <<debian-configure-arguments, `debian/configure` arguments>> section.
de: Das `debian/configure` Skript benötigt verschiedene Argumente, abhängig von der Plattform, auf der/für die Sie bauen, siehe den <<debian-configure-arguments, `debian/configure` Argumente>> Abschnitt.

note: type: Plain text
en: Once the Debian package scripts and meta-data are configured, build the package by running `dpkg-buildpackage` (note that it needs to run from the `linuxcnc-dev` directory, *not* from `linuxcnc-dev/debian`):
de: Sobald die Debian-Paket-Skripte und Meta-Daten konfiguriert sind, bauen Sie das Paket, indem Sie `dpkg-buildpackage` ausführen (beachten Sie, dass es in dem Verzeichnis `linuxcnc-dev` ausgeführt werden muss, *nicht* in `linuxcnc-dev/debian`):

note: type: Title ====
en: `debian/configure` arguments
de: `debian/configure` Argumente

note: type: Plain text
en: The `debian/configure` script configures the Debian packaging.  It must be run before `dpkg-checkbuilddeps` and `dpkg-buildpackage` can be run.
de: Das Skript `debian/configure` konfiguriert das Debian-Paket.  Es muss ausgeführt werden, bevor `dpkg-checkbuilddeps` und `dpkg-buildpackage` ausgeführt werden können.

note: type: Plain text
en: It takes a single argument which specifies the realtime or non-realtime platform to build for.  The normal values for this argument are:
de: Es erwartet ein einziges Argument, das die Echtzeit- oder Nicht-Echtzeit-Plattform angibt, für die gebaut werden soll.  Die normalen Werte für dieses Argument sind:

note: type: Plain text
en: Configure the Debian package for Preempt-RT realtime or for non-realtime (these two are compatible).
de: Konfigurieren Sie das Debian-Paket für Preempt-RT-Echtzeit oder für Nicht-Echtzeit (diese beiden sind kompatibel).

note: type: Plain text
en: Normally, the lists of RTOSes for uspace realtime to support is detected automatically.  However, if you wish, you may specify one or more of these after `uspace` to enable support for these RTOSes.  Or, to disable autodetection, specify `noauto`.
de: Normalerweise wird die Liste der RTOS, die uspace Echtzeit unterstützen soll, automatisch erkannt.  Wenn Sie möchten, können Sie jedoch eine oder mehrere dieser Optionen nach `uspace` angeben, um die Unterstützung für diese RTOS zu aktivieren.  Um die automatische Erkennung zu deaktivieren, geben Sie `noauto` an.

note: type: Plain text
en: If you want just the traditional RTAI "kernel module" realtime, use `-r` or `$KERNEL_VERSION` instead.
de: Wenn Sie nur die traditionelle RTAI "Kernel-Modul" Echtzeit wollen, verwenden Sie stattdessen `-r` oder `$KERNEL_VERSION`.

note: type: Plain text
en: If the development package for rtai lxrt does not start with "rtai-modules", or if the first such package listed by apt-cache search is not the desired one, then explicitly specify the package name.
de: Wenn das Entwicklungspaket für rtai lxrt nicht mit "rtai-modules" beginnt, oder wenn das erste von apt-cache search aufgelistete Paket nicht das gewünschte ist, geben Sie den Paketnamen explizit an.

note: type: Plain text
en: Configure the Debian package for the currently running RTAI kernel.  You must be running an RTAI kernel on your build machine for this to work!
de: Konfigurieren Sie das Debian-Paket für den aktuell laufenden RTAI-Kernel.  Sie müssen einen RTAI-Kernel auf Ihrer Build-Maschine laufen haben, damit dies funktioniert!

note: type: Plain text
en: Configure the debian package for the specified RTAI kernel version (for example "3.4.9-rtai-686-pae").  The matching kernel headers debian package must be installed on your build machine (for example "linux-headers-3.4.9-rtai-686-pae").  Note that you can _build_ LinuxCNC in this configuration, but if you are not running the matching RTAI kernel you will not be able to _run_ LinuxCNC, including the test suite.
de: Konfigurieren Sie das Debian-Paket für die angegebene RTAI-Kernel-Version (zum Beispiel "3.4.9-rtai-686-pae").  Das passende Kernel-Headers-Debian-Paket muss auf Ihrer Build-Maschine installiert sein (zum Beispiel "linux-headers-3.4.9-rtai-686-pae").  Beachten Sie, dass Sie LinuxCNC in dieser Konfiguration _erstellen_ können, aber wenn Ihr Rechner nicht auch mit dem passenden RTAI-Kernel läuft, können Sie LinuxCNC nicht _ausführen_, auch die Test-Suite nicht.

note: type: Title ==
en: Satisfying Build Dependencies
de: Erfüllen von Build-Abhängigkeiten

note: type: Plain text
en: On Debian-based platforms we provide packaging meta-data that knows what external software packages need to be installed in order to build LinuxCNC.  This is called the Build Dependencies of LinuxCNC.  You can use this meta-data to easily list the required packages missing from your build system.
de: Auf Debian-basierenden Plattformen bieten wir Paketierungs-Metadaten, die wissen, welche externen Softwarepakete installiert werden müssen, um LinuxCNC zu bauen.  Dies wird Build-Abhängigkeiten von LinuxCNC genannt.  Sie können diese Metadaten verwenden, um die erforderlichen Pakete direkt einzusehen, die in Ihrem Build-System fehlen.

note: type: Plain text
en: Debian systems provide a program called `dpkg-checkbuilddeps` that parses the package meta-data and compares the packages listed as build dependencies against the list of installed packages, and tells you what's missing.
de: Debian-Systeme bieten ein Programm namens `dpkg-checkbuilddeps`, das die Paket-Metadaten analysiert und die als Build-Abhängigkeiten aufgelisteten Pakete mit der Liste der installierten Pakete vergleicht und Ihnen sagt, was fehlt.

note: type: Plain text
en: First, install the `dpkg-checkbuilddeps` program by running:
de: Installieren Sie zuerst das Programm `dpkg-checkbuilddeps`, indem Sie es ausführen:

note: type: Plain text
en: Then ask your LinuxCNC git checkout to generate its Debian package meta-data:
de: Dann bitten Sie Ihren LinuxCNC git checkout, seine Debian-Paket-Metadaten zu generieren:

note: type: Plain text
en: Finally ask `dpkg-checkbuilddeps` to do its job (note that it needs to run from the `linuxcnc-dev` directory, *not* from `linuxcnc-dev/debian`):
de: Schließlich bitten Sie `dpkg-checkbuilddeps`, seine Arbeit zu tun (beachten Sie, dass es aus dem Verzeichnis `linuxcnc-dev` ausgeführt werden muss, *nicht* aus `linuxcnc-dev/debian`):

note: type: Plain text
en: It will emit a list of packages that are required to build LinuxCNC on your system, but that are not installed yet.  Install them all with `sudo apt-get install`, followed by the package names.
de: Es wird eine Liste von Paketen ausgegeben, die erforderlich sind, um LinuxCNC auf Ihrem System zu bauen, die aber noch nicht installiert sind.  Installieren Sie sie alle mit `sudo apt-get install`, gefolgt von den Paketnamen.

note: type: Plain text
en: You can rerun `dpkg-checkbuilddeps` any time you want, to list any missing packages.
de: Sie können `dpkg-checkbuilddeps` jederzeit erneut ausführen, um alle fehlenden Pakete aufzulisten.

note: type: Title ==
en: Setting up the environment
de: Einrichten der Umgebung

note: type: Plain text
en: This section describes the special steps needed to set up a machine to run the LinuxCNC programs, including the tests.
de: Dieser Abschnitt beschreibt die speziellen Schritte, die benötigt werden, um eine Maschine einzurichten, um die LinuxCNC-Programme auszuführen, einschließlich der Tests.

note: type: Title ===
en: Increase the locked memory limit
de: Erhöhen Sie das Limit für den gesperrten Speicher

note: type: Plain text
en: LinuxCNC tries to improve its realtime latency by locking the memory it uses into RAM.  It does this in order to prevent the operating system from swapping LinuxCNC out to disk, which would have bad effects on latency.
de: LinuxCNC versucht, seine Echtzeit-Latenz zu verbessern, indem es den Speicher, den es verwendet, im RAM sperrt.  Es tut dies, um zu verhindern, dass das Betriebssystem von Swapping LinuxCNC auf der Festplatte, die schlechte Auswirkungen auf die Latenz haben würde.

note: type: Plain text
en: Normally locking memory into RAM is frowned upon, and the operating system places a strict limit on how much memory a user is allowed to have locked.
de: Normalerweise ist es verpönt, Speicher in den Arbeitsspeicher zu sperren, und das Betriebssystem setzt eine strenge Grenze dafür, wie viel Speicher ein Benutzer sperren darf.

note: type: Plain text
en: When using the Preempt-RT realtime platform LinuxCNC runs with enough privilege to raise its memory lock limit itself.  When using the RTAI realtime platform it does not have enough privilege, and the user must raise the memory lock limit.
de: Bei Verwendung der Preempt-RT-Echtzeitplattform läuft LinuxCNC mit genügend Privilegien, um seine Speichersperrgrenze selbst zu erhöhen.  Bei Verwendung der RTAI-Echtzeit-Plattform hat es nicht genug Privilegien, und der Benutzer muss die Speichersperre Grenze zu erhöhen.

note: type: Plain text
en: If LinuxCNC displays the following message on startup, the problem is your system's configured limit on locked memory:
de: Wenn LinuxCNC beim Start folgende Meldung zeigt, ist das Problem die für Ihre System konfigurierte Grenze des gesperrten Speichers:

note: type: Plain text
en: To fix this problem, add a file named `/etc/security/limits.d/linuxcnc.conf` (as root) with your favorite text editor (e.g., `sudo gedit /etc/security/limits.d/linuxcnc.conf`).  The file should contain the following line:
de: Um dieses Problem zu beheben, fügen Sie eine Datei namens `/etc/security/limits.d/linuxcnc.conf` (als root) mit Ihrem bevorzugten Texteditor hinzu (z.B. `sudo gedit /etc/security/limits.d/linuxcnc.conf`).  Die Datei sollte die folgende Zeile enthalten:

note: type: Plain text
en: Log out and log back in to make the changes take effect.  Verify that the memory lock limit is raised using the following command:
de: Melden Sie sich ab und wieder an, damit die Änderungen wirksam werden.  Überprüfen Sie mit dem folgenden Befehl, ob die Speichersperrgrenze angehoben wurde:

note: type: Title ==
en: Options for checking out the git repo
de: Optionen zum Auschecken des Git-Repos

note: type: Plain text
en: The <<Quick-Start,Quick Start>> instructions at the top of this document clone our git repo at https://github.com/LinuxCNC/linuxcnc.git.  This is the quickest, easiest way to get started.  However, there are other options to consider.
de: Die <<Quick-Start,Schnellstart>> Anleitung am Anfang dieses Dokuments klont unser Git-Repository auf https://github.com/LinuxCNC/linuxcnc.git.  Dies ist der schnellste und einfachste Weg um loszulegen.  Es gibt jedoch auch noch andere Optionen, die Sie in Betracht ziehen sollten.

note: type: Title ===
en: Fork us on Github
de: Forken Sie uns auf Github

note: type: Plain text
en: The LinuxCNC project git repo is at http://github.com/LinuxCNC/linuxcnc.  github is a popular git hosting service and code sharing website.  You can easily (and for no cost) create a fork of our git repo at github, and use that to track and publish your changes.
de: Das LinuxCNC Projekt git repo ist auf http://github.com/LinuxCNC/linuxcnc. github ist ein beliebter git Hosting-Service und Code-Sharing-Website.  Sie können ganz einfach (und kostenlos) einen Fork unseres Git-Repos bei Github erstellen und diesen verwenden, um Ihre Änderungen zu verfolgen und zu veröffentlichen.

note: type: Plain text
en: After creating your own github fork of LinuxCNC, clone it to your development machine and proceed with your hacking as usual.
de: Nachdem Sie Ihren eigenen Github-Fork von LinuxCNC erstellt haben, klonen Sie ihn auf Ihren Entwicklungsrechner und fahren Sie wie gewohnt mit den von Ihnen gwünschten Änderungen (gerne auch "hacking" genannt) fort.

note: type: Plain text
en: We of the LinuxCNC project hope that you will share your changes with us, so that the community can benefit from your work.  Github makes this sharing very easy: after you polish your changes and push them to your github fork, send us a Pull Request.
de: Wir vom LinuxCNC-Projekt hoffen, dass Sie Ihre Änderungen mit uns teilen werden, damit die Gemeinschaft von Ihrer Arbeit profitieren kann.  Github macht dieses Teilen sehr einfach: Nachdem Sie Ihre Änderungen aufpoliert und in Ihren Github-Fork gepusht haben, schicken Sie uns einen Pull Request.

note: type: Title ==
en: Code Notes
de: Code Anmerkungen

note: type: Title ==
en: Intended audience
de: Zielgruppe

note: type: Plain text
en: This document is a collection of notes about the internals of LinuxCNC. It is primarily of interest to developers, however much of the information here may also be of interest to system integrators and others who are simply curious about how LinuxCNC works. Much of this information is now outdated and has never been reviewed for accuracy.
de: Dieses Dokument ist eine Sammlung von Notizen über die Interna von LinuxCNC. Es ist in erster Linie von Interesse für Entwickler, aber viele der Informationen hier kann auch von Interesse für Systemintegratoren und andere, die einfach nur neugierig, wie LinuxCNC funktioniert sind. Viele dieser Informationen ist jetzt veraltet und wurde nie für die Richtigkeit überprüft.

note: type: Title ==
en: Organization
de: Organisation

note: type: Plain text
en: There will be a chapter for each of the major components of LinuxCNC, as well as chapter(s) covering how they work together. This document is very much a work in progress, and its layout may change in the future.
de: Es wird ein Kapitel für jede der Hauptkomponenten von LinuxCNC geben. Weitere Kapitel erklären, wie die Komponenten zusammenarbeiten. Dieses Dokument wird derzeit noch stark überarbeitet. Entprechend mag sich sein Layout/Zusammenstellung in der Zukunft noch ändern.

note: type: Title ==
en: Terms and definitions
de: Begriffe und Definitionen

note: type: Plain text
en: 'AXIS' - An axis is one of the nine degrees of freedom that define a tool position in three-dimensional Cartesian space. Those nine axes are referred to as X, Y, Z, A, B, C, U, V, and W. The linear orthogonal coordinates X, Y, and Z determine where the tip of the tool is positioned. The angular coordinates A, B, and C determine the tool orientation. A second set of linear orthogonal coordinates U, V, and W allows tool motion (typically for cutting actions) relative to the previously offset and rotated axes.  Unfortunately "axis" is also sometimes used to mean a degree of freedom of the machine itself, such as the saddle, table, or quill of a Bridgeport type milling machine. On a Bridgeport this causes no confusion, since movement of the table directly corresponds to movement along the X axis. However, the shoulder and elbow joints of a robot arm and the linear actuators of a hexapod do not correspond to movement along any Cartesian axis, and in general it is important to make the distinction between the Cartesian axes and the machine degrees of freedom. In this document, the latter will be called 'joints', not axes. The GUIs and some other parts of the code may not always follow this distinction, but the internals of the motion controller do.
de: 'AXIS' - Eine Achse ist einer der neun Freiheitsgrade, die eine Werkzeugposition im dreidimensionalen kartesischen Raum definieren. Diese neun Achsen werden als X, Y, Z, A, B, C, U, V und W bezeichnet. Die linearen orthogonalen Koordinaten X, Y und Z bestimmen, wo die Werkzeugspitze positioniert ist. Die Winkelkoordinaten A, B und C bestimmen die Ausrichtung des Werkzeugs. Ein zweiter Satz linearer orthogonaler Koordinaten U, V und W ermöglicht die Bewegung des Werkzeugs (in der Regel für Schneidvorgänge) relativ zu den zuvor versetzten und gedrehten Achsen. Leider wird der Begriff "Achse" manchmal auch für einen Freiheitsgrad der Maschine selbst verwendet, z. B. für den Schlitten, den Tisch oder die Pinole einer Bridgeport-Fräsmaschine. Bei einer Bridgeport-Maschine führt dies nicht zu Verwirrung, da die Bewegung des Tisches direkt einer Bewegung entlang der X-Achse entspricht. Die Schulter- und Ellbogengelenke eines Roboterarms und die Linearantriebe eines Hexapods entsprechen jedoch keiner Bewegung entlang einer kartesischen Achse, und im Allgemeinen ist es wichtig, zwischen den kartesischen Achsen und den Freiheitsgraden der Maschine zu unterscheiden. In diesem Dokument werden letztere als 'Gelenke' und nicht als Achsen bezeichnet. Die grafischen Benutzeroberflächen und einige andere Teile des Quellcodes folgen dieser Unterscheidung vielleicht nicht immer, aber die Interna des "Motion Controllers" schon.

note: type: Plain text
en: 'JOINT' - A joint is one of the movable parts of the machine. Joints are distinct from axes, although the two terms are sometimes (mis)used to mean the same thing. In LinuxCNC, a joint is a physical thing that can be moved, not a coordinate in space. For example, the quill, knee, saddle, and table of a Bridgeport mill are all joints. The shoulder, elbow, and wrist of a robot arm are joints, as are the linear actuators of a hexapod. Every joint has a motor or actuator of some type associated with it. Joints do not necessarily correspond to the X, Y, and Z axes, although for machines with trivial kinematics that may be the case.  Even on those machines, joint position and axis position are fundamentally different things. In this document, the terms 'joint' and 'axis' are used carefully to respect their distinct meanings.  Unfortunately that isn't necessarily true everywhere else. In particular, GUIs for machines with trivial kinematics may gloss over or completely hide the distinction between joints and axes. In addition, the INI file uses the term 'axis' for data that would more accurately be described as joint data, such as input and output scaling, etc.
de: 'GELENK' (engl. 'JOINT')- Ein Gelenk ist eines der beweglichen Teile der Maschine. Gelenke unterscheiden sich von Achsen, obwohl die beiden Begriffe manchmal (fälschlicherweise) für dieselbe Sache verwendet werden. In LinuxCNC ist ein Gelenk einer physikalischen Sache, die bewegt werden kann, nicht eine Koordinate im Raum. Zum Beispiel sind die Pinole, das Knie, der Sattel und der Tisch einer Bridgeport-Fräse alles Gelenke. Die Schulter, der Ellbogen und das Handgelenk eines Roboterarms sind Gelenke, ebenso wie die Linearaktuatoren eines Hexapods. Jedem Gelenk ist ein Motor oder Aktuator zugeordnet. Gelenke entsprechen nicht unbedingt den X-, Y- und Z-Achsen, obwohl dies bei Maschinen mit trivialer Kinematik der Fall sein kann. Selbst bei diesen Maschinen sind die Position des Gelenks und die Position der Achsen grundlegend verschieden. In diesem Dokument werden die Begriffe 'Gelenk' und 'Achse' sorgfältig verwendet, um ihre unterschiedlichen Bedeutungen zu berücksichtigen.  Leider trifft das nicht unbedingt überall zu. Insbesondere GUIs für Maschinen mit trivialer Kinematik können die Unterscheidung zwischen Gelenken und Achsen beschönigen oder ganz ausblenden. Darüber hinaus wird in der .ini-Datei der Begriff 'Achse' für Daten verwendet, die eher als Gelenkdaten zu bezeichnen sind, wie z. B. Eingangs- und Ausgangsskalierung usw.

note: type: Plain text
en: This distinction was made in version 2.8 of LinuxCNC.  The INI file got a new section [JOINT_<num>]. Many of the parameters that were previously proper to the [AXIS_<letter>] section are now in the new section. Other sections, such as [KINS], also take on new parameters to match this.  An update script has been provided to transform old INI files to the new axes/joints configuration.
de: Diese Unterscheidung wird seit Version 2.8 von LinuxCNC vorgenommen. Die .ini-Datei bekam einen neuen Abschnitt [JOINT_<num>]. Viele der Parameter, die zuvor ordnungsgemäß zu dem [AXIS_<letter>] Abschnitt sind jetzt in dem neuen Abschnitt. Andere Abschnitte, wie [KINS], erhalten ebenfalls neue Parameter. Es wurde ein Update-Skript bereitgestellt, um alte .ini-Dateien in die neue Achsen/Gelenke-Konfiguration umzuwandeln.

note: type: Plain text
en: 'POSE' - A pose is a fully specified position in 3D Cartesian space. In the LinuxCNC motion controller, when we refer to a pose we mean an EmcPose structure, containing six linear coordinates (X, Y, Z, U, V, and W) and three angular ones (A, B, and C).
de: 'POSE' - Eine Pose ist eine vollständig spezifizierte Position im kartesischen 3D-Raum. In der LinuxCNC Motion Controller, wenn wir uns auf eine Pose beziehen, meinen wir eine EmcPose Struktur, welche die sechs linearen Koordinaten (X, Y, Z, U, V, und W) und die drei Winkelkoordinaten (A, B, und C) enthält.

note: type: Plain text
en: 'coord', or coordinated mode, means that all articulations are synchronized and they move together as directed by the higher-level code. It is the normal mode when machining.  In coordinated mode, commands are assumed to be given in the Cartesian reference frame, and if the machine is not Cartesian, the commands are translated by the kinematics to drive each joint into the joint space as needed.
de: 'coord', oder koordinierter Modus, bedeutet, dass alle Gelenke synchronisiert sind und sich zusammen bewegen, wie vom übergeordneten Code angewiesen. Dies ist der normale Modus für die Bearbeitung.  Im koordinierten Modus wird davon ausgegangen, dass die Befehle im kartesischen Referenzrahmen gegeben werden. Wenn die Maschine nicht kartesisch ist, werden die Befehle von der Kinematik übersetzt, um jedes Gelenk wie erforderlich in den Gelenkraum zu bewegen.

note: type: Plain text
en: 'free' means that commands are interpreted in joint space.  It is used to manually move (jog) individual joints, although it does not prevent them from moving multiple joints at once (I think).  Homing is also done in free mode; in fact, machines with non-trivial kinematics must be homed before they can go into coord or teleop mode.
de: 'frei' bedeutet, dass die Befehle im Gelenkraum interpretiert werden.  Dieser wird verwendet, um einzelne Gelenke manuell zu bewegen (engl. Maschinisten-Slang: jogging), obwohl er nicht verhindert, dass mehrere Gelenke gleichzeitig bewegt werden (glaube ich).  Die Referenzfahrt wird ebenfalls im freien Modus durchgeführt; Maschinen mit nicht-trivialer Kinematik müssen erst referenziert werden, bevor sie in den Koordinaten- oder Teleop-Modus wechseln können.

note: type: Plain text
en: 'teleop' is the mode you probably need if you are jogging with a hexapod.  The jog commands implemented by the motion controller are joint jogs, which work in free mode. But if you want to move a hexapod or similar machine along a cartesian axis in particular, you must operate more than one joint.  That's what 'teleop' is for.
de: 'teleop' ist der Modus, den Sie wahrscheinlich brauchen, wenn Sie mit einem Hexapod joggen.  Die vom Motion Controller implementierten Jog-Befehle sind Gelenk-Jogs, die im freien Modus funktionieren. Aber wenn Sie einen Hexapod oder eine ähnliche Maschine insbesondere entlang einer kartesischen Achse bewegen wollen, müssen Sie mehr als ein Gelenk betätigen.  Dafür ist 'teleop' gedacht.

note: type: Title ==
en: Architecture overview
de: Architekturübersicht

note: type: Plain text
en: There are four components contained in the LinuxCNC Architecture: a motion controller (EMCMOT), a discrete IO controller (EMCIO), a task executor which coordinates them (EMCTASK) and several text-mode and graphical User Interfaces. Each of them will be described in the current document, both from the design point of view and from the developers point of view (where to find needed data, how to easily extend/modify things, etc.).
de: Die LinuxCNC-Architektur besteht aus vier Komponenten: einem Motion-Controller (EMCMOT), einem diskreten IO-Controller (EMCIO), einem Task-Executor, der diese koordiniert (EMCTASK) und mehreren textbasierten und grafischen Benutzerschnittstellen. Jede dieser Schnittstellen wird in diesem Dokument beschrieben, sowohl aus der Sicht des Designs als auch aus der Sicht der Entwickler (wo findet man benötigte Daten, wie kann man Dinge einfach erweitern/verändern, usw.).

note: type: Title ===
en: LinuxCNC software architecture
de: LinuxCNC-Softwarearchitektur

note: type: Plain text
en: At the coarsest level, LinuxCNC is a hierarchy of three controllers: the task level command handler and program interpreter, the motion controller, and the discrete I/O controller. The discrete I/O controller is implemented as a hierarchy of controllers, in this case for spindle, coolant, and auxiliary (e.g., estop, lube)  subsystems. The task controller coordinates the actions of the motion and discrete I/O controllers. Their actions are programmed in conventional numerical control "G and M code" programs, which are interpreted by the task controller into NML messages and sent to either the motion or discrete I/O controllers at the appropriate times.
de: Auf der gröbsten Ebene ist LinuxCNC eine Hierarchie von drei Controllern: der Task-Level-Befehlshandler und Programminterpreter, der Motion-Controller und der diskrete E/A-Controller (engl. I/O). Der diskrete E/A-Controller ist als eine Hierarchie von Controllern implementiert, in diesem Fall für Spindel-, Kühlmittel- und Hilfs-Subsysteme (z. B. Notaus, Schmierung). Der Task-Controller koordiniert die Aktionen der Bewegungssteuerung und der diskreten E/A-Steuerung. Deren Aktionen werden in konventionellen numerischen Steuerungs- "G- und M-Code" Programmen programmiert, die von der Aufgabensteuerung in NML-Nachrichten interpretiert und zu den entsprechenden Zeitpunkten entweder an die Bewegungssteuerung oder die diskreten E/A-Steuerungen gesendet werden.

note: type: Title ==
en: Motion Controller Introduction
de: Motion Controller Einführung

note: type: Plain text
en: The motion controller receives commands from user space modules via a shared memory buffer, and executes those commands in realtime. The status of the controller is made available to the user space modules through the same shared memory area. The motion controller interacts with the motors and other hardware using the HAL (Hardware Abstraction Layer). This document assumes that the reader has a basic understanding of the HAL, and uses terms like HAL pins, HAL signals, etc, without explaining them. For more information about the HAL, see the HAL Manual. Another chapter of this document will eventually go into the internals of the HAL itself, but in this chapter, we only use the HAL API as defined in src/hal/hal.h.
de: Die Bewegungssteuerung (engl. motion controller) empfängt Befehle von Anwendermodulen über einen geteilten (engl. shared) Speicherbereich und führt diese Befehle in Echtzeit aus. Der Status des Controllers wird den User-Space-Modulen über denselben gemeinsamen Speicherbereich zur Verfügung gestellt. Der Motion Controller interagiert mit den Motoren und anderer Hardware über die HAL (Hardware Abstraction Layer). In diesem Dokument wird davon ausgegangen, dass der Leser über ein grundlegendes Verständnis des HAL verfügt, und es werden Begriffe wie HAL-Pins, HAL-Signale usw. verwendet, ohne sie zu erläutern. Weitere Informationen über den HAL finden Sie im HAL-Handbuch. Ein weiteres Kapitel dieses Dokuments wird sich mit den Interna des HAL selbst befassen, aber in diesem Kapitel verwenden wir nur die HAL-API wie sie in src/hal/hal.h definiert ist.

note: type: Title ===
en: Motion Controller Modules
de: Bewegungssteuerungs- (engl. Motion-Controller-)Module

note: type: Plain text
en: The realtime functions of the motion controller are implemented with modules -- shared objects for rtpreempt systems or kernel modules for some implementations (RTAI):
de: Die Echtzeitfunktionen der Bewegungssteuerung werden mit Modulen implementiert - gemeinsam genutzte Objekte für rtpreempt-Systeme oder Kernelmodule für einige Implementierungen (RTAI):

note: type: Plain text
en: 'tpmod' - trajectory planning
de: 'tpmod' - Trajektorienplanung

note: type: Plain text
en: 'homemod' - homing functions
de: 'homemod' - Referenzfahrtfunktionen

note: type: Plain text
en: 'motmod' - processes NML commands and controls hardware via hal
de: 'motmod' - verarbeitet NML-Befehle und steuert Hardware über hal

note: type: Plain text
en: 'kinematics module' - performs forward (joints-->coordinates) and inverse (coordinates->joints) kinematics calculations
de: 'Kinematikmodul' - führt Berechnungen der Vorwärtskinematik (bei bekannter Gelenk-Konstellation schließen auf Position der Spitze im Raum) und der Inversen Kinematik/Rückwärts-Transformation (um einem Bestimmten Punkt im Raum zu erreichen, wie müssen die Gelenke wie ausgelenkt sein) durch

note: type: Plain text
en: LinuxCNC is started by a *linuxcnc* script which reads a configuration INI file and starts all needed processes.  For realtime motion control, the script first loads the default tpmod and homemod modules and then loads the kinematics and motion modules according to settings in halfiles specified by the INI file.
de: LinuxCNC wird durch das *linuxcnc* Skript gestartet, welches eine Konfigurations-.ini-Datei liest und alle benötigten Prozesse startet.  Für die Echtzeit-Bewegungssteuerung lädt das Skript zunächst die Standard-Module tpmod und homemod und lädt dann die Kinematik- und Bewegungsmodule entsprechend den Einstellungen in halfiles, die in der .ini-Datei angegeben sind.

note: type: Plain text
en: Custom (user-built) homing or trajectory-planning modules can be used in place of the default modules via INI file settings or command line options.  Custom modules must implement all functions used by the default modules.  The halcompile utility can be used to create a custom module.
de: Benutzerdefinierte Referenzfahrt- oder Flugbahnplanungsmodule können anstelle der Standardmodule über .ini-Datei-Einstellungen oder Befehlszeilenoptionen verwendet werden.  Benutzerdefinierte Module müssen alle von den Standardmodulen verwendeten Funktionen implementieren.  Das Dienstprogramm halcompile kann verwendet werden, um ein benutzerdefiniertes Modul zu erstellen.

note: type: Title ==
en: Block diagrams and Data Flow
de: Blockdiagramme und Datenfluss

note: type: Plain text
en: The following figure is a block diagram of a joint controller. There is one joint controller per joint. The joint controllers work at a lower level than the kinematics, a level where all joints are completely independent. All the data for a joint is in a single joint structure. Some members of that structure are visible in the block diagram, such as coarse_pos, pos_cmd, and motor_pos_fb.
de: Die folgende Abbildung ist das Blockdiagramm einer Gelenksteuerung. Für jedes Gelenk gibt es genau eine Gelenksteuerung. Die Gelenksteuerungen arbeiten auf einer niedrigeren Ebene als die Kinematik, einer Ebene, auf der alle Gelenke völlig unabhängig sind. Alle Daten für ein Gelenk befinden sich in einer einzigen Gelenkstruktur. Einige Elemente dieser Struktur sind im Blockdiagramm sichtbar, z. B. coarse_pos, pos_cmd und motor_pos_fb.

note: type: Block title
en: Joint Controller Block Diagram
de: Blockdiagramm des Joint Controllers

note: type: Plain text
en: The above figure shows five of the seven sets of position information that form the main data flow through the motion controller. The seven forms of position data are as follows:
de: Die obige Abbildung zeigt fünf der sieben Sätze von Positionsdaten, die den Hauptdatenfluss der Bewegungssteuerung darstellen. Die sieben Formen von Positionsdaten sind die folgenden:

note: type: Plain text
en: 'emcmotStatus\->carte_pos_cmd' - This is the desired position, in Cartesian coordinates. It is updated at the traj rate, not the servo rate. In coord mode, it is determined by the traj planner. In teleop mode, it is determined by the traj planner? In free mode, it is either copied from actualPos, or generated by applying forward kins to (2) or (3).
de: 'emcmotStatus\->carte_pos_cmd' - Dies ist die gewünschte Position, in kartesischen Koordinaten. Sie wird mit der Traj-Rate aktualisiert, nicht mit der Servo-Rate. Im koordinierten Modus wird sie durch den Traj-Planer bestimmt. Im Teleop-Modus wird sie durch den Traj-Planer bestimmt? Im freien Modus sie entweder von actualPos kopiert oder durch Anwendung von Vorwärtskinematik auf (2) oder (3) erzeugt.

note: type: Plain text
en: 'emcmotStatus\->joints[n].coarse_pos' - This is the desired position, in joint coordinates, but before interpolation. It is updated at the traj rate, not the servo rate. In coord mode, it is generated by applying inverse kins to (1) In teleop mode, it is generated by applying inverse kins to (1) In free mode, it is copied from (3), I think.
de: 'emcmotStatus\->joints[n].coarse_pos' - Dies ist die gewünschte Position, in Gelenkkoordinaten, aber vor der Interpolation. Sie wird mit der traj rate aktualisiert, nicht mit der servo rate. Im Koordinatenmodus wird sie durch Anwendung von inversen Kinetiken auf (1) erzeugt. Im Teleop-Modus wird sie durch Anwendung von inversen Kinematiken auf (1) erzeugt. Im freien Modus wird sie von (3) kopiert, glaube ich.

note: type: Plain text
en: 'emcmotStatus\->joints[n].pos_cmd - This is the desired position, in joint coords, after interpolation. A new set of these coords is generated every servo period. In coord mode, it is generated from (2)  by the interpolator. In teleop mode, it is generated from (2) by the interpolator. In free mode, it is generated by the free mode traj planner.
de: 'emcmotStatus\->joints[n].pos_cmd - Dies ist die gewünschte Position, in Gelenkkoordinaten, nach der Interpolation. Ein neuer Satz dieser Koordinaten wird in jeder Servoperiode erzeugt. Im Koordinatenmodus wird sie vom Interpolator aus (2) generiert. Im Teleop-Modus wird er durch den Interpolator aus (2) generiert. Im freien Modus wird sie durch den traj planner im freien Modus generiert.

note: type: Plain text
en: 'emcmotStatus\->joints[n].motor_pos_cmd' - This is the desired position, in motor coords. Motor coords are generated by adding backlash compensation, lead screw error compensation, and offset (for homing) to (3). It is generated the same way regardless of the mode, and is the output to the PID loop or other position loop.
de: 'emcmotStatus\->joints[n].motor_pos_cmd' - Dies ist die gewünschte Position, in Motorkoordinaten. Die Motorkoordinaten werden generiert, indem die Kompensation des Umkehrspiels, die Kompensation der Spindelabweichung und der Offset (für die Referenzfahrt) zu (3) addiert werden. Diese wird unabhängig vom Modus auf die gleiche Weise erzeugt und ist die Ausgabe für die PID-Schleife oder eine andere Positionsschleife.

note: type: Plain text
en: 'emcmotStatus\->joints[n].motor_pos_fb' - This is the actual position, in motor coords. It is the input from encoders or other feedback device (or from virtual encoders on open loop machines). It is "generated" by reading the feedback device.
de: 'emcmotStatus\->joints[n].motor_pos_fb' - Dies ist die aktuelle Position, in Motorkoordinaten. Es handelt sich um die Eingabe von Encodern oder anderen Rückkopplungsgeräten (oder von virtuellen Encodern bei Maschinen mit offenem Regelkreis). Die Geräte haben jeweils spezielle Möglichkeiten, solch feedback durch den Controller auslesen zu lassen.

note: type: Plain text
en: 'emcmotStatus\->joints[n].pos_fb' - This is the actual position, in joint coordinates. It is generated by subtracting offset, lead screw error compensation, and backlash compensation from (5). It is generated the same way regardless of the operating mode.
de: 'emcmotStatus\->joints[n].pos_fb' - Dies ist die tatsächliche Position, in Gelenkkoordinaten. Sie wird durch Subtraktion von Offset, Spindelkompensation und Spielkompensation von (5) erzeugt. Sie wird unabhängig von der Betriebsart auf dieselbe Weise erzeugt.

note: type: Plain text
en: 'emcmotStatus\->carte_pos_fb' - This is the actual position, in Cartesian coordinates. It is updated at the traj rate, not the servo rate.  Ideally, actualPos would always be calculated by applying forward kinematics to (6). However, forward kinematics may not be available, or they may be unusable because one or more axes aren't homed. In that case, the options are: A) fake it by copying (1), or B) admit that we don't really know the Cartesian coordinates, and simply don't update actualPos. Whatever approach is used, I can see no reason not to do it the same way regardless of the operating mode. I would propose the following: If there are forward kins, use them, unless they don't work because of unhomed axes or other problems, in which case do (B). If no forward kins, do (A), since otherwise actualPos would _never_ get updated.
de: 'emcmotStatus\->carte_pos_fb' - Dies ist die aktuelle Position in kartesischen Koordinaten. Sie wird mit der Traj-Rate aktualisiert, nicht mit der Servo-Rate.  Idealerweise würde actualPos immer durch Anwendung der Vorwärtskinematik auf (6) berechnet werden. Es kann jedoch sein, dass die Vorwärtskinematik nicht verfügbar ist, oder dass sie unbrauchbar ist, weil eine oder mehrere Achsen nicht referenziert sind. In diesem Fall gibt es folgende Möglichkeiten: A) es durch Kopieren von (1) vorzutäuschen, oder B) zuzugeben, dass wir die kartesischen Koordinaten nicht wirklich kennen, und actualPos einfach nicht zu aktualisieren. Unabhängig davon, welcher Ansatz verwendet wird, sehe ich keinen Grund, es nicht auf die gleiche Weise zu tun, unabhängig von der Betriebsart. Ich würde das Folgende vorschlagen: Wenn es Vorwärts-Kins gibt, verwenden Sie sie, es sei denn, sie funktionieren nicht, weil die Achsen nicht beheimatet sind oder andere Probleme auftreten; in diesem Fall machen Sie (B). Wenn es keine Forward Kins gibt, dann mach (A), da sonst actualPos _nie_ aktualisiert werden würde.

note: type: Title ==
en: Homing
de: Referenzfahrt (engl. homing)

note: type: Title ===
en: Homing state diagram
de: Zustandsdiagramm der Referenzfahrt

note: type: Title ===
en: Another homing diagram
de: Ein weiteres Homing-Diagramm

note: type: Title ==
en: Commands
de: Befehle

note: type: Plain text
en: This section simply lists all of the commands that can be sent to the motion module, along with detailed explanations of what they do. The command names are defined in a large typedef enum in {linuxcnc}/src/emc/motion/motion.h, called cmd_code_t. (Note that in the code, each command name starts with 'EMCMOT_', which is omitted here.)
de: In diesem Abschnitt werden einfach alle Befehle aufgelistet, die an das Bewegungsmodul gesendet werden können, zusammen mit ausführlichen Erklärungen zu ihrer Funktion. Die Befehlsnamen sind in einem großen typedef enum in {linuxcnc}/src/emc/motion/motion.h mit dem Namen cmd_code_t definiert. (Beachten Sie, dass im Code jeder Befehlsname mit 'EMCMOT_' beginnt, was hier weggelassen wird.)

note: type: Plain text
en: The commands are implemented by a large switch statement in the function emcmotCommandHandler(), which is called at the servo rate.  More on that function later.
de: Die Befehle werden durch eine große Fallunterscheidung (Switch-Anweisung) in der Funktion emcmotCommandHandler() implementiert, die bei der Servo-Rate aufgerufen wird.  Mehr zu dieser Funktion später.

note: type: Plain text
en: There are approximately 44 commands - this list is still under construction.
de: Es gibt ungefähr 44 Befehle - diese Liste ist noch im Aufbau.

note: type: Plain text
en: The cmd_code_t enumeration, in motion.h, contains 73 commands, but the switch statement in command.c contemplates only 70 commands (as of 6/5/2020).  ENABLE_WATCHDOG / DISABLE_WATCHDOG commands are in motion-logger.c. Maybe they are obsolete.  The SET_TELEOP_VECTOR command only appears in motion-logger.c, with no effect other than its own log.
de: Die Aufzählung cmd_code_t in motion.h enthält 73 Befehle, aber die switch-Anweisung in command.c berücksichtigt nur 70 Befehle (Stand: 6/5/2020).  Die Befehle ENABLE_WATCHDOG / DISABLE_WATCHDOG befinden sich in motion-logger.c. Vielleicht sind sie veraltet.  Der Befehl SET_TELEOP_VECTOR taucht nur in motion-logger.c auf und hat außer seinem eigenen Protokoll keine weiteren Auswirkungen.

note: type: Title ===
en: ABORT
de: Abbrechen

note: type: Plain text
en: The ABORT command simply stops all motion. It can be issued at any time, and will always be accepted. It does not disable the motion controller or change any state information, it simply cancels any motion that is currently in progress.footnote:[It seems that the higher level code (TASK and above) also use ABORT to clear faults.  Whenever there is a persistent fault (such as being outside the hardware limit switches), the higher level code sends a constant stream of ABORTs to the motion controller trying to make the fault go away. Thousands of them.... That means that the motion controller should avoid persistent faults. This needs to be looked into.]
de: Der Befehl ABORT (engl. für Abbruch) stoppt einfach alle Bewegungen. Er kann jederzeit erteilt werden und wird immer akzeptiert. Er deaktiviert den Motion Controller nicht und ändert auch keine Zustandsinformationen, sondern bricht lediglich eine laufende Bewegung ab.footnote:[Es scheint, dass der Code auf höherer Ebene (TASK und höher) ABORT auch zum Löschen von Fehlern verwendet.  Wann immer ein anhaltender Fehler auftritt (z. B. wenn die Hardware-Endschalter überschritten werden), sendet der übergeordnete Code einen ständigen Strom von ABORTs an den Bewegungsregler, um den Fehler zu beheben. Tausende von ihnen.... Das bedeutet, dass die Bewegungssteuerung anhaltende Fehler vermeiden sollte. Dies muss untersucht werden.]

note: type: Title ==
en: Requirements
de: Anforderungen

note: type: Plain text
en: None. The command is always accepted and acted on immediately.
de: Keine. Der Befehl wird immer angenommen und sofort ausgeführt.

note: type: Title ====
en: Results
de: Ergebnisse

note: type: Plain text
en: In free mode, the free mode trajectory planners are disabled. That results in each joint stopping as fast as its accel (decel) limit allows. The stop is not coordinated. In teleop mode, the commanded Cartesian velocity is set to zero. I don't know exactly what kind of stop results (coordinated, uncoordinated, etc), but will figure it out eventually. In coord mode, the coord mode trajectory planner is told to abort the current move. Again, I don't know the exact result of this, but will document it when I figure it out.
de: Im freien Modus sind die Trajektorienplaner für den freien Modus deaktiviert. Das führt dazu, dass jedes Gelenk so schnell anhält, wie es seine Beschleunigungs- (Verzögerungs-) Grenze ermöglicht. Das Anhalten wird nicht koordiniert. Im Teleop-Modus wird die befohlene kartesische Geschwindigkeit auf Null gesetzt. Ich weiß nicht genau, welche Art von Stopp daraus resultiert (koordiniert, unkoordiniert, etc.), werde es aber irgendwann herausfinden. Im Koordinatenmodus wird der Koordinatenmodus-Trajektorienplaner angewiesen, die aktuelle Bewegung abzubrechen. Auch hier kenne ich das genaue Ergebnis nicht, werde es aber dokumentieren, sobald ich es herausgefunden habe.

note: type: Plain text
en: The FREE command puts the motion controller in free mode. Free mode means that each joint is independent of all the other joints. Cartesian coordinates, poses, and kinematics are ignored when in free mode. In essence, each joint has its own simple trajectory planner, and each joint completely ignores the other joints. Some commands (like Joint JOG and HOME) only work in free mode. Other commands, including anything that deals with Cartesian coordinates, do not work at all in free mode.
de: Der Befehl FREE versetzt den Motion Controller in den freien Modus. Freier Modus bedeutet, dass jedes Gelenk unabhängig von allen anderen Gelenken ist. Kartesische Koordinaten, Posen und Kinematik werden im freien Modus ignoriert. Im Wesentlichen hat jedes Gelenk seinen eigenen einfachen Trajektorienplaner, und jedes Gelenk ignoriert die anderen Gelenke vollständig. Einige Befehle (wie Joint JOG und HOME) funktionieren nur im freien Modus. Andere Befehle, einschließlich aller Befehle, die mit kartesischen Koordinaten arbeiten, funktionieren im freien Modus überhaupt nicht.

note: type: Plain text
en: The command handler applies no requirements to the FREE command, it will always be accepted. However, if any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), then the command will be ignored.  This behavior is controlled by code that is now located in the function 'set_operating_mode()' in control.c, that code needs to be cleaned up.  I believe the command should not be silently ignored, instead the command handler should determine whether it can be executed and return an error if it cannot.
de: Der Befehlsinterpreter (engl. command handler) stellt keine Anforderungen an den FREE-Befehl, er wird immer akzeptiert. Wenn jedoch ein Gelenk in Bewegung ist (GET_MOTION_INPOS_FLAG() == FALSE), wird der Befehl ignoriert.  Dieses Verhalten wird durch Code gesteuert, der sich jetzt in der Funktion 'set_operating_mode()' in control.c befindet; dieser Code muss bereinigt werden.  Meiner Meinung nach sollte der Befehl nicht stillschweigend ignoriert werden, sondern der Befehlsinterpreter sollte feststellen, ob er ausgeführt werden kann und einen Fehler zurückgeben, wenn dies nicht möglich ist.

note: type: Plain text
en: If the machine is already in free mode, nothing. Otherwise, the machine is placed in free mode. Each joint's free mode trajectory planner is initialized to the current location of the joint, but the planners are not enabled and the joints are stationary.
de: Wenn sich die Maschine bereits im freien Modus befindet, geschieht nichts. Andernfalls wird die Maschine in den freien Modus versetzt. Der Trajektorienplaner jedes Gelenks im freien Modus wird mit der aktuellen Position des Gelenks initialisiert, aber die Planer sind nicht aktiviert und die Gelenke sind stationär.

note: type: Plain text
en: The TELEOP command places the machine in teleoperating mode. In teleop mode, movement of the machine is based on Cartesian coordinates using kinematics, rather than on individual joints as in free mode. However the trajectory planner per se is not used, instead movement is controlled by a velocity vector. Movement in teleop mode is much like jogging, except that it is done in Cartesian space instead of joint space. On a machine with trivial kinematics, there is little difference between teleop mode and free mode, and GUIs for those machines might never even issue this command. However for non-trivial machines like robots and hexapods, teleop mode is used for most user commanded jog type movements.
de: Der Befehl TELEOP versetzt die Maschine in den Teleoperating-Modus. Im Teleop-Modus basiert die Bewegung der Maschine auf kartesischen Koordinaten unter Verwendung der Kinematik und nicht auf einzelnen Gelenken wie im freien Modus. Der Trajektorienplaner als solcher wird jedoch nicht verwendet, stattdessen wird die Bewegung durch einen Geschwindigkeitsvektor gesteuert. Die Bewegung im Teleop-Modus ähnelt dem Joggen, mit dem Unterschied, dass sie im kartesischen Raum und nicht im Gelenkraum erfolgt. Auf einer Maschine mit trivialer Kinematik gibt es kaum einen Unterschied zwischen dem Teleop-Modus und dem freien Modus, und die grafischen Benutzeroberflächen für diese Maschinen geben diesen Befehl möglicherweise nicht einmal aus. Bei nicht-trivialen Maschinen wie Robotern und Hexapoden wird der Teleop-Modus jedoch für die meisten vom Benutzer befohlenen Jog-Bewegungen verwendet.

note: type: Plain text
en: The command handler will reject the TELEOP command with an error message if the kinematics cannot be activated because the one or more joints have not been homed. In addition, if any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), then the command will be ignored (with no error message). This behavior is controlled by code that is now located in the function 'set_operating_mode()' in control.c. I believe the command should not be silently ignored, instead the command handler should determine whether it can be executed and return an error if it cannot.
de: Der Command Handler weist den COORD-Befehl mit einer Fehlermeldung zurück, wenn die Kinematik nicht aktiviert werden kann, weil ein oder mehrere Gelenke nicht referenziert wurden. Auch wird der Befehl ignoriert (ohne Fehlermeldung), wenn sich ein Gelenk/Achse in Bewegung befindet (GET_MOTION_INPOS_FLAG() == FALSE). Dieses Verhalten wird durch Code gesteuert, der sich jetzt in der Funktion 'set_operating_mode()' in control.c befindet. Meiner Meinung nach sollte der Befehl nicht stillschweigend ignoriert werden, sondern es sollte festgestellt werden, ob er ausgeführt werden kann und ein Fehler zurückgeben werden, wenn dies nicht möglich ist.

note: type: Plain text
en: If the machine is already in teleop mode, nothing. Otherwise the machine is placed in teleop mode. The kinematics code is activated, interpolators are drained and flushed, and the Cartesian velocity commands are set to zero.
de: Wenn sich die Maschine bereits im Teleop-Modus befindet, geschieht nichts. Andernfalls wird die Maschine in den Teleop-Modus versetzt. Der Kinematikcode wird aktiviert, die Interpolatoren werden entleert und geleert, und die kartesischen Geschwindigkeitsbefehle werden auf Null gesetzt.

note: type: Plain text
en: The COORD command places the machine in coordinated mode. In coord mode, movement of the machine is based on Cartesian coordinates using kinematics, rather than on individual joints as in free mode. In addition, the main trajectory planner is used to generate motion, based on queued LINE, CIRCLE, and/or PROBE commands. Coord mode is the mode that is used when executing a G-code program.
de: Mit dem Befehl COORD wird die Maschine in den Koordinaten-Modus versetzt. Im Koordinaten-Modus basiert die Bewegung der Maschine auf kartesischen Koordinaten unter Verwendung der Kinematik und nicht auf einzelnen Gelenken wie im freien Modus. Außerdem wird der Haupt-Trajektorienplaner verwendet, um die Bewegung auf der Grundlage von LINE-, CIRCLE- und/oder PROBE-Befehlen in der Warteschlange zu erzeugen. Der Koordinatenmodus ist der Modus, der bei der Ausführung eines G-Code-Programms verwendet wird.

note: type: Plain text
en: The command handler will reject the COORD command with an error message if the kinematics cannot be activated because the one or more joints have not been homed. In addition, if any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), then the command will be ignored (with no error message). This behavior is controlled by code that is now located in the function 'set_operating_mode()' in control.c. I believe the command should not be silently ignored, instead the command handler should determine whether it can be executed and return an error if it cannot.
de: Der Command Handler weist den COORD-Befehl mit einer Fehlermeldung zurück, wenn die Kinematik nicht aktiviert werden kann, weil ein oder mehrere Gelenke nicht referenziert wurden. Auch wird der Befehl ignoriert (ohne Fehlermeldung), wenn sich ein Gelenk/Achse in Bewegung befindet (GET_MOTION_INPOS_FLAG() == FALSE). Dieses Verhalten wird durch Code gesteuert, der sich jetzt in der Funktion 'set_operating_mode()' in control.c befindet. Meiner Meinung nach sollte der Befehl nicht stillschweigend ignoriert werden, sondern es sollte festgestellt werden, ob er ausgeführt werden kann und ein Fehler zurückgeben werden, wenn dies nicht möglich ist.

note: type: Plain text
en: If the machine is already in coord mode, nothing. Otherwise, the machine is placed in coord mode. The kinematics code is activated, interpolators are drained and flushed, and the trajectory planner queues are empty. The trajectory planner is active and awaiting a LINE, CIRCLE, or PROBE command.
de: Wenn sich die Maschine bereits im Koordinatenmodus befindet, geschieht nichts. Andernfalls wird die Maschine in den Koordinatenmodus versetzt. Der Kinematikcode wird aktiviert, die Interpolatoren werden entleert und geleert, und die Warteschlangen des Bahnplaners sind leer. Der Trajektorienplaner ist aktiv und wartet auf einen LINE-, CIRCLE- oder PROBE-Befehl.

note: type: Table
en: ENABLE
de: ENABLE (AKTIVIEREN)

note: type: Plain text
en: The ENABLE command enables the motion controller.
de: Der Befehl ENABLE aktiviert den Motion Controller.

note: type: Plain text
en: None. The command can be issued at any time, and will always be accepted.
de: Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert.

note: type: Plain text
en: If the controller is already enabled, nothing. If not, the controller is enabled. Queues and interpolators are flushed. Any movement or homing operations are terminated. The amp-enable outputs associated with active joints are turned on. If forward kinematics are not available, the machine is switched to free mode.
de: Wenn der Controller bereits aktiviert ist, passiert nichts. Ansonsten wird der Controller aktiviert. Warteschlangen und Interpolatoren werden geleert. Alle Bewegungs- oder Referenzfahrtvorgänge werden abgebrochen. Die mit aktiven Gelenken verbundenen Amp-Enable-Ausgänge werden eingeschaltet. Wenn keine Vorwärtskinematik verfügbar ist, wird die Maschine in den freien Modus geschaltet.

note: type: Title ===
en: DISABLE
de: DISABLE (DEAKTIVIEREN)

note: type: Plain text
en: The DISABLE command disables the motion controller.
de: Mit dem Befehl DISABLE wird der Motion Controller deaktiviert.

note: type: Plain text
en: If the controller is already disabled, nothing. If not, the controller is disabled. Queues and interpolators are flushed. Any movement or homing operations are terminated. The amp-enable outputs associated with active joints are turned off. If forward kinematics are not available, the machine is switched to free mode.
de: Wenn der Controller bereits deaktiviert ist, passiert nichts. Andernfalls wird der Controller deaktiviert. Warteschlangen und Interpolatoren werden geleert. Alle Bewegungs- oder Referenzfahrtvorgänge werden beendet. Die mit aktiven Gelenken verbundenen Amp-Enable-Ausgänge werden ausgeschaltet. Wenn die Vorwärtskinematik nicht verfügbar ist, wird die Maschine in den freien Modus geschaltet.

note: type: Plain text
en: The ENABLE_AMPLIFIER command turns on the amp enable output for a single output amplifier, without changing anything else. Can be used to enable a spindle speed controller.
de: Der Befehl ENABLE_AMPLIFIER schaltet den Verstärkerfreigabe-Ausgang (engl. amp enable output) für einen einzelnen Ausgangsverstärker ein, ohne etwas anderes zu ändern. Kann verwendet werden, um einen Spindeldrehzahlregler zu aktivieren.

note: type: Plain text
en: Currently, nothing. (A call to the old extAmpEnable function is currently commented out.) Eventually it will set the amp enable HAL pin true.
de: Derzeit nichts. (Ein Aufruf der alten extAmpEnable-Funktion ist derzeit auskommentiert.) Eventuell wird der Amp-Enable-HAL-Pin auf true gesetzt.

note: type: Plain text
en: The DISABLE_AMPLIFIER command turns off the amp enable output for a single amplifier, without changing anything else. Again, useful for spindle speed controllers.
de: Der Befehl DISABLE_AMPLIFIER schaltet den Amp-Enable-Ausgang für einen einzelnen Verstärker aus, ohne etwas anderes zu ändern. Auch dies ist nützlich für Spindeldrehzahlregler.

note: type: Plain text
en: Currently, nothing. (A call to the old extAmpEnable function is currently commented out.) Eventually it will set the amp enable HAL pin false.
de: Derzeit nichts. (Ein Aufruf der alten extAmpEnable Funktion ist derzeit auskommentiert.) Eventuell wird der Amp Enable HAL Pin auf false gesetzt.

note: type: Plain text
en: The ACTIVATE_JOINT command turns on all the calculations associated with a single joint, but does not change the joint's amp enable output pin.
de: Der Befehl ACTIVATE_JOINT schaltet alle Berechnungen ein, die mit einem einzelnen Gelenk verbunden sind, ändert aber nicht den Amp-Enable-Ausgangsstift des Gelenks.

note: type: Plain text
en: Calculations for the specified joint are enabled. The amp enable pin is not changed, however, any subsequent ENABLE or DISABLE commands will modify the joint's amp enable pin.
de: Die Berechnungen für das angegebene Gelenk werden aktiviert. Der Verstärker-Freigabe-Pin (amp enable pin) wird nicht verändert, jedoch werden alle nachfolgenden ENABLE- oder DISABLE-Befehle den Verstärker-Freigabe-Pin des Gelenks verändern.

note: type: Plain text
en: The DEACTIVATE_JOINT command turns off all the calculations associated with a single joint, but does not change the joint's amp enable output pin.
de: Der Befehl DEACTIVATE_JOINT schaltet alle Berechnungen aus, die mit einem einzelnen Gelenk verbunden sind, ändert aber nicht dem amp enable output Pin des Gelenks.

note: type: Plain text
en: Calculations for the specified joint are enabled. The amp enable pin is not changed, and subsequent ENABLE or DISABLE commands will not modify the joint's amp enable pin.
de: Die Berechnungen für das angegebene Gelenk werden aktiviert. Der amp enable-Pin wird nicht verändert, und nachfolgende ENABLE- oder DISABLE-Befehle ändern den amp-enable-Pin des Gelenks nicht.

note: type: Plain text
en: The ENABLE_WATCHDOG command enables a hardware based watchdog (if present).
de: Der Befehl ENABLE_WATCHDOG aktiviert einen hardwarebasierten Watchdog (falls vorhanden).

note: type: Plain text
en: Currently nothing. The old watchdog was a strange thing that used a specific sound card. A new watchdog interface may be designed in the future.
de: Derzeit nichts. Der alte Watchdog war ein seltsames Ding, das eine bestimmte Soundkarte verwendete. Möglicherweise wird in Zukunft eine neue Watchdog-Schnittstelle entwickelt.

note: type: Plain text
en: The DISABLE_WATCHDOG command disables a hardware based watchdog (if present).
de: Der Befehl DISABLE_WATCHDOG deaktiviert einen hardwarebasierten Watchdog (falls vorhanden).

note: type: Plain text
en: The PAUSE command stops the trajectory planner. It has no effect in free or teleop mode. At this point I don't know if it pauses all motion immediately, or if it completes the current move and then pauses before pulling another move from the queue.
de: Der Befehl PAUSE hält den Trajektorien-Planer an. Er hat keinen Effekt im freien oder Teleop-Modus. Ich weiß ich nicht, ob alle Bewegungen sofort angehalten werden, oder ob der aktuelle Bewegung abgeschlossen und dann angehalten wird, bevor ein anderer Bewegung aus der Warteschlange gezogen wird.

note: type: Plain text
en: The trajectory planner pauses.
de: Der Trajektorienplaner pausiert.

note: type: Plain text
en: The RESUME command restarts the trajectory planner if it is paused. It has no effect in free or teleop mode, or if the planner is not paused.
de: Der Befehl RESUME startet den Trajektorienplaner neu, wenn er angehalten wurde. Er hat keine Auswirkung im freien oder Teleop-Modus, oder wenn der Planer nicht angehalten ist.

note: type: Plain text
en: The trajectory planner resumes.
de: Der Trajektorienplaner arbeitet weiter.

note: type: Plain text
en: The STEP command restarts the trajectory planner if it is paused, and tells the planner to stop again when it reaches a specific point. It has no effect in free or teleop mode. At this point I don't know exactly how this works. I'll add more documentation here when I dig deeper into the trajectory planner.
de: Der STEP-Befehl (engl. für Schritt) startet den Trajektorienplaner neu, wenn er angehalten wurde, und weist ihn an, wieder anzuhalten, wenn er einen bestimmten Punkt erreicht. Er hat keine Wirkung im freien oder Teleop-Modus. Zu diesem Zeitpunkt weiß ich nicht genau, wie das funktioniert. Ich werde hier mehr Dokumentation hinzufügen, wenn ich mich näher mit dem Trajektorienplaner beschäftige.

note: type: Plain text
en: The trajectory planner resumes, and later pauses when it reaches a specific point.
de: Der Trajektorienplaner wird fortgesetzt und hält wieder an, sobald er einen bestimmten Punkt erreicht.

note: type: Plain text
en: The SCALE command scales all velocity limits and commands by a specified amount. It is used to implement feed rate override and other similar functions. The scaling works in free, teleop, and coord modes, and affects everything, including homing velocities, etc. However, individual joint velocity limits are unaffected.
de: Der Befehl SCALE skaliert alle Geschwindigkeitsgrenzen und Befehle um einen bestimmten Betrag. Er wird verwendet, um die Vorschubgeschwindigkeit zu überschreiben und andere ähnliche Funktionen zu implementieren. Die Skalierung funktioniert in den Modi Free, Teleop und Coord und wirkt sich auf alles aus, einschließlich Referenzfahrtgeschwindigkeiten usw. Die Geschwindigkeitsgrenzen der einzelnen Gelenke sind jedoch nicht betroffen.

note: type: Plain text
en: All velocity commands are scaled by the specified constant.
de: Alle Geschwindigkeitsbefehle werden um die angegebene Konstante skaliert.

note: type: Plain text
en: The OVERRIDE_LIMITS command prevents limits from tripping until the end of the next JOG command. It is normally used to allow a machine to be jogged off of a limit switch after tripping. (The command can actually be used to override limits, or to cancel a previous override.)
de: Der Befehl OVERRIDE_LIMITS verhindert das Auslösen der Endschalter bis zum Ende des nächsten JOG-Befehls. Er wird normalerweise verwendet, um eine Maschine nach dem Auslösen von einem Endschalter zu verfahren. (Der Befehl kann auch verwendet werden, um Grenzwerte zu überschreiben oder eine vorherige Überschreibung aufzuheben.)

note: type: Plain text
en: None. The command can be issued at any time, and will always be accepted. (I think it should only work in free mode.)
de: Keine. Der Befehl kann jederzeit erteilt werden und wird immer akzeptiert. (Ich denke, es sollte nur im freien Modus funktionieren.)

note: type: Plain text
en: Limits on all joints are over-ridden until the end of the next JOG command. (This is currently broken... once an OVERRIDE_LIMITS command is received, limits are ignored until another OVERRIDE_LIMITS command re-enables them.)
de: Die Begrenzungen für alle Gelenke werden bis zum Ende des nächsten JOG-Befehls außer Kraft gesetzt. (Dies ist derzeit nicht möglich... sobald ein OVERRIDE_LIMITS-Befehl empfangen wird, werden die Begrenzungen ignoriert, bis ein weiterer OVERRIDE_LIMITS-Befehl sie wieder aktiviert.)

note: type: Plain text
en: The HOME command initiates a homing sequence on a specified joint. The actual homing sequence is determined by a number of configuration parameters, and can range from simply setting the current position to zero, to a multi-stage search for a home switch and index pulse, followed by a move to an arbitrary home location. For more information about the homing sequence, see the homing section of the Integrator Manual.
de: Der HOME-Befehl leitet eine Referenzfahrt an einem bestimmten Gelenk ein. Die tatsächliche Referenzierungssequenz wird durch eine Reihe von Konfigurationsparametern bestimmt und kann vom einfachen Setzen der aktuellen Position auf Null bis hin zu einer mehrstufigen Suche nach einem Referenzschalter und einem Indeximpuls, gefolgt von einer Bewegung zu einer beliebigen Referenzposition, reichen. Weitere Informationen über die Referenzfahrt-Sequenz finden Sie im Abschnitt Referenzfahrt des Integrator-Handbuchs.

note: type: Plain text
en: The command will be ignored silently unless the machine is in free mode.
de: Der Befehl wird stillschweigend ignoriert, es sei denn, die Maschine befindet sich im freien Modus.

note: type: Plain text
en: Any jog or other joint motion is aborted, and the homing sequence starts.
de: Jede Bewegung von Gelenken wird abgebrochen, und die Referenzfahrt beginnt.

note: type: Plain text
en: The JOG_CONT command initiates a continuous jog on a single joint. A continuous jog is generated by setting the free mode trajectory planner's target position to a point beyond the end of the joint's range of travel. This ensures that the planner will move constantly until it is stopped by either the joint limits or an ABORT command.  Normally, a GUI sends a JOG_CONT command when the user presses a jog button, and ABORT when the button is released.
de: Der Befehl JOG_CONT initiiert eine kontinuierliche Bewegung an einem einzelnen Gelenk. Eine kontinuierliche Bewegung wird erzeugt, indem die Zielposition des Free Mode Trajektorienplaners auf einen Punkt hinter dem Ende des Bewegungsbereichs des Gelenks gesetzt wird. Dadurch wird sichergestellt, dass der Planer sich ständig bewegt, bis er entweder durch die Gelenkgrenzen oder einen ABORT-Befehl gestoppt wird.  Normalerweise sendet eine GUI einen JOG_CONT-Befehl, wenn der Benutzer eine Jog-Taste drückt, und ABORT, wenn die Taste losgelassen wird.

note: type: Plain text
en: The command handler will reject the JOG_CONT command with an error message if machine is not in free mode, or if any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not enabled. It will also silently ignore the command if the joint is already at or beyond its limit and the commanded jog would make it worse.
de: Der Befehlshandler weist den JOG_CONT-Befehl mit einer Fehlermeldung zurück, wenn sich die Maschine nicht im freien Modus befindet, wenn ein Gelenk in Bewegung ist (GET_MOTION_INPOS_FLAG() == FALSE) oder wenn die Bewegung nicht aktiviert ist. Außerdem wird der Befehl ignoriert, wenn sich das Gelenk bereits an oder über seinem Limit befindet und der befohlene Jog die Situation verschlimmern würde.

note: type: Plain text
en: The free mode trajectory planner for the joint identified by emcmotCommand\->axis is activated, with a target position beyond the end of joint travel, and a velocity limit of emcmotCommand\->vel. This starts the joint moving, and the move will continue until stopped by an ABORT command or by hitting a limit. The free mode planner accelerates at the joint accel limit at the beginning of the move, and will decelerate at the joint accel limit when it stops.
de: Der Free-Mode-Trajektorienplaner für das durch emcmotCommand\->axis identifizierte Gelenk wird aktiviert, mit einer Zielposition jenseits des Endes der Gelenkbewegung und einem Geschwindigkeitslimit von emcmotCommand\->vel. Damit wird die Bewegung des Gelenks eingeleitet, und die Bewegung wird fortgesetzt, bis sie durch einen ABORT-Befehl oder durch das Erreichen eines Limits gestoppt wird. Der Planer im freien Modus beschleunigt zu Beginn der Bewegung mit der Gelenkbeschleunigungsgrenze und bremst mit der Gelenkbeschleunigungsgrenze ab, wenn er anhält.

note: type: Plain text
en: The JOG_INCR command initiates an incremental jog on a single joint.  Incremental jogs are cumulative, in other words, issuing two JOG_INCR commands that each ask for 0.100 inches of movement will result in 0.200 inches of travel, even if the second command is issued before the first one finishes. Normally incremental jogs stop when they have traveled the desired distance, however they also stop when they hit a limit, or on an ABORT command.
de: Der JOG_INCR-Befehl initiiert einen inkrementellen Tippbetrieb für ein einzelnes Gelenk.  Inkrementelle Verfahrbewegungen sind kumulativ, d.h. wenn Sie zwei JOG_INCR-Befehle geben, die jeweils eine Bewegung von 0,100 Zoll erfordern, ergibt dies eine Bewegung von 0,200 Zoll, auch wenn der zweite Befehl gegeben wird, bevor der erste beendet ist. Normalerweise stoppen Inkremental-Jogs, wenn sie die gewünschte Strecke zurückgelegt haben, aber sie stoppen auch, wenn sie an eine Grenze stoßen, oder bei einem ABORT-Befehl.

note: type: Plain text
en: The command handler will silently reject the JOG_INCR command if machine is not in free mode, or if any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not enabled. It will also silently ignore the command if the joint is already at or beyond its limit and the commanded jog would make it worse.
de: Der Befehlshandler lehnt den JOG_INCR-Befehl stillschweigend ab, wenn sich die Maschine nicht im freien Modus befindet, wenn ein Gelenk in Bewegung ist (GET_MOTION_INPOS_FLAG() == FALSE) oder wenn die Bewegung nicht aktiviert ist. Der Befehl wird auch ignoriert, wenn das Gelenk bereits an oder über seinem Limit ist und der Jog-Befehl die Situation verschlimmern würde.

note: type: Plain text
en: The free mode trajectory planner for the joint identified by emcmotCommand\->axis is activated, the target position is incremented/decremented by emcmotCommand\->offset, and the velocity limit is set to emcmotCommand\->vel. The free mode trajectory planner will generate a smooth trapezoidal move from the present position to the target position. The planner can correctly handle changes in the target position that happen while the move is in progress, so multiple JOG_INCR commands can be issued in quick succession. The free mode planner accelerates at the joint accel limit at the beginning of the move, and will decelerate at the joint accel limit to stop at the target position.
de: Der Free-Mode-Trajektorienplaner für das durch emcmotCommand\->axis identifizierte Gelenk wird aktiviert, die Zielposition wird um emcmotCommand\->offset inkrementiert/dekrementiert, und die Geschwindigkeitsgrenze wird auf emcmotCommand\->vel gesetzt. Der Trajektorienplaner im freien Modus wird eine glatte trapezförmige Bewegung von der aktuellen Position zur Zielposition erzeugen. Der Planer kann Änderungen der Zielposition, die während der Bewegung auftreten, korrekt verarbeiten, so dass mehrere JOG_INCR-Befehle in schneller Folge ausgegeben werden können. Der Planer im freien Modus beschleunigt zu Beginn der Bewegung mit der Gelenkbeschleunigungsgrenze und bremst mit der Gelenkbeschleunigungsgrenze ab, um an der Zielposition anzuhalten.

note: type: Plain text
en: The JOG_ABS command initiates an absolute jog on a single joint. An absolute jog is a simple move to a specific location, in joint coordinates. Normally absolute jogs stop when they reach the desired location, however they also stop when they hit a limit, or on an ABORT command.
de: Der Befehl JOG_ABS initiiert eine absolute Bewegung an einem einzelnen Gelenk. Eine absolute Bewegung ist eine einfache Bewegung zu einer bestimmten Position in Gelenkkoordinaten. Normalerweise stoppen absolute Bewegungsabläufe, wenn sie die gewünschte Position erreichen, aber sie stoppen auch, wenn sie eine Grenze erreichen, oder bei einem ABORT-Befehl.

note: type: Plain text
en: The command handler will silently reject the JOG_ABS command if machine is not in free mode, or if any joint is in motion (GET_MOTION_INPOS_FLAG() == FALSE), or if motion is not enabled. It will also silently ignore the command if the joint is already at or beyond its limit and the commanded jog would make it worse.
de: Der Befehlshandler (engl. command handler) lehnt den JOG_ABS-Befehl stillschweigend ab, wenn sich die Maschine nicht im freien Modus befindet, wenn ein Gelenk in Bewegung ist (GET_MOTION_INPOS_FLAG() == FALSE) oder wenn Bewegungen (engl. motion) nicht aktiviert sind. Der Befehl wird auch dann stillschweigend ignoriert, wenn das Gelenk bereits an oder über seinem Limit ist und der Jog-Befehl die Situation verschlimmern würde.

note: type: Plain text
en: The free mode trajectory planner for the joint identified by emcmotCommand\->axis is activated, the target position is set to emcmotCommand\->offset, and the velocity limit is set to emcmotCommand\->vel. The free mode trajectory planner will generate a smooth trapezoidal move from the present position to the target position. The planner can correctly handle changes in the target position that happen while the move is in progress. If multiple JOG_ABS commands are issued in quick succession, each new command changes the target position and the machine goes to the final commanded position.  The free mode planner accelerates at the joint accel limit at the beginning of the move, and will decelerate at the joint accel limit to stop at the target position.
de: Der Free-Mode-Trajektorienplaner für das durch emcmotCommand\->axis identifizierte Gelenk wird aktiviert, die Zielposition wird auf emcmotCommand\->offset gesetzt, und die Geschwindigkeitsgrenze wird auf emcmotCommand\->vel gesetzt. Der Trajektorienplaner im freien Modus erzeugt eine gleichmäßige trapezförmige Bewegung von der aktuellen Position zur Zielposition. Der Planer kann Änderungen an der Zielposition, die während der Bewegung auftreten, korrekt verarbeiten. Wenn mehrere JOG_ABS-Befehle kurz hintereinander ausgegeben werden, ändert jeder neue Befehl die Zielposition, und die Maschine fährt zur befohlenen Endposition.  Der Planer im freien Modus beschleunigt zu Beginn der Bewegung mit der Gelenkbeschleunigungsgrenze und bremst mit der Gelenkbeschleunigungsgrenze ab, um an der Zielposition anzuhalten.

note: type: Plain text
en: The SET_LINE command adds a straight line to the trajectory planner queue.
de: Der Befehl SET_LINE fügt eine gerade Linie in die Warteschlange des Trajektorienplaners ein.

note: type: Plain text
en: (More later)
de: (Mehr dazu später)

note: type: Plain text
en: The SET_CIRCLE command adds a circular move to the trajectory planner queue.
de: Der Befehl SET_CIRCLE fügt eine kreisförmige Bewegung in die Warteschlange des Trajektorienplaners ein.

note: type: Plain text
en: The SET_TELEOP_VECTOR command instructs the motion controller to move along a specific vector in Cartesian space.
de: Der Befehl SET_TELEOP_VECTOR weist den Motion Controller an, sich entlang eines bestimmten Vektors im kartesischen Raum zu bewegen.

note: type: Plain text
en: The PROBE command instructs the motion controller to move toward a specific point in Cartesian space, stopping and recording its position if the probe input is triggered.
de: Der PROBE-Befehl weist den Motion Controller an, sich zu einem bestimmten Punkt im kartesischen Raum zu bewegen und seine Position zu stoppen und aufzuzeichnen, wenn der Probe-Eingang ausgelöst wird.

note: type: Plain text
en: The CLEAR_PROBE_FLAG command is used to reset the probe input in preparation for a PROBE command. (Question: why shouldn't the PROBE command automatically reset the input?)
de: Der Befehl CLEAR_PROBE_FLAG wird verwendet, um den Sondeneingang in Vorbereitung auf einen PROBE-Befehl zurückzusetzen. (Frage: warum sollte der PROBE-Befehl den Eingang nicht automatisch zurücksetzen?)

note: type: Plain text
en: There are approximately 15 SET_xxx commands, where xxx is the name of some configuration parameter. It is anticipated that there will be several more SET commands as more parameters are added. I would like to find a cleaner way of setting and reading configuration parameters. The existing methods require many lines of code to be added to multiple files each time a parameter is added. Much of that code is identical or nearly identical for every parameter.
de: Es gibt etwa 15 SET_xxx-Befehle, wobei xxx der Name eines Konfigurationsparameters ist. Es ist davon auszugehen, dass es noch einige weitere SET-Befehle geben wird, wenn weitere Parameter hinzugefügt werden. Ich würde gerne eine sauberere Methode zum Setzen und Lesen von Konfigurationsparametern finden. Bei den vorhandenen Methoden müssen jedes Mal, wenn ein Parameter hinzugefügt wird, viele Codezeilen zu mehreren Dateien hinzugefügt werden. Ein großer Teil dieses Codes ist für jeden Parameter identisch oder fast identisch.

note: type: Title ==
en: Backlash and Screw Error Compensation
de: Umkehrspiel- und Schrauben-/Schneckenfehlerkompensation

note: type: Plain text
en: FIXME Backlash and Screw Error Compensation
de: Umkehrspiel- und Schraubenfehlerkompensation

note: type: Title ==
en: Task controller (EMCTASK)
de: Task-Controller (EMCTASK)

note: type: Table
en: State
de: Zustand

note: type: Plain text
en: Task has three possible internal states: *E-stop*, *E-stop Reset*, and *Machine On*.
de: Die Aufgabe hat drei mögliche interne Zustände: *Notaus* (E-Stop), *Notaus-Reset* (E-Stop Reset) und *Maschine Ein* (Machine On).

note: type: Title ==
en: IO controller (EMCIO)
de: IO-Controller (EMCIO)

note: type: Plain text
en: The I/O Controller is separate module that accepts NML commands from TASK.  It interacts with external I/O using HAL pins.  iocontrol.cc is loaded via the linuxcnc script before TASK is.  There are currently two versions of iocontrol. The second version handles toolchange hardware errors.
de: Die E/A-Steuerung (engl. I/O controller) ist ein separates Modul, das NML-Befehle von TASK annimmt.  Es interagiert mit externen E/A über HAL-Pins. iocontrol.cc wird über das linuxcnc-Skript vor TASK geladen.  Derzeit gibt es zwei Versionen von iocontrol. Die zweite Version behandelt Hardware-Fehler beim Werkzeugwechsel.

note: type: Plain text
en: Currently ESTOP/Enable, coolant, lube, and tool changing are handled by iocontrol. These are relatively low speed events, high speed coordinated I/O is handled in motion.
de: Derzeit werden NOTAUS (ESTOP)/Enable, Kühlmittel, Schmiermittel und Werkzeugwechsel von iocontrol abgewickelt. Dies sind Ereignisse mit relativ geringer Geschwindigkeit, koordinierte Hochgeschwindigkeits-E/A werden in der Bewegung (motion) abgewickelt.

note: type: Plain text
en: emctaskmain.cc sends I/O commands via taskclass.cc.  Taskclass's functions send NML messages out to iocontrol.cc.  Taskclass either uses the commands defined in c++ in it's file or, if defined, runs python based commands defined in files provided by the user.
de: emctaskmain.cc sendet E/A-Befehle (engl. I/O commands) über taskclass.cc. Die Funktionen von taskclass senden NML-Nachrichten an iocontrol.cc. Taskclass verwendet entweder die in C++ definierten Befehle in dessen Datei oder führt, falls definiert, Python-basierte Befehle aus, die in vom Benutzer bereitgestellten Dateien definiert sind.

note: type: Plain text
en: iocontrol main loop process:
de: Prozess der iocontrol-Hauptschleife:

note: type: Plain text
en: registers for SIGTERM and SIGINT signals from the OS.
de: Register für SIGTERM- und SIGINT-Signale des Betriebssystems.

note: type: Plain text
en: checks to see it HAL inputs have changed
de: prüft, ob sich die HAL-Eingänge geändert haben

note: type: Plain text
en: checks if read_tool_inputs() indicates the tool change is finished and set emcioStatus.status
de: prüft, ob read_tool_inputs() anzeigt, dass der Werkzeugwechsel abgeschlossen ist und setzt emcioStatus.status

note: type: Plain text
en: checks for I/O related NML messages
de: prüft auf E/A-bezogene NML-Nachrichten

note: type: Plain text
en: nml message numbers: from emc.hh:
de: nml-Nachrichtennummern: von emc.hh:

note: type: delimited block -
en: #define EMC_IO_INIT_TYPE                             ((NMLTYPE) 1601)
    #define EMC_TOOL_STAT_TYPE                           ((NMLTYPE) 1199)
    #define EMC_TOOL_INIT_TYPE                           ((NMLTYPE) 1101)
    #define EMC_TOOL_HALT_TYPE                           ((NMLTYPE) 1102)
    #define EMC_TOOL_ABORT_TYPE                          ((NMLTYPE) 1103)
    #define EMC_TOOL_PREPARE_TYPE                        ((NMLTYPE) 1104)
    #define EMC_TOOL_LOAD_TYPE                           ((NMLTYPE) 1105)
    #define EMC_TOOL_UNLOAD_TYPE                         ((NMLTYPE) 1106)
    #define EMC_TOOL_LOAD_TOOL_TABLE_TYPE                ((NMLTYPE) 1107)
    #define EMC_TOOL_SET_OFFSET_TYPE                     ((NMLTYPE) 1108)
    #define EMC_TOOL_SET_NUMBER_TYPE                     ((NMLTYPE) 1109)
    // the following message is sent to io at the very start of an M6
    // even before emccanon issues the move to toolchange position
    #define EMC_TOOL_START_CHANGE_TYPE                   ((NMLTYPE) 1110)
de: #define EMC_IO_INIT_TYPE ((NMLTYPE) 1601)
    #define EMC_TOOL_STAT_TYPE ((NMLTYPE) 1199)
    #define EMC_TOOL_INIT_TYPE ((NMLTYPE) 1101)
    #define EMC_TOOL_HALT_TYPE ((NMLTYPE) 1102)
    #define EMC_TOOL_ABORT_TYPE ((NMLTYPE) 1103)
    #define EMC_TOOL_PREPARE_TYPE ((NMLTYPE) 1104)
    #define EMC_TOOL_LOAD_TYPE ((NMLTYPE) 1105)
    #define EMC_TOOL_UNLOAD_TYPE ((NMLTYPE) 1106)
    #define EMC_TOOL_LOAD_TOOL_TABLE_TYPE ((NMLTYPE) 1107)
    #define EMC_TOOL_SET_OFFSET_TYPE ((NMLTYPE) 1108)
    #define EMC_TOOL_SET_NUMBER_TYPE ((NMLTYPE) 1109)
    // die folgende Nachricht wird gleich zu Beginn eines M6 an io gesendet
    // noch bevor emccanon die Bewegung zur Werkzeugwechselposition ausgibt
    #define EMC_TOOL_START_CHANGE_TYPE ((NMLTYPE) 1110)

note: type: Plain text
en:   FIXME User Interfaces
de: Benutzerschnittstellen

note: type: Title ==
en: libnml Introduction
de: libnml Einführung

note: type: Plain text
en: libnml is derived from the NIST rcslib without all the multi-platform support. Many of the wrappers around platform specific code has been removed along with much of the code that is not required by LinuxCNC. It is hoped that sufficient compatibility remains with rcslib so that applications can be implemented on non-Linux platforms and still be able to communicate with LinuxCNC.
de: libnml ist von der NIST rcslib abgeleitet, ohne die ganze Multiplattform-Unterstützung. Viele der Wrapper um plattformspezifischen Code wurde entfernt, zusammen mit einem Großteil des Codes, der nicht für LinuxCNC erforderlich ist. Es ist zu hoffen, dass ausreichende Kompatibilität mit rcslib bleibt, so dass Anwendungen auf Nicht-Linux-Plattformen implementiert werden können und dies weiterhin in der Lage sind, mit LinuxCNC zu kommunizieren.

note: type: Plain text
en: This chapter is not intended to be a definitive guide to using libnml (or rcslib), instead, it will eventually provide an overview of each C++ class and their member functions. Initially, most of these notes will be random comments added as the code scrutinized and modified.
de: Dieses Kapitel ist nicht als endgültiger Leitfaden für die Verwendung von libnml (oder rcslib) gedacht. Stattdessen soll es einen Überblick über jede C++-Klasse und ihre Mitgliedsfunktionen geben. Anfänglich werden die meisten dieser Anmerkungen zufällige Kommentare sein, die bei der Überprüfung und Änderung des Codes hinzugefügt werden.

note: type: Plain text
en: Base class to maintain a linked list. This is one of the core building blocks used in passing NML messages and assorted internal data structures.
de: Basisklasse zur Verwaltung einer verknüpften Liste. Dies ist einer der wichtigsten Bausteine für die Weitergabe von NML-Nachrichten und verschiedenen internen Datenstrukturen.

note: type: Plain text
en: Base class for producing a linked list - Purpose, to hold pointers to the previous and next nodes, pointer to the data, and the size of the data.
de: Basisklasse für die Erstellung einer verknüpften Liste - Zweck, Zeiger auf den vorherigen und den nächsten Knoten, Zeiger auf die Daten und die Größe der Daten zu halten.

note: type: Plain text
en: No memory for data storage is allocated.
de: Es ist kein Speicher für die Datenspeicherung zugewiesen.

note: type: Plain text
en: Provides a block of shared memory along with a semaphore (inherited from the Semaphore class). Creation and destruction of the semaphore is handled by the SharedMemory constructor and destructor.
de: Stellt einen Block von gemeinsamem Speicher zusammen mit einer Semaphore (geerbt von der Klasse Semaphore) bereit. Die Erstellung und Zerstörung der Semaphore wird durch den SharedMemory-Konstruktor und -Destruktor gehandhabt.

note: type: Plain text
en: Class for passing NML messages between local processes using a shared memory buffer. Much of internal workings are inherited from the CMS class.
de: Klasse zur Weitergabe von NML-Nachrichten zwischen lokalen Prozessen unter Verwendung eines gemeinsamen Speicherpuffers. Ein Großteil der internen Arbeitsweise wird von der CMS-Klasse geerbt.

note: type: Plain text
en: The Timer class provides a periodic timer limited only by the resolution of the system clock. If, for example, a process needs to be run every 5 seconds regardless of the time taken to run the process, the following code snippet demonstrates how :
de: Die Klasse Timer bietet einen periodischen Timer, der nur durch die Auflösung der Systemuhr begrenzt ist. Wenn zum Beispiel ein Prozess alle 5 Sekunden ausgeführt werden muss, unabhängig von der Zeit, die für die Ausführung des Prozesses benötigt wird. Der folgende Codeschnipsel zeigt wie :

note: type: delimited block -
en: main()
    {
        timer = new Timer(5.0);    /* Initialize a timer with a 5 second loop */
        while(0) {
            /* Do some process */
            timer.wait();    /* Wait till the next 5 second interval */
        }
        delete timer;
    }
de: main()
    {
        timer = new Timer(5.0);    /* Initialize a timer mit einer 5 Sekunden-Schleife (engl. loop) */
        while(0) {
            /* hier wird irgendein beliebiger Prozess ausgeführt */
            timer.wait();    /* Warte bis zum nächsten 5 Sekunden Interval */
        }
        delete timer;
    }

note: type: Plain text
en: The Semaphore class provides a method of mutual exclusions for accessing a shared resource. The function to get a semaphore can either block until access is available, return after a timeout, or return immediately with or without gaining the semaphore. The constructor will create a semaphore or attach to an existing one if the ID is already in use.
de: Die Klasse Semaphore bietet eine Methode des gegenseitigen Ausschlusses für den Zugriff auf eine gemeinsam genutzte Ressource. Die Funktion zum Abrufen einer Semaphore kann entweder blockieren bis der Zugriff möglich ist, nach einer Zeitüberschreitung zurückkehren oder sofort mit oder ohne Abrufen der Semaphore zurückkehren. Der Konstruktor erstellt eine Semaphore oder hängt an eine bestehende an, wenn die ID bereits in Gebrauch ist.

note: type: Plain text
en: The Semaphore::destroy() must be called by the last process only.
de: Die Funktion Semaphore::destroy() darf nur vom letzten Prozess aufgerufen werden.

note: type: Plain text
en: At the heart of libnml is the CMS class, it contains most of the functions used by libnml and ultimately NML. Many of the internal functions are overloaded to allow for specific hardware dependent methods of data passing. Ultimately, everything revolves around a central block of memory (referred to as the 'message buffer' or just 'buffer'). This buffer may exist as a shared memory block accessed by other CMS/NML processes, or a local and private buffer for data being transferred by network or serial interfaces.
de: Das Herzstück von libnml ist die CMS-Klasse. Sie enthält die meisten der von libnml und letztlich von NML verwendeten Funktionen enthält. Viele der internen Funktionen sind überladen, um spezifische hardwareabhängige Methoden der Datenübergabe zu ermöglichen. Letztlich dreht sich alles um einen zentralen Speicherblock (der als 'Nachrichtenpuffer' oder einfach 'Puffer' bezeichnet wird). Dieser Puffer kann ein gemeinsam genutzter Speicherblock sein, auf den andere CMS/NML-Prozesse zugreifen, oder ein lokaler und privater Puffer für Daten, die über Netzwerk- oder serielle Schnittstellen übertragen werden.

note: type: Plain text
en: The buffer is dynamically allocated at run time to allow for greater flexibility of the CMS/NML sub-system. The buffer size must be large enough to accommodate the largest message, a small amount for internal use and allow for the message to be encoded if this option is chosen (encoded data will be covered later). The following figure is an internal view of the buffer space.
de: Der Puffer wird zur Laufzeit dynamisch zugewiesen, um eine größere Flexibilität des CMS/NML-Subsystems zu ermöglichen. Die Puffergröße muss groß genug sein, um die größte Nachricht aufzunehmen, eine kleine Menge für den internen Gebrauch und die Möglichkeit, die Nachricht zu kodieren, wenn diese Option gewählt wird (auf kodierte Daten wird später eingegangen). Die folgende Abbildung zeigt eine interne Ansicht des Pufferspeichers.

note: type: Block title
en: CMS buffer
de: CMS-Puffer

note: type: Plain text
en: The CMS base class is primarily responsible for creating the communications pathways and interfacing to the operating system.
de: Die CMS-Basisklasse ist in erster Linie für die Erstellung der Kommunikationswege und der Schnittstellen zum Betriebssystem verantwortlich.

note: == NML Notes /* FIX ME */ A collection of random notes and thought whilst studying the libnml and rcslib code. Much of this needs to be edited and re-written in a coherent manner before publication. type: Title ==
en: Configuration file format
de: Format der Konfigurationsdatei

note: type: Plain text
en: NML configuration consists of two types of line formats. One for Buffers, and a second for Processes that connect to the buffers.
de: Die NML-Konfiguration besteht aus zwei Arten von Zeilenformaten. Eines für Puffer und ein zweites für Prozesse, die mit den Puffern verbunden sind.

note: type: Title ===
en: Buffer line
de: Pufferzeile

note: type: Plain text
en: The original NIST format of the buffer line is:
de: Das ursprüngliche NIST-Format der Pufferzeile ist:

note: type: Plain text
en: 'B name type host size neut RPC# buffer# max_procs key [type specific configs]'
de: 'B name type host size neut RPC# buffer# max_procs key [typspezifische configs]'

note: type: Plain text
en: 'B' - identifies this line as a Buffer configuration.
de: 'B' - kennzeichnet diese Zeile als eine Pufferkonfiguration.

note: type: Plain text
en: 'name' - is the identifier of the buffer.
de: 'name' - ist die Kennung des Puffers.

note: type: Plain text
en: 'type' - describes the buffer type - SHMEM, LOCMEM, FILEMEM, PHANTOM, or GLOBMEM.
de: 'type' - beschreibt den Puffertyp - SHMEM, LOCMEM, FILEMEM, PHANTOM oder GLOBMEM.

note: type: Plain text
en: 'host' - is either an IP address or host name for the NML server
de: 'host' - ist entweder eine IP-Adresse oder ein Hostname für den NML-Server

note: type: Plain text
en: 'size' - is the size of the buffer
de: 'size' - ist die Größe des Puffers

note: type: Plain text
en: 'neut' - a boolean to indicate if the data in the buffer is encoded in a machine independent format, or raw.
de: 'neut' - ein boolescher Wert, der angibt, ob die Daten im Puffer in einem maschinenunabhängigen Format oder im Rohformat kodiert sind.

note: type: Plain text
en: 'RPC#' - Obsolete - Place holder retained for backward compatibility only.
de: 'RPC#' - Obsolet - Platzhalter nur noch aus Gründen der Abwärtskompatibilität.

note: type: Plain text
en: 'buffer#' - A unique ID number used if a server controls multiple buffers.
de: 'buffer#' - Eine eindeutige ID-Nummer, die verwendet wird, wenn ein Server mehrere Puffer kontrolliert.

note: type: Plain text
en: 'max_procs' - is the maximum processes allowed to connect to this buffer.
de: 'max_procs' - ist die maximale Anzahl von Prozessen, die sich mit diesem Puffer verbinden dürfen.

note: type: Plain text
en: 'key' - is a numerical identifier for a shared memory buffer
de: 'key' - ist ein numerischer Bezeichner für einen gemeinsamen Speicherpuffer

note: type: Title ===
en: Type specific configs
de: Typspezifische Konfigurationen

note: type: Plain text
en: The buffer type implies additional configuration options whilst the host operating system precludes certain combinations. In an attempt to distill published documentation in to a coherent format, only the *SHMEM* buffer type will be covered.
de: Der Puffertyp impliziert zusätzliche Konfigurationsoptionen, während das Host-Betriebssystem bestimmte Kombinationen ausschließt. In dem Bemühen, die veröffentlichte Dokumentation in ein kohärentes Format zu bringen, wird nur der Puffertyp *SHMEM* behandelt.

note: type: Plain text
en: 'mutex=os_sem' - default mode for providing semaphore locking of the buffer memory.
de: 'mutex=os_sem' - Standardmodus für die Bereitstellung von Semaphore-Sperren des Pufferspeichers.

note: type: Plain text
en: 'mutex=none' - Not used
de: 'mutex=none' - Nicht verwendet

note: type: Plain text
en: 'mutex=no_interrupts' - not applicable on a Linux system
de: 'mutex=no_interrupts' - nicht anwendbar auf einem Linux-System

note: type: Plain text
en: 'mutex=no_switching' - not applicable on a Linux system
de: 'mutex=no_switching' - nicht anwendbar auf einem Linux-System

note: type: Plain text
en: 'mutex=mao split' - Splits the buffer in to half (or more) and allows one process to access part of the buffer whilst a second process is writing to another part.
de: 'mutex=mao split' - Teilt den Puffer in zwei Hälften (oder mehr) und erlaubt einem Prozess, auf einen Teil des Puffers zuzugreifen, während ein zweiter Prozess in einen anderen Teil schreibt.

note: type: Plain text
en: 'TCP=(port number)' - Specifies which network port to use.
de: 'TCP=(Portnummer)' - Gibt an, welcher Netzwerkport verwendet werden soll.

note: type: Plain text
en: 'UDP=(port number)' - ditto
de: 'UDP=(Portnummer)' - dito

note: type: Plain text
en: 'STCP=(port number)' - ditto
de: 'STCP=(Portnummer)' - dito

note: type: Plain text
en: 'serialPortDevName=(serial port)' - Undocumented.
de: 'serialPortDevName=(serielle Schnittstelle)' - Undokumentiert.

note: type: Plain text
en: 'passwd=file_name.pwd' - Adds a layer of security to the buffer by requiring each process to provide a password.
de: 'passwd=file_name.pwd' - Fügt dem Puffer eine Sicherheitsebene hinzu, indem jeder Prozess ein Passwort angeben muss.

note: type: Plain text
en: 'bsem' - NIST documentation implies a key for a blocking semaphore, and if bsem=-1, blocking reads are prevented.
de: 'bsem' - Die NIST-Dokumentation impliziert einen Schlüssel für einen blockierenden Semaphor, und wenn bsem=-1, werden blockierende Lesevorgänge verhindert.

note: type: Plain text
en: 'queue' - Enables queued message passing.
de: 'queue' - Aktiviert die Weitergabe von Nachrichten in Warteschlangen.

note: type: Plain text
en: 'ascii' - Encode messages in a plain text format
de: 'ascii' - Nachrichten in einem einfachen Textformat kodieren

note: type: Plain text
en: 'disp' - Encode messages in a format suitable for display (???)
de: 'disp' - Nachrichten in einem für die Anzeige geeigneten Format kodieren (???)

note: type: Plain text
en: 'xdr' - Encode messages in External Data Representation. (see rpc/xdr.h for details).
de: 'xdr' - Kodierung von Nachrichten in External Data Representation. (siehe rpc/xdr.h für Details).

note: type: Plain text
en: 'diag' - Enables diagnostics stored in the buffer (timings and byte counts ?)
de: 'diag' - Aktiviert die im Puffer gespeicherten Diagnosen (Timings und Bytezahlen ?)

note: type: Title ===
en: Process line
de: Prozesslinie

note: type: Plain text
en: The original NIST format of the process line is:
de: Das ursprüngliche NIST-Format der Prozesslinie ist:

note: type: Plain text
en: *P name buffer type host ops server timeout master c_num [type specific configs]*
de: *P name buffer type host ops server timeout master c_num [typspecifische configs]*

note: type: Plain text
en: 'P' - identifies this line as a Process configuration.
de: 'P' - kennzeichnet diese Zeile als eine Prozesskonfiguration.

note: type: Plain text
en: 'name' - is the identifier of the process.
de: 'name' - ist der Bezeichner des Prozesses.

note: type: Plain text
en: 'buffer' - is one of the buffers defined elsewhere in the config file.
de: 'buffer' - ist einer der an anderer Stelle in der Konfigurationsdatei definierten Puffer.

note: type: Plain text
en: 'type' - defines whether this process is local or remote relative to the buffer.
de: 'type' - legt fest, ob dieser Prozess relativ zum Puffer lokal oder entfernt ist.

note: type: Plain text
en: 'host' - specifies where on the network this process is running.
de: 'host' - gibt an, wo im Netzwerk dieser Prozess ausgeführt wird.

note: type: Plain text
en: 'ops' - gives the process read only, write only, or read/write access to the buffer.
de: 'ops' - gibt dem Prozess nur Lese-, nur Schreib- oder Lese-/Schreibzugriff auf den Puffer.

note: type: Plain text
en: 'server' - specifies if this process will running a server for this buffer.
de: 'server' - gibt an, ob dieser Prozess einen Server für diesen Puffer betreiben wird.

note: type: Plain text
en: 'timeout' - sets the timeout characteristics for accesses to the buffer.
de: 'timeout' - legt die Timeout-Eigenschaften für Zugriffe auf den Puffer fest.

note: type: Plain text
en: 'master' - indicates if this process is responsible for creating and destroying the buffer.
de: 'master' - gibt an, ob dieser Prozess für die Erstellung und Löschung des Puffers verantwortlich ist.

note: type: Plain text
en: 'c_num' - an integer between zero and (max_procs -1)
de: 'c_num' - eine Ganzzahl zwischen Null und (max_procs -1)

note: type: Title ===
en: Configuration Comments
de: Kommentare zur Konfiguration

note: type: Plain text
en: Some of the configuration combinations are invalid, whilst others imply certain constraints. On a Linux system, GLOBMEM is obsolete, whilst PHANTOM is only really useful in the testing stage of an application, likewise for FILEMEM. LOCMEM is of little use for a multi-process application, and only offers limited performance advantages over SHMEM. This leaves SHMEM as the only buffer type to use with LinuxCNC.
de: Einige der Konfigurationskombinationen sind ungültig, während andere bestimmte Beschränkungen mit sich bringen. Auf einem Linux-System ist GLOBMEM überflüssig, während PHANTOM nur in der Testphase einer Anwendung wirklich nützlich ist, gleiches gilt für FILEMEM. LOCMEM ist für eine Multiprozess-Anwendung kaum von Nutzen und bietet nur begrenzte Leistungsvorteile gegenüber SHMEM. Damit bleibt SHMEM der einzige Puffertyp, der mit LinuxCNC verwendet werden kann.

note: type: Plain text
en: The neut option is only of use in a multi-processor system where different (and incompatible) architectures are sharing a block of memory. The likelihood of seeing a system of this type outside of a museum or research establishment is remote and is only relevant to GLOBMEM buffers.
de: Die Option neut ist nur in einem Multiprozessorsystem von Nutzen, in dem sich verschiedene (und inkompatible) Architekturen einen Speicherblock teilen. Die Wahrscheinlichkeit, ein solches System außerhalb eines Museums oder einer Forschungseinrichtung zu sehen, ist gering und nur für GLOBMEM-Puffer relevant.

note: type: Plain text
en: The RPC number is documented as being obsolete and is retained only for compatibility reasons.
de: Die RPC-Nummer ist als veraltet dokumentiert und wird nur aus Kompatibilitätsgründen beibehalten.

note: type: Plain text
en: With a unique buffer name, having a numerical identity seems to be pointless. Need to review the code to identify the logic. Likewise, the key field at first appears to be redundant, and it could be derived from the buffer name.
de: Mit einem eindeutigen Puffernamen scheint eine numerische Identität sinnlos zu sein. Ich muss den Code überprüfen, um die Logik zu erkennen. Auch das Schlüsselfeld scheint zunächst redundant zu sein und könnte vom Puffernamen abgeleitet werden.

note: type: Plain text
en: The purpose of limiting the number of processes allowed to connect to any one buffer is unclear from existing documentation and from the original source code. Allowing unspecified multiple processes to connect to a buffer is no more difficult to implement.
de: Der Zweck der Begrenzung der Anzahl von Prozessen, die sich mit einem Puffer verbinden können, ist aus der vorhandenen Dokumentation und dem ursprünglichen Quellcode nicht ersichtlich. Es ist nicht schwieriger zu implementieren, wenn mehrere nicht spezifizierte Prozesse eine Verbindung zu einem Puffer herstellen können.

note: type: Plain text
en: The mutex types boil down to one of two, the default "os_sem" or "mao split". Most of the NML messages are relatively short and can be copied to or from the buffer with minimal delays, so split reads are not essential.
de: Die Mutex-Typen beschränken sich auf einen von zwei, den Standard "os_sem" oder "mao split". Die meisten NML-Nachrichten sind relativ kurz und können mit minimalen Verzögerungen in oder aus dem Puffer kopiert werden, so dass Split-Reads nicht unbedingt erforderlich sind.

note: type: Plain text
en: Data encoding is only relevant when transmitted to a remote process - Using TCP or UDP implies XDR encoding. Whilst ASCII encoding may have some use in diagnostics or for passing data to an embedded system that does not implement NML.
de: Die Datenkodierung ist nur relevant, wenn sie an einen entfernten Prozess übertragen wird - die Verwendung von TCP oder UDP impliziert XDR-Kodierung. Während die ASCII-Kodierung bei Diagnosen oder bei der Übermittlung von Daten an ein eingebettetes System, das NML nicht implementiert, von Nutzen sein kann.

note: type: Plain text
en: UDP protocols have fewer checks on data and allows a percentage of packets to be dropped. TCP is more reliable, but is marginally slower.
de: Bei UDP-Protokollen werden weniger Daten überprüft und ein bestimmter Prozentsatz der Pakete kann verworfen werden. TCP ist zuverlässiger, aber geringfügig langsamer.

note: type: Plain text
en: If LinuxCNC is to be connected to a network, one would hope that it is local and behind a firewall. About the only reason to allow access to LinuxCNC via the Internet would be for remote diagnostics - This can be achieved far more securely using other means, perhaps by a web interface.
de: Wenn LinuxCNC an ein Netzwerk angeschlossen werden soll, würde man hoffen, dass es lokal und hinter einer Firewall ist. Über den einzigen Grund, den Zugriff auf LinuxCNC über das Internet zu ermöglichen, wäre für die Ferndiagnose - Dies kann viel sicherer mit anderen Mitteln erreicht werden, vielleicht durch eine Web-Schnittstelle.

note: type: Plain text
en: The exact behavior when timeout is set to zero or a negative value is unclear from the NIST documents. Only INF and positive values are mentioned. However, buried in the source code of rcslib, it is apparent that the following applies:
de: Das genaue Verhalten, wenn die Zeitüberschreitung auf Null oder einen negativen Wert gesetzt wird, geht aus den NIST-Dokumenten nicht hervor. Es werden nur INF und positive Werte erwähnt. Im Quellcode von rcslib ist jedoch ersichtlich, dass Folgendes gilt:

note: type: Plain text
en: timeout > 0 Blocking access until the timeout interval is reached or access to the buffer is available.
de: timeout > 0 Sperrung des Zugriffs, bis das Timeout-Intervall erreicht ist oder der Zugriff auf den Puffer möglich ist.

note: type: Plain text
en: timeout = 0 Access to the buffer is only possible if no other process is reading or writing at the time.
de: timeout = 0 Der Zugriff auf den Puffer ist nur möglich, wenn kein anderer Prozess gerade liest oder schreibt.

note: type: Plain text
en: timeout < 0 or INF Access is blocked until the buffer is available.
de: timeout < 0 oder INF Der Zugriff wird blockiert, bis der Puffer verfügbar ist.

note: type: Title ==
en: NML base class
de: NML-Basisklasse

note: FIXME type: Plain text
en: Expand on the lists and the relationship between NML, NMLmsg, and the lower level cms classes.
de: Mehr zu Listen und die Beziehung zwischen NML, NMLmsg und den untergeordneten cms-Klassen.

note: type: Plain text
en: Not to be confused with NMLmsg, RCS_STAT_MSG, or RCS_CMD_MSG.
de: Nicht zu verwechseln mit NMLmsg, RCS_STAT_MSG, oder RCS_CMD_MSG.

note: type: Plain text
en: NML is responsible for parsing the config file, configuring the cms buffers and is the mechanism for routing messages to the correct buffer(s). To do this, NML creates several lists for:
de: NML ist verantwortlich für das Parsen der Konfigurationsdatei, die Konfiguration der cms-Puffer und die Weiterleitung von Nachrichten an die richtigen Puffer. Zu diesem Zweck erstellt NML mehrere Listen für:

note: type: Plain text
en: cms buffers created or connected to.
de: cms-Puffer, die erstellt oder die verbunden wurden.

note: type: Plain text
en: processes and the buffers they connect to
de: Prozesse und die Puffer, mit denen sie verbunden sind

note: type: Plain text
en: a long list of format functions for each message type
de: eine lange Liste von Formatfunktionen für jeden Nachrichtentyp

note: type: Plain text
en: This last item is probably the nub of much of the malignment of libnml/rcslib and NML in general. Each message that is passed via NML requires a certain amount of information to be attached in addition to the actual data. To do this, several formatting functions are called in sequence to assemble fragments of the overall message. The format functions will include NML_TYPE, MSG_TYPE, in addition to the data declared in derived NMLmsg classes. Changes to the order in which the formatting functions are called and also the variables passed will break compatibility with rcslib if messed with - There are reasons for maintaining rcslib compatibility, and good reasons for messing with the code. The question is, which set of reasons are overriding?
de: Dieser letzte Punkt ist wahrscheinlich der Kern eines Großteils der schlechten Bewertung von libnml/rcslib und NML im Allgemeinen. Jede Nachricht, die über NML weitergegeben wird, erfordert neben den eigentlichen Daten auch eine gewisse Menge an Informationen, die angehängt werden müssen. Zu diesem Zweck werden nacheinander mehrere Formatierungsfunktionen aufgerufen, um Fragmente der Gesamtnachricht zusammenzusetzen. Die Formatierungsfunktionen umfassen NML_TYPE, MSG_TYPE sowie die in abgeleiteten NMLmsg-Klassen deklarierten Daten. Änderungen an der Reihenfolge, in der die Formatierungsfunktionen aufgerufen werden, und auch an den übergebenen Variablen führen zu einem Bruch der Kompatibilität mit rcslib, wenn daran herumgepfuscht wird. Es gibt Gründe für ein Beibehalten der Kompatiblität mit rcslib, aber auch für das Herumdoktoren an dem Code für eigene Anpassungen Die Frage ist, welche dieser Gründe überwiegen?

note: type: Title ===
en: NML internals
de: NML-Interna

note: type: Title ====
en: NML constructor
de: NML-Konstruktor

note: type: Plain text
en: NML::NML() parses the config file and stores it in a linked list to be passed to cms constructors in single lines. It is the function of the NML constructor to call the relevant cms constructor for each buffer and maintain a list of the cms objects and the processes associated with each buffer.
de: NML::NML() parst die Konfigurationsdatei und speichert sie in einer verknüpften Liste, die in einzelnen Zeilen an cms-Konstruktoren übergeben wird. Es ist die Aufgabe des NML-Konstruktors, den entsprechenden cms-Konstruktor für jeden Puffer aufzurufen und eine Liste der cms-Objekte und der mit jedem Puffer verbundenen Prozesse zu führen.

note: type: Plain text
en: It is from the pointers stored in the lists that NML can interact with cms and why Doxygen fails to show the real relationships involved.
de: Die in den Listen gespeicherten Zeiger sind die Grundlage auf der NML mit cms interagiert und warum Doxygen die tatsächlichen Beziehungen nicht aufzeigt.

note: type: Plain text
en: The config is stored in memory before passing a pointer to a specific line to the cms constructor. The cms constructor then parses the line again to extract a couple of variables... It would make more sense to do ALL the parsing and save the variables in a struct that is passed to the cms constructor - This would eliminate string handling and reduce duplicate code in cms...
de: Die Konfiguration wird im Speicher abgelegt, bevor ein Zeiger auf eine bestimmte Zeile an den cms-Konstruktor übergeben wird. Der cms-Konstruktor analysiert dann die Zeile erneut, um einige Variablen zu extrahieren... Es wäre sinnvoller, das gesamte Parsing vorzunehmen und die Variablen in einer Struktur zu speichern, die an den CMS-Konstruktor weitergegeben wird - dies würde die Handhabung von Zeichenketten eliminieren und duplizierten Code im CMS reduzieren.

note: type: Title ====
en: NML read/write
de: NML lesen/schreiben

note: type: Plain text
en: Calls to NML::read and NML::write both perform similar tasks in so much as processing the message - The only real variation is in the direction of data flow.
de: Die Aufrufe von NML::read und NML::write führen beide ähnliche Aufgaben aus, nämlich die Verarbeitung der Nachricht - der einzige wirkliche Unterschied liegt in der Richtung des Datenflusses.

note: type: Plain text
en: A call to the read function first gets data from the buffer, then calls format_output(), whilst a write function would call format_input() before passing the data to the buffer. It is in format_xxx() that the work of constructing or deconstructing the message takes place. A list of assorted functions are called in turn to place various parts of the NML header (not to be confused with the cms header) in the right order - The last function called is emcFormat() in emc.cc.
de: Ein Aufruf der Lesefunktion holt zunächst Daten aus dem Puffer und ruft dann format_output() auf, während eine Schreibfunktion format_input() aufrufen würde, bevor sie die Daten an den Puffer übergibt. In format_xxx() findet die Arbeit des Aufbaus oder Abbaus der Nachricht statt. Eine Liste verschiedener Funktionen wird nacheinander aufgerufen, um verschiedene Teile des NML-Headers (nicht zu verwechseln mit dem cms-Header) in die richtige Reihenfolge zu bringen - die letzte aufgerufene Funktion ist emcFormat() in emc.cc.

note: type: Title ====
en: NMLmsg and NML relationships
de: NMLmsg und NML-Beziehungen

note: type: Plain text
en: NMLmsg is the base class from which all message classes are derived.  Each message class must have a unique ID defined (and passed to the constructor) and also an update(*cms) function. The update() will be called by the NML read/write functions when the NML formatter is called -- the pointer to the formatter will have been declared in the NML constructor at some point. By virtue of the linked lists NML creates, it is able to select cms pointer that is passed to the formatter and therefor which buffer is to be used.
de: NMLmsg ist die Basisklasse, von der alle Nachrichtenklassen abgeleitet sind.  Für jede Nachrichtenklasse muss eine eindeutige ID definiert (und an den Konstruktor übergeben) werden sowie eine update(*cms)-Funktion. Die update()-Funktion wird von den NML-Lese-/Schreibfunktionen aufgerufen, wenn der NML-Formatierer aufgerufen wird - der Zeiger auf den Formatierer wird irgendwann im NML-Konstruktor deklariert worden sein. Durch die von NML erstellten verknüpften Listen ist es möglich, den cms-Zeiger auszuwählen, der an den Formatierer übergeben wird, und damit den zu verwendenden Puffer.

note: type: Title ==
en: Adding custom NML commands
de: Hinzufügen von benutzerdefinierten NML-Befehlen

note: type: Plain text
en: LinuxCNC is pretty awesome, but some parts need some tweaking. As you know communication is done through NML channels, the data sent through such a channel is one of the classes defined in emc.hh (implemented in emc.cc). If somebody needs a message type that doesn't exist, he should follow these steps to add a new one. (The Message I added in the example is called EMC_IO_GENERIC (inherits EMC_IO_CMD_MSG (inherits RCS_CMD_MSG)))
de: LinuxCNC ist ziemlich genial, aber einige Teile brauchen ein wenig manuelle Anpassung. Wie Sie wissen, erfolgt die Kommunikation über NML-Kanäle, die Daten werden durch einen Kanal gesendet, der in einer der Klassen in emc.hh definiert ist (und in emc.cc implementiert). Wenn jemand einen Nachrichtentyp benötigt, der nicht existiert, sollte er diese Schritte befolgen, um einen neuen hinzuzufügen. (Die Nachricht, die ich im Beispiel hinzugefügt habe, heißt EMC_IO_GENERIC (erbt von EMC_IO_CMD_MSG (erbt von RCS_CMD_MSG))

note: type: Plain text
en: add the definition of the EMC_IO_GENERIC class to emc2/src/emc/nml_intf/emc.hh
de: Hinzufügen der Definition der Klasse EMC_IO_GENERIC zu emc2/src/emc/nml_intf/emc.hh

note: type: Plain text
en: add the type define: #define EMC_IO_GENERIC_TYPE ((NMLTYPE) 1605) +
de: Hinzufügen der Typdefinition: #define EMC_IO_GENERIC_TYPE ((NMLTYPE) 1605) +

note: type: Plain text
en: (I chose 1605, because it was available) to emc2/src/emc/nml_intf/emc.hh
de: (ich habe 1605 gewählt, weil es verfügbar war) nach emc2/src/emc/nml_intf/emc.hh

note: type: Plain text
en: add case EMC_IO_GENERIC_TYPE to emcFormat in emc2/src/emc/nml_intf/emc.cc
de: Fall EMC_IO_GENERIC_TYPE zu emcFormat in emc2/src/emc/nml_intf/emc.cc hinzufügen

note: type: Plain text
en: add case EMC_IO_GENERIC_TYPE to emc_symbol_lookup in emc2/src/emc/nml_intf/emc.cc
de: Fall EMC_IO_GENERIC_TYPE zu emc_symbol_lookup in emc2/src/emc/nml_intf/emc.cc hinzufügen

note: type: Plain text
en: add EMC_IO_GENERIC::update function to emc2/src/emc/nml_intf/emc.cc
de: EMC_IO_GENERIC::update-Funktion in emc2/src/emc/nml_intf/emc.cc hinzufügen

note: type: Plain text
en: Recompile, and the new message should be there. The next part is to send such messages from somewhere, and receive them in another place, and do some stuff with it.
de: Neu kompilieren, und dieser neue Nachrichten-Typ sollte da sein. Der nächste Teil besteht darin, solche Nachrichten von irgendwoher zu senden und sie an einem anderen Ort zu empfangen und etwas damit anzufangen.

note: type: Title ==
en: The Tool Table and Toolchanger
de: Tool Table and Toolchangeer

note: type: Plain text
en: LinuxCNC interfaces with toolchanger hardware, and has an internal toolchanger abstraction.  LinuxCNC manages tool information in a tool table file.
de: LinuxCNC Schnittstellen mit Werkzeugwechsler-Hardware, und hat eine interne Werkzeugwechsler Abstraktion.  LinuxCNC verwaltet Werkzeuginformationen in einer Werkzeugtabelle.

note: type: Title ===
en: Toolchanger abstraction in LinuxCNC
de: Werkzeugwechsler Abstraktion in LinuxCNC

note: type: Plain text
en: LinuxCNC supports two kinds of toolchanger hardware, called _nonrandom_ and _random_.  The INI setting <<sub:ini:sec:emcio,[EMCIO]RANDOM_TOOLCHANGER>> controls which of these kinds of hardware LinuxCNC thinks it's connected to.
de: LinuxCNC unterstützt zwei Arten von Werkzeugwechsler Hardware, genannt _nonrandom_ und _random_.  Die INI-Einstellung <<sub:ini:sec:emcio,[EMCIO]RANDOM_TOOLCHANGER>> steuert, mit welche dieser Arten von Hardware LinuxCNC denkt verbunden zu sein.

note: type: Title ====
en: Nonrandom Toolchangers
de: Nicht-zufällige Werkzeugwechsler

note: type: Plain text
en: Nonrandom toolchanger hardware puts each tool back in the pocket it was originally loaded from.
de: Die Hardware des nicht-zufälligen Werkzeugwechslers legt jedes Werkzeug in exakt die Tasche zurück, aus der es ursprünglich entnommen wurde.

note: type: Plain text
en: Examples of nonrandom toolchanger hardware are the "manual" toolchanger, lathe tool turrents, and rack toolchangers.
de: Beispiele für nicht-zufällige Werkzeugwechsler sind der "manuelle" Werkzeugwechsler, Drehautomaten und Regalwechsler.

note: type: Plain text
en: When configured for a nonrandom toolchanger, LinuxCNC does not change the pocket number in the tool table file as tools are loaded and unloaded.  Internal to LinuxCNC, on tool change the tool information is *copied* from the tool table's source pocket to pocket 0 (which represents the spindle), replacing whatever tool information was previously there.
de: Wenn für einen nicht-zufälligen Werkzeugwechsler konfiguriert, ändert LinuxCNC die Platznummer in der Werkzeugtabellen-Datei nicht wenn Werkzeuge geladen bzw. entladen werden.  LinuxCNC-intern werden bei einem Werkzeugwechsel die Werkzeug-Informationen von der Werkzeugtabelle *kopiert* von der jeweiligen Taschennummer der Quelle (der Ablage) zur Tasche mit der Nummer 0 (welche die Spindel darstellt). Dies ersetzt die vorherigen dort abgelegten Werkzeuginformationen.

note: type: Plain text
en: In LinuxCNC configured for nonrandom toolchanger, tool 0 (T0) has special meaning: "no tool".  T0 may not appear in the tool table file, and changing to T0 will result in LinuxCNC thinking it's got an empty spindle.
de: In einem für nicht-zufällige Werkzeugwechsler konfigurierten LinuxCNC hat Werkzeug 0 (T0) eine besondere Bedeutung: "kein Werkzeug".  T0 kann nicht in der Werkzeugtabelle Datei erscheinen, und der Wechsel zu T0 wird in LinuxCNC verstehen, dass die Spindel kein Werkzeug führt.

note: type: Title ====
en: Random Toolchangers
de: Zufällige Werkzeugwechsler

note: type: Plain text
en: Random toolchanger hardware swaps the tool in the spindle (if any) with the requested tool on tool change.  Thus the pocket that a tool resides in changes as it is swapped in and out of the spindle.
de: Die Hardware des Zufallswerkzeugwechslers tauscht das Werkzeug in der Spindel (falls vorhanden) mit dem angeforderten Werkzeug beim Werkzeugwechsel aus.  Somit ändert sich der Platz, in dem sich ein Werkzeug befindet, wenn es in die Spindel ein- und ausgewechselt wird.

note: type: Plain text
en: An example of random toolchanger hardware is a carousel toolchanger.
de: Ein Beispiel für einen zufälligen Werkzeugwechsler ist ein Karussell-Werkzeugwechsler.

note: type: Plain text
en: When configured for a random toolchanger, LinuxCNC swaps the pocket number of the old and the new tool in the tool table file when tools are loaded.  Internal to LinuxCNC, on tool change, the tool information is *swapped* between the tool table's source pocket and pocket 0 (which represents the spindle).  So after a tool change, pocket 0 in the tool table has the tool information for the new tool, and the pocket that the new tool came from has the tool information for the old tool (the tool that was in the spindle before the tool change), if any.
de: Wenn für ein zufälligen Werkzeugwechsler konfiguriert, tauscht LinuxCNC die Platznummer des alten und des neuen Werkzeugs in der Werkzeugtabellen-Datei, sobald Werkzeuge geladen werden.   LinuxCNC-intern, werden bei einem Werkzeugwechsel die Werkzeug-Informationen zwischen der Werkzeugtabellen Tasche mit dem Werkzeug und Tasche 0 (welche die Spindel darstellt) ausgetauscht.  Nach einem Werkzeugwechsel hat so Tasche 0 in der Werkzeugtabelle die Informationen zu einem neue Werkzeug und die Tasche, die das neue Werkzeug zuvor beherbergte, erhielt die Informationen für das alte Werkzeug (das Werkzeug, das in der Spindel vor dem Werkzeugwechsel war), wenn die Spindel überhaupt bestückt war.

note: type: Plain text
en: If LinuxCNC is configured for random toolchanger, tool 0 (T0) has *no* special meaning.  It is treated exactly like any other tool in the tool table.  It is customary to use T0 to represent "no tool" (ie, a tool with zero TLO), so that the spindle can be conveniently emptied when needed.
de: Wenn LinuxCNC für zufällige Werkzeugwechsler konfiguriert ist, hat Werkzeug 0 (T0) *keine* besondere Bedeutung.  Es wird genau wie jedes andere Werkzeug in der Werkzeugtabelle behandelt.  Es ist üblich, T0 zu verwenden, um "kein Werkzeug" (dh, ein Werkzeug mit Null TLO), so dass die Spindel bequem geleert werden kann.

note: type: Title ===
en: The Tool Table
de: Die Werkzeugtabelle

note: type: Plain text
en: LinuxCNC keeps track of tools in a file called the <<sec:tool-table,tool table>>.  The tool table records the following information for each tool:
de: LinuxCNC verfolgt die Nutzung der Werkzeuge in einer sogenannten <<sec:tool-table,Werkzeug-Tabelle>> als Datei.  Die Werkzeug-Tabelle zeichnet die folgenden Informationen für jedes Werkzeug:

note: type: Labeled list
en: tool number
de: Werkzeugnummer

note: type: Plain text
en: An integer that uniquely identifies this tool.  Tool numbers are handled differently by LinuxCNC when configured for random and nonrandom toolchangers:
de: Eine ganze Zahl, die dieses Werkzeug eindeutig identifiziert.  Werkzeugnummern werden von LinuxCNC unterschiedlich behandelt, wenn sie für zufällige und nicht zufällige Werkzeugwechsler konfiguriert sind:

note: type: Plain text
en: When LinuxCNC is configured for a nonrandom toolchanger this number must be positive.  T0 gets special handling and is not allowed to appear in the tool table.
de: Wenn LinuxCNC für einen nicht-zufälligen Werkzeugwechsler konfiguriert ist, muss diese Zahl positiv sein.  T0 bekommt eine Sonderbehandlung und darf nicht in der Werkzeugtabelle erscheinen.

note: type: Plain text
en: When LinuxCNC is configured for a random toolchanger this number must be non-negative.  T0 is allowed in the tool table, and is usually used to represent "no tool", i.e. the empty pocket.
de: Wenn LinuxCNC für einen zufälligen Werkzeugwechsler konfiguriert ist, muss diese Zahl nicht-negativ sein.  T0 ist in der Werkzeugtabelle erlaubt, und wird in der Regel verwendet, um "kein Werkzeug", d.h. die leere Tasche darstellen.

note: type: Labeled list
en: pocket number
de: Taschennummer

note: type: Plain text
en: An integer that identifies the pocket or slot in the toolchanger hardware where the tool resides.  Pocket numbers are handled differently by LinuxCNC when configured for random and nonrandom toolchangers:
de: Eine ganze Zahl zur Identifikation der Tasche oder des Steckplatz in der Werkzeugwechsler-Hardware, in der sich das Werkzeug befindet.  Pocket-Nummern werden unterschiedlich von LinuxCNC behandelt, abhängig davon ob für zufällige und nicht-zufällige Werkzeugwechsler konfiguriert:

note: type: Plain text
en: When LinuxCNC is configured for a nonrandom toolchanger, the pocket number in the tool file can be any positive integer (pocket 0 is not allowed).  LinuxCNC silently compactifies the pocket numbers when it loads the tool file, so there may be a difference between the pocket numbers in the tool file and the internal pocket numbers used by LinuxCNC-with-nonrandom-toolchanger.
de: Wenn LinuxCNC für einen nicht-zufälligen Werkzeugwechsler konfiguriert ist, kann die Platznummer in der Werkzeugdatei jede positive ganze Zahl (Tasche 0 ist nicht erlaubt) sein.  LinuxCNC verdichtet die Platznummern stillschweigend, wenn es die Werkzeugdatei lädt, so kann es einen Unterschied zwischen den Platznummern in der Werkzeugdatei und den internen Platznummern von LinuxCNC geben.

note: type: Plain text
en: When LinuxCNC is configured for a random toolchanger, the pocket numbers in the tool file must be between 0 and 1000, inclusive.  Pockets 1-1000 are in the toolchanger, pocket 0 is the spindle.
de: Wenn LinuxCNC für einen zufälligen Werkzeugwechsler konfiguriert ist, müssen die Platznummern in der Werkzeugdatei zwischen 0 und 1000, einschließlich sein.  Pockets 1-1000 sind im Werkzeugwechsler, Tasche 0 ist die Spindel.

note: type: Labeled list
en: diameter
de: Durchmesser

note: type: Plain text
en: Diameter of the tool, in machine units.
de: Durchmesser des Werkzeugs in Maschineneinheiten.

note: type: Labeled list
en: tool length offset
de: Werkzeuglängenkorrektur

note: type: Plain text
en: Tool length offset (also called TLO), in up to 9 axes, in machine units.  Axes that don't have a specified TLO get 0.
de: Werkzeuglängenkorrektur (auch TLO genannt für engl. tool length offset) für bis zu 9 Achsen, in Maschineneinheiten.  Achsen, die kein TLO haben, erhalten 0.

note: type: Title ===
en: G-codes affecting tools
de: G-Codes mit Auswirkungen auf Werkzeuge

note: type: Plain text
en: The G-codes that use or affect tool information are:
de: Die G-Codes, die Werkzeuginformationen verwenden oder beeinflussen, sind:

note: type: Plain text
en: Tells the toolchanger hardware to prepare to switch to a specified tool +xxx+.
de: Weist die Hardware des Werkzeugwechslers an, sich auf den Wechsel zu einem bestimmten Werkzeug +xxx+ vorzubereiten.

note: type: Plain text
en: Handled by +Interp::convert_tool_select()+.
de: Behandelt von +Interp::convert_tool_select()+.

note: type: Plain text
en: The machine is asked to prepare to switch to the selected tool by calling the Canon function +SELECT_TOOL()+ with the tool number of the requested tool.
de: Die Maschine wird aufgefordert, den Wechsel zum gewählten Werkzeug vorzubereiten, indem sie die Canon-Funktion +SELECT_TOOL()+ mit der Werkzeugnummer des gewünschten Werkzeugs aufruft.

note: type: Plain text
en: (saicanon) No-op.
de: (saicanon) ohne Funktion (no-op).

note: type: Plain text
en: (emccanon) Builds an +EMC_TOOL_PREPARE+ message with the requested pocket number and sends it to Task, which sends it on to IO.  IO gets the message and asks HAL to prepare the pocket by setting +iocontrol.0.tool-prep-pocket+, +iocontrol.0.tool-prep-number+, and +iocontrol.0.tool-prepare+.  IO then repeatedly calls +read_tool_inputs()+ to poll the HAL pin +iocontrol.0.tool-prepared+, which signals from the toolchanger hardware, via HAL, to IO that the requested tool prep is complete.  When that pin goes True, IO sets +emcioStatus.tool.pocketPrepped+ to the requested tool's pocket number.
de: (emccanon) Erstellt eine +EMC_TOOL_PREPARE+ Nachricht mit der angeforderten Taschennummer und sendet sie an Task, die sie an IO (E/A für Ein- und Ausgabe) weiterleitet.  IO erhält die Nachricht und bittet HAL, die Tasche vorzubereiten, indem es +iocontrol.0.tool-prep-pocket+, +iocontrol.0.tool-prep-number+ und +iocontrol.0.tool-prepare+ setzt.  IO ruft dann wiederholt +read_tool_inputs()+ auf, um den HAL-Pin +iocontrol.0.tool-prepared+ abzufragen, der von der Hardware des Werkzeugwechslers über HAL an IO signalisiert, dass die angeforderte Werkzeugvorbereitung abgeschlossen ist.  Wenn dieser Pin auf True gesetzt wird, setzt IO +emcioStatus.tool.pocketPrepped+ auf die angeforderte Werkzeugplatz-/taschennummer.

note: type: Plain text
en: Back in interp, +settings->selected_pocket+ is assigned the tooldata index of the requested tool _xxx_.
de: Zurück in interp, wird +settings->selected_pocket+ dem tooldata-Index (engl. für Werkzeugdaten-Index) des angeforderten Werkzeugs _xxx_ zugewiesen.

note: type: Plain text
en: The legacy names *selected_pocket* and *current_pocket* actually reference a sequential tooldata index for tool items loaded from a tool table ([EMCIO]TOOL_TABLE) or via a tooldata database ([EMCIO]DB_PROGRAM).
de: Die inzwischen nicht mehr verwendeten Namen *selected_pocket* und *current_pocket* verweisen auf einen sequentiellen Werkzeugdatenindex für Werkzeugelemente, die aus einer Werkzeugtabelle ([EMCIO]TOOL_TABLE) oder über eine Werkzeugdatenbank ([EMCIO]DB_PROGRAM) geladen werden.

note: type: Plain text
en: Tells the toolchanger to switch to the currently selected tool (selected by the previous Txxx command).
de: Weist den Werkzeugwechsler an, zum aktuell ausgewählten Werkzeug zu wechseln (ausgewählt durch den vorherigen Befehl Txxx).

note: type: Plain text
en: Handled by +Interp::convert_tool_change()+.
de: Wird von +Interp::convert_tool_change()+ behandelt.

note: type: Plain text
en: The machine is asked to change to the selected tool by calling the Canon function +CHANGE_TOOL()+ with +settings->selected_pocket+ (a tooldata index).
de: Die Maschine wird aufgefordert, zum ausgewählten Werkzeug zu wechseln, indem die Canon-Funktion +CHANGE_TOOL()+ mit +settings->selected_pocket+ (einem Werkzeugdatenindex) aufgerufen wird.

note: type: Plain text
en: (saicanon) Sets sai's +_active_slot+ to the passed-in pocket number.  Tool information is copied from the selected pocket of of the tool table (ie, from sai's +_tools[_active_slot]+)  to the spindle (aka sai's +_tools[0]+).
de: (saicanon) Setzt sai's +_active_slot+ auf die angegebene Platznummer.  Die Werkzeuginformationen werden von der ausgewählten Tasche der Werkzeugtabelle (d.h. von sai's +_tools[_active_slot]+) zur Spindel (aka sai's +_tools[0]+) kopiert.

note: type: Plain text
en: (emccanon) Sends an +EMC_TOOL_LOAD+ message to Task, which sends it to IO.  IO sets +emcioStatus.tool.toolInSpindle+ to the tool number of the tool in the pocket identified by +emcioStatus.tool.pocketPrepped+ (set by +Txxx+ aka +SELECT_TOOL()+).  It then requests that the toolchanger hardware perform a tool change, by setting the HAL pin +iocontrol.0.tool-change+ to True.  Later, IO's +read_tool_inputs()+ will sense that the HAL pin +iocontrol.0.tool_changed+ has been set to True, indicating the toolchanger has completed the tool change.  When this happens, it calls +load_tool()+ to update the machine state.
de: (emccanon) Sendet eine +EMC_TOOL_LOAD+ Nachricht an Task, die diese an IO sendet.  IO setzt +emcioStatus.tool.toolInSpindle+ auf die Werkzeugnummer des Werkzeugs in der Tasche, die durch +emcioStatus.tool.pocketPrepped+ identifiziert wurde (gesetzt durch +Txxx+ alias +SELECT_TOOL()+).  Dann fordert es die Hardware des Werkzeugwechslers auf, einen Werkzeugwechsel durchzuführen, indem es den HAL-Pin +iocontrol.0.tool-change+ auf True setzt.  Später erkennt IO's +read_tool_inputs()+, dass der HAL-Pin +iocontrol.0.tool_changed+ auf True gesetzt wurde, was anzeigt, dass der Werkzeugwechsler den Werkzeugwechsel abgeschlossen hat.  Wenn dies der Fall ist, wird +load_tool()+ aufgerufen, um den Maschinenzustand zu aktualisieren.

note: type: Plain text
en: +load_tool()+ with a nonrandom toolchanger config copies the tool information from the selected pocket to the spindle (pocket 0).
de: +load_tool()+ mit einer nicht-zufälligen Werkzeugwechsler-Konfiguration kopiert die Werkzeuginformationen von der ausgewählten Tasche auf die Spindel (Tasche 0).

note: type: Plain text
en: +load_tool()+ with a random toolchanger config swaps tool information between pocket 0 (the spindle) and the selected pocket, then saves the tool table.
de: +load_tool()+ mit einer zufälligen Werkzeugwechsler-Konfiguration tauscht die Werkzeuginformationen zwischen Platz 0 (der Spindel) und dem ausgewählten Platz aus und speichert dann die Werkzeugtabelle.

note: type: Plain text
en: Back in interp, +settings->current_pocket+ is assigned the new tooldata index from +settings->selected_pocket+ (set by +Txxx+).  The relevant numbered parameters (<<sub:numbered-parameters,#5400-#5413>>) are updated with the new tool information from pocket 0 (spindle).
de: Zurück in interp wird +settings->current_pocket+ der neue Werkzeugdatenindex von +settings->selected_pocket+ (gesetzt durch +Txxx+) zugewiesen.  Die entsprechenden nummerierten Parameter (<sub:numbered-parameters,#5400-#5413>>) werden mit den neuen Werkzeuginformationen aus Tasche 0 (Spindel) aktualisiert.

note: type: Plain text
en: Apply tool length offset.  G43 uses the TLO of the currently loaded tool, or of a specified tool if the H-word is given in the block.  G43.1 gets TLO from axis-words in the block.  G49 cancels the TLO (it uses 0 for the offset for all axes).
de: Werkzeuglängenkorrektur anwenden.  G43 verwendet die TLO (engl. Abkürzung der Werkzeuglängenkorrektur) des aktuell geladenen Werkzeugs oder eines angegebenen Werkzeugs, wenn das H-Wort im Satz angegeben ist.  G43.1 erhält die TLO von den Achsenwörtern im Satz.  G49 hebt die TLO auf (es verwendet 0 für den Offset für alle Achsen).

note: type: Plain text
en: Handled by +Interp::convert_tool_length_offset()+.
de: Wird in +Interp::convert_tool_length_offset()+ behandelt.

note: type: Plain text
en: It starts by building an +EmcPose+ containing the 9-axis offsets to use.  For +G43.1+, these tool offsets come from axis words in the current block.  For +G43+ these offsets come from the current tool (the tool in pocket 0), or from the tool specified by the H-word in the block.  For G49, the offsets are all 0.
de: Es beginnt mit der Erstellung einer +EmcPose+, welche die zu verwendenden 9-Achsen-Versätze enthält.  Bei +G43.1+ stammen diese Werkzeugkorrekturen von den Achsenwörtern im aktuellen Satz.  Bei +G43+ stammen diese Versätze vom aktuellen Werkzeug (dem Werkzeug auf Platz 0) oder von dem durch das H-Wort im Satz angegebenen Werkzeug.  Für G49 sind die Versätze alle 0.

note: type: Plain text
en: The offsets are passed to Canon's +USE_TOOL_LENGTH_OFFSET()+ function.
de: Die Offsets werden an Canons Funktion +USE_TOOL_LENGTH_OFFSET()+ übergeben.

note: type: Plain text
en: (saicanon) Records the TLO in +_tool_offset+.
de: (saicanon) Zeichnet das TLO in +_tool_offset+ auf.

note: type: Plain text
en: (emccanon) Builds an +EMC_TRAJ_SET_OFFSET+ message containing the offsets and sends it to Task.  Task copies the offsets to +emcStatus->task.toolOffset+ and sends them on to Motion via an +EMCMOT_SET_OFFSET+ command.  Motion copies the offsets to +emcmotStatus->tool_offset+, where it gets used to offset future motions.
de: (emccanon) Erstellt eine Nachricht +EMC_TRAJ_SET_OFFSET+ mit den Offsets und sendet sie an Task.  Task kopiert die Offsets nach +emcStatus->task.toolOffset+ und sendet sie über einen +EMCMOT_SET_OFFSET+-Befehl an Motion weiter.  Motion kopiert die Offsets nach +emcmotStatus->tool_offset+, wo sie zum Offset für zukünftige Bewegungen verwendet werden.

note: type: Plain text
en: Back in interp, the offsets are recorded in +settings->tool_offset+.  The effective pocket is recorded in +settings->tool_offset_index+, though this value is never used.
de: Zurück in interp werden die Offsets in +settings->tool_offset+ aufgezeichnet.  Die effektive Tasche wird in +settings->tool_offset_index+ aufgezeichnet, obwohl dieser Wert nie verwendet wird.

note: type: Plain text
en: Modifies the tool table.
de: Ändert die Werkzeugtabelle.

note: type: Plain text
en: Handled by +Interp::convert_setup_tool()+.
de: Wird von +Interp::convert_setup_tool()+ behandelt.

note: type: Plain text
en: Picks the tool number out of the P-word in the block and finds the pocket for that tool:
de: Wählt die Werkzeugnummer aus dem P-Wort im Block aus und findet die Tasche für dieses Werkzeug:

note: type: Plain text
en: With a nonrandom toolchanger config this is always the pocket number in the toolchanger (even when the tool is in the spindle).
de: Bei einer nicht-zufälligen Werkzeugwechsler-Konfiguration ist dies immer die Platznummer im Werkzeugwechsler (auch wenn sich das Werkzeug in der Spindel befindet).

note: type: Plain text
en: With a random toolchanger config, if the tool is currently loaded it uses pocket 0 (pocket 0 means "the spindle"), and if the tool is not loaded it uses the pocket number in the tool changer.  (This difference is important.)
de: Bei einer zufälligen Werkzeugwechslerkonfiguration wird, wenn das Werkzeug gerade geladen ist, Platz 0 verwendet (Platz 0 bedeutet "die Spindel"), und wenn das Werkzeug nicht geladen ist, wird die Platznummer im Werkzeugwechsler verwendet.  (Dieser Unterschied ist wichtig.)

note: type: Plain text
en: Figures out what the new offsets should be.
de: Ermittelt, wie die neuen Versätze aussehen sollen.

note: type: Plain text
en: The new tool information (diameter, offsets, angles, and orientation), along with the tool number and pocket number, are passed to the Canon call SET_TOOL_TABLE_ENTRY().
de: Die neuen Werkzeuginformationen (Durchmesser (engl. diameter), Versatz (engl. offset), Winkel (engl. angle) und Ausrichtung (engl. orientation)) werden zusammen mit der Werkzeugnummer und der Platznummer an den Canon-Aufruf SET_TOOL_TABLE_ENTRY() übergeben.

note: type: Plain text
en: (saicanon)  Copy the new tool information to the specified pocket (in sai's internal tool table, +_tools+).
de: (saicanon) Kopiert die neuen Werkzeuginformationen in die angegebene Tasche (in sai's interne Werkzeugtabelle, +_tools+).

note: type: Plain text
en: (emccanon)  Build an +EMC_TOOL_SET_OFFSET+ message with the new tool information, and send it to Task, which passes it to IO.  IO updates the specified pocket in its internal copy of the tool table (+emcioStatus.tool.toolTable+), and if the specified tool is currently loaded (it is compared to +emcioStatus.tool.toolInSpindle+) then the new tool information is copied to pocket 0 (the spindle) as well.  (FIXME: that's a buglet, should only be copied on nonrandom machines.)  Finally IO saves the new tool table.
de: (emccanon) Erstellt eine +EMC_TOOL_SET_OFFSET+ Nachricht mit den neuen Werkzeuginformationen und sendet sie an Task, die sie an IO weitergibt.  IO aktualisiert den angegebenen Platz in seiner internen Kopie der Werkzeugtabelle (+emcioStatus.tool.toolTable+), und wenn das angegebene Werkzeug gerade geladen ist (es wird mit +emcioStatus.tool.toolInSpindle+ verglichen), werden die neuen Werkzeuginformationen auch in den Platz 0 (die Spindel) kopiert.  (FIXME: das ist ein Buglet, sollte nur auf nicht-zufälligen Maschinen kopiert werden.) Schließlich speichert IO die neue Werkzeugtabelle.

note: type: Plain text
en: Back in interp, if the modified tool is currently loaded in the spindle, and if the machine is a non-random toolchanger, then the new tool information is copied from the tool's home pocket to pocket 0 (the spindle) in interp's copy of the tool table, +settings->tool_table+.  (This copy is not needed on random tool changer machines because there, tools don't have a home pocket and instead we just updated the tool in pocket 0 directly.)
de: Zurück in interp, wenn das geänderte Werkzeug gerade in der Spindel geladen ist und wenn die Maschine ein nicht-zufälliger Werkzeugwechsler ist, dann wird die neue Werkzeuginformation vom Stammplatz des Werkzeugs in den Platz 0 (die Spindel) in interp's Kopie der Werkzeugtabelle, +settings->tool_table+ kopiert.  (Diese Kopie wird auf Maschinen mit Zufallswerkzeugwechsler nicht benötigt, da die Werkzeuge dort keinen Stammplatz haben und wir stattdessen das Werkzeug in Platz 0 direkt aktualisieren.)

note: type: Plain text
en: The relevant numbered parameters (<<sub:numbered-parameters,#5400-#5413>>) are updated from the tool information in the spindle (by copying the information from interp's +settings->tool_table+ to +settings->parameters+).  (FIXME: this is a buglet, the params should only be updated if it was the current tool that was modified).
de: Die entsprechenden nummerierten Parameter (<sub:numbered-parameters,#5400-#5413>>) werden aus den Werkzeuginformationen in der Spindel aktualisiert (durch Kopieren der Informationen aus interp's +settings->tool_table+ nach +settings->parameters+) (FIXME: dies ist ein Buglet, die Parameter sollten nur aktualisiert werden, wenn das aktuelle Werkzeug geändert wurde).

note: type: Plain text
en: If the modified tool is currently loaded in the spindle, and if the config is for a nonrandom toolchanger, then the new tool information is written to the tool table's pocket 0 as well, via a second call to SET_TOOL_TABLE_ENTRY().  (This second tool-table update is not needed on random toolchanger machines because there, tools don't have a home pocket and instead we just updated the tool in pocket 0 directly.)
de: Wenn das geänderte Werkzeug gerade in der Spindel geladen ist und für einen nicht zufälligen Werkzeugwechsler konfiguriert wurde, dann wird die neue Werkzeuginformation auch in den Platz 0 der Werkzeugtabelle geschrieben durch einen zweiten Aufruf von SET_TOOL_TABLE_ENTRY().  (Diese zweite Aktualisierung der Werkzeugtabelle wird bei Maschinen mit Zufallswerkzeugwechsler nicht benötigt, da die Werkzeuge dort keinen Stammplatz haben und wir stattdessen nur das Werkzeug in Platz 0 direkt aktualisieren.)

note: type: Plain text
en: Set current tool number.  This switches LinuxCNC's internal representation of which tool is in the spindle, without actually moving the toolchanger or swapping any tools.
de: Setze aktuelle Werkzeugnummer.  Dies wechselt LinuxCNC's interne Darstellung, welches Werkzeug in der Spindel ist, ohne tatsächlich bewegen den Werkzeugwechsler oder Austausch von Werkzeugen.

note: type: Plain text
en: settings->current_pocket is assigned the tooldata index currently holding the tool specified by the Q-word argument.
de: settings->current_pocket wird dem Werkzeugdaten-Index zugewiesen, der das durch das Q-Wort-Argument angegebene Werkzeug enthält.

note: type: Plain text
en: Enable cutter radius compensation (usually called _cutter comp_).
de: Aktiviert die Fräserradiuskompensation (engl. kurz _cutter comp_ genannt).

note: type: Plain text
en: Handled by +Interp::convert_cutter_compensation_on()+.
de: Wird von +Interp::convert_cutter_compensation_on()+ behandelt.

note: type: Plain text
en: No Canon call, cutter comp happens in the interpreter.  Uses the tool table in the expected way: if a D-word tool number is supplied it looks up the pocket number of the specified tool number in the table, and if no D-word is supplied it uses pocket 0 (the spindle).
de: Kein Canon-Aufruf, die Fräser Kompensation erfolgt im Interpreter.  Verwendet die Werkzeugtabelle in der erwarteten Weise: Wenn ein D-Wort als Werkzeugnummer angegeben wird, so wird die Platznummer der angegebenen Werkzeugnummer in der Tabelle nachgeschlagen, und wenn kein D-Wort angegeben wird, dann wird Platz 0 (die Spindel) verwendet.

note: type: Plain text
en: Cancel cutter radius compensation.
de: Fräserradiuskompensation aufheben.

note: type: Plain text
en: Handled by +Interp::convert_cutter_compensation_off()+.
de: Wird von +Interp::convert_cutter_compensation_off()+ behandelt.

note: type: Plain text
en: No Canon call, cutter comp happens in the interpreter.  Does not use the tool table.
de: Kein Canon-Aufruf, die Fräser Kompensation erfolgt im Interpreter.  Verwendet nicht die Werkzeugtabelle.

note: type: Title ===
en: Internal state variables
de: Interne Zustandsvariablen

note: type: Plain text
en: This is not an exhaustive list! Tool information is spread through out LinuxCNC.
de: Dies ist keine erschöpfende Liste! Werkzeug-Informationen sind in LinuxCNC verteilt abgelegt.

note: type: Title ====
en: IO
de: E/A (engl. I/O)

note: type: Plain text
en: +emcioStatus+ is of type +EMC_IO_STAT+
de: +emcioStatus+ ist vom Typ +EMC_IO_STAT+

note: type: Plain text
en: When IO gets the signal from HAL that the toolchanger prep is complete (after a +Txxx+ command), this variable is set to the pocket of the requested tool.  When IO gets the signal from HAL that the tool change itself is complete (after an +M6+ command), this variable gets reset to -1.
de: Wenn IO das Signal von HAL erhält, dass die Vorbereitung des Werkzeugwechslers abgeschlossen ist (nach einem +Txxx+ Befehl), wird diese Variable auf den Platz des angeforderten Werkzeugs gesetzt.  Wenn IO das Signal von HAL erhält, dass der Werkzeugwechsel selbst abgeschlossen ist (nach einem +M6+ Befehl), wird diese Variable auf -1 zurückgesetzt.

note: type: Plain text
en: Tool number of the tool currently installed in the spindle.  Exported on the HAL pin +iocontrol.0.tool-number+ (s32).
de: Werkzeugnummer des aktuell in der Spindel installierten Werkzeugs.  Wird über den HAL-Pin +iocontrol.0.tool-number+ (s32) exportiert.

note: type: Plain text
en: An array of +CANON_TOOL_TABLE+ structures, +CANON_POCKETS_MAX+ long.  Loaded from the tool table file at startup and maintained there after.  Index 0 is the spindle, indexes 1-(CANON_POCKETS_MAX-1)  are the pockets in the toolchanger.  This is a complete copy of the tool information, maintained separately from Interp's +settings.tool_table+.
de: Ein Array von +CANON_TOOL_TABLE+ Strukturen, +CANON_POCKETS_MAX+ lang.  Wird beim Starten aus der Werkzeugtabellendatei geladen und danach beibehalten.  Index 0 ist die Spindel, die Indizes 1-(CANON_POCKETS_MAX-1) sind die Plätze im Werkzeugwechsler.  Dies ist eine vollständige Kopie der Werkzeuginformationen, die getrennt von Interp's +settings.tool_table+ gepflegt wird.

note: type: Plain text
en: +settings+ is of type +settings+, defined as +struct setup_struct+ in +src/emc/rs274ngc/interp_internal.hh+.
de: +settings+ ist vom Typ +settings+, definiert als +struct setup_struct+ ist in +src/emc/rs274ngc/interp_internal.hh+.

note: type: Plain text
en: Tooldata index of the tool most recently selected by +Txxx+.
de: Tooldatenindex des zuletzt mit +Txxx+ ausgewählten Werkzeugs.

note: type: Plain text
en: Original tooldata index of the tool currently in the spindle.  In other words: which tooldata index the tool that's currently in the spindle was loaded from.
de: Ursprünglicher Werkzeugdatenindex des Werkzeugs, das sich gerade in der Spindel befindet.  Mit anderen Worten: Von welchem Werkzeugdatenindex das Werkzeug geladen wurde, das sich gerade in der Spindel befindet.

note: type: Plain text
en: An array of tool information.  The index into the array is the "pocket number" (aka "slot number").  Pocket 0 is the spindle, pockets 1 through (CANON_POCKETS_MAX-1) are the pockets of the toolchanger.
de: Ein Array mit Werkzeuginformationen.  Der Index im Array ist die "Platznummer" (auch "Slotnummer" genannt).  Platz 0 ist die Spindel, die Plätze 1 bis (CANON_POCKETS_MAX-1) sind die Plätze des Werkzeugwechslers.

note: type: Plain text
en: Unused.  FIXME: Should probably be removed.
de: Unbenutzt.  FIXME: Sollte wahrscheinlich entfernt werden.

note: type: Plain text
en: Interp sets this to true when calling Canon's CHANGE_TOOL()  function.  It is checked in +Interp::convert_tool_length_offset()+ to decide which tooldata index to use for G43 (with no H-word): +settings->current_pocket+ if the tool change is still in progress, tooldata index 0 (the spindle) if the tool change is complete.
de: Interp setzt dies auf true, wenn die Funktion CHANGE_TOOL() von Canon'aufgerufen wird.  Er wird in +Interp::convert_tool_length_offset()+ überprüft, um zu entscheiden, welcher Werkzeugdatenindex für G43 (ohne H-Wort) zu verwenden ist: +settings->current_pocket+ wenn der Werkzeugwechsel noch im Gange ist, Werkzeugdaten-Index 0 (die Spindel), wenn der Werkzeugwechsel abgeschlossen ist.

note: type: Plain text
en: Set from the INI variable +[EMCIO]RANDOM_TOOLCHANGER+ at startup.  Controls various tool table handling logic.  (IO also reads this INI variable and changes its behavior based on it.  For example, when saving the tool table, random toolchanger save the tool in the spindle (pocket 0), but non-random toolchanger save each tool in its "home pocket".)
de: Wird beim Starten über die INI-Variable +[EMCIO]RANDOM_TOOLCHANGER+ gesetzt.  Steuert verschiedene Logiken zur Handhabung von Werkzeugtabellen.  (IO liest auch diese INI-Variable und ändert sein Verhalten auf der Grundlage dieser Variable.  Wenn beispielsweise die Werkzeugtabelle gespeichert wird, so speichert der Zufallswerkzeugwechsler das Werkzeug in der Spindel (Platz 0), während der Nicht-Zufallswerkzeugwechsler jedes Werkzeug in seinem Stammplatz speichert.)

note: type: Plain text
en: This is an +EmcPose+ variable.
de: Dies ist eine +EmcPose+ Variable.

note: type: Plain text
en: Used to compute position in various places.
de: Dient zur Berechnung der Position an verschiedenen Orten.

note: type: Plain text
en: Sent to Motion via the +EMCMOT_SET_OFFSET+ message.  All motion does with the offsets is export them to the HAL pins +motion.0.tooloffset.[xyzabcuvw]+.  FIXME: export these from someplace closer to the tool table (io or interp, probably)  and remove the EMCMOT_SET_OFFSET message.
de: Wird über die Nachricht +EMCMOT_SET_OFFSET+ an Motion gesendet.  Alles, was Motion mit den Offsets macht, ist, sie in die HAL-Pins +motion.0.tooloffset.[xyzabcuvw]+ zu exportieren.  FIXME: die Offsets von einem Ort exportieren, der näher an der Werkzeugtabelle liegt (wahrscheinlich io oder interp) und entfernen der EMCMOT_SET_OFFSET-Nachricht.

note: type: Labeled list
en: settings.pockets_max
de: Einstellungen. pockets_max

note: type: Plain text
en: Used interchangeably with +CANON_POCKETS_MAX+ (a #defined constant, set to 1000 as of April 2020).  FIXME: This settings variable is not currently useful and should probably be removed.
de: Wird austauschbar mit +CANON_POCKETS_MAX+ verwendet (eine #definierte Konstante, ab April 2020 auf 1000 gesetzt).  FIXME: Diese Einstellungsvariable ist derzeit nicht nützlich und sollte wahrscheinlich entfernt werden.

note: type: Plain text
en: This is an array of +CANON_TOOL_TABLE+ structures (defined in +src/emc/nml_intf/emctool.h+), with +CANON_POCKETS_MAX+ entries.  Indexed by "pocket number", aka "slot number".  Index 0 is the spindle, indexes 1 to (CANON_POCKETS_MAX-1) are the pockets in the tool changer.  On a random toolchanger pocket numbers are meaningful.  On a nonrandom toolchanger pockets are meaningless; the pocket numbers in the tool table file are ignored and tools are assigned to +tool_table+ slots sequentially.
de: Dies ist ein Array von +CANON_TOOL_TABLE+ Strukturen (definiert in +src/emc/nml_intf/emctool.h+), mit +CANON_POCKETS_MAX+ Einträgen.  Indiziert durch "Taschen-Nummer", auch bekannt als "Slot-Nummer".  Index 0 ist die Spindel, die Indizes 1 bis (CANON_POCKETS_MAX-1) sind die Plätze im Werkzeugwechsler.  Bei einem Zufallswerkzeugwechsler sind die Platznummern sinnvoll.  Bei einem nicht-zufälligen Werkzeugwechsler sind die Platznummern bedeutungslos; die Platznummern in der Werkzeugtabellendatei werden ignoriert und die Werkzeuge werden den +tool_table+ Plätzen nacheinander zugewiesen.

note: type: Plain text
en: These are set from INI variables in the +[EMCIO]+ section, and determine how tool changes are performed.
de: Diese werden über INI-Variablen im Abschnitt +[EMCIO]+ gesetzt und bestimmen, wie Werkzeugwechsel durchgeführt werden.

note: type: Title ==
en: Reckoning of joints and axes
de: Parameter-Bestimmung von Gelenken und Achsen

note: type: Title ===
en: In the status buffer
de: Im Statuspuffer

note: type: Plain text
en: The status buffer is used by Task and the UIs.
de: Der Statuspuffer wird vom Task-Modul und den Benutzeroberflächen verwendet.

note: type: Plain text
en: FIXME: `axis_mask` and `axes` overspecify the number of axes
de: FIXME: `axis_mask` und `axes` überspezifizieren die Anzahl der Achsen

note: type: Plain text
en: A bitmask with a "1" for the axes that are present and a "0" for the axes that are not present. X is bit 0 with value 2^0^ = 1 if set, Y is bit 1 with value 2^1^ = 2, Z is bit 2 with value 4, etc.  For example, a machine with X and Z axes would have an `axis_mask` of 0x5, an XYZ machine would have 0x7, and an XYZB machine would have an `axis_mask` of 0x17.
de: Eine Bitmaske mit einem "1" für die Achsen, die vorhanden sind, und einem "0" für die Achsen, die nicht vorhanden sind. X ist das niederwertigste Bit 0 mit Wert 2^0^ = 1 if set , Y ist Bit 1 mit Wert 2^1^ = 2,  Z ist Bit 2 mit Wert 2^2^ = 4 usw.  Eine Maschine mit X- und Z-Achsen hätte zum Beispiel eine `axis_mask` von 0x5, eine XYZ-Maschine hätte 0x7 und eine XYZB-Maschine hätte eine `axis_mask` von 0x17.

note: type: Labeled list
en: `status.motion.traj.axes` (removed)
de: `status.motion.traj.axes` (entfernt)

note: type: Plain text
en: This value was removed in LinuxCNC version 2.9.  Use `axis_mask` instead.
de: Dieser Wert wurde in LinuxCNC Version 2.9 entfernt.  Verwenden Sie stattdessen `axis_mask`.

note: type: Plain text
en: A count of the number of joints the machine has. A normal lathe has 2 joints; one driving the X axis and one driving the Z axis.  An XYYZ gantry mill has 4 joints: one driving X, one driving one side of the Y, one driving the other side of the Y, and one driving Z.  An XYZA mill also has 4 joints.
de: Zählt die Anzahl der Gelenke einer Maschine. Eine normale Drehmaschine hat 2 Gelenke; eines treibt die X-Achse und eines die Z-Achse an.  Eine XYYZ-Portalfräse hat 4 Gelenke: eines für die X-Achse, eines für eine Seite der Y-Achse, eines für die andere Seite der Y-Achse und eines für die Z-Achse. Eine XYZA-Fräse hat ebenfalls 4 Gelenke.

note: type: Plain text
en: An array of `EMCMOT_MAX_AXIS` axis structures. `axis[n]` is valid if `(axis_mask & (1 << n))` is True. If `(axis_mask & (1 << n))` is False, then `axis[n]` does not exist on this machine and must be ignored.
de: Eine Reihe von `EMCMOT_MAX_AXIS`-Achsenstrukturen. axis[n]` ist gültig, wenn `(axis_mask & (1 << n))` Wahr ist. Wenn `(axis_mask & (1 << n))` False ist, dann existiert `axis[n]` nicht auf dieser Maschine und muss ignoriert werden.

note: type: Plain text
en: An array of `EMCMOT_MAX_JOINTS` joint structures. `joint[0]` through `joint[joints-1]` are valid, the others do not exist on this machine and must be ignored.
de: Ein Array von `EMCMOT_MAX_JOINTS` Gelenkstrukturen. Gelenk[0]` bis `Gelenk[Gelenke-1]` sind gültig, die anderen existieren auf diesem Rechner nicht und müssen ignoriert werden.

note: type: Plain text
en: Things are not this way currently in the joints-axes branch, but deviations from this design are considered bugs. For an example of such a bug, see the treatment of axes in src/emc/ini/initraj.cc:loadTraj().  There are undoubtedly more, and I need your help to find them and fix them.
de: Im Joints-Axes-Entwicklungszweig sind die Dinge derzeit nicht so, aber Abweichungen von diesem Design werden als Fehler betrachtet. Ein Beispiel für einen solchen Fehler ist die Behandlung von Achsen in src/emc/ini/initraj.cc:loadTraj().  Es gibt zweifellos noch mehr, und ich brauche Ihre Hilfe, um sie zu finden und zu beheben.

note: type: Title ===
en: In Motion
de: In Bewegung

note: type: Plain text
en: The Motion controller realtime component first gets the number of joints from the `num_joints` load-time parameter.  This determines how many joints worth of HAL pins are created at startup.
de: Die Echtzeitkomponente des Motion Controllers erhält zunächst die Anzahl der Joints aus dem Load-Time-Parameter `num_joints`.  Dieser bestimmt, wie viele Gelenke mit HAL-Pins beim Start erzeugt werden.

note: type: Plain text
en: Motion's number of joints can be changed at runtime using the `EMCMOT_SET_NUM_JOINTS` command from Task.
de: Die Anzahl der Gelenke einer Bewegung kann zur Laufzeit mit dem Befehl `EMCMOT_SET_NUM_JOINTS` aus dem Task heraus geändert werden.

note: type: Plain text
en: The Motion controller always operates on `EMCMOT_MAX_AXIS` axes.  It always creates nine sets of `axis.*.*` pins.
de: Der Motion Controller arbeitet immer mit `EMCMOT_MAX_AXIS`-Achsen.  Er erstellt immer neun Sätze von "Achsen.*.*"-Pins.

note: type: Title =
en: Contributing to LinuxCNC
de: Mitwirkung an LinuxCNC

note: type: Plain text
en: This document contains information for developers about LinuxCNC infrastructure, and describes the best practices for contributing code and documentation updates to the LinuxCNC project.
de: Dieses Dokument enthält Informationen für Entwickler über die LinuxCNC-Infrastruktur und beschreibt die besten Praktiken für das Einbringen von Code- und Dokumentations-Updates in das LinuxCNC-Projekt.

note: type: Plain text
en: Throughout this document, "source" means both the source code to the programs and libraries, and the source text for the documentation.
de: In diesem Dokument bedeutet "Quelle" sowohl den Quellcode der Programme und Bibliotheken als auch den Quelltext der Dokumentation.

note: type: Title ==
en: Communication among LinuxCNC developers
de: Kommunikation unter LinuxCNC-Entwicklern

note: type: Plain text
en: The two main ways that project developers communicate with each other are:
de: Die Projektentwickler kommunizieren hauptsächlich auf zwei Arten miteinander:

note: type: Plain text
en: Via IRC, at irc://irc.libera.chat/%23linuxcnc-devel[#linuxcnc-devel] on https://libera.chat/[Libera.chat].
de: Über IRC, unter irc://irc.libera.chat/%23linuxcnc-devel[#linuxcnc-devel] auf https://libera.chat/[Libera.chat].

note: type: Plain text
en: Via email, on the https://lists.sourceforge.net/lists/listinfo/emc-developers[developers' mailing list]
de: Per E-Mail, auf der https://lists.sourceforge.net/lists/listinfo/emc-developers[developers' Mailingliste]

note: type: Title ==
en: The LinuxCNC Source Forge project
de: Das LinuxCNC Source Forge-Projekt

note: type: Plain text
en: We use Source Forge for http://sourceforge.net/p/emc/mailman/[mailing lists].
de: Wir verwenden Source Forge für http://sourceforge.net/p/emc/mailman/[Mailinglisten].

note: type: Title ==
en: The Git Revision Control System
de: Das Git Revisionskontrollsystem

note: type: Plain text
en: All of the LinuxCNC source is maintained in the http://git-scm.com/[Git revision control system].
de: Der gesamte Quellcode von LinuxCNC wird im http://git-scm.com/[Git Revisionskontrollsystem] verwaltet.

note: type: Title ===
en: LinuxCNC official Git repo
de: LinuxCNC offizielles Git Repository

note: type: Plain text
en: The official LinuxCNC git repo is at http://github.com/linuxcnc/linuxcnc/
de: Das offizielle LinuxCNC git repo ist zugänglich über http://github.com/linuxcnc/linuxcnc/

note: type: Plain text
en: Anyone can get a read-only copy of the LinuxCNC source tree via git:
de: Jeder kann eine schreibgeschützte Kopie des LinuxCNC-Quellbaums über git erhalten:

note: type: Plain text
en: If you are a developer with push access, then follow github's instructions for setting up a repository that you can push from.
de: Wenn Sie ein Entwickler mit Schreibrechten (genannt "push" in Anlehnung an das git-Kommando) sind, folgen Sie den Anweisungen in github, um ein Repository einzurichten, von dem aus Sie pushen können.

note: type: Plain text
en: Note that the clone command put the local LinuxCNC repo in a directory called `linuxcnc-dev`, instead of the default `linuxcnc`.  This is because the LinuxCNC software by default expects configs and G-code programs in a directory called `$HOME/linuxcnc`, and having the git repo there too is confusing.
de: Beachten Sie, dass der Clone-Befehl das lokale LinuxCNC Repo in ein Verzeichnis namens `linuxcnc-dev` legt, anstatt des Standardverzeichnisses `linuxcnc`.  Dies wurde so gewählt, da die LinuxCNC-Software standardmäßig die Configurations-Dateien (.ini) und G-Code-Programme in einem Verzeichnis in dem Pfad `$HOME/linuxcnc` erwartet. Dies soll Verwirrungen zwischen der Entwickung im Git Repository und der Ausführung helfen zu vermeiden.

note: type: Plain text
en: Issues and pull requests (abbreviated PRs) are welcome on GitHub: https://github.com/LinuxCNC/linuxcnc/issues https://github.com/LinuxCNC/linuxcnc/pulls
de: Problem-Meldungen (engl. _issues_) und Anforderungen zur Integration eigener Änderungen (genannt _pull requests_, kurz: PR) sind auf GitHub willkommen: https://github.com/LinuxCNC/linuxcnc/issues https://github.com/LinuxCNC/linuxcnc/pulls

note: type: Title ===
en: Use of Git in the LinuxCNC project
de: Verwendung von Git im LinuxCNC-Projekt

note: type: Plain text
en: We use the "merging upwards" and "topic branches" git workflows described here:
de: Wir verwenden die hier beschriebenen Git-Workflows "merging upwards" und "topic branches":

note: type: Plain text
en: We have a development branch called `master`, and one or more stable branches with names like `2.6` and `2.7` indicating the version number of the releases we make from it.
de: Wir haben einen Entwicklungszweig namens `master` und einen oder mehrere stabile Entwicklungszweige (engl. branches) mit Namen wie `2.6` und `2.7`, welche die Versionsnummer der daraus jeweils hervorgehenden Veröffentlichung angeben.

note: type: Plain text
en: Bugfixes go in the oldest applicable stable branch, and that branch gets merged into the next newer stable branch, and so on up to `master`.  The committer of the bugfix may do the merges themselves, or they may leave the merges for someone else.
de: Fehlerbehebungen gehen in den ältesten anwendbaren stabilen branch, und dieser branch wird in den nächst neueren stabilen branch zusammengeführt, und so weiter bis zu `master`.  Der Committer des Bugfixes kann die Zusammenführung selbst durchführen, oder sie jemand anderem überlassen.

note: type: Plain text
en: New features generally go in the `master` branch, but some kinds of features (specifically well isolated device drivers and documentation)  may (at the discretion of the stable branch release managers) go into a stable branch and get merged up just like bugfixes do.
de: Neue Funktionen gehen im Allgemeinen in den "Master"-branch, aber einige Arten von Funktionen (insbesondere gut isolierte Gerätetreiber und Dokumentationen) können (nach dem Ermessen der Verantwortlichen für den stabilen branch) in den stabilen branch wandern und dort zusammengeführt werden, genau wie Bugfixes.

note: type: Title ===
en: git tutorials
de: Git-Tutorials

note: type: Plain text
en: There are many excellent, free git tutorials on the internet.
de: Es gibt viele ausgezeichnete, kostenlose Git-Tutorials im Internet.

note: type: Plain text
en: The first place to look is probably the "gittutorial" manpage.  This manpage is accessible by running "man gittutorial" in a terminal (if you have the git manpages installed).  The gittutorial and its follow-on documentation are also available online here:
de: Die erste Anlaufstelle ist wahrscheinlich die Manpage "gittutorial".  Auf diese Manpage kann man zugreifen, bspw. durch die Ausführung von "man gittutorial" in einem Terminal (wenn man die git-Manpages installiert hat, bei Debian im Paket "git-man").  Das gittutorial und die dazugehörige Dokumentation sind auch hier online verfügbar:

note: type: Plain text
en: Everyday git with 20 commands or so: https://www.kernel.org/pub/software/scm/git/docs/giteveryday.html
de: Alltägliches Git mit 20 Befehlen oder so: https://www.kernel.org/pub/software/scm/git/docs/giteveryday.html

note: type: Plain text
en: Git User's Manual: https://www.kernel.org/pub/software/scm/git/docs/user-manual.html
de: Git-Benutzerhandbuch: https://www.kernel.org/pub/software/scm/git/docs/user-manual.html

note: type: Plain text
en: For a more thorough documentation of git see the "Pro Git" book: http://git-scm.com/book
de: Eine ausführlichere Dokumentation von Git finden Sie in dem Buch "Pro Git": http://git-scm.com/book

note: type: Plain text
en: Another online tutorial that has been recommended is "Git for the Lazy": https://wiki.spheredev.org/index.php/Git_for_the_lazy
de: Ein weiteres Online-Tutorial, das empfohlen wurde, ist "Git for the Lazy": https://wiki.spheredev.org/index.php/Git_for_the_lazy

note: type: Title ==
en: Overview of the process
de: Überblick über den Prozess

note: type: Plain text
en: The high-level overview of how to contribute changes to the source goes like this:
de: Ein Überblick darüber, wie man Änderungen am Quelltext vornimmt, sieht folgendermaßen aus:

note: type: Plain text
en: Communicate with the project developers and let us know what you're hacking on
de: Kommunizieren Sie mit den Projektentwicklern und lassen Sie uns wissen, woran Sie hacken

note: type: Plain text
en: Clone the git repo
de: Klonen des Git-Repositories

note: type: Plain text
en: Make your changes in a local branch, making sure you "sign off" your commits according to our signed-off-by policy (see below).
de: Führen Sie Ihre Änderungen in einem lokalen Zweig durch und stellen Sie sicher, dass Sie Ihre Commits gemäß unserer "signed-off-by"-Richtlinie abzeichnen (siehe unten).

note: type: Plain text
en: Adding documentation and tests is an important part of adding a new feature.  Otherwise, others won't know how to use your feature, and if other changes break your feature it can go unnoticed without a test.
de: Das Hinzufügen von Dokumentationen und Tests ist ein wichtiger Teil des Hinzufügens einer neuen Funktion.  Andernfalls werden andere nicht wissen, wie sie Ihre Funktion nutzen können, und wenn andere Änderungen Ihre Funktion zerstören, kann dies ohne Test unbemerkt bleiben.

note: type: Plain text
en: Share your changes with the other project developers in one of these ways:
de: Kommunizieren Sie Ihre Änderungen mit den anderen Projektentwicklern auf eine der folgenden Arten:

note: type: Plain text
en: Push your branch to github and create a github pull request to https://github.com/linuxcnc/linuxcnc (this requires a github account)
de: Pushen Sie Ihren Entwicklungszweig (engl. branch) auf Github und erstellen Sie einen Github-Pull-Request auf https://github.com/linuxcnc/linuxcnc (dies erfordert einen Github-Account)

note: type: Plain text
en: Push your branch to a publicly visible git repo (such as github, bitbucket, your own publicly-accessible server, etc) and share that location on the emc-developers mailing list, or
de: Verschieben Sie Ihren Entwicklungszweig in ein öffentlich sichtbares Git-Repository (z. B. Github, Bitbucket, Ihren eigenen öffentlich zugänglichen Server usw.) und teilen Sie diesen Ort auf der emc-developers-Mailingliste mit, oder

note: type: Plain text
en: Email your commits to the LinuxCNC-developers mailing list (emc-developers@lists.sourceforge.net) (use `git format-patch` to create the patches)
de: Senden Sie Ihre Übertragungen an die LinuxCNC-Entwickler-Mailingliste (emc-developers@lists.sourceforge.net) (verwenden Sie `git format-patch`, um die Patches zu erstellen)

note: type: Plain text
en: Advocate for your patch
de: Setzen Sie sich für Ihren Änderungswunsch (engl. Patch) ein

note: type: Plain text
en: Explain what problem it addresses and why it should be included in LinuxCNC
de: Erläutern Sie, welches Problem gelöst wird und warum dies in LinuxCNC enthalten sein sollte

note: type: Plain text
en: Be receptive to questions and feedback from the developer community.
de: Seien Sie offen für Fragen und Rückmeldungen aus der Entwicklergemeinschaft.

note: type: Plain text
en: It is not uncommon for a patch to go through several revisions before it is accepted.
de: Es ist nicht ungewöhnlich, dass ein Patch mehrere Überarbeitungen durchläuft, bevor er angenommen wird.

note: type: Title ==
en: git configuration
de: Git-Konfiguration

note: type: Plain text
en: In order to be considered for inclusion in the LinuxCNC source, commits must have correct Author fields identifying the author of the commit.  A good way to ensure this is to set your global git config:
de: Um für die Aufnahme in den LinuxCNC-Quellcode in Betracht gezogen zu werden, müssen Commits korrekte Author-Felder haben, die den Autor des Commits identifizieren.  Eine gute Möglichkeit, dies sicherzustellen, ist die Einstellung der globalen Git-Konfiguration:

note: type: Plain text
en: Use your real name (not a handle), and use an unobfuscated e-mail address.
de: Benutzen Sie Ihren richtigen Namen und eine direkt nutzbare E-Mail Adresse.

note: type: Title ==
en: Effective use of git
de: Effektive Nutzung von Git

note: type: Title ===
en: Commit contents
de: Commit-Inhalte

note: type: Plain text
en: Keep your commits small and to the point.  Each commit should accomplish one logical change to the repo.
de: Halten Sie Ihre Commits klein und auf den Punkt.  Jeder Commit sollte eine logische Änderung am Projektarchiv bewirken.

note: type: Title ===
en: Write good commit messages
de: Schreiben Sie gute Commit-Nachrichten

note: type: Plain text
en: Keep commit messages around 72 columns wide (so that in a default-size terminal window, they don't wrap when shown by `git log`).
de: Halten Sie die Commit-Meldungen etwa 72 Spalten breit (damit sie in einem Terminalfenster mit Standardgröße nicht umbrechen, wenn sie von `git log` angezeigt werden).

note: type: Plain text
en: Use the first line as a summary of the intent of the change (almost like the subject line of an e-mail). Follow it with a blank line, then a longer message explaining the change. Example:
de: Verwenden Sie die erste Zeile als Zusammenfassung der Absicht der Änderung (fast wie die Betreffzeile einer E-Mail). Danach folgt eine Leerzeile und dann eine längere Nachricht, in der die Änderung erläutert wird. Beispiel:

note: type: Title ===
en: Commit to the proper branch
de: Ein git commit muss im richtigen Entwicklungszweit ausgeführt werden

note: type: Plain text
en: Bugfixes should go on the oldest applicable branch.  New features should go in the master branch.  If you're not sure where a change belongs, ask on irc or on the mailing list.
de: Fehlerbehebungen sollten im ältesten anwendbaren branch durchgeführt werden.  Neue Funktionalität sollte in den Master-Zweig kommen.  Wenn Sie sich nicht sicher sind, wo eine Änderung hingehört, fragen Sie im IRC oder auf der Mailingliste.

note: type: Title ===
en: Use multiple commits to organize changes
de: Verwenden Sie mehrere Commits, um Änderungen zu organisieren

note: type: Plain text
en: When appropriate, organize your changes into a branch (a series of commits) where each commit is a logical step towards your ultimate goal. For example, first factor out some complex code into a new function. Then, in a second commit, fix an underlying bug. Then, in the third commit, add a new feature which is made easier by the refactoring and which would not have worked without fixing that bug.
de: Organisieren Sie Ihre Änderungen gegebenenfalls in einem Zweig (engl. branch, eine zusammengehörige Folge von Commits), wobei jeder Commit ein logischer Schritt auf dem Weg zum endgültigen Ziel ist. Beispielsweise sollten Sie zunächst einen komplexen Code in eine neue Funktion umwandeln. Beheben Sie dann in einem zweiten Commit einen zugrunde liegenden Fehler. Dann, im dritten Commit, fügen Sie eine neue Funktion hinzu, die durch das Refactoring einfacher geworden ist und die ohne die Behebung des Fehlers nicht funktioniert hätte.

note: type: Plain text
en: This is helpful to reviewers, because it is easier to see that the "factor out code into new function" step was right when there aren't other edits mixed in; it's easier to see that the bug is fixed when the change that fixes it is separate from the new feature; and so on.
de: Das ist hilfreich für die Prüfer, denn es ist einfacher zu sehen, dass der Schritt "Code in eine neue Funktion umwandeln" richtig war, wenn keine anderen Änderungen darin enthalten sind; es ist einfacher zu sehen, dass der Fehler behoben ist, wenn die Änderung, die ihn behebt, getrennt von der neuen Funktion ist; und so weiter.

note: type: Title ===
en: Follow the style of the surrounding code
de: Folgen Sie den Stil des umgebenden Codes

note: type: Plain text
en: Make an effort to follow the prevailing indentation style of surrounding code. In particular, changes to whitespace make it harder for other developers to track changes over time. When reformatting code must be done, do it as a commit separate from any semantic changes.
de: Bemühen Sie sich, dem vorherrschenden Einrückungsstil des umgebenden Codes zu folgen. Insbesondere Änderungen an Leerzeichen erschweren es anderen Entwicklern, Änderungen im Laufe der Zeit zu verfolgen. Wenn eine Neuformatierung des Codes erforderlich ist, sollten Sie diese getrennt von semantischen Änderungen vornehmen.

note: type: Title ===
en: Get rid of RTAPI_SUCCESS, use 0 instead
de: Werden Sie RTAPI_SUCCESS los, verwenden Sie stattdessen 0

note: type: Plain text
en: The test "retval < 0" should feel familiar; it's the same kind of test you use in userspace (returns -1 for error) and in kernel space (returns -ERRNO for error).
de: Der Test "retval < 0" sollte Ihnen bekannt vorkommen; es ist die gleiche Art von Test, den Sie im Userspace (gibt -1 für Fehler zurück) und im Kernelspace (gibt -ERRNO für Fehler zurück).

note: type: Title ===
en: Simplify complicated history before sharing with fellow developers
de: Vereinfachen Sie den komplizierten Verlauf, bevor Sie ihn mit anderen Entwicklern teilen

note: type: Plain text
en: With git, it's possible to record every edit and false start as a separate commit. This is very convenient as a way to create checkpoints during development, but often you don't want to share these false starts with others.
de: Mit Git ist es möglich, jede Bearbeitung und jeden Fehlstart als separaten Commit aufzuzeichnen. Dies ist sehr praktisch, um während der Entwicklung Kontrollpunkte zu setzen, aber oft möchte man diese Fehlstarts nicht mit anderen teilen.

note: type: Plain text
en: Git provides two main ways to clean history, both of which can be done freely before you share the change:
de: Git bietet zwei Möglichkeiten, die Historie zu bereinigen, die beide frei durchgeführt werden können, bevor Sie die Änderung freigeben:

note: type: Plain text
en: `git commit --amend` lets you make additional changes to the last thing you committed, optionally modifying the commit message as well. Use this if you realized right away that you left something out of the commit, or if you typo'd the commit message.
de: Mit `git commit --amend` können Sie zusätzliche Änderungen an dem letzten Commit vornehmen und optional auch die Commit-Nachricht ändern. Benutzen Sie dies, wenn Sie sofort merken, dass Sie etwas in der Commit-Nachricht vergessen haben, oder wenn Sie sich in der Commit-Nachricht vertippt haben.

note: type: Plain text
en: `git rebase --interactive` upstream-branch lets you go back through each commit made since you forked your feature branch from the upstream branch, possibly editing commits, dropping commits, or squashing (combining)  commits with others. Rebase can also be used to split individual commits into multiple new commits.
de: Mit `git rebase --interactive` upstream-branch können Sie jeden Commit, den Sie seit dem Abzweig (engl. fork) Ihres Entwicklungszweigs vom Upstream-Branch (der Zweig im repository von dem Sie abgezweigt sind) gemacht haben, zurückgehen und dabei möglicherweise Commits bearbeiten, Commits verwerfen oder mit anderen Commits zusammenlegen (Squash). Rebase kann auch verwendet werden, um einzelne Commits in mehrere neue Commits aufzuteilen.

note: type: Title ===
en: Make sure every commit builds
de: Stellen Sie sicher, dass jeder commit auch kompiliert werden kann

note: type: Plain text
en: If your change consists of several patches, `git rebase -i` may be used to reorder these patches into a sequence of commits which more clearly lays out the steps of your work.  A potential consequence of reordering patches is that one might get dependencies wrong - for instance, introducing a use of a variable, and the declaration of that variable only follows in a later patch.
de: Wenn Ihre Änderung aus mehreren Patches besteht, kann `git rebase -i` verwendet werden, um diese Patches in eine Folge von Commits umzuordnen, die Schritte Ihrer Arbeit klarer darstellt.  Eine mögliche Folge des Umordnens solcher Patches ist, dass man Abhängigkeiten falsch einordnen kann - zum Beispiel, wenn man die Verwendung einer Variable einführt und die Deklaration dieser Variable erst in einem späteren Patch folgt.

note: type: Plain text
en: While the branch HEAD will build, not every commit might build in such a case.  That breaks `git bisect` - something somebody else might use later on to find the commit which introduced a bug.  So beyond making sure your branch builds, it is important to assure every single commit builds as well.
de: Beim Bauen des HEAD branches würde in einem solchen Fall nicht jeder Commit gebaut.  Das machte dann `git bisect` kaputt - etwas, das jemand anderes später benutzen könnte, um den Commit zu finden, der einen Fehler eingeführte.  Es ist also nicht nur wichtig, sicherzustellen, dass Ihr Zweig gebaut wird, sondern auch, dass jeder einzelne Commit erfolgreich kompiliert.

note: type: Plain text
en: There's an automatic way to check a branch for each commit being buildable - see http://dustin.sallings.org/2010/03/28/git-test-sequence.html and the code at https://github.com/dustin/bindir/blob/master/git-test-sequence.  Use as follows (in this case testing every commit from origin/master to HEAD, including running regression tests):
de: Es gibt einen automatischen Weg, einen Zweig darauf zu prüfen, ob jeder Commit baubar ist - siehe http://dustin.sallings.org/2010/03/28/git-test-sequence.html und den Code unter https://github.com/dustin/bindir/blob/master/git-test-sequence.  Verwenden Sie wie folgt (in diesem Fall testen Sie jeden Commit von origin/master bis HEAD, einschließlich der Durchführung von Regressionstests):

note: type: Plain text
en: This will either report 'All is well' or 'Broke on <commit>'
de: Dies meldet entweder 'All is well' (engl. für 'Alles in Ordnung') oder 'Broke on <commit>' (engl. für 'Fehler bei <commit>')

note: type: Title ===
en: Renaming files
de: Umbenennen von Dateien

note: type: Plain text
en: Please use the ability to rename files very cautiously. Like running indent on single files, renames still make it more difficult to follow changes over time. At a minimum, you should seek consensus on irc or the mailing list that the rename is an improvement.
de: Bitte verwenden Sie die Möglichkeit Dateien umzubenennen mit Bedacht. Wie bei der Einrückung einzelner Dateien erschweren auch Umbenennungen die Verfolgung von Änderungen im Laufe der Zeit. Zumindest sollten Sie im IRC oder auf der Mailingliste einen Konsens darüber finden, dass die Umbenennung eine Verbesserung darstellt.

note: type: Title ===
en: Prefer "rebase"
de: "Rebase" bevorzugen

note: type: Plain text
en: Use `git pull --rebase` instead of bare `git pull` in order to keep a nice linear history. When you rebase, you always retain your work as revisions that are ahead of origin/master, so you can do things like `git format-patch` them to share with others without pushing to the central repository.
de: Verwenden Sie `git pull --rebase` anstelle von `git pull`, um eine schöne lineare Historie zu erhalten. Wenn Sie rebasen, behalten Sie Ihre Arbeit immer als Revisionen, die vor origin/master liegen, so dass Sie Dinge wie `git format-patch` ausführen können, um Entwicklungen mit anderen zu teilen, ohne sie in das zentrale Repository zu pushen.

note: type: Title ==
en: Translations
de: Übersetzungen

note: type: Plain text
en: The LinuxCNC project uses `gettext` to translate the software into many languages. We welcome contributions and help in this area! Improving and extending the translations is easy: you don't need to know any programming, and you don't need to install any special translation programs or other software.
de: Das LinuxCNC-Projekt verwendet `gettext`, um die Software in viele Sprachen zu übersetzen. Wir begrüßen Beiträge und Hilfe in diesem Bereich! Das Verbessern und Erweitern der Übersetzungen ist einfach: Sie müssen keine Programmierkenntnisse haben und Sie müssen keine speziellen Übersetzungsprogramme oder andere Software installieren.

note: type: Plain text
en: The easiest way to help with translations is using Weblate, an open-source web service.  Our translation project is here: https://hosted.weblate.org/projects/linuxcnc/
de: Der einfachste Weg, bei Übersetzungen zu helfen, ist die Nutzung von Weblate, einem Open-Source-Webdienst.  Unser Übersetzungsprojekt finden Sie hier: https://hosted.weblate.org/projects/linuxcnc/

note: type: Plain text
en: Documentation on how to use Weblate is here: https://docs.weblate.org/en/latest/user/basic.html
de: Die Dokumentation zur Verwendung von Weblate finden Sie hier: https://docs.weblate.org/en/latest/user/basic.html

note: type: Plain text
en: If web services are not your thing, you can also work on translations using a variety of local gettext translator apps including gtranslator, poedit, and many more.
de: Wenn Webdienste nicht Ihr Ding sind, können Sie auch mit einer Reihe lokaler Gettext-Übersetzer-Apps wie gtranslator, poedit und vielen anderen an Übersetzungen arbeiten.

note: type: Title ==
en: Other ways to contribute
de: Andere Möglichkeiten, einen Beitrag zu leisten

note: type: Plain text
en: There are many ways to contribute to LinuxCNC, that are not addressed by this document. These ways include:
de: Es gibt viele Möglichkeiten, zu LinuxCNC beizutragen, die in diesem Dokument nicht behandelt werden. Diese Wege umfassen:

note: type: Plain text
en: Answering questions on the forum, mailing lists, and in IRC
de: Beantwortung von Fragen im Forum, auf Mailinglisten und im IRC

note: type: Plain text
en: Reporting bugs on the bug tracker, forum, mailing lists, or in IRC
de: Melden von Fehlern im Bug-Tracker, im Forum, auf Mailinglisten oder im IRC

note: type: Plain text
en: Helping test experimental features
de: Hilfe beim Testen experimenteller Funktionen

note: type: Title =
en: NML Messages
de: NML-Nachrichten

note: type: Plain text
en: List of NML messages.
    For details see `src/emc/nml_intf/emc.hh`.
de: Liste der NML-Nachrichten.
    Für Einzelheiten siehe 'src/emc/nml_intf/emc.hh'.

note: type: Title ==
en: OPERATOR
de: OPERATOR (engl. für Bediener)

note: type: Title ==
en: JOINT
de: JOINT (engl. für Gelenk)

note: type: TH
en: AXIS
de: ACHSE

note: type: Title ==
en: TRAJ
de: TRAJ (engl. Kurzform für Trajektorie)

note: type: TH
en: MOTION
de: MOTION (engl. für Bewegung)

note: type: Labeled list
en: TASK
de: TASK (engl. für Aufgabe, auch Name des entsprechenden LinuxCNC Moduls)

note: type: Title ==
en: TOOL
de: TOOL (engl. für Werkzeug)

note: type: Title ==
en: AUX
de: AUX (engl. Kurzform für "andere Hilfsfunktionen")

note: type: TH
en: SPINDLE
de: SPINDLE (engl. für Spindel)

note: type: Title ==
en: COOLANT
de: COOLANT (engl. für Kühlflüssigkeit)

note: type: Title ==
en: LUBE
de: LUBE (engl. für Schmiermittel)

note: type: Title ==
en: IO (Input/Output)
de: IO (engl. kurz für Eingabe/Ausgabe - Input/Output, auch Name eines LinuxCNC Moduls)

note: type: Title ==
en: Others
de: Andere

note: type: Title =
en: Stand Alone Interpreter
de: Eigenständiger Interpreter

note: type: Plain text
en: The rs274 stand alone interpreter is available for use via the command line.
de: Der eigenständige Interpreter rs274 kann über die Kommandozeile verwendet werden.

note: type: SH
en: Example
de: Beispiel

note: type: Plain text
en: To see the output of a loop for example we can run rs274 on the following file and see that the loop never ends. To break out of the loop use Ctrl Z. The following two files are needed to run the example.
de: Um die Ausgabe einer Schleife zu sehen, können wir zum Beispiel rs274 in der folgenden Datei ausführen und sehen, dass die Schleife nie endet. Um die Schleife zu verlassen, drücken Sie Strg-Z. Die folgenden zwei Dateien werden benötigt, um dieses Beispiel auszuführen.

note: type: Block title
en: command
de: Befehl

note: type: Title =
en: Coding Style
de: Quellcode-Stil

note: type: Plain text
en: This chapter describes the source code style preferred by the LinuxCNC team.
de: Dieses Kapitel beschreibt den vom LinuxCNC-Team bevorzugten Quellcode-Stil.

note: type: Title ==
en: Do no harm
de: Keinen Schaden anrichten

note: type: Plain text
en: When making small edits to code in a style different than the one described below, observe the local coding style. Rapid changes from one coding style to another decrease code readability.
de: Wenn Sie kleine Änderungen am Code in einem anderen als dem unten beschriebenen Stil vornehmen, beachten Sie den lokalen Kodierungsstil. Schnelle Wechsel von einem Kodierungsstil zum anderen beeinträchtigen die Lesbarkeit des Codes.

note: type: Plain text
en: Never check in code after running "indent" on it. The whitespace changes introduced by indent make it more difficult to follow the revision history of the file.
de: Checken Sie niemals Code ein, nachdem Sie ihn mit einem Hilfsprogramm wie "indent" bearbeitet haben. Die durch die Einrückung verursachten Änderungen an Leerzeichen erschweren es, den Revisionsverlauf der Datei zu verfolgen.

note: type: Plain text
en: Do not use an editor that makes unneeded changes to whitespace (e.g., which replaces 8 spaces with a tabstop on a line not otherwise modified, or word-wraps lines not otherwise modified).
de: Verwenden Sie keinen Editor, der unnötige Änderungen am Leerraum vornimmt (z. B. 8 Leerzeichen durch einen Tabstopp in einer ansonsten nicht geänderten Zeile ersetzt oder Zeilen umbricht, die ansonsten nicht geändert werden).

note: type: Title ==
en: Tab Stops
de: Tabstopps

note: type: Plain text
en: A tab stop always corresponds to 8 spaces. Do not write code that displays correctly only with a differing tab stop setting.
de: Ein Tabstopp entspricht immer 8 Leerzeichen. Schreiben Sie keinen Code, der nur bei einer abweichenden Einstellung des Tabstopps korrekt angezeigt wird.

note: type: Title ==
en: Indentation
de: Einrückung

note: type: Plain text
en: Use 4 spaces per level of indentation. Combining 8 spaces into one tab is acceptable but not required.
de: Verwenden Sie 4 Leerzeichen pro Einrückungsebene. Die Kombination von 8 Leerzeichen in einem Tabulator ist zulässig, aber nicht erforderlich.

note: type: Title ==
en: Placing Braces
de: Setzen von Klammern

note: type: Plain text
en: Put the opening brace last on the line, and put the closing brace first:
de: Setzen Sie die öffnende Klammer zuletzt auf die Linie, und setzen Sie die schließende Klammer zuerst:

note: type: delimited block -
en: if (x) {
        // do something appropriate
    }
de: if (x) {
        // macht irgendetwas der Situation Angepasstes
    }

note: type: Plain text
en: The closing brace is on a line of its own, except in the cases where it is followed by a continuation of the same statement, i.e. a 'while' in a do-statement or an 'else' in an if-statement, like this:
de: Die schließende Klammer steht in einer eigenen Zeile, es sei denn, es folgt eine Fortsetzung derselben Anweisung, z. B. ein 'while' in einer do-Anweisung oder ein 'else' in einer if-Anweisung, wie hier:

note: type: delimited block -
en: do {
        // something important
    } while (x > 0);
de: do {
        // etwas Wichtiges
    } while (x > 0);

note: type: Plain text
en: and
de: und

note: type: delimited block -
en: if (x == y) {
        // do one thing
    } else if (x < y) {
        // do another thing
    } else {
        // do a third thing
    }
de: if (x == y) {
        // tue das eine
    } else if (x < y) {
        // tue das andere
    } else {
        // tue ein Drittes
    }

note: type: Plain text
en: This brace-placement also minimizes the number of empty (or almost empty) lines, which allows a greater amount of code or comments to be visible at once in a terminal of a fixed size.
de: Durch diese Klammerung wird auch die Anzahl der leeren (oder fast leeren) Zeilen minimiert, wodurch eine größere Menge an Code oder Kommentaren auf einmal in einem Terminal mit fester Größe sichtbar ist.

note: type: Title ==
en: Naming
de: Benennung

note: type: Plain text
en: C is a Spartan language, and so should your naming be. Unlike Modula-2 and Pascal programmers, C programmers do not use cute names like ThisVariableIsATemporaryCounter. A C programmer would call that variable 'tmp', which is much easier to write, and not the least more difficult to understand.
de: C ist eine spartanische Sprache, und so sollte auch Ihre Namensgebung sein. Anders als Modula-2- und Pascal-Programmierer verwenden C-Programmierer keine niedlichen Namen wie DiesIstEineTemporaereZaehlvariable. Ein C-Programmierer würde diese Variable 'tmp' nennen, was viel einfacher zu schreiben und nicht im Geringsten schwieriger zu verstehen ist.

note: type: Plain text
en: However, descriptive names for global variables are a must. To call a global function 'foo' is a shooting offense.
de: Beschreibende Namen für globale Variablen sind jedoch ein Muss. Eine globale Funktion 'foo' zu nennen, wäre ein offensichtliches, schweres Vergehen.

note: type: Plain text
en: GLOBAL variables (to be used only if you *really*  need them) need to
    have descriptive names, as do global functions. If
    you have a function that counts the number of active users, you should
     call that 'count_active_users()' or similar, you should *not* call it
    'cntusr()'.
de: GLOBALE Variablen (die nur verwendet werden, wenn man sie *wirklich* braucht) müssen
    beschreibende Namen haben, ebenso wie globale Funktionen. Wenn
    Sie eine Funktion haben, um die Anzahl der aktiven Benutzer zu zählen, so sollte sie
     'count_active_users()' oder ähnlich heißen, *nicht*
     'cntusr()'.

note: type: Plain text
en: Encoding the type of a function into the name (so-called Hungarian notation) is brain damaged - the compiler knows the types anyway and can check those, and it only confuses the programmer. No wonder Microsoft makes buggy programs.
de: Den Typ einer Funktion in den Namen zu kodieren (so genannte ungarische Notation) ist hirnrissig - der Compiler kennt die Typen ohnehin und kann sie überprüfen, und es verwirrt den Programmierer nur. Kein Wunder, dass Microsoft fehlerhafte Programme macht.

note: type: Plain text
en: LOCAL variable names should be short, and to the point. If you have some random integer loop counter, it should probably be called 'i'.  Calling it 'loop_counter' is non-productive, if there is no chance of it being misunderstood. Similarly, 'tmp' can be just about any type of variable that is used to hold a temporary value.
de: LOCAL-Variablennamen sollten kurz und prägnant sein. Wenn Sie einen zufälligen ganzzahligen Schleifenzähler haben, sollte er wahrscheinlich 'i' heißen.  Der Name 'loop_counter' ist unproduktiv, wenn keine Gefahr besteht, dass er missverstanden wird. In ähnlicher Weise kann 'tmp' so gut wie jede Art von Variable sein, die für einen temporären Wert verwendet wird.

note: type: Plain text
en: If you are afraid to mix up your local variable names, you have another problem, which is called the function-growth-hormone-imbalance syndrome. See next chapter.
de: Wenn Sie befürchten, Ihre lokalen Variablennamen zu verwechseln, dann haben Sie ein anderes Problem, das als Funktions-Wachstums-Hormon-Gleichgewichts-Syndrom bezeichnet wird. Siehe nächstes Kapitel.

note: type: Title ===
en: Functions
de: Funktionen

note: type: Plain text
en: Functions should be short and sweet, and do just one thing. They should fit on one or two screenfuls of text (the ISO/ANSI screen size is 80x24, as we all know), and do one thing and do that well.
de: Funktionen sollten kurz und knapp sein und nur einen Zweck erfüllen. Sie sollten auf einen oder zwei Bildschirme voller Text passen (die ISO/ANSI-Bildschirmgröße beträgt 80x24, wie wir alle wissen) und nur eine Aufgabe erfüllen, und diese gut.

note: type: Plain text
en: The maximum length of a function is inversely proportional to the complexity and indentation level of that function. So, if you have a conceptually simple function that is just one long (but simple)  case-statement, where you have to do lots of small things for a lot of different cases, it's OK to have a longer function.
de: Die maximale Länge einer Funktion ist umgekehrt proportional zur Komplexität und zum Grad der Einrückung dieser Funktion. Wenn Sie also eine konzeptionell einfache Funktion haben, die nur aus einer einzigen langen (aber einfachen) Fallanweisung besteht, bei der Sie viele kleine Dinge für viele verschiedene Fälle tun müssen, ist es in Ordnung, eine längere Funktion zu haben.

note: type: Plain text
en: However, if you have a complex function, and you suspect that a less-than-gifted first-year high-school student might not even understand what the function is all about, you should adhere to the maximum limits all the more closely. Use helper functions with descriptive names (you can ask the compiler to in-line them if you think it's performance-critical, and it will probably do a better job of it that you would have done).
de: Wenn Sie jedoch eine komplexe Funktion haben und Sie vermuten, dass ein weniger begabter Anfänger nicht einmal versteht, worum es in der Funktion geht, sollten Sie sich um so mehr an die Höchstgrenzen halten. Verwenden Sie Hilfsfunktionen mit aussagekräftigen Namen (Sie können den Compiler bitten, die Funktion inline einzubinden, wenn Sie es für leistungsrelevant halten, und er wird es wahrscheinlich besser machen, als Sie es getan hätten).

note: type: Plain text
en: Another measure of the function is the number of local variables. They shouldn't exceed 5-10, or you're doing something wrong. Re-think the function, and split it into smaller pieces. A human brain can generally easily keep track of about 7 different things, anything more and it gets confused. You know you're brilliant, but maybe you'd like to understand what you did 2 weeks from now.
de: Ein weiteres Maß für die Funktion ist die Anzahl der lokalen Variablen. Sie sollte 5-10 nicht überschreiten, oder Sie machen etwas falsch. Überdenken Sie die Funktion, und teilen Sie sie in kleinere Teile auf. Ein menschliches Gehirn kann in der Regel problemlos 7 verschiedene Dinge im Auge behalten, alles darüber hinaus verwirrt es. Sie wissen, dass Sie brillant sind, aber vielleicht würden Sie in zwei Wochen gerne auch noch verstehen, was Sie getan haben.

note: type: Title ==
en: Commenting
de: Kommentieren

note: type: Plain text
en: Comments are good, but there is also a danger of over-commenting.  NEVER try to explain HOW your code works in a comment: it's much better to write the code so that the *working* is obvious, and it's a waste of time to explain badly written code.
de: Kommentare sind gut, aber es besteht auch die Gefahr, dass man zu viel kommentiert.  Versuchen Sie NIEMALS, in einem Kommentar zu erklären, WIE Ihr Code funktioniert: es ist viel besser, den Code so zu schreiben, dass die *Arbeitsweise* offensichtlich ist, und es ist Zeitverschwendung, schlecht geschriebenen Code zu erklären.

note: type: Plain text
en: Generally, you want your comments to tell WHAT your code does, not HOW. A boxed comment describing the function, return value, and who calls it placed above the body is good. Also, try to avoid putting comments inside a function body: if the function is so complex that you need to separately comment parts of it, you should probably re-read the Functions section again. You can make small comments to note or warn about something particularly clever (or ugly), but try to avoid excess.  Instead, put the comments at the head of the function, telling people what it does, and possibly WHY it does it.
de: Im Allgemeinen sollen Ihre Kommentare sagen, WAS Ihr Code tut, nicht WIE. Ein umrahmter Kommentar, der die Funktion, den Rückgabewert und den Aufrufer beschreibt und über dem Hauptteil steht, ist gut. Versuchen Sie auch, Kommentare innerhalb eines Funktionskörpers zu vermeiden: Wenn die Funktion derart komplex ist, dass Sie Teile davon gesondert kommentieren müssen, sollten Sie vielleicht den Abschnitt Funktionen noch einmal lesen. Sie können kleine Kommentare machen, um auf etwas besonders Kluges (oder Hässliches) hinzuweisen oder zu warnen, aber versuchen Sie, Übertreibungen zu vermeiden.  Stellen Sie die Kommentare stattdessen an den Anfang der Funktion und sagen Sie, was sie tut und möglicherweise WARUM sie es tut.

note: type: Plain text
en: If comments along the lines of /* Fix me */ are used, please, please, say why something needs fixing. When a change has been made to the affected portion of code, either remove the comment, or amend it to indicate a change has been made and needs testing.
de: Wenn Kommentare in der Art von /* Fix me */ (engl. für "Reparier mich") verwendet werden, dann beschreiben Sie bitte auch, warum etwas repariert werden muss. Wenn eine Änderung an dem betroffenen Teil des Codes vorgenommen wurde, entfernen Sie entweder den Kommentar oder ergänzen Sie ihn, um anzugeben, dass eine Änderung vorgenommen wurde und getestet werden muss.

note: type: Title ==
en: Shell Scripts & Makefiles
de: Shell-Skripte & Makefiles

note: type: Plain text
en: Not everyone has the same tools and packages installed. Some people use vi, others emacs - A few even avoid having either package installed, preferring a lightweight text editor such as nano or the one built in to Midnight Commander.
de: Nicht jeder hat die gleichen Werkzeuge und Pakete installiert. Einige Leute benutzen vi, andere emacs - Einige wenige vermeiden es sogar, eines der beiden Pakete zu installieren und bevorzugen einen leichtgewichtigen Texteditor wie nano oder den in Midnight Commander integrierten.

note: type: Plain text
en: gawk versus mawk - Again, not everyone will have gawk installed, mawk is nearly a tenth of the size and yet conforms to the POSIX AWK standard. If some obscure gawk specific command is needed that mawk does not provide, than the script will break for some users. The same would apply to mawk. In short, use the generic awk invocation in preference to gawk or mawk.
de: gawk versus mawk - Auch hier wird nicht jeder gawk installiert haben, mawk ist fast ein Zehntel so groß und entspricht dennoch dem POSIX AWK Standard. Wenn ein obskurer gawk-spezifischer Befehl benötigt wird, den mawk nicht zur Verfügung stellt, wird das Skript für einige Benutzer nicht funktionieren. Das Gleiche würde für mawk gelten. Kurz gesagt, verwenden Sie lieber den allgemeinen awk-Aufruf als gawk oder mawk.

note: type: Title ==
en: C++ Conventions
de: C++-Konventionen

note: type: Plain text
en: C++ coding styles are always likely to end up in heated debates (a bit like the emacs versus vi arguments). One thing is certain however, a common style used by everyone working on a project leads to uniform and readable code.
de: C++-Codierungsstile sind wiederholt Anlass für hitzige Debatten (ähnlich wie der Streit zwischen emacs und vi). Eines ist jedoch sicher: Ein gemeinsamer Stil, der von allen an einem Projekt Beteiligten verwendet wird, führt zu einheitlichem und lesbarem Code.

note: type: Plain text
en: Naming conventions: Constants either from #defines or enumerations should be in upper case through out. Rationale: Makes it easier to spot compile time constants in the source code, e.g., EMC_MESSAGE_TYPE.
de: Namenskonventionen: Konstanten entweder aus #defines oder aus Enumerationen sollten durchgehend in Großbuchstaben geschrieben werden. Begründung: Erleichtert das Erkennen von durch den Präprozessor substituierten Ausdrücke im Quellcode, z.B. EMC_MESSAGE_TYPE.

note: type: Plain text
en: Classes and Namespaces should capitalize the first letter of each word and avoid underscores. Rationale: Identifies classes, constructors and destructors, e.g., GtkWidget.
de: Klassen und Namensräume (engl. namespace) sollten den ersten Buchstaben eines jeden Wortes groß schreiben und Unterstriche vermeiden. Begründung: Identifiziert Klassen, Konstruktoren und Destruktoren, z.B. GtkWidget.

note: type: Plain text
en: Methods (or function names) should follow the C recommendations above and should not include the class name. Rationale: Maintains a common style across C and C++ sources, e.g., get_foo_bar().
de: Methoden (oder Funktionsnamen) sollten den obigen C-Empfehlungen folgen und nicht den Klassennamen enthalten. Begründung: Beibehaltung eines gemeinsamen Stils für C- und C++-Quellen, z.B. get_foo_bar().

note: type: Plain text
en: However, boolean methods are easier to read if they avoid underscores and use an 'is' prefix (not to be confused with methods that manipulate a boolean). Rationale: Identifies the return value as TRUE or FALSE and nothing else, e.g., isOpen, isHomed.
de: Hingegen sind Boolesche Methoden leichter zu lesen, wenn sie keine Unterstriche und ein 'is' Präfix verwenden (nicht zu verwechseln mit Methoden, die einen Booleschen Wert manipulieren). Begründung: Kennzeichnet den Rückgabewert als TRUE oder FALSE und nichts anderes, z.B. isOpen, isHomed.

note: type: Plain text
en: Do NOT use 'Not' in a boolean name, it leads only leads to confusion when doing logical tests, e.g., isNotOnLimit or is_not_on_limit are BAD.
de: Verwenden Sie NICHT 'Not' in einem booleschen Namen, es führt nur zu Verwirrung, wenn Sie logische Tests durchführen, z.B. isNotOnLimit oder is_not_on_limit sind BÖSE.

note: type: Plain text
en: Variable names should avoid the use of upper case and underscores except for local or private names. The use of global variables should be avoided as much as possible. Rationale: Clarifies which are variables and which are methods. Public: e.g., axislimit Private: e.g., maxvelocity_ .
de: Bei Variablennamen sollte die Verwendung von Großbuchstaben und Unterstrichen vermieden werden, außer bei lokalen oder privaten Namen. Die Verwendung von globalen Variablen sollte so weit wie möglich vermieden werden. Begründung: Stellt klar, was Variablen und was Methoden sind. Öffentlich (engl. public): z.B. axislimit Privat: z.B. maxvelocity_ .

note: type: Title ===
en: Specific method naming conventions
de: Spezifische Namenskonventionen für Methoden

note: type: Plain text
en: The terms get and set should be used where an attribute is accessed directly. Rationale: Indicates the purpose of the function or method, e.g., get_foo set_bar.
de: Die Begriffe get und set sollten verwendet werden, wenn direkt auf ein Attribut zugegriffen wird. Begründung: Gibt den Zweck der Funktion oder Methode an, z. B. get_foo set_bar.

note: type: Plain text
en: For methods involving boolean attributes, set & reset is preferred.  Rationale: As above. e.g. set_amp_enable reset_amp_fault
de: Für Methoden, die boolesche Attribute beinhalten, ist set & reset vorzuziehen.  Begründung: Wie oben. z. B. set_amp_enable reset_amp_fault

note: type: Plain text
en: Math intensive methods should use compute as a prefix. Rationale: Shows that it is computationally intensive and will hog the CPU. e.g.  compute_PID
de: Bei rechenintensiven Methoden sollte "compute" als Präfix verwendet werden. Begründung: Zeigt an, dass die Methode rechenintensiv ist und die CPU beansprucht. z.B. compute_PID

note: type: Plain text
en: Abbreviations in names should be avoided where possible - The exception is for local variable names. Rationale: Clarity of code. e.g.  pointer is preferred over ptr compute is preferred over cmp compare is again preferred over cmp.
de: Abkürzungen in Namen sollten nach Möglichkeit vermieden werden - eine Ausnahme bilden die Namen lokaler Variablen. Begründung: Klarheit des Codes. z.B. Pointer wird gegenüber ptr bevorzugt compute wird gegenüber cmp bevorzugt und genauso wird compare wiederum gegenüber cmp vorgezogen.

note: type: Plain text
en: Enumerates and other constants can be prefixed by a common type name, e.g., `enum COLOR { COLOR_RED, COLOR_BLUE };` .
de: Aufzählungen und anderen Konstanten kann ein gemeinsamer Typname vorangestellt werden, z. B. `enum COLOR { COLOR_RED, COLOR_BLUE }; `.

note: type: Plain text
en: Excessive use of macros and defines should be avoided - Using simple methods or functions is preferred. Rationale: Improves the debugging process.
de: Übermäßiger Gebrauch von Makros und Defines sollte vermieden werden - Die Verwendung einfacher Methoden oder Funktionen ist vorzuziehen. Begründung: Verbessert den Debugging-Prozess.

note: type: Plain text
en: Include Statements Header files must be included at the top of a source file and not scattered throughout the body. They should be sorted and grouped by their hierarchical position within the system with the low level files included first. Include file paths should NEVER be absolute - Use the compiler -I flag instead to extend the search path. Rationale: Headers may not be in the same place on all systems.
de: Include-Anweisungen Header-Dateien müssen am Anfang einer Quelldatei eingefügt werden und dürfen nicht über den gesamten Textkörper verstreut sein. Sie sollten nach ihrer hierarchischen Position innerhalb des Systems sortiert und gruppiert werden, wobei die Dateien der unteren Ebene zuerst eingebunden werden sollten. Include-Dateipfade sollten NIEMALS absolut sein - verwenden Sie stattdessen das Compiler-Flag -I zur Erweiterung des Suchpfades. Begründung: Header befinden sich nicht auf allen Systemen an der gleichen Stelle.

note: type: Plain text
en: Pointers and references should have their reference symbol next to the variable name rather than the type name. Rationale: Reduces confusion, e.g., `float *x` or `int &i`.
de: Bei Zeigern und Referenzen sollte das Referenzsymbol neben dem Variablennamen und nicht neben dem Typnamen stehen. Begründung: Verringert die Verwirrung, z.B. `float *x` oder `int &i` .

note: type: Plain text
en: Implicit tests for zero should not be used except for boolean variables, e.g., `if (spindle_speed != 0)` NOT `if (spindle_speed)`.
de: Implizite Tests auf Null sollten mit Ausnahme von booleschen Variablen nicht verwendet werden, z.B. `if (spindle_speed != 0)`, NICHT `if (spindle_speed)`.

note: type: Plain text
en: Only loop control statements must be included in a for() construct, e.g., `sum = 0; for (i=0; i<10; i++) { sum += value[i]; }`
    NOT: `for (i=0, sum=0; i<10; i++) sum += value[i];`.
de: In einem for()-Konstrukt dürfen nur Anweisungen zur Schleifenkontrolle enthalten sein, z.B. `sum = 0; for (i = 0; i < 10; i++) { sum += value[i]; } `
    NICHT: `for (i=0, sum=0; i<10; i++) sum += value[i];`.

note: type: Plain text
en: Likewise, executable statements in conditionals must be avoided, e.g., `if (fd = open(file_name)` is bad.
de: Ebenso müssen ausführbare Anweisungen in Konditionalen vermieden werden, z.B. ist `if (fd = open(file_name))` böse.

note: type: Plain text
en: Complex conditional statements should be avoided - Introduce temporary boolean variables instead.
de: Komplexe bedingte Anweisungen sollten vermieden werden - führen Sie stattdessen temporäre boolesche Variablen ein.

note: type: Plain text
en: Parentheses should be used in plenty in mathematical expressions - Do not rely on operator precedence when an extra parentheses would clarify things.
de: Klammern sollten in mathematischen Ausdrücken reichlich verwendet werden - Verlassen Sie sich nicht auf den Vorrang von Operatoren, wenn eine zusätzliche Klammer die Dinge klarer darstellen würde.

note: type: Plain text
en: File names: C++ sources and headers use .cc and .hh extension. The use of .c and .h are reserved for plain C. Headers are for class, method, and structure declarations, not code (unless the functions are declared inline).
de: Dateinamen: C++-Quelltexte und -Header verwenden die Erweiterungen .cc und .hh. Die Verwendung von .c und .h ist für einfaches C reserviert. Header sind für Klassen-, Methoden- und Strukturdeklarationen, nicht für Code (es sei denn, die Funktionen sind inline deklariert).

note: type: Title ==
en: Python coding standards
de: Python-Codierungsstandards

note: type: Plain text
en: Use the http://www.python.org/dev/peps/pep-0008/[PEP 8] style for Python code.
de: Verwenden Sie den http://www.python.org/dev/peps/pep-0008/[PEP 8]-Stil für Python-Code.

note: type: Title ==
en: Comp coding standards
de: Comp-Codierungs-Standards

note: type: Plain text
en: In the declaration portion of a .comp file, begin each declaration at the first column. Insert extra blank lines when they help group related items.
de: Im Deklarationsteil einer .comp-Datei beginnen Sie jede Deklaration mit der ersten Spalte. Fügen Sie zusätzliche Leerzeilen ein, wenn sie zur Gruppierung verwandter Elemente beitragen.

note: type: Plain text
en: In the code portion of a .comp file, follow normal C coding style.
de: Im Code-Teil einer .comp-Datei ist der normale C-Codierungsstil zu beachten.

note: type: Title =
en: Origin(((History)))
de: Ursprung(((Geschichte)))

note: type: Plain text
en: EMC (the Enhanced Machine Controller) was created by http://www.nist.gov/index.html[NIST] , the National Institute of Standards and Technology, which is an agency of the Commerce Department of the United States government.
de: EMC (der Enhanced Machine Controller) wurde von http://www.nist.gov/index.html[NIST] , dem National Institute of Standards and Technology, einer Behörde des Handelsministeriums der Vereinigten Staaten, entwickelt.

note: type: Plain text
en: NIST first became interested in writing a motion control package as a test platform for concepts and standards. Early sponsorship from General Motors resulted in an adaptation of the fledgling version of EMC using PMAC intelligent control boards running under a "real time" version of Windows NT and controlling a large milling machine.
de: Das NIST interessierte sich zunächst für die Entwicklung eines Bewegungssteuerungspakets als Testplattform für Konzepte und Normen. Die frühe Förderung durch General Motors führte zu einer Anpassung der noch jungen Version von EMC unter Verwendung intelligenter PMAC-Steuerungskarten, die unter einer "Echtzeit"version von Windows NT liefen und eine große Fräsmaschine steuerten.

note: type: Plain text
en: As is required of all 'work product' of US federal government employees, the resulting software and the report about it are required to be in the public domain and a report about it was duly published, including on the Internet. It was there that Matt Shaver discovered EMC. He contacted NIST and entered into discussions with Fred Proctor about adapting the code for use in controlling less expensive hardware to be used for upgrades and replacements of CNC controls that were obsolete or just plain dead. NIST was intrigued because they too wanted something less expensive. In order to launch a cooperative effort, a formal agreement was created which guaranteed that the resulting code and design would remain in the public domain.
de: Wie bei allen 'Arbeitsprodukten' von Mitarbeitern der US-Bundesregierung vorgeschrieben, müssen die resultierende Software und der Bericht darüber öffentlich zugänglich sein, und ein Bericht darüber wurde ordnungsgemäß veröffentlicht, auch im Internet. Dort entdeckte Matt Shaver EMC. Er setzte sich mit dem NIST in Verbindung und diskutierte mit Fred Proctor über die Anpassung des Codes für die Steuerung preiswerterer Hardware, die für die Aufrüstung und den Ersatz veralteter oder schlichtweg toter CNC-Steuerungen verwendet werden sollte. Das NIST war fasziniert, denn auch sie wollten etwas Günstigeres. Um eine Zusammenarbeit in die Wege zu leiten, wurde eine formelle Vereinbarung getroffen, die garantierte, dass der resultierende Code und das Design public domain bleiben würden.

note: type: Plain text
en: Early considerations focused on replacing the expensive and temperamental "real time" Windows NT system. It was proposed that a relatively new (at the time) real time extension of the Linux operating system be tried. This idea was pursued with success. Next up was the issue of the expensive intelligent motion control boards. By this time the processing power of a PC was considered great enough to directly take control of the motion routines.  A quick search of available hardware resulted in the selection of a http://www.servotogo.com/[Servo-To-Go] interface board as the first platform for letting the PC directly control the motors. Software for trajectory planning and PID loop control was added to the existing user interface and RS274 interpreter. Matt successfully used this version to upgrade a couple of machines with dead controls and this became the EMC system that first caught the attention of the outside world. Mention of EMC on the rec.crafts.metalworking USENET newsgroup resulted in early adopters like http://pico-systems.com/motion.html[Jon Elson] building systems to take advantage of EMC.
de: Die ersten Überlegungen konzentrierten sich auf den Ersatz des teuren und temperamentvollen Windows-NT-Systems (Echtzeit). Es wurde vorgeschlagen, eine (damals) relativ neue Echtzeit-Erweiterung des Linux-Betriebssystems zu testen. Diese Idee wurde mit Erfolg weiterverfolgt. Als Nächstes stand die Frage der teuren intelligenten Bewegungssteuerungskarten an. Zu diesem Zeitpunkt wurde die Rechenleistung eines PCs als groß genug angesehen, um die Kontrolle über die Bewegungsroutinen direkt zu übernehmen.  Eine schnelle Suche nach verfügbarer Hardware führte zur Auswahl einer http://www.servotogo.com/[Servo-To-Go]-Schnittstellenkarte als erste Plattform, mit der PC die Motoren direkt steuern konnte. Die vorhandene Benutzeroberfläche und der RS274-Interpreter wurden um Software für die Bahnplanung und PID-Regelung ergänzt. Matt setzte diese Version erfolgreich ein, um einige Maschinen mit toten Steuerungen aufzurüsten, und dies wurde das EMC-System, das die Aufmerksamkeit der Außenwelt auf sich zog. Die Erwähnung von EMC in der USENET-Newsgroup rec.crafts.metalworking führte dazu, dass frühe Anwender wie http://pico-systems.com/motion.html[Jon Elson] Systeme bauten, um die Vorteile von EMC zu nutzen.

note: type: Plain text
en: NIST set up a mailing list for people interested in EMC. As time went on, others outside NIST became interested in improving EMC. Many people requested or coded small improvements to the code. Ray Henry wanted to refine the user interface. Since Ray was reluctant to try tampering with the C code in which the user interface was written, a simpler method was sought. Fred Proctor of NIST suggested a scripting language and wrote code to interface the Tcl/Tk scripting language to the internal NML communications of EMC. With this tool Ray went on to write a Tcl/Tk program that became the predominant user interface for EMC at the time.
de: Das NIST richtete eine Mailingliste für Personen ein, die sich für EMC interessierten. Im Laufe der Zeit interessierten sich auch andere außerhalb des NIST für die Verbesserung von EMC. Viele Leute baten um kleine Verbesserungen des Codes oder programmierten sie. Ray Henry wollte die Benutzeroberfläche verfeinern. Da Ray sich nicht traute, den C-Code, in dem die Benutzeroberfläche geschrieben war, zu verändern, wurde eine einfachere Methode gesucht. Fred Proctor vom NIST schlug eine Skriptsprache vor und schrieb einen Code, um die Skriptsprache Tcl/Tk mit der internen NML-Kommunikation von EMC zu verbinden. Mit diesem Tool schrieb Ray dann ein Tcl/Tk-Programm, das zur damals vorherrschenden Benutzeroberfläche für EMC wurde.

note: type: Plain text
en: For NIST's perspective, see this http://web.archive.org/web/20120417094958/http://www.isd.mel.nist.gov/documents/shackleford/4191_05.pdf[paper] written by William Shackleford and Frederick Proctor, describing the history of EMC and its transition to open source.
de: Die Perspektive des NIST finden Sie in diesem http://web.archive.org/web/20120417094958/http://www.isd.mel.nist.gov/documents/shackleford/4191_05.pdf[paper] von William Shackleford und Frederick Proctor, das die Geschichte von EMC und den Übergang zu Open Source beschreibt.

note: type: Plain text
en: By this time interest in EMC as beginning to pick up substantially. As more and more people attempted installation of EMC, the difficulty of patching a Linux kernel with the real time extensions and of compiling the EMC code became glaringly obvious. Many attempts to document the process and write scripts were attempted, some with moderate success. The problem of matching the correct version of the patches and compilers with the selected version of Linux kept cropping up. Paul Corner came to the rescue with the BDI (brain dead install) which was a CD from which a complete working system (Linux, patches, and EMC) could be installed.  The BDI approach opened the world of EMC to a much larger user community. As this community continued to grow, the EMC mailing list and code archives were moved to http://www.sourceforge.net/projects/emc/[SourceForge] and the LinuxCNC web site was established.
de: Zu dieser Zeit begann das Interesse an EMC erheblich zuzunehmen. Als immer mehr Leute versuchten, EMC zu installieren, wurde die Schwierigkeit, einen Linux-Kernel mit den Echtzeit-Erweiterungen zu patchen und den EMC-Code zu kompilieren, überdeutlich. Viele Versuche, den Prozess zu dokumentieren und Skripte zu schreiben, wurden unternommen, einige mit mäßigem Erfolg. Immer wieder tauchte das Problem auf, die richtige Version der Patches und Compiler mit der ausgewählten Linux-Version abzugleichen. Paul Corner kam zur Rettung mit der BDI (brain dead install), einer CD, von der ein komplettes funktionierendes System (Linux, Patches und EMC) installiert werden konnte.  Der BDI-Ansatz öffnete die Welt der EMC für eine viel größere Benutzergemeinschaft. Als diese Gemeinschaft weiter wuchs, wurden die EMC-Mailingliste und die Code-Archive nach http://www.sourceforge.net/projects/emc/[SourceForge] verschoben und die LinuxCNC-Website eingerichtet.

note: type: Plain text
en: With a larger community of users participating, EMC became a major focus of interest at the on-going CNC exhibits at NAMES and NAMES became the annual meeting event for EMC. For the first couple of years, the meetings just happened because the interested parties were at NAMES. In 2003 the EMC user community had its first announced public meeting. It was held the Monday after NAMES in the lobby of the arena where the NAMES show was held.  Organization was loose, but the idea of a hardware abstraction layer (HAL) was born and the movement to restructure the code for ease of development (EMC2) was proposed.
de: Durch die Teilnahme einer größeren Gemeinschaft von Anwendern wurde EMC zu einem wichtigen Interessenschwerpunkt bei den laufenden CNC-Ausstellungen auf der NAMES, und die NAMES wurde zur jährlichen Veranstaltung für EMC. In den ersten Jahren fanden die Treffen nur deshalb statt, weil die interessierten Parteien auf der NAMES waren. Im Jahr 2003 fand das erste angekündigte öffentliche Treffen der EMC-Anwendergemeinschaft statt. Es fand am Montag nach der NAMES in der Lobby der Arena statt, in der auch die NAMES-Messe abgehalten wurde.  Die Organisation war locker, aber die Idee einer Hardware-Abstraktionsschicht (HAL) wurde geboren und die Umstrukturierung des Codes zur Vereinfachung der Entwicklung (EMC2) wurde vorgeschlagen.

note: type: Title ==
en: Name Change
de: Namensänderung

note: type: Plain text
en: In the spring of 2011, the LinuxCNC Board of Directors was contacted by a law firm representing EMC Corporation (www.emc.com) about the use of "EMC" and "EMC2" to identify the software offered on linuxcnc.org. EMC Corporation has registered various trademarks relating to EMC and EMC² (EMC with superscripted numeral two).
de: Im Frühjahr 2011 wurde der LinuxCNC-Vorstand von einer Anwaltskanzlei in Vertretung der EMC Corporation (www.emc.com) wegen der Verwendung von "EMC" und "EMC2" zur Kennzeichnung der auf linuxcnc.org angebotenen Software kontaktiert. Die EMC Corporation hat verschiedene Marken im Zusammenhang mit EMC und EMC² (EMC mit hochgestellter Zahl zwei) eingetragen.

note: type: Plain text
en: After a number of conversations with the representative of EMC Corporation, the final result is that, starting with the next major release of the software, linuxcnc.org will stop identifying the software using "emc" or "EMC", or those terms followed by digits. To the extent that the LinuxCNC Board of Directors controls the names used to identify the software offered on linuxcnc.org, the board has agreed to this.
de: Nach einer Reihe von Gesprächen mit dem Vertreter der EMC Corporation war das Endergebnis, dass mit dem nächsten großen Release der Software, linuxcnc.org aufhörte, die Identifizierung der Software mit "emc", "EMC", oder diese Zeichenfolgen in Kombination mit nachfolgenden Ziffern zu nutzen. Soweit das LinuxCNC Board of Directors eine Kontrolle hat über die Bezeichnung der auf linuxcnc.org angeboten Software, hat der Vorstand diesem zugestimmt.

note: type: Plain text
en: As a result, it was necessary to choose a new name for the software. Of the options the board considered, there was consensus that "LinuxCNC" is the best option, as this has been our website's name for years.
de: Infolgedessen war es notwendig, einen neuen Namen für die Software zu wählen. Von den Optionen, die der Vorstand in Betracht zog, gab es einen Konsens, dass "LinuxCNC" die beste Option ist, da dies seit Jahren der Name unserer Website ist'.

note: type: Plain text
en: In preparation for the new name, we have received a sub-license of the LINUX® trademark from the Linux Foundation (www.linuxfoundation.org), protecting our use of the LinuxCNC name. (LINUX® is the registered trademark of Linus Torvalds in the U.S. and other countries.)
de: In Vorbereitung auf den neuen Namen haben wir eine Unterlizenz für die Marke LINUX® von der Linux Foundation (www.linuxfoundation.org) erhalten, die unsere Verwendung des Namens LinuxCNC schützt. (LINUX® ist die eingetragene Marke von Linus Torvalds in den USA und anderen Ländern.)

note: type: Plain text
en: The rebranding effort included the linuxcnc.org website, the IRC channels, and versions of the software and documentation since version 2.5.0.
de: Die Umbenennung umfasste die Website linuxcnc.org, die IRC-Kanäle und die Versionen der Software und der Dokumentation seit Version 2.5.0.

note: type: Title ==
en: Additional Info
de: Zusätzliche Informationen

note: type: Plain text
en: NIST published a paper describing the https://www.nist.gov/node/704046[RS274NGC] language and the abstract machining center it controls, as well as an early implementation of EMC.  The paper is also available at http://linuxcnc.org/files/RS274NGCv3.pdf .
de: Das NIST hat ein Papier veröffentlicht, in dem die Sprache https://www.nist.gov/node/704046[RS274NGC] und das von ihr gesteuerte abstrakte Bearbeitungszentrum sowie eine frühe Implementierung von EMC beschrieben werden.  Das Papier ist auch unter http://linuxcnc.org/files/RS274NGCv3.pdf verfügbar.

note: type: Plain text
en: NIST also published a paper on the history of EMC and its transition to https://www.nist.gov/node/702276[open source]. The paper is also available at http://linuxcnc.org/files/Use-of-Open-Source-Distribution-for-a-Machine-Tool-Controller.pdf
de: Das NIST hat auch ein Papier über die Geschichte der EMC und ihren Übergang zu https://www.nist.gov/node/702276[open source] veröffentlicht. Das Papier ist auch unter http://linuxcnc.org/files/Use-of-Open-Source-Distribution-for-a-Machine-Tool-Controller.pdf verfügbar

note: type: Title =
en: Glossary
de: Glossar

note: type: Plain text
en: A listing of terms and what they mean. Some terms have a general meaning and several additional meanings for users, installers, and developers.
de: Eine Auflistung von Begriffen und deren Bedeutung. Einige Begriffe haben eine allgemeine Bedeutung und mehrere zusätzliche Bedeutungen für Benutzer, Installateure und Entwickler.

note: type: Labeled list
en: Acme Screw
de: Acme-Schraube

note: type: Plain text
en: (((acme screw))) A type of lead-screw that uses an Acme thread form. Acme threads have somewhat lower friction and wear than simple triangular threads, but ball-screws are lower yet. Most manual machine tools use acme lead-screws.
de: (((Acme-Schraube))) Eine Art von Gewindespindel, die ein Acme-Gewinde hat. Acme-Gewinde haben eine etwas geringere Reibung und einen geringeren Verschleiß als einfache Dreiecksgewinde, aber Kugelgewindetriebe sind noch günstiger. Die meisten manuellen Werkzeugmaschinen verwenden Trapezgewindespindeln.

note: type: Title ===
en: Axis
de: Achse

note: type: Plain text
en: (((axis))) One of the computer controlled movable parts of the machine. For a typical vertical mill, the table is the X axis, the saddle is the Y axis, and the quill or knee is the Z axis. Angular axes like rotary tables are referred to as A, B, and C. Additional linear axes relative to the tool are called U, V, and W respectively.
de: (((Achse)))) Eines der computergesteuerten beweglichen Teile der Maschine. Bei einer typischen Vertikalfräse ist der Tisch die X-Achse, der Schlitten die Y-Achse und die Pinole oder das Knie die Z-Achse. Winkelachsen wie Drehtische werden als A, B und C bezeichnet. Zusätzliche lineare Achsen in Bezug auf das Werkzeug heißen U, V und W.

note: type: Labeled list
en: Axis(GUI)
de: Achse (GUI)

note: type: Plain text
en: (((GUI))) One of the Graphical User Interfaces available to users of LinuxCNC. It features the modern use of menus and mouse buttons while automating and hiding some of the more traditional LinuxCNC controls. It is the only open-source interface that displays the entire tool path as soon as a file is opened.
de: (((GUI))) Eine der grafischen Benutzeroberflächen, die den Benutzern von LinuxCNC zur Verfügung stehen. Es verfügt über die moderne Verwendung von Menüs und Maustasten während der Ausführung und versteckt einige der mehr traditionellen LinuxCNC Kontrollen. Es ist die einzige Open-Source-Schnittstelle, die den gesamten Werkzeugpfad zeigt, sobald eine Datei geöffnet wird.

note: type: Plain text
en: (((GUI))) A Graphical User Interfaces available to users of LinuxCNC. It features the use and feel of an industrial control and can be used with touch screen, mouse and keyboard. It support embedded tabs and hal driven user messages, it offers a lot of hal beens to be controlled with hardware. GMOCCAPY is highly customizable.
de: (((GUI))) Eine grafische Benutzeroberfläche, die den Benutzern von LinuxCNC zur Verfügung steht. Es bietet die Verwendung und das Gefühl einer industriellen Steuerung und kann mit Touchscreen, Maus und Tastatur verwendet werden. Es unterstützt eingebettete Tabs und von HAL ausgelöste Benutzer-Nachrichten, bietet es eine Menge HAL beens mit Hardware gesteuert werden. GMOCCAPY ist in hohem Maße anpassbar.

note: type: Labeled list
en: Backlash
de: Umkehrspiel

note: type: Plain text
en: (((backlash))) The amount of "play" or lost motion that occurs when direction is reversed in a lead screw. or other mechanical motion driving system. It can result from nuts that are loose on leadscrews, slippage in belts, cable slack, "wind-up" in rotary couplings, and other places where the mechanical system is not "tight".  Backlash will result in inaccurate motion, or in the case of motion caused by external forces (think cutting tool pulling on the work piece) the result can be broken cutting tools. This can happen because of the sudden increase in chip load on the cutter as the work piece is pulled across the backlash distance by the cutting tool.
de: (((Umkehrspiel))) Das Spiel oder der Bewegungsverlust, der bei einer Richtungsumkehr in einer Leitspindel oder einem anderen mechanischen Antriebssystem auftritt. Es kann durch lockere Muttern an Leitspindeln, Schlupf in Riemen, Kabeldurchhang, "Aufwickeln" in Drehkupplungen und anderen Stellen entstehen, an denen das mechanische System nicht "dicht" ist.  Spiel führt zu ungenauen Bewegungen, oder im Falle von Bewegungen, die durch äußere Kräfte verursacht werden (z. B. Schneidewerkzeug, das am Werkstück zieht), können Schneidewerkzeuge brechen. Dies kann passieren, weil die Spanbelastung des Fräsers plötzlich ansteigt, wenn das Werkstück durch das Schneidwerkzeug über die Spielstrecke gezogen wird.

note: type: Labeled list
en: Backlash Compensation
de: Umkehrspiel-Kompensation

note: type: Plain text
en: (((backlash compensation))) Any technique that attempts to reduce the effect of backlash without actually removing it from the mechanical system. This is typically done in software in the controller. This can correct the final resting place of the part in motion but fails to solve problems related to direction changes while in motion (think circular interpolation) and motion that is caused when external forces (think cutting tool pulling on the work piece) are the source of the motion.
de: (((Umkehrspiel-Kompensation))) Jede Technik, mit der versucht wird, die Auswirkungen des Spiels zu verringern, ohne es tatsächlich aus dem mechanischen System zu entfernen. Dies geschieht in der Regel durch Software in der Steuerung. Auf diese Weise kann die endgültige Ruhestellung des Teils während der Bewegung korrigiert werden, aber Probleme im Zusammenhang mit Richtungsänderungen während der Bewegung (z. B. Kreisinterpolation) und Bewegungen, die durch äußere Kräfte (z. B. Ziehen des Schneidwerkzeugs am Werkstück) verursacht werden, sind nicht gelöst.

note: type: Labeled list
en: Ball Screw
de: Kugelumlaufspindel

note: type: Plain text
en: (((ball screw))) A type of lead-screw that uses small hardened steel balls between the nut and screw to reduce friction.  Ball-screws have very low friction and backlash, but are usually quite expensive.
de: (((Kugelumlaufspindel))) Eine Art von Gewindespindel, bei der zur Verringerung der Reibung kleine gehärtete Stahlkugeln zwischen der Mutter und der Spindel eingesetzt werden.  Kugelgewindetriebe haben eine sehr geringe Reibung und ein geringes Spiel, sind aber in der Regel recht teuer.

note: type: Labeled list
en: Ball Nut
de: Kugelmutter

note: type: Plain text
en: (((ball nut))) A special nut designed for use with a ball-screw. It contains an internal passage to re-circulate the balls from one end of the screw to the other.
de: (((Kugelmutter))) Eine spezielle Mutter, die für die Verwendung mit einer Kugelumlaufspindel bestimmt ist. Sie enthält einen internen Durchgang, um die Kugeln von einem Ende der Spindel zum anderen zurückzubefördern.

note: type: Plain text
en: (((CNC))) Computer Numerical Control. The general term used to refer to computer control of machinery. Instead of a human operator turning cranks to move a cutting tool, CNC uses a computer and motors to move the tool, based on a part program.
de: (((CNC)))) Numerische Computersteuerung (Kurzform für engl. Computational Numerical Control). Allgemeiner Begriff, der sich auf die Computersteuerung von Maschinen bezieht. Statt dass ein menschlicher Bediener Kurbeln dreht, um ein Schneidwerkzeug zu bewegen, verwendet CNC einen Computer und Motoren, um das Werkzeug auf der Grundlage eines Teil-Beschreibung zu bewegen.

note: type: Plain text
en: (((comp))) A tool used to build, compile and install LinuxCNC HAL components.
de: (((comp)))) Ein Werkzeug, das zum Erstellen, Kompilieren und Installieren von LinuxCNC HAL-Komponenten verwendet wird.

note: type: Labeled list
en: Configuration(n)
de: Konfiguration(n)

note: type: Plain text
en: A directory containing a set of configuration files. Custom configurations are normally saved in the users home/linuxcnc/configs directory. These files include LinuxCNC's traditional INI file and HAL files. A configuration may also contain several general files that describe tools, parameters, and NML connections.
de: Ein Verzeichnis, das eine Reihe von Konfigurationsdateien enthält. Benutzerdefinierte Konfigurationen sind in der Regel in den Benutzer home/linuxcnc/configs Verzeichnis gespeichert. Diese Dateien enthalten LinuxCNC's traditionelle INI-Datei und HAL-Dateien. Eine Konfiguration kann auch mehrere allgemeine Dateien enthalten, die Werkzeuge, Parameter und NML-Verbindungen beschreiben.

note: type: Labeled list
en: Configuration(v)
de: Konfiguration(v)

note: type: Plain text
en: The task of setting up LinuxCNC so that it matches the hardware on a machine tool.
de: Die Aufgabe, LinuxCNC so einzustellen, dass es mit der Hardware einer Werkzeugmaschine übereinstimmt.

note: type: Labeled list
en: Coordinate Measuring Machine
de: Koordinatenmessmaschine

note: type: Plain text
en: (((coordinate measuring machine))) A Coordinate Measuring Machine is used to make many accurate measurements on parts. These machines can be used to create CAD data for parts where no drawings can be found, when a hand-made prototype needs to be digitized for moldmaking, or to check the accuracy of machined or molded parts.
de: (((Koordinatenmessmaschine))) Mit einer Koordinatenmessmaschine lassen sich viele genaue Messungen an Teilen vornehmen. Diese Maschinen können verwendet werden, um CAD-Daten für Teile zu erstellen, für die keine Zeichnungen vorhanden sind, wenn ein handgefertigter Prototyp für den Formenbau digitalisiert werden muss, oder um die Genauigkeit von maschinell bearbeiteten oder gegossenen Teilen zu überprüfen.

note: type: Labeled list
en: Display units
de: Anzeigeeinheiten

note: type: Plain text
en: (((display units))) The linear and angular units used for onscreen display.
de: (((Anzeigeeinheiten))) Die linearen und winkligen Einheiten, die für die Anzeige auf dem Bildschirm verwendet werden.

note: type: Plain text
en: (((DRO))) A Digital Read Out is a system of position-measuring devices attached to the slides of a machine tool, which are connected to a numeric display showing the current location of the tool with respect to some reference position.  DROs are very popular on hand-operated machine tools because they measure the true tool position without backlash, even if the machine has very loose Acme screws.  Some DROs use linear quadrature encoders to pick up position information from the machine, and some use methods similar to a resolver which keeps rolling over.
de: (((DRO))) Eine digitale Positionsanzeige (Abkürzung von engl. Digital Read Out) ist ein System von Positionsmessgeräten, die an den Schlitten einer Werkzeugmaschine angebracht und mit einer numerischen Anzeige verbunden sind, um die aktuelle Position des Werkzeugs im Verhältnis zu einer Referenzposition anzuzeigen.  DROs sind bei handgeführten Werkzeugmaschinen sehr beliebt, da sie die tatsächliche Werkzeugposition spielfrei messen, selbst wenn die Maschine sehr lockere Acme-Schrauben hat.  Einige DROs verwenden lineare Quadratur-Drehgeber, um Positionsinformationen von der Maschine zu erhalten, und einige verwenden Methoden, die einem Resolver ähneln, der immer wieder umläuft.

note: type: Plain text
en: (((EDM))) EDM is a method of removing metal in hard or difficult to machine or tough metals, or where rotating tools would not be able to produce the desired shape in a cost-effective manner. An excellent example is rectangular punch dies, where sharp internal corners are desired. Milling operations can not give sharp internal corners with finite diameter tools. A 'wire' EDM machine can make internal corners with a radius only slightly larger than the wire's radius. A 'sinker' EDM can make internal corners with a radius only slightly larger than the radius on the corner of the sinking electrode.
de: (((EDM))) Die Funkenerosion ist ein Verfahren zum Abtragen von Metall in harten oder schwer zu bearbeitenden oder zähen Metallen oder in Fällen, in denen rotierende Werkzeuge nicht in der Lage wären, die gewünschte Form auf kostengünstige Weise herzustellen. Ein hervorragendes Beispiel sind rechteckige Stanzformen, bei denen scharfe Innenecken gewünscht sind. Bei Fräsvorgängen können mit Werkzeugen mit begrenztem Durchmesser keine scharfen Innenecken erzeugt werden. Eine 'Drahterodiermaschine' kann Innenecken mit einem Radius herstellen, der nur geringfügig größer als der Radius des Drahtes' ist. Eine Senkerodiermaschine kann Innenecken mit einem Radius herstellen, der nur geringfügig größer ist als der Radius an der Ecke der Senkelektrode.

note: type: Plain text
en: (((EMC))) The Enhanced Machine Controller. Initially a NIST project. Renamed to LinuxCNC in 2012.
de: (((EMC))) Der Enhanced Machine Controller (ein Eigenname, wörtlich übersetzt "verbesserte Maschinensteuerung"). Ursprünglich ein NIST-Projekt. Umbenannt in LinuxCNC im Jahr 2012.

note: type: Plain text
en: (((EMCIO))) The module within LinuxCNC that handles general purpose I/O, unrelated to the actual motion of the axes.
de: (((EMCIO))) Das Modul innerhalb von LinuxCNC, die allgemeine E/A (engl. I/O) handhabt, die nichts mit der eigentlichen Bewegung der Achsen zu tun hat.

note: type: Plain text
en: (((EMCMOT))) The module within LinuxCNC that handles the actual motion of the cutting tool. It runs as a real-time program and directly controls the motors.
de: (((EMCMOT))) Das Modul innerhalb von LinuxCNC, das die eigentliche Bewegung des Schneidwerkzeugs steuert. Es läuft als Echtzeitprogramm und steuert direkt die Motoren.

note: type: Plain text
en: (((encoder))) A device to measure position. Usually a mechanical-optical device, which outputs a quadrature signal. The signal can be counted by special hardware, or directly by the parport with LinuxCNC.
de: (((Encoder))) Ein Gerät zur Messung der Position. Normalerweise ein mechanisch-optisches Gerät, das ein Quadratursignal ausgibt. Das Signal kann durch spezielle Hardware gezählt werden, oder direkt durch den parallelen Port mit LinuxCNC.

note: type: Title ====
en: Feed
de: Vorschub

note: type: Plain text
en: (((feed))) Relatively slow, controlled motion of the tool used when making a cut.
de: (((Vorschub))) Relativ langsame, kontrollierte Bewegung des Werkzeugs bei der Durchführung eines Schnitts.

note: type: Plain text
en: Feed rate
de: Vorschubgeschwindigkeit

note: type: Plain text
en: (((feed rate))) The speed at which a cutting motion occurs.  In auto or MDI mode, feed rate is commanded using an F word.  F10 would mean ten machine units per minute.
de: (((Vorschubgeschwindigkeit))) (engl. feed rate) Die Geschwindigkeit, mit der eine Schnittbewegung erfolgt.  Im Auto- oder MDI Modus wird die Vorschubgeschwindigkeit mit einem F-Wort bestimmt.  F10 würde zehn Maschineneinheiten pro Minute bedeuten.

note: type: Labeled list
en: Feedback
de: Rückmeldung

note: type: Plain text
en: (((feedback))) A method (e.g., quadrature encoder signals)  by which LinuxCNC receives information about the position of motors.
de: (((Rückkopplung))) (engl. feedback) Eine Methode (z.B. Quadratur-Encoder-Signale), durch die LinuxCNC Informationen über die Position von Motoren erhält.

note: type: Labeled list
en: Feedrate Override
de: Vorschubgeschwindigkeit-Anpassung (engl. override)

note: type: Plain text
en: (((feedrate override))) A manual, operator controlled change in the rate at which the tool moves while cutting. Often used to allow the operator to adjust for tools that are a little dull, or anything else that requires the feed rate to be "tweaked".
de: (((Vorschub-Override))) Eine manuelle, vom Bediener gesteuerte Änderung der Geschwindigkeit, mit der sich das Werkzeug beim Schneiden bewegt. Wird oft verwendet, um dem Bediener die Möglichkeit zu geben, stumpfe Werkzeuge oder andere Dinge, die eine Anpassung der Vorschubgeschwindigkeit erfordern, zu korrigieren.

note: type: Labeled list
en: Floating Point Number
de: Gleitkommazahl

note: type: Plain text
en: A number that has a decimal point. (12.300) In HAL it is known as float.
de: Eine Zahl, die einen Dezimalpunkt hat, bsw. 12.3. In HAL wird sie (engl.) als Float bezeichnet.

note: type: Table
en: G-code
de: G-Code

note: type: Plain text
en: (((G-code))) The generic term used to refer to the most common part programming language. There are several dialects of G-code, LinuxCNC uses RS274/NGC.
de: (((G-Code))) Ein generalisierter Begriff für die gebräuchlichste Programmiersprache zur Beschreibung von Werkstücken. Es gibt mehrere Dialekte von G-Code, LinuxCNC verwendet RS274/NGC.

note: type: Plain text
en: (((GUI))) Graphical User Interface.
de: (((GUI))) Grafische Benutzeroberfläche (engl. Graphical User Interface).

note: type: Title ==
en: General
de: Allgemeines

note: type: Plain text
en: A type of interface that allows communications between a computer
    and a human (in most cases) via the manipulation of icons and other
    elements (widgets) on a computer screen.
de: Eine Art von Schnittstelle zur Kommunikation zwischen einem Computer
    und einem Menschen (in den meisten Fällen) über die Manipulation von Symbolen und anderen
    Elementen (Widgets) auf einem Computerbildschirm.

note: type: Plain text
en: An application that presents a graphical screen to the machine
    operator allowing manipulation of the machine and the corresponding
    controlling program.
de: Eine Anwendung, die dem Maschinenbediener einen grafischen Bildschirm präsentiert
    zur Bedienung der Maschine und des
    Steuerungsprogramms.

note: type: Plain text
en: (((HAL))) Hardware Abstraction Layer. At the highest level, it is simply a way to allow a number of building blocks to be loaded and interconnected to assemble a complex system. Many of the building blocks are drivers for hardware devices.  However, HAL can do more than just configure hardware drivers.
de: (((HAL))) Hardware-Abstraktionsschicht. Auf der höchsten Ebene ist es einfach eine Möglichkeit, eine Reihe von Bausteinen zu laden und miteinander zu verbinden, um ein komplexes System zusammenzustellen. Viele der Bausteine sind Treiber für Hardwaregeräte.  HAL kann jedoch mehr als nur Hardwaretreiber konfigurieren.

note: type: Table
en: Home
de: Pos1

note: type: Plain text
en: (((home))) A specific location in the machine's work envelope that is used to make sure the computer and the actual machine both agree on the tool position.
de: (((Referenzpunkt))))(((Home))) Eine bestimmte Position im Arbeitsbereich der Maschine, die verwendet wird, um sicherzustellen, dass der Computer und die tatsächliche Maschine mit der Werkzeugposition übereinstimmen.

note: type: Labeled list
en: ini file
de: INI-Datei

note: type: Plain text
en: (((INI))) A text file that contains most of the information that configures LinuxCNC for a particular machine.
de: (((INI))) Eine Textdatei mit dem überwiegenden Anteil an Informationen zur Anpassung (Konfiguration) von LinuxCNC an eine bestimmte Maschine.

note: type: Labeled list
en: Instance
de: Instanz

note: type: Plain text
en: (((Instance))) One can have an instance of a class or a particular object. The instance is the actual object created at runtime. In programmer jargon, the "Lassie" object is an instance of the "Dog" class.
de: (((Instanz))) Man kann eine Instanz einer Klasse oder eines bestimmten Objekts haben. Die Instanz ist das eigentliche Objekt, das zur Laufzeit erzeugt wird. Im Programmierer-Jargon ist das Objekt "Lassie" eine Instanz der Klasse "Dog".

note: type: Labeled list
en: Joint Coordinates
de: Gelenk-Koordinaten

note: type: Plain text
en: (((joint coordinates))) These specify the angles between the individual joints of the machine. See also Kinematics
de: (((Gelenkkoordinaten))) Diese geben die Winkel zwischen den einzelnen Gelenken der Maschine an. Siehe auch Kinematik

note: type: Labeled list
en: Jog
de: Jog (manuelle Bewegung)

note: type: Plain text
en: (((jog))) Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each key-press, or moves the axis at a constant speed as long as you hold down the key. In manual mode, jog speed can be set from the graphical interface.
de: (((Joggen))) Manuelles Bewegen einer Achse einer Maschine. Beim Joggin wird die Achse entweder bei jedem Tastendruck um einen festen Betrag bewegt oder mit einer konstanten Geschwindigkeit, solange Sie die Taste gedrückt halten. Im manuellen Modus kann die Jog-Geschwindigkeit über die grafische Oberfläche eingestellt werden.

note: type: Labeled list
en: kernel-space
de: Kernel-Space

note: type: Plain text
en: See real-time.
de: Siehe Echtzeit.

note: type: Labeled list
en: Kinematics
de: Kinematik

note: type: Plain text
en: (((kinematics))) The position relationship between world coordinates and joint coordinates of a machine. There are two types of kinematics. Forward kinematics is used to calculate world coordinates from joint coordinates. Inverse kinematics is used for exactly the opposite purpose. Note that kinematics does not take into account, the forces, moments etc. on the machine. It is for positioning only.
de: (((Kinematik))) Die Positionsbeziehung zwischen Weltkoordinaten und Gelenkkoordinaten einer Maschine. Es gibt zwei Arten von Kinematik. Die Vorwärtskinematik wird verwendet, um Weltkoordinaten aus Gelenkkoordinaten zu berechnen. Die inverse Kinematik wird für genau den gegenteiligen Zweck verwendet. Beachten Sie, dass die Kinematik die Kräfte, Momente usw. an der Maschine nicht berücksichtigt. Sie dient nur der Positionierung.

note: type: Labeled list
en: Lead-screw
de: Leitspindel

note: type: Plain text
en: (((lead screw))) An screw that is rotated by a motor to move a table or other part of a machine. Lead-screws are usually either ball-screws or acme screws, although conventional triangular threaded screws may be used where accuracy and long life are not as important as low cost.
de: (((Leitspindel))) Eine Spindel, die von einem Motor gedreht wird, um einen Tisch oder einen anderen Teil einer Maschine zu bewegen. Gewindespindeln sind in der Regel entweder Kugelgewindespindeln oder Trapezgewindespindeln, obwohl auch herkömmliche dreieckige Gewindespindeln verwendet werden können, wenn Genauigkeit und lange Lebensdauer weniger wichtig sind als niedrige Kosten.

note: type: Labeled list
en: Machine units
de: Maschineneinheiten

note: type: Plain text
en: (((machine units))) The linear and angular units used for machine configuration. These units are specified and used in the ini file.  HAL pins and parameters are also generally in machine units.
de: (((Maschineneinheiten))) Die für die Maschinenkonfiguration verwendeten Längen- und Winkeleinheiten. Diese Einheiten werden in der INI-Datei angegeben und verwendet.  HAL-Pins und -Parameter werden im Allgemeinen ebenfalls in Maschineneinheiten angegeben.

note: type: Plain text
en: (((MDI))) Manual Data Input. This is a mode of operation where the controller executes single lines of G-code as they are typed by the operator.
de: (((MDI))) Manuelle Dateneingabe (engl. Abkürzung für Manual Data Input). Dies ist eine Betriebsart, bei der das Steuergerät einzelne Zeilen des G-Codes ausführt, wie sie vom Bediener eingegeben werden.

note: type: Plain text
en: (((NIST))) National Institute of Standards and Technology.  An agency of the Department of Commerce in the United States.
de: (((NIST)))) das US Institut "Nationales Institut für Normung und Technologie" (engl. Abkurzung für National Institute of Standards and Technology).  Eine Einrichtung des Handelsministeriums der Vereinigten Staaten.

note: type: Plain text
en: (((NML))) Neutral Message Language provides a mechanism for handling multiple types of messages in the same buffer as well as simplifying the interface for encoding and decoding buffers in neutral format and the configuration mechanism.
de: (((NML))) Die Neutral Message Language bietet einen Mechanismus für die Handhabung mehrerer Nachrichtentypen im selben Puffer sowie eine Vereinfachung der Schnittstelle für die Kodierung und Dekodierung von Puffern im neutralen Format und des Konfigurationsmechanismus.

note: type: Labeled list
en: Offsets
de: Versätze

note: type: Plain text
en: (((offsets)))  An arbitrary amount, added to the value of something to make it equal to some desired value. For example, G-code programs are often written around some convenient point, such as X0, Y0.  Fixture offsets can be used to shift the actual execution point of that G-code program to properly fit the true location of the vice and jaws.  Tool offsets can be used to shift the "uncorrected" length of a tool to equal that tool's actual length.
de: (((Versatz)))(((Offsets)))  Ein beliebiger Betrag, der zum Wert von etwas hinzugefügt wird, um ihn mit einem gewünschten Wert gleichzusetzen. Zum Beispiel werden G-Code-Programme oft um einen geeigneten Punkt herum geschrieben, wie X0, Y0.  Vorrichtungsoffsets können verwendet werden, um den tatsächlichen Ausführungspunkt dieses G-Code-Programms so zu verschieben, dass er mit der tatsächlichen Position des Schraubstocks und der Backen übereinstimmt.  Werkzeugkorrekturen können verwendet werden, um die unkorrigierte Länge eines Werkzeugs so zu verschieben, dass sie der tatsächlichen Länge des Werkzeugs entspricht.

note: type: Labeled list
en: Part Program
de: Werkstück Programm

note: type: Plain text
en: (((part Program))) A description of a part, in a language that the controller can understand. For LinuxCNC, that language is RS-274/NGC, commonly known as G-code.
de: (((Werkstück Programm))) Eine Beschreibung eines Werkstücks in einer Sprache, welche die Steuerung verstehen kann. Für LinuxCNC ist die Sprache RS-274/NGC, allgemein als G-Code bekannt.

note: type: Labeled list
en: Program Units
de: Programm-Einheiten

note: type: Plain text
en: (((program units))) The linear and angular units used in a part program.  The linear program units do not have to be the same as the linear machine units.  See G20 and G21 for more information. The angular program units are always measured in degrees.
de: (((Programmeinheiten))) Die in einem Werkstück-Programm verwendeten Längen- und Winkeleinheiten.  Die linearen Programmeinheiten müssen nicht mit den linearen Maschineneinheiten übereinstimmen.  Siehe G20 und G21 für weitere Informationen. Die Winkeleinheiten des Programms werden immer in Grad gemessen.

note: type: Plain text
en: General-purpose, very high-level programming language. Used in LinuxCNC for the Axis GUI, the Stepconf configuration tool, and several G-code programming scripts.
de: Allzweck-, sehr High-Level-Programmiersprache. Wird in LinuxCNC verwendet für die Axis GUI, das Stepconf Konfigurationswerkzeug, und mehrere G-Code-Programmierung Skripte.

note: type: Labeled list
en: Rapid
de: Schnell

note: type: Plain text
en: (((rapid))) Fast, possibly less precise motion of the tool, commonly used to move between cuts. If the tool meets the workpiece or the fixturing during a rapid, it is probably a bad thing!
de: (((Eilgang)))) Schnelle, möglicherweise unpräzise Bewegung des Werkzeugs, die in der Regel für den Wechsel zwischen den Schnitten verwendet wird. Wenn das Werkzeug beim Eilgang auf das Werkstück oder die Vorrichtung trifft, ist das wahrscheinlich schlecht!

note: type: Labeled list
en: Rapid rate
de: Schnellauf-Geschwindigkeit

note: type: Plain text
en: (((rapid rate)))The speed at which a rapid motion occurs.  In auto or MDI mode, rapid rate is usually the maximum speed of the machine.  It is often desirable to limit the rapid rate when testing a G-code program for the first time.
de: (((Eilgang-Geschwindigkeit)))Die Geschwindigkeit, mit der eine Eilgangbewegung erfolgt.  Im Auto- oder MDI-Modus ist der Eilgang normalerweise die Höchstgeschwindigkeit der Maschine.  Es ist oft wünschenswert, die Eilgeschwindigkeit zu begrenzen, wenn ein G-Code-Programm zum ersten Mal getestet wird.

note: type: Labeled list
en: Real-time
de: Echtzeit

note: type: Plain text
en: (((real-time))) Software that is intended to meet very strict timing deadlines. Under Linux, in order to meet these requirements it is necessary to install a realtime kernel such as RTAI and build the software to run in the special real-time environment. For this reason real-time software runs in kernel-space.
de: (((Echtzeit)))) Software, die sehr strenge Zeitvorgaben einhalten soll. Um diese Anforderungen zu erfüllen, muss unter Linux ein Echtzeit-Kernel wie RTAI installiert und die Software für die Ausführung in der speziellen Echtzeitumgebung erstellt werden. Aus diesem Grund läuft Echtzeit-Software im Kernel-Space.

note: type: Plain text
en: (((RTAI))) Real Time Application Interface, see https://www.rtai.org/[https://www.rtai.org/], the real-time extensions for Linux that LinuxCNC can use to achieve real-time performance.
de: (((RTAI))) Real Time Application Interface, siehe https://www.rtai.org/[https://www.rtai.org/] mit Echtzeit-Erweiterungen für Linux, die LinuxCNC verwenden kann, um Echtzeit-Leistung zu erreichen.

note: type: Plain text
en: (((RTLINUX))) See https://en.wikipedia.org/wiki/RTLinux[https://en.wikipedia.org/wiki/RTLinux], an older real-time extension for Linux that LinuxCNC used to use to achieve real-time performance.  Obsolete, replaced by RTAI.
de: (((RTLINUX))) Siehe https://en.wikipedia.org/wiki/RTLinux[https://en.wikipedia.org/wiki/RTLinux], eine ältere Echtzeit-Erweiterung für Linux, die von LinuxCNC verwendet wurde, um Echtzeitleistung zu erreichen.  Veraltet, ersetzt durch RTAI.

note: type: Plain text
en: (((RTAPI)))A portable interface to real-time operating systems including RTAI and POSIX pthreads with realtime extensions.
de: (((RTAPI)))Eine portable Schnittstelle zu Echtzeitbetriebssystemen einschließlich RTAI und POSIX pthreads mit Echtzeit-Erweiterungen.

note: type: Plain text
en: (((RS274NGC))) The formal name for the language used by LinuxCNC part programs.
de: (((RS274NGC))) Der formale Name für die Sprache, die von LinuxCNC-Werkstück-Programmen verwendet wird.

note: type: Labeled list
en: Servo Motor
de: Servomotor

note: type: Plain text
en: (((servo motor))) Generally, any motor that is used with error-sensing feedback to correct the position of an actuator.  Also, a motor which is specially-designed to provide improved performance in such applications.
de: (((Servomotor))) Im Allgemeinen ein Motor, der über Fehlererkennung die Korrektur der Position eines Stellglieds vornimmt.  Auch ein Motor, der speziell für eine verbesserte Leistung in solchen Anwendungen ausgelegt ist.

note: type: Plain text
en: (((loop))) A control loop used to control position or velocity of an motor equipped with a feedback device.
de: (((loop))) Engl. für "Schleife", hier ein Regelkreis zur Steuerung der Position oder der Geschwindigkeit eines Motors, der mit einer Rückkopplungseinrichtung ausgestattet ist.

note: type: Labeled list
en: Signed Integer
de: Ganze Zahl mit Vorzeichen

note: type: Plain text
en: (((Signed Integer))) A whole number that can have a positive or negative sign. In HAL it is known as s32. (A signed 32-bit integer has a usable range of -2,147,483,647 to +2,147,483,647.)
de: (((Ganzzahl mit Vorzeichen))) Eine ganze Zahl, die ein positives oder negatives Vorzeichen haben kann. In HAL wird sie als s32 bezeichnet. (Eine 32-Bit-Ganzzahl mit Vorzeichen hat einen nutzbaren Bereich von -2.147.483.647 bis +2.147.483.647.)

note: type: Title ====
en: Spindle
de: Spindel

note: type: Plain text
en: (((spindle))) The part of a machine tool that spins to do the cutting. On a mill or drill, the spindle holds the cutting tool. On a lathe, the spindle holds the workpiece.
de: (((Spindel))) Der Teil einer Werkzeugmaschine, der sich dreht, um den Schnitt auszuführen. Bei einer Fräs- oder Bohrmaschine hält die Spindel das Schneidwerkzeug. Bei einer Drehmaschine hält die Spindel das Werkstück.

note: type: Title ===
en: Spindle Speed Override
de: Spindeldrehzahl-Anpassung

note: type: Plain text
en: A manual, operator controlled change in the rate at which the tool rotates while cutting. Often used to allow the operator to adjust for chatter caused by the cutter's teeth. Spindle Speed Override assumes that the LinuxCNC software has been configured to control spindle speed.
de: Eine manuelle, vom Bediener gesteuerte Änderung der Geschwindigkeit, mit der sich das Werkzeug während des Schneidens dreht. Oft verwendet, um dem Bediener zu ermöglichen, für Ratter verursacht durch die cutter's Zähne anzupassen. Spindeldrehzahl Override setzt voraus, dass die LinuxCNC-Software dafür konfiguriert wurde, die Spindeldrehzahl zu steuern.

note: type: Plain text
en: An LinuxCNC configuration wizard. It is able to handle many step-and-direction motion command based machines. It writes a full configuration after the user answers a few questions about the computer and machine that LinuxCNC is to run on.
de: Ein LinuxCNC Konfigurations-Assistent. Es ist in der Lage, viele Schritt-und-Richtung Bewegung Befehl basierte Maschinen zu behandeln. Er schreibt eine vollständige Konfiguration, nachdem der Benutzer ein paar Fragen über den Computer und die LinuxCNC-ausführenden Maschine beantwortet hat.

note: type: Labeled list
en: Stepper Motor
de: Schrittmotor

note: type: Plain text
en: (((stepper motor))) A type of motor that turns in fixed steps. By counting steps, it is possible to determine how far the motor has turned. If the load exceeds the torque capability of the motor, it will skip one or more steps, causing position errors.
de: (((Schrittmotor))) Eine Art von Motor, der sich in festen Schritten dreht. Durch Zählen der Schritte lässt sich feststellen, wie weit sich der Motor gedreht hat. Wenn die Last die Drehmomentkapazität des Motors übersteigt, überspringt er einen oder mehrere Schritte, was zu Positionsfehlern führt.

note: type: Plain text
en: (((TASK))) The module within LinuxCNC that coordinates the overall execution and interprets the part program.
de: (((TASK))) Das Modul innerhalb von LinuxCNC, das die gesamte Ausführung koordiniert und das Teileprogramm interpretiert.

note: type: Plain text
en: (((Tk))) A scripting language and graphical widget toolkit with which several of LinuxCNCs GUIs and selection wizards were written.
de: (((Tk))) Eine Skriptsprache und ein grafisches Widget-Toolkit, mit dem mehrere der LinuxCNC-GUIs und Auswahl-Assistenten geschrieben wurden.

note: type: Labeled list
en: Traverse Move
de: Traverse Bewegung

note: type: Plain text
en: (((Traverse Move))) A move in a straight line from the start point to the end point.
de: (((Traverse Bewegung))) Eine Bewegung in gerader Linie vom Startpunkt zum Endpunkt.

note: type: Content of: <html><body><table><tbody><tr><th>
en: Units
de: Einheiten

note: type: Plain text
en: (((units))) See "Machine Units", "Display Units", or "Program Units".
de: (((Einheiten)))) Siehe "Maschineneinheiten", "Anzeigeeinheiten", oder "Programmeinheiten".

note: type: Labeled list
en: Unsigned Integer
de: Ganzzahl ohne Vorzeichen

note: type: Plain text
en: (((Unsigned Integer))) A whole number that has no sign. In HAL it is known as u32. (An unsigned 32-bit integer has a usable range of zero to 4,294,967,296.)
de: (((Ganzzahl ohne Vorzeichen))) Eine ganze Zahl, die kein Vorzeichen hat. In HAL wird sie als u32 bezeichnet. (Eine vorzeichenlose 32-Bit-Ganzzahl hat einen nutzbaren Bereich von Null bis 4.294.967.296.)

note: type: Labeled list
en: World Coordinates
de: Weltkoordinaten

note: type: Plain text
en: (((world coordinates))) This is the absolute frame of reference. It gives coordinates in terms of a fixed reference frame that is attached to some point (generally the base) of the machine tool.
de: (((Weltkoordinaten))) Dies ist der absolute Bezugsrahmen. Es gibt die Koordinaten in Bezug auf einen festen Bezugsrahmen an, der an einem Punkt (im Allgemeinen der Basis) der Werkzeugmaschine befestigt ist.

note: type: Title =
en: Legal Section
de: Juristischer Abschnitt

note: type: Plain text
en: Translations of this file provided in the source tree are not legally binding.
de: Die Übersetzungen dieser Datei im Quellbaum sind nicht rechtsverbindlich.

note: type: Title ==
en: Copyright Terms
de: Copyright-Bedingungen

note: type: Plain text
en: Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license is included in the section entitled "GNU Free Documentation License".
de: Es wird die Erlaubnis erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.1 oder einer späteren Version, die von der Free Software Foundation veröffentlicht wurde, zu kopieren, zu verbreiten und/oder zu verändern; ohne unveränderliche Abschnitte, ohne Texte auf der Vorderseite und ohne Texte auf der Rückseite des Umschlags.  Eine Kopie der Lizenz ist in dem Abschnitt "GNU Free Documentation License" enthalten.

note: type: Plain text
en: Copyright (C) 2000 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
de: Copyright (C) 2000 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Es ist jedermann gestattet, wortwörtliche Kopien dieses Lizenzdokuments zu kopieren und zu verbreiten, aber es ist nicht erlaubt, es zu verändern.

note: type: Plain text
en: *0. PREAMBLE*
de: *0. PREAMBEL*

note: type: Plain text
en: The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
de: Der Zweck dieser Lizenz ist es, ein Handbuch, ein Lehrbuch oder ein anderes schriftliches Dokument "frei" im Sinne von Freiheit zu machen: jedem die effektive Freiheit zu sichern, es zu kopieren und weiterzugeben, mit oder ohne Modifikation, entweder kommerziell oder nicht-kommerziell. In zweiter Linie bewahrt diese Lizenz dem Autor und dem Herausgeber eine Möglichkeit, Anerkennung für ihre Arbeit zu erhalten, während sie nicht für die von anderen vorgenommenen Änderungen verantwortlich gemacht werden.

note: type: Plain text
en: This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
de: Diese Lizenz ist eine Art "Copyleft", was bedeutet, dass abgeleitete Werke des Dokuments selbst im gleichen Sinne frei sein müssen. Sie ergänzt die GNU General Public License, die eine Copyleft-Lizenz für freie Software ist.

note: type: Plain text
en: We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
de: Wir haben diese Lizenz entworfen, um sie für Handbücher für freie Software zu verwenden, weil freie Software freie Dokumentation braucht: ein freies Programm sollte mit Handbüchern geliefert werden, welche die gleichen Freiheiten bieten wie die Software. Aber diese Lizenz ist nicht auf Software-Handbücher beschränkt; sie kann für jedes textliche Werk verwendet werden, unabhängig vom Thema oder ob es als gedrucktes Buch veröffentlicht wird. Wir empfehlen diese Lizenz in erster Linie für Werke, deren Zweck die Anleitung oder das Nachschlagen ist.

note: type: Plain text
en: *1. APPLICABILITY AND DEFINITIONS*
de: *1. ANWENDBARKEIT UND DEFINITIONEN*

note: type: Plain text
en: This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you".
de: Diese Lizenz gilt für jedes Handbuch oder andere Werk, das einen Hinweis des Urheberrechtsinhabers enthält, der besagt, dass es unter den Bedingungen dieser Lizenz verbreitet werden darf. Das "Dokument", unten, bezieht sich auf ein solches Handbuch oder Werk. Jedes Mitglied der Öffentlichkeit ist ein Lizenznehmer und wird als "Sie" angesprochen.

note: type: Plain text
en: A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
de: Eine "modifizierte Version" des Dokuments ist jedes Werk, welches das Dokument oder einen Teil davon enthält, entweder wortwörtlich kopiert oder mit Änderungen und/oder in eine andere Sprache übersetzt.

note: type: Plain text
en: A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
de: Ein "sekundärer Abschnitt" ist ein benannter Anhang oder ein vorderer Abschnitt des Dokuments, der sich ausschließlich mit der Beziehung der Herausgeber oder Autoren des Dokuments zum Gesamtthema des Dokuments (oder zu verwandten Themen) befasst und nichts enthält, was direkt in dieses Gesamtthema fallen könnte. (Wenn das Dokument zum Beispiel teilweise ein Lehrbuch der Mathematik ist, darf ein sekundärer Abschnitt keine Mathematik erklären). Die Beziehung könnte eine Frage des historischen Zusammenhangs mit dem Thema oder mit verwandten Themen oder der rechtlichen, kommerziellen, philosophischen, ethischen oder politischen Position dazu sein.

note: type: Plain text
en: The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.
de: Die unveränderlichen Abschnitte" sind bestimmte sekundäre Abschnitte, deren Titel in der Mitteilung, die besagt, dass das Dokument unter dieser Lizenz freigegeben ist, als die der unveränderlichen Abschnitte bezeichnet werden.

note: type: Plain text
en: The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.
de: Die "Covertexte" sind bestimmte kurze Textpassagen, die als Front-Cover-Texte oder Back-Cover-Texte in dem Hinweis aufgeführt sind, der besagt, dass das Dokument unter dieser Lizenz freigegeben ist.

note: type: Plain text
en: A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque".
de: Eine "transparente" Kopie des Dokuments ist eine maschinenlesbare Kopie, die in einem Format dargestellt wird, dessen Spezifikation der Allgemeinheit zur Verfügung steht, dessen Inhalt direkt und unkompliziert mit allgemeinen Texteditoren oder (für Bilder, die aus Pixeln bestehen) mit allgemeinen Malprogrammen oder (für Zeichnungen) mit einem weit verbreiteten Zeichnungseditor betrachtet und bearbeitet werden kann, und die für die Eingabe in Textformatierer oder für die automatische Übersetzung in eine Vielzahl von Formaten geeignet ist, die für die Eingabe in Textformatierer geeignet sind. Eine Kopie, die in einem ansonsten transparenten Dateiformat erstellt wurde, dessen Markup so gestaltet wurde, dass eine nachträgliche Änderung durch Leser vereitelt oder erschwert wird, ist nicht transparent. Eine Kopie, die nicht "Transparent" ist, wird als "Opak" bezeichnet.

note: type: Plain text
en: Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.
de: Geeignete Formate für transparente Kopien sind z. B. ASCII ohne Markup, Texinfo-Eingabeformat, LaTeX-Eingabeformat, SGML oder XML mit einer öffentlich zugänglichen DTD und standardkonformes einfaches HTML, das für die Bearbeitung durch den Menschen ausgelegt ist. Zu den undurchsichtigen Formaten gehören PostScript, PDF, proprietäre Formate, die nur von proprietären Textverarbeitungsprogrammen gelesen und bearbeitet werden können, SGML oder XML, für die eine DTD und/oder die Verarbeitungswerkzeuge nicht allgemein verfügbar sind, und das maschinell erzeugte HTML, das von einigen Textverarbeitungsprogrammen nur zu Ausgabezwecken erzeugt wird.

note: type: Plain text
en: The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
de: Die "Titelseite" bedeutet bei einem gedruckten Buch die Titelseite selbst sowie die Folgeseiten, die benötigt werden, um das Material, das nach dieser Lizenz auf der Titelseite erscheinen soll, lesbar zu halten. Für Werke in Formaten, die kein Titelblatt als solches haben, bedeutet "Titelblatt" den Text in der Nähe des auffälligsten Erscheinens des Werktitels, der dem Beginn des Textes vorausgeht.

note: type: Plain text
en: *2. VERBATIM COPYING*
de: *2. WORTWÖRTLICHES KOPIEREN*

note: type: Plain text
en: You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
de: Sie dürfen das Dokument in jedem beliebigen Medium kopieren und verbreiten, sei es kommerziell oder nicht kommerziell, vorausgesetzt, dass diese Lizenz, die Urheberrechtsvermerke und der Lizenzvermerk, der besagt, dass diese Lizenz für das Dokument gilt, in allen Kopien wiedergegeben werden, und dass Sie keine weiteren Bedingungen zu denen dieser Lizenz hinzufügen. Sie dürfen keine technischen Maßnahmen anwenden, um das Lesen oder weitere Kopieren der von Ihnen erstellten oder verbreiteten Kopien zu behindern oder zu kontrollieren. Sie dürfen jedoch eine Vergütung im Austausch für Kopien annehmen. Wenn Sie eine ausreichend große Anzahl von Kopien verbreiten, müssen Sie auch die Bedingungen in Abschnitt 3 einhalten.

note: type: Plain text
en: You may also lend copies, under the same conditions stated above, and you may publicly display copies.
de: Sie können auch Kopien unter den oben genannten Bedingungen ausleihen und öffentlich ausstellen.

note: type: Plain text
en: *3. COPYING IN QUANTITY*
de: *3. MASSENHAFTES KOPIEREN*

note: type: Plain text
en: If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible.  You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
de: Wenn Sie mehr als 100 gedruckte Exemplare des Dokuments veröffentlichen und der Lizenzhinweis des Dokuments Umschlagtexte verlangt, müssen Sie die Exemplare in Umschläge einlegen, die deutlich und lesbar alle diese Umschlagtexte enthalten: Vorderseitentexte auf dem vorderen Umschlag und Rückseitentexte auf dem hinteren Umschlag. Auf beiden Umschlägen müssen Sie außerdem deutlich und leserlich als Verleger dieser Exemplare ausgewiesen sein. Der vordere Umschlag muss den vollständigen Titel enthalten, wobei alle Wörter des Titels gleichmäßig hervorgehoben und sichtbar sein müssen.  Sie können die Umschläge zusätzlich mit anderem Material versehen. Kopien mit Änderungen, die sich auf die Umschläge beschränken, können als wortgetreue Kopien behandelt werden, solange der Titel des Dokuments erhalten bleibt und diese Bedingungen erfüllt sind.

note: type: Plain text
en: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E.  Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section.
de: A. Verwenden Sie auf der Titelseite (und auf den Umschlägen, falls vorhanden) einen Titel, der sich von dem des Dokuments und von denen früherer Versionen unterscheidet (die, falls es welche gab, im Abschnitt "Historie" des Dokuments aufgeführt sein sollten). Sie können denselben Titel wie eine frühere Version verwenden, wenn der ursprüngliche Herausgeber dieser Version seine Zustimmung gibt. B. Führen Sie auf der Titelseite als Autoren eine oder mehrere Personen oder Organisationen auf, die für die Urheberschaft der Änderungen in der geänderten Version verantwortlich sind, zusammen mit mindestens fünf der Hauptautoren des Dokuments (alle seine Hauptautoren, wenn es weniger als fünf hat). C. Geben Sie auf der Titelseite den Namen des Herausgebers der geänderten Version als Herausgeber an. D. Behalten Sie alle Urheberrechtsvermerke des Dokuments bei. E. Fügen Sie einen angemessenen Urheberrechtsvermerk für Ihre Änderungen neben den anderen Urheberrechtsvermerken ein. F. Fügen Sie unmittelbar nach den Urheberrechtsvermerken einen Lizenzhinweis ein, welcher der Öffentlichkeit die Erlaubnis gibt, die modifizierte Version unter den Bedingungen dieser Lizenz zu benutzen, und zwar in der Form, die im Anhang unten gezeigt wird. G. Behalten Sie in diesem Lizenzhinweis die vollständigen Listen der unveränderlichen Abschnitte und der erforderlichen Umschlagtexte bei, die im Lizenzhinweis des Dokuments angegeben sind. H. Fügen Sie eine unveränderte Kopie dieser Lizenz bei. I. Behalten Sie den Abschnitt mit dem Titel Geschichte" und seinen Titel bei und fügen Sie ihm einen Punkt hinzu, der mindestens den Titel, das Jahr, die neuen Autoren und den Herausgeber der modifizierten Version angibt, wie auf der Titelseite angegeben. Wenn es keinen Abschnitt mit dem Titel "Geschichte" in dem Dokument gibt, erstellen Sie einen, der den Titel, das Jahr, die Autoren und den Herausgeber des Dokuments angibt, wie auf der Titelseite angegeben, und fügen Sie dann einen Punkt hinzu, der die geänderte Version beschreibt, wie im vorherigen Satz angegeben. J. Bewahren Sie den im Dokument angegebenen Netzwerkstandort, falls vorhanden, für den öffentlichen Zugang zu einer transparenten Kopie des Dokuments auf, und ebenso die im Dokument angegebenen Netzwerkstandorte für frühere Versionen, auf denen es basierte. Diese können im Abschnitt "Historie" abgelegt werden. Sie können eine Netzwerkadresse für ein Werk weglassen, das mindestens vier Jahre vor dem Dokument selbst veröffentlicht wurde, oder wenn der ursprüngliche Herausgeber der Version, auf die es sich bezieht, die Erlaubnis gibt. K. In jedem Abschnitt, der mit "Danksagungen" oder "Widmungen" betitelt ist, bewahren Sie den Titel des Abschnitts, und bewahren Sie in dem Abschnitt den gesamten Inhalt und Ton der Danksagungen und/oder Widmungen, die darin enthalten sind. L. Bewahren Sie alle unveränderlichen Abschnitte des Dokuments, unverändert in ihrem Text und in ihren Titeln. Abschnittsnummern oder das Äquivalent werden nicht als Teil der Abschnittstitel betrachtet. M. Streichen Sie jeden Abschnitt mit der Überschrift "Vermerke". Ein solcher Abschnitt darf nicht in die geänderte Fassung aufgenommen werden. N. Vorhandene Abschnitte dürfen nicht in "Vermerke" umbenannt werden oder im Titel mit einem unveränderlichen Abschnitt kollidieren.

note: type: Plain text
en: These are some basic Linux commands and techniques for new to Linux users. More complete information can be found on the web or by using the man pages.
de: Dies sind einige grundlegende Linux-Befehle und -Techniken für Linux-Neulinge. Ausführlichere Informationen finden Sie im Internet oder in den Man Pages.

note: type: Title ==
en: Automatic Login(((Automatic Login)))
de: Automatische Anmeldung(((Automatische Anmeldung)))

note: type: Plain text
en: Debian Stretch uses the Xfce desktop environment by default, with the lightDM display manager lightDM. To get automatic login with Stretch:
de: Debian Stretch verwendet standardmäßig die Xfce-Desktopumgebung mit dem lightDM-Displaymanager lightDM. Um eine automatische Anmeldung bei Debian Stretch zu erhalten:

note: type: Plain text
en: In a terminal, use the command:
de: Verwenden Sie in einem Terminal den folgenden Befehl:

note: type: Plain text
en: Make a note of the absolute path to the configuration file lightdm.conf.
de: Notieren Sie sich den absoluten Pfad zur Konfigurationsdatei lightdm.conf.

note: type: Plain text
en: Edit that file with a pure text editor (gedit, nano, etc), as root.
de: Bearbeiten Sie diese Datei mit einem reinen Texteditor (gedit, nano usw.) als root.

note: type: Plain text
en: Find and uncomment the lines:
de: Suchen Sie die folgenden Zeilen und heben Sie deren Auskommentierung auf:

note: type: Plain text
en: Save and reboot.
de: Speichern und neu starten.

note: type: Plain text
en: When you install LinuxCNC with the Ubuntu LiveCD the default is to have to log in each time you turn the computer on. To enable automatic login go to 'System > Administration > Login Window'. If it is a fresh install the Login Window might take a second or three to pop up. You will have to have your password that you used for the install to gain access to the Login Window Preferences window. In the Security tab check off Enable Automatic Login and pick a user name from the list (that would be you).
de: Wenn Sie LinuxCNC mit der Ubuntu LiveCD installieren, ist die Voreinstellung, dass Sie sich jedes Mal anmelden müssen, wenn Sie den Computer einschalten. Um die automatische Anmeldung zu aktivieren, gehen Sie zu 'System > Administration > Login Window'. Wenn es sich um eine Neuinstallation handelt, kann es eine oder drei Sekunden dauern, bis das Anmeldefenster erscheint. Sie benötigen Ihr Passwort, das Sie bei der Installation verwendet haben, um Zugang zum Fenster "Einstellungen für das Anmeldefenster" zu erhalten. Aktivieren Sie auf der Registerkarte Sicherheit das Kontrollkästchen Automatische Anmeldung aktivieren und wählen Sie einen Benutzernamen aus der Liste (das wären Sie).

note: type: Title ==
en: Automatic Startup
de: Automatisches Starten

note: type: Plain text
en: To have LinuxCNC start automatically with your config after turning on the computer go to 'System > Preferences > Sessions > Startup Applications', click Add. Browse to your config and select the .ini file. When the file picker dialog closes, add linuxcnc and a space in front of the path to your .ini file.
de: Um LinuxCNC automatisch mit Ihrer Konfiguration nach dem Einschalten des Computers starten zu lassen, gehen Sie zu 'System > Preferences > Sessions > Startup Applications', klicken Sie auf Add. Navigieren Sie zu Ihrer Konfiguration und wählen Sie die .ini-Datei aus. Wenn sich der Dateiauswahldialog schließt, fügen Sie linuxcnc und ein Leerzeichen vor dem Pfad zu Ihrer .ini-Datei hinzu.

note: type: Plain text
en: Example:
de: Beispiel:

note: type: Plain text
en: The documentation refers to your respective .ini file as INI-file.
de: Die Dokumentation bezieht sich auf Ihre jeweilige .ini-Datei als INI-Datei.

note: type: Plain text
en: Many things need to be done from the terminal like checking the kernel message buffer with 'dmesg'. Ubuntu and Linux Mint have a keyboard shortcut Ctrl + Alt + t.  Debian Stretch does not have any keyboard shortcuts defined.  It can be easily created with the 'Configuration Manager'.  Most modern file managers support the right key to open a terminal just make sure your right clicking on a blank area or a directory not a file name.  Most OS's have the terminal as a menu item, usually in Accessories.
de: Viele Dinge müssen vom Terminal aus erledigt werden, wie das Überprüfen des Kernel-Meldungspuffers mit 'dmesg'. Ubuntu und Linux Mint haben ein Tastaturkürzel Strg + Alt + t. Debian Stretch hat keine Tastaturkürzel definiert.  Sie können aber leicht mit dem 'Configuration Manager' erstellt werden.  Die meisten modernen Dateimanager unterstützen die rechte Taste zum Öffnen eines Terminals. Stellen Sie nur sicher, dass Sie mit der rechten Maustaste auf einen leeren Bereich oder ein Verzeichnis und nicht auf einen Dateinamen klicken.  Die meisten Betriebssysteme haben das Terminal als einen Menüpunkt, normalerweise unter Zubehör.

note: type: Plain text
en: A man page (short for manual page) is a form of software documentation usually found on a Unix or Unix-like operating system like Linux.
de: Eine Manpage (kurz für Manual Page) ist eine Form der Software-Dokumentation, die man normalerweise unter Unix oder Unix-ähnlichen Betriebssystemen wie Linux findet.

note: type: Plain text
en: To view a man page open up a terminal to find out something about the find command in the terminal window type:
de: Um eine Manpage anzuzeigen, öffnen Sie ein Terminal, um etwas über den Befehl find im Terminalfenster herauszufinden:

note: type: Plain text
en: Use the Page Up and Page Down keys to view the man page and the Q key to quit viewing.
de: Verwenden Sie die Tasten Bild auf und Bild ab, um die Manpage anzuzeigen, und die Taste Q, um die Anzeige zu beenden.

note: type: Plain text
en: Viewing the man page from the terminal may not get the expected man page.  For example if you type in man abs you will get the C abs not the LinuxCNC abs. It is best to view the LinuxCNC man pages in the HTML documents.
de: Wenn Sie die man-Seite vom Terminal aus aufrufen, erhalten Sie möglicherweise nicht die erwartete man-Seite.  Wenn Sie zum Beispiel man abs eingeben, erhalten Sie die C abs und nicht die LinuxCNC abs. Es ist am besten, die LinuxCNC man-Seiten in den HTML-Dokumenten anzusehen.

note: type: Title ==
en: List Modules
de: Module auflisten

note: type: Plain text
en: Sometimes when troubleshooting you need to get a list of modules that are loaded. In a terminal window type:
de: Bei der Fehlersuche müssen Sie manchmal eine Liste der geladenen Module erhalten. Geben Sie in ein Terminalfenster ein:

note: type: Plain text
en: If you want to send the output from lsmod to a text file in a terminal window type:
de: Wenn Sie die Ausgabe von lsmod in eine Textdatei in einem Terminalfenster senden wollen, geben Sie ein:

note: type: Plain text
en: The resulting text file will be located in the home directory if you did not change directories when you opened up the terminal window and it will be named mymod.txt or what ever you named it.
de: Die resultierende Textdatei befindet sich im Home-Verzeichnis, wenn Sie beim Öffnen des Terminal-Fensters das Verzeichnis nicht gewechselt haben, und trägt den Namen mymod.txt oder den von Ihnen gewählten Namen.

note: type: Title ==
en: Editing a Root File
de: Bearbeiten einer root-Datei

note: type: Plain text
en: When you open the file browser and you see the owner of the file is root you must do extra steps to edit that file. Editing some root files can have bad results. Be careful when editing root files. Generally, you can open and view most root files, but they will open in 'read only' mode.
de: Wenn Sie den Dateibrowser öffnen und sehen, dass der Eigentümer der Datei root ist, müssen Sie zusätzliche Schritte unternehmen, um diese Datei zu bearbeiten. Die Bearbeitung einiger root-Dateien kann zu schlechten Ergebnissen führen. Seien Sie vorsichtig, wenn Sie root-Dateien bearbeiten. Im Allgemeinen können Sie die meisten root-Dateien öffnen und anzeigen, aber sie bleiben schreibgeschützt.

note: type: Title ===
en: The Command Line Way
de: Der Weg über die Befehlszeile

note: type: Plain text
en: Open a terminal and type
de: Öffnen Sie ein Terminal und geben Sie ein

note: type: Plain text
en: Open the file with File > Open > Edit
de: Öffnen Sie die Datei mit Datei > Öffnen > Bearbeiten

note: type: Title ===
en: The GUI Way
de: Der GUI-Weg

note: type: Plain text
en: Right click on the desktop and select Create Launcher
de: Klicken Sie mit der rechten Maustaste auf den Desktop und wählen Sie Startprogramm erstellen (engl. Create Launcher)

note: type: Plain text
en: Type a name in like sudo edit
de: Geben Sie einen Namen ein wie sudo edit

note: type: Plain text
en: Type 'gksudo "gnome-open %u"' as the command and save the launcher to your desktop
de: Geben Sie 'gksudo "gnome-open %u"' als Befehl ein und speichern Sie den Launcher auf Ihrem Desktop

note: type: Plain text
en: Drag a file onto your launcher to open and edit
de: Ziehen Sie eine Datei auf Ihren Launcher, um sie zu öffnen und zu bearbeiten

note: type: Title ===
en: Root Access
de: Root-Zugriff

note: type: Plain text
en: In Ubuntu you can become root by typing in "sudo -i" in a terminal window then typing in your password. Be careful, because you can really foul things up as root if you don't know what you're doing.
de: In Ubuntu können Sie root werden, indem Sie "sudo -i" in einem Terminal-Fenster eingeben und dann Ihr Passwort eintippen. Seien Sie vorsichtig, denn als superuser (root) können Sie wirklich alles vermasseln, wenn Sie nicht wissen, was Sie tun.

note: type: Title ==
en: Terminal Commands
de: Terminal-Befehle

note: type: Title ===
en: Working Directory
de: Arbeitsverzeichnis

note: type: Plain text
en: To find out the path to the present working directory in the terminal window type:
de: Um den Pfad zum aktuellen Arbeitsverzeichnis herauszufinden, geben Sie im Terminalfenster ein:

note: type: Title ===
en: Changing Directories(((Changing Directories)))(((cd)))
de: Wechsel von Verzeichnissen(((Verzeichniswechsel)))(((cd)))

note: type: Plain text
en: To change the working directory to the one one level up, i.e., the parent directory, in the terminal window type:
de: Um das Arbeitsverzeichnis in das eine Ebene höher liegende Verzeichnis, d.h. das übergeordnete Verzeichnis, zu wechseln, geben Sie im Terminalfenster ein:

note: type: Plain text
en: To move up two levels in the terminal window type:
de: Um im Terminalfenster eine Ebene höher zu gehen, geben Sie ein:

note: type: Plain text
en: To move directly to your home directory, in the terrminal window use the cd command with no arguments:
de: Um direkt in Ihr Heimatverzeichnis zu wechseln, geben Sie im Terminalfenster den Befehl cd ohne Argumente ein:

note: type: Plain text
en: To move down to the linuxcnc/configs subdirectory in the terminal window type:
de: Um in das Unterverzeichnis linuxcnc/configs zu gelangen, geben Sie im Terminalfenster ein:

note: type: Title ===
en: Listing files in a directory
de: Auflisten von Dateien in einem Verzeichnis

note: type: Plain text
en: To view a list of all the files and subdirectories in the terminal window type:
de: Um eine Liste aller Dateien und Unterverzeichnisse im Terminalfenster anzuzeigen, geben Sie ein:

note: type: Title ===
en: Finding a File
de: Suchen einer Datei

note: type: Plain text
en: The find command can be a bit confusing to a new Linux user. The basic syntax is:
de: Der Befehl find kann für einen neuen Linux-Benutzer etwas verwirrend sein. Die grundlegende Syntax ist:

note: type: delimited block -
en: find starting-directory parameters actions
de: find starting-directory Parameter Aktionen

note: type: Plain text
en: For example to find all the .ini files in your linuxcnc directory you first need to use the pwd command to find out the directory.
de: Um zum Beispiel alle .ini-Dateien in Ihrem linuxcnc-Verzeichnis zu finden, müssen Sie zuerst den Befehl pwd verwenden, um das Verzeichnis herauszufinden.

note: type: Plain text
en: Open a new terminal window and type:
de: Öffnen Sie ein neues Terminal und geben Sie ein:

note: type: Plain text
en: And pwd might return the following result:
de: Und pwd könnte das folgende Ergebnis liefern:

note: type: Plain text
en: With this information put the command together like this:
de: Mit diesen Informationen setzen Sie den Befehl wie folgt zusammen:

note: type: Plain text
en: The -name is the name of the file your looking for and the -print tells it to print out the result to the terminal window.  The \*.ini tells find to return all files that have the .ini extension.  The backslash is needed to escape the shell meta-characters. See the find man page for more information on find.
de: Die Option -name ist der Name der gesuchten Datei, und die Option -print bewirkt, dass das Ergebnis im Terminalfenster ausgegeben wird.  Mit \*.ini wird find angewiesen, alle Dateien mit der Erweiterung .ini auszugeben.  Der Backslash wird benötigt, um den "*" als nicht als Shell-Meta-Zeichen zu interpretieren (engl. Flucht vor Interpretation: "escape"). Weitere Informationen zu find finden Sie in der Manpage find.

note: type: Title ===
en: Searching for Text
de: Suche nach Text

note: type: Plain text
en: This will find all the files that contain the 'text to search for' in the current directory and all the subdirectories below it, while ignoring the case. The -i is for ignore case and the -r is for recursive (include all subdirectories in the search). The -l option will return a list of the file names, if you leave the -l off you will also get the text where each occurrence of the "text to search for" is found.  The * is a wild card for search all files. See the grep man page for more information.
de: Dies findet alle Dateien, die den 'zu suchenden Text' enthalten, im aktuellen Verzeichnis und allen Unterverzeichnissen darunter, wobei die Groß- und Kleinschreibung ignoriert wird. Die Option -i steht für Ignorieren der Groß- und Kleinschreibung und die Option -r für Rekursiv (schließt alle Unterverzeichnisse in die Suche ein). Die Option -l gibt eine Liste der Dateinamen zurück, wenn Sie die Option -l auslassen, erhalten Sie auch den Text, in dem jedes Vorkommen des zu suchenden Textes gefunden wird.  Der * ist ein Platzhalter für die Suche in allen Dateien. Weitere Informationen finden Sie in der Manpage zu grep.

note: type: Title ===
en: Diagnostic Messages
de: Diagnosemeldungen

note: type: Plain text
en: To view the diagnostic messages use "dmesg" from the command window. To save the diagnostic messages to a file use the redirection operator '>', like this:
de: Um die Diagnosemeldungen anzuzeigen, verwenden Sie "dmesg" im Befehlsfenster. Um die Diagnosemeldungen in einer Datei zu speichern, verwenden Sie den Umleitungsoperator '>', etwa so:

note: type: Plain text
en: The contents of this file can be copied and pasted on line to share with people trying to help you diagnose your problem.
de: Der Inhalt dieser Datei kann kopiert und online eingefügt werden, um ihn mit Personen zu teilen, die Ihnen bei der Diagnose Ihres Problems helfen.

note: type: Plain text
en: To clear the message buffer type this:
de: Um den Nachrichtenpuffer zu löschen, geben Sie Folgendes ein:

note: type: Plain text
en: This can be helpful to do just before launching LinuxCNC, so that there will only be a record of information related to the current launch of LinuxCNC.
de: Dies kann kurz vor dem Start von LinuxCNC hilfreich sein, so dass es nur eine Aufzeichnung von Informationen im Zusammenhang mit dem aktuellen Start von LinuxCNC gibt.

note: type: Plain text
en: To find the built in parallel port address use grep to filter the information out of dmesg.
de: Um die eingebaute Parallelport-Adresse zu finden, verwenden Sie grep, um die Informationen aus dmesg herauszufiltern.

note: type: Plain text
en: After boot up open a terminal and type:
de: Öffnen Sie nach dem Hochfahren ein Terminal und geben Sie ein:

note: type: Title ==
en: Convenience Items
de: Bequemlichkeiten

note: type: Plain text
en: If you want to add a terminal launcher to the panel bar on top of the screen you typically can right click on the panel at the top of the screen and select "Add to Panel". Select Custom Application Launcher and Add. Give it a name and put gnome-terminal in the command box.
de: Wenn Sie der Bedienfeldleiste am oberen Rand des Bildschirms einen Terminal-Launcher hinzufügen möchten, können Sie normalerweise mit der rechten Maustaste auf das Bedienfeld am oberen Rand des Bildschirms klicken und "Zum Bedienfeld hinzufügen" auswählen. Wählen Sie Custom Application Launcher und Add. Geben Sie der Anwendung einen Namen und geben Sie gnome-terminal in das Befehlsfeld ein.

note: type: Title ==
en: Hardware Problems
de: Hardware-Probleme

note: type: Title ===
en: Hardware Info
de: Hardware-Informationen

note: type: Plain text
en: To find out what hardware is connected to your motherboard in a terminal window type:
de: Um herauszufinden, welche Hardware an Ihre Hauptplatine angeschlossen ist, geben Sie in einem Terminalfenster ein:

note: type: Title ===
en: Monitor Resolution
de: Monitor-Auflösung

note: type: Plain text
en: During installation Ubuntu attempts to detect the monitor settings. If this fails you are left with a generic monitor with a maximum resolution of 800x600.
de: Während der Installation versucht Ubuntu, die Monitoreinstellungen zu erkennen. Wenn dies fehlschlägt, wird ein allgemeiner Monitor mit einer maximalen Auflösung von 800x600 verwendet.

note: type: Plain text
en: Instructions for fixing this are located here:
de: Eine Anleitung zur Behebung dieses Problems finden Sie hier:

note: type: Title ==
en: Paths
de: Pfade

note: type: Block title
en: Relative Paths
de: Relative Pfade

note: type: Plain text
en: Relative paths are based on the startup directory which is the directory containing the INI-file.  Using relative paths can facilitate relocation of configurations but requires a good understanding of linux path specifiers.
de: Relative Pfade basieren auf dem Startverzeichnis, d.h. das Verzeichnis mit der INI-Datei.  Die Verwendung relativer Pfade kann das Verschieben von Konfigurationen erleichtern, erfordert aber ein gutes Verständnis der Linux-Pfadangaben.

note: type: delimited block .
en: ./f0        is the same as f0, e.g., a file named f0 in the startup directory
    ../f1       refers to a file f1 in the parent directory
    ../../f2    refers to a file f2 in the parent of the parent directory
    ../../../f3 etc.
de: ./f0 ist dasselbe wie f0, z. B. eine Datei namens f0 im Startverzeichnis
    ../f1 bezieht sich auf eine Datei f1 im übergeordneten Verzeichnis
    ../../f2 bezieht sich auf eine Datei f2 im übergeordneten Verzeichnis des übergeordneten Verzeichnisses
    ../../../f3 usw.

note: type: Plain text
en: This handbook is a work in progress. If you are able to help with writing, editing, or graphic preparation please contact any member of the writing team or join and send an email to emc-users@lists.sourceforge.net.
de: Dieses Handbuch ist noch in Arbeit. Wenn Sie beim Schreiben, Redigieren oder bei der grafischen Aufbereitung helfen können, wenden Sie sich bitte an ein Mitglied des Redaktionsteams oder schreiben Sie eine E-Mail (bevorzugt auf Englisch, aber nicht zwingend, es findet sich jemand) an emc-users@lists.sourceforge.net.

note: type: Plain text
en: If you do not find the license you may order a copy from:
de: Wenn Sie die Lizenz nicht finden, können Sie eine Kopie bei uns bestellen:

note: type: Plain text
en: (The English language version is authoritative)
de: (Maßgeblich ist die englische Sprachfassung, deswegen wurde sie hier nicht übersetzt, im Fall von Verständnisproblemen siehe zur Anregung http://www.gnu.de/documents/gpl-3.0.de.html und lassen Sie sich beraten )

note: type: Plain text
en: LINUX® is the registered trademark of Linus Torvalds in the U.S. and other countries.  The registered trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis.
de: LINUX® ist das eingetragene Warenzeichen von Linus Torvalds in den USA und anderen Ländern.  Die eingetragene Marke Linux® wird im Rahmen einer Unterlizenz von LMI, dem exklusiven Lizenznehmer von Linus Torvalds, dem Eigentümer der Marke auf weltweiter Basis, verwendet.

note: type: Plain text
en: The LinuxCNC project is not affiliated with Debian®.  _Debian_ is a registered trademark owned by Software in the Public Interest, Inc.
de: Das LinuxCNC-Projekt ist nicht mit Debian® verbunden.  Debian_ ist ein eingetragenes Warenzeichen im Besitz von Software in the Public Interest, Inc.

note: type: Plain text
en: The LinuxCNC project is not affiliated with UBUNTU®.  _UBUNTU_ is a registered trademark owned by Canonical Limited.
de: Das LinuxCNC-Projekt ist nicht mit UBUNTU® verbunden.  UBUNTU ist eine eingetragene Marke im Besitz von Canonical Limited.

note: type: Title =
en: Core Components(((Core components)))
de: Kernkomponenten(((Kernkomponenten)))

note: type: Plain text
en: See also the man pages 'motion(9)'.
de: Siehe auch die Man Pages zu 'motion(9)'.

note: type: Title ==
en: Motion (((Motion)))
de: Motion(((Motion)))

note: type: Plain text
en: These pins and parameters are created by the realtime 'motmod' module.
de: Diese Pins und Parameter werden durch das Echtzeitmodul 'motmod' erzeugt.

note: type: Plain text
en: This module provides a HAL interface for LinuxCNC's motion planner.
de: Dieses Modul bietet eine HAL-Schnittstelle für den Bewegungsplaner (engl. motion planner) von LinuxCNC.

note: type: Plain text
en: Basically motmod takes in a list of waypoints and generates a nice blended and constraint-limited stream of joint positions to be fed to the motor drives.
de: Im Grunde genommen nimmt motmod eine Liste von Wegpunkten auf und erzeugt daraus einen schönen ineinander übergehenden und durch Einschränkungen begrenzten Strom von Gelenkpositionen, der an die Motorantriebe weitergeleitet wird.

note: type: Plain text
en: Optionally the number of Digital I/O is set with 'num_dio'.  The number of Analog I/O is set with 'num_aio', default is 4 each.  The number of Spindles is set with 'num_spindles', default is 1.
de: Optional wird die Anzahl der digitalen E/A (engl. I/O) mit 'num_dio' eingestellt.  Die Anzahl der analogen E/A wird mit 'num_aio' festgelegt, Standard ist jeweils 4.  Die Anzahl der Spindeln wird mit 'num_spindles' eingestellt, Voreinstellung ist 1.

note: type: Plain text
en: Pin and parameter names starting with 'axis.__L__' and 'joint.__N__' are read and updated by the motion-controller function.
de: Pin- und Parameternamen, die mit 'axis.__L__' und 'joint.__N__' beginnen, werden von der Motion-Controller-Funktion gelesen und aktualisiert.

note: type: Plain text
en: Motion is loaded with the motmod command. A kins should be loaded before motion.
de: Motion wird mit dem Befehl motmod geladen. Ein kins sollte vor motion geladen werden.

note: type: Plain text
en: 'base_period_nsec = 50000' - the 'Base' task period in nanoseconds.  This is the fastest thread in the machine.
de: 'base_period_nsec = 50000' - die 'Basis'-Task Period in Nanosekunden.  Dies ist der schnellste Thread der Maschine.

note: type: Plain text
en: On servo-based systems, there is generally no reason for 'base_period_nsec' to be smaller than 'servo_period_nsec'.  On machines with software step generation, the 'base_period_nsec' determines the maximum number of steps per second. In the absence of long step length and step space requirements, the absolute maximum step rate is one step per 'base_period_nsec'. Thus, the 'base_period_nsec' shown above gives an absolute maximum step rate of 20,000 steps per second. 50,000 ns (50 us) is a fairly conservative value.  The smallest usable value is related to the Latency Test result, the necessary step length, and the processor speed.  Choosing a 'base_period_nsec' that is too low can lead to the "Unexpected real time delay" message, lockups, or spontaneous reboots.
de: Bei Servo-basierten Systemen gibt es im Allgemeinen keinen Grund dafür, dass 'base_period_nsec' kleiner ist als 'servo_period_nsec'.  Bei Maschinen mit Software-Schrittgenerierung bestimmt die 'base_period_nsec' die maximale Anzahl der Schritte pro Sekunde. Wenn keine großen Schrittlängen und Schrittabstände erforderlich sind, beträgt die absolut maximale Schrittrate einen Schritt pro 'base_period_nsec'. Somit ergibt die oben gezeigte 'base_period_nsec' eine absolute maximale Schrittrate von 20.000 Schritten pro Sekunde. 50.000 ns (50 us) ist ein recht konservativer Wert.  Der kleinste brauchbare Wert hängt mit dem Ergebnis des Latenztests, der erforderlichen Schrittlänge und der Prozessorgeschwindigkeit zusammen.  Die Wahl einer zu niedrigen 'base_period_nsec' kann zu der Meldung "Unerwartete Echtzeitverzögerung", zu Blockierungen oder spontanen Reboots führen.

note: type: Plain text
en: 'servo_period_nsec = 1000000' - This is the 'Servo' task period in nanoseconds. This value will be rounded to an integer multiple of 'base_period_nsec'. This period is used even on systems based on stepper motors.
de: 'servo_period_nsec = 1000000' - Dies ist die 'Servo' task period in Nanosekunden. Dieser Wert wird auf ein ganzzahliges Vielfaches von 'base_period_nsec' gerundet. Diese Periode wird auch bei Systemen verwendet, die auf Schrittmotoren basieren.

note: type: Plain text
en: This is the rate at which new motor positions are computed, following error is checked, PID output values are updated, and so on.  Most systems will not need to change this value. It is the update rate of the low level motion planner.
de: Dies ist die Rate, mit der neue Motorpositionen berechnet werden, Schleppfehler überprüft werden, PID-Ausgangswerte aktualisiert werden und so weiter.  Die meisten Systeme werden diesen Wert nicht ändern müssen. Es ist die Aktualisierungsrate des Low-Level-Bewegungsplaners.

note: type: Plain text
en: 'traj_period_nsec = 100000' - This is the 'Trajectory Planner' task period in nanoseconds. This value will be rounded to an integer multiple of 'servo_period_nsec'. Except for machines with unusual kinematics (e.g., hexapods) there is no reason to make this value larger than 'servo_period_nsec'.
de: 'traj_period_nsec = 100000' - Dies ist die 'Trajectory Planner' Aufgabenperiode in Nanosekunden. Dieser Wert wird auf ein ganzzahliges Vielfaches von 'servo_period_nsec' gerundet. Außer bei Maschinen mit ungewöhnlicher Kinematik (z.B. Hexapods) gibt es keinen Grund, diesen Wert größer als 'servo_period_nsec' zu machen.

note: type: SH
en: Options
de: Optionen

note: type: Plain text
en: If the number of digital I/O needed is more than the default of 4 you can add up to 64 digital I/O by using the num_dio option when loading 'motmod'.
de: Wenn Sie mehr als die standardmäßige Anzahl von 4 digitalen E/A benötigen, können Sie bis zu 64 digitale E/A hinzufügen, indem Sie die Option num_dio beim Laden von 'motmod' verwenden.

note: type: Plain text
en: If the number of analog I/O needed is more than the default of 4 you can add up to 16 analog I/O by using the num_aio option when loading 'motmod'.
de: Wenn mehr als die voreingestellte Anzahl von 4 analogen E/A benötigt wird, können Sie bis zu 16 analoge E/A hinzufügen, indem Sie die Option num_aio beim Laden von 'motmod' verwenden.

note: type: Plain text
en: The unlock_joints_mask parameter is used to create pins for a joint used as a locking indexer (typically a rotary).  The mask bits select the joint(s).  The LSB of the mask selects joint 0.  Example:
de: Der Parameter unlock_joints_mask wird verwendet, um Pins für ein Gelenk zu erzeugen, das als verriegelnder Indexer verwendet wird (normalerweise ein Drehgelenk).  Die Maskenbits wählen das/die Gelenk(e) aus.  Das LSB der Maske wählt das Gelenk 0. Beispiel:

note: type: delimited block -
en: unlock_joints_mask=0x38 selects joints 3,4,5
de: unlock_joints_mask=0x38 wählt die Gelenke 3,4,5 aus

note: type: Title ===
en: Pins(((motion (HAL pins))))
de: Pins(((Bewegung (HAL-Pins))))

note: type: Plain text
en: These pins, parameters, and functions are created by the realtime 'motmod' module.
de: Diese Pins, Parameter und Funktionen werden durch das Echtzeitmodul 'motmod' angelegt.

note: type: Plain text
en: 'motion.adaptive-feed' - (float, in) When adaptive feed is enabled with 'M52 P1' , the commanded velocity is multiplied by this value. This effect is multiplicative with the NML-level feed override value and 'motion.feed-hold'. As of version 2.9 of LinuxCNC it is possible to use a negative adaptive feed value to run the G-code path in reverse.
de: 'motion.adaptive-feed' - (float, in) Wenn der adaptive Vorschub mit 'M52 P1' aktiviert ist, wird die befohlene Geschwindigkeit mit diesem Wert multipliziert. Dieser Effekt ist multiplikativ mit dem Vorschub-Override-Wert auf NML-Ebene und 'motion.feed-hold'. Ab der Version 2.9 von LinuxCNC ist es möglich, einen negativen adaptiven Vorschubwert zu verwenden, für eine G-Code-Bahn in umgekehrter Richtung.

note: type: Plain text
en: 'motion.analog-in-00' - (float, in) These pins (00, 01, 02, 03 or more if configured) are controlled by M66.
de: 'motion.analog-in-00' - (float, in) Diese Pins (00, 01, 02, 03 oder mehr, falls konfiguriert) werden von M66 gesteuert.

note: type: Plain text
en: 'motion.analog-out-00' - (float, out) These pins (00, 01, 02, 03 or more if configured) are controlled by M67 or M68.
de: 'motion.analog-out-00' - (float, out) Diese Pins (00, 01, 02, 03 oder mehr, falls konfiguriert) werden von M67 oder M68 gesteuert.

note: type: Plain text
en: 'motion.coord-error' - (bit, out) TRUE when motion has encountered an error, such as exceeding a soft limit
de: 'motion.coord-error' - (bit, out) TRUE, wenn bei der Bewegung ein Fehler aufgetreten ist, z. B. das Überschreiten eines Softlimit (einer "weichen Grenze")

note: type: Plain text
en: 'motion.coord-mode' - (bit, out) TRUE when motion is in 'coordinated mode', as opposed to 'teleop mode'
de: 'motion.coord-mode' - (bit, out) TRUE, wenn die Bewegung im 'koordinierten Modus' ist, im Gegensatz zum 'Teleop-Modus'

note: type: Plain text
en: 'motion.current-vel' - (float, out) The current tool velocity in user units per second.
de: 'motion.current-vel' – (float, out) Die aktuelle Werkzeuggeschwindigkeit in Benutzereinheiten pro Sekunde.

note: type: Plain text
en: 'motion.digital-in-00' - (bit, in) These pins (00, 01, 02, 03 or more if configured) are controlled by M62-65.
de: 'motion.digital-in-00' - (bit, in) Diese Pins (00, 01, 02, 03 oder mehr, falls konfiguriert) werden von M62-65 gesteuert.

note: type: Plain text
en: 'motion.digital-out-00' - (bit, out) These pins (00, 01, 02, 03 or more if configured) are controlled by the 'M62-65'.
de: 'motion.digital-out-00' - (bit, out) Diese Pins (00, 01, 02, 03 oder mehr, falls konfiguriert) werden von der 'M62-65' gesteuert.

note: type: Plain text
en: 'motion.distance-to-go' - (float,out) The distance remaining in the current move.
de: 'motion.distance-to-go' - (float,out) Die verbleibende Distanz der aktuellen Bewegung.

note: type: Plain text
en: 'motion.enable' - (bit, in) If this bit is driven FALSE, motion stops, the machine is placed in the 'machine off' state, and a message is displayed for the operator. For normal motion, drive this bit TRUE.
de: 'motion.enable' - (bit, in) Wenn dieses Bit auf FALSE gesetzt wird, stoppt die Bewegung, die Maschine wird in den 'machine off' Zustand versetzt und eine Meldung für den Bediener wird angezeigt. Für eine normale Bewegung muss dieses Bit auf TRUE gesetzt werden.

note: type: Plain text
en: 'motion.feed-hold' - (bit, in) When Feed Stop Control is enabled with 'M53 P1', and this bit is TRUE, the feed rate is set to 0.
de: 'motion.feed-hold' - (Bit, in) Wenn die Vorschub-Stopp-Steuerung mit 'M53 P1' aktiviert ist und dieses Bit TRUE ist, wird die Vorschubgeschwindigkeit auf 0 gesetzt.

note: type: Plain text
en: 'motion.feed-inhibit' - (bit, in) When this bit is TRUE, the feed rate is set to 0.  This will be delayed during spindle synch moves till the end of the move.
de: 'motion.feed-inhibit' - (bit, in) Wenn dieses Bit TRUE ist, wird der Vorschub auf 0 gesetzt. Dies wird bei Spindelsynchronisationsbewegungen bis zum Ende der Bewegung verzögert.

note: type: Plain text
en: 'motion.in-position' - (bit, out) TRUE if the machine is in position.
de: 'motion.in-position' - (bit, out) TRUE wenn die Maschine in Position ist.

note: type: Plain text
en: 'motion.motion-enabled' - (bit, out) TRUE when in 'machine on' state.
de: 'motion.motion-enabled' - (bit, out) TRUE wenn im 'machine on' Zustand.

note: type: Plain text
en: 'motion.motion-type' - (s32, out) These values are from src/emc/nml_intf/motion_types.h
de: 'motion.motion-type' - (s32, out) Diese Werte sind aus src/emc/nml_intf/motion_types.h

note: type: TP
en: 0: Idle (no motion)
de: 0: Leerlauf (engl. "idle", d.h. keine Bewegung)

note: type: Plain text
en: 1: Traverse
de: 1: Traverse (direkte Bewegung)

note: type: Plain text
en: 2: Linear feed
de: 2: Linearer Vorschub

note: type: Plain text
en: 3: Arc feed
de: 3: Kreisbogenvorschub

note: type: Plain text
en: 4: Tool change
de: 4: Werkzeugwechsel

note: type: Plain text
en: 5: Probing
de: 5: Antasten

note: type: Plain text
en: 6: Rotary axis indexing
de: 6: Indexierung der Drehachse

note: type: Plain text
en: 'motion.on-soft-limit' - (bit, out) TRUE when the machine is on a soft limit.
de: 'motion.on-soft-limit' - (bit, out) TRUE, wenn sich die Maschine an einem Softlimit (buchstäblich auch: einer weichen Grenze) befindet.

note: type: Plain text
en: 'motion.probe-input' - (bit, in)  'G38.n' uses the value on this pin to determine when the probe has made contact.  TRUE for probe contact closed (touching), FALSE for probe contact open.
de: 'motion.probe-input' - (bit, in) 'G38.n' verwendet den Wert an diesem Pin, um den Moment zu bestimmen, in dem der Taster Kontakt hergestellt hat.  TRUE für Tasterkontakt geschlossen (berührend), FALSE für Tasterkontakt offen.

note: type: Plain text
en: 'motion.program-line' - (s32, out) The current program line while executing.  Zero if not running or between lines while single stepping.
de: 'motion.program-line' - (s32, out) Die aktuelle Programmzeile während der Ausführung.  Null, wenn das Programm nicht läuft oder zwischen den Zeilen bei Einzelschritten.

note: type: Plain text
en: 'motion.requested-vel' - (float, out)  The current requested velocity in user units per second.  This value is the F-word setting from the G-code file, possibly reduced to accommodate machine velocity and acceleration limits.  The value on this pin does not reflect the feed override or any other adjustments.
de: 'motion.requested-vel' - (float, out) Die aktuell geforderte Geschwindigkeit in Benutzereinheiten pro Sekunde.  Dieser Wert ist die F-Wort-Einstellung aus der G-Code-Datei, möglicherweise reduziert, um die Geschwindigkeits- und Beschleunigungsgrenzen der Maschine zu berücksichtigen.  Der Wert an diesem Pin spiegelt nicht den Vorschub-Override oder andere Anpassungen wider.

note: type: Plain text
en: 'motion.teleop-mode' - (bit, out) TRUE when motion is in 'teleop mode', as opposed to 'coordinated mode'
de: 'motion.teleop-mode' - (bit, out) TRUE wenn die Bewegung im 'teleop mode' (Fernsteuerungs-Modus) ist, im Gegensatz zum 'coordinated mode' (Koordinaten-Modus)

note: type: Plain text
en: 'motion.tooloffset.x ... motion.tooloffset.w' - (float, out, one per axis) shows the tool offset in effect; it could come from the tool table ('G43' active), or it could come from the G-code ('G43.1' active)
de: 'motion.tooloffset.x ... motion.tooloffset.w' - (float, out, einer pro Achse) zeigt den aktuellen Werkzeugversatz an; er kann aus der Werkzeugtabelle ('G43' aktiv) oder aus dem G-Code ('G43.1' aktiv) stammen

note: type: Plain text
en: 'motion.probe-input' - (bit, in) 'G38.n' uses the value on this pin to determine when the probe has made contact.  TRUE for probe contact closed (touching), FALSE for probe contact open.
de: 'motion.probe-input' - (bit, in) 'G38.n' verwendet den Wert an diesem Pin, um den Moment zu bestimmen, in dem der Taster Kontakt hergestellt hat.  TRUE für Tasterkontakt geschlossen (berührend), FALSE für Tasterkontakt offen.

note: type: Plain text
en: 'motion.program-line' - (s32, out) The current program line while executing. Zero if not running or between lines while single stepping.
de: 'motion.program-line' - (s32, out) Die aktuelle Programmzeile während der Ausführung. Null, wenn das Programm nicht läuft oder zwischen den Zeilen bei Einzelschritten.

note: type: Plain text
en: 'motion.requested-vel' - (float, out) The current requested velocity in user units per second.  This value is the F-word setting from the G-code file, possibly reduced to accommodate machine velocity and acceleration limits. The value on this pin does not reflect the feed override or any other adjustments.
de: 'motion.requested-vel' - (float, out) Die aktuell geforderte Geschwindigkeit in Benutzereinheiten pro Sekunde.  Dieser Wert ist die F-Wort-Einstellung aus der G-Code-Datei, möglicherweise reduziert, um die Geschwindigkeits- und Beschleunigungsgrenzen der Maschine zu berücksichtigen. Der Wert an diesem Pin spiegelt nicht den Vorschub-Override oder andere Anpassungen wider.

note: type: Content of: <html><body><table><tbody><tr><th>
en: Parameters
de: Parameter

note: type: Plain text
en: Many of these parameters serve as debugging aids, and are subject to change or removal at any time.
de: Viele dieser Parameter dienen als Hilfsmittel zur Fehlersuche und können jederzeit geändert oder entfernt werden.

note: type: Plain text
en: 'motion.debug-bit-0' - (bit, RO) This is used for debugging purposes.
de: 'motion.debug-bit-0' - (bit, RO) Dies wird zur Fehlersuche verwendet.

note: type: Plain text
en: 'motion.debug-bit-1' - (bit, RO) This is used for debugging purposes.
de: 'motion.debug-bit-1' - (bit, RO) Dies wird zur Fehlersuche verwendet.

note: type: Plain text
en: 'motion.debug-float-0' - (float, RO) This is used for debugging purposes.
de: 'motion.debug-float-0' - (float, RO) Dies wird zur Fehlersuche verwendet.

note: type: Plain text
en: 'motion.debug-float-1' - (float, RO) This is used for debugging purposes.
de: 'motion.debug-float-1' - (float, RO) Dies wird zur Fehlersuche verwendet.

note: type: Plain text
en: 'motion.debug-float-2' - (float, RO) This is used for debugging purposes.
de: 'motion.debug-float-2' - (float, RO) Dies wird zur Fehlersuche verwendet.

note: type: Plain text
en: 'motion.debug-float-3' - (float, RO) This is used for debugging purposes.
de: 'motion.debug-float-3' - (float, RO) Dies wird zur Fehlersuche verwendet.

note: type: Plain text
en: 'motion.debug-s32-0' - (s32, RO) This is used for debugging purposes.
de: 'motion.debug-s32-0' - (s32, RO) Dies wird zur Fehlersuche verwendet.

note: type: Plain text
en: 'motion.debug-s32-1' - (s32, RO) This is used for debugging purposes.
de: 'motion.debug-s32-1' - (s32, RO) Dies wird zur Fehlersuche verwendet.

note: type: Plain text
en: 'motion.servo.last-period' - (u32, RO) The number of CPU cycles between invocations of the servo thread. Typically, this number divided by the CPU speed gives the time in seconds, and can be used to determine whether the realtime motion controller is meeting its timing constraints
de: 'motion.servo.last-period' - (u32, RO) Die Anzahl der CPU-Zyklen zwischen den Aufrufen des Servo-Threads. Normalerweise ergibt diese Zahl geteilt durch die CPU-Geschwindigkeit die Zeit in Sekunden und kann verwendet werden, um festzustellen, ob der Echtzeit-Bewegungsregler seine Zeitvorgaben einhält

note: type: Plain text
en: Generally, these functions are both added to the servo-thread in the order shown.
de: Im Allgemeinen werden diese beiden Funktionen in der angegebenen Reihenfolge zum Servo-Thread hinzugefügt.

note: type: Plain text
en: 'motion-command-handler' - Processes motion commands coming from user space
de: 'motion-command-handler' - Verarbeitet Bewegungsbefehle aus dem Benutzerbereich

note: type: Plain text
en: 'motion-controller' - Runs the LinuxCNC motion controller
de: 'motion-controller' - Führt die LinuxCNC Bewegungssteuerung aus

note: type: Plain text
en: LinuxCNC can control upto eight spindles.  Motion will produce the following pins: The __N__ (integer between 0 and 7) substitutes the spindle number.
de: LinuxCNC kann bis zu acht Spindeln steuern.  Motion wird die folgenden Pins anlegen: Das __N__ (ganze Zahl zwischen 0 und 7) entspricht der Spindel-Nummer.

note: type: Title ===
en: Pins(((spindle (HAL pins))))
de: Pins(((Spindel (HAL-Pins))))

note: type: Plain text
en: 'spindle.__N__.at-speed' - (bit, in)  Motion will pause until this pin is TRUE, under the following conditions:
de: 'spindle.__N__.at-speed' - (bit, in) Die Bewegung wird unter den folgenden Bedingungen angehalten, bis dieser Pin TRUE ist:

note: type: Plain text
en: before the first feed move after each spindle start or speed change;
de: vor der ersten Vorschubbewegung nach jedem Spindelstart oder Drehzahlwechsel;

note: type: Plain text
en: before the start of every chain of spindle-synchronized moves;
de: vor dem Beginn jeder Kette von spindelsynchronisierten Bewegungen;

note: type: Plain text
en: and if in CSS mode, at every rapid to feed transition.  This input can be used to ensure that the spindle is up to speed before starting a cut, or that a lathe spindle in CSS mode has slowed down after a large to small facing pass before starting the next pass at the large diameter.  Many VFDs have an 'at speed' output.  Otherwise, it is easy to generate this signal with the 'HAL near' component, by comparing requested and actual spindle speeds.
de: und im CSS-Modus bei jedem Übergang von Eilgang zu Vorschub.  Dieser Eingang kann verwendet werden, um sicherzustellen, dass die Spindel vor dem Beginn eines Schnittes die volle Drehzahl erreicht hat oder dass eine Drehmaschinenspindel im CSS-Modus nach einem Durchgang vom großen zum kleinen Plandurchmesser abgebremst hat, bevor der nächste Durchgang am großen Durchmesser beginnt.  Viele VFDs haben einen 'bei Drehzahl' Ausgang.  Andernfalls ist es einfach, dieses Signal mit der Komponente 'HAL near' zu erzeugen, indem man die gewünschte und die tatsächliche Spindeldrehzahl vergleicht.

note: type: Plain text
en: 'spindle.__N__.brake' - (bit, out) TRUE when the spindle brake should be applied.
de: 'spindle.__N__.brake' - (bit, out) TRUE, wenn die Spindelbremse aktiviert werden soll.

note: type: Plain text
en: 'spindle.__N__.forward' - (bit, out) TRUE when the spindle should rotate forward.
de: 'spindle.__N__.forward' - (bit, out) TRUE wenn sich die Spindel vorwärts drehen soll.

note: type: Plain text
en: 'spindle.__N__.index-enable' - (bit, I/O) For correct operation of spindle synchronized moves, this pin must be hooked to the index-enable pin of the spindle encoder.
de: 'spindle.__N__.index-enable' - (Bit, I/O) Für den korrekten Betrieb von spindelsynchronisierten Bewegungen muss dieser Pin mit dem Index-Enable-Pin des Spindelgebers verbunden werden.

note: type: Plain text
en: 'spindle.__N__.inhibit' - (bit, in) When this bit is TRUE, the spindle speed is set to 0.
de: 'spindle.__N__.inhibit' - (bit, in) Wenn dieses Bit TRUE ist, wird die Spindeldrehzahl auf 0 gesetzt.

note: type: Plain text
en: 'spindle.__N__.on' - (bit, out) TRUE when spindle should rotate.
de: 'spindle.__N__.on' - (bit, out) TRUE wenn sich die Spindel drehen soll.

note: type: Plain text
en: 'spindle.__N__.reverse' - (bit, out) TRUE when the spindle should rotate backward
de: 'spindle.__N__.reverse' - (bit, out) TRUE wenn sich die Spindel rückwärts drehen soll

note: type: Plain text
en: 'spindle.__N__.revs' - (float, in) For correct operation of spindle synchronized moves, this signal must be hooked to the position pin of the spindle encoder. The spindle encoder position should be scaled such that spindle-revs increases by 1.0 for each rotation of the spindle in the clockwise ('M3') direction.
de: 'spindle.__N__.revs' - (float, in) Für den korrekten Betrieb von spindelsynchronisierten Bewegungen muss dieses Signal mit dem Positionspin des Spindelgebers verbunden werden. Die Position des Spindelgebers sollte so skaliert werden, dass die Spindelumdrehungen bei jeder Umdrehung der Spindel im Uhrzeigersinn ('M3') um 1,0 zunehmen.

note: type: Plain text
en: 'spindle.__N__.speed-in' - (float, in) Feedback of actual spindle speed in rotations per second.  This is used by feed-per-revolution motion ('G95').  If your spindle encoder driver does not have a velocity output, you can generate a suitable one by sending the spindle position through a 'ddt' component.  If you do not have a spindle encoder, you can loop back 'spindle.__N__.speed-out-rps'.
de: 'spindle.__N__.speed-in' - (float, in) Rückmeldung der tatsächlichen Spindeldrehzahl in Umdrehungen pro Sekunde.  Dies wird von der Bewegung mit Vorschub pro Umdrehung ('G95') verwendet.  Wenn Ihr Spindelgeber-Treiber nicht über einen Geschwindigkeitsausgang verfügt, können Sie einen geeigneten Ausgang erzeugen, indem Sie die Spindelposition durch eine 'ddt' Komponente senden.  Wenn Sie keinen Spindelgeber haben, können Sie 'spindle.__N__.speed-out-rps' durchschleifen.

note: type: Plain text
en: 'spindle.__N__.speed-out' - (float, out) Commanded spindle speed in rotations per minute. Positive for spindle forward ('M3'), negative for spindle reverse ('M4').
de: 'spindle.__N__.speed-out' - (float, out) Befohlene Spindeldrehzahl in Umdrehungen pro Minute. Positiv für Spindel vorwärts ('M3'), negativ für Spindel rückwärts ('M4').

note: type: Plain text
en: 'spindle.__N__.speed-out-abs' - (float, out) Commanded spindle speed in rotations per minute. This will always be a positive number.
de: 'spindle.__N__.speed-out-abs' - (Float, out) Geforderte Spindeldrehzahl in Umdrehungen pro Minute. Dies ist immer eine positive Zahl.

note: type: Plain text
en: 'spindle.__N__.speed-out-rps' - (float, out) Commanded spindle speed in rotations per second. Positive for spindle forward ('M3'), negative for spindle reverse ('M4').
de: 'spindle.__N__.speed-out-rps' - (float, out) Geforderte Spindeldrehzahl in Umdrehungen pro Sekunde. Positiv für Spindel vorwärts ('M3'), negativ für Spindel rückwärts ('M4').

note: type: Plain text
en: 'spindle.__N__.speed-out-rps-abs' - (float, out) Commanded spindle speed in rotations per second. This will always be a positive number.
de: 'spindle.__N__.speed-out-rps-abs' - (float, out) Befohlene Spindeldrehzahl in Umdrehungen pro Sekunde. Dies ist immer eine positive Zahl.

note: type: Plain text
en: 'spindle.__N__.orient-angle' - (float,out) Desired spindle orientation for M19. Value of the M19 R word parameter plus the value of the [RS274NGC]ORIENT_OFFSET INI parameter.
de: 'spindle.__N__.orient-angle' - (float,out) Gewünschte Spindelausrichtung für M19. Wert des M19 R-Wort-Parameters plus dem Wert des [RS274NGC]ORIENT_OFFSET INI-Parameters.

note: type: Plain text
en: 'spindle.__N__.orient-mode' - (s32,out) Desired spindle rotation mode M19. Default 0.
de: 'spindle.__N__.orient-mode' - (s32,out) Gewünschter Rotationsmodus der Spindel M19. Voreinstellung 0.

note: type: Plain text
en: 'spindle.__N__.orient' - (out,bit)  Indicates start of spindle orient cycle. Set by M19. Cleared by any of M3, M4, or M5.  If spindle-orient-fault is not zero during spindle-orient true, the M19 command fails with an error message.
de: 'spindle.__N__.orient' - (out,bit) Zeigt den Beginn des Spindelorientierungszyklus an. Wird von M19 gesetzt. Wird gelöscht durch M3, M4 oder M5.  Wenn spindle-orient-fault während spindle-orient true nicht Null ist, schlägt der Befehl M19 mit einer Fehlermeldung fehl.

note: type: Plain text
en: 'spindle.__N__.is-oriented' - (in, bit) Acknowledge pin for spindle-orient. Completes orient cycle.  If spindle-orient was true when spindle-is-oriented was asserted, the spindle-orient pin is cleared and the spindle-locked pin is asserted. Also, the spindle-brake pin is asserted.
de: 'spindel.__N__.is-oriented' - (in, bit) Bestätigungs-(engl. acknowledge)-Pin für "spindle-orient". Schließt den Orientierungszyklus ab.  Wenn "spindle-orient" wahr war, als "spindle-is-oriented" bestätigt wurde, wird der Pin "spindle-orient" gelöscht und der Pin "spindle-locked" bestätigt. Außerdem wird der Pin "spindle-brake" aktiviert.

note: type: Plain text
en: 'spindle.__N__.orient-fault' - (s32, in) Fault code input for orient cycle. Any value other than zero will cause the orient cycle to abort.
de: 'spindle.__N__.orient-fault' - (s32, in) Fehlercodeeingabe für den Orientierungszyklus. Jeder Wert ungleich Null führt zum Abbruch des Orientierungszyklus.

note: type: Plain text
en: 'spindle.__N__.lock' - (bit, out) Spindle orient complete pin. Cleared by any of M3, M4, or M5.
de: 'spindle.__N__.lock' - (bit, out) Spindel-Orientierung-durchgeführt-Pin. Zurückgesetzt durch M3, M4 oder M5.

note: type: Block title
en: HAL pin usage for M19 orient spindle
de: Verwendung des HAL-Pins für die M19-Spindel-Orientierung

note: type: Plain text
en: Conceptually the spindle is in one of the following modes:
de: Konzeptionell befindet sich die Spindel in einem der folgenden Modi:

note: type: Plain text
en: rotation mode (the default)
de: Rotationsmodus (die Standardeinstellung)

note: type: Plain text
en: searching for desired orientation mode
de: Suchend nach der gewünschten Orientierung

note: type: Plain text
en: orientation complete mode.
de: Orientierung-durchgeführt-Modus.

note: type: Plain text
en: When an M19 is executed, the spindle changes to 'searching for desired orientation', and the `spindle.__N__.orient` HAL pin is asserted.  The desired target position is specified by the `spindle.__N__.orient-angle` and `spindle.__N__.orient-fwd` pins and driven by the M19 R and P parameters.
de: Wenn ein M19 ausgeführt wird, wechselt die Spindel in den Modus 'Suche nach gewünschter Orientierung', und der HAL-Pin `spindle.__N__.orient` wird aktiviert.  Die gewünschte Zielposition wird durch die Pins "spindle.__N__.orient-angle" und "spindle.__N__.orient-fwd" festgelegt und durch die M19-Parameter R und P gesteuert.

note: type: Plain text
en: The HAL support logic is expected to react to `spindle.__N__.orient` by moving the spindle to the desired position. When this is complete, the HAL logic is expected to acknowledge this by asserting the `spindle.__N__.is-oriented` pin.
de: Es wird erwartet, dass die HAL-Unterstützungslogik auf `spindle.__N__.orient` reagiert, indem sie die Spindel in die gewünschte Position bewegt. Wenn dies abgeschlossen ist, wird erwartet, dass die HAL-Logik dies durch die Bestätigung des Pins "Spindle.__N__.is-oriented" .

note: type: Plain text
en: Motion then acknowledges this by deasserting the `spindle.__N__.orient` pin and asserts the `spindle.__N__.locked` pin to indicate 'orientation complete' mode.  It also raises the `spindle.__N__.brake` pin. The spindle now is in 'orientation complete' mode.
de: Motion quittiert dies durch Deaktivierung des Pins "Spindle.__N__.orient" und aktiviert den Pin "Spindle.__N__.locked", um den Modus "Orientierung abgeschlossen" anzuzeigen.  Außerdem wird der Pin "spindle.__N__.brake" angehoben. Die Spindel befindet sich nun im Modus 'Orientierung abgeschlossen'.

note: type: Plain text
en: If, during `spindle.__N__.orient` being true, and `spindle.__N__.is-oriented` not yet asserted the `spindle.__N__.orient-fault` pin has a value other than zero, the M19 command is aborted, a message including the fault code is displayed, and the motion queue is flushed.  The spindle reverts to rotation mode.
de: Wenn der Pin "spindle.__N__.orient-fault" einen Wert ungleich Null hat, während "spindle.__N__.orient" wahr ist und "spindle.__N__.is oriented" noch nicht aktiviert ist, wird der M19-Befehl abgebrochen, eine Meldung mit dem Fehlercode angezeigt und die Bewegungswarteschlange geleert.  Die Spindel kehrt in den Rotationsmodus zurück.

note: type: Plain text
en: Also, any of the M3, M4 or M5 commands cancel either 'searching for desired orientation' or 'orientation complete' mode.  This is indicated by deasserting both the `spindle-orient` and `spindle-locked` pins.
de: Außerdem kann jeder der Befehle M3, M4 oder M5 entweder den Modus 'Suche nach gewünschter Orientierung' oder 'Orientierung abgeschlossen' abbrechen.  Dies wird durch das Deassertieren der Pins `spindle-orient` und `spindle-locked` angezeigt.

note: type: Plain text
en: The `spindle-orient-mode` pin reflects the M19 P word and shall be interpreted as follows:
de: Der Pin "spindle-orient-mode" spiegelt das M19 P-Wort wider und ist wie folgt zu interpretieren:

note: type: Plain text
en: 0: rotate clockwise or counterclockwise for smallest angular movement
de: 0: Drehen im oder gegen den Uhrzeigersinn für kleinste Winkelbewegung

note: type: Plain text
en: 1: always rotate clockwise
de: 1: immer rot

note: type: Plain text
en: 2: always rotate counterclockwise
de: 2: immer gegen den Uhrzeigersinn drehen

note: type: Plain text
en: It can be used with the `orient` HAL component which provides a PID command value based on spindle encoder position, `spindle-orient-angle` and `spindle-orient-mode`.
de: Sie kann mit der HAL-Komponente "orient" verwendet werden, die einen PID-Befehlswert auf der Grundlage der Spindelgeberposition, des `spindle-orient-angle` ("Spindelorientierungswinkel") and `spindle-orient-mode` ("Spindelorientierungsmodus") liefert.

note: type: Title ==
en: Axis and Joint Pins and Parameters
de: Achs- und Gelenkpins und Parameter

note: type: Plain text
en: These pins and parameters are created by the realtime 'motmod' module.  [In 'trivial kinematics' machines, there is a one-to-one correspondence between joints and axes.] They are read and updated by the 'motion-controller' function.
de: Diese Pins und Parameter werden durch das Echtzeitmodul 'motmod' angelegt.  [In 'trivial kinematics' Maschinen gibt es eine Eins-zu-Eins-Entsprechung zwischen Gelenken und Achsen.] Sie werden von der Funktion 'motion-controller' gelesen und aktualisiert.

note: type: Plain text
en: See the motion man page 'motion(9)' for details on the pins and parameters.
de: Einzelheiten zu den Pins und Parametern finden Sie in der Motion-Manpage 'motion(9)'.

note: type: Plain text
en: iocontrol - accepts NML I/O commands, interacts with HAL in userspace.
de: iocontrol - nimmt NML-E/A-Befehle entgegen, interagiert mit HAL im Userspace.

note: type: Plain text
en: The signals are turned on and off in userspace - if you have strict timing requirements or simply need more i/o, consider using the realtime synchronized i/o provided by <<sec:motion,motion>> instead.
de: Die Signale werden im Userspace ein- und ausgeschaltet - wenn Sie strenge Timing-Anforderungen haben oder einfach mehr E/A benötigen, sollten Sie stattdessen die von <<sec:motion,Motion>> bereitgestellte echtzeitsynchronisierte E/A verwenden.

note: type: Title ===
en: Pins (((iocontrol (HAL pins))))
de: Pins (((iocontrol (HAL-Pins))))

note: type: Plain text
en: 'iocontrol.0.coolant-flood' - (bit, out) TRUE when flood coolant is requested.
de: 'iocontrol.0.coolant-flood' - (bit, out) TRUE wenn Kühlmittelflut angefordert wird.

note: type: Plain text
en: 'iocontrol.0.coolant-mist' - (bit, out) TRUE when mist coolant is requested.
de: 'iocontrol.0.coolant-mist' - (bit, out) TRUE wenn Kühlmittelnebel angefordert wird.

note: type: Plain text
en: 'iocontrol.0.emc-enable-in' - (bit, in) Should be driven FALSE when an external E-Stop condition exists.
de: 'iocontrol.0.emc-enable-in' - (Bit, in) Sollte FALSE sein, wenn eine externe Not-Aus-Bedingung vorliegt.

note: type: Plain text
en: 'iocontrol.0.lube' - (bit, out) TRUE when lube is commanded.
de: 'iocontrol.0.lube' - (bit, out) TRUE wenn lube befohlen wird.

note: type: Plain text
en: 'iocontrol.0.lube_level' - (bit, in) Should be driven TRUE when lube level is high enough.
de: 'iocontrol.0.lube_level' - (bit, in) Sollte auf TRUE gesetzt werden, wenn der Schmiermittelstand hoch genug ist.

note: type: Plain text
en: 'iocontrol.0.tool-change' - (bit, out) TRUE when a tool change is requested.
de: 'iocontrol.0.tool-change' - (bit, out) TRUE wenn ein Werkzeugwechsel angefordert wird.

note: type: Plain text
en: 'iocontrol.0.tool-changed' - (bit, in) Should be driven TRUE when a tool change is completed.
de: 'iocontrol.0.tool-changed' - (bit, in) Sollte TRUE sein, wenn ein Werkzeugwechsel abgeschlossen ist.

note: type: Plain text
en: 'iocontrol.0.tool-number' - (s32, out) The current tool number.
de: 'iocontrol.0.tool-number' - (s32, out) Die aktuelle Werkzeugnummer.

note: type: Plain text
en: 'iocontrol.0.tool-prep-number' - (s32, out) The number of the next tool, from the RS274NGC T-word.
de: 'iocontrol.0.tool-prep-number' - (s32, out) Die Nummer des nächsten Werkzeugs, aus dem RS274NGC T-Wort.

note: type: Plain text
en: 'iocontrol.0.tool-prepare' - (bit, out) TRUE when a tool prepare is requested.
de: 'iocontrol.0.tool-prepare' - (bit, out) TRUE wenn eine Werkzeugvorbereitung angefordert wird.

note: type: Plain text
en: 'iocontrol.0.tool-prepared' - (bit, in) Should be driven TRUE when a tool prepare is completed.
de: 'iocontrol.0.tool-prepared' - (bit, in) Sollte auf TRUE gesetzt werden, wenn eine Werkzeugvorbereitung abgeschlossen ist.

note: type: Plain text
en: 'iocontrol.0.user-enable-out' - (bit, out) FALSE when an internal E-Stop condition exists.
de: 'iocontrol.0.user-enable-out' - (bit, out) FALSE, wenn eine interne Not-Aus-Bedingung vorliegt.

note: type: Plain text
en: 'iocontrol.0.user-request-enable' - (bit, out) TRUE when the user has requested that E-Stop be cleared.
de: 'iocontrol.0.user-request-enable' - (bit, out) TRUE, wenn der Benutzer die Freigabe des Notausschalters angefordert hat.

note: type: Title ===
en: INI settings
de: INI-Einstellungen

note: type: Plain text
en: A number of INI settings are made available as HAL input pins.
de: Eine Reihe von INI-Einstellungen werden als HAL Eingangspins zur Verfügung gestellt.

note: type: Title ===
en: Pins (((INI settings (HAL pins))))
de: Pins (((INI-Einstellungen (HAL-Pins))))

note: type: Plain text
en: _N_ refers to a joint number, _L_ refers to an axis letter.
de: _N_ bezieht sich auf eine Gelenknummer, _L_ auf einen Achsenbuchstaben.

note: type: Plain text
en: 'ini.__N__.ferror' - (float, in) [JOINT_N]FERROR
de: "ini.__N__.ferror' - (float, in) [JOINT_N]FERROR

note: type: Plain text
en: The per-axis min_limit and max_limit pins are honored continuously after homing.  The per-axis ferror and min_ferror pins are honored when the machine is on and not in position.  The per-axis max_velocity and max_acceleration pins are sampled when the machine is on and the motion_state is free (homing or jogging) but are not sampled when in a program is running (auto mode) or in MDI mode.  Consequently, changing the pin values when a program is running will not have effect until the program is stopped and the motion_state is again free.
de: Die achsspezifischen Pins min_limit und max_limit werden nach der Referenzfahrt kontinuierlich berücksichtigt.  Die achsspezifischen Pins ferror und min_ferror werden berücksichtigt, wenn die Maschine eingeschaltet ist und sich nicht in Position befindet.  Die achsspezifischen Pins max_velocity und max_acceleration werden abgetastet, wenn die Maschine eingeschaltet und der motion_state frei ist (Referenzfahrt oder Jogging), aber nicht, wenn ein Programm läuft (Auto-Modus) oder im MDI-Modus.  Folglich hat eine Änderung der Pin-Werte bei laufendem Programm erst dann Auswirkungen, wenn das Programm gestoppt wird und der motion_state wieder frei ist.

note: type: Title =
en: INI Configuration(((INI Configuration)))
de: INI Konfiguration(((INI Konfiguration)))

note: type: Title ==
en: The INI File Components(((INI File,Components)))
de: Die INI-Datei Komponenten(((INI-Datei,Komponenten)))

note: type: Plain text
en: A typical INI file follows a rather simple layout that includes;
de: Eine typische INI-Datei hat ein recht einfaches Layout, das Folgendes umfasst;

note: type: Plain text
en: comments
de: Kommentare

note: type: Plain text
en: sections
de: Abschnitte

note: type: Plain text
en: variables
de: Variablen

note: type: Plain text
en: Each of these elements is separated on single lines. Each end of line or newline character creates a new element.
de: Jedes dieser Elemente wird in einzelnen Zeilen getrennt. Jedes Zeilenende oder Zeilenumbruchzeichen erzeugt ein neues Element.

note: type: Title ===
en: Comments(((INI File,Components,Comments)))
de: Kommentare(((INI-Datei,Komponenten,Kommentare)))

note: type: Plain text
en: A comment line is started with a ; or a # mark. When the INI reader sees either of these marks at the start a line, the rest of the line is ignored by the software. Comments can be used to describe what an INI element will do.
de: Eine Kommentarzeile wird mit einem ; oder einem # eingeleitet. Wenn der INI-Leser eines dieser Zeichen am Anfang einer Zeile sieht, wird der Rest der Zeile von der Software ignoriert. Kommentare können verwendet werden, um zu beschreiben, was ein INI-Element tun wird.

note: type: delimited block -
en: ; This is my mill configuration file.
    # I set it up on January 12, 2012
de: ; Dies ist die Konfigurationsdatei meiner Fräsmaschine
    # Ich habe sie am 12. Januar 2012 eingerichtet.

note: type: Plain text
en: Comments can also be used to 'turn off' a variable. This makes it easier to pick between different variables.
de: Kommentare können auch zum 'Ausschalten' einer Variable verwendet werden. Das macht es einfacher, zwischen verschiedenen Variablen zu wählen.

note: type: Plain text
en: In this list, the DISPLAY variable will be set to axis because the other one is commented out. If someone carelessly edits a list like this and leaves two of the lines uncommented, the first one encountered will be used.
de: In dieser Liste wird die Variable DISPLAY auf axis gesetzt, weil die andere auskommentiert ist. Wenn jemand unvorsichtigerweise eine Liste wie diese bearbeitet und zwei der Zeilen unkommentiert lässt, wird die zuerst gefundene Zeile verwendet.

note: type: Plain text
en: Note that inside a variable, the "#" and ";" characters do not denote comments:
de: Beachten Sie, dass die Zeichen "#" und ";" innerhalb einer Variablen nicht für Kommentare stehen:

note: type: delimited block -
en: INCORRECT = value     # and a comment
de: FALSCH = Wert # und ein Kommentar

note: type: delimited block -
en: # Correct Comment
    CORRECT = value
de: # Korrekter Kommentar
    CORRECT = Wert

note: type: Title ===
en: Sections(((INI File,Components,Sections)))
de: Abschnitte(((INI-Datei,Komponenten,Abschnitte)))

note: type: Plain text
en: Related parts of an INI file are separated into sections.  A section name is enclosed in brackets like this '[THIS_SECTION]' The order of sections is unimportant. Sections begin at the section name and end at the next section name.
de: Zusammenhängende Teile einer INI-Datei sind in Abschnitte unterteilt.  Der Name eines Abschnitts ist in Klammern eingeschlossen, etwa so '[DIESER ABSCHNITT]'. Die Reihenfolge der Abschnitte ist unerheblich. Die Abschnitte beginnen mit dem Abschnittsnamen und enden mit dem nächsten Abschnittsnamen.

note: type: Plain text
en: The following sections are used by LinuxCNC:
de: Die folgenden Abschnitte werden von LinuxCNC verwendet:

note: type: Plain text
en: <<sub:ini:sec:emc,[EMC]>> general information
de: <<sub:ini:sec:emc,[EMC]>> allgemeine Informationen

note: type: Plain text
en: <<sub:ini:sec:display,[DISPLAY]>> settings related to the graphical user interface
de: <<sub:ini:sec:display,[DISPLAY]>> Einstellungen im Zusammenhang mit der grafischen Benutzeroberfläche

note: type: Plain text
en: <<sub:ini:sec:filter,[FILTER]>> settings input filter programs
de: <<sub:ini:sec:filter,[FILTER]>> Einstellungen für Eingaben-Filterprogramme

note: type: Plain text
en: <<sub:ini:sec:rs274ngc,[RS274NGC]>> settings used by the G-code interpreter
de: <<sub:ini:sec:rs274ngc,[RS274NGC]>> vom G-Code-Interpreter verwendete Einstellungen

note: type: Plain text
en: <<sub:ini:sec:emcmot,[EMCMOT]>> settings used by the real time motion controller
de: <<sub:ini:sec:emcmot,[EMCMOT]>> Einstellungen, die von der Echtzeit-Bewegungssteuerung verwendet werden

note: type: Plain text
en: <<sub:ini:sec:task,[TASK]>> settings used by the task controller
de: <<sub:ini:sec:task,[TASK]>> vom Task-Controller verwendete Einstellungen

note: type: Plain text
en: <<sub:ini:sec:hal,[HAL]>> specifies .hal files
de: <<sub:ini:sec:hal,[HAL]>> gibt HAL-Dateien an

note: type: Plain text
en: <<sub:ini:sec:halui,[HALUI]>> MDI commands used by HALUI
de: <<sub:ini:sec:halui,[HALUI]>> Von HALUI verwendete MDI-Befehle

note: type: Plain text
en: <<sub:ini:sec:applications,[APPLICATIONS]>> Other applications to be started by LinuxCNC
de: <<sub:ini:sec:applications,[APPLICATIONS]>> Andere Anwendungen, die von LinuxCNC gestartet werden sollen

note: type: Plain text
en: <<sub:ini:sec:traj,[TRAJ]>> additional settings used by the real time motion controller
de: <<sub:ini:sec:traj,[TRAJ]>> zusätzliche Einstellungen, die von der Echtzeit-Bewegungssteuerung verwendet werden

note: type: Plain text
en: <<sub:ini:sec:joint-num,[JOINT_n]>> individual joint variables
de: <<sub:ini:sec:joint-num,[JOINT_n]>> einzelne Gelenkvariablen

note: type: Plain text
en: <<sub:ini:sec:axis-letter,[AXIS_l]>> individual axis variables
de: <<sub:ini:sec:axis-letter,[AXIS_l]>> einzelne Achsenvariablen

note: type: Plain text
en: <<sub:ini:sec:kins,[KINS]>> kinematics variables
de: <<sub:ini:sec:kins,[KINS]>> Variablen für die Kinematik

note: type: Plain text
en: <<sub:ini:sec:emcio,[EMCIO]>> settings used by the I/O Controller
de: <<sub:ini:sec:emcio,[EMCIO]>> vom E/A-Controller verwendete Einstellungen

note: type: Title ===
en: Variables(((INI File,Components,Variables)))
de: Variablen(((INI-Datei,Komponenten,Variablen)))

note: type: Plain text
en: A variable line is made up of a variable name, an equals sign (=), and a value. Everything from the first non-white space character after the = up to the end of the line is passed as the value, so you can embed spaces in string symbols if you want to or need to. A variable name is often called a keyword.
de: Eine Variablenzeile besteht aus einem Variablennamen, einem Gleichheitszeichen (=) und einem Wert. Als Wert wird alles vom ersten nicht-weißen Leerzeichen nach dem = bis zum Ende der Zeile übergeben, so dass Sie Leerzeichen in Stringsymbole einbetten können, wenn Sie dies wollen oder müssen. Ein Variablenname wird oft auch als Schlüsselwort bezeichnet.

note: type: Block title
en: Variable Example
de: Beispiel für eine Variable

note: type: Plain text
en: A variable line may be extended to multiple lines with a terminal backslash (\)  character.  A maximum of MAX_EXTEND_LINES (==20) are allowed.  There must be no whitespace following the trailing backslash character.
de: Eine variable Zeile kann mit einem terminalen Backslash (\) auf mehrere Zeilen erweitert werden.  Es sind maximal MAX_EXTEND_LINES (==20) zulässig.  Nach dem abschließenden Backslash-Zeichen darf kein Leerzeichen stehen.

note: type: Plain text
en: Section identifiers may not be extended to multiple lines.
de: Abschnittsbezeichnungen dürfen nicht auf mehrere Zeilen ausgedehnt werden.

note: type: Block title
en: Variable with Line extends Example
de: Beispiel für Variable mit Zeilenerweiterung

note: type: Block title
en: Boolean Variables
de: boolsche Variablen

note: type: Plain text
en: Boolean values can be on one of `TRUE`, `YES` or `1` for true/enabled and one of `FALSE`, `NO` or `0` for false/disabled. The case is ignored.
de: Boolesche Werte können eines von `TRUE`, `YES` oder `1` für wahr/aktiviert und eines von `FALSE`, `NO` oder `0` für falsch/deaktiviert sein. Der Fall wird ignoriert.

note: type: Plain text
en: The following sections detail each section of the configuration file, using sample values for the configuration lines.
de: In den folgenden Abschnitten wird jeder Abschnitt der Konfigurationsdatei anhand von Beispielwerten für die Konfigurationszeilen erläutert.

note: type: Plain text
en: Variables that are used by LinuxCNC must always use the section names and variable names as shown. In the following example the variable 'MACHINE' is assigned the value 'My Machine'.
de: Variablen, die von LinuxCNC verwendet werden, müssen immer die Sektionsnamen und Variablennamen wie gezeigt verwenden. Im folgenden Beispiel wird die Variable 'MACHINE' mit dem Wert 'My Machine' belegt.

note: type: Title ===
en: Custom Sections and Variables(((INI File,Components,Custom sections and variables)))
de: Benutzerdefinierte Abschnitte und Variablen(((INI-Datei,Komponenten,Benutzerdefinierte Abschnitte und Variablen)))

note: type: Plain text
en: Most sample configurations use custom sections and variables to put all of the settings into one location for convenience.
de: Die meisten Beispielkonfigurationen verwenden benutzerdefinierte Abschnitte und Variablen, um alle Einstellungen an einem Ort zu bündeln.

note: type: Plain text
en: To add a custom variable to an existing LinuxCNC section, simply include the variable in that section.
de: Um eine benutzerdefinierte Variable zu einem bestehenden LinuxCNC-Abschnitt hinzuzufügen, fügen Sie die Variable einfach in diesen Abschnitt ein.

note: type: Block title
en: Custom Variable Example
de: Beispiel für eine benutzerdefinierte Variable

note: type: Plain text
en: To introduce a custom section with its own variables, add the section and variables to the INI file.
de: Um einen benutzerdefinierten Abschnitt mit eigenen Variablen einzuführen, fügen Sie den Abschnitt und die Variablen in die INI-Datei ein.

note: type: Block title
en: Custom Section Example
de: Beispiel für einen benutzerdefinierten Abschnitt

note: type: Plain text
en: To use the custom variables in your HAL file, put the section and variable name in place of the value.
de: Um die benutzerdefinierten Variablen in Ihrer HAL-Datei zu verwenden, setzen Sie den Abschnitt und den Variablennamen an die Stelle des Wertes.

note: type: Block title
en: HAL Example
de: HAL Beispiel

note: type: Plain text
en: The value stored in the variable must match the type specified by the component pin.
de: Der in der Variablen gespeicherte Wert muss mit dem vom Komponentenpin angegebenen Typ übereinstimmen.

note: type: Plain text
en: To use the custom variables in G-code, use the global variable syntax `#<_ini[section]variable>`. The following example shows a simple Z-axis touch-off routine for a router or mill using a probe plate.
de: Für benutzerdefinierten Variablen im G-Code verwenden Sie die globale Variablensyntax `#<_ini[section]variable>`. Das folgende Beispiel zeigt eine einfache Z-Achsen-Antastroutine für eine Oberfräse oder ein Fräswerk unter Verwendung einer Tastplatte.

note: type: Block title
en: G-code Example
de: G-Code Beispiel

note: type: Title ===
en: Include Files(((INI File,Components,Include)))
de: Include-Dateien(((INI-Datei,Komponenten,Include)))

note: type: Plain text
en: An INI file may include the contents of another file by using a #INCLUDE directive.
de: Durch die Angabe einer #INCLUDE-Anweisung in einer INI-Datei kann der Computer dazu angehalten werden, an dieser Stelle zunächst den Inhalt der angegebenen Datei zu berücksichtigen.

note: type: Plain text
en: The filename can be specified as:
de: Der Dateiname kann wie folgt angegeben werden:

note: type: Plain text
en: a file in the same directory as the INI file
de: eine Datei in demselben Verzeichnis wie die INI-Datei

note: type: Plain text
en: a file located relative to the working directory
de: eine Datei, die sich relativ zum Arbeitsverzeichnis befindet

note: type: Plain text
en: an absolute file name (starts with a /)
de: ein absoluter Dateiname (beginnt mit einem /)

note: type: Plain text
en: a user-home-relative file name (starts with a ~)
de: einen Dateinamen, der sich auf den Wohnort des Benutzers bezieht (beginnt mit ~)

note: type: Plain text
en: Multiple #INCLUDE directives are supported.
de: Mehrere #INCLUDE-Direktiven werden unterstützt.

note: type: Block title
en: #INCLUDE Examples
de: #INCLUDE Beispiele

note: type: Plain text
en: The #INCLUDE directives are supported for one level of expansion only -- an included file may not include additional files.  The recommended file extension is .inc.  Do not use a file extension of .ini for included files.
de: Die #INCLUDE-Direktiven werden nur für eine Erweiterungsebene unterstützt - eine bereits inkludierte Datei darf keine weiteren Dateien einschließen.  Die empfohlene Dateierweiterung ist .inc.  Verwenden Sie nicht die Dateierweiterung .ini für eingeschlossene Dateien.

note: type: Title ==
en: INI File Sections(((INI File,Sections)))
de: INI-Datei Abschnitte(((INI-Datei,Abschnitte)))

note: type: Title ===
en: [EMC] Section(((INI File,Sections,[EMC] Section)))
de: [EMC] Abschnitt(((INI-Datei,Abschnitte,[EMC] Abschnitt)))

note: type: Plain text
en: 'VERSION = 1.1' - The version number for the configuration. Any value other than 1.1 will cause the configuration checker to run and try to update the configuration to the new style joint axes type of configuration.
de: 'VERSION = 1.1' - Die Versionsnummer für die Konfiguration. Jeder andere Wert als 1.1 führt dazu, dass die Konfigurationsprüfung ausgeführt wird und versucht, die Konfiguration auf den neuen Typ der Gelenkachsen-Konfiguration zu aktualisieren.

note: type: Plain text
en: 'MACHINE = My Controller' - This is the name of the controller, which is printed out at the top of most graphical interfaces. You can put whatever you want here as long as you make it a single line long.
de: 'MACHINE = My Controller' - Dies ist der Name des Controllers, der in den meisten grafischen Oberflächen oben angezeigt wird. Sie können hier einfügen was Sie wollen, solange es nur eine Zeile lang ist.

note: type: Plain text
en: 'DEBUG = 0' - Debug level 0 means no messages will be printed when LinuxCNC is run from a <<faq:terminal,terminal>>. Debug flags are usually only useful to developers. See src/emc/nml_intf/debugflags.h for other settings.
de: 'DEBUG = 0' - Debug-Level 0 bedeutet, dass keine Meldungen ausgegeben werden, wenn LinuxCNC von einem <<faq:terminal,Terminal>> ausgeführt wird. Debug-Flags sind normalerweise nur für Entwickler nützlich. Siehe src/emc/nml_intf/debugflags.h für andere Einstellungen.

note: type: Title ===
en: [DISPLAY] Section(((INI File,Sections,[DISPLAY] Section)))
de: [DISPLAY] Abschnitt(((INI-Datei,Sektionen,Abschnitte,[DISPLAY] Abschnitt)))

note: type: Plain text
en: Different user interface programs use different options, and not every option is supported by every user interface. There are several interfaces, like AXIS, GMOCCAPY, Touchy, QtVCP's QtDragon and Gscreen.  Axis is an interface for use with normal computer and monitor, Touchy is for use with touch screens. GMOCCAPY can be used both ways and offers also many connections for hardware controls.  Descriptions of the interfaces are in the Interfaces section of the User Manual.
de: Verschiedene Benutzeroberflächen-Programme verwenden unterschiedliche Optionen, und nicht jede Option wird von jeder Benutzeroberfläche unterstützt. Es gibt verschiedene Schnittstellen, wie AXIS, GMOCCAPY, Touchy, QtVCP's QtDragon und Gscreen.  Axis ist eine Schnittstelle für die Verwendung mit normalen Computern und Monitoren, Touchy ist für die Verwendung mit Touchscreens. GMOCCAPY kann in beide Arten verwendet werden und bietet auch viele Anschlüsse für Hardware-Steuerungen.  Beschreibungen der Schnittstellen finden Sie im Abschnitt Schnittstellen (engl. Interfaces) des Benutzerhandbuchs.

note: type: Plain text
en: 'DISPLAY = axis' - The file name of the executable providing the user interface to use. Prominent valid options are (all in lower case): 'axis', 'touchy', 'gmoccapy', 'gscreen', 'tklinuxcnc', 'qtvcp', 'qtvcp-qtdragon' or 'qtvcp-qtplasmac'.
de: 'DISPLAY = axis' – Der Dateiname der ausführbaren Datei, welche die zu verwendende Benutzeroberfläche bereitstellt. Prominente gültige Optionen sind (alle in Kleinbuchstaben): 'axis', 'touchy', 'gmoccapy', 'gscreen', 'tklinuxcnc', 'qtvcp', 'qtvcp-qtdragon' oder 'qtvcp-qtplasmac'.

note: type: Plain text
en: 'POSITION_OFFSET = RELATIVE' - The coordinate system (RELATIVE or MACHINE)  to show on the DRO when the user interface starts. The RELATIVE coordinate system reflects the G92 and G5x coordinate offsets currently in effect.
de: 'POSITION_OFFSET = RELATIVE' - Das Koordinatensystem (RELATIVE oder MACHINE), das beim Start der Benutzeroberfläche auf dem DRO angezeigt wird. Das RELATIVE Koordinatensystem spiegelt die derzeit gültigen G92- und G5x-Koordinatenoffsets wider.

note: type: Plain text
en: 'POSITION_FEEDBACK = COMMANDED' - The coordinate value (COMMANDED or ACTUAL)  to show on the DRO when the user interface starts. In Axis this can be changed from the View menu. The COMMANDED position is the position requested by LinuxCNC. The ACTUAL position is the feedback position of the motors if they have feedback like most servo systems. Typically the COMMANDED value is used.
de: 'POSITION_FEEDBACK = COMMANDED' - Der Koordinatenwert (COMMANDED oder ACTUAL), der auf der externen Digitalanzeige (DRO) angezeigt werden soll, wenn die Benutzeroberfläche startet. In Axis kann dies über das Menü View geändert werden. Die COMMANDED-Position ist die von LinuxCNC angeforderte Position. Die IST-Position ist die von den Motoren zurückgemeldete Position (engl. feedback position), wenn sie wie die meisten Servosysteme solche Funktion haben. Normalerweise wird der COMMANDED-Wert verwendet.

note: type: Plain text
en: 'DRO_FORMAT_MM = %+08.6f' - Override the default DRO formatting in metric mode (normally 3 decimal places, padded with spaces to 6 digits to the left).  The example above will pad with zeros, display 6 decimal digits and force display of a + sign for positive numbers. Formatting follows Python practice.  https://docs.python.org/2/library/string.html#format-specification-mini-language an error will be raised if the format can not accept a floating-point value.
de: 'DRO_FORMAT_MM = %+08.6f' - Setzt die Standard-DRO-Formatierung im metrischen Modus außer Kraft (normalerweise 3 Dezimalstellen, aufgefüllt mit Leerzeichen auf 6 Ziffern nach links). Das obige Beispiel füllt mit Nullen auf, zeigt 6 Dezimalstellen an und erzwingt die Anzeige eines +-Zeichens für positive Zahlen. Die Formatierung folgt der Python-Praxis. https://docs.python.org/2/library/string.html#format-specification-mini-language gibt einen Fehler aus, wenn das Format keine Fließkommazahlen akzeptieren kann.

note: type: Plain text
en: 'DRO_FORMAT_IN = % 4.1f' - Override the default DRO formatting in imperial mode (normally 4 decimal places, padded with spaces to 6 digits to the left).  The example above will display only one decimal digit. Formatting follows Python practice.  https://docs.python.org/2/library/string.html#format-specification-mini-language An error will be raised if the format can not accept a floating-point value.
de: 'DRO_FORMAT_IN = % 4.1f' - Überschreibt die Standard-DRO-Formatierung im imperialen Modus (normalerweise 4 Dezimalstellen, aufgefüllt mit Leerzeichen auf 6 Ziffern nach links) - das obige Beispiel zeigt nur eine Dezimalstelle an. Die Formatierung folgt der Python-Praxis. https://docs.python.org/2/library/string.html#format-specification-mini-language Ein Fehler wird ausgelöst, wenn das Format keine Fließkommazahlen akzeptieren kann.

note: type: Plain text
en: 'CONE_BASESIZE = .25' - Override the default cone/tool base size of .5 in the graphics display
de: 'CONE_BASESIZE = .25' - Überschreibt die Standardkegel-/Werkzeugbasisgröße von .5 in der Grafikanzeige

note: type: Plain text
en: 'MAX_FEED_OVERRIDE = 1.2' - The maximum feed override the user may select.  1.2 means 120% of the programmed feed rate.
de: 'MAX_FEED_OVERRIDE = 1.2' - Der maximale Vorschub-Override, den der Benutzer auswählen kann.  Der Wert 1.2 (bitte mit Dezimalpunkt, nicht Komma) bedeutet 120% des programmierten Vorschubs.

note: type: Plain text
en: 'MIN_SPINDLE_OVERRIDE = 0.5' - The minimum spindle override the user may select.  0.5 means 50% of the programmed spindle speed. (This is used to set the minimum spindle speed).
de: 'MIN_SPINDLE_OVERRIDE = 0.5' - Der minimale Spindel-Override, den der Benutzer auswählen kann.  0.5 (immer mit Dezimalpunkt, nicht Komma) bedeutet 50% der programmierten Spindeldrehzahl. (Dies wird verwendet, um die minimale Spindeldrehzahl einzustellen).

note: type: Plain text
en: 'MIN_SPINDLE_0_OVERRIDE = 0.5' - The minimum spindle override the user may select.  0.5 means 50% of the programmed spindle speed.  (This is used to set the minimum spindle speed).  On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP based user interfaces.
de: MIN_SPINDLE_0_OVERRIDE = 0.5' - Der minimale Spindel-Override, den der Benutzer auswählen kann.  0,5 bedeutet 50% der programmierten Spindeldrehzahl.  (Dies wird verwendet, um die minimale Spindeldrehzahl einzustellen).  Bei Mehrspindelmaschinen gibt es Einträge für jede Spindelnummer. Wird nur von den QtVCP-basierten Benutzeroberflächen verwendet.

note: type: Plain text
en: 'MAX_SPINDLE_OVERRIDE = 1.0' - The maximum spindle override the user may select. 1.0 means 100% of the programmed spindle speed.
de: 'MAX_SPINDLE_OVERRIDE = 1.0' - Der maximale Spindel-Override, den der Benutzer auswählen kann. 1.0 bedeutet 100% der programmierten Spindeldrehzahl.

note: type: Plain text
en: 'MAX_SPINDLE_0_OVERRIDE = 1.0' - The maximum feed override the user may select.  1.2 means 120% of the programmed feed rate.  On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP based user interfaces.
de: 'MAX_SPINDLE_0_OVERRIDE = 1.0' - Der maximale Vorschub-Override, den der Benutzer wählen kann.  1.2 bedeutet 120% der programmierten Vorschubgeschwindigkeit.  Bei Mehrspindelmaschinen gibt es Einträge für jede Spindelnummer. Wird nur von den QtVCP-basierten Benutzeroberflächen verwendet.

note: type: Plain text
en: 'DEFAULT_SPINDLE_SPEED = 100' - The default spindle RPM when the spindle is started in manual mode. if this setting is not present, this defaults to 1 RPM for AXIS and 300 RPM for gmoccapy.
de: 'DEFAULT_SPINDLE_SPEED = 100' - Die Standardspindeldrehzahl, wenn die Spindel im manuellen Modus gestartet wird. Wenn diese Einstellung nicht vorhanden ist, wird sie standardmäßig auf 1 U/min für AXIS und 300 U/min für gmoccapy gesetzt.

note: type: Plain text
en: _deprecated_ - use the [SPINDLE_n] section instead
de: _veraltet_ - stattdessen den Abschnitt [SPINDLE_n] verwenden

note: type: Plain text
en: 'DEFAULT_SPINDLE_0_SPEED = 100' - The default spindle RPM when the spindle is started in manual mode. On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP based user interfaces.
de: 'DEFAULT_SPINDLE_0_SPEED = 100' - Die Standardspindeldrehzahl, wenn die Spindel im manuellen Modus gestartet wird. Auf der Mehrspindelmaschine gibt es für jede Spindelnummer Einträge. Wird nur von den QtVCP-basierten Benutzeroberflächen verwendet.

note: type: Plain text
en: _deprecated_ - use the [SPINDLE_n] section instead.
de: _deprecated_ - stattdessen den Abschnitt [SPINDLE_n] verwenden.

note: type: Plain text
en: 'SPINDLE_INCREMENT = 200' - The increment used when clicking increase/decrease buttons Only used by the QtVCP based user interfaces.
de: 'SPINDLE_INCREMENT = 200' - Die Schrittweite, die verwendet wird, wenn man auf die Buttons zum Erhöhen/Verringern klickt. Nur genutzt von QtVCP-basierten GUIs.

note: type: Plain text
en: 'MIN_SPINDLE_0_SPEED = 1000' - The minimum RPM that can be manually selected.  On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP based user interfaces.
de: 'MIN_SPINDLE_0_SPEED = 1000' - Die Mindestdrehzahl, die manuell ausgewählt werden kann.  Bei Mehrspindelmaschinen gibt es Einträge für jede Spindelnummer. Nur genutzt von den QtVCP-basierten GUIs.

note: type: Plain text
en: 'MAX_SPINDLE_0_SPEED = 20000' - The maximum RPM that can be manually selected.  On multi spindle machine there will be entries for each spindle number. Only used by the QtVCP based user interfaces.
de: 'MAX_SPINDLE_0_SPEED = 20000' - Die maximale Drehzahl, die manuell ausgewählt werden kann.  Bei Mehrspindelmaschinen gibt es Einträge für jede Spindelnummer. Nur genutzt von QtVCP-basierten GUIs.

note: type: Plain text
en: 'PROGRAM_PREFIX = ~/linuxcnc/nc_files' - The default location for G-code files and the location for user-defined M-codes. This location is searched for the file name before the subroutine path and user M path if specified in the [RS274NGC] section.
de: 'PROGRAM_PREFIX = ~/linuxcnc/nc_files' - Der Standardspeicherort für G-Code-Dateien und der Speicherort für benutzerdefinierte M-Codes. Dieser Speicherort wird nach dem Dateinamen vor dem Unterprogramm-Pfad und dem Benutzer-M-Pfad durchsucht, wenn er im Abschnitt [RS274NGC] angegeben wurde.

note: type: Plain text
en: 'INTRO_GRAPHIC = emc2.gif' - The image shown on the splash screen.
de: 'INTRO_GRAPHIC = emc2.gif' - Das Bild, das auf dem Begrüßungsbildschirm angezeigt wird.

note: type: Plain text
en: 'INTRO_TIME = 5' - The maximum time to show the splash screen, in seconds.
de: 'INTRO_TIME = 5' - Die maximale Zeit zur Anzeiges des Startbildschirms, in Sekunden.

note: type: Plain text
en: 'CYCLE_TIME = 100' - Cycle time of the Display GUI.  Depending on the screen, this can be in seconds or ms (ms preferred).  This is often the update rate rather then sleep time between updates.  If the update time is not set right the screen can become unresponsive or very jerky.  A value of 100ms (0.1 seconds) is a common setting though a range of 50 - 200ms (.05 - .2 seconds) may be useable.  An under powered CPU may see improvement with a longer setting. Usually the default is fine.
de: 'CYCLE_TIME = 100' - Zykluszeit der Anzeige-GUI.  Je nach Bildschirm kann dies in Sekunden oder ms (bevorzugt ms) angegeben werden.  Dies ist oft die Aktualisierungsrate und nicht die Ruhezeit zwischen den Aktualisierungen.  Wenn die Aktualisierungszeit nicht richtig eingestellt ist, kann der Bildschirm nicht mehr reagieren oder sehr ruckartig werden.  Ein Wert von 100 ms (0,1 Sekunden) ist eine übliche Einstellung, obwohl auch ein Bereich von 50 bis 200 ms (0,05 bis 0,2 Sekunden) sinnvoll sein kann.  Bei einer leistungsschwachen CPU kann eine längere Einstellung eine Verbesserung bewirken. Normalerweise ist die Standardeinstellung in Ordnung.

note: type: Plain text
en: 'PREVIEW_TIMEOUT = 5' - Timeout (in seconds) for loading graphical preview of G-code. Currently AXIS only.
de: PREVIEW_TIMEOUT = 5' - Timeout (in Sekunden) für das Laden der grafischen Vorschau des G-Codes. Derzeit nur AXIS.

note: type: Plain text
en: The following [DISPLAY] items are used by GladeVCP and PyVCP, see the <<gladevcp:embedding-tab,embedding a tab>> section of the GladeVCP Chapter or the <<cha:pyvcp,PyVCP Chapter>> for more information.
de: Die folgenden [DISPLAY]-Elemente werden von GladeVCP und PyVCP verwendet, siehe den <<gladevcp:embedding-tab,embedding a tab>> Abschnitt des GladeVCP Kapitels oder das <<cha:pyvcp,PyVCP Kapitel>> für weitere Informationen.

note: type: Plain text
en: 'EMBED_TAB_NAME = GladeVCP demo'
de: 'EMBED_TAB_NAME = GladeVCP Demo'

note: type: delimited block =
en: Different user interface programs use different options, and not every option is supported by every user interface.  See <<cha:axis-gui,AXIS GUI>> document for AXIS details.  See <<cha:gmoccapy,gmoccapy>> document for Gmoccapy details.
de: Verschiedene Benutzerschnittstellenprogramme verwenden unterschiedliche Optionen, und nicht jede Option wird von jeder Benutzerschnittstelle unterstützt.  Siehe <<cha:axis-gui,AXIS GUI>> Dokument für AXIS Details.  Siehe <<cha:gmoccapy,gmoccapy>> Dokument für Einzelheiten zu Gmoccapy.

note: type: Plain text
en: 'DEFAULT_LINEAR_VELOCITY = .25' - The default velocity for linear jogs, in <<sub:ini:sec:traj,machine units>> per second.
de: 'DEFAULT_LINEAR_VELOCITY = .25' - Die Standardgeschwindigkeit für lineares Joggen, in <sub:ini:sec:traj,machine units>> pro Sekunde.

note: type: Plain text
en: 'MIN_VELOCITY = .01' - The approximate lowest value the jog slider.
de: 'MIN_VELOCITY = .01' - Der ungefähre niedrigste Wert des Jog-Sliders.

note: type: Plain text
en: 'MAX_LINEAR_VELOCITY = 1.0' - The maximum velocity for linear jogs, in machine units per second.
de: 'MAX_LINEAR_VELOCITY = 1.0' - Die maximale Geschwindigkeit für lineare Jogs, in Maschineneinheiten pro Sekunde.

note: type: Plain text
en: 'MIN_LINEAR_VELOCITY = .01' - The approximate lowest value the jog slider.
de: 'MIN_LINEAR_VELOCITY = .01' - Der annähernd niedrigste Wert des Jog-Sliders.

note: type: Plain text
en: 'DEFAULT_ANGULAR_VELOCITY = .25' - The default velocity for angular jogs, in machine units per second.
de: 'DEFAULT_ANGULAR_VELOCITY = .25' - Die Standard-Geschwindigkeit für Winkelbewegungen, in Maschineneinheiten pro Sekunde.

note: type: Plain text
en: 'MIN_ANGULAR_VELOCITY = .01' - The approximate lowest value the angular jog slider.
de: 'MIN_ANGULAR_VELOCITY = .01' - Der ungefähre niedrigste Wert des Winkelschiebereglers.

note: type: Plain text
en: 'MAX_ANGULAR_VELOCITY = 1.0' - The maximum velocity for angular jogs, in machine units per second.
de: 'MAX_ANGULAR_VELOCITY = 1.0' - Die maximale Geschwindigkeit für Winkelbewegungen, in Maschineneinheiten pro Sekunde.

note: type: Plain text
en: 'INCREMENTS = 1 mm, .5 in, ...' - Defines the increments available for incremental jogs.  The INCREMENTS can be used to override the default.  The values can be decimal numbers (e.g., 0.1000) or fractional numbers (e.g., 1/16), optionally followed by a unit (cm, mm, um, inch, in or mil).  If a unit is not specified the machine unit is assumed.  Metric and imperial distances may be mixed: INCREMENTS = 1 inch, 1 mil, 1 cm, 1 mm, 1 um is a valid entry.
de: 'INCREMENTS = 1 mm, .5 in, ...' - Definiert die verfügbaren Inkremente für inkrementelles Joggen.  Die INCREMENTS können verwendet werden, um die Standardeinstellung zu überschreiben.  Die Werte können Dezimalzahlen (z. B. 0.1000 - mit Dezimalpunkt) oder Bruchzahlen (z. B. 1/16) sein, optional gefolgt von einer Einheit (cm, mm, um, inch, in oder mil).  Ohne Angabe einer Einheit wird die Maschineneinheit angenommen.  Metrische und imperiale Abstände können gemischt werden: INCREMENTS = 1 inch, 1 mil, 1 cm, 1 mm, 1 um ist eine gültige Eingabe.

note: type: Plain text
en: 'GRIDS = 10 mm, 1 in, ...' - Defines the preset values for grid lines.  The value is interpreted the same way as 'INCREMENTS'.
de: 'GRIDS = 10 mm, 1 in, ...' - Definiert die voreingestellten Werte für Gitterlinien.  Der Wert wird auf die gleiche Weise interpretiert wie 'INCREMENTS'.

note: type: Plain text
en: 'OPEN_FILE = /full/path/to/file.ngc' - The file to show in the preview plot when AXIS starts.  Use a blank string "" and no file will be loaded at start up.  gmoccapy will not use this setting, as it offers a corresponding entry on its settings page.
de: 'OPEN_FILE = /full/path/to/file.ngc' - Die Datei, die beim Start von AXIS in der Vorschau angezeigt wird.  Verwenden Sie eine leere Zeichenkette "", wird beim Start keine Datei geladen. gmoccapy verwendet diese Einstellung nicht, da es einen entsprechenden Eintrag auf seiner Einstellungsseite anbietet.

note: type: Plain text
en: 'EDITOR = gedit' - The editor to use when selecting File > Edit to edit the G-code from the AXIS menu.  This must be configured for this menu item to work.  Another valid entry is gnome-terminal -e vim.  This entry does not apply to gmoccapy, as gmoccapy has an integrated editor.
de: 'EDITOR = gedit' - Der Editor, der verwendet werden soll, wenn Sie Datei > Bearbeiten wählen, um den G-Code im Menü AXIS zu bearbeiten.  Dieser muss konfiguriert werden, damit dieser Menüpunkt funktioniert.  Ein anderer gültiger Eintrag ist gnome-terminal -e vim.  Dieser Eintrag gilt nicht für gmoccapy, da gmoccapy einen integrierten Editor hat.

note: type: Plain text
en: 'TOOL_EDITOR = tooledit' - The editor to use when editing the tool table (for example by selecting "File > Edit tool table..." in Axis).  Other valid entries are "gedit", "gnome-terminal -e vim", and "gvim".  This entry does not apply to gmoccapy, as gmoccapy has an integrated editor.
de: 'TOOL_EDITOR = tooledit' - Der Editor, der bei der Bearbeitung der Werkzeugtabelle verwendet wird (zum Beispiel durch Auswahl von "Datei > Werkzeugtabelle bearbeiten..." in Axis).  Andere gültige Einträge sind "gedit", "gnome-terminal -e vim", und "gvim".  Dieser Eintrag gilt nicht für gmoccapy, da gmoccapy einen integrierten Editor hat.

note: type: Plain text
en: 'PYVCP = /filename.xml' - The PyVCP panel description file.  See the <<cha:pyvcp,PyVCP Chapter>>for more information.
de: 'PYVCP = /filename.xml' - Die PyVCP-Panel-Beschreibungsdatei.  Siehe das <<cha:pyvcp,PyVCP-Kapitel>> für weitere Informationen.

note: type: Plain text
en: 'PYVCP_POSITION = BOTTOM' - The placement of the PyVCP panel in the AXIS user interface.  If this variable is omitted the panel will default to the right side. The only valid alternative is BOTTOM. See the <<cha:pyvcp,PyVCP Chapter>> for more information.
de: 'PYVCP_POSITION = BOTTOM' - Die Position des PyVCP-Panels in der AXIS-Benutzeroberfläche.  Wird diese Variable weggelassen, dann wird das Panel standardmäßig auf der rechten Seite platziert. Die einzige gültige Alternative ist BOTTOM (engl. für unten). Weitere Informationen finden Sie im <<cha:pyvcp,PyVCP-Kapitel>>.

note: type: Plain text
en: 'LATHE = 1' - Any non-empty value (including "0") causes axis to use "lathe mode" with a top view and with Radius and Diameter on the DRO.
de: 'LATHE = 1' - Jeder nicht leere Wert (einschließlich "0") bewirkt, dass die Achse den Drehmaschinenmodus mit Draufsicht und mit Radius und Durchmesser auf dem DRO anzeigt.

note: type: Plain text
en: 'BACK_TOOL_LATHE = 1' - Any non-empty value (including "0") causes axis to use "back tool lathe mode" with inverted X axis.
de: 'BACK_TOOL_LATHE = 1' - Jeder nicht leere Wert (einschließlich "0") bewirkt, dass die Achse den "Back Tool Lathe Modus" mit invertierter X-Achse verwendet.

note: type: Plain text
en: 'FOAM = 1' - Any non-empty value (including "0") causes axis to change the display for foam-cutter mode.
de: 'FOAM = 1' - Jeder nicht leere Wert (einschließlich "0") veranlasst die Achse, die Anzeige für den Schaumstoffschneidermodus zu ändern.

note: type: Plain text
en: 'GEOMETRY = XYZABCUVW' - Controls the *preview* and *backplot* of motion.  This item consists of a sequence of axis letters and control characters, optionally preceeded with a "-" sign:
de: 'GEOMETRIE = XYZABCUVW' - Steuert die *Vorschau* und *Hintergrunddarstellung* der Bewegung.  Dieses Element besteht aus einer Folge von Achsenbuchstaben und Steuerzeichen, denen optional ein "-" Zeichen vorangestellt ist:

note: type: Plain text
en: The letters X, Y, Z specify translation along the named coordinate.
de: Die Buchstaben X, Y, Z geben die Verschiebung entlang der genannten Koordinate an.

note: type: Plain text
en: The letters A, B, C specify rotation about the corresponding axes X, Y, Z.
de: Die Buchstaben A, B, C bezeichnen die Drehung um die entsprechenden Achsen X, Y, Z.

note: type: Plain text
en: The letters U, V, W specify translation along the related axes X, Y, Z.
de: Die Buchstaben U, V, W geben die Verschiebung entlang der entsprechenden Achsen X, Y, Z an.

note: type: Plain text
en: Each letter specified must occur in [TRAJ]COORDINATES to have an effect.
de: Jeder angegebene Buchstabe muss in [TRAJ]COORDINATES vorkommen, um eine Wirkung zu haben.

note: type: Plain text
en: A "*-*" character preceding any letter inverts the direction of the operation.
de: Ein "*-*" Zeichen vor einem beliebigen Buchstaben kehrt die Richtung der Operation um.

note: type: Plain text
en: The translation and rotation operations are evaluated *right-to-left*.  So using GEOMETRY=XYZBC specifies a C rotation followed by a B rotation followed by Z, Y, X translations.  (The ordering of consecutive translation letters is immaterial.)
de: Die Translations- und Rotationsoperationen werden *von rechts nach links* ausgewertet.  Die Verwendung von GEOMETRY=XYZBC gibt also eine C-Drehung gefolgt von einer B-Drehung gefolgt von einem Versatz von Z, Y, X an.  (Die Reihenfolge der aufeinanderfolgenden Versatz-Buchstaben hat keine Auswirkung.)

note: type: Plain text
en: If the "*!*" special character appears anywhere in the sequence, rotations for the A, B, C axis letters respect the offsets (G5x, G92) applied to X, Y, Z.
de: Wenn das Sonderzeichen "*!*" irgendwo in der Sequenz auftaucht, werden die Drehungen für die Buchstaben der A-, B- und C-Achse unter Berücksichtigung der auf X, Y und Z angewandten Offsets (G5x, G92) durchgeführt.

note: type: Plain text
en: The proper GEOMETRY string depends on the machine configuration and the kinematics used to control it. The order of the letters is important.  For example, rotating around C then B is different than rotating around B then C.
de: Die richtige GEOMETRY-Zeichenkette hängt von der Maschinenkonfiguration und der zur Steuerung verwendeten Kinematik ab. Die Reihenfolge der Buchstaben ist wichtig.  Zum Beispiel ist eine Drehung um C und dann B etwas anderes als eine Drehung um B gefolgt von einer um C.

note: type: Plain text
en: Rotations are by default applied with respect to the machine origin.  Example: GEOMETRY=CXYZ first translates the control point to X, Y, Z and then performs a C rotation about the Z axis centered at the machine origin.
de: Drehungen werden standardmäßig in Bezug auf den Maschinenursprung angewendet.  Beispiel: GEOMETRIE=CXYZ verschiebt den Kontrollpunkt zunächst nach X, Y, Z und führt dann eine C-Drehung um die Z-Achse aus, die auf den Maschinenursprung zentriert ist.

note: type: Plain text
en: Rotations applied after translations may use the "*!*" provision to act with respect to the current machine offset. Example: GEOMETRY=!CXYZ translates the control point to the X, Y, Z position and then performs a C rotation about the machine origin displaced by the current G5x,G92 X, Y, Z offsets.  (Changing offsets may require a program reload).
de: Bei Drehungen, die nach einem Versatz angewendet werden, kann die Bestimmung "*!*" verwendet werden, um in Bezug auf den aktuellen Maschinenversatz zu wirken. Beispiel: GEOMETRY=!CXYZ übersetzt den Kontrollpunkt in die X, Y, Z-Position und führt dann eine C-Drehung um den Maschinenursprung aus, der um die aktuellen G5x,G92 X, Y, Z-Offsets verschoben ist.  (Das Ändern von Offsets kann ein Neuladen des Programms erfordern).

note: type: Plain text
en: UVW translation example: GEOMETRY=XYZUVW causes UVW to move in the coordinate system of the tool and XYZ to move in the coordinate system of the material.
de: Beispiel für UVW-Verschiebung: GEOMETRY=XYZUVW bewirkt, dass UVW im Koordinatensystem des Werkzeugs und XYZ im Koordinatensystem des Materials verschoben wird.

note: type: Plain text
en: Foam-cutting machines (FOAM = 1) should specify "XY;UV" or leave the value blank even though this value is presently ignored in foam-cutter mode.  A future version may define what ";" means, but if it does "XY;UV" will mean the same as the current foam default.
de: Schaumstoff-(engl. foam-)schneidemaschinen (FOAM = 1) sollten "XY;UV" angeben oder den Wert leer lassen, auch wenn dieser Wert derzeit im Schaumstoffschneidemodus ignoriert wird.  In einer zukünftigen Version kann definiert werden, was ";" bedeutet, aber wenn dies der Fall ist, wird "XY;UV" dasselbe bedeuten wie die aktuelle Voreinstellung.

note: type: Plain text
en: If no [DISPLAY]GEOMETRY is included in the INI file, a default is provided by the [DISPLAY]DISPLAY GUI program (typically "XYZABCUVW")
de: Ist keine [DISPLAY]GEOMETRY in der INI-Datei beschrieben, wird ein Standardwert durch das [DISPLAY]DISPLAY-GUI-Programm bereitgestellt (normalerweise "XYZABCUVW")

note: type: Plain text
en: 'ARCDIVISION = 64' - Set the quality of preview of arcs.  Arcs are previewed by dividing them into a number of straight lines; a semicircle is divided into *ARCDIVISION* parts.  Larger values give a more accurate preview, but take longer to load and result in a more sluggish display.  Smaller values give a less accurate preview, but take less time to load and may result in a faster display.  The default value of 64 means a circle of up to 3 inches will be displayed to within 1 mil (.03%).
de: 'ARCDIVISION = 64' - Legt die Qualität der Vorschau von Bögen fest.  Bögen werden in der Vorschau in eine Anzahl von geraden Linien unterteilt; ein Halbkreis wird in *ARCDIVISION*-viele Teile unterteilt.  Größere Werte führen zu einer genaueren Vorschau, aber auch zu längeren Ladezeiten und einer trägeren Darstellung.  Kleinere Werte ergeben eine weniger genaue Vorschau, benötigen aber weniger Zeit zum Laden und können zu einer schnelleren Darstellung führen.  Der Standardwert von 64 bedeutet, dass ein Kreis von bis zu 3 Zoll mit einer Genauigkeit von 1 mil (.03%) angezeigt wird.

note: type: Plain text
en: 'MDI_HISTORY_FILE =' - The name of a local MDI history file.  If this is not specified Axis will save the MDI history in *.axis_mdi_history* in the user's home directory.  This is useful if you have multiple configurations on one computer.
de: 'MDI_HISTORY_FILE =' - Der Name einer lokalen MDI-Verlauf-Datei.  Wenn dies nicht angegeben wird, speichert Axis den MDI-Verlauf in *.axis_mdi_history* im Home-Verzeichnis des Benutzers.  Dies ist nützlich, wenn Sie mehrere Konfigurationen auf einem Computer haben.

note: type: Plain text
en: 'JOG_AXES =' - The order in which jog keys are assigned to axis letters.  The left and right arrows are assigned to the first axis letter, up and down to the second, page up/page down to the third, and left and right bracket to the fourth.  If unspecified, the default is determined from the [TRAJ]COORDINATES, [DISPLAY]LATHE and [DISPLAY]FOAM values.
de: 'JOG_AXES =' - Die Reihenfolge, in der die JOG-Tasten den Achsenbuchstaben zugewiesen werden.  Der linke und der rechte Pfeil werden dem ersten Achsenbuchstaben zugewiesen, Auf und Ab dem zweiten, Seite auf/Seite ab dem dritten und linke und rechte Klammer dem vierten.  Wenn keine Angaben gemacht werden, wird die Vorgabe von den Angaben zu [TRAJ]COORDINATES, [DISPLAY]LATHE und [DISPLAY]FOAM bestimmt.

note: type: Plain text
en: 'JOG_INVERT =' - For each axis letter, the jog direction is inverted.  The default is "X" for lathes and blank otherwise.
de: 'JOG_INVERT =' - Für jeden Achsenbuchstaben wird die Schrittrichtung invertiert.  Die Voreinstellung ist "X" für Drehmaschinen und sonst leer.

note: type: Plain text
en: The settings for 'JOG_AXES' and 'JOG_INVERT' apply to world mode jogging by axis coordinate letter and are in effect while in world mode after successful homing.  When operating in joint mode prior to homing, keyboard jog keys are assigned in a fixed sequence: left/right: joint0, up/down: joint1, page up/page down: joint2, left/right bracket: joint3
de: Die Einstellungen für 'JOG_AXES' und 'JOG_INVERT' gelten für das Joggen im Weltmodus nach Achsenkoordinatenbuchstaben und sind nach erfolgreicher Referenzfahrt im Weltmodus wirksam.  Beim Betrieb im Gelenkmodus vor der Referenzfahrt sind die Tastatur-Jog-Tasten in einer festen Reihenfolge zugewiesen: links/rechts: Gelenk0, auf/ab: Gelenk1, Seite auf/Seite ab: Gelenk2, linke/rechte Klammer: Gelenk3

note: type: Plain text
en: 'USER_COMMAND_FILE = mycommands.py' - The name of an optional, configuration-specific Python file sourced by the axis GUI instead of the user-specific file `~/.axisrc`.
de: 'USER_COMMAND_FILE = mycommands.py' - Der Name einer optionalen, konfigurationsspezifischen Python-Datei, die von der Achsen-GUI anstelle der benutzerspezifischen Datei `~/.axisrc` bezogen wird.

note: type: Plain text
en: The following [DISPLAY] item is used by the TKLinuxCNC interface only.
de: Der folgende Abschnitt [DISPLAY] (engl. für Anzeige) wird nur von der TKLinuxCNC-Schnittstelle verwendet.

note: type: Plain text
en: 'HELP_FILE = tklinucnc.txt' - Path to help file.
de: 'HELP_FILE = tklinucnc.txt' - Pfad zur Hilfedatei.

note: type: Title ===
en: [FILTER] Section(((INI File,Sections,[FILTER] Section)))
de: [FILTER] Abschnitt(((INI-Datei,Sections,Abschnitte,[FILTER] Abschnitt)))

note: type: Plain text
en: AXIS and gmoccapy have the ability to send loaded files through a filter program.  This filter can do any desired task: Something as simple as making sure the file ends with M2, or something as complicated as detecting whether the input is a depth image, and generating G-code to mill the shape it defines. The [FILTER] section of the INI file controls how filters work. First, for each type of file, write a PROGRAM_EXTENSION line.  Then, specify the program to execute for each type of file. This program is given the name of the input file as its first argument, and must write RS274NGC code to standard output. This output is what will be displayed in the text area, previewed in the display area, and executed by LinuxCNC when Run.
de: AXIS und gmoccapy haben die Möglichkeit, geladene Dateien durch ein Filterprogramm zu schicken.  Dieser Filter kann jede gewünschte Aufgabe erfüllen: Etwas so Einfaches wie sicherzustellen, dass die Datei mit M2 endet, oder etwas so Kompliziertes wie die Erkennung, ob es sich bei der Eingabe um ein Tiefenbild handelt, und die Erzeugung von G-Code zum Fräsen der definierten Form. Der Abschnitt [FILTER] der INI-Datei steuert, wie die Filter funktionieren. Schreiben Sie zunächst für jeden Dateityp eine PROGRAM_EXTENSION-Zeile.  Dann geben Sie das Programm an, das für jeden Dateityp ausgeführt werden soll. Dieses Programm erhält den Namen der Eingabedatei als erstes Argument und muss RS274NGC-Code in die Standardausgabe schreiben. Diese Ausgabe ist das, was im Textbereich angezeigt wird, in der Vorschau im Anzeigebereich, und dann auch von LinuxCNC ausgeführt wird.

note: type: Plain text
en: `PROGRAM_EXTENSION = .extension Description`
de: `PROGRAM_EXTENSION = .extension Beschreibung`

note: type: Plain text
en: If your post processor outputs files in all caps you might want to add the following line:
de: Wenn Ihr Postprozessor Dateien in Großbuchstaben ausgibt, sollten Sie die folgende Zeile hinzufügen:

note: type: Plain text
en: The following lines add support for the image-to-G-code converter included with LinuxCNC.
de: Die folgenden Zeilen fügen Unterstützung hinzu für die Bild-zu-G-Code-Konverterung mit LinuxCNC.

note: type: Plain text
en: An example of a custom G-code converter located in the linuxcnc directory.
de: Ein Beispiel für einen benutzerdefinierten G-Code-Konverter, der sich im Verzeichnis linuxcnc befindet.

note: type: Plain text
en: The program file associated with an extension must have either the full path to the program or be located in a directory that is on the system path.
de: Die Programmdatei, die mit einer Erweiterung verknüpft ist, muss entweder den vollständigen Pfad zum Programm enthalten oder sich in einem Verzeichnis befinden, das sich im Systempfad befindet.

note: type: Plain text
en: It is also possible to specify an interpreter:
de: Es ist auch möglich, einen Interpreter anzugeben:

note: type: Plain text
en: In this way, any Python script can be opened, and its output is treated as G-code. One such example script is available at nc_files/holecircle.py. This script creates G-code for drilling a series of holes along the circumference of a circle. Many more G-code generators are on the LinuxCNC Wiki site http://wiki.linuxcnc.org/[http://wiki.linuxcnc.org/].
de: Auf diese Weise kann jedes Python-Skript geöffnet werden, und seine Ausgabe wird als G-Code behandelt. Ein solches Beispielskript ist unter nc_files/holecircle.py verfügbar. Dieses Skript erzeugt G-Code für das Bohren einer Reihe von Löchern entlang des Umfangs eines Kreises. Viele weitere G-Code Generatoren sind auf der LinuxCNC Wiki Seite http://wiki.linuxcnc.org/[http://wiki.linuxcnc.org/].

note: type: Plain text
en: Python filters should use the print function to output the result to Axis.
de: Python-Filter sollten die Funktion print verwenden, um das Ergebnis an Axis auszugeben.

note: type: Plain text
en: This example program filters a file and adds a W axis to match the Z axis.  It depends on there being a space between each axis word to work.
de: Dieses Beispielprogramm filtert eine Datei und fügt eine W-Achse hinzu, die der Z-Achse entspricht.  Damit es funktioniert, muss zwischen jedem Achsenwort ein Leerzeichen stehen.

note: type: Plain text
en: `FILTER_PROGRESS=%d`
    If the environment variable AXIS_PROGRESS_BAR is set, then lines written to stderr of the form above sets the AXIS progress bar to the given percentage. This feature should be used by any filter that runs for a long time.
de: `FILTER_PROGRESS=%d` +
    If the environment variable AXIS_PROGRESS_BAR is set, then lines written to stderr of the form above sets the AXIS progress bar to the given percentage. This feature should be used by any filter that runs for a long time.

note: type: Title ===
en: [RS274NGC] Section(((INI File,Sections,[RS274NGC] Section)))
de: [RS274NGC] Abschnitt(((INI-Datei, Abschnitte, [RS274NGC] Abschnitt)))

note: type: Plain text
en: 'PARAMETER_FILE = myfile.var' - (((PARAMETER FILE)))  The file located in the same directory as the INI file which contains the parameters used by the interpreter (saved between runs).
de: 'PARAMETER_FILE = myfile.var' - (((PARAMETER FILE)))  Die Datei, die sich im gleichen Verzeichnis wie die INI-Datei befindet und die vom Interpreter verwendeten Parameter enthält (zwischen den Läufen gespeichert).

note: type: Plain text
en: 'ORIENT_OFFSET = 0' - (((ORIENT OFFSET)))  A float value added to the R word parameter of an <<mcode:m19,M19 Orient Spindle>> operation.  Used to define an arbitrary zero position regardless of encoder mount orientation.
de: 'ORIENT_OFFSET = 0' - (((ORIENT OFFSET)))  Eine Gleitkommazahl, die zum R-Wort-Parameter einer <<mcode:m19,M19 Orient Spindle>> Operation hinzugefügt wird.  Wird verwendet, um eine beliebige Nullposition zu definieren, unabhängig von der Ausrichtung der Encoder.

note: type: Plain text
en: 'RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92 G94 G97 G98' - (((RS274NGC STARTUP CODE)))  A string of NC codes that the interpreter is initialized with. This is not a substitute for specifying modal G-codes at the top of each ngc file, because the modal codes of machines differ, and may be changed by G-code interpreted earlier in the session.
de: 'RS274NGC_STARTUP_CODE = G17 G20 G40 G49 G64 P0.001 G80 G90 G92 G94 G97 G98' - (((RS274NGC STARTUP CODE)))  Eine Folge von NC-Codes, mit denen der Interpreter initialisiert wird. Dies ist kein Ersatz für die Angabe von modalen G-Codes am Anfang jeder ngc-Datei, da die modalen Codes der Maschinen unterschiedlich sind und durch einen früher in der Sitzung interpretierten G-Code geändert werden können.

note: type: Plain text
en: 'SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs' - (((SUBROUTINE PATH)))  Specifies a colon (:) separated list of up to 10 directories to be searched when single-file subroutines are specified in G-code. These directories are searched after searching [DISPLAY]PROGRAM_PREFIX (if it is specified) and before searching [WIZARD]WIZARD_ROOT (if specified). The paths are searched in the order that they are listed. The first matching subroutine file found in the search is used. Directories are specified relative to the current directory for the INI file or as absolute paths. The list must contain no intervening whitespace.
de: 'SUBROUTINE_PATH = ncsubroutines:/tmp/testsubs:lathesubs:millsubs' - (((SUBROUTINE PATH)))  Gibt eine durch Doppelpunkt (:) getrennte Liste von bis zu 10 Verzeichnissen an, die durchsucht werden sollen, wenn Unterprogramme in einer einzigen Datei im G-Code angegeben werden. Diese Verzeichnisse werden nach der Suche in [DISPLAY]PROGRAM_PREFIX (falls angegeben) und vor der Suche in [WIZARD]WIZARD_ROOT (falls angegeben) durchsucht. Die Pfade werden in der Reihenfolge durchsucht, in der sie aufgelistet sind. Die als erste bei der Suche gefundene passende Unterprogrammdatei wird verwendet. Die Verzeichnisse werden relativ zum aktuellen Verzeichnis für die INI-Datei oder als absolute Pfade angegeben. Die Liste darf keine Leerzeichen dazwischen enthalten.

note: type: Plain text
en: 'CENTER_ARC_RADIUS_TOLERANCE_INCH = n' Default 0.00005
de: 'CENTER_ARC_RADIUS_TOLERANCE_INCH = n' Voreinstellung 0.00005

note: type: Plain text
en: 'CENTER_ARC_RADIUS_TOLERANCE_MM = n' Default 0.00127
de: 'CENTER_ARC_RADIUS_TOLERANCE_MM = n' Voreinstellung 0.00127

note: type: Plain text
en: 'USER_M_PATH = myfuncs:/tmp/mcodes:experimentalmcodes' - (((USER M PATH)))  Specifies a list of colon (:) separated directories for user defined functions.  Directories are specified relative to the current directory for the INI file or as absolute paths.  The list must contain no intervening whitespace.
de: 'USER_M_PATH = myfuncs:/tmp/mcodes:experimentalmcodes' - (((USER M PATH)))  Gibt eine Liste von durch Doppelpunkt (:) getrennten Verzeichnissen für benutzerdefinierte Funktionen an.  Die Verzeichnisse werden relativ zum aktuellen Verzeichnis für die INI-Datei oder als absolute Pfade angegeben.  Die Liste darf keine Leerzeichen dazwischen enthalten.

note: type: Plain text
en: A search is made for each possible user defined function, typically (M100-M199). The search order is:
de: Es wird nach jeder möglichen benutzerdefinierten Funktion gesucht, typischerweise (M100-M199). Die Reihenfolge der Suche ist:

note: type: Plain text
en: [DISPLAY]PROGRAM_PREFIX (if specified)
de: [ANZEIGE]PROGRAM_PREFIX (falls angegeben)

note: type: Plain text
en: If [DISPLAY]PROGRAM_PREFIX is not specified, search the default location: nc_files
de: Wenn [DISPLAY]PROGRAM_PREFIX nicht angegeben ist, wird der Standardspeicherort gesucht: nc_files

note: type: Plain text
en: Then search each directory in the list [RS274NGC]USER_M_PATH
de: Dann wird jedes Verzeichnis in der Liste [RS274NGC]USER_M_PATH durchsucht

note: type: Plain text
en: The first executable M1xx found in the search is used for each M1xx.
de: Für jeden M1xx wird der erste bei der Suche gefundene ausführbare M1xx verwendet.

note: type: Plain text
en: The maximum number of USER_M_PATH directories is defined at compile time (typ: 'USER_DEFINED_FUNCTION_MAX_DIRS == 5').
de: Die maximale Anzahl der USER_M_PATH-Verzeichnisse wird zur Kompilierzeit festgelegt (typ: 'USER_DEFINED_FUNCTION_MAX_DIRS == 5').

note: type: Plain text
en: 'INI_VARS = 1' Default 1
    Allows G-code programs to read values from the INI file using the format #<_ini[section]name>. See <<sec:overview-parameters,G-code Parameters>>.
de: 'INI_VARS = 1' Standardwert 1
    Erlaubt G-Code-Programmen, Werte aus der INI-Datei im Format #<_ini[section]name> zu lesen. Siehe <<sec:overview-parameters,G-code Parameter>>.

note: type: Plain text
en: 'HAL_PIN_VARS = 1' Default 1
    Allows G-code programs to read the values of HAL pins using the format #<_hal[HAL item]>. Variable access is read-only. See <<sec:overview-parameters,G-code Parameters>> for more details and an important caveat.
de: 'HAL_PIN_VARS = 1' Voreinstellung 1
    Erlaubt G-Code-Programmen das Lesen der Werte von HAL-Pins unter Verwendung des Formats #<_hal[HAL item]>. Der Zugriff auf die Variablen ist schreibgeschützt. Siehe <<sec:overview-parameters,G-code Parameter>> für weitere Details und eine wichtige Warnung.

note: type: Plain text
en: 'RETAIN_G43 = 0' Default 0
    When set, you can  turn on G43 after loading the first tool, and then not worry about it through the program. When you finally unload the last tool, G43 mode is canceled.
de: 'RETAIN_G43 = 0' Voreinstellung 0
    Wenn diese Option eingestellt ist, können Sie G43 nach dem Laden des ersten Werkzeugs einschalten und müssen sich dann nicht mehr um das Programm kümmern.  Wenn Sie schließlich das letzte Werkzeug entladen, wird der G43-Modus deaktiviert.

note: type: Plain text
en: 'OWORD_NARGS = 0' Default 0
    If this feature is enabled then a called subroutine can determine the number of actual positional parameters passed by inspecting the +#<n_args>+ parameter.
de: 'OWORD_NARGS = 0' Voreinstellung 0
    Wenn diese Funktion aktiviert ist, kann ein aufgerufenes Unterprogramm die Anzahl der tatsächlich übergebenen Positionsparameter ermitteln, indem es den +#<n_args>+ Parameter untersucht.

note: type: Plain text
en: 'NO_DOWNCASE_OWORD = 0' Default 0
    Preserve case in O-word names within comments if set, enables reading of mixed-case HAL items in structured comments like '(debug, #<_hal[MixedCaseItem])'.
de: 'NO_DOWNCASE_OWORD = 0' Voreinstellung 0
    Groß- und Kleinschreibung in O-Wort-Namen innerhalb von Kommentaren beibehalten, falls gesetzt, ermöglicht das Lesen von HAL-Elementen mit gemischter Groß- und Kleinschreibung in strukturierten Kommentaren wie '(debug, #<_hal[MixedCaseItem])'.

note: type: Plain text
en: 'OWORD_WARNONLY = 0' Default 0
    Warn rather than error in case of errors in O-word subroutines.
de: 'OWORD_WARNONLY = 0' Voreinstellung 0
    Warnung statt Fehler bei Fehlern in O-Wort-Unterprogrammen.

note: type: Plain text
en: 'DISABLE_G92_PERSISTENCE = 0' Default 0 Allow to clear the G92 offset automatically when config start-up.
de: 'DISABLE_G92_PERSISTENCE = 0' Voreinstellung 0 Erlaubt das automatische Löschen des G92-Offsets beim Start der Konfiguration.

note: type: Plain text
en: 'DISABLE_FANUC_STYLE_SUB = 0' Default 0 If there is reason to disable Fanuc subroutines set it to 1.
de: 'DISABLE_FANUC_STYLE_SUB = 0' Standardwert 0 Wenn es einen Grund gibt, Fanuc-Unterprogramme zu deaktivieren, setzen Sie diesen Wert auf 1.

note: type: delimited block =
en: The above six options were controlled by the 'FEATURES' bitmask in versions of LinuxCNC prior to 2.8. This INI tag will no longer work.
    For reference:
de: Die oben genannten sechs Optionen wurden durch die 'FEATURES' Bitmaske in Versionen von LinuxCNC vor 2.8 gesteuert. Dieser INI-Tag wird nicht mehr funktionieren.
    Als Referenz:

note: type: delimited block =
en: [WIZARD]WIZARD_ROOT is a valid search path but the Wizard has not been fully implemented and the results of using it are unpredictable.
de: [WIZARD]WIZARD_ROOT ist ein gültiger Suchpfad, aber der Assistent ist noch nicht vollständig implementiert und die Ergebnisse seiner Verwendung sind unvorhersehbar.

note: type: delimited block =
en: 'LOG_LEVEL = 0' Default 0 Specify the log_level (default: -1)
de: 'LOG_LEVEL = 0', Default 0, Bestimmt log_level (Voreinstellung: -1)

note: type: delimited block =
en: 'LOG_FILE = file-name.log' For specify the file used for log the data.
de: 'LOG_FILE = file-name.log' Zur Angabe der Datei, die für die Protokollierung der Daten verwendet wird.

note: type: delimited block =
en: 'REMAP=M400 modalgroup=10 argspec=Pq ngc=myprocedure' See <<cha:remap,Remap Extending G-code>> chapter for details.
de: 'REMAP=M400 modalgroup=10 argspec=Pq ngc=myprocedure' Siehe das <<cha:remap,Remap Erweiterung von G-Code>> Kapitel für Details.

note: type: delimited block =
en: 'ON_ABORT_COMMAND=O <on_abort> call' See <<cha:remap,Remap Extending G-code>> chapter for details.
de: 'ON_ABORT_COMMAND=O <on_abort> call' Siehe das <<cha:remap,Remap Erweiterung von G-Code>> Kapitel für Details.

note: type: Title ===
en: [EMCMOT] Section(((INI File,Sections,[EMCMOT] Section)))
de: [EMCMOT] Abschnitt(((INI-Datei,Sections,Abschnitte,[EMCMOT] Abschnitt)))

note: type: delimited block =
en: This section is a custom section and is not used by LinuxCNC directly. Most configurations use values from this section to load the motion controller. For more information on the motion controller see the <<sec:motion,Motion>> section.
de: Dieser Abschnitt ist ein benutzerdefinierter Abschnitt und wird nicht von LinuxCNC direkt verwendet. Die meisten Konfigurationen verwenden Werte aus diesem Abschnitt, um den Motion-Controller zu laden. Für weitere Informationen über die Motion-Controller siehe die <<sec:motion,Motion>> Abschnitt.

note: type: delimited block =
en: 'EMCMOT = motmod' - the motion controller name is typically used here.
de: 'EMCMOT = motmod' - hier wird in der Regel der Name des Motion Controllers verwendet.

note: type: delimited block =
en: 'BASE_PERIOD = 50000' - the 'Base' task period in nanoseconds.
de: 'BASE_PERIOD = 50000' - die 'Basis' (engl. base) Taskdauer in Nanosekunden.

note: type: delimited block =
en: 'SERVO_PERIOD = 1000000' - This is the "Servo" task period in nanoseconds.
de: 'SERVO_PERIOD = 1000000' - Dies ist die "Servo" Task Periode in Nanosekunden.

note: type: delimited block =
en: 'TRAJ_PERIOD = 100000' - This is the 'Trajectory Planner' task period in nanoseconds.
de: 'TRAJ_PERIOD = 100000' - Dies ist die Aufgabenperiode (engl. 'task period') des Trajektorienplaners (engl. 'trajectory planner') in Nanosekunden.

note: type: delimited block =
en: 'COMM_TIMEOUT = 1.0' - Number of seconds to wait for Motion (the realtime part of the motion controller) to acknowledge receipt of messages from Task (the non-realtime part of the motion controller).
de: 'COMM_TIMEOUT = 1.0' - Anzahl der Sekunden, die gewartet wird, bis Motion (der Echtzeitteil des Bewegungssteuerungssystems) den Empfang von Nachrichten von Task (dem Nicht-Echtzeitteil des Bewegungssteuerungssystems) bestätigt.

note: type: delimited block =
en: HOMEMOD = alternate_homing_module [home_parms=value] The HOMEMOD variable is optional.  If specified, use a specified (user-built)  module instead of the default (homemod).  Module parameters (home_parms) may be included if supported by the named module.  The setting may be overridden from the command line using the -m option ($ linuxcnc -h)
de: HOMEMOD = alternate_homing_module [home_parms=value] Die Variable HOMEMOD ist optional.  Wenn sie angegeben ist, wird ein bestimmtes (vom Benutzer erstelltes) Modul anstelle des Standardmoduls (homemod) verwendet.  Modulparameter (home_parms) können einbezogen werden, wenn sie von dem angegebenen Modul unterstützt werden.  Die Einstellung kann von der Befehlszeile aus mit der Option -m überschrieben werden ($ linuxcnc -h)

note: type: Title ===
en: [TASK] Section(((INI File,Sections,[TASK] Section)))
de: [TASK] Abschnitt(((INI-Datei,Sections,Abschnitte,[TASK] Abschnitt)))

note: type: delimited block =
en: 'TASK = milltask' - Specifies the name of the 'task' executable. The 'task' executable does various things, such as communicate with the UIs over NML, communicate with the realtime motion planner over non-HAL shared memory, and interpret G-code.  Currently there is only one task executable that makes sense for 99.9% of users, milltask.
de: 'TASK = milltask' - Gibt den Namen der 'Task' ausführbaren Datei an. Die ausführbare Datei 'task' erledigt verschiedene Aufgaben, wie z.B. die Kommunikation mit den Benutzeroberflächen über NML, die Kommunikation mit dem Echtzeit-Bewegungsplaner über nicht-HAL Shared Memory und die Interpretation von G-Code.  Derzeit gibt es nur eine ausführbare Aufgabe, die für 99,9 % der Benutzer sinnvoll ist: milltask.

note: type: delimited block =
en: 'CYCLE_TIME = 0.010' - The period, in seconds, at which TASK will run. This parameter affects the polling interval when waiting for motion to complete, when executing a pause instruction, and when accepting a command from a user interface. There is usually no need to change this number.
de: 'CYCLE_TIME = 0.010' - Der Zeitraum in Sekunden, in dem TASK ausgeführt wird. Dieser Parameter wirkt sich auf das Abfrageintervall aus, wenn auf den Abschluss einer Bewegung gewartet wird, wenn ein Pausenbefehl ausgeführt wird und wenn ein Befehl von einer Benutzeroberfläche angenommen wird. In der Regel ist es nicht erforderlich, diese Zahl zu ändern.

note: type: Title ===
en: [HAL] section(((INI File,Sections,[HAL] Section)))
de: [HAL] Abschnitt(((INI-Datei,Sections,Abschnitte,[HAL] Abschnitt)))

note: type: delimited block =
en: 'HALFILE = example.hal' - Execute the file 'example.hal' at start up.
de: 'HALFILE = example.hal' - Führt die Datei 'example.hal' beim Start aus.

note: type: delimited block =
en: If 'HALFILE' is specified multiple times, the files are executed in the order they appear in the INI file.  Almost all configurations will have at least one 'HALFILE', and stepper systems typically have two such files, one which specifies the generic stepper configuration ('core_stepper.hal') and one which specifies the machine pin out ('xxx_pinout.hal').
de: 'HALFILE = example.hal' - Führt die Datei 'example.hal' beim Starten aus.  Wenn 'HALFILE' mehrfach angegeben wird, werden die Dateien in der Reihenfolge ausgeführt, in der sie in der INI-Datei stehen.  Fast alle Konfigurationen haben mindestens eine 'HALFILE', und Steppersysteme haben typischerweise zwei solcher Dateien, eine zur Spezifikation der allgemeinen Stepperkonfiguration ('core_stepper.hal') und eine für die Beschreibung der Pinbelegung der Maschine ('xxx_pinout.hal').

note: type: delimited block =
en: HALFILES are found using a search.  If the named file is found in the directory containing the INI file, it is used.  If the named file is not found in this INI file directory, a search is made using a system library of HAL files.
de: HALFILES werden durch eine Suche gefunden.  Wenn die benannte Datei in dem Verzeichnis gefunden wird, das die INI-Datei enthält, wird sie verwendet.  Wird die benannte Datei nicht in diesem INI-Dateiverzeichnis gefunden, wird eine Systembibliothek mit HAL-Dateien durchsucht.

note: type: delimited block =
en: If LinuxCNC is started with the `linuxcnc` script using the "`-H dirname`" option, the specified dirname is prepended to the search described above so that "dirname" is searched first.  The "`-H dirname`" option may be specified more than once, directories are prepended in order.
de: Wenn LinuxCNC mit dem Skript `linuxcnc` unter Verwendung der Option "`-H dirname`" gestartet wird, dann wird der angegebene Verzeichnisname der oben beschriebenen Suche vorangestellt, so dass "dirname" zuerst durchsucht wird.  Die Option "`-H dirname`" kann mehr als einmal angegeben werden, die Verzeichnisse werden in der Reihenfolge vorangestellt.

note: type: delimited block =
en: A HALFILE may also be specified as an absolute path (when the name starts with a '/' character).  Absolute paths are not recommended as their use may limit relocation of configurations.
de: Eine HALFILE kann auch als absoluter Pfad angegeben werden (wenn der Name mit einem '/' Zeichen beginnt).  Absolute Pfade werden nicht empfohlen, da ihre Verwendung das Verschieben von Konfigurationen einschränken kann.

note: type: delimited block =
en: 'HALFILE = texample.tcl [arg1 [arg2] ...]' - Execute the tcl file 'texample.tcl' at start up with arg1, arg2, etc as argv list.  Files with a .tcl suffix are processed as above but use haltcl for processing See the <<cha:haltcl,HALTCL Chapter>> for more information.
de: 'HALFILE = texample.tcl [arg1 [arg2] ...]' - Führt die tcl Datei 'texample.tcl' beim Start mit arg1, arg2, etc als ::argv Liste aus.  Dateien mit dem Suffix .tcl werden wie oben beschrieben verarbeitet, verwenden aber haltcl zur Verarbeitung. Weitere Informationen finden Sie im Kapitel <cha:haltcl,HALTCL>>.

note: type: delimited block =
en: 'HALFILE = LIB:sys_example.hal' - Execute the system library file 'sys_example.hal' at start up.  Explicit use of the LIB: prefix causes use of the system library HALFILE without searching the INI file directory.
de: 'HALFILE = LIB:sys_example.hal' - Führt die Systembibliotheksdatei 'sys_example.hal' beim Starten aus.  Die explizite Verwendung des Präfixes LIB: bewirkt, dass die Systembibliothek HALFILE verwendet wird, ohne das Verzeichnis der INI-Datei zu durchsuchen.

note: type: delimited block =
en: 'HALFILE = LIB:sys_texample.tcl [arg1 [arg2 ...]]' - Execute the system library file 'sys_texample.tcl' at start up.  Explicit use of the LIB: prefix causes use of the system library HALFILE without searching the INI file directory.
de: 'HALFILE = LIB:sys_texample.tcl [arg1 [arg2 ...]]' - Führt die Systembibliotheksdatei 'sys_texample.tcl' beim Starten aus.  Die explizite Verwendung des Präfixes LIB: bewirkt, dass die Systembibliothek HALFILE verwendet wird, ohne dass das Verzeichnis der INI-Datei durchsucht wird.

note: type: delimited block =
en: HALFILE items specify files that loadrt HAL components and make signal connections between component pins.  Common mistakes are 1) omission of the addf statement needed to add a component's function(s) to a thread, 2)  incomplete signal (net) specifiers.  Omission of required addf statements is almost always an error.  Signals usually include one or more input connections and a single output (but both are not strictly required).  A system library file is provided to make checks for these conditions and report to stdout and in a popup GUI:
de: HALFILE-Elemente spezifizieren Dateien, die HAL-Komponenten laden und Signalverbindungen zwischen Komponentenpins herstellen.  Häufige Fehler sind 1) das Fehlen der addf-Anweisung, die benötigt wird, um die Funktion(en) einer Komponente zu einem Thread hinzuzufügen, 2) unvollständige Signal-(Netz-)Spezifizierungen.  Das Weglassen der erforderlichen addf-Anweisungen ist fast immer ein Fehler.  Signale umfassen in der Regel eine oder mehrere Eingangsverbindungen und einen einzelnen Ausgang (beides ist jedoch nicht unbedingt erforderlich).  Eine Systembibliotheksdatei wird bereitgestellt, um diese Bedingungen zu prüfen und auf stdout und in einer Popup-GUI zu melden:

note: type: Plain text
en: The LIB:halcheck.tcl line should be the last [HAL]HALFILE.  Specify the 'nopopup' option to suppress the popup message and allow immediate starting.  Connections made using a POSTGUI_HALFILE are not checked.
de: Die Zeile LIB:halcheck.tcl sollte die letzte [HAL]HALFILE sein.  Geben Sie die Option 'nopopup' an, um die Popup-Meldung zu unterdrücken und einen sofortigen Start zu ermöglichen.  Die über eine POSTGUI_HALFILE hergestellen Verbindungen werden nicht geprüft.

note: type: Plain text
en: 'TWOPASS = ON' - Use twopass processing for loading HAL components.  With TWOPASS processing, [HAL]HALFILE= lines are processed in two passes.  In the first pass (pass0), all HALFILES are read and multiple appearances of loadrt and loadusr commands are accumulated.  These accumulated load commands are executed at the end of pass0.  This accumulation allows load lines to be specified more than once for a given component (provided the names= names used are unique on each use).  In the second pass (pass1), the HALFILES are reread and all commands except the previously executed load commands are executed.
de: 'TWOPASS = ON' - Verwenden Sie die Verarbeitung in zwei Durchgängen für das Laden von HAL-Komponenten.  Bei der TWOPASS-Verarbeitung werden die [HAL]HALFILE=-Zeilen in zwei Durchgängen verarbeitet.  Im ersten Durchlauf (pass0) werden alle HALFILES gelesen und mehrfache Auftritte von loadrt- und loadusr-Befehlen kumuliert.  Diese kumulierten Ladebefehle werden am Ende von pass0 ausgeführt.  Durch diese Akkumulation können Ladezeilen für ein bestimmtes Bauteil mehr als einmal angegeben werden (vorausgesetzt, die verwendeten names= Namen sind bei jeder Verwendung eindeutig).  Im zweiten Durchlauf (pass1) werden die HALFILES erneut eingelesen und alle Befehle außer den zuvor ausgeführten Ladebefehlen ausgeführt.

note: type: Plain text
en: 'TWOPASS = nodelete verbose' - The TWOPASS feature can be activated with any non-null string including the keywords verbose and nodelete.  The verbose keyword causes printing of details to stdout.  The nodelete keyword preserves temporary files in /tmp.
de: 'TWOPASS = nodelete verbose' - Die TWOPASS-Funktion kann mit jeder Zeichenkette, die nicht Null ist, aktiviert werden, einschließlich der Schlüsselwörter verbose und nodelete.  Das Schlüsselwort verbose bewirkt die Ausgabe von Details auf stdout.  Das Schlüsselwort nodelete bewahrt temporäre Dateien in /tmp.

note: type: Plain text
en: For more information see the <<cha:hal-twopass,HAL TWOPASS>> chapter.
de: Weitere Informationen finden Sie im Kapitel <<cha:hal-twopass,HAL TWOPASS>>.

note: type: Plain text
en: 'HALCMD = command' - Execute 'command' as a single HAL command.  If 'HALCMD' is specified multiple times, the commands are executed in the order they appear in the INI file.  'HALCMD' lines are executed after all 'HALFILE' lines.
de: 'HALCMD = command' - Führt 'command' als einzelnen HAL-Befehl aus.  Wenn 'HALCMD' mehrfach angegeben wird, werden die Befehle in der Reihenfolge ausgeführt, in der sie in der INI-Datei erscheinen. 'HALCMD' Zeilen werden nach allen 'HALFILE' Zeilen ausgeführt.

note: type: Plain text
en: 'SHUTDOWN = shutdown.hal' - Execute the file 'shutdown.hal' when LinuxCNC is exiting.  Depending on the hardware drivers used, this may make it possible to set outputs to defined values when LinuxCNC is exited normally. However, because there is no guarantee this file will be executed (for instance, in the case of a computer crash) it is not a replacement for a proper physical e-stop chain or other protections against software failure.
de: 'SHUTDOWN = shutdown.hal' - Führt die Datei 'shutdown.hal' aus, wenn LinuxCNC beendet wird.  Abhängig von den verwendeten Hardware-Treibern, kann dies es möglich machen, Ausgänge auf definierte Werte zu setzen, wenn LinuxCNC normal beendet wird. Da es jedoch keine Garantie dafür gibt, dass diese Datei ausgeführt wird (z.B. im Falle eines Computerabsturzes), ist sie kein Ersatz für eine korrekte physische E-Stop-Kette oder andere Schutzmaßnahmen gegen Softwarefehler.

note: type: Plain text
en: 'POSTGUI_HALFILE = example2.hal' - Execute 'example2.hal' after the GUI has created its HAL pins. Some GUIs create HAL pins and support the use of a postgui halfile to use them. GUIs that support postgui HAL files include Touchy, Axis, Gscreen, and gmoccapy.
    See section <<sec:pyvcp-with-axis,pyVCP with Axis>> for more information.
de: 'POSTGUI_HALFILE = example2.hal' - Führen Sie 'example2.hal' aus, nachdem die GUI ihre HAL-Pins erstellt hat. Einige GUIs erzeugen HAL-Pins und unterstützen die Verwendung einer Postgui-HAL-Datei, um sie zu nutzen. Zu den GUIs, die postgui halffiles unterstützen, gehören Touchy, Axis, Gscreen und gmoccapy.
    Siehe Abschnitt <<sec:pyvcp-with-axis,pyVCP with Axis>> für weitere Informationen.

note: type: Plain text
en: 'HALUI = halui' - adds the HAL user interface pins.
    For more information see the <<cha:hal-user-interface,HAL User Interface>> chapter.
de: 'HALUI = halui' - fügt die HAL-Benutzerschnittstellen-Pins hinzu.
    Für weitere Informationen siehe das Kapitel <<cha:hal-user-interface,HAL Benutzerschnittstelle>> (engl. HAL user interface).

note: type: Title ===
en: [HALUI] section(((INI File,Sections,[HALUI] Section)))
de: [HALUI] Abschnitt(((INI-Datei,Sections,Abschnitte,[HALUI] Abschnitt)))

note: type: Plain text
en: 'MDI_COMMAND = G53 G0 X0 Y0 Z0' - An MDI command can be executed by using halui.mdi-command-00. Increment the number for each command listed in the [HALUI] section.
de: 'MDI_COMMAND = G53 G0 X0 Y0 Z0' - Ein MDI-Befehl kann mit halui.mdi-command-00 ausgeführt werden. Erhöhen Sie die Zahl für jeden im Abschnitt [HALUI] aufgeführten Befehl.

note: type: Title ===
en: [APPLICATIONS] Section(((INI File,Sections,[APPLICATIONS] Section)))
de: [APPLICATIONS] Abschnitt(((INI-Datei,Sections,Abschnitte, Abschnitt [APPLICATIONS])))

note: type: Plain text
en: LinuxCNC can start other applications before the specified GUI is started.  The applications can be started after a specified delay to allow for GUI-dependent actions (like creating GUI-specific HAL pins).
de: LinuxCNC kann andere Anwendungen starten, bevor die angegebene Benutzeroberfläche gestartet wird.  Die Anwendungen können nach einer bestimmten Verzögerung gestartet werden, um GUI-abhängige Aktionen zu ermöglichen (wie das Erstellen von GUI-spezifischen HAL-Pins).

note: type: Plain text
en: 'DELAY = value' - seconds to wait beore starting other applications.  A delay may be needed if an application has dependencies on [HAL]POSTGUI_HALFILE actions or GUI-created HAL pins (default DELAY=0).
de: 'DELAY = value' - Sekunden, die vor dem Start anderer Anwendungen gewartet werden.  Eine Verzögerung kann erforderlich sein, wenn eine Anwendung Abhängigkeiten von [HAL]POSTGUI_HALFILE-Aktionen oder von durch das GUI erstellten HAL Pins hat (Standard DELAY=0).

note: type: Plain text
en: 'APP = appname [arg1 [arg2 ...]]' - Application to be started. This specification can be included multiple times. The appname can be explicitly named as an absolute or tilde specified filename (first character is / or ~), a relative filename (first characters of filename are ./), or as a file in the inifile directory. If no executable file is found using these names, then the user search PATH is used to find the application.
    Examples:
de: 'APP = appname [arg1 [arg2 ...]]' - Zu startende Anwendung. Diese Angabe kann mehrfach enthalten sein. Der Anwendungsname kann explizit als absoluter oder mit Tilde angegebener Dateiname (erstes Zeichen ist / oder ~), als relativer Dateiname (erste Zeichen des Dateinamens sind ./) oder als Datei im Verzeichnis inifile angegeben werden. Wird keine ausführbare Datei mit diesen Namen gefunden, wird die Anwendung über die Benutzersuche PATH gefunden.
    Beispiele:

note: type: Plain text
en: Simulate inputs to HAL pins for testing (using sim_pin -- a simple GUI to set inputs to parameters, unconnected pins, or signals with no writers):
de: Simulation von Eingängen an HAL-Pins zum Testen (unter Verwendung von sim_pin -- einer einfachen Benutzeroberfläche zum Setzen von Eingängen an Parameter, nicht angeschlossene Pins oder Signale ohne Schreiber):

note: type: Plain text
en: Invoke halshow with a previuosly saved watchlist.  Since LinuxCNC sets the working directory to the directory for the INI file, you can refer to files in that directory (example: my.halshow):
de: Rufen Sie halshow mit einer zuvor gespeicherten Beobachtungsliste auf.  Da LinuxCNC das Arbeitsverzeichnis auf das Verzeichnis für die INI-Datei setzt, können Sie auf Dateien in diesem Verzeichnis verweisen (Beispiel: my.halshow):

note: type: Plain text
en: Alternatively, a watchlist file identified with a full pathname could be specified:
de: Alternativ kann auch eine Watchlist-Datei mit einem vollständigen Pfadnamen angegeben werden:

note: type: Plain text
en: Open halscope using a previously saved configuration:
de: Öffnen Sie halscope mit einer zuvor gespeicherten Konfiguration:

note: type: Title ===
en: [TRAJ] Section(((INI File,Sections,[TRAJ] Section)))
de: Abschnitt [TRAJ] (((INI-Datei, Sections, Abschnitte, Abschnitt [TRAJ])))

note: type: delimited block =
en: The new Trajectory Planner (TP) is on by default. If you have no TP settings in your [TRAJ] section - LinuxCNC defaults to:
    ARC_BLEND_ENABLE = 1
    ARC_BLEND_FALLBACK_ENABLE = 0
    ARC_BLEND_OPTIMIZATION_DEPTH = 50
    ARC_BLEND_GAP_CYCLES = 4
    ARC_BLEND_RAMP_FREQ = 100
de: Die neue Trajectorien Planer (TP) (engl. trajectory planner) ist standardmäßig aktiv. Wenn Sie keine TP-Einstellungen in Ihrem [TRAJ]-Abschnitt haben - LinuxCNC standardmäßig auf:
    ARC_BLEND_ENABLE = 1
    ARC_BLEND_FALLBACK_ENABLE = 0
    ARC_BLEND_OPTIMIZATION_DEPTH = 50
    ARC_BLEND_GAP_CYCLES = 4
    ARC_BLEND_RAMP_FREQ = 100

note: type: Plain text
en: The [TRAJ] section contains general parameters for the trajectory planning module in 'motion'.
de: Der Abschnitt [TRAJ] enthält allgemeine Parameter für das Trajektorienplanungsmodul in 'motion'.

note: type: Plain text
en: 'ARC_BLEND_ENABLE = 1' - Turn on new TP.  If set to 0 TP uses parabolic blending (1 segment look ahead).  Default value 1.
de: 'ARC_BLEND_ENABLE = 1' - Neuen TP einschalten.  Wenn auf 0 gesetzt, verwendet TP parabolisches Blending (1 Segment vorausschauend).  Standardwert 1.

note: type: Plain text
en: 'ARC_BLEND_FALLBACK_ENABLE = 0' - Optionally fall back to parabolic blends if the estimated speed is faster.  However, this estimate is rough, and it seems that just disabling it gives better performance.  Default value 0.
de: 'ARC_BLEND_FALLBACK_ENABLE = 0' - Optionaler Rückgriff auf parabolische Blends, wenn die geschätzte Geschwindigkeit höher ist.  Diese Schätzung ist jedoch grob, und es scheint, dass die Deaktivierung eine bessere Leistung erzielt.  Standardwert 0.

note: type: Plain text
en: 'ARC_BLEND_OPTIMIZATION_DEPTH = 50' - Look ahead depth in number of segments.
de: 'ARC_BLEND_OPTIMIZATION_DEPTH = 50' - Vorausschauende Tiefe in Anzahl der Segmente.

note: type: Plain text
en: To expand on this a bit, you can choose this value somewhat arbitrarily.  Here's a formula to estimate how much 'depth' you need for a particular config:
de: Um dies ein wenig zu erweitern, können Sie diesen Wert einigermaßen willkürlich wählen.  Hier's eine Formel, um zu schätzen, wie viel 'Tiefe' Sie für eine bestimmte Konfiguration benötigen:

note: type: delimited block -
en: # n = v_max / (2.0 * a_max * t_c)
    # where:
    # n = optimization depth
    # v_max = max axis velocity (UU / sec)
    # a_max = max axis acceleration (UU / sec)
    # t_c = servo period (seconds)
de: # n = v_max / (2.0 * a_max * t_c)
    # wobei:
    # n = Optimierungstiefe
    # v_max = maximale Achsengeschwindigkeit (UU / sec)
    # a_max = maximale Achsenbeschleunigung (UU / sec)
    # t_c = Servo-Periode (Sekunden)

note: type: Plain text
en: 10 / (2.0 * 100 * 0.001) = 50 segments to always reach maximum velocity along the fastest axis.
de: 10 / (2,0 * 100 * 0,001) = 50 Segmente, um immer die maximale Geschwindigkeit entlang der schnellsten Achse zu erreichen.

note: type: Plain text
en: In practice, this number isn't that important to tune, since the look ahead rarely needs the full depth unless you have lots of very short segments. If during testing, you notice strange slowdowns and can't figure out where they come from, first try increasing this depth using the formula above.
de: In der Praxis ist die Einstellung dieser Zahl nicht so wichtig, da die Vorausschau selten die volle Tiefe benötigt, es sei denn, Sie haben viele sehr kurze Segmente. Wenn Sie beim Testen merkwürdige Verlangsamungen bemerken und nicht herausfinden können, woher sie kommen, versuchen Sie zunächst, diese Tiefe mit Hilfe der obigen Formel zu erhöhen.

note: type: Plain text
en: If you still see strange slowdowns, it may be because you have short segments in the program. If this is the case, try adding a small tolerance for Naive CAM detection. A good rule of thumb is this:
de: Wenn Sie immer noch seltsame Verlangsamungen feststellen, kann das daran liegen, dass Sie kurze Segmente im Programm haben. Wenn dies der Fall ist, versuchen Sie, eine kleine Toleranz für die naive CAM-Erkennung hinzuzufügen. Eine gute Faustregel ist diese:

note: type: delimited block -
en: # min_length ~= v_req * t_c
    # where:
    # v_req = desired velocity in UU / sec
    # t_c = servo period (seconds)
de: # min_length ~= v_req * t_c
    # wobei:
    # v_req = gewünschte Geschwindigkeit in UU / sec
    # t_c = Servoperiode (Sekunden)

note: type: Plain text
en: If you want to travel along a path at 1 IPS = 60 IPM, and your servo period is 0.001 sec, then any segments shorter than min_length will slow the path down. If you set Naive CAM tolerance to around this min length, overly short segments will be combined together to eliminate this bottleneck. Of course, setting the tolerance too high means big path deviations, so you have to play with it a bit to find a good value. I'd start at 1/2 of the min_length, then work up as needed.
de: Wenn Sie eine Bahn mit 1 IPS = 60 IPM fahren wollen und Ihre Servoperiode 0,001 Sekunden beträgt, dann verlangsamen alle Segmente, die kürzer als min_length sind, die Bahn. Wenn Sie die Naive CAM-Toleranz auf etwa diese Mindestlänge einstellen, werden zu kurze Segmente zusammengefasst, um diesen Engpass zu beseitigen. Wenn Sie die Toleranz zu hoch einstellen, bedeutet das natürlich große Pfadabweichungen, so dass Sie ein wenig damit spielen müssen, um einen guten Wert zu finden. Ich würde mit 1/2 der Mindestlänge beginnen und dann nach Bedarf erhöhen.

note: type: Plain text
en: 'ARC_BLEND_GAP_CYCLES = 4' How short the previous segment must be before the trajectory planner 'consumes' it.
de: 'ARC_BLEND_GAP_CYCLES = 4' Wie kurz das vorherige Segment sein muss, bevor es vom Trajektorienplaner 'verbraucht' wird.

note: type: Plain text
en: Often, a circular arc blend will leave short line segments in between the blends. Since the geometry has to be circular, we can't blend over all of a line if the next one is a little shorter. Since the trajectory planner has to touch each segment at least once, it means that very tiny segments will slow things down significantly. My fix to this way to "consume" the short segment by making it a part of the blend arc. Since the line+blend is one segment, we don't have to slow down to hit the very short segment. Likely, you won't need to touch this setting.
de: Bei einer Kreisbogenüberblendung bleiben oft kurze Liniensegmente zwischen den Überblendungen übrig. Da die Geometrie kreisförmig sein muss, können wir nicht eine ganze Linie überblenden, wenn die nächste etwas kürzer ist. Da der Trajektorienplaner jedes Segment mindestens einmal berühren muss, bedeutet dies, dass sehr kleine Segmente die Dinge erheblich verlangsamen. Meine Lösung für dieses Problem besteht darin, das kurze Segment zu "verbrauchen", indem ich es zu einem Teil des Überblendungsbogens mache. Da die Linie und die Überblendung ein einziges Segment sind, müssen wir nicht langsamer werden, um das sehr kurze Segment zu treffen. Wahrscheinlich brauchen Sie diese Einstellung nicht zu ändern.

note: type: Plain text
en: 'ARC_BLEND_RAMP_FREQ = 20' - This is a 'cutoff' frequency for using ramped velocity.
de: 'ARC_BLEND_RAMP_FREQ = 20' - Dies ist eine 'cutoff' Frequenz für die Verwendung von rampenförmigen Geschwindigkeiten.

note: type: Plain text
en: 'Ramped velocity' in this case just means constant acceleration over the whole segment.  This is less optimal than a trapezoidal velocity profile, since the acceleration is not maximized.  However, if the segment is short enough, there isn't enough time to accelerate much before we hit the next segment.  Recall the short line segments from the previous example.  Since they're lines, there's no cornering acceleration, so we're free to accelerate up to the requested speed.  However, if this line is between two arcs, then it will have to quickly decelerate again to be within the maximum speed of the next segment.  This means that we have a spike of acceleration, then a spike of deceleration, causing a large jerk, for very little performance gain.  This setting is a way to eliminate this jerk for short segments.
de: 'Ramped velocity' bedeutet in diesem Fall eine konstante Beschleunigung über das gesamte Segment.  Dies ist weniger optimal als ein trapezförmiges Geschwindigkeitsprofil, da die Beschleunigung nicht maximiert wird.  Wenn das Segment jedoch kurz genug ist, bleibt nicht genug Zeit, um viel zu beschleunigen, bevor wir das nächste Segment erreichen.  Erinnern Sie sich an die kurzen Streckenabschnitte aus dem vorherigen Beispiel.  Da es sich um Linien handelt, gibt es keine Kurvenbeschleunigung, wir können also bis zur gewünschten Geschwindigkeit beschleunigen.  Wenn sich diese Linie jedoch zwischen zwei Bögen befindet, muss sie schnell wieder abbremsen, um innerhalb der Höchstgeschwindigkeit des nächsten Segments zu liegen.  Das bedeutet, dass wir eine Beschleunigungsspitze und dann eine Abbremsspitze haben, was zu einem großen Ruck führt und nur einen geringen Leistungsgewinn bringt.  Mit dieser Einstellung lässt sich dieses Ruckeln bei kurzen Segmenten vermeiden.

note: type: Plain text
en: Basically, if a segment will complete in less time than 1 / ARC_BLEND_RAMP_FREQ, we don't bother with a trapezoidal velocity profile on that segment, and use constant acceleration. (Setting ARC_BLEND_RAMP_FREQ = 1000 is equivalent to always using trapezoidal acceleration, if the servo loop is 1 kHz).
de: Grundsätzlich gilt: Wird ein Segment in weniger als 1 / ARC_BLEND_RAMP_FREQ abgeschlossen, dann wird kein trapezförmiges Geschwindigkeitsprofil für dieses Segment verwendet, sondern eine konstante Beschleunigung. (Die Einstellung ARC_BLEND_RAMP_FREQ = 1000 ist gleichbedeutend mit der Verwendung einer trapezförmigen Beschleunigung, wenn die Servoschleife 1 kHz hat).

note: type: Plain text
en: You can characterize the worst-case loss of performance by comparing the velocity that a trapezoidal profile reaches vs. the ramp:
de: Sie können den schlimmsten Leistungsverlust charakterisieren, indem Sie die maximale Geschwindigkeit eines trapezförmiges Profils vergleichen mit der durch eine Rampe zu erreichenden:

note: type: delimited block -
en: # v_ripple = a_max / (4.0 * f)
    # where:
    # v_ripple = average velocity "loss" due to ramping
    # a_max = max axis acceleration
    # f = cutoff frequency from INI
de: # v_ripple = a_max / (4.0 * f)
    # wobei:
    # v_ripple = durchschnittliche Geschwindigkeit "Verlust" aufgrund von Rampen
    # a_max = maximale Achsenbeschleunigung
    # f = Grenzfrequenz aus INI

note: type: Plain text
en: Finally, no amount of tweaking will speed up a tool path with lots of small, tight corners, since you're limited by cornering acceleration.
de: Und schließlich können Sie einen Werkzeugweg mit vielen kleinen, engen Kurven nicht beschleunigen, da Sie durch die Kurvenbeschleunigung eingeschränkt sind.

note: type: Plain text
en: 'SPINDLES = 3' - The number of spindles to support. It is imperative that this number matches the "num_spindles" parameter passed to the motion module.
de: 'SPINDLES = 3' - Die Anzahl der zu unterstützenden Spindeln. Diese Zahl muss unbedingt mit dem Parameter "num_spindles" übereinstimmen, der an das Bewegungsmodul übergeben wird.

note: type: Plain text
en: 'COORDINATES = X Y Z' - The names of the axes being controlled.  Only X, Y, Z, A, B, C, U, V, W are valid. Only axes named in 'COORDINATES' are accepted in G-code.  It is permitted to write an axis name more than once (e.g., X Y Y Z for a gantry machine).  For the common 'trivkins kinematics', joint numbers are assigned in sequence according to the trivkins parameter 'coordinates='.  So, for trivkins 'coordinates=xz', joint0 corresponds to X and joint1 corresponds to Z.  See the kinematics man page ('$ man kins') for information on trivkins and other kinematics modules.
de: 'COORDINATES = X Y Z' - Die Namen der gesteuerten Achsen.  Nur X, Y, Z, A, B, C, U, V, W sind gültig. Nur die in 'COORDINATES' genannten Achsen werden im G-Code akzeptiert.  Es ist erlaubt, einen Achsennamen mehr als einmal zu schreiben (z.B. X Y Y Z für eine Gantry-Maschine).  Bei der üblichen 'trivkins-Kinematik' werden die Gelenknummern der Reihe nach gemäß dem trivkins-Parameter 'coordinates=' vergeben.  Für trivkins 'coordinates=xz' entspricht joint0 also X und joint1 entspricht Z. Informationen zu trivkins und anderen Kinematikmodulen finden Sie in der Manpage Kinematics ('$ man kins').

note: type: Plain text
en: 'LINEAR_UNITS = <units>' - (((LINEAR UNITS))) Specifies the 'machine units' for linear axes.  Possible choices are mm or inch.  This does not affect the linear units in NC code (the G20 and G21 words do this).
de: 'LINEAR_UNITS = <units>' - (((LINEAR UNITS))) Gibt die 'Maschineneinheiten' für lineare Achsen an.  Mögliche Auswahlen sind mm oder inch (engl. für Zoll).  Dies hat keinen Einfluss auf die linearen Einheiten im NC-Code (die Wörter G20 und G21 tun dies).

note: type: Plain text
en: 'DEFAULT_LINEAR_VELOCITY = 0.0167' - The initial rate for jogs of linear axes, in machine units per second. The value shown in 'Axis' equals machine units per minute.
de: 'DEFAULT_LINEAR_VELOCITY = 0.0167' - Die anfängliche Geschwindigkeit für Jogs von Linearachsen, in Maschineneinheiten pro Sekunde. Der in 'Axis' angezeigte Wert entspricht den Maschineneinheiten pro Minute.

note: type: Plain text
en: 'DEFAULT_LINEAR_ACCELERATION = 2.0' - In machines with nontrivial kinematics, the acceleration used for "teleop" (Cartesian space) jogs, in 'machine units' per second per second.
de: 'DEFAULT_LINEAR_ACCELERATION = 2.0' - In Maschinen mit nicht trivialer Kinematik, die Beschleunigung für "teleop" (kartesischer Raum) Jogging, in 'Maschineneinheiten' pro Sekunde pro Sekunde.

note: type: Plain text
en: 'MAX_LINEAR_VELOCITY = 5.0' - (((MAX VELOCITY))) The maximum velocity for any axis or coordinated move, in 'machine units' per second.  The value shown equals 300 units per minute.
de: 'MAX_LINEAR_VELOCITY = 5.0' - (((MAX VELOCITY))) Die maximale Geschwindigkeit für eine beliebige Achse oder koordinierte Bewegung, in 'Maschineneinheiten' pro Sekunde.  Der angezeigte Wert entspricht 300 Einheiten pro Minute.

note: type: Plain text
en: 'MAX_LINEAR_ACCELERATION = 20.0' - (((MAX ACCELERATION))) The maximum acceleration for any axis or coordinated axis move, in 'machine units' per second per second.
de: 'MAX_LINEAR_ACCELERATION = 20.0' - (((MAX ACCELERATION))) Die maximale Beschleunigung für jede Achse oder koordinierte Achsenbewegung, in 'Maschineneinheiten' pro Sekunde.

note: type: Plain text
en: 'POSITION_FILE = position.txt' - If set to a non-empty value, the joint positions are stored between runs in this file.  This allows the machine to start with the same coordinates it had on shutdown.  This assumes there was no movement of the machine while powered off.  If unset, joint positions are not stored and will begin at 0 each time LinuxCNC is started.  This can help on smaller machines without home switches.  If using the Mesa resolver interface this file can be used to emulate absolute encoders and eliminate the need for homing (with no loss of accuracy).  See the hostmot2 manpage for more details.
de: 'POSITION_FILE = position.txt' - Wenn auf einen nicht leeren Wert gesetzt, werden die Gelenkpositionen zwischen den Läufen in dieser Datei gespeichert.  Dadurch kann die Maschine mit denselben Koordinaten starten, die sie beim Herunterfahren hatte.  Dabei wird davon ausgegangen, dass die Maschine im ausgeschalteten Zustand nicht bewegt wurde.  Wenn nicht gesetzt, sind gemeinsame Positionen nicht gespeichert und wird bei 0 beginnen jedes Mal, wenn LinuxCNC gestartet wird.  Dies kann auf kleineren Maschinen ohne Home-Schalter helfen.  Bei Verwendung der Mesa Resolver-Schnittstelle kann diese Datei verwendet werden, um absolute Encoder zu emulieren und die Notwendigkeit für die Referenzfahrt (ohne Verlust der Genauigkeit) zu beseitigen.  Siehe die hostmot2 Manpage für weitere Details.

note: type: Plain text
en: 'NO_FORCE_HOMING = 1' - The default behavior is for LinuxCNC to force the user to home the machine before any MDI command or a program is run.  Normally, only jogging is allowed before homing.  For configurations using identity kinematics, setting NO_FORCE_HOMING = 1 allows the user to make MDI moves and run programs without homing the machine first. Interfaces using identity kinematics without homing ability will need to have this option set to 1.
de: 'NO_FORCE_HOMING = 1' - Das Standardverhalten ist für LinuxCNC, um den Benutzer zu zwingen, eine Referenzfahrt durchzuführen, bevor ein MDI-Befehl oder ein Programm ausgeführt wird.  Normalerweise ist nur Jogging vor der Referenzfahrt erlaubt.  Bei Konfigurationen, die Identitätskinematiken verwenden, erlaubt die Einstellung NO_FORCE_HOMING = 1 dem Benutzer, MDI-Bewegungen auszuführen und Programme zu starten, ohne die Maschine zuerst zu referenzieren. Bei Schnittstellen, die Identitätskinematiken ohne Referenzfahrtmöglichkeit verwenden, muss diese Option auf 1 gesetzt werden.

note: type: delimited block =
en: LinuxCNC will not know your joint travel limits when using 'NO_FORCE_HOMING = 1'.
de: LinuxCNC kennt die Grenzen (engl. limits) der Gelenke nicht, wenn 'NO_FORCE_HOMING = 1' gesetzt.

note: type: Plain text
en: 'HOME = 0 0 0 0 0 0 0 0 0' - World home position needed for kinematics modules that compute world coordinates using kinematicsForward() when switching from joint to teleop mode.  Up to nine coordinate values (X Y Z A B C U V W)  may be specified, unused trailing items may be omitted. This value is only used for machines with nontrivial kinematics. On machines with trivial kinematics (mill, lathe, gantry types) this value is ignored.  Note: the sim hexapod config requires a non-zero value for the Z coordinate.
de: 'HOME = 0 0 0 0 0 0 0 0' - Welt-Referenzpunkt-(engl. home)-Position, die für Kinematik-Module benötigt wird, um die Weltkoordinaten mit kinematicsForward() berechnen, wenn sie vom Joint- in den Teleop-Modus wechseln.  Es können bis zu neun Koordinatenwerte (X, Y, Z, A, B, C, U, V, W) angegeben werden, unbenutzte Nachkommastellen können weggelassen werden. Dieser Wert wird nur für Maschinen mit nicht trivialer Kinematik verwendet. Bei Maschinen mit trivialer Kinematik (Fräsmaschinen, Drehmaschinen, Gantry-Typen) wird dieser Wert ignoriert.  Hinweis: Die Hexapod-Konfiguration von sim erfordert einen Wert ungleich Null für die Z-Koordinate.

note: type: Plain text
en: 'TPMOD = alternate_trajectory_planning module' [tp_parms=value]
    The TPMOD variable is optional.  If specified, use a specified (user-built) module instead of the default (tpmod).  Module parameters (tp_parms) may be included if supported by the named module.  The setting may be overridden from the command line using the -t option ($ linuxcnc -h).
de: 'TPMOD = alternate_trajectory_planning Modul' [tp_parms=Wert]
    Die TPMOD-Variable ist optional.  Falls angegeben, verwenden Sie ein angegebenes (benutzerdefiniertes) Modul anstelle des Standardmoduls (tpmod).  Modulparameter (tp_parms) können enthalten sein, wenn sie vom benannten Modul unterstützt werden.  Die Einstellung kann über die Befehlszeile mit der Option -t ($ linuxcnc -h) überschrieben werden.

note: type: Plain text
en: 'NO_PROBE_JOG_ERROR = 0' - Allow to bypass probe tripped check when you jog manually.
de: 'NO_PROBE_JOG_ERROR = 0' - Erlaubt die Umgehung der Prüfung, ob der Fühler ausgelöst hat, wenn Sie manuell joggen.

note: type: Plain text
en: 'NO_PROBE_HOME_ERROR = 0' - Allow to bypass probe tripped check when homing is in progress.
de: 'NO_PROBE_HOME_ERROR = 0' - Erlaubt die Umgehung der Prüfung, ob die Sonde ausgelöst wurde, während die Referenzfahrt läuft.

note: type: Title ===
en: [KINS] Section(((INI File,Sections,KINS Section)))
de: [KINS] Abschnitt(((INI-Datei,Sections, Abschnitte,KINS-Abschnitt)))

note: type: Plain text
en: 'JOINTS = 3' - Specifies the number of joints (motors) in the system.  For example, a trivkins XYZ machine with a single motor for each axis has 3 joints.  A gantry machine with one motor on each of two of the axes, and two motors on the third axis, has 4 joints.  (This config variable may be used by a GUI to set the number of joints (num_joints) specified to the motion module (motmod)).
de: 'JOINTS = 3' - Gibt die Anzahl der Gelenke (Motoren) im System an.  Eine Trivkins XYZ-Maschine mit einem Motor pro Achse hat beispielsweise 3 Gelenke.  Eine Gantry-Maschine mit je einem Motor auf zwei Achsen und zwei Motoren auf der dritten Achse hat 4 Gelenke.  (Diese Konfigurationsvariable kann von einer Benutzeroberfläche verwendet werden, um die Anzahl der Gelenke (num_joints) zu setzen, die dem Bewegungsmodul (motmod) angegeben wurde).

note: type: Plain text
en: 'KINEMATICS = trivkins' - Specify a kinematics module for the motion module.  Guis may use this variable to specify the loadrt line in HAL files for the motmod module.  For more information on kinematics modules see the manpage: '$ man kins'
de: 'KINEMATICS = trivkins' - Geben Sie ein Kinematikmodul für das Bewegungsmodul an.  Guis können diese Variable verwenden, um die loadrt-Zeile in HAL-Dateien für das motmod-Modul anzugeben.  Weitere Informationen zu Kinematikmodulen finden Sie in der Manpage: '$ man kins'

note: type: Title ===
en: [AXIS_<letter>] Section(((INI File,Sections,[AXIS_<letter>] Sections)))
de: [AXIS_<letter>] Abschnitt(((INI-Datei,Sections,Abschnitte,[AXIS_<letter>] Abschnitte)))

note: type: Plain text
en: The <letter> specifies one of: X Y Z A B C U V W
de: Der <letter> (engl. Buchstabe) gibt einen der folgenden Buchstaben an: X Y Z A B C U V W

note: type: Plain text
en: 'MAX_VELOCITY = 1.2' - Maximum velocity for this axis in <<sub:ini:sec:traj,machine units>> per second.
de: 'MAX_VELOCITY = 1.2' - Maximale Geschwindigkeit für diese Achse in <sub:ini:sec:traj,Maschineneinheiten>> pro Sekunde.

note: type: Plain text
en: 'MAX_ACCELERATION = 20.0' - Maximum acceleration for this axis in machine units per second squared.
de: 'MAX_ACCELERATION = 20.0' - Maximale Beschleunigung für diese Achse in Maschineneinheiten pro Sekunde zum Quadrat.

note: type: Plain text
en: 'MIN_LIMIT = -1000' - (((MIN LIMIT))) The minimum limit (soft limit) for axis motion, in machine units.  When this limit is exceeded, the controller aborts axis motion.  The axis must be homed before MIN_LIMIT is in force.  For a rotary axis (A,B,C typ)  with unlimited rotation having no MIN_LIMIT for that axis in the [AXIS_<letter>] section a value of -1e99 is used.
de: 'MIN_LIMIT = -1000' - (((MIN LIMIT))) Der minimale Grenzwert (Softlimit) für die Achsenbewegung, in Maschineneinheiten.  Wenn dieser Grenzwert überschritten wird, bricht die Steuerung die Achsenbewegung ab.  Die Achse muss referenziert werden, bevor MIN_LIMIT in Kraft tritt.  Für eine Rundachse (Typ A,B,C) mit unbegrenzter Drehung, für die im Abschnitt [AXIS_<letter>] kein MIN_LIMIT angegeben ist, wird ein Wert von -1e99 verwendet.

note: type: Plain text
en: 'MAX_LIMIT = 1000' - (((MAX LIMIT))) The maximum limit (soft limit) for axis motion, in machine units.  When this limit is exceeded, the controller aborts axis motion.  The axis must be homed before MAX_LIMIT is in force.  For a rotary axis (A,B,C typ) with unlimited rotation having no MAX_LIMIT for that axis in the [AXIS_<letter>] section a value of 1e99 is used.
de: 'MAX_LIMIT = 1000' - (((MAX LIMIT))) Der maximale Grenzwert (Softlimit) für die Achsenbewegung in Maschineneinheiten.  Wenn dieser Grenzwert überschritten wird, bricht die Steuerung die Achsenbewegung ab.  Die Achse muss referenziert werden, bevor MAX_LIMIT in Kraft tritt.  Für eine Rundachse (Typ A,B,C) mit unbegrenzter Drehung, für die im Abschnitt [AXIS_<letter>] kein MAX_LIMIT angegeben ist, wird ein Wert von 1e99 verwendet.

note: type: Plain text
en: 'WRAPPED_ROTARY = 1' - When this is set to 1 for an ANGULAR axis the axis will move 0-359.999 degrees.  Positive Numbers will move the axis in a positive direction and negative numbers will move the axis in the negative direction.
de: 'WRAPPED_ROTARY = 1' - Wenn dies für eine ANGULAR-Achse auf 1 gesetzt wird, bewegt sich die Achse um 0-359,999 Grad.  Positive Zahlen bewegen die Achse in eine positive Richtung und negative Zahlen bewegen die Achse in eine negative Richtung.

note: type: Plain text
en: 'LOCKING_INDEXER_JOINT = 4' - This value selects a joint to use for a locking indexer for the specified axis <letter>.  In this example, the joint is 4 which would correspond to the B axis for a XYZAB system with trivkins (identity) kinematics.  When set, a G0 move for this axis will initiate an unlock with the joint.4.unlock pin then wait for the joint.4.is-unlocked pin then move the joint at the rapid rate for that joint.  After the move the joint.4.unlock will be false and motion will wait for joint.4.is-unlocked to go false.  Moving with other joints is not allowed when moving a locked rotary joint.  To create the unlock pins, use the motmod parameter:
de: 'LOCKING_INDEXER_JOINT = 4' - Dieser Wert wählt ein Gelenk aus, das für einen verriegelnden Indexer für die angegebene Achse <Buchstabe> verwendet wird.  In diesem Beispiel ist das Gelenk 4, was der B-Achse für ein XYZAB-System mit Trivkins-Kinematik (Identität) entsprechen würde.  Bei einer G0-Bewegung für diese Achse wird eine Entriegelung mit dem joint.4.unlock-Pin eingeleitet, dann wird auf den joint.4.is-unlocked-Pin gewartet und dann das Gelenk mit der für dieses Gelenk vorgesehenen Eilgeschwindigkeit bewegt.  Nach der Bewegung wird der joint.4.unlock auf false gesetzt und die Bewegung wartet, bis joint.4.is-unlocked auf false gesetzt wird.  Die Bewegung mit anderen Gelenken ist nicht erlaubt, wenn ein gesperrtes Drehgelenk bewegt wird.  Um die Entriegelungsstifte zu erstellen, verwenden Sie den Parameter motmod:

note: type: Plain text
en: The jointmask bits are: (LSB)0:joint0, 1:joint1, 2:joint2, ...
de: Die Bits der Jointmaske sind: (LSB)0:joint0, 1:joint1, 2:joint2, ...

note: type: Plain text
en: Example: `loadrt motmod ... unlock_joints_mask=0x38` creates unlock pins for joints 3,4,5
de: Beispiel: "loadrt motmod ... unlock_joints_mask=0x38" erzeugt Entsperrstifte für die Gelenke 3,4,5

note: type: Plain text
en: 'OFFSET_AV_RATIO = 0.1' - If nonzero, this item enables the use of HAL input pins for external axis offsets:
de: 'OFFSET_AV_RATIO = 0.1' - Wenn ungleich Null, aktiviert dieses Element die Verwendung von HAL-Eingangsstiften für externe Achsen-Offsets:

note: type: Plain text
en: See the chapter: <<cha:external-offsets,'External Axis Offsets'>> for usage information.
de: Siehe das Kapitel: 'cha:external-offsets,'External Axis Offsets'>> für Informationen zur Verwendung.

note: type: Title ===
en: [JOINT_<num>] Sections(((INI File,Sections,[JOINT_<num>] Sections)))
de: [JOINT_<num>] Abschnitte(((INI-Datei,Sections,Abschnitte,[JOINT_<num>] Abschnitte)))

note: type: Plain text
en: The <num> specifies the joint number 0 ... (num_joints-1)  The value of 'num_joints' is set by [KINS]JOINTS=
de: Die <num> gibt die Gelenknummer 0 ... (num_joints-1) an. Der Wert von 'num_joints' wird festgelegt durch [KINS]JOINTS=

note: type: Plain text
en: The [JOINT_0], [JOINT_1], etc. sections contains general parameters for the individual components in the joint control module. The joint section names begin numbering at 0, and run through the number of joints specified in the [KINS]JOINTS entry minus 1.
de: Die Abschnitte [JOINT_0], [JOINT_1], usw. enthalten allgemeine Parameter für die einzelnen Komponenten im Gelenksteuerungsmodul. Die Namen der Gelenkabschnitte beginnen bei 0 und reichen bis zur Anzahl der im Eintrag [KINS]JOINTS angegebenen Gelenke minus 1.

note: type: Plain text
en: Typically (for systems using 'trivkins kinematics', there is a 1:1 correspondence between a joint and an axis coordinate letter):
de: Typischerweise (bei Systemen, die 'trivkins kinematics' verwenden, besteht eine 1:1-Entsprechung zwischen einem Gelenk und einem Achsenkoordinatenbuchstaben):

note: type: Plain text
en: Other kinematics modules with identity kinematics are available to support configurations with partial sets of axes.  For example, using trivkins with coordinates=XZ, the joint-axes relationships are:
de: Andere Kinematikmodule mit Identitätskinematik sind verfügbar, um Konfigurationen mit partiellen Achsensätzen zu unterstützen.  Bei der Verwendung von trivkins mit Koordinaten=XZ sind die Beziehungen zwischen den Gelenkachsen beispielsweise wie folgt:

note: type: Plain text
en: For more information on kinematics modules see the manpage: '$ man kins'
de: Weitere Informationen über Kinematikmodule finden Sie in der Manpage: '$ man kins'

note: type: Plain text
en: 'TYPE = LINEAR' - The type of joint, either LINEAR or ANGULAR.
de: 'TYPE = LINEAR' - Die Art der Verbindung, entweder LINEAR oder ANGULAR (engl. für Winkel-bestimmt).

note: type: Plain text
en: 'UNITS = INCH' - (((UNITS)))  If specified, this setting overrides the related [TRAJ] UNITS setting.  (e.g., [TRAJ]LINEAR_UNITS if the TYPE of this joint is LINEAR, [TRAJ]ANGULAR_UNITS if the TYPE of this joint is ANGULAR)
de: 'UNITS = INCH' - (((UNITS)))  Falls angegeben, hat diese Einstellung Vorrang vor der zugehörigen [TRAJ]-Einheit-Einstellung.  (z.B. [TRAJ]LINEAR_UNITS wenn der TYP dieses Gelenks LINEAR ist, [TRAJ]ANGULAR_UNITS wenn der TYP dieses Gelenks ANGULAR ist)

note: type: Plain text
en: 'MAX_VELOCITY = 1.2' - Maximum velocity for this joint in <<sub:ini:sec:traj,machine units>> per second.
de: 'MAX_VELOCITY = 1.2' - Maximale Geschwindigkeit für dieses Gelenk in <<sub:ini:sec:traj,Maschineneinheiten>> pro Sekunde.

note: type: Plain text
en: 'MAX_ACCELERATION = 20.0' - Maximum acceleration for this joint in machine units per second squared.
de: 'MAX_ACCELERATION = 20.0' - Maximale Beschleunigung für diese Achse in Maschineneinheiten pro Sekunde zum Quadrat.

note: add a link to machine units type: Plain text
en: 'BACKLASH = 0.0000' - (((Backlash))) Backlash in machine units.  Backlash compensation value can be used to make up for small deficiencies in the hardware used to drive an joint.  If backlash is added to an joint and you are using steppers the STEPGEN_MAXACCEL must be increased to 1.5 to 2 times the MAX_ACCELERATION for the joint.  Excessive backlash compensation can cause an joint to jerk as it changes direction.  If a COMP_FILE is specified for a joint BACKLASH is not used.
de: 'BACKLASH = 0.0000' - (((Backlash))) Umkehrspiel in Maschineneinheiten.  Der Kompensationswert für das Spiel kann verwendet werden, um kleine Unzulänglichkeiten in der zum Antrieb eines Gelenks verwendeten Hardware auszugleichen.  Wenn das Spiel zu einem Gelenk hinzugefügt wird und Sie Schrittmotoren verwenden, muss STEPGEN_MAXACCEL auf das 1,5- bis 2-fache der MAX_ACCELERATION für das Gelenk erhöht werden.  Ein übermäßiger Spielausgleich kann dazu führen, dass ein Gelenk bei Richtungsänderungen ruckelt.  Wenn ein COMP_FILE für ein Gelenk angegeben ist, wird BACKLASH nicht verwendet.

note: type: Plain text
en: 'COMP_FILE = file.extension' - (((Compensation)))  The compensation file consists of map of position information for the joint.  Compensation file values are in machine units.  Each set of values are are on one line separated by a space.  The first value is the nominal value (the commanded position).  The second and third values depend on the setting of COMP_FILE_TYPE.  Points in between nominal values are interpolated between the two nominals.  Compensation files must start with the smallest nominal and be in ascending order to the largest value of nominals.  File names are case sensitive and can contain letters and/or numbers.  Currently the limit inside LinuxCNC is for 256 triplets per joint.
de: 'COMP_FILE = file.extension' - (((Kompensation)))  Die Kompensationsdatei besteht aus einer Abbildung der Positionsinformationen für das Gelenk.  Die Werte der Kompensationsdatei sind in Maschineneinheiten angegeben.  Jeder Satz von Werten steht in einer Zeile, getrennt durch ein Leerzeichen.  Der erste Wert ist der Nennwert (die befohlene Position).  Der zweite und dritte Wert hängt von der Einstellung von COMP_FILE_TYPE ab.  Punkte, die zwischen den Nennwerten liegen, werden zwischen den beiden Nennwerten interpoliert.  Die Kompensationsdateien müssen mit dem kleinsten Sollwert beginnen und in aufsteigender Reihenfolge bis zum größten Wert der Sollwerte geführt werden.  Dateinamen sind Groß-und Kleinschreibung und können Buchstaben und / oder Zahlen enthalten.  Derzeit ist die Grenze innerhalb LinuxCNC für 256 Triplets pro Gelenk.

note: type: Plain text
en: If COMP_FILE is specified for a joint, BACKLASH is not used.
de: Wenn COMP_FILE für eine Verbindung angegeben ist, wird BACKLASH nicht verwendet.

note: type: Plain text
en: 'COMP_FILE_TYPE = 0 or 1' - Specifies the type of compensation file. The first value is the nominal (commanded) position for both types.
    A 'COMP_FILE_TYPE' must be specified for each 'COMP_FILE'.
de: 'COMP_FILE_TYPE = 0 oder 1' - Bestimmt den Typ der Kompensationsdatei. Der erste Wert ist die nominale (befohlene) Position für beide Typen.
    Ein 'COMP_FILE_TYPE' muss für jede 'COMP_FILE' angegeben werden.

note: type: Plain text
en: 'Type 0:' The second value specifies the actual position as the joint is moving in the positive direction (increasing value) and the third value specifies the actual position as the joint is moving in the negative direction (decreasing value).
de: 'Typ 0:' Der zweite Wert gibt die Ist-Position bei Bewegung des Gelenks in positiver Richtung an (steigender Wert) und der dritte Wert gibt die Ist-Position bei Bewegung des Gelenks in negativer Richtung an (fallender Wert).

note: type: Block title
en: Type 0 Example
de: Typ 0 Beispiel

note: type: Plain text
en: 'Type 1:' The second value specifies positive offset from nominal while traveling in the positive direction. The third value specifies the negative offset from nominal while traveling in a negative direction.
de: 'Typ 1:' Der zweite Wert gibt die positive Abweichung vom Sollwert bei Fahrt in positiver Richtung an. Der dritte Wert gibt die negative Abweichung vom Sollwert an, während die Fahrt in negativer Richtung erfolgt.

note: type: Block title
en: Type 1 Example
de: Typ 1 Beispiel

note: type: Plain text
en: 'MIN_LIMIT = -1000' - (((MIN LIMIT)))  The minimum limit for joint motion, in machine units.  When this limit is reached, the controller aborts joint motion.  For a rotary joint with unlimited rotation having no MIN_LIMIT for that joint in the [JOINT_N] section a the value -1e99 is used.
de: 'MIN_LIMIT = -1000' - (((MIN LIMIT)))  Die Mindestgrenze für die Gelenkbewegung in Maschineneinheiten.  Wenn diese Grenze erreicht ist, bricht die Steuerung die Gelenkbewegung ab.  Für ein Drehgelenk mit unbegrenzter Drehung, für das kein MIN_LIMIT im Abschnitt [JOINT_N] angegeben ist, wird der Wert -1e99 verwendet.

note: type: Plain text
en: 'MAX_LIMIT = 1000' - (((MAX LIMIT)))  The maximum limit for joint motion, in machine units.  When this limit is reached, the controller aborts joint motion.  For a rotary joint with unlimited rotation having no MAX_LIMIT for that joint in the [JOINT_N] section a the value 1e99 is used.
de: 'MAX_LIMIT = 1000' - (((MAX LIMIT)))  Die maximale Grenze für die Gelenkbewegung in Maschineneinheiten.  Wenn diese Grenze erreicht ist, bricht die Steuerung die Bewegung des Gelenks ab.  Für ein Drehgelenk mit unbegrenzter Drehung, für das im Abschnitt [JOINT_N] kein MAX_LIMIT angegeben ist, wird der Wert 1e99 verwendet.

note: type: delimited block =
en: For *identity* kinematics, the [JOINT_N]MIN_LIMIT,MAX_LIMIT settings must equal or exceed the corresponding (one-to-one identity) [AXIS_L] limits.  These settings are verified at startup when the trivkins kinematics modules is specified.
de: Für *Identitäts*-Kinematiken müssen die Einstellungen [JOINT_N]MIN_LIMIT,MAX_LIMIT den entsprechenden (eins-zu-eins-identischen) [AXIS_L]-Grenzwerten entsprechen oder diese überschreiten.  Diese Einstellungen werden beim Starten überprüft, wenn die trivkins-Kinematikmodule angegeben werden.

note: type: delimited block =
en: The [JOINT_N]MIN_LIMIT, MAX_LIMIT settings are enforced while jogging in joint mode prior to homing.  After homing, [AXIS_L]MIN_LIMIT,MAX_LIMIT coordinate limits are used as constraints for axis (coordinate letter) jogging and by the trajectory planning used for G-code moves (programs and MDI commands).  The trajectory planner works in Cartesian space (XYZABCUVW) and has no information about the motion of joints implemented by *any* kinematics module.  It is possible for joint limit violations to occur for G-code that obeys trajectory planning position limits when non identity kinematics are used.  The motion module always detects joint position limit violations and faults if they occur during the execution of G-code commands.  See also related github issue #97.
de: Die Einstellungen [JOINT_N]MIN_LIMIT, MAX_LIMIT werden beim Joggen im Gelenkmodus vor der Ausführung der Referenzfahrt erzwungen.  Nach der Referenzfahrt werden die [AXIS_L]MIN_LIMIT,MAX_LIMIT-Koordinatengrenzen als Beschränkungen für die Achsenbewegung (Koordinatenbuchstaben) und für die Bahnplanung bei G-Code-Bewegungen (Programme und MDI-Befehle) verwendet.  Der Trajektorienplaner arbeitet im kartesischen Raum (XYZABCUVW) und hat keine Informationen über die Bewegung von Gelenken, die von *jedem* Kinematikmodul implementiert werden.  Es ist möglich, dass bei G-Code, der die Positionsgrenzen der Trajektorienplanung einhält, Verletzungen der Gelenkgrenzen auftreten, wenn nicht identische Kinematiken verwendet werden.  Das Bewegungsmodul erkennt immer Verletzungen der Gelenkpositionsgrenzen und Fehler, wenn sie während der Ausführung von G-Code-Befehlen auftreten.  Siehe auch die zugehörige Github-Fehlermeldung (engl. issue) #97.

note: type: Plain text
en: 'MIN_FERROR = 0.010' - (((MIN FERROR)))  This is the value in machine units by which the joint is permitted to deviate from commanded position at very low speeds.  If MIN_FERROR is smaller than FERROR, the two produce a ramp of error trip points.  You could think of this as a graph where one dimension is speed and the other is permitted following error.  As speed increases the amount of following error also increases toward the FERROR value.
de: 'MIN_FERROR = 0.010' - (((MIN FERROR)))  Dies ist der Wert in Maschineneinheiten, um den das Gelenk bei sehr niedrigen Geschwindigkeiten von der befohlenen Position abweichen darf.  Wenn MIN_FERROR kleiner als FERROR ist, erzeugen die beiden eine Rampe von Fehlerauslösepunkten.  Man kann sich dies wie ein Diagramm vorstellen, bei dem eine Dimension die Geschwindigkeit und die andere die zulässige Schleppabweichung ist.  Mit zunehmender Geschwindigkeit steigt auch der Betrag des Schleppfehlers in Richtung des FERROR-Wertes.

note: type: Plain text
en: 'FERROR = 1.0' - (((FERROR))) FERROR is the maximum allowable following error, in machine units. If the difference between commanded and sensed position exceeds this amount, the controller disables servo calculations, sets all the outputs to 0.0, and disables the amplifiers. If MIN_FERROR is present in the .ini file, velocity-proportional following errors are used. Here, the maximum allowable following error is proportional to the speed, with FERROR applying to the rapid rate set by [TRAJ]MAX_VELOCITY, and proportionally smaller following errors for slower speeds. The maximum allowable following error will always be greater than MIN_FERROR. This prevents small following errors for stationary axes from inadvertently aborting motion. Small following errors will always be present due to vibration, etc.
de: 'FERROR = 1.0' - (((FERROR))) FERROR ist der maximal zulässige Schleppfehler in Maschineneinheiten. Übersteigt die Differenz zwischen Soll- und Ist-Position diesen Wert, deaktiviert der Regler die Servoberechnungen, setzt alle Ausgänge auf 0.0 und schaltet die Verstärker ab. Wenn MIN_FERROR in der .ini-Datei vorhanden ist, werden geschwindigkeitsproportionale Schleppfehler verwendet. In diesem Fall ist der maximal zulässige Schleppfehler proportional zur Geschwindigkeit, wobei FERROR für die mit [TRAJ]MAX_VELOCITY eingestellte Geschwindigkeit gilt und die Schleppfehler für langsamere Geschwindigkeiten proportional kleiner sind. Der maximal zulässige Schleppfehler wird immer größer sein als MIN_FERROR. Dadurch wird verhindert, dass kleine Schleppfehler bei stillstehenden Achsen die Bewegung ungewollt abbrechen. Kleine Schleppfehler werden aufgrund von Vibrationen usw. immer vorhanden sein.

note: type: Plain text
en: 'LOCKING_INDEXER = 1' - Indicates the joint is used as a locking indexer.
de: 'LOCKING_INDEXER = 1' - Gibt an, dass das Gelenk als verriegelnder Indexer verwendet wird.

note: type: Plain text
en: These parameters are Homing related, for a better explanation read the <<cha:homing-configuration,Homing Configuration>> Chapter.
de: Diese Parameter beziehen sich auf die Ausführung der Referenzfahrt (engl. homing), für eine bessere Erklärung lesen Sie das <<cha:homing-configuration,Referenzfahrt-Konfiguration>> Kapitel.

note: type: Plain text
en: 'HOME = 0.0' - The position that the joint will go to upon completion of the homing sequence.
de: 'HOME = 0.0' - Die Position, die das Gelenk nach Abschluss der Referenzfahrt anfahren wird.

note: type: Plain text
en: 'HOME_OFFSET = 0.0' - The joint position of the home switch or index pulse, in <<sub:ini:sec:traj,machine units>>.  When the home point is found during the homing process, this is the position that is assigned to that point.  When sharing home and limit switches and using a home sequence that will leave the home/limit switch in the toggled state the home offset can be used define the home switch position to be other than 0 if your HOME position is desired to be 0.
de: 'HOME_OFFSET = 0.0' - Die gemeinsame Position des Referenzschalters oder Indeximpulses, in <sub:ini:sec:traj,Maschineneinheiten>>.  Wenn der Referenzpunkt während der Referenzfahrt gefunden wird, ist dies die Position, die diesem Punkt zugewiesen wird.  Bei gemeinsamer Nutzung von Referenzfahrt- und Endschaltern und bei Verwendung einer Referenzfahrt-Sequenz, die den Referenzfahrt-/Endschalter im umgeschalteten Zustand belässt, kann der Referenzfahrt-Offset verwendet werden, um die Position des Referenzfahrtschalters auf einen anderen Wert als 0 festzulegen, wenn die Referenzfahrtposition 0 sein soll.

note: type: Plain text
en: 'HOME_SEARCH_VEL = 0.0' - (((HOME SEARCH VEL))) Initial homing velocity in machine units per second.  Sign denotes direction of travel.  A value of zero means assume that the current location is the home position for the machine.  If your machine has no home switches you will want to leave this value at zero.
de: 'HOME_SEARCH_VEL = 0.0' - (((HOME SEARCH VEL))) Anfängliche Referenzfahrtgeschwindigkeit in Maschineneinheiten pro Sekunde.  Das Vorzeichen gibt die Fahrtrichtung an.  Ein Wert von Null bedeutet, dass die aktuelle Position als Ausgangsposition für die Maschine angenommen wird.  Wenn Ihre Maschine keine Home-Schalter hat, sollten Sie diesen Wert auf Null belassen.

note: type: Plain text
en: 'HOME_LATCH_VEL = 0.0' - Homing velocity in machine units per second to the home switch latch position.  Sign denotes direction of travel.
de: 'HOME_LATCH_VEL = 0.0' - Referenzfahrtgeschwindigkeit in Maschineneinheiten pro Sekunde zur Endschalter-Auslöse-Position.  Das Vorzeichen gibt die Fahrtrichtung an.

note: type: Plain text
en: 'HOME_FINAL_VEL = 0.0' - Velocity in machine units per second from home latch position to home position.  If left at 0 or not included in the joint rapid velocity is used.  Must be a positive number.
de: 'HOME_FINAL_VEL = 0.0' - Geschwindigkeit in Maschineneinheiten pro Sekunde von der Home-Latch-Position zur Home-Position.  Wird der Wert 0 belassen oder ist er nicht im Gelenk enthalten, wird die Eilgeschwindigkeit verwendet.  Muss eine positive Zahl sein.

note: type: Plain text
en: 'HOME_USE_INDEX = NO' - If the encoder used for this joint has an index pulse, and the motion card has provision for this signal you may set it to yes.  When it is yes, it will affect the kind of home pattern used.  Currently, you can't home to index with steppers unless you're using StepGen in velocity mode and PID.
de: 'HOME_USE_INDEX = NO' - Wenn der für dieses Gelenk verwendete Encoder einen Indeximpuls hat und die Bewegungskarte (engl. motion card) dieses Signal vorsieht, können Sie diese Option auf ja setzen.  Wenn dies der Fall ist, hat dies Auswirkungen auf die Art des verwendeten Referenzfahrtmusters.  Gegenwärtig können Sie mit Schrittmotoren keine Referenzfahrt mit Index durchführen, es sei denn, Sie verwenden StepGen im Geschwindigkeitsmodus und PID.

note: type: Plain text
en: 'HOME_INDEX_NO_ENCODER_RESET = NO' - Use YES if the encoder used for this joint does not reset its counter when an index pulse is detected after assertion of the joint index_enable HAL pin.  Applicable only for HOME_USE_INDEX = YES.
de: 'HOME_INDEX_NO_ENCODER_RESET = NO' - Verwenden Sie YES, wenn der Encoder, der für dieses Gelenk verwendet wird, seinen Zähler nicht zurücksetzt, wenn ein Indeximpuls nach der Aktivierung des Gelenk index_enable HAL-Pins erkannt wird.  Gilt nur für HOME_USE_INDEX = YES.

note: type: Plain text
en: 'HOME_IGNORE_LIMITS = NO' - When you use the limit switch as a home switch and the limit switch this should be set to YES.  When set to YES the limit switch for this joint is ignored when homing.  You must configure your homing so that at the end of your home move the home/limit switch is not in the toggled state you will get a limit switch error after the home move.
de: 'HOME_IGNORE_LIMITS = NO' - Wenn Sie den Endschalter als Referenzfahrtschalter und den Endschalter verwenden, sollte dies auf YES gesetzt werden.  Wenn diese Einstellung auf YES gesetzt ist, wird der Endschalter für dieses Gelenk bei der Referenzfahrt ignoriert.  Sie müssen Ihre Referenzfahrt so konfigurieren, dass sich der Referenzfahrt-/Endschalter am Ende der Referenzfahrt nicht im umgeschalteten Zustand befindet, da Sie sonst nach der Referenzfahrt einen Endschalterfehler erhalten.

note: type: Plain text
en: 'HOME_IS_SHARED = <n>' - If the home input is shared by more than one joint set <n> to 1 to prevent homing from starting if the one of the shared switches is already closed.  Set <n> to 0 to permit homing if a switch is closed.
de: 'HOME_IS_SHARED = <n>' - Wenn der Home-Eingang von mehr als einem Gelenk geteilt wird, setzen Sie <n> auf 1, um zu verhindern, dass die Referenzfahrt gestartet wird, wenn einer der geteilten Schalter bereits geschlossen ist.  Setzen Sie <n> auf 0, um eine Referenzfahrt zu ermöglichen, wenn ein Schalter geschlossen ist.

note: type: Plain text
en: 'HOME_ABSOLUTE_ENCODER = 0 | 1 | 2' - Used to indicate the joint uses an absolute encoder.  At a request for homing, the current joint value is set to the 'HOME_OFFSET' value.  If the 'HOME_ABSOLUTE_ENCODER' setting is 1, the machine makes the usual final move to the 'HOME' value.  If the 'HOME_ABSOLUTE_ENCODER' setting is 2, no final move is made.
de: 'HOME_ABSOLUTE_ENCODER = 0 | 1 | 2' - Wird verwendet, um anzuzeigen, dass das Gelenk einen Absolutwertgeber verwendet.  Bei einer Anforderung zur Referenzfahrt wird der aktuelle Gelenkwert auf den 'HOME_OFFSET' Wert gesetzt.  Wenn die 'HOME_ABSOLUTE_ENCODER' Einstellung 1 ist, macht die Maschine die übliche Endbewegung zum 'HOME' Wert.  Wenn die 'HOME_ABSOLUTE_ENCODER' Einstellung 2 ist, wird keine solche abschließende Bewegung ausgeführt.

note: type: Plain text
en: 'HOME_SEQUENCE = <n>' - Used to define the "Home All" sequence.  <n> must start at 0 or 1 or -1.  Additional sequences may be specified with numbers increasing by 1 (in absolute value).  Skipping of sequence numbers is not allowed.  If a HOME_SEQUENCE is omitted, the joint will not be homed by the "Home All" function.  More than one joint can be homed at the same time by specifying the same sequence number for more than one joint.  A negative sequence number is used to defer the final move for all joints having that (negative or positive) sequence number.  For additional info, see: <<sec:homing-section,HOME SEQUENCE>>.
de: 'HOME_SEQUENCE = <n>' - Definiert die "Home All" Sequenz, d.h. die Fahrt zum Referenzpunkt für alle Achsen. <n> muss bei 0 oder 1 oder -1 beginnen.  Zusätzliche Sequenzen können mit um 1 aufsteigenden Zahlen (in absoluten Werten) angegeben werden.  Das Überspringen von Sequenznummern ist nicht erlaubt.  Bei Weglassen einer HOME_SEQUENCE wird das Gelenk von der Funktion "Home All" nicht referenziert.  Mehrere Gelenke können gleichzeitig referenziert werden, indem man die gleiche Sequenznummer für mehrere Gelenke angibt.  Eine negative Sequenznummer wird verwendet, um die letzte Bewegung für alle Gelenke mit dieser (negativen oder positiven) Sequenznummer zu verschieben.  Für weitere Informationen siehe: <<sec:homing-section,HOME SEQUENCE>>.

note: type: Plain text
en: 'VOLATILE_HOME = 0' - When enabled (set to 1) this joint will be unhomed if the Machine Power is off or if E-Stop is on.  This is useful if your machine has home switches and does not have position feedback such as a step and direction driven machine.
de: 'VOLATILE_HOME = 0' - Wenn aktiviert (auf 1 gesetzt), wird das Gelenk bei ausgeschalteter Maschinenstromversorgung oder bei eingeschaltetem Not-Halt nicht geortet.  Dies ist nützlich, wenn Ihre Maschine über Home-Schalter verfügt und keine Positionsrückmeldung hat, wie z. B. bei einer schritt- und richtungsgesteuerten Maschine.

note: type: Plain text
en: These parameters are relevant to joints controlled by servos.
de: Diese Parameter sind relevant für Gelenke, die von Servos gesteuert werden.

note: type: Plain text
en: The following are custom INI file entries that you may find in a sample INI file or a wizard generated file.  These are not used by the LinuxCNC software.  They are only there to put all the settings in one place.  For more information on custom INI file entries see the <<sub:ini:custom,Custom Sections and Variables>> subsection.
de: Das Folgende sind benutzerdefinierte INI-Datei-Einträge, die Sie in einer Beispiel-INI-Datei oder einer vom Assistenten generierten Datei finden können.  Diese werden nicht von der LinuxCNC-Software verwendet.  Sie sind nur dazu da, alle Einstellungen an einem Ort zu speichern.  Für weitere Informationen über benutzerdefinierte INI-Datei-Einträge siehe den Unterabschnitt <sub:ini:custom,Benutzerdefiniert Abschnitte und Variablen>>.

note: type: Plain text
en: The following items might be used by a PID component and the assumption is that the output is volts.
de: Die folgenden Elemente können von einer PID-Komponente verwendet werden, wobei davon ausgegangen wird, dass die Ausgabe in Volt erfolgt.

note: type: Plain text
en: 'DEADBAND = 0.000015' - How close is close enough to consider the motor in position, in <<sub:ini:sec:traj,machine units>>.
de: DEADBAND = 0.000015' - Wie nah ist nah genug, um den Motor als in Position zu betrachten, in <<sub:ini:sec:traj,machine units>>.

note: type: Plain text
en: This is often set to a distance equivalent to 1, 1.5, 2, or 3 encoder counts, but there are no strict rules.  Looser (larger) settings allow less servo 'hunting' at the expense of lower accuracy.  Tighter (smaller) settings attempt higher accuracy at the expense of more servo 'hunting'.  Is it really more accurate if it's also more uncertain? As a general rule, it's good to avoid, or at least limit, servo 'hunting' if you can.
de: Dies wird oft auf einen Abstand eingestellt, der 1, 1,5, 2 oder 3 Encoderzählungen entspricht, aber es gibt keine strengen Regeln.  Lockere (größere) Einstellungen ermöglichen ein geringeres Hunting' des Servos auf Kosten einer geringeren Genauigkeit.  Engere (kleinere) Einstellungen versuchen eine höhere Genauigkeit auf Kosten von mehr Servo 'Hunting'.  Ist es wirklich genauer, wenn es auch unsicherer ist? Generell ist es gut, das Hunting' der Servos zu vermeiden oder zumindest zu begrenzen, wenn Sie können.

note: type: Plain text
en: Be careful about going below 1 encoder count, since you may create a condition where there is no place that your servo is happy. This can go beyond 'hunting' (slow) to 'nervous' (rapid), and even to 'squealing' which is easy to confuse with oscillation caused by improper tuning. Better to be a count or two loose here at first, until you've been through 'gross tuning' at least.
de: Seien Sie vorsichtig, wenn Sie unter 1 Geberzahl gehen, da Sie einen Zustand schaffen können, in dem Ihr Servo an keiner Stelle zufrieden ist. Dies kann über 'Hunting' (langsam) bis hin zu 'Nervös' (schnell) und sogar zu 'Quietschen' gehen, was leicht mit Oszillation, verursacht durch unsachgemäße Abstimmung, verwechselt werden kann. Es ist besser, anfangs ein oder zwei Zählzeiten weniger zu spielen, zumindest bis man die erste 'Grobabstimmung' hinter sich hat.

note: type: Plain text
en: Example of calculating machine units per encoder pulse to use in deciding DEADBAND value:
de: Beispiel für die Berechnung von Maschineneinheiten pro Encoderimpuls zur Bestimmung des DEADBAND-Wertes:

note: type: Plain text
en: 'BIAS = 0.000' - This is used by hm2-servo and some others.  Bias is a constant amount that is added to the output.  In most cases it should be left at zero.  However, it can sometimes be useful to compensate for offsets in servo amplifiers, or to balance the weight of an object that moves vertically.  Bias is turned off when the PID loop is disabled, just like all other components of the output.
de: 'BIAS = 0.000' - Dies wird von hm2-servo und einigen anderen verwendet.  Bias ist ein konstanter Betrag, der zum Ausgang addiert wird.  In den meisten Fällen sollte er auf Null belassen werden.  Er kann jedoch manchmal nützlich sein, um Offsets in Servoverstärkern zu kompensieren oder das Gewicht eines Objekts auszugleichen, das sich vertikal bewegt.  Der Bias (auch Vorspannung) wird ausgeschaltet, wenn die PID-Schleife deaktiviert ist, genau wie alle anderen Komponenten des Ausgangs.

note: latexmath:[$\frac{volt}{mu}$]. type: Plain text
en: 'P = 50' - The proportional gain for the joint servo.  This value multiplies the error between commanded and actual position in machine units, resulting in a contribution to the computed voltage for the motor amplifier.  The units on the P gain are volts per machine unit, e.g., image:images/p-term.png[height=25]
de: P = 50' - Die proportionale Verstärkung für das Gelenkservo.  Dieser Wert multipliziert den Fehler zwischen befohlener und tatsächlicher Position in Maschineneinheiten, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt.  Die Einheiten für die P-Verstärkung sind Volt pro Maschineneinheit, z. B. image:images/p-term.png[height=25]

note: latexmath:[$\frac{volt}{mu\, s}$]. type: Plain text
en: 'I = 0' - The integral gain for the joint servo.  The value multiplies the cumulative error between commanded and actual position in machine units, resulting in a contribution to the computed voltage for the motor amplifier.  The units on the I gain are volts per machine unit second, e.g., image:images/i-term.png[height=25]
de: I = 0' - Die integrale Verstärkung für das Gelenkservo.  Der Wert multipliziert den kumulativen Fehler zwischen befohlener und tatsächlicher Position in Maschineneinheiten, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt.  Die Einheiten für die I-Verstärkung sind Volt pro Maschineneinheit pro Sekunde, z. B. image:images/i-term.png[height=25]

note: latexmath:[$\frac{volt}{mu/s}$]. type: Plain text
en: 'D = 0' - The derivative gain for the joint servo.  The value multiplies the difference between the current and previous errors, resulting in a contribution to the computed voltage for the motor amplifier.  The units on the D gain are volts per machine unit per second, e.g., image:images/i-term.png[height=25]
de: 'D = 0' - Die Ableitungsverstärkung für das Gelenkservo.  Der Wert multipliziert die Differenz zwischen dem aktuellen und dem vorherigen Fehler, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt.  Die Einheiten für die D-Verstärkung sind Volt pro Maschineneinheit pro Sekunde, z. B. image:images/i-term.png[height=25]

note: latexmath:[$\frac{volt}{mu}$]. type: Plain text
en: 'FF0 = 0' - The 0th order feed forward gain.  This number is multiplied by the commanded position, resulting in a contribution to the computed voltage for the motor amplifier.  The units on the FF0 gain are volts per machine unit, e.g., image:images/p-term.png[height=25]
de: FF0 = 0" - Die Vorwärtsverstärkung 0ter Ordnung.  Diese Zahl wird mit der befohlenen Position multipliziert, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt.  Die Einheiten für die FF0-Verstärkung sind Volt pro Maschineneinheit, z. B. image:images/p-term.png[height=25]

note: latexmath:[$\frac{volt}{mu\, s}$]. type: Plain text
en: 'FF1 = 0' - The 1st order feed forward gain.  This number is multiplied by the change in commanded position per second, resulting in a contribution to the computed voltage for the motor amplifier.  The units on the FF1 gain are volts per machine unit per second, e.g., image:images/i-term.png[height=25]
de: 'FF1 = 0' - Die Vorwärtsverstärkung erster Ordnung.  Diese Zahl wird mit der Änderung der befohlenen Position pro Sekunde multipliziert, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt.  Die Einheiten für die FF1-Verstärkung sind Volt pro Maschineneinheit pro Sekunde, z. B. image:images/i-term.png[height=25]

note: latexmath:[$\frac{volt}{mu\, s^{2}}$]. type: Plain text
en: 'FF2 = 0' - The 2nd order feed forward gain.  This number is multiplied by the change in commanded position per second per second, resulting in a contribution to the computed voltage for the motor amplifier.  The units on the FF2 gain are volts per machine unit per second per second, e.g., image:images/ff2.png[height=25]
de: 'FF2 = 0' - Die Vorwärtsverstärkung zweiter Ordnung.  Diese Zahl wird mit der Änderung der befohlenen Position pro Sekunde multipliziert, was zu einem Beitrag zur berechneten Spannung für den Motorverstärker führt.  Die Einheiten für die FF2-Verstärkung sind Volt pro Maschineneinheit pro Sekunde, z. B. image:images/ff2.png[height=25]

note: type: Plain text
en: These two values are the scale and offset factors for the joint output to the motor amplifiers.
de: Diese beiden Werte sind die Skalierungs- und Offset-Faktoren für den gemeinsamen Ausgang zu den Motorverstärkern.

note: type: Plain text
en: The second value (offset) is subtracted from the computed output (in volts), and divided by the first value (scale factor), before being written to the D/A converters.  The units on the scale value are in true volts per DAC output volts.  The units on the offset value are in volts.  These can be used to linearize a DAC.  Specifically, when writing outputs, the LinuxCNC first converts the desired output in quasi-SI units to raw actuator values, e.g., volts for an amplifier DAC.  This scaling looks like: image:images/output-offset.png[]
de: Der zweite Wert (Offset) wird vom berechneten Ausgang (in Volt) subtrahiert und durch den ersten Wert (Skalierungsfaktor) geteilt, bevor er in die D/A-Wandler geschrieben wird.  Die Einheiten für den Skalenwert sind in echten Volt pro DAC-Ausgangsspannung.  Die Einheiten für den Offset-Wert sind in Volt.  Diese können zur Linearisierung eines DAC verwendet werden.  Insbesondere beim Schreiben von Ausgängen, die LinuxCNC erste wandelt die gewünschte Ausgabe in Quasi-SI-Einheiten zu rohen Aktor Werte, z. B. Volt für einen Verstärker DAC.  Diese Skalierung sieht wie folgt aus: image:images/output-offset.png[]

note: latexmath:[$ amplifier [volts] = (output [\frac{mm}{sec}] - offset [\frac{mm}{sec}]) / 250 \frac{mm}{sec\, volt} ] $] type: Plain text
en: Note that the units of the offset are in machine units, e.g., mm/sec, and they are pre-subtracted from the sensor readings. The value for this offset is obtained by finding the value of your output which yields 0.0 for the actuator output. If the DAC is linearized, this offset is normally 0.0.
de: Beachten Sie, dass die Einheiten des Offsets in Maschineneinheiten angegeben sind, z. B. mm/sec, und dass sie von den Sensormesswerten abgezogen werden. Den Wert für diesen Offset erhalten Sie, indem Sie den Wert Ihres Ausgangs finden, der 0,0 für den Aktor-/Stellgliedausgang ergibt. Bei einem linearisierten DAC ist dieser Offset normalerweise 0,0.

note: type: Plain text
en: The scale and offset can be used to linearize the DAC as well, resulting in values that reflect the combined effects of amplifier gain, DAC non-linearity, DAC units, etc.
de: Skalierung und Offset können auch zur Linearisierung des DAC verwendet werden. Diese Werte spigeln dann die kombinierten Auswirkungen von Verstärkung, Nicht-Linearität des DAC, DAC-Einheiten usw. wider.

note: type: Plain text
en: To do this, follow this procedure.
de: Gehen Sie dazu folgendermaßen vor.

note: type: Plain text
en: Build a calibration table for the output, driving the DAC with a desired voltage and measuring the result.
de: Erstellen Sie eine Kalibrierungstabelle für den Ausgang, indem Sie den DAC mit einer gewünschten Spannung betreiben und das Ergebnis messen.

note: type: Plain text
en: Do a least-squares linear fit to get coefficients a, b such that image:images/calibration-1.png[]
de: Führen Sie eine lineare Anpassung nach dem Prinzip der kleinsten Quadrate durch, um die Koeffizienten a und b so zu ermitteln, dass image:images/calibration-1.png[]

note: type: Plain text
en: Note that we want raw output such that our measured result is identical to the commanded output. This means
de: Beachten Sie, dass wir eine Rohausgabe wünschen, bei der das gemessene Ergebnis mit der befohlenen Ausgabe identisch ist. Das bedeutet

note: type: Plain text
en: As a result, the a and b coefficients from the linear fit can be used as the scale and offset for the controller directly.
de: Folglich können die Koeffizienten a und b aus der linearen Anpassung direkt als Skala und Offset für den Regler verwendet werden.

note: type: Plain text
en: See the following table for an example of voltage measurements.
de: In der folgenden Tabelle finden Sie ein Beispiel für Spannungsmessungen.

note: type: Block title
en: Output Voltage Measurements
de: Messungen der Ausgangsspannung

note: type: Table
en: Raw
de: Roh

note: type: Table
en: Measured
de: Gemessen

note: type: Plain text
en: 'MAX_OUTPUT = 10' - The maximum value for the output of the PID compensation that is written to the motor amplifier, in volts.  The computed output value is clamped to this limit.  The limit is applied before scaling to raw output units.  The value is applied symmetrically to both the plus and the minus side.
de: 'MAX_OUTPUT = 10' - Der maximale Wert für den Ausgang der PID-Kompensation, der in den Motorverstärker geschrieben wird, in Volt.  Der berechnete Ausgangswert wird auf diesen Grenzwert geklemmt.  Der Grenzwert wird vor der Skalierung auf rohe Ausgabeeinheiten angewendet.  Der Wert wird symmetrisch sowohl auf die Plus- als auch auf die Minusseite angewandt.

note: type: Plain text
en: 'INPUT_SCALE = 20000' - in Sample configs
de: 'INPUT_SCALE = 20000' - in Beispielkonfigurationen

note: type: Plain text
en: 'ENCODER_SCALE = 20000' - in PnCconf built configs
de: 'ENCODER_SCALE = 20000' - in PNCconf erstellten Konfigurationen

note: type: Plain text
en: Specifies the number of pulses that corresponds to a move of one machine unit as set in the [TRAJ] section.  For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS.  For an angular joint one unit is equal to the setting in ANGULAR_UNITS.  A second number, if specified, is ignored.  For example, on a 2000 counts per rev encoder, and 10 revs/inch gearing, and desired units of inch, we have:
de: Gibt die Anzahl der Impulse an, die einer Bewegung um eine Maschineneinheit entspricht, wie im Abschnitt [TRAJ] eingestellt.  Bei einem linearen Gelenk entspricht eine Maschineneinheit der Einstellung von LINEAR_UNITS.  Für ein Winkelgelenk entspricht eine Einheit der Einstellung in ANGULAR_UNITS.  Eine zweite Zahl, falls angegeben, wird ignoriert.  Bei einem Drehgeber mit 2000 Umdrehungen pro Minute, einem Getriebe mit 10 Umdrehungen pro Zoll und den gewünschten Einheiten in Zoll ergibt sich zum Beispiel Folgendes:

note: latexmath:[ INPUT\_SCALE = \frac{2000\, counts}{rev} \times \frac{10\, rev}{inch} = \frac{20000\, counts}{inch} ] type: Title ====
en: Stepper
de: Schrittmotoren

note: type: Plain text
en: These parameters are relevant to joints controlled by steppers.
de: Diese Parameter sind relevant für Gelenke, die von Schrittmotoren gesteuert werden.

note: type: Plain text
en: The following are custom INI file entries that you may find in a sample INI file or a wizard generated file. These are not used by the LinuxCNC software. They are only there to put all the settings in one place. For more information on custom INI file entries see the <<sub:ini:custom,Custom Sections and Variables>> subsection.
de: Das Folgende sind benutzerdefinierte INI-Datei-Einträge, die Sie in einer Beispiel-INI-Datei oder einer vom Assistenten generierten Datei finden können. Diese werden nicht von der LinuxCNC-Software verwendet. Sie sind nur dazu da, alle Einstellungen an einem Ort zu speichern. Für weitere Informationen über benutzerdefinierte INI-Datei-Einträge siehe den Unterabschnitt <sub:ini:custom,Benutzerdefiniert Abschnitte und Variablen>>.

note: type: Plain text
en: The following items might be used by a StepGen component.
de: Die folgenden Elemente können von einer Schrittgenerator (engl. StepGen)-Komponente verwendet werden.

note: type: Plain text
en: 'SCALE = 4000' - in Sample configs
de: 'SCALE = 4000' - in Beispielkonfigurationen

note: type: Plain text
en: 'STEP_SCALE = 4000' - in PnCconf built configs
de: 'STEP_SCALE = 4000' - in PnCconf erstellten Konfigurationen

note: type: Plain text
en: Specifies the number of pulses that corresponds to a move of one machine unit as set in the [TRAJ] section.  For stepper systems, this is the number of step pulses issued per machine unit.  For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS.  For an angular joint one unit is equal to the setting in ANGULAR_UNITS.  For servo systems, this is the number of feedback pulses per machine unit.  A second number, if specified, is ignored.
de: Gibt die Anzahl der Impulse an, die einer Bewegung einer Maschineneinheit entspricht, wie im Abschnitt [TRAJ] eingestellt.  Bei Schrittmotor-(engl. Stepper)-systemen ist dies die Anzahl der Schrittimpulse, die pro Maschineneinheit ausgegeben werden.  Bei einem Lineargelenk entspricht eine Maschineneinheit der Einstellung von LINEAR_UNITS.  Für ein Winkelgelenk entspricht eine Einheit der Einstellung in ANGULAR_UNITS.  Bei Servosystemen ist dies die Anzahl der Rückmeldeimpulse pro Maschineneinheit.  Eine zweite Zahl, falls angegeben, wird ignoriert.

note: type: Plain text
en: For example, on a 1.8 degree stepper motor with half-stepping, and 10 revs/inch gearing, and desired <<sub:ini:sec:traj,machine units>> of inch, we have:
de: Bei einem 1,8-Grad-Schrittmotor, der mit halben Schritten bewegt (engl. half-stepping) wird, und einem Getriebe mit 10 Umdrehungen pro Zoll und gewünschten <<sub:ini:sec:traj,Maschineneinheiten>> in Zoll ergibt sich beispielsweise Folgendes:

note: latexmath:[ scale = \frac{2\, steps}{1.8\, degree} \times \frac{360\, degree}{rev} \times \frac{10\, rev}{inch} = \frac{4000\, steps}{inch} ] type: Plain text
en: Old INI and HAL files used `INPUT_SCALE` for this value.
de: Alte INI und HAL Dateien verwendeten `INPUT_SCALE` für diesen Wert.

note: type: Plain text
en: 'ENCODER_SCALE = 20000' (Optionally used in PnCconf built configs) - Specifies the number of pulses that corresponds to a move of one machine unit as set in the [TRAJ] section.  For a linear joint one machine unit will be equal to the setting of LINEAR_UNITS.  For an angular joint one unit is equal to the setting in ANGULAR_UNITS.  A second number, if specified, is ignored.  For example, on a 2000 counts per rev encoder, and 10 revs/inch gearing, and desired units of inch, we have:
de: 'ENCODER_SCALE = 20000' (wird optional in PnCconf-Konfigurationen verwendet) - Gibt die Anzahl der Impulse an, die einer Bewegung um eine Maschineneinheit entspricht, wie im Abschnitt [TRAJ] festgelegt.  Bei einem linearen Gelenk entspricht eine Maschineneinheit der Einstellung von LINEAR_UNITS.  Für ein Winkelgelenk entspricht eine Einheit der Einstellung in ANGULAR_UNITS.  Eine zweite Zahl, falls angegeben, wird ignoriert.  Bei einem Drehgeber mit 2000 Umdrehungen pro Minute, einem Getriebe mit 10 Umdrehungen pro Zoll und den gewünschten Einheiten in Zoll ergibt sich zum Beispiel Folgendes:

note: latexmath:[ ENCODER\_SCALE = \frac{2000\, counts}{rev} \times \frac{10\, rev}{inch} = \frac{20000\, counts}{inch} ] type: Plain text
en: 'STEPGEN_MAXACCEL = 21.0' - Acceleration limit for the step generator.  This should be 1% to 10% larger than the joint MAX_ACCELERATION. This value improves the tuning of StepGen's "position loop". If you have added backlash compensation to an joint then this should be 1.5 to 2 times greater than MAX_ACCELERATION.
de: 'STEPGEN_MAXACCEL = 21.0' - Beschleunigungsgrenze für den Schrittgenerator.  Dieser Wert sollte 1% bis 10% größer sein als die gemeinsame MAX_ACCELERATION. Dieser Wert verbessert die Abstimmung des StepGen's "Positionsschleife". Wenn Sie einem Gelenk eine Spielkompensation hinzugefügt haben, sollte dieser Wert 1,5 bis 2 Mal größer als MAX_ACCELERATION sein.

note: type: Plain text
en: 'STEPGEN_MAXVEL = 1.4' - Older configuration files have a velocity limit for the step generator as well. If specified, it should also be 1% to 10% larger than the joint MAX_VELOCITY. Subsequent testing has shown that use of STEPGEN_MAXVEL does not improve the tuning of StepGen's position loop.
de: 'STEPGEN_MAXVEL = 1.4' - Ältere Konfigurationsdateien haben auch eine Geschwindigkeitsgrenze für den Schrittgenerator. Falls angegeben, sollte sie ebenfalls 1 % bis 10 % größer sein als die gemeinsame MAX_VELOCITY. Nachfolgende Tests haben gezeigt, dass die Verwendung von STEPGEN_MAXVEL die Abstimmung der Positionsschleife von StepGen nicht verbessert.

note: type: Title ===
en: [SPINDLE_<num>] Section(s)(((INI File,Sections,[SPINDLE_<num>] Section(s))))
de: [SPINDLE_<num>] Abschnitt(e)(((INI-Datei,Sections,Abschnitte,[SPINDLE_<num>] Abschnitt(e))))

note: type: Plain text
en: The <num> specifies the spindle number 0 ... (num_spindles-1)  The value of 'num_spindles' is set by [TRAJ]SPINDLES=
de: Die <num> gibt die Spindelnummer 0 ... (num_spindles-1) an. Der Wert von 'num_spindles' wird gesetzt durch [TRAJ]SPINDLES=

note: type: Plain text
en: 'MAX_VELOCITY = 20000' The maximum spindle speed (in rpm) for the specified spindle. Optional.
de: 'MAX_VELOCITY = 20000' Die maximale Spindeldrehzahl (in U/min) für die angegebene Spindel. Optional.

note: type: Plain text
en: 'MIN_VELOCITY = 3000' The minimum spindle speed (in rpm) for the specified spindle. Optional.  Many spindles have a minimum speed below which they should not be run.  Any spindle speed command below this limit will be /increased/ to this limit.
de: 'MIN_VELOCITY = 3000' Die minimale Spindeldrehzahl (in U/min) für die angegebene Spindel. Optional.  Viele Spindeln haben eine Mindestdrehzahl, unter der sie nicht betrieben werden sollten.  Jeder Spindeldrehzahlbefehl, der unter diesem Grenzwert liegt, wird auf diesen Grenzwert /erhöht/.

note: type: Plain text
en: 'MAX_REVERSE_VELOCITY = 20000' This setting will default to MAX_VELOCITY if omitted. It can be used in cases where the spindle speed is limited in reverse. Set to zero for spindles which must not be run in reverse.  In this context "max" refers to the absolute magnitude of the spindle speed.
de: 'MAX_REVERSE_VELOCITY = 20000' Diese Einstellung wird standardmäßig auf MAX_VELOCITY gesetzt, wenn sie weggelassen wird. Sie kann in Fällen verwendet werden, in denen die Spindeldrehzahl im Rückwärtsgang begrenzt ist. Für Spindeln, die nicht im Rückwärtsgang laufen dürfen, wird sie auf Null gesetzt.  In diesem Zusammenhang bezieht sich "max" auf die absolute Größe der Spindeldrehzahl.

note: type: Plain text
en: 'MIN_REVERSE_VELOCITY = 3000' This setting is equivalent to MIN_VELOCITY but for reverse spindle rotation. It will default to the MIN_VELOCITY if omitted.
de: 'MIN_REVERSE_VELOCITY = 3000' Diese Einstellung entspricht MIN_VELOCITY, jedoch für die umgekehrte Spindeldrehung. Ist dieser Wert nicht angegeben, wird sie standardmäßig auf MIN_VELOCITY gesetzt.

note: type: Plain text
en: 'INCREMENT = 200' Sets the step size for spindle speed increment / decrement commands.  This can have a different value for each spindle.  This setting is effective with Axis and Touchy but note that some GUIs may handle things differently.
de: 'INCREMENT = 200' Legt die Schrittweite für Befehle zum Erhöhen und Verringern der Spindeldrehzahl fest.  Dies kann für jede Spindel einen anderen Wert haben.  Diese Einstellung ist bei Axis und Touchy wirksam, aber beachten Sie, dass einige grafische Benutzeroberflächen die Dinge anders handhaben können.

note: type: Plain text
en: 'HOME_SEARCH_VELOCITY = 100' - FIXME: Spindle homing not yet working Sets the homing speed (rpm) for the spindle. The spindle will rotate at this velocity during the homing sequence until the spindle index is located, at which point the spindle position will be set to zero.  Note that it makes no sense for the spindle home position to be any value other than zero, and so there is no provision to do so.
de: 'HOME_SEARCH_VELOCITY = 100' - FIXME: Spindel-Referenzfahrt funktioniert noch nicht Setzt die Referenzfahrtgeschwindigkeit (U/min) für die Spindel. Die Spindel dreht sich während der Referenzfahrt mit dieser Geschwindigkeit, bis der Spindelindex gefunden ist. Dann wird die Spindelposition auf Null gesetzt.  Beachten Sie, dass es keinen Sinn macht, wenn die Spindel-Ausgangsposition einen anderen Wert als Null hat, daher ist dies auch nicht vorgesehen.

note: type: Plain text
en: 'HOME_SEQUENCE = 0' - FIXME: Spindle homing not yet working Controls where in the general homing sequence the spindle homing rotations occur. Set the HOME_SEARCH_VELOCITY to zero to avoid spindle rotation during the homing sequence.
de: 'HOME_SEQUENCE = 0' - FIXME: Spindel-Referenzfahrt funktioniert noch nicht Steuert, wo in der allgemeinen Referenzfahrt-Sequenz die Spindel-Referenzfahrt-Drehungen stattfinden. Setzen Sie HOME_SEARCH_VELOCITY auf Null, um Spindeldrehungen während der Referenzfahrt zu vermeiden.

note: type: Title ===
en: [EMCIO] Section(((INI File,Sections,[EMCIO] Section)))
de: [EMCIO] Abschnitt(((INI-Datei,Sections,Abschnitte,[EMCIO] Abschnitt)))

note: type: Plain text
en: 'EMCIO = io' - Name of IO controller program.
de: 'EMCIO = io' - Name des E/A (engl. I/O)-Controller-Programms.

note: type: Plain text
en: 'CYCLE_TIME = 0.100' - The period, in seconds, at which EMCIO will run.  Making it 0.0 or a negative number will tell EMCIO not to sleep at all.  There is usually no need to change this number.
de: 'CYCLE_TIME = 0.100' - Die Zeitspanne in Sekunden, in der EMCIO läuft.  Ein Wert von 0,0 oder eine negative Zahl bedeutet, dass EMCIO überhaupt nicht schlafen soll.  Normalerweise besteht keine Notwendigkeit, diese Zahl zu ändern.

note: type: Plain text
en: 'TOOL_TABLE = tool.tbl' - The file which contains tool information, described in the User Manual.
de: 'TOOL_TABLE = tool.tbl' - Die Datei mit den Werkzeuginformationen, die im Benutzerhandbuch beschrieben sind.

note: type: Plain text
en: 'DB_PROGRAM = db_program' - Path to an executable program that manages tool data.  (When a DB_PROGRAM is specified, a TOOL_TABLE entry is ignored)
de: 'DB_PROGRAM = db_program' - Pfad zu einem ausführbaren Programm, das Werkzeugdaten verwaltet.  (Wenn ein DB_PROGRAM angegeben ist, wird ein TOOL_TABLE-Eintrag ignoriert)

note: type: Plain text
en: 'TOOL_CHANGE_POSITION = 0 0 2' - Specifies the XYZ location to move to when performing a tool change if three digits are used.  Specifies the XYZABC location when 6 digits are used.  Specifies the XYZABCUVW location when 9 digits are used.  Tool Changes can be combined.  For example if you combine the quill up with change position you can move the Z first then the X and Y.
de: 'TOOL_CHANGE_POSITION = 0 0 2' - Gibt die XYZ-Position an, die bei einem Werkzeugwechsel angefahren wird, wenn drei Ziffern verwendet werden.  Gibt die XYZABC-Position an, wenn 6 Ziffern verwendet werden.  Gibt die XYZABCUVW-Position an, wenn 9 Ziffern verwendet werden.  Werkzeugwechsel können kombiniert werden.  Wenn Sie z. B. die Pinole nach oben mit der Wechselposition kombinieren, können Sie zuerst die Z-Position und dann die X- und Y-Position verschieben.

note: type: Plain text
en: 'TOOL_CHANGE_WITH_SPINDLE_ON = 1' - The spindle will be left on during the tool change when the value is 1.  Useful for lathes or machines where the material is in the spindle, not the tool.
de: 'TOOL_CHANGE_WITH_SPINDLE_ON = 1' - Die Spindel bleibt während des Werkzeugwechsels eingeschaltet, wenn der Wert 1 ist. Nützlich für Drehmaschinen oder Maschinen, bei denen sich das Material in der Spindel und nicht im Werkzeug befindet.

note: type: Plain text
en: 'TOOL_CHANGE_QUILL_UP = 1' - The Z axis will be moved to machine zero prior to the tool change when the value is 1. This is the same as issuing a G0 G53 Z0.
de: 'TOOL_CHANGE_QUILL_UP = 1' - Die Z-Achse wird vor dem Werkzeugwechsel auf den Maschinennullpunkt gefahren, wenn der Wert 1 ist. Dies ist dasselbe wie die Ausführung eines G0 G53 Z0.

note: type: Plain text
en: 'TOOL_CHANGE_AT_G30 = 1' - The machine is moved to reference point defined by parameters 5181-5186 for G30 if the value is 1.  For more information see <<sec:overview-parameters,G-code Parameters>> and <<gcode:g30-g30.1,G-code G30-G30.1>>.
de: 'TOOL_CHANGE_AT_G30 = 1' - Die Maschine wird auf den durch die Parameter 5181-5186 für G30 definierten Referenzpunkt gefahren, wenn der Wert 1 ist. Weitere Informationen finden Sie unter <<sec:overview-parameters,G-Code Parameter>> und <<gcode:g30-g30.1,G-Code G30-G30.1>>.

note: type: Plain text
en: 'RANDOM_TOOLCHANGER = 1' - This is for machines that cannot place the tool back into the pocket it came from.  For example, machines that exchange the tool in the active pocket with the tool in the spindle.
de: 'RANDOM_TOOLCHANGER = 1' - Dies ist für Maschinen, die das Werkzeug nicht in die Tasche zurücklegen können, aus der es stammt.  Zum Beispiel Maschinen, die das Werkzeug in der aktiven Tasche mit dem Werkzeug in der Spindel austauschen.

note: type: Title =
en: Homing Configuration
de: Konfiguration der Referenzfahrt (engl. homing)

note: type: Title ===
en: Overview
de: Übersicht

note: type: Plain text
en: Homing sets the zero origin of the G53 machine coordinates.  Soft limits are defined relative to the machine origin.  The soft limits automatically decelerate and stop the axes before they hit the limits switches A properly configured and functioning machine will not move beyond soft(ware) limits and will have the machine origin set as repeatable as the home switch/index mechanism is.  Linuxcnc can be homed by eye (alignment marks), with switches, with switches and an encoder index, or by using absolute encoders.  Homing seems simple enough - just move each joint to a known location, and set LinuxCNC's internal variables accordingly.  However, different machines have different requirements, and homing is actually quite complicated.
de: Die Referenzfahrt legt den Nullpunkt der G53-Maschinenkoordinaten fest.  Softlimits werden relativ zum Maschinenursprung definiert.  Eine korrekt konfigurierte und funktionierende Maschine bewegt sich nicht über die Soft(ware)-Grenzen hinaus und der Maschinenursprung ist so wiederholbar eingestellt wie der Referenzschalter/Indexmechanismus.  Linuxcnc kann mit dem Auge (Ausrichtungsmarken), mit Schaltern, mit Schaltern und einem Encoder-Index oder mit Absolut-Encodern ausgerichtet werden.  Homing scheint einfach genug - bewegen Sie einfach jedes Gelenk zu einer bekannten Position, und stellen Sie LinuxCNC's interne Variablen entsprechend.  Allerdings haben verschiedene Maschinen unterschiedliche Anforderungen, und Homing ist eigentlich ziemlich kompliziert.

note: type: Plain text
en: While it is possible to use LinuxCNC without homing switches/home procedures or limit switches, It defeats the extra security of the soft limits.
de: Es ist zwar möglich, LinuxCNC ohne Referenzschalter/Referenzfahrt oder Endschalter zu verwenden, aber die zusätzliche Sicherheit der Softlimits wird dadurch zunichte gemacht.

note: type: Title ==
en: Prerequisite
de: Voraussetzung

note: type: Plain text
en: Homing relies on some fundamental machine assumptions.
de: Die Durchführung der Referenzfahrt (engl. homing) beruht auf einigen grundlegenden Annahmen zur Maschine.

note: type: Plain text
en: The negative and positive directions are based on <<sec:machine-configurations,Tool Movement>> which can be different then the actual machine movement. ie on a mill typically the table moves rather then the tool.
de: Die negativen und positiven Richtungen basieren auf <<sec:machine-configurations,Tool Movement>>, die sich von der tatsächlichen Maschinenbewegung unterscheiden können. z.B. bewegt sich bei einer Fräsmaschine typischerweise der Tisch und nicht das Werkzeug.

note: type: Plain text
en: Everything is referenced from the G53 machine zero origin, the origin can be anywhere (even outside where you can move)
de: Alles wird vom Nullpunkt der G53-Maschine aus referenziert, der Ursprung kann überall liegen (auch außerhalb, wo man sich bewegen kann)

note: type: Plain text
en: The G53 machine zero origin is typically inside the soft limits area but not necessarily.
de: Der Nullpunkt der G53-Maschine liegt in der Regel innerhalb des Bereichs der weichen Grenzen, aber nicht zwingend.

note: type: Plain text
en: The homing switch offset sets where the origin is, but even it is referenced from the origin.
de: Der Offset des Referenzschalters legt fest, wo sich der Ursprung befindet, aber auch er wird vom Ursprung aus referenziert.

note: type: Plain text
en: When using encoder index homing, the home switch offset is calculated from the encoder reference position, after the home switch has been tripped.
de: Bei der Referenzfahrt mit Encoder-Index wird der Offset des Referenzschalters aus der Encoder-Referenzposition berechnet, nachdem der Referenzschalter ausgelöst wurde.

note: type: Plain text
en: The negative soft(ware) limits are the most you can move in the negative direction after homing.  (but they might not be negative in the absolute sense)
de: Die negativen Soft(ware)-Grenzen sind das Maximum, das Sie nach der Referenzfahrt in negativer Richtung bewegen können.  (aber sie sind nicht unbedingt negativ im absoluten Sinne)

note: type: Plain text
en: The positive soft(ware) limits are the most you can move in the positive direction after homing.  (but they might not be positive in the absolute sense, though it is usual to set it as a positive number)
de: Die positiven Soft(ware)-Grenzen sind die maximale Bewegung, die Sie nach der Referenzfahrt in positiver Richtung ausführen können.  (Sie sind jedoch nicht unbedingt positiv im absoluten Sinne, obwohl es üblich ist, sie als positive Zahl festzulegen)

note: type: Plain text
en: Soft(ware) limits are inside the limit switch area.
de: Soft(ware)-Grenzwerte befinden sich innerhalb des Endschalterbereichs.

note: type: Plain text
en: (Final) Homed Position is inside the soft limit area
de: (Endgültige) Referenzpunktposition liegt innerhalb des weichen (engl. soft) Grenzbereichs

note: type: Plain text
en: (If using switch based homing) the homing switch(es) either utilize the limit switches (shared home / limit switch), or when using a separate home switch, are inside the limit switch area.
de: (Bei Verwendung einer schalterbasierten Referenzfahrt nutzen die Referenzschalter entweder die Endschalter (gemeinsame Referenzfahrt-/Endschalter) oder befinden sich bei Verwendung eines separaten Referenzschalters im Bereich der Endschalter.

note: type: Plain text
en: If using a separate homing switch, it's possible to start homing on the wrong side of the home switch, which combined with HOME_IGNORE_LIMITS option will lead to a hard crash.  You can avoid this by making the home switch toggle it's state when the trip dog is on a particular side until it returns passed the trip point again.  Said another way, the home switch state must represent the position of the dog relative to the switch (ie _before_ or _after_ the switch), and must stay that way even if the dog coasts past the switch in the same direction.
de: Bei Verwendung eines separaten Referenzschalters ist es möglich, die Referenzfahrt auf der falschen Seite des Referenzschalters zu starten, was in Verbindung mit der Option HOME_IGNORE_LIMITS zu einem harten Absturz führen kann.  Sie können dies vermeiden, indem Sie den Home-Schalter so einstellen, dass er seinen Zustand umschaltet, wenn sich die auslösende Antriebsklaue auf einer bestimmten Seite befindet, bis sie den Auslöse-Punkt wieder passiert hat.  Anders ausgedrückt: Der Zustand des Home-Schalters muss die Position der Antriebsklaue relativ zum Schalter repräsentieren (d.h. _vor_ oder _nach_ dem Schalter), und er muss so bleiben, auch wenn die Klaue in der gleichen Richtung am Schalter vorbeiläuft.

note: type: Plain text
en: While it is possible to use LinuxCNC with the G53 machine origin outside the soft machine limits, if you use G28 or G30 without setting the parameters it goes to the origin by default. This would trip the limit switches before getting to position.
de: Es ist zwar möglich, LinuxCNC mit dem G53-Maschinenursprung außerhalb der weichen Maschinengrenzen zu verwenden, aber wenn Sie G28 oder G30 verwenden, ohne die Parameter einzustellen, geht es standardmäßig zum Ursprung. Dadurch würden die Endschalter ausgelöst, bevor die Position erreicht wird.

note: type: Title ==
en: Separate Home Switch Example Layout
de: Separater Home-Schalter Beispiel-Layout

note: type: Plain text
en: This example shows minimum and maximum limit switches with a separate home switch.
de: Dieses Beispiel zeigt minimale und maximale Endschalter mit einem separaten Home-Schalter.

note: type: Block title
en: Demonstrative Separate Switch Layout
de: Demonstratives separates Schalterlayout

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Example Homing Switch layout
de: Beispiel Layout für einen Referenzschalter

note: type: Plain text
en: A is the negative soft limit
de: A ist die negative weiche Grenze

note: type: Plain text
en: B is the G53 machine coordinate Origin
de: B ist die Koordinate der G53-Maschinen-Ursprung

note: type: Plain text
en: C is the home switch trip point
de: C ist der Auslösepunkt des Referenzschalters

note: type: Plain text
en: D is the positive soft limit
de: D ist die positive weiche Grenze

note: type: Plain text
en: H is the final home position (HOME) = 0 units
de: H ist die finale Ausgangsposition (HOME) = 0 Einheiten

note: type: Plain text
en: The -L and +L are the limit switches trip points
de: Die -L und +L sind die Auslösepunkte der Endschalter

note: type: Plain text
en: A<->B is the negative soft limits (MIN_LIMITS) = -3 units
de: A<->B ist die negative weiche Grenze (MIN_LIMITS) = -3 Einheiten

note: type: Plain text
en: B<->C is the home_offset (HOME_OFFSET) = -2.3 units
de: B<->C ist der Home_Offset (HOME_OFFSET) = -2,3 Einheiten

note: type: Plain text
en: B<->D is the positive soft limits (MAX_LIMITS) = 7 units
de: B<->D ist die positive weiche Grenze (MAX_LIMITS) = 7 Einheiten

note: type: Plain text
en: A<->D is the total travel = 10 units
de: A<->D ist der gesamte Weg = 10 Einheiten

note: type: Plain text
en: The distance between the limit switches and soft limits (-L<->A and D<-+L) is magnified in this example
de: Der Abstand zwischen den Endschaltern und Soft Limits (-L<->A und D<-+L) wird in diesem Beispiel vergrößert

note: type: Plain text
en: Note that there is distance between the limit switches and actual physical hard contact for coasting after the amplifier is disabled.
de: Beachten Sie, dass zwischen den Endschaltern und dem tatsächlichen harten Kontakt für den Auslauf nach der Deaktivierung des Verstärkers ein Abstand besteht.

note: type: Plain text
en: Homing sets the G53 coordinate system, while the machine origin (zero point) can be anywhere, setting the zero point at the negative soft limit makes all G53 coordinates positive, which is probably easiest to remember. Do this by setting MIN_LIMIT = 0 and make sure MAX_LIMIT is positive.
de: Die Referenzfahrt legt das G53-Koordinatensystem fest. Der Maschinenursprung (Nullpunkt) kann an einer beliebigen Stelle liegen, aber wenn Sie den Nullpunkt auf die negative weiche Grenze setzen, werden alle G53-Koordinaten positiv, was wahrscheinlich am einfachsten zu merken ist. Dazu setzen Sie MIN_LIMIT = 0 und stellen sicher, dass MAX_LIMIT positiv ist.

note: type: Title ==
en: Shared Limit/Home Switch Example Layout
de: Gemeinsamer End-/Hauptschalter Beispiel-Layout

note: type: Plain text
en: This example shows a maximum limit switch and a combined minimum limit/home switch.
de: Dieses Beispiel zeigt einen maximalen Endschalter und einen kombinierten minimalen End-/Referenzschalter.

note: type: Block title
en: Demonstrative Shared Switch Layout
de: Beispiel für ein Layout mit geteilten Schaltern

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Example shared Home Limit Switch layout
de: Beispiel für ein gemeinsames Layout des Home- und Endschalters

note: type: Plain text
en: A is the negative soft limit.
de: A ist die negative weiche Grenze.

note: type: Plain text
en: B is the G53 machine coordinate Origin.
de: B ist die Koordinate der G53-Maschinen-Ursprung.

note: type: Plain text
en: C is the home switch trip point shared with (-L) minimum limit trip.
de: C ist der Auslösepunkt des Referenzschalters, der gemeinsam mit dem (-L) minimalen Grenzwertauslöser verwendet wird.

note: type: Plain text
en: D is the positive soft limit.
de: D ist die positive weiche Grenze.

note: type: Plain text
en: H is the final home position (HOME) = 3 units.
de: H ist die endgültige Ausgangsposition (HOME) = 3 Einheiten.

note: type: Plain text
en: The -L and +L are the limit switch trip points.
de: Die -L und +L sind die Auslösepunkte der Endschalter.

note: type: Plain text
en: A<->B is the negative soft limits (MIN_LIMITS) = 0 units.
de: A<->B ist die negative weiche Grenze (MIN_LIMITS) = 0 Einheiten.

note: type: Plain text
en: B<->C is the home_offset (HOME_OFFSET) = -0.7 units.
de: B<->C ist der Home_Offset (HOME_OFFSET) = -0,7 Einheiten.

note: type: Plain text
en: B<->D is the positive soft limits (MAX_LIMITS) 10 units.
de: B<->D ist die positive weiche Grenze (MAX_LIMITS) 10 Einheiten.

note: type: Plain text
en: A<->D is the total travel = 10 units.
de: A<->D ist der gesamte Weg = 10 Einheiten.

note: type: Plain text
en: The distance between the limits switches and soft limits (-L<->A and D<->+L) is magnified in this example.
de: Der Abstand zwischen den Endschaltern und den Soft Limits (-L<->A und D<->+L) wird in diesem Beispiel vergrößert.

note: type: Title ==
en: Homing Sequence
de: Referenzfahrt Abfolge

note: type: Plain text
en: There are four possible homing sequences defined by the sign of HOME_SEARCH_VEL and HOME_LATCH_VEL, along with the associated configuration parameters as shown in the following table. Two basic conditions exist, HOME_SEARCH_VEL and HOME_LATCH_VEL are the same sign or they are opposite signs. For a more detailed description of what each configuration parameter does, see the following section.
de: Es gibt vier mögliche Referenzfahrt-Abfolgen, die durch das Vorzeichen von HOME_SEARCH_VEL und HOME_LATCH_VEL sowie die zugehörigen Konfigurationsparameter definiert sind, wie in der folgenden Tabelle dargestellt. Es gibt zwei wesentliche Varianten: HOME_SEARCH_VEL und HOME_LATCH_VEL haben das gleiche Vorzeichen oder sie haben entgegengesetzte Vorzeichen. Eine genauere Beschreibung der Funktionen der einzelnen Konfigurationsparameter finden Sie im folgenden Abschnitt.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Homing Sequences
de: Referenzfahrt-Abläufe

note: type: Plain text
en: The following determines exactly how the home sequence behaves.  They are defined in an [JOINT_n] section of the INI file.
de: Im Folgenden wird genau festgelegt, wie sich die Stammfolge verhält.  Sie werden in einem [JOINT_n]-Abschnitt der INI-Datei definiert.

note: type: Table
en: Homing Type
de: Referenzfahrt Typ

note: type: Table
en: Immediate
de: Unmittelbar

note: type: Table
en: Index-only
de: Nur-Index

note: type: Table
en: nonzero
de: ungleich Null

note: type: Table
en: Switch-only
de: Nur Schalter

note: type: Table
en: Switch and Index
de: Schalter und Index

note: type: Plain text
en: Any other combinations may result in an error.
de: Alle anderen Kombinationen können zu einem Fehler führen.

note: type: Title ===
en: HOME_SEARCH_VEL(((HOME SEARCH VEL)))
de: HOME_SEARCH_VEL(((HOME SUCHE VEL)))

note: type: Plain text
en: This variable has units of machine-units per second.
de: Diese Variable hat die Einheit von Maschineneinheiten pro Sekunde.

note: type: Plain text
en: The default value is zero. A value of zero causes LinuxCNC to assume that there is no home switch; the search stage of homing is skipped.
de: Der Standardwert ist Null. Ein Wert von Null bewirkt, dass LinuxCNC davon ausgeht, dass es keine Home-Schalter gibt; die Suche Phase der Referenzfahrt wird übersprungen.

note: type: Plain text
en: If HOME_SEARCH_VEL is non-zero, then LinuxCNC assumes that there is a home switch. It begins by checking whether the home switch is already tripped. If tripped it backs off the switch at HOME_SEARCH_VEL. The direction of the back-off is opposite the sign of HOME_SEARCH_VEL. Then it searches for the home switch by moving in the direction specified by the sign of HOME_SEARCH_VEL, at a speed determined by its absolute value. When the home switch is detected, the joint will stop as fast as possible, but there will always be some overshoot. The amount of overshoot depends on the speed. If it is too high, the joint might overshoot enough to hit a limit switch or crash into the end of travel.  On the other hand, if HOME_SEARCH_VEL is too low, homing can take a long time.
de: Wenn HOME_SEARCH_VEL ungleich Null ist, dann nimmt LinuxCNC an, dass es einen Referenzschalter (engl. home switch) gibt. Es beginnt mit der Überprüfung, ob der Referenzschalter bereits ausgelöst hat. Wenn dies der Fall ist, wird der Schalter bei HOME_SEARCH_VEL zurückgesetzt. Die Richtung des Zurückfahrens ist entgegengesetzt dem Vorzeichen von HOME_SEARCH_VEL. Anschließend wird der Schalter in der durch das Vorzeichen von HOME_SEARCH_VEL festgelegten Richtung mit einer durch den Absolutwert bestimmten Geschwindigkeit gesucht. Wenn der Referenzschalter erkannt wird, hält das Gelenk so schnell wie möglich an, wobei jedoch immer ein gewisses Überschwingen auftritt. Das Ausmaß des Überschwingens hängt von der Geschwindigkeit ab. Ist sie zu hoch, kann das Gelenk so weit überschwingen, dass es gegen einen Endschalter stößt oder gegen das Ende des Verfahrwegs prallt.  Ist HOME_SEARCH_VEL hingegen zu niedrig, kann die Referenzfahrt sehr lange dauern.

note: type: Plain text
en: Specifies the speed and direction that LinuxCNC uses when it makes its final accurate determination of the home switch (if present) and index pulse location (if present). It will usually be slower than the search velocity to maximize accuracy. If HOME_SEARCH_VEL and HOME_LATCH_VEL have the same sign, then the latch phase is done while moving in the same direction as the search phase. (In that case, LinuxCNC first backs off the switch, before moving towards it again at the latch velocity.) If HOME_SEARCH_VEL and HOME_LATCH_VEL have opposite signs, the latch phase is done while moving in the opposite direction from the search phase.  That means LinuxCNC will latch the first pulse after it moves off the switch. If HOME_SEARCH_VEL is zero (meaning there is no home switch), and this parameter is nonzero, LinuxCNC goes ahead to the index pulse search. If HOME_SEARCH_VEL is non-zero and this parameter is zero, it is an error and the homing operation will fail. The default value is zero.
de: Legt die Geschwindigkeit und Richtung, die LinuxCNC verwendet, wenn es seine endgültige genaue Bestimmung der Home-Schalter (falls vorhanden) und Index-Impuls Lage (falls vorhanden) macht. Es wird in der Regel langsamer als die Suchgeschwindigkeit sein, um die Genauigkeit zu maximieren. Wenn HOME_SEARCH_VEL und HOME_LATCH_VEL das gleiche Vorzeichen haben, dann wird die Latch-Phase durchgeführt, während man sich in die gleiche Richtung wie die Suchphase bewegt. (In diesem Fall fährt LinuxCNC zunächst vom Schalter zurück, bevor es sich mit der Verriegelungsgeschwindigkeit wieder auf ihn zubewegt). Wenn HOME_SEARCH_VEL und HOME_LATCH_VEL entgegengesetzte Vorzeichen haben, wird die Latch-Phase durchgeführt, während man sich in die entgegengesetzte Richtung der Suchphase bewegt.  Das bedeutet, dass LinuxCNC den ersten Impuls einrastet, nachdem es den Schalter verlassen hat. Wenn HOME_SEARCH_VEL gleich Null ist (d.h. es gibt keinen Home-Schalter), und dieser Parameter ungleich Null ist, geht LinuxCNC zur Index-Impuls-Suche über. Wenn HOME_SEARCH_VEL nicht Null ist und dieser Parameter ist auf Null gesetzt, so ist es ein Fehler und die Referenzfahrt wird entsprechend fehlschlagen. Der Standardwert ist Null.

note: type: Plain text
en: It specifies the speed that LinuxCNC uses when it makes its move from HOME_OFFSET to the HOME position. If the HOME_FINAL_VEL is missing from the INI file, then the maximum joint speed is used to make this move.  The value must be a positive number.
de: Sie gibt die Geschwindigkeit an, die LinuxCNC verwendet, wenn es seine Bewegung von HOME_OFFSET zur HOME-Position durchführt. Wenn die HOME_FINAL_VEL in der INI-Datei fehlt, dann wird die maximale Gelenkgeschwindigkeit verwendet, um diese Bewegung zu machen.  Der Wert muss eine positive Zahl sein.

note: type: Plain text
en: Can hold the values YES / NO. The default value for this parameter is NO.  This flag determines whether LinuxCNC will ignore the limit switch input for this joint while homing. This setting will not ignore limit inputs for other joints. If you do not have a separate home switch set this to YES and connect the limit switch signal to the joint home switch input in HAL. LinuxCNC will ignore the limit switch input for this joint while homing. To use only one input for all homing and limits you will have to block the limit signals of the joints not homing in HAL and home one joint at a time.
de: Kann die Werte YES / NO annehmen. Der Standardwert für diesen Parameter ist NO.  Dieses Flag bestimmt, ob LinuxCNC die Endschaltereingabe für dieses Gelenk während der Referenzfahrt ignoriert. Diese Einstellung wird nicht ignorieren Endschalter Eingänge für andere Gelenke. Wenn Sie keinen separaten Refrenzschalter haben, setzen Sie diesen Parameter auf YES und verbinden Sie das Endschaltersignal mit dem gemeinsamen Referenz-(engl. Home-)schalter-Eingang in HAL. LinuxCNC wird den Endschaltereingang für dieses Gelenk während der Referenzfahrt ignorieren. Um nur einen Eingang für alle Referenzfahrten und Endschalter zu verwenden, müssen Sie die Endschaltersignale der Gelenke, die nicht in HAL referenzieren, blockieren und ein Gelenk nach dem anderen referenzieren.

note: type: Plain text
en: Specifies whether or not there is an index pulse. If the flag is true (HOME_USE_INDEX = YES), LinuxCNC will latch on the rising edge of the index pulse. If false, LinuxCNC will latch on either the rising or falling edge of the home switch (depending on the signs of HOME_SEARCH_VEL and HOME_LATCH_VEL). The default value is NO.
de: Gibt an, ob es einen Indeximpuls gibt oder nicht. Wenn das Flag wahr ist (HOME_USE_INDEX = YES), wird LinuxCNC auf die steigende Flanke des Index-Impulses einrasten. Wenn falsch, wird LinuxCNC entweder auf die steigende oder die fallende Flanke des Home-Schalters einrasten (abhängig von den Vorzeichen von HOME_SEARCH_VEL und HOME_LATCH_VEL). Der Standardwert ist NO.

note: type: Plain text
en: HOME_USE_INDEX requires connections in your HAL file to joint.n.index-enable from the encoder.n.index-enable.
de: HOME_USE_INDEX erfordert Verbindungen in Ihrer HAL-Datei zu joint.n.index-enable vom encoder.n.index-enable.

note: type: Plain text
en: Default is NO. Use YES if the encoder used for this joint does not reset its counter when an index pulse is detected after assertion of the joint index_enable HAL pin.  Applicable only for HOME_USE_INDEX = YES.
de: Voreinstellung ist NO. Verwenden Sie YES, wenn der für dieses Gelenk verwendete Encoder seinen Zähler nicht zurücksetzt, wenn ein Indeximpuls nach der Aktivierung des Gelenkindex_enable HAL-Pins erkannt wird.  Gilt nur für HOME_USE_INDEX = YES.

note: type: Plain text
en: This defines the location of the origin zero point of the G53 machine coordinate system.  It is the distance (offset), in joint units, from the machine origin to the home switch trip point or index pulse.  After detecting the switch trip point/index pulse, LinuxCNC sets the joint coordinate position to HOME_OFFSET, thus defining the origin, which the soft limits references from.  The default value is zero.
de: Definiert die Lage des Ursprungsnullpunkts des G53-Maschinenkoordinatensystems.  Es ist der Abstand (Offset), in gemeinsamen Einheiten, von der Maschine Ursprung auf die Referenzsschalter Auslösepunkt oder Index-Impuls.  Nach der Erkennung der Schalter Auslösepunkt / Index-Impuls, setzt LinuxCNC die gemeinsame Koordinatenposition zu HOME_OFFSET, und damit die Definition der Ursprungs, von dem sich die weichen Grenzen ableiten.  Der Standardwert ist Null.

note: type: Plain text
en: The home switch location, as indicated by the HOME_OFFSET variable, can be inside or outside the soft limits. They will be shared with or inside the hard limit switches.
de: Die Position des Referenzschalters, die durch die Variable HOME_OFFSET angegeben wird, kann innerhalb oder außerhalb der Soft Limits liegen. Sie werden gemeinsam mit oder innerhalb der harten Endschalter verwendet.

note: type: Title ===
en: HOME(((HOME)))
de: Referenzpunkt (engl. Home)(((HOME)))(((Referenzpunkt)))

note: type: Plain text
en: The position that the joint will go to upon completion of the homing sequence. After detecting the home switch or home switch then index pulse (depending on configuration), and setting the coordinate of that point to HOME_OFFSET, LinuxCNC makes a move to HOME as the final step of the homing process. The default value is zero. Note that even if this parameter is the same as HOME_OFFSET, the joint will slightly overshoot the latched position as it stops. Therefore there will always be a small move at this time (unless HOME_SEARCH_VEL is zero, and the entire search/latch stage was skipped). This final move will be made at the joint's maximum velocity unless HOME_FINAL_VEL has been set.
de: Die Position, die das Gelenk nach Abschluss der Referenzierungsfahrt annehmen soll. Nach der Erkennung der Referenzschalter oder erst des Referenzschalters gefolgt vom Index-Impuls (je nach Konfiguration), und die Einstellung der Koordinate dieses Punktes zu HOME_OFFSET, führt LinuxCNC zu HOME als Abschluss Referenzfahrt durch. Der Standardwert ist Null. Beachten Sie, dass, selbst wenn dieser Parameter der gleiche wie HOME_OFFSET ist, das Gelenk vermutlich leicht über die verriegelte Position hinaus bewegt worden. Daher wird es zu diesem Zeitpunkt immer eine kleine Bewegung geben (es sei denn, HOME_SEARCH_VEL ist Null und die gesamte Such-/Speicherphase wurde übersprungen). Diese letzte Bewegung wird mit der maximalen Geschwindigkeit des Gelenks ausgeführt, es sei denn, HOME_FINAL_VEL wurde eingestellt.

note: type: Plain text
en: The distinction between 'HOME_OFFSET' and 'HOME' is that 'HOME_OFFSET' first establishes the origin location and scale on the machine by applying the 'HOME_OFFSET' value to the location where home was found, and then 'HOME' says where the joint should move to on that scale.
de: Der Unterschied zwischen 'HOME_OFFSET' und 'HOME' besteht darin, dass 'HOME_OFFSET' zunächst die Ursprungsposition und den Maßstab auf der Maschine festlegt, indem der 'HOME_OFFSET' -Wert auf die Position angewendet wird, an der die Ausgangsposition gefunden wurde, und dann 'HOME' angibt, wohin sich das Gelenk auf diesem Maßstab bewegen soll.

note: type: Plain text
en: If there is not a separate home switch input for this joint, but a number of momentary switches wired to the same pin, set this value to 1 to prevent homing from starting if one of the shared switches is already closed. Set this value to 0 to permit homing even if the switch is already closed.
de: Wenn es keinen separaten Referenzschaltereingang für diese Gelenk gibt, sondern mehrere Taster an denselben Pin angeschlossen sind, setzen Sie diesen Wert auf 1, um zu verhindern, dass die Referenzfahrt beginnt, wenn einer der gemeinsamen Schalter bereits geschlossen ist. Setzen Sie diesen Wert auf 0, um die Referenzfahrt zu ermöglichen, auch wenn der Schalter bereits geschlossen ist.

note: type: Plain text
en: Use for absolute encoders.  When a request is made to home the joint, the current joint position is set to the '[JOINT_n]HOME_OFFSET' value.
de: Verwendung für absolute Encoder.  In Reaktion auf eine Anforderung zur Referenzfahrt des Gelenks  wird die aktuelle Gelenkposition auf den '[JOINT_n]HOME_OFFSET' Wert gesetzt.

note: type: Plain text
en: The final move to the '[JOINT_n]HOME' position is optional according to the 'HOME_ABSOLUTE_ENCODER' setting:
de: Die abschließende Bewegung zur '[JOINT_n]HOME' Position ist entsprechend der 'HOME_ABSOLUTE_ENCODER' Einstellung optional:

note: type: delimited block -
en: HOME_ABSOLUTE_ENCODER = 0 (Default) joint does not use an absolute encoder
    HOME_ABSOLUTE_ENCODER = 1 Absolute encoder, final move to [JOINT_n]HOME
    HOME_ABSOLUTE_ENCODER = 2 Absolute encoder, NO final move to [JOINT_n]HOME
de: HOME_ABSOLUTE_ENCODER = 0 (Standard) Gelenk verwendet keinen Absolutwertgeber
    HOME_ABSOLUTE_ENCODER = 1 Absolutwertgeber, endgültige Bewegung zu [JOINT_n]HOME
    HOME_ABSOLUTE_ENCODER = 2 Absolutwertgeber, KEINE endgültige Bewegung zu [JOINT_n]HOME

note: type: Plain text
en: A HOME_IS_SHARED setting is silently ignored.
de: Eine HOME_IS_SHARED-Einstellung wird stillschweigend ignoriert.

note: type: Plain text
en: A request to rehome the joint is silently ignored.
de: Eine Aufforderung, für ein Gelenk die Referenzfahrt zu wiederholen, wird stillschweigend ignoriert.

note: type: Plain text
en: Used to define a multi-joint homing sequence *HOME ALL* and enforce homing order (e.g., Z may not be homed if X is not yet homed). A joint may be homed after all joints with a lower (absolute value)  HOME_SEQUENCE have already been homed and are at the HOME_OFFSET. If two joints have the same HOME_SEQUENCE, they may be homed at the same time.
de: Wird verwendet, um eine Multigelenk-Referenzierungssequenz *HOME ALL* zu definieren und die Referenzierungsreihenfolge zu erzwingen (z.B. darf Z nicht referenziert werden, wenn X noch nicht referenziert ist). Ein Gelenk kann erst dann referenziert werden, wenn alle Gelenke mit einer niedrigeren (absoluten) HOME_SEQUENCE bereits referenziert wurden und sich am HOME_OFFSET befinden. Wenn zwei Gelenke die gleiche HOME_SEQUENCE haben, können sie gleichzeitig referenziert werden.

note: type: Plain text
en: If HOME_SEQUENCE is not specified then the joint will not be homed by the *HOME ALL* sequence (but may be homed by individual joint-specific homing commands).
de: Wenn HOME_SEQUENCE nicht angegeben ist, wird das Gelenk nicht durch die *HOME ALL*-Sequenz referenziert (sondern kann durch einzelne gelenkspezifische Referenzierungsbefehle referenziert werden).

note: type: Plain text
en: The initial HOME_SEQUENCE number may be 0, 1 (or -1).  The absolute value of sequence numbers must increment by one -- skipping sequence numbers is not supported.  If a sequence number is omitted, *HOME ALL* homing will stop upon completion of the last valid sequence number.
de: Die anfängliche HOME_SEQUENCE-Nummer kann 0, 1 (oder -1) sein.  Der absolute Wert der Sequenznummern muss um eins erhöht werden - das Überspringen von Sequenznummern wird nicht unterstützt.  Wenn eine Sequenznummer weggelassen wird, stoppt *HOME ALL* die Referenzfahrt nach Abschluss der letzten gültigen Sequenznummer.

note: type: Plain text
en: *Negative* HOME_SEQUENCE values indicate that joints in the sequence
    should *synchronize the final move* to [JOINT_n]HOME by waiting until all 
    joints in the sequence are ready.  If any joint has a *negative*
    HOME_SEQUENCE value, then all joints with the same absolute value
    (positive or negative) of the HOME_SEQUENCE item value will synchronize
    the final move.
de: *Negative* HOME_SEQUENCE-Werte zeigen an, dass die Gelenke in der Sequenz
    die letzte Bewegung zu [JOINT_n]HOME *synchronisieren* sollen, indem sie warten, bis alle
    Gelenke in der Sequenz hierzu bereit sind.  Wenn ein Gelenk einen *negativen*
    HOME_SEQUENCE-Wert hat, dann müssen alle Gelenke mit demselben absoluten Wert
    (positiv oder negativ) des HOME_SEQUENCE-Wertes die letzte Bewegung synchronisieren.

note: type: Plain text
en: A *negative* HOME_SEQUENCE also applies to commands to home a single joint.  If the HOME_SEQUENCE value is *negative*, all joints having the same absolute value of that HOME_SEQUENCE will be *homed together with a synchronized final move*.  If the HOME_SEQUENCE value is zero or positive, a command to home the joint will home only the specified joint.
de: Eine *negative* HOME_SEQUENCE gilt auch für das Ausführen einer Referenzfahrt eines einzelnen Gelenks.  Wenn der HOME_SEQUENCE-Wert *negativ* ist, werden alle Gelenke, die den gleichen absoluten Wert dieser HOME_SEQUENCE haben, *gemeinsam mit einer synchronisierten Endbewegung* freigesetzt.  Wenn der HOME_SEQUENCE-Wert Null oder positiv ist, wird nur das angegebene Gelenk in die Ausgangsstellung gebracht.

note: type: Plain text
en: Joint mode jogging of joints having a negative HOME_SEQUENCE is disallowed.  In common gantry applications, such jogging can lead to misalignment (racking).  Note that conventional jogging in world coordinates is always available once a machine is homed.
de: Das manualle Bewegen im "joint mode" von Gelenken mit einer negativen HOME_SEQUENCE ist nicht zulässig.  Bei üblichen Portalanwendungen kann ein solches Verfahren zu einer Fehlausrichtung führen (Racking).  Beachten Sie, dass das konventionelle Jogging in Weltkoordinaten immer verfügbar ist, sobald eine Maschine referenziert ist.

note: type: Plain text
en: Examples for a 3 joint system
de: Beispiele für ein 3-Gelenk-System

note: type: Plain text
en: Two sequences (0,1), no synchronization
de: Zwei Sequenzen (0,1), keine Synchronisation

note: type: Plain text
en: Two sequences, joints 1 and 2 synchronized
de: Zwei Sequenzen, Gelenke 1 und 2 synchronisiert

note: type: Plain text
en: With mixed positive and negative values, joints 1 and 2 synchronized
de: Bei gemischten positiven und negativen Werten synchronisierten die Gelenke 1 und 2

note: type: Plain text
en: One sequence, no synchronization
de: Eine Sequenz, keine Synchronisation

note: type: Plain text
en: One sequence, all joints synchronized
de: Eine Sequenz, alle Gelenke synchronisiert

note: type: Plain text
en: If this setting is true, this joint becomes unhomed whenever the machine transitions into the OFF state. This is appropriate for any joint that does not maintain position when the joint drive is off.  Some stepper drives, especially microstep drives, may need this.
de: Wenn diese Einstellung aus TRUE gesetzt ist, geht für dieses Gelenk die Referenzeinstellung nicht verloren, wenn die Maschine in den AUS-Zustand übergeht. Dies ist für jedes Gelenk geeignet, das seine Position nicht beibehält, wenn der Gelenkantrieb ausgeschaltet ist.  Einige Schrittantriebe, insbesondere Mikroschrittantriebe, können dies benötigen.

note: type: Plain text
en: If this joint is a locking rotary indexer, it will unlock before homing, and lock afterward.
de: Handelt es sich bei diesem Gelenk um einen verriegelnden Drehindexer, wird es vor der Referenzfahrt entriegelt und danach verriegelt.

note: type: Title ===
en: Immediate Homing(((Immediate Homing)))
de: Unmittelbare Referenzfahrt (engl. immediate homing)(((Unmittelbares Referenzfahrt)))(((immediate homing)))

note: type: Plain text
en: If a joint does not have home switches or does not have a logical home position like a rotary joint and you want that joint to home at the current position when the "Home All" button is pressed in the Axis gui, then the following INI entries for that joint are needed.
de: Wenn ein Gelenk keine Home-Schalter oder keine logische Home-Position wie ein Drehgelenk hat und Sie möchten, dass dieses Gelenk an der aktuellen Position startet, wenn die Schaltfläche "Home All" in der Achsen-GUI gedrückt wird, dann sind die folgenden INI-Einträge für dieses Gelenk erforderlich.

note: type: Plain text
en: The default values for unspecified HOME_SEARCH_VEL, HOME_LATCH_VEL, HOME_USE_INDEX, HOME, and HOME_OFFSET are *zero*, so they may be omitted when requesting immediate homing.  A valid HOME_SEQUENCE number should usually be included since omitting a HOME_SEQUENCE eliminates the joint from *HOME ALL* behavior as noted above.
de: Die Standardwerte für nicht spezifizierte HOME_SEARCH_VEL, HOME_LATCH_VEL, HOME_USE_INDEX, HOME und HOME_OFFSET sind *Null*, so dass sie weggelassen werden können, wenn eine sofortige Referenzfahrt angefordert wird.  Eine gültige HOME_SEQUENCE-Nummer sollte in der Regel angegeben werden, da das Weglassen einer HOME_SEQUENCE die Verbindung vom *HOME ALL*-Verhalten ausschließt (siehe oben).

note: type: Title ===
en: Inhibiting Homing(((Inhibiting Homing)))
de: Vermeiden einer Referenzfahrt(((Vermeiden einer Referenzfahrt)))

note: type: Plain text
en: A HAL pin (motion.homing-inhibit) is provided to disallow homing initiation for both "Home All" and individual joint homing.
de: Ein HAL -Pin (motion.homing-inhibit) ist vorgesehen, um die Einleitung der Referenzfahrt sowohl für "alle Achsen gleichzeitig (engl. "Home All") als auch für die Referenzfahrt einzelner Gelenke zu unterbinden.

note: type: Plain text
en: Some systems take advantage of the provisions for synchronizing final joint homing moves as controlled by negative [JOINT_N]HOME_SEQUENCE= INI file items.  By default, the synchronization provisions disallow *joint* jogging prior to homing in order to prevent *joint* jogs that could misalign the machine (gantry racking for example).
de: Einige Systeme nutzen die Bestimmungen für die Synchronisierung der endgültigen Gelenkbewegungen, die werden durch negative [JOINT_N]HOME_SEQUENCE=INI-Dateielemente.  Standardmäßig verbieten die Synchronisierungsbestimmungen ein *Gelenk*-Jogging vor der Referenzfahrt, um ein *Gelenk*-Jogging zu verhindern, das die Maschine falsch ausrichten könnte (z. B. Portalkreuzung).

note: type: Plain text
en: System integrator can allow *joint* jogging prior to homing with HAL logic that switches the [JOINT_N]HOME_SEQUENCE items.  This logic should also assert the *motion.homing-inhibit* pin to ensure that homing is not inadvertently initiated when *joint* jogging is enabled.
de: Der Systemintegrator kann das *Gelenk*-Jogging vor der Referenzfahrt mit einer HAL-Logik erlauben, um die [JOINT_N]HOME_SEQUENCE-Elemente umzuschalten.  Diese Logik sollte auch den Pin *motion.homing-inhibit* aktivieren, um sicherzustellen, dass die Referenzfahrt nicht versehentlich eingeleitet wird, wenn der *Joint*-Jogging-Modus aktiviert ist.

note: type: Plain text
en: Example: Synced joints 0,1 using negative sequence (-1) for synchronized homing with a switch (allow_jjog) that selects a positive sequence (1) for individual *joint* jogging prior to homing (partial HAL code):
de: Beispiel: Synchronisierte Gelenke 0,1 mit negativer Sequenz (-1) für synchronisierte Referenzfahrt mit einem Schalter (allow_jjog), der eine positive Sequenz (1) für individuelles *Gelenk*-Jogging vor der Referenzfahrt wählt (partieller HAL-Code):

note: type: delimited block -
en: loadrt mux2           names=home_sequence_mux
    loadrt conv_float_s32 names=home_sequence_s32
    setp home_sequence_mux.in0 -1
    setp home_sequence_mux.in1  1
    addf home_sequence_mux servo-thread
    addf home_sequence_s32 servo-thread
    ...
    net home_seq_float <= home_sequence_mux.out
    net home_seq_float => home_sequence_s32.in
    net home_seq_s32   <= home_sequence_s32.out
    net home_seq_s32   => ini.0.home_sequence
    net home_seq_s32   => ini.1.home_sequence
    ...
    # allow_jjog: pin created by a virtual panel or hardware switch
    net hsequence_select <= allow_jjog
    net hsequence_select => home_sequence_mux.sel
    net hsequence_select => motion.homing-inhibit
de: loadrt mux2 names=home_sequence_mux
    loadrt conv_float_s32 names=heimat_sequenz_s32
    setp home_sequenz_mux.in0 -1
    setp home_sequenz_mux.in1 1
    addf home_sequence_mux servo-thread
    addf home_sequence_s32 servo-thread
    ...
    net home_seq_float <= home_sequence_mux.out
    net home_seq_float => home_sequence_s32.in
    net home_seq_s32 <= home_sequence_s32.out
    net home_seq_s32 => ini.0.home_sequence
    net home_seq_s32 => ini.1.home_sequence
    ...
    # allow_jjog: von einem virtuellen Bedienfeld oder Hardware-Schalter erzeugter Pin
    net hsequence_select <= allow_jog
    net hsequence_select => home_sequence_mux.sel
    net hsequence_select => motion.homing-inhibit

note: type: Plain text
en: INI HAL pins (like ini.N.home_sequence) are not available until milltask starts so execution of the above HAL commands should be deferred using a postgui HAL file or a delayed [APPLICATION]APP= script.
de: INI HAL-Pins (wie ini.N.home_sequence) sind nicht verfügbar, bis milltask startet, so dass die Ausführung der oben genannten HAL-Befehle mit Hilfe einer postgui HAL-Datei oder eines verzögerten [APPLICATION]APP=-Skripts verschoben werden sollte.

note: type: Plain text
en: Realtime synchronization of joint jogging for multiple joints requires additional HAL connections for the Manual-Pulse-Generator (MPG) type jog pins (joint.N.enable, joint.N.scale, joint.N.counts).
de: Für die Echtzeitsynchronisation des Gelenk-Joggings für mehrere Gelenke sind zusätzliche HAL-Verbindungen für die Jog-Pins vom Typ Manual-Pulse-Generator (MPG) erforderlich (joint.N.enable, joint.N.scale, joint.N.counts).

note: type: Plain text
en: An example simulation config (gantry_jjog.ini) that demonstrates joint jogging when using negative home sequences is located in the: configs/sim/axis/gantry/ directory.
de: Eine Beispielsimulationskonfiguration (gantry_jjog.ini), die das Joggen der Gelenke bei Verwendung negativer Nullpunktsequenzen demonstriert, befindet sich im Verzeichnis: configs/sim/axis/gantry/.

note: type: Title =
en: Integrator Concepts
de: Integrator-Konzepte

note: type: Title ==
en: File Locations
de: Dateispeicherorte

note: type: Plain text
en: LinuxCNC looks for the configuration and G-code files in a specific place. The location depends on how you run LinuxCNC.
de: LinuxCNC sucht nach den Konfigurations- und G-Code-Dateien an einem bestimmten Ort. Der Ort hängt davon ab, wie Sie LinuxCNC ausführen.

note: type: Title ===
en: Installed
de: Installiert

note: type: Plain text
en: If your running LinuxCNC from the LiveCD or you installed via a .deb and use the configuration picker 'LinuxCNC' from the menu LinuxCNC looks in the following directories:
de: Wenn Ihr LinuxCNC von der LiveCD oder Sie über eine .deb installiert haben, und verwenden Sie die Konfiguration Picker 'LinuxCNC' aus dem Menü LinuxCNC, so schaut LinuxCNC in die folgenden Verzeichnisse:

note: type: Plain text
en: The LinuxCNC directory is located at '/home/user-name/linuxcnc'.
de: Das LinuxCNC-Verzeichnis befindet sich unter ‚/home/benutzername/linuxcnc‘.

note: type: Plain text
en: The Configuration directories are located at '/home/user-name/linuxcnc/configs'.
de: Die Konfigurationsverzeichnisse befinden sich unter '/home/benutzername/linuxcnc/configs'.

note: type: Plain text
en: Configuration files are located at '/home/user-name/linuxcnc/configs/name-of-config'.
de: Die Konfigurationsdateien befinden sich unter '/home/benutzername/linuxcnc/configs/name-of-config'.

note: type: Plain text
en: G-code files are located at /home/user-name/linuxcnc/nc_files'.
de: Die G-Code-Dateien befinden sich unter /home/benutzername/linuxcnc/nc_files'.

note: type: Plain text
en: For example for a configuration called Mill and a user name Fred the directory and file structure would look like this.
de: Bei einer Konfiguration mit dem Namen Mill und dem Benutzernamen Fred würde die Verzeichnis- und Dateistruktur zum Beispiel wie folgt aussehen.

note: type: Title ===
en: Command Line
de: Befehlszeile

note: type: Plain text
en: If you run LinuxCNC from the command line and specify the name and location of the INI file the file locations can be in a different place. To view the options for running LinuxCNC from the command line run 'linuxcnc -h'.
de: Wenn Sie LinuxCNC von der Kommandozeile aus und geben Sie den Namen und den Speicherort der INI-Datei können die Dateispeicherorte in einem anderen Ort sein. Um die Optionen für die Ausführung von LinuxCNC von der Kommandozeile laufen 'linuxcnc -h'.

note: type: Plain text
en: Optional locations for some files can be configured in the INI file. See the `<<sub:ini:sec:display,[DISPLAY]>>` section and the `<<sub:ini:sec:rs274ngc,[RS274NGC]>>` section.
de: Optionale Speicherorte für einige Dateien können in der INI-Datei konfiguriert werden. Siehe den Abschnitt `<<sub:ini:sec:display,[DISPLAY]>>` und den Abschnitt `<<sub:ini:sec:rs274ngc,[RS274NGC]>>`.

note: type: Title ===
en: Files
de: Dateien

note: type: Plain text
en: Each configuration directory requires at least the following files:
de: Jedes Konfigurationsverzeichnis benötigt mindestens die folgenden Dateien:

note: type: Plain text
en: An INI file .ini
de: Eine INI-Datei .ini

note: type: Plain text
en: A HAL file .hal or HALTCL file .tcl specified in the <<sub:ini:sec:hal,HAL>> section of the INI file.
de: Eine HAL-Datei .hal oder HALTCL-Datei .tcl, die im Abschnitt <<sub:ini:sec:hal,HAL>> der INI-Datei angegeben ist.

note: type: Plain text
en: Other files may be required for some GUIs.
de: Für einige GUIs können andere Dateien erforderlich sein.

note: type: Plain text
en: Optionally you can also have:
de: Optional können Sie auch haben:

note: type: Plain text
en: A Variables file .var
de: Eine Variablendatei .var

note: type: Plain text
en: If you omit a .var file in a directory but include `<<sub:ini:sec:rs274ngc,[RS274NGC]>>` PARAMETER_FILE=somefilename.var, the file will be created for you when LinuxCNC starts.
de: Wenn Sie eine .var-Datei in einem Verzeichnis weglassen, aber `<<sub:ini:sec:rs274ngc,[RS274NGC]>>` PARAMETER_FILE=somefilename.var, wird die Datei für Sie erstellt werden, wenn LinuxCNC startet.

note: type: Plain text
en: If you omit a .var file and omit the item [RS274NGC] PARAMETER_FILE, a var file named rs274ngc.var will be created when LinuxCNC starts. There may be some confusing messages if [RS274NGC]PARAMETER_FILE is omitted.
de: Wenn Sie eine .var-Datei weglassen und den Punkt [RS274NGC] PARAMETER_FILE weglassen, wird eine var-Datei mit dem Namen rs274ngc.var erstellt, wenn LinuxCNC startet. Es kann einige verwirrende Meldungen geben, wenn [RS274NGC]PARAMETER_FILE weggelassen wird.

note: type: Plain text
en: A Tool Table file .tbl if `<<sub:ini:sec:emcmot,[EMCMOT]>>` TOOL_TABLE has been specified in the INI file. Some configurations do not need a tool table.
de: Eine Werkzeugtabellendatei .tbl, wenn `<<sub:ini:sec:emcmot,[EMCMOT]>>` TOOL_TABLE in der INI-Datei angegeben wurde. Einige Konfigurationen benötigen keine Werkzeugtabelle.

note: type: Title ==
en: Stepper Systems
de: Schrittmotor-Systeme (engl. stepper systems)

note: type: Title ===
en: Base Period
de: Basiszeitraum (engl. base period)

note: type: Plain text
en: BASE_PERIOD is the 'heartbeat' of your LinuxCNC computer.footnote:[This section refers to using *stepgen*, LinuxCNC's built-in step generator. Some hardware devices have their own step generator and do not use LinuxCNC's built-in one. In that case, refer to your hardware manual.] Every period, the software step generator decides if it is time for another step pulse.  A shorter period will allow you to generate more pulses per second, within limits. But if you go too short, your computer will spend so much time generating step pulses that everything else will slow to a crawl, or maybe even lock up. Latency and stepper drive requirements affect the shortest period you can use.
de: BASE_PERIOD ist der 'Herzschlag' von Ihrem LinuxCNC Computer.footnote:[Dieser Abschnitt bezieht sich auf die Verwendung *stepgen*, LinuxCNCs eingebauten Schritt-Generator. Einige Hardware-Geräte haben ihre eigenen Schritt-Generator und nicht mit LinuxCNC ' s built-in ein. In diesem Fall, verweisen wir auf Ihr Hardware-Handbuch]. In jeder Periode entscheidet der Software-Schrittgenerator, ob es Zeit für einen weiteren Schrittimpuls ist.  Eine kürzere Periode ermöglicht es Ihnen, mehr Impulse pro Sekunde zu erzeugen, innerhalb von Grenzen. Wenn Sie jedoch eine zu kurze Periode wählen, verbringt Ihr Computer so viel Zeit mit der Erzeugung von Schrittimpulsen, dass alles andere langsamer wird oder vielleicht sogar zum Stillstand kommt. Die Latenzzeit und die Anforderungen an die Schrittmotorsteuerung beeinflussen die kürzeste Zeitspanne, die Sie verwenden können.

note: type: Plain text
en: Worst case latencies might only happen a few times a minute, and the odds of bad latency happening just as the motor is changing direction are low. So you can get very rare errors that ruin a part every once in a while and are impossible to troubleshoot.
de: Im schlimmsten Fall treten Latenzzeiten nur ein paar Mal pro Minute auf und die Wahrscheinlichkeit, dass eine schlechte Latenz genau dann auftritt, wenn der Motor die Richtung ändert, ist gering. Es kann also zu sehr seltenen Fehlern kommen, die hin und wieder ein Teil ruinieren und bei denen eine Fehlerbehebung unmöglich ist.

note: type: Plain text
en: For more information on stepgen see the <<sec:stepgen,stepgen section>>.
de: Weitere Informationen zu stepgen finden Sie im Abschnitt <<sec:stepgen,stepgen>>.

note: type: Title ===
en: Step Timing
de: Schritt-Timing

note: type: Plain text
en: Step Timing and Step Space on some drives are different. In this case the Step point becomes important. If the drive steps on the falling edge then the output pin should be inverted.
de: Schrit-Timing und Schrittweite sind bei einigen Antrieben unterschiedlich. In diesem Fall wird der Schrittpunkt wichtig. Wenn der Antrieb bei der fallenden Flanke schaltet, sollte der Ausgangspin invertiert werden.

note: type: Title ==
en: Servo Systems
de: Servosysteme

note: type: Title ===
en: Basic Operation
de: Grundbetrieb

note: type: Plain text
en: Servo systems are capable of greater speed and accuracy than equivalent stepper systems, but are more costly and complex.  Unlike stepper systems, servo systems require some type of position feedback device, and must be adjusted or 'tuned', as they don't quite work right out of the box as a stepper system might. These differences exist because servos are a 'closed loop' system, unlike stepper motors which are generally run 'open loop'. What does 'closed loop' mean? Let's look at a simplified diagram of how a servomotor system is connected.
de: Servosysteme sind in der Lage, eine höhere Geschwindigkeit und Genauigkeit zu erreichen als entsprechende Schrittmachersysteme, sind aber teurer und komplexer.  Im Gegensatz zu Schrittmotorensystemen benötigen Servosysteme eine Art von Positionsrückmeldung und müssen eingestellt oder getunt werden, da sie nicht wie Schrittmotorensysteme direkt nach dem Auspacken funktionieren. Diese Unterschiede bestehen, weil Servos ein 'geschlossener Regelkreis' sind, im Gegensatz zu Schrittmotoren, die im Allgemeinen 'offener Regelkreis' betrieben werden. Was bedeutet 'geschlossener Regelkreis'? Schauen wir uns ein vereinfachtes Diagramm an, wie ein Servomotorensystem angeschlossen ist.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: simplified diagram of how a servomotor system is connected
de: Vereinfachtes Schema für den Anschluss eines Servomotorsystems

note: type: Plain text
en: This diagram shows that the input signal (and the feedback signal) drive the summing amplifier, the summing amplifier drives the power amplifier, the power amplifier drives the motor, the motor drives the load (and the feedback device), and the feedback device (and the input signal)  drive the motor.  This looks very much like a circle (a closed loop) where A controls B, B controls C, C controls D, and D controls A.
de: Dieses Diagramm zeigt, dass das Eingangssignal (und das Rückkopplungssignal) den Summierverstärker antreibt, der Summierverstärker den Leistungsverstärker antreibt, der Leistungsverstärker den Motor antreibt, der Motor die Last (und das Rückkopplungsgerät) antreibt und das Rückkopplungsgerät (und das Eingangssignal) den Motor antreibt.  Dies sieht aus wie ein Kreis (eine geschlossene Schleife), in dem A B, B C, C D und D A steuert.

note: type: Plain text
en: If you have not worked with servo systems before, this will no doubt seem a very strange idea at first, especially as compared to more normal electronic circuits, where the inputs proceed smoothly to the outputs, and never go back.footnote:[If it helps, the closest equivalent to this in the digital world are 'state machines', 'sequential machines' and so forth, where what the outputs are doing 'now' depends on what the inputs (and the outputs)  were doing 'before'. If it doesn't help, then nevermind.] If 'everything' controls 'everything else', how can that ever work, who's in charge? The answer is that LinuxCNC 'can' control this system, but it has to do it by choosing one of several control methods.  The control method that LinuxCNC uses, one of the simplest and best, is called PID.
de: Wenn Sie bisher noch nicht mit Servosystemen gearbeitet haben, wird Ihnen das zweifellos zunächst sehr seltsam vorkommen, vor allem im Vergleich zu normalen elektronischen Schaltungen, bei denen die Eingänge nahtlos zu den Ausgängen führen und nicht zurück.Fußnote:[Falls es hilft, das nächstliegende Äquivalent in der digitalen Welt sind 'Zustandsmaschinen', 'sequentielle Maschinen' und so weiter, wo das, was die Ausgänge 'jetzt' tun, davon abhängt, was die Eingänge (und die Ausgänge) 'vorher' getan haben. Wenn das nicht hilft, dann ist es eben so]. Wenn 'alles' steuert 'alles andere', wie kann das jemals funktionieren, wer ist verantwortlich? Die Antwort ist, dass LinuxCNC 'kann dieses System steuern, aber es muss es durch die Wahl einer von mehreren Kontrollmethoden zu tun.  Die Steuerungsmethode, die LinuxCNC verwendet, eine der einfachsten und besten, wird PID genannt.

note: type: Plain text
en: PID stands for Proportional, Integral, and Derivative. The Proportional value determines the reaction to the current error, the Integral value determines the reaction based on the sum of recent errors, and the Derivative value determines the reaction based on the rate at which the error has been changing. They are three common mathematical techniques that are applied to the task of getting a working process to follow a set point. In the case of LinuxCNC the process we want to control is actual axis position and the set point is the commanded axis position.
de: PID steht für Proportional, Integral und Derivativ. Der Proportionalwert bestimmt die Reaktion auf den aktuellen Fehler, der Integralwert bestimmt die Reaktion auf der Grundlage der Summe der letzten Fehler und der Derivativwert bestimmt die Reaktion auf der Grundlage der Rate, mit der sich der Fehler geändert hat. Sie sind drei gemeinsame mathematische Techniken, die auf die Aufgabe, einen Arbeitsprozess, um einen Sollwert zu folgen angewendet werden. Im Fall von LinuxCNC ist der Prozess, den wir steuern wollen, die tatsächliche Achsenposition und der Sollwert ist die befohlene Achsenposition.

note: type: Block title
en: PID Loop
de: PID-Schleife

note: type: Positional ($1) AttributeList argument for macro 'image'
en: PID Loop, PID stands for Proportional, Integral, and Derivative
de: PID-Schleife, PID steht für Proportional, Integral und Derivativ

note: type: Plain text
en: By 'tuning' the three constants in the PID controller algorithm, the controller can provide control action designed for specific process requirements. The response of the controller can be described in terms of the responsiveness of the controller to an error, the degree to which the controller overshoots the set point and the degree of system oscillation.
de: Durch 'Abstimmung' der drei Konstanten im PID-Regler-Algorithmus kann der Regler eine auf die spezifischen Prozessanforderungen abgestimmte Regelwirkung erzielen. Die Reaktion des Reglers lässt sich beschreiben anhand des Ansprechens des Reglers auf eine Regelabweichung, des Ausmaßes, in dem der Regler über den Sollwert hinausschießt, und des Grades der Systemschwingung.

note: type: Title ===
en: Proportional term
de: Proportionaler Ausdruck

note: type: Plain text
en: The proportional term (sometimes called gain) makes a change to the output that is proportional to the current error value. A high proportional gain results in a large change in the output for a given change in the error. If the proportional gain is too high, the system can become unstable. In contrast, a small gain results in a small output response to a large input error. If the proportional gain is too low, the control action may be too small when responding to system disturbances.
de: Der proportionale Ausdruck(manchmal als Verstärkung bezeichnet) nimmt eine Änderung am Ausgang vor, die proportional zum aktuellen Fehlerwert ist. Eine hohe proportionale Verstärkung führt zu einer großen Änderung des Ausgangs bei einer gegebenen Änderung des Fehlers. Wenn die Proportionalverstärkung zu hoch ist, kann das System instabil werden. Im Gegensatz dazu führt eine kleine Verstärkung zu einer kleinen Ausgangsantwort auf einen großen Eingangsfehler. Wenn die Proportionalverstärkung zu niedrig ist, kann der Regeleingriff bei der Reaktion auf Netzstörungen zu gering sein.

note: type: Plain text
en: In the absence of disturbances, pure proportional control will not settle at its target value, but will retain a steady state error that is a function of the proportional gain and the process gain. Despite the steady-state offset, both tuning theory and industrial practice indicate that it is the proportional term that should contribute the bulk of the output change.
de: Bei Abwesenheit von Störungen pendelt sich eine reine Proportionalregelung nicht auf ihren Zielwert ein, sondern behält einen stationären Fehler bei, der eine Funktion der Proportionalverstärkung und der Prozessverstärkung ist. Trotz des stationären Offsets zeigen sowohl die Abstimmungstheorie als auch die industrielle Praxis, dass der Proportionalanteil den größten Teil der Ausgangsänderung ausmachen sollte.

note: type: Title ===
en: Integral term
de: Integraler Begriff

note: type: Plain text
en: The contribution from the integral term (sometimes called reset) is proportional to both the magnitude of the error and the duration of the error. Summing the instantaneous error over time (integrating the error) gives the accumulated offset that should have been corrected previously. The accumulated error is then multiplied by the integral gain and added to the controller output.
de: Der Beitrag des Integral-Anteils (manchmal im Englischen auch Reset genannt, oder kurz I-Anteil) ist proportional zur Größe des Fehlers und zur Dauer des Fehlers. Die Summierung des momentanen Fehlers über die Zeit (Integration des Fehlers) ergibt die akkumulierte Abweichung, die zuvor hätte korrigiert werden müssen. Der kumulierte Fehler wird dann mit der Integralverstärkung multipliziert und zum Reglerausgang addiert.

note: type: Plain text
en: The integral term (when added to the proportional term) accelerates the movement of the process towards set point and eliminates the residual steady-state error that occurs with a proportional only controller. However, since the integral term is responding to accumulated errors from the past, it can cause the present value to overshoot the set point value (cross over the set point and then create a deviation in the other direction).
de: Der Integral-Anteil (wenn er zum Proportional-Anteil (kurz P-Anteil) hinzugefügt wird) beschleunigt die Bewegung des Prozesses in Richtung Sollwert und beseitigt den verbleibenden stationären Fehler, der bei einem reinen Proportionalregler auftritt. Da der Integral-Anteil jedoch auf akkumulierte Fehler aus der Vergangenheit reagiert, kann er dazu führen, dass der aktuelle Wert über den Sollwert hinausschießt (den Sollwert überschreitet und dann eine Abweichung in die andere Richtung erzeugt).

note: type: Title ===
en: Derivative term
de: Differenzierender-Anteil (D-Anteil)

note: type: Plain text
en: The rate of change of the process error is calculated by determining the slope of the error over time (i.e., its first derivative with respect to time) and multiplying this rate of change by the derivative gain.
de: Die Änderungsrate des Prozessfehlers wird berechnet, indem die Steigung des Fehlers nach der Zeit (d. h. seine erste Ableitung nach der Zeit) bestimmt und diese Änderungsrate mit der Ableitungsverstärkung multipliziert wird.

note: type: Plain text
en: The derivative term slows the rate of change of the controller output and this effect is most noticeable close to the controller set point.  Hence, derivative control is used to reduce the magnitude of the overshoot produced by the integral component and improve the combined controller-process stability.
de: Der Derivationsanteil verlangsamt die Änderungsrate des Reglerausgangs, und dieser Effekt ist in der Nähe des Reglersollwerts am deutlichsten.  Daher wird die Ableitungsregelung eingesetzt, um das Ausmaß des durch den Integralanteil verursachten Überschwingens zu verringern und die kombinierte Regler-Prozess-Stabilität zu verbessern.

note: type: Title ===
en: Loop tuning
de: Schleifenabstimmung

note: type: Plain text
en: If the PID controller parameters (the gains of the proportional, integral and derivative terms) are chosen incorrectly, the controlled process input can be unstable, i.e., its output diverges, with or without oscillation, and is limited only by saturation or mechanical breakage. Tuning a control loop is the adjustment of its control parameters (gain/proportional band, integral gain/reset, derivative gain/rate) to the optimum values for the desired control response.
de: Wenn die Parameter des PID-Reglers (die Verstärkungen des Proportional-, Integral- und Differentialanteils) falsch gewählt werden, kann der geregelte Prozesseingang instabil sein, d. h. sein Ausgang divergiert, mit oder ohne Schwingung, und wird nur durch Sättigung oder mechanischen Bruch begrenzt. Die Abstimmung eines Regelkreises ist die Anpassung seiner Regelparameter (Verstärkung/Proportionalbereich, Integralverstärkung/Rückstellung, Ableitungsverstärkung/Rate) an die optimalen Werte für das gewünschte Regelverhalten.

note: type: Title ===
en: Manual tuning
de: Manuelle Abstimmung

note: type: Plain text
en: A simple tuning method is to first set the I and D values to zero.  Increase the P until the output of the loop oscillates, then the P should be set to be approximately half of that value for a 'quarter amplitude decay' type response. Then increase I until any offset is correct in sufficient time for the process. However, too much I will cause instability. Finally, increase D, if required, until the loop is acceptably quick to reach its reference after a load disturbance.  However, too much D will cause excessive response and overshoot. A fast PID loop tuning usually overshoots slightly to reach the set point more quickly; however, some systems cannot accept overshoot, in which case an 'over-damped' closed-loop system is required, which will require a P setting significantly less than half that of the P setting causing oscillation.
de: Eine einfache Abstimmungsmethode besteht darin, zunächst die Werte I und D auf Null zu setzen.  Erhöhen Sie den P-Wert, bis das Ausgangssignal der Schleife oszilliert, dann sollte der P-Wert auf etwa die Hälfte dieses Wertes eingestellt werden, um eine Reaktion vom Typ 'Viertelamplitudenabfall' zu erzielen. Erhöhen Sie dann I, bis der Offset in ausreichender Zeit für den Prozess korrigiert ist. Ein zu großer I-Wert führt jedoch zu Instabilität. Erhöhen Sie schließlich D, falls erforderlich, bis die Schleife nach einer Laststörung akzeptabel schnell ihren Sollwert erreicht.  Ein zu großes D führt jedoch zu übermäßigem Ansprechen und Überschwingen. Eine schnelle PID-Schleifenabstimmung schwingt in der Regel leicht über, um den Sollwert schneller zu erreichen; einige Systeme können jedoch kein Überschwingen akzeptieren, in diesem Fall ist ein 'überdämpftes' Regelsystem erforderlich, das eine P-Einstellung erfordert, die deutlich unter der Hälfte der P-Einstellung liegt, die eine Schwingung verursacht.

note: type: Plain text
en: The Real Time Application Interface (RTAI) is used to provide the best Real Time (RT) performance. The RTAI patched kernel lets you write applications with strict timing constraints. RTAI gives you the ability to have things like software step generation which require precise timing.
de: Die Echtzeit-Anwendungsschnittstelle (Real Time Application Interface, RTAI) wird verwendet, um die beste Echtzeitleistung (RT) zu erzielen. Mit dem gepatchten RTAI-Kernel können Sie Anwendungen mit strengen Zeitvorgaben schreiben. RTAI gibt Ihnen die Möglichkeit, Dinge wie die Software-Schritterzeugung durchzuführen, die ein präzises Timing erfordern.

note: type: Plain text
en: The Advanced Configuration and Power Interface (ACPI) has a lot of different functions, most of which interfere with RT performance (for example: power management, CPU power down, CPU frequency scaling, etc).  The LinuxCNC kernel (and probably all RTAI-patched kernels) has ACPI disabled. ACPI also takes care of powering down the system after a shutdown has been started, and that's why you might need to push the power button to completely turn off your computer. The RTAI group has been improving this in recent releases, so your LinuxCNC system may shut off by itself after all.
de: Das Advanced Configuration and Power Interface (ACPI) hat viele verschiedene Funktionen, von denen die meisten die RT-Leistung beeinträchtigen (z. B.: Energieverwaltung, CPU-Abschaltung, CPU-Frequenzskalierung usw.).  Der LinuxCNC-Kernel (und wahrscheinlich alle RTAI-gepatchten Kernel) hat ACPI deaktiviert. ACPI kümmert sich auch um das Herunterfahren des Systems, nachdem ein Shutdown gestartet wurde, und deshalb müssen Sie möglicherweise den Netzschalter drücken, um Ihren Computer vollständig auszuschalten. Die RTAI-Gruppe hat dies in den letzten Versionen verbessert, so dass sich Ihr LinuxCNC-System vielleicht doch von selbst ausschaltet.

note: type: Plain text
en: I/O control handles I/O tasks like coolant, toolchange, e-stop and lube. The signals are turned on and off in userspace with G-code or in the case of e-stop in HAL.
de: Die E/A-Steuerung übernimmt E/A-Aufgaben wie Kühlmittel, Werkzeugwechsel, Notaus (engl. E-stop) und Schmiermittel. Die Signale werden im Userspace mit G-Code ein- und ausgeschaltet oder im Falle des Notaus in HAL.

note: type: Plain text
en: I/O Control V2 adds more toolchanger support for communication with the toolchanger.
de: I/O Control V2 bietet mehr Unterstützung für die Kommunikation mit dem Werkzeugwechsler.

note: type: Plain text
en: LinuxCNC originated abort and toolchanger fault: iocontrol reliably abort a change operation in progress (tool-change asserted). A toolchanger may at any time signal a fault which will abort the next M6. For instance, a toolchanger finding an empty pocket during a prepare operation should be able to signal a fault to iocontrol, and iocontrol act appropriately when the M6 change operation is executed.
de: Von LinuxCNC verursachter Abbruch und Werkzeugwechslerfehler: iocontrol bricht eine laufende Wechseloperation zuverlässig ab (Werkzeugwechsel bestätigt). Ein Werkzeugwechsler kann jederzeit einen Fehler melden, der zum Abbruch des nächsten M6 führt. Wenn beispielsweise ein Werkzeugwechsler während eines Vorbereitungsvorgangs eine leere Tasche vorfindet, sollte er iocontrol einen Fehler melden können, und iocontrol sollte entsprechend reagieren, wenn der M6-Wechselvorgang ausgeführt wird.

note: type: Plain text
en: Communicate abort/fault cause : let iocontrol know why toolchanger caused an fault, and why iocontrol aborted. This is for UI purposes. It would be a candidate for a #5xxx parameter, and selective display in the UI.
de: Abbruch-/Fehlerursache kommunizieren: Lassen Sie iocontrol wissen, warum der Werkzeugwechsler einen Fehler verursacht hat und warum iocontrol abgebrochen hat. Dies ist für UI-Zwecke. Es wäre ein Kandidat für einen #5xxx Parameter und eine selektive Anzeige in der Benutzeroberfläche.

note: type: Plain text
en: No race conditions between iocontrol and toolchanger: the protocol between iocontrol and toolchanger must be unambiguous with respect to which operation is signalled, and if a change operation is aborted or complete.
de: Keine Race Conditions zwischen iocontrol und Werkzeugwechsler: Das Protokoll zwischen iocontrol und Werkzeugwechsler muss eindeutig sein, welche Operation signalisiert wird und ob eine Änderungsoperation abgebrochen oder abgeschlossen wird.

note: type: Plain text
en: Consistent view of state: Both parties must have a consistent view of the state at any point in time with respect to aborted versus completed, and tool number and pocket.
de: Konsistente Ansicht des Status: Beide Parteien müssen zu jedem Zeitpunkt eine einheitliche Sicht auf den Stand der Dinge in Bezug auf abgebrochene und abgeschlossene Vorgänge sowie auf die Anzahl der Werkzeuge und deren Platz haben.

note: type: Plain text
en: Handshaked signaling an abort/fault: an abort signaled by LinuxCNC to the toolchanger, and a fault indicated from the toolchanger is handshaked to assure reliable signaling, and optionally force lock-step behaviour.  Handshaking is optional and can be jumpered in HAL if not needed.
de: Handshaked Signalisierung eines Abbruchs/Fehlers: Nach der Signalisierung eines Abbruchs von LinuxCNC an den Werkzeugwechsler, oder bei einem Fehler den der Werkzeugwechsler angezeigt,  wird ein Handshake erwartet, um zuverlässige Signalisierung zu gewährleisten, und optional lock-step Verhalten zu erzwingen.  Handshaking ist optional und kann in HAL überbrückt werden, wenn es nicht benötigt wird.

note: type: Plain text
en: Backwards compatibility: A toolchanger ignoring the iocontrol emc-abort line and sticking to old handling will "continue to work" (subject to race condition)
de: Rückwärtskompatibilität: Ein Werkzeugwechsler, der die iocontrol emc-abort-Zeile ignoriert und an der alten Handhabung festhält, wird "weiterhin funktionieren" (vorbehaltlich einer Race Condition)

note: type: Plain text
en: If you have strict timing requirements or simply need more I/O, consider using the realtime I/O provided by link:../man/man9/motion.9.html[motion] instead.
de: Wenn Sie strenge Zeitvorgaben haben oder einfach mehr E/A benötigen, sollten Sie stattdessen die Echtzeit-E/A verwenden, die von link:../man/man9/motion.9.html[motion] bereitgestellt wird.

note: type: Plain text
en: INI file options:
de: INI-Datei Optionen:

note: type: Block title
en: [EMCIO] section
de: [EMCIO] Abschnitt

note: type: Plain text
en: Defaults to 2. Setting to 1 will emulate old iocontrol behaviour.
de: Der Standardwert ist 2. Mit der Einstellung 1 wird das alte iocontrol-Verhalten emuliert.

note: type: Plain text
en: You need to explicitly enable the start-change protocol by adding the 
    -support-start-change option; otherwise the start-change pin remains
    low and   start-change-ack is ignored. The reason for this is better
    backwards compatibility.
de: Sie müssen das Start-Change-Protokoll explizit aktivieren, indem Sie die
    -support-start-change-Option hinzufügen; andernfalls bleibt der start-change-Pin
    low und start-change-ack wird ignoriert. Der Grund dafür ist eine besser
    Abwärtskompatibilität.

note: type: Block title
en: [TASK] section
de: [TASK] Abschnitt

note: type: Plain text
en: Printf-style template for operator error display (negative toolchanger fault codes) . No quoting needed. Example: `IO_ERROR = Toolchanger fault %d`. Default: toolchanger error %d.
de: Printf-angepasste Vorlage für die Anzeige von Bedienerfehlern (negative Werkzeugwechsler-Fehlercodes). Keine Anführungszeichen erforderlich. Beispiel: `IO_ERROR = Wechslerfehler %d`. Standard: Werkzeugwechsel Fehler %d.

note: type: Block title
en: [EMC] section +
de: [EMC] Abschnitt +

note: type: Plain text
en: To get a (quite detailed) trace, set either the RCS debugging flag (0x00000200) to turn on RCS debugging messages all over LinuxCNC or use the new iocontrol debugging bit (0x00001000) only for iov2 messages.
de: Um eine (ziemlich detaillierte) Spur zu erhalten, setzen Sie entweder das RCS-Debugging-Flag (0x00000200), um RCS-Debugging-Meldungen in ganz LinuxCNC einzuschalten, oder verwenden Sie das neue iocontrol-Debugging-Bit (0x00001000) nur für iov2-Meldungen.

note: type: Plain text
en: iocontrol.0.coolant-flood (Bit, Out) TRUE when flood coolant is requested
de: iocontrol.0.coolant-flood (Bit, Out) TRUE wenn Kühlmittelflut angefordert wird

note: type: Plain text
en: iocontrol.0.coolant-mist (Bit, Out) TRUE when mist coolant is requested
de: iocontrol.0.coolant-mist (Bit, Out) TRUE wenn Kühlmittelnebel angefordert wird

note: type: Plain text
en: iocontrol.0.emc-enable-in (Bit, In) Should be driven FALSE when an external estop condition exists.
de: 'iocontrol.0.emc-enable-in' - (Bit, in) Sollte FALSE sein, wenn eine externe Not-Aus-Bedingung vorliegt.

note: type: Plain text
en: iocontrol.0.lube (Bit, Out) TRUE when lube is requested. This pin gets driven TRUE when the controller comes out of E-stop, and when the "Lube On" command gets sent to the controller. It gets driven FALSE when the controller goes into E-stop, and when the "Lube Off" command gets sent to the controller.
de: iocontrol.0.lube (Bit, Out) TRUE wenn Schmiermittel angefordert wird. Dieser Pin wird mit TRUE angesteuert, wenn die Steuerung aus dem Not-Aus-Zustand kommt und der Befehl "Lube On" an die Steuerung gesendet wird. Er wird mit FALSE angesteuert, wenn der Regler in den Notaus-Zustand geht und wenn der Befehl "Lube Off" an den Regler gesendet wird.

note: type: Plain text
en: iocontrol.0.lube_level (Bit, In) Should be driven FALSE when lubrication tank is empty.
de: iocontrol.0.lube_level (Bit, In) Sollte auf FALSE gesetzt werden, wenn der Schmierstofftank leer ist.

note: type: Plain text
en: iocontrol.0.tool-change (Bit, Out) TRUE when a tool change is requested
de: iocontrol.0.tool-change (Bit, Out) TRUE wenn ein Werkzeugwechsel angefordert wird

note: type: Plain text
en: iocontrol.0.tool-changed (Bit, In) Should be driven TRUE when a tool change is completed.
de: iocontrol.0.tool-changed (Bit, In) Sollte auf TRUE gesetzt werden, wenn ein Werkzeugwechsel abgeschlossen ist.

note: type: Plain text
en: iocontrol.0.tool-number (s32, Out) Current tool number
de: iocontrol.0.tool-number (s32, Out) Aktuelle Werkzeugnummer

note: type: Plain text
en: iocontrol.0.tool-prep-number (s32, Out) The number of the next tool, from the RS274NGC T-word
de: iocontrol.0.tool-prep-number (s32, Out) Die Nummer des nächsten Werkzeugs, aus dem RS274NGC T-Wort

note: type: Plain text
en: iocontrol.0.tool-prep-pocket (s32, Out) This is the pocket number (location in the tool storage mechanism) of the tool requested by the most recent T-word.
de: iocontrol.0.tool-prep-pocket (s32, Out) Dies ist die Platznummer (Speicherplatz im Werkzeugspeicher) des Werkzeugs, das durch das letzte T-Wort angefordert wurde.

note: type: Plain text
en: iocontrol.0.tool-prepare (Bit, Out) TRUE when a Tn tool prepare is requested
de: iocontrol.0.tool-prepare (Bit, Out) TRUE, wenn eine Tn-Werkzeugvorbereitung angefordert wird

note: type: Plain text
en: iocontrol.0.tool-prepared (Bit, In) Should be driven TRUE when a tool prepare is completed.
de: iocontrol.0.tool-prepared (Bit, In) Sollte auf TRUE gesetzt werden, wenn eine Werkzeugvorbereitung abgeschlossen ist.

note: type: Plain text
en: iocontrol.0.user-enable-out (Bit, Out) FALSE when an internal estop condition exists
de: iocontrol.0.user-enable-out (Bit, Out) FALSE, wenn eine interne Estop-Bedingung vorliegt

note: type: Plain text
en: iocontrol.0.user-request-enable (Bit, Out) TRUE when the user has requested that estop be cleared
de: iocontrol.0.user-request-enable (Bit, Out) TRUE, wenn der Benutzer die Aufhebung der Sperre beantragt hat

note: type: Plain text
en: Additional pins added by I/O Control V2
de: Zusätzliche Pins hinzugefügt durch I/O Control V2

note: type: Plain text
en: emc-abort: (Bit, Out) signals emc-originated abort to toolchanger.
de: emc-abort: (Bit, Out) signalisiert emc-verursachten Abbruch an Werkzeugwechsler.

note: type: Plain text
en: emc-abort-ack: (Bit, In) Acknowledge line from toolchanger for previous signal, or jumpered to abort-tool-change if not used in toolchanger. NB: after signaling an emc-abort, iov2 will block until emc-abort-ack is raised.
de: emc-abort-ack: (Bit, In) Bestätigung vom Werkzeugwechsler für das vorherige Signal, oder gejumpert auf abort-tool-change, wenn nicht im Werkzeugwechsler verwendet. Hinweis: Nach der Signalisierung eines emc-abort blockiert iov2 bis emc-abort-ack ausgelöst wird.

note: type: Plain text
en: emc-reason: (S32, Out) convey cause for EMC-originated abort to toolchanger.  Usage: UI informational. Valid during emc-abort TRUE.
de: emc-reason: (S32, Out) Übermittelt die Ursache für den EMC-verursachten Abbruch an den Werkzeugwechsler.  Verwendung: UI informational. Gültig während emc-abort TRUE.

note: type: Plain text
en: start-change: (Bit, Out) asserted at the very beginning of an M6 operation, before any spindle-off, quill-up, or move-to-toolchange-position oeprations are executed.
de: start-change: (Bit, Out) wird zu Beginn einer M6-Operation ausgelöst, bevor eine Spindel-Aus-, Quill-Up- oder Move-to-toolchange-Position-Operation ausgeführt wird.

note: type: Plain text
en: start-change-ack: (Bit, In) acknowledgment line for start-change.
de: start-change-ack: (Bit, In) Quittungsleitung (engl. acknowledgement line) für start-change.

note: type: Plain text
en: toolchanger-fault: (Bit, In) toolchanger signals fault. This line is contionuously monitored. A fault toggles a flag in iocontrol which is reflected in the toolchanger-faulted pin.
de: Werkzeugwechsler-Störung: (Bit, In) Werkzeugwechsler meldet Störung. Diese Leitung wird laufend überwacht. Ein Fehler schaltet ein Flag in iocontrol um, das sich in dem fehlerhaften Pin des Werkzeugwechslers widerspiegelt.

note: type: Plain text
en: toolchanger-fault-ack: (Bit, Out) handshake line for above signal. will be set by iov2 after above fault line TRUE is recognized and deasserted when toolchanger-fault drops. Toolchanger is free to interpret the ack; reading the -ack lines assures fault has been received and acted upon.
de: toolchanger-fault-ack: (Bit, Out) Handshake-Leitung für obiges Signal. wird von iov2 gesetzt, nachdem die obige Fehlerleitung TRUE erkannt und abgewertet wurd, wenn toolchanger-fault fällt. Es steht dem Werkzeugwechsler frei, das Ack zu interpretieren; das Lesen der -ack-Leitungen stellt sicher, dass der Fehler empfangen wurde und darauf reagiert wird.

note: type: Plain text
en: toolchanger-reason: (S32, In) convey reason code for toolchanger-originated fault to iov2. Usage: signal whether to continue or abort the program, plus UI informational if negative. Read during toolchanger-fault TRUE. Non-zero values will cause an Axis operator operator message or error message, see below.
de: toolchanger-reason: (S32, In) Übermittlung des Grundcodes für den vom Toolchanger verursachten Fehler an iov2. Verwendung: Signal, ob das Programm fortgesetzt oder abgebrochen werden soll, plus UI-Informationen, falls negativ. Wird während des Werkzeugwechsler-Fehlers gelesen TRUE. Werte ungleich Null führen zu einer Meldung des Achsenbedieners oder einer Fehlermeldung, siehe unten.

note: type: Plain text
en: toolchanger-faulted: (Bit, Out) signals toolchanger-notify line has toggled and toolchanger-reason-code was in the fault range. Next M6 will abort.
de: toolchanger-faulted: (Bit, Out) signalisiert, dass die toolchanger-notify-Leitung umgeschaltet hat und der toolchanger-reason-code im Fehlerbereich lag. Der nächste M6 bricht ab.

note: type: Plain text
en: toolchanger-clear-fault: (Bit, In) resets TC fault condition. Deasserts toolchanger-faulted if toolchanger-notify is line FALSE. Usage: UI - e.g.  clear fault condition button.
de: toolchanger-clear-fault: (Bit, In) setzt TC-Fehlerzustand zurück. Setzt toolchanger-faulted zurück, wenn toolchanger-notify auf FALSE steht. Verwendung: UI - z.B. Schaltfläche Fehlerzustand löschen.

note: type: Plain text
en: iocontrol.0.tool-prep-index (s32, RO) IO's internal array index of the prepped tool requested by the most recent T-word. 0 if no tool is prepped. On random toolchanger machines this is tool's pocket number (ie, the same as the tool-prep-pocket pin), on non-random toolchanger machines this is a small integer corresponding to the tool's location in the internal representation of the tool table. This parameter returns to 0 after a successful tool change M6.
de: iocontrol.0.tool-prep-index (s32, RO) IO's interner Array-Index des vorbereiteten Werkzeugs, das durch das letzte T-Wort angefordert wurde. 0, wenn kein Werkzeug vorgerüstet ist. Bei Maschinen mit Zufallswerkzeugwechsler ist dies die Platznummer des Werkzeugs (d.h. dieselbe wie der Tool-Prep-Pocket-Pin), bei Maschinen ohne Zufallswerkzeugwechsler ist dies eine kleine Ganzzahl, die der Position des Werkzeugs in der internen Darstellung der Werkzeugtabelle entspricht. Dieser Parameter kehrt nach einem erfolgreichen Werkzeugwechsel M6 auf 0 zurück.

note: type: Title ==
en: Communications
de: Kommunikation

note: type: Plain text
en: If LinuxCNC signals an abort for whatever reason, this is reflected in the emc-abort and emc-reason pins. The toolchanger is expected to acknowledge the emc-abort pin by raising the emc-abort-ack pin - iov2 will block until this is done. If you do not need the abort handshake feature, jumper them as follows:
de: Wenn LinuxCNC signalisiert einen Abbruch aus irgendeinem Grund, wird dies in der emc-abort und emc-reason Pins reflektiert. Es wird erwartet, dass der Werkzeugwechsler den emc-abort-Pin bestätigt, indem er den emc-abort-ack-Pin anhebt - iov2 wird blockieren, bis dies geschehen ist. Wenn Sie die Abort-Handshake-Funktion nicht benötigen, jumpen Sie sie wie folgt:

note: type: Plain text
en: The emc-reason pin is considered valid during emc-abort being TRUE.
de: Der emc-reason-Pin wird als gültig angesehen, wenn emc-abort TRUE ist.

note: type: Plain text
en: The reason codes are as follows for LinuxCNC internally generated aborts (see emc.hh ca line 321):
de: Die Auslöser-Codes sind wie folgt für LinuxCNC intern generiert Abbrüche (siehe emc.hh ca Zeile 321):

note: type: Plain text
en: iov2 adds one more code, namely EMC_ABORT_BY_TOOLCHANGER_FAULT = 101 which is signaled when an M6 aborts due to the toolchanger-faulted pin being TRUE.
de: iov2 fügt einen weiteren Code hinzu, nämlich EMC_ABORT_BY_TOOLCHANGER_FAULT = 101, der signalisiert wird, wenn ein M6 abbricht, weil der Pin "toolchanger-faulted" TRUE ist.

note: type: Plain text
en: To signal toolchanger faults to LinuxCNC, wire the toolchanger-fault pin, and optionally the toolchanger-reason and toolchanger-ack pins.
de: Um Werkzeugwechsler-Fehler an LinuxCNC zu signalisieren, verdrahten Sie den Toolchanger-Fault-Pin und optional die Toolchanger-Reason- und Toolchanger-Ack-Pins.

note: type: Plain text
en: The toolchanger-fault triggers the fault condition, which is reflected in the toolchanger-faulted pin. This condition can be cleared by asserting the toolchanger-clear-fault pin, provided the toolchanger-fault pin is FALSE.
de: Der Toolchanger-Fault löst den Fehlerzustand aus, der sich im Toolchanger-Faulted-Pin widerspiegelt. Dieser Zustand kann durch Aktivierung des Pins "toolchanger-clear-fault" gelöscht werden, sofern der Pin "toolchanger-fault" FALSE ist.

note: type: Plain text
en: The value of the toolchanger-reason pin is used as follows:
de: Der Wert des toolchanger-reason Pins wird wie folgt verwendet:

note: type: Plain text
en: toolchanger-reason > 0 : The toolchange process is not completed and the program continues, however parameter #5060 is set to 1.0 to indicate the fault.  Parameter #5601 contains the value of the toolchanger-reason pin.
de: toolchanger-reason > 0 : Der Werkzeugwechsel wird nicht abgeschlossen und das Programm wird fortgesetzt, jedoch wird der Parameter #5060 auf 1,0 gesetzt, um den Fehler anzuzeigen.  Der Parameter #5601 enthält den Wert des Werkzeugwechslergrundes.

note: type: Plain text
en: toolchanger-reason = 0 : the program is aborted
de: toolchanger-reason = 0 : das Programm wird abgebrochen

note: type: Plain text
en: toolchanger-reason < 0 : the program is aborted and an operator error message is displayed by using the IO_ERROR template.
de: toolchanger-reason < 0 : Das Programm wird abgebrochen und eine Fehlermeldung wird mit Hilfe der Vorlage IO_ERROR angezeigt.

note: type: Plain text
en: The usage of the toolchanger-fault-ack pin is optional. It will become TRUE when toolchanger-fault is raised and the toolchanger-reason pin has been read by iov2.
de: Die Verwendung des Pins "toolchanger-fault-ack" ist optional. Er wird TRUE, wenn toolchanger-fault ausgelöst wird und der toolchanger-reason-Pin von iov2 gelesen wurde.

note: type: Title =
en: Lathe Configuration
de: Konfiguration der Drehmaschine

note: type: Title ==
en: Default Plane
de: Standard-Ebene

note: type: Plain text
en: When LinuxCNC's interpreter was first written, it was designed for mills.  That is why the default plane is XY (G17). A normal lathe only uses the XZ plane (G18). To change the default plane place the following line in the INI file in the RS274NGC section.
de: Wenn LinuxCNC's Interpreter wurde zuerst geschrieben, war es für Mühlen konzipiert.  Das ist, warum die Standard-Ebene ist XY (G17). Eine normale Drehmaschine verwendet nur die XZ-Ebene (G18). Um die Standardebene zu ändern, fügen Sie die folgende Zeile in die INI-Datei im Abschnitt RS274NGC ein.

note: type: Plain text
en: The above can be overwritten in a G-code program so always set important things in the preamble of the G-code file.
de: Die obigen Angaben können in einem G-Code-Programm überschrieben werden, daher sollten Sie wichtige Dinge immer in der Präambel der G-Code-Datei festlegen.

note: type: Title ===
en: INI Settings
de: INI-Einstellungen

note: type: Plain text
en: The following INI settings are needed for lathe mode in Axis in addition to or replacing normal settings in the INI file. These historical settings use identity kinematics (trivkins) and 'three' joints (0,1,2) corresponding to coordinates x, y, z.  The joint 1 for the unused y axis is required but not used in these historical configurations.  Simulated lathe configs may use these historical settings.  GMOCCAPY also uses the mentioned settings, but does offer additional settings, check the <<cha:gmoccapy,GMOCCAPY>> section for details.
de: Die folgenden INI-Einstellungen werden für den Drehmaschinenmodus in Axis zusätzlich zu den normalen Einstellungen in der INI-Datei benötigt oder ersetzen diese. Diese historischen Einstellungen verwenden die Identitätskinematik (trivkins) und 'drei' Gelenke (0,1,2) entsprechend den Koordinaten x, y, z.  Das Gelenk 1 für die unbenutzte y-Achse ist erforderlich, wird aber in diesen historischen Konfigurationen nicht verwendet.  Simulierte Drehmaschinen-Konfigurationen können diese historischen Einstellungen verwenden.  GMOCCAPY verwendet ebenfalls die erwähnten Einstellungen, bietet aber zusätzliche Einstellungen, siehe den Abschnitt <cha:gmoccapy,GMOCCAPY>> für Details.

note: type: Plain text
en: With joints_axes incorporation, a simpler configuration can be made with just the two required joints by specifying trivkins with the 'coordinates=' parameter:
de: Mit der Einbindung von joints_axes kann eine einfachere Konfiguration mit nur den beiden benötigten Gelenken vorgenommen werden, indem trivkins mit dem Parameter 'coordinates=' angegeben wird:

note: type: Title =
en: Moveoff Component(((Moveoff)))
de: Moveoff-Komponente(((Moveoff)))

note: type: Plain text
en: The moveoff HAL component is a HAL-only method for implementing offsets.  See the manpage ('$ man moveoff')  for the IMPORTANT limitations and warnings.
de: Die HAL-Komponente moveoff ist eine reine HAL-Methode zur Implementierung von Offsets.  Siehe die Manpage ('$ man moveoff') für die WICHTIGEN Einschränkungen und Warnungen.

note: type: Plain text
en: The moveoff component is used to offset joint positions using custom HAL connections.  Implementing an offset-while-program-is-paused functionality is supported with appropriate connections for the input pins.  Nine joints are supported.
de: Die moveoff-Komponente wird zum Versetzen von Gelenkpositionen unter Verwendung benutzerdefinierter HAL-Verbindungen verwendet.  Die Implementierung einer Offset-while-program-is-paused-Funktionalität wird mit entsprechenden Verbindungen für die Eingangspins unterstützt.  Neun Gelenke werden unterstützt.

note: type: Plain text
en: The axis offset pin values (offset-in-M) are continuously applied (respecting limits on value, velocity, and acceleration) to the output pins (offset-current-M, pos-plusoffset-M, fb-minusoffset-M) when both enabling input pins (apply-offsets and move-enable) are TRUE.  The two enabling inputs are anded internally. A 'warning pin' is set and a message issued if the apply-offsets pin is deasserted while offsets are applied.  The warning pin remains TRUE until the offsets are removed or the apply-offsets pin is set.
de: Die Werte der Achsen-Offset-Pins (offset-in-M) werden kontinuierlich (unter Beachtung der Grenzwerte für Wert, Geschwindigkeit und Beschleunigung) an die Ausgangs-Pins (offset-current-M, pos-plusoffset-M, fb-minusoffset-M) angelegt, wenn beide Freigabe-Eingangs-Pins (apply-offsets und move-enable) TRUE sind.  Die beiden Freigabeeingänge sind intern verknüpft. Ein 'Warn-Pin' wird gesetzt und eine Meldung ausgegeben, wenn der apply-offsets-Pin während der Anwendung von Offsets deassertiert wird.  Der Warn-Pin bleibt TRUE, bis die Offsets entfernt werden oder der apply-offsets-Pin gesetzt wird.

note: type: Plain text
en: Typically, the move-enable pin is connected to external controls and the apply-offsets pin is connected to halui.program.is-paused (for offsets only while paused) or set to TRUE (for continuously applied offsets).
de: Normalerweise ist der move-enable Pin mit externen Steuerelementen verbunden und der apply-offsets Pin ist mit halui.program.is-paused verbunden (für Offsets nur während der Pause) oder auf TRUE gesetzt (für kontinuierlich angewandte Offsets).

note: type: Plain text
en: Applied offsets are 'automatically returned' to zero (respecting limits)  when either of the enabling inputs is deactivated.  The zero value tolerance is specified by the epsilon input pin value.
de: Angewandte Offsets werden 'automatisch' auf Null zurückgesetzt (unter Beachtung der Grenzwerte), wenn einer der Freigabeeingänge deaktiviert wird.  Die Nullwerttoleranz wird durch den Wert des Epsilon-Eingangspins festgelegt.

note: type: Plain text
en: Waypoints are recorded when the moveoff componenent is enabled.  Waypoints are managed with the waypoint-sample-secs and waypoint-threshold pins.  When the backtrack-enable pin is TRUE, the auto-return path follows the recorded waypoints.  When the memory available for waypoints is exhausted, offsets are frozen and the waypoint-limit pin is asserted.  This restriction applies regardless of the state of the backtrack-enable pin.  An enabling pin must be deasserted to allow a return to the original (non-offset position).
de: Wegpunkte werden aufgezeichnet, wenn die Komponente "moveoff" aktiviert ist.  Wegpunkte werden mit den Pins waypoint-sample-secs und waypoint-threshold verwaltet.  Wenn der Pin für die Rückverfolgungsaktivierung TRUE ist, folgt der automatische Rückweg den aufgezeichneten Wegpunkten.  Wenn der für die Wegpunkte verfügbare Speicher erschöpft ist, werden die Offsets eingefroren und der waypoint-limit-Pin wird aktiviert.  Diese Einschränkung gilt unabhängig vom Zustand des Backtrack-Enable-Pins.  Ein Freigabe-Pin muss deaktiviert werden, um eine Rückkehr zur ursprünglichen (nicht versetzten) Position zu ermöglichen.

note: type: Plain text
en: Backtracking through waypoints results in 'slower' movement rates as the moves are point-to-point respecting velocity and acceleration settings.  The velocity and acceleration limit pins can be managed dynamically to control offsets at all times.
de: Backtracking durch Wegpunkte führt zu 'langsameren' Bewegungsraten, da die Bewegungen Punkt-zu-Punkt unter Berücksichtigung der Geschwindigkeits- und Beschleunigungseinstellungen erfolgen.  Die Geschwindigkeits- und Beschleunigungsgrenzwerte können dynamisch verwaltet werden, um Versätze jederzeit zu kontrollieren.

note: type: Plain text
en: When backtrack-enable is FALSE, the auto-return move is *NOT* coordinated, each axis returns to zero at its own rate.  If a controlled path is wanted in this condition, each axis should be manually returned to zero before deasserting an enabling pin.
de: Wenn backtrack-enable FALSE ist, wird die automatische Rücklaufbewegung *NICHT* koordiniert, jede Achse kehrt mit ihrer eigenen Geschwindigkeit auf Null zurück.  Wenn in diesem Zustand ein kontrollierter Weg gewünscht wird, sollte jede Achse manuell auf Null zurückgeführt werden, bevor ein Freigabe-Pin deaktiviert wird.

note: type: Plain text
en: The waypoint-sample-secs, waypoint-threshold, and epsilon pins are evaluated only when the component is idle.
de: Die Pins waypoint-sample-secs, waypoint-threshold und epsilon werden nur ausgewertet, wenn sich die Komponente im Leerlauf befindet.

note: type: Plain text
en: The offsets-applied output pin is provided to indicate the current state to a GUI so that program resumption can be managed.  If the offset(s) are non-zero when the apply-offsets pin is deasserted (for example when resuming a program when offsetting during a pause), offsets are returned to zero (respecting limits) and an 'Error' message is issued.
de: Der Offset-Applied-Ausgangs-Pin dient zur Anzeige des aktuellen Zustands auf einer grafischen Benutzeroberfläche, so dass die Wiederaufnahme des Programms verwaltet werden kann.  Wenn die Offsets nicht Null sind, wenn der apply-offsets-Pin deassertiert wird (z.B. bei der Wiederaufnahme eines Programms während einer Pause), werden die Offsets auf Null zurückgesetzt (unter Beachtung der Grenzwerte) und eine 'Fehlermeldung' wird ausgegeben.

note: type: Plain text
en: If offsets are enabled and applied and the machine is turned off for any reason, any 'external' HAL logic that manages the enabling pins and the offset-in-M inputs is responsible for their state when the machine is subsequently turned on again.
de: Wenn Offsets aktiviert und angewendet werden und die Maschine aus irgendeinem Grund ausgeschaltet wird, ist jede 'externe' HAL-Logik, die Aktivierungspins und Offset-in-M-Eingänge verwaltet, für deren Zustand verantwortlich, wenn die Maschine anschließend wieder eingeschaltet wird.

note: type: Plain text
en: This HAL-only means of offsetting is typically not known to LinuxCNC nor available in GUI preview displays. *No protection is provided* for offset moves that exceed soft limits managed by LinuxCNC. Since soft limits are not honored, an offset move may encounter hard limits (or *CRASH* if there are no limit switches). Use of the offset-min-M and offset-max-M inputs to limit travel is recommended. Triggering a hard limit will turn off the machine -- see *Caution* above.
de: Diese HAL-only Methode für Offset ist LinuxCNC in der Regel nicht bekannt und nicht in der GUI-Vorschau zeigt. *Keine Schutzmaßnahmen verfügbar* für Offset-Bewegungen, wenn sie die von LinuxCNC verwalteten weichen Grenzen überschreiten. Da weiche Grenzen nicht beachtet werden, kann eine Offset-Bewegung auf harte Grenzen stoßen (oder *CRASH*, wenn es keine Endschalter gibt). Die Verwendung der Eingänge offset-min-M und offset-max-M zur Begrenzung des Verfahrwegs wird empfohlen. Das Auslösen einer harten Grenze wird die Maschine ausschalten - siehe *Caution* oben.

note: type: Plain text
en: The offset-in-M values may be set with INI file settings, controlled by a GUI, or managed by other HAL components and connections.  Fixed values may be appropriate in simple cases where the direction and amount of offset is well-defined but a control method is required to deactivate an enabling pin in order to return offsets to zero.  GUIs may provide means for users to set, increment, decrement, and accumulate offset values for each axis and may set offset-in-M values to zero before deasserting an enabling pin.
de: Die Offset-in-M-Werte können mit INI-Datei-Einstellungen festgelegt, über eine grafische Benutzeroberfläche gesteuert oder durch andere HAL-Komponenten und Verbindungen verwaltet werden.  Feste Werte können in einfachen Fällen geeignet sein, in denen die Richtung und der Betrag des Offsets genau definiert sind, aber eine Kontrollmethode erforderlich ist, um einen Aktivierungs-Pin zu deaktivieren, und so die Offsets auf Null zurückzusetzen.  Die grafischen Benutzeroberflächen können dem Benutzer die Möglichkeit bieten, Offset-Werte für jede Achse einzustellen, zu erhöhen, zu verringern und zu akkumulieren, und sie können Offset-in-M-Werte auf Null setzen, bevor ein Freigabe-Pin deaktiviert wird.

note: type: Plain text
en: The default values for accel, vel, min, max, epsilon, waypoint-sample-secs, and waypoint-threshold may not be suitable for any particular application.  This HAL component is unaware of limits enforced elsewhere by LinuxCNC.  Users should test usage in a simulator application and understand all hazards before use on hardware.
de: Die Standardwerte für accel, vel, min, max, epsilon, waypoint-sample-secs und waypoint-threshold sind möglicherweise nicht für jede Anwendung geeignet.  Diese HAL-Komponente kennt keine Grenzen, die an anderer Stelle von LinuxCNC erzwungen werden.  Benutzer sollten die Verwendung in einem Simulator-Anwendung zu testen und alle Gefahren vor der Verwendung auf Hardware verstehen.

note: type: Plain text
en: Sim configurations that demonstrate the component and a GUI (moveoff_gui) are located in:
de: Sim-Konfigurationen zur Demonstration einer Komponenten und eine Benutzeroberfläche (moveoff_gui) befinden sich in:

note: type: Title ==
en: Modifying an existing configuration
de: Ändern einer bestehenden Konfiguration

note: type: Plain text
en: A system-provided HAL file (LIB:hookup_moveoff.tcl) can be used to adapt an existing configuration to use the moveoff component.  Additional INI file settings support the use of a simple GUI (moveoff_gui) for controlling offsets.
de: Eine vom System bereitgestellte HAL-Datei (LIB:hookup_moveoff.tcl) kann verwendet werden, um eine bestehende Konfiguration für die Verwendung der moveoff-Komponente anzupassen.  Zusätzliche Einstellungen in der INI-Datei unterstützen die Verwendung einer einfachen Benutzeroberfläche (moveoff_gui) zur Steuerung von Offsets.

note: type: Plain text
en: When the system HAL file (LIB:hookup_moveoff.tcl) is properly specified in a configuration INI file, it will:
de: Wenn die System-HAL-Datei (LIB:hookup_moveoff.tcl) ordnungsgemäß in einer Konfigurations-INI-Datei angegeben ist, wird sie:

note: type: Plain text
en: Disconnect the original joint.N.motor-pos-cmd and joint.N.motor-pos-fb pin connections
de: die ursprünglichen Pinverbindungen joint.N.motor-pos-cmd und joint.N.motor-pos-fb trennen

note: type: Plain text
en: Load (loadrt) the moveoff component (using the name mv) with a personality set to accommodate all axes identified in the INI file
de: Die moveoff-Komponente (unter dem Namen mv) mit einem Profil (engl. personality) laden (loadrt), die alle in der INI-Datei angegebenen Achsen aufnehmen kann

note: type: Plain text
en: Add (addf) the moveoff component functions in the required sequence
de: Funktionen der Auszugskomponenten in der gewünschten Reihenfolge hinzufügen (addf)

note: type: Plain text
en: Reconnect the joint.N.motor-pos-cmd and joint.N.motor-pos-fb pins to use the moveoff component
de: Pins joint.N.motor-pos-cmd und joint.N.motor-pos-fb erneut verbinden, um die moveoff-Komponente zu verwenden

note: type: Plain text
en: Set the moveoff component operating parameters and limits for each axis in accordance with additional INI file settings
de: Betriebsparameter und Grenzwerte der moveoff-Komponenten für jede Achse gemäß den zusätzlichen Einstellungen in der INI-Datei festlegen

note: type: Plain text
en: Note: The moveoff_gui application supports configurations that use known kinematics modules with KINEMATICS_TYPE=KINEMATICS_IDENTITY.  Supported modules include: trivkins.  With identity kins, moveoff_gui assigns each axis name specified with the command line parameter '-axes axisnames' to the corresponding joint.
de: Note: Die Anwendung moveoff_gui unterstützt Konfigurationen, die bekannte Kinematikmodule mit KINEMATICS_TYPE=KINEMATICS_IDENTITY verwenden.  Zu den unterstützten Modulen gehören: trivkins.  Bei Identitätskinematiken weist moveoff_gui jeden Achsennamen, der mit dem Kommandozeilenparameter '-axes axisnames' angegeben wird, dem entsprechenden Gelenk zu.

note: type: Plain text
en: Modify an existing configuration as follows:
de: Ändern Sie eine bestehende Konfiguration wie folgt:

note: type: Plain text
en: Make sure there is an INI file entry for [HAL]HALUI and create a new [HAL]HALFILE entry for LIB:hookup_moveoff.tcl.  The entry for LIB:hookup_moveoff.tcl should follow all HALFILE= entries for HAL files that connect the pins for joint.N.motor-pos-cmd, joint.N.motor-pos-fb, and any components connected to these pins (pid and encoder components in a servo system for instance).
de: Vergewissern Sie sich, dass es einen INI-Datei-Eintrag für [HAL]HALUI gibt und erstellen Sie einen neuen [HAL]HALFILE-Eintrag für LIB:hookup_moveoff.tcl.  Der Eintrag für LIB:hookup_moveoff.tcl sollte allen HALFILE=-Einträgen für HAL-Dateien folgen, die Pins für joint.N.motor-pos-cmd, joint.N.motor-pos-fb und alle an diese Pins angeschlossenen Komponenten (z. B. PID- und Encoder-Komponenten in einem Servosystem) verbinden.

note: type: Plain text
en: Add INI file entries for the per-axis settings for each axis in use (if an entry is not defined, the corresponding entry from the [AXIS_n] section will be used, if no entry is found, then the moveoff component default will be used).
de: Fügen Sie INI-Datei-Einträge für die Einstellungen pro Achse für jede verwendete Achse hinzu (wenn ein Eintrag nicht definiert ist, wird der entsprechende Eintrag aus dem Abschnitt [AXIS_n] verwendet, wird kein Eintrag gefunden, so wird die Standardeinstellung der moveoff-Komponente verwendet).

note: type: Plain text
en: Using component defaults or [AXIS_n] section values for per-axis offset settings is NOT recommended.
de: Es wird NICHT empfohlen, die Komponentenvorgaben oder die Werte des Abschnitts [AXIS_n] für die Offset-Einstellungen der einzelnen Achsen zu verwenden.

note: type: Plain text
en: Add INI file entries for moveoff component settings (omit to use moveoff defaults):
de: Fügen Sie INI-Datei-Einträge für die Einstellungen der moveoff-Komponent hinzu (um Standardeinstellungen für moveoff zu vermeiden):

note: type: Plain text
en: The moveoff_gui is used to make additional required connections and provide a popup GUI to:
de: Das moveoff_gui wird verwendet, um zusätzliche erforderliche Verbindungen herzustellen und eine Popup-GUI zu erstellen:

note: type: Plain text
en: Provide a control togglebutton to Enable/Disable offsets
de: Aktivieren/Deaktivieren von Offsets über eine Umschalttaste (engl. togglebutton).

note: type: Plain text
en: Provide a control togglebutton to Enable/Disable backtracking
de: Bereitstellung einer Schaltfläche zum Aktivieren/Deaktivieren des Backtrackings

note: type: Plain text
en: Provide control pushbuttons to Increment/Decrement/Zero each axis offset
de: Steuertasten zum Inkrementieren/Dekrementieren/Nullstellen jeder Achsenverschiebung

note: type: Plain text
en: Display each axis offset current value
de: Anzeige des aktuellen Wertes jeder Achsenverschiebung

note: type: Plain text
en: Display current offset status (disabled, active, removing, etc)
de: Anzeige des aktuellen Offset-Status (deaktiviert, aktiv, entfernt, etc.)

note: type: Plain text
en: The provided control buttons are optional depending upon the state of the moveoff component move-enable pin.  Both a display and controls for enabling offsetting are provided if the pin mv.move-enable is NOT connected when the moveoff_gui is started.  For this case, the moveoff_gui manages the moveoff component move-enable pin (named mv.move-enable) as well as the offsets (mv.move-offset-in-M)  and the backtracking enable (mv.backtrack-enable)
de: Die bereitgestellten Schaltflächen sind optional und hängen vom Zustand des moveoff-Komponenten-Pins move-enable ab.  Wenn der Pin mv.move-enable beim Start des moveoff_gui NICHT angeschlossen ist, werden sowohl eine Anzeige als auch Steuerelemente zur Aktivierung des Offsets bereitgestellt.  In diesem Fall verwaltet der moveoff_gui den moveoff component move-enable pin (mv.move-enable) sowie die Offsets (mv.move-offset-in-M) und die Backtracking-Freigabe (mv.backtrack-enable)

note: type: Plain text
en: If the mv.move-enable pin IS connected when the moveoff_gui is started, the moveoff_gui will provide a display but NO controls.  This mode supports configurations that use a jog wheel or other methods of controlling the offset inputs and the enable pins (mv.offset-in-M, mv.move-enable, mv.backtrack-enable).
de: Wenn der mv.move-enable-Pin beim Starten des moveoff_gui angeschlossen ist, bietet die moveoff_gui eine Anzeige, aber KEINE Steuerung.  Dieser Modus unterstützt Konfigurationen, die ein Jogwheel oder andere Methoden zur Steuerung der Offset-Eingänge und der Enable-Pins verwenden (mv.offset-in-M, mv.move-enable, mv.backtrack-enable).

note: type: Plain text
en: The moveoff_gui makes the required connections for the moveoff component pins: mv.power_on and mv.apply-offsets.  The mv.power_on pin is connected to the motion.motion-enabled pin (a new signal is automatically created if necessary).  The mv.apply-offsets is connected to halui.program.is-paused or set to 1 depending upon the command line option -mode [ onpause | always ].  A new signal is automatically created if necessary.
de: Der moveoff_gui stellt die erforderlichen Verbindungen für die Pins der moveoff-Komponente her: mv.power_on und mv.apply-offsets.  Der mv.power_on-Pin wird mit dem motion.motion-enabled-Pin verbunden (ein neues Signal wird automatisch erstellt, falls erforderlich).  Der mv.apply-offsets ist mit halui.program.is-paused verbunden oder auf 1 gesetzt, je nach der Kommandozeilenoption -mode [ onpause | always ].  Bei Bedarf wird automatisch ein neues Signal erzeugt.

note: type: Plain text
en: To use the moveoff_gui, add an entry in the INI file [APPLICATIONS] section as follows:
de: Um das moveoff_gui zu verwenden, fügen Sie in der INI-Datei [APPLICATIONS] einen Eintrag wie folgt hinzu:

note: type: delimited block -
en: [APPLICATIONS]
    # Note: a delay (specified in seconds) may be required if connections
    # are made using postgui HAL files ([HAL]POSTGUI_HALFILE=)
    DELAY = 0
    APP = moveoff_gui option1 option2 ...
de: [APPLICATIONS]
    # Hinweis: eine Verzögerung (in Sekunden) kann erforderlich sein, wenn Verbindungen
    # über Post-GUI HAL-Dateien ([HAL]POSTGUI_HALFILE=) hergestellt werden.
    DELAY = 0
    APP = moveoff_gui option1 option2 ...

note: type: Plain text
en: When the HAL file LIB:hookup_moveoff.tcl is used to load and connect the moveoff component, the mv.move-enable pin will not be connected and local controls provided by the moveoff_gui will be used.  This is the simplest method to test or demonstrate the moveoff component when modifying an existing INI configuration.
de: Wird die HAL-Datei LIB:hookup_moveoff.tcl zum Laden und Anschließen der moveoff-Komponente verwendet, so wird der mv.move-enable-Pin nicht angeschlossen und die vom moveoff_gui bereitgestellten lokalen Steuerungen werden verwendet.  Dies ist die einfachste Methode, um die moveoff-Komponente zu testen oder zu demonstrieren, wenn eine bestehende INI-Konfiguration geändert wird.

note: type: Plain text
en: To enable external controls while using the moveoff_gui display for offset values and status, HAL files that follow LIB:hookup_moveoff.tcl must make additional connections.  For example, the supplied demonstration configs (configs/sim/axis/moveoff/*.ini) use a simple system HAL file (named LIB:moveoff_external.hal) to connect the mv.move-enable, mv.offset-in-M, and mv.bactrack-enable pins to signals:
de: Um externe Steuerungen zu aktivieren und gleichzeitig die moveoff_gui-Anzeige für Offset-Werte und Status zu verwenden, müssen HAL-Dateien, die auf LIB:hookup_moveoff.tcl folgen, zusätzliche Verbindungen herstellen.  Die mitgelieferten Demonstrationskonfigurationen (configs/sim/axis/moveoff/*.ini) verwenden beispielsweise eine einfache System-HAL-Datei (namens LIB:moveoff_external.hal), um die Pins mv.move-enable,mv.offset-in-M und mv.bactrack-enable mit Signalen zu verbinden:

note: type: Plain text
en: The connections made by LIB:moveoff_external.hal (for a three axis configuration) are:
de: Die von LIB:moveoff_external.hal hergestellten Verbindungen (für eine dreiachsige Konfiguration) sind:

note: type: Plain text
en: These signals (external_enable, external_offset_M, external_backtrack_en) may be managed by subsequent HALFILES (including POSTGUI_HALFILEs) to provide customized control of the component while using the moveoff_gui display for current offset values and offset status.
de: Diese Signale (external_enable, external_offset_M, external_backtrack_en) können von nachfolgenden HALFILES (einschließlich POSTGUI_HALFILEs) verwaltet werden, um eine angepasste Steuerung der Komponente zu ermöglichen, während die moveoff_gui-Anzeige für aktuelle Offset-Werte und den Offset-Status verwendet wird.

note: type: Plain text
en: The moveoff_gui is configured with command line options.  For details on the operation of moveoff_gui, see the man page:
de: Der moveoff_gui wird mit Kommandozeilenoptionen konfiguriert.  Einzelheiten zur Funktionsweise von moveoff_gui finden Sie in der Manpage:

note: type: Plain text
en: For a brief listing of command line options for moveoff_gui, use the command line help option:
de: Eine kurze Auflistung der Kommandozeilenoptionen für moveoff_gui finden Sie in der Kommandozeilenoption help:

note: type: delimited block -
en: Usage:
    moveoff_gui [Options]
de: Usage:
    moveoff_gui [Optionen]

note: type: delimited block -
en: Options:
        [--help | -? | -- -h ]  (This text)
de: Optionen:
        [--help | -? | -- -h ] (Dieser Hilfe-Text)

note: type: delimited block -
en:     [-mode [onpause | always]]  (default: onpause)
                                      (onpause: show gui when program paused)
                                      (always:  show gui always)
de:     [-mode [onpause | always]] (Standard: onpause)
                                      (onpause: zeigt die Benutzeroberfläche, wenn das Programm pausiert)
                                      (always: Benutzeroberfläche immer anzeigen)

note: type: delimited block -
en:     [-axes axisnames]       (default: xyz (no spaces))
                                  (letters from set of: x y z a b c u v w)
                                  (example: -axes z)
                                  (example: -axes xz)
                                  (example: -axes xyz)
        [-inc incrementvalue]   (default: 0.001 0.01 0.10 1.0 )
                                  (specify one per -inc (up to 4) )
                                  (example: -inc 0.001 -inc 0.01 -inc 0.1 )
        [-size integer]         (default: 14)
                                  (Overall gui popup size is based on font size)
        [-loc center|+x+y]      (default: center)
                                  (example: -loc +10+200)
        [-autoresume]           (default: notused)
                                  (resume program when move-enable deasserted)
        [-delay delay_secs]     (default: 5 (resume delay))
de:     [-axes axisnames] (Standard: xyz (ohne Leerzeichen))
                                  (Buchstaben aus der Menge von: x y z a b c u v w)
                                  (Beispiel: -axes z)
                                  (Beispiel: -axes xz)
                                  (Beispiel: -axes xyz)
        [-inc Inkrementwert] (Voreinstellung: 0.001 0.01 0.10 1.0 )
                                  (geben Sie einen pro -inc an (bis zu 4) )
                                  (Beispiel: -inc 0.001 -inc 0.01 -inc 0.1 )
        [-size ganze Zahl] (Voreinstellung: 14)
                                  (Die Gesamtgröße des Popup-Fensters der Benutzeroberfläche basiert auf der Schriftgröße)
        [-loc center|+x+y] (Voreinstellung: center)
                                  (Beispiel: -loc +10+200)
        [-autoresume] (Voreinstellung: nicht verwendet)
                                  (Programm fortsetzen, wenn move-enable deaktiviert wird)
        [-delay delay_secs] (Voreinstellung: 5 (Wiederaufnahmeverzögerung))

note: type: delimited block -
en: Options for special cases:
        [-noentry]              (default: notused)
                                 (don't create entry widgets)
        [-no_resume_inhibit]    (default: notused)
                                 (do not use a resume-inhibit-pin)
        [-no_pause_requirement] (default: notused)
                                 (no check for halui.program.is-paused)
        [-no_cancel_autoresume] (default: notused)
                                 (useful for retraact offsets with simple)
                                 (external control)
        [-no_display]           (default: notused)
                                 (Use when both external controls and displays)
                                 (are in use (see Note))
de: Optionen für Sonderfälle:
        [-noentry] (Standard: nicht verwendet)
                                 (keine Eintrags-Widgets erstellen)
        [-no_resume_inhibit] (Voreinstellung: nicht verwendet)
                                 (keinen resume-inhibit-pin verwenden)
        [-no_pause_requirement] (Voreinstellung: nicht verwendet)
                                 (keine Prüfung auf halui.program.is-paused)
        [-no_cancel_autoresume] (Voreinstellung: nicht verwendet)
                                 (nützlich für die Rücknahme von Offsets mit einfachen)
                                 (externe Steuerung)
        [-no_display] (Voreinstellung: nicht verwendet)
                                 (Verwendung, wenn sowohl externe Steuerungen als auch Anzeigen)
                                 (verwendet werden (siehe Hinweis))

note: type: delimited block -
en: Note: If the moveoff move-enable pin (mv.move-enable) is connected when
          moveoff_gui is started, external controls are required and only
          displays are provided.
de: Hinweis: Wenn der moveoff move-enable Pin (mv.move-enable) angeschlossen ist während
          moveoff_gui gestartet wird, sind externe Steuerungen erforderlich und nur
          die Bildschirm-Anzeigen sind verfügbar.

note: type: Title =
en: Mesa Configuration Wizard
de: Mesa-Konfigurationsassistent

note: type: Plain text
en: PnCconf is made to help build configurations that utilize specific Mesa 'Anything I/O' products.
de: PnCconf wurde entwickelt, um Konfigurationen zu erstellen, die bestimmte Mesa 'Anything I/O' Produkte verwenden.

note: type: Plain text
en: It can configure closed loop servo systems or hardware stepper systems.  It uses a similar 'wizard' approach as Stepconf (used for software stepping, parallel port driven systems).
de: Es kann Servo-Systeme mit geschlossenem Regelkreis oder Hardware-Schrittmachersysteme konfigurieren.  Es verwendet einen ähnlichen 'Assistenten' Ansatz wie Stepconf (verwendet für Software-Stepping, parallel portgesteuerte Systeme).

note: type: Plain text
en: PnCconf is still in a development stage (Beta) so there are some bugs and lacking features.  Please report bugs and suggestions to the LinuxCNC forum page or mailing list.
de: PnCconf befindet sich noch im Entwicklungsstadium (Beta), daher gibt es noch einige Bugs und fehlende Funktionen.  Bitte melden Sie Fehler und Vorschläge auf der LinuxCNC Forumsseite oder über die Mailing-Liste.

note: type: Plain text
en: There are two trains of thought when using PnCconf:
de: Bei der Verwendung von PnCconf gibt es zwei Denkansätze:

note: type: Plain text
en: One is to use PnCconf to always configure your system - if you decide to change options, reload PnCconf and allow it to configure the new options. This will work well if your machine is fairly standard and you can use custom files to add non standard features. PnCconf tries to work with you in this regard.
de: Wenn Sie sich entscheiden, Optionen zu ändern, laden Sie PnCconf neu und lassen Sie es die neuen Optionen konfigurieren. Dies funktioniert gut, wenn Ihr Rechner ziemlich standardmäßig ist und Sie benutzerdefinierte Dateien verwenden können, um nicht standardmäßige Funktionen hinzuzufügen. PnCconf versucht, Sie in dieser Hinsicht zu unterstützen.

note: type: Plain text
en: The other is to use PnCconf to build a config that is close to what you want and then hand edit everything to tailor it to your needs. This would be the choice if you need extensive modifications beyond PnCconf's scope or just want to tinker with / learn about LinuxCNC.
de: Die andere Möglichkeit ist, PnCconf zu verwenden, um eine Konfiguration zu erstellen, die dem entspricht, was Sie wollen, und dann alles von Hand zu bearbeiten, um es an Ihre Bedürfnisse anzupassen. Dies wäre die Wahl, wenn Sie umfangreiche Änderungen über PnCconf's Umfang oder wollen einfach nur mit / lernen über LinuxCNC basteln müssen.

note: type: Plain text
en: You navigate the wizard pages with the forward, back, and cancel buttons there is also a help button that gives some help information about the pages, diagrams and an output page.
de: Mit den Schaltflächen "Vor", "Zurück" und "Abbrechen" können Sie durch die Seiten des Assistenten navigieren. Außerdem gibt es eine Hilfeschaltfläche, die einige Informationen zu den Seiten, Diagrammen und einer Ausgabeseite enthält.

note: type: Plain text
en: PnCconf's help page should have the most up to date info and has additional details.
de: Die Hilfeseite von PnCconf sollte die aktuellsten Informationen und zusätzliche Details enthalten.

note: type: Title ==
en: Step by Step Instructions
de: Schritt für Schritt Anleitung

note: type: Block title
en: PnCconf Splash
de: PnCconf Startfenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: PnCconf Configuration Wizard
de: PnCconf Konfigurations-Assistent

note: type: Title ==
en: Create or Edit
de: Erstellen oder bearbeiten

note: type: Plain text
en: This allows you to select a previously saved configuration or create a new one.  If you pick 'Modify a configuration' and then press 'Next' a file selection box will show. PnCconf preselects your last saved file. Choose the config you wish to edit. If you made any changes to the main HAL or INI files *PnCconf will over write* those files and those changes will be lost. Some files will not be over written and PnCconf places a note in those files. It also allows you to select desktop shortcut / launcher options. A desktop shortcut will place a folder icon on the desktop that points to your new configuration files.  Otherwise you would have to look in your home folder under linuxcnc/configs.
de: Hier können Sie eine zuvor gespeicherte Konfiguration auswählen oder eine neue Konfiguration erstellen.  Wenn Sie 'Ändern einer Konfiguration' wählen und dann 'Weiter' drücken, wird eine Dateiauswahlbox angezeigt. PnCconf wählt Ihre zuletzt gespeicherte Datei vor. Wählen Sie die Konfiguration, die Sie bearbeiten möchten. Wenn Sie Änderungen an der Haupt-HAL oder den INI-Dateien vorgenommen haben, überschreibt *PnCconf* diese Dateien und die Änderungen gehen verloren. Einige Dateien werden nicht überschrieben und PnCconf fügt einen Hinweis in diese Dateien ein. Außerdem können Sie Desktop-Verknüpfungen und Startoptionen auswählen. Eine Desktop-Verknüpfung legt ein Ordnersymbol auf dem Desktop ab, das auf Ihre neuen Konfigurationsdateien verweist.  Andernfalls müssten Sie in Ihrem Home-Ordner unter linuxcnc/configs suchen.

note: type: Plain text
en: A Desktop launcher will add an icon to the desktop for starting your config directly. You can also launch it from the main menu by using the Configuration Selector 'LinuxCNC' found in CNC menu and selecting your config name.
de: Ein Desktop Launcher fügt ein Symbol auf dem Desktop hinzu, um Ihre Konfiguration direkt zu starten. Sie können sie auch vom Hauptmenü aus starten, indem Sie den Configuration Selector 'LinuxCNC' im CNC-Menü verwenden und den Namen Ihrer Konfiguration auswählen.

note: type: Title ==
en: Basic Machine Information
de: Grundlegende Informationen zur Maschine

note: type: Positional ($1) AttributeList argument for macro 'image'
en: PnCconf Basic machine information
de: PnCconf grundlegende Maschineninformationen

note: type: Labeled list
en: Machine Basics
de: Maschinengrundlagen

note: type: Plain text
en: If you use a name with spaces PnCconf will replace the spaces with underscore (as a loose rule Linux doesn't like spaces in names)  Pick an axis configuration - this selects what type of machine you are building and what axes are available. The Machine units selector allows data entry of metric or imperial units in the following pages.
de: Wenn Sie einen Namen mit Leerzeichen verwenden, ersetzt PnCconf die Leerzeichen durch Unterstriche (als lockere Regel gilt, dass Linux keine Leerzeichen in Namen mag) Wählen Sie eine Achsenkonfiguration - damit wählen Sie aus, welche Art von Maschine Sie bauen und welche Achsen verfügbar sind. Die Auswahl der Maschineneinheiten ermöglicht die Eingabe von metrischen oder imperialen Einheiten auf den folgenden Seiten.

note: type: Plain text
en: Defaults are not converted when using metric so make sure they are sane values!
de: Standardwerte werden bei der Verwendung in metrisch nicht konvertiert, stellen Sie also sicher, dass es sich um vernünftige Werte handelt!

note: type: Labeled list
en: Computer Response Time
de: Reaktionszeit des Computers

note: type: Plain text
en: The servo period sets the heart beat of the system. Latency refers to the amount of time the computer can be longer then that period. Just like a railroad, LinuxCNC requires everything on a very tight and consistent time line or bad things happen. LinuxCNC requires and uses a 'real time' operating system, which just means it has a low latency ( lateness ) response time when LinuxCNC requires its calculations and when doing LinuxCNCs calculations it cannot be interrupted by lower priority requests (such as user input to screen buttons or drawing etc).
de: Die Servoperiode gibt den Herzschlag des Systems vor. Latenz bezieht sich auf die Menge der Zeit, die der Computer länger als diese Periode sein kann. Genau wie eine Eisenbahn, LinuxCNC erfordert alles auf eine sehr enge und konsistente Zeitlinie oder schlechte Dinge passieren. LinuxCNC erfordert und verwendet ein 'Echtzeit' Betriebssystem, das nur bedeutet, dass es hat eine niedrige Latenz (LReaktionszeit) hat. Bbei der Durchführung von LinuxCNCs Berechnungen können diese nicht durch Anforderungen niedrigerer Priorität (wie Benutzereingaben auf dem Bildschirm Tasten oder Zeichnung usw.) unterbrochen werden.

note: type: Plain text
en: Testing the latency is very important and a key thing to check early. Luckily by using the Mesa card to do the work that requires the fastest response time (encoder counting and PWM generation) we can endure a lot more latency then if we used the parallel port for these things. The standard test in LinuxCNC is checking the BASE period latency (even though we are not using a base period). If you press the 'test base period jitter' button, this launches the latency test window ( you can also load this directly from the applications/cnc panel ). The test mentions to run it for a few minutes but the longer the better. consider 15 minutes a bare minimum and overnight even better. At this time use the computer to load things, use the net, use USB etc we want to know the worst case latency and to find out if any particular activity hurts our latency. We need to look at base period jitter.  Anything under 20000 is excellent - you could even do fast software stepping with the machine 20000 - 50000 is still good for software stepping and fine for us.  50000 - 100000 is really not that great but could still be used with hardware cards doing the fast response stuff.  So anything under 100000 is usable to us.  If the latency is disappointing or you get a bad hiccup periodically you may still be able to improve it.
de: Das Testen der Latenzzeit ist sehr wichtig und ein wichtiger Punkt, den man frühzeitig überprüfen sollte. Glücklicherweise können wir der Mesa-Karte die Arbeit übertragen, für die eine besonders schnelle Reaktionszeit erforderlich ist (Encoder Zählen und PWM-Generierung). Somit können wir viel mehr Latenz ertragen, als wenn wir die parallele Schnittstelle für diese Dinge nutzen. Der Standard-Test in LinuxCNC ist die Überprüfung der BASE-Perioden Latenz (auch wenn wir nicht mit einer Basis-Periode arbeiten). Wenn Sie die 'test base period jitter' Taste drücken, startet dies das Latenz-Test-Fenster (Sie können auch laden Sie diese direkt aus der Anwendungen / CNC-Panel.) Der Test soll ein paar Minuten laufen, aber je länger, desto besser. 15 Minuten sind das Minimum, und über Nacht ist noch besser. In dieser Zeit sollten Sie den Computer nutzen, um Dinge zu laden, das Netz zu nutzen, USB zu verwenden usw. Wir möchten die schlimmste Latenzzeit ermitteln und herausfinden, ob eine bestimmte Aktivität die Latenzzeit beeinträchtigt. Wir müssen uns den Jitter der Basisperiode ansehen.  Alles, was unter 20000 liegt, ist hervorragend - man könnte mit der Maschine sogar schnelles Software-Stepping machen. 20000 - 50000 ist immer noch gut für Software-Stepping und für uns in Ordnung.  50000 - 100000 ist wirklich nicht so toll, könnte aber immer noch mit Hardware-Karten verwendet werden, die schnelle Reaktionszeiten ermöglichen.  Alles unter 100000 ist also für uns brauchbar.  Wenn die Latenzzeit enttäuschend ist oder Sie regelmäßig Schluckauf haben, können Sie sie vielleicht noch verbessern.

note: type: Plain text
en: There is a user compiled list of equipment and the latency obtained on the LinuxCNC wiki : http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Latency-Test Please consider adding your info to the list. Also on that page are links to info about fixing some latency problems.
de: Es ist ein Benutzer kompiliert Liste der Ausrüstung und die Latenz auf der LinuxCNC Wiki erhalten: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Latency-Test Bitte beachten Sie Ihre Informationen auf der Liste hinzufügen. Auch auf dieser Seite sind Links zu Informationen über die Behebung einiger Latenzprobleme.

note: type: Plain text
en: Now we are happy with the latency and must pick a servo period. In most cases a servo period of 1000000 ns is fine ( that gives a 1 kHz servo calculation rate - 1000 calculations a second)  if you are building a closed loop servo system that controls torque (current)  rather then velocity (voltage) a faster rate would be better - something like 200000 (5 kHz calculation rate). The problem with lowering the servo rate is that it leaves less time available for the computer to do other things besides LinuxCNC's calculations. Typically the display (GUI) becomes less responsive. You must decide on a balance. Keep in mind that if you tune your closed loop servo system then change the servo period you probably will need to tune them again.
de: Jetzt sind wir mit der Latenzzeit zufrieden und müssen eine Servoperiode wählen. In den meisten Fällen ein Servo-Periode von 1000000 ns ist in Ordnung (das gibt eine 1 kHz Servo Berechnungsrate - 1000 Berechnungen pro Sekunde). Wenn Sie den Aufbau eines geschlossenen Regelkreises Servo-System, das Drehmoment (Strom) steuert, anstatt Geschwindigkeit (Spannung), so wäre eine schnellere Rate besser - etwa 200000 (5 kHz Berechnungsrate). Das Problem mit der Senkung der Servo-Rate ist, dass weniger Zeit für den Computer zur Verfügung steht, um andere Dinge neben LinuxCNC zu berechnen. Typischerweise wird die Anzeige (GUI) weniger reaktionsschnell. Sie müssen sich für ein Gleichgewicht entscheiden. Denken Sie daran, dass, wenn Sie Ihre Closed-Loop-Servo-System abstimmen (engl. tune) und dann die Servo-Periode ändern, Sie anschließend voraussichtlich wieder Ihr Servo-System abstimmen müssen.

note: type: Labeled list
en: I/O Control Ports/Boards
de: E/A-Steueranschlüsse/Karten (engl. I/O Control Ports/Boards)

note: type: Plain text
en: PnCconf is capable of configuring machines that have up to two Mesa boards and three parallel ports. Parallel ports can only be used for simple low speed (servo rate) I/O.
de: PnCconf ist in der Lage, Maschinen mit bis zu zwei Mesa-Karten und drei parallelen Anschlüssen zu konfigurieren. Parallele Schnittstellen können nur für einfache E/A mit niedriger Geschwindigkeit (Servorate) verwendet werden.

note: type: Plain text
en: You must choose at least one Mesa board as PnCconf will not configure the parallel ports to count encoders or output step or PWM signals.  The mesa cards available in the selection box are based on what PnCconf finds for firmware on the systems. There are options to add custom firmware and/or 'blacklist' (ignore) some firmware or boards using a preference file.  If no firmware is found PnCconf will show a warning and use internal sample firmware - no testing will be possible. One point to note is that if you choose two PCI Mesa cards there currently is no way to predict which card is 0 and which is 1 - you must test - moving the cards could change their order. If you configure with two cards both cards must be installed for tests to function.
de: Sie müssen mindestens eine Mesa-Karte auswählen, da PnCconf die parallelen Ports nicht für die Zählung von Messgeräten oder die Ausgabe von Schritt- oder PWM-Signalen konfiguriert.  Die in der Auswahlbox verfügbaren Mesa-Karten basieren darauf, was PnCconf an Firmware auf den Systemen findet. Es besteht die Möglichkeit, benutzerdefinierte Firmware hinzuzufügen und/oder bestimmte Firmware oder Karten mithilfe einer Einstellungsdatei auf eine schwarze Liste zu setzen (zu ignorieren).  Wenn keine Firmware gefunden wird, zeigt PnCconf eine Warnung an und verwendet eine interne Beispiel-Firmware - ein Testen ist nicht möglich. Wenn Sie zwei PCI-Mesa-Karten auswählen, gibt es derzeit keine Möglichkeit vorherzusagen, welche Karte 0 und welche 1 ist - Sie müssen testen - das Verschieben der Karten könnte die Reihenfolge ändern. Wenn Sie mit zwei Karten konfigurieren, müssen beide Karten installiert sein, damit die Tests funktionieren.

note: type: Labeled list
en: Parallel Port
de: Parallelport

note: type: Plain text
en: Up to 3 parallel ports (referred to as parports) can be used as simple I/O. You must set the address of the parport. You can either enter the Linux parallel port numbering system (0,1,or 2) or enter the actual address. The address for an on board parport is often 0x0278 or 0x0378 (written in hexadecimal) but can be found in the BIOS page. The BIOS page is found when you first start your computer you must press a key to enter it (such as F2). On the BIOS page you can find the parallel port address and set the mode such as SPP, EPP, etc on some computers this info is displayed for a few seconds during start up. For PCI parallel port cards the address can be found by pressing the 'parport address search' button. This pops up the help output page with a list of all the PCI devices that can be found. In there should be a reference to a parallel port device with a list of addresses. One of those addresses should work. Not all PCI parallel ports work properly. Either type can be selected as 'in' (maximum amount of input pins) or 'out' (maximum amount of output pins).
de: Bis zu 3 parallele Anschlüsse (auch parallele Schnittstelle oder engl. Kurzform parports) können als einfache E/A verwendet werden. Sie müssen die Adresse des Parports festlegen. Sie können entweder das Linux-Nummerierungssystem für parallele Anschlüsse (0, 1 oder 2) oder die tatsächliche Adresse eingeben. Die Adresse für einen On-Board-Parport ist oft 0x0278 oder 0x0378 (in Hexadezimal geschrieben), kann aber auf bei denr BIOS-Einstellungen gefunden werden. Die BIOS-Seite finden Sie, wenn Sie Ihren Computer zum ersten Mal starten. Sie müssen eine Taste drücken, um sie zu öffnen (z. B. F2). Auf der BIOS-Seite finden Sie die Adresse des parallelen Anschlusses und können den Modus einstellen, z. B. SPP, EPP usw. Bei einigen Computern wird diese Information während des Starts einige Sekunden lang angezeigt. Bei PCI-Parallelport-Karten kann die Adresse durch Drücken der Schaltfläche 'parport address search' ermittelt werden. Daraufhin wird die Hilfe-Ausgabeseite mit einer Liste aller PCI-Geräte angezeigt, die gefunden werden können. Darin sollte ein Verweis auf ein Parallelport-Gerät mit einer Liste von Adressen enthalten sein. Eine dieser Adressen sollte funktionieren. Nicht alle PCI-Parallelports funktionieren ordnungsgemäß. Beide Typen können als 'in' (maximale Anzahl von Eingangspins) oder 'out' (maximale Anzahl von Ausgangspins) ausgewählt werden.

note: type: Labeled list
en: GUI Front-end list
de: GUI-Frontend-Liste

note: type: Plain text
en: This specifies the graphical display screens LinuxCNC will use.  Each one has different option.
de: Dies legt die grafischen Bildschirme fest, die LinuxCNC verwenden wird.  Jeder von ihnen hat verschiedene Optionen.

note: type: Plain text
en: fully supports lathes.
de: Vollständig unterstützt Drehmaschinen.

note: type: Plain text
en: is the most developed and used front-end
de: ist das am weitesten entwickelte und am häufigsten verwendete Frontend

note: type: Plain text
en: is designed to be used with mouse and keyboard
de: ist für die Verwendung mit Maus und Tastatur konzipiert

note: type: Plain text
en: is tkinter based so integrates PyVCP (Python based virtual control panels) naturally.
de: basiert auf tkinter und integriert daher unkompliziert mit PyVCP (Python-basierte virtuelle Kontrollfelder).

note: type: Plain text
en: has a 3D graphical window.
de: hat ein grafisches 3D-Fenster.

note: type: Plain text
en: allows VCP integrated on the side or in center tab
de: ermöglicht die Integration von VCP auf der Seiten- oder in der mittleren Registerkarte

note: type: Plain text
en: hi contrast bright blue screen
de: kontrastreicher hellblauer Bildschirm

note: type: Plain text
en: separate graphics window
de: separates Grafikfenster

note: type: Plain text
en: no VCP integration
de: keine VCP-Integration

note: type: Plain text
en: Touchy was designed to be used with a touchscreen, some minimal physical switches and a MPG wheel.
de: Touchy wurde für die Verwendung mit einem Touchscreen, einigen minimalen physischen Schaltern und einem MPG-Rad konzipiert.

note: type: Plain text
en: requires cycle-start, abort, and single-step signals and buttons
de: erfordert Zyklus-Start-, Abbruch- und Einzelschritt-Signale und -Tasten

note: type: Plain text
en: It also requires shared axis MPG jogging to be selected.
de: Außerdem muss das Handrad-Jogging mit gemeinsamer Achse ausgewählt werden.

note: type: Plain text
en: is GTK based so integrates GladeVCP (virtual control panels) naturally.
de: ist GTK-basiert und integriert daher GladeVCP (virtuelle Kontrollfelder) auf unkompiziere Weise.

note: type: Plain text
en: allows VCP panels integrated in the center Tab
de: ermöglicht die Integration von VCP-Panels in die mittlere Registerkarte

note: type: Plain text
en: has no graphical window
de: hat kein grafisches Fenster

note: type: Plain text
en: look can be changed with custom themes
de: Das Aussehen kann mit benutzerdefinierten Designs geändert werden

note: type: Plain text
en: fully featured plasmac configuration based on the QtVCP infrastructure.
de: voll funktionsfähige Plasmac-Konfiguration auf der Grundlage der QtVCP-Infrastruktur.

note: type: Plain text
en: mouse/keyboard operation or touchscreen operation
de: Maus-/Tastaturbedienung oder Touchscreen-Bedienung

note: type: Title ==
en: External Configuration
de: Externe Konfiguration

note: type: Plain text
en: This page allows you to select external controls such as for jogging or overrides.
de: Auf dieser Seite können Sie externe Steuerungen auswählen, z. B. für Jogging oder Overrides.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: External Controls
de: Externe Steuerelemente

note: type: Plain text
en: If you select a Joystick for jogging, You will need it always connected for LinuxCNC to load. To use the analog sticks for useful jogging you probably need to add some custom HAL code. MPG jogging requires a pulse generator connected to a MESA encoder counter. Override controls can either use a pulse generator (MPG) or switches (such as a rotary dial). External buttons might be used with a switch based OEM joystick.
de: Wenn Sie einen Joystick für Jogging wählen, so muß dieser immer eingesteckt sein, um LinuxCNC zu nutzen. Um die analogen Sticks für Jogging zu nutzen, werden Sie wahrscheinlich einigen HAL-Code selber hinzufügen müssen. Handrad (auch Impulsgenerator oder engl. MPG)-Jogging erfordert einen Impulsgeber, der mit einem MESA-Geberzähler verbunden ist. Override-Steuerungen können entweder einen Impulsgenerator oder einem Schalter (z. B. einen Drehschalter) verwenden. Externe Tasten können mit einem schalterbasierten OEM-Joystick verwendet werden.

note: type: Labeled list
en: Joystick jogging
de: Joystick-Joggen

note: type: Plain text
en: Requires a custom 'device rule' to be installed in the system. This is a file that LinuxCNC uses to connect to Linux's device list. PnCconf will help to prepare this file.
de: Hierzu muss eine benutzerdefinierte 'device rule' im System installiert werden. Dies ist eine Datei, die LinuxCNC verwendet, um eine Verbindung zu Linux's Geräte (engl. device)-Liste herstellt. PnCconf wird helfen, diese Datei zu anzulegen.

note: type: Plain text
en: 'Search for device rule' will search the system for rules, you can use this to find the name of devices you have already built with PnCconf.
de: 'Suche nach Geräteregeln' durchsucht das System nach Regeln. Sie können diese Funktion verwenden, um den Namen von Geräten zu finden, die Sie bereits mit PnCconf erstellt haben.

note: type: Plain text
en: 'Add a device rule' will allow you to configure a new device by following the prompts. You will need your device available.
de: Mit 'Add a device rule' können Sie ein neues Gerät konfigurieren, indem Sie den Aufforderungen folgen. Sie müssen Ihr Gerät zur Verfügung haben.

note: type: Plain text
en: 'test device' allows you to load a device, see its pin names and check its functions with halmeter.
de: Mit 'test device' können Sie ein Gerät laden, dessen Pin-Namen sehen und seine Funktionen mit halmeter überprüfen.

note: type: Plain text
en: joystick jogging uses HALUI and hal_input components.
de: Joystick-Jogging verwendet die Komponenten HALUI und hal_input.

note: type: Labeled list
en: External buttons
de: Externe Tasten

note: type: Plain text
en: allows jogging the axis with simple buttons at a specified jog rate. Probably best for rapid jogging.
de: Ermöglicht das Joggen der Achse mit einfachen Tasten mit einer bestimmten Geschwindigkeit. Wahrscheinlich am besten für schnelles Joggen geeignet.

note: type: Labeled list
en: MPG Jogging
de: Handrad (engl. MPG) Jogging

note: type: Plain text
en: Allows you to use a Manual Pulse Generator to jog the machine's axis.
de: Ermöglicht die Verwendung eines Handrads (manuellen Impulsgebers, MPG), um die Achsen der Maschine zu bewegen.

note: type: Plain text
en: MPG's are often found on commercial grade machines. They output quadrature pulses that can be counted with a MESA encoder counter. PnCconf allows for an MPG per axis or one MPG shared with all axis. It allows for selection of jog speeds using switches or a single speed.
de: Handräder (MPGs) sind häufig in kommerziellen Maschinen zu finden. Sie geben Quadraturimpulse aus, die mit einem MESA-Encoder-Zähler gezählt werden können. PnCconf ermöglicht ein Rad pro Achse oder eines gemeinsam für alle Achsen. Es ermöglicht die Auswahl von Jog-Geschwindigkeiten über Schalter oder eine voreingestellte feste Geschwindigkeit.

note: type: Plain text
en: The selectable increments option uses the mux16 component. This component has options such as debounce and gray code to help filter the raw switch input.
de: Für die Option der wählbaren Inkremente wird die Komponente mux16 verwendet. Diese Komponente verfügt über Optionen wie Entprellung und Gray-Code, um den rohen Schaltereingang zu filtern.

note: type: Labeled list
en: Overrides
de: Neufestlegungen (engl. overrides)

note: type: Plain text
en: PnCconf allows overrides of feed rates and/or spindle speed using a pulse generator (MPG) or switches (eg. rotary).
de: PnCconf ermöglicht die Neufestsetzung von Vorschubgeschwindigkeiten und/oder Spindeldrehzahlen über ein Handrad (MPG) oder Schalter (z. B. Drehschalter).

note: type: Positional ($1) AttributeList argument for macro 'image'
en: GUI Configuration
de: GUI-Konfiguration

note: type: Plain text
en: Here you can set defaults for the display screens, add virtual control panels (VCP), and set some LinuxCNC options..
de: Hier können Sie die Standardeinstellungen für die Bildschirme, fügen Sie virtuelle Bedienfelder (VCP), und stellen Sie einige LinuxCNC Optionen.

note: type: Labeled list
en: Front-end GUI Options
de: Front-End GUI-Optionen

note: type: Plain text
en: The default options allows general defaults to be chosen for any display screen.
de: Die Standardoptionen ermöglichen die Auswahl allgemeiner Standardeinstellungen für jeden Anzeigebildschirm.

note: type: Plain text
en: AXIS defaults are options specific to AXIS. If you choose size , position or force maximize options then PnCconf will ask if it's alright to overwrite a preference file (.axisrc). Unless you have manually added commands to this file it is fine to allow it. Position and force max can be used to move AXIS to a second monitor if the system is capable.
de: AXIS-Standardwerte sind AXIS-spezifische Optionen. Wenn Sie die Optionen Größe, Position oder Maximieren erzwingen wählen, fragt PnCconf, ob eine Voreinstellungsdatei (.axisrc) überschrieben werden darf. Sofern Sie nicht manuell Befehle zu dieser Datei hinzugefügt haben, ist es in Ordnung, dies zuzulassen. Position und force max können verwendet werden, um AXIS auf einen zweiten Monitor zu verschieben, wenn das System dazu in der Lage ist.

note: type: Plain text
en: Touchy defaults are options specific to Touchy. Most of Touchy's options can be changed while Touchy is running using the preference page. Touchy uses GTK to draw its screen, and GTK supports themes. Themes controls the basic look and feel of a program. You can download themes from the net or edit them yourself.  There are a list of the current themes on the computer that you can pick from.  To help some of the text to stand out PnCconf allows you to override the Themes's defaults. The position and force max options can be used to move Touchy to a second monitor if the system is capable.
de: Touchy-Standardeinstellungen sind Optionen, die spezifisch für Touchy sind. Die meisten Optionen von Touchy'können während der Ausführung von Touchy über die Einstellungsseite geändert werden. Touchy verwendet GTK, um seinen Bildschirm zu zeichnen, und GTK unterstützt Themen. Themes steuern das grundlegende Aussehen und die Bedienung eines Programms. Sie können Themes aus dem Netz herunterladen oder sie selbst bearbeiten.  Es gibt eine Liste der aktuellen Themen auf dem Computer, aus der Sie auswählen können.  Damit ein Teil des Textes besser zur Geltung kommt, können Sie in PnCconf die Standardeinstellungen der Themes's überschreiben. Die Optionen position und force max können verwendet werden, um Touchy auf einen zweiten Monitor zu verschieben, wenn das System dazu in der Lage ist.

note: type: Plain text
en: QtPlasmaC options are specific to QtPlasmac, any common options that are not required will be disabled.  If QtPlasmac is selected then the following screen will be a user button setup screen that is specific to QtPlasmaC and VCP options will not be available.
de: QtPlasmaC-Optionen sind spezifisch für QtPlasmac, alle allgemeinen Optionen, die nicht benötigt werden, sind deaktiviert.  Wenn QtPlasmac ausgewählt wird, ist der folgende Bildschirm ein Bildschirm zur Einstellung der Benutzertasten, der spezifisch für QtPlasmaC ist, und die VCP-Optionen sind nicht verfügbar.

note: type: Labeled list
en: VCP options
de: VCP Optionen

note: type: Plain text
en: Virtual Control Panels allow one to add custom controls and displays to the screen. AXIS and Touchy can integrate these controls inside the screen in designated positions. There are two kinds of VCPs - PyVCP which uses 'Tkinter' to draw the screen and GladeVCP that uses 'GTK' to draw the screen.
de: Virtuelle Bedienfelder ermöglichen das Hinzufügen von benutzerdefinierten Bedienelementen und Anzeigen auf dem Bildschirm. AXIS und Touchy können diese Steuerelemente an bestimmten Positionen in den Bildschirm integrieren. Es gibt zwei Arten von VCPs - PyVCP, das 'Tkinter' zum Zeichnen des Bildschirms verwendet und GladeVCP, das 'GTK' zum Zeichnen des Bildschirms verwendet.

note: type: Plain text
en: PyVCPs screen XML file can only be hand built. PyVCPs fit naturally in with AXIS as they both use TKinter.
de: PyVCPs Bildschirm XML-Datei kann nur von Hand erstellt werden. PyVCPs passen natürlich mit AXIS, da sie beide TKinter verwenden.

note: type: Plain text
en: HAL pins are created for the user to connect to inside their custom HAL file.  There is a sample spindle display panel for the user to use as-is or build on.  You may select a blank file that you can later add your controls 'widgets' to or select a spindle display sample that will display spindle speed and indicate if the spindle is at requested speed.
de: Es werden HAL-Pins erstellt, an die sich der Benutzer in seiner eigenen HAL-Datei anschließen kann.  Es gibt ein Beispiel für ein Spindeldisplay, das der Benutzer unverändert verwenden oder darauf aufbauen kann.  Sie können eine leere Datei auswählen, zu der Sie später Ihre Steuerelemente 'Widgets' hinzufügen können, oder Sie wählen ein Beispiel für eine Spindelanzeige zur Anzahl der Spindeldrehzahl und zur Anzeige, ob die Spindel die gewünschte Drehzahl erreicht hat.

note: type: Plain text
en: PnCconf will connect the proper spindle display HAL pins for you.  If you are using AXIS then the panel will be integrated on the right side.  If not using AXIS then the panel will be separate 'stand-alone' from the front-end screen.
de: PnCconf verbindet die richtigen HAL-Pins der Spindelanzeige für Sie.  Wenn Sie AXIS verwenden, wird das Panel auf der rechten Seite integriert.  Wenn Sie AXIS nicht verwenden, wird das Panel separat 'stand-alone' vom Front-End-Bildschirm angezeigt.

note: type: Plain text
en: You can use the geometry options to size and move the panel, for instance to move it to a second screen if the system is capable. If you press the 'Display sample panel' button the size and placement options will be honored.
de: Sie können die Geometrieoptionen verwenden, um das Panel zu vergrößern und zu verschieben, z. B. um es auf einen zweiten Bildschirm zu verschieben, wenn das System dazu in der Lage ist. Wenn Sie auf die Schaltfläche 'Mustertafel anzeigen' klicken, werden die Größen- und Platzierungsoptionen beachtet.

note: type: Plain text
en: GladeVCPs fit naturally inside of Touchy screen as they both use GTK to draw them, but by changing GladeVCP's theme it can be made to blend pretty well in AXIS (try Redmond).
de: GladeVCPs passen natürlich in den Touchy-Bildschirm, da beide GTK verwenden, um sie zu zeichnen, aber durch die Änderung von GladeVCPs Thema kann es möglich werden, dies optisch ziemlich gut in AXIS zu integrieren (versuchen Sie Redmond).

note: type: Plain text
en: It uses a graphical editor to build its XML files.  HAL pins are created for the user to connect to, inside of their custom HAL file.
de: Es verwendet einen grafischen Editor, um seine XML-Dateien zu erstellen.  Es werden HAL-Pins erstellt, mit denen sich der Benutzer innerhalb seiner eigenen HAL-Datei verbinden kann.

note: type: Plain text
en: GladeVCP also allows much more sophisticated (and complicated) programming interaction, which PnCconf currently doesn't leverage (see GladeVCP in the manual).
de: GladeVCP ermöglicht auch eine viel anspruchsvollere (und kompliziertere) Programmierinteraktion, die PnCconf derzeit nicht nutzt (siehe GLADE VCP im Handbuch).

note: type: Plain text
en: PnCconf has sample panels for the user to use as-is or build on.  With GladeVCP PnCconf will allow you to select different options on your sample display.
de: PnCconf verfügt über Beispielpanels, die der Benutzer unverändert verwenden oder auf denen er aufbauen kann.  Mit GladeVCP können Sie in PnCconf verschiedene Optionen für Ihre Beispielanzeige auswählen.

note: type: Plain text
en: Under 'sample options' select which ones you would like.  The zero buttons use HALUI commands which you could edit later in the HALUI section.
de: Wählen Sie unter "Beispieloptionen" die gewünschten Optionen aus.  Die Nulltasten verwenden HALUI-Befehle, die Sie später im HALUI-Abschnitt bearbeiten können.

note: type: Plain text
en: Auto Z touch-off also requires the classic ladder touch-off program and a probe input selected. It requires a conductive touch-off plate and a grounded conductive tool. For an idea on how it works see:
de: Auto Z Touch-Off erfordert auch das klassische Leiter-Touch-Off-Programm und einen ausgewählten Sondeneingang. Es erfordert eine leitfähige Touch-Off-Platte und ein geerdetes leitfähiges Werkzeug. Eine Idee, wie es funktioniert, finden Sie unter:

note: type: Plain text
en: Under 'Display Options', size, position, and force max can be used on a 'stand-alone' panel for such things as placing the screen on a second monitor if the system is capable.
de: Unter „Anzeigeoptionen“ können Größe, Position und max. Kraft auf einem „eigenständigen“ Panel verwendet werden, um beispielsweise den Bildschirm auf einem zweiten Monitor zu platzieren, wenn das System dazu in der Lage ist.

note: type: Plain text
en: You can select a GTK theme which sets the basic look and feel of the panel.  You Usually want this to match the front-end screen.  These options will be used if you press the 'Display sample button'.  With GladeVCP depending on the front-end screen, you can select where the panel will display.
de: Sie können ein GTK-Thema auswählen, welches das grundlegende Erscheinungsbild des Panels festlegt.  Normalerweise möchten Sie, dass dies mit dem Front-End-Bildschirm übereinstimmt.  Diese Optionen werden verwendet, wenn Sie auf die Schaltfläche "Beispiel anzeigen" klicken.  Mit GladeVCP können Sie je nach Front-End-Bildschirm auswählen, wo das Panel angezeigt werden soll.

note: type: Plain text
en: You can force it to be stand-alone or with AXIS it can be in the center or on the right side, with Touchy it can be in the center.
de: Bei AXIS kann er in der Mitte oder auf der rechten Seite stehen, bei Touchy in der Mitte.

note: type: Labeled list
en: Defaults and Options
de: Standardeinstellungen und Optionen

note: type: Plain text
en: Require homing before MDI / Running
de: Referenzfahrt vor Manueller Dateneingabe / Ausführung erforderlich machen

note: type: Plain text
en: If you want to be able to move the machine before homing uncheck this checkbox.
de: Wenn Sie möchten, dass die Maschine vor der Referenzfahrt bewegt werden kann, deaktivieren Sie dieses Kontrollkästchen.

note: type: Plain text
en: Popup Tool Prompt
de: Popup-Tool-Eingabeaufforderung

note: type: Plain text
en: Choose between an on screen prompt for tool changes or export standard signal names for a User supplied custom tool changer HAL file
de: Wählen Sie zwischen einer Bildschirmabfrage für Werkzeugwechsel oder dem Export von Standardsignalnamen für eine benutzerdefinierte Werkzeugwechsler-HAL-Datei

note: type: Plain text
en: Leave spindle on during tool change:
de: Lassen Sie die Spindel während des Werkzeugwechsels eingeschaltet:

note: type: Plain text
en: Used for lathes
de: Verwendet für Drehbänke

note: type: Plain text
en: Force individual manual homing
de: Individuelle manuelle Referenzfahrt erzwingen

note: type: Plain text
en: Move spindle up before tool change
de: Spindel vor dem Werkzeugwechsel nach oben fahren

note: type: Plain text
en: Restore joint position after shutdown
de: Wiederherstellung der Gelenkposition nach Abschaltung

note: type: Plain text
en: Used for non-trivial kinematics machines
de: Verwendet für nichttriviale kinematische Maschinen

note: type: Plain text
en: Random position tool changers
de: Werkzeugwechsler mit zufälliger (engl. random) Position

note: type: Plain text
en: Used for tool changers that do not return the tool to the same pocket. You will need to add custom HAL code to support tool changers.
de: Wird für Werkzeugwechsler verwendet, die das Werkzeug nicht in dieselbe Tasche zurückbringen. Um Werkzeugwechsler zu unterstützen, müssen Sie einen eigenen HAL-Code hinzufügen.

note: type: Title ==
en: Mesa Configuration
de: Mesa-Konfiguration

note: type: Plain text
en: The Mesa configuration pages allow one to utilize different firmwares.  On the basic page you selected a Mesa card here you pick the available firmware and select what and how many components are available.
de: Die Mesa-Konfigurationsseiten erlauben es, verschiedene Firmwares zu verwenden.  Auf der Basisseite haben Sie eine Mesa-Karte ausgewählt. Hier wählen Sie die verfügbare Firmware aus und bestimmen, welche und wie viele Komponenten verfügbar sind.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Mesa Board Configuration
de: Mesa Board Konfiguration

note: type: Plain text
en: Parport address is used only with Mesa parport card, the 7i43. An on board parallel port usually uses 0x278 or 0x378 though you should be able to find the address from the BIOS page. The 7i43 requires the parallel port to use the EPP mode, again set in the BIOS page. If using a PCI parallel port the address can be searched for by using the search button on the basic page.
de: Die Parport-Adresse wird nur mit der Mesa-Parport-Karte, der 7i43, verwendet. Ein On-Board-Parallelport verwendet normalerweise 0x278 oder 0x378, obwohl Sie in der Lage sein sollten, die Adresse auf der BIOS-Seite zu finden. Bei der 7i43 muss die parallele Schnittstelle den EPP-Modus verwenden, der wiederum im BIOS eingestellt wird. Bei Verwendung einer PCI-Parallelschnittstelle kann die Adresse über die Suchfunktion auf der Basisseite gesucht werden.

note: type: Plain text
en: Many PCI cards do not support the EPP protocol properly.
de: Viele PCI-Karten unterstützen das EPP-Protokoll nicht richtig.

note: type: Plain text
en: PDM PWM and 3PWM base frequency sets the balance between ripple and linearity.  If using Mesa daughter boards the docs for the board should give recommendations
de: Die PDM-PWM- und 3PWM-Basisfrequenz bestimmt das Gleichgewicht zwischen Restwelligkeit und Linearität.  Bei der Verwendung von Mesa-Tochterkarten sollten die Unterlagen für die Karte Empfehlungen enthalten

note: type: Plain text
en: It's important to follow these to avoid damage and get the best performance.
de: Es ist wichtig, diese zu beachten, um Schäden zu vermeiden und die beste Leistung zu erzielen.

note: type: delimited block .
en: The 7i33 requires PDM and a PDM base frequency of 6 MHz
    The 7i29 requires PWM and a PWM base frequency of 20 kHz
    The 7i30 requires PWM and a PWM base frequency of 20 kHz
    The 7i40 requires PWM and a PWM base frequency of 50 kHz
    The 7i48 requires UDM and a PWM base frequency of 24 kHz
de: Der 7i33 benötigt PDM und eine PDM-Basisfrequenz von 6 MHz
    Der 7i29 benötigt PWM und eine PWM-Basisfrequenz von 20 kHz
    Das 7i30 erfordert PWM und eine PWM-Basisfrequenz von 20 kHz
    Das 7i40 erfordert PWM und eine PWM-Basisfrequenz von 50 kHz
    Das 7i48 benötigt UDM und eine PWM-Basisfrequenz von 24 kHz

note: type: Labeled list
en: Watchdog time out
de: Watchdog-Zeitüberschreitung

note: type: Plain text
en: is used to set how long the MESA board will wait before killing outputs if communication is interrupted from the computer. Please remember Mesa uses 'active low' outputs meaning that when the output pin is on, it is low (approx 0 volts) and if it's off the output in high (approx 5 volts)  make sure your equipment is safe when in the off (watchdog bitten) state.
de: wird verwendet, um einzustellen, wie lange das MESA-Board wartet, bevor es die Ausgänge abschaltet, wenn die Kommunikation mit dem Computer unterbrochen wird. Bitte denken Sie daran, dass Mesa 'active low' Ausgänge verwendet, d.h. wenn der Ausgangspin eingeschaltet wurde, dann ist er niedrig (ca. 0 Volt) und wenn er ausgeschaltet ist, dann ist der Ausgang hoch (ca. 5 Volt), stellen Sie sicher, dass Ihre Ausrüstung im ausgeschalteten Zustand (z.B. wenn der Watchdog einmal beißt) sicher ist.

note: type: Labeled list
en: Number of coders/PWM generators/STEP generators
de: Anzahl der Codierer/PWM-Generatoren/STEP-Generatoren

note: type: Plain text
en: You may choose the number of available components by deselecting unused ones.  Not all component types are available with all firmware.
de: Sie können die Anzahl der verfügbaren Komponenten auswählen, indem Sie nicht verwendete Komponenten abwählen.  Nicht alle Komponententypen sind mit jeder Firmware verfügbar.

note: type: Plain text
en: Choosing less then the maximum number of components allows one to gain more GPIO pins. If using daughter boards keep in mind you must not deselect pins that the card uses. For instance some firmware supports two 7i33 cards, If you only have one you may deselect enough components to utilize the connector that supported the second 7i33. Components are deselected numerically by the highest number first then down with out skipping a number. If by doing this the components are not where you want them then you must use a different firmware. The firmware dictates where, what and the max amounts of the components. Custom firmware is possible, ask nicely when contacting the LinuxCNC developers and Mesa. Using custom firmware in PnCconf requires special procedures and is not always possible - Though I try to make PnCconf as flexible as possible.
de: Wenn Sie weniger als die maximale Anzahl von Komponenten wählen, können Sie mehr GPIO-Pins erhalten. Bei der Verwendung von Tochterkarten sollten Sie darauf achten, dass Sie keine Pins abwählen, die von der Karte verwendet werden. Zum Beispiel unterstützt manche Firmware zwei 7i33-Karten. Wenn Sie nur eine haben, können Sie genügend Komponenten abwählen, um den Anschluss zu nutzen, der die zweite 7i33 unterstützt. Die Komponenten werden numerisch mit der höchsten Nummer zuerst abgewählt, dann abwärts, ohne eine Nummer zu überspringen. Wenn die Komponenten dadurch nicht dort sind, wo Sie sie haben wollen, müssen Sie eine andere Firmware verwenden. Die Firmware diktiert, wo, was und die maximale Menge der Komponenten. Benutzerdefinierte Firmware ist möglich, fragen Sie freundlich, wenn Sie die LinuxCNC Entwickler und Mesa kontaktieren. Die Verwendung benutzerdefinierter Firmware in PnCconf erfordert spezielle Verfahren und ist nicht immer möglich - obwohl ich versuche, PnCconf so flexibel wie möglich zu machen.

note: type: Plain text
en: After choosing all these options press the 'Accept Component Changes' button and PnCconf will update the I/O setup pages. Only I/O tabs will be shown for available connectors, depending on the Mesa board.
de: Nachdem Sie all diese Optionen ausgewählt haben, drücken Sie die Schaltfläche 'Accept Component Changes' und PnCconf aktualisiert die E/A-Setup-Seiten. Abhängig von der Mesa-Karte werden nur E/A-Registerkarten für verfügbare Anschlüsse angezeigt.

note: type: Title ==
en: Mesa I/O Setup
de: Mesa I/O-Einrichtung

note: type: Plain text
en: The tabs are used to configure the input and output pins of the Mesa boards.  PnCconf allows one to create custom signal names for use in custom HAL files.
de: Die Registerkarten werden zur Konfiguration der Eingangs- und Ausgangspins der Mesa-Karten verwendet.  Mit PnCconf können Sie benutzerdefinierte Signalnamen zur Verwendung in benutzerdefinierten HAL-Dateien erstellen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Mesa I/O C2 Setup
de: Mesa I/O C2 Einrichtung

note: type: Plain text
en: On this tab with this firmware the components are setup for a 7i33 daughter board, usually used with closed loop servos. Note the component numbers of the encoder counters and PWM drivers are not in numerical order. This follows the daughter board requirements.
de: Auf dieser Registerkarte mit dieser Firmware sind die Komponenten für eine 7i33 Tochterplatine eingestellt, die normalerweise mit Servos mit geschlossenem Regelkreis verwendet wird. Beachten Sie, dass die Komponentennummern der Encoderzähler und PWM-Treiber nicht in numerischer Reihenfolge sind. Dies entspricht den Anforderungen für die Tochterkarte.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Mesa I/O C3 Setup
de: Mesa I/O C3 Einrichtung

note: type: Plain text
en: On this tab all the pins are GPIO. Note the 3 digit numbers - they will match the HAL pin number. GPIO pins can be selected as input or output and can be inverted.
de: Auf dieser Registerkarte sind alle Pins GPIO. Beachten Sie die 3-stelligen Nummern - sie entsprechen der HAL-Pin-Nummer. GPIO-Pins können als Eingang oder Ausgang gewählt werden und können invertiert werden.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Mesa I/O C4 Setup
de: Mesa I/O C4 Einrichtung

note: type: Plain text
en: On this tab there are a mix of step generators and GPIO.  Step generators output and direction pins can be inverted. Note that inverting a Step Gen-A pin (the step output pin) changes the step timing. It should match what your controller expects.
de: Auf dieser Registerkarte gibt es eine Mischung aus Schrittgeneratoren und GPIO.  Die Ausgangs- und Richtungspins der Schrittgeneratoren können invertiert werden. Beachten Sie, dass die Invertierung eines Step-Gen-A-Pins (des Step-Ausgangspins) das Step-Timing verändert. Es sollte dem entsprechen, was Ihr Controller erwartet.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Parallel port configuration
de: Konfiguration des parallelen Anschlusses

note: type: Plain text
en: The parallel port can be used for simple I/O similar to Mesa's GPIO pins.
de: Der Parallelport kann für einfache E/A verwendet werden, ähnlich wie die GPIO-Pins von Mesa's.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Axis Configuration
de: Konfiguration der Achsen

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Axis Drive Configuration
de: Konfiguration des Achsantriebs

note: type: Plain text
en: This page allows configuring and testing of the motor and/or encoder combination.  If using a servo motor an open loop test is available, if using a stepper a tuning test is available.
de: Diese Seite ermöglicht das Konfigurieren und Testen der Motor- und/oder Encoderkombination.  Bei Verwendung eines Servomotors ist ein Open-Loop-Test verfügbar, bei Verwendung eines Schrittmotors ein Tuning-Test.

note: type: Labeled list
en: Open Loop Test
de: Open-Loop-Test

note: type: Plain text
en: An open loop test is important as it confirms the direction of the motor and encoder. The motor should move the axis in the positive direction when the positive button is pushed and also the encoder should count in the positive direction. The axis movement should follow the Machinery's Handbook footnote:["axis nomenclature" in the chapter "Numerical Control" in the "Machinery's Handbook" published by Industrial Press.] standards or AXIS graphical display will not make much sense. Hopefully the help page and diagrams can help figure this out. Note that axis directions are based on TOOL movement not table movement. There is no acceleration ramping with the open loop test so start with lower DAC numbers. By moving the axis a known distance one can confirm the encoder scaling. The encoder should count even without the amp enabled depending on how power is supplied to the encoder.
de: Ein Open-Loop-Test ist wichtig, da er die Richtung von Motor und Encoder bestätigt. Der Motor sollte die Achse in die positive Richtung bewegen, wenn die positive Taste gedrückt wird, und auch der Encoder sollte in die positive Richtung zählen. Die Achsenbewegung sollte den Fußnoten des Machinery's Handbook folgen:["Achsennomenklatur" im Kapitel "Numerische Steuerung" im "Machinery's Handbook", herausgegeben von Industrial Press,] sonst macht die grafische AXIS-Anzeige nicht viel Sinn. Hoffentlich können die Hilfeseite und die Diagramme helfen, dies herauszufinden. Beachten Sie, dass die Richtungen der Achsen auf der Bewegung des Werkzeugs und nicht auf der Bewegung des Tisches basieren. Beim Open-Loop-Test gibt es keine Beschleunigungsrampe, beginnen Sie also mit niedrigeren DAC-Zahlen. Durch Bewegen der Achse über eine bekannte Strecke kann man die Skalierung des Encoders bestätigen. Der Encoder sollte auch ohne aktivierten Verstärker zählen, je nachdem wie der Encoder mit Strom versorgt wird.

note: type: Plain text
en: If the motor and encoder do not agree on counting direction then the servo will run away when using PID control.
de: Wenn Motor und Encoder die Zählrichtung nicht übereinstimmen, läuft das Servo bei PID-Regelung weg.

note: type: Plain text
en: Since at the moment PID settings can not be tested in PnCconf the settings are really for when you re-edit a config - enter your tested PID settings.
de: Da die PID-Einstellungen derzeit nicht in PnCconf getestet werden können, sind die Einstellungen eigentlich für die erneute Bearbeitung einer Konfiguration gedacht - geben Sie Ihre getesteten PID-Einstellungen ein.

note: type: Labeled list
en: DAC scale
de: DAC-Skala

note: type: Plain text
en: DAC scaling, max output and offset are used to tailor the DAC output.
de: DAC-Skalierung, maximaler Ausgang und Offset werden verwendet, um den DAC-Ausgang anzupassen.

note: type: Labeled list
en: Compute DAC
de: DAC berechnen

note: type: Plain text
en: These two values are the scale and offset factors for the axis output to the motor amplifiers. The second value (offset) is subtracted from the computed output (in volts), and divided by the first value (scale factor), before being written to the D/A converters. The units on the scale value are in true volts per DAC output volts. The units on the offset value are in volts. These can be used to linearize a DAC.
de: Diese beiden Werte sind die Skalierungs- und Offsetfaktoren für die Achsenausgabe an die Motorverstärker. Der zweite Wert (Offset) wird von der berechneten Ausgabe (in Volt) subtrahiert und durch den ersten Wert (Skalierungsfaktor) geteilt, bevor er in die D/A-Wandler geschrieben wird. Die Einheiten für den Skalenwert sind in echten Volt pro DAC-Ausgangsspannung. Die Einheiten für den Offset-Wert sind in Volt. Diese können zur Linearisierung eines DAC verwendet werden.

note: type: Plain text
en: Specifically, when writing outputs, the LinuxCNC first converts the desired output in quasi-SI units to raw actuator values, e.g., volts for an amplifier DAC. This scaling looks like: The value for scale can be obtained analytically by doing a unit analysis, i.e., units are [output SI units]/[actuator units].  For example, on a machine with a velocity mode amplifier such that 1 volt results in 250 mm/sec velocity, Note that the units of the offset are in machine units, e.g., mm/sec, and they are pre-subtracted from the sensor readings. The value for this offset is obtained by finding the value of your output which yields 0.0 for the actuator output. If the DAC is linearized, this offset is normally 0.0.
de: Insbesondere beim Schreiben von Ausgängen, wandelt LinuxCNC zunäschtdie gewünschte Ausgabe von Quasi-SI-Einheiten zu rohen Aktor Werten, z. B. Volt für einen Verstärker DAC. Diese Skalierung sieht wie folgt aus: Der Wert für die Skalierung kann analytisch ermittelt werden, indem man eine Einheitenanalyse durchführt, d.h. die Einheiten sind [Ausgabe-SI-Einheiten]/[Aktoreinheiten].  Bei einer Maschine mit einem Verstärker im Geschwindigkeitsmodus, bei dem 1 Volt zu einer Geschwindigkeit von 250 mm/s führt, ist zu beachten, dass die Einheiten des Offsets in Maschineneinheiten, z. B. mm/s, angegeben sind und von den Sensormesswerten abgezogen werden. Den Wert für diesen Offset erhalten Sie, indem Sie den Wert Ihres Ausgangs ermitteln, der 0,0 für den Aktorausgang ergibt. Wenn der DAC linearisiert ist, so ist dieser Offset normalerweise 0,0.

note: type: Plain text
en: The scale and offset can be used to linearize the DAC as well, resulting in values that reflect the combined effects of amplifier gain, DAC non-linearity, DAC units, etc. To do this, follow this procedure:
de: Skalierung und Offset können auch zur Linearisierung des DAC verwendet werden, so dass sich Werte sich ergeben als Kombination von Verstärkerverstärkung, Nichtlinearität des DAC, DAC-Einheiten usw. . Gehen Sie dazu wie folgt vor:

note: type: Plain text
en: Build a calibration table for the output, driving the DAC with a desired voltage and measuring the result:
de: Erstellen Sie eine Kalibrierungstabelle für den Ausgang, indem Sie den DAC mit einer gewünschten Spannung betreiben und das Ergebnis messen:

note: type: Plain text
en: Do a least-squares linear fit to get coefficients a, b such that meas=a*raw+b
de: Führen Sie eine lineare Anpassung nach dem Prinzip der kleinsten Quadrate durch, um die Koeffizienten a und b so zu ermitteln, dass meas=a*raw+b

note: type: Plain text
en: The maximum value for the output of the PID compensation that is written to the motor amplifier, in volts. The computed output value is clamped to this limit.  The limit is applied before scaling to raw output units. The value is applied symmetrically to both the plus and the minus side.
de: Der maximale Wert für den Ausgang der PID-Kompensation, der in den Motorverstärker geschrieben wird, in Volt. Der berechnete Ausgangswert wird auf diesen Grenzwert geklemmt.  Der Grenzwert wird vor der Skalierung auf rohe Ausgabeeinheiten angewendet. Der Wert wird symmetrisch sowohl auf die Plus- als auch auf die Minusseite angewandt.

note: type: Labeled list
en: Tuning Test
de: Tuning-Test

note: type: Plain text
en: The tuning test unfortunately only works with stepper based systems. Again confirm the directions on the axis is correct. Then test the system by running the axis back and forth, If the acceleration or max speed is too high you will lose steps. While jogging, Keep in mind it can take a while for an axis with low acceleration to stop. Limit switches are not functional during this test. You can set a pause time so each end of the test movement. This would allow you to set up and read a dial indicator to see if you are losing steps.
de: Der Abstimmungstest funktioniert leider nur bei schrittmotorbasierten Systemen. Stellen Sie erneut sicher, dass die Richtungen auf der Achse korrekt sind. Dann testen Sie das System, indem Sie die Achse hin und her laufen lassen. Wenn die Beschleunigung oder die maximale Geschwindigkeit zu hoch ist, verlieren Sie Schritte. Beachten Sie beim Hin- und Herlaufen, dass es eine Weile dauern kann, bis eine Achse mit geringer Beschleunigung zum Stillstand kommt. Die Endschalter sind während dieses Tests nicht funktionsfähig. Sie können für jedes Ende der Testbewegung eine Pausenzeit einstellen. Dadurch können Sie eine Messuhr einrichten und ablesen, ob Sie Schritte verlieren.

note: type: Title =
en: Stepper Timing
de: Schrittmotor (Stepper-)Timing

note: type: Plain text
en: Stepper timing needs to be tailored to the step controller's requirements.  PnCconf supplies some default controller timing or allows custom timing settings.  See http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Stepper_Drive_Timing for some more known timing numbers (feel free to add ones you have figured out). If in doubt use large numbers such as 5000 this will only limit max speed.
de: Das Stepper-Timing muss auf die Anforderungen des Schrittreglers zugeschnitten werden's.  PnCconf liefert einige Standard-Timingwerte für den Controller oder erlaubt eigene Timing-Einstellungen.  Unter http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Stepper_Drive_Timing finden Sie einige weitere bekannte Timing-Zahlen (Sie können gerne weitere hinzufügen, die Sie selbst herausgefunden haben). Im Zweifelsfall sollten Sie große Zahlen wie 5000 verwenden, da dies nur die maximale Geschwindigkeit begrenzt.

note: type: Labeled list
en: Brushless Motor Control
de: Bürstenlose Motorsteuerung

note: type: Plain text
en: These options are used to allow low level control of brushless motors using special firmware and daughter boards. It also allows conversion of HALL sensors from one manufacturer to another. It is only partially supported and will require one to finish the HAL connections. Contact the mail-list or forum for more help.
de: Diese Optionen werden verwendet, um eine Low-Level-Steuerung von bürstenlosen Motoren mit spezieller Firmware und Tochterkarten zu ermöglichen. Sie ermöglicht auch die Konvertierung von HALL-Sensoren von einem Hersteller zu einem anderen. Sie wird nur teilweise unterstützt und erfordert, dass man die HAL-Verbindungen fertigstellt. Kontaktieren Sie die Mail-Liste oder das Forum für weitere Hilfe.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Axis Scale Calculation
de: Berechnung der Achsenskala

note: type: Plain text
en: The scale settings can be directly entered or one can use the 'calculate scale' button to assist. Use the check boxes to select appropriate calculations. Note that 'pulley teeth' requires the number of teeth not the gear ratio. Worm turn ratio is just the opposite it requires the gear ratio. If your happy with the scale press apply otherwise push cancel and enter the scale directly.
de: Die Maßstabseinstellungen können direkt eingegeben werden oder man kann die Schaltfläche 'Maßstab berechnen' zur Hilfe nehmen. Verwenden Sie die Kontrollkästchen, um die entsprechenden Berechnungen auszuwählen. Beachten Sie, dass 'Riemenscheibenzähne' die Anzahl der Zähne und nicht das Übersetzungsverhältnis erfordert. Das Schneckenradverhältnis ist genau das Gegenteil und erfordert das Zahnradverhältnis. Wenn Sie mit der Skala zufrieden sind, drücken Sie auf Anwenden, andernfalls auf Abbrechen und geben Sie die Skala direkt ein.

note: type: Plain text
en: Also refer to the diagram tab for two examples of home and limit switches. These are two examples of many different ways to set homing and limits.
de: Auf der Registerkarte Diagramm finden Sie außerdem zwei Beispiele für Referenzfahrt- und Endschalter. Dies sind zwei Beispiele für viele verschiedene Möglichkeiten der Einstellung von Referenzfahrt und Grenzwerten.

note: type: Plain text
en: It is very important to start with the axis moving in the right direction or else getting homing right is very difficult!
de: Es ist sehr wichtig, dass sich die Achse zu Beginn in die richtige Richtung bewegt, da es sonst sehr schwierig ist, die Referenzfahrt zu richtig durchzuführen!

note: type: Plain text
en: Remember positive and negative directions refer to the TOOL not the table as per the Machinists handbook.
de: Denken Sie daran, dass sich positive und negative Richtungen auf das WERKZEUG und nicht auf den Tisch beziehen, wie im Maschinenhandbuch beschrieben.

note: type: Labeled list
en: On a typical knee or bed mill
de: Bei einer typischen Knie- oder Bettfräse

note: type: Plain text
en: when the TABLE moves out that is the positive Y direction
de: Wenn sich die TABLE nach außen bewegt, ist das die positive Y-Richtung

note: type: Plain text
en: when the TABLE moves left that is the positive X direction
de: Wenn sich die TABLE nach links bewegt, ist das die positive X-Richtung

note: type: Plain text
en: when the TABLE moves down that is the positive Z direction
de: Wenn sich die TABLE nach unten bewegt, ist das die positive Z-Richtung

note: type: Plain text
en: when the HEAD moves up that is the positive Z direction
de: Wenn sich der KOPF nach oben bewegt, ist das die positive Z-Richtung

note: type: Labeled list
en: On a typical lathe
de: Bei einer typischen Drehmaschine

note: type: Plain text
en: when the TOOL moves right, away from the chuck
de: wenn sich das WERKZEUG nach rechts, weg vom Futter, bewegt

note: type: Plain text
en: that is the positive Z direction
de: das ist die positive Z-Richtung

note: type: Plain text
en: when the TOOL moves toward the operator
de: wenn sich das WERKZEUG auf den Bediener zubewegt

note: type: Plain text
en: that is the positive X direction. Some lathes have X opposite (e.g., tool on back side), that will work fine but AXIS graphical display can not be made to reflect this.
de: das ist die positive X-Richtung. Einige Drehmaschinen haben eine entgegengesetzte X-Richtung (z.B. Werkzeug auf der Rückseite), das funktioniert gut, aber die grafische Achsen-Anzeige kann nicht so eingestellt werden, dass sie dies widerspiegelt.

note: type: Plain text
en: When using homing and / or limit switches LinuxCNC expects the HAL signals to be true when the switch is being pressed / tripped.  If the signal is wrong for a limit switch then LinuxCNC will think the machine is on end of limit all the time. If the home switch search logic is wrong LinuxCNC will seem to home in the wrong direction.  What it actually is doing is trying to BACK off the home switch.
de: Bei der Verwendung von Referenzfahrt- und / oder Endschaltererwartet LinuxCNC  die HAL-Signale wahr zu sein, wenn der Schalter gedrückt wird / ausgelöst.  Wenn das Signal falsch ist für einen Endschalter dann LinuxCNC wird denken, die Maschine sei die ganze Zeit bereits am Ende der Grenze. Wenn die Referenzfahrt-Schalter Suchlogik falsch ist, wird LinuxCNC den Referenzpunkt scheinbar in der falschen Richtung suchen.  Was aber tatsächlich geschieht, ist dass LinuxCNC verusucht, dem mutmaßlich bereits ausgelösten Referenzpunkt-Schalter auszuweichen.

note: type: Labeled list
en: Decide on limit switch location
de: Entscheiden Sie sich für die Position des Endschalters

note: type: Plain text
en: Limit switches are the back up for software limits in case something electrical goes wrong, e.g., in case of a servo runaway.  Limit switches should be placed so that the machine does not hit the physical end of the axis movement. Remember the axis will coast past the contact point if moving fast. Limit switches should be 'active low' on the machine, i.e., power runs through the switches all the time - a loss of power (open switch) trips.  While one could wire them the other way, this is fail safe.  This may need to be inverted so that the HAL signal in LinuxCNC in 'active high' - a TRUE means the switch was tripped. When starting LinuxCNC if you get an on-limit warning, and axis is NOT tripping the switch, inverting the signal is probably the solution. (use HALMETER to check the corresponding HAL signal eg. joint.0.pos-lim-sw-in X axis positive limit switch)
de: Endschalter dienen als Backup für Software-Grenzen, falls etwas Elektrisches schief geht, z. B. ein Servo durchdreht.  Die Endschalter sollten so platziert werden, dass die Maschine nicht auf das physikalische Ende der Achsenbewegung trifft. Denken Sie daran, dass die Achse bei einer schnellen Bewegung an der Kontaktstelle vorbeilaufen wird. Endschalter sollten 'active low' an der Maschine sein. z.B. fließt die ganze Zeit Strom durch die Schalter - ein Stromausfall (offener Schalter) löst aus.  Man kann sie zwar auch anders herum verdrahten, aber das ist ausfallsicher.  Dies muss möglicherweise invertiert werden, so dass das HAL-Signal in LinuxCNC in 'active high' - ein TRUE bedeutet der Schalter ausgelöst wurde. Beim Starten von LinuxCNC, wenn Sie eine On-Limit-Warnung zu bekommen, und die Achse ist NICHT Auslösen des Schalters, Invertieren des Signals ist wahrscheinlich die Lösung. (Verwenden Sie HALMETER, um die entsprechenden HAL-Signal zB joint.0.pos-lim-sw-in X-Achse positive Endschalter zu überprüfen)

note: type: Labeled list
en: Decide on the home switch location
de: Entscheiden Sie sich für den Standort des Referenzpunktschalters

note: type: Plain text
en: If you are using limit switches You may as well use one as a home switch. A separate home switch is useful if you have a long axis that in use is usually a long way from the limit switches or moving the axis to the ends presents problems of interference with material.  Note, a long shaft in a lathe makes it hard to home to limits with out the tool hitting the shaft, so a separate home switch closer to the middle may be better.  If you have an encoder with index then the home switch acts as a course home and the index will be the actual home location.
de: Wenn Sie Endschalter verwenden, können Sie auch einen als Referenzschalter verwenden. Ein separater Referenzpunktschalter ist nützlich, wenn Sie eine lange Achse haben, die in der Regel weit von den Endschaltern entfernt ist, oder wenn das Bewegen der Achse zu den Enden Probleme mit der Beeinträchtigung des Materials mit sich bringt. Hinweis, bei einer langen Welle in einer Drehmaschine ist es schwierig, die Endpunkte anzufahren, ohne dass das Werkzeug die Welle berührt.  Wenn Sie einen Drehgeber mit Index haben, dient der Referenzpunktschalter als Referenzpunkt und der Index ist der tatsächliche Referenzpunkt.

note: type: Labeled list
en: Decide on the MACHINE ORIGIN position
de: Entscheiden Sie sich für die Lage des Maschinen-Ursprungs (engl. MACHINE ORIGIN)

note: type: Plain text
en: MACHINE ORIGIN is what LinuxCNC uses to reference all user coordinate systems from.  I can think of little reason it would need to be in any particular spot. There are only a few G-codes that can access the MACHINE COORDINATE system.( G53, G30 and G28 )  If using tool-change-at-G30 option having the origin at the tool change position may be convenient. By convention, it may be easiest to have the ORIGIN at the home switch.
de: Der MACHINE ORIGIN dient bei LinuxCNC für alle Benutzer-Koordinatensysteme als Referenz.  Ich kann mir kaum vorstellen, warum es an einer bestimmten Stelle sein muss. Es gibt nur ein paar G-Codes, um auf die MACHINE COORDINATE System zugreifen können.( G53, G30 und G28 ) Zusammen mit Werkzeugwechsel-at-G30 Option mit dem Ursprung an der Werkzeugwechselposition kann die praktisch sein. Aus Konvention ist es am einfachsten, den ORIGIN am Referenzpunkt zu haben.

note: type: Labeled list
en: Decide on the (final) HOME POSITION
de: Entscheiden Sie sich für den (endgültigen) Referenzunkt (engl. HOME POSITION)

note: type: Plain text
en: this just places the carriage at a consistent and convenient position after LinuxCNC figures out where the ORIGIN is.
de: dies platziert nur den Schlitten an einer konsistenten und bequemen Position nachdem LinuxCNC herausfindet, wo derORIGIN ist.

note: type: Labeled list
en: Measure / calculate the positive / negative axis travel distances
de: Messen / Berechnen der positiven / negativen Achsabstände

note: type: Plain text
en: Move the axis to the origin. Mark a reference on the movable slide and the non-movable support (so they are in line) move the machine to the end of limits. Measure between the marks that is one of the travel distances. Move the table to the other end of travel.  Measure the marks again. That is the other travel distance. If the ORIGIN is at one of the limits then that travel distance will be zero.
de: Fahren Sie die Achse zum Ursprung. Markieren Sie eine Referenz auf dem beweglichen Schlitten und dem unbeweglichen Träger (so dass sie in einer Linie liegen) und fahren Sie die Maschine bis zum Ende der Grenzen. Messen Sie den Abstand zwischen den Markierungen, der einer der Verfahrwege ist. Bewegen Sie den Tisch an das andere Ende des Verfahrwegs.  Messen Sie die Markierungen erneut. Das ist der andere Verfahrweg. Wenn sich der URSPRUNG an einer der Begrenzungen befindet, ist dieser Verfahrweg gleich Null.

note: type: Labeled list
en: (machine) ORIGIN
de: (Maschinen-)URSPRUNG

note: type: Plain text
en: The Origin is the MACHINE zero point. (not the zero point you set your cutter / material at).  LinuxCNC uses this point to reference everything else from. It should be inside the software limits.  LinuxCNC uses the home switch location to calculate the origin position (when using home switches or must be manually set if not using home switches.
de: Der Ursprung ist der MASCHINENNullpunkt. (nicht der Nullpunkt Sie Ihre Cutter / Material auf).  LinuxCNC verwendet diesen Punkt, um alles andere von Referenz. Es sollte innerhalb der Software Grenzen sein.  LinuxCNC verwendet die Referenzpunkt (engl. home)-Schalter-Position, um die Ursprungs-Position zu bestimmen (bei Verwendung von Home-Schalter oder muss manuell eingestellt werden, wenn nicht mit Home-Schalter.

note: type: Labeled list
en: Travel distance
de: Verfahrweg

note: type: Plain text
en: This is the maximum distance the axis can travel in each direction. This may or may not be able to be measured directly from origin to limit switch. The positive and negative travel distances should add up to the total travel distance.
de: Dies ist die maximale Entfernung, die eine Achse in jede Richtung fahren kann. Dies kann, muss aber nicht, direkt vom Ursprung bis zum Endschalter gemessen werden. Die positiven und negativen Verfahrwege sollten sich zum Gesamtverfahrweg addieren.

note: type: Labeled list
en: POSITIVE TRAVEL DISTANCE
de: POSITIVER VERFAHRWEG

note: type: Plain text
en: This is the distance the Axis travels from the Origin to the positive travel distance or the total travel minus the negative travel distance. You would set this to zero if the origin is positioned at the positive limit.  The will always be zero or a positive number.
de: Dies ist die Entfernung, die  auf einer Achse vom Ursprung bis zum positiven Verfahrweg oder dem gesamten Verfahrweg minus dem negativen Verfahrweg zurücklegt wird. Sie würden diesen Wert auf Null setzen, wenn der Ursprung an der positiven Grenze positioniert ist.  Der Wert wird immer Null oder eine positive Zahl sein.

note: type: Labeled list
en: NEGATIVE TRAVEL DISTANCE
de: NEGATIVER VERFAHRWEG (engl. travel distance)

note: type: Plain text
en: This is the distance the Axis travels from the Origin to the negative travel distance.  or the total travel minus the positive travel distance. You would set this to zero if the origin is positioned at the negative limit.  This will always be zero or a negative number.  If you forget to make this negative PnCconf will do it internally.
de: Dies ist die Entfernung, die auf einer Achse vom Ursprung bis zum negativen Verfahrweg zurücklegt werden kann oder der gesamte Verfahrweg minus dem positiven Verfahrweg. Sie würden diesen Wert auf Null setzen, wenn der Ursprung an der negativen Grenze positioniert ist.  Dieser Wert ist immer Null oder eine negative Zahl.  Wenn Sie vergessen, diesen Wert negativ zu setzen, wird dies von PnCconf intern erledigt.

note: type: Labeled list
en: (Final) HOME POSITION
de: (Letzlicher) REFERENZPUNKT (engl. home position)

note: type: Plain text
en: This is the position the home sequence will finish at. It is referenced from the Origin so can be negative or positive depending on what side of the Origin it is located.  When at the (final) home position if you must move in the Positive direction to get to the Origin, then the number will be negative.
de: Dies ist die Position, an der die Startsequenz enden wird. Sie bezieht sich auf den Ursprung, kann also negativ oder positiv sein, je nachdem, auf welcher Seite des Ursprungs sie sich befindet.  Wenn Sie sich an der (endgültigen) Ausgangsposition befinden und sich in positiver Richtung bewegen müssen, um zum Ursprung zu gelangen, wird die Zahl negativ sein.

note: type: Labeled list
en: HOME SWITCH LOCATION
de: Referenzpunkt-Schalter Position

note: type: Plain text
en: This is the distance from the home switch to the Origin. It could be negative or positive depending on what side of the Origin it is located. When at the home switch location if you must move in the Positive direction to get to the Origin, then the number will be negative. If you set this to zero then the Origin will be at the location of the limit switch (plus distance to find index if used).
de: Dies ist der Abstand zwischen dem Home-Schalter und dem Ursprung (engl. origin). Sie kann negativ oder positiv sein, je nachdem, auf welcher Seite des Ursprungs sie sich befindet. Wenn Sie sich an der Position des Home-Schalters in positiver Richtung bewegen müssen, um zum Ursprung zu gelangen, ist die Zahl negativ. Wenn Sie diesen Wert auf Null setzen, befindet sich der Ursprung an der Position des Endschalters (plus Entfernung zum Index, falls verwendet).

note: type: Labeled list
en: Home Search Velocity
de: Referenzpunkt Suchgeschwindigket (engl. home search velocity)

note: type: Plain text
en: Course home search velocity in units per minute.
de: Geschwindigkeit bei der Suche nach dem Kursziel in Einheiten pro Minute.

note: type: Labeled list
en: Home Search Direction
de: Referenzpunkt-Suchrichtung (engl. home search direction)

note: type: Plain text
en: Sets the home switch search direction either negative (i.e., towards negative limit switch)  or positive (i.e., towards positive limit switch).
de: Legt die Suchrichtung des Referenzschalters entweder negativ (d. h. in Richtung des negativen Endschalters) oder positiv (d. h. in Richtung des positiven Endschalters) fest.

note: type: Labeled list
en: Home Latch Velocity
de: Referenzpunkt Latch Geschwindigkeit

note: type: Plain text
en: Fine Home search velocity in units per minute.
de: Feinfühlige Home-Suchgeschwindigkeit in Einheiten pro Minute.

note: type: Labeled list
en: Home Final Velocity
de: Referenzpunktsuche minimale Geschwindigkeit (engl. Home Final Velocity)

note: type: Plain text
en: Velocity used from latch position to (final) home position in units per minute. Set to 0 for max rapid speed.
de: Geschwindigkeit von der latch-Position zur (endgültigen) Ausgangsposition in Einheiten pro Minute. Für maximale Eilgeschwindigkeit auf 0 setzen.

note: type: Labeled list
en: Home latch Direction
de: Referenzpunkt der Verriegelungsrichtung

note: type: Plain text
en: Allows setting of the latch direction to the same or opposite of the search direction.
de: Ermöglicht die Einstellung der Verriegelungsrichtung auf die gleiche oder entgegengesetzte Richtung wie die Suchrichtung.

note: type: Labeled list
en: Use Encoder Index For Home
de: Encoder-Index für Referenzpunkt verwenden

note: type: Plain text
en: LinuxCNC will search for an encoder index pulse while in the latch stage of homing.
de: LinuxCNC sucht während der Latch-Phase der Referenzfahrt nach einem Encoder-Indeximpuls.

note: type: Labeled list
en: Use Compensation File
de: Kompensationsdatei verwenden

note: type: Plain text
en: Allows specifying a Comp filename and type.  Allows sophisticated compensation. See <<sub:ini:sec:axis-letter,AXIS Section>> of the INI chapter.
de: Ermöglicht die Angabe eines Komp-Dateinamens und -typs.  Ermöglicht eine anspruchsvolle Kompensation. Siehe den<sub:ini:sec:axis-letter,Achsen-Abschnitt>> des INI Kapitels.

note: type: Labeled list
en: Use Backlash Compensation
de: Verwenden des Umkehrspiel-Ausgleichs

note: type: Plain text
en: Allows setting of simple backlash compensation. Can not be used with Compensation File. See <<sub:ini:sec:axis-letter,AXIS Section>> of the INI chapter.
de: Ermöglicht die Einstellung einer einfachen Kompensation des Umkehrspiels. Kann nicht mit Kompensationsdatei verwendet werden. Siehe den <sub:ini:sec:axis-letter,Achsen-Abschnitt>> des INI Kapitels.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: AXIS Help Diagram
de: AXIS-Hilfsdiagramm

note: type: Plain text
en: The diagram should help to demonstrate an example of limit switches and standard axis movement directions.  In this example the Z axis was two limit switches, the positive switch is shared as a home switch.  The MACHINE ORIGIN (zero point) is located at the negative limit.  The left edge of the carriage is the negative trip pin and the right the positive trip pin.  We wish the FINAL HOME POSITION to be 4 inches away from the ORIGIN on the positive side.  If the carriage was moved to the positive limit we would measure 10 inches between the negative limit and the negative trip pin.
de: Das Diagramm soll helfen, ein Beispiel für Endschalter und Standard-Achsbewegungsrichtungen zu demonstrieren.  In diesem Beispiel wurde die Z-Achse mit zwei Endschaltern versehen, wobei der positive Schalter als Home-Schalter verwendet wird.  Der Maschinen-Ursprung (Nullpunkt, engl. machine origin) befindet sich am negativen Endschalter.  Die linke Kante des Schlittens ist der negative Grenzwert und die rechte der positive Grenzwert.  Die ENDGÜLTIGE HOME-POSITION soll 4 Zoll vom ORIGIN auf der positiven Seite entfernt sein.  Wenn der Schlitten an die positive Grenze bewegt würde, würden wir 10 Zoll zwischen der negativen Grenze und dem negativen Auslösestift messen.

note: type: Title ==
en: Spindle Configuration
de: Spindel-Konfiguration

note: type: Plain text
en: If you select spindle signals then this page is available to configure spindle control.
de: Wenn Sie Spindelsignale auswählen, ist diese Seite zur Konfiguration der Spindelsteuerung verfügbar.

note: type: Plain text
en: Many of the option on this page will not show unless the proper option was selected on previous pages!
de: Viele der Optionen auf dieser Seite werden nur angezeigt, wenn auf den vorherigen Seiten die richtige Option ausgewählt wurde!

note: type: Block title
en: Spindle Motor/Encoder Configuration
de: Spindelmotor/Encoder-Konfiguration

note: type: Plain text
en: This page is similar to the axis motor configuration page.
de: Diese Seite ähnelt der Seite zur Konfiguration der Achsenmotoren.

note: type: Plain text
en: There are some differences:
de: Es gibt einige Unterschiede:

note: type: Plain text
en: Unless one has chosen a stepper driven spindle there is no acceleration or velocity limiting.
de: Sofern man sich nicht für eine schrittgetriebene Spindel entschieden hat, gibt es keine Beschleunigungs- oder Geschwindigkeitsbegrenzung.

note: type: Plain text
en: There is no support for gear changes or ranges.
de: Es gibt keine Unterstützung für Gangschaltungen oder Bereiche.

note: type: Plain text
en: If you picked a VCP spindle display option then spindle-at-speed scale and filter settings may be shown.
de: Wenn Sie eine VCP-Spindelanzeigeoption gewählt haben, können die Skala für die Spindeldrehzahl und die Filtereinstellungen angezeigt werden.

note: type: Plain text
en: Spindle-at-speed allows LinuxCNC to wait till the spindle is at the requested speed before moving the axis. This is particularly handy on lathes with constant surface feed and large speed diameter changes. It requires either encoder feedback or a digital spindle-at-speed signal typically connected to a VFD drive.
de: Spindle-at-Speed ermöglicht LinuxCNC zu warten, bis die Spindel auf die gewünschte Geschwindigkeit vor dem Bewegen der Achse ist. Dies ist besonders praktisch auf Drehmaschinen mit konstantem Oberflächenvorschub und große Geschwindigkeit Durchmesseränderungen. Es erfordert entweder Encoder-Feedback oder eine digitale Spindel-at-Speed-Signal in der Regel zu einem VFD-Antrieb verbunden.

note: type: Plain text
en: If using encoder feedback, you may select a spindle-at-speed scale setting that specifies how close the actual speed must be to the requested speed to be considered at-speed.
de: Wenn Sie eine Encoder-Rückmeldung verwenden, können Sie eine Skaleneinstellung für die Spindeldrehzahl wählen, die angibt, wie nahe die tatsächliche Drehzahl an der geforderten Drehzahl liegen muss, damit sie als gleichbleibende Drehzahl gilt.

note: type: Plain text
en: If using encoder feedback, the VCP speed display can be erratic - the filter setting can be used to smooth out the display. The encoder scale must be set for the encoder count / gearing used.
de: Bei Verwendung von Encoder-Feedback kann die VCP-Drehzahlanzeige unregelmäßig sein - die Filtereinstellung kann zur Glättung der Anzeige verwendet werden. Die Geberskala muss für die verwendete Geberzahl/Getriebe eingestellt werden.

note: type: Plain text
en: If you are using a single input for a spindle encoder you must add the line: setp hm2_7i43.0.encoder.00.counter-mode 1 (changing the board name and encoder number to your requirements) into a custom HAL file. See the <<sec:hm2-encoder,Encoders Section>> in Hostmot2 for more info about counter mode.
de: Wenn Sie einen einzelnen Eingang für einen Spindel-Drehgeber verwenden, müssen Sie die Zeile: setp hm2_7i43.0.encoder.00.counter-mode 1 (wobei Sie den Namen der Karte und die Nummer des Drehgebers entsprechend Ihren Anforderungen ändern) in eine benutzerdefinierte HAL-Datei einfügen. Weitere Informationen zum Zählermodus finden Sie im Abschnitt <sec:hm2-encoder,Encoder>> in Hostmot2.

note: type: Title ==
en: Advanced Options
de: Weitere Optionen für Fortgeschrittene

note: type: Plain text
en: This allows setting of HALUI commands and loading of ClassicLadder and sample ladder programs.  If you selected GladeVCP options such as for zeroing axis, there will be commands showing.  See the <<cha:hal-user-interface,HALUI Chapter>> for more info on using custom halcmds.  There are several ladder program options.  The Estop program allows an external ESTOP switch or the GUI frontend to throw an Estop. It also has a timed lube pump signal.  The Z auto touch-off is with a touch-off plate, the GladeVCP touch-off button and special HALUI commands to set the current user origin to zero and rapid clear.  The serial modbus program is basically a blank template program that sets up ClassicLadder for serial modbus. See the <<cha:classicladder,ClassicLadder Chapter>> in the manual.
de: Dies ermöglicht die Einstellung von HALUI-Befehlen und das Laden von ClassicLadder- und Beispiel-SPS-Programme.  Wenn Sie GladeVCP-Optionen ausgewählt haben, z. B. zum Nullstellen der Achse, werden Befehle angezeigt.  Im Kapitel <<cha:hal-user-interface,HALUI >> finden Sie weitere Informationen zur Verwendung benutzerdefinierter halcmds.  Es gibt mehrere Optionen für Kontaktplanprogramme.  Das Notaus (engl. E-stop)-Programm ermöglicht es einem externen Notaus-Schalter oder dem GUI-Frontend, ein Notaus auszulösen. Es verfügt auch über ein zeitgesteuertes Schmiermittelpumpensignal.  Das Z-Auto-Touch-Off-Programm verfügt über eine Touch-Off-Platte, die GladeVCP-Touch-Off-Taste und spezielle HALUI-Befehle, um den aktuellen Benutzerursprung auf Null zu setzen und schnell zu löschen.  Das serielle Modbus-Programm ist im Grunde eine leere Programmvorlage, die ClassicLadder für seriellen Modbus einrichtet. Siehe das Kapitel <cha:classicladder,ClassicLadder>> im Handbuch.

note: type: Block title
en: PnCconf, advanced options
de: PnCconf, erweiterte Optionen

note: type: Positional ($1) AttributeList argument for macro 'image'
en: PnCconf Advanced Options
de: PnCconf erweiterte Optionen

note: type: Positional ($1) AttributeList argument for macro 'image'
en: HAL Components
de: HAL-Komponenten

note: type: Plain text
en: On this page you can add additional HAL components you might need for custom HAL files.  In this way one should not have to hand edit the main HAL file, while still allowing user needed components.
de: Auf dieser Seite können Sie zusätzliche HAL-Komponenten hinzufügen, die Sie für benutzerdefinierte HAL-Dateien benötigen.  Auf diese Weise sollte man die Haupt-HAL-Datei nicht von Hand bearbeiten müssen, aber dennoch die vom Benutzer benötigten Komponenten bei der Konfiguration berücksichtigen.

note: type: Plain text
en: The first selection is components that pncconf uses internally.  You may configure pncconf to load extra instances of the components for your custom HAL file.
de: Die erste Auswahl sind Komponenten, die PnCconf intern verwendet.  Sie können pncconf so konfigurieren, dass zusätzliche Instanzen der Komponenten für Ihre eigene HAL-Datei geladen werden.

note: type: Plain text
en: Select the number of instances your custom file will need, PnCconf will add what it needs after them.
de: Wählen Sie die Anzahl der Instanzen, die Ihre benutzerdefinierte Datei benötigt, PnCconf fügt die benötigten Instanzen danach hinzu.

note: type: Plain text
en: Meaning if you need 2 and PnCconf needs 1 PnCconf will load 3 instances and use the last one.
de: Das heißt, wenn Sie 2 benötigen und PnCconf 1 benötigt, wird PnCconf 3 Instanzen laden und die letzte verwenden.

note: type: Labeled list
en: Custom Component Commands
de: Benutzerdefinierte Komponenten-Befehle

note: type: Plain text
en: This selection will allow you to load HAL components that PnCconf does not use.  Add the loadrt or loadusr command, under the heading 'loading command' Add the addf command under the heading 'Thread command'.  The components will be added to the thread between reading of inputs and writing of outputs, in the order you write them in the 'thread command'.
de: Mit dieser Auswahl können Sie HAL-Komponenten laden, die PnCconf nicht verwendet.  Fügen Sie den Befehl loadrt oder loadusr unter der Überschrift 'loading command' hinzu. Fügen Sie den Befehl addf unter der Überschrift 'Thread-Befehl' hinzu.  Die Komponenten werden dem Thread zwischen dem Lesen von Eingaben und dem Schreiben von Ausgaben in der Reihenfolge hinzugefügt, in der Sie sie im Befehl "thread" schreiben.

note: type: Title ==
en: Advanced Usage Of PnCconf
de: PnCconf für Fortgeschrittene

note: type: Plain text
en: PnCconf does its best to allow flexible customization by the user.  PnCconf has support for custom signal names, custom loading of components, custom HAL files and custom firmware.
de: PnCconf ist bestrebt, flexible Anpassungen durch den Benutzer zu ermöglichen.  PnCconf unterstützt benutzerdefinierte Signalnamen, benutzerdefiniertes Laden von Komponenten, benutzerdefinierte HAL-Dateien und benutzerdefinierte Firmware.

note: type: Plain text
en: There are also signal names that PnCconf always provides regardless of options selected, for user's custom HAL files With some thought most customizations should work regardless if you later select different options in PnCconf.
de: Es gibt auch Signalnamen, die PnCconf immer bereitstellt, unabhängig von den gewählten Optionen für benutzerdefinierte HAL-Dateien. Mit etwas Überlegung sollten die meisten Anpassungen funktionieren, auch wenn Sie später andere Optionen in PNCconf wählen.

note: type: Plain text
en: Eventually if the customizations are beyond the scope of PnCconf's frame work you can use PnCconf to build a base config or use one of LinuxCNC's sample configurations and just hand edit it to what ever you want.
de: Wenn die Anpassungen den Rahmen von PnCconf's Rahmenwerk sprengen, können Sie PnCconf verwenden, um eine Basiskonfiguration zu erstellen, oder Sie verwenden eine der LinuxCNC's Beispielkonfigurationen und editieren sie von Hand zu dem, was Sie wollen.

note: type: Labeled list
en: Custom Signal Names
de: Benutzerdefinierte Signalnamen

note: type: Plain text
en: If you wish to connect a component to something in a custom HAL file write a unique signal name in the combo entry box. Certain components will add endings to your custom signal name:
de: Wenn Sie eine Komponente mit etwas in einer benutzerdefinierten HAL-Datei verbinden möchten, geben Sie einen eindeutigen Signalnamen in das Kombinationsfeld ein. Bestimmte Komponenten fügen Endungen an Ihren benutzerdefinierten Signalnamen an:

note: type: Plain text
en: Encoders will add < customname > +:
de: Kodierer fügen hinzu < customname > +:

note: type: Plain text
en: position
de: Position

note: type: Plain text
en: count
de: count (engl für Zähler)

note: type: Plain text
en: velocity
de: Geschwindigkeit

note: type: Plain text
en: index-enable
de: Index-Aktivierung

note: type: Plain text
en: Steppers add:
de: Schrittmotoren fügen hinzu:

note: type: Plain text
en: enable
de: aktivieren

note: type: Plain text
en: counts
de: Zähler

note: type: Plain text
en: position-cmd
de: Positionsbefehl

note: type: Plain text
en: PWM add:
de: Pulsweitenmodulationen (PWM, für Servos) fügen hinzu:

note: type: Labeled list
en: value
de: Wert

note: type: Plain text
en: GPIO pins will just have the entered signal name connected to it
de: GPIO-Pins werden einfach mit dem eingegebenen Signalnamen verbunden

note: type: Plain text
en: In this way one can connect to these signals in the custom HAL files and still have the option to move them around later.
de: Auf diese Weise kann man sich mit diesen Signalen in den benutzerdefinierten HAL-Dateien verbinden und hat trotzdem die Möglichkeit, sie später zu verschieben.

note: type: Plain text
en: The HAL Components page can be used to load components needed by a user for customization.
de: Die Seite mit HAL Komponenten kann verwendet werden, um Komponenten zu laden, die ein Benutzer für die Anpassung benötigt.

note: type: Labeled list
en: Loading Custom Firmware
de: Laden der benutzerdefinierten Firmware

note: type: Plain text
en: PnCconf searches for firmware on the system and then looks for the XML file that it can convert to what it understands. These XML files are only supplied for officially released firmware from the LinuxCNC team. To utilize custom firmware one must convert it to an array that PnCconf understands and add its file path to PnCconf's preference file. By default this path searches the desktop for a folder named custom_firmware and a file named firmware.py.
de: PnCconf sucht auf dem System nach Firmware und sucht dann nach der XML-Datei, die es in das konvertieren kann, was es versteht. Diese XML-Dateien werden nur für offiziell freigegebene Firmware vom LinuxCNC-Team bereitgestellt. Um benutzerdefinierte Firmware zu verwenden, muss man sie in ein Array konvertieren, das PnCconf versteht, und den Dateipfad zu PnCconf's Einstellungsdatei hinzufügen. Standardmäßig sucht dieser Pfad auf dem Desktop nach einem Ordner namens custom_firmware und einer Datei namens firmware.py.

note: type: Plain text
en: The hidden preference file is in the user's home file, is named .pncconf-preferences and require one to select 'show hidden files' in your file manager to see and edit it or on the command line you use 'ls' with the '-a' option.  The contents of this file can be seen when you first load PnCconf - press the help button and look at the output page.
de: Die versteckte Einstellungsdatei befindet sich in der Home-Datei des Benutzers, heißt .pncconf-preferences und erfordert, dass Sie in Ihrem Dateimanager die Option "Versteckte Dateien anzeigen" wählen, um sie zu sehen und zu bearbeiten, oder Sie verwenden auf der Kommandozeile "ls" mit der Option "-a".  Der Inhalt dieser Datei kann eingesehen werden, wenn Sie PnCconf zum ersten Mal laden - drücken Sie die Hilfetaste und sehen Sie sich die Ausgabeseite an.

note: type: Plain text
en: Ask on the LinuxCNC mail-list or forum for info about converting custom firmware.  Not all firmware can be utilized with PnCconf.
de: Fragen Sie in der LinuxCNC Mailing-Liste oder im Forum nach Informationen über die Konvertierung von kundenspezifischer Firmware.  Nicht jede Firmware kann mit PnCconf verwendet werden.

note: type: Labeled list
en: Custom HAL Files
de: Benutzerdefinierte HAL-Dateien

note: type: Plain text
en: There are four custom files that you can use to add HAL commands to:
de: Es gibt vier benutzerdefinierte Dateien, die Sie verwenden können, um HAL-Befehle hinzuzufügen:

note: type: Plain text
en: custom.hal is for HAL commands that don't have to be run after the GUI frontend loads. It is run after the configuration-named HAL file.
de: custom.hal ist für HAL-Befehle, die nicht nach dem Laden des GUI-Frontends ausgeführt werden müssen. Es wird diese erst nach der HAL-Datei mit dem Konfigurationsnamen ausgeführt.

note: type: Plain text
en: custom_postgui.hal is for commands that must be run after AXIS loads or a standalone PyVCP display loads.
de: custom_postgui.hal ist für Befehle gedacht, die ausgeführt werden müssen, nachdem AXIS geladen wurde oder eine eigenständige PyVCP-Anzeige geladen wurde.

note: type: Plain text
en: custom_gvcp.hal is for commands that must be run after GladeVCP is loaded.
de: custom_gvcp.hal ist für Befehle, die ausgeführt werden müssen, nachdem GladeVCP geladen wurde.

note: type: Plain text
en: shutdown.hal is for commands to run when LinuxCNC shuts down in a controlled manner.
de: shutdown.hal ist für Befehle, die ausgeführt werden, wenn LinuxCNC kontrolliert herunterfährt.

note: type: Title =
en: Python Interface
de: Python-Schnittstelle

note: type: Plain text
en: This documentation describes the `linuxcnc` python module, which provides a Python API for talking to LinuxCNC.
de: Diese Dokumentation beschreibt das `linuxcnc` Python-Modul, das eine Python-API für die Kommunikation mit LinuxCNC bereithält.

note: constants are located in src/emc/usr_intf/axis/extensions/emcmodule.cc type: Title ==
en: The `linuxcnc` Python module
de: Das Python-Modul `linuxcnc`

note: type: Plain text
en: User interfaces control LinuxCNC activity by sending NML messages to the LinuxCNC task controller, and monitor results by observing the LinuxCNC status structure, as well as the error reporting channel.
de: Benutzeroberflächen steuern LinuxCNC-Aktivitäten durch Senden von NML-Nachrichten an die LinuxCNC-Task-Controller, und überwachen die Ergebnisse durch die Beobachtung der LinuxCNC-Status-Struktur, sowie des Fehlerberichterstattung Kanals.

note: type: Plain text
en: Programmatic access to NML is through a C++ API; however, the most important parts of the NML interface to LinuxCNC are also available to Python programs through the `linuxcnc` module.
de: Der programmatische Zugriff auf NML erfolgt über eine C++-API; die wichtigsten Teile der NML-Schnittstelle zu LinuxCNC sind jedoch auch für Python-Programme über das Modul `linuxcnc` verfügbar.

note: type: Plain text
en: Beyond the NML interface to the command, status and error channels, the `linuxcnc` module also contains:
de: Neben der NML-Schnittstelle zu den Befehls-, Status- und Fehlerkanälen enthält das Modul `linuxcnc` auch:

note: type: Plain text
en: support for reading values from INI files
de: Unterstützung für das Lesen von Werten aus INI-Dateien

note: - support for position logging  (???) type: Title ==
en: Usage Patterns for the LinuxCNC NML interface
de: Verwendungsmuster für die LinuxCNC NML-Schnittstelle

note: type: Plain text
en: The general pattern for `linuxcnc` usage is roughly like this:
de: Das allgemeine Muster für die Verwendung von `linuxcnc` ist in etwa wie folgt:

note: type: Plain text
en: import the `linuxcnc` module
de: das Modul `linuxcnc` importieren

note: type: Plain text
en: establish connections to the command, status and error NML channels as needed
de: bei Bedarf Verbindungen zu den Befehls-, Status- und Fehler-NML-Kanälen herstellen

note: type: Plain text
en: poll the status channel, either periodically or as needed
de: den Statuskanal abfragen, entweder regelmäßig oder nach Bedarf

note: type: Plain text
en: before sending a command, determine from status whether it is in fact OK to do so (for instance, there is no point in sending a 'Run' command if task is in the ESTOP state, or the interpreter is not idle)
de: vor dem Senden eines Befehls anhand des Status feststellen, ob dies tatsächlich zulässig ist (z. B. hat es keinen Sinn, einen 'Ausführen' Befehl zu senden, wenn sich die Aufgabe im NOTAUS (engl. ESTOP)-Zustand befindet oder der Interpreter nicht im Leerlauf ist)

note: type: Plain text
en: send the command by using one of the `linuxcnc` command channel methods
de: den Befehl mit einer der Methoden des Befehlskanals `linuxcnc` senden

note: type: Plain text
en: To retrieve messages from the error channel, poll the error channel periodically, and process any messages retrieved.
de: Um Nachrichten aus dem Fehlerkanal abzurufen, rufen Sie den Fehlerkanal regelmäßig ab und verarbeiten alle abgerufenen Nachrichten.

note: type: Plain text
en: print any error message and explore the exception code
de: Drucken Sie eine Fehlermeldung aus, und untersuchen Sie den Ausnahme (engl. exception)-Code

note: type: Plain text
en: `linuxcnc` also defines the `error` Python exception type to support error reporting.
de: linuxcnc" definiert auch den Python-Ausnahmetyp "error", um Fehlerberichte zu unterstützen.

note: type: Title ==
en: Reading LinuxCNC status
de: Lesen des LinuxCNC-Status

note: type: Plain text
en: Here is a Python fragment to explore the contents of the `linuxcnc.stat` object which contains some 80+ values (run while linuxcnc is running for typical values):
de: Hier ist ein Python-Fragment, um den Inhalt des Objekts `linuxcnc.stat` zu untersuchen, das mehr als 80 Werte enthält (führen Sie es aus, während linuxcnc läuft, um typische Werte zu erhalten):

note: type: delimited block -
en: #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import sys
    import linuxcnc
    try:
        s = linuxcnc.stat() # create a connection to the status channel
        s.poll() # get current values
    except linuxcnc.error, detail:
        print("error", detail)
        sys.exit(1)
    for x in dir(s):
        if not x.startswith("_"):
            print(x, getattr(s,x))
de: #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import sys
    import linuxcnc
    try:
        s = linuxcnc.stat() # erstellt Verbindung zu Status-Kanal
        s.poll() # erhält aktuelle Werte
    except linuxcnc.error, detail:
        print("Fehler", detail)
        sys.exit(1)
    for x in dir(s):
        if not x.startswith("_"):
            print(x, getattr(s,x))

note: type: Plain text
en: Linuxcnc uses the default compiled-in path to the NML configuration file unless overridden, see <<python:reading-ini-values,Reading INI file values>> for an example.
de: LinuxCNC verwendet den standardmäßig einkompilierten Pfad zur NML-Konfigurationsdatei, sofern er nicht überschrieben wird, siehe <<python:reading-ini-values,Lesen von INI-Datei Werten>> für ein Beispiel.

note: type: Title ===
en: linuxcnc.stat attributes
de: linuxcnc.stat-Attribute

note: type: Labeled list
en: *acceleration*
de: *acceleration* (engl. für Beschleunigung)

note: type: Plain text
en: '(returns float)' - default acceleration, reflects the INI entry [TRAJ]DEFAULT_ACCELERATION.
de: '(returns float)' - Standardbeschleunigung, spiegelt den INI-Eintrag [TRAJ]DEFAULT_ACCELERATION wider.

note: type: Labeled list
en: *active_queue*
de: *active_queue* (engl. für aktive Queue)

note: type: Plain text
en: '(returns integer)' - number of motions blending.
de: '(returns integer)' - Anzahl der geplanten ineinander übergehenden Bewegungen.

note: type: Labeled list
en: *actual_position*
de: *actual_position* (engl. für Ist-Position)

note: type: Plain text
en: '(returns tuple of floats)' - current trajectory position, (x y z a b c u v w) in machine units.
de: '(gibt ein Tupel von Floats zurück)' - aktuelle Position der Flugbahn (x y z a b c u v w) in Maschineneinheiten.

note: type: Labeled list
en: *adaptive_feed_enabled*
de: *adaptive_feed_enabled* (engl. für Adaptiver Vorschub aktiviert)

note: type: Plain text
en: '(returns boolean)' - status of adaptive feedrate override (0/1).
de: '(returns boolean)' - Status der adaptiven Vorschubüberschreibung (0/1).

note: type: Plain text
en: '(returns tuple of floats)' - current value of the analog input pins.
de: '(gibt ein Tupel von Floats zurück)' - aktueller Wert der analogen Eingangspins.

note: type: Labeled list
en: *angular_units*
de: *actual_position* (engl. für *Winkeleinheiten)

note: type: Plain text
en: '(returns float)' - machine angular units per deg, reflects [TRAJ]ANGULAR_UNITS INI value.
de: '(gibt Float zurück)' - Maschinenwinkeleinheiten pro Grad, entspricht dem [TRAJ]ANGULAR_UNITS INI Eintrag.

note: type: Plain text
en: '(returns tuple of floats)' - current value of the analog output pins.
de: '(gibt ein Tupel von Floats zurück)' - aktueller Wert der analogen Ausgangspins.

note: type: Labeled list
en: *axes*
de: *axes* (engl. für Achsen)

note: type: Plain text
en: '(returns integer)' - number of axes. Derived from [TRAJ]COORDINATES INI value.
de: '(returns integer)' - Anzahl der Achsen. Abgeleitet vom [TRAJ]COORDINATES INI-Eintrag.

note: type: Labeled list
en: *axis*
de: *axis* (engl. für Achse)

note: type: Plain text
en: '(returns tuple of dicts)' - reflecting current axis values. See <<sec:the-axis-dictionary,The axis dictionary>>.
de: '(gibt ein Tupel von Dicts zurück)' - spiegelt die aktuellen Achsenwerte wider. Siehe <<sec:the-axis-dictionary,Das Achsen-Wörterbuch>>.

note: type: Labeled list
en: *axis_mask*
de: *axis_mask* (engl. für Achsen-Maske)

note: type: Plain text
en: '(returns integer)' - mask of axis available as defined by [TRAJ]COORDINATES in the INI file. Returns the sum of the axes X=1, Y=2, Z=4, A=8, B=16, C=32, U=64, V=128, W=256.
de: '(gibt ganze Zahl zurück)' - Maske der verfügbaren Achsen, wie durch [TRAJ]COORDINATES in der INI-Datei definiert. Gibt die Summe der Achsen X=1, Y=2, Z=4, A=8, B=16, C=32, U=64, V=128, W=256 zurück.

note: type: Block title
en: *block_delete*
de: *block_delete* (engl. für Block löschen)

note: type: Plain text
en: '(returns boolean)' - block delete current status.
de: '(returns boolean)' - Status des Flags "Block löschen".

note: type: Labeled list
en: *call_level*
de: *call_level* (engl. für Aufrufebene)

note: type: Plain text
en: '(returns integer)'` - current subroutine depth. - 0 If not in a subroutine, Depth if not otherwise specified
de: '(gibt ganze Zahl zurück)'` - aktuelle Tiefe des Unterprogramms. - 0 Wenn nicht in einem Unterprogramm, Tiefe, wenn nicht anders angegeben

note: type: Labeled list
en: *command*
de: *command* (engl. für Befehl)

note: type: Plain text
en: '(returns string)' - currently executing command.
de: '(returns string)' - aktuell ausgeführter Befehl.

note: type: Labeled list
en: *current_line*
de: *current_line* (engl. für aktuelle Zeile)

note: type: Plain text
en: '(returns integer)' - currently executing line.
de: '(returns integer)' - aktuell ausgeführte Zeile.

note: type: Labeled list
en: *current_vel*
de: *current_vel* (engl. für aktuelle Geschwindigkeit)

note: type: Plain text
en: '(returns float)' - current velocity in user units per second.
de: '(returns float)' - aktuelle Geschwindigkeit in Benutzereinheiten pro Sekunde.

note: type: Labeled list
en: *cycle_time*
de: *cycle_time* (engl. für Zyklus-Zeit)

note: type: Plain text
en: '(returns float)' - thread period
de: '(returns float)' - Thread-Periode

note: type: Plain text
en: '(returns integer)' - debug flag from the INI file.
de: '(returns integer)' - Debug-Flag aus der INI-Datei.

note: type: Labeled list
en: *delay_left*
de: *delay_left* (engl. für verbleibende Verzögerung)

note: type: Plain text
en: '(returns float)' - remaining time on dwell (G4) command, seconds.
de: '(returns float)' - verbleibende Zeit des Verweilzeitbefehls (G4), Sekunden.

note: type: Plain text
en: '(returns tuple of integers)' - current value of the digital input pins.
de: '(gibt ein Tupel von Ganzzahlen zurück)' - aktueller Wert der digitalen Eingangspins.

note: type: Labeled list
en: *distance_to_go*
de: *distance_to_go* (engl. für verbleibende Entfernung)

note: type: Plain text
en: '(returns float)' - remaining distance of current move, as reported by trajectory planner.
de: '(returns float)' - verbleibende Entfernung der aktuellen Bewegung, wie vom Trajektorienplaner gemeldet.

note: type: Plain text
en: '(returns tuple of integers)' - current value of the digital output pins.
de: '(gibt ein Tupel von Ganzzahlen zurück)' - aktueller Wert der digitalen Ausgangspins.

note: type: Plain text
en: '(returns tuple of floats)' - remaining distance of current move for each axis, as reported by trajectory planner.
de: '(returns tuple of floats)' - verbleibende Entfernung der aktuellen Bewegung für jede Achse, wie vom Trajektorienplaner gemeldet.

note: type: Plain text
en: '(returns integer)' - The serial number of the last completed command sent by a UI to task. All commands carry a serial number. Once the command has been executed, its serial number is reflected in `echo_serial_number`.
de: '(returns integer)' – Die Seriennummer des letzten abgeschlossenen Befehls, der von einer Benutzeroberfläche an die Aufgabe gesendet wurde. Alle Befehle tragen eine fortlaufende Nummer. Sobald der Befehl ausgeführt wurde, wird seine Seriennummer in `echo_serial_number` widergespiegelt.

note: type: Labeled list
en: *enabled*
de: *enabled* (engl. für aktiviert)

note: type: Plain text
en: '(returns boolean)' - trajectory planner enabled flag.
de: '(returns boolean)' - Trajektorienplaner aktiviert Flag.

note: type: Block title
en: *estop*
de: *estop* (engl. für Notaus)

note: type: Plain text
en: '(returns integer)' - Returns either STATE_ESTOP or not.
de: '(returns integer)' - Gibt entweder STATE_ESTOP zurück oder nicht.

note: type: Plain text
en: '(returns integer)' - task execution state. One of EXEC_ERROR, EXEC_DONE, EXEC_WAITING_FOR_MOTION, EXEC_WAITING_FOR_MOTION_QUEUE, EXEC_WAITING_FOR_IO, EXEC_WAITING_FOR_MOTION_AND_IO, EXEC_WAITING_FOR_DELAY, EXEC_WAITING_FOR_SYSTEM_CMD, EXEC_WAITING_FOR_SPINDLE_ORIENTED.
de: '(gibt ganze Zahl zurück)' - Status der Aufgabenausführung. Einer von EXEC_ERROR, EXEC_DONE, EXEC_WAITING_FOR_MOTION, EXEC_WAITING_FOR_MOTION_QUEUE, EXEC_WAITING_FOR_IO, EXEC_WAITING_FOR_MOTION_AND_IO, EXEC_WAITING_FOR_DELAY, EXEC_WAITING_FOR_SYSTEM_CMD, EXEC_WAITING_FOR_SPINDLE_ORIENTED.

note: type: Plain text
en: '(returns boolean)' - enable flag for feed hold.
de: '(returns boolean)' - Flag für Feed-Hold aktivieren.

note: type: Plain text
en: '(returns boolean)' - enable flag for feed override.
de: '(returns boolean)' - Flag für Feed-Override aktivieren.

note: type: Labeled list
en: *feedrate*
de: *Vorschubrate*

note: type: Plain text
en: '(returns float)' - current feedrate override, 1.0 = 100%.
de: '(returns float)' - aktuelle Überschreibung der Vorschubrate, 1,0 = 100 %.

note: type: Labeled list
en: *file*
de: *Datei*

note: type: Plain text
en: '(returns string)' - currently loaded G-code filename with path.
de: '(returns string)' - aktuell geladener G-Code-Dateiname mit Pfad.

note: type: Labeled list
en: *flood*
de: *Flut*

note: type: Plain text
en: '(returns integer)' - Flood status, either FLOOD_OFF or FLOOD_ON.
de: '(gibt ganze Zahl zurück)' - Flutungsstatus, entweder FLOOD_OFF oder FLOOD_ON.

note: type: Plain text
en: '(returns integer)' - currently active coordinate system, G54=1, G55=2 etc.
de: '(gibt eine ganze Zahl zurück)' - derzeit aktives Koordinatensystem, G54=1, G55=2 usw.

note: type: Plain text
en: '(returns tuple of floats)' - offset of the currently active coordinate system.
de: '(gibt ein Tupel von Floats zurück)' - Offset des aktiven Koordinatensystems.

note: type: Plain text
en: '(returns tuple of floats)' - pose of the current g92 offset.
de: '(returns tuple of floats)' - Pose des aktuellen g92-Offsets.

note: type: Plain text
en: '(returns tuple of integers)' - Active G-codes for each modal group.  G-code constants G_0, G_1, G_2, G_3, G_4, G_5, G_5_1, G_5_2, G_5_3, G_7, G_8, G_100, G_17, G_17_1, G_18, G_18_1, G_19, G_19_1, G_20, G_21, G_28, G_28_1, G_30, G_30_1, G_33, G_33_1, G_38_2, G_38_3, G_38_4, G_38_5, G_40, G_41, G_41_1, G_42, G_42_1, G_43, G_43_1, G_43_2, G_49, G_50, G_51, G_53, G_54, G_55, G_56, G_57, G_58, G_59, G_59_1, G_59_2, G_59_3, G_61, G_61_1, G_64, G_73, G_76, G_80, G_81, G_82, G_83, G_84, G_85, G_86, G_87, G_88, G_89, G_90, G_90_1, G_91, G_91_1, G_92, G_92_1, G_92_2, G_92_3, G_93, G_94, G_95, G_96, G_97, G_98, G_99
de: '(gibt Tupel von ganzen Zahlen zurück)' - Aktive G-Codes für jede modale Gruppe.  G-Code-Konstanten G_0, G_1, G_2, G_3, G_4, G_5, G_5_1, G_5_2, G_5_3, G_7, G_8, G_100, G_17, G_17_1, G_18, G_18_1, G_19, G_19_1, G_20, G_21, G_28, G_28_1, G_30, G_30_1, G_33, G_33_1, G_38_2, G_38_3, G_38_4, G_38_5, G_40, G_41, G_41_1, G_42, G_42_1, G_43, G_43_1, G_43_2, G_49, G_50, G_51, G_53, G_54, G_55, G_56, G_57, G_58, G_59, G_59_1, G_59_2, G_59_3, G_61, G_61_1, G_64, G_73, G_76, G_80, G_81, G_82, G_83, G_84, G_85, G_86, G_87, G_88, G_89, G_90, G_90_1, G_91, G_91_1, G_92, G_92_1, G_92_2, G_92_3, G_93, G_94, G_95, G_96, G_97, G_98, G_99

note: type: Plain text
en: '(returns tuple of integers)' - currently homed joints, 0 = not homed, 1 = homed.
de: '(gibt ein Tupel von ganzen Zahlen zurück)' - aktuell referenzierte Gelenke, 0 = nicht referenziert, 1 = referenziert.

note: type: Plain text
en: '(returns integer)' - currently executing motion id.
de: '(gibt ganze Zahl zurück)' - aktuell ausgeführte Bewegungskennung.

note: type: Plain text
en: '(returns string)' - path to the INI file passed to linuxcnc.
de: '(returns string)' - Pfad zur INI-Datei, die an linuxcnc übergeben wird.

note: type: Plain text
en: '(returns boolean)' - machine-in-position flag.
de: '(gibt einen booleschen Wert zurück)' - Maschine-in-Position-Flag.

note: type: Plain text
en: '(returns boolean)' - flag for M66 timer in progress.
de: '(returns boolean)' - Flag für M66-Timer läuft.

note: type: Plain text
en: '(returns integer)' - current state of RS274NGC interpreter. One of INTERP_IDLE, INTERP_READING, INTERP_PAUSED, INTERP_WAITING.
de: '(gibt ganze Zahl zurück)' - aktueller Zustand des RS274NGC-Interpreters. Einer von INTERP_IDLE, INTERP_READING, INTERP_PAUSED, INTERP_WAITING.

note: type: Plain text
en: '(returns integer)' - current RS274NGC interpreter return code. One of INTERP_OK, INTERP_EXIT, INTERP_EXECUTE_FINISH, INTERP_ENDFILE, INTERP_FILE_NOT_OPEN, INTERP_ERROR.  see src/emc/nml_intf/interp_return.hh
de: '(gibt ganze Zahl zurück)' - aktueller RS274NGC-Interpreter-Rückgabecode. Einer von INTERP_OK, INTERP_EXIT, INTERP_EXECUTE_FINISH, INTERP_ENDFILE, INTERP_FILE_NOT_OPEN, INTERP_ERROR. siehe src/emc/nml_intf/interp_return.hh

note: type: Plain text
en: '(returns tuple of dicts)' - reflecting current joint values. See <<sec:the-joint-dictionary,The joint dictionary>>.
de: '(gibt ein Tupel von dicts zurück)' - spiegelt die aktuellen Gelenkwerte wider. Siehe <<sec:the-joint-dictionary,Das gemeinsame Wörterbuch>>.

note: type: Plain text
en: '(returns tuple of floats)' - actual joint positions.
de: '(gibt ein Tupel von Floats zurück)' - tatsächliche Gelenkpositionen.

note: type: Plain text
en: '(returns tuple of floats)' - Desired joint positions.
de: '(gibt Tupel von Floats zurück)' - Gewünschte gemeinsame Positionen.

note: type: Plain text
en: '(returns integer)' - number of joints. Reflects [KINS]JOINTS INI value.
de: '(returns integer)' - Anzahl der Joints. Reflektiert [KINS]JOINTS INI-Wert.

note: type: Plain text
en: '(returns integer)' - The type of kinematics. One of:
de: '(returns integer)' - Der Typ der Kinematik. Einer von:

note: type: Plain text
en: KINEMATICS_FORWARD_ONLY
de: KINEMATIKEN_FORWARD_ONLY

note: type: Plain text
en: '(returns tuple of integers)' - axis limit masks. minHardLimit=1, maxHardLimit=2, minSoftLimit=4, maxSoftLimit=8.
de: '(gibt Tupel von ganzen Zahlen zurück)' - Achsengrenzwertmasken. minHardLimit=1, maxHardLimit=2, minSoftLimit=4, maxSoftLimit=8.

note: type: Plain text
en: '(returns float)' - machine linear units per mm, reflects [TRAJ]LINEAR_UNITS INI value.
de: '(returns float)' - Maschine lineare Einheiten pro mm, spiegelt [TRAJ]LINEAR_UNITS INI-Wert wider.

note: type: Plain text
en: '(returns integer)' - 'lube on' flag.
de: '(gibt ganze Zahl zurück)' - Flag 'Schmiermittel ein'.

note: type: Plain text
en: '(returns integer)' - reflects 'iocontrol.0.lube_level'.
de: '(gibt ganze Zahlen zurück)' - spiegelt "iocontrol.0.lube_level" wider.

note: type: Plain text
en: '(returns float)' - maximum acceleration. Reflects [TRAJ]MAX_ACCELERATION.
de: '(returns float)' - maximale Beschleunigung. Reflektiert [TRAJ]MAX_ACCELERATION.

note: type: Plain text
en: '(returns float)' - maximum velocity. Reflects the current maximum velocity. If not modified by halui.max-velocity or similar it should reflect [TRAJ]MAX_VELOCITY.
de: '(returns float)' - maximale Geschwindigkeit. Gibt die aktuelle maximale Geschwindigkeit wieder. Wenn es nicht durch halui.max-velocity oder ähnliches modifiziert wird, sollte es [TRAJ]MAX_VELOCITY widerspiegeln.

note: type: Plain text
en: '(returns tuple of 10 integers)' - currently active M-codes.
de: '(gibt ein Tupel von 10 ganzen Zahlen zurück)' - derzeit aktive M-Codes.

note: type: Plain text
en: '(returns integer)' - Mist status, either MIST_OFF or MIST_ON
de: '(gibt ganze Zahl zurück)' - Nebelzustand, entweder MIST_OFF oder MIST_ON

note: type: Plain text
en: '(returns integer)' - source line number motion is currently executing. Relation to `id` unclear.
de: '(gibt die ganze Zahl zurück)' - Die Quellzeilennummernbewegung wird derzeit ausgeführt. Zusammenhang mit 'id' unklar.

note: type: Plain text
en: '(returns integer)' - This is the mode of the Motion controller.  One of TRAJ_MODE_COORD, TRAJ_MODE_FREE, TRAJ_MODE_TELEOP.
de: '(returns integer)' - Dies ist der Modus des Motion Controllers. Einer von TRAJ_MODE_COORD, TRAJ_MODE_FREE, TRAJ_MODE_TELEOP.

note: type: Plain text
en: '(returns integer)' - The type of the currently executing motion.  One of:
de: '(returns integer)' - Der Typ der aktuell ausgeführten Bewegung. Einer von:

note: type: Plain text
en: Or 0 if no motion is currently taking place.
de: Oder 0, wenn gerade keine Bewegung stattfindet.

note: type: Plain text
en: '(returns integer)' - option stop flag.
de: '(gibt die ganze Zahl zurück)' - Option Stopp-Flag.

note: type: Plain text
en: '(returns boolean)' - `motion paused` flag.
de: '(gibt einen booleschen Wert zurück)' - 'Bewegung pausiert'-Flag.

note: type: Plain text
en: '(returns integer)' - A Tx command completed, and this pocket is prepared. -1 if no prepared pocket.
de: '(gibt eine ganze Zahl zurück)' - Ein Tx-Befehl wurde ausgeführt, und diese Tasche ist vorbereitet. -1 wenn keine vorbereitete Tasche.

note: type: Plain text
en: -'(built-in function)' method to update current status attributes.
de: -'(eingebaute Funktion)' Methode zur Aktualisierung der aktuellen Statusattribute.

note: type: Plain text
en: '(returns tuple of floats)' - trajectory position.
de: '(gibt das Tupel von Floats zurück)' - Trajektorienposition.

note: type: Plain text
en: '(returns boolean)' - flag, True if probe has tripped (latch)
de: '(returns boolean)' - Flag, wahr, wenn die Sonde ausgelöst hat (Latch)

note: type: Plain text
en: '(returns integer)' - reflects value of the `motion.probe-input` pin.
de: '(returns integer)' - spiegelt den Wert des Pins 'motion.probe-input' wider.

note: type: Plain text
en: '(returns tuple of floats)' - position where probe tripped.
de: '(gibt ein Tupel von Floats zurück)' - Position, an der die Sonde ausgelöst wurde.

note: type: Labeled list
en: *probing*
de: *probiert*

note: type: Plain text
en: '(returns boolean)' - flag, True if a probe operation is in progress.
de: '(returns boolean)' - flag, true, wenn ein Prüfpunktvorgang ausgeführt wird.

note: type: Plain text
en: '(returns integer)' - one of CANON_UNITS_INCHES=1, CANON_UNITS_MM=2, CANON_UNITS_CM=3
de: '(gibt ganze Zahl zurück)' - eine von CANON_UNITS_INCHES=1, CANON_UNITS_MM=2, CANON_UNITS_CM=3

note: type: Plain text
en: '(returns integer)' - current size of the trajectory planner queue.
de: '(gibt ganze Zahl zurück)' - aktuelle Größe der Warteschlange des Trajektorienplaners.

note: type: Plain text
en: '(returns boolean)' - the trajectory planner queue is full.
de: '(returns boolean)' - Die Trajektorienplaner-Warteschlange ist voll.

note: type: Plain text
en: '(returns float)' - rapid override scale.
de: '(returns float)' - Eilgang Übersteuerungs-Faktor.

note: type: Plain text
en: '(returns integer)' - line the RS274NGC interpreter is currently reading.
de: '(returns integer)' - Zeile, die der RS274NGC-Interpreter gerade liest.

note: type: Plain text
en: '(returns float)' - current XY rotation angle around Z axis.
de: '(returns float)' - aktueller XY-Rotationswinkel um die Z-Achse.

note: type: Plain text
en: '(returns tuple of floats)' - current interpreter settings. settings[0] = sequence number, settings[1] = feed rate, settings[2] = speed, settings[3] = `G64 P` blend tolerance, settings[4] = `G64 Q` naive CAM tolerance.
de: '(gibt ein Tupel von Floats zurück)' - aktuelle Interpretereinstellungen. settings[0] = Sequenznummer, settings[1] = Vorschubgeschwindigkeit, settings[2] = Geschwindigkeit, settings[3] = `G64 P` Blendtoleranz, settings[4] = `G64 Q` naive CAM Toleranz.

note: type: Plain text
en: ' (returns tuple of dicts) ' - returns the current spindle status, see <<sec:the-spindle-dictionary, The spindle dictionary>>
de: ' (gibt Tupel von Dicts zurück) ' - gibt den aktuellen Spindelstatus zurück, siehe das <sec:the-spindle-dictionary,Spindel-Wörterbuch>>

note: type: Plain text
en: '(returns integer)' - number of spindles. Reflects [TRAJ]SPINDLES INI value.
de: '(returns integer)' - Anzahl der Spindeln. Reflektiert den INI-Wert von [TRAJ]SPINDLES.

note: type: Plain text
en: '(returns integer)' - current command execution status. One of RCS_DONE, RCS_EXEC, RCS_ERROR.
de: '(returns integer)' - aktueller Status der Befehlsausführung. Einer von RCS_DONE, RCS_EXEC, RCS_ERROR.

note: type: Plain text
en: '(returns integer)' - current task mode. one of MODE_MDI, MODE_AUTO, MODE_MANUAL.
de: '(returns integer)' - aktueller Aufgabenmodus. einer von MODE_MDI, MODE_AUTO, MODE_MANUAL.

note: type: Plain text
en: '(returns integer)' - task paused flag.
de: '(gibt die ganze Zahl zurück)' - Flag "Aufgabe angehalten".

note: type: Plain text
en: '(returns integer)' - current task state. one of STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON, STATE_OFF.
de: '(returns integer)' - aktueller Aufgabenzustand. einer von STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON, STATE_OFF.

note: type: Plain text
en: '(returns integer)' - current tool number.
de: '(gibt ganze Zahl zurück)' - aktuelle Werkzeugnummer.

note: type: Plain text
en: '(returns integer)' - pocket number for the currently loaded tool (0 if no tool loaded).
de: '(liefert eine ganze Zahl)' - Platznummer für das aktuell geladene Werkzeug (0, wenn kein Werkzeug geladen ist).

note: type: Plain text
en: '(returns tuple of floats)' - offset values of the current tool.
de: '(returns tuple of floats)' - Versatzwerte des aktuellen Werkzeugs.

note: type: Plain text
en: '(returns tuple of tool_results)' - list of tool entries. Each entry is a sequence of the following fields: id, xoffset, yoffset, zoffset, aoffset, boffset, coffset, uoffset, voffset, woffset, diameter, frontangle, backangle, orientation. The id and orientation are integers and the rest are floats.
de: '(gibt ein Tupel von tool_results zurück)' - Liste der Werkzeugeinträge. Jeder Eintrag ist eine Folge der folgenden Felder: id, xoffset, yoffset, zoffset, aoffset, boffset, coffset, uoffset, voffset, woffset, Durchmesser, Vorderwinkel, Rückwinkel, Orientierung. Bei id und orientation handelt es sich um Ganzzahlen, bei den übrigen um Fließkommazahlen.

note: type: delimited block -
en: #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import linuxcnc
    s = linuxcnc.stat()
    s.poll()
    # to find the loaded tool information it is in tool table index 0
    if s.tool_table[0].id != 0: # a tool is loaded
        print(s.tool_table[0].zoffset)
    else:
        print("No tool loaded.")
de: #!/usr/bin/env python3
    # -*- coding:  utf-8 -*-
    import linuxcnc
    s = linuxcnc.stat()
    s.poll()
    # das geladene Werkzeug befindet es sich in der Werkzeugtabelle an Index 0
    if s.tool_table[0].id != 0: # ein Werkzeug ist geladen
        print(s.werkzeug_tabelle[0].zoffset)
    else:
        print("Kein Werkzeug geladen")

note: type: Plain text
en: '(returns float)' - This property is defined, but it does not have a useful interpretation.
de: '(returns float)' - Diese Eigenschaft ist definiert, hat aber keine sinnvolle Interpretation.

note: type: Title ===
en: The `axis` dictionary
de: Das "Achsen"-Wörterbuch

note: type: Plain text
en: The axis configuration and status values are available through a list of per-axis dictionaries. Here's an example how to access an attribute of a particular axis: Note that many properties that were formerly in the `axis` dictionary are now in the `joint` dictionary, because on nontrivial kinematics machines these items (such as backlash) are not the properties of an axis.
de: Die Achsenkonfiguration und die Statuswerte sind über eine Liste von Wörterbüchern pro Achse verfügbar. Hier ein Beispiel, wie man auf ein Attribut einer bestimmten Achse zugreifen kann: Beachten Sie, dass viele Eigenschaften, die früher im "Achsen"-Wörterbuch standen, jetzt im "Gelenk"-Wörterbuch zu finden sind, da diese Elemente (wie z. B. das Spiel) auf nichttrivialen Kinematikmaschinen nicht zu den Eigenschaften einer Achse gehören.

note: type: Plain text
en: '(returns float)' - maximum limit (soft limit) for axis motion, in machine units.configuration parameter, reflects [JOINT_n]MAX_LIMIT.
de: '(returns float)' - maximale Grenze (weiche Grenze) für Achsenbewegung, in Maschineneinheiten. Konfigurationsparameter, spiegelt [JOINT_n]MAX_LIMIT wider.

note: type: Plain text
en: '(returns float)' - minimum limit (soft limit) for axis motion, in machine units.configuration parameter, reflects [JOINT_n]MIN_LIMIT.
de: '(returns float)' - minimale Grenze (weiche Grenze) für Achsenbewegung, in Maschineneinheiten. Konfigurationsparameter, reflektiert [JOINT_n]MIN_LIMIT.

note: type: Plain text
en: '(returns float)' - current velocity.
de: '(returns float)' - aktuelle Geschwindigkeit.

note: type: Title ===
en: The `joint` dictionary
de: Das `Gelenk`(engl. joint) Wörterbuch

note: type: delimited block -
en: #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import linuxcnc
    s = linuxcnc.stat()
    s.poll()
    print("Joint 1 homed: ", s.joint[1]["homed"])
de: #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    import linuxcnc
    s = linuxcnc.stat()
    s.poll()
    print("Joint 1 auf Referenzposition: ", s.joint[1]["homed"])

note: type: Plain text
en: For each joint, the following dictionary keys are available:
de: Für jedes Gelenk sind die folgenden Wörterbuchschlüssel verfügbar:

note: type: Labeled list
en: *backlash*
de: *backlash* (engl. für Umkehrspiel)

note: type: Plain text
en: '(returns float)' - Backlash in machine units. configuration parameter, reflects [JOINT_n]BACKLASH.
de: '(returns float)' - Spiel in Maschineneinheiten. Konfigurationsparameter, spiegelt [JOINT_n]BACKLASH wider.

note: type: Plain text
en: '(returns integer)' - non-zero means enabled.
de: '(gibt eine ganze Zahl zurück)' - ein Wert ungleich Null bedeutet aktiviert.

note: type: Labeled list
en: *fault*
de: *fault* (engl. für Fehler)

note: type: Plain text
en: '(returns integer)' - non-zero means axis amp fault.
de: '(gibt eine ganze Zahl zurück)' - ein Wert ungleich Null bedeutet einen Achsverstärkerfehler.

note: type: Plain text
en: '(returns float)' - current following error.
de: '(returns float)' - aktueller Schleppfehler.

note: type: Plain text
en: '(returns float)' - magnitude of max following error.
de: '(returns float)' - Größe des maximalen Schleppfehlers.

note: type: Plain text
en: '(returns integer)' - non-zero means has been homed.
de: '(returns integer)' - Nicht-Null bedeutet, dass die Referenzposition eingenommen wurde.

note: type: Plain text
en: '(returns integer)' - non-zero means homing in progress.
de: '(returns integer)' - ungleich Null bedeutet Referenfahrt im Gange.

note: type: Plain text
en: '(returns integer)' - non-zero means in position.
de: '(gibt ganze Zahl zurück)' - ungleich Null bedeutet in Position.

note: type: Plain text
en: '(returns float)' - current input position.
de: '(returns float)' - aktuelle Eingabeposition.

note: type: Plain text
en: '(returns integer)' - type of axis configuration parameter, reflects [JOINT_n]TYPE. LINEAR=1, ANGULAR=2. See <<sub:ini:sec:axis-letter, Joint INI configuration>> for details.
de: '(gibt ganze Zahl zurück)' - Typ des Achsenkonfigurationsparameters, entspricht [JOINT_n]TYPE. LINEAR=1, ANGULAR=2. Siehe <<sub:ini:sec:axis-letter, Gelenk INI Konfiguration>> für Details.

note: type: Plain text
en: '(returns float)' - maximum following error. configuration parameter, reflects [JOINT_n]FERROR.
de: '(returns float)' - maximaler Schleppfehler. Konfigurationsparameter, reflektiert [JOINT_n]FERROR.

note: type: Plain text
en: '(returns integer)' - non-zero means max hard limit exceeded.
de: '(gibt ganze Zahlen zurück)' - ungleich Null bedeutet, dass der maximale harte Grenzwert überschritten wird.

note: type: Plain text
en: '(returns float)' - maximum limit (soft limit) for joint motion, in machine units. configuration parameter, reflects [JOINT_n]MAX_LIMIT.
de: '(gibt Float zurück)' - maximaler Grenzwert (soft limit) für die Gelenkbewegung, in Maschineneinheiten. Konfigurationsparameter, spiegelt [JOINT_n]MAX_LIMIT.

note: type: Plain text
en: non-zero means `max_position_limit` was exceeded, int
de: ungleich Null bedeutet, dass `max_position_limit` überschritten wurde, int

note: type: Plain text
en: '(returns float)' - configuration parameter, reflects [JOINT_n]MIN_FERROR.
de: '(returns float)' - Konfigurationsparameter, spiegelt [JOINT_n]MIN_FERROR wider.

note: type: Plain text
en: '(returns integer)' - non-zero means min hard limit exceeded.
de: '(gibt eine ganze Zahl zurück)' - ungleich Null bedeutet, dass der minimale harte Grenzwert überschritten wird.

note: type: Plain text
en: '(returns float)' - minimum limit (soft limit) for joint motion, in machine units. configuration parameter, reflects [JOINT_n]MIN_LIMIT.
de: '(returns float)' - Mindestgrenze (weiche Grenze) für Gelenkbewegung, in Maschineneinheiten. Konfigurationsparameter, spiegelt [JOINT_n]MIN_LIMIT wider.

note: type: Plain text
en: '(returns integer)' - non-zero means `min_position_limit` was exceeded.
de: '(returns integer)' - ungleich Null bedeutet, dass `min_position_limit` überschritten wurde.

note: type: Plain text
en: '(returns float)' - commanded output position.
de: '(returns float)' - befohlene Ausgabeposition.

note: type: Plain text
en: '(returns integer)' - non-zero means limits are overridden.
de: '(gibt eine ganze Zahl zurück)' - ein Wert ungleich Null bedeutet, dass die Grenzen außer Kraft gesetzt werden.

note: type: Labeled list
en: *units*
de: *units* (engl. für Einheiten)

note: type: Plain text
en: '(returns float)' - joint units per mm, or per degree for angular joints.
    (joint units are the same as machine units, unless set otherwise by the configuration parameter [JOINT_n]UNITS)
de: '(returns float)' - Gelenkeinheiten pro mm oder pro Grad für Winkelgelenke.
    (Gelenkeinheiten sind dasselbe wie Maschineneinheiten, sofern nicht anders durch den Konfigurationsparameter [JOINT_n]UNITS festgelegt)

note: type: Title ==
en: The `spindle` dictionary
de: Das `Spindel`-Wörterbuch

note: type: Labeled list
en: *brake*
de: *brake* (engl. für Bremse)

note: type: Plain text
en: '(returns integer)' - value of the spindle brake flag.
de: '(gibt ganze Zahl zurück)' - Wert des Spindelbremsflags.

note: type: Labeled list
en: *direction*
de: *direction* (engl. für Richtung)

note: type: Plain text
en: '(returns integer)' - rotational direction of the spindle. forward=1, reverse=-1.
de: '(returns integer)' - Drehrichtung der Spindel. vorwärts=1, rückwärts=-1.

note: type: Plain text
en: '(returns integer)' - value of the spindle enabled flag.
de: '(gibt ganze Zahl zurück)' - Wert des Flags "Spindel aktiviert".

note: type: Plain text
en: (not currently implemented)
de: (derzeit nicht implementiert)

note: type: Labeled list
en: *increasing*
de: *increasing* (engl. für zunehmend)

note: type: Plain text
en: '(returns integer)' - unclear.
de: '(gibt ganze Zahl zurück)' - unklar.

note: type: Plain text
en: '(returns integer)'
de: '(gibt ganze Zahl zurück)'

note: type: Plain text
en: '(returns float)' - spindle speed override scale.
de: '(returns float)' - Spindel Geschwindigkeits-Neufestsetzungs-Skala.

note: type: Plain text
en: '(returns boolean)' - value of the spindle override enabled flag.
de: '(returns boolean)' - Wert der Spindel-Neufestsetzungs-flag (engl. spindle override).

note: type: Plain text
en: '(returns float)' - spindle speed value, rpm, > 0: clockwise, < 0: counterclockwise.
de: '(returns float)' - Spindeldrehzahlwert, U/min, > 0: im Uhrzeigersinn, < 0: gegen den Uhrzeigersinn.

note: type: Title ==
en: Preparing to send commands
de: Vorbereitung des Sendens von Befehlen

note: type: Plain text
en: Some commands can always be sent, regardless of mode and state; for instance, the `linuxcnc.command.abort()` method can always be called.
de: Einige Befehle können immer gesendet werden, unabhängig von Modus und Zustand; zum Beispiel kann die Methode `linuxcnc.command.abort()` immer aufgerufen werden.

note: type: Plain text
en: Other commands may be sent only in appropriate state, and those tests can be a bit tricky. For instance, an MDI command can be sent only if:
de: Andere Befehle können nur in einem geeigneten Zustand gesendet werden, und diese Tests können etwas knifflig sein. Zum Beispiel kann ein MDI-Befehl nur gesendet werden, wenn:

note: type: Plain text
en: ESTOP has not been triggered, and
de: NOTAUS (engl. ESTOP) nicht ausgelöst wurde und

note: type: Plain text
en: the machine is turned on and
de: die Maschine eingeschaltet ist und

note: type: Plain text
en: the axes are homed and
de: Referenzfahrten an den Achsen durchgeführt wurden

note: type: Plain text
en: the interpreter is not running and
de: der Interpreter nicht läuft und

note: type: Plain text
en: the mode is set to `MDI mode`
de: der Modus ist auf "MDIModus" eingestellt ist

note: type: Plain text
en: so an appropriate test before sending an MDI command through `linuxcnc.command.mdi()` could be:
de: Ein geeigneter Test vor dem Senden eines MDI-Befehls durch `linuxcnc.command.mdi()` könnte also sein:

note: type: delimited block -
en: if ok_for_mdi():
        c.mode(linuxcnc.MODE_MDI)
        c.wait_complete() # wait until mode switch executed
        c.mdi("G0 X10 Y20 Z30")
de: if ok_for_mdi():
        c.mode(linuxcnc.MODE_MDI)
        c.wait_complete() # warte bis mode Wechsel ausgeführt
        c.mdi("G0 X10 Y20 Z30")

note: type: Title ==
en: Sending commands through `linuxcnc.command`
de: Senden von Befehlen über 'linuxcnc.command'

note: type: Plain text
en: Before sending a command, initialize a command channel like so:
de: Initialisieren Sie vor dem Senden eines Befehls einen Befehlskanal wie folgt:

note: type: delimited block -
en: # Usage examples for some of the commands listed below:
    c.abort()
de: # Anwendungsbeispiele für einige der unten aufgeführten Befehle:
    c.abort()

note: type: Title ===
en: `linuxcnc.command` attributes
de: `linuxcnc.command` Attribute

note: type: Plain text
en: the current command serial number
de: die Seriennummer des aktuellen Befehls

note: type: Title ===
en: `linuxcnc.command` methods:
de: `linuxcnc.command` Methoden:

note: type: Plain text
en: send EMC_TASK_ABORT message.
de: EMC_TASK_ABORT-Meldung senden.

note: type: Plain text
en: run, step, pause or resume a program.
de: Ausführen, Einzelschritte ausführen, Anhalten oder Fortsetzen eines Programms.

note: type: Plain text
en: engage or release spindle brake.
de: Spindelbremse aktivieren oder lösen.

note: type: Plain text
en: set debug level via EMC_SET_DEBUG message.
de: die Debug-Stufe über die Meldung EMC_SET_DEBUG einstellen.

note: type: Plain text
en: sends a operator display message to the screen. (max 254 characters)
de: sendet eine Bedienermeldung auf den Bildschirm. (max. 254 Zeichen)

note: type: Plain text
en: sends a operator error message to the screen. (max 254 characters)
de: sendet eine Bedienerfehlermeldung auf den Bildschirm. (max. 254 Zeichen)

note: type: Plain text
en: set the feedrate.
de: den Vorschub einstellen.

note: type: Plain text
en: turn on/off flooding.
de: Ein-/ausschalten der Kühlmittel-Flut.

note: type: Title ==
en: Constants
de: Konstanten

note: type: Plain text
en: home a given joint.
de: ein bestimmtes Gelenk zu Referenzpunkt fahren.

note: type: Labeled list
en: Command Constants
de: Befehlskonstanten

note: type: Plain text
en: request individual joint jog (requires teleop_enable(0))
de: Einzelne Gelenkbewegungen anfordern (erfordert teleop_enable(0))

note: type: Plain text
en: request axis Cartesian coordinate jog (requires teleop_enable(1))
de: Abfrage der kartesischen Achsenkoordinaten (erfordert teleop_enable(1))

note: type: Labeled list
en: For joint jog (jjogmode=1)
de: Für gemeinsames Joggen (Jogmode=1)

note: type: Labeled list
en: For axis Cartesian coordinate jog (jjogmode=0)
de: Für kartesisches Joggen der Achse (jjogmode=0)

note: type: Plain text
en: zero-based index of the axis coordinate with respect to
    the known coordinate letters XYZABCUVW
    (x=>0,y=>1,z=>2,a=>3,b=>4,c=>5,u=>6,v=>7,w=>8)
de: Nullbasierter Index der Achsenkoordinate in Bezug auf
    die bekannten Koordinatenbuchstaben XYZABCUVW
    (x=>0,y=>1,z=>2,a=>3,b=>4,c=>5,u=>6,v=>7,w=>8)

note: type: Plain text
en: reload the tool table.
de: die Werkzeugtabelle neu laden.

note: type: Plain text
en: send an MDI command. Maximum 254 chars.
de: einen MDI-Befehl senden. Maximal 254 Zeichen.

note: type: Plain text
en: turn on/off mist. +
de: Kühlnebel ein-/ausschalten. +

note: type: Plain text
en: set mode (MODE_MDI, MODE_MANUAL, MODE_AUTO).
de: Modus einstellen (MODE_MDI, MODE_MANUAL, MODE_AUTO).

note: type: Plain text
en: set the override axis limits flag.
de: Flag für die Überschreitung der Achsengrenzen setzen.

note: type: Plain text
en: open an NGC file.
de: eine NGC-Datei öffnen.

note: type: Plain text
en: reset the RS274NGC interpreter
de: den RS274NGC-Interpreter zurücksetzen

note: type: Plain text
en: set adaptive feed flag
de: adaptiven Vorschub (engl. adaptive feed)-Flag setzen

note: type: Plain text
en: set analog output pin to value
de: Wert auf analogen Ausgangs-Pin legen

note: type: Plain text
en: set block delete flag
de: setze Block-löschen-Markierung (engl. flag)

note: type: Plain text
en: set digital output pin to value
de: Digitalen Ausgangspin auf Wert setzen

note: type: Plain text
en: set feed hold on/off
de: Vorschubfreigabe ein/auseinstellen

note: type: Plain text
en: set feed override on/off
de: Vorschub-Neufestsetzung ein/ausschalten

note: type: Plain text
en: set max position limit for a given axis
de: Einstellung der maximalen Positionsgrenze für eine bestimmte Achse

note: type: Plain text
en: set min position limit for a given axis
de: Legen Sie die minimale Positionsgrenze für eine bestimmte Achse fest

note: type: Plain text
en: set optional stop on/off
de: optionalen Stopp ein-/ausschalten

note: type: Plain text
en: set spindle override enabled. Defaults to spindle 0.
de: Spindel-Neufestsetzung (engl. override) einstellen aktiviert. Standardmäßig ist die Spindel 0 eingestellt.

note: type: Plain text
en: Direction: [SPINDLE_FORWARD, SPINDLE_REVERSE, SPINDLE_OFF, SPINDLE_INCREASE, SPINDLE_DECREASE, or SPINDLE_CONSTANT]
de: Direction (engl. für Richtung): [SPINDLE_FORWARD, SPINDLE_REVERSE, SPINDLE_OFF, SPINDLE_INCREASE, SPINDLE_DECREASE, oder SPINDLE_CONSTANT]

note: type: Plain text
en: Speed: Speed in RPM, defaults to 0.
de: Speed: Drehzahl in U/min (engl. RPM), Standardwert ist 0.

note: type: Plain text
en: Spindle: Spindle number to command defaults to 0.
de: Spindle: Spindelnummer für den Befehl ist standardmäßig 0.

note: type: Plain text
en: Wait_for_speed: if 1 motion will wait for speed before continuing, defaults to not.
de: Wait_for_speed: wenn auf 1 gesetzt warten Bewegung auf die Geschwindigkeit bevor sie fortgesetzt werden, die Standardeinstellung verlang dies nicht.

note: type: Plain text
en: MDI commands will ignore this. "S1000" after this will turn the spindle off.
de: MDI-Befehle ignorieren dies. "S1000" danach schaltet die Spindel aus.

note: type: Plain text
en: sends a operator text message to the screen. (max 254 characters)
de: sendet eine Betreiber-Textnachricht auf den Bildschirm. (max. 254 Zeichen)

note: type: delimited block -
en: # Increase speed of spindle 0 by 100rpm. Spindle must be on first.
    c.spindle(linuxcnc.INCREASE)
de: # Erhöhen Sie die Drehzahl der Spindel 0 um 100 Umdrehungen pro Minute. Die Spindel muss zuerst eingeschaltet werden.
    c.spindle(linuxcnc.INCREASE)

note: type: delimited block -
en: # Increase speed of spindle 2 by 100rpm. Spindle must be on first.
    c.spindle(linuxcnc.SPINDLE_INCREASE, 2)
de: # Erhöhen Sie die Drehzahl von Spindel 2 um 100 Umdrehungen pro Minute. Die Spindel muss zuerst eingeschaltet werden.
    c.spindle(linuxcnc.SPINDLE_INCREASE, 2)

note: type: delimited block -
en: # Set speed of spindle 0 to 1024 rpm.
    c.spindle.(linuxcnc.SPINDLE_FORWARD, 1024)
de: # Set speed of spindle 0 to 1024 U/min.
    c.spindle.(linuxcnc.SPINDLE_FORWARD, 1024)

note: type: delimited block -
en: # Set speed of spindle 1 to -666 rpm.
    c.spindle.(linuxcnc.SPINDLE_REVERSE, 666, 1)
de: # Drehzahl der Spindel 1 auf -666 U/min setzen.
    c.spindle.(linuxcnc.SPINDLE_REVERSE, 666, 1)

note: type: delimited block -
en: # Stop spindle 0.
    c.spindle.(linuxcnc.SPINDLE_OFF)
de: # Spindel 0 stoppen.
    c.spindle.(linuxcnc.SPINDLE_OFF)

note: type: delimited block -
en: # Stop spindle 0 explicitly.
    c.spindle.(linuxcnc.SPINDLE_OFF, 0)
de: # Spindel 0 explizit stoppen.
    c.spindle.(linuxcnc.SPINDLE_OFF, 0)

note: type: Plain text
en: Set spindle override factor. Defaults to spindle 0.
de: Spindel-Neufestsetzung (engl. override)-Faktor einstellen. Bezieht sich wenn nicht anders angegeben auf Spindel 0.

note: type: Plain text
en: Set the machine state. Machine state should be STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON, or STATE_OFF.
de: Setzt den Maschinenzustand. Der Maschinenzustand sollte STATE_ESTOP, STATE_ESTOP_RESET, STATE_ON, oder STATE_OFF sein.

note: type: Plain text
en: On completion of this call, the VAR file on disk is updated with live values from the interpreter.
de: Nach Beendigung dieses Aufrufs wird die VAR-Datei auf der Festplatte mit den aktuellen Werten des Interpreters aktualisiert.

note: type: Plain text
en: Enable/disable teleop mode (disable for joint jogging).
de: Teleop-Modus aktivieren/deaktivieren (für gemeinsames Joggen deaktivieren).

note: type: Plain text
en: Set the tool offset. See usage example above.
de: Den Werkzeugversatz einstellen. Siehe Anwendungsbeispiel oben.

note: type: Plain text
en: Set trajectory mode. Mode is one of MODE_FREE, MODE_COORD, or MODE_TELEOP.
de: Trajektorienmodus einstellen. Der Modus ist einer von MODE_FREE, MODE_COORD oder MODE_TELEOP.

note: type: Plain text
en: Unhome a given joint.
de: Referenzpunkt eines bestimmten Gelenks auflösen (engl. unhome).

note: type: Plain text
en: Wait for completion of the last command sent. If timeout in seconds not specified, default is 5 seconds. Return -1 if timed out, return RCS_DONE or RCS_ERROR according to command execution status.
de: Auf die Beendigung des letzten gesendeten Befehls warten. Wenn die Zeitüberschreitung in Sekunden nicht angegeben wird, ist der Standardwert 5 Sekunden. Rückgabe -1 bei Zeitüberschreitung, Rückgabe RCS_DONE oder RCS_ERROR je nach Status der Befehlsausführung.

note: type: Title ==
en: Reading the error channel
de: Lesen des Fehlerkanals

note: type: Plain text
en: To handle error messages, connect to the error channel and periodically poll() it.
de: Um Fehlermeldungen zu behandeln, stellen Sie eine Verbindung zum Fehlerkanal her und pollen (durch Aufruf von poll() ) Sie ihn regelmäßig.

note: type: Plain text
en: Note that the NML channel for error messages has a queue (other than the command and status channels), which means that the first consumer of an error message deletes that message from the queue; whether your another error message consumer (e.g. Axis)  will 'see' the message is dependent on timing. It is recommended to have just one error channel reader task in a setup.
de: Beachten Sie, dass der NML-Kanal für Fehlermeldungen über eine Warteschlange verfügt (anders als die Befehls- und Statuskanäle), was bedeutet, dass der erste Empfänger einer Fehlermeldung diese aus der Warteschlange löscht; ob ein anderer Empfänger einer Fehlermeldung (z. B. Axis) die Meldung sieht, hängt vom Timing ab. Es wird empfohlen, nur eine Fehlerkanal-Leser-Task in einem Setup zu haben.

note: type: Title ==
en: Reading INI file values
de: Lesen von INI-Datei Werten

note: type: Plain text
en: Here's an example for reading values from an INI file through the `linuxcnc.ini` object:
de: Hier ist ein Beispiel für das Lesen von Werten aus einer INI-Datei durch das Objekt `linuxcnc.ini`:

note: type: delimited block -
en: #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # run as:
    # python3 ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini
de: #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # Ausführen wie folgt:
    # python3 ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini

note: type: delimited block -
en: # inifile.findall() returns a list of matches, or an empty list
    # if the key wasn't found:
de: # inifile.findall() gibt eine Liste von Übereinstimmungen oder eine leere Liste zurück
    # falls der Schlüssel nicht gefunden wurde:

note: type: delimited block -
en: # override default NML file by INI parameter if given
    nmlfile = inifile.find("EMC", "NML_FILE")
    if nmlfile:
        linuxcnc.nmlfile = os.path.join(os.path.dirname(sys.argv[1]), nmlfile)
de: # Standard-NML-Datei durch INI-Parameter neufestsetzen, falls angegeben
    nmlfile = inifile.find("EMC", "NML_FILE")
    if nmlfile:
        linuxcnc.nmlfile = os.path.join(os.path.dirname(sys.argv[1]), nmlfile)

note: type: Plain text
en: Or for the same INI file as LinuxCNC:
de: Oder für die selbe INI-Datei wie LinuxCNC:

note: type: delimited block -
en: #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # run as:
    # python3 ini-example2.py
de: #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    # starten mit:
    # python3 ini-example2.py

note: type: delimited block -
en: # See example above for usage of 'inifile' object
de: # Siehe obiges Beispiel für die Verwendung des 'inifile' Objekts

note: type: Title ==
en: The `linuxcnc.positionlogger` type
de: Der Typ `linuxcnc.positionlogger`

note: type: Plain text
en: Some usage hints can be gleaned from `src/emc/usr_intf/gremlin/gremlin.py`.
de: Einige Verwendungshinweise können von 'src/emc/usr_intf/gremlin/gremlin.py' entnommen werden.

note: type: Title ===
en: members
de: Members

note: type: Plain text
en: number of points.
de: Anzahl der Punkte.

note: type: Title ===
en: methods
de: Methoden

note: type: Plain text
en: start the position logger and run every ARG seconds
de: den Positionslogger starten und alle ARG-Sekunden ausführen

note: type: Plain text
en: clear the position logger
de: den Positionslogger löschen

note: type: Plain text
en: stop the position logger
de: den Positionslogger anhalten

note: type: Plain text
en: Plot the backplot now.
de: Plotte jetzt den Backplot.

note: type: Plain text
en: Return the most recent point on the plot or None
de: Gibt den letzten Punkt auf dem Plot oder keinen (als Python Ausdruck `None`) zurück

note: type: Title =
en: Stepper Configuration Wizard(((Stepper Configuration Wizard)))
de: Schrittmotor-Konfigurations-Assistent(((Schrittmotor-Konfigurations-Assistent)))

note: type: Plain text
en: LinuxCNC is capable of controlling a wide range of machinery using many different hardware interfaces.
de: LinuxCNC ist in der Lage, eine breite Palette von Maschinen mit vielen verschiedenen Hardware-Schnittstellen zu steuern.

note: type: Plain text
en: StepConf is a program that generates configuration files for LinuxCNC for a specific class of CNC machine: those that are controlled via a 'standard parallel port', and controlled by signals of type 'step & direction'.
de: StepConf ist ein Programm, das Konfigurationsdateien für LinuxCNC für eine bestimmte Klasse von CNC-Maschinen generiert: diejenigen, die über einen 'Standard-Parallelport' und durch 'Schritt & Richtung'-Signale gesteuert werden.

note: type: Plain text
en: StepConf is installed when you install LinuxCNC and is in the CNC menu.
de: StepConf wird bei der Installation von LinuxCNC mitinstalliert und befindet sich im CNC-Menü.

note: type: Plain text
en: StepConf places a file in the linuxcnc/config directory to store the choices for each configuration you create.  When you change something, you need to pick the file that matches your configuration name.  The file extension is .stepconf.
de: StepConf legt eine Datei im Verzeichnis linuxcnc/config ab, um die Auswahlmöglichkeiten für jede von Ihnen erstellte Konfiguration zu speichern.  Wenn Sie etwas ändern, müssen Sie die Datei auswählen, die dem Namen Ihrer Konfiguration entspricht.  Die Dateierweiterung lautet .stepconf.

note: type: Plain text
en: The StepConf Wizard works best with at least 800 x 600 screen resolution.
de: Der StepConf-Assistent funktioniert am besten bei einer Bildschirmauflösung von mindestens 800 x 600.

note: type: Title ==
en: Start Page
de: Startseite

note: type: Positional ($1) AttributeList argument for macro 'image'
en: StepConf Entry Page
de: StepConf Einstiegsseite

note: type: Plain text
en: The three first radio buttons are self-explanatory:
de: Die ersten drei Optionsfelder sind selbsterklärend:

note: type: Plain text
en: 'Create New' - Creates a fresh configuration.
de: 'Neu erstellen' (engl. Create New) - legt eine neue Konfiguration an.

note: type: Plain text
en: 'Modify' - Modify an existing configuration.  After selecting this a file picker pops up so you can select the .stepconf file for modification.  If you made any modifications to the main HAL or the INI file these will be lost.  Modifications to custom.hal and custom_postgui.hal will not be changed by the StepConf Wizard.  StepConf will highlight the lastconf that was built.
de: 'Ändern' - (engl. Modify) Ändern Sie eine bestehende Konfiguration.  Nachdem Sie dies ausgewählt haben, erscheint eine Dateiauswahl, mit der Sie die zu ändernde .stepconf-Datei auswählen können.  Wenn Sie Änderungen an der Haupt (engl. main)-HAL- oder der INI-Datei vorgenommen haben, gehen diese verloren.  Änderungen an custom.hal und custom_postgui.hal werden vom StepConf-Assistenten nicht geändert.  StepConf markiert die zuletzt erstellte Conf-Datei.

note: type: Plain text
en: 'Import' - Import a Mach configuration file and attempt to convert it to a LinuxCNC config file.  After the import, you will go though the pages of StepConf to confirm/modify the entries.  The original mach XML file will not be changed.
de: 'Importieren' (engl. import) - Importieren Sie eine Mach-Konfigurationsdatei und versucht, sie in eine LinuxCNC-Konfigurationsdatei zu konvertieren.  Nach dem Import gehen Sie durch die Seiten von StepConf, um die Einträge zu bestätigen/zu ändern.  Die ursprüngliche Mach-XML-Datei wird nicht verändert.

note: type: Plain text
en: These next options will be recorded in a preference file for the next run of StepConf.
de: Diese folgenden Optionen werden in einer Einstellungsdatei für den nächsten Lauf von StepConf gespeichert.

note: type: Plain text
en: 'Create Desktop Shortcut' - This will place a link on your desktop to the files.
de: 'Desktop-Verknüpfung erstellen' (engl. Create Desktop Shortcut) - Damit wird eine Verknüpfung auf Ihrem Desktop zu den Dateien erstellt.

note: type: Plain text
en: 'Create Desktop Launcher' - This will place a launcher on your desktop to start your application.
de: 'Desktop Launcher erstellen' (engl. Create Desktop Launcher) - Damit wird ein Launcher auf Ihrem Desktop platziert, um Ihre Anwendung zu starten.

note: type: Plain text
en: 'Create Simulated Hardware' - This allows you to build a config for testing, even if you don't have the actual hardware.
de: 'Simulierte Hardware erstellen' (engl. Create Simulated Hardware) - Damit können Sie eine Konfiguration zum Testen erstellen, auch wenn Sie nicht über die tatsächliche Hardware verfügen'.

note: type: Title ==
en: Basic Information
de: Grundlegende Informationen

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Basic Information Page
de: Seite mit grundlegenden Informationen

note: type: Plain text
en: 'Machine Name' - (((Machine Name)))  Choose a name for your machine.  Use only uppercase letters, lowercase letters, digits, - and _.
de: 'Maschinenname' - (((Maschinenname)))  Wählen Sie einen Namen für Ihre Maschine.  Verwenden Sie nur Großbuchstaben, Kleinbuchstaben, Ziffern, - und _.

note: type: Plain text
en: 'Axis Configuration' - (((Axis Configuration)))  Choose XYZ (Mill), XYZA (4-axis mill) or XZ (Lathe).
de: 'Achsenkonfiguration' - (((Achsenkonfiguration)))  Wählen Sie XYZ (Fräsen), XYZA (4-Achsen-Fräsen) oder XZ (Drehen).

note: type: Plain text
en: 'Machine Units' - (((Machine Units)))  Choose Inch or mm. All subsequent entries will be in the chosen units. Changing this also changes the default values in the Axes section.  If you change this after selecting values in any of the axes sections, they will be over-written by the default values of the selected units.
de: 'Maschineneinheiten' (engl. machine units) - (((Maschineneinheiten)))  Wählen Sie Zoll (engl. inch) oder mm. Alle nachfolgenden Eingaben werden in der gewählten Einheit vorgenommen. Wenn Sie diese Einstellung ändern, werden auch die Standardwerte im Bereich Achsen geändert.  Wenn Sie dies ändern, nachdem Sie Werte in einem der Achsenbereiche ausgewählt haben, werden diese durch die Standardwerte der ausgewählten Einheiten überschrieben.

note: type: Plain text
en: 'Driver Type' - (((Driver Type)))  If you have one of the stepper drivers listed in the pull down box, choose it.  Otherwise, select 'Other' and find the timing values in your driver's data sheet and enter them as 'nano seconds' in the 'Driver Timing Settings'.  If the data sheet gives a value in microseconds, multiply by 1000.  For example, enter 4.5 µs as 4500 ns.
de: 'Treiber Typ' - (((Treiber Typ)))  Wenn Sie einen der in der Pulldown-Box aufgeführten Schrittmotor (engl. stepper)-Treiber (engl. driver) haben, wählen Sie ihn aus.  Andernfalls wählen Sie 'Andere' und suchen Sie die Timing-Werte im Datenblatt Ihres Treibers' und geben Sie sie als 'Nanosekunden' im Feld 'Treiber-Timing-Einstellungen' ein.  Wenn im Datenblatt ein Wert in Mikrosekunden angegeben ist, multiplizieren Sie ihn mit 1000.  Geben Sie zum Beispiel 4,5 µs als 4500 ns ein.

note: type: Plain text
en: A list of some popular drives, along with their timing values, is on the LinuxCNC.org Wiki under http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Stepper_Drive_Timing[Stepper Drive Timing].
de: Eine Liste einiger beliebter Antriebe, zusammen mit ihren Timing-Werte, ist auf der LinuxCNC.org Wiki unter http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Stepper_Drive_Timing[Stepper Drive Timing].

note: type: Plain text
en: Additional signal conditioning or isolation such as optocouplers and RC filters on break out boards can impose timing constraints of their own, in addition to those of the driver. You may find it necessary to add some time to the drive requirements to allow for this.
de: Zusätzliche Signalkonditionierung oder -isolierung wie Optokoppler und RC-Filter auf Break-Out-Platinen können zusätzlich zu den Zeitvorgaben des Treibers eigene Einschränkungen mit sich bringen. Es kann notwendig sein, die Treiberanforderungen um einige Zeit zu verlängern, um dies zu berücksichtigen.

note: type: Plain text
en: The LinuxCNC Configuration Selector has configs for Sherline already configured.
de: Die LinuxCNC Konfigurations-Auswahl hat Einstellungen für Sherline bereits vorbereitet.

note: type: Plain text
en: 'Step Time' - How long the step pulse is 'on' in nano seconds. If your not sure about this setting a value of 20,000 will work with most drives.
de: 'Step Time' - Wie lange der Schrittimpuls 'on' in Nanosekunden ist. Wenn Sie sich bei dieser Einstellung nicht sicher sind, funktioniert ein Wert von 20.000 bei den meisten Antrieben.

note: type: Plain text
en: 'Step Space' - Minimum time between step pulses in nano seconds. If your not sure about this setting a value of 20,000 will work with most drives.
de: 'Schrittweite' (engl. Step Space) - Minimale Zeit zwischen den Schrittimpulsen in Nanosekunden. Wenn Sie sich bei dieser Einstellung nicht sicher sind, funktioniert ein Wert von 20.000 bei den meisten Antrieben.

note: type: Plain text
en: 'Direction Hold' - How long the direction pin is held after a change of direction in nanoseconds. If your not sure about this setting a value of 20,000 will work with most drives.
de: 'Direction Hold' - Wie lange der Richtungs-Pin nach einer Richtungsänderung in Nanosekunden gehalten wird. Wenn Sie sich bei dieser Einstellung nicht sicher sind, wird ein Wert von 20.000 bei den meisten Antrieben funktionieren.

note: type: Plain text
en: 'Direction Setup' - How long before a direction change after the last step pulse in nanoseconds. If your not sure about this setting a value of 20,000 will work with most drives.
de: 'Direction Setup' - Zeitraum vor einem Richtungswechsel nach dem letzten Schrittimpuls in Nanosekunden. Wenn Sie sich bei dieser Einstellung nicht sicher sind, funktioniert ein Wert von 20.000 bei den meisten Antrieben.

note: type: Plain text
en: 'One / Two Parport' - Select how many parallel port are to be configured.
de: 'One / Two Parport' - Wählen Sie, wie viele parallele Anschlüsse konfiguriert werden sollen.

note: type: Plain text
en: 'Base Period Maximum Jitter' - (((Base Period Maximum Jitter)))  Enter the result of the Latency Test here.  To run a latency test press the 'Test Base Period Jitter' button. See the <<sec:latency-test,Latency Test>> section for more details.
de: 'Base Period Maximum Jitter' - (((Base Period Maximum Jitter)))  Geben Sie hier das Ergebnis des Latenztests ein.  Um einen Latenztest durchzuführen, drücken Sie die Schaltfläche 'Test Base Period Jitter'. Weitere Einzelheiten finden Sie im Abschnitt <sec:latency-test,Latenz-Test>>.

note: type: Plain text
en: 'Max Step Rate' -(((Max Step Rate)))  StepConf automatically calculates the Max Step Rate based on the driver characteristics entered and the latency test result.
de: 'Max Step Rate' -(((Max Step Rate)))  StepConf berechnet die Max Step Rate automatisch auf der Grundlage der eingegebenen Treibermerkmale und des Latenz-Test-Ergebnisses.

note: type: Plain text
en: 'Min Base Period' - (((Min Base Period)))  StepConf automatically determines the Min Base Period based on the driver characteristics entered and latency test result.
de: 'Min Base Period' - (((Min Base Period)))  StepConf ermittelt die Min Base Period automatisch auf der Grundlage der eingegebenen Treibermerkmale und des Latenz-Test-Ergebnisses.

note: type: Title ===
en: Latency Test(((Latency Test)))
de: Latenz-Test(((Latenz-Test)))

note: type: Plain text
en: While the test is running, you should 'abuse' the computer. Move windows around on the screen. Surf the web. Copy some large files around on the disk. Play some music. Run an OpenGL program such as glxgears. The idea is to put the PC through its paces while the latency test checks to see what the worst case numbers are.  Run the test at least a few minutes. The longer you run the test the better it will be at catching events that might occur at less frequent intervals. This is a test for your computer only, so no hardware needs to be connected to run the test.
de: Während der Test läuft, sollten Sie den Computer 'missbrauchen'. Bewegen Sie die Fenster auf dem Bildschirm. Surfen Sie im Internet. Kopieren Sie einige große Dateien auf der Festplatte. Spielen Sie etwas Musik. Führen Sie ein OpenGL-Programm wie glxgears aus. Die Idee ist, den PC auf Herz und Nieren zu prüfen, während der Latenz-Test ermittelt, was die schlimmsten Werte sind.  Lassen Sie den Test mindestens ein paar Minuten laufen. Je länger Sie den Test laufen lassen, desto eher werden auch seltene Ereignisse erfasst, die möglicherweise in kürzeren Abständen auftreten. Dies ist ein Test nur für Ihren Computer, es muss also keine Hardware angeschlossen sein, um den Test durchzuführen.

note: type: Plain text
en: Do not attempt run LinuxCNC while the latency test is running.
de: Versuchen Sie nicht, LinuxCNC zu starten, während der Latenztest läuft.

note: type: Title ==
en: Latency Test
de: Latenz-Test

note: type: Plain text
en: Latency is how long it takes the PC to stop what it is doing and respond to an external request. In our case, the request is the periodic 'heartbeat' that serves as a timing reference for the step pulses. The lower the latency, the faster you can run the heartbeat, and the faster and smoother the step pulses will be.
de: Die Latenzzeit gibt an, wie lange der PC braucht, um seine Arbeit zu unterbrechen und auf eine externe Anfrage zu reagieren. In unserem Fall ist die Anfrage der periodische 'Herzschlag' (engl. heartbeat), der als Zeitreferenz für die Schrittimpulse dient. Je geringer die Latenzzeit ist, desto schneller kann der Herzschlag ausgeführt werden, und desto schneller und gleichmäßiger werden die Schrittimpulse sein.

note: type: Plain text
en: Latency is far more important than CPU speed. The CPU isn't the only factor in determining latency. Motherboards, video cards, USB ports, SMI issues, and a number of other things can hurt the latency.
de: Die Latenzzeit ist weitaus wichtiger als die CPU-Geschwindigkeit. Die CPU ist nicht der einzige Faktor, der die Latenzzeit bestimmt. Motherboards, Grafikkarten, USB-Anschlüsse, SMI-Probleme und eine Reihe anderer Faktoren können die Latenz beeinträchtigen.

note: type: Block title
en: Troubleshooting SMI Issues (LinuxCNC.org Wiki)
de: Fehlersuche bei SMI-Problemen (LinuxCNC.org Wiki)

note: type: delimited block *
en: Fixing Realtime problems caused by SMI on Ubuntu
de: Behebung von durch SMI verursachten Echtzeitproblemen unter Ubuntu

note: type: Plain text
en: The important numbers are the 'max jitter'. In the example above 9075 nanoseconds (ns), or 9.075 microseconds (µs), is the highest jitter.  Record this number, and enter it in the Base Period Maximum Jitter box.
de: Die wichtigen Zahlen sind der 'maximale Jitter'. Im obigen Beispiel ist 9075 Nanosekunden (ns), oder 9,075 Mikrosekunden (µs), der höchste Jitter.  Notieren Sie diese Zahl, und geben Sie sie in das Feld Base Period Maximum Jitter ein.

note: type: Title ==
en: Parallel Port Setup
de: Einrichtung der parallelen Schnittstelle

note: type: Block title
en: Parallel Port Setup Page
de: Parallele Schnittstelle Setup-Seite

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Parallel Port 1 Setup Page
de: Parallele Schnittstelle 1 Einrichtungs-Seite

note: type: Plain text
en: You may specify the address as a hexadecimal (often 0x378) or as linux's default port number (probably 0)
de: Sie können die Adresse als Hexadezimalwert (oft 0x378) oder als Linux's Standard-Portnummer (wahrscheinlich 0) angeben

note: type: Plain text
en: For each pin, choose the signal which matches your parallel port pinout.  Turn on the 'invert' check box if the signal is inverted (0V for true/active, 5V for false/inactive).
de: Wählen Sie für jeden Pin das Signal, das der Pinbelegung Ihres Parallelports entspricht.  Aktivieren Sie das Kontrollkästchen 'invert', wenn das Signal invertiert ist (0V für wahr/aktiv, 5V für falsch/inaktiv).

note: type: Plain text
en: 'Output pinout presets' - Automatically set pins 2 through 9 according to the Sherline standard (Direction on pins 2, 4, 6, 8) or the Xylotex standard (Direction on pins 3, 5, 7, 9).
de: 'Ausgangspinout-Voreinstellungen' - Automatische Einstellung der Pins 2 bis 9 gemäß dem Sherline-Standard (Richtung auf Pins 2, 4, 6, 8) oder dem Xylotex-Standard (Richtung auf Pins 3, 5, 7, 9).

note: type: Plain text
en: 'Inputs and Outputs' - If the input or output is not used set the option to 'Unused'.
de: „Eingänge und Ausgänge“ – Wenn der Ein- oder Ausgang nicht verwendet wird, setzen Sie die Option auf „Nicht verwendet“.

note: type: Plain text
en: 'External E-Stop' - This can be selected from an input pin drop down box.  A typical E-Stop chain uses all normally closed contacts.
de: 'Externes Notaus' (engl. external E-Stop) - Dies kann aus einem Dropdown-Feld für den Eingangsstift ausgewählt werden.  Eine typische Notaus-Kette verwendet alle normalerweise geschlossenen Kontakte.

note: type: Plain text
en: 'Homing & Limit Switches' - These can be selected from an input pin drop down box for most configurations.
de: 'Referenzpunkt- & Endschalter' - Diese können bei den meisten Konfigurationen aus einem Dropdown-Feld für den Eingangspin ausgewählt werden.

note: type: Plain text
en: 'Charge Pump' - If your driver board requires a charge pump signal select Charge Pump from the drop down list for the output pin you wish to connect to your charge pump input.  The charge pump output is connected to the base thread by StepConf.  The charge pump output will be about 1/2 of the maximum step rate shown on the Basic Machine Configuration page.
de: 'Charge Pump' - Wenn Ihre Treiberplatine ein Ladungspumpensignal benötigt, wählen Sie Charge Pump aus der Dropdown-Liste für den Ausgangspin, den Sie mit Ihrem Ladungspumpeneingang verbinden möchten.  Der Ausgang der Ladungspumpe ist über StepConf mit dem Basisgewinde verbunden.  Der Ausgang der Ladungspumpe entspricht etwa der Hälfte der maximalen Schrittrate, die auf der Seite "Basic Machine Configuration" angegeben ist.

note: type: Plain text
en: 'Plasma Arc Voltage' - If you require a Mesa THCAD to input a plasma arc voltage then select Plasma Arc Voltage from the list of output pins.  This will enable a THCAD page during the setup procedure for the entry of the card parameters.
de: 'Plasmabogen-Spannung' - (engl. Plasma Arc Voltage) Wenn Sie eine Mesa THCAD zur Eingabe einer Plasmalichtbogenspannung benötigen, wählen Sie Plasmabogen-Spannung aus der Liste der Ausgangspins.  Dadurch wird während des Setup-Vorgangs eine THCAD-Seite für die Eingabe der Kartenparameter aktiviert.

note: type: Title ==
en: Parallel Port 2 Setup
de: Einrichtung des zweiten parallelen Ports

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Parallel Port 2 Setup Page
de: Einrichten von Parallel Port 2

note: type: Plain text
en: The second Parallel port (if selected) can be configured and It's pins assigned on this page.  No step and direction signals can be selected.  You may select in or out to maximizes the number of input/output pins that are available.  You may specify the address as a hexadecimal (often 0x378) or as linux's default port number (probably 1).
de: Der zweite Parallelport (falls ausgewählt) kann auf dieser Seite konfiguriert und seine Pins zugewiesen werden.  Es können keine Schritt- und Richtungssignale ausgewählt werden.  Sie können "in" oder "out" wählen, um die Anzahl der verfügbaren Eingangs-/Ausgangs-Pins zu maximieren.  Sie können die Adresse als Hexadezimalwert (oft 0x378) oder als Linux's Standard-Portnummer (wahrscheinlich 1) angeben.

note: type: Title ==
en: Axis Configuration(((Axis Configuration)))
de: Achsenkonfiguration(((Achsenkonfiguration)))

note: type: Block title
en: Axis Configuration Screen
de: Achsenkonfiguration am Bildschirm

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Axis X Configuration Page
de: Axis X Konfigurationsseite

note: type: Plain text
en: 'Motor Steps Per Revolution' - (((Motor Steps Per Revolution)))  The number of full steps per motor revolution.  If you know how many degrees per step the motor is (e.g., 1.8 degree), then divide 360 by the degrees per step to find the number of steps per motor revolution.
de: 'Motorschritte pro Umdrehung' - (((Motorschritte pro Umdrehung)))  Die Anzahl der vollen Schritte pro Motorumdrehung.  Wenn Sie wissen, wie viele Grad pro Schritt der Motor hat (z. B. 1,8 Grad), dann teilen Sie 360 durch die Gradzahl pro Schritt, um die Anzahl der Schritte pro Motorumdrehung zu ermitteln.

note: type: Plain text
en: 'Driver Microstepping' - (((Driver Microstepping))) The amount of microstepping performed by the driver. Enter '2' for half-stepping.
de: 'Microstepping des Treibers' - (((Microstepping des Treibers))) Der Umfang des vom Treiber durchgeführten Mikroschrittes. Geben Sie '2' für halbes Stepping ein.

note: type: Plain text
en: 'Pulley Ratio' - (((Pulley Ratio)))  If your machine has pulleys between the motor and leadscrew, enter the ratio here.  If not, enter '1:1'.
de: 'Riemenscheibenverhältnis' - (((Riemenscheibenverhältnis)))  Wenn Ihre Maschine Riemenscheiben zwischen Motor und Leitspindel hat, geben Sie hier das Verhältnis ein.  Wenn nicht, geben Sie '1:1' ein.

note: type: Plain text
en: 'Leadscrew Pitch' - (((Leadscrew Pitch))) Enter the pitch of the leadscrew here.  If you chose 'Inch' units, enter the number of threads per inch.  If you chose 'mm' units, enter the number of millimeters per revolution (e.g., enter 2 for 2mm/rev).  If the machine travels in the wrong direction, enter a negative number here instead of a positive number, or invert the direction pin for the axis.
de: 'Gewindespindelsteigung' - (((Gewindespindelsteigung))) Geben Sie hier die Steigung der Leitspindel ein.  Wenn Sie die Einheit 'Zoll' gewählt haben, geben Sie die Anzahl der Gewinde pro Zoll ein.  Wenn Sie die Einheit 'mm' gewählt haben, geben Sie die Anzahl der Millimeter pro Umdrehung ein (z.B. 2 für 2mm/Umdrehung).  Wenn die Maschine in die falsche Richtung fährt, geben Sie hier eine negative Zahl anstelle einer positiven Zahl ein, oder kehren Sie den Richtungspin für die Achse um.

note: type: Plain text
en: 'Maximum Velocity' - (((Maximum Velocity)))  Enter the maximum velocity for the axis in units per second.
de: 'Maximale Geschwindigkeit' - (((Maximale Geschwindigkeit)))  Geben Sie die maximale Geschwindigkeit für die Achse in Einheiten pro Sekunde ein.

note: type: Plain text
en: 'Maximum Acceleration' - (((Maximum Acceleration)))  The correct values for these items can only be determined through experimentation.  See <<sub:finding-maximum-velocity,Finding Maximum Velocity>> to set the speed and <<sub:finding-maximum-acceleration,Finding Maximum Acceleration>> to set the acceleration.
de: 'Maximale Beschleunigung' - (((Maximale Beschleunigung)))  Die richtigen Werte für diese Elemente können nur durch Experimentieren ermittelt werden.  Siehe <sub:finding-maximum-velocity,Maximale Geschwindigkeit bestimmen>> zur Einstellung der Geschwindigkeit und <<sub:finding-maximum-acceleration,Maximale Beschleunigung bestimmen>> zur Einstellung der Beschleunigung.

note: type: Plain text
en: 'Home Location' - (((Home Location)))  The position the machine moves to after completing the homing procedure for this axis.  For machines without home switches, this is the location the operator manually moves the machine to before pressing the Home button.  If you combine the home and limit switches you must move off of the switch to the home position or you will get a joint limit error.
de: 'Referenzunkt' - (((Referenzpunkt)))  Die Position, zu der die Maschine nach Abschluss des Referenzfahrtverfahrens für diese Achse fährt (engl. home location).  Bei Maschinen ohne Referenzfahrtschalter ist dies die Position, zu der ein Bediener die Maschine manuell bewegt, bevor er die Taste Home drückt.  Wenn Sie den Referenzpunktschalter und den Endschalter kombinieren, müssen Sie den Schalter in die Referenzpunktposition fahren, da sonst ein Fehler in der Gelenkbegrenzung auftritt.

note: type: Plain text
en: 'Table Travel' - (((Table Travel)))  The range of travel for that axis based on the machine origin.  The home location must be inside the 'Table Travel' and not equal to one of the Table Travel values.
de: 'Tischverfahrweg' - (((Tischverfahrweg)))  Der Verfahrbereich für diese Achse, bezogen auf den Maschinenursprung.  Die Ausgangsposition muss innerhalb des 'Tabellenverfahrwegs' liegen und darf nicht gleich einem der Werte des Tabellenverfahrwegs sein.

note: type: Plain text
en: 'Home Switch Location' - (((Home Switch Location)))  The location at which the home switch trips or releases relative to the machine origin.  This item and the two below only appear when Home Switches were chosen in the Parallel Port Pinout.  If you combine home and limit switches the home switch location can not be the same as the home position or you will get a joint limit error.
de: 'Referenzfahrtschalter-Position' - (((Referenzschalter-Position)))(engl. Home Switch Location)  Die Position, an der ein Home-Schalter ausgelöst oder freigegeben wird, bezogen auf den Ursprung der Maschine.  Dieser Punkt und die beiden folgenden erscheinen nur, wenn in der Pinbelegung des parallelen Anschlusses Referenzfahrtschalter (engl. home switches))) gewählt wurde.  Wenn Sie Referenzfahrt- und Endschalter kombinieren, darf die Position des Referenzfahrtschalters nicht mit der Referenzfahrtposition übereinstimmen, da sonst ein gemeinsamer Endschalterfehler auftritt.

note: type: Plain text
en: 'Home Search Velocity' - (((Home Search Velocity))) The velocity to use when searching for the home switch.  If the switch is near the end of travel, this velocity must be chosen so that the axis can decelerate to a stop before hitting the end of travel.  If the switch is only closed for a short range of travel (instead of being closed from its trip point to one end of travel), this velocity must be chosen so that the axis can decelerate to a stop before the switch opens again, and homing must always be started from the same side of the switch.  If the machine moves the wrong direction at the beginning of the homing procedure, negate the value of 'Home Search Velocity'.
de: 'Referenzpunkt Such-Geschwindigkeit' (engl. Home Search Velocity) - (((Home Search Velocity))) Die Geschwindigkeit, die bei der Suche nach dem Referenz-Schalter verwendet wird.  Befindet sich der Schalter in der Nähe des Endes des technisch möglichen Verfahrwegs, muss diese Geschwindigkeit so gewählt werden, dass die Achse vor dem Erreichen des Endes des Verfahrwegs bis zum Stillstand abbremsen kann.  Wenn der Schalter nur für einen kurzen Bereich des Verfahrwegs geschlossen ist (anstatt von seinem Auslösepunkt bis zu einem Ende des Verfahrwegs geschlossen zu sein), muss diese Geschwindigkeit so gewählt werden, dass die Achse bis zum Anschlag abbremsen kann, bevor der Schalter wieder geöffnet wird, und die Referenzfahrt muss immer von derselben Seite des Schalters aus gestartet werden.  Wenn sich die Maschine zu Beginn der Referenzfahrt in die falsche Richtung bewegt, negieren Sie diesn Wert.

note: type: Plain text
en: 'Home Latch Direction' - (((Home Latch Direction))) Choose 'Same' to have the axis back off the switch, then approach it again at a very low speed.  The second time the switch closes, the home position is set.  Choose 'Opposite' to have the axis back off the switch and when the switch opens, the home position is set.
de: 'Home Latch Direction' - (((Home Latch Direction))) Wählen Sie 'Same', damit die Achse vom Schalter zurückfährt und sich ihm dann mit sehr geringer Geschwindigkeit wieder nähert.  Wenn sich der Schalter zum zweiten Mal schließt, wird die Grundstellung eingestellt.  Wählen Sie 'Umgekehrt', damit die Achse vom Schalter zurückfährt und beim Öffnen des Schalters der Referenzpunkt eingestellt wird.

note: type: Plain text
en: 'Time to accelerate to max speed' - (((Time to accelerate to max speed)))  Time to reach maximum speed calculated from 'Max Acceleration' and 'Max Velocity'.
de: 'Zeit bis zum Erreichen der Maximalgeschwindigkeit' - (((Zeit bis zum Erreichen der Maximalgeschwindigkeit)))  (engl. time to accelerate to max speed) Zeit bis zum Erreichen der Höchstgeschwindigkeit, berechnet aus 'maximaler Beschleunigung' (engl. max acceleration) und 'maximaler Geschwindigkeit' (engl. max velocity).

note: type: Plain text
en: 'Distance to accelerate to max speed' - (((Distance to accelerate to max speed)))  Distance to reach maximum speed from a standstill.
de: 'Entfernung zur Beschleunigung auf Höchstgeschwindigkeit' - (((Entfernung zur Beschleunigung auf Höchstgeschwindigkeit)))  (engl. distance to accelerate to max speed) Entfernung zum Erreichen der Höchstgeschwindigkeit aus dem Stand.

note: type: Plain text
en: 'Pulse rate at max speed' - (((Pulse rate at max speed)))  Information computed based on the values entered above.  The greatest 'Pulse rate at max speed' determines the 'BASE_PERIOD'.  Values above 20000Hz may lead to slow response time or even lockups (the fastest usable pulse rate varies from computer to computer)
de: 'Pulsfrequenz bei maximaler Geschwindigkeit' (engl. pulse rate at max speed)- (((Pulsfrequenz bei maximaler Geschwindigkeit)))  Informationen, die auf der Grundlage der oben eingegebenen Werte berechnet werden.  Die größte 'Impulsrate bei maximaler Geschwindigkeit' bestimmt die 'BASIS_PERIOD'.  Werte über 20000Hz können zu langsamen Reaktionszeiten oder sogar zu Blockierungen führen (die schnellste nutzbare Pulsrate variiert von Computer zu Computer)

note: type: Plain text
en: 'Axis SCALE' - The number that will be used in the INI file [SCALE] setting.  This is how many steps per user unit.
de: 'Axis SCALE' - Die Zahl, die in der INI-Datei [SCALE] Einstellung verwendet wird.  Die Anzahl Schritte pro Benutzereinheit.

note: type: Plain text
en: 'Test this axis' - (((Test this axis)))  This will open a window to allow testing for each axis. This can be used after filling out all the information for this axis.
de: 'Diese Achse testen' - (((Diese Achse testen)))  (engl. test this axis) Dadurch wird ein Fenster geöffnet, in dem jede Achse getestet werden kann. Dies kann verwendet werden, nachdem alle Informationen für diese Achse ausgefüllt wurden.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Axis Test
de: Achsen-Test

note: type: Plain text
en: Test this axis is a basic tester that only outputs step and direction signals to try different values for acceleration and velocity.
de: Der Achsen-Test ist ein einfacher Test, für den nur Schritt- und Richtungssignale ausgegeben werden, um verschiedene Werte für Beschleunigung und Geschwindigkeit zu testen.

note: type: Plain text
en: In order to use test this axis you have to manually enable the axis if this is required. If your driver has a charge pump you will have to bypass it.  Test this axis does not react to limit switch inputs. Use with caution.
de: Um diese Achse zu testen, müssen Sie die Achse manuell aktivieren, wenn dies erforderlich ist. Wenn Ihr Treiber über eine Ladungspumpe verfügt, müssen Sie diese überbrücken.  Der Test dieser Achse reagiert nicht auf Endschaltereingänge. Verwenden Sie diesen mit Vorsicht.

note: type: Title ===
en: Finding Maximum Velocity(((Finding Maximum Velocity)))
de: Bestimmen der maximalen Geschwindigkeit(((Bestimmen der maximalen Geschwindigkeit)))

note: comment out latexmath until a fix is found for the html docs type: Plain text
en: Begin with a low Acceleration
de: Beginnen Sie mit einer geringen Beschleunigung

note: (e.g., latexmath:[ 2 in/s^2 ] or latexmath:[ 50 mm/s^2 ]) type: Plain text
en: (for example, *+2 inches/s^2^+* or *+50 mm/s^2^+*)  and the velocity you hope to attain.  Using the buttons provided, jog the axis to near the center of travel.  Take care because with a low acceleration value, it can take a surprising distance for the axis to decelerate to a stop.
de: (z. B. *+2 Zoll/s^2^+* oder *+50 mm/s^2^+*) und die Geschwindigkeit, die Sie zu erreichen hoffen.  Verwenden Sie die Tasten, um die Achse in die Nähe der Mitte des Verfahrwegs zu bewegen.  Seien Sie vorsichtig, denn bei einem niedrigen Beschleunigungswert kann es überraschend lange dauern, bis die Achse bis zum Stillstand abbremst.

note: latexmath:[ d = 0.5 * v * v/a ] type: Plain text
en: After gauging the amount of travel available, enter a safe distance in Test Area, keeping in mind that after a stall the motor may next start to move in an unexpected direction.  Then click Run.  The machine will begin to move back and forth along this axis.  In this test, it is important that the combination of Acceleration and Test Area allow the machine to reach the selected Velocity and 'cruise' for at least a short distance -- the more distance, the better this test is.  The formula *+d = 0.5 * v * v/a+*
de: Nachdem Sie den verfügbaren Verfahrweg gemessen haben, geben Sie im Testbereich eine sichere Entfernung ein, wobei Sie bedenken müssen, dass sich der Motor nach dem Abwürgen in eine unerwartete Richtung bewegen kann.  Klicken Sie dann auf Ausführen.  Die Maschine beginnt nun, sich entlang dieser Achse hin und her zu bewegen.  Bei diesem Test ist es wichtig, dass die Kombination aus Beschleunigung und Testbereich es der Maschine ermöglicht, die gewählte Geschwindigkeit zu erreichen und zumindest eine kurze Strecke zu fahren - je mehr Strecke, desto besser ist dieser Test.  Die Formel *+d = 0,5 * v * v/a+*

note: type: Plain text
en: gives the minimum distance required to reach the specified velocity with the given acceleration.  If it is convenient and safe to do so, push the table against the direction of motion to simulate cutting forces.  If the machine stalls, reduce the speed and start the test again.
de: gibt den Mindestabstand an, der erforderlich ist, um die angegebene Geschwindigkeit mit der gegebenen Beschleunigung zu erreichen.  Wenn es bequem und sicher ist, schieben Sie den Tisch gegen die Bewegungsrichtung, um Schnittkräfte zu simulieren.  Wenn die Maschine zum Stillstand kommt, verringern Sie die Geschwindigkeit und starten Sie den Test erneut.

note: type: Plain text
en: If the machine did not obviously stall, click the 'Run' button off. The axis now returns to the position where it started. If the position is incorrect, then the axis stalled or lost steps during the test. Reduce Velocity and start the test again.
de: Wenn die Maschine nicht offensichtlich zum Stillstand gekommen ist, klicken Sie auf die Schaltfläche 'Ausführen'. Die Achse kehrt nun zu der Position zurück, an der sie gestartet ist. Wenn die Position nicht korrekt ist, dann ist die Achse während des Tests stehen geblieben oder hat Schritte verloren. Verringern Sie die Geschwindigkeit und starten Sie den Test erneut.

note: type: Plain text
en: If the machine doesn't move, stalls, or loses steps, no matter how low you turn Velocity, verify the following:
de: Wenn sich die Maschine nicht bewegt, stehen bleibt oder Schritte verliert, egal wie niedrig Sie die Geschwindigkeit einstellen, überprüfen Sie Folgendes:

note: type: Plain text
en: Correct step waveform timings
de: Korrigieren Sie das Timing der Schrittwellenform

note: type: Plain text
en: Correct pinout, including 'Invert' on step pins
de: Korrekte Pinbelegung, einschließlich 'Invert' auf Step-Pins

note: type: Plain text
en: Correct, well-shielded cabling
de: Korrekte, gut geschirmte Verkabelung

note: type: Plain text
en: Physical problems with the motor, motor coupling, leadscrew, etc.
de: Physikalische Probleme mit dem Motor, der Motorkupplung, der Leitspindel usw.

note: type: Plain text
en: Once you have found a speed at which the axis does not stall or lose steps during this testing procedure, reduce it by 10% and use that as the axis 'Maximum Velocity'.
de: Sobald Sie eine Geschwindigkeit gefunden haben, bei der die Achse während dieser Testprozedur nicht ins Stocken gerät oder Schritte verliert, reduzieren Sie diese um 10 % und verwenden Sie diese Geschwindigkeit als Maximalgeschwindigkeit der Achse.

note: type: Title ===
en: Finding Maximum Acceleration(((Finding Maximum Acceleration)))
de: Bestimmen der maximalen Beschleunigung(((Bestimmen der maximalen Beschleunigung)))

note: type: Plain text
en: With the Maximum Velocity you found in the previous step, enter the acceleration value to test.  Using the same procedure as above, adjust the Acceleration value up or down as necessary.  In this test, it is important that the combination of Acceleration and Test Area allow the machine to reach the selected Velocity.  Once you have found a value at which the axis does not stall or lose steps during this testing procedure, reduce it by 10% and use that as the axis Maximum Acceleration.
de: Geben Sie mit der im vorherigen Schritt ermittelten Höchstgeschwindigkeit den zu testenden Beschleunigungswert ein.  Passen Sie den Beschleunigungswert wie oben beschrieben nach oben oder unten an.  Bei diesem Test ist es wichtig, dass die Kombination aus Beschleunigung und Testbereich es der Maschine ermöglicht, die ausgewählte Geschwindigkeit zu erreichen.  Sobald Sie einen Wert gefunden haben, bei dem die Achse während dieses Testverfahrens nicht ins Stocken gerät oder Schritte verliert, reduzieren Sie ihn um 10 % und verwenden Sie diesen Wert als maximale Beschleunigung der Achse.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Spindle Configuration Page
de: Seite zur Spindelkonfiguration

note: type: Plain text
en: This page only appears when 'Spindle PWM' is chosen in the 'Parallel Port Pinout' page for one of the outputs.
de: Diese Seite erscheint nur, wenn 'Spindle PWM' auf der Seite 'Parallel Port Pinout' für einen der Ausgänge gewählt wurde.

note: type: Title ===
en: Spindle Speed Control(((Spindle Speed Control)))
de: Spindeldrehzahlregelung(((Spindeldrehzahlregelung)))

note: type: Plain text
en: If 'Spindle PWM' appears on the pinout, the following information should be entered:
de: Wenn 'Spindle PWM' auf dem Pinout erscheint, sollten die folgenden Informationen eingegeben werden:

note: type: Plain text
en: 'PWM Rate' - The 'carrier frequency' of the PWM signal to the spindle. Enter '0' for PDM mode, which is useful for generating an analog control voltage.  Refer to the documentation for your spindle controller for the appropriate value.
de: 'PWM Rate' - Die 'Trägerfrequenz' des PWM-Signals für die Spindel. Geben Sie '0' für den PDM-Modus ein, der für die Erzeugung einer analogen Steuerspannung nützlich ist.  Den entsprechenden Wert finden Sie in der Dokumentation zu Ihrem Spindelcontroller.

note: type: Plain text
en: 'Speed 1 and 2, PWM 1 and 2' - The generated configuration file uses a simple linear relationship to determine the PWM value for a given RPM value. If the values are not known, they can be determined. For more information see <<sub:determining-spindle-calibration,Determining Spindle Calibration>>.
de: 'Drehzahl 1 und 2, PWM 1 und 2' - Die generierte Konfigurationsdatei verwendet eine einfache lineare Beziehung, um den PWM-Wert für einen bestimmten Drehzahlwert zu bestimmen. Wenn die Werte nicht bekannt sind, können sie bestimmt werden. Weitere Informationen finden Sie unter <<sub:determining-spindle-calibration,Festlegung der Spindle Kalibrierung>>.

note: type: Title ===
en: Spindle-synchronized motion(((Spindle-synchronized motion)))
de: Spindel-synchronisierte Bewegung(((Spindel-synchronisierte Bewegung)))

note: type: Plain text
en: When the appropriate signals from a spindle encoder are connected to LinuxCNC via HAL, LinuxCNC supports lathe threading.  These signals are:
de: Wenn die entsprechenden Signale von einem Spindel-Encoder an LinuxCNC über HAL verbunden sind, unterstützt LinuxCNC Drehmaschine Gewindeschneiden.  Diese Signale sind:

note: type: Plain text
en: 'Spindle Index' - Is a pulse that occurs once per revolution of the spindle.
de: 'Spindle Index' – Ist ein Impuls, der einmal pro Spindelumdrehung auftritt.

note: type: Plain text
en: 'Spindle Phase A' - This is a pulse that occurs in multiple equally-spaced locations as the spindle turns.
de: 'Spindelphase A' - Dies ist ein Impuls, der an mehreren gleichmäßig beabstandeten Stellen auftritt, während sich die Spindel dreht.

note: type: Plain text
en: 'Spindle Phase B (optional)' - This is a second pulse that occurs, but with an offset from Spindle Phase A. The advantages to using both A and B are direction sensing, increased noise immunity, and increased resolution.
de: 'Spindelphase B (optional)' - Dies ist ein zweiter Impuls, der auftritt, jedoch mit einem Versatz zur Spindelphase A. Die Vorteile der Verwendung von A und B sind Richtungserkennung, erhöhte Störfestigkeit und erhöhte Auflösung.

note: type: Plain text
en: If 'Spindle Phase A' and 'Spindle Index' appear on the pinout, the following information should be entered:
de: Wenn 'Spindel Phase A' und 'Spindel Index' auf dem Pinout erscheinen, sollten die folgenden Informationen eingegeben werden:

note: type: Plain text
en: 'Use Spindle-At-Speed' - With encoder feedback one can choose to have LinuxCNC wait for the spindle to reach the commanded speed before feed moves. Select this option and set the 'close enough' scale.
de: 'Use Spindle-At-Speed' - Mit Encoder-Feedback kann man wählen, ob LinuxCNC warten soll, bis die Spindel die befohlene Geschwindigkeit erreicht hat, bevor der Vorschub erfolgt. Wählen Sie diese Option und stellen Sie die 'close enough' Skala ein.

note: type: Plain text
en: 'Speed Display Filter Gain' - Setting for adjusting the stability of the visual spindle speed display.
de: 'Filterverstärkung der Drehzahlanzeige' - Einstellung zur Anpassung der Stabilität der visuellen Spindeldrehzahlanzeige.

note: type: Plain text
en: 'Cycles per revolution' - The number of cycles of the 'Spindle A' signal during one revolution of the spindle. This option is only enabled when an input has been set to 'Spindle Phase A'
de: 'Zyklen pro Umdrehung' - (enl. cycles per revolution) Die Anzahl der Zyklen des 'Spindel A' Signals während einer Umdrehung der Spindel. Diese Option ist nur aktiviert, wenn ein Eingang auf 'Spindel Phase A' gesetzt wurde

note: type: Plain text
en: 'Maximum speed in thread' - The maximum spindle speed used in threading.  For a high spindle RPM or a spindle encoder with high resolution, a low value of 'BASE_PERIOD' is required.
de: 'Maximale Drehzahl im Gewinde' - (engl. Maximum speed in thread) Die maximale Spindeldrehzahl, die beim Gewindeschneiden verwendet wird.  Für eine hohe Spindeldrehzahl oder einen Spindel-Encoder mit hoher Auflösung ist ein niedriger Wert für 'BASE_PERIOD' erforderlich.

note: type: Title ===
en: Determining Spindle Calibration(((Determining Spindle Calibration)))
de: Bestimmung der Spindelkalibrierung(((Bestimmung der Spindelkalibrierung)))

note: type: Plain text
en: Enter the following values in the Spindle Configuration page:
de: Geben Sie die folgenden Werte auf der Seite Spindelkonfiguration ein:

note: type: Plain text
en: Finish the remaining steps of the configuration process, then launch LinuxCNC with your configuration.  Turn the machine on and select the MDI tab.  Start the spindle turning by entering: 'M3 S100'.  Change the spindle speed by entering a different S-number: 'S800'.  Valid numbers (at this point) range from 1 to 1000.
de: Beenden Sie die verbleibenden Schritte des Konfigurationsprozesses und starten Sie dann LinuxCNC mit Ihrer Konfiguration.  Schalten Sie die Maschine ein und wählen Sie den Reiter MDI.  Starten Sie die Spindeldrehung durch Eingabe von: 'M3 S100'.  Ändern Sie die Spindeldrehzahl, indem Sie eine andere S-Zahl eingeben: 'S800'.  Gültige Zahlen (zu diesem Zeitpunkt) reichen von 1 bis 1000.

note: type: Plain text
en: For two different S-numbers, measure the actual spindle speed in RPM.  Record the S-numbers and actual spindle speeds. Run StepConf again.  For 'Speed' enter the measured speed, and for 'PWM' enter the S-number divided by 1000.
de: Messen Sie für zwei verschiedene S-Zahlen die tatsächliche Spindeldrehzahl in U/min.  Notieren Sie die S-Zahlen und die tatsächlichen Spindeldrehzahlen. Führen Sie StepConf erneut aus.  Geben Sie für 'Drehzahl' die gemessene Drehzahl und für 'PWM' die S-Zahl geteilt durch 1000 ein.

note: type: Plain text
en: Because most spindle drivers are somewhat nonlinear in their response curves, it is best to:
de: Da die meisten Spindeltreiber in ihren Ansprechkurven etwas nichtlinear sind, ist es am besten, dies zu berücksichtigen:

note: type: Plain text
en: Make sure the two calibration speeds are not too close together in RPM.
de: Stellen Sie sicher, dass die beiden Kalibrierungsdrehzahlen nicht zu nahe beieinander liegen.

note: type: Plain text
en: Make sure the two calibration speeds are in the range of speeds you will typically use while milling.
de: Vergewissern Sie sich, dass die beiden Kalibrierungsgeschwindigkeiten im Bereich der Geschwindigkeiten liegen, die Sie normalerweise beim Fräsen verwenden.

note: type: Plain text
en: For instance, if your spindle will go from 0 RPM to 8000 RPM, but you generally use speeds from 400 RPM (10%) to 4000 RPM (100%), then find the PWM values that give 1600 RPM (40%) and 2800 RPM (70%).
de: Wenn Ihre Spindel z. B. von 0 U/min bis 8000 U/min läuft, Sie aber in der Regel Drehzahlen zwischen 400 U/min (10 %) und 4000 U/min (100 %) verwenden, dann suchen Sie die PWM-Werte, die 1600 U/min (40 %) und 2800 U/min (70 %) ergeben.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Advanced Options Configuration
de: Erweiterte Optionen bei der Konfiguration

note: type: Plain text
en: 'Include Halui' - This will add the Halui user interface component. See the <<cha:hal-user-interface,HALUI Chapter>> for more information on.
de: 'Include Halui' - Damit wird die Halui-Benutzerschnittstellenkomponente hinzugefügt. Siehe das <<cha:hal-user-interface,HALUI Kapitel>> für weitere Informationen hierzu.

note: type: Plain text
en: 'Include PyVCP' - This option adds the PyVCP panel base file or a sample file to work on. See the <<cha:pyvcp,PyVCP Chapter>> for more information.
de: 'Include PyVCP' - Diese Option fügt die PyVCP-Panel-Basisdatei oder eine Beispieldatei zum Arbeiten hinzu. Siehe das <<cha:pyvcp,PyVCP Kapitel>> für weitere Informationen.

note: type: Plain text
en: 'Include ClassicLadder PLC' - This option will add the ClassicLadder PLC (Programmable Logic Controller). See the <<cha:classicladder,ClassicLadder Chapter>> for more information.
de: 'Include ClassicLadder PLC' - Diese Option fügt die ClassicLadder PLC (Speicherprogrammierbare Steuerung) hinzu. Weitere Informationen finden Sie im Kapitel <cha:classicladder,ClassicLadder>>.

note: type: Plain text
en: 'Onscreen Prompt For Tool Change' - If this box is checked, LinuxCNC will pause and prompt you to change the tool when 'M6' is encountered. This feature is usually only useful if you have presettable tools.
de: 'Bildschirm-Aufforderung zu Werkzeugwechsel' - Wenn dieses Feld markiert ist, wird LinuxCNC Pause und fordern Sie auf, das Werkzeug zu wechseln, wenn 'M6' angetroffen wird. Diese Funktion ist in der Regel nur sinnvoll, wenn Sie voreinstellbaren Werkzeugen haben.

note: type: Title ==
en: Complete Machine Configuration(((Complete Machine Configuration)))
de: Vollständige Maschinenkonfiguration(((Vollständige Maschinenkonfiguration)))

note: type: Plain text
en: Click 'Apply' to write the configuration files.  Later, you can re-run this program and tweak the settings you entered before.
de: Klicken Sie auf 'Übernehmen', um die Konfigurationsdateien zu schreiben.  Später können Sie dieses Programm erneut ausführen und die zuvor eingegebenen Einstellungen ändern.

note: type: Title ==
en: Axis Travels and Homes
de: Achsen Verfahrwege und Referenzpunkte

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Axis Travel and Home
de: Achsen Verfahrwege und Referenzpunkt

note: type: Plain text
en: For each axis, there is a limited range of travel.  The physical end of travel is called the 'hard stop'.
de: Für jede Achse gibt es einen begrenzten Verfahrbereich.  Das physikalische Ende des Verfahrwegs wird als 'Festanschlag' (engl. hard stop) bezeichnet.

note: type: Plain text
en: [red]#If a mechanical hard stop were to be exceeded, the screw or the machine frame would be damaged!#
de: [red]#[Bei Überschreitung eines mechanischen Festanschlags würde die Schnecke oder der Maschinenrahmen beschädigt werden!#

note: type: Plain text
en: Before the 'hard stop' there is a 'limit switch'.  If the limit switch is encountered during normal operation, LinuxCNC shuts down the motor amplifier.  The distance between the 'hard stop' and 'limit switch' must be long enough to allow an unpowered motor to coast to a stop.
de: Vor dem 'hard stop' gibt es einen 'Endschalter'.  Wenn der Endschalter während des normalen Betriebs angetroffen wird, schaltet LinuxCNC den Motorverstärker ab.  Der Abstand zwischen dem 'harten Anschlag' und 'Endschalter' muss lang genug sein, um einen unbestromten Motor zum Stillstand zu bringen.

note: type: Plain text
en: Before the 'limit switch' there is a 'soft limit'.  This is a limit enforced in software after homing.  If a MDI command or G-code program would pass the soft limit, it is not executed.  If a jog would pass the soft limit, it is terminated at the soft limit.
de: Vor dem 'Endschalter' gibt es ein 'soft limit'.  Dabei handelt es sich um eine Grenze, die nach der Referenzfahrt in der Software durchgesetzt wird.  Wenn ein MDI-Befehl oder ein G-Code-Programm die weiche Grenze überschreiten würde, wird es nicht ausgeführt.  Wenn eine manuelle Steuerung die Softgrenze überschreiten würde, wird diese an der Softgrenze beendet.

note: type: Plain text
en: The 'home switch' can be placed anywhere within the travel (between hard stops).  As long as external hardware does not deactivate the motor amplifiers when the limit switch is reached, one of the limit switches can be used as a home switch.
de: Der 'Referenzschalter' (engl. home switch) kann an einer beliebigen Stelle innerhalb des Verfahrwegs (zwischen harten Anschlägen) platziert werden.  Solange die externe Hardware die Motorverstärker nicht deaktiviert, wenn der Endschalter erreicht wird, kann einer der Endschalter als Referenzschalter verwendet werden.

note: type: Plain text
en: The 'zero position' is the location on the axis that is 0 in the machine coordinate system.  Usually the 'zero position' will be within the 'soft limits'.  On lathes, constant surface speed mode requires that machine 'X=0' correspond to the center of spindle rotation when no tool offset is in effect.
de: Die 'Nullposition' ist die Stelle auf der Achse, die im Maschinenkoordinatensystem 0 ist.  Normalerweise liegt die 'Nullposition' innerhalb der 'weichen Grenzen'.  Bei Drehmaschinen erfordert der Modus Konstante Schnittgeschwindigkeit, dass 'X=0' dem Zentrum der Spindeldrehung entspricht, wenn keine Werkzeugkorrektur wirksam ist.

note: type: Plain text
en: The 'home position' is the location within travel that the axis will be moved to at the end of the homing sequence.  This value must be within the 'soft limits'.  In particular, the 'home position' should never be exactly equal to a 'soft limit'.
de: Die 'Referenzpunktposition' (engl. home position) ist die Position innerhalb des Verfahrwegs, zu der die Achse am Ende der Referenzfahrt bewegt wird.  Dieser Wert muss innerhalb der 'weichen Grenzen' liegen.  Insbesondere sollte die 'Home Position' nie genau gleich einem 'Soft Limit' sein.

note: type: Title ===
en: Operating without Limit Switches
de: Betrieb ohne Endschalter

note: type: Plain text
en: A machine can be operated without limit switches. In this case, only the soft limits stop the machine from reaching the hard stop.  Soft limits only operate after the machine has been homed.
de: Eine Maschine kann auch ohne Endschalter betrieben werden. In diesem Fall verhindern nur die Softlimits, dass die Maschine den Hardstop erreicht.  Die Softlimits wirken erst, nachdem die Maschine referenziert worden ist.

note: type: Title ===
en: Operating without Home Switches(((Operating without Home Switches)))
de: Betrieb ohne Referenzschalter (engl. home switches)(((Betrieb ohne Referenzschalter)))

note: type: Plain text
en: A machine can be operated without home switches.  If the machine has limit switches, but no home switches, it is best to use a limit switch as the home switch (e.g., choose 'Minimum Limit + Home X' in the pinout).  If the machine has no switches at all, or the limit switches cannot be used as home switches for another reason, then the machine must be homed 'by eye' or by using match marks. Homing by eye is not as repeatable as homing to switches, but it still allows the soft limits to be useful.
de: Eine Maschine kann auch ohne Referenzschalter betrieben werden.  Wenn die Maschine Endschalter, aber keine Referenzschalter hat, ist es am besten, einen Endschalter als Referenzschalter zu verwenden (z.B. wählen Sie 'Minimum Limit + Home X' in der Pinbelegung).  Wenn die Maschine überhaupt keine Schalter hat oder die Endschalter aus einem anderen Grund nicht als Referenzschalter verwendet werden können, muss die Maschine nach Augenmaß oder mit Hilfe von Streichhölzern referenziert werden. Die Referenzfahrt nach Augenmaß ist nicht so wiederholbar wie die Referenzfahrt mit Schaltern, aber die Softlimits sind trotzdem nützlich.

note: type: Title ===
en: Home and Limit Switch wiring options
de: Verdrahtungsoptionen für Referenz- und Endschalter

note: type: Plain text
en: The ideal wiring for external switches would be one input per switch.  However, the PC parallel port only offers a total of 5 inputs, while there are as many as 9 switches on a 3-axis machine.  Instead, multiple switches are wired together in various ways so that a smaller number of inputs are required.
de: Die ideale Verdrahtung für externe Schalter wäre ein Eingang pro Schalter.  Der PC-Parallelport bietet jedoch nur insgesamt 5 Eingänge, während es bei einer 3-Achsen-Maschine bis zu 9 Schalter gibt.  Stattdessen werden mehrere Schalter auf verschiedene Weise miteinander verdrahtet, so dass eine geringere Anzahl von Eingängen erforderlich ist.

note: type: Block title
en: Normally Closed Switches (N/C) wiring in series (simplified diagram)
de: Normalerweise geschlossene Schalter (engl. normally closed, N/C) in Reihe verdrahtet (vereinfachtes Diagramm)

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Normally Closed Switches
de: Normalerweise geschlossene Schalter

note: type: Block title
en: Normally Open Switches (N/O) wiring in parallel (simplified diagram)
de: Normalerweise offene Schalter (engl. normally open switches, N/O) parallel verdrahtet (vereinfachte Darstellung)

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Normally Open Switches
de: Normalerweise offene Schalter

note: type: Plain text
en: The following combinations of switches are permitted in StepConf:
de: Die folgenden Kombinationen von Schaltern sind in StepConf zulässig:

note: type: Plain text
en: Combine home switches for all axes
de: Kombinierte Referenzschalter für alle Achsen

note: type: Plain text
en: Combine limit switches for all axes
de: Kombinierte Endschalter für alle Achsen

note: type: Plain text
en: Combine both limit switches for one axis
de: Kombinieren beider Endschalter für eine Achse

note: type: Plain text
en: Combine both limit switches and the home switch for one axis
de: Kombinieren beider Endschalter und des Referenzschalters für eine Achse

note: type: Plain text
en: Combine one limit switch and the home switch for one axis
de: Kombinieren eines Endschalters und des Referenzschalters für eine Achse

note: type: Plain text
en: The last two combinations are also appropriate when the type contact + home is used.
de: Die letzten beiden Kombinationen sind auch geeignet, wenn der Typ Kontakt + Referenz verwendet wird.

note: type: Title =
en: Stepper Configuration(((Stepper Configuration)))
de: Schrittmotor Konfiguration(((Schrittmotor Konfiguration)))

note: type: Plain text
en: The preferred way to set up a standard stepper machine is with the Step Configuration Wizard. See the <<cha:stepconf-wizard,Stepper Configuration Wizard>> Chapter.
de: Die bevorzugte Methode zum Einrichten einer Standard-Maschine mit Schrittmotoren (engl. stepper machine) ist der Stepper-Konfigurations-Assistent (engl. stepper configuration wizard). Siehe das Kapitel <<cha:stepconf-wizard,Stepper-Konfigurations-Assistenz>>.

note: type: Plain text
en: This chapter describes some of the more common settings for manually setting up a stepper based system. These systems are using stepper motors with drives that accept step & direction signals.
de: In diesem Kapitel werden einige der gängigsten Einstellungen für die manuelle Einrichtung eines schrittmotorbasierten Systems beschrieben. Diese Systeme verwenden Schrittmotoren mit Antrieben, die Schritt- und Richtungssignale akzeptieren.

note: type: Plain text
en: It is one of the simpler setups, because the motors run open-loop (no feedback comes back from the motors), yet the system needs to be configured properly so the motors don't stall or lose steps.
de: Es ist eines der einfacheren Systeme, da die Motoren im offenen Regelkreis laufen (keine Rückmeldung von den Motoren), aber das System muss richtig konfiguriert werden, damit die Motoren nicht abgewürgt werden oder Schritte verlieren.

note: type: Plain text
en: Most of this chapter is based on a sample config released along with LinuxCNC. The config is called stepper_inch, and can be found by running the <<cha:running-emc,Configuration Picker>>.
de: Der größte Teil dieses Kapitels basiert auf einer Beispielkonfiguration, die zusammen mit LinuxCNC veröffentlicht wurde. Die Konfiguration heißt stepper_inch, und kann durch Ausführen der <<cha:running-emc,Konfigurations-Auswahl>> (engl. configuration picker) gefunden werden.

note: type: Title ==
en: Maximum step rate
de: Maximale Schrittgeschwindigkeit

note: type: Plain text
en: With software step generation, the maximum step rate is one step per two BASE_PERIODs for step-and-direction output. The maximum requested step rate is the product of an axis' MAX_VELOCITY and its INPUT_SCALE.  If the requested step rate is not attainable, following errors will occur, particularly during fast jogs and G0 moves.
de: Bei der Software-Schrittgenerierung beträgt die maximale Schrittrate einen Schritt pro zwei BASE_PERIODs für die Schritt- und Richtungsausgabe. Die maximal geforderte Schrittgeschwindigkeit ist das Produkt aus MAX_VELOCITY und INPUT_SCALE einer Achse.  Wenn die geforderte Schrittgeschwindigkeit nicht erreicht werden kann, kommt es zu folgenden Fehlern, insbesondere bei Eilgängen und G0-Bewegungen.

note: type: Plain text
en: If your stepper driver can accept quadrature input, use this mode.  With a quadrature signal, one step is possible for each BASE_PERIOD, doubling the maximum step rate.
de: Wenn Ihr Stepper-Treiber Quadratur-Eingänge akzeptieren kann, verwenden Sie diesen Modus.  Mit einem Quadratursignal ist ein Schritt pro BASE_PERIOD möglich, wodurch sich die maximale Schrittrate verdoppelt.

note: type: Plain text
en: The other remedies are to decrease one or more of: the BASE_PERIOD (setting this too low will cause the machine to become unresponsive or even lock up), the INPUT_SCALE (if you can select different step sizes on your stepper driver, change pulley ratios, or leadscrew pitch), or the MAX_VELOCITY and STEPGEN_MAXVEL.
de: Andere Abhilfemaßnahmen sind die Verringerung einer oder mehrerer der folgenden Einstellungen: BASE_PERIOD (eine zu niedrige Einstellung führt dazu, dass die Maschine nicht mehr reagiert oder sogar blockiert), INPUT_SCALE (wenn Sie verschiedene Schrittgrößen auf Ihrem Stepper-Treiber auswählen können, das Verhältnis der Riemenscheiben oder die Spindelsteigung ändern) oder MAX_VELOCITY und STEPGEN_MAXVEL.

note: type: Plain text
en: If no valid combination of BASE_PERIOD, INPUT_SCALE, and MAX_VELOCITY is acceptable, then consider using hardware step generation (such as with the LinuxCNC-supported Universal Stepper Controller, Mesa cards, and others).
de: Wenn keine gültige Kombination von BASE_PERIOD, INPUT_SCALE und MAX_VELOCITY akzeptabel ist, dann sollten Sie die Hardware-Schritterzeugung in Betracht ziehen (z. B. mit den von LinuxCNC unterstützten Universal Stepper Controller, Mesa-Karten und anderen).

note: type: Title ===
en: Pinout
de: Pinbelegung

note: type: Plain text
en: One of the major flaws in LinuxCNC was that you couldn't specify the pinout without recompiling the source code. LinuxCNC is far more flexible, and now (thanks to the Hardware Abstraction Layer) you can easily specify which signal goes where. See the <<cha:basic-hal-reference,HAL Basics>> for more information on HAL.
de: Einer der größten Mängel in LinuxCNC war, dass man die Pinbelegung ohne Neukompilierung des Quellcodes angeben konnte't. LinuxCNC ist viel flexibler, und jetzt (dank der Hardware Abstraction Layer) können Sie leicht angeben, welches Signal geht wo. Siehe die <cha:basic-hal-reference,HAL Grundlagen>> für weitere Informationen über HAL.

note: type: Plain text
en: As it is described in the HAL Introduction and tutorial, we have signals, pins and parameters inside the HAL.
de: Wie in der HAL-Einführung und im Tutorial beschrieben, haben wir Signale, Pins und Parameter innerhalb des HAL.

note: type: Plain text
en: We are presenting one axis to keep it short, all others are similar.
de: Wir stellen nur eine Achse vor, um sie kurz zu halten, alle anderen sind ähnlich.

note: type: Plain text
en: The ones relevant for our pinout are:
de: Die für unsere Pinbelegung relevanten sind:

note: type: delimited block -
en: signals: Xstep, Xdir & Xen
    pins: parport.0.pin-XX-out & parport.0.pin-XX-in
de: Signale: Xstep, Xdir & Xen
    Pins: parport.0.pin-XX-out & parport.0.pin-XX-in

note: type: Plain text
en: Depending on what you have chosen in your INI file you are using either standard_pinout.hal or xylotex_pinout.hal. These are two files that instruct the HAL how to link the various signals & pins. Further on we'll investigate the standard_pinout.hal.
de: Je nachdem, was Sie in Ihrer INI-Datei ausgewählt haben, verwenden Sie entweder standard_pinout.hal oder xylotex_pinout.hal. Dies sind zwei Dateien, die den HAL anweisen, wie die verschiedenen Signale & Pins zu verbinden sind. Weiter unten werden wir uns mit der standard_pinout.hal beschäftigen.

note: type: Title ===
en: Standard Pinout HAL
de: Standard-Pinbelegung HAL

note: type: Plain text
en: This file contains several HAL commands, and usually looks like this:
de: Diese Datei enthält mehrere HAL-Befehle und sieht normalerweise wie folgt aus:

note: type: delimited block -
en: # standard pinout config file for 3-axis steppers
    # using a parport for I/O
    #
    # first load the parport driver
    loadrt hal_parport cfg="0x0378"
    #
    # next connect the parport functions to threads
    # read inputs first
    addf parport.0.read base-thread 1
    # write outputs last
    addf parport.0.write base-thread -1
    #
    # finally connect physical pins to the signals
    net Xstep => parport.0.pin-03-out
    net Xdir  => parport.0.pin-02-out
    net Ystep => parport.0.pin-05-out
    net Ydir  => parport.0.pin-04-out
    net Zstep => parport.0.pin-07-out
    net Zdir  => parport.0.pin-06-out
de: # Standard-Pinout-Konfigurationsdatei für 3-Achsen-Stepper
    # Verwendung eines Parports für E/A
    #
    # zuerst den Parport-Treiber laden 
    loadrt hal_parport cfg="0x0378"
    #
    # als nächstes die Parport-Funktionen mit den Threads verbinden
    # lese zuerst die Eingänge
    addf parport.0.read base-thread 1
    # Ausgaben zuletzt schreiben
    addf parport.0.write base-thread -1
    #
    #  schließlich physische Pins mit den Signalen verbinden Netz
    net Xstep => parport.0.pin-03-out
    net Xdir  => parport.0.pin-02-out
    net Ystep => parport.0.pin-05-out
    net Ydir  => parport.0.pin-04-out
    net Zstep => parport.0.pin-07-out
    net Zdir  => parport.0.pin-06-out

note: type: delimited block -
en: # create a signal for the estop loopback
    net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in
de: # Signal für den Estop-Loopback erzeugen
    net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in

note: type: delimited block -
en: # create signals for tool loading loopback
    net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
    net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
de: # Signale für die Werkzeugladeschleife erzeugen
    net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
    net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed

note: type: delimited block -
en: # connect "spindle on" motion controller pin to a physical pin
    net spindle-on spindle.0.on => parport.0.pin-09-out
de: # "spindle on" Bewegungssteuerungs-Pin mit einem physischen Pin verbinden
    net spindle-on spindle.0.on => parport.0.pin-09-out

note: type: delimited block -
en: ###
    ### You might use something like this to enable chopper drives when machine ON
    ### the Xen signal is defined in core_stepper.hal
    ###
de: ###
    ### Sie könnten etwas wie das folgende verwenden, um Chopper-Antriebe zu aktivieren, wenn die Maschine eingeschaltet ist
    ### Das Xen-Signal wird in core_stepper.hal definiert.
    ###

note: type: delimited block -
en: ###
    ### If you want active low for this pin, invert it like this:
    ###
de: ###
    ### Wenn Sie für diesen Pin einen aktiven low-Wert wünschen, invertieren Sie ihn wie folgt:
    ###

note: type: delimited block -
en: ###
    ### A sample home switch on the X axis (axis 0).  make a signal,
    ### link the incoming parport pin to the signal, then link the signal
    ### to LinuxCNC's axis 0 home switch input pin.
    ###
de: ###
    ### Ein Beispiel für einen Referenzschalter (engl. home switch) an der X-Achse (Achse 0). Erzeugen Sie ein Signal,
    ### verbinden Sie den eingehenden Parport-Pin mit dem Signal, dann verbinden Sie das Signal
    ### mit dem LinuxCNC's Achse 0 Referenzschalter Eingabe-Pin.
    ###

note: type: delimited block -
en: ###
    ### Shared home switches all on one parallel port pin?
    ### that's ok, hook the same signal to all the axes, but be sure to
    ### set HOME_IS_SHARED and HOME_SEQUENCE in the INI file.
    ###
de: ###
    ### Geteilte Referenzschalter alle zu einem einzelnen parallel port Pin führen?
    ### Das ist ok, nutzen Sie das gleiche Signal an allen Achsen, aber stellen Sie sicher, dass Sie
    ### HOME_IS_SHARED und HOME_SEQUENCE in der INI-Datei. setzen.
    ###

note: type: delimited block -
en: ###
    ### Sample separate limit switches on the X axis (axis 0)
    ###
de: ###
    ### Beispiel für separate Endschalter auf der X-Achse (Achse 0)
    ###

note: type: delimited block -
en: ###
    ### Just like the shared home switches example, you can wire together
    ### limit switches.  Beware if you hit one, LinuxCNC will stop but can't tell
    ### you which switch/axis has faulted.  Use caution when recovering from this
    ### extreme position to avoid a hard stop.
    ###
de: ###
    ### Genau wie beim Beispiel der gemeinsamen Referenzschalter können Sie auch
    ### Endschalter miteinander verbinden.  Achten Sie darauf, wenn Sie einen auslösen, wird LinuxCNC stoppen,
    ### kann Ihnen aber nicht sagen, welche Schalter/Achse verantwortlich ist.  Seien Sie vorsichtig, wenn die den Betrieb
    ### von dieser Extremposition wieder aufnehmen.
    ###

note: type: Plain text
en: The lines starting with '#' are comments, and their only purpose is to guide the reader through the file.
de: Die Zeilen, die mit '#' beginnen, sind Kommentare, die lediglich dazu dienen, den Leser durch die Datei zu führen.

note: type: Plain text
en: There are a couple of operations that get executed when the standard_pinout.hal gets executed/interpreted:
de: Es gibt eine Reihe von Operationen, die ausgeführt werden, wenn die Datei standard_pinout.hal ausgeführt/interpretiert wird:

note: type: Plain text
en: The Parport driver gets loaded (see the <<cha:parport,Parport Chapter>> for details).
de: Der Parallel-Port (kurz Parport)-Treiber wird geladen (siehe das <<cha:parport,Parport Kapitel>> für Details).

note: type: Plain text
en: The read & write functions of the parport driver get assigned to the base thread footnote:[the fastest thread in the LinuxCNC setup, usually ther code gets executed every few tens of microseconds].
de: Die Lese- und Schreibfunktionen des Parport-Treibers werden dem Basis-Thread zugewiesen Fußnote:[der schnellste Thread im LinuxCNC-Setup, normalerweise wird der Code alle paar zehn Mikrosekunden ausgeführt].

note: type: Plain text
en: The step & direction signals for axes X, Y, Z get linked to pins on the parport.
de: Die Schritt & Richtungssignale für die Achsen X, Y, Z werden mit Pins auf dem Parport verbunden.

note: type: Plain text
en: Further I/O signals get connected (estop loopback, toolchanger loopback).
de: Weitere I/O-Signale werden angeschlossen (Notaus Loopback, Werkzeugwechsler Loopback).

note: type: Plain text
en: A spindle-on signal gets defined and linked to a parport pin.
de: Ein Spindel-Ein-Signal wird definiert und mit einem Parport-Pin verbunden.

note: type: Title ===
en: Changing the standard_pinout.hal
de: Ändern der Datei standard_pinout.hal

note: type: Plain text
en: If you want to change the standard_pinout.hal file, all you need is a text editor. Open the file and locate the parts you want to change.
de: Wenn Sie die Datei standard_pinout.hal ändern möchten, benötigen Sie lediglich einen Texteditor. Öffnen Sie die Datei und suchen Sie die Teile, die Sie ändern möchten.

note: type: Plain text
en: If you want for example to change the pin for the X-axis Step & Directions signals, all you need to do is to change the number in the 'parport.0.pin-XX-out' name:
de: Wenn Sie z.B. den Pin für die X-Achse Step & Directions (engl. für Schritt & Richtung) Signale ändern wollen, müssen Sie nur die Nummer im 'parport.0.pin-XX-out' Namen ändern:

note: type: Plain text
en: can be changed to:
de: kann geändert werden in:

note: type: Plain text
en: or basically any other 'out' pin you like.
de: oder grundsätzlich jeden andere 'out' Pin, die Sie mögen.

note: type: Plain text
en: Hint: make sure you don't have more than one signal connected to the same pin.
de: Tipp: Achten Sie darauf, dass Sie nicht mehr als ein Signal an denselben Pin anschließen.

note: type: Title ===
en: Changing polarity of a signal
de: Ändern der Polarität eines Signals

note: type: Plain text
en: If external hardware expects an "active low" signal, set the corresponding '-invert' parameter. For instance, to invert the spindle control signal:
de: Wenn externe Hardware ein "active low" Signal erwartet, setzen Sie den entsprechenden '-invert' Parameter. Zum Beispiel, um das Spindelsteuersignal zu invertieren:

note: type: Title ===
en: Adding PWM Spindle Speed Control
de: Hinzufügen einer PWM-Spindeldrehzahlregelung

note: type: Plain text
en: If your spindle can be controlled by a PWM signal, use the 'pwmgen' component to create the signal:
de: Wenn Ihre Spindel durch ein PWM-Signal gesteuert werden kann, verwenden Sie die Komponente „pwmgen“, um das Signal zu erzeugen:

note: type: Plain text
en: This assumes that the spindle controller's response to PWM is simple: 0% PWM gives 0 RPM, 10% PWM gives 180 RPM, etc. If there is a minimum PWM required to get the spindle to turn, follow the example in the 'nist-lathe' sample configuration to use a 'scale' component.
de: Dies setzt voraus, dass die Spindelsteuerung einfach auf PWM reagiert: 0 % PWM ergibt 0 U/min, 10 % PWM ergibt 180 U/min, usw. Wenn eine Mindest-PWM erforderlich ist, um die Spindel zum Drehen zu bringen, folgen Sie dem Beispiel in der Beispielkonfiguration 'nist-lathe' und verwenden Sie eine 'scale' Komponente.

note: type: Title ===
en: Adding an enable signal
de: Hinzufügen eines Aktivierungssignals (engl. enable)

note: type: Plain text
en: Some amplifiers (drives) require an enable signal before they accept and command movement of the motors. For this reason there are already defined signals called 'Xen', 'Yen', 'Zen'.
de: Einige Verstärker (Antriebe) benötigen ein Freigabesignal, bevor sie die Bewegung der Motoren akzeptieren und befehlen. Aus diesem Grund gibt es bereits definierte Signale namens 'Xen', 'Yen', 'Zen'.

note: type: Plain text
en: To connect them use the following example:
de: Um sie zu verbinden, verwenden Sie das folgende Beispiel:

note: type: Plain text
en: You can either have one single pin that enables all drives; or several, depending on the setup you have. Note, however, that usually when one axis faults, all the other drives will be disabled as well, so having only one enable signal / pin for all drives is a common practice.
de: Sie können entweder einen einzigen Pin haben, der alle Antriebe aktiviert, oder mehrere, je nach Ihrer Konfiguration. Beachten Sie jedoch, dass bei einer Störung einer Achse in der Regel auch alle anderen Antriebe deaktiviert werden, so dass nur ein Freigabesignal / Pin für alle Antriebe eine gängige Praxis ist.

note: type: Title ===
en: External ESTOP button
de: Externe NOTAUS (engl, ESTOP)-Taste

note: type: Plain text
en: The standard_pinout.hal file assumes no external ESTOP button. For more information on an external E-Stop see the estop_latch man page.
de: Die Datei standard_pinout.hal geht davon aus, dass keine externe ESTOP-Taste vorhanden ist. Weitere Informationen über einen externen Not-Aus-Schalter finden Sie in der Manpage estop_latch.

note: type: Title =
en: Stepper Diagnostics(((Stepper Diagnostics)))
de: Stepper-Diagnose(((Stepper-Diagnose)))

note: type: Plain text
en: If what you get is not what you expect many times you just got some experience. Learning from the experience increases your understanding of the whole. Diagnosing problems is best done by divide and conquer.  By this I mean if you can remove 1/2 of the variables from the equation each time you will find the problem the fastest. In the real world this is not always the case, but it's usually a good place to start.
de: Wenn das, was Sie bekommen, nicht das ist, was Sie erwarten, haben Sie oft nur eine Erfahrung gemacht. Wenn man aus den Erfahrungen lernt, versteht man das Ganze besser. Die Diagnose von Problemen erfolgt am besten durch "Teilen und Herrschen".  Damit ist gemeint, dass sich das Problem am schnellsten finden lässt, wenn man jedes Mal 1/2 der Variablen aus der Gleichung entfernen kann. In der realen Welt ist dies nicht immer der Fall, aber es ist normalerweise ein guter Ausgangspunkt.

note: type: Title ==
en: Common Problems
de: Häufige Probleme

note: type: Title ===
en: Stepper Moves One Step
de: Stepper bewegt sich einen Schritt

note: type: Plain text
en: The most common reason in a new installation for a stepper motor not to move is that the step and direction signals are exchanged. If you press the jog forward and jog backward keys, alternately , and the stepper moves one step each time, and in the same direction, there is your clue.
de: Der häufigste Grund, warum sich ein Schrittmotor bei einer Neuinstallation nicht bewegt, ist, dass die Schritt- und Richtungssignale vertauscht sind. Wenn Sie die Tasten "Tippen vorwärts" und "Tippen rückwärts" abwechselnd drücken und der Schrittmotor sich jedes Mal um einen Schritt und in dieselbe Richtung bewegt, haben Sie einen Anhaltspunkt.

note: type: Title ===
en: No Steppers Move
de: Keine Stepper bewegen sich

note: type: Plain text
en: Many drives have an enable pin or need a charge pump to enable the output.
de: Viele Laufwerke haben einen Freigabe-Pin oder benötigen eine Ladungspumpe, um den Ausgang zu aktivieren.

note: type: Title ===
en: Distance Not Correct
de: Abstand nicht korrekt

note: type: Plain text
en: If you command the axis to move a specific distance and it does not move that distance, then your scale setting is wrong.
de: Wenn Sie der Achse befehlen, sich um eine bestimmte Strecke zu bewegen, und sie sich nicht um diese Strecke bewegt, dann ist Ihre Maßstabseinstellung falsch.

note: type: Title ==
en: Error Messages
de: Fehlermeldungen

note: type: Title ===
en: Following Error
de: Folgender Fehler

note: type: Plain text
en: The concept of a following error is strange when talking about stepper motors. Since they are an open loop system, there is no position feedback to let you know if you actually are out of range. LinuxCNC calculates if it can keep up with the motion called for, and if not, then it gives a following error. Following errors usually are the result of one of the following on stepper systems.
de: Das Konzept des Schleppfehlers ist seltsam, wenn es um Schrittmotoren geht. Da sie ein Open-Loop-System sind, gibt es keine Positionsrückmeldung, um Sie wissen zu lassen, wenn Sie tatsächlich außerhalb des Bereichs sind. LinuxCNC berechnet, ob es mit der Bewegung mithalten kann, und wenn nicht, dann gibt es einen der folgenden Fehler. Folgende Fehler sind in der Regel das Ergebnis einer der folgenden auf Stepper-Systeme.

note: type: Plain text
en: FERROR too small
de: FERROR zu klein (engl. FERROR too small)

note: type: Plain text
en: MIN_FERROR too small
de: MIN_FERROR zu klein (engl. MIN_FERROR too small)

note: type: Plain text
en: MAX_VELOCITY too fast
de: MAX_VELOCITY zu schnell (engl. MAX_VELOCITY too fast)

note: type: Plain text
en: MAX_ACCELERATION too fast
de: MAX_ACCELERATION zu schnell (engl. MAX_ACCELERATION too fast)

note: type: Plain text
en: BASE_PERIOD set too long
de: BASE_PERIOD zu lang eingestellt (engl. BASE_PERIOD set too long)

note: type: Plain text
en: Backlash added to an axis
de: Zu einer Achse hinzugefügtes Umkehrspiel (engl. Backlash added to an axis)

note: type: Plain text
en: Any of the above can cause the real-time pulsing to not be able to keep up the requested step rate. This can happen if you didn't run the latency test long enough to get a good number to plug into the Stepconf Wizard, or if you set the Maximum Velocity or Maximum Acceleration too high.
de: Jeder der oben genannten Punkte kann dazu führen, dass das Echtzeit-Pulsing nicht in der Lage ist, die geforderte Schrittrate einzuhalten. Dies kann passieren, wenn Sie den Latenztest nicht lange genug durchgeführt haben, um einen guten Wert für den Stepconf Wizard zu erhalten, oder wenn Sie die maximale Geschwindigkeit oder die maximale Beschleunigung zu hoch eingestellt haben.

note: type: Plain text
en: If you added backlash you need to increase the STEPGEN_MAXACCEL up to double the MAX_ACCELERATION in the AXIS section of the INI file for each axis you added backlash to. LinuxCNC uses "extra acceleration" at a reversal to take up the backlash. Without backlash correction, step generator acceleration can be just a few percent above the motion planner acceleration.
de: Wenn Sie Umkehrspiel hinzufügten, müssen Sie die STEPGEN_MAXACCEL bis zu doppelt so hoch wie die MAX_ACCELERATION in dem AXIS Abschnitt der INI-Datei setzen für jede Achse, für die Sie ein Umkehrspiel erhöhten. LinuxCNC verwendet "zusätzliche Beschleunigung" bei Richtungswechsel, um das Umkehrspiel zu kompensieren. Ohne die Spiel-Korrektur kann die Beschleunigung des Schritt-Generators nur ein paar Prozent über der des Bewegungsplaners liegen.

note: type: Title ===
en: RTAPI Error
de: RTAPI-Fehler

note: type: Plain text
en: When you get this error:
de: Wenn Sie diese Fehlermeldung erhalten:

note: type: delimited block -
en: RTAPI: ERROR: Unexpected realtime delay on task n
de: RTAPI: ERROR: Unerwartete Echtzeitverzögerung bei Aufgabe n (engl. Unexpected realtime delay on task n)

note: type: Plain text
en: This error is generated by rtapi based on an indication from RTAI that a deadline was missed. It is usually an indication that the BASE_PERIOD in the [EMCMOT] section of the ini file is set too low. You should run the Latency Test for an extended period of time to see if you have any delays that would cause this problem. If you used the Stepconf Wizard, run it again, and test the Base Period Jitter again, and adjust the Base Period Maximum Jitter on the Basic Machine Information page. You might have to leave the test running for an extended period of time to find out if some hardware causes intermittent problems.
de: Dieser Fehler wird von rtapi auf der Grundlage eines Hinweises von RTAI erzeugt, dass eine Frist verpasst wurde. Dies ist in der Regel ein Hinweis darauf, dass die BASE_PERIOD im Abschnitt [EMCMOT] der ini-Datei zu niedrig eingestellt ist. Sie sollten den Latenztest über einen längeren Zeitraum durchführen, um festzustellen, ob bei Ihnen Verzögerungen auftreten, die dieses Problem verursachen könnten. Wenn Sie den Stepconf-Assistenten verwendet haben, führen Sie ihn erneut aus, testen Sie den Basisperioden-Jitter erneut und passen Sie den maximalen Basisperioden-Jitter auf der Seite mit den grundlegenden Maschineninformationen an. Möglicherweise müssen Sie den Test über einen längeren Zeitraum laufen lassen, um herauszufinden, ob eine bestimmte Hardware intermittierende Probleme verursacht.

note: type: Plain text
en: LinuxCNC tracks the number of CPU cycles between invocations of the real-time thread. If some element of your hardware is causing delays or your realtime threads are set too fast you will get this error.
de: LinuxCNC verfolgt die Anzahl der CPU-Zyklen zwischen den Aufrufen des Echtzeit-Threads. Wenn ein Element Ihrer Hardware verursacht Verzögerungen oder Ihre Echtzeit-Threads zu schnell eingestellt sind, werden Sie diesen Fehler erhalten.

note: type: Plain text
en: This error is only displayed once per session. If you had your BASE_PERIOD too low you could get hundreds of thousands of error messages per second if more than one was displayed.
de: Dieser Fehler wird nur einmal pro Sitzung angezeigt. Wenn Sie Ihre BASE_PERIOD zu niedrig angesetzt haben, könnten Sie Hunderttausende von Fehlermeldungen pro Sekunde erhalten, wenn mehr als eine angezeigt würde.

note: type: Title ==
en: Testing
de: Testen

note: type: Plain text
en: If you are seeing an axis ending up in the wrong location over multiple moves, it is likely that you do not have the correct direction hold times or step timing for your stepper drivers. Each direction change may be losing a step or more. If the motors are stalling, it is also possible you have either the MAX_ACCELERATION or MAX_VELOCITY set too high for that axis.
de: Wenn Sie feststellen, dass eine Achse über mehrere Bewegungen hinweg an der falschen Stelle landet, ist es wahrscheinlich, dass Sie die Richtungshaltezeiten oder das Schritt-Timing für Ihre Stepper-Treiber nicht korrekt eingestellt haben. Bei jedem Richtungswechsel kann ein Schritt oder mehr verloren gehen. Wenn die Motoren blockieren, ist es auch möglich, dass Sie entweder die MAX_ACCELERATION oder MAX_VELOCITY für diese Achse zu hoch eingestellt haben.

note: type: Plain text
en: The following program will test the Z axis configuration for proper setup. Copy the program to your \~/emc2/nc_files directory and name it TestZ.ngc or similar. Zero your machine with Z = 0.000 at the table top. Load and run the program. It will make 200 moves back and forth from 0.5 to 1". If you have a configuration issue, you will find that the final position will not end up 0.500" that the axis window is showing. To test another axis just replace the Z with your axis in the G0 lines.
de: Mit dem folgenden Programm wird die Konfiguration der Z-Achse auf ihre korrekte Einstellung geprüft. Kopieren Sie das Programm in Ihr Verzeichnis \~/emc2/nc_files und nennen Sie es TestZ.ngc oder ähnlich. Nullen Sie Ihre Maschine mit Z = 0,000 auf der Tischplatte. Laden Sie das Programm und führen Sie es aus. Es wird 200 Bewegungen von 0,5 bis 1" machen. Wenn Sie ein Konfigurationsproblem haben, werden Sie feststellen, dass die Endposition nicht bei 0,500" endet, wie es das Achsenfenster anzeigt. Um eine andere Achse zu testen, ersetzen Sie einfach die Z-Achse durch die gewünschte Achse in den G0-Zeilen.

note: type: delimited block -
en: ( test program to see if Z axis loses position )
    ( msg, test 1 of Z axis configuration )
    G20 #1000=100 ( loop 100 times )
    ( this loop has delays after moves )
    ( tests acc and velocity settings )
    o100 while [#1000]
       G0 Z1.000
       G4 P0.250
       G0 Z0.500
       G4 P0.250
       #1000 = [#1000 - 1]
    o100 endwhile
    ( msg, test 2 of Z axis configuration S to continue)
    M1 (stop here)
    #1000=100 ( loop 100 times )
    ( the next loop has no delays after moves )
    ( tests direction hold times on driver config and also max accel setting )
    o101 while [#1000]
       G0 Z1.000
       G0 Z0.500
       #1000 = [#1000 - 1]
    o101 endwhile
    ( msg, Done...Z should be exactly .5" above table )
    M2
de: ( Testprogramm, um zu sehen, ob die Z-Achse ihre Position verliert )
    ( msg, Test 1 der Z-Achsenkonfiguration )
    G20 #1000=100 ( iteriere 100 mal )
    ( diese Schleife hat Verzögerungen nach den Bewegungen )
    ( testet Beschleunigungs- und Geschwindigkeitseinstellungen )
    o100 while [#1000]
       G0 Z1.000
       G4 P0.250
       G0 Z0.500
       G4 P0.250
       #1000 = [#1000 - 1]
    o100 endwhile
    ( msg, Test 2 der Z-Achsenkonfiguration S zum Fortfahren)
    M1 (hier anhalten)
    #1000=100 ( Schleife 100 mal )
    ( die nächste Schleife hat keine Verzögerungen nach den Bewegungen )
    ( testet die Richtungshaltezeiten in der Treiberkonfiguration und auch die maximale Beschleunigungseinstellung )
    o101 while [#1000]
       G0 Z1.000
       G0 Z0.500
       #1000 = [#1000 - 1]
    o101 endwhile
    ( msg, Done...Z sollte genau .5" über dem Tisch liegen )
    M2

note: type: Title =
en: Stepper Quickstart
de: Stepper Schnellstart

note: type: Plain text
en: This section assumes you have done a standard install from the Live CD. After installation it is recommended that you connect the computer to the Internet and wait for the update manager to pop up and get the latest updates for LinuxCNC and Ubuntu before continuing.
de: Dieser Abschnitt geht davon aus, dass Sie eine Standardinstallation von der Live-CD durchgeführt haben. Nach der Installation wird empfohlen, den Computer mit dem Internet zu verbinden und darauf zu warten, dass der Update-Manager erscheint, um die neuesten Updates für LinuxCNC und Ubuntu zu erhalten, bevor Sie fortfahren.

note: type: Plain text
en: The Latency Test determines how late your computer processor is in responding to a request. Some hardware can interrupt the processing which could cause missed steps when running a CNC machine.  This is the first thing you need to do.  Follow the instructions <<sec:latency-test,here>> to run the latency test.
de: Der Latenztest bestimmt, wie spät Ihr Computerprozessor auf eine Anfrage reagiert. Manche Hardware kann die Verarbeitung unterbrechen, was beim Betrieb einer CNC-Maschine zu verpassten Schritten führen kann.  Dies ist der erste Schritt, den Sie tun müssen.  Folgen Sie den Anweisungen <sec:latency-test,hier>>, um den Latenztest durchzuführen.

note: type: Plain text
en: If you have a Sherline several predefined configurations are provided.  This is on the main menu CNC/EMC then pick the Sherline configuration that matches yours and save a copy.
de: Wenn Sie eine Sherline haben, sind mehrere vordefinierte Konfigurationen vorhanden.  Diese finden Sie im Hauptmenü CNC/EMC. Wählen Sie dann die Sherline-Konfiguration, die Ihrer entspricht, und speichern Sie eine Kopie.

note: type: Plain text
en: If you have a Xylotex you can skip the following sections and go straight to the <<cha:stepconf-wizard,Stepper Config Wizard>>.  LinuxCNC has provided quick setup for the Xylotex machines.
de: Wenn Sie eine Xylotex haben, können Sie die folgenden Abschnitte überspringen und gehen Sie direkt auf die <<cha:stepconf-wizard,Schrittmotor Konfigurations-Assistenz>> (engl. Stepper Config Wizard).  LinuxCNC hat schnelle Einrichtung für die Xylotex Maschinen zur Verfügung gestellt.

note: type: Title ==
en: Machine Information
de: Maschineninformationen

note: type: Plain text
en: Gather the information about each axis of your machine.
de: Sammeln Sie die Informationen über jede Achse Ihrer Maschine.

note: type: Plain text
en: Drive timing is in nano seconds. If you're unsure about the timing many popular drives are included in the stepper configuration wizard.  Note some newer Gecko drives have different timing than the original one. A http://wiki.linuxcnc.org/[list] is also on the user maintained LinuxCNC wiki site of more drives.
de: Das Timing des Antriebs ist in Nanosekunden angegeben. Wenn Sie sich über das Timing unsicher sind, so sind viele gängige Antriebe bereits durch den Stepper-Konfigurationsassistenten beschrieben.  Beachten Sie einige neuere Gecko-Antriebe ein anderes Timing haben als das Original. Ein http://wiki.linuxcnc.org/[Liste] ist auch auf der Benutzer gepflegt LinuxCNC Wiki-Site von mehr Laufwerke.

note: type: Table
en: Drive Type
de: Treiber-Typ

note: type: Table
en: Step Time (ns)
de: Schrittzeit (ns)

note: type: Table
en: Step Space (ns)
de: Schwittweite (ns)

note: type: Title ==
en: Pinout Information
de: Informationen zur Pinbelegung

note: type: Plain text
en: Gather the information about the connections from your machine to the PC parallel port.
de: Sammeln Sie die Informationen über die Verbindungen zwischen Ihrem Rechner und dem parallelen PC-Anschluss.

note: type: Table
en: Output Pin
de: Ausgangs-Pin

note: type: Table
en: Typ. Function
de: Typ. Funktion

note: type: Table
en: If Different
de: Wenn Unterschiedlich

note: type: Table
en: X Limit/Home
de: X End-/Referenzschalter

note: type: Table
en: X Step
de: X Schritt

note: type: Table
en: Y Limit/Home
de: Y End-/Referenzschalter

note: type: Table
en: X Direction
de: X Richtung

note: type: Table
en: Z Limit/Home
de: Z End-/Referenzschalter

note: type: Table
en: Y Step
de: Y-Schritt

note: type: Table
en: A Limit/Home
de: A End-/Referenzschalter

note: type: Table
en: Y Direction
de: Y-Richtung

note: type: Table
en: Probe In
de: Sonde In

note: type: Table
en: Z Step
de: Z Schritt

note: type: Table
en: Z Direction
de: Z Richtung

note: type: Table
en: A Step
de: A Schritt

note: type: Table
en: A Direction
de: A Richtung

note: type: Table
en: Spindle CW
de: Spindel Uhrzeigersinn

note: type: Table
en: Spindle PWM
de: Spindel PWM

note: type: Table
en: Amplifier Enable
de: Verstärker Aktivieren

note: type: Plain text
en: Note any pins not used should be set to Unused in the drop down box.  These can always be changed later by running Stepconf again.
de: Beachten Sie, dass alle nicht verwendeten Pins in der Dropdown-Box auf Unused gesetzt werden sollten.  Diese können später jederzeit geändert werden, indem Stepconf erneut ausgeführt wird.

note: type: Title ==
en: Mechanical Information
de: Mechanische Informationen

note: type: Plain text
en: Gather information on steps and gearing. The result of this is steps per user unit which is used for SCALE in the INI file.
de: Sammeln Sie Informationen über Schritte und Getriebe. Das Ergebnis sind Schritte pro Benutzereinheit, die für SCALE in der INI-Datei verwendet werden.

note: type: Table
en: Steps/Rev.
de: Schritte/Umdr.

note: type: Table
en: Micro Steps
de: Mikro-Schritte

note: type: Table
en: Motor Teeth
de: Motor Verzahnung

note: type: Table
en: Leadscrew Teeth
de: Leitspindel Zähne

note: type: Table
en: Leadscrew Pitch
de: Steigung der Leitspindel

note: type: Plain text
en: 'Steps per revolution' - is how many stepper-motor-steps it takes to turn the stepper motor one revolution.  Typical is 200.
de: 'Schritte pro Umdrehung' - gibt an, wie viele Schritte der Schrittmotor für eine Umdrehung benötigt.  Typisch sind 200.

note: type: Plain text
en: 'Micro Steps' - is how many steps the drive needs to move the stepper motor one full step.  If microstepping is not used, this number will be 1.  If microstepping is used the value will depend on the stepper drive hardware.
de: Micro Steps' - gibt an, wie viele Schritte der Antrieb benötigt, um den Schrittmotor einen vollen Schritt zu bewegen.  Wenn kein Microstepping verwendet wird, ist diese Zahl 1.  Wenn Microstepping verwendet wird, hängt der Wert von der Hardware des Schrittmotors ab.

note: type: Plain text
en: 'Motor Teeth and Leadscrew Teeth' - is if you have some reduction (gears, chain, timing belt, etc.) between the motor and the leadscrew.  If not, then set these both to 1.
de: 'Motor Teeth and Leadscrew Teeth' - ist, wenn Sie eine Untersetzung (Zahnrad, Kette, Zahnriemen usw.) zwischen Motor und Leitspindel haben.  Wenn nicht, setzen Sie beide auf 1.

note: type: Plain text
en: 'Leadscrew Pitch' - is how much movement occurs (in user units) in one leadscrew turn.  If you're setting up in inches then it is inches per turn.  If you're setting up in millimeters then it is millimeters per turn.
de: Leitspindelsteigung' - gibt an, wie viel Bewegung (in Benutzereinheiten) in einer Leitspindelumdrehung stattfindet.  Wenn Sie auf Zoll eingestellt sind, ist es Zoll pro Umdrehung.  Wenn Sie in Millimetern einstellen, sind es Millimeter pro Umdrehung.

note: type: Plain text
en: The net result you're looking for is how many CNC-output-steps it takes to move one user unit (inches or mm).
de: Das Nettoergebnis, nach dem Sie suchen, ist die Anzahl der CNC-Ausgabeschritte, die erforderlich sind, um eine Benutzereinheit (Zoll oder mm) zu bewegen.

note: type: Block title
en: Units inches
de: Einheiten Zoll

note: type: delimited block .
en: Stepper         = 200 steps per revolution
    Drive           =  10 micro steps per step
    Motor Teeth     =  20
    Leadscrew Teeth =  40
    Leadscrew Pitch =   0.2000 inches per turn
de: Stepper = 200 Schritte pro Umdrehung
    Antrieb = 10 Mikroschritte pro Schritt
    Motorverzahnung = 20
    Leitspindelzähne = 40
    Steigung der Leitspindel = 0,2000 Zoll pro Umdrehung

note: type: delimited block =
en: From the above information, the leadscrew moves 0.200 inches per turn.
de: Aus den obigen Angaben geht hervor, dass sich die Leitspindel um 0,200 Zoll pro Umdrehung bewegt.

note: type: delimited block =
en: The motor turns 2.000 times per 1 leadscrew turn.
de: Der Motor dreht sich 2.000 Mal pro 1 Spindeldrehung.

note: type: delimited block =
en: The drive takes 10 microstep inputs to make the stepper step once.
de: Der Antrieb benötigt 10 Mikroschritt-Eingänge, um den Schrittmotor einen vollen Schritt zu bewegen.

note: type: delimited block =
en: The drive needs 2000 steps to turn the stepper one revolution.
de: Der Antrieb benötigt 2000 Schritte für den Stepper für eine vollständige Umdrehung.

note: type: delimited block =
en: So the scale needed is:
de: Die erforderliche Skala lautet also:

note: latexmath:[ \frac{200 motor steps}{1 motor rev} \times \frac{10 microsteps}{1 motor step} \times \frac{2 motor revs}{1 leadscrew rev} \times \frac{1 leadscrew revs}{0.2000 inch} = \frac{20,000 microsteps}{inch} ] type: Block title
en: Units mm
de: Einheiten mm

note: type: delimited block .
en:     Stepper         = 200 steps per revolution
        Drive           =   8 micro steps per step
        Motor Teeth     =  30
        Leadscrew Teeth =  90
        Leadscrew Pitch =   5.00 mm per turn
de:     Stepper = 200 Schritte pro Umdrehung
        Antrieb = 8 Mikroschritte pro Schritt
        Motorverzahnung = 30
        Leitspindelzähne = 90
        Gewindespindelsteigung = 5,00 mm pro Umdrehung

note: type: delimited block =
en: From the above information:
de: Aus den oben genannten Informationen:

note: type: delimited block =
en: The leadscrew moves 5.00 mm per turn.
de: Die Leitspindel bewegt sich 5,00 mm pro Umdrehung.

note: type: delimited block =
en: The motor turns 3.000 times per 1 leadscrew turn.
de: Der Motor dreht sich 3.000 Mal pro 1 Umdrehung der Leitspindel.

note: type: delimited block =
en: The drive takes 8 microstep inputs to make the stepper step once.
de: Der Antrieb benötigt 8 Mikroschritt-Eingänge, um den Schrittmotor einmal zu bewegen.

note: type: delimited block =
en: The drive needs 1600 steps to turn the stepper one revolution.
de: Der Antrieb benötigt 1600 Schritte, um den Stepper eine Umdrehung zu drehen.

note: type: Plain text
en: The Axiom Measurement & Control AX5214H is a 48 channel digital I/O board. It plugs into an ISA bus, and resembles a pair of 8255 chips. In fact it may be a pair of 8255 chips, but I'm not sure. If/when someone starts a driver for an 8255 they should look at the ax5214 code, much of the work is already done.
de: Die Axiom Measurement & Control AX5214H ist eine digitale I/O-Karte mit 48 Kanälen. Sie wird an einen ISA-Bus angeschlossen und ähnelt einem Paar 8255-Chips. In der Tat könnte es ein Paar 8255-Chips sein, aber ich bin mir nicht sicher. Wenn jemand einen Treiber für einen 8255 entwickelt, sollte er sich den ax5214-Code ansehen, ein Großteil der Arbeit ist bereits erledigt.

note: type: Title ==
en: Installing
de: Installation

note: type: Plain text
en: The config string consists of a hex port address, followed by an 8 character string of "I" and "O" which sets groups of pins as inputs and outputs. The first two character set the direction of the first two 8 bit blocks of pins (0-7 and 8-15). The next two set blocks of 4 pins (16-19 and 20-23). The pattern then repeats, two more blocks of 8 bits (24-31 and 32-39) and two blocks of 4 bits (40-43 and 44-47). If more than one board is installed, the data for the second board follows the first. As an example, the string '"0x220 IIIOIIOO 0x300 OIOOIOIO"' installs drivers for two boards. The first board is at address 0x220, and has 36 inputs (0-19 and 24-39) and 12 outputs (20-23 and 40-47).  The second board is at address 0x300, and has 20 inputs (8-15, 24-31, and 40-43) and 28 outputs (0-7. 16-23, 32-39, and 44-47). Up to 8 boards may be used in one system.
de: Der Konfigurationsstring besteht aus einer hexadezimalen Anschlussadresse, gefolgt von einer 8-stelligen Zeichenfolge aus "I" und "O", die Gruppen von Pins als Eingänge und Ausgänge festlegt. Die ersten beiden Zeichen legen die Richtung der ersten beiden 8-Bit-Blöcke von Pins (0-7 und 8-15) fest. Die nächsten beiden legen Blöcke von 4 Stiften fest (16-19 und 20-23). Das Muster wiederholt sich dann, zwei weitere Blöcke von 8 Bits (24-31 und 32-39) und zwei Blöcke von 4 Bits (40-43 und 44-47). Wenn mehr als eine Karte installiert ist, folgen die Daten für die zweite Karte auf die erste. Ein Beispiel: Der String '"0x220 IIIOIIOO 0x300 OIOOIOIO"' installiert Treiber für zwei Karten. Die erste Karte befindet sich an Adresse 0x220 und hat 36 Eingänge (0-19 und 24-39) und 12 Ausgänge (20-23 und 40-47).  Die zweite Karte befindet sich an der Adresse 0x300 und hat 20 Eingänge (8-15, 24-31 und 40-43) und 28 Ausgänge (0-7, 16-23, 32-39 und 44-47). Es können bis zu 8 Karten in einem System verwendet werden.

note: type: Plain text
en: '(bit) ax5214.<boardnum>.out-<pinnum>' -- Drives a physical output pin.
de: '(bit) ax5214.<boardnum>.out-<pinnum>' -- Steuert einen physikalischen Ausgangspin.

note: type: Plain text
en: '(bit) ax5214.<boardnum>.in-<pinnum>' -- Tracks a physical input pin.
de: '(bit) ax5214.<boardnum>.in-<pinnum>' -- Verfolgt einen physikalischen Eingangspin.

note: type: Plain text
en: '(bit) ax5214.<boardnum>.in-<pinnum>-not' -- Tracks a physical input pin, inverted.
de: '(bit) ax5214.<boardnum>.in-<pinnum>-not' -- Verfolgt einen physikalischen Eingangspin, invertiert.

note: type: Plain text
en: For each pin, <boardnum> is the board number (starts at zero), and <pinnum> is the I/O channel number (0 to 47).
de: Für jeden Pin ist <boardnum> die Platinen-Nummer (beginnt bei Null) und <pinnum> die Nummer des E/A-Kanals (0 bis 47).

note: type: Plain text
en: Note that the driver assumes active LOW signals. This is so that modules such as OPTO-22 will work correctly (TRUE means output ON, or input energized). If the signals are being used directly without buffering or isolation the inversion needs to be accounted for. The in- HAL pin is TRUE if the physical pin is low (OPTO-22 module energized), and FALSE if the physical pin is high (OPTO-22 module off). The in-<pinnum>-not HAL pin is inverted -- it is FALSE if the physical pin is low (OPTO-22 module energized). By connecting a signal to one or the other, the user can determine the state of the input.
de: Beachten Sie, dass der Treiber von aktiven LOW-Signalen ausgeht. Dies ist erforderlich, damit Module wie OPTO-22 korrekt funktionieren (TRUE bedeutet Ausgang EIN oder Eingang unter Spannung). Wenn die Signale direkt ohne Pufferung oder Isolierung verwendet werden, muss die Inversion berücksichtigt werden. Der In-HAL-Pin ist TRUE, wenn der physikalische Pin niedrig ist (OPTO-22-Modul unter Spannung), und FALSE, wenn der physikalische Pin hoch ist (OPTO-22-Modul aus). Der in-<pinnum>-not HAL-Pin ist invertiert - er ist FALSE, wenn der physikalische Pin low ist (OPTO-22-Modul unter Spannung). Durch Anschluss eines Signals an den einen oder anderen Pin kann der Benutzer den Zustand des Eingangs bestimmen.

note: type: Plain text
en: '(bit) ax5214.<boardnum>.out-<pinnum>-invert' -- Inverts an output pin.
de: '(bit) ax5214.<boardnum>.out-<pinnum>-invert' -- Invertiert einen Ausgangspin.

note: type: Plain text
en: The -invert parameter determines whether an output pin is active high or active low. If -invert is FALSE, setting the HAL out- pin TRUE drives the physical pin low, turning ON an attached OPTO-22 module, and FALSE drives it high, turning OFF the OPTO-22 module. If -invert is TRUE, then setting the HAL out- pin TRUE will drive the physical pin high and turn the module OFF.
de: Der Parameter -invert bestimmt, ob ein Ausgangspin aktiv high oder aktiv low ist. Wenn -invert auf FALSE steht, wird der physikalische Pin durch das Setzen von HAL out- pin TRUE auf low gesetzt, wodurch ein angeschlossenes OPTO-22-Modul eingeschaltet wird, und durch FALSE auf high gesetzt, wodurch das OPTO-22-Modul ausgeschaltet wird. Wenn -invert TRUE ist, wird durch das Setzen des HAL out-Pins TRUE der physikalische Pin auf high gesetzt und das Modul ausgeschaltet.

note: type: Plain text
en: '(funct) ax5214.<boardnum>.read' -- Reads all digital inputs on one board.
de: '(funct) ax5214.<boardnum>.read' -- Liest alle digitalen Eingänge auf einer Karte.

note: type: Plain text
en: '(funct) ax5214.<boardnum>.write' -- Writes all digital outputs on one board.
de: '(funct) ax5214.<boardnum>.write' -- Schreibt alle digitalen Ausgänge auf einer Karte.

note: type: Title =
en: General Mechatronics Driver
de: General Mechatronics Treiber

note: type: Plain text
en: General Mechatronics GM6-PCI card based motion control system
de: General Mechatronics GM6-PCI-Kartenbasiertes Bewegungssteuerungssystem (engl. Motion-Control-System)

note: type: Plain text
en: For detailed description, please refer to the http://www.generalmechatronics.com/data/products/robot_controller/PCI_UserManual_eng.pdf[System integration manual].
de: Eine ausführliche Beschreibung finden Sie im http://www.generalmechatronics.com/data/products/robot_controller/PCI_UserManual_eng.pdf[Systemintegrationshandbuch].

note: type: Plain text
en: The GM6-PCI motion control card is based on an FPGA and a PCI bridge interface ASIC. A small automated manufacturing cell can be controlled, with a short time system integration procedure. The following figure demonstrating the typical connection of devices related to the control system:
de: Die GM6-PCI-Bewegungssteuerungskarte basiert auf einem FPGA und einem PCI-Bridge-Interface-ASIC. Eine kleine automatisierte Fertigungszelle kann mit einem kurzen Systemintegrationsverfahren gesteuert werden. Die folgende Abbildung zeigt den typischen Anschluss von Geräten im Zusammenhang mit dem Steuerungssystem:

note: type: Plain text
en: It can control up to six axis, each can be stepper or CAN bus interface or analogue servo.
de: Er kann bis zu sechs Achsen steuern, jede davon kann eine Schrittmotor- oder CAN-Bus-Schnittstelle oder ein analoger Servo sein.

note: type: Plain text
en: GPIO: Four time eight I/O pins are placed on standard flat cable headers.
de: GPIO: Vier bzw. acht E/A-Pins sind auf Standard-Flachkabelsteckern untergebracht.

note: type: Plain text
en: RS485 I/O expander modules: RS485 bus was designed for interfacing with compact DIN-rail mounted expander modules.  An 8-channel digital input, an 8-channel relay output and an analogue I/O (4x +/-10 Volts output and 8x +/-5 Volts input) modules are available now.  Up to 16 modules can be connected to the bus altogether.
de: RS485 E/A-Erweiterungsmodule: Der RS485-Bus wurde für den Anschluss von kompakten Erweiterungsmodulen für die DIN-Schienenmontage entwickelt.  Ein 8-Kanal-Digitaleingang, ein 8-Kanal-Relaisausgang und ein analoges I/O-Modul (4x +/-10 Volt Ausgang und 8x +/-5 Volt Eingang) sind jetzt verfügbar.  Insgesamt können bis zu 16 Module an den Bus angeschlossen werden.

note: type: Plain text
en: 20 optically isolated input pins: Six times three for the direct connection of two end switch and one homing sensor for each joint.  And additionally, two optically isolated E-stop inputs.
de: 20 optisch isolierte Eingangspins: Sechs mal drei für den direkten Anschluss von zwei Endschaltern und einem Referenzierungssensor für jedes Gelenk. Und zusätzlich zwei optisch isolierte Notaus-Eingänge.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: GM servo control system
de: GM-Servosteuerungssystem

note: type: Plain text
en: Installing:
de: Installation:

note: type: Plain text
en: During loading (or attempted loading) the driver prints some useful debugging messages to the kernel log, which can be viewed with dmesg.
de: Während des Ladens (oder versuchten Ladens) gibt der Treiber einige nützliche Debugging-Meldungen in das Kernel-Protokoll aus, die mit dmesg eingesehen werden können.

note: type: Plain text
en: Up to 3 boards may be used in one system.
de: Es können bis zu 3 Karten in einem System verwendet werden.

note: type: Plain text
en: The following connectors can be found on the GM6-PCI card:
de: Die folgenden Anschlüsse befinden sich auf der GM6-PCI-Karte:

note: type: Block title
en: GM6-PCI card connectors and LEDs(((pci-card connectors)))
de: GM6-PCI-Kartenanschlüsse und LEDs(((pci-card connectors)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: GM6-PCI card connectors and LEDs
de: GM6-PCI-Kartenanschlüsse und LEDs

note: type: Title ==
en: I/O connectors
de: I/O-Anschlüsse

note: type: Block title
en: Pin numbering of GPIO connectors(((pin-numbering-gpio)))
de: Pin-Nummerierung der GPIO-Anschlüsse(((pin-numbering-gpio)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Pin numbering of GPIO connectors
de: Pin-Nummerierung der GPIO-Anschlüsse

note: type: Block title
en: Pinout of GPIO connectors
de: Belegung der GPIO-Anschlüsse

note: type: Plain text
en: Each pin can be configured as digital input or output.  GM6-PCI motion control card has 4 general purpose I/O (GPIO) connectors, with eight configurable I/O on each.  Every GPIO pin and parameter name begins as follows:
de: Jeder Pin kann als digitaler Eingang oder Ausgang konfiguriert werden.  Die GM6-PCI-Bewegungssteuerungskarte verfügt über 4 GPIO-Anschlüsse (General Purpose I/O) mit jeweils acht konfigurierbaren E/A.  Jeder GPIO-Pin und Parametername beginnt wie folgt:

note: type: Plain text
en: where _<gpio_con_no>_ is from 0 to 3.
de: wobei _<gpio_con_no>_ zwischen 0 und 3 liegt.

note: type: Block title
en: State of the first pin of the first GPIO connector on the GM6-PCI card.
de: Zustand des ersten Pins des ersten GPIO-Anschlusses auf der GM6-PCI-Karte an.

note: type: Plain text
en: HAL pins are updated by function
de: HAL Pins werden aktualisiert durch Funktion

note: type: Block title
en: GPIO pins
de: GPIO-Pins

note: type: Table
en: Type and direction
de: Typ und Richtung

note: type: Table
en: Pin description
de: Pin-Beschreibung

note: type: Table
en: Input pin
de: Input-Pin (wörtlich Eingabe-Pin)

note: type: Table
en: Negated input pin
de: Negierter Eingangspin

note: type: Table
en: Output pin. Used only when GPIO is set to output.
de: Ausgangspin. Wird nur verwendet, wenn GPIO auf Ausgang eingestellt ist.

note: type: Block title
en: GPIO parameters
de: GPIO-Parameter

note: type: Table
en: Parameter description
de: Parameterbeschreibung

note: type: Table
en: When True, the corresponding GPIO is set to totem-pole output, other wise set to high impedance input.
de: Bei True wird der entsprechende GPIO auf Totem-Pol-Ausgang gesetzt, andernfalls auf hochohmigen Eingang.

note: type: Table
en: When True, pin value will be inverted. Used when pin is configured as output.
de: Wenn True, wird der Wert des Pins invertiert. Wird verwendet, wenn der Pin als Ausgang konfiguriert ist.

note: type: Title ==
en: Axis connectors
de: Achsen-Anschlüsse

note: type: Block title
en: Pin numbering of axis connectors(((pin-numbering-axis)))
de: Pin-Nummerierung der Achsenverbinder(((Pin-Nummerierung-Achse)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Pin numbering of axis connectors
de: Pin-Nummerierung der Achsenanschlüsse

note: type: Block title
en: Pinout of axis connectors
de: Belegung der Achsanschlüsse

note: type: Table
en: Encoder Index
de: Encoder-Index

note: type: Table
en: Fault
de: Fehler

note: type: Table
en: Power Enabled
de: Stromversorgung aktiviert (engl. power enabled)

note: type: Table
en: Step/CCW/B
de: Schritt/gegen Uhrzeigersinn/B

note: type: Table
en: Direction/CW/A
de: Richtung/Uhrzeigersin/A

note: type: Table
en: Ground (PC)
de: Masse (PC)

note: type: Table
en: DAC serial line
de: Serielle DAC-Leitung

note: type: Title ===
en: Axis interface modules
de: Achsen-Schnittstellenmodule

note: type: Plain text
en: Small sized DIN rail mounted interface modules gives easy way of connecting different types of servo modules to the axis connectors.  Seven different system configurations are presented in the http://www.generalmechatronics.com/data/products/robot_controller/PCI_UserManual_eng.pdf[System integration manual] for evaluating typical applications. Also the detailed description of the Axis modules can be found in the System integration manual.
de: Kleine, auf DIN-Schienen montierte Schnittstellenmodule ermöglichen den einfachen Anschluss verschiedener Servomodule an die Achsanschlüsse.  Sieben verschiedene Systemkonfigurationen werden im http://www.generalmechatronics.com/data/products/robot_controller/PCI_UserManual_eng.pdf[Systemintegrationshandbuch] vorgestellt, um typische Anwendungen zu evaluieren. Auch die detaillierte Beschreibung der Achsmodule ist im Systemintegrationshandbuch zu finden.

note: type: Plain text
en: For evaluating the appropriate servo-drive structure the modules have to be connected as the following block diagram shows:
de: Zur Ermittlung der geeigneten Servoantriebsstruktur sind die Module wie im folgenden Blockschaltbild dargestellt zu verbinden:

note: type: Block title
en: Servo axis interfaces(((axis-interface)))
de: Servo-Achsen-Schnittstellen (((Achsenschnittstelle)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Servo axis interfaces
de: Schnittstellen der Servoachsen

note: type: Plain text
en: The GM6-PCI motion control card has six encoder modules.  Each encoder module has three channels:
de: Die GM6-PCI-Bewegungssteuerungskarte verfügt über sechs Encoder-Module.  Jedes Gebermodul hat drei Kanäle:

note: type: Plain text
en: Channel-A
de: Kanal-A

note: type: Plain text
en: Channel-B
de: Kanal-B

note: type: Plain text
en: Channel-I (index)
de: Kanal-I (Index)

note: type: Plain text
en: It is able to count quadrature encoder signals or step/dir signals.  Each encoder module is connected to the inputs of the corresponding RJ50 axis connector.
de: Es ist in der Lage, Quadratur-Encoder-Signale oder Schritt-/Taktsignale zu zählen.  Jedes Encoder-Modul wird an die Eingänge des entsprechenden RJ50-Achsenanschlusses angeschlossen.

note: type: Plain text
en: Every encoder pin and parameter name begins as follows:
de: Jeder Encoder-Pin und Parametername beginnt wie folgt:

note: type: Plain text
en: where _<axis_no>_ is from 0 to 5.  For example, `gm.0.encoder.0.position` refers to the position of encoder module of axis 0.
de: wobei _<axis_no>_ zwischen 0 und 5 liegt. Beispielsweise bezieht sich „gm.0.encoder.0.position“ auf die Position des Encodermoduls von Achse 0.

note: type: Plain text
en: The GM6-PCI card counts the encoder signal independently from LinuxCNC.  HAL pins are updated by function:
de: Die GM6-PCI-Karte zählt das Gebersignal unabhängig von LinuxCNC.  HAL-Pins werden nach Funktion aktualisiert:

note: type: Block title
en: Encoder pins
de: Encoder-Pins

note: type: Table
en: When True, resets counts and position to zero.
de: Wenn True, setzt Anzahl und Position auf Null zurück.

note: type: Table
en: The raw count is the counts, but unaffected by reset or the index pulse.
de: Die "raw counts" ist dieselbe Zählung, aber unbeeinflusst von der Rückstellung oder dem Indeximpuls.

note: type: Plain text
en: Position in encoder counts.
de: Position in Encoder-Zählungen (engl. counts).

note: type: Table
en: Position in scaled units (=.counts/.position-scale).
de: Position in skalierten Einheiten (=.counts/.position-scale).

note: type: Table
en: When True, counts and position are rounded or reset (depends on index-mode) on next rising edge of channel-I.
    Every time position is reset because of Index, the `index-enabled` pin is set to 0 and remains 0 until connected HAL pin does not set it.
de: Wenn True, werden Zählerstände und Position bei der nächsten steigenden Flanke von Kanal-I gerundet oder zurückgesetzt (abhängig vom Index-Modus).
    Jedes Mal, wenn die Position aufgrund von Index zurückgesetzt wird, dann wird der `index-enabled`-Pin auf 0 gesetzt und bleibt 0, bis der angeschlossene HAL-Pin ihn nicht mehr setzt.

note: type: Table
en: Velocity in scaled units per second.
    GM encoder uses high frequency hardware timer to measure time between encoder pulses in order to calculate velocity.
    It greatly reduces quantization noise as compared to simply differentiating the position output.
    When the measured velocity is below min-speed-estimate, the velocity output is 0.
de: Geschwindigkeit in skalierten Einheiten pro Sekunde.
    Der GM-Encoder verwendet einen Hochfrequenz-Hardware-Timer zur Messung der Zeit zwischen den Encoderimpulsen, um die Geschwindigkeit zu berechnen.
    Dadurch wird das Quantisierungsrauschen im Vergleich zur einfachen Differenzierung des Positionsausgangs erheblich reduziert.
    Wenn die gemessene Geschwindigkeit unter der geschätzten Mindestgeschwindigkeit liegt, ist der Geschwindigkeitsausgang 0.

note: type: Block title
en: Encoder parameters
de: Encoder-Parameter

note: type: Table
en: Type and Read/Write
de: Typ und Lesen/Schreiben

note: type: Table
en: When True, the counter counts each rising edge of the channel-A input to the direction determined by channel-B.
    This is useful for counting the output of a single channel (non-quadrature) or step/dir signal sensor.
    When false, it counts in quadrature mode.
de: Bei True zählt der Zähler jede ansteigende Flanke des Kanal-A-Eingangs in die durch Kanal-B bestimmte Richtung.
    Dies ist nützlich für die Zählung des Ausgangs eines Einkanal- (Nicht-Quadratur-) oder Schritt-/Differenzsignalsensors.
    Wenn False, zählt er im Quadraturmodus.

note: type: Table
en: When True and .index-enabled is also true, .counts and .position
    are rounded (based on .counts-per-rev) at rising edge of channel-I.
    This is useful to correct few pulses error caused by noise.
    In round mode, it is essential to set .counts-per-rev parameter correctly.
    When .index-mode is False and .index-enabled is true, .counts and .position are reset at channel-I pulse.
de: Wenn True und .index-enabled ebenfalls True ist, werden .counts und .position
    gerundet (basierend auf .counts-per-rev) bei der steigenden Flanke von Kanal-I.
    Dies ist nützlich, um durch Rauschen verursachte Fehler bei wenigen Impulsen zu korrigieren.
    Im Rundungsmodus ist es wichtig, dass der Parameter .counts-per-rev korrekt eingestellt ist.
    Wenn .index-mode auf False und .index-enabled auf True steht, werden .counts und .position beim Kanal-I-Impuls zurückgesetzt.

note: type: Table
en: Determine how many counts are between two index pulses.
    It is used only in round mode, so when both .index-enabled and .index-mode parameters are True.
    GM encoder process encoder signal in 4x mode, so for example in case of a 500 CPR encoder it should be set to 2000.
    This parameter can be easily measured by setting .index-enabled True and .index-mode False (so that .counts resets
    at channel-I pulse), than move axis by hand and see the maximum magnitude of .counts pin in halmeter.
de: Bestimmt, wie viele Zählungen zwischen zwei Indeximpulsen liegen.
    Er wird nur im runden Modus verwendet, d.h. wenn die Parameter .index-enabled und .index-mode beide auf True stehen.
    GM-Encoder verarbeiten das Encodersignal im 4x-Modus, d.h. im Falle eines 500 CPR Encoders sollte er auf 2000 gesetzt werden.
    Dieser Parameter kann leicht gemessen werden, indem man .index-enabled True und .index-mode False setzt (so dass .counts
    bei Kanal-I-Impuls zurücksetzt), dann die Achse von Hand bewegen und die maximale Größe des .counts-Pins im Halmeter sehen.

note: type: Table
en: When True, channel-I event (reset or round) occur on falling edge of channel-I signal, otherwise on rising edge.
de: Wenn True, tritt das Kanal-I-Ereignis (Reset oder Round) bei der fallenden Flanke des Kanal-I-Signals ein, andernfalls bei der steigenden Flanke.

note: type: Table
en: Determine the minimum measured velocity magnitude at which .velocity will be set as nonzero.
    Setting this parameter too low will cause it to take a long time for velocity to go to zero after encoder pulses have stopped arriving.
de: Legen Sie den minimalen gemessenen Geschwindigkeitswert fest, bei dem .velocity als ungleich Null gesetzt wird.
    Wird dieser Parameter zu niedrig eingestellt, dauert es sehr lange, bis die Geschwindigkeit auf Null geht, nachdem keine Encoderimpulse mehr ankommen.

note: type: Table
en: Scale in counts per length unit. .position=.counts/.position-scale.
    For example, if position-scale is 2000, then 1000 counts of the encoder will produce a position of 0.5 units.
de: Skala in Zählungen pro Längeneinheit. .position=.counts/.position-scale.
    Wenn z. B. der Positionsmaßstab 2000 ist, dann ergeben 1000 Zählungen des Encoders eine Position von 0,5 Einheiten.

note: type: Title ==
en: HAL example
de: HAL-Beispiel

note: type: Block title
en: Setting encoder module of axis 0 to receive 500 CPR quadrature encoder signal and use reset to round position.
de: Einstellung des Gebermoduls der Achse 0 für den Empfang des 500 CPR Quadraturgebersignals und Verwendung der Rückstellung zum Runden der Position.

note: type: delimited block -
en: setp gm.0.encoder.0.counter-mode 0         # 0: quad, 1: stepDir
    setp gm.0.encoder.0.index-mode 1           # 0: reset pos at index, 1:round pos at index
    setp gm.0.encoder.0.counts-per-rev 2000    # GM process encoder in 4x mode, 4x500=2000
    setp gm.0.encoder.0.index-invert 0         #
    setp gm.0.encoder.0.min-speed-estimate 0.1 # in position unit/s
    setp gm.0.encoder.0.position-scale 20000   # 10 encoder rev cause the machine to move one position unit (10x2000)
de: setp gm.0.encoder.0.counter-mode 0 # 0: quad, 1: stepDir
    setp gm.0.encoder.0.index-mode 1 # 0: reset pos at index, 1:round pos at index
    setp gm.0.encoder.0.counts-per-rev 2000 # GM-Prozess-Encoder im 4x-Modus, 4x500=2000
    setp gm.0.encoder.0.index-invert 0 #
    setp gm.0.encoder.0.min-speed-estimate 0.1 # in Positionseinheit/s
    setp gm.0.encoder.0.position-scale 20000 # 10 Geberumdrehungen bewirken, dass sich die Maschine um eine Positionseinheit bewegt (10x2000)

note: type: Block title
en: Connect encoder position to LinuxCNC joint position feedback
de: Verbinden der Encoder Position mit LinuxCNC Gelenk-Position Feedback

note: type: Title ===
en: StepGen module
de: StepGen Modul

note: type: Plain text
en: The GM6-PCI motion control card has six StepGen modules, one for each joint.  Each module has two output signals. It can produce Step/Direction, Up/Down or Quadrature (A/B) pulses. Each StepGen module is connected to the pins of the corresponding RJ50 axis connector.
de: Die GM6-PCI-Bewegungssteuerungskarte verfügt über sechs StepGen-Module, eines für jedes Gelenk.  Jedes Modul hat zwei Ausgangssignale. Es kann Schritt/Richtung-, Auf/Ab- oder Quadraturimpulse (A/B) erzeugen. Jedes StepGen-Modul wird an die Stifte des entsprechenden RJ50-Achsenanschlusses angeschlossen.

note: type: Plain text
en: Every StepGen pin and parameter name begins as follows:
de: Jeder StepGen-Pin und Parametername beginnt wie folgt:

note: type: Plain text
en: where _<axis_no>_ is from 0 to 5.  For example, `gm.0.stepgen.0.position-cmd` refers to the position command of StepGen module of axis 0 on card 0.
de: wobei _<axis_no>_ zwischen 0 und 5 liegt.  Zum Beispiel bezieht sich 'gm.0.stepgen.0.position-cmd' auf den Positionsbefehl des StepGen-Moduls der Achse 0 auf Karte 0.

note: type: Plain text
en: The GM6-PCI card generates step pulses independently from LinuxCNC.  HAL pins are updated by function
de: Die GM6-PCI-Karte erzeugt unabhängig von LinuxCNC Schrittimpulse.  Die HAL-Pins werden geupdatet durch die Funktion

note: type: Block title
en: StepGen module pins
de: StepGen Modul Pins

note: type: Table
en: StepGen produces pulses only when this pin is true.
de: StepGen erzeugt nur dann Impulse, wenn dieser Pin "true" ist.

note: type: Table
en: Position feedback in counts unit.
de: Positionsrückmeldung in Zähleinheiten.

note: type: Table
en: Position feedback in position unit.
de: Positionsrückmeldung in Positionseinheit.

note: type: Table
en: Commanded position in position units. Used in position mode only.
de: Die befohlene Position in Positionseinheiten. Wird nur im Positionsmodus verwendet.

note: type: Table
en: Commanded velocity in position units per second. Used in velocity mode only.
de: Geforderte Geschwindigkeit in Positionseinheiten pro Sekunde. Wird nur im Geschwindigkeitsmodus verwendet.

note: type: Block title
en: StepGen module parameters
de: StepGen-Modul-Parameter

note: type: Table
en: When 0, module produces Step/Dir signal. When 1, it
      produces Up/Down step signals. And when it is 2, it
      produces quadrature output signals.
de: Bei 0 erzeugt das Modul ein Step/Dir-Signal. Wenn 1, erzeugt es
      Auf/Ab-Schritt-Signale. Und bei 2 erzeugt es
      Quadratur-Ausgangssignale.

note: type: Table
en: When True, .velocity-cmd is used as reference and velocityvcontrol calculate pulse rate output.
    When False, .position-cmd is used as reference and position control calculate pulse rate output.
de: Wenn True, wird .velocity-cmd als Referenz verwendet und velocityvcontrol berechnet die Pulsfrequenzausgabe.
    Bei False wird .position-cmd als Referenz verwendet und die Lageregelung berechnet den Impulsratenausgang.

note: type: Table
en: Invert the output of channel 1 (Step signal in StepDir mode)
de: Invertieren des Ausgangs von Kanal 1 (Step-Signal im StepDir-Modus)

note: type: Table
en: Invert the output of channel 2 (Dir signal in StepDir mode)
de: Invertierung des Ausgangs von Kanal 2 (Dir-Signal im StepDir-Modus)

note: type: Table
en: Maximum velocity in position units per second. If it is set to 0.0, .maxvel parameter is ignored.
de: Maximale Geschwindigkeit in Positionseinheiten pro Sekunde. Wenn er auf 0,0 gesetzt ist, wird der Parameter .maxvel ignoriert.

note: type: Table
en: Maximum acceleration in position units per second squared.
    mf it is set to 0.0, .maxaccel parameter is ignored.
de: Maximale Beschleunigung in Positionseinheiten pro Sekunde zum Quadrat.
    Wenn er auf 0,0 gesetzt ist, wird der Parameter .maxaccel ignoriert.

note: type: Table
en: Scale in steps per length unit.
de: Skala in Schritten pro Längeneinheit.

note: type: Table
en: Length of step pulse in nano-seconds.
de: Länge des Schritt-Pulses (engl. step pulse) in Nanosekunden.

note: type: Table
en: Minimum time between two step pulses in nano-seconds.
de: Mindestzeit zwischen zwei Schrittimpulsen in Nanosekunden.

note: type: Table
en: Minimum time between step pulse and direction change in nanoseconds.
de: Mindestzeit zwischen Schrittimpuls und Richtungswechsel in Nanosekunden.

note: type: Plain text
en: For evaluating the appropriate values see the timing diagrams below:
de: Zur Ermittlung der entsprechenden Werte siehe die nachstehenden Zeitdiagramme:

note: type: Block title
en: Reference signal timing diagrams(((refsig-timing-diagram)))
de: Referenzsignal-Zeitdiagramme(((Referenzsignal-Zeitdiagramme)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Reference signal timing diagrams
de: Zeitdiagramme für Referenzsignale

note: type: Block title
en: Setting StepGen module of axis 0 to generate 1000 step pulse per position unit
de: Einstellung des StepGen-Moduls der Achse 0 zur Erzeugung von 1000 Schrittimpulsen pro Positionseinheit

note: type: delimited block -
en: setp gm.0.stepgen.0.step-type 0         # 0:stepDir, 1:UpDown, 2:Quad
    setp gm.0.stepgen.0.control-type 0      # 0:Pos. control, 1:Vel. Control
    setp gm.0.stepgen.0.invert-step1 0
    setp gm.0.stepgen.0.invert-step2 0
    setp gm.0.stepgen.0.maxvel 0            # do not set maxvel for step
                                            # generator, let interpolator control it.
    setp gm.0.stepgen.0.maxaccel 0          # do not set max acceleration for
                                            # step generator, let interpolator control it.
    setp gm.0.stepgen.0.position-scale 1000 # 1000 step/position unit
    setp gm.0.stepgen.0.steplen 1000        # 1000 ns = 1 µs
    setp gm.0.stepgen.0.stepspace1000       # 1000 ns = 1 µs
    setp gm.0.stepgen.0.dirdelay 2000       # 2000 ns = 2 µs
de: setp gm.0.stepgen.0.step-type 0         # 0:stepDir, 1:UpDown, 2:Quad
    setp gm.0.stepgen.0.control-type 0      # 0:Pos. Kontrolle, 2:Geschw. Kontrolle
    setp gm.0.stepgen.0.invert-step1 0
    setp gm.0.stepgen.0.invert-step2 0
    setp gm.0.stepgen.0.maxvel 0            # do not set maxvel for step
                                            # generator, let interpolator control it.
    setp gm.0.stepgen.0.maxaccel 0          # do not set max acceleration for
                                            # step generator, let interpolator control it.
    setp gm.0.stepgen.0.position-scale 1000 # 1000 step/position unit
    setp gm.0.stepgen.0.steplen 1000        # 1000 ns = 1 µs
    setp gm.0.stepgen.0.stepspace1000       # 1000 ns = 1 µs
    setp gm.0.stepgen.0.dirdelay 2000       # 2000 ns = 2 µs

note: type: Block title
en: Connect StepGen to axis 0 position reference and enable pins
de: Verbinden Sie StepGen mit den Positionsreferenz- und Freigabepins der Achse 0

note: type: Title ===
en: Enable and Fault signals
de: Freigabe- und Fehlersignale

note: type: Plain text
en: The GM6-PCI motion control card has one enable output and one fault input HAL pins, both are connected to each RJ50 axis connector and to the CAN connector.
de: Die GM6-PCI-Bewegungssteuerungskarte verfügt über einen HAL-Pin als Freigabeausgang und einen als Fehlereingang , die beide mit jedem RJ50-Achsenanschluss und dem CAN-Anschluss verbunden sind.

note: type: Plain text
en: HAL pins are updated by function:
de: HAL Pins werden durch Funktion aktualisiert:

note: type: Block title
en: Enable and Fault signal pins
de: Aktivierungs- und Fehlersignal-Pins

note: type: Table
en: If this pin is True, +
    * and Watch Dog Timer is not expired +
    * and there is no power fault +
    then power enable pins of axis- and CAN connectors are set to high, otherwise set to low.
de: Wenn dieser Pin True ist, +
    * und der Watch Dog Timer nicht abgelaufen ist +
    * und es liegt kein Stromfehler vor +
    dann werden die Power-Enable-Pins der Achsen- und CAN-Anschlüsse auf High gesetzt, ansonsten auf Low.

note: type: Table
en: Power fault input.
de: Stromausfall-Eingang.

note: type: Title ===
en: Axis DAC
de: Achsen-DAC

note: type: Plain text
en: The GM6-PCI motion control card has six serial axis DAC driver modules, one for each joint. Each module is connected to the pin of the corresponding RJ50 axis connector.  Every axis DAC pin and parameter name begins as follows:
de: Die GM6-PCI-Bewegungssteuerungskarte verfügt über sechs serielle Achsen-DAC-Treibermodule, eines für jedes Gelenk. Jedes Modul wird an den Pin des entsprechenden RJ50-Achsenanschlusses angeschlossen.  Jeder Achsen-DAC-Pin und Parametername beginnt wie folgt:

note: type: Plain text
en: where _<axis_no>_ is from 0 to 5.  For example, `gm.0.dac.0.value` refers to the output voltage of DAC module of axis 0.
de: wobei _<axis_no>_ zwischen 0 und 5 liegt.  Zum Beispiel bezieht sich 'gm.0.dac.0.value' auf die Ausgangsspannung des DAC-Moduls der Achse 0.

note: type: Block title
en: Axis DAC pins
de: Achsen DAC-Pins

note: type: Table
en: Value of DAC output in Volts.
de: Wert des DAC-Ausgangs in Volt.

note: type: Block title
en: Axis DAC parameters
de: Achsen-DAC-Parameter

note: type: Table
en: Offset is added to the value before the hardware is updated.
de: Der Offset wird zu dem Wert addiert, bevor die Hardware aktualisiert wird.

note: type: Table
en: Maximum output voltage of the hardware in Volts.
de: Maximale Ausgangsspannung der Hardware in Volt.

note: type: Table
en: .low-limit
de: .Untergrenze

note: type: Table
en: Minimum output voltage of the hardware in Volts.
de: Minimale Ausgangsspannung der Hardware in Volt.

note: type: Table
en: .invert-serial
de: .invert-seriell

note: type: Table
en: GM6-PCI card is communicating with DAC hardware via fast serial communication to highly reduce time delay compared to PWM.
    DAC module is recommended to be isolated which is negating serial communication line.
    In case of isolation, leave this parameter to default (0), while in case of none-isolation, set this parameter to 1.
de: Die GM6-PCI-Karte kommuniziert mit der DAC-Hardware über schnelle serielle Kommunikation, um die Zeitverzögerung im Vergleich zur PWM stark zu reduzieren.
    Es wird empfohlen, das DAC-Modul zu isolieren, wodurch die serielle Kommunikationsleitung negiert wird.
    Im Falle einer Isolierung lassen Sie diesen Parameter auf dem Standardwert (0), während Sie diesen Parameter im Falle einer Nicht-Isolierung auf 1 setzen.

note: type: Title ==
en: CAN-bus servo amplifiers
de: CAN-Bus-Servoverstärker

note: type: Plain text
en: The GM6-PCI motion control card has CAN module to drive CAN servo amplifiers.  Implementation of higher level protocols like CANopen is further development.  Currently GM produced power amplifiers has upper level driver which export pins and parameters to HAL.  They receive position reference and provide encoder feedback via CAN bus.
de: Die GM6-PCI Motion Control Karte verfügt über ein CAN-Modul zur Ansteuerung von CAN-Servoverstärkern. Die Implementierung von Protokollen auf höherer Ebene wie CANopen ist für eine zukünftige Entwicklung. Derzeit haben die von GM hergestellten Leistungsverstärker Treiber der oberen Ebene, die Pins und Parameter nach HAL exportieren. Sie empfangen Positionsreferenzen und liefern Encoder-Feedback über den CAN-Bus.

note: type: Plain text
en: The frames are standard (11 bit) ID frames, with 4 byte data length.  The BAUD rate is 1 Mbit/s.  The position command IDs for axis 0..5 are 0x10..0x15.  The position feedback IDs for axis 0..5 are 0x20..0x25.
de: Die Frames sind Standard-ID-Frames (11 Bit) mit einer Datenlänge von 4 Byte.  Die Baudrate beträgt 1 Mbit/s.  Die Positionsbefehls-IDs für Achse 0..5 sind 0x10..0x15.  Die Positionsrückmelde-IDs für Achse 0..5 sind 0x20..0x25.

note: type: Plain text
en: These configuration can be changed with the modification of hal_gm.c and recompiling LinuxCNC.
de: Diese Konfiguration kann mit der Änderung der hal_gm.c und Neukompilierung LinuxCNC geändert werden.

note: type: Plain text
en: Every CAN pin and parameter name begins as follows:
de: Jeder CAN-Pin- und Parametername beginnt wie folgt:

note: type: Plain text
en: where _<axis_no>_ is from 0 to 5.  For example, `gm.0.can-gm.0.position` refers to the output position of axis 0 in position units.
de: wobei _< axis_no >_ zwischen 0 und 5 liegt.  Zum Beispiel bezieht sich `gm.0.can-gm.0.position` auf die Ausgangsposition der Achse 0 in Positionseinheiten.

note: type: Block title
en: CAN module pins
de: CAN-Modul-Pins

note: type: Table
en: Enable sending position references.
de: Aktivieren das Senden von Positionsreferenzen.

note: type: Table
en: Commanded position in position units.
de: Befohlene Position in Positionseinheiten.

note: type: Table
en: Feed back position in position units.
de: Rückmeldung der Position in Positionseinheiten.

note: type: Block title
en: CAN module parameters
de: CAN-Modul-Parameter

note: type: Table
en: Scale in per length unit.
de: Maßstab in Längeneinheiten.

note: type: Title ==
en: Watchdog timer
de: Watchdog-Timer

note: type: Plain text
en: Watchdog timer resets at function:
de: Watchdog-Timer wird zurückgesetzt bei Funktion:

note: type: Block title
en: Watchdog pins
de: Watchdog-Pins

note: type: Table
en: Indicates that watchdog timer is expired.
de: Gibt an, dass der Watchdog-Zeitgeber abgelaufen ist.

note: type: Plain text
en: Watchdog timer overrun causes the set of power-enable to low in hardware.
de: Das Überschreiten des Watchdog-Timers führt dazu, dass das Power-Enable in der Hardware auf Low gesetzt wird.

note: type: Block title
en: Watchdog parameters
de: Watchdog-Parameter

note: type: Table
en: Enables watchdog timer. +
    It is strongly recommended to enable the watchdog timer,
    because it can disable all the servo amplifiers by pulling down all enable signals in case of a PC error.
de: Aktiviert den Watchdog-Timer. +
    Es wird dringend empfohlen, den Watchdog-Timer zu aktivieren,
    weil er im Falle eines PC-Fehlers alle Servoverstärker durch Herunterziehen aller Freigabesignale deaktivieren kann.

note: type: Table
en: Time interval in within the gm._<card_no>_.read function must be executed.
    The gm._<card_no>_.read is typically added to servo-thread,
    so watch timeout is typically set to 3 times of the servo period.
de: Zeitintervall, in dem die Funktion gm._<card_no>_.read ausgeführt werden muss.
    Die gm._<card_no>_.read wird typischerweise dem Servo-Thread hinzugefügt,
    daher wird der Watch-Timeout typischerweise auf das 3-fache der Servoperiode gesetzt.

note: type: Title ==
en: End-, homing- and E-stop switches
de: End-, Referenzpunkt- und Notaus-Schalter

note: type: Block title
en: Pin numbering of homing & end switch connector(((pin-numbering-endsw)))
de: Pin-Nummerierung des Anschlusses für Referenzfahrt und Endschalter(((pin-numbering-endsw)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Pin numbering of homing and end switch connector
de: Pin-Nummerierung des Anschlusses für Referenzfahrt und Endschalter

note: type: Block title
en: End- and homing switch connector pinout
de: Pinbelegung des End- und Referenzschalteranschlusses

note: type: Table
en: E-Stop 2
de: Notaus 2

note: type: Table
en: E-Stop 1
de: Notaus 1

note: type: Plain text
en: The GM6-PCI motion control card has two limit- and one homing switch input for each joint. All the names of these pins begin as follows:
de: Die GM6-PCI-Bewegungssteuerungskarte hat zwei Endschalter- und einen Referenzschaltereingang für jedes Gelenk. Die Namen dieser Pins beginnen wie folgt:

note: type: Plain text
en: where _<axis_no>_ is from 0 to 5.  For example, `gm.0.joint.0.home-sw-in` indicates the state of the axis 0 home switch.
de: wobei _<axis_no>_ zwischen 0 bis 5 liegt.  Beispiel: "gm.0.joint.0.home-sw-in" gibt den Zustand des Home-Schalters der Achse 0 an.

note: type: Block title
en: End- and homing switch pins
de: End- und Referenzschalter-Pins

note: type: Table
en: Home switch input
de: Eingang des Referenzschalters

note: type: Table
en: Negated home switch input
de: Negierter Referenzschaltereingang

note: type: Table
en: Negative limit switch input
de: Negativer Endschaltereingang

note: type: Table
en: Negated negative limit switch input
de: Negierter negativer Endschaltereingang

note: type: Table
en: Positive limit switch input
de: Positiver Endschaltereingang

note: type: Table
en: Negated positive limit switch input
de: Negierter positiver Endschaltereingang

note: type: Block title
en: E-stop switch parameters
de: Parameter des Notaus-Schalters

note: type: Table
en: Estop 0 input
de: Notaus0 Eingang

note: type: Table
en: Negated Estop 0 input
de: Negierter Notaus 0-Eingang

note: type: Table
en: Estop 1 input
de: Notaus 1 Eingang

note: type: Table
en: Negated Estop 1 input
de: Negierter Notaus 1-Eingang

note: type: Title ==
en: Status LEDs
de: Status-LEDs

note: type: Plain text
en: Color: Orange
de: Farbe: Orange

note: type: Plain text
en: Blink, during data communication.
de: Blinken während der Datenkommunikation.

note: type: Plain text
en: On, when any of the buffers are full - communication error.
de: Ein, wenn einer der Puffer voll ist - Kommunikationsfehler.

note: type: Plain text
en: Off, when no data communication.
de: Aus, wenn keine Datenkommunikation stattfindet.

note: type: Plain text
en: Blink, during initialization of modules on the bus
de: Blinken während der Initialisierung von Modulen auf dem Bus

note: type: Plain text
en: On, when the data communication is up between all initialized modules.
de: Ein, wenn die Datenkommunikation zwischen allen initialisierten Modulen hergestellt ist.

note: type: Plain text
en: Off, when any of the initialized modules dropped off because of an error.
de: Aus, wenn eines der initialisierten Module aufgrund eines Fehlers ausgefallen ist.

note: type: Plain text
en: Color: White
de: Farbe: Weiß

note: type: Plain text
en: Blink, when LinuxCNC is running.
de: Blinken, wenn LinuxCNC läuft.

note: type: Plain text
en: Otherwise off.
de: Sonst aus.

note: type: Title ===
en: Boot
de: Booten

note: type: Plain text
en: Color: Green
de: Farbe: Grün

note: type: Plain text
en: On, when system booted successfully.
de: Ein, wenn das System erfolgreich gebootet wurde.

note: type: Title ===
en: Error
de: Fehler

note: type: Plain text
en: Color: Red
de: Farbe: Rot

note: type: Plain text
en: Off, when there is no fault in the system.
de: Aus, wenn keine Störung im System vorliegt.

note: type: Plain text
en: Blink, when PCI communication error.
de: Blinkt, wenn ein PCI-Kommunikationsfehler vorliegt.

note: type: Plain text
en: On, when watchdog timer overflowed.
de: Ein, wenn der Watchdog-Timer übergelaufen ist.

note: type: Title ==
en: RS485 I/O expander modules
de: RS485 E/A-Erweiterungsmodule

note: type: Plain text
en: These modules were developed for expanding the I/O and function capability along an RS485 line of the GM6-PCI motion control card.
de: Diese Module wurden für die Erweiterung der E/A- und Funktionsfähigkeit entlang einer RS485-Linie der GM6-PCI Motion Control Karte entwickelt.

note: type: Plain text
en: Available module types:
de: Verfügbare Modultypen:

note: type: Plain text
en: 8-channel relay output module - gives eight NO-NC relay output on a three pole terminal connector for each channel.
de: 8-Kanal-Relaisausgangsmodul - bietet acht NO-NC-Relaisausgänge an einem dreipoligen Klemmenanschluss für jeden Kanal.

note: type: Plain text
en: 8-channel digital input module - gives eight optical isolated digital input pins.
de: 8-Kanal-Digitaleingangsmodul - bietet acht optisch isolierte digitale Eingangsstifte.

note: type: Plain text
en: 8 channel ADC and 4-channel DAC module - gives four digital-to-analogue converter outputs and eight analogue-to-digital inputs.  This module is also optically isolated from the GM6-PCI card.
de: 8-Kanal-ADC- und 4-Kanal-DAC-Modul - bietet vier Digital-Analog-Wandler-Ausgänge und acht Analog-Digital-Eingänge.  Auch dieses Modul ist von der GM6-PCI-Karte optisch isoliert.

note: type: Block title
en: Automatic node recognizing
de: Automatische Knotenerkennung

note: type: Plain text
en: Each node connected to the bus was recognized by the GM6-PCI card automatically.  During starting LinuxCNC, the driver export pins and parameters of all available modules automatically.
de: Jeder an den Bus angeschlossene Knoten wurde von der GM6-PCI-Karte automatisch erkannt.  Beim Start von LinuxCNC exportiert der Treiber automatisch Pins und Parameter aller verfügbaren Module.

note: type: Block title
en: Fault handling
de: Fehlerbehandlung

note: type: Plain text
en: If a module does not answer regularly the GM6-PCI card drops down the module.  If a module with output do not gets data with correct CRC regularly, the module switch to error state (green LED blinking), and turns all outputs to error state.
de: Wenn ein Modul nicht regelmäßig antwortet, fährt die GM6-PCI-Karte das Modul herunter.  Wenn ein Modul mit Ausgang nicht regelmäßig Daten mit korrektem CRC erhält, schaltet das Modul in den Fehlerzustand (grüne LED blinkt), und schaltet alle Ausgänge in den Fehlerzustand.

note: type: Block title
en: Connecting the nodes
de: Verbinden der Knoten

note: type: Plain text
en: The modules on the bus have to be connected in serial topology, with termination resistors on the end.  The start of the topology is the PCI card, and the end is the last module.
de: Die Module auf dem Bus müssen in serieller Topologie angeschlossen werden, mit Abschlusswiderständen am Ende.  Der Anfang der Topologie ist die PCI-Karte, und das Ende ist das letzte Modul.

note: type: Block title
en: Connecting the RS485 nodes to the GM6-PCI card(((connecting-rs485)))
de: Anschließen der RS485-Knoten an die GM6-PCI-Karte (((connecting-rs485)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Connecting the RS485 nodes to the GM6-PCI card
de: Anschluss der RS485-Knoten an die GM6-PCI-Karte

note: type: Block title
en: Addressing
de: Adressierung

note: type: Plain text
en: Each node on the bus has a 4 bit unique address that can be set with a red DIP switch.
de: Jeder Knoten am Bus hat eine eindeutige 4-Bit-Adresse, die mit einem roten DIP-Schalter eingestellt werden kann.

note: type: Block title
en: Status LED
de: Status-LED

note: type: Plain text
en: A green LED indicates the status of the module:
de: Eine grüne LED zeigt den Status des Moduls an:

note: type: Plain text
en: Blink, when the module is only powered, but not jet identified, or when module is dropped down.
de: Blinkt, wenn das Modul nur mit Strom versorgt, aber noch nicht erkannt wird, oder wenn das Modul fallengelassen wird.

note: type: Plain text
en: Off, during identification (computer is on, but LinuxCNC not started)
de: Aus, während der Identifizierung (Computer ist eingeschaltet, aber LinuxCNC nicht gestartet)

note: type: Plain text
en: On, when it communicates continuously.
de: Ein, wenn es kontinuierlich kommuniziert.

note: type: Title ===
en: Relay output module
de: Relais-Ausgangsmodul

note: type: Plain text
en: For pinout, connection and electrical charasteristics of the module, please refer to the http://www.generalmechatronics.com/data/products/robot_controller/PCI_UserManual_eng.pdf[System integration manual].
de: Informationen zu Pinbelegung, Anschluss und elektrischen Eigenschaften des Moduls finden Sie im http://www.generalmechatronics.com/data/products/robot_controller/PCI_UserManual_eng.pdf[Systemintegrationshandbuch].

note: type: Plain text
en: All the pins and parameters are updated by the following function:
de: Alle Pins und Parameter werden durch die folgende Funktion aktualisiert:

note: type: Plain text
en: It should be added to servo thread or other thread with larger period to avoid CPU overload.  Every RS485 module pin and parameter name begins as follows:
de: Es sollte dem Servo-Thread oder einem anderen Thread mit größerer Periode hinzugefügt werden, um eine CPU-Überlastung zu vermeiden.  Jeder RS485-Modul-Pin und Parametername beginnt wie folgt:

note: type: Plain text
en: where _<module ID>_ is from 00 to 15.
de: wobei _<Modul-ID>_ zwischen 00 und 15 liegt.

note: type: Block title
en: Relay output module pins
de: Pins des Relaisausgangsmoduls

note: type: Table
en: Output pin for relay
de: Ausgangspin für Relais

note: type: Block title
en: Relay output module parameters
de: Parameter des Relaisausgangsmoduls

note: type: Table
en: Negate relay output pin
de: Relais-Ausgangsstift negieren

note: type: delimited block -
en:   gm.0.rs485.0.relay-0   # First relay of the node.
    # gm.0                   # Identifies the first GM6-PCI motion control card (PCI card address = 0)
    #     .rs485.0           # Selects node with address 0 on the RS485 bus
    #             .relay-0   # Selects the first relay
de: gm.0.rs485.0.relay-0 # Erstes Relais des Knotens.
    #gm.0                    # Bedeutet die erste GM6-PCI-Bewegungssteuerungskarte (PCI-Kartenadresse = 0)
    #.      .rs485.0            # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus
    #.              .relay-0    # Auswahl des ersten Relais

note: type: Title ===
en: Digital input module
de: Digitales Eingangsmodul

note: type: Block title
en: Digital input output module pins
de: Pins des digitalen Eingangs-/Ausgangsmoduls

note: type: delimited block -
en:   gm.0.rs485.0.in-0   # First input of the node.
    # gm.0                # Identifies the first GM6-PCI motion control card (PCI card address = 0)
    #     .rs485.0        # Selects node with address 0 on the RS485 bus
    #             .in-0   # Selects the first digital input module
de: gm.0.rs485.0.in-0 # Erster Eingang des Knotens.
    # gm.0                 # Bedeutet die erste GM6-PCI-Bewegungssteuerungskarte (PCI-Kartenadresse = 0)
    #      .rs485.0         # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus
    #              .in-0    # Wählt das erste digitale Eingangsmodul

note: type: Title ===
en: DAC & ADC module
de: DAC & ADC-Modul

note: type: Block title
en: DAC & ADC module pins
de: DAC- & ADC-Modul-Pins

note: type: Table
en: Value of ADC input in Volts.
de: Wert des ADC-Eingangs in Volt.

note: type: Block title
en: DAC & ADC module parameters
de: Parameter des DAC- & ADC-Moduls

note: type: Table
en: The input voltage will be multiplied bymscale before being output to .adc- pin.
de: Die Eingangsspannung wird mit der Skalierung multipliziert, bevor sie an den .adc-Pin ausgegeben wird.

note: type: Table
en: Offset is subtracted from the hardware input voltage after the scale multiplier has been applied.
de: Der Offset wird von der Hardware-Eingangsspannung subtrahiert, nachdem der Skalenmultiplikator angewendet wurde.

note: type: delimited block -
en:   gm.0.rs485.0.adc-0   # First analogue channel of the node.
    # gm.0                 # Identifies the first GM6-PCI motion control card (PCI card address = 0)
    #     .rs485.0         # Selects node with address 0 on the RS485 bus
    #             .adc-0   # Selects the first analogue input of the module
de: gm.0.rs485.0.adc-0 # Erster Analogkanal des Knotens.
    # gm.0                  # Bedeutet die erste GM6-PCI-Bewegungssteuerungskarte (PCI-Kartenadresse = 0)
    #      .rs485.0          # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus
    #              .adc-0    # Wählt den ersten Analogeingang des Moduls

note: type: Title ===
en: Teach Pendant module
de: Teach Pendant Modul

note: type: Plain text
en: where _<module ID>_ is from 00 to 15.  Note that on the Teach Pendant module it cannot be changed, and pre-programmed as zero.  Upon request it can be delivered with firmware pre-programmed different ID.
de: wobei _<Modul-ID>_ zwischen 00 und 15 liegt.  Beachten Sie, dass sie beim Teach-Pendant-Modul nicht geändert werden kann und auf Null vorprogrammiert ist.  Auf Anfrage kann das Modul mit einer anderen, von der Firmware vorprogrammierten ID geliefert werden.

note: type: Block title
en: Teach Pendant module pins
de: Pins des Teach-Pendant-Moduls

note: type: Table
en: The raw count is the counts, but unaffected by reset.
de: Die rohen Zähldaten (engl. raw counts) ist die Zählung, die durch das Zurücksetzen nicht beeinflusst wird.

note: type: Table
en: Position in scaled units (=.enc-counts/.enc-position-scale).
de: Position in skalierten Einheiten (=.enc-counts/.enc-position-scale).

note: type: Block title
en: Teach Pendant module parameters
de: Parameter des Teach Pendant Moduls

note: type: Table
en: The input voltage will be multiplied by scale before being output to .adc- pin.
de: Die Eingangsspannung wird mit der Skalierung multipliziert, bevor sie an den .adc-Pin ausgegeben wird.

note: type: delimited block -
en:   gm.0.rs485.0.adc-0  # First analogue channel of the node.
    # gm.0                # Identifies the first GM6-PCI motion control card (PCI card address = 0)
    #     .rs485.0        # Selects node with address 0 on the RS485 bus
    #             .adc-0  # Selects the first analogue input of the module
de: gm.0.rs485.0.adc-0 # Erster Analogkanal des Knotens.
    # gm.0                 # Bedeutet die erste GM6-PCI-Bewegungssteuerungskarte (PCI-Kartenadresse = 0)
    #     .rs485.0         # Auswahl des Knotens mit der Adresse 0 auf dem RS485-Bus
    #             .adc-0  # Wählt den ersten Analogeingang des Moduls

note: type: Title ===
en: GM6-PCI card Errata
de: GM6-PCI-Karte Errata

note: type: Plain text
en: The revision number in this section refers to the revision of the GM6-PCI card device.
de: Die Revisionsnummer in diesem Abschnitt bezieht sich auf die Revision des GM6-PCI-Kartengeräts.

note: type: Plain text
en: Error: The PCI card do not boot, when Axis 1. END B switch is active (low).  Found on November 16, 2013.
de: Fehler: Die PCI-Karte bootet nicht, wenn der Schalter Axis 1. END B aktiv (low) ist.  Gefunden am 16. November 2013.

note: type: Plain text
en: Reason: This switch is connected to a boot setting pin of FPGA
de: Grund: Dieser Schalter ist mit einem Boot-Setting-Pin des FPGA verbunden

note: type: Plain text
en: Problem fix/workaround: Use other switch pin, or connect only normally open switch to this switch input pin.
de: Problemlösung/Workaround: Verwenden Sie einen anderen Schalterpin, oder schließen Sie nur einen normalerweise offenen Schalter an diesen Schaltereingangspin an.

note: type: Title =
en: GS2 VFD Driver(((GS2 VFD Driver)))
de: GS2 VFD-Treiber(((GS2 VFD-Treiber)))

note: type: Plain text
en: This is a userspace HAL program for the GS2 series of VFD's at Automation Direct. footnote:[In Europe the equivalent can be found under the brand name Omron.]
de: Dies ist ein Userspace-HAL-Programm für die GS2-Serie von VFD's bei Automation Direct. Fußnote:[In Europa kann das Äquivalent unter dem Markennamen Omron gefunden werden.]

note: type: Plain text
en: This component is loaded using the halcmd "loadusr" command:
de: Diese Komponente wird mit dem halcmd-Befehl "loadusr" geladen:

note: type: Plain text
en: The above command says: loadusr, wait for named to load, component gs2_vfd, named spindle-vfd.  The HAL `loadusr` command is described in the <<sub:hal-loadusr,loadusr>> chapter.
de: Der obige Befehl lautet: loadusr, wait for named to load, component gs2_vfd, named spindle-vfd.  Der HAL-Befehl "loadusr" ist im Kapitel <<sub:hal-loadusr,loadusr>> beschrieben.

note: type: Title ===
en: Command Line Options
de: Kommandozeilen-Optionen

note: type: Plain text
en: '-b' or '--bits _<n>_' (default: 8) Set number of data bits to _n_, where _n_ must be from 5 to 8 inclusive.
de: '-b' oder '--bits _<n>_' (Standard: 8) Setzt die Anzahl der Datenbits auf _n_, wobei _n_ von 5 bis einschließlich 8 reichen darf.

note: type: Plain text
en: '-d' or '--device <path>' (default: /dev/ttyS0) Set the file path to the serial device node to use.
de: '-d' oder '--device <path>' (Standard /dev/ttyS0) Legt den Dateipfad fest zum Ansprechen des seriellen Geräts.

note: type: Plain text
en: '-g' or '--debug' Turn on debugging messages. This will also set the verbose flag. Debug mode will cause all modbus messages to be printed in hex on the terminal.
de: '-g' oder '--debug' Schaltet Debug-Meldungen ein. Dadurch wird auch das Verbose-Flag gesetzt. Der Debug-Modus bewirkt, dass alle Modbus-Meldungen in Hexadezimalschrift auf dem Terminal ausgegeben werden.

note: type: Plain text
en: '-n' or '--name <string>' (default: gs2_vfd) Set the name of the HAL module. The HAL comp name will be set to <string>, and all pin and parameter names will begin with <string>.
de: '-n' oder '--name <string>' (Standard: gs2_vfd) Setzt den Namen des HAL-Moduls. Der HAL-Comp-Name wird auf <string> gesetzt, und alle Pin- und Parameternamen beginnen mit <string>.

note: type: Plain text
en: '-p' or '--parity {even,odd,none}' (default: odd) Set serial parity to even, odd, or none.
de: '-p' oder '--parity {even,odd,none}' (Voreinstellung: odd) Setzt die serielle Parität auf gerade (engl. even), ungerade (engl. odd) oder keine (engl. none).

note: type: Plain text
en: '-r' or '--rate _<n>_' (default: 38400) Set baud rate to _n_. It is an error if the rate is not one of the following: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.
de: '-r' oder '--rate _<n>_' (Voreinstellung 38400) Setzt die Baudrate auf _n_. Es ist ein Fehler, wenn die Rate nicht eine der folgenden ist: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.

note: type: Plain text
en: '-s' or '--stopbits {1,2}' (default: 1) Set serial stop bits to 1 or 2
de: '-s' oder '--stopbits {1,2}' (Voreinstellung: 1) Setzt die Anzahl von Stopbits auf 1 oder 2

note: type: Plain text
en: '-t' or '--target _<n>_' (default: 1) Set MODBUS target (slave) number. This must match the device number you set on the GS2.
de: '-t' oder '--target _<n>_' (Voreinstellung: 1) Legt die MODBUS-Zielnummer (slave) fest. Diese muss mit der Gerätenummer übereinstimmen, die Sie am GS2 eingestellt haben.

note: type: Plain text
en: '-v' or '--verbose' Turn on debug messages.
de: '-v' oder '--verbose' Schaltet Debug-Meldungen ein.

note: type: Plain text
en: '-A' or '--accel-seconds' _<n>_ (default: 10.0) Seconds to accelerate the spindle from 0 to max. RPM.
de: '-A' oder '--accel-seconds' _<n>_ (Voreinstellung: 10.0) Sekunden um die Spindel von 0 auf max. U/min (engl. RPM) zu beschleunigen.

note: type: Plain text
en: '-D' or '--decel-seconds' _<n>_ (default: 0.0) Seconds to decelerate the spindle from max. RPM to 0. If set to 0.0 the spindle will be allowed to coast to a stop without controlled deceleration.
de: '-D' oder '--decel-seconds' _<n>_ (Voreinstellung: 0.0) Sekunden, um die Spindel von max. U/min auf 0 abzubremsen. Bei einer Einstellung von 0.0 kann die Spindel ohne kontrollierte Abbremsung bis zum Stillstand ausrollen.

note: type: Plain text
en: '-R' or '--braking-resistor' This argument should be used when a braking resistor is installed on the GS2 VFD (see Appendix A of the GS2 manual).  It disables deceleration over-voltage stall prevention (see GS2 modbus Parameter 6.05), allowing the VFD to keep braking even in situations where the motor is regenerating high voltage. The regenerated voltage gets safely dumped into the braking resistor.
de: '-R' oder '--braking-resistor' (engl. für Bremswiderstand) Dieses Argument sollte verwendet werden, wenn ein Bremswiderstand am GS2-VFD installiert ist (siehe Anhang A des GS2-Handbuchs).  Es deaktiviert die Überspannungsabschaltung bei Verzögerung (siehe GS2 Modbus Parameter 6.05), so dass der Frequenzumrichter auch in Situationen, in denen der Motor eine hohe Spannung zurückspeist, weiter bremsen kann. Die rückgespeiste Spannung wird sicher in den Bremswiderstand abgeleitet.

note: type: Plain text
en: That if there are serial configuration errors, turning on verbose may result in a flood of timeout errors.
de: Bei seriellen Konfigurationsfehlern kann das Einschalten von verbose zu einer Flut von Timeout-Fehlern führen.

note: type: Plain text
en: With _<name>_ being "gs2_vfd" or the name given during loading with the `-n` option:
de: Dabei ist _<name>_ "gs2_vfd" oder der Name, der beim Laden mit der Option `-n` angegeben wurde:

note: type: Plain text
en: '_<name>_.DC-bus-volts' (float, out) DC bus voltage of the VFD
de: '_<name>_.DC-bus-volts' (float, out) Zwischenkreisspannung des VFD

note: type: Plain text
en: '_<name>_.at-speed' (bit, out) when drive is at commanded speed
de: '_<name>_.at-speed' (bit, out), wenn der Antrieb die befohlene Geschwindigkeit erreicht

note: type: Plain text
en: '_<name>_.err-reset' (bit, in) reset errors sent to VFD
de: '_<name>_.err-reset' (bit, in) Reset-Fehler, die an VFD gesendet werden

note: type: Plain text
en: '_<name>_.firmware-revision' (s32, out) from the VFD
de: '_<name>_.firmware-revision' (s32, out) vom VFD

note: type: Plain text
en: '_<name>_.frequency-command' (float, out) from the VFD
de: '_<name>_.frequency-command' (float, out) vom VFD

note: type: Plain text
en: '_<name>_.frequency-out' (float, out) from the VFD
de: '_<name>_.frequency-out' (float, out) aus dem VFD

note: type: Plain text
en: '_<name>_.is-stopped' (bit, out) when the VFD reports 0 Hz output
de: '_<name>_.is-stopped' (Bit, aus), wenn der Frequenzumrichter 0 Hz-Ausgang meldet

note: type: Plain text
en: '_<name>_.load-percentage' (float, out) from the VFD
de: '_<name>_.load-percentage' (float, out) vom VFD

note: type: Plain text
en: '_<name>_.motor-RPM' (float, out) from the VFD
de: '_<name>_.motor-RPM' (float, out) vom VFD

note: type: Plain text
en: '_<name>_.output-current' (float, out) from the VFD
de: '_<name>_.output-current' (float, out) vom VFD

note: type: Plain text
en: '_<name>_.output-voltage' (float, out) from the VFD
de: '_<name>_.Ausgangsspannung' (float, out) vom VFD

note: type: Plain text
en: '_<name>_.power-factor' (float, out) from the VFD
de: '_<name>_.power-factor' (float, out) vom VFD

note: type: Plain text
en: '_<name>_.scale-frequency' (float, out) from the VFD
de: '_<name>_.scale-frequency' (float, out) vom VFD

note: type: Plain text
en: '_<name>_.speed-command' (float, in) speed sent to VFD in RPM It is an error to send a speed faster than the Motor Max RPM as set in the VFD.
de: '_<name>_.speed-command' (float, in) an den VFD gesendete Geschwindigkeit in U/min. Es ist ein Fehler, eine Geschwindigkeit zu senden, die höher ist als die im VFD eingestellte Motor Max U/min (engl. RPM).

note: type: Plain text
en: '_<name>_.spindle-fwd' (bit, in) 1 for FWD and 0 for REV sent to VFD
de: '_<name>_.spindle-fwd' (bit, in) 1 für FWD (engl. kurz für forwärts) und 0 für REV (engl. kurz für rückwärts) an den VFD gesendet

note: type: Plain text
en: '_<name>_.spindle-rev' (bit, in) 1 for REV and 0 if off
de: '_<name>_.spindle-rev' (bit, in) 1 für REV und 0 wenn aus

note: type: Plain text
en: '_<name>_.spindle-on' (bit, in) 1 for ON and 0 for OFF sent to VFD
de: '_<name>_.spindle-on' (bit, in) 1 für EIN und 0 für AUS an VFD gesendet

note: type: Plain text
en: '_<name>_.status-1' (s32, out) Drive Status of the VFD (see the GS2 manual)
de: '_<name>_.status-1' (s32, out) Antriebsstatus des VFD (siehe GS2-Handbuch)

note: type: Plain text
en: '_<name>_.status-2' (s32, out) Drive Status of the VFD (see the GS2 manual)
de: '_<name>_.status-2' (s32, out) Laufwerksstatus des Frequenzumrichters (siehe GS2-Handbuch)

note: type: Plain text
en: The status value is a sum of all the bits that are on. So a 163 which means the drive is in the run mode is the sum of 3 (run) + 32 (freq set by serial) + 128 (operation set by serial).
de: Der Statuswert ist die Summe aller Bits, die eingeschaltet sind. So ist eine 163, die bedeutet, dass sich das Laufwerk im Betriebsmodus befindet, die Summe aus 3 (Betrieb) + 32 (über die serielle Schnittstelle eingestellte Frequenz) + 128 (über die serielle Schnittstelle eingestellter Betrieb).

note: type: Plain text
en: With _<name>_ being gs2_vfd or the name given during loading with the `-n` option:
de: Dabei ist _<name>_ gs2_vfd oder der Name, der beim Laden mit der Option `-n` angegeben wurde:

note: type: Plain text
en: '_<name>_.loop-time' (float, RW) how often the modbus is polled (default: 0.1)
de: '_<name>_.loop-time' (float, RW) wie oft der Modbus abgefragt wird (Standard: 0.1)

note: type: Plain text
en: '_<name>_.nameplate-HZ' (float, RW) Nameplate Hz of motor (default: 60)
de: '_<name>_.nameplate-HZ' (float, RW) Typenschild-Hz des Motors (Voreinstellung: 60)

note: type: Plain text
en: '_<name>_.nameplate-RPM' (float, RW) Nameplate RPM of motor (default: 1730)
de: '_<name>_.nameplate-RPM' (float, RW) Typenschild-Drehzahl des Motors in U/min (Voreinstellung: 1730)

note: type: Plain text
en: '_<name>_.retval' (s32, RW) the return value of an error in HAL
de: '_<name>_.retval' (s32, RW) der Rückgabewert eines Fehlers in HAL

note: type: Plain text
en: '_<name>_.tolerance' (s32, RW) speed tolerance (default: 0.01)
de: '_<name>_.tolerance' (s32, RW) Geschwindigkeitstoleranz (Voreinstellung: 0.01)

note: type: Plain text
en: '_<name>_.ack-delay' (s32, RW) number of read/write cycles before checking at-speed (default 2)
de: '_<name>_.ack-delay' (s32, RW) Anzahl der Lese-/Schreibzyklen vor der Überprüfung bei Geschwindigkeit (Voreinstellung: 2)

note: type: Plain text
en: For an example of using this component to drive a spindle see the <<cha:gs2-spindle,GS2 Spindle>> example.
de: Ein Beispiel für die Verwendung dieser Komponente zum Antreiben einer Spindel finden Sie im Beispiel <<cha:gs2-spindle,GS2 Spindel>>.

note: type: Title =
en: Mesa HostMot2 Driver
de: Mesa HostMot2-Treiber

note: type: Plain text
en: HostMot2 is an FPGA configuration developed by Mesa Electronics for their line of 'Anything I/O' motion control cards. The firmware is open source, portable and flexible. It can be configured (at compile-time)  with zero or more instances (an object created at runtime) of each of several Modules: encoders (quadrature counters), PWM generators, and step/dir generators. The firmware can be configured (at run-time) to connect each of these instances to pins on the I/O headers. I/O pins not driven by a Module instance revert to general-purpose bi-directional digital I/O.
de: HostMot2 ist eine FPGA-Konfiguration, die von Mesa Electronics für ihre 'Anything I/O'-Bewegungssteuerungskarten entwickelt wurde. Die Firmware ist quelloffen, portabel und flexibel. Sie kann (zur Kompilierzeit) mit null oder mehr Instanzen (ein zur Laufzeit erstelltes Objekt) von jedem der verschiedenen Module konfiguriert werden: Encoder (Quadraturzähler), PWM-Generatoren und Schritt-/Differenzgeneratoren. Die Firmware kann (zur Laufzeit) so konfiguriert werden, dass jede dieser Instanzen mit Pins an den E/A-Headern verbunden wird. Die nicht von einer Modulinstanz angesteuerten E/A-Pins werden zu allgemeinen bidirektionalen digitalen E/A Pins.

note: type: Title ==
en: Firmware Binaries
de: Firmware-Binärdateien

note: type: Block title
en: 50 Pin Header FPGA cards
de: 50 Pin Header FPGA-Karten

note: type: Plain text
en: Several pre-compiled HostMot2 firmware binaries are available for the different Anything I/O boards. (This list is incomplete, check the hostmot2-firmware distribution for up-to-date firmware lists.)
de: Mehrere vorkompilierte HostMot2-Firmware-Binärdateien sind für die verschiedenen Anything-I/O-Karten verfügbar. (Diese Liste ist unvollständig, schauen Sie in der hostmot2-firmware-Distribution nach aktuellen Firmware-Listen.)

note: type: Plain text
en: 3x20 (144 I/O pins): using hm2_pci module
de: 3x20 (144 E/A-Pins): mit hm2_pci-Modul

note: type: Plain text
en: 24-channel servo
de: 24-Kanal-Servo

note: type: Plain text
en: 16-channel servo plus 24 step/dir generators
de: 16-Kanal-Servo und 24 Schritt/Richtung (engl. step/dir)-Generatoren

note: type: Plain text
en: 5i22 (96 I/O pins): using hm2_pci module
de: 5i22 (96 E/A-Stifte): mit hm2_pci-Modul

note: type: Plain text
en: 16-channel servo
de: 16-Kanal-Servo

note: type: Plain text
en: 8-channel servo plus 24 step/dir generators
de: 8-Kanal-Servo plus 24 Step/Dir-Generatoren

note: type: Plain text
en: 5i20, 5i23, 4i65, 4i68 (72 I/O pins): using hm2_pci module
de: 5i20, 5i23, 4i65, 4i68 (72 E/A-Stifte): mit hm2_pci-Modul

note: type: Plain text
en: 12-channel servo
de: 12-Kanal-Servo

note: type: Plain text
en: 8-channel servo plus 4 step/dir generators
de: 8-Kanal-Servo plus 4 Step/Dir-Generatoren

note: type: Plain text
en: 4-channel servo plus 8 step/dir generators
de: 4-Kanal-Servo plus 8 Step/Dir-Generatoren

note: type: Plain text
en: 7i43 (48 I/O pins): using hm2_7i43 module
de: 7i43 (48 E/A-Stifte): Verwendung des Moduls hm2_7i43

note: type: Plain text
en: 8-channel servo (8 PWM generators & 8 encoders)
de: 8-Kanal-Servo (8 PWM-Generatoren und 8 Encoder)

note: type: Plain text
en: 4-channel servo plus 4 step/dir generators
de: 4-Kanal-Servo plus 4 Step/Dir-Generatoren

note: type: Block title
en: DB25 FPGA cards
de: DB25 FPGA-Karten

note: type: Plain text
en: The 5i25 Superport FPGA card is preprogrammed when purchased and does not need a firmware binary.
de: Die 5i25 Superport FPGA-Karte ist beim Kauf bereits vorprogrammiert und benötigt keine binäre Firmware.

note: type: Title ==
en: Installing Firmware
de: Installieren der Firmware

note: type: Plain text
en: Depending on how you installed LinuxCNC you may have to open the Synaptic Package Manager from the System menu and install the package for your Mesa card. The quickest way to find them is to do a search for 'hostmot2' in the Synaptic Package Manager. Mark the firmware for installation, then apply.
de: Je nachdem, wie Sie LinuxCNC installiert haben, müssen Sie möglicherweise den Synaptic Package Manager aus dem Systemmenü öffnen und das Paket für Ihre Mesa-Karte installieren. Der schnellste Weg, um sie zu finden, ist eine Suche nach "hostmot2" in der Synaptic Package Manager zu tun. Markieren Sie die Firmware für die Installation, und wenden Sie sie an.

note: type: Title ==
en: Loading HostMot2
de: Laden von HostMot2

note: type: Plain text
en: The LinuxCNC support for the HostMot2 firmware is split into a generic driver called 'hostmot2' and two low-level I/O drivers for the Anything I/O boards. The low-level I/O drivers are 'hm2_7i43' and 'hm2_pci' (for all the PCI- and PC-104/Plus-based Anything I/O boards). The hostmot2 driver must be loaded first, using a HAL command like this:
de: Die LinuxCNC-Unterstützung für die HostMot2-Firmware ist in einen generischen Treiber namens 'hostmot2' und zwei Low-Level-I/O-Treiber für die Anything-I/O-Karten aufgeteilt. Die Low-Level-I/O-Treiber sind 'hm2_7i43' und 'hm2_pci' (für alle PCI- und PC-104/Plus-basierten Anything-I/O-Karten). Der hostmot2-Treiber muss zuerst mit einem HAL-Befehl wie diesem geladen werden:

note: type: Plain text
en: See the hostmot2(9) man page for details.
de: Siehe die Manpage zu hostmot2(9) für Details.

note: type: Plain text
en: The hostmot2 driver by itself does nothing, it needs access to actual boards running the HostMot2 firmware. The low-level I/O drivers provide this access. The low-level I/O drivers are loaded with commands like this:
de: Der Hostmot2-Treiber für sich allein tut nichts, er braucht Zugang zu den tatsächlichen Boards, auf denen die HostMot2-Firmware läuft. Die Low-Level-I/O-Treiber stellen diesen Zugang zur Verfügung. Die Low-Level-I/O-Treiber werden mit Befehlen wie diesem geladen:

note: type: Plain text
en: The config parameters are described in the hostmot2 man page.
de: Die Konfigurationsparameter sind in der Manpage zu hostmot2 beschrieben.

note: type: Plain text
en: The HostMot2 firmware may include a watchdog Module; if it does, the hostmot2 driver will use it.
de: Die HostMot2-Firmware kann ein Watchdog-Modul enthalten; wenn dies der Fall ist, wird es vom Hostmot2-Treiber verwendet.

note: type: Plain text
en: The watchdog must be petted by LinuxCNC periodically or it will bite.  The hm2 write function (see below) pets the watchdog.
de: Der Watchdog muss von Zeit zu Zeit von LinuxCNC gestreichelt werden, sonst beißt er.  Die hm2 Schreibfunktion (siehe unten) streichelt den Watchdog.

note: type: Plain text
en: When the watchdog bites, all the board's I/O pins are disconnected from their Module instances and become high-impedance inputs (pulled high).  The state of the HostMot2 firmware modules is not disturbed (except for the configuration of the I/O Pins). Encoder instances keep counting quadrature pulses, and pwm- and step-generators keep generating signals (which are not relayed to the motors, because the I/O Pins have become inputs).
de: Wenn der Watchdog anspricht, werden alle E/A-Pins des Boards von ihren Modulinstanzen getrennt und werden zu hochohmigen Eingängen (hochgezogen).  Der Zustand der HostMot2-Firmware-Module wird nicht gestört (mit Ausnahme der Konfiguration der I/O-Pins). Die Encoder-Instanzen zählen weiterhin die Quadraturimpulse, und die Pwm- und Schrittgeneratoren erzeugen weiterhin Signale (die nicht an die Motoren weitergeleitet werden, da die I/O-Pins zu Eingängen geworden sind).

note: type: Plain text
en: Resetting the watchdog resets the I/O pins to the configuration chosen at load-time.
de: Durch das Zurücksetzen des Watchdogs werden die E/A-Pins auf die zum Zeitpunkt des Ladens gewählte Konfiguration zurückgesetzt.

note: type: Plain text
en: If the firmware includes a watchdog, the following HAL objects will be exported:
de: Wenn die Firmware einen Watchdog enthält, werden die folgenden HAL-Objekte exportiert:

note: type: Plain text
en: 'has_bit' - (bit i/o) True if the watchdog has bit, False if the watchdog has not bit. If the watchdog has bit and the has_bit bit is True, the user can reset it to False to resume operation.
de: has_bit' - (bit i/o) True, wenn der Watchdog ein Bit hat, False, wenn der Watchdog kein Bit hat. Wenn der Watchdog ein Bit hat und das has_bit-Bit True ist, kann der Benutzer es auf False zurücksetzen, um den Betrieb wieder aufzunehmen.

note: type: Plain text
en: 'timeout_ns' - (u32 read/write) Watchdog timeout, in nanoseconds.  This is initialized to 5,000,000 (5 milliseconds) at module load time.  If more than this amount of time passes between calls to the hm2 write function, the watchdog will bite.
de: timeout_ns' - (u32 read/write) Watchdog-Timeout, in Nanosekunden.  Dieser Wert wird beim Laden des Moduls auf 5.000.000 (5 Millisekunden) initialisiert.  Wenn zwischen den Aufrufen der hm2-Schreibfunktion mehr als diese Zeitspanne vergeht, wird der Watchdog aktiv.

note: type: Title ==
en: HostMot2 Functions
de: HostMot2-Funktionen

note: type: Plain text
en: 'hm2_<BoardType>.<BoardNum>.read' - Read all inputs, update input HAL pins.
de: 'hm2_<BoardType>.<BoardNum>.read' - Lesen aller Eingänge, Aktualisieren der Eingangs-HAL-Pins.

note: type: Plain text
en: 'hm2_<BoardType>.<BoardNum>.write' - Write all outputs.
de: 'hm2_<BoardType>.<BoardNum>.write' - Alle Ausgänge schreiben.

note: type: Plain text
en: 'hm2_<BoardType>.<BoardNum>.read_gpio' - Read the GPIO input pins only.  (This function is not available on the 7i43 due to limitations of the EPP bus.)
de: 'hm2_<BoardType>.<BoardNum>.read_gpio' - Liest nur die GPIO-Eingangsstifte.  (Diese Funktion ist auf der 7i43 aufgrund der Einschränkungen des EPP-Busses nicht verfügbar.)

note: type: Plain text
en: 'hm2_<BoardType>.<BoardNum>.write_gpio' - Write the GPIO control registers and output pins only.  (This function is not available on the 7i43 due to limitations of the EPP bus.)
de: 'hm2_<BoardType>.<BoardNum>.write_gpio' - Schreibt nur die GPIO-Steuerregister und Ausgangspins.  (Diese Funktion ist auf der 7i43 aufgrund der Einschränkungen des EPP-Busses nicht verfügbar.)

note: type: delimited block =
en: The above 'read_gpio' and 'write_gpio' functions should not normally be needed, since the GPIO bits are read and written along with everything else in the standard 'read' and 'write' functions above, which are normally run in the servo thread.
de: Die obigen Funktionen 'read_gpio' und 'write_gpio' sollten normalerweise nicht benötigt werden, da die GPIO-Bits zusammen mit allem anderen in den obigen Standardfunktionen 'read' und 'write' gelesen und geschrieben werden, die normalerweise im Servo-Thread ausgeführt werden.

note: type: delimited block =
en: The 'read_gpio' and 'write_gpio' functions were provided in case some very fast (frequently updated) I/O is needed. These functions should be run in the base thread. If you have need for this, please send an email and tell us about it, and what your application is.
de: Die Funktionen 'read_gpio' und 'write_gpio' wurden für den Fall bereitgestellt, dass eine sehr schnelle (häufig aktualisierte) E/A benötigt wird. Diese Funktionen sollten im Basis-Thread ausgeführt werden. Wenn Sie dies benötigen, senden Sie uns bitte eine E-Mail und teilen Sie uns mit, um welche Anwendung es sich handelt.

note: type: Title ==
en: Pinouts
de: Pinbelegungen

note: type: Plain text
en: The hostmot2 driver does not have a particular pinout. The pinout comes from the firmware that the hostmot2 driver sends to the Anything I/O board. Each firmware has different pinout, and the pinout depends on how many of the available encoders, pwmgens, and stepgens are used. To get a pinout list for your configuration after loading LinuxCNC in the terminal window type:
de: Der hostmot2-Treiber hat keine bestimmte Pinbelegung. Die Pinbelegung ergibt sich aus der Firmware, die der hostmot2-Treiber an die Anything I/O-Karte sendet. Jede Firmware hat eine andere Pinbelegung, und die Pinbelegung hängt davon ab, wie viele der verfügbaren Encoder, pwmgens und stepgens verwendet werden. Um eine Pinout-Liste für Ihre Konfiguration nach dem Laden von LinuxCNC im Terminalfenster zu erhalten, geben Sie ein:

note: type: Plain text
en: The resulting text file will contain lots of information as well as the pinout for the HostMot2 and any error and warning messages.
de: Die resultierende Textdatei enthält viele Informationen sowie die Pinbelegung für den HostMot2 und alle Fehler- und Warnmeldungen.

note: type: Plain text
en: To reduce the clutter by clearing the message buffer before loading LinuxCNC type the following in the terminal window:
de: Um das Durcheinander zu reduzieren, indem der Nachrichtenpuffer vor dem Laden von LinuxCNC gelöscht wird, geben Sie Folgendes in das Terminalfenster ein:

note: type: Plain text
en: Now when you run LinuxCNC and then do a 'dmesg > hm2.txt' in the terminal only the info from the time you loaded LinuxCNC will be in your file along with your pinout. The file will be in the current directory of the terminal window. Each line will contain the card name, the card number, the I/O Pin number, the connector and pin, and the usage. From this printout you will know the physical connections to your card based on your configuration.
de: Nun, wenn Sie LinuxCNC ausführen, erhalten SIe über 'dmesg > hm2.txt' im Terminal nur die Informationen seit der Zeit, die LinuxCNC läuft zusammen mit Ihrem Pinout. Die Datei wird im aktuellen Verzeichnis des Terminalfensters liegen. Jede Zeile enthält den Kartennamen, die Kartennummer, die E/A-Pin-Nummer, den Stecker und den Pin sowie die Verwendung. Anhand dieses Ausdrucks können Sie die physischen Verbindungen zu Ihrer Karte entsprechend Ihrer Konfiguration erkennen.

note: type: Plain text
en: An example of a 5i20 configuration:
de: Ein Beispiel für eine 5i20-Konfiguration:

note: type: Plain text
en: The above configuration produced this printout.
de: Die obige Konfiguration ergab diesen Ausdruck.

note: type: Plain text
en: That the I/O Pin nnn will correspond to the pin number shown on the HAL Configuration screen for GPIOs. Some of the StepGen, Encoder and PWMGen will also show up as GPIOs in the HAL Configuration screen.
de: Der I/O Pin nnn entspricht der Pin-Nummer, die auf dem HAL Configuration Bildschirm für GPIOs angezeigt wird. Einige der StepGen, Encoder und PWMGen werden auch als GPIOs im HAL-Konfigurationsbildschirm angezeigt.

note: type: Title ==
en: PIN Files
de: PIN-Dateien

note: type: Plain text
en: The default pinout is described in a .PIN file (human-readable text).  When you install a firmware package the .PIN files are installed in
de: Die Standard-Pinbelegung ist in einer .PIN-Datei (menschenlesbarer Text) beschrieben.  Wenn Sie ein Firmware-Paket installieren, werden die .PIN-Dateien in

note: type: Plain text
en: The selected firmware (.BIT file) and configuration is uploaded from the PC motherboard to the Mesa mothercard on LinuxCNC startup.  If you are using Run In Place, you must still install a hostmot2-firmware-<board> package. There is more information about firmware and configuration in the 'Configurations' section.
de: Die ausgewählte Firmware (.BIT-Datei) und Konfiguration wird beim Start von LinuxCNC von der PC-Hauptplatine auf die Mesa-Hauptplatine hochgeladen.  Wenn Sie Run In Place verwenden, müssen Sie noch ein hostmot2-firmware-<board> Paket installieren. Weitere Informationen über Firmware und Konfiguration finden Sie im Abschnitt 'Konfigurationen'.

note: type: Title ==
en: HAL Pins
de: HAL-Pins

note: type: Plain text
en: The HAL pins for each configuration can be seen by opening up 'Show HAL Configuration' from the Machine menu. All the HAL pins and parameters can be found there. The following figure is of the 5i20 configuration used above.
de: Die HAL-Pins für jede Konfiguration können durch Öffnen von 'Show HAL Configuration' aus dem Menü Maschine angezeigt werden. Alle HAL-Pins und Parameter sind dort zu finden. Die folgende Abbildung zeigt die oben verwendete 5i20-Konfiguration.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: 5i20 HAL Pins
de: 5i20 HAL-Pins

note: type: Title ==
en: Configurations
de: Konfigurationen

note: type: Plain text
en: The Hostmot2 firmware is available in several versions, depending on what you are trying to accomplish. You can get a reminder of what a particular firmware is for by looking at the name. Let's look at a couple of examples.
de: Die Hostmot2-Firmware gibt es in verschiedenen Versionen, je nachdem, was Sie erreichen wollen. Sie können sich anhand des Namens einen Überblick verschaffen, wofür eine bestimmte Firmware geeignet ist. Schauen wir uns ein paar Beispiele an.

note: type: Plain text
en: In the 7i43 (two ports), SV8 ('Servo 8') would be for having 8 servos or fewer, using the 'classic' 7i33 4-axis (per port) servo board.  So 8 servos would use up all 48 signals in the two ports. But if you only needed 3 servos, you could say 'num_encoders=3' and 'num_pwmgens=3' and recover 5 servos at 6 signals each, thus gaining 30 bits of GPIO.
de: In der 7i43 (zwei Ports) wäre SV8 ('Servo 8') für 8 Servos oder weniger, unter Verwendung des 'klassischen' 7i33 4-Achsen-Servoboards (pro Port).  8 Servos würden also alle 48 Signale an den beiden Ports belegen. Wenn Sie aber nur 3 Servos benötigen, könnten Sie 'num_encoders=3' und 'num_pwmgens=3' sagen und 5 Servos mit je 6 Signalen wiederherstellen, wodurch Sie 30 Bits GPIO gewinnen.

note: type: Plain text
en: Or, in the 5i22 (four ports), SVST8_24 ('Servo 8, Stepper 24') would be for having 8 servos or fewer (7i33 x2 again), and 24 steppers or fewer (7i47 x2). This would use up all four ports.  If you only needed 4 servos you could say 'num_encoders=4' and 'num_pwmgens=4' and recover 1 port (and save a 7i33).  And if you only needed 12 steppers you could say 'num_stepgens=12' and free up one port (and save a 7i47).  So in this way we can save two ports (48 bits) for GPIO.
de: Oder beim 5i22 (vier Anschlüsse) wäre SVST8_24 ('Servo 8, Stepper 24') für 8 Servos oder weniger (wieder 7i33 x2) und 24 Stepper oder weniger (7i47 x2). Damit wären alle vier Ports belegt.  Wenn man nur 4 Servos braucht, könnte man 'num_encoders=4' und 'num_pwmgens=4' sagen und 1 Port zurückgewinnen (und einen 7i33 sparen).  Und wenn man nur 12 Stepper bräuchte, könnte man sagen 'num_stepgens=12' und einen Port freigeben (und einen 7i47 sparen).  Auf diese Weise können wir also zwei Ports (48 Bits) für GPIO einsparen.

note: type: Plain text
en: Here are tables of the firmwares available in the official packages.  There may be additional firmwares available at the Mesanet.com website that have not yet made it into the LinuxCNC official firmware packages, so check there too.
de: Hier sind Tabellen mit den in den offiziellen Paketen verfügbaren Firmwares.  Es kann zusätzliche Firmwares auf der Mesanet.com Website, die noch nicht in die LinuxCNC offiziellen Firmware-Pakete geschafft haben, daher schauen Sie auch dort nach.

note: type: Plain text
en: 3x20 (6-port various) Default Configurations (The 3x20 comes in 1M, 1.5M, and 2M gate versions.  So far, all firmware is available in all gate sizes.)
de: 3x20 (verschiedene 6 Anschlüsse) Standardkonfigurationen (3x20 ist in den Versionen mit 1M, 1,5M und 2M Gatter erhältlich.  Bislang ist die gesamte Firmware in allen Gate-Größen verfügbar.)

note: type: Plain text
en: 5i22 (4-port PCI) Default Configurations (The 5i22 comes in 1M and 1.5M gate versions.  So far, all firmware is available in all gate sizes.)
de: 5i22 (4-Port PCI) Standardkonfigurationen (Die 5i22 ist in Versionen mit 1M und 1,5M Gatter erhältlich.  Bislang ist die gesamte Firmware für alle Gate-Größen verfügbar.)

note: type: Plain text
en: 5i23 (3-port PCI) Default Configurations (The 5i23 has 400k gates.)
de: 5i23 (3-Port PCI) Standardkonfigurationen (Die 5i23 hat 400k Gates.)

note: type: Plain text
en: 5i20 (3-port PCI) Default Configurations (The 5i20 has 200k gates.)
de: 5i20 (3-Port PCI) Standardkonfigurationen (Die 5i20 hat 200k Gates.)

note: type: Plain text
en: 4i68 (3-port PC/104) Default Configurations (The 4i68 has 400k gates.)
de: 4i68 (3-Port PC/104) Standardkonfigurationen (Die 4i68 hat 400k Gates.)

note: type: Plain text
en: 4i65 (3-port PC/104) Default Configurations (The 4i65 has 200k gates.)
de: 4i65 (3-Port PC/104) Standardkonfigurationen (Die 4i65 hat 200k Gates.)

note: type: Plain text
en: 7i43 (2-port parallel) 400k gate versions, Default Configurations
de: 7i43 (2 Anschlüsse parallel) 400k-Gate-Versionen, Standardkonfigurationen

note: type: Plain text
en: 7i43 (2-port parallel) 200k gate versions, Default Configurations
de: 7i43 (2 Anschlüsse parallel) 200k-Gate-Versionen, Standardkonfigurationen

note: type: Plain text
en: Even though several cards may have the same named .BIT file you cannot use a .BIT file that is not for that card. Different cards have different clock frequencies so make sure you load the proper .BIT file for your card. Custom hm2 firmwares can be created for special applications and you may see some custom hm2 firmwares in the directories with the default ones.
de: Auch wenn mehrere Karten die gleiche .BIT-Datei haben, können Sie keine .BIT-Datei verwenden, die nicht für diese Karte bestimmt ist. Verschiedene Karten haben unterschiedliche Taktfrequenzen, also stellen Sie sicher, dass Sie die richtige .BIT-Datei für Ihre Karte laden. Benutzerdefinierte hm2-Firmwares können für spezielle Anwendungen erstellt werden und Sie können einige benutzerdefinierte hm2-Firmwares in den Verzeichnissen mit den Standard-Firmwares sehen.

note: type: Plain text
en: When you load the board-driver (hm2_pci or hm2_7i43), you can tell it to disable instances of the three primary modules (pwmgen, stepgen, and encoder) by setting the count lower. Any I/O pins belonging to disabled module instances become GPIOs.
de: Wenn Sie den Board-Treiber (hm2_pci oder hm2_7i43) laden, können Sie ihn anweisen, die Instanzen der drei primären Module (pwmgen, stepgen und encoder) zu deaktivieren, indem Sie die Anzahl niedriger setzen. Alle E/A-Pins, die zu deaktivierten Modulinstanzen gehören, werden zu GPIOs.

note: type: Plain text
en: General Purpose I/O pins on the board which are not used by a module instance are exported to HAL as 'full' GPIO pins. Full GPIO pins can be configured at run-time to be inputs, outputs, or open drains, and have a HAL interface that exposes this flexibility. I/O pins that are owned by an active module instance are constrained by the requirements of the owning module, and have a restricted HAL interface.
de: Allgemeine E/A-Pins auf der Karte, wenn nicht von einer Modulinstanz verwendet, werden als 'volle' GPIO-Pins an HAL exportiert. Full-GPIO-Pins können zur Laufzeit als Eingänge, Ausgänge oder Open Drains konfiguriert werden und verfügen über eine HAL-Schnittstelle, die diese Flexibilität offenlegt. E/A-Pins einer aktiven Modulinstanz sind durch die Anforderungen dieses sie besitzenden Moduls eingeschränkt und haben eine eingeschränkte HAL-Schnittstelle.

note: type: Plain text
en: GPIOs have names like 'hm2_<BoardType>.<BoardNum>.gpio.<IONum>.' IONum is a three-digit number. The mapping from IONum to connector and pin-on-that-connector is written to the syslog when the driver loads, and it's documented in Mesa's manual for the Anything I/O boards.
de: GPIOs haben Namen wie 'hm2_<BoardType>.<BoardNum>.gpio.<IONum>.' IONum ist eine dreistellige Zahl. Die Zuordnung von IONum zu Stecker und Pin-auf-dem-Stecker wird in das Syslog geschrieben, wenn der Treiber geladen wird, und sie ist im Mesa-Handbuch für die Anything I/O-Boards dokumentiert.

note: type: Plain text
en: The hm2 GPIO representation is modeled after the Digital Inputs and Digital Outputs described in the Canonical Device Interface (part of the HAL General Reference document).
de: Die hm2-GPIO-Darstellung ist den digitalen Eingängen und digitalen Ausgängen nachempfunden, die in der kanonischen Geräteschnittstelle (Teil des Dokuments HAL General Reference) beschrieben sind.

note: type: Plain text
en: GPIO pins default to input.
de: GPIO-Pins sind standardmäßig auf Eingang eingestellt.

note: type: Plain text
en: 'in' - (Bit, Out) Normal state of the hardware input pin.  Both full GPIO pins and I/O pins used as inputs by active module instances have this pin.
de: 'in' - (Bit, Out) Normaler Zustand des Hardware-Eingangs-Pins.  Sowohl volle GPIO-Pins als auch I/O-Pins, die von aktiven Modulinstanzen als Eingänge verwendet werden, haben diesen Pin.

note: type: Plain text
en: 'in_not' - (Bit, Out) Inverted state of the hardware input pin.  Both full GPIO pins and I/O pins used as inputs by active module instances have this pin.
de: 'in_not' - (Bit, Out) Invertierter Zustand des Hardware-Eingangs-Pins.  Sowohl volle GPIO-Pins als auch I/O-Pins, die von aktiven Modulinstanzen als Eingänge verwendet werden, haben diesen Pin.

note: type: Plain text
en: 'out' - (Bit, In) Value to be written (possibly inverted) to the hardware output pin.  Only full GPIO pins have this pin.
de: 'out' - (Bit, In) Wert, der (möglicherweise invertiert) an den Hardware-Ausgangspin geschrieben werden soll.  Nur volle GPIO-Pins haben diesen Pin.

note: type: Plain text
en: 'invert_output' - (Bit, RW) This parameter only has an effect if the 'is_output' parameter is true.  If this parameter is true, the output value of the GPIO will be the inverse of the value on the 'out' HAL pin. Only full GPIO pins and I/O pins used as outputs by active module instances have this parameter. To invert an active module pin you have to invert the GPIO pin not the module pin.
de: 'invert_output' - (Bit, RW) Dieser Parameter hat nur eine Auswirkung, wenn der Parameter 'is_output' wahr ist.  Wenn dieser Parameter wahr ist, wird der Ausgangswert des GPIOs der Inverse des Wertes am 'out' HAL-Pin sein. Nur vollständige GPIO-Pins und I/O-Pins, die von aktiven Modulinstanzen als Ausgänge verwendet werden, haben diesen Parameter. Um einen aktiven Modul-Pin zu invertieren, müssen Sie den GPIO-Pin invertieren, nicht den Modul-Pin.

note: type: Plain text
en: 'is_opendrain' - (Bit, RW) This parameter only has an effect if the 'is_output' parameter is true.  If this parameter is false, the GPIO behaves as a normal output pin: the I/O pin on the connector is driven to the value specified by the 'out' HAL pin (possibly inverted), and the value of the 'in' and 'in_not' HAL pins is undefined. If this parameter is true, the GPIO behaves as an open-drain pin. Writing 0 to the 'out' HAL pin drives the I/O pin low, writing 1 to the 'out' HAL pin puts the I/O pin in a high-impedance state. In this high-impedance state the I/O pin floats (weakly pulled high), and other devices can drive the value; the resulting value on the I/O pin is available on the 'in' and 'in_not' pins. Only full GPIO pins and I/O pins used as outputs by active module instances have this parameter.
de: 'is_opendrain' - (Bit, RW) Dieser Parameter hat nur eine Auswirkung, wenn der Parameter 'is_output' wahr ist.  Wenn dieser Parameter false ist, verhält sich der GPIO wie ein normaler Ausgangspin: der I/O-Pin am Stecker wird auf den Wert getrieben, der durch den 'out' HAL-Pin angegeben ist (möglicherweise invertiert), und der Wert der 'in' und 'in_not' HAL-Pins ist undefiniert. Wenn dieser Parameter true ist, verhält sich der GPIO wie ein Open-Drain-Pin. Das Schreiben von 0 an den 'out' HAL-Pin treibt den I/O-Pin auf low, das Schreiben von 1 an den 'out' HAL-Pin versetzt den I/O-Pin in einen hochohmigen Zustand. In diesem hochohmigen Zustand schwebt der I/O-Pin (schwach hochgezogen), und andere Geräte können den Wert treiben; der resultierende Wert am I/O-Pin ist an den 'in' und 'in_not' Pins verfügbar. Nur vollständige GPIO-Pins und I/O-Pins, die von aktiven Modulinstanzen als Ausgänge verwendet werden, haben diesen Parameter.

note: type: Plain text
en: 'is_output' - (Bit, RW) If set to 0, the GPIO is an input.  The I/O pin is put in a high-impedance state (weakly pulled high), to be driven by other devices. The logic value on the I/O pin is available in the 'in' and 'in_not' HAL pins. Writes to the 'out' HAL pin have no effect. If this parameter is set to 1, the GPIO is an output; its behavior then depends on the 'is_opendrain' parameter. Only full GPIO pins have this parameter.
de: 'is_output' - (Bit, RW) Wenn auf 0 gesetzt, ist der GPIO ein Eingang.  Der I/O-Pin wird in einen hochohmigen Zustand versetzt (schwach hochgezogen - engl. weakly pulled high), um von anderen Geräten angesteuert zu werden. Der logische Wert am I/O-Pin ist in den HAL-Pins 'in' und 'in_not' verfügbar. Schreibvorgänge auf den 'out' HAL-Pin haben keine Auswirkungen. Wenn dieser Parameter auf 1 gesetzt ist, dann ist der GPIO ein Ausgang; sein Verhalten hängt dann von dem Parameter 'is_opendrain' ab. Nur volle GPIO-Pins haben diesen Parameter.

note: type: Plain text
en: StepGens have names like 'hm2_<BoardType>.<BoardNum>.stepgen.<Instance>'.  'Instance' is a two-digit number that corresponds to the HostMot2 stepgen instance number.  There are 'num_stepgens' instances, starting with 00.
de: StepGens haben Namen wie 'hm2_<BoardType>.<BoardNum>.stepgen.<Instance>'. 'Instance' ist eine zweistellige Nummer, die der HostMot2 stepgen-Instanznummer entspricht.  Es gibt 'num_stepgens' Instanzen, beginnend mit 00.

note: type: Plain text
en: Each stepgen allocates 2-6 I/O pins (selected at firmware compile time), but currently only uses two: Step and Direction outputs.  footnote:[At present, the firmware supports multi-phase stepper outputs, but the driver doesn't. Interested volunteers are solicited.]
de: Jedes Stepgen belegt 2-6 E/A-Pins (die bei der Kompilierung der Firmware ausgewählt werden), verwendet aber derzeit nur zwei: Schritt- und Richtungsausgänge. Fußnote:[Derzeit unterstützt die Firmware mehrphasige Stepperausgänge, aber der Treiber nicht'. Interessierte Freiwillige werden gebeten, sich zu melden.]

note: type: Plain text
en: The StepGen representation is modeled on the stepgen software component. StepGen default is active high step output (high during step time low during step space). To invert a StepGen output pin you invert the corresponding GPIO pin that is being used by StepGen. To find the GPIO pin being used for the StepGen output run 'dmesg' as shown above.
de: Die StepGen-Darstellung ist der Softwarekomponente Stepgen nachempfunden. Die Standardeinstellung von StepGen ist ein aktiver High-Schrittausgang (High während der Schrittzeit (engl. step time), Low während des Schrittraums (engl. step space)). Um einen StepGen-Ausgangspin zu invertieren, wählen Sie den entsprechenden GPIO-Pin, der von StepGen verwendet wird. Um den GPIO-Pin zu finden, der für den StepGen-Ausgang verwendet wird, führen Sie 'dmesg' wie oben gezeigt aus.

note: type: Plain text
en: Each StepGen instance has the following pins and parameters:
de: Jede StepGen-Instanz hat die folgenden Pins und Parameter:

note: type: Plain text
en: 'control-type' - (Bit, In) Switches between position control mode (0)  and velocity control mode (1).  Defaults to position control (0).
de: 'control-type' - (Bit, In) Schaltet zwischen Lageregelungsmodus (engl. position control mode) (0) und Geschwindigkeitsregelungsmodus (engl. velocity control mode) (1) um.  Standardmäßig ist die Lageregelung (0) eingestellt.

note: type: Plain text
en: 'counts' - (s32, Out) Feedback position in counts (number of steps).
de: 'counts' - (s32, Out) Rückmeldung der Position in counts (Anzahl der Schritte).

note: type: Plain text
en: 'enable' - (Bit, In) Enables output steps. When false, no steps are generated.
de: 'enable' - (Bit, In) Aktiviert Schritte am Ausgang. Wenn false, werden keine Schritte erzeugt.

note: type: Plain text
en: 'position-cmd' - (Float, In) Target position of stepper motion, in user-defined position units.
de: 'position-cmd' - (Float, In) Zielposition der Stepperbewegung, in benutzerdefinierten Positionseinheiten.

note: type: Plain text
en: 'position-fb' - (Float, Out) Feedback position in user-defined position units (counts / position_scale).
de: 'position-fb' - (Float, Out) Positionsrückmeldung in benutzerdefinierten Positionseinheiten (counts / position_scale).

note: type: Plain text
en: 'velocity-cmd' - (Float, In) Target velocity of stepper motion, in user-defined position units per second.  This pin is only used when the stepgen is in velocity control mode (control-type=1).
de: 'velocity-cmd' - (Float, In) Zielgeschwindigkeit der Schrittmotorbewegung, in benutzerdefinierten Positionseinheiten pro Sekunde.  Dieser Pin wird nur verwendet, wenn sich der Stepgen im Geschwindigkeitsregelungsmodus befindet (control-type=1).

note: type: Plain text
en: 'velocity-fb' - (Float, Out) Feedback velocity in user-defined position units per second.
de: 'velocity-fb' - (Float, Out) Rückmeldung der Geschwindigkeit in benutzerdefinierten Positionseinheiten pro Sekunde.

note: type: Plain text
en: 'dirhold' - (u32, RW) Minimum duration of stable Direction signal after a step ends, in nanoseconds.
de: 'dirhold' - (u32, RW) Mindestdauer eines stabilen Richtungssignals nach dem Ende eines Schritts, in Nanosekunden.

note: type: Plain text
en: 'dirsetup' - (u32, RW) Minimum duration of stable Direction signal before a step begins, in nanoseconds.
de: 'dirsetup' - (u32, RW) Mindestdauer des stabilen Richtungssignals vor Beginn eines Schritts, in Nanosekunden.

note: type: Plain text
en: 'maxaccel' - (Float, RW) Maximum acceleration, in position units per second per second.  If set to 0, the driver will not limit its acceleration.
de: 'maxaccel' - (Float, RW) Maximale Beschleunigung, in Positionseinheiten pro Sekunde pro Sekunde.  Bei einem Wert von 0 begrenzt der Treiber seine Beschleunigung nicht.

note: type: Plain text
en: 'maxvel' - (Float, RW) Maximum speed, in position units per second.  If set to 0, the driver will choose the maximum velocity based on the values of steplen and stepspace (at the time that maxvel was set to 0).
de: 'maxvel' - (Float, RW) Maximale Geschwindigkeit, in Positionseinheiten pro Sekunde.  Wird dieser Wert auf 0 gesetzt, wählt der Treiber die Höchstgeschwindigkeit auf der Grundlage der Werte von steplen und stepspace (zu dem Zeitpunkt, zu dem maxvel auf 0 gesetzt wurde).

note: type: Plain text
en: 'position-scale' - (Float, RW) Converts from counts to position units.  position = counts / position_scale
de: 'position-scale' - (Float, RW) Konvertiert von Zählungen in Positionseinheiten. position = counts / position_scale

note: type: Plain text
en: 'step_type' - (u32, RW) Output format, like the step_type modparam to the software stegen(9) component.  0 = Step/Dir, 1 = Up/Down, 2 = Quadrature. In Quadrature mode (step_type=2), the stepgen outputs one complete Gray cycle (00 \-> 01 \-> 11 \-> 10 \-> 00) for each 'step' it takes.
de: 'step_type' - (u32, RW) Ausgabeformat, wie das step_type modparam für die Software stegen(9) Komponente.  0 = Schritt/Dir, 1 = Auf/Ab, 2 = Quadratur. Im Quadraturmodus (step_type=2) gibt der stepgen einen kompletten Gray-Zyklus (00 \-> 01 \-> 11 \-> 10 \-> 00) für jeden 'Schritt' aus, den er macht.

note: type: Plain text
en: 'steplen' - (u32, RW) Duration of the step signal, in nanoseconds.
de: 'steplen' - (u32, RW) Dauer des Schrittsignals, in Nanosekunden.

note: type: Plain text
en: 'stepspace' - (u32, RW) Minimum interval between step signals, in nanoseconds.
de: 'stepspace' - (u32, RW) Minimaler Abstand zwischen Schrittsignalen, in Nanosekunden.

note: type: Title ===
en: Output Parameters
de: Ausgangsparameter

note: type: Plain text
en: The Step and Direction pins of each StepGen have two additional parameters. To find which I/O pin belongs to which step and direction output run 'dmesg' as described above.
de: Die Step- und Direction-Pins der einzelnen StepGen haben zwei zusätzliche Parameter. Um herauszufinden, welcher I/O-Pin zu welchem Step- und Direction-Ausgang gehört, führen Sie 'dmesg' wie oben beschrieben aus.

note: type: Plain text
en: 'invert_output' - (Bit, RW) This parameter only has an effect if the 'is_output' parameter is true.  If this parameter is true, the output value of the GPIO will be the inverse of the value on the 'out' HAL pin.
de: 'invert_output' - (Bit, RW) Dieser Parameter hat nur eine Auswirkung, wenn der Parameter 'is_output' wahr ist.  Wenn dieser Parameter wahr ist, dann ist der Ausgangswert des GPIO der umgekehrte Wert des Wertes am 'out' HAL-Pin.

note: type: Plain text
en: 'is_opendrain' - (Bit, RW) If this parameter is false, the GPIO behaves as a normal output pin: the I/O pin on the connector is driven to the value specified by the 'out' HAL pin (possibly inverted).  If this parameter is true, the GPIO behaves as an open-drain pin. Writing 0 to the 'out' HAL pin drives the I/O pin low, writing 1 to the 'out' HAL pin puts the I/O pin in a high-impedance state. In this high-impedance state the I/O pin floats (weakly pulled high), and other devices can drive the value; the resulting value on the I/O pin is available on the 'in' and 'in_not' pins. Only full GPIO pins and I/O pins used as outputs by active module instances have this parameter.
de: 'is_opendrain' - (Bit, RW) Wenn dieser Parameter falsch ist, verhält sich der GPIO wie ein normaler Ausgangspin: der I/O-Pin am Anschluss wird auf den durch den 'out' HAL-Pin spezifizierten Wert gesteuert (möglicherweise invertiert).  Wenn dieser Parameter true ist, verhält sich der GPIO wie ein Open-Drain-Pin. Das Schreiben von 0 an den 'out' HAL-Pin treibt den I/O-Pin auf low, das Schreiben von 1 an den 'out' HAL-Pin versetzt den I/O-Pin in einen hochohmigen Zustand. In diesem hochohmigen Zustand schwebt der I/O-Pin (schwach hochgezogen), und andere Geräte können den Wert treiben; der resultierende Wert am I/O-Pin ist an den 'in' und 'in_not' Pins verfügbar. Nur vollständige GPIO-Pins und I/O-Pins, die von aktiven Modulinstanzen als Ausgänge verwendet werden, haben diesen Parameter.

note: type: Plain text
en: PWMgens have names like 'hm2_<BoardType>.<BoardNum>.pwmgen.<Instance>'. 'Instance' is a two-digit number that corresponds to the HostMot2 pwmgen instance number. There are 'num_pwmgens' instances, starting with 00.
de: PWMgens haben Namen wie 'hm2_<BoardType>.<BoardNum>.pwmgen.<Instance>'. 'Instance' ist eine zweistellige Nummer, die der HostMot2 pwmgen Instanznummer entspricht. Es gibt 'num_pwmgens' Instanzen, beginnend mit 00.

note: type: Plain text
en: In HM2, each pwmgen uses three output I/O pins: Not-Enable, Out0, and Out1. To invert a PWMGen output pin you invert the corresponding GPIO pin that is being used by PWMGen. To find the GPIO pin being used for the PWMGen output run 'dmesg' as shown above.
de: In HM2 verwendet jedes pwmgen drei Ausgangs-E/A-Pins: Not-Enable, Out0, und Out1. Um einen PWMGen-Ausgangspin zu invertieren, wählen Sie den entsprechenden GPIO-Pin, der von PWMGen verwendet wird. Um den GPIO-Pin zu finden, der für den PWMGen-Ausgang verwendet wird, führen Sie 'dmesg' wie oben gezeigt aus.

note: type: Plain text
en: The function of the Out0 and Out1 I/O pins varies with output-type parameter (see below).
de: Die Funktion der E/A-Pins Out0 und Out1 variiert je nach Ausgangstyp-Parameter (siehe unten).

note: type: Plain text
en: The hm2 pwmgen representation is similar to the software pwmgen component. Each pwmgen instance has the following pins and parameters:
de: Die hm2 pwmgen-Darstellung ist der Softwarekomponente pwmgen ähnlich. Jede pwmgen-Instanz hat die folgenden Pins und Parameter:

note: type: Plain text
en: 'enable' - (Bit, In) If true, the pwmgen will set its Not-Enable pin false and output its pulses.  If 'enable' is false, pwmgen will set its Not-Enable pin true and not output any signals.
de: 'enable' - (Bit, In) Wenn true, setzt das pwmgen seinen Not-Enable-Pin auf false und gibt seine Impulse aus.  Wenn 'enable' falsch ist, setzt pwmgen seinen Not-Enable-Pin auf true und gibt keine Signale aus.

note: type: Plain text
en: 'value' - (Float, In) The current pwmgen command value, in arbitrary units.
de: 'value' - (Float, In) Der aktuelle Wert des pwmgen-Befehls, in beliebigen Einheiten.

note: type: Plain text
en: 'output-type' - (s32, RW) This emulates the output_type load-time argument to the software pwmgen component.  This parameter may be changed at runtime, but most of the time you probably want to set it at startup and then leave it alone. Accepted values are 1 (PWM on Out0 and Direction on Out1), 2 (Up on Out0 and Down on Out1), 3 (PDM mode, PDM on Out0 and Dir on Out1), and 4 (Direction on Out0 and PWM on Out1, 'for locked antiphase').
de: 'output-type' - (s32, RW) Dies emuliert das output_type-Ladezeit-Argument für die Softwarekomponente pwmgen.  Dieser Parameter kann zur Laufzeit geändert werden, aber in den meisten Fällen wollen Sie ihn beim Start setzen und dann in Ruhe lassen. Akzeptierte Werte sind 1 (PWM auf Out0 und Direction auf Out1), 2 (Up auf Out0 und Down auf Out1), 3 (PDM-Modus, PDM auf Out0 und Dir auf Out1) und 4 (Direction auf Out0 und PWM auf Out1, 'for locked antiphase').

note: type: Plain text
en: 'scale' - (Float, RW) Scaling factor to convert 'value' from arbitrary units to duty cycle: dc = value / scale.  Duty cycle has an effective range of -1.0 to +1.0 inclusive, anything outside that range gets clipped.
de: 'scale' - (Float, RW) Skalierungsfaktor zur Umrechnung von 'value' von beliebigen Einheiten in das Tastverhältnis: dc = value / scale.  Das Tastverhältnis hat einen effektiven Bereich von -1,0 bis einschließlich +1,0, alles außerhalb dieses Bereichs wird abgeschnitten.

note: type: Plain text
en: The output pins of each PWMGen have two additional parameters. To find which I/O pin belongs to which output run `dmesg` as described above.
de: Die Ausgangspins der einzelnen PWMGen haben zwei zusätzliche Parameter. Um herauszufinden, welcher E/A-Pin zu welchem Ausgang gehört, führen Sie `dmesg` wie oben beschrieben aus.

note: type: Plain text
en: `invert_output` - (Bit, RW) This parameter only has an effect if the `is_output` parameter is true. If this parameter is true, the output value of the GPIO will be the inverse of the value on the `out` HAL pin.
de: `invert_output` - (Bit, RW) Dieser Parameter hat nur eine Auswirkung, wenn der Parameter `is_output` wahr ist. Wenn dieser Parameter wahr ist, dann ist der Ausgangswert des GPIO der umgekehrte Wert des Wertes am `out` HAL-Pin.

note: type: Plain text
en: `is_opendrain` - (Bit, RW) If this parameter is false, the GPIO behaves as a normal output pin: the I/O pin on the connector is driven to the value specified by the `out` HAL pin (possibly inverted).  If this parameter is true, the GPIO behaves as an open-drain pin.  Writing 0 to the `out` HAL pin drives the I/O pin low, writing 1 to the `out` HAL pin puts the I/O pin in a high-impedance state. In this high-impedance state the I/O pin floats (weakly pulled high), and other devices can drive the value; the resulting value on the I/O pin is available on the `in` and `in_not` pins.  Only full GPIO pins and I/O pins used as outputs by active module instances have this parameter.
de: `is_opendrain` - (Bit, RW) Wenn dieser Parameter false ist, verhält sich der GPIO wie ein normaler Ausgangspin: der I/O-Pin am Stecker wird auf den durch den HAL-Pin `out` spezifizierten Wert gesteuert (möglicherweise invertiert).  Wenn dieser Parameter true ist, verhält sich der GPIO wie ein Open-Drain-Pin.  Das Schreiben von 0 an den HAL-Pin `out` setzt den E/A-Pin auf einen niedrigen Wert, das Schreiben von 1 an den HAL-Pin `out` versetzt den E/A-Pin in einen Zustand hoher Impedanz. In diesem hochohmigen Zustand schwebt der E/A-Pin (schwach hochgezogen), und andere Geräte können den Wert steuern; der resultierende Wert am E/A-Pin ist an den Pins `in` und `in_not` verfügbar.  Nur vollständige GPIO-Pins und E/A-Pins, die von aktiven Modulinstanzen als Ausgänge verwendet werden, haben diesen Parameter.

note: type: Plain text
en: Encoders have names like `hm2_<BoardType>.<BoardNum>.encoder.<Instance>.`.  `Instance` is a two-digit number that corresponds to the HostMot2 encoder instance number.  There are _num_encoders_ instances, starting with 00.
de: Encoder haben Namen wie `hm2_<BoardType>.<BoardNum>.encoder.<Instance>.`.  `Instanz` ist eine zweistellige Zahl, die der Instanznummer des HostMot2-Encoders entspricht.  Es gibt _num_encoders_ Instanzen, beginnend mit 00.

note: type: Plain text
en: Each encoder uses three or four input I/O pins, depending on how the firmware was compiled.  Three-pin encoders use A, B, and Index (sometimes also known as Z).  Four-pin encoders use A, B, Index, and Index-mask.
de: Jeder Encoder verwendet drei oder vier Eingangs-I/O-Pins, je nachdem, wie die Firmware kompiliert wurde.  Dreipolige Encoder verwenden A, B und Index (manchmal auch als Z bekannt).  Vierpolige Encoder verwenden A, B, Index und Index-Maske.

note: type: Plain text
en: The hm2 encoder representation is similar to the one described by the Canonical Device Interface (in the HAL General Reference document), and to the software encoder component.  Each encoder instance has the following pins and parameters:
de: Die hm2-Encoder-Darstellung ähnelt derjenigen, die von der kanonischen Geräteschnittstelle (im Dokument HAL General Reference) beschrieben wird, und der Software-Encoder-Komponente.  Jede Encoder-Instanz hat die folgenden Pins und Parameter:

note: type: Plain text
en: `count` - (s32, Out) Number of encoder counts since the previous reset.
de: `count` - (s32, Out) Anzahl der Encoderzählungen seit dem letzten Reset.

note: type: Plain text
en: `index-enable` - (Bit, I/O) When this pin is set to True, the count (and therefore also position) are reset to zero on the next Index (Phase-Z) pulse.  At the same time, index-enable is reset to zero to indicate that the pulse has occurred.
de: `index-enable` - (Bit, I/O) Wenn dieser Pin auf True gesetzt ist, wird der Zählerstand (und damit auch die Position) beim nächsten Indeximpuls (Phase-Z) auf Null zurückgesetzt. Gleichzeitig wird index-enable auf Null zurückgesetzt, um anzuzeigen, dass der Impuls stattgefunden hat.

note: type: Plain text
en: `position` - (Float, Out) Encoder position in position units (count / scale).
de: `position` - (Float, Out) Encode-Position in Positionseinheiten (Count / Scale).

note: type: Plain text
en: `rawcounts` - (s32, Out) Total number of encoder counts since the start, not adjusted for index or reset.
de: `rawcounts` - (s32, Out) Gesamtzahl der Encoder-Zählungen seit dem Start, nicht für Index oder Reset angepasst.

note: type: Plain text
en: `reset` - (Bit, In) When this pin is TRUE, the count and position pins are set to 0.  The value of the velocity pin is not affected by this.  The driver does not reset this pin to FALSE after resetting the count to 0, that is the user's job.
de: `reset` - (Bit, In) Wenn dieser Pin TRUE ist, werden die Zähl- und Positions-Pins auf 0 gesetzt. Der Wert des Geschwindigkeits-Pins wird davon nicht beeinflusst.  Der Treiber setzt diesen Pin nicht auf FALSE zurück, nachdem er die Zählung auf 0 gesetzt hat, das ist Aufgabe des Benutzers.

note: type: Plain text
en: `velocity` - (Float, Out) Estimated encoder velocity in position units per second.
de: `velocity` - (Float, Out) Geschätzte Encoder-Geschwindigkeit in Positionseinheiten pro Sekunde.

note: type: Plain text
en: `counter-mode` - (Bit, RW) Set to False (the default) for Quadrature.  Set to True for Up/Down or for single input on Phase A.  Can be used for a frequency to velocity converter with a single input on Phase A when set to true.
de: `counter-mode` - (Bit, RW) Auf False (Standard) für Quadratur gesetzt.  Auf True gesetzt für Up/Down oder für einen einzelnen Eingang an Phase A. Kann für einen Frequenz/Geschwindigkeits-Wandler mit einem einzelnen Eingang an Phase A verwendet werden, wenn auf True gesetzt.

note: type: Plain text
en: `index-invert` - (Bit, RW) If set to True, the rising edge of the Index input pin triggers the Index event (if index-enable is True).  If set to False, the falling edge triggers.
de: `index-invert` - (Bit, RW) Wenn auf True gesetzt, löst die steigende Flanke des Index-Eingangspins das Index-Ereignis aus (wenn index-enable True ist). Wenn auf False gesetzt, löst die fallende Flanke aus.

note: type: Plain text
en: `index-mask` - (Bit, RW) If set to True, the Index input pin only has an effect if the Index-Mask input pin is True (or False, depending on the `index-mask-invert` pin below).
de: `index-mask` - (Bit, RW) Wenn auf True gesetzt, hat der Index-Eingangs-Pin nur dann eine Wirkung, wenn der Index-Mask-Eingangs-Pin True ist (oder False, abhängig vom `index-mask-invert`-Pin unten).

note: type: Plain text
en: `index-mask-invert` - (Bit, RW) If set to True, Index-Mask must be False for Index to have an effect.  If set to False, the `Index-Mask` pin must be True.
de: `index-mask-invert` - (Bit, RW) Wenn auf True gesetzt, muss Index-Mask False sein, damit Index eine Wirkung hat.  Bei False muss der `index-mask`-Pin auf True gesetzt werden.

note: type: Plain text
en: `scale` - (Float, RW) Converts from 'count' units to 'position' units.  A quadrature encoder will normally have 4 counts per pulse so a 100 PPR encoder would be 400 counts per revolution. In `.counter-mode` a 100 PPR encoder would have 100 counts per revolution as it only uses the rising edge of A and direction is B.
de: `scale` - (Float, RW) Konvertiert von 'count' Einheiten in 'position' Einheiten.  Ein Quadratur-Drehgeber hat normalerweise 4 Zählungen pro Impuls, so dass ein 100 PPR-Drehgeber 400 Zählungen pro Umdrehung aufweisen würde. Im `.counter-mode` würde ein 100 PPR Encoder 100 Zählungen pro Umdrehung haben, da er nur die ansteigende Flanke von A verwendet und die Richtung B ist.

note: type: Plain text
en: `vel-timeout` - (Float, RW) When the encoder is moving slower than one pulse for each time that the driver reads the count from the FPGA (in the hm2_read() function), the velocity is harder to estimate.  The driver can wait several iterations for the next pulse to arrive, all the while reporting the upper bound of the encoder velocity, which can be accurately guessed.  This parameter specifies how long to wait for the next pulse, before reporting the encoder stopped.  This parameter is in seconds.
de: `vel-timeout` - (Float, RW) Wenn sich der Encoder langsamer bewegt als ein Impuls für jedes Mal, wenn der Treiber den Zählerstand aus dem FPGA liest (in der Funktion hm2_read()), ist die Geschwindigkeit schwieriger zu schätzen.  Der Treiber kann mehrere Iterationen abwarten, bis der nächste Impuls eintrifft, während er gleichzeitig die obere Grenze der Encoder-Geschwindigkeit meldet, die genau abgeschätzt werden kann.  Dieser Parameter gibt an, wie lange auf den nächsten Impuls gewartet werden soll, bevor der Encoder gestoppt wird.  Dieser Parameter wird in Sekunden angegeben.

note: type: Title ==
en: 5I25 Configuration
de: 5I25 Konfiguration

note: type: Plain text
en: The 5I25 firmware comes preloaded for the daughter card it is purchased with.  So the `firmware=xxx.BIT` is not part of the hm2_pci configuration string when using a 5I25.
de: Die 5I25-Firmware wird für die Tochterkarte, mit der sie gekauft wurde, vorinstalliert.  Die `firmware=xxx.BIT` ist also nicht Teil des hm2_pci-Konfigurationsstrings, wenn eine 5I25 verwendet wird.

note: type: Plain text
en: Example configurations of the 5I25/7I76 and 5I25/7I77 cards are included in the <<sub:configuration-selector,Configuration Selector>>.
de: Beispielkonfigurationen der Karten 5I25/7I76 und 5I25/7I77 sind im <<sub:configuration-selector, Konfigurations-Auswahl>> enthalten.

note: type: Plain text
en: If you like to roll your own configuration the following examples show how to load the drivers in the HAL file.
de: Wenn Sie Ihre eigene Konfiguration erstellen möchten, zeigen die folgenden Beispiele, wie Sie die Treiber in die HAL-Datei laden.

note: type: Block title
en: 5I25 + 7I76 Card
de: 5I25 + 7I76 Karte

note: type: delimited block -
en: # load the generic driver
    loadrt hostmot2
de: # den generischen Treiber laden
    loadrt hostmot2

note: type: delimited block -
en: # load the PCI driver and configure
    loadrt hm2_pci config="num_encoders=1 num_stepgens=5 sserial_port_0=0XXX"
de: # PCI-Treiber laden und konfigurieren
    loadrt hm2_pci config="num_encoders=1 num_stepgens=5 sserial_port_0=0XXX"

note: type: Block title
en: 5I25 + 7I77 Card
de: 5I25 + 7I77 Karte

note: type: delimited block -
en: # load the PCI driver and configure
    loadrt hm2_pci config="num_encoders=6 num_pwmgens=6 sserial_port_0=0XXX"
de: # Laden Sie den PCI-Treiber und konfigurieren Sie ihn
    loadrt hm2_pci config="num_encoders=6 num_pwmgens=6 sserial_port_0=0XXX"

note: type: Title ===
en: SSERIAL Configuration
de: SSERIAL-Konfiguration

note: type: Plain text
en: The `sserial_port_0=0XXX` configuration string sets some options for the smart serial daughter card. These options are specific for each daughter card. See the Mesa manual for more information on the exact usage (typically in the section called SOFTWARE PROCESS DATA MODES) or see the manual page of link:../man/man9/sserial.9.html[SSERIAL(9)].
de: Die Konfigurationszeichenfolge `sserial_port_0=0XXX` legt einige Optionen für die intelligente serielle Tochterkarte fest. Diese Optionen sind spezifisch für jede Tochterkarte. Weitere Informationen über die genaue Verwendung finden Sie im Mesa-Handbuch (normalerweise im Abschnitt SOFTWARE PROCESS DATA MODES) oder auf der Handbuchseite des Links:../man/man9/sserial.9.html[SSERIAL(9)].

note: type: Title ===
en: 7I77 Limits
de: 7I77 Grenzwerte

note: type: Plain text
en: The minlimit and maxlimit are bounds on the pin value (in this case the analog out value) fullscalemax is the scale factor.
de: Minlimit und Maxlimit sind Begrenzungen des Pin-Wertes (in diesem Fall des Analogausgangswertes), Fullscalemax ist der Skalierungsfaktor.

note: type: Plain text
en: These are by default set to the analog in or analog range (most likely in Volts).
de: Diese sind standardmäßig auf den analogen Eingang oder den analogen Bereich (meist in Volt) eingestellt.

note: type: Plain text
en: If you wanted to say scale the analog out of a channel to IPS for a velocity mode servo (say 24 IPS max) you could set the limits like this:
de: Wenn Sie z.B. den Analogausgang eines Kanals für ein Geschwindigkeitsservo auf IPS skalieren möchten (z.B. 24 IPS max), können Sie die Grenzen wie folgt festlegen:

note: type: Plain text
en: minlimit: 0
    maxlimit: 6000
    maxfullscale: 6000
    (this would prevent unwanted negative output voltages from being set)
de: minlimit: 0
    maxlimit: 6000
    maxfullscale: 6000
    (dies würde verhindern, dass unerwünschte negative Ausgangsspannungen eingestellt werden)

note: type: Title ===
en: Example Configurations
de: Beispielkonfigurationen

note: type: Plain text
en: Several example configurations for Mesa hardware are included with LinuxCNC.  The configurations are located in the hm2-servo and hm2-stepper sections of the <<sub:configuration-selector,Configuration Selector>>. Typically you will need the board installed for the configuration you pick to load. The examples are a good place to start and will save you time.  Just pick the proper example from the LinuxCNC Configuration Selector and save a copy to your computer so you can edit it. To see the exact pins and parameters that your configuration gave you, open the Show HAL Configuration window from the Machine menu, or do `dmesg` as outlined above.
de: Mehrere Beispielkonfigurationen für Mesa-Hardware sind in LinuxCNC enthalten.  Die Konfigurationen sind in der hm2-servo und hm2-stepper Abschnitte der <<sub:configuration-selector,Konfigurations-Auswahl>>. In der Regel müssen Sie die Karte für die von Ihnen gewählte Konfiguration installieren, um sie zu laden. Die Beispiele sind ein guter Startpunkt und sparen Ihnen Zeit.  Wählen Sie einfach das richtige Beispiel aus dem LinuxCNC Configuration Selector und speichern Sie eine Kopie auf Ihrem Computer, damit Sie es bearbeiten können. Um die genauen Pins und Parameter, die Ihre Konfiguration gab Ihnen, öffnen Sie das "Zeige HAL Konfiguration" (engl. Show HAL Configuration) Fenster aus dem Menü Maschine (engl. machine), oder führen Sie `dmesg` aus wie oben beschrieben.

note: type: Plain text
en: MB2HAL is a generic userspace HAL component to communicate with one or more Modbus devices. So far, there are two options to communicate with a Modbus device:
de: MB2HAL ist eine generische Userspace-HAL-Komponente zur Kommunikation mit einem oder mehreren Modbus-Geräten. Bislang gibt es zwei Möglichkeiten, mit einem Modbus-Gerät zu kommunizieren:

note: type: Plain text
en: One option is to create a HAL component as a driver see http://wiki.linuxcnc.org/cgi-bin/wiki.pl?VFD_Modbus[VFD Modbus].
de: Eine Möglichkeit besteht darin, eine HAL-Komponente als Treiber zu erstellen, siehe http://wiki.linuxcnc.org/cgi-bin/wiki.pl?VFD_Modbus[VFD Modbus].

note: type: Plain text
en: Another option is to use Classic Ladder which has Modbus built in see << cha:classicladder,ClassicLadder >>.
de: Eine andere Möglichkeit ist die Verwendung von Classic Ladder, das Modbus eingebaut hat, siehe <cha:classicladder,ClassicLadder >>.

note: type: Plain text
en: Now there is a third option that consists of a "generic" driver configured by text file, this is called MB2HAL.
de: Jetzt gibt es eine dritte Option, die aus einem "generischen" Treiber besteht, der per Textdatei konfiguriert wird, dieser heißt MB2HAL.

note: type: Plain text
en: Why MB2HAL? Consider using Mb2hal if:
de: Warum MB2HAL? Erwägen Sie den Einsatz von mb2hal, wenn:

note: type: Plain text
en: You have to write a new driver and you don't know anything about programming.
de: Sie einen neuen Treiber schreiben müssenund keine Ahnung haben vom Programmieren.

note: type: Plain text
en: You need to use Classic Ladder "only" to manage the Modbus connections.
de: Sie müssen Classic Ladder "nur" verwenden, um die Modbus-Verbindungen zu verwalten.

note: type: Plain text
en: You have to discover and configure first time the Modbus transactions.  Mb2hal have debug levels to facilitate the low level protocol debug.
de: Sie müssen zunächst die Modbus-Transaktionen ermitteln und konfigurieren.  Mb2hal hat Debug-Ebenen, um das Debuggen des Low-Level-Protokolls zu erleichtern.

note: type: Plain text
en: You have more than one device to connect. Mb2hal is very efficient managing multiple devices, transactions and links.  Currently I am monitoring two axis drivers using a Rs232 port, a VFD driver using another Rs232 port, and a remote I/O using TCP/IP.
de: Sie haben mehr als ein Gerät zu verbinden. Mb2hal ist sehr effizient bei der Verwaltung mehrerer Geräte, Transaktionen und Verbindungen.  Derzeit überwache ich zwei Achsentreiber über einen Rs232-Port, einen VFD-Treiber über einen anderen Rs232-Port und eine Remote I/O über TCP/IP.

note: type: Plain text
en: You want a protocol to connect your Arduino to HAL. Look the included sample configuration file, sketch and library for Arduino Modbus.
de: Sie wollen ein Protokoll, um Ihren Arduino mit HAL zu verbinden. Sehen Sie sich die mitgelieferte Beispiel-Konfigurationsdatei, Skizze und Bibliothek für Arduino Modbus an.

note: type: Plain text
en: Create a config file from the example below
de: Erstellen Sie eine Konfigurationsdatei nach folgendem Beispiel

note: type: Plain text
en: Set component name (optional)
de: Komponentenname festlegen (optional)

note: type: Plain text
en: Set `HAL_MODULE_NAME=mymodule` (default `HAL_MODULE_NAME=mb2hal`)
de: Set `HAL_MODULE_NAME=mymodule` (Voreinstellung `HAL_MODULE_NAME=mb2hal`)

note: type: Plain text
en: Load the modbus HAL userspace component
de: Laden der Modbus-HAL-Benutzerspace-Komponente

note: type: Plain text
en: Default component name: `loadusr -W mb2hal config=config_file.ini`
de: Standard-Komponentenname: `loadusr -W mb2hal config=config_file.ini`

note: type: Plain text
en: Custom component name: `loadusr -Wn mymodule mb2hal config=config_file.ini`
de: Benutzerdefinierter Komponentenname: `loadusr -Wn mymodule mb2hal config=config_file.ini`

note: type: Title ===
en: Init Section
de: Init-Abschnitt

note: type: Table
en: Value
de: Wert

note: type: Block title
en: Type
de: Typ

note: type: Table
en: Required
de: Erforderlich

note: type: Table
en: No
de: Nein

note: type: Table
en: Debug level of init and INI file parsing. +
    0 = silent +
    1 = error messages (default) +
    2 = OK confirmation messages +
    3 = debugging messages +
    4 = maximum debugging messages (only in transactions) +
de: Debug-Ebene der Init- und INI-Datei-Analyse. +
    0 = stumm +
    1 = Fehlermeldungen (Standard) +
    2 = OK-Bestätigungsmeldungen +
    3 = Debugging-Meldungen +
    4 = maximale Fehlersuchmeldungen (nur in Transaktionen) +

note: type: Table
en: String
de: Zeichenfolge (engl. string)

note: type: Table
en: HAL module (component) name. Defaults
    to "mb2hal".
de: Name des HAL-Moduls (Komponente). Standardmäßig steht
    auf "mb2hal".

note: type: Table
en: Float
de: Gleitkommazahl (engl. float)

note: type: Table
en: Insert a delay of "FLOAT seconds" between
    transactions in order to not to have a lot of logging and facilitate the debugging.
    Useful when using `DEBUG=3` (NOT `INIT_DEBUG=3`).
    It affects ALL transactions. Use "0.0" for normal activity.
de: Fügen Sie eine Verzögerung von "FLOAT Sekunden" zwischen
    Transaktionen ein, um eine umfangreiche Protokollierung zu vermeiden und die Fehlersuche zu erleichtern.
    Nützlich bei Verwendung von `DEBUG=3` (NICHT `INIT_DEBUG=3`).
    Es betrifft ALLE Transaktionen. Verwenden Sie "0.0" für normale Aktivität.

note: type: Table
en: Yes
de: Ja

note: type: Table
en: The number of total Modbus transactions. There is no maximum.
de: Die Anzahl der gesamten Modbus-Transaktionen. Es gibt kein Maximum.

note: type: Title ===
en: Transaction Sections
de: Transaktionsabschnitte

note: type: Plain text
en: One transaction section is required per transaction, starting at `[TRANSACTION_00]` and counting up sequentially.  If there is a new link (not transaction), you must provide the REQUIRED parameters 1st time.  Warning: Any OPTIONAL parameter not specified are copied from the previous transaction.
de: Für jede Transaktion ist ein Transaktionsabschnitt erforderlich, beginnend mit `[TRANSACTION_00]` und fortlaufend aufsteigend.  Bei einer neuen Verknüpfung (nicht Transaktion) müssen Sie beim ersten Mal die Parameter REQUIRED angeben.  Warnung: Alle nicht angegebenen OPTIONAL-Parameter werden von der vorherigen Transaktion übernommen.

note: type: Table
en: You must specify either a "serial" or
    "tcp" link for the first transaction.
    Later transactions will use the previous transaction link if not
    specified.
de: Sie müssen entweder einen "serial" oder
    "tcp" Link für die erste Transaktion angeben.
    Spätere Transaktionen verwenden den vorherigen Transaktionslink, wenn er nicht
    angegeben.

note: type: Table
en: IP address
de: IP Adresse

note: type: Table
en: The Modbus slave
    device IP address. Ignored if `LINK_TYPE=serial`.
de: Die Modbus-Slave
    IP-Adresse des Geräts. Wird ignoriert, wenn `LINK_TYPE=serial`.

note: type: Table
en: The Modbus slave device TCP port.
    Defaults to 502.  Ignored if `LINK_TYPE=serial`.
de: Der TCP-Port des Modbus-Slave-Geräts.
    Der Standardwert ist 502.  Wird ignoriert, wenn `LINK_TYPE=serial`.

note: type: Table
en: The serial port.
    For example "/dev/ttyS0". Ignored if `LINK_TYPE=tcp`.
de: Die serielle Schnittstelle.
    Zum Beispiel "/dev/ttyS0". Wird ignoriert, wenn `LINK_TYPE=tcp`.

note: type: Table
en: The baud rate.
    Ignored if `LINK_TYPE=tcp`.
de: Die Baudrate.
    Wird ignoriert, wenn `LINK_TYPE=tcp`.

note: type: Table
en: Data bits.
    One of 5, 6, 7, 8. Ignored if `LINK_TYPE=tcp`.
de: Datenbits.
    Eines von 5, 6, 7, 8. Wird ignoriert, wenn `LINK_TYPE=tcp`.

note: type: Table
en: Data parity.
    One of: even, odd, none. Ignored if `LINK_TYPE=tcp`.
de: Datenparität.
    Eine von: gerade, ungerade, keine. Wird ignoriert, wenn `LINK_TYPE=tcp`.

note: type: Table
en: Stop bits.
    One of 1, 2. Ignored if `LINK_TYPE=tcp`.
de: Stoppbits.
    Eins von 1, 2. Wird ignoriert, wenn `LINK_TYPE=tcp`.

note: type: Table
en: Serial port delay
    between transactions of this section only.
    In ms. Defaults to 0. Ignored if `LINK_TYPE=tcp`.
de: Serial port delay
    ausschließlich zwischen Transaktionen in diesem Abschnitt.
    In ms. Standardwert ist 0. Ignoriert wenn `LINK_TYPE=tcp`.

note: type: Table
en: Modbus slave number.
de: Modbus-Slave-Nummer.

note: type: Table
en: The first element address.
de: Die erste Elementadresse.

note: type: Table
en: Unless `PIN_NAMES` is specified
de: Sofern nicht `PIN_NAMES` angegeben ist

note: type: Table
en: The
    number of elements. It is an error to specify both `NELEMENTS` and
    `PIN_NAMES`. The pin names will be sequential numbers
    e.g. `mb2hal.plcin.01`
de: Die
    Anzahl der Elemente. Es ist ein Fehler, sowohl `NELEMENTS` als auch
    PIN_NAMES` ANZUGEBEN. Die Pin-Namen werden fortlaufende Nummern sein
    z.B. `mb2hal.plcin.01`

note: type: Table
en: List
de: Liste

note: type: Table
en: Unless `NELEMENTS` is specified
de: Sofern nicht `NELEMENTS` angegeben ist

note: type: Table
en: A list of
    element names.
    These names will be used for the pin names, e.g.
    mb2hal.plcin.cycle_start. +
    *NOTE:* There must be no white space characters in the list. Example:
    `PIN_NAMES=cycle_start,stop,feed_hold`
de: Eine Liste von
    Elementnamen.
    Diese Namen werden für die Pin-Namen verwendet, z.B.
    mb2hal.plcin.cycle_start. +
    *HINWEIS:* In der Liste dürfen keine Leerzeichen vorkommen. Beispiel:
    `PIN_NAMES=cycle_start,stop,feed_hold`

note: type: Table
en: Modbus transaction function code (see link:https://modbus.org/specs.php[specifications]):
    
    • fnct_01_read_coils +
    • fnct_02_read_discrete_inputs +
    • fnct_03_read_holding_registers +
    • fnct_04_read_input_registers      +
    • fnct_05_write_single_coil +
    • fnct_06_write_single_register +
    • fnct_15_write_multiple_coils +
    • fnct_16_write_multiple_registers +
de: Modbus Transaction Functions-Code (siehe link:https://modbus.org/specs.php[Spezifikationen]):
    
    • fnct_01_read_coils +
    • fnct_02_read_discrete_inputs +
    • fnct_03_read_holding_registers +
    • fnct_04_read_input_registers      +
    • fnct_05_write_single_coil +
    • fnct_06_write_single_register +
    • fnct_15_write_multiple_coils +
    • fnct_16_write_multiple_registers +

note: type: Table
en: Response timeout for this transaction. In ms. Defaults to 500 ms. This
    is how much to wait for 1st byte before raise an error.
de: Antwort-Timeout für diese Transaktion. In ms. Der Standardwert ist 500 ms. Diese
    bestimmt, wie lange auf das 1. Byte gewartet werden soll, bevor ein Fehler ausgelöst wird.

note: type: Table
en: Byte timeout for this
    transaction. In ms. Defaults to 500 ms. This is how much to wait from
    byte to byte before raise an error.
de: Byte-Timeout für diese
    Transaktion. In ms. Der Standardwert ist 500 ms. Dies bestimmt die Zeitspanne, die von
    Byte zu Byte warten gewartet wird, bevor ein Fehler ausgelöst wird.

note: type: Table
en: Instead of giving the transaction
    number, use a name. Example: `mb2hal.00.01`
    could become `mb2hal.plcin.01`. The name must not exceed 28 characters.
    *NOTE:* when using names be careful that
    you don't end up with two transactions using the same name.
de: Anstatt die Transaktions-
    Nummer anzugeben, verwenden Sie einen Namen. Beispiel: `mb2hal.00.01`
    könnte zu `mb2hal.plcin.01` werden. Der Name darf nicht länger als 28 Zeichen sein.
    *HINWEIS:* Achten Sie bei der Verwendung von Namen darauf, dass
    Sie nicht zwei Transaktionen mit demselben Namen erhalten.

note: type: Table
en: Maximum update rate in Hz. Defaults to
    0.0 (0.0 = as soon as available = infinite).
    *NOTE:* This is a maximum rate and the actual rate may be lower. If you
    want to calculate it in ms use (1000 / required_ms).
    Example: 100 ms = `MAX_UPDATE_RATE=10.0`,
    because 1000.0 ms / 100.0 ms = 10.0 Hz.
de: Maximale Aktualisierungsrate in Hz. Standardwert ist
    0.0 (0.0 = so schnell wie möglich = unendlich).
    *HINWEIS:* Dies ist eine maximale Rate, die tatsächliche Rate kann niedriger sein. Wenn Sie
    Wenn Sie sie in ms berechnen wollen, verwenden Sie (1000 / required_ms).
    Beispiel: 100 ms = `MAX_UPDATE_RATE=10.0`,
    denn 1000,0 ms / 100,0 ms = 10,0 Hz.

note: type: Table
en: Debug level for this transaction only.
    See `INIT_DEBUG` parameter above.
de: Debug-Level nur für diese Transaktion.
    Siehe Parameter `INIT_DEBUG` oben.

note: type: Title ===
en: Error codes
de: Fehlercodes

note: type: Plain text
en: While debugging transactions, note the returned "`ret[]`" value correspond to:
de: Beachten Sie beim Debuggen von Transaktionen, dass der zurückgegebene Wert "`ret[]`" entspricht:

note: type: Plain text
en: Modbus protocol exceptions:
de: Ausnahmen vom Modbus-Protokoll:

note: type: Plain text
en: 0x01 - ILLEGAL_FUNCTION        - the FUNCTION code received in the query is not allowed or invalid.
de: 0x01 - ILLEGAL_FUNCTION - der in der Abfrage empfangene FUNCTION-Code ist nicht erlaubt oder ungültig.

note: type: Plain text
en: 0x02 - ILLEGAL_DATA_ADDRESS    - the DATA ADDRESS received in the query is not an allowable address for the slave or is invalid.
de: 0x02 - ILLEGAL_DATA_ADDRESS - die in der Abfrage empfangene DATA ADDRESS ist keine zulässige Adresse für den Slave oder ist ungültig.

note: type: Plain text
en: 0x03 - ILLEGAL_DATA_VALUE      - a VALUE contained in the data query field is not an allowable value or is invalid.
de: 0x03 - ILLEGAL_DATA_VALUE - ein im Datenabfragefeld enthaltener WERT ist kein zulässiger Wert oder ist ungültig.

note: type: Plain text
en: 0x04 - SLAVE_DEVICE_FAILURE    - SLAVE (or MASTER) device unrecoverable FAILURE while attempting to perform the requested action.
de: 0x04 - SLAVE_DEVICE_FAILURE - Nicht wiederherstellbarer Fehler des SLAVE- (oder MASTER-) Geräts beim Versuch, die angeforderte Aktion durchzuführen.

note: type: Plain text
en: 0x04 - SERVER_FAILURE          - (see above).
de: 0x04 - SERVER_FAILURE - (siehe oben).

note: type: Plain text
en: 0x05 - ACKNOWLEDGE             - This response is returned to PREVENT A TIMEOUT in the master. A long duration of time is required to process the request in the slave.
de: 0x05 - ACKNOWLEDGE - Diese Antwort wird zurückgegeben, um einen TIMEOUT im Master zu VERMEIDEN. Für die Bearbeitung der Anfrage im Slave ist eine lange Zeitspanne erforderlich.

note: type: Plain text
en: 0x06 - SLAVE_DEVICE_BUSY       - The slave (or server) is BUSY.  Retransmit the request later.
de: 0x06 - SLAVE_DEVICE_BUSY - Der Slave (oder Server) ist BUSY.  Übertragen Sie die Anfrage später erneut.

note: type: Plain text
en: 0x06 - SERVER_BUSY             - (see above).
de: 0x06 - SERVER_BUSY - (siehe oben).

note: type: Plain text
en: 0x07 - NEGATIVE_ACKNOWLEDGE    - Unsuccessful programming request using function code 13 or 14.
de: 0x07 - NEGATIVE_ACKNOWLEDGE - Erfolglose Programmieranfrage mit Funktionscode 13 oder 14.

note: type: Plain text
en: 0x08 - MEMORY_PARITY_ERROR     - SLAVE parity error in MEMORY.
de: 0x08 - MEMORY_PARITY_ERROR - SLAVE-Paritätsfehler im SPEICHER.

note: type: Plain text
en: 0x0A (-10) - GATEWAY_PROBLEM_PATH   - Gateway path(s) not available.
de: 0x0A (-10) - GATEWAY_PROBLEM_PATH - Gateway-Pfad(e) nicht verfügbar.

note: type: Plain text
en: 0x0B (-11) - GATEWAY_PROBLEM_TARGET - The target device failed to respond (generated by master, not slave).
de: 0x0B (-11) - GATEWAY_PROBLEM_TARGET - Das Zielgerät hat nicht geantwortet (vom Master, nicht vom Slave erzeugt).

note: type: Plain text
en: Program or connection:
de: Programm oder Verbindung:

note: type: Title ==
en: Example config file
de: Beispiel Konfigurationsdatei

note: type: Plain text
en: Click link:mb2hal_HOWTO.ini[here] to download.
de: Klicken Sie zum Herunterladen auf den Link:mb2hal_HOWTO.ini[hier].

note: type: Plain text
en: [yellow yellow-background]#Yellow# = New in LinuxCNC 2.9
de: [gelb gelb-Hintergrund]#Yellow# = Neu in LinuxCNC 2.9

note: type: Plain text
en: `NELEMENTS` needs to be 1 or `PIN_NAMES` must contain just one name.
de: `NELEMENTS` muss 1 sein oder `PIN_NAMES` darf nur einen Namen enthalten.

note: type: Plain text
en: Both pin values are added and limited to 65535 (UINT16_MAX). Use one and let the other open (read as 0).
de: Beide Pin-Werte werden addiert und auf 65535 (UINT16_MAX) begrenzt. Verwenden Sie einen und lassen Sie den anderen offen (gelesen als 0).

note: type: delimited block =
en: m = `HAL_TX_NAME` or transaction number if not set, n = element number (`NELEMENTS`) or name from `PIN_NAMES`
de: m = `HAL_TX_NAME` oder Transaktionsnummer, falls nicht gesetzt, n = Elementnummer (`NELEMENTS`) oder Name aus `PIN_NAMES`

note: type: delimited block =
en: `mb2hal.00.01.<type>` (transaction=00, second register=01 (00 is the first one))
de: `mb2hal.00.01.<type>` (Transaktion=00, zweites Register=01 (00 ist das erste))

note: type: delimited block =
en: `mb2hal.TxName.01.<type>` (HAL_TX_NAME=TxName, second register=01 (00 is the first one))
de: `mb2hal.TxName.01.<type>` (HAL_TX_NAME=TxName, zweites Register=01 (00 ist das erste))

note: type: Title =
en: Mitsub VFD Driver
de: Mitsub VFD-Treiber

note: type: Plain text
en: This is a userspace HAL program, written in Python, to control VFD's from Mitsubishi.
    Specifically the A500 F500 E500 A500 D700 E700 F700 series - others may work.
    mitsub_vfd supports serial control using the RS485 protocol.
    Conversion from USB or serial port to RS485 requires special hardware. +
de: Dies ist ein Benutzerraum-HAL-Programm, geschrieben in Python, zur Steuerung von VFDs von Mitsubishi.
    Speziell die A500 F500 E500 A500 D700 E700 F700 Serie - andere können funktionieren.
    mitsub_vfd unterstützt die serielle Steuerung über das RS485-Protokoll.
    Die Konvertierung von USB oder serieller Schnittstelle zu RS485 erfordert spezielle Hardware. +

note: type: Plain text
en: Since this is a userspace program it can be affected by computer loading and latency. It is possible to lose control of the VFDs. It is optional to set the VFD to stop if it loses communication if that is desirable. One should always have an Estop circuit that kills the power to the unit in case of emergency.
de: Da es sich um ein Userspace-Programm handelt, kann es durch Computerbelastung und Latenzzeiten beeinträchtigt werden. Es ist möglich, die Kontrolle über die VFDs zu verlieren. Es ist optional möglich, den VFD so einzustellen, dass er bei Verlust der Kommunikation stoppt, falls dies gewünscht wird. Es sollte immer eine Estop-Schaltung vorhanden sein, die im Notfall die Stromzufuhr zum Gerät unterbricht.

note: type: Plain text
en: The above command says:
    loadusr, wait for coolant pins to be ready, component mitsub_vfd, with 2 slaves named spindle (slave #2) and coolant (slave #1)
de: Der obige Befehl lautet:
    loadusr, warten bis Kühlmittelpins bereit sind, Komponente mitsub_vfd, mit 2 Slaves namens Spindel (Slave #2) und Kühlmittel (Slave #1)

note: type: Plain text
en: The command line options are:
de: Die Kommandozeilenoptionen sind:

note: type: Plain text
en: '-b or --baud <rate>' : set the baud rate - all networked VFDs must be the same
de: '-b oder --baud <rate>' : die Baudrate einstellen - muss für alle vernetzten VFDs gleich sein

note: type: Plain text
en: '-p or --port <device path>' : sets the port to use such as /dev/ttyUSB0
de: '-p oder --port <device path>' : legt den zu verwendenden Anschluss fest, z. B. /dev/ttyUSB0

note: type: Plain text
en: '<name>=<slave#>' : sets the HAL component/pin name and slave number.
de: '<name>=<slave#>' : setzt den Namen der HAL-Komponente/des Pins und die Slave-Nummer.

note: type: Plain text
en: Debugging can be toggled by setting the debug pin true.
de: Das Debugging kann durch Setzen des Debug-Pins auf true umgeschaltet werden.

note: type: Plain text
en: Turning on debugging will result in a flood of text in the terminal.
de: Das Einschalten der Fehlersuche (engl. debugging) führt zu einer Flut von Text im Terminal.

note: type: Plain text
en: Where <n> is +mitsub_vfd+ or the name given during loading.
de: Dabei steht <n> für +mitsub_vfd+ oder den beim Laden vergebenen Namen.

note: type: Plain text
en: '<n>.fwd' (bit, in)  True sets motion forward, False sets reverse.
de: '<n>.fwd' (bit, in) True setzt Bewegung vorwärts, False setzt Bewegung rückwärts.

note: type: Plain text
en: '<n>.run' (bit, in)  True sets the VFD in motion based on the .fwd pin.
de: '<n>.run' (bit, in) True setzt den VFD basierend auf dem .fwd-Pin in Bewegung.

note: type: Plain text
en: '<n>.debug' (bit, in)  Prints debug info to the terminal.
de: '<n>.debug' (bit, in) Gibt Debug-Informationen auf dem Terminal aus.

note: type: Plain text
en: '<n>.alarm' (bit, out)  signals an alarm state of VFD.
de: '<n>.alarm' (bit, out) signalisiert einen Alarmzustand des VFD.

note: type: Plain text
en: '<n>.up-to-speed' (bit, out)  when drive is at commanded speed (speed-tolerance is set on vfd)
de: '<n>.up-to-speed' (bit, out) wenn der Antrieb die Solldrehzahl erreicht hat (die Drehzahltoleranz ist im VFD eingestellt)

note: type: Plain text
en: '<n>.monitor' (bit, in)  some models (eg E500) cannot monitor status -set the monitor pin to false in this case pins such as up-to-speed, amps, alarm and status bits are not updated.
de: '<n>.monitor' (bit, in) einige Modelle (z.B. E500) können den Status nicht überwachen - setzen Sie den Monitor-Pin auf false in diesem Fall werden Pins wie Up-to-Speed, Ampere, Alarm und Statusbits nicht aktualisiert.

note: type: Plain text
en: '<n>.motor-cmd' (float, in)  commanded speed to the VFD (scaled to hertz by default).
de: '<n>.motor-cmd' (float, in) dem VFD befohlene Geschwindigkeit (standardmäßig in Hertz skaliert).

note: type: Plain text
en: '<n>.motor-fb' (float, out)  feedback speed from the VFD (scaled to hertz by default).
de: '<n>.motor-fb' (float, out) Rückgemeldete Gschwindigkeit vom VFD (standardmäßig auf Hertz skaliert).

note: type: Plain text
en: '<n>.motor-amps' (float, out)  Current amperage output of motor.
de: '<n>.motor-amps' (float, out) Aktuelle Stromstärke des Motors.

note: type: Plain text
en: '<n>.motor-power' (float, out)  Current power output of motor.
de: '<n>.motor-power' (float, out) Aktuelle Ausgangsleistung des Motors.

note: type: Plain text
en: '<n>.scale-cmd' (float, in)  Scales the motor-cmd pin to arbitrary units. default 1 = Hertz.
de: '<n>.scale-cmd' (float, in) Skaliert den Motor-Cmd-Pin auf beliebige Einheiten. Voreinstellung 1 = Hertz.

note: type: Plain text
en: '<n>.scale-fb' (float, in)  Scales the motor-fb pin to arbitrary units. default 1 = Hertz.
de: '<n>.scale-fb' (float, in) Skaliert den Motor-fb-Pin auf beliebige Einheiten. Voreinstellung 1 = Hertz.

note: type: Plain text
en: '<n>.scale-amps' (float, in)  Scales the motor-amps pin to arbitrary units. default 1 = amps.
de: '<n>.scale-amps' (float, in) Skaliert den Motor-Ampère-Pin auf beliebige Einheiten. Voreinstellung 1 = Ampere.

note: type: Plain text
en: '<n>.scale-power' (float, in)  Scales the motor-power pin to arbitrary units. default 1 = .
de: '<n>.scale-power' (float, in) Skaliert den Motor-Leistungs-Pin auf beliebige Einheiten. default 1 = .

note: type: Plain text
en: '<n>.estop' (bit, in)  puts the VFD into emergency-stopped status.
de: '<n>.estop' (bit, in) versetzt den VFD in den Notaus-Status.

note: type: Plain text
en: '<n>.status-bit-N' (bit, out)  N = 0 to 7, Status bits are user configurable on the VFD. bit 3 should be set to at speed and bit 7 should be set to alarm. others are free to be set as required.
de: '<n>.status-bit-N' (bit, out) N = 0 bis 7, Statusbits sind auf dem VFD vom Benutzer konfigurierbar. Bit 3 sollte auf "Geschwindigkeit erreicht" (engl. at speed) und bit 7 auf "Alarm" gesetzt werden. Andere können nach Bedarf gesetzt werden.

note: type: delimited block -
en: #
    # example usage of the Mitsubishi VFD driver
    #
    loadusr -Wn coolant mitsub_vfd spindle=02 coolant=01
de: #
    # Beispiel für die Verwendung des Mitsubishi VFD-Treibers
    #
    loadusr -Wn coolant mitsub_vfd spindle=02 coolant=01

note: type: delimited block -
en: # **************** Spindle VFD setup slave 2 *********************
    net spindle-vel-cmd               spindle.motor-cmd
    net spindle-cw                    spindle.fwd
    net spindle-on                    spindle.run
    net spindle-at-speed              spindle.up-to-speed
    net estop-out                     spindle.estop
    #       cmd scaled to RPM
    setp spindle.scale-cmd .135
    #       feedback is in rpm
    setp spindle.scale-fb 7.411
    #       allows us to see status
    setp spindle.monitor 1
de: **************** Spindle VFD setup slave 2 *********************
    net spindel-vel-cmd spindel.motor-cmd
    net spindel-cw spindel.fwd
    net spindel-on spindel.run
    net spindel-at-speed spindel.up-to-speed
    net estop-out spindel.estop
    # cmd skaliert auf RPM
    setp spindel.scale-cmd .135
    # Rückmeldung erfolgt in U/min
    setp spindel.scale-fb 7.411
    # ermöglicht es uns, den Status zu sehen
    setp spindel.monitor 1

note: type: delimited block -
en: # *************** Coolant vfd setup slave 3 ***********************
    net coolant-flood               coolant.run
    net coolant-is-on               coolant.up-to-speed   gladevcp.coolant-on-led
    net estop-out                   coolant.estop
    #       cmd and feedback scaled to hertz
    setp coolant.scale-cmd 1
    setp coolant.scale-fb 1
    #       command full speed
    setp coolant.motor-cmd 60
    #       allows us to see status
    setp coolant.monitor 1
de: *************** Kühlmittel vfd setup slave 3 ***********************
    net coolant-flood               coolant.run
    net coolant-is-on               coolant.up-to-speed   gladevcp.coolant-on-led
    net estop-out                   coolant.estop
    # cmd und Rückmeldung skaliert auf Hertz
    setp coolant.scale-cmd 1
    setp coolant.scale-fb 
    # Befehl volle Geschwindigkeit
    setp coolant.motor-cmd 60
    # ermöglicht die Anzeige des Status
    setp coolant.monitor 1

note: type: Title ==
en: Configuring the Mitsubishi VFD for serial usage
de: Konfigurieren des Mitsubishi VFD für die serielle Nutzung

note: type: Title ===
en: Connecting the Serial Port
de: Anschließen der seriellen Schnittstelle

note: type: Plain text
en: The Mitsubishi VFDs have an RJ-45 jack for serial communication.
    Since they use RS485 protocol,  they can be networked together point to point.
    This driver was tested using the Opto22 AC7A to convert from RS232 to RS485.
de: Die Mitsubishi VFDs haben eine RJ-45-Buchse für die serielle Kommunikation.
    Da sie das RS485-Protokoll verwenden, können sie Punkt-zu-Punkt miteinander vernetzt werden.
    Dieser Treiber wurde mit dem Opto22 AC7A getestet, um von RS232 auf RS485 zu konvertieren.

note: type: Title ===
en: Modbus setup
de: Modbus-Einrichtung

note: type: Plain text
en: Referenced manuals:
de: Referenzhandbücher:

note: type: Plain text
en: 'communication option reference manual' and 'A500 technical manual' for 500 series.
    'Fr-A700 F700 E700 D700 technical manual' for the 700 series
de: Referenzhandbuch für Kommunikationsoptionen" und "Technisches Handbuch A500" für die Serie 500.
    Technisches Handbuch "Fr-A700 F700 E700 D700" für die Serie 700

note: type: Plain text
en: The VFD must have PR settings adjusted manually for serial communication.
    One must power cycle the VFD for some of these to register eg PR 79
de: Die PR-Einstellungen des VFD müssen für die serielle Kommunikation manuell angepasst werden.
    Man muss den VFD einschalten, damit einige dieser Einstellungen registriert werden, z. B. PR 79

note: type: Plain text
en: 'PR 77' set to 1 '-to unlock other PR modification.'
de: 'PR 77' auf 1 gesetzt '-um andere PR-Änderungen freizuschalten.'

note: type: Plain text
en: 'PR 79' set to 1 or 0 '-for communication thru serial.'
de: 'PR 79' auf 1 oder 0 gesetzt '-für die Kommunikation über die serielle Schnittstelle '

note: type: Plain text
en: 'PR 117' set to 0-31 '-slave number, driver must reference same number.'
de: 'PR 117' auf 0-31 gesetzt '-Slave-Nummer, Treiber muss auf dieselbe Nummer verweisen.'

note: type: Plain text
en: 'PR 118' tested with 96 '-baud rate (can be set to 48,96,192) if driver is also set.'
de: 'PR 118' getestet mit 96 '-Baudrate (kann auf 48,96,192 eingestellt werden), wenn auch der Treiber eingestellt ist.'

note: type: Plain text
en: 'PR 119' set to 0 '-stop bit/data length (8 bits, two stop)'
de: 'PR 119' auf 0 gesetzt '-Stoppbit/Datenlänge (8 Bits, zwei Stopps)'

note: type: Plain text
en: 'PR 120' set to 0 '-no parity'
de: PR 120' auf 0 gesetzt '-keine Parität'

note: type: Plain text
en: 'PR 121' set to 1-10 '-if 10 (maximuim) COM errors then VFD faults.'
de: 'PR 121' eingestellt auf 1-10 '-wenn 10 (maximal) COM-Fehler, dann VFD-Fehler '

note: type: Plain text
en: 'PR 122' tested with 9999 '-if communication is lost VFD will not error.'
de: 'PR 122' getestet mit 9999 '-wenn die Kommunikation verloren geht, hat der VFD keinen Fehler '

note: type: Plain text
en: 'PR 123' set to 9999 '-no wait time is added to the serial data frame.'
de: 'PR 123' auf 9999 eingestellt '-dem seriellen Datenrahmen wird keine Wartezeit hinzugefügt.'

note: type: Plain text
en: 'PR 124' set to 0 '-no carriage return at end of line.'
de: 'PR 124' auf 0 gesetzt '-kein Zeilenumbruch am Ende der Zeile.'

note: type: Title =
en: Motenc Driver
de: Motenc Treiber

note: type: Plain text
en: Vital Systems Motenc-100 and Motenc-LITE
de: Vital Systems Moenc-100 und Moenc-LITE

note: type: Plain text
en: The Vital Systems Motenc-100 and Motenc-LITE are 8- and 4-channel servo control boards. The Motenc-100 provides 8 quadrature encoder counters, 8 analog inputs, 8 analog outputs, 64 (68?) digital inputs, and 32 digital outputs. The Motenc-LITE has only 4 encoder counters, 32 digital inputs and 16 digital outputs, but it still has 8 analog inputs and 8 analog outputs. The driver automatically identifies the installed board and exports the appropriate HAL objects.
de: Die Vital Systems Motenc-100 und Motenc-LITE sind 8- und 4-Kanal-Servokontrollkarten. Die Motenc-100 bietet 8 Quadratur-Encoder-Zähler, 8 analoge Eingänge, 8 analoge Ausgänge, 64 (68?) digitale Eingänge und 32 digitale Ausgänge. Die Motenc-LITE hat nur 4 Encoderzähler, 32 digitale Eingänge und 16 digitale Ausgänge, aber immer noch 8 analoge Eingänge und 8 analoge Ausgänge. Der Treiber identifiziert automatisch die installierte Karte und exportiert die entsprechenden HAL-Objekte.

note: type: Plain text
en: Up to 4 boards may be used in one system.
de: Es können bis zu 4 Karten in einem System verwendet werden.

note: type: Plain text
en: In the following pins, parameters, and functions, <board> is the board ID. According to the naming conventions the first board should always have an ID of zero. However this driver sets the ID based on a pair of jumpers on the board, so it may be non-zero even if there is only one board.
de: In den folgenden Pins, Parametern und Funktionen ist <board> die ID der Karte. Gemäß den Namenskonventionen sollte die erste Karte immer eine ID von Null haben. Dieser Treiber setzt die ID jedoch auf der Grundlage eines Jumperpaares auf der Karte, so dass sie auch bei nur einer Karte ungleich Null sein kann.

note: type: Plain text
en: '(s32) motenc.<board>.enc-<channel>-count' - Encoder position, in counts.
de: "(S32) Motenc. <board>.enc-<channel>-count' - Encoder-Position, in Zählungen.

note: type: Plain text
en: '(float) motenc.<board>.enc-<channel>-position' - Encoder position, in user units.
de: "(float) motenc. <board>.enc-<channel>-position' - Encoder-Position, in Benutzereinheiten.

note: type: Plain text
en: '(bit) motenc.<board>.enc-<channel>-index' - Current status of index pulse input.
de: '(bit) motenc.<board>.enc-<channel>-index' - Aktueller Status des Indeximpulseingangs.

note: type: Plain text
en: '(bit) motenc.<board>.enc-<channel>-idx-latch' - Driver sets this pin true when it latches an index pulse (enabled by latch-index). Cleared by clearing latch-index.
de: '(bit) motenc.<board>.enc-<channel>-idx-latch' - Der Treiber setzt diesen Pin auf true, wenn er einen Indeximpuls hält (aktiviert durch latch-index). Wird durch Löschen von latch-index gelöscht.

note: type: Plain text
en: '(bit) motenc.<board>.enc-<channel>-latch-index' - If this pin is true, the driver will reset the counter on the next index pulse.
de: '(bit) motenc.<board>.enc-<channel>-latch-index' - Wenn dieser Pin true ist, setzt der Treiber den Zähler beim nächsten Indeximpuls zurück.

note: type: Plain text
en: '(bit) motenc.<board>.enc-<channel>-reset-count' - If this pin is true, the counter will immediately be reset to zero, and the pin will be cleared.
de: '(bit) motenc.<board>.enc-<channel>-reset-count' - Wenn dieser Pin wahr ist, wird der Zähler sofort auf Null zurückgesetzt, und der Pin wird gelöscht.

note: type: Plain text
en: '(float) motenc.<board>.dac-<channel>-value' - Analog output value for DAC (in user units, see -gain and -offset)
de: '(float) motenc.<board>.dac-<channel>-value' - Analoger Ausgangswert für DAC (in Benutzereinheiten, siehe -gain und -offset)

note: type: Plain text
en: '(float) motenc.<board>.adc-<channel>-value' - Analog input value read by ADC (in user units, see -gain and -offset)
de: '(float) motenc.<board>.adc-<channel>-value' - Vom ADC gelesener analoger Eingangswert (in Benutzereinheiten, siehe -gain und -offset)

note: type: Plain text
en: '(bit) motenc.<board>.in-<channel>' - State of digital input pin, see canonical digital input.
de: '(bit) motenc.<board>.in-<channel>' - Zustand des digitalen Eingangspins, siehe kanonischer Digitaleingang.

note: type: Plain text
en: '(bit) motenc.<board>.in-<channel>-not' - Inverted state of digital input pin, see canonical digital input.
de: '(bit) motenc.<board>.in-<channel>-not' - Invertierter Zustand des digitalen Eingangspins, siehe kanonischer Digitaleingang.

note: type: Plain text
en: '(bit) motenc.<board>.out-<channel>' - Value to be written to digital output, seen canonical digital output.
de: '(bit) motenc.<board>.out-<channel>' - Wert, der in den digitalen Ausgang geschrieben werden soll, siehe kanonischer digitaler Ausgang.

note: type: Plain text
en: '(bit) motenc.<board>.estop-in' - Dedicated estop input, more details needed.
de: '(bit) motenc.<board>.estop-in' - Separater Notaus-Eingang, weitere Details erforderlich.

note: type: Plain text
en: '(bit) motenc.<board>.estop-in-not' - Inverted state of dedicated estop input.
de: '(bit) motenc.<board>.estop-in-not' - Invertierter Zustand des dedizierten Notaus-Eingangs.

note: type: Plain text
en: '(bit) motenc.<board>.watchdog-reset' - Bidirectional, - Set TRUE to reset watchdog once, is automatically cleared.
de: '(bit) motenc.<board>.watchdog-reset' - Bidirektional, - TRUE setzen, um Watchdog einmal zurückzusetzen, wird automatisch gelöscht.

note: type: Plain text
en: '(float) motenc.<board>.enc-<channel>-scale' - The number of counts / user unit (to convert from counts to units).
de: '(float) motenc.<board>.enc-<channel>-scale' - Die Anzahl der Zählungen / Benutzereinheit (zur Umrechnung von Zählungen in Einheiten).

note: type: Plain text
en: '(float) motenc.<board>.dac-<channel>-offset' - Sets the DAC offset.
de: '(float) motenc.<board>.dac-<channel>-offset' - Setzt den DAC-Offset.

note: type: Plain text
en: '(float) motenc.<board>.dac-<channel>-gain' - Sets the DAC gain (scaling).
de: '(float) motenc.<board>.dac-<channel>-gain' - Setzt den DAC-Gain (engl. für Verstärkung) (Skalierung).

note: type: Plain text
en: '(float) motenc.<board>.adc-<channel>-offset' - Sets the ADC offset.
de: '(float) motenc.<board>.dac-<channel>-offset' - Setzt den DAC-Offset.

note: type: Plain text
en: '(float) motenc.<board>.adc-<channel>-gain' - Sets the ADC gain (scaling).
de: '(float) motenc.<board>.adc-<channel>-gain' - Setzt die ADC gain (engl. für Verstärkung) (Skalierung).

note: type: Plain text
en: '(bit) motenc.<board>.out-<channel>-invert' - Inverts a digital output, see canonical digital output.
de: '(bit) motenc.<board>.out-<channel>-invert' - Invertiert einen digitalen Ausgang, siehe kanonischer digitaler Ausgang.

note: type: Plain text
en: '(u32) motenc.<board>.watchdog-control' - Configures the watchdog.
    The value may be a bitwise OR of the following values:
de: '(u32) motenc.<board>.watchdog-control' - Konfiguriert den Watchdog.
    Der Wert kann ein bitweises ODER der folgenden Werte sein:

note: type: Table
en: Meaning
de: Bedeutung

note: type: Table
en: Timeout is 16ms if set, 8ms if unset
de: Das Timeout beträgt 16 ms, wenn festgelegt, 8 ms, wenn es nicht festgelegt ist

note: type: Table
en: Watchdog is enabled
de: Watchdog ist aktiviert

note: type: Table
en: Watchdog is automatically reset by DAC writes (the HAL dac-write function)
de: Watchdog wird automatisch durch DAC-Schreibvorgänge zurückgesetzt (die HAL dac-write Funktion)

note: type: Plain text
en: Typically, the useful values are 0 (watchdog disabled) or 20 (8ms watchdog enabled, cleared by dac-write).
de: Normalerweise sind die sinnvollen Werte 0 (Watchdog deaktiviert) oder 20 (8ms Watchdog aktiviert, durch dac-write gelöscht).

note: type: Plain text
en: '(u32) motenc.<board>.led-view' - Maps some of the I/O to onboard LEDs.
de: '(u32) motenc.<board>.led-view' - Ordnet einen Teil der E/A den Onboard-LEDs zu.

note: type: Plain text
en: '(funct) motenc.<board>.encoder-read' - Reads all encoder counters.
de: '(funct) motenc.<board>.encoder-read' - Liest alle Encoder-Zähler.

note: type: Plain text
en: '(funct) motenc.<board>.adc-read' - Reads the analog-to-digital converters.
de: '(funct) motenc.<board>.adc-read' - Liest die Analog-Digital-Wandler.

note: type: Plain text
en: '(funct) motenc.<board>.digital-in-read' - Reads digital inputs.
de: '(funct) motenc.<board>.digital-in-read' - Liest digitale Eingänge.

note: type: Plain text
en: '(funct) motenc.<board>.dac-write' - Writes the voltages to the DACs.
de: '(funct) motenc.<board>.dac-write' - Schreibt die Spannungen an die DACs.

note: type: Plain text
en: '(funct) motenc.<board>.digital-out-write' - Writes digital outputs.
de: '(funct) motenc.<board>.digital-out-write' - Schreibt die digitalen Ausgänge.

note: type: Plain text
en: '(funct) motenc.<board>.misc-update' - Updates misc stuff.
de: '(funct) motenc.<board>.misc-update' - Aktualisiert verschiedene Dinge.

note: type: Title =
en: Opto22 Driver
de: Opto22 Treiber

note: type: Plain text
en: *PCI AC5 ADAPTER CARD / HAL DRIVER*
de: *PCI AC5 ADAPTER KARTE / HAL TREIBER*

note: type: Title ==
en: The Adapter Card
de: Die Adapterkarte

note: type: Plain text
en: This is a card made by Opto22 for adapting the PCI port to solid state relay racks such as their standard or G4 series. It has 2 ports that can control up to 24 points each and has 4 on board LEDs. The ports use 50 pin connectors the same as Mesa boards. Any relay racks/breakout boards that work with Mesa Cards should work with this card with the understanding any encoder counters, PWM, etc., would have to be done in software. The AC5 does not have any 'smart' logic on board, it is just an adapter.
de: Dies ist eine Karte von Opto22 für die Anpassung des PCI-Ports an Solid-State-Relais-Racks wie die Standard- oder G4-Serie. Sie hat 2 Ports, die jeweils bis zu 24 Punkte steuern können, und verfügt über 4 LEDs auf der Karte. Die Ports sind mit 50-poligen Anschlüssen ausgestattet, die denen der Mesa-Karten entsprechen. Alle Relais-Racks/Breakout-Boards, die mit Mesa-Karten funktionieren, sollten mit dieser Karte funktionieren, wobei alle Encoder-Zähler, PWM usw. in Software ausgeführt werden müssen. Die AC5 hat keine 'intelligente' Logik an Bord, sie ist nur ein Adapter.

note: type: Plain text
en: See the manufacturer's website for more info:
de: Weitere Informationen finden Sie auf der Website des Herstellers:

note: type: Plain text
en: I would like to thank Opto22 for releasing info in their manual, easing the writing of this driver!
de: Ich möchte Opto22 für die Freigabe von Informationen in ihrem Handbuch danken, die das Schreiben dieses Treibers erleichtert haben!

note: type: Title ==
en: The Driver
de: Der Treiber (engl. driver)

note: type: Plain text
en: This driver is for the PCI AC5 card and will not work with the ISA AC5 card. The HAL driver is a realtime module. It will support 4 cards as is (more cards are possible with a change in the source code). Load the basic driver like so:
de: Dieser Treiber ist für die PCI AC5-Karte und funktioniert nicht mit der ISA AC5-Karte. Der HAL-Treiber ist ein echtzeitfähiges Modul. Er unterstützt 4 Karten (mehr Karten sind mit einer Änderung im Quellcode möglich). Laden Sie den Basistreiber wie folgt:

note: type: Plain text
en: This will load the driver which will search for max 4 boards. It will set I/O of each board's 2 ports to a default setting. The default configuration is for 12 inputs then 12 outputs. The pin name numbers correspond to the position on the relay rack. For example the pin names for the default I/O setting of port 0 would be:
de: Dadurch wird der Treiber geladen, der nach maximal 4 Karten sucht. Er setzt die E/A der 2 Ports jeder Karte auf eine Standardeinstellung. Die Standardkonfiguration ist für 12 Eingänge und 12 Ausgänge. Die Nummern der Pin-Namen entsprechen der Position auf dem Relais-Rack. Zum Beispiel würden die Pin-Namen für die Standard-E/A-Einstellung von Port 0 lauten:

note: type: Plain text
en: 'opto_ac5.0.port0.in-00' - They would be numbered from 00 to 11
de: 'opto_ac5.0.port0.in-00' - Sie würden von 00 bis 11 nummeriert werden

note: type: Plain text
en: 'opto_ac5.0.port0.out-12' - They would be numbered 12 to 23 port 1 would be the same.
de: 'opto_ac5.0.port0.out-12' - Sie würden die Nummern 12 bis 23 tragen, Port 1 wäre analog.

note: type: Plain text
en: 'opto_ac5.[BOARDNUMBER].port[PORTNUMBER].in-[PINNUMBER]-not OUT bit' - Connect a HAL bit signal to this pin to read an I/O point from the card. The PINNUMBER represents the position in the relay rack. Eg.  PINNUMBER 0 is position 0 in a Opto22 relay rack and would be pin 47 on the 50 pin header connector. The -not pin is inverted so that LOW gives TRUE and HIGH gives FALSE.
de: 'opto_ac5.[BOARDNUMMER].port[PORTNUMMER].in-[PINNUMMER]-not OUT bit' - Schließen Sie ein HAL-Bit-Signal an diesen Pin an, um einen I/O-Punkt von der Karte zu lesen. Die PINNUMMER steht für die Position im Relaisgestell. Z.B. PINNUMMER 0 ist Position 0 in einem Opto22-Relaisrack und wäre Pin 47 auf dem 50-poligen Stecker. Der -not-Pin ist invertiert, so dass LOW TRUE und HIGH FALSE ergibt.

note: type: Plain text
en: 'opto_ac5.[BOARDNUMBER].port[PORTNUMBER].out-[PINNUMBER] IN bit' - Connect a HAL bit signal to this pin to write to an I/O point of the card. The PINNUMBER represents the position in the relay rack.Eg.  PINNUMBER 23 is position 23 in a Opto22 relay rack and would be pin 1 on the 50 pin header connector.
de: 'opto_ac5.[BOARDNUMMER].port[PORTNUMMER].out-[PINNUMMER] IN bit' - Schließen Sie ein HAL-Bit-Signal an diesen Pin an, um auf einen E/A-Punkt der Karte zu schreiben. Die PINNUMMER steht für die Position im Relais-Rack, z.B. PINNUMMER 23 ist Position 23 in einem Opto22-Relais-Rack und wäre Pin 1 auf dem 50-poligen Pfostenverbinder.

note: type: Plain text
en: 'opto_ac5.[BOARDNUMBER].led[NUMBER] OUT bit' - Turns one of the 4 onboard LEDs on/off. LEDs are numbered 0 to 3.
de: 'opto_ac5.[BOARDNUMBER].led[NUMBER] OUT bit' - Schaltet eine der 4 Onboard-LEDs ein/aus. Die LEDs sind von 0 bis 3 nummeriert.

note: type: Plain text
en: BOARDNUMBER can be 0-3 PORTNUMBER can be 0 or 1. Port 0 is closest to the card bracket.
de: BOARDNUMBER kann 0-3 sein PORTNUMBER kann 0 oder 1 sein. Anschluss 0 liegt am nächsten an der Kartenhalterung.

note: type: Plain text
en: 'opto_ac5.[BOARDNUMBER].port[PORTNUMBER].out-[PINNUMBER]-invert W bit' - When TRUE, invert the meaning of the corresponding -out pin so that TRUE gives LOW and FALSE gives HIGH.
de: 'opto_ac5.[BOARDNUMBER].port[PORTNUMBER].out-[PINNUMBER]-invert W bit' - Bei TRUE wird die Bedeutung des entsprechenden -out-Pins invertiert, so dass TRUE LOW und FALSE HIGH ergibt.

note: type: SH
en: FUNCTIONS
de: FUNKTIONEN

note: type: Plain text
en: 'opto_ac5.0.digital-read' - Add this to a thread to read all the input points.
de: 'opto_ac5.0.digital-read' - Fügen Sie dies zu einem Thread hinzu, um alle Eingabepunkte zu lesen.

note: type: Plain text
en: 'opto_ac5.0.digital-write' - Add this to a thread to write all the output points and LEDs.
de: 'opto_ac5.0.digital-write' - Fügen Sie dies zu einem Thread hinzu, um alle Ausgangspunkte und LEDs zu schreiben.

note: type: Plain text
en: For example the pin names for the default I/O setting of port 0 would be:
de: Die Pin-Namen für die Standard-E/A-Einstellung von Anschluss 0 lauten zum Beispiel:

note: type: Plain text
en: They would be numbered from 00 to 11
de: Sie würden von 00 bis 11 nummeriert werden.

note: type: Plain text
en: They would be numbered 12 to 23 port 1 would be the same.
de: Sie wären mit 12 bis 23 nummeriert, Port 1 wäre derselbe.

note: type: Title ==
en: Configuring I/O Ports
de: Konfigurieren von E/A-Ports (engl. I/O ports)

note: type: Plain text
en: To change the default setting load the driver something like so:
de: Um die Standardeinstellung zu ändern, laden Sie den Treiber etwa so:

note: type: Plain text
en: Of course changing the numbers to match the I/O you would like. Each port can be set up different.
de: Natürlich passen Sie die Zahlen so an, dass sie mit dem gewünschten E/A (engl. I/P) übereinstimmen. Jeder Anschluss kann anders eingerichtet werden.

note: type: Plain text
en: Here's how to figure out the number: The configuration number represents a 32 bit long code to tell the card which I/O points are output vrs input. The lower 24 bits are the I/O points of one port. The 2 highest bits are for 2 of the on board LEDs. A one in any bit position makes the I/O point an output. The two highest bits must be output for the LEDs to work. The driver will automatically set the two highest bits for you, we won't talk about them.
de: Auf diese Weise kann man die Nummer herausfinden: Die Konfigurationsnummer ist ein 32 Bit langer Code. Dieser teilt der Karte mit, welche E/A-Punkte Ausgang bzw. Eingang sind. Die unteren 24 Bits sind die E/A-Punkte eines Ports. Die 2 höchsten Bits sind für 2 der LEDs auf der Karte. Eine Eins in einer beliebigen Bitposition macht den E/A-Punkt zu einem Ausgang. Die beiden höchsten Bits müssen ausgegeben werden, damit die LEDs funktionieren. Der Treiber setzt die beiden höchsten Bits automatisch für Sie, wir werden nicht darüber sprechen.

note: type: Plain text
en: The easiest way to do this is to fire up the calculator under APPLICATIONS/ACCESSORIES. Set it to scientific (click view). Set it BINARY (radio button Bin). Press 1 for every output you want and/or zero for every input. Remember that HAL pin 00 corresponds to the rightmost bit. 24 numbers represent the 24 I/O points of one port. So for the default setting (12 inputs then 12 outputs) you would push 1 twelve times (that's the outputs) then 0 twelve times (that's the inputs). Notice the first I/O point is the lowest (rightmost) bit.  (that bit corresponds to HAL pin 00 .looks backwards) You should have 24 digits on the screen. Now push the Hex radio button. The displayed number (fff000) is the configport number ( put a '0x' in front of it designating it as a HEX number).
de: Am einfachsten ist es, den Taschenrechner unter ANWENDUNGEN/ZUBEHÖR zu starten. Stellen Sie ihn auf wissenschaftlich ein (klicken Sie auf Ansicht). Stellen Sie ihn auf BINÄR (Optionsfeld Bin). Drücken Sie 1 für jeden gewünschten Ausgang und/oder Null für jeden Eingang. Denken Sie daran, dass der HAL-Pin 00 dem ganz rechten Bit entspricht. 24 Zahlen stehen für die 24 E/A-Punkte eines Ports. Für die Standardeinstellung (12 Eingänge und 12 Ausgänge) würden Sie also zwölfmal die 1 drücken (das sind die Ausgänge) und zwölfmal die 0 (das sind die Eingänge). Beachten Sie, dass der erste E/A-Punkt das niedrigste (ganz rechte) Bit ist.  (Dieses Bit entspricht dem HAL-Pin 00.) Sie sollten 24 Ziffern auf dem Bildschirm haben. Drücken Sie nun die Optionsschaltfläche HEX. Die angezeigte Zahl (fff000) ist die Konfigurationsportnummer (setzen Sie ein '0x' davor, um sie als HEX-Zahl zu kennzeichnen).

note: type: Plain text
en: Another example: To set the port for 8 outputs and 16 inputs (the same as a Mesa card). Here is the 24 bits represented in a BINARY number. Bit 1 is the rightmost number:
de: Ein anderes Beispiel: Einstellen des Ports auf 8 Ausgänge und 16 Eingänge (wie bei einer Mesa-Karte). Hier sind die 24 Bits in einer BINÄREN Zahl dargestellt. Bit 1 ist die ganz rechte Zahl:

note: type: Block title
en: 16 zeros for the 16 inputs and 8 ones for the 8 outputs
de: 16 Nullen für die 16 Eingänge und 8 Einsen für die 8 Ausgänge

note: type: Plain text
en: This converts to FF on the calculator, so 0xff is the number to use for portconfig0 and/or portconfig1 when loading the driver.
de: Das wird auf dem Taschenrechner in FF umgewandelt, so dass 0xff die Nummer ist, die beim Laden des Treibers für portconfig0 und/oder portconfig1 zu verwenden ist.

note: type: Title ==
en: Pin Numbering
de: Pin-Nummerierung

note: type: Plain text
en: HAL pin 00 corresponds to bit 1 (the rightmost) which represents position 0 on an Opto22 relay rack. HAL pin 01 corresponds to bit 2 (one spot to the left of the rightmost) which represents position 1 on an Opto22 relay rack. HAL pin 23 corresponds to bit 24 (the leftmost) which represents position 23 on an Opto22 relay rack.
de: Der HAL-Pin 00 entspricht dem Bit 1 (ganz rechts), das die Position 0 auf einem Opto22-Relaisgestell darstellt. HAL-Pin 01 entspricht Bit 2 (eine Stelle links vom rechten Rand), das die Position 1 auf einem Opto22-Relaismodul darstellt. HAL-Pin 23 entspricht Bit 24 (ganz links), das die Position 23 auf einem Opto22-Relaisrack darstellt.

note: type: Plain text
en: HAL pin 00 connects to pin 47 on the 50 pin connector of each port.  HAL pin 01 connects to pin 45 on the 50 pin connector of each port.  HAL pin 23 connects to pin 1 on the 50 pin connector of each port.
de: HAL-Pin 00 wird an Pin 47 des 50-poligen Anschlusses jedes Ports angeschlossen.  HAL-Pin 01 wird an Pin 45 des 50-poligen Anschlusses jedes Ports angeschlossen.  HAL-Pin 23 wird an Pin 1 des 50-poligen Anschlusses jedes Ports angeschlossen.

note: type: Plain text
en: Note that Opto22 and Mesa use opposite numbering systems: Opto22 position 23 = connector pin 1, and the position goes down as the connector pin number goes up. Mesa Hostmot2 position 1 = connector pin 1, and the position number goes up as the connector pin number goes up.
de: Beachten Sie, dass Opto22 und Mesa entgegengesetzte Nummerierungssysteme verwenden: Opto22 Position 23 = Steckerpin 1, und die Position geht nach unten, wenn die Nummer des Steckerpins nach oben geht. Mesa Hostmot2 Position 1 = Steckerpin 1, und die Positionsnummer steigt, wenn die Nummer des Steckerpins nach oben geht.

note: type: Title =
en: Pico Drivers
de: Pico-Treiber

note: type: Plain text
en: Pico Systems has a family of boards for doing analog servo, stepper, and PWM (digital) servo control. The boards connect to the PC through a parallel port working in EPP mode. Although most users connect one board to a parallel port, in theory any mix of up to 8 or 16 boards can be used on a single parport. One driver serves all types of boards. The final mix of I/O depends on the connected board(s). The driver doesn't distinguish between boards, it simply numbers I/O channels (encoders, etc) starting from 0 on the first board.  The driver is named hal_ppmc.ko The analog servo interface is also called the PPMC for Parallel Port Motion Control.  There is also the Universal Stepper Controller, abbreviated the USC. And the Universal PWM Controller, or UPC.
de: Pico Systems hat eine Familie von Karten für analoge Servo-, Stepper- und PWM (digitale) Servosteuerung entwickelt. Die Karten werden über eine parallele Schnittstelle an den PC angeschlossen und arbeiten im EPP-Modus. Obwohl die meisten Benutzer nur eine Karte an einen Parallelport anschließen, kann theoretisch jede beliebige Kombination von bis zu 8 oder 16 Karten an einem einzigen Parallelport verwendet werden. Ein Treiber bedient alle Arten von Karten. Die endgültige Mischung der E/A hängt von der/den angeschlossenen Karte(n) ab. Der Treiber unterscheidet nicht zwischen den Karten, er nummeriert einfach die E/A-Kanäle (Encoder usw.), beginnend mit 0 auf der ersten Karte.  Der Treiber heißt hal_ppmc.ko Die analoge Servo-Schnittstelle wird auch PPMC für Parallel Port Motion Control genannt.  Es gibt auch den Universal Stepper Controller, abgekürzt USC. Und den Universal PWM Controller, abgekürzt UPC.

note: type: Plain text
en: The 'port_addr' parameter tells the driver what parallel port(s) to check. By default, '<addr1>' is 0x0378, and '<addr2>' and following are not used. The driver searches the entire address space of the enhanced parallel port(s) at 'port_addr', looking for any board(s) in the PPMC family. It then exports HAL pins for whatever it finds. During loading (or attempted loading) the driver prints some useful debugging messages to the kernel log, which can be viewed with 'dmesg'.
de: Der Parameter 'port_addr' teilt dem Treiber mit, welche parallele(n) Schnittstelle(n) dieser überprüfen soll. Standardmäßig ist '<addr1>' 0x0378, und '<addr2>' und folgende werden nicht verwendet. Der Treiber durchsucht den gesamten Adressraum der erweiterten parallelen Schnittstelle(n) unter 'port_addr' und sucht nach einer oder mehreren Karten der PPMC-Familie. Es exportiert dann HAL-Pins für alles, was es findet. Während des Ladens (oder des versuchten Ladens) gibt der Treiber einige nützliche Debugging-Meldungen in das Kernel-Log aus, die mit 'dmesg' eingesehen werden können.

note: type: Plain text
en: Up to 3 parport buses may be used, and each bus may have up to 8 (or possibly 16 PPMC) devices on it.
de: Es können bis zu 3 Parport-Busse verwendet werden, und jeder Bus kann bis zu 8 (oder möglicherweise 16 PPMC) Geräte enthalten.

note: type: Plain text
en: There are several options that can be specified on the loadrt command line.  First, the USC and UPC can have an 8-bit DAC added for spindle speed control and similar functions.  This can be specified with the extradac='0xnn[,0xmm]' parameter.  The part enclosed in [ ] allows you to specify this option on more than one board of the system.  The first hex digit tells which EPP bus is being referred to, it corresponds to the order of the port addresses in the port_addr parameter, where <addr1> would be zero here.  So, for the first EPP bus, the first USC or UPC board would be described as '0x00', the second USC or UPC on the same bus would be '0x02'.  (Note that each USC or UPC takes up two addresses, so if one is at 00, the next would have to be 02.)
de: In der Befehlszeile von loadrt können mehrere Optionen angegeben werden.  Erstens kann bei USC und UPC ein 8-Bit-DAC für die Spindeldrehzahlsteuerung und ähnliche Funktionen hinzugefügt werden.  Dies kann mit dem Parameter extradac='0xnn[,0xmm]' angegeben werden.  Mit dem in [ ] eingeschlossenen Teil können Sie diese Option auf mehr als einer Platine des Systems angeben.  Die erste Hexadezimalziffer gibt an, auf welchen EPP-Bus Bezug genommen wird; sie entspricht der Reihenfolge der Portadressen im Parameter port_addr, wobei <addr1> hier Null wäre.  Für den ersten EPP-Bus würde die erste USC- oder UPC-Platine also mit '0x00' beschrieben, die zweite USC- oder UPC-Platine auf demselben Bus wäre '0x02'. (Beachten Sie, dass jede USC- oder UPC-Platine zwei Adressen belegt, wenn also eine auf 00 steht, müsste die nächste 02 sein.)

note: type: Plain text
en: Alternatively, the 8 digital output pins can be used as additional digital outputs, it works the same way as above with the syntax : extradout=0xnn'.  The extradac and extradout options are mutually exclusive on each board, you can only specify one.
de: Alternativ können die 8 digitalen Ausgangspins als zusätzliche digitale Ausgänge verwendet werden, es funktioniert genauso wie oben mit der Syntax : extradout=0xnn'.  Die Extradac- und Extradout-Optionen schließen sich auf jedem Board gegenseitig aus, Sie können nur eine angeben.

note: type: Plain text
en: The UPC and PPMC encoder boards can timestamp the arrival of encoder counts to refine the derivation of axis velocity.  This derived velocity can be fed to the PID hal component to produce smoother D term response.  The syntax is : timestamp='0xnn[,0xmm]', this works the same way as above to select which board is being configured.  Default is to not enable the timestamp option.  If you put this option on the command line, it enables the option.  The first 'n' selects the EPP bus, the second one matches the address of the board having the option enabled.  The driver checks the revision level of the board to make sure it has firmware supporting the feature, and produces an error message if the board does not support it.
de: Die Encoderplatinen UPC und PPMC können das Eintreffen von Encoderzählungen mit einem Zeitstempel versehen, um die Ableitung der Achsengeschwindigkeit zu verfeinern.  Diese abgeleitete Geschwindigkeit kann in die PID hal-Komponente eingespeist werden, um eine glattere D-Term-Reaktion zu erzeugen.  Die Syntax lautet: timestamp='0xnn[,0xmm]', dies funktioniert auf die gleiche Weise wie oben, um auszuwählen, welche Karte konfiguriert werden soll.  Standardmäßig ist die Option timestamp nicht aktiviert.  Wenn Sie diese Option in die Befehlszeile eingeben, wird die Option aktiviert.  Das erste 'n' wählt den EPP-Bus aus, das zweite entspricht der Adresse der Karte, auf der die Option aktiviert ist.  Der Treiber prüft den Revisionsstand der Karte, um sicherzustellen, dass die Firmware die Funktion unterstützt, und gibt eine Fehlermeldung aus, wenn die Karte sie nicht unterstützt.

note: type: Plain text
en: The PPMC encoder board has an option to select the encoder digital filter frequeency.  (The UPC has the same ability via DIP switches on the board.)  Since the PPMC encoder board doesn't have these extra DIP switches, it needs to be selected via a command-line option.  By default, the filter runs at 1 MHz, allowing encoders to be counted up to about 900 kHz (depending on noise and quadrature accuracy of the encoder.)  The options are 1, 2.5, 5 and 10 MHz.  These are set with a parameter of 1,2,5 and 10 (decimal) which is specified as the hex digit "A".  These are specified in a manner similar to the above options, but with the frequency setting to the left of the bus/address digits.  So, to set 5 MHz on the encoder board at address 3 on the first EPP bus, you would write: `enc_clock='0x503'`.
de: Die PPMC-Geberkarte verfügt über eine Option zur Auswahl der Frequenz des digitalen Geberfilters.  (Die UPC hat die gleiche Möglichkeit über DIP-Schalter auf der Karte.) Da die PPMC-Geberkarte diese zusätzlichen DIP-Schalter nicht hat, muss sie über eine Kommandozeilenoption ausgewählt werden.  Standardmäßig läuft der Filter mit 1 MHz, so dass Encoder bis zu etwa 900 kHz gezählt werden können (abhängig von Rauschen und Quadraturgenauigkeit des Encoders). Die Optionen sind 1, 2,5, 5 und 10 MHz.  Diese werden mit einem Parameter von 1, 2, 5 und 10 (dezimal) eingestellt, der als Hexadezimalziffer "A" angegeben wird.  Diese werden in ähnlicher Weise wie die obigen Optionen angegeben, wobei die Frequenzeinstellung links von den Bus-/Adressziffern steht.  Um also 5 MHz auf der Encoderplatine an Adresse 3 auf dem ersten EPP-Bus einzustellen, würden Sie schreiben: `enc_clock='0x503' `.

note: type: Plain text
en: It was recently discovered that some parallel port chips would not work with the ppmc driver.  Especially, the Oxford OXPCIe952 chip on the SIIG PCIe parallel port cards had this trouble.  The ppmc driver in all LinuxCNC versions starting from 2.7.8 have been corrected for this problem by default.  However, this possibly could cause problems with really old EPP parallel port hardware, so there is a command line option to go back to the previous behavior.  The new behavior is set by default, or by adding the parameter epp_dir=0 on the command line.  To get the old behavior, add epp_dir=1 to the command line.  All parallel ports I have here work with the new default behavior.  As on the other parameters, it is possible to give a list, like epp_dir=1,0,1 to set different settings for each of up to 3 parallel ports.
de: Vor kurzem wurde festgestellt, dass einige Parallelport-Chips nicht mit dem ppmc-Treiber funktionieren.  Insbesondere der Oxford OXPCIe952 Chip auf den SIIG PCIe Parallelport-Karten hatte dieses Problem.  Der ppmc-Treiber in allen LinuxCNC-Versionen ab 2.7.8 sind für dieses Problem standardmäßig korrigiert worden.  Allerdings könnte dies möglicherweise zu Problemen mit wirklich alten EPP Parallelport-Hardware, so gibt es eine Kommandozeilen-Option, um wieder auf das vorherige Verhalten zu gehen.  Das neue Verhalten wird standardmäßig eingestellt, oder durch Hinzufügen des Parameters epp_dir=0 auf der Befehlszeile.  Um das alte Verhalten zu erhalten, fügen Sie epp_dir=1 in die Befehlszeile ein.  Alle parallelen Ports, die ich hier habe, arbeiten mit dem neuen Standardverhalten.  Wie bei den anderen Parametern ist es möglich, eine Liste anzugeben, wie z.B. epp_dir=1,0,1, um verschiedene Einstellungen für jede der bis zu 3 parallelen Schnittstellen zu setzen.

note: type: Plain text
en: In the following pins, parameters, and functions, <port> is the parallel port ID. According to the naming conventions the first port should always have an ID of zero. All the boards have some method of setting the address on the EPP bus. USC and UPC have simple provisions for only two addresses, but jumper foil cuts allow up to 4 boards to be addressed.  The PPMC boards have 16 possible addresses. In all cases, the driver enumerates the boards by type and exports the appropriate HAL pins.  For instance, the encoders will be enumerated from zero up, in the same order as the address switches on the board specify.  So, the first board will have encoders 0 -- 3, the second board would have encoders 4 -- 7.  The first column after the bullet tells which boards will have this HAL pin or parameter associated with it. All means that this pin is available on all three board types.  Option means that this pin will only be exported when that option is enabled by an optional parameter in the loadrt HAL command. These options require the board to have a sufficient revision level to support the feature.
de: Bei den folgenden Pins, Parametern und Funktionen ist <port> die ID der parallelen Schnittstelle. Gemäß den Namenskonventionen sollte der erste Port immer eine ID von Null haben. Alle Karten verfügen über eine Methode zur Einstellung der Adresse auf dem EPP-Bus. USC und UPC haben einfache Vorkehrungen für nur zwei Adressen, aber durch Jumper-Folienschnitte können bis zu 4 Karten adressiert werden.  Die PPMC-Karten haben 16 mögliche Adressen. In allen Fällen zählt der Treiber die Karten nach Typ auf und exportiert die entsprechenden HAL-Pins.  Zum Beispiel werden die Encoder von Null aufwärts aufgezählt, in der gleichen Reihenfolge, wie die Adressschalter auf der Karte angeben.  Die erste Platine hat also die Encoder 0 bis 3, die zweite Platine die Encoder 4 bis 7. Die erste Spalte nach dem Aufzählungspunkt gibt an, welche Platinen mit diesem HAL-Pin oder Parameter verbunden sind. Alle bedeutet, dass dieser Pin auf allen drei Platinentypen verfügbar ist.  Option bedeutet, dass dieser Pin nur exportiert wird, wenn diese Option durch einen optionalen Parameter im loadrt HAL-Befehl aktiviert ist. Diese Optionen setzen voraus, dass die Platine einen ausreichenden Revisionsstand hat, um die Funktion zu unterstützen.

note: type: Plain text
en: '(All s32 output) ppmc.<port>.encoder.<channel>.count' - Encoder position, in counts.
de: '(Alle s32-Ausgaben) ppmc.<port>.encoder.<channel>.count' - Encoder-Position in Zählwerten.

note: type: Plain text
en: '(All s32 output) ppmc.<port>.encoder.<channel>.delta' - Change in counts since last read, in raw encoder count units.
de: '(Alle s32-Ausgaben) ppmc.<port>.encoder.<channel>.delta' – Änderung der Zählwerte seit dem letzten Lesen, in rohen Encoder-Zähleinheiten.

note: type: Plain text
en: '(All float output) 'ppmc.<port>.encoder.<channel>.velocity' - Velocity scaled in user units per second. On PPMC and USC this is derived from raw encoder counts per servo period, and hence is affected by encoder granularity. On UPC boards with the 8/21/09 and later firmware, velocity estimation by timestamping encoder counts can be used to improve the smoothness of this velocity output. This can be fed to the PID HAL component to produce a more stable servo response. This function has to be enabled in the HAL command line that starts the PPMC driver, with the timestamp=0x00 option.
de: '(Alles Float-Ausgaben) 'ppmc.<port>.encoder.<channel>.velocity' - Geschwindigkeit skaliert in Benutzereinheiten pro Sekunde. Auf PPMC und USC wird dies von den rohen Encoder-Zählungen pro Servoperiode abgeleitet und wird daher von der Encoder-Granularität beeinflusst. Auf UPC-Platinen mit der Firmware 8/21/09 und später kann die Geschwindigkeitsschätzung durch Zeitstempelung der Encoderzählungen verwendet werden, um die Glattheit dieser Geschwindigkeitsausgabe zu verbessern. Dies kann in die PID-HAL-Komponente eingespeist werden, um eine stabilere Servoreaktion zu erzeugen. Diese Funktion muss in der HAL-Kommandozeile, die den PPMC-Treiber startet, mit der Option timestamp=0x00 aktiviert werden.

note: type: Plain text
en: '(All float output) ppmc.<port>.encoder.<channel>.position' - Encoder position, in user units.
de: '(Alle Float-Ausgänge) ppmc.<port>.encoder.<channel>.position' - Encoder-Position, in Benutzereinheiten.

note: type: Plain text
en: '(All bit bidir) ppmc.<port>.encoder.<channel>.index-enable' - Connect to joint.#.index-enable for home-to-index. This is a bidirectional HAL signal. Setting it to true causes the encoder hardware to reset the count to zero on the next encoder index pulse.  The driver will detect this and set the signal back to false.
de: '(All bit bidir) ppmc.<port>.encoder.<channel>.index-enable' - Verbindung mit joint.#.index-enable für home-to-index. Dies ist ein bidirektionales HAL-Signal. Wird es auf true gesetzt, setzt die Encoder-Hardware den Zählerstand beim nächsten Encoder-Index-Impuls auf Null zurück.  Der Treiber erkennt dies und setzt das Signal zurück auf false.

note: type: Plain text
en: '(PPMC float output) ppmc.<port>.DAC.<channel>.value' - sends a signed value to the 16-bit Digital to Analog Converter on the PPMC DAC16 board commanding the analog output voltage of that DAC channel.
de: '(PPMC float output) ppmc. <port>. DAC. <channel>.value' - sendet einen vorzeichenbehafteten Wert an den 16-Bit-Digital-Analog-Wandler auf der PPMC-DAC16-Platine, der die analoge Ausgangsspannung dieses DAC-Kanals befiehlt.

note: type: Plain text
en: '(UPC bit input) ppmc.<port>.pwm.<channel>.enable' - Enables a PWM generator.
de: '(UPC bit input) ppmc.<port>.pwm.<channel>.enable' - Aktiviert einen PWM-Generator.

note: type: Plain text
en: '(UPC float input) ppmc.<port>.pwm.<channel>.value' - Value which determines the duty cycle of the PWM waveforms. The value is divided by 'pwm.<channel>.scale', and if the result is 0.6 the duty cycle will be 60%, and so on.  Negative values result in the duty cycle being based on the absolute value, and the direction pin is set to indicate negative.
de: '(UPC float input) ppmc.<port>.pwm.<channel>.value' - Wert, der das Tastverhältnis der PWM-Wellenformen bestimmt. Der Wert wird durch 'pwm.<channel>.scale' geteilt, und wenn das Ergebnis 0,6 ist, beträgt das Tastverhältnis 60 %, und so weiter.  Negative Werte führen dazu, dass das Tastverhältnis auf dem absoluten Wert basiert, und der Richtungspin ist so eingestellt, dass er negativ anzeigt.

note: type: Plain text
en: '(USC bit input) ppmc.<port>.stepgen.<channel>.enable' - Enables a step pulse generator.
de: '(USC-Bit-Eingang) ppmc.<port>.stepgen.<channel>.enable' - Aktiviert einen Schrittimpulsgenerator.

note: type: Plain text
en: '(USC float input) ppmc.<port>.stepgen.<channel>.velocity' - Value which determines the step frequency. The value is multiplied by 'stepgen.<channel>.scale' , and the result is the frequency in steps per second. Negative values result in the frequency being based on the absolute value, and the direction pin is set to indicate negative.
de: '(USC float input) ppmc.<port>.stepgen.<channel>.velocity' - Wert, der die Schrittfrequenz bestimmt. Der Wert wird mit 'stepgen.<channel>.scale' multipliziert, und das Ergebnis ist die Frequenz in Schritten pro Sekunde. Negative Werte führen dazu, dass die Frequenz auf dem absoluten Wert basiert, und der Richtungspin wird auf negativ gesetzt.

note: type: Plain text
en: '(All bit output) ppmc.<port>.din.<channel>.in' - State of digital input pin, see canonical digital input.
de: '(All bit output) ppmc.<port>.din.<channel>.in' - Zustand des digitalen Eingangspins, siehe kanonischer Digitaleingang.

note: type: Plain text
en: '(All bit output) ppmc.<port>.din.<channel>.in-not' - Inverted state of digital input pin, see canonical digital input.
de: '(All bit output) ppmc.<port>.din.<channel>.in-not' - Invertierter Zustand des digitalen Eingangspins, siehe kanonischer Digitaleingang.

note: type: Plain text
en: '(All bit input) ppmc.<port>.dout.<channel>.out' - Value to be written to digital output, see canonical digital output.
de: '(All bit input) ppmc.<port>.dout.<channel>.out' - Wert, der an den Digitalausgang geschrieben werden soll, siehe kanonischer Digitalausgang.

note: type: Plain text
en: '(Option float input) ppmc.<port>.DAC8-<channel>.value' - Value to be written to analog output, range from 0 to 255. This sends 8 output bits to J8, which should have a Spindle DAC board connected to it. 0 corresponds to zero Volts, 255 corresponds to 10 Volts. The polarity of the output can be set for always minus, always plus, or can be controlled by the state of SSR1 (plus when on) and SSR2 (minus when on). You must specify extradac = 0x00 on the HAL command line that loads the PPMC driver to enable this function on the first USC ur UPC board.
de: '(Option Float-Eingang) ppmc.<port>.DAC8-<channel>.value' - In den Analogausgang zu schreibender Wert, Bereich von 0 bis 255. Dies sendet 8 Ausgangsbits an J8, an dem eine Spindel-DAC-Karte angeschlossen sein sollte. 0 entspricht null Volt, 255 entspricht 10 Volt. Die Polarität des Ausgangs kann auf immer Minus, immer Plus eingestellt werden oder durch den Zustand von SSR1 (Plus, wenn eingeschaltet) und SSR2 (Minus, wenn eingeschaltet) gesteuert werden. Sie müssen extradac = 0x00 in der HAL-Befehlszeile angeben, die den PPMC-Treiber lädt, um diese Funktion auf der ersten USC ur UPC-Platine zu aktivieren.

note: type: Plain text
en: '(Option bit input) ppmc.<port>.dout.<channel>.out' - Value to be written to one of the 8 extra digital output pins on J8. You must specify extradout = 0x00 on the HAL command line that loads the ppmc driver to enable this function on the first USC or UPC board. extradac and extradout are mutually exclusive features as they use the same signal lines for different purposes.  These output pins will be enumerated after the standard digital outputs of the board.
de: '(Option bit input) ppmc.<port>.dout.<channel>.out' - Wert, der an einen der 8 zusätzlichen digitalen Ausgangspins an J8 geschrieben werden soll. Sie müssen extradout = 0x00 in der HAL-Befehlszeile angeben, die den ppmc-Treiber lädt, um diese Funktion auf der ersten USC- oder UPC-Platine zu aktivieren. extradac und extradout schließen sich gegenseitig aus, da sie dieselben Signalleitungen für unterschiedliche Zwecke verwenden.  Diese Ausgangspins werden nach den digitalen Standardausgängen der Karte aufgezählt.

note: type: Plain text
en: '(All float) ppmc.<port>.encoder.<channel>.scale' - The number of counts / user unit (to convert from counts to units).
de: '(All float) ppmc.<port>.encoder.<channel>.scale' - Die Anzahl der Zählungen / Benutzereinheit (zur Umrechnung von Zählungen in Einheiten).

note: type: Plain text
en: '(UPC float) ppmc.<port>.pwm.<channel-range>.freq' - The PWM carrier frequency, in Hz. Applies to a group of four consecutive PWM generators, as indicated by '<channel-range>'. Minimum is 610 Hz, maximum is 500 kHz.
de: '(UPC float) ppmc.<port>.pwm.<channel-range>.freq' - Die PWM-Trägerfrequenz, in Hz. Gilt für eine Gruppe von vier aufeinanderfolgenden PWM-Generatoren, wie durch '<channel-range>' angegeben. Minimum ist 610Hz, Maximum ist 500 kHz.

note: type: Plain text
en: '(PPMC float) ppmc.<port>.DAC.<channel>.scale' - Sets scale of DAC16 output channel such that an output value equal to the 1/scale value will produce an output of + or - value Volts.  So, if the scale parameter is 0.1 and you send a value of 0.5, the output will be 5.0 Volts.
de: '(PPMC float) ppmc.<port>.DAC.<channel>.scale' - Legt die Skalierung des DAC16-Ausgangskanals so fest, dass ein Ausgangswert, der dem Wert 1/scale entspricht, einen Ausgang mit dem Wert + oder - Volt erzeugt.  Wenn also der Skalierungsparameter 0,1 ist und Sie einen Wert von 0,5 senden, wird der Ausgang 5,0 Volt betragen.

note: type: Plain text
en: '(UPC float) ppmc.<port>.pwm.<channel>.scale' - Scaling for PWM generator. If 'scale' is X, then the duty cycle will be 100% when the 'value' pin is X (or -X).
de: '(UPC float) ppmc.<port>.pwm.<channel>.scale' - Skalierung für PWM Generator. Wenn 'scale' X ist, dann ist das Tastverhältnis 100%, wenn der 'value' Pin X (oder -X) ist.

note: type: Plain text
en: '(UPC float) ppmc.<port>.pwm.<channel>.max-dc' - Maximum duty cycle, from 0.0 to 1.0.
de: '(UPC float) ppmc.<port>.pwm.<channel>.max-dc' - Maximales Tastverhältnis, von 0,0 bis 1,0.

note: type: Plain text
en: '(UPC float) ppmc.<port>.pwm.<channel>.min-dc' - Minimum duty cycle, from 0.0 to 1.0.
de: '(UPC float) ppmc.<port>.pwm.<channel>.min-dc' – Mindestarbeitszyklus von 0,0 bis 1,0.

note: type: Plain text
en: '(UPC float) ppmc.<port>.pwm.<channel>.duty-cycle' - Actual duty cycle (used mostly for troubleshooting.)
de: '(UPC float) ppmc.<port>.pwm.<channel>.duty-cycle' - Tatsächlicher Arbeitszyklus (wird hauptsächlich zur Fehlerbehebung verwendet.)

note: type: Plain text
en: '(UPC bit) ppmc.<port>.pwm.<channel>.bootstrap' - If true, the PWM generator will generate a short sequence of pulses of both polarities when E-stop goes false, to reset the shutdown latches on some PWM servo drives.
de: '(UPC bit) ppmc.<port>.pwm.<channel>.bootstrap' - Wenn true, erzeugt der PWM-Generator eine kurze Sequenz von Impulsen beider Polaritäten, wenn Notaus (engl. E-stop) auf falsch geht, um die Abschalt-Latches einiger PWM-Servoantriebe zurückzusetzen.

note: type: Plain text
en: '(USC u32) ppmc.<port>.stepgen.<channel-range>.setup-time' - Sets minimum time between direction change and step pulse, in units of 100 ns. Applies to a group of four consecutive step generators, as indicated by '<channel-range>'. Values between 200 ns and 25.5 µs can be specified.
de: '(USC u32) ppmc.<port>.stepgen.<channel-range>.setup-time' - Legt die Mindestzeit zwischen Richtungswechsel und Schrittimpuls fest, in Einheiten von 100 ns. Gilt für eine Gruppe von vier aufeinanderfolgenden Schrittgeneratoren, wie durch '<Kanalbereich>' angegeben. Es können Werte zwischen 200 ns und 25,5 µs angegeben werden.

note: type: Plain text
en: '(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-width' - Sets width of step pulses, in units of 100 ns. Applies to a group of four consecutive step generators, as indicated by '<channel-range>'.  Values between 200 ns and 25.5 µs may be specified.
de: '(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-width' - Bestimmt die Breite der Schrittimpulse in Einheiten von 100 ns. Gilt für eine Gruppe von vier aufeinanderfolgenden Schrittgeneratoren, wie durch '<Kanalbereich>' angegeben.  Es können Werte zwischen 200 ns und 25,5 µs angegeben werden.

note: type: Plain text
en: '(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-space-min' - Sets minimum time between pulses, in units of 100 ns.  Applies to a group of four consecutive step generators, as indicated by '<channel-range>'. Values between 200 ns and 25.5 µs can be specified.  The maximum step rate is: image:images/pico-ppmc-math.png[]
de: '(USC u32) ppmc.<port>.stepgen.<channel-range>.pulse-space-min' - Legt die Mindestzeit zwischen den Impulsen in Einheiten von 100 ns fest.  Gilt für eine Gruppe von vier aufeinanderfolgenden Schrittgeneratoren, wie durch '<Kanalbereich>' angegeben. Es können Werte zwischen 200 ns und 25,5 µs angegeben werden.  Die maximale Schrittfrequenz beträgt: image:images/pico-ppmc-math.png[]

note: type: Plain text
en: '(USC float) ppmc.<port>.stepgen.<channel>.scale' - Scaling for step pulse generator. The step frequency in Hz is the absolute value of 'velocity' * 'scale'.
de: '(USC float) ppmc.<port>.stepgen.<channel>.scale' - Skalierung für Schrittimpulsgenerator. Die Schrittfrequenz in Hz ist der absolute Wert von 'velocity' (engl. für Geschwindkeit) * 'scale' (engl. für Skala/Maßstab).

note: type: Plain text
en: '(USC float) ppmc.<port>.stepgen.<channel>.max-vel' - The maximum value for 'velocity'. Commands greater than 'max-vel' will be clamped.  Also applies to negative values. (The absolute value is clamped.)
de: '(USC float) ppmc.<port>.stepgen.<channel>.max-vel' - Der Höchstwert für 'velocity'. Befehle, die größer als 'max-vel' sind, werden gekappt.  Gilt auch für negative Werte. (Der absolute Wert wird gekappt.)

note: type: Plain text
en: '(USC float) ppmc.<port>.stepgen.<channel>.frequency' - Actual step pulse frequency in Hz (used mostly for troubleshooting.)
de: '(USC float) ppmc.<port>.stepgen.<channel>.frequency' - Tatsächliche Schrittimpulsfrequenz in Hz (wird meist zur Fehlersuche verwendet.)

note: type: Plain text
en: '(Option float) ppmc.<port>.DAC8.<channel>.scale' - Sets scale of extra DAC output such that an output value equal to scale gives a magnitude of 10.0 V output. (The sign of the output is set by jumpers and/or other digital outputs.)
de: '(Option float) ppmc. <port>. DAC8. <channel>.scale' - Legt die Skalierung des zusätzlichen DAC-Ausgangs so fest, dass ein der Skalierung entsprechender Ausgangswert eine Größe von 10,0 V ergibt. (Das Vorzeichen des Ausgangs wird durch Jumper und/oder andere digitale Ausgänge gesetzt.)

note: type: Plain text
en: '(Option bit) ppmc.<port>.dout.<channel>.invert' - Inverts a digital output, see canonical digital output.
de: '(Optionsbit) ppmc.<Port>.dout.<Kanal>.invert' - Invertiert einen digitalen Ausgang, siehe kanonischer digitaler Ausgang.

note: type: Plain text
en: '(Option bit) ppmc.<port>.dout.<channel>.invert' - Inverts a digital output pin of J8, see canonical digital output.
de: '(Optionsbit) ppmc. .<port>dout. <channel>.invert' - Invertiert einen digitalen Ausgangspin von J8, siehe Kanonischer Digitalausgang.

note: type: Plain text
en: '(All funct) ppmc.<port>.read' - Reads all inputs (digital inputs and encoder counters) on one port. These reads are organized into blocks of contiguous registers to be read in a block to minimize CPU overhead.
de: '(All funct) ppmc.<Port>.read' - Liest alle Eingänge (digitale Eingänge und Encoderzähler) an einem Port. Diese Lesevorgänge sind in Blöcken von zusammenhängenden Registern organisiert, die in einem Block gelesen werden, um den CPU-Overhead zu minimieren.

note: type: Plain text
en: '(All funct) ppmc.<port>.write' - Writes all outputs (digital outputs, stepgens, PWMs) on one port.  These writes are organized into blocks of contiguous registers to be written in a block to minimize CPU overhead.
de: '(All funct) ppmc.<Port>.write' - Schreibt alle Ausgänge (digitale Ausgänge, Stepgen, PWMs) auf einen Port.  Diese Schreibvorgänge sind in Blöcken von zusammenhängenden Registern organisiert, die in einem Block geschrieben werden, um den CPU-Overhead zu minimieren.

note: type: Title =
en: Pluto P Driver
de: Pluto P-Treiber

note: type: Title ==
en: General Info
de: Allgemeine Informationen

note: type: Plain text
en: The Pluto-P is a FPGA board featuring the ACEX1K chip from Altera.
de: Das Pluto-P ist ein FPGA-Board mit dem ACEX1K-Chip von Altera.

note: type: Plain text
en: A Pluto-P board
de: Ein Pluto-P-Board

note: type: Plain text
en: An EPP-compatible parallel port, configured for EPP mode in the system BIOS or a PCI EPP compatible parallel port card.
de: Ein EPP-kompatibler Parallelport, der im System-BIOS für den EPP-Modus konfiguriert ist, oder eine PCI-EPP-kompatible Parallelport-Karte.

note: type: Plain text
en: The Pluto P board requires EPP mode. Netmos98xx chips do not work in EPP mode.  The Pluto P board will work on some computers and not on others.  There is no known pattern to which computers work and which don't work.
de: Das Pluto P Board benötigt den EPP-Modus. Netmos98xx-Chips funktionieren nicht im EPP-Modus.  Die Pluto P Karte funktioniert auf einigen Computern und auf anderen nicht.  Es gibt kein bekanntes Muster, welche Computer funktionieren und welche nicht.

note: type: Plain text
en: For more information on PCI EPP compatible parallel port cards see the http://wiki.linuxcnc.org/cgi-bin/wiki.pl?LinuxCNC_Supported_Hardware[LinuxCNC Supported Hardware] page on the wiki.
de: Weitere Informationen über PCI EPP kompatible Parallelport-Karten finden Sie auf der http://wiki.linuxcnc.org/cgi-bin/wiki.pl?LinuxCNC_Supported_Hardware[LinuxCNC Supported Hardware] Seite im Wiki.

note: type: Title ===
en: Connectors
de: Verbinder

note: type: Plain text
en: The Pluto-P board is shipped with the left connector presoldered, with the key in the indicated position. The other connectors are unpopulated. There does not seem to be a standard 12-pin IDC connector, but some of the pins of a 16P connector can hang off the board next to QA3/QZ3.
de: Bei der Auslieferung der Pluto-P-Platine ist der linke Steckverbinder vorgelötet, wobei sich der Schlüssel in der angegebenen Position befindet. Die anderen Anschlüsse sind unbestückt. Es scheint keinen standardmäßigen 12-poligen IDC-Stecker zu geben, aber einige der Stifte eines 16-poligen Steckers können von der Platine neben QA3/QZ3 herunterhängen.

note: type: Plain text
en: The bottom and right connectors are on the same .1" grid, but the left connector is not. If OUT2…OUT9 are not required, a single IDC connector can span the bottom connector and the bottom two rows of the right connector.
de: Der untere und der rechte Anschluss befinden sich auf demselben .1"-Raster, der linke Anschluss jedoch nicht. Wenn OUT2...OUT9 nicht benötigt werden, kann ein einzelner IDC-Stecker den unteren Stecker und die unteren beiden Reihen des rechten Steckers überbrücken.

note: type: Title ===
en: Physical Pins
de: Physikalische Stifte (engl.+ inzwischen auch deutsch: pins)

note: type: Plain text
en: Read the ACEX1K datasheet for information about input and output voltage thresholds. The pins are all configured in 'LVTTL/LVCMOS' mode and are generally compatible with 5V TTL logic.
de: Lesen Sie das ACEX1K-Datenblatt für Informationen über Eingangs- und Ausgangsspannungsschwellenwerte. Die Pins sind alle im 'LVTTL/LVCMOS' Modus konfiguriert und sind generell mit 5V TTL-Logik kompatibel.

note: type: Plain text
en: Before configuration and after properly exiting LinuxCNC, all Pluto-P pins are tristated with weak pull-ups (20 kΩ min, 50 kΩ max).  If the watchdog timer is enabled (the default), these pins are also tristated after an interruption of communication between LinuxCNC and the board. The watchdog timer takes approximately 6.5 ms to activate. However, software bugs in the pluto_servo firmware or LinuxCNC can leave the Pluto-P pins in an undefined state.
de: Vor der Konfiguration und nach dem ordnungsgemäßen Verlassen von LinuxCNC werden alle Pluto-P-Pins mit schwachen Pull-ups (20 kΩ min, 50 kΩ max) tristiert.  Wenn der Watchdog-Timer aktiviert ist (Standardeinstellung), werden diese Pins auch nach einer Unterbrechung der Kommunikation zwischen LinuxCNC und der Karte tristiert. Der Watchdog-Timer benötigt etwa 6,5 ms, um aktiviert zu werden. Allerdings können Software-Fehler in der pluto_servo-Firmware oder LinuxCNC die Pluto-P-Pins in einem undefinierten Zustand lassen.

note: type: Plain text
en: In pwm+dir mode, by default dir is HIGH for negative values and LOW for positive values. To select HIGH for positive values and LOW for negative values, set the corresponding dout-NN-invert parameter TRUE to invert the signal.
de: Im Modus PWM+RIchtung (engl. pwm+dir) ist Richtung (dir) standardmäßig HIGH für negative Werte und LOW für positive Werte. Um HIGH für positive Werte und LOW für negative Werte zu wählen, setzen Sie den entsprechenden Parameter dout-NN-invert auf TRUE, um das Signal zu invertieren.

note: type: Plain text
en: The index input is triggered on the rising edge. Initial testing has shown that the QZx inputs are particularly noise sensitive, due to being polled every 25 ns. Digital filtering has been added to filter pulses shorter than 175 ns (seven polling times). Additional external filtering on all input pins, such as a Schmitt buffer or inverter, RC filter, or differential receiver (if applicable) is recommended.
de: Der Indexeingang wird mit der steigenden Flanke getriggert. Erste Tests haben gezeigt, dass die QZx-Eingänge besonders rauschempfindlich sind, da sie alle 25 ns abgefragt werden. Es wurde eine digitale Filterung hinzugefügt, um Impulse zu filtern, die kürzer als 175 ns (sieben Abfragezeiten) sind. Eine zusätzliche externe Filterung an allen Eingangspins, wie z. B. ein Schmitt-Puffer oder Inverter, ein RC-Filter oder ein Differentialempfänger (falls zutreffend) wird empfohlen.

note: type: Plain text
en: The IN1…IN7 pins have 22 Ω series resistors to their associated FPGA pins. No other pins have any sort of protection for out-of-spec voltages or currents. It is up to the integrator to add appropriate isolation and protection. Traditional parallel port optoisolator boards do not work with pluto_servo due to the bidirectional nature of the EPP protocol.
de: Die Pins IN1...IN7 haben 22 Ω Vorwiderstände zu den entsprechenden FPGA-Pins. Keine anderen Pins haben irgendeine Art von Schutz für Spannungen oder Ströme außerhalb der Spezifikation. Es ist Sache des Integrators, eine geeignete Isolierung und einen entsprechenden Schutz hinzuzufügen. Herkömmliche Optoisolator-Karten mit parallelem Anschluss funktionieren aufgrund der bidirektionalen Natur des EPP-Protokolls nicht mit pluto_servo.

note: type: Plain text
en: When the device is unprogrammed, the LED glows faintly. When the device is programmed, the LED glows according to the duty cycle of PWM0 ('LED' = 'UP0' 'xor' 'DOWN0') or STEPGEN0 ('LED' = 'STEP0' 'xor' 'DIR0').
de: Wenn das Gerät unprogrammiert ist, leuchtet die LED schwach. Wenn das Gerät programmiert ist, leuchtet die LED entsprechend dem Tastverhältnis von PWM0 ('LED' = 'UP0' 'xor' 'DOWN0') oder STEPGEN0 ('LED' = 'STEP0' 'xor' 'DIR0').

note: type: Plain text
en: A small amount of current may be drawn from VCC. The available current depends on the unregulated DC input to the board. Alternately, regulated +3.3VDC may be supplied to the FPGA through these VCC pins.  The required current is not yet known, but is probably around 50mA plus I/O current.
de: Von VCC kann eine geringe Strommenge entnommen werden. Der verfügbare Strom hängt von der ungeregelten DC-Eingabe auf der Platine ab. Alternativ können dem FPGA über diese VCC-Pins regulierte +3,3 VDC zugeführt werden.  Der erforderliche Strom ist noch nicht bekannt, liegt aber wahrscheinlich bei etwa 50 mA plus I/O-Strom.

note: type: Plain text
en: The regulator on the Pluto-P board is a low-dropout type. Supplying 5V at the power jack will allow the regulator to work properly.
de: Der Regler auf der Pluto-P-Platine ist ein Low-Dropout-Typ. Wenn 5 V an der Netzbuchse anliegen, kann der Regler ordnungsgemäß arbeiten.

note: type: Title ===
en: PC interface
de: PC-Schnittstelle

note: type: Plain text
en: Only a single pluto_servo or pluto_step board is supported.
de: Es wird nur eine einzige pluto_servo oder pluto_step Karte unterstützt.

note: type: Title ===
en: Rebuilding the FPGA firmware
de: Neuerstellung der FPGA-Firmware

note: type: Plain text
en: The 'src/hal/drivers/pluto_servo_firmware/' and 'src/hal/drivers/pluto_step_firmware/' subdirectories contain the Verilog source code plus additional files used by Quartus for the FPGA firmwares. Altera's Quartus II software is required to rebuild the FPGA firmware. To rebuild the firmware from the .hdl and other source files, open the '.qpf' file and press CTRL-L.  Then, recompile LinuxCNC.
de: Die Unterverzeichnisse "src/hal/drivers/pluto_servo_firmware/" und "src/hal/drivers/pluto_step_firmware/" enthalten den Verilog-Quellcode sowie zusätzliche Dateien, die von Quartus für die FPGA-Firmware verwendet werden. Die Quartus II Software von Altera ist erforderlich, um die FPGA-Firmware neu zu erstellen. Um die Firmware aus den .hdl und anderen Quelldateien neu zu erstellen, öffnen Sie die '.qpf' Datei und drücken Sie CTRL-L.  Dann kompilieren Sie LinuxCNC neu.

note: type: Plain text
en: Like the HAL hardware driver, the FPGA firmware is licensed under the terms of the GNU General Public License.
de: Wie der HAL-Hardwaretreiber unterliegt auch die FPGA-Firmware den Bedingungen der GNU General Public License.

note: type: Plain text
en: The gratis version of Quartus II runs only on Microsoft Windows, although there is apparently a paid version that runs on Linux.
de: Die kostenlose Version von Quartus II läuft nur unter Microsoft Windows, obwohl es offenbar eine kostenpflichtige Version gibt, die unter Linux läuft.

note: type: Title ===
en: For more information
de: Für weitere Informationen

note: type: Plain text
en: Some additional information about it is available from http://www.knjn.com/FPGA-Parallel.html[KNJC LLC] and from http://emergent.unpy.net/01165081407[the developer's blog].
de: Einige zusätzliche Informationen dazu finden Sie unter http://www.knjn.com/FPGA-Parallel.html[KNJC LLC] und unter http://emergent.unpy.net/01165081407[Blog des Entwicklers].

note: type: Title ==
en: Pluto Servo
de: Pluto-Servo

note: type: Plain text
en: The pluto_servo system is suitable for control of a 4-axis CNC mill with servo motors, a 3-axis mill with PWM spindle control, a lathe with spindle encoder, etc. The large number of inputs allows a full set of limit switches.
de: Das pluto_servo-System eignet sich für die Steuerung einer 4-Achsen-CNC-Fräse mit Servomotoren, einer 3-Achsen-Fräse mit PWM-Spindelsteuerung, einer Drehmaschine mit Spindel-Encoder, etc. Die große Anzahl von Eingängen ermöglicht einen vollständigen Satz von Endschaltern.

note: type: Plain text
en: This driver features:
de: Dieser Treiber hat folgende Eigenschaften:

note: type: Plain text
en: 4 quadrature channels with 40 MHz sample rate. The counters operate in '4x' mode. The maximum useful quadrature rate is 8191 counts per LinuxCNC servo cycle, or about 8 MHz for LinuxCNC's default 1 ms servo rate.
de: 4 Quadraturkanäle mit 40 MHz Abtastrate. Die Zähler arbeiten im '4x' Modus. Die maximale nützliche Quadratur-Rate ist 8191 Zählungen pro LinuxCNC Servo-Zyklus, oder etwa 8 MHz für LinuxCNC Standard 1 ms Servo-Rate.

note: type: Plain text
en: 4 PWM channels, 'up/down' or 'pwm+dir' style. 4095 duty cycles from -100% to +100%, including 0%. The PWM period is approximately 19.5 kHz (40 MHz / 2047). A PDM-like mode is also available.
de: 4 PWM-Kanäle, 'up/down' oder 'pwm+dir' Stil. 4095 Arbeitszyklen von -100% bis +100%, einschließlich 0%. Die PWM-Periode beträgt etwa 19,5 kHz (40 MHz / 2047). Ein PDM-ähnlicher Modus ist ebenfalls verfügbar.

note: type: Plain text
en: 18 digital outputs: 10 dedicated, 8 shared with PWM functions.  (Example: A lathe with unidirectional PWM spindle control may use 13 total digital outputs)
de: 18 digitale Ausgänge: 10 dedizierte, 8 gemeinsam genutzte mit PWM-Funktionen.  (Beispiel: Eine Drehmaschine mit unidirektionaler PWM-Spindelsteuerung kann insgesamt 13 digitale Ausgänge verwenden)

note: type: Plain text
en: 20 digital inputs: 8 dedicated, 12 shared with Quadrature functions.  (Example: A lathe with index pulse only on the spindle may use 13 total digital inputs.)
de: 20 digitale Eingänge: 8 dedizierte, 12 gemeinsam genutzte mit Quadraturfunktionen.  (Beispiel: Eine Drehmaschine mit Indeximpuls nur an der Spindel kann insgesamt 13 digitale Eingänge verwenden.)

note: type: Plain text
en: EPP communication with the PC. The EPP communication typically takes around 100 µs on machines tested so far, enabling servo rates above 1 kHz.
de: EPP-Kommunikation mit dem PC. Die EPP-Kommunikation dauert bei den bisher getesteten Maschinen typischerweise etwa 100 µs und ermöglicht Servoraten über 1 kHz.

note: type: Plain text
en: 'UPx' - The 'up' (up/down mode) or 'pwm' (pwm+direction mode) signal from PWM generator X. May be used as a digital output if the corresponding PWM channel is unused, or the output on the channel is always negative. The corresponding digital output invert may be set to TRUE to make UPx active low rather than active high.
de: 'UPx' - Das 'Up'- (Aufwärts-/Abwärtsmodus) oder 'PWM'-Signal (PWM+Richtung-Modus) vom PWM-Generator X. Kann als digitaler Ausgang verwendet werden, wenn der entsprechende PWM-Kanal unbenutzt ist oder der Ausgang des Kanals immer negativ ist. Der entsprechende digitale Ausgang kann auf TRUE gesetzt werden, damit UPx aktiv low statt aktiv high ist.

note: type: Plain text
en: 'DNx' - The 'down' (up/down mode) or 'direction' (pwm+direction mode)  signal from PWM generator X. May be used as a digital output if the corresponding PWM channel is unused, or the output on the channel is never negative. The corresponding digital output invert may be set to TRUE to make DNx active low rather than active high.
de: 'DNx' - Das 'down'- (Aufwärts/Abwärts-Modus) oder 'Richtungs'-Signal (PWM+direction-Modus) vom PWM-Generator X. Kann als digitaler Ausgang verwendet werden, wenn der entsprechende PWM-Kanal unbenutzt ist oder der Ausgang des Kanals nie negativ ist. Der entsprechende digitale Ausgang kann auf TRUE gesetzt werden, damit DNx aktiv low statt aktiv high ist.

note: type: Plain text
en: 'QAx, QBx' - The A and B signals for Quadrature counter X. May be used as a digital input if the corresponding quadrature channel is unused.
de: 'QAx, QBx' - Die A- und B-Signale für Quadraturzähler X. Kann als digitaler Eingang verwendet werden, wenn der entsprechende Quadraturkanal nicht verwendet wird.

note: type: Plain text
en: 'QZx' - The Z (index) signal for quadrature counter X. May be used as a digital input if the index feature of the corresponding quadrature channel is unused.
de: 'QZx' - Das Z-Signal (Index) für Quadraturzähler X. Kann als digitaler Eingang verwendet werden, wenn die Indexfunktion des entsprechenden Quadraturkanals nicht verwendet wird.

note: type: Plain text
en: 'INx' - Dedicated digital input #x
de: 'INx' - Dedizierter digitaler Eingang#x

note: type: Plain text
en: 'OUTx' - Dedicated digital output #x
de: 'OUTx' - Dedizierter digitaler Ausgang #x

note: type: Plain text
en: 'GND' - Ground
de: 'GND' - Masse (engl. ground)

note: type: Plain text
en: 'VCC' - +3.3V regulated DC
de: VCC' - +3,3V geregelter Gleichstrom (engl. regulated DC)

note: type: Block title
en: Pluto-Servo Pinout(((pluto-servo pinout)))
de: Pluto-Servo-Pinbelegung(((Pluto-Servo-Pinbelegung)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Pluto-Servo Pinout
de: Pluto-Servo-Pinbelegung

note: type: Block title
en: Pluto-Servo Alternate Pin Functions
de: Pluto-Servo Wechselnde Pin-Funktionen

note: type: Table
en: Primary function
de: Primäre Funktion

note: type: Table
en: Alternate Function
de: Alternative Funktion

note: type: Table
en: Behavior if both functions used
de: Verhalten bei Verwendung beider Funktionen

note: type: Table
en: When pwm-0-pwmdir is TRUE, this pin is the PWM output
de: Wenn pwm-0-pwmdir TRUE ist, dann ist dieser Pin der PWM-Ausgang

note: type: Table
en: XOR'd with UP0 or PWM0
de: geXORt (engl. XOR'd) mit UP0 oder PWM0

note: type: Table
en: When pwm-1-pwmdir is TRUE, this pin is the PWM output
de: Wenn pwm-1-pwmdir TRUE ist, dann ist dieser Pin der PWM-Ausgang

note: type: Table
en: XOR'd with UP1 or PWM1
de: geXORt mit UP1 oder PWM1

note: type: Table
en: When pwm-2-pwmdir is TRUE, this pin is the PWM output
de: Wenn pwm-2-pwmdir TRUE ist, dann ist dieser Pin der PWM-Ausgang

note: type: Table
en: XOR'd with UP2 or PWM2
de: geXORt mit UP2 oder PWM2

note: type: Table
en: When pwm-3-pwmdir is TRUE, this pin is the PWM output
de: Wenn pwm-3-pwmdir TRUE ist, dann ist dieser Pin der PWM-Ausgang

note: type: Table
en: XOR'd with UP3 or PWM3
de: geXORt mit UP3 oder PWM3

note: type: Table
en: When pwm-0-pwmdir is TRUE, this pin is the DIR output
de: Wenn pwm-0-pwmdir TRUE ist, dann ist dieser Pin der DIR-Ausgang

note: type: Table
en: XOR'd with DN0 or DIR0
de: geXORt mit DN0 oder DIR0

note: type: Table
en: When pwm-1-pwmdir is TRUE, this pin is the DIR output
de: Wenn pwm-1-pwmdir TRUE ist, dann ist dieser Pin der DIR-Ausgang

note: type: Table
en: XOR'd with DN1 or DIR1
de: geXORt mit DN1 oder DIR1

note: type: Table
en: When pwm-2-pwmdir is TRUE, this pin is the DIR output
de: Wenn pwm-2-pwmdir TRUE ist, dann ist dieser Pin der DIR-Ausgang

note: type: Table
en: XOR'd with DN2 or DIR2
de: geXORt mit DN2 oder DIR2

note: type: Table
en: When pwm-3-pwmdir is TRUE, this pin is the DIR output
de: Wenn pwm-3-pwmdir TRUE ist, dann ist dieser Pin der DIR-Ausgang

note: type: Table
en: XOR'd with DN3 or DIR3
de: geXORt mit DN3 oder DIR3

note: type: Table
en: Read same value
de: Gleichen Wert lesen

note: type: Title ===
en: Input latching and output updating
de: Input-Latching und Output-Aktualisierung

note: type: Plain text
en: PWM duty cycles for each channel are updated at different times.
de: Die PWM-Tastverhältnisse werden für jeden Kanal zu unterschiedlichen Zeiten aktualisiert.

note: type: Plain text
en: Digital outputs OUT0 through OUT9 are all updated at the same time.  Digital outputs OUT10 through OUT17 are updated at the same time as the pwm function they are shared with.
de: Die digitalen Ausgänge OUT0 bis OUT9 werden alle zur gleichen Zeit aktualisiert.  Die digitalen Ausgänge OUT10 bis OUT17 werden gleichzeitig mit der PWM-Funktion aktualisiert, mit der sie geteilt werden.

note: type: Plain text
en: Digital inputs IN0 through IN19 are all latched at the same time.
de: Die digitalen Eingänge IN0 bis IN19 werden alle gleichzeitig gehalten (engl. latched).

note: type: Plain text
en: Quadrature positions for each channel are latched at different times.
de: Die Quadraturpositionen werden für jeden Kanal zu unterschiedlichen Zeiten gespeichert.

note: type: Title ===
en: HAL Functions, Pins and Parameters
de: HAL-Funktionen, Pins und Parameter

note: type: Plain text
en: A list of all 'loadrt' arguments, HAL function names, pin names and parameter names is in the manual page, 'pluto_servo.9'.
de: Eine Liste aller 'loadrt'-Argumente, HAL-Funktionsnamen, Pin-Namen und Parameter-Namen befindet sich in der Manpage zu 'pluto_servo.9'.

note: type: Title ===
en: Compatible driver hardware
de: Kompatible Treiber-Hardware

note: type: Plain text
en: A schematic for a 2A, 2-axis PWM servo amplifier board is available from the (http://emergent.unpy.net/projects/01148303608[the software developer]).  The L298 H-Bridge can be used for motors up to 4A (one motor per L298) or up to 2A (two motors per L298) with the supply voltage up to 46V. However, the L298 does not have built-in current limiting, a problem for motors with high stall currents. For higher currents and voltages, some users have reported success with International Rectifier's integrated high-side/low-side drivers.
de: Ein Schaltplan für eine 2A, 2-Achsen-PWM-Servoverstärkerplatine ist von der (http://emergent.unpy.net/projects/01148303608[der Softwareentwickler]) erhältlich.  Die L298 H-Bridge kann für Motoren bis zu 4A (ein Motor pro L298) oder bis zu 2A (zwei Motoren pro L298) mit einer Versorgungsspannung von bis zu 46V verwendet werden. Der L298 verfügt jedoch nicht über eine eingebaute Strombegrenzung, was bei Motoren mit hohen Stillstandsströmen ein Problem darstellt. Für höhere Ströme und Spannungen haben einige Anwender über Erfolge mit den integrierten High-Side/Low-Side-Treibern von International Rectifier berichtet.

note: type: Plain text
en: Pluto-step is suitable for control of a 3- or 4-axis CNC mill with stepper motors. The large number of inputs allows for a full set of limit switches.
de: Pluto-step ist für die Steuerung einer 3- oder 4-Achsen-CNC-Fräse mit Schrittmotoren geeignet. Die große Anzahl von Eingängen ermöglicht einen vollständigen Satz von Endschaltern.

note: type: Plain text
en: The board features:
de: Die Karte hat folgende Merkmale:

note: type: Plain text
en: 4 'step+direction' channels with 312.5 kHz maximum step rate, programmable step length, space, and direction change times
de: 4 'Schritt+Richtung'-Kanäle mit 312,5 kHz maximaler Schrittrate, programmierbarer Schrittlänge, Abstand und Richtungswechselzeiten

note: type: Plain text
en: 14 dedicated digital outputs
de: 14 dedizierte digitale Ausgänge

note: type: Plain text
en: 16 dedicated digital inputs
de: 16 dedizierte digitale Eingänge

note: type: Plain text
en: EPP communication with the PC
de: EPP-Kommunikation mit dem PC

note: type: Plain text
en: 'STEPx' - The 'step' (clock) output of stepgen channel 'x'
de: 'STEPx' - Der 'Step' (Clock) Ausgang des Stepgen-Kanals 'x'

note: type: Plain text
en: 'DIRx' - The 'direction' output of stepgen channel 'x'
de: 'DIRx' - Die 'Richtungs'-Ausgabe des Stepgen-Kanals 'x'

note: type: Plain text
en: While the 'extended main connector' has a superset of signals usually found on a Step & Direction DB25 connector--4 step generators, 9 inputs, and 6 general-purpose outputs--the layout on this header is different than the layout of a standard 26-pin ribbon cable to DB25 connector.
de: Während der "erweiterte Hauptanschluss" über eine Reihe von Signalen verfügt, die normalerweise auf einem Step & Direction DB25-Anschluss zu finden sind - 4 Schrittgeneratoren, 9 Eingänge und 6 Allzweckausgänge -, unterscheidet sich das Layout dieses Anschlusses von dem eines standardmäßigen 26-poligen Flachbandkabels zu einem DB25-Anschluss.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Pluto-Step Pinout
de: Pluto-Step-Pinbelegung

note: type: Plain text
en: Step frequencies for each channel are updated at different times.
de: Die Schrittfrequenzen für jeden Kanal werden zu unterschiedlichen Zeiten aktualisiert.

note: type: Plain text
en: Digital outputs are all updated at the same time.
de: Die digitalen Ausgänge werden alle gleichzeitig aktualisiert.

note: type: Plain text
en: Digital inputs are all latched at the same time.
de: Die digitalen Eingänge werden alle zur gleichen Zeit gehalten (engl. latched).

note: type: Plain text
en: Feedback positions for each channel are latched at different times.
de: Feedback-Positionen werden für jeden Kanal zu unterschiedlichen Zeiten gespeichert.

note: type: Title ===
en: Step Waveform Timings
de: Schritt (engl. Step)-Wellenform-Timings

note: type: Plain text
en: The firmware and driver enforce step length, space, and direction change times. Timings are rounded up to the next multiple of 1.6μs, with a maximum of 49.6μs. The timings are the same as for the software stepgen component, except that 'dirhold' and 'dirsetup' have been merged into a single parameter 'dirtime' which should be the maximum of the two, and that the same step timings are always applied to all channels.
de: Die Firmware und der Treiber erzwingen Schrittlänge, Abstand und Richtungswechselzeiten. Die Zeiten werden auf das nächste Vielfache von 1,6 μs aufgerundet, mit einem Maximum von 49,6 μs. Die Zeitvorgaben sind dieselben wie bei der Softwarekomponente stepgen, mit der Ausnahme, dass "dirhold" und "dirsetup" zu einem einzigen Parameter "dirtime" zusammengefasst wurden, der das Maximum der beiden Parameter sein sollte, und dass für alle Kanäle stets dieselben Schrittvorgaben gelten.

note: type: Block title
en: Pluto-Step Timings (((pluto-step timings)))
de: Pluto-Step-Timings (((Pluto-Step-Timings)))

note: type: Plain text
en: A list of all 'loadrt' arguments, HAL function names, pin names and parameter names is in the manual page, 'pluto_step.9'.
de: Eine Liste aller 'loadrt'-Argumente, HAL-Funktionsnamen, Pin-Namen und Parameter-Namen findet sich in der Manpage zu 'pluto_step.9'.

note: type: Title =
en: Powermax Modbus Driver
de: Powermax Modbus-Treiber

note: type: Plain text
en: This is a userspace HAL program, written in python, to control Hypetherm Powermax plasma cutters using the Modbus ASCII protocol over RS485. +
de: Dies ist ein in Python geschriebenes HAL-Programm zur Steuerung von Hypetherm Powermax-Plasmaschneidern unter Verwendung des Modbus-ASCII-Protokolls über RS485. +

note: type: Plain text
en: Since this is a userspace program it can be affected by computer loading and latency. It is possible to lose communications which will be indicated by a change in the status output. One should always have an Estop circuit that kills the power to the unit in case of emergency.
de: Da es sich um ein Userspace-Programm handelt, kann es durch Computerbelastung und Latenzzeiten beeinträchtigt werden. Es ist möglich, die Kommunikation zu verlieren, was durch eine Änderung der Statusausgabe angezeigt wird. Es sollte immer eine Notaus-Schaltung vorhanden sein, um die Stromzufuhr zum Gerät im Notfall verlässlich unterbrechen zu können.

note: type: Plain text
en: This will load the pmx485 component using the /dev/ttyUSB0 port and wait for it to become ready.
de: Dadurch wird die pmx485-Komponente über den Port /dev/ttyUSB0 geladen und gewartet, bis sie bereit ist.

note: type: Plain text
en: It is necessary to name the port to use for communications.
de: Es ist erforderlich, den für die Kommunikation zu verwendenden Anschluss zu benennen.

note: type: Plain text
en: *pmx485.mode-set* (bit, in) # set cutting mode
de: *pmx485.mode-set* (bit, in) # Schneidmodus einstellen

note: type: Plain text
en: *pmx485.current-set* (bit, in) # set cutting current
de: *pmx485.current-set* (bit, in) # Schneidstrom einstellen

note: type: Plain text
en: *pmx485.pressure-set* (bit, in) # set gas pressure
de: *pmx485.pressure-set* (bit, in) # Gasdruck einstellen

note: type: Plain text
en: *pmx485.enable* (bit, in) # enable the component
de: *pmx485.enable* (bit, in) # Aktivierung der Komponente

note: type: Plain text
en: *pmx485.mode* (bit, out) # cut mode feedback
de: *pmx485.mode* (bit, out) # Schneidmodus-Feedback

note: type: Plain text
en: *pmx485.current* (bit, out) # cutting current feedback
de: *pmx485.current* (bit, out) # Schneidstrom feedback

note: type: Plain text
en: *pmx485.pressure* (bit, out) # gas pressure feedback
de: *pmx485.pressure* (bit, out) # Gasdruck-Rückmeldung

note: type: Plain text
en: *pmx485.fault* (bit, out) # powermax fault code
de: *pmx485.fault* (bit, out) # Powermax-Fehlercode

note: type: Plain text
en: *pmx485.status* (bit, out) # connection status
de: *pmx485.status* (bit, out) # Verbindungsstatus

note: type: Plain text
en: *pmx485.current-min* (bit, out) # minimum allowed current
de: *pmx485.current-min* (bit, out) # minimal zulässiger Strom

note: type: Plain text
en: *pmx485.current-max* (bit, out) # maximum allowed current
de: *pmx485.current-max* (bit, out) # maximal zulässiger Strom

note: type: Plain text
en: *pmx485.pressure-min* (bit, out) # minimum allowed gas pressure
de: *pmx485.pressure-min* (bit, out) # minimal zulässiger Gasdruck

note: type: Plain text
en: *pmx485.pressure-max* (bit, out) # maximum allowed gas pressure
de: *pmx485.pressure-max* (bit, out) # maximal zulässiger Gasdruck

note: type: Plain text
en: To communicate with a Powermax, the component must first be enabled via the *enable* pin and it may then initiate a request to the Powermax by writing a valid string to the following pins:
de: Um mit einem Powermax zu kommunizieren, muss die Komponente zunächst über den *enable*-Pin aktiviert werden und kann dann eine Anfrage an den Powermax stellen, indem sie einen gültigen String an die folgenden Pins schreibt:

note: type: Plain text
en: *mode-set*
de: *mode-set* (engl. für 'Modus gesetzt')

note: type: Plain text
en: *current-set*
de: *current-set* (engl. für 'Stromfluss gesetzt')

note: type: Plain text
en: *pressure-set*
de: *pressure-set* (engl. für Druck-gesetzt)

note: type: Plain text
en: A *pressure-set* value of zero is valid, the Powermax will then calculate the required pressure internally.
de: Ein *pressure-set*-Wert von Null ist gültig, der Powermax berechnet dann intern den erforderlichen Druck.

note: type: Plain text
en: Communications may be validated from the Powermax display or the *status* pin. While in remote mode, the mode, current and pressure may be changed as needed.
de: Die Kommunikation kann über das Powermax-Display oder den *Status*-Pin validiert werden. Im Fernsteuerungsmodus können der Modus, der Strom und der Druck nach Bedarf geändert werden.

note: type: Plain text
en: To terminate the communications, do one of the following:
de: Um die Kommunikation zu beenden, führen Sie einen der folgenden Schritte aus:

note: type: Plain text
en: Set all set pins to zero: *mode-set*, *current-set*, and *pressure-set*.
de: Setzen Sie alle Set-Pins auf Null: *mode-set*, *current-set* und *pressure-set*.

note: type: Plain text
en: Disconnect the Powermax power supply from its power source for approximately 30 seconds. When you power the system back ON, it will no longer be in remote mode.
de: Trennen Sie das Powermax-Netzteil für etwa 30 Sekunden von der Stromquelle. Wenn Sie das System wieder einschalten, befindet es sich nicht mehr im Remote-Modus.

note: type: Title ==
en: Reference:
de: Referenz:

note: type: Plain text
en: Hypertherm Application Note #807220
    "Powermax45 XP/65/85/105/125® Serial Communication Protocol"
de: Hypertherm Anwendungshinweis #807220
    "Powermax45 XP/65/85/105/125® Serielles Kommunikationsprotokoll"

note: type: Title =
en: Servo To Go Driver
de: Servo To Go-Treiber

note: type: Plain text
en: The Servo-To-Go (STG) is one of the first PC motion control cards supported by LinuxCNC. It is an ISA card and it exists in different flavors (all supported by this driver). The board includes up to 8 channels of quadrature encoder input, 8 channels of analog input and output, 32 bits digital I/O, an interval timer with interrupt and a watchdog. For more information see the http://www.servotogo.com/[Servo To Go] web page.
de: Die Servo-To-Go (STG) ist eine der ersten PC Motion Control Karten von LinuxCNC unterstützt. Es ist eine ISA-Karte und es gibt in verschiedenen Varianten (alle von diesem Treiber unterstützt). Die Karte enthält bis zu 8 Kanäle von Quadratur-Encoder-Eingang, 8 Kanäle von analogen Ein- und Ausgängen, 32 Bit digitale E/A, ein Intervall-Timer mit Interrupt und ein Watchdog. Weitere Informationen finden Sie auf der Webseite http://www.servotogo.com/[Servo To Go].

note: type: Plain text
en: We have had reports that the opamps on the Servo To Go card do not work with newer ATX power supplies that use modern switch mode DC-DC converters.  The failure mode is that STG card outputs a constant voltage regardless of what the driver is commanding it to do.  Older ATX power supplies with linear voltage regulators do not have this problem, and work fine with the STG cards.
de: Uns liegen Berichte vor, dass die Operationsverstärker auf der Servo To Go-Karte nicht mit neueren ATX-Netzteilen funktionieren, die moderne DC-DC-Schaltwandler verwenden.  Der Fehlermodus ist, dass die STG-Karte eine konstante Spannung ausgibt, unabhängig davon, was der Treiber ihr befiehlt.  Ältere ATX-Netzteile mit linearen Spannungsreglern haben dieses Problem nicht und funktionieren problemlos mit den STG-Karten.

note: type: Plain text
en: The base address field is optional; if it's not provided the driver attempts to autodetect the board. The num_chan field is used to specify the number of channels available on the card, if not used the 8 axis version is assumed. The digital inputs/outputs configuration is determined by a config string passed to insmod when loading the module.  The format consists of a four character string that sets the direction of each group of pins. Each character of the direction string is either "I" or "O". The first character sets the direction of port A (Port A - DIO.0-7), the next sets port B (Port B - DIO.8-15), the next sets port C (Port C - DIO.16-23), and the fourth sets port D (Port D - DIO.24-31). The model field can be used in case the driver doesn't autodetect the right card version.
de: Das Feld base address ist optional; wenn es nicht angegeben wird, versucht der Treiber, die Karte automatisch zu erkennen. Das Feld num_chan wird verwendet, um die Anzahl der auf der Karte verfügbaren Kanäle anzugeben; wird es nicht verwendet , dann wird die 8-Achsen-Version angenommen. Die Konfiguration der digitalen Ein- und Ausgänge wird durch einen Konfigurationsstring bestimmt, der beim Laden des Moduls an insmod übergeben wird.  Das Format besteht aus einer vierstelligen Zeichenkette, welche die Richtung jeder Gruppe von Pins festlegt. Jedes Zeichen des Richtungsstrings ist entweder "I" oder "O". Das erste Zeichen bestimmt die Richtung von Anschluss A (Port A - DIO.0-7), das nächste die von Anschluss B (Port B - DIO.8-15), das nächste die von Anschluss C (Port C - DIO.16-23) und das vierte die von Anschluss D (Port D - DIO.24-31). Das Modellfeld kann verwendet werden, falls der Treiber nicht automatisch die richtige Kartenversion erkennt.

note: type: Plain text
en: HINT: after starting up the driver, 'dmesg' can be consulted for messages relevant to the driver (e.g. autodetected version number and base address). For example:
de: HINT: nach dem Starten des Treibers kann 'dmesg' auf treiberrelevante Meldungen (z.B. automatisch erkannte Versionsnummer und Basisadresse) untersucht werden. Zum Beispiel:

note: type: Plain text
en: This example installs the STG driver for a card found at the base address of 0x300, 4 channels of encoder feedback, DACs and ADCs, along with 32 bits of I/O configured like this: the first 8 (Port A)  configured as Input, the next 8 (Port B) configured as Output, the next 8 (Port C) configured as Input, and the last 8 (Port D) configured as Output
de: Dieses Beispiel installiert den STG-Treiber für eine Karte mit der Basisadresse 0x300, 4 Kanälen für Encoder-Feedback, DACs und ADCs sowie 32 Bits E/A, die wie folgt konfiguriert sind: die ersten 8 (Port A) als Eingang, die nächsten 8 (Port B) als Ausgang, die nächsten 8 (Port C) als Eingang und die letzten 8 (Port D) als Ausgang

note: type: Plain text
en: This example installs the driver and attempts to autodetect the board address and board model, it installs 8 axes by default along with a standard I/O setup: Port A & B configured as Input, Port C & D configured as Output.
de: Dieses Beispiel installiert den Treiber und versucht, die Kartenadresse und das Kartenmodell automatisch zu erkennen. Es installiert standardmäßig 8 Achsen zusammen mit einer Standard-E/A-Einstellung: Port A und B sind als Eingang, Port C und D als Ausgang konfiguriert.

note: type: Plain text
en: 'stg.<channel>.counts' - (s32) Tracks the counted encoder ticks.
de: 'stg.<channel>.counts' - (s32) Folgt den gezählten Encoder-Ticks.

note: type: Plain text
en: 'stg.<channel>.position' - (float) Outputs a converted position.
de: 'stg.<channel>.position' - (float) Gibt eine konvertierte Position aus.

note: type: Plain text
en: 'stg.<channel>.dac-value' - (float) Drives the voltage for the corresponding DAC.
de: 'stg.<channel>.dac-value' - (float) Steuert die Spannung für den entsprechenden DAC.

note: type: Plain text
en: 'stg.<channel>.adc-value' - (float) Tracks the measured voltage from the corresponding ADC.
de: 'stg.<channel>.adc-value' - (float) Folgt die gemessene Spannung vom entsprechenden ADC.

note: type: Plain text
en: 'stg.in-<pinnum>' - (bit) Tracks a physical input pin.
de: 'stg.in-<pinnum>' - (bit) Folgt einen physischen Eingangspin.

note: type: Plain text
en: 'stg.in-<pinnum>-not' - (bit) Tracks a physical input pin, but inverted.
de: 'stg.in-<pinnum>-not' - (bit) Folgt einem physischen Eingangspin, aber invertiert.

note: type: Plain text
en: 'stg.out-<pinnum>' - (bit) Drives a physical output pin
de: 'stg.out-<pinnum>' - (Bit) Treibt einen physischen Ausgangspin an

note: type: Plain text
en: For each pin, <channel> is the axis number, and <pinnum> is the logic pin number of the STG if `IIOO` is defined, there are 16 input pins (in-00 .. in-15) and 16 output pins (out-00 .. out-15), and they correspond to PORTs ABCD (in-00 is PORTA.0, out-15 is PORTD.7).
de: Für jeden Pin ist <Kanal> die Achsennummer und <Pinnum> die logische Pin-Nummer des STG, wenn "IIOO" definiert ist. Es gibt 16 Eingangs-Pins (in-00 .. in-15) und 16 Ausgangs-Pins (out-00 .. out-15), und sie entsprechen den PORTs ABCD (in-00 ist PORTA.0, out-15 ist PORTD.7).

note: type: Plain text
en: The in-<pinnum> HAL pin is TRUE if the physical pin is high, and FALSE if the physical pin is low. The in-<pinnum>-not HAL pin is inverted -- it is FALSE if the physical pin is high. By connecting a signal to one or the other, the user can determine the state of the input.
de: Der in-<pinnum>-HAL-Pin ist TRUE, wenn der physikalische Pin high ist, und FALSE, wenn der physikalische Pin low ist. Der in-<pinnum>-not HAL-Pin ist invertiert - er ist FALSE, wenn der physikalische Pin high ist. Durch Anschließen eines Signals an den einen oder anderen Pin kann der Benutzer den Zustand des Eingangs bestimmen.

note: type: Plain text
en: 'stg.<channel>.position-scale' - (float) The number of counts / user unit (to convert from counts to units).
de: 'stg.<channel>.position-scale' - (float) Die Anzahl der Zählungen / Benutzereinheiten (zur Umrechnung von Zählungen in Einheiten).

note: type: Plain text
en: 'stg.<channel>.dac-offset' - (float) Sets the offset for the corresponding DAC.
de: 'stg.<channel>.dac-offset' - (float) Legt den Offset für den entsprechenden DAC fest.

note: type: Plain text
en: 'stg.<channel>.dac-gain' - (float) Sets the gain of the corresponding DAC.
de: 'stg.<channel>.dac-gain' - (float) Legt die Verstärkung des entsprechenden DAC fest.

note: type: Plain text
en: 'stg.<channel>.adc-offset' - (float) Sets the offset of the corresponding ADC.
de: 'stg.<channel>.adc-offset' - (float) Legt den Offset des entsprechenden ADC fest.

note: type: Plain text
en: 'stg.<channel>.adc-gain' - (float) Sets the gain of the corresponding ADC.
de: 'stg.<channel>.adc-gain' - (float) Legt die Verstärkung des entsprechenden ADC fest.

note: type: Plain text
en: 'stg.out-<pinnum>-invert' - (bit) Inverts an output pin.
de: 'stg.out-<pinnum>-invert' - (bit) Invertiert einen Ausgangspin.

note: type: Plain text
en: The -invert parameter determines whether an output pin is active high or active low. If -invert is FALSE, setting the HAL out- pin TRUE drives the physical pin high, and FALSE drives it low. If -invert is TRUE, then setting the HAL out- pin TRUE will drive the physical pin low.
de: Der Parameter '-invert' bestimmt, ob ein Ausgangspin aktiv high oder aktiv low ist. Wenn '-invert' FALSE ist, wird der physikalische Pin durch das Setzen des HAL '-out'-Pins auf TRUE aktiviert und durch FALSE deaktiviert. Wenn '-invert' TRUE ist, wird der physikalische Pin durch das Setzen des HAL '-out'-Pins TRUE auf low gesetzt.

note: type: Plain text
en: 'stg.capture-position' - Reads the encoder counters from the axis <channel>.
de: 'stg.capture-position' - Liest die Encoder-Zähler von der Achse <channel>.

note: type: Plain text
en: 'stg.write-dacs' - Writes the voltages to the DACs.
de: 'stg.write-dacs' - Schreibt die Spannungen in die DACs.

note: type: Plain text
en: 'stg.read-adcs' - Reads the voltages from the ADCs.
de: 'stg.read-adcs' - Liest die Spannungen von den ADCs.

note: type: Plain text
en: 'stg.di-read' - Reads physical in- pins of all ports and updates all HAL in-<pinnum> and in-<pinnum>-not pins.
de: 'stg.di-read' - Liest physische In-Pins aller Ports und aktualisiert alle HAL In-<pinnum> und In- nicht <pinnum>Pins.

note: type: Plain text
en: 'stg.do-write' - Reads all HAL out-<pinnum> pins and updates all physical output pins.
de: 'stg.do-write' - Liest alle HAL out-<pinnum> Pins und aktualisiert alle physischen Ausgangspins.

note: type: Plain text
en: Shuttle is a non-realtime HAL component that interfaces Contour Design's ShuttleXpress, ShuttlePRO, and ShuttlePRO2 devices with LinuxCNC's HAL.
de: Shuttle ist eine Nicht-Echtzeit-HAL-Komponente, die Schnittstellen Contour Design's ShuttleXpress, ShuttlePRO, und ShuttlePRO2 Geräte mit LinuxCNC's HAL.

note: type: Plain text
en: If the driver is started without command-line arguments, it will probe all /dev/hidraw* device files for Shuttle devices, and use all devices found. If it is started with command-line arguments, it will only probe the devices specified.
de: Wenn der Treiber ohne Befehlszeilenargumente gestartet wird, sucht er in allen /dev/hidraw*-Gerätedateien nach Shuttle-Geräten und verwendet alle gefundenen Geräte. Wenn er mit Befehlszeilenargumenten gestartet wird, prüft er nur die angegebenen Geräte.

note: type: Plain text
en: The ShuttleXpress has five momentary buttons, a 10 counts/revolution jog wheel with detents, and a 15-position spring-loaded outer wheel that returns to center when released.
de: Das ShuttleXpress verfügt über fünf Taster, ein Jogwheel mit 10 Zählern/Umdrehung und ein federbelastetes Außenrad mit 15 Positionen, das beim Loslassen in die Mitte zurückkehrt.

note: type: Plain text
en: The ShuttlePRO has 13 momentary buttons, a 10 counts/revolution jog wheel with detents, and a 15-position spring-loaded outer wheel that returns to center when released.
de: Das ShuttlePRO verfügt über 13 Tasten, ein Jogwheel mit 10 Zählern/Umdrehung und ein federbelastetes Außenrad mit 15 Positionen, das beim Loslassen in die Mitte zurückkehrt.

note: type: Plain text
en: The ShuttlePRO2 has 15 momentary buttons, a 10 counts/revolution jog wheel with detents, and a 15-position spring-loaded outer wheel that returns to center when released.
de: Das ShuttlePRO2 verfügt über 15 Drucktasten, ein Jogwheel mit 10 Zählern/Umdrehung und ein federbelastetes Außenrad mit 15 Positionen, das beim Loslassen in die Mitte zurückkehrt.

note: type: delimited block =
en: The Shuttle devices have an internal 8-bit counter for the current jog-wheel position. The shuttle driver can not know this value until the Shuttles device sends its first event. When the first event comes into the driver, the driver uses the device's reported jog-wheel position to initialize counts to 0.
de: Die Shuttle-Geräte verfügen über einen internen 8-Bit-Zähler für die aktuelle Jog-Wheel-Position. Der Shuttle-Treiber kann diesen Wert nicht kennen, bis das Shuttle-Gerät sein erstes Ereignis sendet. Wenn das erste Ereignis im Treiber eintrifft, verwendet der Treiber die vom Gerät gemeldete Jog-Wheel-Position, um den Zähler auf 0 zu initialisieren.

note: type: Plain text
en: This means that if the first event is generated by a jog-wheel move, that first move will be lost.
de: Das heißt, wenn das erste Ereignis durch eine Jogwheel-Bewegung erzeugt wird, geht diese erste Bewegung verloren.

note: type: delimited block =
en: Any user interaction with the Shuttle device will generate an event, informing the driver of the jog-wheel position. So if you (for example)  push one of the buttons at startup, the jog-wheel will work fine and notice the first click.
de: Jede Benutzerinteraktion mit dem Shuttle-Gerät erzeugt ein Ereignis, das den Fahrer über die Position des Jogwheels informiert. Wenn Sie also (zum Beispiel) beim Start eine der Tasten drücken, funktioniert das Jogwheel einwandfrei und bemerkt den ersten Klick.

note: type: Title ==
en: Setup
de: Einrichtung

note: type: Plain text
en: The shuttle driver needs read permission to the /dev/hidraw* device files. This can be accomplished by adding a file /etc/udev/rules.d/99-shuttle.rules, with the following contents:
de: Der Shuttle-Treiber benötigt Leserechte für die Gerätedateien /dev/hidraw*. Dies kann durch Hinzufügen einer Datei /etc/udev/rules.d/99-shuttle.rules mit dem folgenden Inhalt erreicht werden:

note: type: Plain text
en: The LinuxCNC Debian package installs an appropriate udev file automatically, but if you are building LinuxCNC from source and are not using the Debian packaging you'll need to install this file by hand.  If you install the file by hand you'll need to tell udev to reload its rules files by running `udevadm control --reload-rules`.
de: Das LinuxCNC Debian-Paket installiert eine entsprechende udev-Datei automatisch, aber wenn Sie LinuxCNC aus dem Quellcode bauen und nicht das Debian-Paket verwenden, müssen Sie diese Datei von Hand installieren.  Wenn Sie die Datei von Hand installieren, müssen Sie udev anweisen, seine Regeldateien neu zu laden, indem Sie `udevadm control --reload-rules` ausführen.

note: type: Plain text
en: All HAL pin names are prefixed with `shuttle` followed by the index of the device (the order in which the driver found them), for example "shuttle.0" or "shuttle.2".
de: Allen HAL-Pin-Namen wird das Präfix "shuttle" vorangestellt, gefolgt vom Index des Geräts (die Reihenfolge, in der sie vom Treiber gefunden wurden), z. B. "shuttle.0" oder "shuttle.2".

note: type: Labeled list
en: '<Prefix>.button-<ButtonNumber>' (bit out)
de: '<Prefix>.button-<ButtonNummer>' (bit out)

note: type: Plain text
en: These pins are True (1) when the button is pressed.
de: Diese Pins sind wahr (1) wenn die Schaltfläche gedrückt wird.

note: type: Labeled list
en: '<Prefix>.button-<ButtonNumber>-not' (bit out)
de: '<Prefix>.button-<ButtonNummer>-not' (bit out)

note: type: Plain text
en: These pins have the inverse of the button state, so they're True (1) when the button is not pressed.
de: Diese Pins haben den umgekehrten Zustand des Buttons, also sind sie True (1) wenn der Button nicht gedrückt wird.

note: type: Labeled list
en: '<Prefix>.counts' (s32 out)
de: '<Präfix>.counts' (s32 out)

note: type: Plain text
en: Accumulated counts from the jog wheel (the inner wheel).
de: Kumulierte Zählungen des Jogwheels (das innere Rad).

note: type: Labeled list
en: '<Prefix>.spring-wheel-s32' (s32 out)
de: '<Präfix>.spring-wheel-s32' (s32 out)

note: type: Plain text
en: The current deflection of the spring-wheel (the outer wheel).  It's 0 at rest, and ranges from -7 at the counter-clockwise extreme to +7 at the clockwise extreme.
de: Die aktuelle Auslenkung des Federrads (des äußeren Rads).  Im Ruhezustand ist er 0 und reicht von -7 am äußersten Ende gegen den Uhrzeigersinn bis +7 am äußersten Ende im Uhrzeigersinn.

note: type: Labeled list
en: '<Prefix>.spring-wheel-f' (float out)
de: '<Präfix>.spring-wheel-f' (float out)

note: type: Plain text
en: The current deflection of the spring-wheel (the outer wheel).  It's 0.0 at rest, -1.0 at the counter-clockwise extreme, and +1.0 at the clockwise extreme. (The Shuttle devices report the spring-wheel position as an integer from -7 to +7, so this pin reports only 15 discrete values in it's range.)
de: Die aktuelle Auslenkung des Federrads (des äußeren Rads).  Sie beträgt 0,0 im Ruhezustand, -1,0 im extremen Gegenuhrzeigersinn und +1,0 im extremen Uhrzeigersinn. (Die Shuttle-Geräte melden die Position des Federrads als Ganzzahl von -7 bis +7, so dass dieser Pin nur 15 diskrete Werte in seinem Bereich meldet.)

note: type: Title =
en: VFS11 VFD Driver
de: VFS11 VFD-Treiber

note: type: Plain text
en: This is a userspace HAL program to control the S11 series of VFD's from Toshiba.
de: Dies ist ein User-Space-HAL-Programm zur Steuerung der S11-Serie von VFD's von Toshiba.

note: type: Plain text
en: vfs11_vfd supports serial and TCP connections. Serial connections may be RS232 or RS485. RS485 is supported in full- and half-duplex mode. TCP connections may be passive (wait for incoming connection), or active outgoing connections, which may be useful to connect to TCP-based devices or through a terminal server.
de: vfs11_vfd unterstützt serielle und TCP-Verbindungen. Serielle Verbindungen können RS232 oder RS485 sein. RS485 wird im Voll- und Halbduplex-Modus unterstützt. TCP-Verbindungen können passiv (Warten auf eine eingehende Verbindung) oder aktiv (ausgehende Verbindungen) sein, was für die Verbindung mit TCP-basierten Geräten oder über einen Terminal-Server nützlich sein kann.

note: type: Plain text
en: Regardless of the connection type, vfs11_vfd operates as a Modbus master.
de: Unabhängig von der Verbindungsart arbeitet vfs11_vfd als Modbus-Master.

note: type: Plain text
en: The above command says: loadusr, wait for named to load, component vfs11_vfd, named spindle-vfd
de: Der obige Befehl lautet: loadusr, warten bis named geladen ist, Komponente vfs11_vfd, named spindle-vfd

note: type: Plain text
en: 'vfs11_vfd' is mostly configured through INI file options. The command line options are:
de: 'vfs11_vfd' wird hauptsächlich durch INI-Datei-Optionen konfiguriert. Die Kommandozeilenoptionen sind:

note: type: Plain text
en: '-n or --name <halname>' : set the HAL component name
de: '-n oder --name <halname>' : den Namen der HAL-Komponente festlegen

note: type: Plain text
en: '-I or --ini <inifilename>' : take configuration from this INI file.  Defaults to environment variable INI_FILE_NAME.
de: '-I oder --ini <inifilename>' : übernimmt die Konfiguration aus der angegebenen INI-Datei.  Standardmäßig wird die Umgebungsvariable INI_FILE_NAME verwendet.

note: type: Plain text
en: '-S or --section <section name>' : take configuration from this section in the INI file. Defaults to 'VFS11'.
de: '-S oder --section <section name>' : übernimmt die Konfiguration aus dem Abschnitt mit diesem Namen in der INI-Datei. Der Standardwert ist 'VFS11'.

note: type: Plain text
en: '-d or --debug' enable debug messages on console output.
de: '-d oder --debug' aktiviert Debug-Meldungen in der Konsolenausgabe.

note: type: Plain text
en: '-m or --modbus-debug' enable modbus messages on console output
de: '-m oder --modbus-debug' aktiviert Modbus-Meldungen auf der Konsolenausgabe

note: type: Plain text
en: '-r or --report-device' report device properties on console at startup
de: '-r oder --report-device' Geräteeigenschaften beim Starten auf der Konsole melden

note: type: Plain text
en: Debugging can be toggled by sending a USR1 signal to the vfs11_vfd process. Modbus debugging can be toggled by sending a USR2 signal to vfs11_vfd process (example: +kill -USR1 \`pidof vfs11_vfd`+).
de: Das Debugging kann durch Senden eines USR1-Signals an den vfs11_vfd-Prozess umgeschaltet werden. Modbus-Debugging kann durch Senden eines USR2-Signals an den vfs11_vfd-Prozess umgeschaltet werden (Beispiel: +kill -USR1 \`pidof vfs11_vfd`+).

note: type: Plain text
en: Where <n> is +vfs11_vfd+ or the name given during loading with the -n option.
de: Dabei steht <n> für +vfs11_vfd+ oder den beim Laden mit der Option -n angegebenen Namen.

note: type: Plain text
en: '<n>.acceleration-pattern' (bit, in) when true, set acceleration and deceleration times as defined in registers F500 and F501 respectively.  Used in PID loops to choose shorter ramp times to avoid oscillation.
de: '<n>.acceleration-pattern' (bit, in) wenn true, setzt Beschleunigungs- und Verzögerungszeiten wie in den Registern F500 bzw. F501 definiert.  Wird in PID-Schleifen verwendet, um kürzere Rampenzeiten zu wählen und damit Schwingungen zu vermeiden.

note: type: Plain text
en: '<n>.alarm-code' (s32, out) non-zero if drive is in alarmed state. Bitmap describing alarm information (see register FC91 description).  Use err-reset (see below) to clear the alarm.
de: '<n>.alarm-code' (s32, out) ungleich Null, wenn der Antrieb im Alarmzustand ist. Bitmap zur Beschreibung der Alarminformationen (siehe Beschreibung des Registers FC91).  Verwenden Sie err-reset (siehe unten), um den Alarm zu löschen.

note: type: Plain text
en: '<n>.at-speed' (bit, out)  when drive is at commanded speed (see speed-tolerance below)
de: '<n>.at-speed' (bit, out) wenn der Antrieb die Solldrehzahl erreicht (siehe Drehzahltoleranz unten)

note: type: Plain text
en: '<n>.current-load-percentage' (float, out)  reported from the VFD
de: '<n>.current-load-percentage' (float, out) gemeldet vom VFD

note: type: Plain text
en: '<n>.dc-brake' (bit, in)  engage the DC brake. Also turns off spindle-on.
de: '<n>.dc-brake' (bit, in) aktiviert die Gleichstrombremse. Schaltet auch das Spindel-ein Signal aus.

note: type: Plain text
en: '<n>.enable' (bit, in)  enable the VFD. If false, all operating parameters are still read but control is released and panel control is enabled (subject to VFD setup).
de: '<n>.enable' (bit, in) gibt das VFD frei. Wenn false, werden alle Betriebsparameter weiterhin gelesen, aber die Steuerung wird freigegeben und die Bedienfeldsteuerung wird aktiviert (abhängig von der VFD-Einstellung).

note: type: Plain text
en: '<n>.err-reset' (bit, in)  reset errors (alarms a.k.a Trip and e-stop status). Resetting the VFD may cause a 2-second delay until it's rebooted and Modbus is up again.
de: '<n>.err-reset' (bit, in) setzt Fehler (Alarme a.k.a Trip und e-stop Status) zurück. Das Zurücksetzen des VFD kann eine 2-Sekunden-Verzögerung verursachen bis der VFD neu gebootet ist und der Modbus wieder funktioniert.

note: type: Plain text
en: '<n>.estop' (bit, in)  put the VFD into emergency-stopped status. No operation possible until cleared with err-reset or powercycling.
de: '<n>.estop' (bit, in) versetzt den VFD in den Notaus-Status. Kein Betrieb möglich, bis mit Err-Reset oder einen Neustart der Notaus rückgängig gemacht wird.

note: type: Plain text
en: '<n>.frequency-command' (float, out)  current target frequency in Hz as set through speed-command (which is in RPM), from the VFD
de: '<n>.frequency-command' (float, out) aktuelle Zielfrequenz in Hz, wie durch den Drehzahl-Befehl (der in RPM angegeben ist), vom VFD eingestellt

note: type: Plain text
en: '<n>.frequency-out' (float, out)  current output frequency of the VFD
de: '<n>.frequency-out' (float, out) aktuelle Ausgangsfrequenz des VFD

note: type: Plain text
en: '<n>.inverter-load-percentage' (float, out)  current load report from VFD
de: '<n>.inverter-load-percentage' (float, out) aktuelle Lastmeldung vom VFD

note: type: Plain text
en: '<n>.is-e-stopped' (bit, out)  the VFD is in emergency stop status (blinking "E" on panel). Use err-reset to reboot the VFD and clear the e- stop status.
de: '<n>.is-e-stopped' (bit, out) der VFD befindet sich im Notaus-Status (blinkendes „E“ auf dem Bedienfeld). Verwenden Sie err-reset, um das VFD neu zu starten und den Notaus-Status zu löschen.

note: type: Plain text
en: '<n>.is-stopped' (bit, out)  true when the VFD reports 0 Hz output
de: '<n>.is-stopped' (bit, out) true wenn der VFD 0 Hz Ausgang meldet

note: type: Plain text
en: '<n>.max-rpm' (float, R)  actual RPM limit based on maximum frequency the VFD may generate, and the motors nameplate values. For instance, if nameplate-HZ is 50, and nameplate-RPM_ is 1410, but the VFD may generate up to 80 Hz, then max- rpm would read as 2256 (80*1410/50). The frequency limit is read from the VFD at startup. To increase the upper frequency limit, the UL and FH parameters must be changed on the panel.  See the VF-S11 manual for instructions how to set the maximum frequency.
de: '<n>.max-rpm' (Float, R) tatsächliche Drehzahlgrenze basierend auf der maximalen Frequenz, die der VFD erzeugen kann, und den Typenschildwerten des Motors. Wenn z. B. die Typenschild-HZ 50 und die Typenschild-Drehzahl 1410 beträgt, der Frequenzumrichter aber bis zu 80 Hz erzeugen kann, dann würde die maximale Drehzahl 2256 (80*1410/50) betragen. Die Frequenzgrenze wird beim Einschalten vom VFD abgelesen. Um die obere Frequenzgrenze zu erhöhen, müssen die Parameter UL und FH am Bedienfeld geändert werden.  Anweisungen zum Einstellen der Höchstfrequenz finden Sie im Handbuch des VF-S11.

note: type: Plain text
en: '<n>.modbus-ok' (bit, out)  true when the Modbus session is successfully established and the last 10 transactions returned without error.
de: '<n>.modbus-ok' (bit, out) true, wenn die Modbus-Sitzung erfolgreich aufgebaut ist und die letzten 10 Transaktionen ohne Fehler zurückgegeben wurden.

note: type: Plain text
en: '<n>.motor-RPM' (float, out)  estimated current RPM value, from the VFD
de: '<n>.motor-RPM' (float, out) geschätzter aktueller U/min (engl. RPM)-Wert, vom VFD

note: type: Plain text
en: '<n>.output-current-percentage' (float, out)  from the VFD
de: '<n>.output-current-percentage' (float, out) vom VFD

note: type: Plain text
en: '<n>.output-voltage-percentage' (float, out)  from the VFD
de: '<n>.output-voltage-percentage' (float, out) vom VFD

note: type: Plain text
en: '<n>.output-voltage' (float, out)  from the VFD
de: '<n>.output-voltage' (float, out) vom VFD

note: type: Plain text
en: '<n>.speed-command' (float, in)  speed sent to VFD in RPM. It is an error to send a speed faster than the Motor Max RPM as set in the VFD
de: '<n>.speed-command' (float, in) an den VFD gesendete Geschwindigkeit in U/min. Es ist ein Fehler, eine Geschwindigkeit zu senden, die höher ist als die im VFD eingestellte Motor Max RPM

note: type: Plain text
en: '<n>.spindle-fwd' (bit, in)  1 for FWD and 0 for REV, sent to VFD
de: '<n>.spindle-fwd' (bit, in) 1 für FWD (engl. kurz für vorwärts) und 0 für REV (engl. kurz für rückwärts), gesendet an VFD

note: type: Plain text
en: '<n>.spindle-on' (bit, in)  1 for ON and 0 for OFF sent to VFD, only on when running
de: '<n>.spindle-on' (bit, in) 1 für EIN und 0 für AUS an den VFD gesendet, nur bei Betrieb eingeschaltet

note: type: Plain text
en: '<n>.spindle-rev' (bit, in)  1 for ON and 0 for OFF, only on when running
de: '<n>.spindle-rev' (bit, in) 1 für EIN und 0 für AUS, nur bei Betrieb eingeschaltet

note: type: Plain text
en: '<n>.jog-mode' (bit, in)  1 for ON and 0 for OFF, enables the VF-S11 'jog mode'. Speed control is disabled, and the output frequency is determined by register F262 (preset to 5 Hz). This might be useful for spindle orientation. In normal mode, the VFD shuts off if the frequency drops below 12 Hz.
de: '<n>.jog-mode' (bit, in) 1 für ON und 0 für OFF, aktiviert den VF-S11 'jog-mode'. Die Drehzahlregelung ist deaktiviert, und die Ausgangsfrequenz wird durch das Register F262 bestimmt (voreingestellt auf 5 Hz). Dies kann für die Spindelausrichtung nützlich sein. Im normalen Modus schaltet sich der VFD ab, wenn die Frequenz unter 12 Hz fällt.

note: type: Plain text
en: '<n>.status' (s32, out)  Drive Status of the VFD (see the TOSVERT VF-S11 Communications Function Instruction Manual, register FD01). A bitmap.
de: '<n>.status' (s32, out) Antrieb (engl. Drive)-Status des VFD (siehe TOSVERT VF-S11 Communications Function Instruction Manual, Register FD01). Eine Bitmap.

note: type: Plain text
en: '<n>.trip-code' (s32, out)  trip code if VF-S11 is in tripped state.
de: '<n>.trip-code' (s32, out) Auslösecode, wenn VF-S11 im Auslösezustand ist.

note: type: Plain text
en: '<n>.error-count' (s32, out)  number of Modbus transactions which returned an error
de: '<n>.error-count' (s32, out) Anzahl der Modbus-Transaktionen, die einen Fehler zurückgegeben haben

note: type: Plain text
en: '<n>.max-speed' (bit, in)  ignore the loop-time parameter and run Modbus at maximum speed, at the expense of higher CPU usage. Suggested use during spindle positioning.
de: '<n>.max-speed' (bit, in) ignoriert den Schleifenzeit (engl. loop-time)-Parameter und lässt Modbus mit maximaler Geschwindigkeit laufen, auf Kosten einer höheren CPU-Auslastung. Empfohlene Verwendung während der Spindelpositionierung.

note: type: Plain text
en: '<n>.frequency-limit' (float, RO)  upper limit read from VFD setup.
de: '<n>.frequency-limit' (float, RO) oberer Grenzwert, der vom VFD-Setup gelesen wird.

note: type: Plain text
en: '<n>.loop-time' (float, RW)  how often the Modbus is polled (default interval 0.1 seconds)
de: '<n>.loop-time' (float, RW) wie oft der Modbus abgefragt wird (Standardintervall 0,1 Sekunden)

note: type: Plain text
en: '<n>.nameplate-HZ' (float, RW)  Nameplate Hz of motor (default 50). Used to calculate target frequency (together with nameplate-RPM ) for a target RPM value as given by speed-command.
de: '<n>.nameplate-HZ' (float, RW) Namen-/Typenschild in Hz des Motors (Standard 50). Dient zur Berechnung der Zielfrequenz (zusammen mit nameplate-RPM (engl. für U/min) ) für einen durch den Drehzahlbefehl vorgegebenen Ziel-Drehzahlwert.

note: type: Plain text
en: '<n>.nameplate-RPM' (float, RW)  Nameplate RPM of motor (default 1410)
de: '<n>.nameplate-RPM' (float, RW) (engl. für U/min) Namens-/Typenschild-Drehzahl des Motors (Standard 1410)

note: type: Plain text
en: '<n>.rpm-limit' (float, RW)  do-not-exceed soft limit for motor RPM (defaults to nameplate-RPM ).
de: '<n>.rpm-limit' (float, RW) weicher Grenzwert für die Motordrehzahl, der nicht überschritten werden darf (Standardwert ist die Angabe bei "nameplate-RPM" (engl. für Typenschild-Drehzahl)).

note: type: Plain text
en: '<n>.tolerance' (float, RW)  speed tolerance (default 0.01) for determining whether spindle is at speed (0.01 meaning: output frequency is within 1% of target frequency)
de: '<n>.tolerance' (float, RW) Drehzahltoleranz (Standardwert 0,01) zur Bestimmung, ob die Spindel auf Drehzahl ist (0,01 bedeutet: Ausgangsfrequenz liegt innerhalb von 1% der Sollfrequenz)

note: type: Title ==
en: INI file configuration
de: INI-Datei-Konfiguration

note: type: Plain text
en: This lists all options understood by vfs11_vfd. Typical setups for RS-232, RS-485 and TCP can be found in 'src/hal/user_comps/vfs11_vfd/*.ini'.
de: Hier werden alle Optionen aufgelistet, die vfs11_vfd versteht. Typische Einstellungen für RS-232, RS-485 und TCP finden Sie in 'src/hal/user_comps/vfs11_vfd/*.ini'.

note: type: delimited block -
en: [VFS11]
    # serial connection
    TYPE=rtu
de: [VFS11]
    # serielle Verbindung
    TYPE=rtu

note: type: delimited block -
en: # serial port
    DEVICE=/dev/ttyS0
de: # serielle Schnittstelle
    DEVICE=/dev/ttyS0

note: type: delimited block -
en: # TCP server - wait for incoming connection
    TYPE=tcpserver
de: # TCP-Server - Warten Sie auf eingehende Verbindung
    TYP=tcpserver

note: type: delimited block -
en: # tcp portnumber for TYPE=tcpserver or tcpclient
    PORT=1502
de: # tcp portnumber für TYPE=tcpserver oder tcpclient
    PORT=1502

note: type: delimited block -
en: # TCP client - active outgoing connection
    TYPE=tcpclient
de: # TCP-Client - aktive ausgehende Verbindung
    TYPE=tcpclient

note: type: delimited block -
en: # destination to connect to if TYPE=tcpclient
    TCPDEST=192.168.1.1
de: # Ziel, zu dem eine Verbindung aufgebaut werden soll if TYPE=tcpclient
    TCPDEST=192.168.1.1

note: type: delimited block -
en: #---------- meaningful only if TYPE=rtu -------
    # serial device detail
    # 5 6 7 8
    BITS= 5
de: ---------- nur sinnvoll, wenn TYPE=rtu -------
    # serial device detail
    # 5 6 7 8
    BITS= 5

note: type: delimited block -
en: # even odd none
    PARITY=none
de: # even odd none
    # (engl. für gerade ungerade keine)
    PARITY=none

note: type: delimited block -
en: # up down none
    # this feature might not work with a stock Ubuntu
    # libmodbus5/libmodbus-dev package, and generate a warning
    # execution will continue as if RTS_MODE=up were given.
    RTS_MODE=up
    #---------------------
de: # up down none (engl. für auf ab keine)
    # diese Funktion funktioniert möglicherweise nicht mit einem Ubuntu-Paket
    # libmodbus5/libmodbus-dev-Paket und erzeugt eine Warnung.
    # Die Ausführung wird fortgesetzt, als ob RTS_MODE=up angegeben wäre.
    RTS_MODE=up
    #---------------------

note: type: delimited block -
en: # modbus timers in seconds
    # inter-character timer
    BYTE_TIMEOUT=0.5
    # packet timer
    RESPONSE_TIMEOUT=0.5
de: # Modbus-Timer in Sekunden
    # inter-character timer
    BYTE_TIMEOUT=0.5
    # packet timer
    RESPONSE_TIMEOUT=0.5

note: type: delimited block -
en: # target modbus ID
    TARGET=1
de: # Ziel (engl. target)-Modbus-ID
    TARGET=1

note: type: delimited block -
en: # on I/O failure, try to reconnect after sleeping
    # for RECONNECT_DELAY seconds
    RECONNECT_DELAY=1
de: # bei E/A-Fehlern wird versucht, die Verbindung nach einer Verzögerung von
    # RECONNECT_DELAY Sekunden wiederherzustellen
    RECONNECT_DELAY=1

note: type: delimited block -
en: # misc. parameters
    DEBUG=10
    MODBUS_DEBUG=0
    POLLCYCLES=10
de: # Verschiedene weitere Parameter
    DEBUG=10
    MODBUS_DEBUG=0
    POLLCYCLES=10

note: type: delimited block -
en: #
    # example usage of the VF-S11 VFD driver
    #
    #
    loadusr -Wn spindle-vfd vfs11_vfd -n spindle-vfd
de: #
    # Beispiel für die Verwendung des VF-S11 VFD-Treibers
    #
    #
    loadusr -Wn spindle-vfd vfs11_vfd -n spindle-vfd

note: type: delimited block -
en: # connect the spindle direction pins to the VFD
    net vfs11-fwd spindle-vfd.spindle-fwd <= spindle.0.forward
    net vfs11-rev spindle-vfd.spindle-rev <= spindle.0.reverse
de: # Verbinden der Spindelrichtungs-Pins mit dem VFD
    net vfs11-fwd spindle-vfd.spindle-fwd <= spindle.0.forward
    net vfs11-rev spindle-vfd.spindle-rev <= spindle.0.reverse

note: type: delimited block -
en: # connect the spindle on pin to the VF-S11
    net vfs11-run spindle-vfd.spindle-on <= spindle.0.on
de: # Verbinden des Pins "Spindel ein" mit dem VF-S11
    net vfs11-run spindle-vfd.spindle-on <= spindle.0.on

note: type: delimited block -
en: # connect the VF-S11 at speed to the motion at speed
    net vfs11-at-speed spindle.0.at-speed <= spindle-vfd.at-speed
de: # Verbinden des VF-S11-auf-Geschwindigkeit-Pins
    net vfs11-at-speed spindle.0.at-speed <= spindle-vfd.at-speed

note: type: delimited block -
en: # connect the spindle RPM to the VF-S11
    net vfs11-RPM spindle-vfd.speed-command <= spindle.0.speed-out
de: # Verbinden der Spindeldrehzahl-Pins
    net vfs11-RPM spindle-vfd.speed-command <= spindle.0.speed-out

note: type: delimited block -
en: # connect the VF-S11 DC brake
    # since this draws power during spindle off, the dc-brake pin would
    # better be driven by a monoflop which triggers on spindle-on falling edge
    #net vfs11-spindle-brake spindle.N.brake => spindle-vfd.dc-brake
de: # Anschluss der Gleichstrombremse an VF-S11
    # Da diese bei ausgeschalteter Spindel Strom zieht, sollte der DC-Brems-Pin
    # besser von einem Monoflop angesteuert werden, das bei der fallenden Flanke von "Spindel ein" auslöst
    #net vfs11-spindle-brake spindle.N.brake => spindle-vfd.dc-brake

note: type: delimited block -
en: # to use the VFS11 jog mode for spindle orient
    # see orient.9 and motion.9
    net spindle-orient spindle.0.orient spindle-vfd.max-speed spindle-vfd.jog-mode
de: # um den VFS11-Jog-Modus für die Spindelausrichtung zu verwenden
    # siehe orient.9 und motion.9
    net spindle-orient spindle.0.orient spindle-vfd.max-speed spindle-vfd.jog-mode

note: type: delimited block -
en: # take precedence over control panel
    setp spindle-vfd.enable 1
de: # hat Vorrang vor dem Bedienfeld
    setp spindel-vfd.enable 1

note: type: Title ==
en: Panel operation
de: Bedienung des Panels

note: type: Plain text
en: The vfs11_vfd driver takes precedence over panel control while it is enabled (see 'enable' pin), effectively disabling the panel. Clearing the 'enable' pin re-enables the panel. Pins and parameters can still be set, but will not be written to the VFD untile the 'enable' pin is set. Operating parameters are still read while bus control is disabled. Exiting the vfs11_vfd driver in a controlled way will release the VFD from the bus and restore panel control.
de: Der vfs11_vfd-Treiber hat Vorrang vor der Panel-Steuerung, solange er aktiviert ist (siehe 'enable' Pin), wodurch das Panel effektiv deaktiviert wird. Durch Löschen des 'enable' Pins wird das Panel wieder aktiviert. Pins und Parameter können weiterhin eingestellt werden, doch werden diese nicht in den VFD geschrieben, solange der 'enable' Pin nicht gesetzt ist. Betriebsparameter werden weiterhin gelesen, während die Bussteuerung deaktiviert ist. Durch kontrolliertes Beenden des vfs11_vfd-Treibers wird der VFD vom Bus getrennt und die Kontrolle über das Panel wiederhergestellt.

note: type: Plain text
en: See the LinuxCNC Integrators Manual for more information. For a detailed register description of the Toshiba VFD's, see the "TOSVERT VF-S11 Communications Function Instruction Manual" (Toshiba document number E6581222) and the "TOSVERT VF-S11 Instruction manual" (Toshiba document number E6581158).
de: Weitere Informationen finden Sie im LinuxCNC Integrators Manual. Eine detaillierte Registerbeschreibung der Toshiba VFD's finden Sie im "TOSVERT VF-S11 Communications Function Instruction Manual" (Toshiba Dokumentnummer E6581222) und im "TOSVERT VF-S11 Instruction manual" (Toshiba Dokumentnummer E6581158).

note: type: Title ==
en: Error Recovery
de: Reaktion auf Fehler (engl. error recovery)

note: type: Plain text
en: +vfs11_vfd+ recovers from I/O errors as follows: First, all HAL pins are set to default values, and the driver will sleep for +RECONNECT_DELAY+ seconds (default 1 second).
de: Der +vfs11_vfd+ erholt sich von E/A-Fehlern wie folgt: Zunächst werden alle HAL-Pins auf Standardwerte gesetzt, und der Treiber schläft für +RECONNECT_DELAY+ Sekunden (Standard 1 Sekunde).

note: type: Plain text
en: Serial (+TYPE=rtu+) mode: on error, close and reopen the serial port.
de: Serieller Modus (+TYPE=rtu+): Bei einem Fehler wird die serielle Schnittstelle geschlossen und erneut geöffnet.

note: type: Plain text
en: TCP server (+TYPE=tcpserver+) mode: on losing the TCP connection, the driver will go back to listen for incoming connections.
de: TCP-Server-Modus (+TYPE=tcpserver+): Wenn die TCP-Verbindung unterbrochen wird, schaltet der Treiber wieder auf die Suche nach eingehenden Verbindungen.

note: type: Plain text
en: TCP client (+TYPE=tcpclient+) mode: on losing the TCP connection, the driver will reconnect to 'TCPDEST:PORTNO'.
de: TCP-Client-Modus (+TYPE=tcpclient+): Bei Verlust der TCP-Verbindung stellt der Treiber die Verbindung zu 'TCPDEST:PORTNO' wieder her.

note: type: Title ==
en: Configuring the VFS11 VFD for Modbus usage
de: Konfigurieren des VFS11 VFD für die Modbus-Nutzung

note: type: Plain text
en: The VF-S11 has an RJ-45 jack for serial communication. Unfortunately, it does not have a standard RS-232 plug and logic levels.  The Toshiba-recommended way is: connect the USB001Z USB-to-serial conversion unit to the drive, and plug the USB port into the PC. A cheaper alternative is a homebrew interface ( http://git.mah.priv.at/gitweb/vfs11-vfd.git/blob_plain/refs/heads/f12-prod:/VFS11-RJ45_e.pdf[hints from Toshiba support], http://git.mah.priv.at/gitweb/vfs11-vfd.git/blob_plain/refs/heads/f12-prod:/vfs11-rs232.pdf[circuit diagram]).
de: Der VF-S11 verfügt über eine RJ-45-Buchse für die serielle Kommunikation. Leider verfügt es nicht über einen Standard-RS-232-Stecker und logische Pegel.  Der von Toshiba empfohlene Weg ist: Schließen Sie die USB001Z USB-zu-Seriell-Konvertierungseinheit an das Laufwerk an, und verbinden Sie den USB-Anschluss mit dem PC. Eine billigere Alternative ist eine selbstgebaute Schnittstelle ( http://git.mah.priv.at/gitweb/vfs11-vfd.git/blob_plain/refs/heads/f12-prod:/VFS11-RJ45_e.pdf[Hinweise vom Toshiba-Support], http://git.mah.priv.at/gitweb/vfs11-vfd.git/blob_plain/refs/heads/f12-prod:/vfs11-rs232.pdf[Schaltplan]).

note: type: Plain text
en: Note: the 24V output from the VFD has no short-circuit protection.
de: Hinweis: Der 24-V-Ausgang des VFD hat keinen Kurzschlussschutz.

note: type: Plain text
en: Serial port factory defaults are 9600/8/1/even, the protocol defaults to the proprietary "Toshiba Inverter Protocol".
de: Die Werkseinstellungen für die serielle Schnittstelle sind 9600/8/1/gerade, das Protokoll ist standardmäßig das proprietäre Toshiba Inverter Protocol".

note: type: Plain text
en: Several parameters need setting before the VF-S11 will talk to this module. This can either be done manually with the control panel, or over the serial link - Toshiba supplies a Windows application called 'PCM001Z' which can read/set parameters in the VFD.  Note - PCM001Z only talks the Toshiba inverter protocol. So the last parameter which you'd want to change is the protocol - set from Toshiba Inverter Protocol to Modbus; thereafter, the Windows app is useless.
de: Mehrere Parameter müssen eingestellt werden, bevor der VF-S11 mit diesem Modul kommunizieren kann. Dies kann entweder manuell über das Bedienfeld oder über die serielle Verbindung erfolgen - Toshiba liefert eine Windows-Anwendung namens 'PCM001Z', die Parameter im VFD lesen/einstellen kann.  Hinweis - PCM001Z spricht nur das Toshiba Wechselrichterprotokoll. Der letzte Parameter, den Sie ändern möchten, ist das Protokoll - stellen Sie es von Toshiba Inverter Protocol auf Modbus um; danach ist die Windows-Anwendung nutzlos.

note: type: Plain text
en: To increase the upper frequency limit, the UL and FH parameters must be changed on the panel. I increased them from 50 to 80.
de: Um die obere Frequenzgrenze zu erhöhen, müssen die Parameter UL und FH auf dem Panel geändert werden. Ich habe sie von 50 auf 80 erhöht.

note: type: Plain text
en: See dump-params.mio for a description of non-standard VF-S11 parameters of my setup. This file is for the http://git.mah.priv.at/gitweb/modio.git[modio Modbus interactive utility].
de: Siehe dump-params.mio für eine Beschreibung der nicht standardmäßigen VF-S11-Parameter meiner Einrichtung. Diese Datei ist für das http://git.mah.priv.at/gitweb/modio.git[modio Modbus interactive utility].

note: type: Title ==
en: Programming Note
de: Hinweis zur Programmierung

note: type: Plain text
en: The vfs11_vfd driver uses the http://www.libmodbus.org[libmodbus version 3] library which is more recent than the version 2 code used in +gs2_vfd+.
de: Der Treiber vfs11_vfd verwendet die Bibliothek http://www.libmodbus.org[libmodbus Version 3], die aktueller ist als der in +gs2_vfd+ verwendete Code der Version 2.

note: type: Plain text
en: The Ubuntu +libmodbus5+ and +libmodbus-dev+ packages are only available starting from Ubuntu 12 ('Precise Pengolin'). Moreover, these packages lack support for the MODBUS_RTS_MODE_* flags. Therefore, building vfs11_vfd using this library might generate a warning if RTS_MODE= is specified in the INI file.
de: Die Ubuntu-Pakete +libmodbus5+ und +libmodbus-dev+ sind erst ab Ubuntu 12 ('Precise Pengolin') verfügbar. Außerdem fehlt diesen Paketen die Unterstützung für die MODBUS_RTS_MODE_*-Flags. Daher kann das Erstellen von vfs11_vfd mit dieser Bibliothek eine Warnung erzeugen, wenn RTS_MODE= in der INI-Datei angegeben ist.

note: type: Plain text
en: To use the full functionality on lucid and precise:
de: Um die volle Funktionalität auf Ubuntu Lucid und Precise zu nutzen:

note: type: Plain text
en: remove the libmodbus packages: `sudo apt-get remove libmodbus5 libmodbus-dev`
de: Entfernen Sie die libmodbus-Pakete: `sudo apt-get remove libmodbus5 libmodbus-dev`

note: type: Plain text
en: build and install libmodbus version 3 from source as outlined https://github.com/stephane/libmodbus/blob/master/README.rst[here].
de: erstellen und installieren Sie libmodbus Version 3 aus den Quellen, wie unter https://github.com/stephane/libmodbus/blob/master/README.rst[hier] beschrieben.

note: type: Plain text
en: Libmodbus does not build on Ubuntu Hardy, hence vfs11_vfd is not available on Hardy.
de: Libmodbus kann nicht auf Ubuntu Hardy gebaut werden, daher ist vfs11_vfd auf Hardy nicht verfügbar.

note: type: Title =
en: G-Code Examples
de: G-Code Beispiele

note: type: Plain text
en: After you install LinuxCNC several sample files are placed in the /nc_files folder. Make sure the sample file is appropriate for your machine before running.
de: Nach der Installation von LinuxCNC mehrere Beispiel-Dateien sind in der /nc_files Ordner platziert. Stellen Sie sicher, dass die Beispieldatei für Ihre Maschine geeignet ist, bevor Sie sie ausführen.

note: type: Title ==
en: Mill Examples
de: Beispiele für eine Fräsmaschine

note: type: Title ===
en: Helical Hole Milling
de: Fräsen von Spiralbohrungen

note: type: Plain text
en: File Name: useful-subroutines.ngc
de: Dateiname: useful-subroutines.ngc

note: type: Plain text
en: Description: Subroutine for milling a hole using parameters.
de: Beschreibung: Unterprogramm zum Fräsen einer Bohrung mit Hilfe von Parametern.

note: type: Title ===
en: Slotting
de: Schlitzen (engl. slotting)

note: type: Plain text
en: Description: Subroutine for milling a slot using parameters.
de: Beschreibung: Unterprogramm zum Fräsen einer Nut mit Parametern.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Useful subroutines
de: Nützliche Unterprogramme

note: type: Title ===
en: Grid Probe
de: Rastersonde (engl. grid probe)

note: type: Plain text
en: File Name: gridprobe.ngc
de: Dateiname: gridprobe.ngc

note: type: Plain text
en: Description: Rectangular Probing
de: Beschreibung: Rechteckige Sondierung

note: type: Plain text
en: This program repeatedly probes in a regular XY grid and writes the probed location to the file 'probe-results.txt' in the same directory as the .ini file.
de: Dieses Programm testet wiederholt in einem regelmäßigen XY-Raster und schreibt die getestete Position in die Datei 'probe-results.txt' im selben Verzeichnis wie die .ini-Datei.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Grill probe
de: Grill-Sonde

note: type: Title ===
en: Smart Probe
de: Intelligente Sonde (engl. smart probe)

note: type: Plain text
en: File Name: smartprobe.ngc
de: Dateiname: smartprobe.ngc

note: type: Plain text
en: This program repeatedly probes in a regular XY grid and writes the probed location to the file 'probe-results.txt' in the same directory as the .ini file. This is improved from the grid probe file.
de: Dieses Programm sondiert wiederholt ein regelmäßiges XY-Gitter und schreibt den gesondeten Ort in die Datei 'probe-results.txt' im selben Verzeichnis wie die .ini-Datei. Dies ist eine Verbesserung gegenüber der Rastersondierungsdatei.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: The finer probing grid
de: Das feinere Sondierungsraster

note: type: Title ===
en: Tool Length Probe
de: Werkzeuglängen-Messtaster

note: type: Plain text
en: File Name: tool-length-probe.ngc
de: Dateiname: tool-length-probe.ngc

note: type: Plain text
en: Description: Tool Length Probing
de: Beschreibung: Bestimmung der Werkzeuglängen

note: type: Plain text
en: This program shows an example of how to measure tool lengths automatically using a switch hooked to the probe input. This is useful for machines without tool holders, where the length of a tool is different every time it is inserted.
de: Dieses Programm zeigt ein Beispiel für die automatische Messung von Werkzeuglängen mit Hilfe eines Schalters, der an den Tastereingang angeschlossen ist. Dies ist nützlich für Maschinen ohne Werkzeughalter, bei denen die Länge eines Werkzeugs jedes Mal anders ist, wenn es eingesetzt wird.

note: type: Title ===
en: Hole Probe
de: Lochsonde (engl. hole probe)

note: type: Plain text
en: File Name: probe-hole.ngc
de: Dateiname: probe-hole.ngc

note: type: Plain text
en: Description: Finding the Center and Diameter of a hole.
de: Beschreibung: Finden des Zentrums und des Durchmessers eines Lochs.

note: type: Plain text
en: The program demonstrates how to find the center of a hole, measure the hole diameter and record the results.
de: Das Programm demonstriert, wie man den Mittelpunkt eines Lochs findet, den Lochdurchmesser misst und die Ergebnisse aufzeichnet.

note: type: Content of: <html><body><table><tbody><tr><td>
en: Cutter Compensation
de: Fräserkompensation

note: type: Plain text
en: File Name: comp-g1.ngc
de: Dateiname: comp-g1.ngc

note: type: Plain text
en: Description: Entry and exit movements with compensation of tool radius.
de: Beschreibung: Ein- und Ausfahrbewegungen mit Kompensation des Werkzeugradius.

note: type: Plain text
en: This program demonstrates the peculiarity of the toolpath without and with tool radius compensation. The tool radius is taken from the tool table.
de: Dieses Programm demonstriert die Besonderheit des Werkzeugwegs ohne und mit Werkzeugradiuskorrektur. Der Werkzeugradius wird aus der Werkzeugtabelle übernommen.

note: type: Title ==
en: Lathe Examples
de: Beispiele für Drehmaschinen

note: type: Block title
en: Threading
de: Gewinde-Drehen (engl. threading)

note: type: Plain text
en: File Name lathe-g76.ngc
de: Dateiname lathe-g76.ngc

note: type: Plain text
en: Description: Facing, threading and parting off.
de: Beschreibung: Plandrehen, Gewindeschneiden und Abstechen.

note: type: Plain text
en: This file shows an example of threading on a lathe using parameters.
de: Diese Datei zeigt ein Beispiel für das Gewindeschneiden auf einer Drehmaschine unter Verwendung von Parametern.

note: type: Title =
en: GS2 Spindle
de: GS2 Spindel

note: type: Plain text
en: This example shows the connections needed to use an Automation Direct GS2 VFD to drive a spindle.  The spindle speed and direction is controlled by LinuxCNC.
de: Dieses Beispiel zeigt die Verbindungen benötigt, um eine Automation Direct GS2 VFD verwenden, um eine Spindel zu fahren.  Die Spindeldrehzahl und Richtung werden von LinuxCNC gesteuert.

note: type: Plain text
en: Using the GS2 component involves very little to set up. We start with a StepConf Wizard generated config. Make sure the pins with "Spindle CW" and "Spindle PWM" are set to unused in the parallel port setup screen.
de: Die Verwendung der GS2-Komponente erfordert nur sehr wenig Einrichtungsaufwand. Wir beginnen mit einer vom StepConf Wizard generierten Konfiguration. Vergewissern Sie sich, dass die Pins mit "Spindle CW" (engl. kurz für Uhrzeigersinn) und "Spindle PWM" im Setup-Bildschirm für den Parallelport auf unbenutzt gesetzt sind.

note: type: Plain text
en: In the custom.hal file we place the following to connect LinuxCNC to the GS2 and have LinuxCNC control the drive.
de: In der custom.hal Datei platzieren wir das Folgende, um LinuxCNC mit dem GS2 zu verbinden und LinuxCNC den Antrieb steuern zu lassen.

note: type: Block title
en: GS2 Example
de: GS2 Beispiel

note: type: delimited block -
en: # load the user space component for the Automation Direct GS2 VFD's 
    loadusr -Wn spindle-vfd gs2_vfd -r 9600 -p none -s 2 -n spindle-vfd
de: # Laden der Userspace-Komponente für die Automation Direct GS2 VFD's
    loadusr -Wn spindle-vfd gs2_vfd -r 9600 -p none -s 2 -n spindle-vfd

note: type: delimited block -
en: # connect the spindle direction pin to the GS2 
    net gs2-fwd spindle-vfd.spindle-fwd <= spindle.N.forward
de: # Verbinden des Pin für die Spindelrichtung mit dem GS2
    net gs2-fwd spindle-vfd.spindle-fwd <= spindle.N.forward

note: type: delimited block -
en: # connect the spindle on pin to the GS2 
    net gs2-run spindle-vfd.spindle-on <= spindle.N.on
de: # Verbinden des Spindel-Ein-Pin mit dem GS2
    net gs2-run spindle-vfd.spindle-on <= spindle.N.on

note: type: delimited block -
en: # connect the GS2 at speed to the motion at speed 
    net gs2-at-speed spindle.N.at-speed <= spindle-vfd.at-speed
de: # Verbinden des GS2 bei Geschwindigkeit mit der Bewegung bei Geschwindigkeit
    net gs2-at-speed spindle.N.at-speed <= spindle-vfd.at-speed

note: type: delimited block -
en: # connect the spindle RPM to the GS2 
    net gs2-RPM spindle-vfd.speed-command <= spindle.N.speed-out
de: # Verbinden der Spindeldrehzahl mit dem GS2
    net gs2-RPM spindle-vfd.speed-command <= spindle.N.speed-out

note: type: Plain text
en: The transmission speed might be able to be faster depending on the exact environment. Both the drive and the command line options must match. To check for transmission errors add the '-v' command line option and run from a terminal.
de: Die Übertragungsgeschwindigkeit kann je nach der genauen Umgebung höher sein. Sowohl das Laufwerk als auch die Befehlszeilenoptionen müssen übereinstimmen. Um auf Übertragungsfehler zu prüfen, fügen Sie die Befehlszeilenoption '-v' hinzu und führen Sie das Programm über ein Terminal aus.

note: type: Plain text
en: On the GS2 drive itself you need to set a couple of things before the modbus communications will work. Other parameters might need to be set based on your physical requirements but these are beyond the scope of this manual. Refer to the GS2 manual that came with the drive for more information on the drive parameters.
de: Am GS2-Antrieb selbst müssen Sie einige Einstellungen vornehmen, damit die Modbus-Kommunikation funktioniert. Je nach Ihren physischen Anforderungen müssen möglicherweise noch weitere Parameter eingestellt werden, die jedoch den Rahmen dieses Handbuchs sprengen würden. Weitere Informationen zu den Antriebsparametern finden Sie im GS2-Handbuch, das mit dem Antrieb geliefert wurde.

note: type: Plain text
en: The communications switches must be set to RS-232C.
de: Die Kommunikationsschalter müssen auf RS-232C eingestellt sein.

note: type: Plain text
en: The motor parameters must be set to match the motor.
de: Die Motorparameter müssen so eingestellt werden, dass sie mit dem Motor übereinstimmen.

note: type: Plain text
en: P3.00 (Source of Operation Command) must be set to Operation determined by RS-485 interface, 03 or 04.
de: P3.00 (Source of Operation Command) muss auf Operation determined by RS-485 interface, 03 oder 04 gesetzt sein.

note: type: Plain text
en: P4.00 (Source of Frequency Command) must be set to Frequency determined by RS232C/RS485 communication interface, 05.
de: P4.00 (Quelle des Frequenzbefehls) muss auf "Frequenz bestimmt durch RS232C/RS485-Kommunikationsschnittstelle" eingestellt werden, 05.

note: type: Plain text
en: P9.01 (Transmission Speed) must be set to 9600 baud, 01.
de: P9.01 (Übertragungsgeschwindigkeit) muss auf 9600 Baud eingestellt werden, 01.

note: type: Plain text
en: P9.02 (Communication Protocol) must be set to "Modbus RTU mode, 8 data bits, no parity, 2 stop bits", 03.
de: P9.02 (Kommunikationsprotokoll) muss auf "Modbus RTU-Modus, 8 Datenbits, keine Parität, 2 Stoppbits" eingestellt werden, 03.

note: type: Plain text
en: A PyVCP panel based on this example is <<gs2-rpm-meter,here>>.
de: Ein auf diesem Beispiel basierendes PyVCP-Panel ist <<gs2-rpm-meter,hier>>.

note: type: Title =
en: MPG Pendant
de: MPG Handgeräte

note: type: Plain text
en: This example is to explain how to hook up the common MPG pendants found on the market today. This example uses an MPG3 pendant and a C22 pendant interface card from CNC4PC connected to a second parallel port plugged into the PCI slot. This example gives you 3 axes with 3 step increments of 0.1, 0.01, 0.001
de: In diesem Beispiel wird erklärt, wie die heute auf dem Markt befindlichen MPG-Hängegeräte angeschlossen werden können. In diesem Beispiel wird ein MPG3-Pendant und eine C22-Pendant-Schnittstellenkarte von CNC4PC verwendet, die an einen zweiten parallelen Port angeschlossen ist, der in den PCI-Steckplatz gesteckt wird. Dieses Beispiel bietet Ihnen 3 Achsen mit 3 Schrittweiten von 0,1, 0,01, 0,001

note: type: Plain text
en: In your custom.hal file or jog.hal file add the following, making sure you don't have mux4 or an encoder already in use. If you do just increase the counts and change the reference numbers. More information about mux4 and encoder can be found in the HAL manual or the man page.
de: Fügen Sie in Ihrer Datei custom.hal oder jog.hal Folgendes hinzu, wobei Sie sicherstellen müssen, dass Sie nicht bereits mux4 oder einen Encoder verwenden. Falls doch, erhöhen Sie einfach die Anzahl und ändern Sie die Referenznummern. Weitere Informationen über mux4 und encoder finden Sie im HAL-Handbuch oder in der Manpage.

note: type: Plain text
en: See the <<sub:ini:sec:hal,INI HAL Section>> of the documentation for more information on adding a HAL file.  Jog management pins are provided for each joint and all coordinate letters.  This example uses the axis jog pins for jogging in world mode.  Machines with non-identity kinematics may need use additional connections for jogging in joint mode.
de: Weitere Informationen zum Hinzufügen einer HAL-Datei finden Sie im Abschnitt <<sub:ini:sec:hal,INI HAL>> der Dokumentation.  Für jedes Gelenk und alle Koordinatenbuchstaben sind Jog-Management-Pins vorgesehen.  In diesem Beispiel werden die Achsen-Jogging-Pins für das Jogging im Weltmodus verwendet.  Bei Maschinen mit nicht-identischen Kinematiken müssen möglicherweise zusätzliche Verbindungen für das Jogging im Gelenkmodus verwendet werden.

note: type: delimited block -
en: # If your MPG outputs a quadrature signal per click set x4 to 1
    # If your MPG puts out 1 pulse per click set x4 to 0
    setp encoder.0.x4-mode 0
de: # Wenn Ihr MPG ein Quadratursignal pro Klick ausgibt, setzen Sie x4 auf 1.
    # Wenn Ihr MPG 1 Impuls pro Klick ausgibt, setzen Sie x4 auf 0
    setp encoder.0.x4-mode 0

note: type: delimited block -
en: # For velocity mode, set to 1
    # In velocity mode the axis stops when the dial is stopped
    # even if that means the commanded motion is not completed,
    # For position mode (the default), set to 0
    # In position mode the axis will move exactly jog-scale
    # units for each count, regardless of how long that might take,
    setp axis.x.jog-vel-mode 0
    setp axis.y.jog-vel-mode 0
    setp axis.z.jog-vel-mode 0
de: # Für den Geschwindigkeitsmodus, auf 1 setzen.
    # Im Geschwindigkeitsmodus hält die Achse an, wenn der Drehknopf gestoppt wird.
    # auch wenn das bedeutet, dass die befohlene Bewegung nicht abgeschlossen ist,
    # Für den Positionsmodus (die Voreinstellung), setzen Sie auf 0.
    # Im Positionsmodus bewegt sich die Achse bei jeder Zählung genau jog-scale viele
    # Einheiten für jede Zählung, unabhängig davon, wie lange das dauern könnte,
    setp axis.x.jog-vel-mode 0
    setp axis.y.jog-vel-mode 0
    setp axis.z.jog-vel-mode 0

note: type: delimited block -
en: # This sets the scale that will be used based on the input to the mux4
    setp mux4.0.in0 0.1
    setp mux4.0.in1 0.01
    setp mux4.0.in2 0.001
de: # Hier wird die Skala festgelegt, die auf der Grundlage des Eingangs am mux4 verwendet wird.
    setp mux4.0.in0 0.1
    setp mux4.0.in1 0.01
    setp mux4.0.in2 0.001

note: type: delimited block -
en: # The inputs to the mux4 component
    net scale1 mux4.0.sel0 <= parport.1.pin-09-in
    net scale2 mux4.0.sel1 <= parport.1.pin-10-in
de: # Die Eingänge der Komponente mux4
    net scale1 mux4.0.sel0 <= parport.1.pin-09-in
    net scale2 mux4.0.sel1 <= parport.1.pin-10-in

note: type: delimited block -
en: # The output from the mux4 is sent to each axis jog scale
    net mpg-scale <= mux4.0.out
    net mpg-scale => axis.x.jog-scale
    net mpg-scale => axis.y.jog-scale
    net mpg-scale => axis.z.jog-scale
de: # Die Ausgabe des mux4 wird an jede Achsen-Jog-Skala gesendet
    net mpg-scale <= mux4.0.out
    net mpg-scale => axis.x.jog-scale
    net mpg-scale => axis.y.jog-scale
    net mpg-scale => axis.z.jog-scale

note: type: delimited block -
en: # The MPG inputs
    net mpg-a encoder.0.phase-A <= parport.1.pin-02-in
    net mpg-b encoder.0.phase-B <= parport.1.pin-03-in
de: # Die MPG Eingänge
    net mpg-a encoder.0.phase-A <= parport.1.pin-02-in
    net mpg-b encoder.0.phase-B <= parport.1.pin-03-in

note: type: delimited block -
en: # The Axis select inputs
    net mpg-x axis.x.jog-enable <= parport.1.pin-04-in
    net mpg-y axis.y.jog-enable <= parport.1.pin-05-in
    net mpg-z axis.z.jog-enable <= parport.1.pin-06-in
de: # The Achsen-Auswahl Eingänge
    net mpg-x axis.x.jog-enable <= parport.1.pin-04-in
    net mpg-y axis.y.jog-enable <= parport.1.pin-05-in
    net mpg-z axis.z.jog-enable <= parport.1.pin-06-in

note: type: delimited block -
en: # The encoder output counts to the axis. Only the selected axis will move.
    net encoder-counts  <= encoder.0.counts
    net encoder-counts => axis.x.jog-counts
    net encoder-counts => axis.y.jog-counts
    net encoder-counts => axis.z.jog-counts
de: # Der Encoder-Ausgang zählt für die Achse. Nur die ausgewählte Achse wird sich bewegen.
    net encoder-counts  <= encoder.0.counts
    net encoder-counts => axis.x.jog-counts
    net encoder-counts => axis.y.jog-counts
    net encoder-counts => axis.z.jog-counts

note: type: Plain text
en: If the machine is capable of high acceleration to smooth out the moves for each click of the MPG use the link:../man/man9/ilowpass.9.html[ilowpass] component to limit the acceleration.
de: Wenn die Maschine zu einer hohen Beschleunigung fähig ist, um die Bewegungen für jeden Klick des MPG zu glätten, verwenden Sie die Komponente link:../man/man9/ilowpass.9.html[ilowpass], um die Beschleunigung zu begrenzen.

note: type: Block title
en: jog.hal with ilowpass
de: jog.hal mit ilowpass

note: type: delimited block -
en: # This sets the scale that will be used based on the input to the mux4
    # The scale used here has to be multiplied by the ilowpass scale
    setp mux4.0.in0 0.0001
    setp mux4.0.in1 0.00001
    setp mux4.0.in2 0.000001
de: # Hier wird die Skalierung festgelegt, die auf der Grundlage des Eingangs zum mux4 verwendet wird.
    # Die hier verwendete Skalierung muss mit der ilowpass-Skala multipliziert werden
    setp mux4.0.in0 0.0001
    setp mux4.0.in1 0.00001
    setp mux4.0.in2 0.000001

note: type: delimited block -
en: # The output from encoder counts is sent to ilowpass
    net mpg-out ilowpass.0.in <= encoder.0.counts
de: # Die Ausgabe des Encoder counts (engl. für Zählerstand) wird an ilowpass gesendet.
    net mpg-out ilowpass.0.in <= encoder.0.counts

note: type: delimited block -
en: # The output from the ilowpass is sent to each axis jog count
    # Only the selected axis will move.
    net encoder-counts  <= ilowpass.0.out
    net encoder-counts => axis.x.jog-counts
    net encoder-counts => axis.y.jog-counts
    net encoder-counts => axis.z.jog-counts
de: # Die Ausgabe des ilowpasses wird an jede Achsen-Jog-Zählung gesendet
    # Nur die ausgewählte Achse wird verschoben.
    net encoder-counts  <= ilowpass.0.out
    net encoder-counts => axis.x.jog-counts
    net encoder-counts => axis.y.jog-counts
    net encoder-counts => axis.z.jog-counts

note: type: Title =
en: PCI Parallel Port
de: PCI-Parallelport

note: type: Plain text
en: When you add a second parallel port to your PCI bus you have to find out the address before you can use it with LinuxCNC.
de: Wenn Sie eine zweite parallele Schnittstelle zu Ihrem PCI-Bus hinzufügen, müssen Sie die Adresse herausfinden, bevor Sie sie mit LinuxCNC verwenden können.

note: type: Plain text
en: To find the address of your parallel port card open a terminal window and type
de: Um die Adresse Ihrer Parallelportkarte zu ermitteln, öffnen Sie ein Terminalfenster und geben Sie ein

note: type: Plain text
en: You will see something similar to this as well as info on everything else on the PCI bus:
de: Sie werden etwas Ähnliches sehen, wie auch Informationen über alles andere auf dem PCI-Bus:

note: type: Plain text
en: In my case the address was the first one so I changed my .hal file from
de: In meinem Fall war die Adresse die erste, also änderte ich meine .hal-Datei von

note: type: Plain text
en: to
de: zu

note: type: Plain text
en: (Note the double quotes surrounding the addresses.)
de: (Beachten Sie die Anführungszeichen, in denen die Adressen stehen.)

note: type: Plain text
en: and then added the following lines so the parport will be read and written:
de: und fügte dann die folgenden Zeilen hinzu, damit der Parport gelesen und geschrieben werden kann:

note: type: Plain text
en: After doing the above then run your config and verify that the parallel port got loaded in Machine/Show HAL Configuration window.
de: Nachdem Sie die obigen Schritte durchgeführt haben, starten Sie mit dieser Konfiguration und überprüfen Sie, ob im Fenster Maschine/HAL-Konfiguration angezeigt wird, dass die parallele Schnittstelle geladen wurde.

note: type: Content of: <html><body><table><tbody><tr><td>
en: Spindle Control
de: Spindelsteuerung

note: type: Plain text
en: LinuxCNC can control up to 8 spindles. The number is set in the INI file.  The examples below all refer to a single-spindle config with spindle control pins with names like 'spindle.0..'.  In the case of a multiple spindle machine all that changes is that additional pins exist with names such as 'spindle.6..'.
de: LinuxCNC kann bis zu 8 Spindeln steuern. Die Anzahl wird in der INI-Datei eingestellt.  Die Beispiele unten beziehen sich alle auf eine Einspindelkonfiguration mit Spindelsteuerungspins mit Namen wie 'spindle.0..'.  Im Falle einer Mehrspindelmaschine ist alles, was sich ändert, dass zusätzliche Pins mit Namen wie 'spindle.6...' existieren.

note: type: Title ==
en: 0-10 Volt Spindle Speed(((0-10 Volt Spindle Speed Example)))
de: 0-10 Volt Spindeldrehzahl(((0-10 Volt Spindeldrehzahl Beispiel)))

note: type: Plain text
en: If your spindle speed is controlled by an analog signal, (for example, by a VFD with a 0 V to 10 V signal) and you're using a DAC card like the m5i20 to output the control signal:
de: Wenn Ihre Spindeldrehzahl durch ein analoges Signal gesteuert wird (z. B. durch einen VFD mit einem 0 V bis 10 V-Signal) und Sie eine DAC-Karte wie die m5i20 zur Ausgabe des Steuersignals verwenden:

note: type: Plain text
en: First you need to figure the scale of spindle speed to control signal, i.e. the voltage.  For this example the spindle top speed of 5000 RPM is equal to 10 Volts.
de: Zunächst müssen Sie die Skala von Spindeldrehzahl zu Steuersignal, das ist die anliegende Spannung, ermitteln.  In diesem Beispiel entspricht die Höchstgeschwindigkeit der Spindel von 5000 U/min 10 Volt.

note: type: Plain text
en: We have to add a scale component to the HAL file to scale the _spindle.N.speed-out_ to the 0 to 10 needed by the VFD if your DAC card does not do scaling.
de: Wir müssen der HAL-Datei eine Skalierungskomponente hinzufügen, um die _spindle.N.speed-out_ auf die vom VFD benötigten Werte 0 bis 10 zu skalieren, wenn Ihre DAC-Karte keine Skalierung vornimmt.

note: type: delimited block -
en: loadrt scale count=1
    addf scale.0 servo-thread
    setp scale.0.gain 0.002
    net spindle-speed-scale spindle.0.speed-out => scale.0.in
    net spindle-speed-DAC scale.0.out => <your DAC pin name>
de: loadrt scale count=1
    addf scale.0 servo-thread
    setp scale.0.gain 0.002
    net spindle-speed-scale spindle.0.speed-out => scale.0.in
    net spindle-speed-DAC scale.0.out => <Ihr DAC Pin-Name>

note: type: Title ==
en: PWM Spindle Speed(((PWM Spindle Speed Example)))
de: PWM-Spindeldrehzahl(((PWM Spindeldrehzahl Beispiel)))

note: type: Plain text
en: This assumes that the spindle controller's response to PWM is simple: 0% PWM gives 0 RPM, 10% PWM gives 180 RPM, etc. If there is a minimum PWM required to get the spindle to turn, follow the example in the nist-lathe sample configuration to use a scale component.
de: Dabei wird davon ausgegangen, dass die Spindelsteuerung einfach auf PWM reagiert: 0 % PWM ergibt 0 U/min, 10 % PWM ergibt 180 U/min, usw. Wenn eine Mindest-PWM erforderlich ist, um die Spindel zum Drehen zu bringen, folgen Sie dem Beispiel in der Beispielkonfiguration der nist-lathe und verwenden Sie eine Skalierungskomponente.

note: type: Title ==
en: Spindle Enable(((Spindle Enable Example)))
de: Spindelfreigabe (engl. spindle enable)(((Beispiel für Spindelfreigabe, Beispiel spindle enable )))

note: type: Plain text
en: If you need a spindle enable signal, link your output pin to _spindle.0.on_.  To link these pins to a parallel port pin put something like the following in your .hal file, making sure you pick the pin that is connected to your control device.
de: Wenn Sie ein Spindelaktivierungssignal benötigen, verknüpfen Sie Ihren Ausgangspin mit _spindle.0.on_.  Um diese Pins mit einem Parallelport-Pin zu verknüpfen, fügen Sie etwas wie das Folgende in Ihre .hal-Datei ein, wobei Sie darauf achten, dass Sie den Pin auswählen, der mit Ihrem Steuergerät verbunden ist.

note: type: Title ==
en: Spindle Direction(((Spindle Direction Example)))
de: Spindeldrehrichtung (engl. spindle direction)(((Spindeldrehrichtung Beispiel)))

note: type: Plain text
en: If you have direction control of your spindle, then the HAL pins 'spindle._N_.forward' and 'spindle._N_.reverse' are controlled by the G-codes M3 and M4. Spindle speed S__n__ must be set to a positive non-zero value for M3/M4 to turn on spindle motion.
de: Wenn Sie die Kontrolle über die Drehrichtung Ihrer Spindel haben, dann werden die HAL-Pins 'spindle._N_.forward' und 'spindle. _N_.reverse' durch die G-Codes M3 und M4 gesteuert. Die Spindeldrehzahl S__n__ muss auf einen positiven Wert ungleich Null eingestellt werden, damit M3/M4 die Spindelbewegung einschalten kann.

note: type: Plain text
en: To link these pins to a parallel port pin, put something like the following in your .hal file making sure you pick the pin that is connected to your control device.
de: Um diese Pins mit einem Parallelport-Pin zu verknüpfen, fügen Sie etwas wie das Folgende in Ihre .hal-Datei ein und stellen sicher, dass Sie den Pin auswählen, der mit Ihrem Steuergerät verbunden ist.

note: type: Title ==
en: Spindle Soft Start(((Spindle Soft Start Example)))
de: Spindel-Sanftanlauf (engl. soft start)(((Beispiel für Spindel-Sanftanlauf, Beispiel für spindle soft start, soft start)))

note: type: Plain text
en: If you need to ramp your spindle speed command and your control does not have that feature it can be done in HAL. Basically you need to hijack the output of 'spindle._N_.speed-out' and run it through a 'limit2' component with the scale set so it will ramp the rpm from 'spindle._N_.speed-out' to your device that receives the rpm.  The second part is to let LinuxCNC know when the spindle is at speed so motion can begin.
de: Wenn Sie Ihren Spindeldrehzahl-Befehl rampenförmig erhöhen müssen und Ihre Steuerung nicht über diese Funktion verfügt, kann dies in HAL erfolgen. Grundsätzlich müssen Sie die Ausgabe von 'spindle._N_.speed-out' zu entführen und führen Sie es durch eine 'limit2'-Komponente mit der Skala eingestellt, so dass es die Drehzahl von 'spindle._N_.speed-out' zu Ihrem Gerät, das die Drehzahl empfängt Rampe wird.  Der zweite Teil ist es, LinuxCNC wissen, wenn die Spindel bei der Geschwindigkeit, so dass die Bewegung beginnen kann.

note: type: Plain text
en: In the 0-10 Volt example the line
de: In dem 0-10-Volt-Beispiel wird hierzu die Zeile

note: type: Plain text
en: is changed as shown in the following example:
de: wie im folgenden Beispiel geändert:

note: type: Block title
en: Intro to HAL components limit2 and near
de: Einführung in die HAL-Komponenten limit2 und near

note: type: Plain text
en: In case you have not run across them before, here's a quick introduction to the two HAL components used in the following example.
de: Für den Fall, dass Sie sie noch nicht kennen, hier eine kurze Einführung in die beiden HAL-Komponenten, die im folgenden Beispiel verwendet werden.

note: type: Plain text
en: A 'limit2' is a HAL component (floating point) that accepts an input value and provides an output that has been limited to a max/min range, and also limited to not exceed a specified rate of change.
de: Ein 'limit2' ist eine HAL-Komponente (Fließkomma), die einen Eingangswert akzeptiert und einen Ausgang liefert, der auf einen Max/Min-Bereich begrenzt wurde und außerdem eine bestimmte Änderungsrate nicht überschreiten darf.

note: type: Plain text
en: A 'near' is a HAL component (floating point) with a binary output that says whether two inputs are approximately equal.
de: 'near' ist eine HAL-Komponente (Gleitkomma) mit einem binären Ausgang, der angibt, ob zwei Eingaben ungefähr gleich sind.

note: type: Plain text
en: More info is available in the documentation for HAL components, or from the man pages, just say 'man limit2' or 'man near' in a terminal.
de: Weitere Informationen finden Sie in der Dokumentation zu den HAL-Komponenten oder in den Manpages, sagen Sie einfach 'man limit2' oder 'man near' in einem Terminal.

note: type: delimited block -
en: # load the real time modules limit2 and near with names so it is easier to follow their connections
    loadrt limit2 names=spindle-ramp
    loadrt near names=spindle-at-speed
de: # Legen Sie die Instanzen der Echtzeit-Module limit2 und near mit Namen an, damit die nachfolgenden Verbindungen einfacher zu verfolgen sind
    loadrt limit2 names=spindel-ramp
    loadrt near names=spindel-at-speed

note: type: delimited block -
en: # add the functions to a thread
    addf spindle-ramp servo-thread
    addf spindle-at-speed servo-thread
de: # die Funktionen zu einem Thread hinzufügen
    addf spindle-ramp servo-thread
    addf spindle-at-speed servo-thread

note: type: delimited block -
en: # set the parameter for max rate-of-change
    # (max spindle accel/decel in units per second)
    setp spindle-ramp.maxv 60
de: # den Parameter für die maximale Änderungsrate einstellen
    # (maximale Spindelbeschleunigung/-verzögerung in Einheiten pro Sekunde)
    setp spindle-ramp.maxv 60

note: type: delimited block -
en: # hijack the spindle speed out and send it to spindle ramp in
    net spindle-cmd <= spindle.0.speed-out => spindle-ramp.in
de: # Die Spindeldrehzahl an die Spindelrampe umlenken
    net spindle-cmd <= spindle.0.speed-out => spindle-ramp.in

note: type: delimited block -
en: # the output of spindle ramp is sent to the scale in
    net spindle-ramped <= spindle-ramp.out => scale.0.in
de: # die Ausgabe der Spindelrampe wird an die Sklaierung gesendet
    net spindle-ramped <= spindle-ramp.out => scale.0.in

note: type: delimited block -
en: # to know when to start the motion we send the near component
    # (named spindle-at-speed) to the spindle commanded speed from
    # the signal spindle-cmd and the actual spindle speed
    # provided your spindle can accelerate at the maxv setting.
    net spindle-cmd => spindle-at-speed.in1
    net spindle-ramped => spindle-at-speed.in2
de: # um zu wissen, wann die Bewegung beginnen soll, senden wir die Nahkomponente
    # (namens spindle-at-speed) an die Spindeldrehzahl aus
    # dem Signal spindle-cmd und der tatsächlichen Spindeldrehzahl
    # vorausgesetzt, Ihre Spindel kann mit der maxv-Einstellung beschleunigen.
    net spindle-cmd => spindle-at-speed.in1
    net spindle-ramped => spindle-at-speed.in2

note: type: delimited block -
en: # the output from spindle-at-speed is sent to spindle.0.at-speed
    # and when this is true motion will start
    net spindle-ready <= spindle-at-speed.out => spindle.0.at-speed
de: # die Ausgabe von spindle-at-speed wird an spindle.0.at-speed gesendet
    # und wenn dies wahr ist, beginnt die Bewegung
    net spindle-ready <= spindle-at-speed.out => spindle.0.at-speed

note: type: Title ==
en: Spindle Feedback
de: Spindel-Feedback

note: type: Title ===
en: Spindle Synchronized Motion(((Spindle Synchronized Motion Example)))
de: Spindelsynchronisierte Bewegung(((Beispiel für spindelsynchronisierte Bewegung)))

note: type: Plain text
en: Spindle feedback is needed by LinuxCNC to perform any spindle coordinated motions like threading and constant surface speed.  LinuxCNC can perform synchronized motion and CSS with any of up to 8 spindles. Which spindles are used is controlled from G-code. CSS is possible with several spindles simultaneously.
de: Spindel-Feedback wird von LinuxCNC benötigt, um alle Spindel koordinierte Bewegungen wie Gewindeschneiden und konstante Oberflächengeschwindigkeit (engl. constant surface speed, kurz CSS) durchzuführen.  LinuxCNC kann synchronisierte Bewegung und CSS mit bis zu 8 Spindeln durchführen. Welche Spindeln verwendet werden, wird von G-Code gesteuert. CSS ist mit mehreren Spindeln gleichzeitig möglich.

note: type: Plain text
en: The StepConf Wizard can perform the connections for a single-spindle configuration for you if you select Encoder Phase A and Encoder Index as inputs.
de: Der StepConf Wizard kann die Verbindungen für eine Einspindelkonfiguration für Sie durchführen, wenn Sie Encoder Phase A und Encoder Index als Eingänge auswählen.

note: type: Plain text
en: Hardware assumptions for this example:
de: Hardware-Annahmen für dieses Beispiel:

note: type: Plain text
en: An encoder is connected to the spindle and puts out 100 pulses per revolution on phase A.
de: An der Spindel ist ein Drehgeber angeschlossen, der auf der Phase A 100 Impulse pro Umdrehung ausgibt.

note: type: Plain text
en: The encoder A phase is connected to the parallel port pin 10.
de: Die A-Phase des Encoders wird an den Pin 10 des Parallelports angeschlossen.

note: type: Plain text
en: The encoder index pulse is connected to the parallel port pin 11.
de: Der Indeximpuls des Encoders wird an den Parallelport Pin 11 angeschlossen.

note: type: Plain text
en: Basic Steps to add the components and configure them: footnote:[In this example, we will assume that some encoders have already been issued to axes/joints 0, 1, and 2. So the next encoder available for us to attach to the spindle would be number 3. Your situation may differ.] footnote:[The HAL encoder index-enable is an exception to the rule in that it behaves as both an input and an output, see the <<sec:encoder,Encoder Section>> for details] footnote:[It is because we selected 'non-quadrature simple counting...' above that we can get away with 'quadrature' counting without having any B quadrature input.]
de: Grundlegende Schritte, um die Komponenten hinzuzufügen und zu konfigurieren: footnote:[In diesem Beispiel gehen wir davon aus, dass bereits einige Messgeräte an die Achsen/Gelenke 0, 1 und 2 ausgegeben wurden. Das nächste verfügbare Messgerät, das wir an der Spindel anbringen können, wäre also Nummer 3. Ihre Situation kann davon abweichen] footnote:[Der HAL-Encoder index-enable ist eine Ausnahme von der Regel, da er sich sowohl als Eingang als auch als Ausgang verhält, siehe den Abschnitt zu <<sec:encoder,Encodern>> für Details] footnote:[Weil wir oben 'non-quadrature simple counting...' ausgewählt haben, können wir mit 'quadrature' counting auskommen, ohne einen B-Quadratureingang zu haben.]

note: type: delimited block -
en: # Add the encoder to HAL and attach it to threads.
    loadrt encoder num_chan=4
    addf encoder.update-counters base-thread
    addf encoder.capture-position servo-thread
de: # Fügen Sie den Encoder zu HAL hinzu und verbinden Sie ihn mit Threads.
    loadrt encoder num_chan=4
    addf encoder.update-counters base-thread
    addf encoder.capture-position servo-thread

note: type: delimited block -
en: # Set the HAL encoder to 100 pulses per revolution.
    setp encoder.3.position-scale 100
de: # Den HAL-Geber auf 100 Impulse pro Umdrehung einstellen.
    setp encoder.3.position-scale 100

note: type: delimited block -
en: # Set the HAL encoder to non-quadrature simple counting using A only.
    setp encoder.3.counter-mode true
de: # Stellen Sie den HAL-Encoder auf einfache Zählung ohne Quadratur nur auf A ein. 
    setp encoder.3.counter-mode true

note: type: delimited block -
en: # Connect the HAL encoder outputs to LinuxCNC.
    net spindle-position encoder.3.position => spindle.0.revs
    net spindle-velocity encoder.3.velocity => spindle.0.speed-in
    net spindle-index-enable encoder.3.index-enable <=> spindle.0.index-enable
de: # Verbinden Sie die HAL-Geberausgänge mit LinuxCNC.
    net spindle-position encoder.3.position => spindle.0.revs
    net spindle-velocity encoder.3.velocity => spindle.0.speed-in
    net spindle-index-enable encoder.3.index-enable <=> spindle.0.index-enable

note: type: delimited block -
en: # Connect the HAL encoder inputs to the real encoder.
    net spindle-phase-a encoder.3.phase-A <= parport.0.pin-10-in
    net spindle-phase-b encoder.3.phase-B
    net spindle-index encoder.3.phase-Z <= parport.0.pin-11-in
de: # Verbinden Sie die HAL-Encodereingänge mit dem realen Encoder.
    net spindle-phase-a encoder.3.phase-A <= parport.0.pin-10-in
    net spindle-phase-b encoder.3.phase-B
    net spindle-index encoder.3.phase-Z <= parport.0.pin-11-in

note: type: Title ===
en: Spindle At Speed(((Spindle At Speed Example)))
de: Spindel bei Drehzahl (engl. spindle at speed)(((Beispiel Spindel bei Drehzahl)))

note: type: Plain text
en: To enable LinuxCNC to wait for the spindle to be at speed before executing a series of moves, the spindle._N_.at-speed needs to turn true at the moment the spindle is at the commanded speed. To achieve this you need spindle feedback from an encoder. Since the feedback and the commanded speed are not usually 'exactly' the same you should to use the 'near' component to determine that the two numbers are close enough.
de: Damit LinuxCNC zu warten, bis die Spindel bei der Geschwindigkeit vor der Ausführung einer Reihe von Bewegungen, die spindle._N_.at-Geschwindigkeit muss wahr in dem Moment die Spindel ist bei der befohlenen Geschwindigkeit zu drehen. Um dies zu erreichen, benötigen Sie ein Spindel-Feedback von einem Encoder. Da die Rückmeldung und die befohlene Drehzahl in der Regel nicht "genau" übereinstimmen, sollten Sie die Komponente "nahe" verwenden, um festzustellen, ob die beiden Zahlen nahe genug beieinander liegen.

note: type: Plain text
en: The connections needed are from the spindle velocity command signal to near.n.in1 and from the spindle velocity from the encoder to near.n.in2. Then the near.n.out is connected to spindle._N_.at-speed. The near.n.scale needs to be set to say how close the two numbers must be before turning on the output. Depending on your setup you may need to adjust the scale to work with your hardware.
de: Die benötigten Verbindungen sind vom Spindeldrehzahl-Sollwertsignal zu near.n.in1 und von der Spindeldrehzahl vom Encoder zu near.n.in2. Dann wird der near.n.out mit spindle._N_.at-speed verbunden. Die near.n.scale muss so eingestellt werden, dass sie angibt, wie nahe die beiden Zahlen beieinander liegen müssen, bevor der Ausgang aktiviert wird. Je nach Ihrer Einrichtung müssen Sie die Skala möglicherweise an Ihre Hardware anpassen.

note: type: Plain text
en: The following is typical of the additions needed to your HAL file to enable Spindle At Speed. If you already have near in your HAL file then increase the count and adjust code to suit. Check to make sure the signal names are the same in your HAL file.
de: Die folgenden Angaben sind typisch für die Ergänzungen, die in Ihrer HAL-Datei erforderlich sind, um Spindle At Speed zu aktivieren. Wenn Sie in Ihrer HAL-Datei bereits "near" haben, erhöhen Sie die Anzahl und passen Sie den Code entsprechend an. Vergewissern Sie sich, dass die Signalnamen in Ihrer HAL-Datei identisch sind.

note: type: delimited block -
en: # load a near component and attach it to a thread
    loadrt near
    addf near.0 servo-thread
de: # Eine near-Komponente laden und an einen Thread anhängen.
    loadrt near
    addf near.0 servo-thread

note: type: delimited block -
en: # connect one input to the commanded spindle speed
    net spindle-cmd => near.0.in1
de: # Einen Eingang mit der befohlenen Spindeldrehzahl verbinden.
    net spindle-cmd => nahe.0.in1

note: type: delimited block -
en: # connect one input to the encoder-measured spindle speed
    net spindle-velocity => near.0.in2
de: # Einen Eingang mit der vom Encoder gemessenen Spindelgeschwindigkeit verbinden.
    net spindle-velocity => near.0.in2

note: type: delimited block -
en: # connect the output to the spindle-at-speed input
    net spindle-at-speed spindle.0.at-speed <= near.0.out
de: # Ausgang mit dem Eingang "Spindel-at-speed" verbinden.
    net spindle-at-speed spindle.0.at-speed <= near.0.out

note: type: delimited block -
en: # set the spindle speed inputs to agree if within 1%
    setp near.0.scale 1.01
de: # Die Spindeldrehzahleingänge werden so eingestellt, dass sie innerhalb von 1% übereinstimmen.
    setp near.0.scale 1.01

note: type: Title =
en: Coordinate Systems(((Coordinate Systems)))
de: Koordinatensysteme(((Koordinatensysteme)))

note: type: Plain text
en: In this chapter, we will try to demystify coordinate systems.  It is a very important concept to understand the operation of a CNC machine, its configuration and its use.
de: In diesem Kapitel werden wir versuchen, Koordinatensysteme zu entmystifizieren.  Es ist ein sehr wichtiges Konzept, um den Betrieb einer CNC-Maschine, ihre Konfiguration und ihre Verwendung zu verstehen.

note: type: Plain text
en: We will also show that it is very interesting to use a reference point on the blank or the part and to make the program work from this point, without having to take into account where the part is placed on the table.
de: Wir werden auch zeigen, dass es sehr interessant ist, einen Referenzpunkt auf dem Rohling oder dem Werkstück zu verwenden und das Programm von diesem Punkt aus arbeiten zu lassen, ohne zu berücksichtigen, wo das Werkstück auf dem Tisch liegt.

note: type: Plain text
en: This chapter introduces you to offsets as they are used by the LinuxCNC.  These include:
de: Dieses Kapitel führt Sie ein in die Beschreibung von Verschiebungen ein, wie sie von LinuxCNC verwendet werden. Je nach Kontext möchte man auch Versatz sagen, oder Kompensation oder aus dem Englischen eingedeutscht auch gern Offsets (buchstäblich: danebengesetzt) beibehalten. Dazu gehören:

note: type: Plain text
en: Machine Coordinates (G53)
de: Maschinenkoordinaten (G53)

note: type: Plain text
en: Nine Coordinate System Offsets (G54-G59.3)
de: Neun Koordinatensystem-Offsets (G54-G59.3)

note: type: Plain text
en: Global Offsets (G92) and Local Offsets (G52)
de: Globale Offsets (G92) und lokale Offsets (G52)

note: type: Title ==
en: Machine Coordinate System
de: Maschinenkoordinatensystem

note: type: Plain text
en: When LinuxCNC is started the positions of each axis is the machine origin.  Once an axis is homed, the machine origin for that axis is set to the homed position. The machine origin is the machine coordinate system on which all other coordinate systems are based. The <<gcode:g53,G53>> G-code can be used to move in the machine coordinate system.
de: Beim Start von LinuxCNC ist jeweilige Positionen der einzelnen Achsen auch der Ursprung der Maschine.  Sobald eine Achse referenziert ist, wird der Maschinenursprung für diese Achse auf die referenzierte Position gesetzt. Der Maschinenursprung ist das Maschinenkoordinatensystem, auf dem alle anderen Koordinatensysteme basieren. Der G-Code <<gcode:g53,G53>> kann verwendet werden, um sich im Maschinenkoordinatensystem zu bewegen.

note: type: Title ===
en: Machine coordinates moves: G53
de: Maschinenkoordinaten bewegen sich: G53

note: type: Plain text
en: Regardless of any offset that may be active, a G53 in a line of code tells the interpreter to move to the actual axes positions (absolute positions) specified. For example:
de: Unabhängig von einem eventuell aktiven Offset weist ein G53 in einer Codezeile den Interpreter an, die angegebenen tatsächlichen Achsenpositionen (absolute Positionen) anzufahren. Zum Beispiel:

note: type: Plain text
en: will move from the current position to the position where the machine coordinates of the three axes will be at zero. You can use this command if you have a fixed position for the tool change or if your machine has an automatic tool changer. You can also use this command to clear the work area and access the workpiece in the vise.
de: fährt von der aktuellen Position zu der Position, an der die Maschinenkoordinaten der drei Achsen auf Null stehen. Sie können diesen Befehl verwenden, wenn Sie eine feste Position für den Werkzeugwechsel haben oder wenn Ihre Maschine über einen automatischen Werkzeugwechsler verfügt. Sie können diesen Befehl auch verwenden, um den Arbeitsbereich zu räumen und auf das Werkstück im Schraubstock zuzugreifen.

note: type: Plain text
en: G53 is a non modal command. It must be used in every block where a move in machine coordinate system is desired.
de: G53 ist ein nicht modaler Befehl. Er muss in jedem Satz verwendet werden, in dem eine Bewegung im Maschinenkoordinatensystem gewünscht ist.

note: type: Title ==
en: Coordinate Systems
de: Koordinatensysteme

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Coordinate Systems Example
de: Beispiel für Koordinatensysteme

note: type: Block title
en: Coordinate System Offsets
de: Koordinatensystem-Offsets

note: type: Plain text
en: G54 - use coordinate system 1
de: G54 - Koordinatensystem 1 verwenden

note: type: Plain text
en: G55 - use coordinate system 2
de: G55 - Koordinatensystem 2 verwenden

note: type: Plain text
en: G56 - use coordinate system 3
de: G56 - Koordinatensystem 3 verwenden

note: type: Plain text
en: G57 - use coordinate system 4
de: G57 - Koordinatensystem 4 verwenden

note: type: Plain text
en: G58 - use coordinate system 5
de: G58 - Koordinatensystem 5 verwenden

note: type: Plain text
en: G59 - use coordinate system 6
de: G59 - Koordinatensystem 6 verwenden

note: type: Plain text
en: G59.1 - use coordinate system 7
de: G59.1 - Koordinatensystem 7 verwenden

note: type: Plain text
en: G59.2 - use coordinate system 8
de: G59.2 - Koordinatensystem 8 verwenden

note: type: Plain text
en: G59.3 - use coordinate system 9
de: G59.3 - Koordinatensystem 9 verwenden

note: type: Plain text
en: Coordinate system offsets are used to shift the coordinate system from the machine coordinate system. This allows the G-code to be programmed for the part without regard to the part location on the machine. Using coordinate system offsets would allow you to machine parts in multiple locations with the same G-code.
de: Koordinatensystem-Offsets werden verwendet, um das Koordinatensystem gegenüber dem Maschinenkoordinatensystem zu verschieben. Dadurch kann der G-Code für das Werkstück unabhängig von der Position des Werkstücks auf der Maschine programmiert werden. Die Verwendung von Koordinatensystem-Offsets würde es Ihnen ermöglichen, Teile an mehreren Stellen mit demselben G-Code zu bearbeiten.

note: type: Plain text
en: The values for offsets are stored in the VAR file that is requested by the INI file during the startup of an LinuxCNC. In the example below, which uses G55, the position of each axis for G55 origin is stored in a numbered variable.
de: Die Werte für die Offsets sind in der VAR-Datei, die von der INI-Datei während des Starts eines LinuxCNC angefordert wird gespeichert. Im folgenden Beispiel, das G55 verwendet, wird die Position jeder Achse für G55 Ursprung in einer nummerierten Variablen gespeichert.

note: type: Plain text
en: In the VAR file scheme, the first variable number stores the X offset, the second the Y offset and so on for all nine axes. There are numbered sets like this for each of the coordinate system offsets.
de: Im VAR-Dateischema speichert die erste Variablennummer den X-Offset, die zweite den Y-Offset und so weiter für alle neun Achsen. Für jeden Offset des Koordinatensystems gibt es nummerierte Sätze dieser Art.

note: type: Plain text
en: Each of the graphical interfaces has a way to set values for these offsets.  You can also set these values by editing the VAR file itself and then restart LinuxCNC so that the LinuxCNC reads the new values however this is not the recommended way. Using G10, G52, G92, G28.1, etc are better ways to set the variables. For our example, we will directly edit the file so that G55 will take the following values:
de: Jede der grafischen Oberflächen verfügt über eine Möglichkeit, Werte für diese Offsets festzulegen.  Sie können diese Werte auch festlegen, indem Sie die VAR-Datei selbst bearbeiten und dann LinuxCNC neu starten, so dass die LinuxCNC die neuen Werte liest, dies jedoch nicht der empfohlene Weg ist. Die Verwendung von G10, G52, G92, G28.1 usw. sind bessere Möglichkeiten, die Variablen festzulegen. In unserem Beispiel bearbeiten wir die Datei direkt, sodass G55 die folgenden Werte annimmt:

note: type: Block title
en: Example of G55 parameters
de: Beispiel für G55-Parameter

note: type: Plain text
en: You should read this as moving the zero positions of G55 to X = 2 units, Y= 1 unit, and Z = -2 units away from the absolute zero position.
de: Dies bedeutet, dass die Nullpositionen von G55 auf X = 2 Einheiten, Y = 1 Einheit und Z = -2 Einheiten von der absoluten Nullposition entfernt sind.

note: type: Plain text
en: Once there are values assigned, a call to G55 in a program block would shift the zero reference by the values stored. The following line would then move each axis to the new zero position. Unlike G53, G54 through G59.3 are modal commands. They will act on all blocks of code after one of them has been set. The program that might be run using fixture offsets would require only a single coordinate reference for each of the locations and all of the work to be done there. The following code is offered as an example of making a square using the G55 offsets that we set above.
de: Sobald die Werte zugewiesen sind, würde ein Aufruf von G55 in einem Programmsatz den Nullbezug um die gespeicherten Werte verschieben. Die folgende Zeile würde dann jede Achse auf die neue Nullposition fahren. Im Gegensatz zu G53 sind G54 bis G59.3 modale Befehle. Sie wirken auf alle Codesätze, nachdem einer von ihnen gesetzt wurde. Das Programm, das unter Verwendung von Vorrichtungsoffsets ausgeführt werden könnte, würde nur eine einzige Koordinatenreferenz für jede der Positionen und alle dort auszuführenden Arbeiten erfordern. Der folgende Code ist ein Beispiel für die Herstellung eines Quadrats unter Verwendung der G55-Offsets, die wir oben festgelegt haben.

note: type: delimited block -
en: G55 ; use coordinate system 2
    G0 X0 Y0 Z0
    G1 F2 Z-0.2000
    X1
    Y1
    X0
    Y0
    G0 Z0
    G54 ; use coordinate system 1
    G0 X0 Y0 Z0
    M2
de: G55 ; Nutze Koordinaten-System 2
    G0 X0 Y0 Z0
    G1 F2 Z-0.2000
    X1
    Y1
    X0
    Y0
    G0 Z0
    G54 ; Nutze coordinaten-System 1
    G0 X0 Y0 Z0
    M2

note: type: Plain text
en: In this example the G54 near the end leaves the G54 coordinate system with all zero offsets so that there is a modal code for the absolute machine based axis positions. This program assumes that we have done that and use the ending command as a command to machine zero. It would have been possible to use G53 and arrive at the same place but that command would not have been modal and any commands issued after it would have returned to using the G55 offsets because that coordinate system would still be in effect.
de: In diesem Beispiel verlässt der G54 gegen Ende das G54-Koordinatensystem mit allen Nullpunktverschiebungen, so dass es einen Modalcode für die absoluten maschinenbasierten Achsenpositionen gibt. Dieses Programm geht davon aus, dass wir dies getan haben und verwendet den Endbefehl als einen Befehl zum Maschinennullpunkt. Es wäre möglich gewesen, G53 zu verwenden und an dieselbe Stelle zu gelangen, aber dieser Befehl wäre nicht modal gewesen, und alle danach erteilten Befehle hätten wieder die G55-Offsets verwendet, da dieses Koordinatensystem noch in Kraft wäre.

note: type: delimited block -
en: G54	uses parameters of coordinate system 1(((G54)))
    G55	uses parameters of coordinate system 2(((G55)))
    G56	uses parameters of coordinate system 3(((G56)))
    G57	uses parameters of coordinate system 4(((G57)))
    G58	uses parameters of coordinate system 5(((G58)))
    G59	uses parameters of coordinate system 6(((G59)))
    G59.1	uses parameters of coordinate system 7(((G59.1)))
    G59.2	uses parameters of coordinate system 8(((G59.2)))
    G59.3	uses parameters of coordinate system 9(((G59.3)))
de: G54 verwendet die Parameter des Koordinatensystems 1(((G54)))
    G55 verwendet die Parameter des Koordinatensystems 2(((G55)))
    G56 verwendet die Parameter des Koordinatensystems 3(((G56)))
    G57 verwendet Parameter des Koordinatensystems 4(((G57)))
    G58 verwendet Parameter des Koordinatensystems 5(((G58)))
    G59 verwendet Parameter des Koordinatensystems 6(((G59)))
    G59.1 verwendet Parameter des Koordinatensystems 7(((G59.1)))
    G59.2 verwendet Parameter des Koordinatensystems 8(((G59.2)))
    G59.3 verwendet die Parameter des Koordinatensystems 9(((G59.3)))

note: type: Title ===
en: Default Coordinate System
de: Standard-Koordinatensystem

note: type: Plain text
en: One other variable in the VAR file becomes important when we think about offset systems. This variable is named 5220. In the default files its value is set to 1.00000. This means that when the LinuxCNC starts up it should use the first coordinate system as its default. If you set this to 9.00000 it would use the ninth offset system as its default for start up and reset. Any value other than an integer (decimal really)  between 1 and 9, or a missing 5220 variable will cause the LinuxCNC to revert to the default value of 1.00000 on start up.
de: Eine weitere Variable in der VAR-Datei wird wichtig, wenn wir über Offset-Systeme nachdenken. Diese Variable heißt 5220. In den Standarddateien ist ihr Wert auf 1.00000 gesetzt. Dies bedeutet, dass, wenn LinuxCNC startet das erste Koordinatensystem als Standard verwendet werden. Wenn Sie diesen Wert auf 9.00000 setzen, würde er das neunte Offset-System als Standard für das Starten und Zurücksetzen verwenden. Jeder andere Wert als eine ganze Zahl (dezimal wirklich) zwischen 1 und 9, oder eine fehlende 5220 Variable wird die LinuxCNC auf den Standardwert von 1.00000 beim Start zurückkehren.

note: type: Title ===
en: Setting Coordinate System Offsets
de: Koordinatensystem-Offsets einstellen

note: type: Plain text
en: The G10 L2x command can be used to set coordinate system offsets:
de: Der Befehl G10 L2x kann verwendet werden, um Koordinatensystem-Offsets zu setzen:

note: type: Plain text
en: 'G10 L2 P(1-9)' - Set offset(s) to a value.  Current position irrelevant (see <<gcode:g10-l2,G10 L2>> for details).
de: G10 L2 P(1-9)' - Offset(s) auf einen Wert setzen.  Aktuelle Position irrelevant (siehe <<gcode:g10-l2,G10 L2>> für Details).

note: type: Plain text
en: 'G10 L20 P(1-9)' - Set offset(s) so current position becomes a value (see <<gcode:g10-l20,G10 L20>> for details).
de: G10 L20 P(1-9)' - Offset(s) setzen, so dass die aktuelle Position zu einem Wert wird (siehe <<gcode:g10-l20,G10 L20>> für Details).

note: type: Plain text
en: We only give a brief overview here, refer to the G-code sections for a full description.
de: Wir geben hier nur einen kurzen Überblick, eine vollständige Beschreibung finden Sie in den G-Code-Abschnitten.

note: type: Title ==
en: Local and Global Offsets
de: Lokale und globale Offsets

note: type: Title ===
en: The G52 command
de: Der Befehl G52

note: type: Plain text
en: 'G52' is used in a part program as a temporary "local coordinate system offset" within the workpiece coordinate system.  An example use case is when machining several identical features at different locations on a part.  For each feature, 'G52' programs a local reference point within workpiece coordinates, and a subprogram is called to machine the feature relative to that point.
de: G52' wird in einem Teileprogramm als temporärer "lokaler Koordinatensystemversatz" innerhalb des Werkstückkoordinatensystems verwendet.  Ein Beispiel für einen Anwendungsfall ist die Bearbeitung mehrerer identischer Features an verschiedenen Stellen eines Werkstücks.  Für jedes Feature programmiert 'G52' einen lokalen Referenzpunkt innerhalb der Werkstückkoordinaten, und ein Unterprogramm wird aufgerufen, um das Feature relativ zu diesem Punkt zu bearbeiten.

note: type: Plain text
en: 'G52' axis offsets are programmed relative to workpiece coordinate offsets 'G54' through 'G59.3'.  As a local offset, 'G52' is applied after the workpiece offset, including rotation.  Thus, a part feature will be machined identically on each part regardless of the part's orientation on the pallet.
de: Die Achsversätze 'G52' werden relativ zu den Werkstückkoordinatenversätzen 'G54' bis 'G59.3' programmiert.  Als lokaler Versatz wird 'G52' nach dem Werkstückversatz angewendet, einschließlich Drehung.  Auf diese Weise wird ein Teilemerkmal auf jedem Teil identisch bearbeitet, unabhängig von der Ausrichtung des Teils auf der Palette.

note: type: Plain text
en: As a temporary offset, set and unset within the localized scope of a part program, in other G-code interpreters 'G52' does not persist after machine reset, 'M02' or 'M30'.  In LinuxCNC, 'G52' shares parameters with 'G92', which, for historical reasons, *does* persist these parameters.  See <<sec:g92-persistence-cautions,G92 Persistence Cautions>> below.
de: Als temporäre Offset, Set und Unset innerhalb der lokalisierten Umfang eines Teils Programm, in anderen G-Code-Interpreter 'G52' nicht nach Maschinen-Reset, 'M02' oder 'M30' persistieren.  In LinuxCNC, 'G52' teilt Parameter mit 'G92', die, aus historischen Gründen, *persistieren*.  Siehe <<sec:g92-persistence-cautions,G92 Persistence Cautions>> unten.

note: type: Plain text
en: 'G52' and 'G92' share the same offset registers.  Therefore, setting 'G52' will override any earlier 'G92' setting, and 'G52' will persist across machine reset when 'G92' persistence is enabled.  These interactions may result in unexpected offsets.  See <<sec:g92-g52-interaction-cautions,G92 and G52 Interaction Cautions>> below.
de: 'G52' und 'G92' teilen sich die gleichen Offset-Register. Daher überschreibt die Einstellung von 'G52' jede frühere Einstellung von 'G92', und 'G52' bleibt über das Zurücksetzen der Maschine hinaus erhalten, wenn die 'G92'-Persistenz aktiviert ist. Diese Wechselwirkungen können zu unerwarteten Offsets führen. Siehe <<ec:g92-g52-interaction-cautions, G92- und G52-Interaktionshinweise>> weiter unten.

note: type: Plain text
en: Programming 'G52 X1 Y2' offsets the current workpiece coordinate system X axis by 1 and Y axis by 2.  Accordingly, on the DRO, the current tool position's X and Y coordinates will be reduced by 1 and 2, respectively.  Axes unset in the command, such as Z in the previous example, will be unaffected: any previous 'G52' Z offset will remain in effect, and otherwise the Z offset will be zero.
de: Durch die Programmierung von 'G52 X1 Y2' wird die X-Achse des aktuellen Werkstückkoordinatensystems um 1 und die Y-Achse um 2 verschoben. Dementsprechend werden die X- und Y-Koordinaten der aktuellen Werkzeugposition um 1 bzw. 2 verringert.  Achsen, die im Befehl nicht festgelegt wurden, wie z. B. die Z-Achse im vorigen Beispiel, bleiben unberührt: Jede frühere 'G52'-Z-Verschiebung bleibt wirksam, und andernfalls ist die Z-Verschiebung Null.

note: type: Plain text
en: The temporary local offset may be canceled with 'G52 X0 Y0'.  Any axes not explicitly zeroed will retain the previous offset.
de: Der temporäre lokale Offset kann mit 'G52 X0 Y0' gelöscht werden.  Alle Achsen, die nicht explizit auf Null gesetzt wurden, behalten den vorherigen Offset bei.

note: type: Plain text
en: 'G52' shares the same offset registers as 'G92', and thus 'G52' is visible on the DRO and preview labeled with 'G92'.
de: 'G52' hat die gleichen Offset-Register wie 'G92', und daher ist 'G52' auf der DRO und der Vorschau mit der Bezeichnung 'G92' sichtbar.

note: type: Title ==
en: G92 Axes Offsets
de: G92-Achsen-Offsets

note: type: Plain text
en: G92 is the most misunderstood and cleverest command programmable with LinuxCNC. The way it works has changed a bit between the first versions and the current one. These changes have doubt baffled many users. They should be seen as a command producing a temporary offset, which applies to all the other offsets.
de: G92 ist der am meisten missverstandene und cleverste Befehl, der mit LinuxCNC programmierbar ist. Die Art und Weise, wie es funktioniert hat ein bisschen zwischen den ersten Versionen und der aktuellen geändert. Diese Änderungen haben zweifellos viele Benutzer verwirrt. Sie sollten als ein Befehl erzeugt eine temporäre Offset, die für alle anderen Offsets gilt gesehen werden.

note: type: Title ===
en: The G92 commands
de: Die G92-Befehle

note: type: Plain text
en: 'G92' is typically used in two conceptually different ways: as a "global coordinate system offset" or as a "local coordinate system offset".
de: 'G92' wird typischerweise auf zwei konzeptionell unterschiedliche Arten verwendet: als "globaler Koordinatensystem-Offset" oder als "lokaler Koordinatensystem-Offset".

note: type: Plain text
en: The 'G92' set of commands includes:
de: Der 'G92'-Befehlssatz umfasst:

note: type: Plain text
en: 'G92' - This command, when used with axis names, sets values to offset variables.
de: 'G92' - Wenn dieser Befehl mit Achsennamen verwendet wird, werden Werte auf Offset-Variablen festgelegt.

note: type: Plain text
en: 'G92.1' - This command sets zero values to the G92 variables.
de: 'G92.1' - Dieser Befehl setzt Nullwerte für die G92-Variablen.

note: type: Plain text
en: 'G92.2' - This command suspends but does not zero out the G92 variables.
de: 'G92.2' - Dieser Befehl setzt die G92-Variablen außer Kraft, setzt sie aber nicht auf Null.

note: type: Plain text
en: 'G92.3' - This command applies offset values that have been suspended.
de: 'G92.3' - Dieser Befehl wendet wieder Offset-Werte an, die zuvor ausgesetzt wurden.

note: type: Plain text
en: As a global offset, 'G92' is used to shift all workpiece coordinate systems 'G54' through 'G59.3'.  An example use case is when machining several identical parts in fixtures with known locations on a pallet, but the pallet location may change between runs or between machines.  Each fixture location offset, relative to a reference point on the pallet, is preset in one of the workpiece coordinate systems, 'G54' through 'G59.3', and 'G92' is used to "touch off" on the pallet reference point.  Then, for each part, the corresponding workpiece coordinate system is selected and the part program is executed.
de: Als globale Verschiebung wird 'G92' verwendet, um alle Werkstückkoordinatensysteme 'G54' bis 'G59.3' zu verschieben.  Ein Beispiel für einen Anwendungsfall ist die Bearbeitung mehrerer identischer Teile in Aufspannungen mit bekannten Positionen auf einer Palette, aber die Position der Palette kann sich zwischen Läufen oder zwischen Maschinen ändern.  Jede Verschiebung der Aufspannvorrichtung in Bezug auf einen Referenzpunkt auf der Palette wird in einem der Werkstückkoordinatensysteme 'G54' bis 'G59.3' voreingestellt, und 'G92' wird verwendet, um den Referenzpunkt auf der Palette "anzutasten".  Dann wird für jedes Teil das entsprechende Werkstückkoordinatensystem ausgewählt und das Teileprogramm ausgeführt.

note: type: Plain text
en: 'G10 R-' workpiece coordinate system rotation is specific to the 'rs274ngc' interpreter, and the 'G92' offset is applied 'after' rotation.  When using 'G92' as a global offset, workpiece coordinate system rotations may have unexpected results.
de: Die Drehung des Werkstückkoordinatensystems 'G10 R-' ist spezifisch für den Interpreter 'rs274ngc', und der Offset 'G92' wird 'nach' der Drehung angewendet.  Wenn 'G92' als globaler Offset verwendet wird, kann die Drehung des Werkstückkoordinatensystems zu unerwarteten Ergebnissen führen.

note: type: Plain text
en: As a local coordinate system, 'G92' is used as a temporary offset within the workpiece coordinate system.  An example use case is when machining a part with several identical features at different locations.  For each feature, 'G92' is used to set a local reference point, and a subprogram is called to machine the feature starting at that point.
de: Als lokales Koordinatensystem wird 'G92' als temporärer Versatz innerhalb des Werkstückkoordinatensystems verwendet.  Ein Beispiel für einen Anwendungsfall ist die Bearbeitung eines Teils mit mehreren identischen Merkmalen an verschiedenen Stellen.  Für jedes Feature wird 'G92' verwendet, um einen lokalen Referenzpunkt zu setzen, und ein Unterprogramm wird aufgerufen, um das Feature ab diesem Punkt zu bearbeiten.

note: type: Plain text
en: The use of 'G92' is discouraged for programming with local coordinate systems in a part program.  Instead, see <<sec:g52,'G52'>>, a local coordinate system offset more intuitive when desired offset relative to the workpiece is known but current tool location may not be known.
de: Von der Verwendung von 'G92' wird bei der Programmierung mit lokalen Koordinatensystemen in einem Teileprogramm abgeraten.  Siehe stattdessen <<sec:g52,'G52'>>, ein lokaler Koordinatensystem-Offset, der intuitiver ist, wenn der gewünschte Offset relativ zum Werkstück bekannt ist, aber die aktuelle Werkzeugposition möglicherweise nicht bekannt ist.

note: type: Plain text
en: Programming 'G92 X0 Y0 Z0' sets the current tool location to the coordinates X0, Y0, and Z0, without motion.  G92 *does not* work from absolute machine coordinates.  It works from *current location*.
de: Die Programmierung von 'G92 X0 Y0 Z0' setzt die aktuelle Werkzeugposition auf die Koordinaten X0, Y0 und Z0, ohne Bewegung.  G92 arbeitet *nicht* mit absoluten Maschinenkoordinaten.  Es arbeitet mit der *aktuellen Position*.

note: type: Plain text
en: 'G92' also works from current location as modified by any other offsets that are in effect when the 'G92' command is invoked. While testing for differences between work offsets and actual offsets it was found that a 'G54' offset could cancel out a 'G92' and thus give the appearance that no offsets were in effect. However, the 'G92' was still in effect for all coordinates and did produce expected work offsets for the other coordinate systems.
de: 'G92' funktioniert auch vom aktuellen Standort aus, der durch alle anderen Offsets geändert wird, die beim Aufruf des Befehls 'G92' wirksam sind. Beim Testen auf Unterschiede zwischen Arbeitsversätzen und tatsächlichen Offsets wurde festgestellt, dass ein "G54"-Offset einen "G92" aufheben und somit den Anschein erwecken könnte, dass keine Offsets in Kraft waren. Die "G92" war jedoch immer noch für alle Koordinaten in Kraft und erzeugte erwartete Arbeitsversätze für die anderen Koordinatensysteme.

note: type: Plain text
en: By default, 'G92' offsets are restored after the machine is started.  Programmers that wish for Fanuc behavior, where 'G92' offsets are cleared at machine start and after a reset or program end, may disable 'G92' persistence by setting 'DISABLE_G92_PERSISTENCE = 1' in the '[RS274NGC]' section of the INI file.
de: Standardmäßig werden die 'G92'-Offsets nach dem Start der Maschine wiederhergestellt.  Programmierer, die ein Fanuc-Verhalten wünschen, bei dem die 'G92'-Offsets beim Maschinenstart und nach einem Reset oder Programmende gelöscht werden, können die 'G92'-Persistenz deaktivieren, indem sie 'DISABLE_G92_PERSISTENCE = 1' im Abschnitt '[RS274NGC]' der INI-Datei 'einstellen.

note: type: Plain text
en: It is good practice to clear the 'G92' offsets at the end of their use with 'G92.1' or 'G92.2'. When starting up LinuxCNC with 'G92' persistence enabled (the default), any offsets in the 'G92' variables will be applied when an axis is homed.  See <<sec:g92-persistence-cautions,G92 Persistence Cautions>> below.
de: Es ist gute Praxis, die 'G92' Offsets am Ende ihrer Verwendung mit 'G92.1' oder 'G92.2' zu löschen. Wenn Sie LinuxCNC mit aktivierter 'G92'-Persistenz starten (die Voreinstellung), werden alle Offsets in den 'G92'-Variablen angewendet, wenn eine Achse referenziert wird.  Siehe <<sec:g92-persistence-cautions,G92 Persistenz Vorsichtsmaßnahmen>> unten.

note: type: Title ===
en: Setting G92 Values
de: G92 Werte festlegen

note: type: Plain text
en: There are at least two ways to set G92 values:
de: Es gibt mindestens zwei Möglichkeiten, G92-Werte festzulegen:

note: type: Plain text
en: With a right click on the position displays in tklinuxcnc, a window opens where it is possible to enter a value.
de: Mit einem Rechtsklick auf die Positionsanzeigen in tklinuxcnc öffnet sich ein Fenster, in dem Sie einen Wert eingeben können.

note: type: Plain text
en: With the G92 command
de: Mit dem Befehl G92

note: type: Plain text
en: Both work from the current position of the axis that should be moved.
de: Beide gehen von der aktuellen Position der Achse aus, die verschoben werden soll.

note: type: Plain text
en: Programming 'G92 X Y Z A B C U V W' sets the values of the G92 variables so that each axis takes the value associated with its name. Those values are assigned to the current position of the axes. These results satisfy to paragraphs one and two of the NIST document.
de: Durch die Programmierung von 'G92 X Y Z A B C U V W' werden die Werte der G92-Variablen so eingestellt, dass jede Achse den mit ihrem Namen verbundenen Wert annimmt. Diese Werte werden der aktuellen Position der Achsen zugewiesen. Diese Ergebnisse entsprechen den Absätzen eins und zwei des NIST-Dokuments.

note: type: Plain text
en: G92 commands work from current axis location and add and subtract correctly to give the current axis position the value assigned by the G92 command. The effects work even though previous offsets are in.
de: G92-Befehle gehen von der aktuellen Achsenposition aus und addieren und subtrahieren korrekt, um der aktuellen Achsenposition den durch den G92-Befehl zugewiesenen Wert zu geben. Die Effekte funktionieren auch dann, wenn vorherige Offsets vorhanden sind.

note: type: Plain text
en: So if the X axis is currently showing 2.0000 as its position a 'G92 X0' will set an offset of -2.0000 so that the current location of X becomes zero. A 'G92 X2' will set an offset of 0.0000 and the displayed position will not change. A 'G92 X5.0000' will set an offset of 3.0000 so that the current displayed position becomes 5.0000.
de: Wenn also die X-Achse derzeit 2,0000 als Position anzeigt, wird mit 'G92 X0' ein Offset von -2,0000 gesetzt, so dass die aktuelle Position von X Null wird. Ein 'G92 X2' setzt einen Offset von 0.0000 und die angezeigte Position wird nicht verändert. Ein 'G92 X5.0000' setzt einen Offset von 3.0000, so dass die aktuell angezeigte Position zu 5.0000 wird.

note: type: Title ===
en: G92 Persistence Cautions
de: G92 Persistenz-Vorsichtsmaßnahmen

note: type: Plain text
en: By default, the values of a 'G92' offset will be saved in the VAR file and be restored after a machine reset or startup.
de: Standardmäßig werden die Werte eines 'G92'-Offsets in der VAR-Datei gespeichert und nach einem Neustart der Maschine oder einem Neustart wiederhergestellt.

note: type: Plain text
en: The G92 parameters are:
de: Die G92-Parameter sind:

note: type: Plain text
en: 5210 - Enable/disable flag (1.0/0.0)
de: 5210 - Aktivieren/Deaktivieren der Flags (1.0/0.0)

note: type: Plain text
en: 5211 - X Axis Offset
de: 5211 - Versatz (engl. offset) der X-Achse

note: type: Plain text
en: 5212 - Y Axis Offset
de: 5212 - Versatz der Y-Achse

note: type: Plain text
en: 5213 - Z Axis Offset
de: 5213 - Z-Achsen-Versatz

note: type: Plain text
en: 5214 - A Axis Offset
de: 5214 - Versatz der A-Achse

note: type: Plain text
en: 5215 - B Axis Offset
de: 5215 - Versatz der B-Achse

note: type: Plain text
en: 5216 - C Axis Offset
de: 5216 - Versatz der C-Achse

note: type: Plain text
en: 5217 - U Axis Offset
de: 5217 - Versatz der U-Achse

note: type: Plain text
en: 5218 - V Axis Offset
de: 5218 - Versatz der V-Achse

note: type: Plain text
en: 5219 - W Axis Offset
de: 5219 - Versatz der W-Achse

note: type: Plain text
en: where 5210 is the 'G92' enable flag (1 for enabled, 0 for disabled)  and 5211 to 5219 are the axis offsets. If you are seeing unexpected positions as the result of a commanded move, as a result of storing an offset in a previous program and not clearing them at the end then issue a G92.1 in the MDI window to clear the stored offsets.
de: wobei 5210 das 'G92'-Freigabeflag ist (1 für aktiviert, 0 für deaktiviert) und 5211 bis 5219 die Achsenoffsets sind. Wenn Sie unerwartete Positionen als Ergebnis einer befohlenen Bewegung sehen, weil Sie einen Offset in einem früheren Programm gespeichert und am Ende nicht gelöscht haben, geben Sie ein G92.1 im MDI-Fenster ein, um die gespeicherten Offsets zu löschen.

note: type: Plain text
en: If G92 values exist in the VAR file when LinuxCNC starts up, the G92 values in the var file will be applied to the values of the current location of each axis. If this is home position and home position is set as machine zero everything will be correct. Once home has been established using real machine switches, or by moving each axis to a known home position and issuing an axis home command, any G92 offsets will be applied. If you have a G92 X1 in effect when you home the X axis the DRO will read 'X: 1.000' instead of the expected 'X: 0.000' because the G92 was applied to the machine origin. If you issue a G92.1 and the DRO now reads all zeros then you had a G92 offset in effect when you last ran LinuxCNC.
de: Wenn G92-Werte in der VAR-Datei vorhanden sind, wenn LinuxCNC startet, werden die G92-Werte in der Var-Datei auf die Werte der aktuellen Position jeder Achse angewendet werden. Wenn dies die Ausgangsposition ist und die Ausgangsposition als Maschinennullpunkt eingestellt ist, wird alles korrekt sein. Sobald die Ausgangsposition mit Hilfe von echten Maschinenschaltern oder durch Bewegen jeder Achse zu einer bekannten Ausgangsposition und Ausgeben eines Achsen-Ausgangsbefehls festgelegt wurde, werden alle G92-Offsets angewendet. Wenn Sie eine G92 X1 in Kraft haben und die X-Achse in den Grundzustand bringen, wird die Positionsanzeige 'X: 1.000' statt des erwarteten 'X: 0.000' anzeigen, da die G92 auf den Maschinenursprung angewendet wurde. Wenn Sie ein G92.1 Befehl absetzen und die DRO zeigt nun überall Nullen, dann hatten Sie eine G92 Offset in aktiv als Sie zuletzt LinuxCNC ausführten.

note: type: Plain text
en: Unless your intention is to use the same G92 offsets in the next program, the best practice is to issue a G92.1 at the end of any G code files where you use G92 offsets.
de: Sofern Sie nicht die Absicht haben, dieselben G92-Offsets im nächsten Programm zu verwenden, ist es die beste Praxis, am Ende jeder G-Code-Datei, in der Sie G92-Offsets verwenden, einen G92.1 auszuführen.

note: type: Plain text
en: When a program is aborted during processing that has 'G92' offsets in effect a startup will cause them to become active again.  As a safeguard, always have your preamble to set the environment as you expect it.  Additionally, 'G92' persistence may be disabled by setting 'DISABLE_G92_PERSISTENCE = 1' in the '[RS274NGC]' section of the INI file.
de: Wenn ein Programm während der Verarbeitung abgebrochen wird, für das 'G92'-Offsets gelten, werden diese beim Start wieder aktiv.  Zur Sicherheit sollten Sie immer eine Präambel verwenden, um die Umgebung so einzustellen, wie Sie sie erwarten.  Außerdem kann die 'G92'-Persistenz durch Setzen von 'DISABLE_G92_PERSISTENCE = 1' im Abschnitt '[RS274NGC]' der INI-Datei deaktiviert werden.

note: type: Title ===
en: G92 and G52 Interaction Cautions
de: G92 und G52 Wechselwirkungen - Hinweise zur Vorsicht

note: type: Plain text
en: 'G52' and 'G92' share the same offset registers. Unless 'G92' persistence is disabled in the INI file (see <<sec:g92-commands,G92 Commands>>), 'G52' offsets will also persist after machine reset, 'M02' or 'M30'.  Beware that a 'G52' offset in effect during a program abort may result in unintended offsets when the next program is run.  See <<sec:g92-persistence-cautions,G92 Persistence Cautions>> above.
de: 'G52' und 'G92' teilen sich die gleichen Offset-Register. Sofern die 'G92'-Persistenz in der INI-Datei nicht deaktiviert ist (siehe <<sec:g92-Befehle,G92-Befehle>>), bleiben 'G52'-Offsets auch nach dem Zurücksetzen der Maschine, 'M02' oder 'M30' bestehen. Beachten Sie, dass ein während eines Programmabbruchs wirksamer 'G52'-Offset zu unbeabsichtigten Offsets führen kann, wenn das nächste Programm ausgeführt wird. Siehe obige <<sec:g92-persistence-cautions,G92 Warnungen zur Persistenz>>.

note: type: Title ==
en: Sample Programs Using Offsets
de: Beispielprogramme mit Offsets/Kompensationen

note: type: Title ===
en: Sample Program Using Workpiece Coordinate Offsets
de: Beispielprogramm mit Werkstückkoordinaten-Versätzen

note: type: Plain text
en: This sample engraving project mills a set of four .1 radius circles in roughly a star shape around a center circle. We can setup the individual circle pattern like this.
de: Dieses Beispielgravurprojekt fräst einen Satz von vier Kreisen mit einem Radius von 0,1, die sich in etwa sternförmig um einen zentralen Kreis herum befinden. Wir können die einzelnen Kreismuster wie folgt einrichten.

note: type: delimited block -
en: G10 L2 P1 X0 Y0 Z0 (ensure that G54 is set to machine zero)
    G0 X-0.1 Y0 Z0
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G0 Z0
    M2
de: G10 L2 P1 X0 Y0 Z0 (sicherstellen, dass G54 auf Maschine Null eingestellt ist)
    G0 X-0.1 Y0 Z0
    G1 F1 Z-0,25
    G3 X-0.1 Y0 I0.1 J0
    G0 Z0
    M2

note: type: Plain text
en: We can issue a set of commands to create offsets for the four other circles like this.
de: Wir können eine Reihe von Befehlen erteilen, um Versätze für die vier anderen Kreise wie folgt zu erstellen.

note: type: delimited block -
en: G10 L2 P2 X0.5 (offsets G55 X value by 0.5 inch)
    G10 L2 P3 X-0.5 (offsets G56 X value by -0.5 inch)
    G10 L2 P4 Y0.5 (offsets G57 Y value by 0.5 inch)
    G10 L2 P5 Y-0.5 (offsets G58 Y value by -0.5 inch)
de: G10 L2 P2 X0.5 (verschiebt den G55 X-Wert um 0,5 Zoll)
    G10 L2 P3 X-0.5 (verschiebt den G56 X-Wert um -0,5 Zoll)
    G10 L2 P4 Y0.5 (verschiebt G57 Y-Wert um 0,5 Zoll)
    G10 L2 P5 Y-0.5 (verschiebt G58 Y-Wert um -0,5 Zoll)

note: type: Plain text
en: We put these together in the following program:
de: Diese haben wir in dem folgenden Programm zusammengestellt:

note: type: delimited block -
en: (a program for milling five small circles in a diamond shape)
de: (ein Programm zum Fräsen von fünf kleinen Kreisen in Rautenform)

note: type: delimited block -
en: G10 L2 P1 X0 Y0 Z0 (ensure that G54 is machine zero)
    G10 L2 P2 X0.5 (offsets G55 X value by 0.5 inch)
    G10 L2 P3 X-0.5 (offsets G56 X value by -0.5 inch)
    G10 L2 P4 Y0.5 (offsets G57 Y value by 0.5 inch)
    G10 L2 P5 Y-0.5 (offsets G58 Y value by -0.5 inch)
de: G10 L2 P1 X0 Y0 Z0 (sicherstellen, dass G54 Maschinen-Null ist)
    G10 L2 P2 X0.5 (verschiebt den G55 X-Wert um 0,5 Zoll)
    G10 L2 P3 X-0.5 (verschiebt den G56 X-Wert um -0,5 Zoll)
    G10 L2 P4 Y0.5 (verschiebt G57 Y-Wert um 0,5 Zoll)
    G10 L2 P5 Y-0.5 (verschiebt G58 Y-Wert um -0,5 Zoll)

note: type: delimited block -
en: G54 G0 X-0.1 Y0 Z0 (center circle)
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G0 Z0
de: G54 G0 X-0.1 Y0 Z0 (mittlerer Kreis)
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G0 Z0

note: type: delimited block -
en: G55 G0 X-0.1 Y0 Z0 (first offset circle)
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G0 Z0
de: G55 G0 X-0.1 Y0 Z0 (erster versetzter Kreis)
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G0 Z0

note: type: delimited block -
en: G56 G0 X-0.1 Y0 Z0 (second offset circle)
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G0 Z0
de: G56 G0 X-0.1 Y0 Z0 (zweiter versetzter Kreis)
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G0 Z0

note: type: delimited block -
en: G57 G0 X-0.1 Y0 Z0 (third offset circle)
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G0 Z0
de: G57 G0 X-0.1 Y0 Z0 (dritter versetzter Kreis)
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G0 Z0

note: type: delimited block -
en: G58 G0 X-0.1 Y0 Z0 (fourth offset circle)
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G54 G0 X0 Y0 Z0
de: G58 G0 X-0.1 Y0 Z0 (vierer versetzter Kreis)
    G1 F1 Z-0.25
    G3 X-0.1 Y0 I0.1 J0
    G54 G0 X0 Y0 Z0

note: type: Plain text
en: Now comes the time when we might apply a set of G92 offsets to this program. You'll see that it is running in each case at Z0. If the mill were at the zero position, a G92 Z1.0000 issued at the head of the program would shift everything an inch. You might also shift the whole pattern around in the XY plane by adding some X and Y offsets with G92. If you do this you should add a G92.1 command just before the M2 that ends the program. If you do not, other programs that you might run after this one will also use that G92 offset. Furthermore it would save the G92 values when you shut down the LinuxCNC and they will be recalled when you start up again.
de: Jetzt kommt der Zeitpunkt, an dem wir eine Reihe von G92-Offsets auf dieses Programm anwenden können. Sie werden sehen, dass es in jedem Fall auf Z0 läuft. Wenn sich die Fräse in der Nullposition befände, würde ein G92 Z1.0000 am Anfang des Programms alles um einen Zoll verschieben. Sie könnten auch das gesamte Muster in der XY-Ebene verschieben, indem Sie mit G92 einige X- und Y-Versätze hinzufügen. Wenn Sie dies tun, sollten Sie einen G92.1-Befehl kurz vor dem M2-Befehl hinzufügen, der das Programm beendet. Wenn Sie dies nicht tun, werden andere Programme, die Sie nach diesem Programm ausführen, ebenfalls diesen G92-Offset verwenden. Darüber hinaus würde es die G92-Werte zu speichern, wenn Sie die LinuxCNC herunterfahren und sie werden abgerufen, wenn Sie wieder starten.

note: type: Title ===
en: Sample Program Using G52 Offsets
de: Beispielprogramm mit G52-Offsets

note: type: Plain text
en: (To be written)
de: (muss noch geschrieben werden)

note: type: Title ==
en: Conventions
de: Konventionen

note: type: Plain text
en: Conventions used in this section
de: In diesem Abschnitt verwendete Konventionen

note: type: Plain text
en: In the G-code prototypes the hyphen ('-') stands for a real value and ('<>') denotes an optional item.
de: In den G-Code-Prototypen steht der Bindestrich ('-') für einen realen Wert und ('<>') für ein optionales Element.

note: type: Plain text
en: If 'L-' is written in a prototype the '-' will often be referred to as the 'L number', and so on for any other letter.
de: Wenn "L-" in einem Prototyp geschrieben wird, so wird das "-" oft als "L-Nummer" bezeichnet, und so weiter für jeden anderen Buchstaben.

note: type: Plain text
en: In the G-code prototypes the word 'axes' stands for any axis as defined in your configuration.
de: In den G-Code-Prototypen steht das Wort "Achsen" (oder noch englisch "axes") für jede Achse, die in Ihrer Konfiguration definiert ist.

note: type: Plain text
en: An optional value will be written like this '<L- >'.
de: Ein optionaler Wert wird wie folgt geschrieben: '<L- >'.

note: type: Plain text
en: A real value may be:
de: Ein echter Wert kann sein:

note: type: Plain text
en: An explicit number, '4'
de: Eine explizite Zahl, '4'

note: type: Plain text
en: An expression, '[2+2]'
de: Ein Ausdruck, '[2+2]'

note: type: Plain text
en: A parameter value, '#88'
de: Ein Parameterwert, '#88'

note: type: Plain text
en: A unary function value, 'acos[0]'
de: Ein unärer Funktionswert, 'acos[0]'

note: type: Plain text
en: In most cases, if 'axis' words are given (any or all of 'X Y Z A B C U V W'), they specify a destination point.
de: In den meisten Fällen, wenn "Achsen"-Wörter angegeben werden (einige oder alle von "X Y Z A B C U V W"), geben sie einen Zielpunkt an.

note: type: Plain text
en: Axis numbers are in the currently active coordinate system, unless explicitly described as being in the absolute coordinate system.
de: Die Achsennummern beziehen sich auf das derzeit aktive Koordinatensystem, es sei denn, es wird ausdrücklich als absolutes Koordinatensystem bezeichnet.

note: type: Plain text
en: Where axis words are optional, any omitted axes will retain their original value.
de: Wenn Achsenwörter optional sind, behalten ausgelassene Achsen ihren ursprünglichen Wert.

note: type: Plain text
en: Any items in the G-code prototypes not explicitly described as optional are required.
de: Alle Elemente in den G-Code-Prototypen, die nicht ausdrücklich als optional beschrieben werden, sind obligatorisch.

note: type: Plain text
en: The values following letters are often given as explicit numbers.  Unless stated otherwise, the explicit numbers can be real values. For example, 'G10 L2' could equally well be written 'G[2*5] L[1+1]'. If the value of parameter 100 were 2, 'G10 L#100' would also mean the same.
de: Die Werte, die auf Buchstaben folgen, werden oft als explizite Zahlen angegeben.  Sofern nicht anders angegeben, können die expliziten Zahlen reelle Werte sein. Zum Beispiel könnte "G10 L2" genauso gut als "G[2*5] L[1+1]" geschrieben werden. Wäre der Wert des Parameters 100 gleich 2, würde "G10 L#100" dasselbe bedeuten.

note: type: Title ==
en: G-Code Quick Reference Table(((G-Code Table)))
de: G-Code-Kurzübersicht(((G-Code-Tabelle)))

note: type: Table
en: Coordinated Motion at Rapid Rate
de: Koordinierte Bewegung im Eiltempo

note: type: Table
en: Coordinated Motion at Feed Rate
de: Koordinierte Bewegung mit Vorschubgeschwindigkeit

note: type: Table
en: Coordinated Helical Motion at Feed Rate
de: Koordinierte schraubenförmige (helikale) Bewegung mit Vorschubgeschwindigkeit

note: type: Content of: <html><body><table><tbody><tr><td>
en: Dwell
de: Verweilen (engl. dwell)

note: type: Content of: <html><body><table><tbody><tr><td>
en: Cubic Spline
de: Kubischer Spline

note: type: Table
en: Quadratic B-Spline
de: Quadratischer B-Spline

note: type: Table
en: NURBS, add control point
de: NURBS, Kontrollpunkt hinzufügen

note: type: Table
en: Diameter Mode (lathe)
de: Durchmesser-Modus (Drehmaschine)

note: type: Table
en: Radius Mode (lathe)
de: Radius-Modus (Drehmaschine)

note: type: Content of: <html><body><table><tbody><tr><td>
en: Reload Tool Table Data
de: Werkzeug-Tabellendaten neu laden

note: type: Table
en: Set Tool Table Entry
de: Werkzeugtabelleneintrag festlegen

note: type: Table
en: Set Tool Table, Calculated, Workpiece
de: Bestimme Werkzeugtabelle, Berechnet, Werkstück

note: type: Table
en: Set Tool Table, Calculated, Fixture
de: Bestimme Werkzeugtabelle, Berechnet, Spannmittel

note: type: Table
en: Coordinate System Origin Setting
de: Festlegung des Koordinatensystem-Ursprungs

note: type: Table
en: Coordinate System Origin Setting Calculated
de: Ursprungseinstellung des Koordinatensystems berechnet

note: type: Content of: <html><body><table><tbody><tr><td>
en: Plane Select
de: Ebene auswählen

note: type: Table
en: Set Units of Measure
de: Maßeinheiten festlegen

note: type: Table
en: Go to Predefined Position
de: Zur vordefinierten Position gehen

note: type: Content of: <html><body><table><tbody><tr><td>
en: Spindle Synchronized Motion
de: Spindelsynchronisierte Bewegung

note: type: Content of: <html><body><table><tbody><tr><td>
en: Rigid Tapping
de: Starres Gewindeschneiden

note: type: Title ===
en: Probing
de: Sondieren

note: type: Table
en: Cancel Cutter Compensation
de: Fräserkompensation abbrechen

note: type: Content of: <html><body><table><tbody><tr><td>
en: Dynamic Cutter Compensation
de: Dynamische Fräserkompensation

note: type: Table
en: Use Tool Length Offset from Tool Table
de: Werkzeuglängenversatz aus der Werkzeugtabelle verwenden

note: type: Content of: <html><body><table><tbody><tr><td>
en: Dynamic Tool Length Offset
de: Dynamischer Werkzeuglängenversatz

note: type: Content of: <html><body><table><tbody><tr><td>
en: Apply additional Tool Length Offset
de: Zusätzlichen Werkzeuglängenversatz anwenden

note: type: Table
en: Cancel Tool Length Offset
de: Werkzeuglängenversatz abbrechen

note: type: Table
en: Local Coordinate System Offset
de: Versatz des lokalen Koordinatensystems

note: type: Content of: <html><body><table><tbody><tr><td>
en: Move in Machine Coordinates
de: Bewegen in Maschinenkoordinaten

note: type: Table
en: Select Coordinate System (1 - 9)
de: Koordinatensystem auswählen (1 - 9)

note: type: Content of: <html><body><table><tbody><tr><td>
en: Exact Path Mode
de: Exakter Pfad Modus

note: type: Content of: <html><body><table><tbody><tr><td>
en: Exact Stop Mode
de: Exakter Stopp-Modus

note: type: Table
en: Path Control Mode with Optional Tolerance
de: Bahnsteuerungsmodus mit optionaler Toleranz

note: type: Table
en: Lathe finishing cycle
de: Endbearbeitungszyklus der Drehmaschine

note: type: Table
en: Lathe roughing cycle
de: Schruppzyklus der Drehmaschine

note: type: Table
en: Drilling Cycle with Chip Breaking
de: Bohrzyklus mit Spanbruch

note: type: Table
en: Left-hand Tapping Cycle with Dwell
de: Linkshändiger Gewindeschneidzyklus mit Verweilzeit

note: type: Table
en: Multi-pass Threading Cycle (Lathe)
de: Gewindeschneidzyklus mit mehreren Durchgängen (Drehmaschine)

note: type: Table
en: Cancel Motion Modes
de: Bewegungsmodi abbrechen

note: type: Content of: <html><body><table><tbody><tr><td>
en: Drilling Cycle
de: Bohrzyklus

note: type: Table
en: Drilling Cycle with Dwell
de: Bohrzyklus mit Verweilzeit (engl. dwell)

note: type: Table
en: Drilling Cycle with Peck
de: Bohrzyklus mit Peck

note: type: Table
en: Right-hand Tapping Cycle with Dwell
de: Rechtsgewinde-Bohrzyklus mit Verweilzeit (engl. dwell)

note: type: Table
en: Boring Cycle, No Dwell, Feed Out
de: Bohrzyklus, keine Verweilzeit, Vorschub

note: type: Table
en: Boring Cycle, Stop, Rapid Out
de: Bohrzyklus, Stopp, Eilgang raus

note: type: Table
en: Back-boring Cycle _(not yet implemented)_
de: Back-boring Cycle _(noch nicht implementiert)_

note: type: Table
en: Boring Cycle, Stop, Manual Out _(not yet implemented)_
de: Boring Cycle, Stop, Manual Out _(noch nicht implementiert)_

note: type: Content of: <html><body><table><tbody><tr><td>
en: Boring Cycle, Dwell, Feed Out
de: Bohrzyklus, Verweilen, Vorschub Raus

note: type: Content of: <html><body><table><tbody><tr><td>
en: Distance Mode
de: Distanz-Modus

note: type: Content of: <html><body><table><tbody><tr><td>
en: Arc Distance Mode
de: Bogenabstandsmodus (engl. Arc Distance Mode)

note: type: Content of: <html><body><table><tbody><tr><td>
en: Coordinate System Offset
de: Koordinatensystem-Versatz

note: type: Table
en: Cancel G92 Offsets
de: G92-Offsets abbrechen

note: type: Content of: <html><body><table><tbody><tr><td>
en: Restore G92 Offsets
de: G92 Offsets wiederherstellen

note: type: Table
en: Feed Modes
de: Vorschub-Modi (engl. feed modes)

note: type: Table
en: Spindle Control Mode, Constant Surface vs Rotation Speed (IPM or m/min vs RPM)
de: Spindelsteuerungsmodus, konstante Oberfläche vs. Drehzahl (IPM oder m/min vs. U/min)

note: type: Table
en: Canned Cycle Z Retract Mode
de: Canned Cycle Z Rückzugsmodus

note: type: Title ==
en: G0 Rapid Move(((G0 Rapid Move)))
de: G0 Eilgang(((G0 Eilgang)))

note: type: delimited block -
en: G0 <axes>
de: G0 <Achsen>

note: type: Plain text
en: For rapid motion, program 'G0 axes', where all the axis words are optional. The 'G0' is optional if the current motion mode is 'G0'. This will produce coordinated motion to the destination point at the maximum rapid rate (or slower). 'G0' is typically used as a positioning move.
de: Für den Eilgang programmieren Sie 'G0-Achsen', wobei alle Achsenwörter optional sind. Das 'G0' ist optional, wenn der aktuelle Bewegungsmodus 'G0' ist. Dies führt zu einer koordinierten Bewegung zum Zielpunkt mit der maximalen Eilgeschwindigkeit (oder langsamer). 'G0' wird typischerweise als Positionierbewegung verwendet.

note: type: Title ===
en: Rapid Velocity Rate
de: Eilgangs-Geschwindigkeitsrate

note: type: Plain text
en: The MAX_VELOCITY setting in the INI file [TRAJ] section defines the maximumrapid traverse rate. The maximum rapid traverse rate can be higher than the individual axes MAX_VELOCITY setting during a coordinated move. The maximum rapid traverse rate can be slower than the MAX_VELOCITY setting in the [TRAJ] section if an axis MAX_VELOCITY or trajectory constraints limit it.
de: Die Einstellung MAX_VELOCITY im Abschnitt [TRAJ] der INI-Datei definiert die maximale Eilganggeschwindigkeit. Die maximale Eilganggeschwindigkeit kann bei einer koordinierten Bewegung höher sein als die MAX_VELOCITY-Einstellung der einzelnen Achsen. Der maximale Eilgang kann langsamer sein als die MAX_VELOCITY-Einstellung in der Sektion [TRAJ], wenn eine Achsen-MAX_VELOCITY oder Trajektorienbeschränkungen ihn begrenzen.

note: type: Block title
en: G0 Example
de: G0 Beispiel

note: type: delimited block -
en: G90 (set absolute distance mode)
    G0 X1 Y-2.3 (Rapid linear move from current location to X1 Y-2.3)
    M2 (end program)
de: G90 (Einstellung des absoluten Abstandsmodus)
    G0 X1 Y-2.3 (Schnelle lineare Bewegung von der aktuellen Position zu X1 Y-2.3)
    M2 (Programm beenden)

note: type: Plain text
en: See <<gcode:g90-g91,G90>> & <<mcode:m2-m30,M2>> sections for more information.
de: Siehe <<gcode:g90-g91,G90>> & <<mcode:m2-m30,M2>> für weitere Informationen.

note: type: Plain text
en: If cutter compensation is active, the motion will differ from the above; see the <<sec:cutter-radius-compensation,Cutter Compensation>> section.
de: Wenn die Fräserkompensation aktiv ist, weicht die Bewegung von der obigen ab; siehe Abschnitt <<sec:cutter-radius-compensation,Fräser-Kompensation>>.

note: type: Plain text
en: If 'G53' is programmed on the same line, the motion will also differ; see the <<gcode:g53,G53>> section for more information.
de: Wenn 'G53' in der gleichen Zeile programmiert wird, unterscheidet sich auch die Bewegung; siehe den Abschnitt <<gcode:g53,G53>> für weitere Informationen.

note: type: Plain text
en: The path of a G0 rapid motion can be rounded at direction changes and depends on the <<sec:trajectory-control,trajectory control>> settings and maximum acceleration of the axes.
de: Die Bahn einer G0-Eilgangbewegung kann bei Richtungsänderungen abgerundet werden und hängt von den <<sec:trajectory-control,Trajektions-Steuerung>> (engl. trajectory control)-Einstellungen und der maximalen Beschleunigung der Achsen ab.

note: type: Plain text
en: It is an error if:
de: Es ist ein Fehler, wenn:

note: type: Plain text
en: An axis letter is without a real value.
de: Ein Achsenbuchstabe ohne reellen (Gleitkommazahl) Wert angegeben wird.

note: type: Plain text
en: An axis letter is used that is not configured.
de: Ein Achsenbuchstabe verwendet wird, der nicht konfiguriert ist.

note: type: Title ==
en: G1 Linear Move(((G1 Linear Move)))
de: G1 Lineare Bewegung(((G1 Lineare Bewegung)))

note: type: delimited block -
en: G1 axes
de: G1-Achsen

note: type: Plain text
en: For linear (straight line) motion at programmed <<sec:set-feed-rate,feed rate>> (for cutting or not), program 'G1 'axes'', where all the axis words are optional. The 'G1' is optional if the current motion mode is 'G1'. This will produce coordinated motion to the destination point at the current feed rate (or slower).
de: Für eine lineare (geradlinige) Bewegung mit der programmierten <<Sek:Vorschub-Sollwert,Vorschubgeschwindigkeit>> (zum Schneiden oder nicht), programmieren Sie 'G1 'Achsen'', wobei alle Achsenwörter optional sind. Das 'G1' ist optional, wenn der aktuelle Bewegungsmodus 'G1' ist. Dies führt zu einer koordinierten Bewegung zum Zielpunkt mit der aktuellen Vorschubgeschwindigkeit (oder langsamer).

note: type: Block title
en: G1 Example
de: G1 Beispiel

note: type: delimited block -
en: G90 (set absolute distance mode)
    G1 X1.2 Y-3 F10 (linear move at a feed rate of 10 from current position to X1.2 Y-3)
    Z-2.3 (linear move at same feed rate from current position to Z-2.3)
    Z1 F25 (linear move at a feed rate of 25 from current position to Z1)
    M2 (end program)
de: G90 (absoluter Abstandsmodus einstellen)
    G1 X1.2 Y-3 F10 (lineare Bewegung mit einem Vorschub von 10 von der aktuellen Position nach X1.2 Y-3)
    Z-2.3 (lineare Bewegung mit gleichem Vorschub von der aktuellen Position nach Z-2.3)
    Z1 F25 (lineare Bewegung mit einem Vorschub von 25 von der aktuellen Position nach Z1)
    M2 (Programm beenden)

note: type: Plain text
en: See <<gcode:g90-g91,G90>> & <<sec:set-feed-rate,F>> & <<mcode:m2-m30,M2>> sections for more information.
de: Siehe die Abschnitte <<gcode:g90-g91,G90>> & <<sec:set-feed-rate,F>> & <<mcode:m2-m30,M2>> für weitere Informationen.

note: type: Plain text
en: No feed rate has been set.
de: Es wurde keine Vorschubgeschwindigkeit eingestellt.

note: type: Plain text
en: An axis letter is used that is not configured
de: Ein Achsenbuchstabe verwendet wird, der nicht konfiguriert ist.

note: type: Title ==
en: G2, G3 Arc Move(((G2, G3 Arc Move)))
de: G2, G3 Bogenbewegung(((G2, G3 Bogenbewegung)))

note: type: delimited block -
en: G2 or G3 axes offsets (center format)
    G2 or G3 axes R- (radius format)
    G2 or G3 offsets|R- <P-> (full circles)
de: G2 oder G3 Achsen Offsets (Zentrum-Format)
    G2 oder G3 Achsen R- (Radius-Format)
    G2 oder G3 Offsets|R- <P-> (Vollkreise)

note: type: Plain text
en: A circular or helical arc is specified using either 'G2' (clockwise arc) or 'G3' (counterclockwise arc) at the current <<sec:set-feed-rate,feed rate>>. The direction (CW, CCW) is as viewed from the positive end of the axis about which the circular motion occurs.
de: Ein kreisförmiger oder spiralförmiger ("helikaler") Bogen wird entweder mit 'G2' (Bogen im Uhrzeigersinn) oder 'G3' (Bogen gegen den Uhrzeigersinn) mit dem aktuellen <<sec:set-feed-rate,Vorschub>> angegeben. Die Richtung (im oder gegen den Uhrzeigersinn, engl. kurz CW oder CCW) ist vom positiven Ende der Achse aus gesehen, um welche die Kreisbewegung erfolgt.

note: type: Plain text
en: The axis of the circle or helix must be parallel to the X, Y, or Z axis of the machine coordinate system.  The axis (or, equivalently, the plane perpendicular to the axis) is selected with 'G17' (Z-axis, XY-plane), 'G18' (Y-axis, XZ-plane), or 'G19' (X-axis, YZ-plane).  Planes '17.1', '18.1', and '19.1' are not currently supported.  If the arc is circular, it lies in a plane parallel to the selected plane.
de: Die Achse des Kreises oder der Spirale/Helix muss parallel zur X-, Y- oder Z-Achse des Maschinenkoordinatensystems liegen.  Die Achse (bzw. die Ebene senkrecht zur Achse) wird mit 'G17' (Z-Achse, XY-Ebene), 'G18' (Y-Achse, XZ-Ebene) oder 'G19' (X-Achse, YZ-Ebene) ausgewählt.  Die Ebenen '17.1', '18.1' und '19.1' werden derzeit nicht unterstützt.  Wenn der Bogen kreisförmig ist, liegt er in einer Ebene parallel zur ausgewählten Ebene.

note: type: Plain text
en: To program a helix, include the axis word perpendicular to the arc plane, for example, if in the 'G17' plane, include a 'Z' word. This will cause the 'Z' axis to move to the programmed value during the circular 'XY' motion.
de: Um eine Helix zu programmieren, fügen Sie das Achsenwort senkrecht zur Bogenebene ein, z.B. wenn Sie in der Ebene 'G17' sind, fügen Sie ein 'Z'-Wort ein. Dies bewirkt, dass sich die Z-Achse während der kreisförmigen XY-Bewegung auf den programmierten Wert bewegt.

note: type: Plain text
en: To program an arc that gives more than one full turn, use the 'P' word specifying the number of full turns plus the programmed arc. The 'P' word must be an integer. If 'P' is unspecified, the behavior is as if 'P1' was given that is, only one full or partial turn will result. For example, if a 180 degree arc is programmed with a P2, the resulting motion will be 1 1/2 rotations. For each P increment above 1 an extra full circle is added to the programmed arc. Multi turn helical arcs are supported and give motion useful for milling holes or threads.
de: Um einen Bogen zu programmieren, der mehr als eine volle Umdrehung ergibt, verwenden Sie das Wort "P", das die Anzahl der vollen Umdrehungen plus des programmierten Bogens angibt. Das 'P'-Wort muss eine ganze Zahl sein. Wird 'P' nicht angegeben, verhält es sich so, als ob 'P1' eingegeben wurde, d.h. es wird nur eine volle oder teilweise Umdrehung ausgeführt. Wird z. B. ein Bogen von 180 Grad mit P2 programmiert, beträgt die resultierende Bewegung 1 1/2 Umdrehungen. Für jedes P-Inkrement über 1 wird dem programmierten Bogen ein zusätzlicher Vollkreis hinzugefügt. Spiralförmige/helikale Bewegungen mit mehreren Umdrehungen werden unterstützt und ermöglichen Bewegungen, die zum Fräsen von Löchern oder Gewinden nützlich sind.

note: type: Plain text
en: If the pitch of the helix is very small (less than the <<sub:programming-the-planner,naive CAM tolerance>>) then the helix might be converted into a straight line.  https://github.com/LinuxCNC/linuxcnc/issues/222[Bug #222]
de: Wenn die Steigung der Helix sehr klein ist (kleiner als die <<sub:programming-the-planner,naive CAM tolerance>>), wird die Helix möglicherweise in eine gerade Linie umgewandelt. https://github.com/LinuxCNC/linuxcnc/issues/222[Bug #222]

note: type: Plain text
en: If a line of code makes an arc and includes rotary axis motion, the rotary axes turn at a constant rate so that the rotary motion starts and finishes when the XYZ motion starts and finishes.  Lines of this sort are hardly ever programmed.
de: Wenn eine Codezeile einen Bogen macht und eine Drehachsenbewegung enthält, drehen sich die Drehachsen mit einer konstanten Geschwindigkeit, so dass die Drehbewegung beginnt und endet, wenn die XYZ-Bewegung beginnt und endet.  Zeilen dieser Art werden fast nie programmiert.

note: type: Plain text
en: The arc center is absolute or relative as set by <<gcode:g90.1-g91.1,G90.1 or G91.1>> respectively.
de: Der Bogenmittelpunkt ist absolut oder relativ, wie mit <<gcode:g90.1-g91.1,G90.1 oder G91.1>> festgelegt.

note: type: Plain text
en: Two formats are allowed for specifying an arc: Center Format and Radius Format.
de: Für die Angabe eines Bogens sind zwei Formate zulässig: Zentrumsformat und Radiusformat.

note: type: Plain text
en: The P word is not an integer.
de: Das P-Wort ist keine ganze Zahl.

note: type: Title ===
en: Center Format Arcs
de: Bögen durch ihr Zentrum beschrieben

note: type: Plain text
en: Center format arcs are more accurate than radius format arcs and are the preferred format to use.
de: Bögen mit bekannter Mitte sind genauer als Bögen im Radiusformat und werden daher bevorzugt verwendet.

note: type: Plain text
en: The end point of the arc along with the offset to the center of the arc from the current location are used to program arcs that are less than a full circle. It is OK if the end point of the arc is the same as the current location.
de: Der Endpunkt des Bogens und der Abstand zum Mittelpunkt des Bogens von der aktuellen Position werden verwendet, um Bögen zu programmieren, die weniger als ein Vollkreis sind. Es ist in Ordnung, wenn der Endpunkt des Bogens mit der aktuellen Position identisch ist.

note: type: Plain text
en: The offset to the center of the arc from the current location and optionally the number of turns are used to program full circles.
de: Zur Programmierung von Vollkreisen werden der Abstand zum Mittelpunkt des Bogens von der aktuellen Position und optional die Anzahl der Wiederholungen verwendet.

note: type: Plain text
en: When programming arcs an error due to rounding can result from using a precision of less than 4 decimal places (0.0000) for inch and less than 3 decimal places (0.000) for millimeters.
de: Bei der Programmierung von Bögen kann es zu Rundungsfehlern kommen, wenn eine Genauigkeit von weniger als 4 Dezimalstellen (0.0000) bei Zoll und weniger als 3 Dezimalstellen (0.000) bei Millimetern verwendet wird. Es wird ein Dezimalpunkt erwartet.

note: type: Block title
en: Incremental Arc Distance Mode
de: Inkrementeller Bogenabstands-Modus (engl. Incremental Arc Distance Mode)

note: type: Plain text
en: Arc center offsets are a relative distance from the start location of the arc.  Incremental Arc Distance Mode is default.
de: Der Bogenmittelpunktsabstand ist ein relativer Abstand von der Startposition des Bogens.  Standardmäßig ist der Modus Inkrementelle Bogenentfernung (engl. incremental arc distance) eingestellt.

note: type: Plain text
en: One or more axis words and one or more offsets must be programmed for an arc that is less than 360 degrees.
de: Für einen Bogen, der weniger als 360 Grad beträgt, müssen ein oder mehrere Achsenwörter und ein oder mehrere Offsets programmiert werden.

note: type: Plain text
en: No axis words and one or more offsets must be programmed for full circles.  The 'P' word defaults to 1 and is optional.
de: Für Vollkreise müssen keine Achsenwörter und ein oder mehrere Offsets programmiert werden.  Das 'P'-Wort ist standardmäßig auf 1 eingestellt und ist optional.

note: type: Plain text
en: For more information on 'Incremental Arc Distance Mode see the <<gcode:g90.1-g91.1,G91.1>> section.
de: Weitere Informationen zum Modus "Inkrementeller Bogenabstand" finden Sie im Abschnitt <<gcode:g90.1-g91.1,G91.1>>.

note: type: Block title
en: Absolute Arc Distance Mode
de: Absoluter Bogenabstands-Modus

note: type: Plain text
en: Arc center offsets are the absolute distance from the current 0 position of the axis.
de: Bogenmittelpunktsverschiebungen sind der absolute Abstand von der aktuellen 0-Position der Achse.

note: type: Plain text
en: One or more axis words and 'both' offsets must be programmed for arcs less than 360 degrees.
de: Für Bögen unter 360 Grad müssen ein oder mehrere Achsenwörter und 'beide' Offsets programmiert werden.

note: type: Plain text
en: No axis words and both offsets must be programmed for full circles.  The 'P' word defaults to 1 and is optional.
de: Für Vollkreise müssen keine Achsenwörter und ein oder mehrere Offsets programmiert werden.  Das 'P'-Wort ist standardmäßig auf 1 eingestellt und ist optional.

note: type: Plain text
en: For more information on 'Absolute Arc Distance Mode see the <<gcode:g90.1-g91.1,G90.1>> section.
de: Weitere Informationen zum Modus 'Absoluter Bogenabstand' finden Sie im Abschnitt <<gcode:g90.1-g91.1,G90.1>>.

note: type: Block title
en: XY-plane (G17)
de: XY-Ebene (G17)

note: type: Plain text
en: 'Z' - helix
de: 'Z' - Helix

note: type: Plain text
en: 'P' - number of turns
de: 'P' - Anzahl der Umdrehungen

note: type: Block title
en: XZ-plane (G18)
de: XZ-Ebene (G18)

note: type: Plain text
en: 'Y' - helix
de: 'Y' - Helix

note: type: Plain text
en: 'K' - Z offset
de: 'K' - Z-Offset

note: type: Block title
en: YZ-plane (G19)
de: YZ-Ebene (G19)

note: type: Plain text
en: 'X' - helix
de: 'X' - Helix

note: type: Plain text
en: No feed rate is set with the <<sec:set-feed-rate,F>> word.
de: Mit dem Wort <<sec:set-feed-rate,F>> wird keine Vorschubgeschwindigkeit eingestellt.

note: type: Plain text
en: No offsets are programmed.
de: Es werden keine Offsets programmiert.

note: type: Plain text
en: When the arc is projected on the selected plane, the distance from the current point to the center differs from the distance from the end point to the center by more than (.05 inch/.5 mm)  OR ((.0005 inch/.005mm) AND .1% of radius).
de: Wenn der Bogen auf die ausgewählte Ebene projiziert wird, weicht der Abstand zwischen dem aktuellen Punkt und dem Mittelpunkt um mehr als (.05 inch/.5 mm) ODER ((.0005 inch/.005mm) AND .1% des Radius) von dem Abstand zwischen dem Endpunkt und dem Mittelpunkt ab.

note: type: Plain text
en: Deciphering the Error message 'Radius to end of arc differs from radius to start:'
de: Entschlüsselung der Fehlermeldung 'Radius am Ende des Bogens unterscheidet sich vom Radius am Anfang:'

note: type: Plain text
en: 'start' - the current position
de: 'start' - die aktuelle Position

note: type: Plain text
en: 'center' - the center position as calculated using the i, j, or k words
de: 'center' - die Mittelposition, wie sie unter Verwendung der Wörter i, j oder k berechnet wird

note: type: Plain text
en: 'end' - the programmed end point
de: 'end' - der programmierte Endpunkt

note: type: Plain text
en: 'r1' - radius from the start position to the center
de: 'r1' - Radius von der Startposition zum Zentrum

note: type: Plain text
en: 'r2' - radius from the end position to the center
de: 'r2' - Radius von der Endposition zur Mitte

note: type: Title ===
en: Center Format Examples
de: Beispiele für Center-Formate

note: type: Plain text
en: Calculating arcs by hand can be difficult at times. One option is to draw the arc with a CAD program to get the coordinates and offsets.  Keep in mind the tolerance mentioned above, you may have to change the precision of your CAD program to get the desired results. Another option is to calculate the coordinates and offset using formulas. As you can see in the following figures a triangle can be formed from the current position the end position and the arc center.
de: Das Berechnen von Bögen von Hand kann manchmal schwierig sein. Eine Möglichkeit besteht darin, den Bogen mit einem CAD-Programm zu zeichnen, um die Koordinaten und Offsets zu erhalten.  Denken Sie an die oben erwähnte Toleranz, Sie müssen möglicherweise die Präzision Ihres CAD-Programms ändern, um die gewünschten Ergebnisse zu erzielen. Eine weitere Möglichkeit besteht darin, die Koordinaten und den Versatz mithilfe von Formeln zu berechnen. Wie Sie in den folgenden Abbildungen sehen können, kann aus der aktuellen Position, der Endposition und dem Bogenmittelpunkt ein Dreieck gebildet werden.

note: type: Plain text
en: In the following figure you can see the start position is X0 Y0, the end position is X1 Y1. The arc center position is at X1 Y0. This gives us an offset from the start position of 1 in the X axis and 0 in the Y axis. In this case only an I offset is needed.
de: In der folgenden Abbildung sehen Sie, dass die Startposition X0 Y0 und die Endposition X1 Y1 ist. Der Mittelpunkt des Bogens befindet sich bei X1 Y0. Damit ergibt sich ein Offset von der Startposition von 1 in der X-Achse und 0 in der Y-Achse. In diesem Fall ist nur ein I-Offset erforderlich.

note: type: Block title
en: G2 Example Line
de: G2-Beispielzeile

note: type: delimited block -
en: G0 X0 Y0
    G2 X1 Y1 I1 F10 (clockwise arc in the XY plane)
de: G0 X0 Y0
    G2 X1 Y1 I1 F10 (Bogen im Uhrzeigersinn in der XY-Ebene)

note: type: Positional ($1) AttributeList argument for macro 'image'
en: G2 Example
de: G2-Beispiel

note: type: Plain text
en: In the next example we see the difference between the offsets for Y if we are doing a G2 or a G3 move. For the G2 move the start position is X0 Y0, for the G3 move it is X0 Y1. The arc center is at X1 Y0.5 for both moves. The G2 move the J offset is 0.5 and the G3 move the J offset is -0.5.
de: Im nächsten Beispiel sehen wir den Unterschied zwischen den Offsets für Y, wenn wir eine G2 oder eine G3 Bewegung ausführen. Bei der G2-Bewegung ist die Startposition X0 Y0, bei der G3-Bewegung ist sie X0 Y1. Der Mittelpunkt des Bogens liegt für beide Bewegungen bei X1 Y0,5. Bei der G2-Bewegung beträgt der J-Versatz 0,5 und bei der G3-Bewegung -0,5.

note: type: Block title
en: G2-G3 Example Line
de: G2-G3 Beispielzeile

note: type: delimited block -
en: G0 X0 Y0
    G2 X0 Y1 I1 J0.5 F25 (clockwise arc in the XY plane)
    G3 X0 Y0 I1 J-0.5 F25 (counterclockwise arc in the XY plane)
de: G0 X0 Y0
    G2 X0 Y1 I1 J0.5 F25 (Bogen im Uhrzeigersinn in der XY-Ebene)
    G3 X0 Y0 I1 J-0.5 F25 (Bogen im Gegenuhrzeigersinn in der XY-Ebene)

note: type: Positional ($1) AttributeList argument for macro 'image'
en: G2-G3 Example
de: G2-G3 Beispiel

note: type: Plain text
en: In the next example we show how the arc can make a helix in the Z axis by adding the Z word.
de: Im nächsten Beispiel zeigen wir, wie der Bogen eine Helix in der Z-Achse bilden kann, indem wir das Z-Wort hinzufügen.

note: type: Block title
en: G2 Example Helix
de: G2 Beispiel Helix

note: type: delimited block -
en: G0 X0 Y0 Z0
    G17 G2 X10 Y16 I3 J4 Z-1 (helix arc with Z added)
de: G0 X0 Y0 Z0
    G17 G2 X10 Y16 I3 J4 Z-1 (Helixbogen mit Z hinzugefügt)

note: type: Plain text
en: In the next example we show how to make more than one turn using the P word.
de: Im nächsten Beispiel zeigen wir, wie man mit dem Wort P mehr als einen Zug machen kann.

note: type: Block title
en: P word Example
de: P-Wort-Beispiel

note: type: Plain text
en: In the center format, the radius of the arc is not specified, but it may be found easily as the distance from the center of the circle to either the current point or the end point of the arc.
de: Im Mittelpunktsformat wird der Radius des Bogens nicht angegeben, aber er kann leicht als Abstand vom Mittelpunkt des Kreises zum aktuellen Punkt oder zum Endpunkt des Bogens ermittelt werden.

note: FIXME Complete circles and helicoids doc === Complete Circles and Helicoids ---- [G2|G3] I- J- K- To make a full 360 degree circle from the current position, program a single I, J or K offset from the current position for G2/G3. FIXME Better explain I, J, K offsets for full circles To program a 360 
en: Radius Format Arcs
de: Bögen im Radiusformat

note: type: delimited block -
en: G2 or G3 axes R- <P->
de: G2 oder G3 Achsen R- <P->

note: type: Plain text
en: 'R' - radius from current position
de: 'R' - Radius von der aktuellen Position

note: type: Plain text
en: It is not good practice to program radius format arcs that are nearly full circles or nearly semicircles because a small change in the location of the end point will produce a much larger change in the location of the center of the circle (and, hence, the middle of the arc). The magnification effect is large enough that rounding error in a number can produce out-of-tolerance cuts. For instance, a 1% displacement of the endpoint of a 180 degree arc produced a 7% displacement of the point 90 degrees along the arc. Nearly full circles are even worse. Other size arcs (in the range tiny to 165 degrees or 195 to 345 degrees) are OK.
de: Es ist nicht ratsam, Radiusformatbögen zu programmieren, die fast Vollkreise oder fast Halbkreise sind, da eine kleine Änderung der Position des Endpunkts eine viel größere Änderung der Position des Kreismittelpunkts (und damit der Mitte des Bogens) bewirkt. Der Vergrößerungseffekt ist so groß, dass Rundungsfehler in einer Zahl zu Schnitten führen können, die außerhalb der Toleranzen liegen. So führt beispielsweise eine Verschiebung des Endpunkts eines 180-Grad-Bogens um 1 % zu einer Verschiebung des Punkts um 90 Grad entlang des Bogens um 7 %. Nahezu vollständige Kreise sind noch schlimmer. Bögen anderer Größe (im Bereich von winzig bis 165 Grad oder 195 bis 345 Grad) sind in Ordnung.

note: type: Plain text
en: In the radius format, the coordinates of the end point of the arc in the selected plane are specified along with the radius of the arc.  Program 'G2' 'axes' 'R-' (or use 'G3' instead of 'G2' ). R is the radius. The axis words are all optional except that at least one of the two words for the axes in the selected plane must be used. The R number is the radius. A positive radius indicates that the arc turns through less than 180 degrees, while a negative radius indicates a turn of more than 180 degrees. If the arc is helical, the value of the end point of the arc on the coordinate axis parallel to the axis of the helix is also specified.
de: Im Radiusformat werden die Koordinaten des Endpunktes des Bogens in der ausgewählten Ebene zusammen mit dem Radius des Bogens angegeben.  Programm 'G2' 'Achsen' 'R-' (oder verwenden Sie 'G3' anstelle von 'G2' ). R ist der Radius. Die Achsenwörter sind alle optional, außer dass mindestens eines der beiden Wörter für die Achsen in der ausgewählten Ebene verwendet werden muss. Die Zahl R ist der Radius. Ein positiver Radius bedeutet, dass der Bogen um weniger als 180 Grad gedreht wird, während ein negativer Radius eine Drehung von mehr als 180 Grad bedeutet. Wenn der Bogen schraubenförmig ist, wird auch der Wert des Endpunkts des Bogens auf der Koordinatenachse parallel zur Achse der Schraubenlinie angegeben.

note: type: Plain text
en: both of the axis words for the axes of the selected plane are omitted
de: die beiden Achsenwörter für die Achsen der ausgewählten Ebene werden weggelassen

note: type: Plain text
en: the end point of the arc is the same as the current point.
de: der Endpunkt des Bogens ist derselbe wie der aktuelle Punkt.

note: type: delimited block -
en: G17 G2 X10 Y15 R20 Z5 (radius format with arc)
de: G17 G2 X10 Y15 R20 Z5 (Radiusformat mit Bogen)

note: type: Plain text
en: The above example makes a clockwise (as viewed from the positive Z-axis)  circular or helical arc whose axis is parallel to the Z-axis, ending where X=10, Y=15, and Z=5, with a radius of 20. If the starting value of Z is 5, this is an arc of a circle parallel to the XY-plane; otherwise it is a helical arc.
de: Das obige Beispiel ergibt einen (von der positiven Z-Achse aus gesehen) im Uhrzeigersinn verlaufenden Kreis- oder Helix-/Spiralbogen, dessen Achse parallel zur Z-Achse verläuft und an den Stellen X=10, Y=15 und Z=5 endet, mit einem Radius von 20. Wenn der Startwert von Z gleich 5 ist, handelt es sich um einen Kreisbogen parallel zur XY-Ebene; andernfalls handelt es sich um einen Helixbogen.

note: type: Title ==
en: G4 Dwell(((G4 Dwell)))
de: G4 Verweilzeit (engl. Dwell)(((G4 Verweilzeit)))

note: type: Plain text
en: 'P' - seconds to dwell (floating point)
de: 'P' - Sekunden zum Verweilen (Gleitkomma)

note: type: Plain text
en: The P number is the time in seconds that all axes will remain unmoving.  The P number is a floating point number so fractions of a second may be used.  G4 does not affect spindle, coolant and any I/O.
de: Die P-Zahl ist die Zeit in Sekunden, die alle Achsen unbewegt bleiben.  Die P-Zahl ist eine Fließkommazahl, so dass auch Sekundenbruchteile verwendet werden können.  G4 hat keinen Einfluss auf Spindel, Kühlmittel und E/A.

note: type: Block title
en: G4 Example Line
de: G4 Beispielzeile

note: type: delimited block -
en: G4 P0.5 (wait for 0.5 seconds before proceeding)
de: G4 P0.5 (wartet 0,5 Sekunden bevor Bewegungen fortfahren)

note: type: Plain text
en: the P number is negative or not specified.
de: die P-Nummer ist negativ oder nicht angegeben.

note: type: Title ==
en: G5 Cubic Spline(((G5 Cubic spline)))
de: G5 Kubischer Spline(((G5 Kubischer Spline)))

note: type: Plain text
en: 'I' - X incremental offset from start point to first control point
de: 'I' - X inkrementeller Offset vom Startpunkt zum ersten Kontrollpunkt

note: type: Plain text
en: 'J' - Y incremental offset from start point to first control point
de: 'J' - Y inkrementeller Versatz vom Startpunkt zum ersten Kontrollpunkt

note: type: Plain text
en: 'P' - X incremental offset from end point to second control point
de: 'P' - X inkrementeller Offset vom Endpunkt zum zweiten Kontrollpunkt

note: type: Plain text
en: 'Q' - Y incremental offset from end point to second control point
de: 'Q' - Y inkrementeller Offset vom Endpunkt zum zweiten Kontrollpunkt

note: type: Plain text
en: G5 creates a cubic B-spline in the XY plane with the X and Y axes only.  P and Q must both be specified for every G5 command.
de: G5 erstellt einen kubischen B-Spline in der XY-Ebene nur mit den Achsen X und Y.  P und Q müssen für jeden G5-Befehl angegeben werden.

note: type: Plain text
en: For the first G5 command in a series of G5 commands, I and J must both be specified.  For subsequent G5 commands, either both I and J must be specified, or neither.  If I and J are unspecified, the starting direction of this cubic will automatically match the ending direction of the previous cubic (as if I and J are the negation of the previous P and Q).
de: Für den ersten G5-Befehl in einer Reihe von G5-Befehlen müssen sowohl I als auch J angegeben werden.  Für nachfolgende G5-Befehle müssen entweder beide I und J angegeben werden oder keiner von beiden.  Wenn I und J nicht angegeben sind, entspricht die Anfangsrichtung dieses Kubiks automatisch der Endrichtung des vorherigen Kubiks (als ob I und J die Negation der vorherigen P und Q wären).

note: type: Plain text
en: For example, to program a curvy N shape:
de: Zum Beispiel, um eine geschwungene N-Form zu programmieren:

note: type: Block title
en: G5 Sample initial cubic spline
de: G5 Beispiel für einen kubischen Spline

note: type: Plain text
en: A second curvy N that attaches smoothly to this one can now be made without specifying I and J:
de: Ein zweites gekrümmtes N, das sich nahtlos an dieses anschließt, kann nun ohne Angabe von I und J erstellt werden:

note: type: Block title
en: G5 Sample subsequent cubic spline
de: G5 Beispiel eines nachfolgenden kubischen Splines

note: type: Plain text
en: P and Q are not both specified.
de: P und Q sind nicht beide angegeben.

note: type: Plain text
en: Just one of I or J are specified.
de: Es wird nur eines von I oder J angegeben.

note: type: Plain text
en: I or J are unspecified in the first of a series of G5 commands.
de: I oder J sind im ersten einer Reihe von G5-Befehlen nicht angegeben.

note: type: Plain text
en: An axis other than X or Y is specified.
de: Eine andere Achse als X oder Y wird angegeben.

note: type: Plain text
en: The active plane is not G17.
de: Die aktive Ebene ist nicht G17.

note: type: Title ==
en: G5.1 Quadratic Spline(((G5.1 Quadratic spline)))
de: G5.1 Quadratischer Spline(((G5.1 Quadratischer Spline)))

note: type: Plain text
en: 'I' - X incremental offset from start point to control point
de: I" - X inkrementeller Offset vom Startpunkt zum Kontrollpunkt

note: type: Plain text
en: 'J' - Y incremental offset from start point to control point
de: 'J' - Inkrementeller Y-Offset vom Startpunkt zum Kontrollpunkt

note: type: Plain text
en: G5.1 creates a quadratic B-spline in the XY plane with the X and Y axis only.  Not specifying I or J gives zero offset for the unspecified axis, so one or both must be given.
de: G5.1 erzeugt einen quadratischen B-Spline in der XY-Ebene nur mit der X- und Y-Achse.  Wenn I oder J nicht angegeben werden, ergibt sich für die nicht angegebene Achse ein Null-Offset, so dass eine oder beide angegeben werden müssen.

note: type: Plain text
en: For example, to program a parabola, through the origin, from X-2 Y4 to X2 Y4:
de: Um zum Beispiel eine Parabel durch den Ursprung von X-2 Y4 nach X2 Y4 zu programmieren:

note: type: Block title
en: G5.1 Sample quadratic spline
de: G5.1 Beispiel eines quadratischen Splines

note: type: Plain text
en: both I and J offset are unspecified or zero
de: sowohl der I- als auch der J-Offset sind nicht spezifiziert oder Null

note: type: Plain text
en: An axis other than X or Y is specified
de: Eine andere Achse als X oder Y wird angegeben.

note: type: Plain text
en: The active plane is not G17
de: Die aktive Ebene ist nicht G17.

note: type: Plain text
en: G5.2, G5.3 is experimental and not fully tested.
de: G5.2, G5.3 ist experimentell und nicht vollständig getestet.

note: type: Plain text
en: G5.2 is for opening the data block defining a NURBS and G5.3 for closing the data block. In the lines between these two codes the curve control points are defined with both their related 'weights' (P) and the parameter (L) which determines the order of the curve.
de: G5.2 dient zum Öffnen des Datenblocks, der ein NURBS definiert, und G5.3 zum Schließen des Datenblocks. In den Zeilen zwischen diesen beiden Codes werden die Kurvenkontrollpunkte mit ihren zugehörigen "Gewichten" (P) und dem Parameter (L), der die Reihenfolge der Kurve bestimmt, definiert.

note: type: Plain text
en: The current coordinate, before the first G5.2 command, is always taken as the first NURBS control point.  To set the weight for this first control point, first program G5.2 P- without giving any X Y.
de: Die aktuelle Koordinate vor dem ersten G5.2-Befehl wird immer als erster NURBS-Kontrollpunkt verwendet.  Um das Gewicht für diesen ersten Kontrollpunkt festzulegen, programmieren Sie zunächst G5.2 P- ohne Angabe von X Y.

note: type: Plain text
en: The default weight if P is unspecified is 1.  The default order if L is unspecified is 3.
de: Ist P nicht angegeben, dann ist das Standardgewicht 1. Ist L nicht angegeben, dann ist die Standardreihenfolge 3.

note: type: Block title
en: G5.2 Example
de: G5.2 Beispiel

note: type: delimited block -
en: G0 X0 Y0 (rapid move)
    F10 (set feed rate)
    G5.2 P1 L3
         X0 Y1 P1
         X2 Y2 P1
         X2 Y0 P1
         X0 Y0 P2
    G5.3
    ; The rapid moves show the same path without the NURBS Block
    G0 X0 Y1
       X2 Y2
       X2 Y0
       X0 Y0
    M2
de: G0 X0 Y0 (Eilgang)
    F10 (Vorschubgeschwindigkeit einstellen)
    G5.2 P1 L3
         X0 Y1 P1
         X2 Y2 P1
         X2 Y0 P1
         X0 Y0 P2
    G5.3
    ; Die schnellen Bewegungen zeigen denselben Weg ohne den NURBS-Block
    G0 X0 Y1
       X2 Y2
       X2 Y0
       X0 Y0
    M2

note: type: Block title
en: Sample NURBS Output
de: Beispiel einer NURBS-Ausgabe

note: type: Plain text
en: image:images/nurbs01.png["Sample NURBS Output",align="center"]
de: image:images/nurbs01.png["Beispiel NURBS Ausgabe",align="center"]

note: type: Plain text
en: More information on NURBS can be found here:
de: Weitere Informationen über NURBS finden Sie hier:

note: type: Title ==
en: G7 Lathe Diameter Mode(((G7 Lathe Diameter Mode)))
de: G7-Drehdurchmesser-Modus(((G7-Drehdurchmesser-Modus)))

note: type: Plain text
en: Program G7 to enter the diameter mode for axis X on a lathe. When in the diameter mode the X axis moves on a lathe will be 1/2 the distance to the center of the lathe. For example X1 would move the cutter to 0.500" from the center of the lathe thus giving a 1" diameter part.
de: Programmieren Sie G7, um den Durchmessermodus für die Achse X auf einer Drehmaschine aufzurufen. Im Durchmessermodus entspricht die Bewegung der X-Achse auf einer Drehmaschine der Hälfte des Abstands zur Mitte der Drehmaschine. Zum Beispiel würde X1 den Fräser auf 0.500 Zoll von der Mitte der Drehmaschine bewegen, was einen Teil mit 1 Zoll Durchmesser ergibt.

note: type: Title ==
en: G8 Lathe Radius Mode(((G8 Lathe Radius Mode)))
de: G8-Drehradius-Modus(((G8-Drehradius-Modus)))

note: type: Plain text
en: Program G8 to enter the radius mode for axis X on a lathe. When in Radius mode the X axis moves on a lathe will be the distance from the center. Thus a cut at X1 would result in a part that is 2" in diameter.  G8 is default at power up.
de: Programmieren Sie G8, um den Radiusmodus für die Achse X auf einer Drehmaschine aufzurufen. Im Radiusmodus entspricht die Bewegung der X-Achse auf einer Drehmaschine dem Abstand von der Mitte. Ein Schnitt bei X1 würde also ein Teil mit einem Durchmesser von 2 Zoll ergeben.  G8 ist die Standardeinstellung beim Einschalten.

note: type: Title ==
en: G10 L0 Reload Tool Table Data(((G10 L0 Reload Tool Table Data)))
de: G10 L0 Werkzeugtabellendaten neu laden(((G10 L0 Werkzeugtabellendaten neu laden)))

note: type: Plain text
en: G10 L0 reload all tool table data.  Requires that there is no current tool loaded in spindle.
de: G10 L0 Alle Daten der Werkzeugtabelle neu laden.  Erfordert, dass kein aktuelles Werkzeug in der Spindel geladen ist.

note: type: Plain text
en: When using G10 L0, tool parameters (#5401-#5413) will be updated immediately and any altered tool diameters will be used for subsequent G41,42 cutter radius compensation commands. Existing G43 tool length compensation values will remain in effect until updated by new G43 commands.
de: Bei Verwendung von G10 L0 werden die Werkzeugparameter (#5401-#5413) sofort aktualisiert und alle geänderten Werkzeugdurchmesser werden für nachfolgende G41,42 Fräserradiuskompensationsbefehle verwendet. Bestehende G43-Werte für die Werkzeuglängenkorrektur bleiben so lange gültig, bis sie durch neue G43-Befehle aktualisiert werden.

note: type: Title ==
en: G10 L1 Set Tool Table(((G10 L1 Tool Table)))
de: G10 L1 Werkzeugtabelle einstellen(((G10 L1 Werkzeugtabelle)))

note: type: Plain text
en: 'P' - tool number
de: P" - Werkzeugnummer

note: type: Plain text
en: 'R' - radius of tool
de: R" - Radius des Werkzeugs

note: type: Plain text
en: 'I' - front angle (lathe)
de: 'I' - vorderer Winkel (Drehmaschine)

note: type: Plain text
en: 'J' - back angle (lathe)
de: 'J' – Rückenwinkel (Drehmaschine)

note: type: Plain text
en: 'Q' - orientation (lathe)
de: 'Q' - Ausrichtung (Drehmaschine)

note: type: Plain text
en: G10 L1 sets the tool table for the 'P' tool number to the values of the words.
de: G10 L1 setzt die Werkzeugtabelle für die Werkzeugnummer 'P' auf die Werte der Wörter.

note: type: Plain text
en: A valid G10 L1 rewrites and reloads the tool table for the specified tool.
de: Ein gültiges G10 L1 schreibt die Werkzeugtabelle für das angegebene Werkzeug neu und lädt sie neu.

note: type: Block title
en: G10 L1 Example Line
de: G10 L1 Beispielzeile

note: type: delimited block -
en: G10 L1 P1 Z1.5 (set tool 1 Z offset from the machine origin to 1.5)
    G10 L1 P2 R0.015 Q3 (lathe example setting tool 2 radius to 0.015 and orientation to 3)
de: G10 L1 P1 Z1.5 (Werkzeug 1 Z-Versatz vom Maschinenursprung auf 1.5 setzen)
    G10 L1 P2 R0.015 Q3 (Drehbankbeispiel, das den Radius von Werkzeug 2 auf 0.015 und die Orientierung auf 3 setzt)

note: type: Plain text
en: Cutter Compensation is on
de: Fräserkompensation ist aktiviert

note: type: Plain text
en: The P number is unspecified
de: Die P-Nummer ist nicht spezifiziert

note: type: Plain text
en: The P number is not a valid tool number from the tool table
de: Die P-Nummer ist keine gültige Werkzeugnummer aus der Werkzeugtabelle

note: type: Plain text
en: The P number is 0
de: Die P-Nummer ist 0

note: type: Plain text
en: For more information on cutter orientation used by the 'Q' word, see the <<sec:lathe-tool-orientation,Lathe Tool Orientation>> diagram.
de: Weitere Informationen über die Werkzeugausrichtung, die durch das 'Q'-Wort beschrieben wird, finden Sie im Diagramm <<sec:lathe-tool-orientation,Drehmaschinen Werkzeug-Ausrichtung>>.

note: type: Title ==
en: G10 L2 Set Coordinate System(((G10 L2 Coordinate System)))
de: G10 L2 Koordinatensystem setzen(((G10 L2 Koordinatensystem)))

note: type: delimited block -
en: G10 L2 P- <axes R->
de: G10 L2 P- <Achsen R->

note: type: Plain text
en: 'P' - coordinate system (0-9)
de: 'P' - Koordinatensystem (0-9)

note: type: Plain text
en: 'R' - rotation about the Z axis
de: 'R' - Rotation um die Z-Achse

note: type: Plain text
en: G10 L2 offsets the origin of the axes in the coordinate system specified to the value of the axis word. The offset is from the machine origin established during homing. The offset value will replace any current offsets in effect for the coordinate system specified. Axis words not used will not be changed.
de: G10 L2 verschiebt den Ursprung der Achsen im angegebenen Koordinatensystem auf den Wert des Achsenwortes. Der Versatz bezieht sich auf den während der Referenzfahrt ermittelten Maschinenursprung. Der Offset-Wert ersetzt alle aktuellen Offsets, die für das angegebene Koordinatensystem gelten. Nicht verwendete Achsenwörter werden nicht geändert.

note: type: Plain text
en: Program P0 to P9 to specify which coordinate system to change.
de: Programmieren Sie P0 bis P9, um das zu ändernde Koordinatensystem anzugeben.

note: type: Table
en: Coordinate System
de: Koordinatensystem

note: type: Table
en: P Value
de: P-Wert

note: type: Table
en: Active
de: Aktiv

note: type: Table
en: n/a
de: k.A.

note: type: Plain text
en: Optionally program R to indicate the rotation of the XY axis around the Z axis.  The direction of rotation is CCW as viewed from the positive end of the Z axis.
de: Optional können Sie R programmieren, um die Drehung der XY-Achse um die Z-Achse anzugeben.  Die Drehrichtung ist gegen den Uhrzeigersinn, vom positiven Ende der Z-Achse aus gesehen.

note: type: Plain text
en: All axis words are optional.
de: Alle Achsenwörter sind optional.

note: type: Plain text
en: Being in incremental distance mode (<<gcode:g90-g91,'G91'>>) has no effect on 'G10 L2'.
de: Der inkrementelle Entfernungsmodus (<<gcode:g90-g91,'G91'>>) hat keine Auswirkungen auf 'G10 L2'.

note: type: Plain text
en: Important Concepts:
de: Wichtige Konzepte:

note: type: Plain text
en: G10 L2 Pn does not change from the current coordinate system to the one specified by P, you have to use G54-59.3 to select a coordinate system.
de: G10 L2 Pn wechselt nicht vom aktuellen Koordinatensystem zu dem durch P angegebenen, Sie müssen mit G54-59.3 ein Koordinatensystem auswählen.

note: type: Plain text
en: When a rotation is in effect jogging an axis will only move that axis in a positive or negative direction and not along the rotated axis.
de: Wenn eine Drehung in Kraft ist, wird eine Achse nur in positiver oder negativer Richtung bewegt, nicht aber entlang der gedrehten Achse.

note: type: Plain text
en: If a 'G52' local offset or 'G92' origin offset was in effect before 'G10 L2', it will continue to be in effect afterwards.
de: Wenn ein 'G52' lokaler Offset oder ein 'G92'-offset zum Ursprung vor "G10 L2" in Kraft war, bleibt er auch danach in Kraft.

note: type: Plain text
en: When programming a coordinate system with R, any 'G52' or 'G92' will be applied *after* the rotation.
de: Bei der Programmierung eines Koordinatensystems mit R wird jedes 'G52' oder 'G92' *nach* der Drehung angewendet.

note: type: Plain text
en: The coordinate system whose origin is set by a 'G10' command may be active or inactive at the time the 'G10' is executed.  If it is currently active, the new coordinates take effect immediately.
de: Das Koordinatensystem, dessen Ursprung durch einen "G10"-Befehl gesetzt wird, kann zum Zeitpunkt der Ausführung des "G10"-Befehls aktiv oder inaktiv sein.  Wenn es gerade aktiv ist, werden die neuen Koordinaten sofort wirksam.

note: type: Plain text
en: The P number does not evaluate to an integer in the range 0 to 9.
de: Die P-Nummer ergibt keine ganze Zahl im Bereich von 0 bis 9.

note: type: Plain text
en: An axis is programmed that is not defined in the configuration.
de: Es wird eine Achse programmiert, die nicht in der Konfiguration definiert ist.

note: type: Block title
en: G10 L2 Example Line
de: G10 L2 Beispielzeile

note: type: Plain text
en: In the above example the origin of the first coordinate system (the one selected by 'G54') is set to be X=3.5 and Y=17.2.  Because only X and Y are specified, the origin point is only moved in X and Y; the other coordinates are not changed.
de: Im obigen Beispiel wird der Ursprung des ersten Koordinatensystems (das mit 'G54' ausgewählte) auf X=3,5 und Y=17,2 gesetzt.  Da nur X und Y angegeben sind, wird der Ursprungspunkt nur in X und Y verschoben; die anderen Koordinaten werden nicht verändert.

note: type: delimited block -
en: G10 L2 P1 X0 Y0 Z0 (clear offsets for X,Y & Z axes in coordinate system 1)
de: G10 L2 P1 X0 Y0 Z0 (Offsets für X-, Y- & Z-Achsen im Koordinatensystem 1 löschen)

note: type: Plain text
en: The above example sets the XYZ coordinates of the coordinate system 1 to the machine origin.
de: Im obigen Beispiel werden die XYZ-Koordinaten des Koordinatensystems 1 auf den Maschinenursprung gesetzt.

note: type: Plain text
en: The coordinate system is described in the <<cha:coordinate-system,Coordinate System>> section.
de: Das Koordinatensystem wird im Abschnitt <<cha:coordinate-system,Koordinatensystem>> beschrieben.

note: type: Title ==
en: G10 L10 Set Tool Table(((G10 L10 Set Tool Table)))
de: G10 L10 Bestimme Werkzeugtabelle(((G10 L10 Bestimme Werkzeugtabelle)))

note: type: Plain text
en: G10 L10 changes the tool table entry for tool P so that if the tool offset is reloaded, with the machine in its current position and with the current G5x and G52/G92 offsets active, the current coordinates for the given axes will become the given values. The axes that are not specified in the G10 L10 command will not be changed. This could be useful with a probe move as described in the <<gcode:g38,G38>> section.
de: G10 L10 ändert den Eintrag in der Werkzeugtabelle für das Werkzeug P so, dass die aktuellen Koordinaten für die angegebenen Achsen zu den angegebenen Werten werden, wenn die Werkzeugkorrektur neu geladen wird, während sich die Maschine in ihrer aktuellen Position befindet und die aktuellen G5x- und G52/G92-Korrekturen aktiv sind. Die Achsen, die nicht im Befehl G10 L10 angegeben sind, werden nicht geändert. Dies könnte bei einer Messtasterbewegung nützlich sein, wie im Abschnitt <gcode:g38,G38>> beschrieben.

note: type: Block title
en: G10 L10 Example
de: G10 L10 Beispiel

note: type: delimited block -
en: T1 M6 G43 (load tool 1 and tool length offsets)
    G10 L10 P1 Z1.5 (set the current position for Z to be 1.5)
    G43 (reload the tool length offsets from the changed tool table)
    M2 (end program)
de: T1 M6 G43 (Werkzeug 1 und Werkzeuglängenkorrekturen laden)
    G10 L10 P1 Z1.5 (setzt die aktuelle Position für Z auf 1.5)
    G43 (Nachladen der Werkzeuglängenkorrekturen aus der geänderten Werkzeugtabelle)
    M2 (Programm beenden)

note: type: Plain text
en: See <<sec:select-tool,T>> & <<mcode:m6,M6>>, and <<gcode:g43,G43>>/<<gcode:g43.1,G43.1>> sections for more information.
de: Weitere Informationen finden Sie in den Abschnitten <<sec:select-tool,T>> & <<mcode:m6,M6>>, und <<gcode:g43,G43>>/<<gcode:g43.1,G43.1>>.

note: type: Title ==
en: G10 L11 Set Tool Table(((G10 L11 Set Tool Table)))
de: G10 L11 Werkzeugtabelle einstellen(((G10 L11 Werkzeugtabelle einstellen)))

note: type: Plain text
en: G10 L11 is just like G10 L10 except that instead of setting the entry according to the current offsets, it is set so that the current coordinates would become the given value if the new tool offset is reloaded and the machine is placed in the G59.3 coordinate system without any G52/G92 offset active.
de: G10 L11 entspricht G10 L10 mit dem Unterschied, dass der Eintrag nicht nach den aktuellen Versätzen eingestellt wird, sondern so, dass die aktuellen Koordinaten zum angegebenen Wert werden, wenn der neue Werkzeugversatz neu geladen wird und die Maschine im G59.3-Koordinatensystem ohne aktiven G52/G92-Versatz platziert wird.

note: type: Plain text
en: This allows the user to set the G59.3 coordinate system according to a fixed point on the machine, and then use that fixture to measure tools without regard to other currently-active offsets.
de: Dadurch kann der Benutzer das G59.3-Koordinatensystem auf einen festen Punkt auf der Maschine einstellen und diese Vorrichtung dann zum Messen von Werkzeugen ohne Rücksicht auf andere derzeit aktive Versätze verwenden.

note: type: Title ==
en: G10 L20 Set Coordinate System(((G10 L20 Set Coordinate System)))
de: G10 L20 Koordinatensystem einstellen(((G10 L20 Koordinatensystem einstellen)))

note: type: Plain text
en: G10 L20 is similar to G10 L2 except that instead of setting the offset/entry to the given value, it is set to a calculated value that makes the current coordinates become the given value.
de: G10 L20 ist ähnlich wie G10 L2, mit dem Unterschied, dass der Offset/Eintrag nicht auf den angegebenen Wert gesetzt wird, sondern auf einen berechneten Wert, der die aktuellen Koordinaten zu dem angegebenen Wert macht.

note: type: Block title
en: G10 L20 Example Line
de: G10 L20 Beispiel Zeile

note: type: delimited block -
en: G10 L20 P1 X1.5 (set the X axis current location in coordinate system 1 to 1.5)
de: G10 L20 P1 X1.5 (setzt die aktuelle Position der X-Achse im Koordinatensystem 1 auf 1,5)

note: type: Title ==
en: G17 - G19.1 Plane Select(((G17 - G19.1 Plane Select)))
de: G17 - G19.1 Ebenenauswahl(((G17 - G19.1 Ebenenauswahl)))

note: type: Plain text
en: These codes set the current plane as follows:
de: Diese Codes stellen die aktuelle Ebene wie folgt ein:

note: type: Plain text
en: 'G17' - XY (default)
de: 'G17' - XY (Standard)

note: type: Plain text
en: The UV, WU and VW planes do not support arcs.
de: Die UV-, WU- und VW-Ebenen unterstützen keine Bögen.

note: type: Plain text
en: It is a good idea to include a plane selection in the preamble of each G-code file.
de: Es ist eine gute Idee, eine Ebenenauswahl in die Präambel jeder G-Code-Datei aufzunehmen.

note: type: Plain text
en: The effects of having a plane selected are discussed in section <<gcode:g2-g3,G2 G3 Arcs>> and section <<gcode:g80-g89,G81 G89>>.
de: Die Auswirkungen der Auswahl einer Ebene werden in den Abschnitten <<gcode:g2-g3,G2 G3 Bögen>> und <<gcode:g80-g89,G81 G89>> behandelt.

note: type: Title ==
en: G20, G21 Units(((G20 Units)))
de: G20, G21 Einheiten (engl. units)(((G20 Einheiten)))

note: type: Plain text
en: 'G20' - to use inches for length units.
de: 'G20' - um Zoll als Längeneinheit zu verwenden.

note: type: Plain text
en: 'G21' - to use millimeters for length units.
de: 'G21' - um Millimeter als Längeneinheiten zu verwenden.

note: type: Plain text
en: It is a good idea to include units in the preamble of each G-code file.
de: Es ist eine gute Idee, Einheiten in die Präambel jeder G-Code-Datei aufzunehmen.

note: type: Title ==
en: G28, G28.1 Go/Set Predefined Position(((G28 Go/Set Predefined Position)))
de: G28, G28.1 Gehe zu/Bestimme Vordefinierte Position(((G28 Go/Set Vordefinierte Position)))

note: type: Plain text
en: Only use G28 when your machine is homed to a repeatable position and the desired G28 position has been stored with G28.1.
de: Verwenden Sie G28 nur, wenn Ihre Maschine auf eine wiederholbare Position referenziert ist und die gewünschte G28-Position mit G28.1 gespeichert wurde.

note: type: Plain text
en: G28 uses the values stored in <<sub:numbered-parameters,parameters>> 5161-5169 as the X Y Z A B C U V W final point to move to. The parameter values are 'absolute' machine coordinates in the native machine 'units' as specified in the INI file. All axes defined in the INI file will be moved when a G28 is issued. If no positions are stored with G28.1 then all axes will go to the <<sec:machine-coordinate-system,machine origin>>.
de: G28 verwendet die in <sub:numbered-parameters,Parameter 5161-5169>> gespeicherten Werte als X Y Z A B C U V W Endpunkt zum Anfahren. Die Parameterwerte sind 'absolute' Maschinenkoordinaten in den maschineneigenen 'Einheiten' wie in der INI-Datei angegeben. Alle in der INI-Datei definierten Achsen werden bewegt, wenn ein G28 ausgegeben wird. Wenn keine Positionen mit G28.1 gespeichert werden, dann werden alle Achsen auf den <<sec:Maschinenkoordinatensystem,Maschinenursprung>> gehen.

note: type: Plain text
en: 'G28' - makes a <<gcode:g0,rapid move>> from the current position to the 'absolute' position of the values in parameters 5161-5166.
de: 'G28' - bewegt sich im 'gcode:g0,Schnellauf>> durch von der aktuellen Position zur 'absoluten' Position der Werte in den Parametern 5161-5166.

note: type: Plain text
en: 'G28 axes' - makes a rapid move to the position specified by 'axes' including any offsets, then will make a rapid move to the 'absolute' position of the values in parameters 5161-5166 for all 'axes' specified. Any 'axis' not specified will not move.
de: 'G28 Achsen' - bewegt sich im Schnellauf zu der durch 'Achsen' angegebenen Position, einschließlich aller Offsets, und dann weiter im Schnellauf zu der 'absoluten' Position der Werte in den Parametern 5161-5166 für solche 'Achsen', für die der G28-Aufruf Positionsparameter erhalten hat. Jede 'Achse', die durch G28 nicht beschrieben ist, wird nicht bewegt.

note: type: Plain text
en: 'G28.1' - stores the current 'absolute' position into parameters 5161-5166.
de: 'G28.1' - speichert die aktuelle 'absolute' Position in den Parametern 5161-5166.

note: type: Block title
en: G28 Example Line
de: G28 Beispielzeile

note: type: delimited block -
en: G28 Z2.5 (rapid to Z2.5 then to Z location specified in #5163)
de: G28 Z2.5 (schnell auf Z2.5 und dann auf die in #5163 angegebene Z-Position)

note: type: Plain text
en: It is an error if :
de: Es ist ein Fehler, wenn :

note: type: Plain text
en: Cutter Compensation is turned on
de: Fräserausgleich (engl. cutter compensation) aktiviert ist

note: type: Title ==
en: G30, G30.1 Go/Set Predefined Position(((G30 Go/Set Predefined Position)))
de: G30, G30.1 Gehe zu/Bestimme Vordefinierte Position(((G30 Go/Set Vordefinierte Position)))

note: type: Plain text
en: Only use G30 when your machine is homed to a repeatable position and the desired G30 position has been stored with G30.1.
de: Verwenden Sie G30 nur, wenn Ihre Maschine auf eine wiederholbare Position ausgerichtet ist und die gewünschte G30-Position mit G30.1 gespeichert wurde.

note: type: Plain text
en: G30 functions the same as G28 but uses the values stored in <<sub:numbered-parameters,parameters>> 5181-5189 as the X Y Z A B C U V W final point to move to. The parameter values are 'absolute' machine coordinates in the native machine 'units' as specified in the INI file.  All axes defined in the INI file will be moved when a G30 is issued. If no positions are stored with G30.1 then all axes will go to the <<sec:machine-coordinate-system,machine origin>>.
de: G30 funktioniert wie G28, verwendet aber die in <sub:numbered-parameters,Parameter 5181-5189>> gespeicherten Werte als X Y Z A B C U V W Endpunkt zum Anfahren. Die Parameterwerte sind 'absolute' Maschinenkoordinaten in den maschineneigenen 'Einheiten' wie in der INI-Datei angegeben.  Alle in der INI-Datei definierten Achsen werden bewegt, wenn ein G30 ausgegeben wird. Wenn keine Positionen mit G30.1 gespeichert werden, dann gehen alle Achsen zum <<sec:Maschinenkoordinatensystem,Maschinenursprung>>.

note: type: Plain text
en: G30 parameters will be used to move the tool when a M6 is programmed if TOOL_CHANGE_AT_G30=1 is in the [EMCIO] section of the INI file.
de: G30-Parameter werden verwendet, um das Werkzeug zu bewegen, wenn ein M6 programmiert wird, sofern TOOL_CHANGE_AT_G30=1 in der [EMCIO]-Sektion der INI-Datei steht.

note: type: Plain text
en: 'G30' - makes a <<gcode:g0,rapid move>> from the current position to the 'absolute' position of the values in parameters 5181-5189.
de: 'G30' - führt einen 'gcode:g0,Eilgang>> von der aktuellen Position zur 'absoluten' Position der Werte in den Parametern 5181-5189 durch.

note: type: Plain text
en: 'G30 axes' - makes a rapid move to the position specified by 'axes' including any offsets, then will make a rapid move to the 'absolute' position of the values in parameters 5181-5189 for all 'axes' specified. Any 'axis' not specified will not move.
de: 'G30 Achsen' - führt eine Eilbewegung zu der durch 'Achsen' angegebenen Position aus, einschließlich aller Offsets, und führt dann eine Eilbewegung zu der 'absoluten' Position der Werte in den Parametern 5181-5189 für alle 'Achsen' angegebenen aus. Jede 'Achse', die nicht angegeben ist, wird nicht bewegt.

note: type: Plain text
en: 'G30.1' - stores the current absolute position into parameters 5181-5186.
de: 'G30.1' - speichert die aktuelle absolute Position in den Parametern 5181-5186.

note: type: Block title
en: G30 Example Line
de: G30 Beispielzeile

note: type: delimited block -
en: G30 Z2.5 (rapid to Z2.5 then to the Z location specified in #5i83)
de: G30 Z2.5 (schnell zu Z2.5 und dann zu der in #5i83 angegebenen Z-Position)

note: type: Title ==
en: G33 Spindle Synchronized Motion(((G33 Spindle Synchronized Motion)))
de: G33 Spindelsynchronisierte Bewegung(((G33 Spindelsynchronisierte Bewegung)))

note: type: Plain text
en: 'K' - distance per revolution
de: 'K' - Weg pro Umdrehung

note: type: Plain text
en: For spindle-synchronized motion in one direction, code 'G33 X- Y- Z- K-' where K gives the distance moved in XYZ for each revolution of the spindle.  For instance, if starting at 'Z=0', 'G33 Z-1 K.0625' produces a 1 inch motion in Z over 16 revolutions of the spindle.  This command might be part of a program to produce a 16TPI thread.  Another example in metric, 'G33 Z-15 K1.5' produces a movement of 15mm while the spindle rotates 10 times for a thread of 1.5mm.
de: Für eine spindelsynchrone Bewegung in einer Richtung codieren Sie 'G33 X- Y- Z- K-', wobei K die in XYZ zurückgelegte Strecke pro Spindelumdrehung angibt.  Wenn Sie zum Beispiel bei 'Z=0' beginnen, erzeugt 'G33 Z-1 K.0625' eine Bewegung von 1 Zoll in Z über 16 Umdrehungen der Spindel.  Dieser Befehl könnte Teil eines Programms zur Herstellung eines 16TPI-Gewindes sein.  Ein weiteres Beispiel im metrischen System: 'G33 Z-15 K1.5' erzeugt eine Bewegung von 15 mm, während sich die Spindel 10 Mal dreht, um ein Gewinde von 1,5 mm herzustellen.

note: type: Plain text
en: The (optional) $ argument sets which spindle the motion is synchronised to (default is zero). For example G33 Z10 K1 $1 will move the spindle in synchrony with the spindle.N.revs HAL pin value.
de: Das (optionale) Argument $ legt fest, mit welcher Spindel die Bewegung synchronisiert wird (Standard ist Null). Zum Beispiel bewegt G33 Z10 K1 $1 die Spindel synchron mit dem Wert des Pins spindle.N.revs HAL.

note: type: Plain text
en: Spindle-synchronized motion waits for the spindle index and spindle at speed pins, so multiple passes line up. 'G33' moves end at the programmed endpoint.  G33 could be used to cut tapered threads or a fusee.
de: Die spindelsynchronisierte Bewegung wartet auf den Spindelindex und die Spindel an den Drehzahlstiften, so dass mehrere Durchgänge aneinandergereiht werden. 'G33' bewegt das Ende am programmierten Endpunkt.  G33 kann zum Schneiden von kegelförmigen Gewinden oder einem Konus verwendet werden.

note: type: Plain text
en: All the axis words are optional, except that at least one must be used.
de: Alle Achsenwörter sind optional, außer dass mindestens eines verwendet werden muss.

note: type: Plain text
en: K follows the drive line described by 'X- Y- Z-'. K is not parallel to the Z axis if X or Y endpoints are used for example when cutting tapered threads.
de: K folgt der durch "X- Y- Z-" beschriebenen Antriebslinie. K ist nicht parallel zur Z-Achse, wenn X- oder Y-Endpunkte verwendet werden, z. B. beim Schneiden von kegelförmigen Gewinden.

note: type: Block title
en: Technical Info
de: Technische Informationen

note: type: Plain text
en: At the beginning of each G33 pass, LinuxCNC uses the spindle speed and the machine acceleration limits to calculate how long it will take Z to accelerate after the index pulse, and determines how many degrees the spindle will rotate during that time. It then adds that angle to the index position and computes the Z position using the corrected spindle angle. That means that Z will reach the correct position just as it finishes accelerating to the proper speed, and can immediately begin cutting a good thread.
de: Zu Beginn eines jeden G33-Durchlaufs nutzt LinuxCNC die Spindeldrehzahl- und die Maschinen-Beschleunigungs-Begrenzungen, um zu berechnen, wie lange es dauern wird Z nach dem die Index-Impuls zu beschleunigen, und bestimmt, wieviel Grad die Spindel sich während dieser Zeit zu drehen wird. Dann addiert es diesen Winkel zur Indexposition und berechnet die Z-Position unter Verwendung des korrigierten Spindelwinkels. Das bedeutet, dass Z die korrekte Position erreicht, sobald es die Beschleunigung auf die richtige Geschwindigkeit beendet hat, und sofort mit dem Schneiden eines guten Gewindes beginnen kann.

note: type: Title ===
en: HAL Connections
de: HAL-Verbindungen

note: type: Plain text
en: The pin 'spindle.N.at-speed' must be set or driven true for the motion to start. Additionally spindle.N.revs must increase by 1 for each revolution of the spindle and the spindle.N.index-enable pin must be connected to an encoder (or resolver) counter which resets index-enable once per rev.
de: Der Pin 'spindle.N.at-speed' muss gesetzt oder auf true gesetzt werden, damit die Bewegung beginnt. Außerdem muss 'spindle.N.revs' bei jeder Umdrehung der Spindel um 1 erhöht werden und der Pin 'spindle.N.index-enable' muss mit einem Encoder- (oder Resolver-) Zähler verbunden sein, der 'index-enable' einmal pro Umdrehung zurücksetzt.

note: type: Plain text
en: See the Integrators Manual for more information on spindle synchronized motion.
de: Weitere Informationen zur spindelsynchronisierten Bewegung finden Sie im Integrators Manual.

note: type: Block title
en: G33 Example
de: G33 Beispiel

note: type: delimited block -
en: G90 (absolute distance mode)
    G0 X1 Z0.1 (rapid to position)
    S100 M3 (start spindle turning)
    G33 Z-2 K0.125 (move Z axis to -2 at a rate to equal 0.125 per revolution)
    G0 X1.25 (rapid move tool away from work)
    Z0.1 (rapid move to starting Z position)
    M2 (end program)
de: G90 (absoluter Abstandsmodus)
    G0 X1 Z0.1 (Eilgang auf Position)
    S100 M3 (Spindeldrehung starten)
    G33 Z-2 K0.125 (Z-Achse mit einer Geschwindigkeit von 0,125 pro Umdrehung auf -2 fahren)
    G0 X1.25 (Werkzeug im Eilgang vom Werkstück wegfahren)
    Z0.1 (Eilgang auf Z-Startposition)
    M2 (Programm beenden)

note: type: Plain text
en: See <<gcode:g90-g91,G90>> & <<gcode:g0,G0>> & <<mcode:m2-m30,M2>> sections for more information.
de: Siehe <<gcode:g90-g91,G90>> & <<gcode:g0,G0>> & <<mcode:m2-m30,M2>> für weitere Informationen.

note: type: Plain text
en: All axis words are omitted.
de: Alle Achsenwörter werden weggelassen.

note: type: Plain text
en: The spindle is not turning when this command is executed.
de: Die Spindel dreht sich nicht, wenn dieser Befehl ausgeführt wird.

note: type: Plain text
en: The requested linear motion exceeds machine velocity limits due to the spindle speed.
de: Die angeforderte lineare Bewegung überschreitet die Geschwindigkeitsgrenzen der Maschine aufgrund der Spindeldrehzahl.

note: type: Title ==
en: G33.1 Rigid Tapping(((G33.1 Rigid Tapping)))
de: G33.1 Starres Gewindeschneiden(((G33.1 Starres Gewindeschneiden)))

note: type: Plain text
en: 'I' - optional spindle speed multiplier for faster return move
de: I" - optionaler Multiplikator der Spindeldrehzahl für schnelleren Rücklauf

note: type: Plain text
en: '$' - optional spindle selector
de: '$' - optionaler Spindelselektor

note: type: Plain text
en: For Z only tapping preposition the XY location prior to calling G33.1 and only use a Z word in the G33.1. If the coordinates specified are not the current coordinates when calling G33.1 for tapping the move will not be along the Z axis but will be a coordinated, spindle-synchronized move from the current location to the location specified and back.
de: Für reines Z-Gewindeschneiden positionieren Sie die XY-Position vor dem Aufruf von G33.1 und verwenden nur ein Z-Wort in G33.1. Wenn die angegebenen Koordinaten nicht die aktuellen Koordinaten beim Aufruf von G33.1 für das Gewindeschneiden sind, erfolgt die Bewegung nicht entlang der Z-Achse, sondern ist eine koordinierte, spindelsynchrone Bewegung von der aktuellen Position zur angegebenen Position und zurück.

note: type: Plain text
en: For rigid tapping (spindle synchronized motion with return), code 'G33.1 X- Y- Z- K-' where 'K-' gives the distance moved for each revolution of the spindle.
de: Für starres Gewindebohren (Spindel synchronisierte Bewegung mit Rückkehr), Code 'G33.1 X- Y- Z- K-', wobei 'K-' die Strecke angibt, die für jede Umdrehung der Spindel zurückgelegt wird.

note: type: Plain text
en: A rigid tapping move consists of the following sequence:
de: Eine starres Gewindeschneiden besteht aus der folgenden Sequenz:

note: type: Plain text
en: A move from the current coordinate to the specified coordinate, synchronized with the selected spindle at the given ratio and starting from the current coordinate with a spindle index pulse.
de: Eine Bewegung von der aktuellen Koordinate zur angegebenen Koordinate, synchronisiert mit der gewählten Spindel im angegebenen Verhältnis und ausgehend von der aktuellen Koordinate mit einem Spindelindeximpuls.

note: type: Plain text
en: When reaching the endpoint, a command to reverse the spindle, and speed up by a factor set by the multiplier (e.g., from clockwise to counterclockwise).
de: Bei Erreichen des Endpunkts ein Befehl zur Umkehrung der Spindel und zur Erhöhung der Geschwindigkeit um einen durch den Multiplikator festgelegten Faktor (z. B. von Rechts- auf Linkslauf).

note: type: Plain text
en: Continued synchronized motion beyond the specified end coordinate until the spindle actually stops and reverses.
de: Fortgesetzte synchronisierte Bewegung über die angegebene Endkoordinate hinaus, bis die Spindel tatsächlich anhält und reversiert.

note: type: Plain text
en: Continued synchronized motion back to the original coordinate.
de: Fortsetzung der synchronisierten Bewegung zurück zur ursprünglichen Koordinate.

note: type: Plain text
en: When reaching the original coordinate, a command to reverse the spindle a second time (e.g., from counterclockwise to clockwise).
de: Bei Erreichen der Originalkoordinate wird der Befehl gegeben, die Spindel ein zweites Mal umzudrehen (z. B. von Links- auf Rechtslauf).

note: type: Plain text
en: Continued synchronized motion beyond the original coordinate until the spindle actually stops and reverses.
de: Fortgesetzte synchronisierte Bewegung über die ursprüngliche Koordinate hinaus, bis die Spindel tatsächlich anhält und reversiert.

note: type: Plain text
en: An *unsynchronized* move back to the original coordinate.
de: Eine *unsynchronisierte* Bewegung zurück zur ursprünglichen Koordinate.

note: type: Plain text
en: Spindle-synchronized motions wait for spindle index, so multiple passes line up.'G33.1' moves end at the original coordinate.
de: Spindelsynchronisierte Bewegungen warten auf den Spindelindex, so dass mehrere Durchgänge aneinandergereiht werden.'G33.1'-Bewegungen enden an der ursprünglichen Koordinate.

note: type: Block title
en: G33.1 Example
de: G33.1 Beispiel

note: type: delimited block -
en: G90 (set absolute mode)
    G0 X1.000 Y1.000 Z0.100 (rapid move to starting position)
    S100 M3 (turn on the spindle, 100 RPM)
    G33.1 Z-0.750 K0.05 (rigid tap a 20 TPI thread 0.750 deep)
    M2 (end program)
de: G90 (Absolutmodus einstellen)
    G0 X1.000 Y1.000 Z0.100 (Eilgang auf Startposition)
    S100 M3 (Spindel einschalten, 100 RPM)
    G33.1 Z-0.750 K0.05 (Gewindebohrer 20 TPI, 0,750 tief)
    M2 (Endprogramm)

note: type: Plain text
en: The spindle is not turning when this command is executed
de: Die Spindel dreht sich nicht, wenn dieser Befehl ausgeführt wird.

note: type: Plain text
en: The requested linear motion exceeds machine velocity limits due to the spindle speed
de: Die angeforderte lineare Bewegung überschreitet die Geschwindigkeitsgrenzen der Maschine aufgrund der Spindeldrehzahl.

note: type: Title ==
en: G38.n Straight Probe(((G38.n Probe)))
de: G38.n Gerade Sonde(((G38.n Sonde)))

note: type: delimited block -
en: G38.n axes
de: G38.n Achsen

note: type: Plain text
en: 'G38.2' - probe toward workpiece, stop on contact, signal error if failure
de: G38.2" - Messtaster zum Werkstück, Stopp bei Berührung, Signalfehler bei Ausfall

note: type: Plain text
en: 'G38.3' - probe toward workpiece, stop on contact
de: 'G38.3' - Sonde in Richtung Werkstück, Stopp bei Kontakt

note: type: Plain text
en: 'G38.4' - probe away from workpiece, stop on loss of contact, signal error if failure
de: 'G38.4' - Messtaster vom Werkstück weg, Stopp bei Kontaktverlust, Fehlersignal bei Ausfall

note: type: Plain text
en: 'G38.5' - probe away from workpiece, stop on loss of contact
de: 'G38.5' - Sonde weg vom Werkstück, Stopp bei Kontaktverlust

note: type: Plain text
en: You will not be able to use a probe move until your machine has been set up to provide a probe input signal.  The probe input signal must be connected to 'motion.probe-input' in a .hal file.  G38.n uses motion.probe-input to determine when the probe has made (or lost) contact.  TRUE for probe contact closed (touching), FALSE for probe contact open.
de: Sie können eine Tasterbewegung erst dann verwenden, wenn Ihre Maschine so eingerichtet ist, dass sie ein Taster-Eingangssignal liefert.  Das Taster-Eingangssignal muss mit 'motion.probe-input' in einer .hal-Datei verbunden sein.  G38.n verwendet motion.probe-input, um festzustellen, wann der Messtaster den Kontakt hergestellt (oder verloren) hat.  TRUE für einen geschlossenen (sich berührenden) Tasterkontakt, FALSE für einen offenen Tasterkontakt.

note: type: Plain text
en: Program 'G38.n axes' to perform a straight probe operation.  The axis words are optional, except that at least one of them must be used.  The axis words together define the destination point that the probe will move towards, starting from the current location.  If the probe is not tripped before the destination is reached G38.2 and G38.4 will signal an error.
de: Programmieren Sie 'G38.n Achsen', um einen geraden Messtasterbetrieb durchzuführen.  Die Achsenwörter sind optional, außer dass mindestens eines von ihnen verwendet werden muss.  Die Achsenwörter definieren zusammen den Zielpunkt, den der Messtaster ausgehend von der aktuellen Position anfahren wird.  Wird der Messtaster nicht ausgelöst, bevor der Zielpunkt erreicht ist, melden G38.2 und G38.4 einen Fehler.

note: type: Plain text
en: The tool in the spindle must be a probe or contact a probe switch.
de: Das Werkzeug in der Spindel muss ein Taster sein oder einen Tasterschalter berühren.

note: type: Plain text
en: In response to this command, the machine moves the controlled point (which should be at the center of the probe ball) in a straight line at the current <<sec:set-feed-rate,feed rate>> toward the programmed point.  In inverse time feed mode, the feed rate is such that the whole motion from the current point to the programmed point would take the specified time.  The move stops (within machine acceleration limits) when the programmed point is reached, or when the requested change in the probe input takes place, whichever occurs first.
de: Als Reaktion auf diesen Befehl bewegt die Maschine den kontrollierten Punkt (der sich in der Mitte der Tastkugel befinden sollte) in einer geraden Linie mit dem aktuellen <<sec:set-feed-rate,Vorschub>> zum programmierten Punkt.  Im Modus Inverser Zeitvorschub (engl. inverse time feed mode) ist die Vorschubgeschwindigkeit so gewählt, dass die gesamte Bewegung vom aktuellen Punkt zum programmierten Punkt die angegebene Zeit dauern würde.  Die Bewegung stoppt (innerhalb der Maschinenbeschleunigungsgrenzen), wenn der programmierte Punkt erreicht ist oder wenn die geforderte Änderung des Tastereingangs erfolgt, je nachdem, was zuerst eintritt.

note: type: Block title
en: Probing G-Codes
de: Sondieren mit G-Codes

note: type: Table
en: Target State
de: Zielzustand

note: type: Table
en: Move orientation
de: Orientierung der Bewegung

note: type: Table
en: Error Signal
de: Fehlersignal

note: type: Table
en: Touched
de: Berührt (engl. touched)

note: type: Table
en: Toward piece
de: Zum Stück hin

note: type: Table
en: Untouched
de: Unberührt (engl. untouched)

note: type: Table
en: From piece
de: Vom Stück weg

note: type: Plain text
en: After successful probing, parameters #5061 to #5069 will be set to the X, Y, Z, A, B, C, U, V, W coordinates of the location of the controlled point at the time the probe changed state (in the current work coordinate system).  After unsuccessful probing, they are set to the coordinates of the programmed point.  Parameter 5070 is set to 1 if the probe succeeded and 0 if the probe failed.  If the probing operation failed, G38.2 and G38.4 will signal an error by posting an message on screen if the selected GUI supports that.  And by halting program execution.
de: Nach erfolgreicher Antastung werden die Parameter #5061 bis #5069 auf die X-, Y-, Z-, A-, B-, C-, U-, V-, W-Koordinaten der Position des kontrollierten Punktes zum Zeitpunkt der Zustandsänderung des Messtasters (im aktuellen Arbeitskoordinatensystem) gesetzt.  Nach erfolgloser Antastung werden sie auf die Koordinaten des programmierten Punktes gesetzt.  Der Parameter 5070 wird auf 1 gesetzt, wenn die Antastung erfolgreich war, und auf 0, wenn die Antastung fehlgeschlagen ist.  Wenn der Antastvorgang fehlgeschlagen ist, signalisieren G38.2 und G38.4 einen Fehler, indem sie eine Meldung auf dem Bildschirm ausgeben, sofern die gewählte GUI dies unterstützt.  Und durch Anhalten der Programmausführung.

note: type: Plain text
en: A comment of the form '(PROBEOPEN filename.txt)' will open 'filename.txt' and store the 9-number coordinate consisting of XYZABCUVW of each successful straight probe in it.  The file must be closed with '(PROBECLOSE)'. For more information see the <<gcode:comments,Comments>> section.
de: Ein Kommentar der Form '(PROBEOPEN dateiname.txt)' öffnet 'dateiname.txt' und speichert darin die 9-stellige Koordinate, bestehend aus XYZABCUVW, jeder erfolgreichen geraden Sonde.  Die Datei muss mit '(PROBECLOSE)' geschlossen werden. Weitere Informationen finden Sie im Abschnitt <<gcode:comments,Kommentare>>.

note: type: Plain text
en: An example file 'smartprobe.ngc' is included (in the examples directory)  to demonstrate using probe moves to log to a file the coordinates of a part.  The program 'smartprobe.ngc' could be used with 'ngcgui' with minimal changes.
de: Eine Beispieldatei 'smartprobe.ngc' ist enthalten (im Verzeichnis 'examples'), um zu demonstrieren, wie die Koordinaten eines Werkstücks mit Hilfe von Tasterbewegungen in eine Datei geschrieben werden.  Das Programm 'smartprobe.ngc' kann mit minimalen Änderungen mit 'ngcgui' verwendet werden.

note: type: Plain text
en: the current point is the same as the programmed point.
de: der aktuelle Punkt ist derselbe wie der programmierte Punkt.

note: type: Plain text
en: no axis word is used
de: es wird kein Achswort verwendet

note: type: Plain text
en: cutter compensation is enabled
de: Fräserkompensation ist aktiviert

note: type: Plain text
en: the feed rate is zero
de: der Vorschub ist null

note: type: Plain text
en: the probe is already in the target state
de: die Sonde befindet sich bereits im Zielzustand

note: type: Title ==
en: G40 Compensation Off(((G40 Cutter Compensation Off)))
de: G40 Kompensation aus(((G40 Fräserkompensation aus)))

note: type: Plain text
en: 'G40' - turn cutter compensation off. If tool compensation was on the next move must be a linear move and longer than the tool diameter.  It is OK to turn compensation off when it is already off.
de: 'G40' -schaltet  Fräserkompensation aus. Wenn die Werkzeugkompensation eingeschaltet war, muss die nächste Bewegung eine lineare Bewegung und länger als der Werkzeugdurchmesser sein. Es ist in Ordnung, die Kompensation auszuschalten, wenn sie bereits ausgeschaltet ist.

note: type: Block title
en: G40 Example
de: G40 Beispiel

note: type: delimited block -
en: ; current location is X1 after finishing cutter compensated move
    G40 (turn compensation off)
    G0 X1.6 (linear move longer than current cutter diameter)
    M2 (end program)
de: ; Aktuelle Position ist X1 nach Beendigung der kompensierten Fräserbewegung
    G40 (Kompensation ausschalten)
    G0 X1.6 (lineare Bewegung länger als der aktuelle Fräserdurchmesser)
    M2 (Programm beenden)

note: type: Plain text
en: See <<gcode:g0,G0>> & <<mcode:m2-m30,M2>> sections for more information.
de: Siehe die Abschnitte <<gcode:g0,G0>> und <<mcode:m2-m30,M2>> für weitere Informationen.

note: type: Plain text
en: A G2/G3 arc move is programmed next after a G40.
de: Ein G2/G3-Bogenzug folgt direkt nach einem G40.

note: type: Plain text
en: The linear move after turning compensation off is less than the tool diameter.
de: Die lineare Bewegung nach Ausschalten der Kompensation ist kleiner als der Werkzeugdurchmesser.

note: type: Title ==
en: G41, G42 Cutter Compensation(((G41 G42 Cutter Compensation)))
de: G41, G42 Fräserkompensation(((G41 G42 Fräserkompensation)))

note: type: delimited block -
en: G41 <D-> (left of programmed path)
    G42 <D-> (right of programmed path)
de: G41 <D-> (links vom programmierten Pfad)
    G42 <D-> (rechts vom programmierten Pfad)

note: type: Plain text
en: 'D' - tool number
de: 'D' - Werkzeugnummer

note: type: Plain text
en: The D word is optional; if there is no D word the radius of the currently loaded tool will be used (if no tool is loaded and no D word is given, a radius of 0 will be used).
de: Das D-Wort ist optional; ist kein D-Wort vorhanden, wird der Radius des aktuell geladenen Werkzeugs verwendet (ist kein Werkzeug geladen und kein D-Wort angegeben, wird ein Radius von 0 verwendet).

note: type: Plain text
en: If supplied, the D word is the tool number to use.  This would normally be the number of the tool in the spindle (in which case the D word is redundant and need not be supplied), but it may be any valid tool number.
de: Falls angegeben, ist das D-Wort die zu verwendende Werkzeugnummer.  Normalerweise ist dies die Nummer des Werkzeugs in der Spindel (in diesem Fall ist das D-Wort überflüssig und muss nicht angegeben werden), aber es kann jede gültige Werkzeugnummer sein.

note: type: Plain text
en: 'G41/G42 D0' is a little special.  Its behavior is different on random tool changer machines and nonrandom tool changer machines (see the <<mcode:m6,Tool Change>> section).  On nonrandom tool changer machines, 'G41/G42 D0' applies the Tool Length Offset of the tool currently in the spindle, or a TLO of 0 if no tool is in the spindle. On random tool changer machines, 'G41/G42 D0' applies the TLO of the tool T0 defined in the tool table file (or causes an error if T0 is not defined in the tool table).
de: G41/G42 D0' ist ein wenig speziell.  Er verhält sich auf Maschinen mit zufälligem Werkzeugwechsler anders als auf Maschinen mit nicht zufälligem Werkzeugwechsler (siehe Abschnitt <<mcode:m6,Tool Change>>).  Auf Maschinen mit nicht-zufälligem Werkzeugwechsler wendet 'G41/G42 D0' den Werkzeuglängenversatz  (engl. tool length offset, kurz TLO) des Werkzeugs an, das sich gerade in der Spindel befindet, oder eine TLO von 0, wenn sich kein Werkzeug in der Spindel befindet. Auf Maschinen mit wahlfreiem Werkzeugwechsel wendet 'G41/G42 D0' die TLO des in der Werkzeugtabelle definierten Werkzeugs T0 an (oder verursacht einen Fehler, wenn T0 nicht in der Werkzeugtabelle definiert ist).

note: type: Plain text
en: To start cutter compensation to the left of the part profile, use G41.  G41 starts cutter compensation to the left of the programmed line as viewed from the positive end of the axis perpendicular to the plane.
de: Um die Fräskompensation links vom Werkstückprofil zu starten, verwenden Sie G41.  G41 startet die Fräskompensation links von der programmierten Linie, vom positiven Ende der Achse aus gesehen, die senkrecht zur Ebene steht.

note: type: Plain text
en: To start cutter compensation to the right of the part profile, use G42.  G42 starts cutter compensation to the right of the programmed line as viewed from the positive end of the axis perpendicular to the plane.
de: Um die Fräskompensation rechts vom Werkstückprofil zu starten, verwenden Sie G42.  G42 startet die Fräskompensation rechts von der programmierten Linie, vom positiven Ende der Achse aus gesehen, die senkrecht zur Ebene steht.

note: type: Plain text
en: The lead in move must be at least as long as the tool radius.  The lead in move can be a rapid move.
de: Die Anfahrbewegung muss mindestens so lang wie der Werkzeugradius sein.  Die Anfahrbewegung kann eine Eilfahrt sein.

note: type: Plain text
en: Cutter compensation may be performed if the XY-plane or XZ-plane is active.
de: Bei aktiver XY-Ebene oder XZ-Ebene kann eine Fräserkompensation durchgeführt werden.

note: type: Plain text
en: User M100-M199 commands are allowed when Cutter Compensation is on.
de: Benutzerbefehle M100-M199 sind zulässig, wenn die Fräserkompensation aktiviert ist.

note: type: Plain text
en: The behavior of the machining center when cutter compensation is on is described in the <<sec:cutter-radius-compensation,Cutter Compensation>> section along with code examples.
de: Das Verhalten des Bearbeitungszentrums bei eingeschalteter Schneidradius-Kompensation wird im Abschnitt <<sec:cutter-radius-compensation,Schneidradius-Kompensation>> zusammen mit Codebeispielen beschrieben.

note: type: Plain text
en: The D number is not a valid tool number or 0.
de: Die D-Nummer ist eine ungültige Werkzeugnummer oder 0.

note: type: Plain text
en: The YZ plane is active.
de: Die YZ-Ebene ist aktiv.

note: type: Plain text
en: Cutter compensation is commanded to turn on when it is already on.
de: Die Fräserkompensation wird angewiesen, sich einzuschalten, wenn sie bereits eingeschaltet ist.

note: type: Title ==
en: G41.1, G42.1 Dynamic Cutter Compensation(((G41.1 G42.1 Dynamic Compensation)))
de: G41.1, G42.1 Dynamische Fräserkompensation(((G41.1 G42.1 Dynamische Kompensation)))

note: type: delimited block -
en: G41.1 D- <L-> (left of programmed path)
    G42.1 D- <L-> (right of programmed path)
de: G41.1 D- <L-> (links vom programmierten Pfad)
    G42.1 D- <L-> (rechts vom programmierten Pfad)

note: type: Plain text
en: 'D' - cutter diameter
de: 'D' - Fräserdurchmesser

note: type: Plain text
en: 'L' - tool orientation (see <<sec:lathe-tool-orientation,lathe tool orientation>>)
de: 'L' - Werkzeugausrichtung (siehe <<sec:lathe-tool-orientation,Drehmaschinen Werkzeugausrichtung>>)

note: type: Plain text
en: G41.1 & G42.1 function the same as G41 & G42 with the added scope of being able to program the tool diameter. The L word defaults to 0 if unspecified.
de: G41.1 & G42.1 funktionieren genauso wie G41 & G42 mit der zusätzlichen Möglichkeit, den Werkzeugdurchmesser zu programmieren. Das L-Wort ist standardmäßig 0, wenn es nicht spezifiziert ist.

note: type: Plain text
en: The L number is not in the range from 0 to 9 inclusive.
de: Die L-Nummer liegt nicht im Bereich von 0 bis einschließlich 9.

note: type: Plain text
en: The L number is used when the XZ plane is not active.
de: Die L-Nummer wird verwendet, wenn die XZ-Ebene nicht aktiv ist.

note: type: Title ==
en: G43 Tool Length Offset(((G43 Tool Length Offset)))
de: G43 Werkzeuglängen-Offset((G43 Werkzeuglängen-Offset)

note: type: Plain text
en: 'H' - tool number (optional)
de: 'H' - Werkzeugnummer (optional)

note: type: Plain text
en: 'G43' - enables tool length compensation.  G43 changes subsequent motions by offsetting the axis coordinates by the length of the offset. G43 does not cause any motion. The next time a compensated axis is moved, that axis's endpoint is the compensated location.
de: G43' - aktiviert die Werkzeuglängenkompensation.  G43 ändert die nachfolgenden Bewegungen, indem die Achsenkoordinaten um die Länge des Versatzes verschoben werden. G43 verursacht keine Bewegung. Wenn eine kompensierte Achse das nächste Mal bewegt wird, ist der Endpunkt dieser Achse die kompensierte Position.

note: type: Plain text
en: 'G43' without an H word uses the currently loaded tool from the last 'Tn M6'.
de: 'G43' ohne H-Wort verwendet das aktuell geladene Tool aus dem letzten 'Tn M6'.

note: type: Plain text
en: 'G43 Hn' uses the offset for tool n.
de: 'G43 Hn' verwendet den Offset für Werkzeug n.

note: type: Plain text
en: 'G43 H0' is a little special.  Its behavior is different on random tool changer machines and nonrandom tool changer machines (see the <<sub:tool-changers,Tool Changers>> section).  On nonrandom tool changer machines, 'G43 H0' applies the Tool Length Offset of the tool currently in the spindle, or a TLO of 0 if no tool is in the spindle.  On random tool changer machines, 'G43 H0' applies the TLO of the tool T0 defined in the tool table file (or causes an error if T0 is not defined in the tool table).
de: 'G43 H0' ist ein wenig speziell. Sein Verhalten unterscheidet sich auf Maschinen mit zufälligem Werkzeugwechsler und Maschinen ohne zufälligen Werkzeugwechsler (siehe Abschnitt <<sub:tool-changers,Werkzeugwechsler>>). Bei Maschinen mit nicht zufälligem Werkzeugwechsler wendet 'G43 H0' den Werkzeuglängenversatz (kurz TLO für engl. tool length offset) des Werkzeugs an, das sich derzeit in der Spindel befindet, oder einen TLO von 0, wenn sich kein Werkzeug in der Spindel befindet. Auf Werkzeugwechselmaschinen wendet 'G43 H0' die TLO des Werkzeugs T0 an, die in der Werkzeugtabellendatei definiert ist (oder verursacht einen Fehler, wenn T0 nicht in der Werkzeugtabelle definiert ist).

note: type: Block title
en: G43 H- Example Line
de: G43 H- Beispiel Zeile

note: type: delimited block -
en: G43 H1 (set tool offsets using the values from tool 1 in the tool table)
de: G43 H1 (Werkzeugkorrekturen mit den Werten von Werkzeug 1 in der Werkzeugtabelle einstellen)

note: type: Plain text
en: the H number is not an integer, or
de: die H-Nummer ist keine ganze Zahl, oder

note: type: Plain text
en: the H number is negative, or
de: die H-Zahl ist negativ, oder

note: type: Plain text
en: the H number is not a valid tool number (though note that 0 is a valid tool number on nonrandom tool changer machines, it means "the tool currently in the spindle")
de: die H-Nummer ist keine gültige Werkzeugnummer (beachten Sie jedoch, dass 0 eine gültige Werkzeugnummer auf Maschinen mit nicht-zufälligem Werkzeugwechsler ist, sie bedeutet "das aktuell in der Spindel befindliche Werkzeug")

note: type: Title ==
en: G43.1 Dynamic Tool Length Offset(((G43.1 Dynamic Tool Length Offset)))
de: G43.1 Dynamischer Werkzeuglängen-Offset(((G43.1 Dynamischer Werkzeuglängen-Offset)))

note: type: delimited block -
en: G43.1 axes
de: G43.1-Achsen

note: type: Plain text
en: 'G43.1 axes' - change subsequent motions by replacing the current offset(s) of axes.  G43.1 does not cause any motion. The next time a compensated axis is moved, that axis's endpoint is the compensated location.
de: 'G43.1-Achsen' - Ändern Sie nachfolgende Bewegungen, indem Sie den/die aktuellen Offset(s) der Achsen ersetzen. G43.1 verursacht keine Bewegung. Wenn eine kompensierte Achse das nächste Mal bewegt wird, ist der Endpunkt dieser Achse die kompensierte Position.

note: FIXME Use of G43.1 with I and K words ? To use dynamic tool length compensation in a program, use 'G43.1 I- K-', where 'I-' gives the compensation of tool length in X (for lathes) and 'K-' gives the compensation length in Z (for lathes and milling machines). type: Block title
en: G43.1 Example
de: G43.1 Beispiel

note: type: delimited block -
en: G90 (set absolute mode)
    T1 M6 G43 (load tool 1 and tool length offsets, Z is at machine 0 and DRO shows Z1.500)
    G43.1 Z0.250 (offset current tool offset by 0.250, DRO now shows Z1.250)
    M2 (end program)
de: G90 (Absolut-Modus einstellen)
    T1 M6 G43 (Werkzeug 1 und Werkzeuglängenkorrekturen laden, Z ist auf Maschine 0 und DRO zeigt Z1.500)
    G43.1 Z0.250 (aktuelle Werkzeugkorrektur um 0.250 korrigieren, DRO zeigt jetzt Z1.250 an)
    M2 (Programm beenden)

note: type: Plain text
en: See <<gcode:g90-g91,G90>> & <<sec:select-tool,T>> & <<mcode:m6,M6>> sections for more information.
de: Siehe Abschnitte <<gcode:g90-g91,G90>>, <<sec:select-tool,T>> und <<mcode:m6,M6>> weitere Informationen.

note: type: Plain text
en: motion is commanded on the same line as 'G43.1'
de: Bewegung wird in der gleichen Zeile wie 'G43.1' befohlen

note: type: Plain text
en: G43.1 does not write to the tool table.
de: G43.1 schreibt nicht in die Werkzeugtabelle.

note: type: Title ==
en: G43.2 Apply additional Tool Length Offset(((G43.2 Apply additional Tool Length Offset)))
de: G43.2 Zusätzlicher Werkzeuglängenversatz anwenden(((G43.2 Zusätzlicher Werkzeuglängenversatz anwenden)))

note: type: delimited block -
en: G43.2 H- axes-
de: G43.2 H- Achsen-

note: type: Plain text
en: 'H' - tool number
de: 'H' - Werkzeugnummer

note: type: Plain text
en: 'G43.2' - applies an additional simultaneous tool offset.
de: 'G43.2' - wendet einen zusätzlichen simultanen Werkzeug-Offset an.

note: type: Block title
en: G43.2 Example
de: G43.2 Beispiel

note: type: delimited block -
en: G90 (set absolute mode)
    T1 M6 (load tool 1)
    G43 (or G43 H1 - replace all tool offsets with T1's offset)
    G43.2 H10 (also add in T10's tool offset)
    M2 (end program)
de: G90 (Absolutmodus einstellen)
    T1 M6 (Werkzeug 1 laden)
    G43 (oder G43 H1 - alle Werkzeugkorrekturen durch die Offsets/Korrekturen von T1 ersetzen)
    G43.2 H10 (fügen Sie auch die Werkzeugkorrektur von T10 ein)
    M2 (Programm beenden)

note: type: Plain text
en: You can sum together an arbitrary number of offsets by calling G43.2 more times.  There are no built-in assumptions about which numbers are geometry offsets and which are wear offsets, or that you should have only one of each.
de: Sie können eine beliebige Anzahl von Offsets zusammenzählen, indem Sie G43.2 mehrmals aufrufen.  Es gibt keine eingebauten Annahmen darüber, welche Zahlen Geometrie-Offsets und welche Verschleiß-Offsets sind, oder dass Sie nur eine von beiden haben sollten.

note: type: Plain text
en: Like the other G43 commands, G43.2 does not cause any motion. The next time a compensated axis is moved, that axis's endpoint is the compensated location.
de: Wie die anderen G43-Befehle führt auch G43.2 zu keiner Bewegung. Wenn eine kompensierte Achse das nächste Mal bewegt wird, ist der Endpunkt dieser Achse die kompensierte Position.

note: type: Plain text
en: 'H' is unspecified and no axis offsets are specified.
de: 'H' ist nicht angegeben und es sind keine Achsen-Offsets angegeben.

note: type: Plain text
en: 'H' is specified and the given tool number does not exist in the tool table.
de: 'H' ist angegeben doch die angegebene Werkzeugnummer existiert nicht in der Werkzeugtabelle.

note: type: Plain text
en: 'H' is specified and axes are also specified.
de: 'H' wird angegeben und Achsen werden ebenfalls angegeben.

note: type: Plain text
en: G43.2 does not write to the tool table.
de: G43.2 schreibt nicht in die Werkzeugtabelle.

note: type: Title ==
en: G49 Cancel Tool Length Compensation(((G49 Cancel Tool Length Offset)))
de: G49 Werkzeuglängenkorrektur abbrechen(((G49 Werkzeuglängenversatz abbrechen)))

note: type: Plain text
en: 'G49' - cancels tool length compensation
de: 'G49' - hebt die Werkzeuglängenkompensation auf

note: type: Plain text
en: It is OK to program using the same offset already in use. It is also OK to program using no tool length offset if none is currently being used.
de: Es ist in Ordnung, mit demselben bereits verwendeten Versatz zu programmieren. Es ist auch in Ordnung, ohne Werkzeuglängenkorrektur zu programmieren, wenn gerade keine verwendet wird.

note: type: Title ==
en: G52 Local Coordinate System Offset(((Local Offsets)))
de: G52 Offset des lokalen Koordinatensystems(((Lokale Offsets)))

note: type: delimited block -
en: G52 axes
de: G52-Achsen

note: type: Plain text
en: G52 is used in a part program as a temporary "local coordinate system offset" within the workpiece coordinate system. More information on G52 is in the <<gcode:g52,Local and Global Offsets>> section.
de: G52 wird in einem Werkstüc-Programm als temporärer "lokaler Koordinatensystem-Offset" innerhalb des Werkstückkoordinatensystems verwendet. Weitere Informationen zu G52 finden Sie im Abschnitt <<gcode:g52,Lokale und globale Offsets>>.

note: type: Title ==
en: G53 Move in Machine Coordinates(((G53 Machine Coordinates)))
de: G53 Bewegung in Maschinenkoordinaten(((G53 Maschinenkoordinaten)))

note: type: delimited block -
en: G53 axes
de: G53 Achsen

note: type: Plain text
en: To move in the <<sec:machine-coordinate-system,machine coordinate system>>, program 'G53' on the same line as a linear move. 'G53' is not modal and must be programmed on each line. 'G0' or 'G1' does not have to be programmed on the same line if one is currently active.
de: Um im <<sec:machine-coordinate-system,Maschinenkoordinatensystem>> zu verfahren, programmieren Sie 'G53' auf der gleichen Zeile wie eine lineare Bewegung. 'G53' ist nicht modal und muss auf jeder Zeile programmiert werden. 'G0' oder 'G1' muss nicht auf der gleichen Zeile programmiert werden, wenn eine gerade aktiv ist.

note: type: Plain text
en: For example 'G53 G0 X0 Y0 Z0' will move the axes to the home position even if the currently selected coordinate system has offsets in effect.
de: Zum Beispiel 'G53 G0 X0 Y0 Z0' bewegt die Achsen zu ihrem Referenzpunkt (die Ausgangsposition), auch wenn das aktuell gewählte Koordinatensystem gültige Offsets hat.

note: type: Block title
en: G53 Example
de: G53-Beispiel

note: type: delimited block -
en: G53 G0 X0 Y0 Z0 (rapid linear move to the machine origin)
    G53 X2 (rapid linear move to absolute coordinate X2)
de: G53 G0 X0 Y0 Z0 (Eilgangbewegung zum Maschinenursprung)
    G53 X2 (Eilgangbewegung zur absoluten Koordinate X2)

note: type: Plain text
en: See <<gcode:g0,G0>> section for more information.
de: Siehe Abschnitt <<gcode:g0,G0>> für weitere Informationen.

note: type: Plain text
en: G53 is used without G0 or G1 being active,
de: G53 wird verwendet, ohne dass G0 oder G1 aktiv sind,

note: type: Plain text
en: or G53 is used while cutter compensation is on.
de: oder G53 verwendet wird, während die Fräserkompensation eingeschaltet ist.

note: type: Title ==
en: G54-G59.3 Select Coordinate System(((G54-G59.3 Select Coordinate System)))
de: G54-G59.3 Auswahl des Koordinatensystems(((G54-G59.3 Auswahl des Koordinatensystems)))

note: type: Plain text
en: 'G54'   - select coordinate system 1
de: 'G54' - Koordinatensystem 1 auswählen

note: type: Plain text
en: 'G55'   - select coordinate system 2
de: 'G55' - Koordinatensystem 2 auswählen

note: type: Plain text
en: 'G56'   - select coordinate system 3
de: 'G56' - Koordinatensystem 3 auswählen

note: type: Plain text
en: 'G57'   - select coordinate system 4
de: 'G57' - Koordinatensystem auswählen 4

note: type: Plain text
en: 'G58'   - select coordinate system 5
de: 'G58' - Koordinatensystem 5 auswählen

note: type: Plain text
en: 'G59'   - select coordinate system 6
de: 'G59' - Koordinatensystem 6 auswählen

note: type: Plain text
en: 'G59.1' - select coordinate system 7
de: 'G59.1' - Koordinatensystem 7 auswählen

note: type: Plain text
en: 'G59.2' - select coordinate system 8
de: 'G59.2' - Koordinatensystem 8 auswählen

note: type: Plain text
en: 'G59.3' - select coordinate system 9
de: 'G59.3' - Koordinatensystem 9 auswählen

note: type: Plain text
en: The coordinate systems store the axis values and the XY rotation angle around the Z axis in the parameters shown in the following table.
de: Die Koordinatensysteme speichern die Achsenwerte und den XY-Drehwinkel um die Z-Achse in den in der folgenden Tabelle aufgeführten Parametern.

note: type: Block title
en: Coordinate System Parameters
de: Koordinatensystem-Parameter

note: type: Table
en: Select
de: Wählen Sie

note: type: Plain text
en: selecting a coordinate system is used while cutter compensation is on.
de: Die Auswahl eines Koordinatensystems wird verwendet, wenn die Fräskompensation eingeschaltet ist.

note: type: Plain text
en: See the <<cha:coordinate-system,Coordinate System>> section for an overview of coordinate systems.
de: Einen Überblick über Koordinatensysteme finden Sie im Abschnitt <<cha:coordinate-system,Koordinatensystem>>.

note: type: Title ==
en: G61 Exact Path Mode(((G61 Exact Path Mode)))(((Trajectory Control)))
de: G61 Genauer Pfadmodus(((G61 Genauer Pfadmodus,Trajektorien-Steuerung)))

note: type: Plain text
en: 'G61' - Exact path mode, movement exactly as programmed.  Moves will slow or stop as needed to reach every programmed point. If two sequential moves are exactly co-linear movement will not stop.
de: G61' - Exakter Pfadmodus, Bewegung genau wie programmiert.  Die Bewegungen werden nach Bedarf verlangsamt oder gestoppt, um jeden programmierten Punkt zu erreichen. Wenn zwei aufeinanderfolgende Bewegungen exakt kolinear sind, wird die Bewegung nicht angehalten.

note: type: Title ==
en: G61.1 Exact Stop Mode(((G61.1 Exact Stop Mode)))(((Trajectory Control)))
de: G61.1 Exakter Stoppmodus(((G61.1 Exakter Stoppmodus,Trajektorien-Steuerung)))

note: type: Plain text
en: 'G61.1' - Exact stop mode, movement will stop at the end of each programmed segment.
de: G61.1' - Exakter Stoppmodus, die Bewegung wird am Ende jedes programmierten Segments angehalten.

note: type: Title ==
en: G64 Path Blending(((G64 Path Blending)))(((Trajectory Control)))
de: G64 Pfad-Übergänge(((G64-Pfad-Übergänge,Trajektorien-Steuerung)))

note: type: Plain text
en: 'P' - motion blending tolerance
de: 'P' - Toleranz für Bewegungs-Übergänge

note: type: Plain text
en: 'Q' - naive cam tolerance
de: 'Q' - naive Nockentoleranz

note: type: Plain text
en: 'G64' - best possible speed. Without P means to keep the best speed possible, no matter how far away from the programmed point you end up.
de: 'G64' - bestmögliche Geschwindigkeit. Ohne P bedeutet es, die bestmögliche Geschwindigkeit zu halten, egal wie weit man vom programmierten Punkt entfernt ist.

note: type: Plain text
en: 'G64 P-' - Blend between best speed and deviation tolerance
de: G64 P-' - Abwägung zwischen bester Geschwindigkeit und Abweichungstoleranz

note: type: Plain text
en: 'G64 P- <Q- >' blending with tolerance.  It is a way to fine tune your system for best compromise between speed and accuracy.  The P- tolerance means that the actual path will be no more than P- away from the programmed endpoint. The velocity will be reduced if needed to maintain the path.  If you set Q to a non-zero value it turns on the 'Naive CAM Detector': when there are a series of linear XYZ feed moves at the same <<sec:set-feed-rate,feed rate>> that are less than Q- away from being collinear, they are collapsed into a single linear move.  On G2/G3 moves in the G17 (XY) plane when the maximum deviation of an arc from a straight line is less than the G64 P- tolerance the arc is broken into two lines (from start of arc to midpoint, and from midpoint to end). those lines are then subject to the naive cam algorithm for lines. Thus, line-arc, arc-arc, and arc-line cases as well as line-line benefit from the 'Naive CAM Detector'. This improves contouring performance by simplifying the path. It is OK to program for the mode that is already active. See also the <<sec:trajectory-control,Trajectory Control>> section for more information on these modes.  If Q is not specified then it will have the same behavior as before and use the value of P-.  Set Q to zero to disable the 'Naive CAM Detector'.
de: 'G64 P- <Q- >' Überlagerung mit Toleranz.  Es ist eine Möglichkeit, Ihr System fein abzustimmen, um den besten Kompromiss zwischen Geschwindigkeit und Genauigkeit zu erzielen.  Die P-Toleranz bedeutet, dass der tatsächliche Pfad nicht mehr als P- vom programmierten Endpunkt entfernt ist. Die Geschwindigkeit wird bei Bedarf reduziert, um den Pfad beizubehalten.  Wenn Sie Q auf einen Wert ungleich Null setzen, wird der 'Naive CAM Detector' aktiviert: Wenn es eine Reihe von linearen XYZ-Vorschubbewegungen mit demselben <<sec:set-feed-rate,feed rate>> gibt, die weniger als Q- von der Kollinearität entfernt sind, werden sie zu einer einzigen linearen Bewegung zusammengebrochen.  Auf G2/G3 bewegt sich in der G17 (XY) Ebene, wenn die maximale Abweichung eines Bogens von einer geraden Linie kleiner als die G64 P-Toleranz ist, wird der Bogen in zwei Linien aufgeteilt (vom Bogenanfang zum Mittelpunkt und vom Mittelpunkt zum Ende). Diese Zeilen unterliegen dann dem naiven CAM-Algorithmus für Linien. So profitieren Line-Arc-, Arc-Arc- und Arc-Line-Gehäuse sowie Line-Line vom "Naive CAM Detector". Dies verbessert die Konturierungsleistung, indem der Pfad vereinfacht wird. Es ist in Ordnung, für den Modus zu programmieren, der bereits aktiv ist. Weitere Informationen zu diesen Modi finden Sie auch im Abschnitt <<sec:trajectory-control,Trajectory Control>>.  Wenn Q nicht angegeben ist, hat es das gleiche Verhalten wie zuvor und verwendet den Wert von P-.  Setzen Sie Q auf Null, um den 'Naive CAM Detector' zu deaktivieren.

note: type: Block title
en: G64 P- Example Line
de: G64 P- Beispielzeile

note: type: delimited block -
en: G64 P0.015 (set path following to be within 0.015 of the actual path)
de: G64 P0.015 (stellt die Bahnverfolgung so ein, dass sie innerhalb von 0,015 der tatsächlichen Bahn liegt)

note: type: Plain text
en: It is a good idea to include a path control specification in the preamble of each G-code file.
de: Es empfiehlt sich, in die Präambel jeder G-Code-Datei eine Pfadsteuerungsangabe aufzunehmen.

note: type: Title ==
en: G70 Lathe finishing cycle(((G70 Lathe finishing cycle)))
de: G70 Drehmaschinen-Finishing-Zyklus(((G70 Drehmaschinen-Finishing-Zyklus)))

note: type: Plain text
en: 'Q' - The subroutine number.
de: 'Q' - Die Unterroutinenummer.

note: type: Plain text
en: 'X' - The starting X position, defaults to the initial position.
de: 'X' - Die Anfangsposition X, standardmäßig die Ausgangsposition.

note: type: Plain text
en: 'Z' - The starting Z position, defaults to the initial position.
de: 'Z' - Die Startposition Z ist standardmäßig auf die Ausgangsposition eingestellt.

note: type: Plain text
en: 'D' - The starting distance of the profile, defaults to 0.
de: 'D' - Der Startabstand des Profils ist standardmäßig auf 0 eingestellt.

note: type: Plain text
en: 'E' - The ending distance of the profile, defaults to 0.
de: 'E' - Der Endabstand des Profils ist standardmäßig auf 0 eingestellt.

note: type: Plain text
en: 'P' - The number of passes to use, defaults to 1.
de: 'P' - Die Anzahl der zu verwendenden Durchläufe ist standardmäßig 1.

note: type: Plain text
en: The 'G70' cycle is intended to be used after the shape of the profile given in the subroutine with number Q has been cut with G71 or G72.
de: Der Zyklus 'G70' soll verwendet werden, nachdem die im Unterprogramm mit der Nummer Q angegebene Form des Profils mit G71 oder G72 geschnitten wurde.

note: type: Plain text
en: Preliminary motion.
de: Vorbereitende Bewegungen (engl. preliminary motion).

note: type: Plain text
en: If Z or X are used a <<gcode:g0,rapid move>> to that position is done. This position is also used between each finishing pass.
de: Wenn Z oder X verwendet werden, wird ein <<gcode:g0,Eilgang>> zu dieser Position ausgeführt. Diese Position wird auch zwischen den einzelnen Finishing-Durchgängen verwendet.

note: type: Plain text
en: Then a <<gcode:g0,rapid move>> to the start of the profile is executed.
de: Dann wird ein <<gcode:g0,Eilgang>> an den Anfang des Profils ausgeführt.

note: type: Plain text
en: The path given in Q- is followed using the <<gcode:g1,G1>> and <<gcode:g2-g3>> commands.
de: Der in Q- angegebene Pfad wird mit den Befehlen <<gcode:g1,G1>> und <<gcode:g2-g3>> verfolgt.

note: type: Plain text
en: If a next pass is required there is another rapid to the intermediate location, before a rapid is done to the start of the profile.
de: Wenn ein weiterer Durchgang erforderlich ist, erfolgt ein weiterer Eilgang zur Zwischenposition, bevor ein Eilgang zum Anfang des Profils durchgeführt wird.

note: type: Plain text
en: After the final pass, the tool is left at the end of the profile including E-.
de: Nach dem letzten Durchgang bleibt das Werkzeug am Ende des Profils einschließlich E- stehen.

note: type: Plain text
en: Multiple passes.  The distance between the pass and the final profile is (pass-1)*(D-E)/P+E.  Where pass the pass number and D,E and P are the D/E/P numbers.
de: Mehrere Durchgänge.  Der Abstand zwischen dem Durchgang und dem endgültigen Profil ist (Durchgang-1)*(D-E)/P+E.  Dabei ist pass die Nummer des Durchgangs und D, E und P sind die Nummern D/E/P.

note: type: Plain text
en: The distance is computed using the starting position of the cycle, with a positive distance towards this point.
de: Der Abstand wird anhand der Startposition des Zyklus berechnet, wobei der Abstand zu diesem Punkt positiv ist.

note: type: Plain text
en: Fillet and chamfers in the profile.  It is possible to add fillets or chamfers in the profile, see <<gcode:g71-g72>> for more details.
de: Verrundungen und Fasen im Profil.  Es ist möglich, Verrundungen oder Fasen in das Profil einzufügen, siehe <<gcode:g71-g72>> für weitere Details.

note: type: Plain text
en: There is no subroutine defined with the number given in Q.
de: Es ist kein Unterprogramm mit der in Q angegebenen Nummer definiert.

note: type: Plain text
en: The path given in the profile is not monotonic in Z or X.
de: Der im Profil angegebene Weg ist nicht monoton in Z oder X.

note: type: Plain text
en: <<gcode:g17-g19.1>> has not been used to select the ZX plane.
de: <<gcode:g17-g19.1>> wurde nicht zur Auswahl der ZX-Ebene verwendet.

note: type: Title ==
en: G71 G72 Lathe roughing cycles(((G71 G72 Lathe roughing cycles)))
de: G71 G72 Schruppzyklen auf der Drehmaschine(((G71 G72 Schruppzyklen auf der Drehmaschine)))

note: type: Plain text
en: 'D' - The remaining distance to the profile, defaults to 0.
de: 'D' - Der verbleibende Abstand zum Profil ist standardmäßig auf 0 eingestellt.

note: type: Plain text
en: 'I' - The cutting increment, defaults to 1.
de: 'I' - Das Schnittinkrement, standardmäßig 1.

note: type: Plain text
en: 'R' - The retracting distance, defaults to 0.5.
de: 'R' - Der Rückzugsabstand, standardmäßig 0,5.

note: type: Plain text
en: The G71/G72 cycle is intended to rough cut a profile on a lathe. The G71 cycles remove layers of the material while traversing in the Z direction.  The G72 cycles remove material while traversing the X axis, the so called facing cycle. The direction of travel is the same as in the path given in the subroutine. For the G71 cycle the Z coordinate must be monotonically changing, for the G72 this is required for the X axis.
de: Der Zyklus G71/G72 ist für das Schruppen eines Profils auf einer Drehmaschine vorgesehen. Die G71-Zyklen entfernen Schichten des Materials, während sie in Z-Richtung verfahren.  Die G72-Zyklen tragen Material ab, während sie in der X-Achse verfahren, der so genannte Plandrehzyklus. Die Verfahrrichtung ist die gleiche wie bei dem im Unterprogramm angegebenen Weg. Für den Zyklus G71 muss sich die Z-Koordinate monoton ändern, für den Zyklus G72 ist dies für die X-Achse erforderlich.

note: type: Plain text
en: The profile is given in a subroutine with number Q-. This subroutine may contain G0, G1, G2 and G3 motion commands. All other commands are ignored, including feed and speed settings. The <<gcode:g0>> commands are interpreted as <<gcode:g1,G1>> commands. Each motion command may also include an optional A- or C- number.  If the number A- is added a fillet with the radius given by A will be inserted at the endpoint of that motion, if this radius is too large the algorithm will fail with a non-monotonic path error. It is also possible to use the C- number, which allows a chamfer to be inserted. This chamfer has the same endpoints as a fillet of the same dimension would have but a straight line is inserted instead of an arc.
de: Das Profil wird in einer Unterroutine mit der Nummer Q- angegeben. Dieses Unterprogramm kann die Bewegungsbefehle G0, G1, G2 und G3 enthalten. Alle anderen Befehle werden ignoriert, einschließlich Vorschub- und Geschwindigkeitseinstellungen. Die <<gcode:g0>> Befehle werden als <<gcode:g1,G1>> Befehle interpretiert. Jeder Bewegungsbefehl kann auch eine optionale A- oder C- Nummer enthalten.  Wird die Zahl A- hinzugefügt, so wird am Endpunkt der Bewegung eine Verrundung mit dem durch A angegebenen Radius eingefügt; wenn dieser Radius zu groß ist, schlägt der Algorithmus mit einem nicht monotonen Pfadfehler fehl. Es ist auch möglich, die C-Nummer zu verwenden, wodurch eine Fase eingefügt werden kann. Diese Fase hat die gleichen Endpunkte wie eine Verrundung mit den gleichen Abmessungen, aber es wird eine gerade Linie anstelle eines Bogens eingefügt.

note: type: Plain text
en: When in absolute mode the U (for X) and W (for Z) can be used as incremental displacements.
de: Im absoluten Modus können U (für X) und W (für Z) als inkrementelle Verschiebungen verwendet werden.

note: type: Plain text
en: The G7x.1 cycles do not cut pockets. The G7x.2 cycles only cut after the first pocket and continue where G7x.1 stopped. It is advisible to leave some additional material to cut before the G7x.2 cycle, so if G7x.1 used a D1.0 the G7x.2 can use D0.5 and 0.5mm will be removed while moving from one pocket to the next.
de: Die G7x.1-Zyklen schneiden keine Taschen. Die G7x.2-Zyklen schneiden nur nach der ersten Tasche und machen dort weiter, wo G7x.1 aufgehört hat. Es ist ratsam, vor dem G7x.2-Zyklus etwas zusätzliches Material zum Schneiden übrig zu lassen. Wenn also G7x.1 einen D1.0-Zyklus verwendet hat, kann G7x.2 einen D0.5-Zyklus verwenden und 0,5 mm werden beim Übergang von einer Tasche zur nächsten entfernt.

note: type: Plain text
en: The normal G7x cycles cut the entire profile in one cycle.
de: Die normalen G7x-Zyklen schneiden das gesamte Profil in einem Zyklus.

note: type: Plain text
en: If Z or X are used a <<gcode:g0,rapid move>> to that position is done.
de: Wenn Z oder X verwendet werden, wird ein <<gcode:g0,rapid move>> zu dieser Position ausgeführt.

note: type: Plain text
en: After the profile has been cut, the tool stops at the end of the profile, including the distance specified in D.
de: Nach dem Schneiden des Profils hält das Werkzeug am Ende des Profils an, einschließlich des in D angegebenen Abstands.

note: type: Plain text
en: The D number is used to keep a distance from the final profile, to allow material to remain for finishing.
de: Die D-Nummer wird verwendet, um einen Abstand zum endgültigen Profil einzuhalten, damit Material für die Nachbearbeitung übrig bleibt.

note: type: Plain text
en: <<gcode:g41-g42>> is active.
de: <<gcode:g41-g42>> ist aktiv.

note: type: Title ==
en: G73 Drilling Cycle with Chip Breaking(((G73 Drilling Cycle with Chip Break)))
de: G73 Bohrzyklus mit Spanbrecher(((G73 Bohrzyklus mit Spanbrecher)))

note: type: Plain text
en: 'R' - retract position along the Z axis.
de: 'R' - Rückzugsposition entlang der Z-Achse.

note: type: Plain text
en: 'Q' - delta increment along the Z axis.
de: 'Q' - Delta-Inkrement entlang der Z-Achse.

note: type: Plain text
en: 'L' - repeat
de: 'L' - wiederholen

note: type: Plain text
en: The 'G73' cycle is drilling or milling with chip breaking.  This cycle takes a Q number which represents a 'delta' increment along the Z axis.
de: Der "G73"-Zyklus ist Bohren oder Fräsen mit Spanbruch.  Dieser Zyklus nimmt eine Q-Zahl, die ein "Delta"-Inkrement entlang der Z-Achse darstellt.

note: type: Plain text
en: If the current Z position is below the R position, The Z axis does a <<gcode:g0,rapid move>> to the R position.
de: Wenn die aktuelle Z-Position unter der R-Position liegt, führt die Z-Achse eine <<gcode:g0,schnelle Bewegung>> in die R-Position aus.

note: type: Plain text
en: Move to the X Y coordinates
de: Bewegen zu den X-Y-Koordinaten

note: type: Plain text
en: Move the Z-axis only at the current <<sec:set-feed-rate,feed rate>> downward by delta or to the Z position, whichever is less deep.
de: Bewege die Z-Achse nur mit dem aktuellen <<sec:set-feed-rate,Vorschub>> nach unten um Delta oder auf die Z-Position, je nachdem, was weniger tief ist.

note: type: Plain text
en: Rapid up .010 of an inch or 0.254 mm.
de: Schnelles Aufsteigen (engl. rapid up) um 0,010 Zoll oder 0,254 mm.

note: type: Plain text
en: Repeat steps 2 and 3 until the Z position is reached at step 2.
de: Wiederholen der Schritte 2 und 3, bis die Z-Position bei Schritt 2 erreicht ist.

note: type: Plain text
en: The Z axis does a rapid move to the R position.
de: Die Z-Achse fährt im Eilgang in die R-Position.

note: type: Plain text
en: the Q number is negative or zero.
de: Die Q-Zahl ist negativ oder null.

note: type: Plain text
en: the R number is not specified
de: die R-Nummer ist nicht angegeben

note: type: Title ==
en: G74 Left-hand Tapping Cycle with Dwell(((G74 Left-hand Tapping Cycle with Dwell)))
de: G74 Linkshändiger Gewindeschneidzyklus mit Verweilzeit(((G74 Linkshändiger Gewindeschneidzyklus mit Verweilzeit)))

note: type: delimited block -
en: G74 (X- Y- Z-) or (U- V- W-) R- L- P- $- F-
de: G74 (X- Y- Z-) oder (U- V- W-) R- L- P- $- F-

note: type: Plain text
en: 'R-' - Retract position along the Z axis.
de: 'R-' - Zurückziehen der Position entlang der Z-Achse.

note: type: Plain text
en: 'L-' - Used in incremental mode; number of times to repeat the cycle.  See <<gcode:g81,G81>> for examples.
de: L-' - Wird im inkrementellen Modus verwendet; Anzahl der Wiederholungen des Zyklus.  Siehe <<gcode:g81,G81>> für Beispiele.

note: type: Plain text
en: 'P-' - Dwell time (seconds).
de: P-' - Verweilzeit (Sekunden).

note: type: Plain text
en: '$-' - Selected spindle.
de: '$-' - Ausgewählte Spindel.

note: type: Plain text
en: 'F-' - Feed rate (spindle speed multiplied by distance traveled per revolution (thread pitch)).
de: 'F-' - Vorschubgeschwindigkeit (Spindeldrehzahl multipliziert mit der pro Umdrehung zurückgelegten Strecke (Gewindesteigung)).

note: type: Plain text
en: G74 does not use synchronized motion.
de: G74 verwendet keine synchronisierte Bewegung.

note: type: Plain text
en: The 'G74' cycle is intended for tapping with floating chuck and dwell at the bottom of the hole.
de: Der 'G74' Zyklus ist für das Gewindeschneiden mit schwimmendem Spannfutter und Verweilzeit am Bohrungsgrund vorgesehen.

note: type: Plain text
en: Preliminary motion, as described in the <<gcode:preliminary-motion,Preliminary and In-Between Motion>> section.
de: Vorläufige Bewegung, wie im Abschnitt <<gcode:preliminary-motion,Preliminary and In-Between Motion>> beschrieben.

note: type: Plain text
en: Disable Feed and Speed Overrides.
de: Deaktivieren von Vorschub- und Geschwindigkeits-Neufestsetzungen (engl. overrides).

note: type: Plain text
en: Move the Z-axis at the current feed rate to the Z position.
de: Fahren Sie die Z-Achse mit der aktuellen Vorschubgeschwindigkeit in die Z-Position.

note: type: Plain text
en: Stop the selected spindle (chosen by the $ parameter)
de: Anhalten der ausgewählten Spindel (ausgewählt durch den Parameter $)

note: type: Plain text
en: Start spindle rotation clockwise.
de: Drehen der Spindel im Uhrzeigersinn.

note: type: Plain text
en: Dwell for the P number of seconds.
de: Verweilen für die Anzahl von P Sekunden.

note: type: Plain text
en: Move the Z-axis at the current feed rate to clear Z
de: Bewegen Sie der Z-Achse mit der aktuellen Vorschubgeschwindigkeit, um Z zu löschen

note: type: Plain text
en: Restore Feed and Speed override enables to previous state
de: Wiederherstellung der Vorschub- und Geschwindigkeitsneufestsetzung-Aktivierung in den vorherigen Zustand

note: type: Plain text
en: The length of the dwell is specified by a 'P-' word in the G74 block.  The feed rate 'F-' is spindle speed multiplied by distance per revolution (thread pitch).  In example S100 with 1.25MM per revolution thread pitch gives a feed of F125.
de: Die Länge der Verweilzeit wird durch ein 'P-'-Wort im G74-Satz angegeben.  Die Vorschubgeschwindigkeit 'F-' ist die Spindeldrehzahl multipliziert mit dem Abstand pro Umdrehung (Gewindesteigung).  Im Beispiel S100 mit 1,25mm pro Umdrehung Gewindesteigung ergibt einen Vorschub von F125.

note: type: Title ==
en: G76 Threading Cycle(((G76 Threading Cycle)))
de: G76 Gewindeschneidzyklus(((G76 Gewindeschneidzyklus)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: G76 Threading
de: G76 Gewindeschneiden

note: type: Plain text
en: 'Drive Line' - A line through the initial X position parallel to the Z.
de: 'Drive Line' - Eine Linie durch die anfängliche X-Position parallel zum Z.

note: type: Plain text
en: 'P-' - The 'thread pitch' in distance per revolution.
de: 'P-' - Die 'Gewindesteigung' in Abstand pro Umdrehung.

note: type: Plain text
en: 'Z-' - The final position of threads. At the end of the cycle the tool will be at this Z position.
de: 'Z-' - Die endgültige Position von Windungen. Am Ende des Zyklus befindet sich das Werkzeug an dieser Z-Position.

note: type: Plain text
en: When G7 'Lathe Diameter Mode' is in force the values for 'I', 'J' and 'K' are diameter measurements. When G8 'Lathe Radius Mode' is in force the values for 'I', 'J' and 'K' are radius measurements.
de: Wenn G7 'Drehmaschinen Durchmesser Modus' (engl. Lathe Diameter Mode') aktiv ist, sind die Werte für 'I', 'J' und 'K' Durchmessermessungen. Wenn G8 'Drehradiusmodus' in Kraft ist, sind die Werte für 'I', 'J' und 'K' Radiusmessungen.

note: type: Plain text
en: 'I-' - The 'thread peak' offset from the 'drive line'.  Negative 'I' values are external threads, and positive 'I' values are internal threads.  Generally the material has been turned to this size before the 'G76' cycle.
de: 'I-' - Die 'Gewindespitze' (engl. thread peak), die von der 'Antriebslinie' (engl. drive line) versetzt ist.  Negative 'I'-Werte sind Außengewinde und positive 'I'-Werte sind Innengewinde.  Im Allgemeinen wurde das Material vor dem 'G76'-Zyklus auf diese Größe gedreht.

note: type: Plain text
en: 'J-' - A positive value specifying the 'initial cut depth'.  The first threading cut will be 'J' beyond the 'thread peak' position.
de: 'J-' - Ein positiver Wert, der die "anfängliche Schnitttiefe" angibt.  Der erste Gewindeschnitt liegt 'J' hinter der 'Gewindespitzen'-Position.

note: type: Plain text
en: 'K-' - A positive value specifying the 'full thread depth'.  The final threading cut will be 'K' beyond the 'thread peak' position.
de: ' K-' - Ein positiver Wert, der die 'volle Gewindetiefe' angibt.  Der endgültige Gewindeschnitt liegt 'K' über der 'Gewindespitzenposition'.

note: type: Plain text
en: Optional settings
de: Optionale Einstellungen

note: type: Plain text
en: '$-' - The spindle number to which the motion will be synchronised (default 0).  For example is $1 is programmed then the motion will begin on the reset od spindle.1.index-enable and proceed in synchrony with the value of spindle.1.revs
de: $-' - Die Spindelnummer, mit der die Bewegung synchronisiert werden soll (Standardwert 0).  Wird z.B. $1 programmiert, beginnt die Bewegung mit dem Reset von spindle.1.index-enable und verläuft synchron mit dem Wert von spindle.1.revs

note: type: Plain text
en: 'R-' - The 'depth degression'. 'R1.0' selects constant depth on successive threading passes. 'R2.0' selects constant area.  Values between 1.0 and 2.0 select decreasing depth but increasing area.  Values above 2.0 select decreasing area.  Beware that unnecessarily high degression values will cause a large number of passes to be used. (degression = a descent by stages or steps.)
de: 'R-' - Die 'Tiefendegression'. 'R1.0' wählt eine konstante Tiefe bei aufeinanderfolgenden Einfädelgängen. 'R2.0' wählt eine konstante Fläche.  Werte zwischen 1,0 und 2,0 wählen eine abnehmende Tiefe bei zunehmender Fläche.  Werte über 2,0 wählen eine abnehmende Fläche.  Beachten Sie, dass unnötig hohe Degressionswerte dazu führen, dass eine große Anzahl von Durchgängen verwendet wird. (Degression = ein stufenweiser Abstieg)

note: type: Plain text
en: Unnecessarily high degression values will produce an unnecessarily high number of passes. (degressing = dive in stages)
de: Unnötig hohe Degressionswerte führen zu einer unnötig hohen Anzahl von Durchgängen. (Degression = Tauchen in Stufen)

note: type: Plain text
en: 'Q-' - The 'compound slide angle' is the angle (in degrees) describing to what extent successive passes should be offset along the drive line.  This is used to cause one side of the tool to remove more material than the other. A positive 'Q' value causes the leading edge of the tool to cut more heavily.  Typical values are 29, 29.5 or 30.
de: 'Q-' - Der 'zusammengesetzte Gleitwinkel' ist der Winkel (in Grad), der beschreibt, inwieweit aufeinanderfolgende Durchgänge entlang der Antriebslinie versetzt sein sollten.  Dies wird verwendet, um eine Seite des Werkzeugs zu veranlassen, mehr Material als die andere zu entfernen. Ein positiver 'Q'-Wert bewirkt, dass die Vorderkante des Werkzeugs stärker schneidet.  Typische Werte sind 29, 29,5 oder 30.

note: type: Plain text
en: 'H-' - The number of 'spring passes'.  Spring passes are additional passes at full thread depth.  If no additional passes are desired, program 'H0'.
de: ' H-' - Die Anzahl der "Frühjahrsdurchgänge" (engl. spring/finishing passes).  Solche abschließenden Durchgänge sind zusätzliche Durchgänge bei voller Gewindetiefe.  Wenn keine zusätzlichen Durchgänge gewünscht sind, programmieren Sie 'H0'.

note: type: Plain text
en: Thread entries and exits can be programmed tapered with the 'E' and 'L' values.
de: Die Gewindeein- und -ausgänge können mit den Werten "E" und "L" konisch programmiert werden.

note: type: Plain text
en: 'E-' - Specifies the distance along the drive line used for the taper.  The angle of the taper will be so the last pass tapers to the thread crest over the distance specified with E.  'E0.2' will give a taper for the first/last 0.2 length units along the thread.  For a 45 degree taper program E the same as K.
de: 'E-' - Gibt den Abstand entlang der Antriebslinie an, der für die Verjüngung verwendet wird.  Der Winkel der Verjüngung ist so, dass sich der letzte Durchgang über die mit E angegebene Strecke zum Gewindescheitel verjüngt. 'E0.2' ergibt eine Verjüngung für die ersten/letzten 0,2 Längeneinheiten entlang des Gewindes.  Für eine 45 Grad Verjüngung programmieren Sie E wie K.

note: type: Plain text
en: 'L-' - Specifies which ends of the thread get the taper.  Program 'L0' for no taper (the default), 'L1' for entry taper, 'L2' for exit taper, or 'L3' for both entry and exit tapers.  Entry tapers will pause at the drive line to synchronize with the index pulse then move at the <<sec:set-feed-rate,feed rate>> in to the beginning of the taper. No entry taper and the tool will rapid to the cut depth then synchronize and begin the cut.
de: L-' - Gibt an, welche Enden des Gewindes die Verjüngung erhalten.  Programmieren Sie 'L0' für keine Verjüngung (der Ausgangswert), 'L1' für Eingangsverjüngung, 'L2' für Ausgangsverjüngung oder 'L3' für Eingangs- und Ausgangsverjüngung.  Einlaufkegel halten an der Antriebslinie an, um sich mit dem Indeximpuls zu synchronisieren, und bewegen sich dann mit <<sec:set-feed-rate,feed rate>> zum Anfang des Kegels. Ohne Einfahrkegel fährt das Werkzeug im Eilgang auf die Schnitttiefe, synchronisiert sich und beginnt den Schnitt.

note: type: Plain text
en: The tool is moved to the initial X and Z positions prior to issuing the G76. The X position is the 'drive line' and the Z position is the start of the threads.
de:  Das Werkzeug wird vor der Ausgabe des G76 in die X- und Z-Ausgangsposition gefahren. Die X-Position ist die "Antriebslinie" und die Z-Position ist der Beginn des Gewindes.

note: type: Plain text
en: The tool will pause briefly for synchronization before each threading pass, so a relief groove will be required at the entry unless the beginning of the thread is past the end of the material or an entry taper is used.
de: Das Werkzeug macht vor jedem Gewindedurchgang eine kurze Synchronisationspause, so dass eine Entlastungsnut am Einlauf erforderlich ist, es sei denn, der Gewindeanfang liegt hinter dem Ende des Materials oder es wird ein Einlaufkegel verwendet.

note: type: Plain text
en: Unless using an exit taper, the exit move is not synchronized to the spindle speed and will be a <<gcode:g0,rapid move>>. With a slow spindle, the exit move might take only a small fraction of a revolution. If the spindle speed is increased after several passes are complete, subsequent exit moves will require a larger portion of a revolution, resulting in a very heavy cut during the exit move. This can be avoided by providing a relief groove at the exit, or by not changing the spindle speed while threading.
de: Wird kein Ausgangskegel verwendet, ist die Ausgangsbewegung nicht mit der Spindeldrehzahl synchronisiert und wird ein <<gcode:g0,Eilgang>> sein. Bei einer langsamen Spindel kann die Ausfahrbewegung nur einen kleinen Bruchteil einer Umdrehung dauern. Wenn die Spindeldrehzahl nach mehreren Durchgängen erhöht wird, benötigen die nachfolgenden Ausfahrbewegungen einen größeren Teil einer Umdrehung, was zu einem sehr starken Schnitt während der Ausfahrbewegung führt. Dies kann vermieden werden, indem eine Entlastungsnut am Ausgang vorgesehen wird oder indem die Spindeldrehzahl während des Gewindeschneidens nicht verändert wird.

note: type: Plain text
en: The final position of the tool will be at the end of the 'drive line'.  A safe Z move will be needed with an internal thread to remove the tool from the hole.
de: Die endgültige Position des Werkzeugs befindet sich am Ende der "Antriebslinie".  Um das Werkzeug aus der Bohrung zu entfernen, ist eine sichere Z-Bewegung mit einem Innengewinde erforderlich.

note: type: Plain text
en: The active plane is not the ZX plane.
de: Die aktive Ebene ist nicht die ZX-Ebene.

note: type: Plain text
en: Other axis words, such as X- or Y-, are specified.
de: Andere Achsenbezeichnungen wie X- oder Y- werden angegeben.

note: type: Plain text
en: The 'R-' degression value is less than 1.0.
de:  Der 'R-' Degressionswert ist kleiner als 1,0.

note: type: Plain text
en: All the required words are not specified.
de: Es sind nicht alle erforderlichen Angaben enthalten.

note: type: Plain text
en: 'P-', 'J-', 'K-' or 'H-' is negative.
de: "P-", "J-", "K-" oder "H-" ist negativ.

note: type: Plain text
en: 'E-' is greater than half the drive line length.
de: "E-" ist größer als die halbe Länge der Antriebslinie.

note: type: Plain text
en: The pins 'spindle.N.at-speed' and the 'encoder.n.phase-Z' for the spindle must be connected in your HAL file before G76 will work.  See the <<sec:motion-pins,spindle>> pins in the Motion section for more information.
de: Die Pins 'spindle.N.at-speed' und 'encoder.n.phase-Z' für die Spindel müssen in Ihrer HAL-Datei angeschlossen sein, damit G76 funktioniert.  Siehe die <<sec:motion-pins,Spindel>>-Pins im Abschnitt Bewegung für weitere Informationen.

note: type: Plain text
en: The G76 canned cycle is based on the G33 Spindle Synchronized Motion.  For more information see the G33 <<gcode:g33-tech-info,Technical Info>>.
de: Der G76 Festzyklus basiert auf der G33 Spindel-Synchronbewegung.  Weitere Informationen finden Sie in der G33 <<gcode:g33-tech-info,Technical Info>>.

note: type: Plain text
en: The sample program 'g76.ngc' shows the use of the G76 canned cycle, and can be previewed and executed on any machine using the 'sim/lathe.ini' configuration.
de: Das Beispielprogramm 'g76.ngc' zeigt die Verwendung des G76-Festzyklus und kann auf jeder Maschine mit der Konfiguration 'sim/lathe.ini' angezeigt und ausgeführt werden.

note: type: Block title
en: G76 Example Code
de: G76 Beispielcode

note: type: Plain text
en: In the figure the tool is in the final position after the G76 cycle is completed. You can see the entry path on the right from the Q29.5 and the exit path on the left from the L2 E0.045. The white lines are the cutting moves.
de: In der Abbildung befindet sich das Werkzeug in der Endposition, nachdem der G76-Zyklus abgeschlossen ist. Sie sehen rechts den Einfahrweg vom Q29.5 und links den Ausfahrweg vom L2 E0.045. Die weißen Linien sind die Schnittbewegungen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: G76 Example
de: G76 Beispiel

note: type: Plain text
en: The canned cycles 'G81' through 'G89' and the canned cycle stop 'G80' are described in this section.
de: In diesem Abschnitt werden die Festzyklen 'G81' bis 'G89' und der Festzyklusstopp 'G80' beschrieben.

note: type: Plain text
en: All canned cycles are performed with respect to the currently-selected plane. Any of the nine planes may be selected. Throughout this section, most of the descriptions assume the XY-plane has been selected. The behavior is analogous if another plane is selected, and the correct words must be used. For instance, in the 'G17.1' plane, the action of the canned cycle is along W, and the locations or increments are given with U and V. In this case substitute U,V,W for X,Y,Z in the instructions below.
de: Alle Festzyklen werden in Bezug auf die aktuell gewählte Ebene ausgeführt. Jede der neun Ebenen kann ausgewählt werden. In diesem Abschnitt wird bei den meisten Beschreibungen davon ausgegangen, dass die XY-Ebene ausgewählt wurde. Das Verhalten ist analog, wenn eine andere Ebene gewählt wird, und es müssen die richtigen Worte verwendet werden. In der Ebene "G17.1" zum Beispiel verläuft die Wirkung des Festzyklus entlang W, und die Positionen oder Inkremente werden mit U und V angegeben.

note: type: Plain text
en: Rotary axis words are not allowed in canned cycles. When the active plane is one of the XYZ family, the UVW axis words are not allowed. Likewise, when the active plane is one of the UVW family, the XYZ axis words are not allowed.
de: Drehachsenbegriffe sind in Festzyklen nicht erlaubt. Wenn die aktive Ebene zur XYZ-Familie gehört, sind die UVW-Achsenwörter nicht erlaubt. Wenn die aktive Ebene zur UVW-Familie gehört, sind die XYZ-Achsenwörter ebenfalls nicht erlaubt.

note: type: Title ===
en: Common Words
de: Geläufige Begriffe

note: type: Plain text
en: All canned cycles use X, Y, Z, or U, V, W groups depending on the plane selected and R words. The R (usually meaning retract) position is along the axis perpendicular to the currently selected plane (Z-axis for XY-plane, etc.) Some canned cycles use additional arguments.
de: Alle Festzyklen verwenden X-, Y-, Z- oder U-, V-, W-Gruppen, je nach gewählter Ebene und R-Wort. Die R-Position (in der Regel bedeutet sie Rückzug) befindet sich entlang der Achse, die senkrecht zur aktuell gewählten Ebene steht (Z-Achse für XY-Ebene usw.) Einige Festzyklen verwenden zusätzliche Argumente.

note: type: Title ===
en: Sticky Words
de: Anhaftende Begriffe

note: type: Plain text
en: For canned cycles, we will call a number 'sticky' if, when the same cycle is used on several lines of code in a row, the number must be used the first time, but is optional on the rest of the lines. Sticky numbers keep their value on the rest of the lines if they are not explicitly programmed to be different. The R number is always sticky.
de: Bei Festzyklen bezeichnen wir eine Zahl als "haftend" (engl. sticky), wenn derselbe Zyklus in mehreren aufeinanderfolgenden Codezeilen verwendet wird und die Zahl beim ersten Mal verwendet werden muss, aber in den übrigen Zeilen optional ist. Sticky-Zahlen behalten ihren Wert in den übrigen Zeilen bei, wenn sie nicht ausdrücklich anders programmiert sind. Die R-Nummer ist immer "sticky".

note: type: Plain text
en: In incremental distance mode X, Y, and R numbers are treated as increments from the current position and Z as an increment from the Z-axis position before the move involving Z takes place. In absolute distance mode, the X, Y, R, and Z numbers are absolute positions in the current coordinate system.
de: Im inkrementellen Abstandsmodus werden die X-, Y- und R-Zahlen als Inkremente von der aktuellen Position und Z als Inkrement von der Position der Z-Achse behandelt, bevor die Bewegung mit Z stattfindet. Im absoluten Abstandsmodus sind die X-, Y-, R- und Z-Zahlen absolute Positionen im aktuellen Koordinatensystem.

note: type: Title ===
en: Repeat Cycle
de: Zyklus wiederholen

note: type: Plain text
en: The L number is optional and represents the number of repeats.  L=0 is not allowed. If the repeat feature is used, it is normally used in incremental distance mode, so that the same sequence of motions is repeated in several equally spaced places along a straight line. When L- is greater than 1 in incremental mode with the XY-plane selected, the X and Y positions are determined by adding the given X and Y numbers either to the current X and Y positions (on the first go-around) or to the X and Y positions at the end of the previous go-around (on the repetitions). Thus, if you program 'L10' , you will get 10 cycles. The first cycle will be distance X,Y from the original location. The R and Z positions do not change during the repeats. The L number is not sticky. In absolute distance mode, L>1 means 'do the same cycle in the same place several times', Omitting the L word is equivalent to specifying L=1.
de: Die Angabe L ist optional und gibt die Anzahl der Wiederholungen an.  L=0 ist nicht erlaubt. Wird die Wiederholungsfunktion verwendet, dann wird sie normalerweise im inkrementellen Abstandsmodus eingesetzt, so dass dieselbe Bewegungssequenz an mehreren gleichmäßig verteilten Stellen entlang einer geraden Linie wiederholt wird. Wenn L- im inkrementellen Modus bei ausgewählter XY-Ebene größer als 1 ist, werden die X- und Y-Positionen durch Addition der angegebenen X- und Y-Zahlen entweder zu den aktuellen X- und Y-Positionen (beim ersten Durchgang) oder zu den X- und Y-Positionen am Ende des vorherigen Durchgangs (bei den Wiederholungen) bestimmt. Wenn Sie also 'L10' programmieren, erhalten Sie 10 Zyklen. Der erste Zyklus ist die Entfernung X,Y von der ursprünglichen Position. Die Positionen R und Z ändern sich während der Wiederholungen nicht. Die L-Nummer ist nicht unveränderlich. Im absoluten Abstandsmodus bedeutet L>1, dass der gleiche Zyklus mehrmals an der gleichen Stelle durchgeführt wird. Das Weglassen des L-Werts ist gleichbedeutend mit der Angabe von L=1.

note: type: Title ===
en: Retract Mode
de: Rückzugsmodus

note: type: Plain text
en: The height of the retract move at the end of each repeat (called 'clear Z' in the descriptions below) is determined by the setting of the retract mode, either to the original Z position (if that is above the R position and the retract mode is 'G98', OLD_Z), or otherwise to the R position. See the <<gcode:g98-g99,G98 G99>> section.
de: Die Höhe der Rückzugsbewegung am Ende jeder Wiederholung (in den folgenden Beschreibungen als 'clear Z' bezeichnet) wird durch die Einstellung des Rückzugsmodus bestimmt, entweder auf die ursprüngliche Z-Position (wenn diese über der R-Position liegt und der Rückzugsmodus 'G98', OLD_Z, ist), oder andernfalls auf die R-Position. Siehe den Abschnitt <<gcode:g98-g99,G98 G99>>.

note: type: Title ===
en: Canned Cycle Errors(((Canned Cycle Errors)))
de: Festzyklusfehler(((Festzyklusfehler)))

note: type: Plain text
en: axis words are all missing during a canned cycle,
de: alle Achsenwörter während eines Festzyklus fehlen,

note: type: Plain text
en: axis words from different groups (XYZ) (UVW) are used together,
de: Achsenwörter aus verschiedenen Gruppen (XYZ) (UVW) zusammen verwendet werden,

note: type: Plain text
en: a P number is required and a negative P number is used,
de: eine P-Nummer erforderlich ist und eine negative P-Nummer verwendet wird,

note: type: Plain text
en: an L number is used that does not evaluate to a positive integer,
de: eine L-Zahl verwendet wird, die nicht als positive ganze Zahl ausgewertet werden kann,

note: type: Plain text
en: rotary axis motion is used during a canned cycle,
de: die Bewegung der Drehachse während eines Festzyklus verwendet wird,

note: type: Plain text
en: inverse time feed rate is active during a canned cycle,
de: während eines Festzyklus ist die inverse Zeitvorschubgeschwindigkeit aktiv ist,

note: type: Plain text
en: or cutter compensation is active during a canned cycle.
de: oder Fräserkompensation während eines Festzyklus aktiv ist.

note: type: Plain text
en: If the XY plane is active, the Z number is sticky, and it is an error if:
de: Bei aktiver XY-Ebene aktiv ist die Z-Nummer nicht veränderbar, und es ist ein Fehler, wenn:

note: type: Plain text
en: the Z number is missing and the same canned cycle was not already active,
de: die Z-Nummer fehlt und derselbe Festzyklus nicht bereits aktiv war,

note: type: Plain text
en: or the R number is less than the Z number.
de: oder die R-Zahl kleiner ist als die Z-Zahl.

note: type: Plain text
en: If other planes are active, the error conditions are analogous to the XY conditions above.
de: Wenn andere Ebenen aktiv sind, gelten die Fehlerbedingungen analog zu den obigen XY-Bedingungen.

note: type: Title ===
en: Preliminary and In-Between Motion
de: Vorläufige und zwischenzeitliche Bewegung

note: type: Plain text
en: Preliminary motion is a set of motions that is common to all of the milling canned cycles. If the current Z position is below the R position, the Z axis does a <<gcode:g0,rapid move>> to the R position. This happens only once, regardless of the value of L.
de: Die Vorbewegung ist eine Reihe von Bewegungen, die für alle feststehenden Fräszyklen gelten. Wenn die aktuelle Z-Position unterhalb der R-Position liegt, führt die Z-Achse einen <<gcode:g0,Eilgang>> zur R-Position aus. Dies geschieht nur einmal, unabhängig vom Wert von L.

note: type: Plain text
en: In addition, at the beginning of the first cycle and each repeat, the following one or two moves are made:
de: Darüber hinaus werden zu Beginn des ersten Zyklus und bei jeder Wiederholung die folgenden ein oder zwei Schritte ausgeführt:

note: type: Plain text
en: A <<gcode:g0,rapid move>> parallel to the XY-plane to the given XY-position.
de: Ein <<gcode:g0,Eilgang>> parallel zur XY-Ebene zur angegebenen XY-Position.

note: type: Plain text
en: The Z-axis make a rapid move to the R position, if it is not already at the R position.
de: Die Z-Achse fährt im Eiltempo in die R-Position, wenn sie sich nicht bereits in der R-Position befindet.

note: type: Plain text
en: If another plane is active, the preliminary and in-between motions are analogous.
de: Wenn eine andere Ebene aktiv ist, sind die vorbereitenden und die dazwischen liegenden Bewegungen analog.

note: type: Title ===
en: Why use a canned cycle?
de: Warum ein Canned Cycle (Zyklus aus der Konserve)?

note: type: Plain text
en: There are at least two reasons for using canned cycles. The first is the economy of code. A single bore would take several lines of code to execute.
de: Es gibt mindestens zwei Gründe für die Verwendung von Zyklen aus der Konserve. Der erste ist die Einsparung von Code. Eine einzige Bohrung würde mehrere Codezeilen benötigen, um ausgeführt zu werden.

note: type: Plain text
en: The G81 <<gcode:g81-example,Example 1>> demonstrates how a canned cycle could be used to produce 8 holes with ten lines of G-code within the canned cycle mode.  The program below will produce the same set of 8 holes using five lines for the canned cycle. It does not follow exactly the same path nor does it drill in the same order as the earlier example. But the program writing economy of a good canned cycle should be obvious.
de: Die G81 <<gcode:g81-example,Example 1>> demonstriert, wie ein Festzyklus verwendet werden kann, um 8 Löcher mit zehn Zeilen G-Code im Festzyklusmodus zu erzeugen.  Das folgende Programm erzeugt den gleichen Satz von 8 Löchern mit fünf Zeilen für den Festzyklus. Es folgt nicht genau dem gleichen Pfad und bohrt auch nicht in der gleichen Reihenfolge wie das frühere Beispiel. Aber die Wirtschaftlichkeit eines guten Festzyklus beim Programmieren sollte offensichtlich sein.

note: type: Plain text
en: Line numbers are not needed but help clarify these examples.
de: Zeilennummern sind nicht erforderlich, dienen aber der Verdeutlichung dieser Beispiele.

note: type: Block title
en: Eight Holes
de: Acht Löcher

note: type: delimited block -
en: N100 G90 G0 X0 Y0 Z0 (move coordinate home)
    N110 G1 F10 X0 G4 P0.1
    N120 G91 G81 X1 Y0 Z-1 R1 L4(canned drill cycle)
    N130 G90 G0 X0 Y1
    N140 Z0
    N150 G91 G81 X1 Y0 Z-0.5 R1 L4(canned drill cycle)
    N160 G80 (turn off canned cycle)
    N170 M2 (program end)
de: N100 G90 G0 X0 Y0 Z0 (Koordinate zum Referenzpunkt setzen)
    N110 G1 F10 X0 G4 P0.1
    N120 G91 G81 X1 Y0 Z-1 R1 L4 (Festbohrzyklus)
    N130 G90 G0 X0 Y1
    N140 Z0
    N150 G91 G81 X1 Y0 Z-0,5 R1 L4(Festbohrzyklus)
    N160 G80 (Ausschalten des Festzyklus)
    N170 M2 (Programmende)

note: type: Plain text
en: The G98 on the second line above means that the return move will be to the Z value on the first line since it is higher than the specified R value.
de: Das G98 in der zweiten Zeile oben bedeutet, dass der Rücklauf auf den Z-Wert in der ersten Zeile erfolgt, da dieser höher ist als der angegebene R-Wert.

note: type: Block title
en: Twelve Holes in a Square
de: Zwölf Löcher im Viereck

note: type: Plain text
en: This example demonstrates the use of the L word to repeat a set of incremental drill cycles for successive blocks of code within the same G81 motion mode. Here we produce 12 holes using five lines of code in the canned motion mode.
de: Dieses Beispiel demonstriert die Verwendung des L Werts, um eine Reihe von inkrementellen Bohrzyklen für aufeinanderfolgende Codeblöcke innerhalb desselben G81 Bewegungsmodus zu wiederholen. In diesem Beispiel werden 12 Bohrungen mit fünf Codezeilen im Modus "Festgelegte Bewegung" erzeugt.

note: type: delimited block -
en: N1000 G90 G0 X0 Y0 Z0 (move coordinate home)
    N1010 G1 F50 X0 G4 P0.1
    N1020 G91 G81 X1 Y0 Z-0.5 R1 L4 (canned drill cycle)
    N1030 X0 Y1 R0 L3 (repeat)
    N1040 X-1 Y0 L3 (repeat)
    N1050 X0 Y-1 L2 (repeat)
    N1060 G80 (turn off canned cycle)
    N1070 G90 G0 X0 (rapid move home)
    N1080 Y0
    N1090 Z0
    N1100 M2 (program end)
de: N1000 G90 G0 X0 Y0 Z0 (Koordinate zum Referenzpunkt verschieben)
    N1010 G1 F50 X0 G4 P0.1
    N1020 G91 G81 X1 Y0 Z-0.5 R1 L4 (Festbohrzyklus)
    N1030 X0 Y1 R0 L3 (Wiederholung)
    N1040 X-1 Y0 L3 (Wiederholung)
    N1050 X0 Y-1 L2 (Wiederholung)
    N1060 G80 (Ausschalten des Festzyklus)
    N1070 G90 G0 X0 (Eilgang nach Hause)
    N1080 Y0
    N1090 Z0
    N1100 M2 (Programmende)

note: type: Plain text
en: The second reason to use a canned cycle is that they all produce preliminary moves and returns that you can anticipate and control regardless of the start point of the canned cycle.
de: Der zweite Grund für die Verwendung eines festen Zyklus ist, dass alle diese Zyklen vorläufige Bewegungen und Erträge erzeugen, die Sie unabhängig vom Startpunkt des festen Zyklus vorhersehen und kontrollieren können.

note: type: Title ==
en: G80 Cancel Canned Cycle(((G80 Cancel Modal Motion)))
de: G80 Festzyklus (engl. canned cycle) abbrechen(((G80 Modal Motion abbrechen)))

note: type: Plain text
en: 'G80' - cancel canned cycle modal motion. 'G80' is part of modal group 1, so programming any other G-code from modal group 1 will also cancel the canned cycle.
de: 'G80' - Aufhebung der modalen Bewegung des Festzyklus. 'G80' ist Teil der Modalgruppe 1, so dass die Programmierung eines anderen G-Codes aus der Modalgruppe 1 auch den Festzyklus aufhebt.

note: type: Plain text
en: Axis words are programmed when G80 is active.
de: Achs-Worte werden bei aktivem G80 programmiert.

note: type: Block title
en: G80 Example
de: G80 Beispiel

note: type: delimited block -
en: G90 G81 X1 Y1 Z1.5 R2.8 (absolute distance canned cycle)
    G80 (turn off canned cycle motion)
    G0 X0 Y0 Z0 (rapid move to coordinate home)
de: G90 G81 X1 Y1 Z1.5 R2.8 (Festzyklus mit absolutem Abstand)
    G80 (Ausschalten der Festzyklusbewegung)
    G0 X0 Y0 Z0 (Eilgang zum Koordinatenursprung)

note: type: Plain text
en: The following code produces the same final position and machine state as the previous code.
de: Der folgende Code ergibt dieselbe Endposition und denselben Maschinenzustand wie der vorherige Code.

note: type: delimited block -
en: G90 G81 X1 Y1 Z1.5 R2.8 (absolute distance canned cycle)
    G0 X0 Y0 Z0 (rapid move to coordinate home)
de: G90 G81 X1 Y1 Z1.5 R2.8 (absoluter Abstand im Festzyklus)
    G0 X0 Y0 Z0 (Eilgang zum Koordinatenursprung)

note: type: Plain text
en: The advantage of the first set is that, the G80 line clearly turns off the G81 canned cycle. With the first set of blocks, the programmer must turn motion back on with G0, as is done in the next line, or any other motion mode G word.
de: Der Vorteil des ersten Satzes ist, dass die G80-Zeile den G81-Festzyklus eindeutig ausschaltet. Mit dem ersten Satz von Sätzen muss der Programmierer die Bewegung mit G0 wieder einschalten, wie es in der nächsten Zeile geschieht, oder mit einem anderen Bewegungsmodus-G-Wort.

note: type: Plain text
en: If a canned cycle is not turned off with G80 or another motion word, the canned cycle will attempt to repeat itself using the next block of code that contains an X, Y, or Z word. The following file drills (G81) a set of eight holes as shown in the following caption.
de: Wenn ein Festzyklus nicht mit G80 oder einem anderen Bewegungswort ausgeschaltet wird, versucht der Festzyklus, sich mit dem nächsten Codesatz zu wiederholen, der ein X-, Y- oder Z-Wort enthält. Die folgende Datei bohrt (G81) einen Satz von acht Löchern, wie in der folgenden Beschriftung gezeigt.

note: type: Block title
en: G80 Example 1
de: G80 Beispiel 1

note: type: delimited block -
en: N100 G90 G0 X0 Y0 Z0 (coordinate home)
    N110 G1 X0 G4 P0.1
    N120 G81 X1 Y0 Z0 R1 (canned drill cycle)
    N130 X2
    N140 X3
    N150 X4
    N160 Y1 Z0.5
    N170 X3
    N180 X2
    N190 X1
    N200 G80 (turn off canned cycle)
    N210 G0 X0 (rapid move home)
    N220 Y0
    N230 Z0
    N240 M2 (program end)
de: N100 G90 G0 X0 Y0 Z0 (Koordinatenheimat)
    N110 G1 X0 G4 P0.1
    N120 G81 X1 Y0 Z0 R1 (Festbohrzyklus)
    N130 X2
    N140 X3
    N150 X4
    N160 Y1 Z0.5
    N170 X3
    N180 X2
    N190 X1
    N200 G80 (Ausschalten des Festzyklus)
    N210 G0 X0 (Eilgang nach Hause)
    N220 Y0
    N230 Z0
    N240 M2 (Programmende)

note: type: Plain text
en: Notice the Z position change after the first four holes.  Also, this is one of the few places where line numbers have some value, being able to point a reader to a specific line of code.
de: Beachten Sie die Änderung der Z-Position nach den ersten vier Löchern.  Außerdem ist dies eine der wenigen Stellen, an denen Zeilennummern einen gewissen Wert haben, da sie den Leser auf eine bestimmte Codezeile verweisen können.

note: type: Plain text
en: The use of G80 in line N200 is optional because the G0 on the next line will turn off the G81 cycle. But using the G80 as shown in Example 1, will provide for easier to read canned cycle. Without it, it is not so obvious that all of the blocks between N120 and N200 belong to the canned cycle.
de: Die Verwendung von G80 in Zeile N200 ist optional, da das G0 in der nächsten Zeile den G81-Zyklus ausschaltet. Aber die Verwendung von G80, wie in Beispiel 1 gezeigt, macht den Festzyklus leichter lesbar. Ohne G80 ist es nicht so offensichtlich, dass alle Blöcke zwischen N120 und N200 zum Festzyklus gehören.

note: type: Title ==
en: G81 Drilling Cycle(((G81 Drilling Cycle)))
de: G81 Bohrzyklus (((G81 Bohrzyklus)))

note: type: delimited block -
en: G81 (X- Y- Z-) or (U- V- W-) R- L-
de: G81 (X- Y- Z-) oder (U- V- W-) R- L-

note: type: Plain text
en: The 'G81' cycle is intended for drilling.
de: Der 'G81'-Zyklus ist für Bohrungen bestimmt.

note: type: Plain text
en: The cycle functions as follows:
de: Der Zyklus funktioniert wie folgt:

note: type: Plain text
en: Move the Z-axis at the current <<sec:set-feed-rate,feed rate>> to the Z position.
de: Fahren Sie die Z-Achse mit dem aktuellen <<sec:set-feed-rate,Vorschub>> auf die Z-Position.

note: type: Plain text
en: The Z-axis does a <<gcode:g0,rapid move>> to clear Z.
de: Die Z-Achse führt einen <<gcode:g0,Eilgang>> aus, um über Z den Weg freizumachen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: G81 Cycle
de: G81 Zyklus

note: type: Block title
en: Example 1 - Absolute Position G81
de: Beispiel 1 – Absolute Position G81

note: type: Plain text
en: Suppose the current position is (X1, Y2, Z3) and the preceding line of NC code is interpreted.
de: Angenommen, die aktuelle Position ist (X1, Y2, Z3) und die vorangehende Zeile des NC-Codes wird interpretiert.

note: type: Plain text
en: This calls for absolute distance mode (G90) and OLD_Z retract mode (G98) and calls for the G81 drilling cycle to be performed once.
de: Dies erfordert den absoluten Abstandsmodus (G90) und den OLD_Z-Rückzugsmodus (G98) sowie die einmalige Ausführung des Bohrzyklus G81.

note: type: Plain text
en: The X value and X position are 4.
de: Der X-Wert und die X-Position sind 4.

note: type: Plain text
en: The Y value and Y position are 5.
de: Der Y-Wert und die Y-Position sind 5.

note: type: Plain text
en: The Z value and Z position are 1.5.
de: Der Z-Wert und die Z-Position sind 1,5.

note: type: Plain text
en: The R value and clear Z are 2.8. OLD_Z is 3.
de: Der R-Wert und der klare (engl. clear) Z-Wert sind 2,8. OLD_Z ist 3.

note: type: Plain text
en: The following moves take place:
de: Die folgenden Bewegungen finden statt:

note: type: Plain text
en: A <<gcode:g0,rapid move>> parallel to the XY plane to (X4, Y5)
de: Im <<gcode:g0,Eilgang>> parallel zur XY-Ebene nach (X4, Y5)

note: type: Plain text
en: A rapid move move parallel to the Z-axis to (Z2.8).
de: Im Eilgang parallel zur Z-Achse nach (Z2.8).

note: type: Plain text
en: Move parallel to the Z-axis at the <<sec:set-feed-rate,feed rate>> to (Z1.5)
de: Fahrt parallel zur Z-Achse mit normalem <<sec:set-feed-rate,Vorschub>> zu (Z1.5)

note: type: Plain text
en: A rapid move parallel to the Z-axis to (Z3)
de: Im Eilgang parallel zur Z-Achse nach (Z3)

note: type: Block title
en: Example 2 - Relative Position G81
de: Beispiel 2 – Relative Position G81

note: type: Plain text
en: This calls for incremental distance mode (G91) and OLD_Z retract mode (G98). It also calls for the G81 drilling cycle to be repeated three times. The X value is 4, the Y value is 5, the Z value is -0.6 and the R value is 1.8. The initial X position is 5 (=1+4), the initial Y position is 7 (=2+5), the clear Z position is 4.8 (=1.8+3), and the Z position is 4.2 (=4.8-0.6). OLD_Z is 3.
de: Dies erfordert den inkrementellen Abstandsmodus (G91) und den OLD_Z-Rückzugsmodus (G98). Außerdem muss der Bohrzyklus G81 dreimal wiederholt werden. Der X-Wert ist 4, der Y-Wert ist 5, der Z-Wert ist -0,6 und der R-Wert ist 1,8. Die anfängliche X-Position ist 5 (=1+4), die anfängliche Y-Position ist 7 (=2+5), die freie Z-Position ist 4,8 (=1,8+3) und die Z-Position ist 4,2 (=4,8-0,6). OLD_Z ist 3.

note: type: Plain text
en: The first preliminary move is a maximum rapid move along the Z axis to (X1,Y2,Z4.8), since OLD_Z < clear Z.
de: Die erste vorläufige Bewegung ist eine maximal schnelle Bewegung entlang der Z-Achse nach (X1,Y2,Z4.8), da OLD_Z < clear Z.

note: type: Plain text
en: The first repeat consists of 3 moves.
de: Die erste Wiederholung besteht aus 3 Zügen.

note: type: Plain text
en: A <<gcode:g0,rapid move>> parallel to the XY-plane to (X5, Y7)
de: Im <<gcode:g0,Eilgang>> parallel zur XY-Ebene nach (X5, Y7)

note: type: Plain text
en: Move parallel to the Z-axis at the <<sec:set-feed-rate,feed rate>> to (Z4.2)
de: Fahrt parallel zur Z-Achse mit <<sec:set-feed-rate,Vorschub>>-Geschwindigkeit nach (Z4.2)

note: type: Plain text
en: A rapid move parallel to the Z-axis to (X5, Y7, Z4.8)
de: Im Eilgang parallel zur Z-Achse nach (X5, Y7, Z4.8)

note: type: Plain text
en: The second repeat consists of 3 moves. The X position is reset to 9 (=5+4) and the Y position to 12 (=7+5).
de: Die zweite Wiederholung besteht aus 3 Zügen. Die X-Position wird auf 9 (=5+4) und die Y-Position auf 12 (=7+5) zurückgesetzt.

note: type: Plain text
en: A <<gcode:g0,rapid move>> parallel to the XY-plane to (X9, Y12, Z4.8)
de: Im <<gcode:g0,Eilgang>> parallel zur XY-Ebene zu (X9, Y12, Z4.8)

note: type: Plain text
en: Move parallel to the Z-axis at the feed rate to (X9, Y12, Z4.2)
de: Fahrt parallel zur Z-Achse mit Vorschub-Geschwindigkeit auf (X9, Y12, Z4.2)

note: type: Plain text
en: A rapid move parallel to the Z-axis to (X9, Y12, Z4.8)
de: Eine schnelle Bewegung parallel zur Z-Achse zu (X9, Y12, Z4.8)

note: type: Plain text
en: The third repeat consists of 3 moves. The X position is reset to 13 (=9+4) and the Y position to 17 (=12+5).
de: Die dritte Wiederholung besteht aus 3 Zügen. Die X-Position wird auf 13 (=9+4) und die Y-Position auf 17 (=12+5) zurückgesetzt.

note: type: Plain text
en: A <<gcode:g0,rapid move>> parallel to the XY-plane to (X13, Y17, Z4.8)
de: Im <<gcode:g0,Eilgang>> parallel zur XY-Ebene nach (X13, Y17, Z4.8)

note: type: Plain text
en: Move parallel to the Z-axis at the feed rate to (X13, Y17, Z4.2)
de: Verfahren parallel zur Z-Achse im Vorschub bis (X13, Y17, Z4.2)

note: type: Plain text
en: A rapid move parallel to the Z-axis to (X13, Y17, Z4.8)
de: Im Eilgang parallel zur Z-Achse nach (X13, Y17, Z4.8)

note: type: Block title
en: Example 3 - Relative Position G81
de: Beispiel 3 - Relative Position G81

note: type: Plain text
en: Now suppose that you execute the first G81 block of code but from (X0, Y0, Z0) rather than from (X1, Y2, Z3).
de: Nehmen wir nun an, dass Sie den ersten G81-Codeblock ausführen, aber nicht von (X1, Y2, Z3), sondern von (X0, Y0, Z0) aus.

note: type: Plain text
en: Since OLD_Z is below the R value, it adds nothing for the motion but since the initial value of Z is less than the value specified in R, there will be an initial Z move during the preliminary moves.
de: Da OLD_Z unter dem R-Wert liegt, fügt es der Bewegung nichts hinzu, aber da der Anfangswert von Z kleiner als der in R angegebene Wert ist, wird es während der vorbereitenden Bewegungen eine anfängliche Z-Bewegung geben.

note: type: Block title
en: Example 4 - Absolute G81 R > Z
de: Beispiel 4 - Absolute G81 R > Z

note: type: Plain text
en: This is a plot of the path of motion for the second g81 block of code.
de: Dies ist eine Darstellung des Bewegungspfads für den zweiten g81-Codeblock.

note: type: Plain text
en: Since this plot starts with (X0, Y0, Z0), the interpreter adds the initial Z0 and R1.8 and rapid moves to that location. After that initial Z move, the repeat feature works the same as it did in example 3 with the final Z depth being 0.6 below the R value.
de: Da diese Darstellung mit (X0, Y0, Z0) beginnt, fügt der Interpreter die anfängliche Z0 und R1.8 hinzu und bewegt sich schnell zu dieser Position. Nach dieser anfänglichen Z-Bewegung funktioniert die Wiederholungsfunktion genauso wie in Beispiel 3, wobei die endgültige Z-Tiefe 0,6 unter dem R-Wert liegt.

note: type: Block title
en: Example 5 - Relative position R > Z
de: Beispiel 5 - Relative Position R > Z

note: type: Plain text
en: Since this plot starts with (X0, Y0, Z0), the interpreter adds the initial Z0 and R1.8 and rapid moves to that location as in 'Example 4'.  After that initial Z move, the <<gcode:g0,rapid move>> to X4 Y5 is done.  Then the final Z depth being 0.6 below the R value. The repeat function would make the Z move in the same location again.
de: Da diese Zeichnung mit (X0, Y0, Z0) beginnt, fügt der Interpreter die anfänglichen Z0 und R1.8 hinzu und bewegt sich schnell zu dieser Position wie in "Beispiel 4".  Nach dieser anfänglichen Z-Bewegung wird die <<gcode:g0,Eilgang>>-Bewegung nach X4 Y5 durchgeführt.  Die endgültige Z-Tiefe liegt dann 0,6 unter dem R-Wert. Die Wiederholungsfunktion würde die Z-Bewegung an der gleichen Stelle wiederholen.

note: type: Title ==
en: G82 Drilling Cycle, Dwell(((G82 Drilling Cycle Dwell)))
de: G82 Bohrzyklus, Verweilzeit(((G82 Bohrzyklus Verweilzeit)))

note: type: Plain text
en: The 'G82' cycle is intended for drilling with a dwell at the bottom of the hole.
de: Der Zyklus 'G82' ist für das Bohren mit einer Verweilzeit am Bohrungsgrund vorgesehen.

note: type: Plain text
en: The motion of a G82 canned cycle looks just like G81 with the addition of a dwell at the bottom of the Z move. The length of the dwell is specified by a 'P-' word in the G82 block.
de: Die Bewegung eines G82-Bohrzyklus (engl. canned cycle) sieht genauso aus wie G81 mit dem Zusatz einer Verweilzeit am Ende der Z-Bewegung. Die Länge der Verweilzeit wird durch ein 'P-'Wort im G82-Satz festgelegt.

note: type: Plain text
en: This will be similar to example 3 above, just with an added dwell of 2 seconds at the bottom of the hole.
de: Dies entspricht dem obigen Beispiel 3, nur mit einer zusätzlichen Verweilzeit von 2 Sekunden am Boden des Lochs.

note: type: Title ==
en: G83 Peck Drilling Cycle(((G83 Peck Drilling)))
de: G83 Tiefbohrzyklus mit Spanbruch und Entspänen (engl. peck drilling cycle)(((G83 Peck Drilling)))

note: type: Plain text
en: The 'G83' cycle (often called peck drilling) is intended for deep drilling ormilling with chip breaking. The retracts in this cycle clear the hole of chips and cut off any long stringers (which are common when drilling in aluminum). This cycle takes a Q number which represents a 'delta' increment along the Z-axis. The retract before final depth will always be to the 'retract' plane even if G98 is in effect. The final retract will honor the G98/99 in effect. G83 functions the same as G81 with the addition of retracts during the drilling operation.
de: Der 'G83'-Zyklus (oft als Tieflochbohren bezeichnet) ist für das Tiefbohren oder Fräsen mit Spanbruch vorgesehen. Die Rückzüge in diesem Zyklus befreien das Loch von Spänen und schneiden alle langen Spänen ab (die beim Bohren in Aluminium üblich sind). Dieser Zyklus nimmt eine Q-Zahl an, die ein "Delta"-Inkrement entlang der Z-Achse darstellt. Der Rückzug vor der Endtiefe erfolgt immer in die Rückzugsebene, auch wenn G98 aktiviert ist. Der endgültige Rückzug richtet sich nach den geltenden G98/99. G83 funktioniert wie G81 mit dem Zusatz, dass während des Bohrvorgangs zurückgezogen wird.

note: type: Plain text
en: Move the Z-axis at the current <<sec:set-feed-rate,feed rate>> downward by delta or to the Z position, whichever is less deep.
de: Die Z-Achse mit dem aktuellen <<sec:set-feed-rate,Vorschub>> um Delta nach unten oder auf die Z-Position fahren, je nachdem, was weniger tief ist.

note: type: Plain text
en: Rapid move back out to the retract plane specified by the R word.
de: Schnelles Zurückfahren auf die durch das R-Wort angegebene Rückzugsebene.

note: type: Plain text
en: Rapid move back down to the current hole bottom, less .010 of an inch or 0.254 mm.
de: Bewegen Sie sich im Eiltempo zurück zum aktuellen Bohrungsgrund, abzüglich 0,254 mm oder 0,010 Zoll.

note: type: Plain text
en: Repeat steps 2, 3, and 4 until the Z position is reached at step 2.
de: Wiederholen der Schritte 2, 3 und 4, bis die Z-Position bei Schritt 2 erreicht ist.

note: type: Title ==
en: G84 Right-hand Tapping Cycle, Dwell(((G84 Right-hand Tapping Cycle Dwell)))
de: G84 Gewindebohrzyklus (engl. right-hand tapping cycle, dwell) (((G84 Rechtsabtastzyklus Verweilzeit)))

note: type: Plain text
en: G84 does not use synchronized motion.
de: G84 verwendet keine synchronisierte Bewegung.

note: type: Plain text
en: The 'G84' cycle is intended for tapping with floating chuck and dwell at the bottom of the hole.
de: Der Zyklus 'G84' ist für das Gewindeschneiden mit schwimmendem Spannfutter und Verweilzeit am Bohrungsgrund vorgesehen.

note: type: Plain text
en: Start spindle rotation counterclockwise.
de: Starten Sie die Spindeldrehung gegen den Uhrzeigersinn.

note: type: Plain text
en: The length of the dwell is specified by a 'P-' word in the G84 block.  The feed rate 'F-' is spindle speed multiplied by distance per revolution (thread pitch).  In example S100 with 1.25MM per revolution thread pitch gives a feed of F125.
de: Die Länge der Verweilzeit wird durch ein 'P-'-Wort im G84-Satz angegeben.  Die Vorschubgeschwindigkeit 'F-' ist die Spindeldrehzahl multipliziert mit dem Abstand pro Umdrehung (Gewindesteigung).  Im Beispiel S100 mit 1,25MM pro Umdrehung Gewindesteigung ergibt einen Vorschub von F125.

note: type: Title ==
en: G85 Boring Cycle, Feed Out(((G85 Boring, Feed Out)))
de: G85 Bohrzyklus, Vorschub aus(((G85 Boring, Feed Out)))

note: type: Plain text
en: The 'G85' cycle is intended for boring or reaming, but could be used for drilling or milling.
de: Der Zyklus "G85" ist zum Bohren oder Reiben vorgesehen, kann aber auch zum Bohren oder Fräsen verwendet werden.

note: type: Plain text
en: Move the Z-axis only at the current <<sec:set-feed-rate,feed rate>> to the Z position.
de: Bewege die Z-Achse nur mit dem aktuellen <<sec:set-feed-rate, Vorschub>> zur Z-Position.

note: type: Plain text
en: Retract the Z-axis at the current feed rate to the R plane if it is lower than the initial Z.
de: Rückzug der Z-Achse mit dem aktuellen Vorschub in die R-Ebene, wenn dieser niedriger ist als der ursprüngliche Z-Wert.

note: type: Plain text
en: Retract at the traverse rate to clear Z.
de: Mit der Verfahrgeschwindigkeit einfahren, um Z zu löschen.

note: type: Title ==
en: G86 Boring Cycle, Spindle Stop, Rapid Move Out(((G86 Boring, Spindle Stop, Rapid Move Out)))
de: G86 Bohrzyklus, Spindelstopp, Eilgang(((G86 Bohrung, Spindelstopp, Eilgang)))

note: type: delimited block -
en: G86 (X- Y- Z-) or (U- V- W-) R- L- P- $-
de: G86 (X- Y- Z-) oder (U- V- W-) R- L- P- $-

note: type: Plain text
en: The 'G86' cycle is intended for boring. This cycle uses a P number for the number of seconds to dwell.
de: Der Zyklus "G86" ist für das Bohren vorgesehen. Dieser Zyklus verwendet eine P-Zahl für die Anzahl der Verweilsekunden.

note: type: Plain text
en: Stop the selected spindle turning. (Chosen by the $ parameter)
de: Stoppt die Drehung der ausgewählten Spindel. (Wird durch den Parameter $ ausgewählt)

note: type: Plain text
en: Restart the spindle in the direction it was going.
de: Starten Sie die Spindel wieder in der ursprünglichen Richtung.

note: type: Plain text
en: the spindle is not turning before this cycle is executed.
de: die Spindel sich nicht dreht, bevor dieser Zyklus ausgeführt wird.

note: type: Title ==
en: G87 Back Boring Cycle(((G87 Back Boring Cycle)))
de: G87 Rückwärtsbohrzyklus(((G87 Rückwärtsbohrzyklus)))

note: type: Plain text
en: This code is currently unimplemented in LinuxCNC. It is accepted, but the behavior is undefined.
de: Dieser Code ist derzeit nicht in LinuxCNC implementiert. Es wird akzeptiert, aber das Verhalten ist undefiniert.

note: type: Title ==
en: G88 Boring Cycle, Spindle Stop, Manual Out(((G88 Boring Cycle, Spindle Stop, Manual Out)))
de: G88 Bohrzyklus, Spindelanschlag, manueller Ausgang (((G88 Bohrzyklus, Spindelanschlag, manueller Ausgang)))

note: type: Title ==
en: G89 Boring Cycle, Dwell, Feed Out(((G89 Boring, Dwell, Feed Out)))
de: G89 Bohrzyklus, Verweilzeit, mit Vorschubgeschwindigkeit zurück(((G89 Aufbohren, Verweilzeit, Vorschub)))

note: type: Plain text
en: The 'G89' cycle is intended for boring. This cycle uses a P number, where P specifies the number of seconds to dwell.
de: Der Zyklus 'G89' ist für das Bohren vorgesehen. Dieser Zyklus verwendet eine P-Zahl, wobei P die Anzahl der zu verweilenden Sekunden angibt.

note: type: Plain text
en: Retract the Z-axis at the current feed rate to clear Z.
de: Zurückfahren der Z-Achse mit der aktuellen Vorschubgeschwindigkeit, um Z zu löschen.

note: type: Title ==
en: G90, G91 Distance Mode(((G90, G91 Distance Mode)))
de: G90, G91 Distanzmodus(((G90, G91 Distanzmodus)))

note: type: Plain text
en: 'G90' - absolute distance mode In absolute distance mode, axis numbers (X, Y, Z, A, B, C, U, V, W) usually represent positions in terms of the currently active coordinate system. Any exceptions to that rule are described explicitly in the <<gcode:g80-g89,G80 G89>> section.
de: 'G90' - absoluter Abstandsmodus Im absoluten Abstandsmodus stellen die Achsennummern (X, Y, Z, A, B, C, U, V, W) normalerweise Positionen in Bezug auf das gerade aktive Koordinatensystem dar. Alle Ausnahmen von dieser Regel werden im Abschnitt <<gcode:g80-g89,G80 G89>> ausdrücklich beschrieben.

note: type: Plain text
en: 'G91' - incremental distance mode In incremental distance mode, axis numbers usually represent increments from the current coordinate.
de: "G91' - inkrementeller Abstandsmodus. Im inkrementellen Abstandsmodus stellen die Achsennummern normalerweise Zuwächse (engl. increments) ausgehend von der aktuellen Koordinate dar.

note: type: Block title
en: G90 Example
de: G90 Beispiel

note: type: delimited block -
en: G90 (set absolute distance mode)
    G0 X2.5 (rapid move to coordinate X2.5 including any offsets in effect)
de: G90 (Einstellung des absoluten Abstandsmodus)
    G0 X2.5 (Schnellverschiebung zur Koordinate X2.5, einschließlich eventueller Offsets)

note: type: Block title
en: G91 Example
de: G91 Beispiel

note: type: delimited block -
en: G91 (set incremental distance mode)
    G0 X2.5 (rapid move 2.5 from current position along the X axis)
de: G91 (Inkrementellen Abstandsmodus einstellen)
    G0 X2.5 (Eilgang 2,5 von der aktuellen Position entlang der X-Achse)

note: type: Title ==
en: G90.1, G91.1 Arc Distance Mode(((Arc Distance Mode)))
de: G90.1, G91.1 Bogenabstandsmodus(((Bogenabstandsmodus)))

note: type: Plain text
en: 'G90.1' - absolute distance mode for I, J & K offsets.  When G90.1 is in effect I and J both must be specified with G2/3 for the XY plane or J and K for the XZ plane or it is an error.
de: 'G90.1' - absoluter Abstandsmodus für I, J und K Versatz.  Wenn G90.1 in Kraft ist, müssen I und J beide mit G2/3 für die XY-Ebene oder J und K für die XZ-Ebene angegeben werden, sonst ist es ein Fehler.

note: type: Plain text
en: 'G91.1' - incremental distance mode for I, J & K offsets.  G91.1 Returns I, J & K to their default behavior.
de: 'G91.1' - inkrementeller Abstandsmodus für I, J und K Offsets.  G91.1 Setzt I, J und K auf ihren Standardwert zurück.

note: type: Title ==
en: G92 Coordinate System Offset(((G92 Coordinate System Offset)))
de: G92 Koordinatensystem-Offset(((G92-Koordinatensystem-Offset)))

note: type: delimited block -
en: G92 axes
de: G92 Achsen

note: type: Plain text
en: Only use 'G92' after your machine has been positioned to the desired point.
de: Verwenden Sie 'G92' erst, nachdem Ihre Maschine am gewünschten Punkt positioniert wurde.

note: type: Plain text
en: 'G92' makes the current point have the coordinates you want (without motion), where the axis words contain the axis numbers you want.  All axis words are optional, except that at least one must be used.  If an axis word is not used for a given axis, the offset for that axis will be zero.
de: 'G92' bewirkt, dass der aktuelle Punkt die gewünschten Koordinaten hat (ohne Bewegung), wobei die Achsenwörter die gewünschten Achsennummern enthalten. Alle Achswörter sind optional, außer dass mindestens eines verwendet werden muss. Wenn für eine bestimmte Achse kein Achsenwort verwendet wird, ist der Offset für diese Achse null.

note: type: Plain text
en: When 'G92' is executed, the <<sec:machine-coordinate-system,origins>> of all coordinate systems move. They move such that the value of the current controlled point, in the currently active coordinate system, becomes the specified value. All of the coordinate system's origins (G53-G59.3) are offset this same distance.
de: Wenn 'G92' ausgeführt wird, verschieben sich die <<sec:machine-coordinate-system,Ursrpünge>> (engl. origins) aller Koordinatensysteme. Sie verschieben sich so, dass der Wert des aktuell kontrollierten Punktes im aktuell aktiven Koordinatensystem den angegebenen Wert annimmt. Alle Ursprünge des Koordinatensystems (G53-G59.3) werden um denselben Abstand verschoben.

note: type: Plain text
en: 'G92' uses the values stored in <<sub:numbered-parameters,parameters>> 5211-5219 as the X Y Z A B C U V W offset values for each axis.  The parameter values are 'absolute' machine coordinates in the native machine 'units' as specified in the INI file.  All axes defined in the INI file will be offset when G92 is active.  If an axis was not entered following the G92, that axis' offset will be zero.
de: G92' verwendet die in <<sub:numbered-parameters,parameters>> 5211-5219 gespeicherten Werte als X Y Z A B C U V W Offsetwerte für jede Achse.  Die Parameterwerte sind "absolute" Maschinenkoordinaten in den nativen Maschineneinheiten, wie in der INI-Datei angegeben.  Alle in der INI-Datei definierten Achsen werden versetzt, wenn G92 aktiv ist.  Wenn eine Achse nach G92 nicht eingegeben wurde, ist der Offset dieser Achse Null.

note: type: Plain text
en: For example, suppose the current point is at X=4 and there is currently no 'G92' offset active. Then 'G92 X7' is programmed. This moves all origins -3 in X, which causes the current point to become X=7. This -3 is saved in parameter 5211.
de: Angenommen, der aktuelle Punkt befindet sich bei X=4 und es ist derzeit kein 'G92'-Offset aktiv. Dann wird 'G92 X7' programmiert. Dadurch werden alle Ursprünge um -3 in X verschoben, wodurch der aktuelle Punkt zu X=7 wird. Diese -3 wird in Parameter 5211 gespeichert.

note: type: Plain text
en: Being in incremental distance mode (G91 instead of G90) has no effect on the action of 'G92'.
de: Der inkrementelle Entfernungsmodus (G91 statt G90) hat keinen Einfluss auf die Wirkung von 'G92'.

note: type: Plain text
en: 'G92' offsets may be already be in effect when the 'G92' is called.  If this is the case, the offset is replaced with a new offset that makes the current point become the specified value.
de: Die 'G92'-Versätze können bereits in Kraft sein, wenn 'G92' aufgerufen wird.  Ist dies der Fall, wird der Offset durch einen neuen Offset ersetzt, der den aktuellen Punkt zu dem angegebenen Wert macht.

note: type: Plain text
en: It is an error if all axis words are omitted.
de: Es ist ein Fehler, wenn alle Achsworte weggelassen werden.

note: type: Plain text
en: LinuxCNC stores the G92 offsets and reuses them on the next run of a program. To prevent this, one can program a G92.1 (to erase them), or program a G92.2 (to remove them - they are still stored).
de: LinuxCNC speichert die G92 Offsets und wiederverwendet sie auf den nächsten Lauf eines Programms. Um dies zu verhindern, kann man ein G92.1 programmieren (um sie zu löschen), oder ein G92.2 programmieren (um sie zu entfernen - sie sind immer noch gespeichert).

note: type: Plain text
en: The 'G52' command can also be used to change this offset; see the <<sec:g52-and-g92-offsets,Offsets>> section for more details about 'G92' and 'G52' and how they interact.
de: Der Befehl 'G52' kann auch verwendet werden, um diesen Offset zu ändern; siehe den Abschnitt <<sec:g52-and-g92-offsets,Offsets>> für weitere Einzelheiten über 'G92' und 'G52' und wie sie zusammenwirken.

note: type: Plain text
en: See the <<sec:overview-parameters,Parameters>> section for more information.
de: Siehe den Abschnitt zu <<sec:overview-parameters,Parametern>> für weitere Informationen.

note: type: Title ==
en: G92.1, G92.2 Reset G92 Offsets(((G92.1, G92.2 Reset G92 Offsets)))
de: G92.1, G92.2 G92 Offsets zurücksetzen(((G92.1, G92.2 G92 Offsets zurücksetzen)))

note: type: Plain text
en: 'G92.1' - turn off G92 offsets and reset <<sub:numbered-parameters,parameters>> 5211 - 5219 to zero.
de: 'G92.1' - Schalten Sie G92-Offsets aus und setzt <<sub:numbered-parameters,Parameter>> 5211 - 5219 auf Null zurück.

note: type: Plain text
en: 'G92.2' - turn off G92 offsets but keep <<sub:numbered-parameters,parameters>> 5211 - 5219 available.
de: 'G92.2' - G92-Offsets ausschalten, aber <<sub:numbered-parameters,Parameter>> 5211 - 5219 verfügbar lassen.

note: type: Plain text
en: G92.1 only clears G92 offsets, to change G53-G59.3 coordinate system offsets in G-code use either <<gcode:g10-l2,G10 L2>> or <<gcode:g10-l20,G10 L20>>.
de: G92.1 löscht nur G92-Offsets, um G53-G59.3-Koordinatensystem-Offsets im G-Code zu ändern, verwenden Sie entweder <<gcode:g10-l2,G10 L2>> oder <<gcode:g10-l20,G10 L20>>.

note: type: Title ==
en: G92.3 Restore G92 Offsets(((G92.3 Restore G92 Offsets)))
de: G92.3 Wiederherstellung von G92-Offsets(((G92.3 Wiederherstellung von G92-Offsets)))

note: type: Plain text
en: 'G92.3' - set the G92 offset to the values saved in parameters 5211 to 5219
de: 'G92.3' - setzt den G92-Offset auf die in den Parametern 5211 bis 5219 gespeicherten Werte

note: type: Plain text
en: You can set axis offsets in one program and use the same offsets in another program. Program 'G92' in the first program. This will set parameters 5211 to 5219. Do not use 'G92.1' in the remainder of the first program. The parameter values will be saved when the first program exits and restored when the second one starts up.  Use 'G92.3' near the beginning of the second program. That will restore the offsets saved in the first program.
de: Sie können Achsversätze in einem Programm einstellen und die gleichen Versätze in einem anderen Programm verwenden. Programmieren Sie 'G92' im ersten Programm. Dadurch werden die Parameter 5211 bis 5219 eingestellt. Verwenden Sie im weiteren Verlauf des ersten Programms nicht 'G92.1'. Die Parameterwerte werden beim Verlassen des ersten Programms gespeichert und beim Starten des zweiten Programms wiederhergestellt.  Verwenden Sie 'G92.3' zu Beginn des zweiten Programms. Dadurch werden die im ersten Programm gespeicherten Offsets wiederhergestellt.

note: type: Title ==
en: G93, G94, G95 Feed Rate Mode(((G93, G94, G95 Feed Rate Mode)))
de: G93, G94, G95 Vorschubmodus(((G93, G94, G95 Vorschubmodus)))

note: type: Plain text
en: 'G93' - is Inverse Time Mode.  In inverse time feed rate mode, an F word means the move should be completed in [one divided by the F number] minutes.  For example, if the F number is 2.0, the move should be completed in half a minute.
de: 'G93' - ist der Modus "Inverse Zeit".  Im Modus für inverse Zeitvorschübe bedeutet ein F-Wert, dass die Bewegung in [eins geteilt durch die F-Zahl] Minuten abgeschlossen sein sollte.  Wenn die F-Zahl beispielsweise 2.0 beträgt, sollte die Bewegung in einer halben Minute abgeschlossen sein.

note: type: Plain text
en: When the inverse time feed rate mode is active, an F word must appear on every line which has a G1, G2, or G3 motion, and an F word on a line that does not have G1, G2, or G3 is ignored. Being in inverse time feed rate mode does not affect G0 (<<gcode:g0,rapid move>>) motions.
de: Wenn der Modus für den inversen Zeitvorschub aktiv ist, muss ein F-Wort in jeder Zeile erscheinen, die eine G1-, G2- oder G3-Bewegung hat, und ein F-Wort in einer Zeile, die keine G1-, G2- oder G3-Bewegung hat, wird ignoriert. Der Modus "Inverser Zeitvorschub" wirkt sich nicht auf G0-Bewegungen (<<gcode:g0,rapid move>>) aus.

note: type: Plain text
en: 'G94' - is Units per Minute Mode.  In units per minute feed mode, an F word is interpreted to mean the controlled point should move at a certain number of inches per minute, millimeters per minute, or degrees per minute, depending upon what length units are being used and which axis or axes are moving.
de: "G94" - ist der Modus Einheiten pro Minute.  Im Vorschubmodus Einheiten pro Minute wird ein F-Wert so interpretiert, dass der gesteuerte Punkt mit einer bestimmten Anzahl von Zoll pro Minute, Millimeter pro Minute oder Grad pro Minute verfahren werden soll, je nachdem, welche Längeneinheiten verwendet werden und welche Achse oder Achsen sich bewegen.

note: type: Plain text
en: 'G95' - is Units per Revolution Mode In units per revolution mode, an F word is interpreted to mean the controlled point should move a certain number of inches per revolution of the spindle, depending on what length units are being used and which axis or axes are moving. G95 is not suitable for threading, for threading use G33 or G76.  G95 requires that spindle.N.speed-in to be connected. The actual spindle to which the feed is synchronised is chosen by the $ parameter
de: 'G95' - ist der Einheiten-pro-Umdrehungs-Modus Im Einheiten-pro-Umdrehungs-Modus wird ein F-Wort dahingehend interpretiert, dass sich der gesteuerte Punkt um eine bestimmte Anzahl von Zoll pro Spindelumdrehung bewegen soll, je nachdem, welche Längeneinheiten verwendet werden und welche Achse oder Achsen bewegen sich. G95 ist nicht zum Gewindeschneiden geeignet, zum Gewindeschneiden G33 oder G76 verwenden. G95 erfordert, dass spindle._N_.speed-in verbunden ist. Durch den $-Parameter wird die tatsächliche Spindel ausgewählt, auf die der Vorschub synchronisiert wird.

note: type: Plain text
en: Inverse time feed mode is active and a line with G1, G2, or G3 (explicitly or implicitly) does not have an F word.
de: Der inverse Zeitvorschubmodus ist aktiv und eine Zeile mit G1, G2 oder G3 (explizit oder implizit) hat kein F-Wert.

note: type: Plain text
en: A new feed rate is not specified after switching to G94 or G95
de:  Nach dem Umschalten auf G94 oder G95 wird keine neue Vorschubgeschwindigkeit angegeben

note: type: Title ==
en: G96, G97 Spindle Control Mode(((G96, G97 Spindle Control Mode)))
de: G96, G97 Spindelsteuerungsmodus(((G96, G97 Spindelsteuerungsmodus)))

note: type: delimited block -
en: G96 <D-> S- <$-> (Constant Surface Speed Mode)
    G97 S- <$-> (RPM Mode)
de: G96 <D-> S- <$-> (Modus konstante Oberflächengeschwindigkeit)
    G97 S- <$-> (Drehzahlmodus)

note: type: Plain text
en: 'D' - maximum rotation speed (RPM), optional
de: 'D' - maximale Drehzahl (RPM), optional

note: type: Plain text
en: 'S' - spindle speed
de: 'S' - Spindeldrehzahl

note: type: Plain text
en: '$' - the spindle of which the speed will be varied, optional.
de: $' - die Spindel, deren Geschwindigkeit variiert werden soll, optional.

note: type: Plain text
en: 'G96 S- <D->' - selects constant surface speed of 'S':
de: G96 S- <D->' - wählt eine konstante Oberflächengeschwindigkeit von 'S':

note: type: Plain text
en: In feet per minute if G20 is in effect,
de: In Fuß pro Minute, wenn G20 aktiviert ist,

note: type: Plain text
en: or meters per minute if G21 is in effect.
de: oder Meter pro Minute, wenn G21 aktiv ist.

note: type: Plain text
en: When using G96, ensure that X0 in the current coordinate system (including offsets and tool lengths) is the center of rotation or LinuxCNC will not give the desired surface speed.  G96 is not affected by radius or diameter mode.
de: Stellen Sie bei Verwendung von G96 sicher, dass X0 im aktuellen Koordinatensystem (einschließlich Offsets und Werkzeuglängen) das Rotationszentrum ist, da LinuxCNC sonst nicht die gewünschte Oberflächengeschwindigkeit liefert. G96 wird vom Radius- oder Durchmessermodus nicht beeinflusst.

note: type: Plain text
en: To achieve CSS mode on selected spindles programme successive G96 commands for each spindle prior to issuing M3.
de: Um den CSS-Modus für ausgewählte Spindeln zu erreichen, programmieren Sie vor der Ausgabe von M3 aufeinanderfolgende G96-Befehle für jede Spindel.

note: type: Plain text
en: 'G97' selects RPM mode.
de: 'G97' wählt den Drehzahlmodus aus.

note: type: Block title
en: G96 Example Line
de: G96 Beispielzeile

note: type: delimited block -
en: G96 D2500 S250 (set CSS with a max rpm of 2500 and a surface speed of 250)
de: G96 D2500 S250 (CSS mit einer maximalen Drehzahl von 2500 und einer Oberflächengeschwindigkeit von 250)

note: type: Plain text
en: S is not specified with G96
de: S ist bei G96 nicht festgelegt

note: type: Plain text
en: A feed move is specified in G96 mode while the spindle is not turning
de: Eine Vorschubbewegung wird im G96-Modus festgelegt, während sich die Spindel nicht dreht

note: type: Title ==
en: G98, G99 Canned Cycle Return Level(((G98, G99 Canned Cycle Return)))
de: G98, G99 Festzyklusrücklauf Ebene(((G98, G99 Festzyklusrücklauf)))

note: type: Plain text
en: When spindle retracts during canned cycles, there are two options to choose from for the way it does it:
de: Wenn die Spindel während der Festzyklen zurückfährt, gibt es zwei Möglichkeiten, wie dies geschehen kann:

note: type: Plain text
en: 'G98' - retract to the position that axis was in just before this series of one or more contiguous canned cycles was started.
de: 'G98' - Rückzug auf die Position, in der sich die Achse befand, kurz bevor diese Serie von einem oder mehreren zusammenhängenden Festzyklen gestartet wurde.

note: type: Plain text
en: 'G99' - retract to the position specified by the R word of the canned cycle.
de: 'G99' - Rückzug bis zu der durch den R-Wert festgelegten Position des Festzyklus.

note: type: Plain text
en: Program a 'G98' and the canned cycle will use the Z position prior to the canned cycle as the Z return position if it is higher than the R value specified in the cycle. If it is lower, the R value will be used. The R word has different meanings in absolute distance mode and incremental distance mode.
de: Programmieren Sie ein 'G98' Kommando und der Festzyklus verwendet die Z-Position vor dem Festzyklus als Z-Rückkehrposition, wenn sie höher ist als der im Zyklus angegebene R-Wert. Wenn sie niedriger ist, wird der R-Wert verwendet. Das R-Wort hat im absoluten Abstandsmodus und im inkrementellen Abstandsmodus unterschiedliche Bedeutungen.

note: type: Block title
en: G98 Retract to Origin
de: G98 Zurückfahren zum Ausgangspunkt

note: type: Plain text
en: The G98 to the second line above means that the return move will be to the value of Z in the first line since it is higher that the R value specified.
de: Das G98 in der zweiten Zeile im obigen Beispiel bedeutet, dass der Rücksprung auf den Wert von Z in der ersten Zeile erfolgt, da dieser höher ist als der angegebene R-Wert.

note: type: Plain text
en: The 'initial' (G98) plane is reset any time cycle motion mode is abandoned, whether explicitly (G80) or implicitly (any motion code that is not a cycle). Switching among cycle modes (say G81 to G83) does NOT reset the 'initial' plane. It is possible to switch between G98 and G99 during a series of cycles.
de: Die 'Ausgangsebene' (G98) wird jedes Mal zurückgesetzt, wenn der Zyklusmodus verlassen wird, sei es explizit (G80) oder implizit (jeder Bewegungscode, der kein Zyklus ist). Ein Wechsel zwischen den Zyklusmodi (z. B. G81 zu G83) setzt die "Ausgangsebene" NICHT zurück. Es ist möglich, während einer Reihe von Zyklen zwischen G98 und G99 zu wechseln.

note: type: Title =
en: CNC Machine Overview(((Machine Overview)))
de: CNC-Maschinenübersicht (((Maschinenübersicht)))

note: type: Plain text
en: This section gives a brief description of how a CNC machine is viewed from the input and output ends of the Interpreter.
de: In diesem Abschnitt wird kurz beschrieben, wie eine CNC-Maschine von der Eingangs- und Ausgangsseite des Interpreters aus betrachtet wird.

note: type: Title ==
en: Mechanical Components
de: Mechanische Bestandteile

note: type: Plain text
en: A CNC machine has many mechanical components that may be controlled or may affect the way in which control is exercised. This section describes the subset of those components that interact with the Interpreter. Mechanical components that do not interact directly with the Interpreter, such as the jog buttons, are not described here, even if they affect control.
de: Eine CNC-Maschine hat viele mechanische Komponenten, die gesteuert werden können oder die Art und Weise der Steuerung beeinflussen können. Dieser Abschnitt beschreibt die Teilmenge dieser Komponenten, die mit dem Interpreter interagieren. Mechanische Komponenten, die nicht direkt mit dem Interpreter interagieren, wie z. B. die Jog Buttons/ Tipptasten, werden hier nicht beschrieben, auch wenn sie die Steuerung beeinflussen.

note: type: Title ===
en: Axes(((axes)))
de: Achsen(((Achsen)))

note: type: Plain text
en: Any CNC machine has one or more Axes. Different types of CNC machines have different combinations. For instance, a '4-axis milling machine' may have XYZA or XYZB axes. A lathe typically has XZ axes. A foam-cutting machine may have XYUV axes. In LinuxCNC, the case of a XYYZ 'gantry' machine with two motors for one axis is better handled by kinematics rather than by a second linear axis.
de: Jede CNC-Maschine hat eine oder mehrere Achsen. Verschiedene Arten von CNC-Maschinen haben unterschiedliche Kombinationen. Eine "4-Achsen-Fräsmaschine" kann zum Beispiel XYZA- oder XYZB-Achsen haben. Eine Drehmaschine hat normalerweise XZ-Achsen. Eine Schaumstoffschneidemaschine kann XYUV-Achsen haben. In LinuxCNC, der Fall eines XYYZ "Gantry"-Maschine mit zwei Motoren für eine Achse ist besser durch Kinematik als durch eine zweite lineare Achse behandelt.

note: type: delimited block =
en: If the motion of mechanical components is not independent, as with hexapod machines, the RS274/NGC language and the canonical machining functions will still be usable, as long as the lower levels of control know how to control the actual mechanisms to produce the same relative motion of tool and workpiece as would be produced by independent axes.  This is called 'kinematics'.
de: Wenn die Bewegung der mechanischen Komponenten nicht unabhängig ist, wie z. B. bei Hexapod-Maschinen, können die RS274/NGC-Sprache und die kanonischen Bearbeitungsfunktionen immer noch verwendet werden, solange die unteren Steuerungsebenen wissen, wie die tatsächlichen Mechanismen zu steuern sind, um die gleiche relative Bewegung von Werkzeug und Werkstück zu erzeugen, wie sie von unabhängigen Achsen erzeugt würde.  Dies wird als "Kinematik" bezeichnet.

note: type: delimited block =
en: With LinuxCNC, the case of the XYYZ gantry machine with two motors for one axis is better handled by the kinematics than by an additional linear axis.
de: Mit LinuxCNC, der für den Fall der XYYZ-Portal-Maschine mit zwei Motoren für eine Achse ist besser durch die Kinematik als durch eine zusätzliche lineare Achse behandelt.

note: type: Block title
en: Primary Linear Axes(((axes, primary linear)))
de: Primäre lineare Achsen(((Achse, primär linear)))

note: type: Plain text
en: The X, Y, and Z axes produce linear motion in three mutually orthogonal directions.
de: Die X-, Y- und Z-Achse erzeugen lineare Bewegungen in drei zueinander orthogonalen Richtungen.

note: type: Block title
en: Secondary Linear Axes(((axes, secondary linear)))
de: Sekundäre lineare Achsen(((Achse, sekundäre lineare)))

note: type: Plain text
en: The U, V, and W axes produce linear motion in three mutually orthogonal directions. Typically, X and U are parallel, Y and V are parallel, and Z and W are parallel.
de: Die Achsen U, V und W erzeugen eine lineare Bewegung in drei zueinander orthogonalen Richtungen. Normalerweise sind X und U parallel, Y und V parallel und Z und W parallel.

note: type: Block title
en: Rotational Axes(((axes, rotational)))
de: Rotationsachsen(((Achsen, rotierend)))

note: type: Plain text
en: The A, B and C axes produce angular motion (rotation). Typically, A rotates around a line parallel to X, B rotates around a line parallel to Y, and C rotates around a line parallel to Z.
de: Die A-, B- und C-Achsen erzeugen eine Winkelbewegung (Rotation). Normalerweise dreht sich A um eine Linie parallel zu X, B um eine Linie parallel zu Y und C um eine Linie parallel zu Z.

note: type: Title ===
en: Spindle(((spindle)))
de: Spindel(((Spindel)))

note: type: Plain text
en: A CNC machine typically has a spindle which holds one cutting tool, probe, or the material in the case of a lathe. The spindle may or may not be controlled by the CNC software.  LinuxCNC offers support for up to 8 spindles, which can be individually controlled and can run simultaneously at different speeds and in different directions.
de: Eine CNC-Maschine hat in der Regel eine Spindel, die ein Zerspanungswerkzeug, einen Messtaster oder im Falle einer Drehmaschine das Material hält. Die Spindel kann, muss aber nicht von der CNC-Software gesteuert werden.  LinuxCNC bietet Unterstützung für bis zu 8 Spindeln, die individuell gesteuert werden können und gleichzeitig mit unterschiedlichen Geschwindigkeiten und in unterschiedlichen Richtungen laufen können.

note: type: Title ===
en: Coolant(((coolant)))
de: Kühlmittel(((Kühlmittel)))

note: type: Plain text
en: Flood coolant and mist coolant may each be turned on independently.  The RS274/NGC language turns them off together see section <<mcode:m7-m8-m9,M7 M8 M9>>.
de: Flutkühlmittel und Nebelkühlmittel können unabhängig voneinander eingeschaltet werden.  Die Sprache RS274/NGC schaltet sie gemeinsam aus, siehe Abschnitt <<mcode:m7-m8-m9,M7 M8 M9>>.

note: type: Title ===
en: Feed and Speed Override(((feed override)))(((spindle override)))
de: Vorschub- und Drehzahl-Override(((Vorschub-Override)))(((Spindel-Override)))

note: type: Plain text
en: A CNC machine can have separate feed and speed override controls, which let the operator specify that the actual feed rate or spindle speed used in machining at some percentage of the programmed rate.
de: Eine CNC-Maschine kann über separate Vorschub- und Geschwindigkeitssteuerungen verfügen, mit denen der Bediener festlegen kann, dass der tatsächliche Vorschub oder die Spindeldrehzahl bei der Bearbeitung einen bestimmten Prozentsatz der programmierten Geschwindigkeit beträgt.

note: type: Title ===
en: Block Delete Switch
de: Schalter zum Löschen von Blöcken

note: type: Plain text
en: A CNC machine can have a block delete switch.  See the <<sub:block-delete-switch,Block Delete>> section.
de: Eine CNC-Maschine kann einen Schalter zum Löschen von Blöcken haben.  Siehe den Abschnitt <<sub:block-delete-switch,Block-Lösch-Schalter>> (engl. block delete switch).

note: type: Title ===
en: Optional Program Stop Switch
de: Optionaler Programm-Stopp-Schalter

note: type: Plain text
en: A CNC machine can have an optional program stop switch.  See the <<sub:optional-program-stop,Optional Program Stop>> section.
de: Eine CNC-Maschine kann mit einem optionalen Programmstoppschalter ausgestattet sein.  Siehe den Abschnitt <<sub:optional-program-stop,Optionaler Programmstopp>>.

note: type: Title ==
en: Control and Data Components
de: Steuerungs- und Datenkomponenten

note: type: Title ===
en: Linear Axes
de: Lineare Achsen

note: type: Plain text
en: The X, Y, and Z axes form a standard right-handed coordinate system of orthogonal linear axes. Positions of the three linear motion mechanisms are expressed using coordinates on these axes.
de: Die X-, Y- und Z-Achse bilden ein standardmäßiges rechtshändiges Koordinatensystem mit orthogonalen linearen Achsen. Die Positionen der drei linearen Bewegungsmechanismen werden durch Koordinaten auf diesen Achsen ausgedrückt.

note: type: Plain text
en: The U, V and W axes also form a standard right-handed coordinate system. X and U are parallel, Y and V are parallel, and Z and W are parallel (when A, B, and C are rotated to zero).
de: Die Achsen U, V und W bilden ebenfalls ein standardmäßiges rechtshändiges Koordinatensystem. X und U sind parallel, Y und V sind parallel, und Z und W sind parallel (wenn A, B und C auf Null gedreht werden).

note: type: Title ===
en: Rotational Axes
de: Rotationsachsen

note: type: Plain text
en: The rotational axes are measured in degrees as wrapped linear axes in which the direction of positive rotation is counterclockwise when viewed from the positive end of the corresponding X, Y, or Z-axis. By 'wrapped linear axis', we mean one on which the angular position increases without limit (goes towards plus infinity) as the axis turns counterclockwise and deceases without limit (goes towards minus infinity) as the axis turns clockwise. Wrapped linear axes are used regardless of whether or not there is a mechanical limit on rotation.
de: Die Rotationsachsen werden in Grad als umschlungene lineare Achsen gemessen, bei denen die positive Drehrichtung vom positiven Ende der entsprechenden X-, Y- oder Z-Achse aus gesehen gegen den Uhrzeigersinn ist. Mit "umschlungener Linearachse" ist eine Achse gemeint, bei der die Winkelposition unbegrenzt zunimmt (gegen plus unendlich geht), wenn sich die Achse gegen den Uhrzeigersinn dreht, und unbegrenzt abnimmt (gegen minus unendlich geht), wenn sich die Achse im Uhrzeigersinn dreht. Umschlungene lineare Achsen werden unabhängig davon verwendet, ob es eine mechanische Begrenzung der Drehung gibt oder nicht.

note: type: Plain text
en: Clockwise or counterclockwise is from the point of view of the workpiece. If the workpiece is fastened to a turntable which turns on a rotational axis, a counterclockwise turn from the point of view of the workpiece is accomplished by turning the turntable in a direction that (for most common machine configurations) looks clockwise from the point of view of someone standing next to the machine. footnote:[If the parallelism requirement is violated, the system builder will have to say how to distinguish clockwise from counterclockwise.]
de: Im Uhrzeigersinn oder gegen den Uhrzeigersinn ist vom Standpunkt des Werkstücks aus gesehen. Wenn das Werkstück an einem Drehtisch befestigt ist, der sich um eine Drehachse dreht, wird eine Drehung gegen den Uhrzeigersinn aus Sicht des Werkstücks dadurch erreicht, dass der Drehtisch in eine Richtung gedreht wird, die (bei den meisten gängigen Maschinenkonfigurationen) aus Sicht einer neben der Maschine stehenden Person im Uhrzeigersinn aussieht. Fußnote:[Wenn die Anforderung der Parallelität verletzt wird, muss der Systemersteller angeben, wie zwischen Uhrzeigersinn und Gegenuhrzeigersinn unterschieden wird.]

note: type: Title ===
en: Controlled Point(((Controlled Point)))
de: Gesteuerter Punkt (engl. controlled point)(((Kontrollierter Punkt)))

note: type: Plain text
en: The controlled point is the point whose position and rate of motion are controlled. When the tool length offset is zero (the default value), this is a point on the spindle axis (often called the gauge point) that is some fixed distance beyond the end of the spindle, usually near the end of a tool holder that fits into the spindle. The location of the controlled point can be moved out along the spindle axis by specifying some positive amount for the tool length offset.  This amount is normally the length of the cutting tool in use, so that the controlled point is at the end of the cutting tool. On a lathe, tool length offsets can be specified for X and Z axes, and the controlled point is either at the tool tip or slightly outside it (where the perpendicular, axis-aligned lines touched by the 'front' and 'side' of the tool intersect).
de: Der gesteuerte Punkt ist der Punkt, dessen Position und Bewegungsgeschwindigkeit gesteuert werden. Wenn der Werkzeuglängenversatz Null ist (der Standardwert), ist dies ein Punkt auf der Spindelachse (häufig als Messpunkt bezeichnet), der sich in einem festen Abstand hinter dem Ende der Spindel befindet, normalerweise nahe dem Ende eines passenden Werkzeughalters in die Spindel. Die Position des gesteuerten Punkts kann entlang der Spindelachse verschoben werden, indem ein positiver Betrag für den Werkzeuglängenversatz angegeben wird. Dieser Betrag ist normalerweise die Länge des verwendeten Schneidwerkzeugs, so dass der kontrollierte Punkt am Ende des Schneidwerkzeugs liegt. Auf einer Drehmaschine können Werkzeuglängen-Offsets für die X- und Z-Achse angegeben werden, und der kontrollierte Punkt befindet sich entweder an der Werkzeugspitze oder etwas außerhalb davon (wo die senkrechten, achsenausgerichteten Linien von der 'Vorderseite' und 'Seite' von berührt werden das Werkzeug schneiden).

note: type: Title ===
en: Coordinated Linear Motion
de: Koordinierte lineare Bewegung

note: type: Plain text
en: To drive a tool along a specified path, a machining center must often coordinate the motion of several axes. We use the term 'coordinated linear motion' to describe the situation in which, nominally, each axis moves at constant speed and all axes move from their starting positions to their end positions at the same time. If only the X, Y, and Z axes (or any one or two of them) move, this produces motion in a straight line, hence the word 'linear' in the term. In actual motions, it is often not possible to maintain constant speed because acceleration or deceleration is required at the beginning and/or end of the motion. It is feasible, however, to control the axes so that, at all times, each axis has completed the same fraction of its required motion as the other axes. This moves the tool along same path, and we also call this kind of motion coordinated linear motion.
de: Um ein Werkzeug entlang einer bestimmten Bahn zu bewegen, muss ein Bearbeitungszentrum häufig die Bewegung mehrerer Achsen koordinieren. Wir verwenden den Begriff "koordinierte lineare Bewegung", um die Situation zu beschreiben, in der sich nominell jede Achse mit konstanter Geschwindigkeit bewegt und sich alle Achsen gleichzeitig von ihren Startpositionen zu ihren Endpositionen bewegen. Wenn sich nur die X-, Y- und Z-Achse (oder eine oder zwei von ihnen) bewegen, führt dies zu einer geradlinigen Bewegung, daher das Wort "linear" in dem Begriff. Bei tatsächlichen Bewegungen ist es oft nicht möglich, eine konstante Geschwindigkeit beizubehalten, da am Anfang und/oder am Ende der Bewegung eine Beschleunigung oder Verzögerung erforderlich ist. Es ist jedoch möglich, die Achsen so zu steuern, dass jede Achse zu jedem Zeitpunkt den gleichen Teil ihrer erforderlichen Bewegung ausgeführt hat wie die anderen Achsen. Dadurch wird das Werkzeug auf demselben Weg bewegt, und wir nennen diese Art der Bewegung auch koordinierte lineare Bewegung.

note: type: Plain text
en: Coordinated linear motion can be performed either at the prevailing feed rate, or at traverse rate, or it may be synchronized to the spindle rotation. If physical limits on axis speed make the desired rate unobtainable, all axes are slowed to maintain the desired path.
de: Koordinierte lineare Bewegungen können entweder mit der vorherrschenden Vorschubgeschwindigkeit oder mit der Verfahrgeschwindigkeit ausgeführt werden oder sie können mit der Spindelrotation synchronisiert werden. Wenn die gewünschte Geschwindigkeit aufgrund physikalischer Grenzen der Achsengeschwindigkeit nicht erreicht werden kann, werden alle Achsen verlangsamt, um die gewünschte Bahn beizubehalten.

note: type: Title ===
en: Feed Rate(((Feed Rate)))
de: Vorschubgeschwindigkeit(((Vorschubgeschwindigkeit)))

note: type: Plain text
en: The rate at which the controlled point moves is nominally a steady rate which may be set by the user. In the Interpreter, the feed rate is interpreted as follows (unless 'inverse time feed' or 'feed per revolution' modes are being used, in which case see section <<gcode:g93-g94-g95,G93-G94-G95-Mode,G93 G94 G95>>).
de: Die Geschwindigkeit, mit der sich der gesteuerte Punkt bewegt, ist nominell eine stetige Geschwindigkeit, die vom Benutzer eingestellt werden kann. Im Interpreter wird die Vorschubgeschwindigkeit wie folgt interpretiert (es sei denn, die Modi "inverser Zeitvorschub" oder "Vorschub pro Umdrehung" werden verwendet; in diesem Fall siehe Abschnitt <<gcode:g93-g94-g95,G93-G94-G95-Mode,G93 G94 G95>>).

note: type: Plain text
en: If any of XYZ are moving, F is in units per minute in the XYZ cartesian system, and all other axes (ABCUVW) move so as to start and stop in coordinated fashion.
de: Wenn sich eine der Achsen XYZ bewegt, wird F in Einheiten pro Minute im kartesischen System XYZ angegeben, und alle anderen Achsen (ABCUVW) bewegen sich so, dass sie koordiniert starten und stoppen.

note: type: Plain text
en: Otherwise, if any of UVW are moving, F is in units per minute in the UVW cartesian system, and all other axes (ABC) move so as to start and stop in coordinated fashion.
de: Andernfalls, wenn sich UVW bewegt, wird F in Einheiten pro Minute im kartesischen System von UVW angegeben, und alle anderen Achsen (ABC) bewegen sich so, dass sie koordiniert starten und stoppen.

note: type: Plain text
en: Otherwise, the move is pure rotary motion and the F word is in rotary units in the ABC 'pseudo-cartesian' system.
de: Andernfalls handelt es sich um eine reine Drehbewegung, und das F-Wort wird in Dreheinheiten im pseudokartesischen ABC-System angegeben.

note: type: Title ===
en: Cooling(((Cooling)))
de: Kühlung(((Kühlung)))

note: type: Plain text
en: Flood or droplets cooling can be enabled separately.  RS274/NGC language stops them together.  See section about <<mcode:m7-m8-m9,cooling control>>.
de: Die Kühlung von Flut- oder Tröpfchen kann separat aktiviert werden.  RS274 / NGC-Sprache stoppt sie zusammen.  Siehe Abschnitt über <<mcode:m7-m8-m9,Kühlsteuerung>>.

note: type: Title ===
en: Dwell(((dwell)))
de: Verweilen (engl. dwell)(((Verweilen)))

note: type: Plain text
en: A machining center may be commanded to dwell (i.e., keep all axes unmoving) for a specific amount of time. The most common use of dwell is to break and clear chips, so the spindle is usually turning during a dwell. Regardless of the Path Control Mode (see section <<sec:path-control-mode,Path Control>>) the machine will stop exactly at the end of the previous programmed move, as though it was in exact path mode.
de: Ein Bearbeitungszentrum kann angewiesen werden, für eine bestimmte Zeit zu verweilen (d.h. alle Achsen unbeweglich zu halten). Die häufigste Anwendung des Verweilens ist das Brechen und Entfernen von Spänen, so dass sich die Spindel während des Verweilens normalerweise dreht. Unabhängig vom Bahnsteuerungsmodus (siehe Abschnitt <<sec:path-control-mode,Path Control>>) hält die Maschine genau am Ende der vorhergehenden programmierten Bewegung an, so als ob sie im exakten Bahnmodus wäre.

note: type: Title ===
en: Units(((units)))
de: Einheiten(((Einheiten)))

note: type: Plain text
en: Units used for distances along the X, Y, and Z axes may be measured in millimeters or inches. Units for all other quantities involved in machine control cannot be changed. Different quantities use different specific units. Spindle speed is measured in revolutions per minute.  The positions of rotational axes are measured in degrees. Feed rates are expressed in current length units per minute, or degrees per minute, or length units per spindle revolution, as described in section <<gcode:g93-g94-g95,G93 G94 G95>>.
de: Die Einheiten für Abstände entlang der X-, Y- und Z-Achse können in Millimetern oder Zoll gemessen werden. Die Einheiten für alle anderen an der Maschinensteuerung beteiligten Größen können nicht geändert werden. Verschiedene Größen verwenden unterschiedliche spezifische Einheiten. Die Spindeldrehzahl wird in Umdrehungen pro Minute gemessen.  Die Positionen der Rotationsachsen werden in Grad gemessen. Vorschubgeschwindigkeiten werden in aktuellen Längeneinheiten pro Minute oder Grad pro Minute oder Längeneinheiten pro Spindelumdrehung ausgedrückt, wie in Abschnitt <<gcode:g93-g94-g95,G93 G94 G95>> beschrieben.

note: type: Title ===
en: Current Position
de: Aktuelle Position

note: type: Plain text
en: The controlled point is always at some location called the 'current position', and the controller always knows where that is. The numbers representing the current position must be adjusted in the absence of any axis motion if any of several events take place:
de: Der kontrollierte Punkt befindet sich immer an einer Stelle, die als "aktuelle Position" bezeichnet wird, und der Controller weiß immer, wo sich diese befindet. Die dargestellte aktuelle Position muss angepasst werden, selbst wenn keine Achsenbewegung stattfindet, wenn eines von mehreren Ereignissen eintritt:

note: type: Plain text
en: Length units are changed.
de: Längeneinheiten werden geändert.

note: type: Plain text
en: Tool length offset is changed.
de: Werkzeuglängenkorrektur wird geändert.

note: type: Plain text
en: Coordinate system offsets are changed.
de: Koordinatensystem-Offsets werden geändert.

note: type: Title ===
en: Selected Plane
de: Ausgewählte Ebene

note: type: Plain text
en: There is always a 'selected plane', which must be the XY-plane, the YZ-plane, or the XZ-plane of the machining center. The Z-axis is, of course, perpendicular to the XY-plane, the X-axis to the YZ-plane, and the Y-axis to the XZ-plane.
de: Es gibt immer eine 'ausgewählte Ebene', welche die XY-Ebene, die YZ-Ebene oder die XZ-Ebene des Bearbeitungszentrums sein muss. Die Z-Achse steht natürlich senkrecht auf der XY-Ebene, die X-Achse auf der YZ-Ebene und die Y-Achse auf der XZ-Ebene.

note: type: Title ===
en: Tool Carousel
de: Werkzeug-Karussell

note: type: Plain text
en: Zero or one tool is assigned to each slot in the tool carousel.
de: Jedem Steckplatz im Werkzeugkarussell wird ein oder null Werkzeuge zugewiesen.

note: type: Content of: <html><body><table><tbody><tr><td>
en: Tool Change
de: Werkzeugwechsel

note: type: Plain text
en: A machining center may be commanded to change tools.
de: Einem Bearbeitungszentrum kann der Befehl zum Werkzeugwechsel gegeben werden.

note: type: Title ===
en: Pallet Shuttle
de: Paletten-Shuttle

note: type: Plain text
en: The two pallets may be exchanged by command.
de: Die beiden Paletten können auf Befehl ausgetauscht werden.

note: type: Title ===
en: Speed Override
de: Geschwindigkeits-Neufestsetzung (engl. override)

note: type: Plain text
en: The speed override buttons can be activated (they function normally) or rendered inoperative (they no longer have any effect). The RS274/NGC language has a command that activates all the buttons and another that disables them.  See inhibition and activation <<mcode:m48-m49, speed correctors>>.  See also <<sec:speed-interaction,here for further details>>.
de: Die Tasten für die Geschwindigkeits-Neufestsetzung können aktiviert (sie funktionieren normal) oder deaktiviert werden (sie haben keine Wirkung mehr). In der Sprache RS274/NGC gibt es einen Befehl, der alle Tasten aktiviert, und einen anderen, der sie deaktiviert.  Siehe Sperrung und Aktivierung <<mcode:m48-m49, Geschwindigkeits-Korrektur>>.  Siehe auch <<sec:speed-interaction,hier für weitere Details>>.

note: type: Title ===
en: Path Control Mode(((Path Control Mode)))
de: Pfad-Steuerungs-Modus (engl. path control mode)(((Pfadsteuerungsmodus)))

note: type: Plain text
en: The machining center may be put into any one of three path control modes:
de: Das Bearbeitungszentrum kann in einen von drei Bahnsteuerungsmodi versetzt werden:

note: type: Plain text
en: In exact stop mode, the machine stops briefly at the end of each programmed move.
de: Im Exaktstopp-Modus hält die Maschine am Ende jeder programmierten Bewegung kurz an.

note: type: Labeled list
en: exact path mode
de: genauer Pfadmodus (engl. exact path mode)

note: type: Plain text
en: In exact path mode, the machine follows the programmed path as exactly as possible, slowing or stopping if necessary at sharp corners of the path.
de: Im exakten Pfadmodus folgt die Maschine dem programmierten Weg so genau wie möglich und verlangsamt oder stoppt bei Bedarf an scharfen Ecken des Weges.

note: type: Labeled list
en: continuous mode
de: kontinuierlicher Modus (continuous mode)

note: type: Plain text
en: In continuous mode, sharp corners of the path may be rounded slightly so that the feed rate may be kept up (but by no more than the tolerance, if specified).
de: Im kontinuierlichen Modus können scharfe Ecken der Bahn leicht abgerundet werden, damit die Vorschubgeschwindigkeit beibehalten werden kann (aber ohne Verletzung der Toleranzgrenzen, falls angegeben).

note: type: Plain text
en: See sections <<gcode:g61,G61>> and <<gcode:g64,G64>>.
de: Siehe Abschnitte <<gcode:g61,G61>> und <<gcode:g64,G64>>.

note: type: Title ==
en: Interpreter Interaction with Switches
de: Interpreter-Interaktion mit Schaltern

note: type: Plain text
en: The Interpreter interacts with several switches. This section describes the interactions in more detail. In no case does the Interpreter know what the setting of any of these switches is.
de: Der Interpreter interagiert mit mehreren Schaltern. In diesem Abschnitt werden die Interaktionen genauer beschrieben. In keinem Fall weiß der Interpreter, wie die Einstellung eines dieser Schalter ist.

note: type: Title ===
en: Feed and Speed Override Switches(((Feed and Speed Interaction)))
de: Vorschub- und Geschwindigkeits-Neufestsetzungs-Schalter (((Vorschub- und Geschwindigkeitsinteraktion)))

note: type: Plain text
en: The Interpreter will interpret RS274/NGC commands which enable 'M48' or disable 'M49' the feed and speed override switches. For certain moves, such as the traverse out of the end of a thread during a threading cycle, the switches are disabled automatically.
de: Der Interpreter interpretiert RS274/NGC-Befehle zur Aktivierung ('M48') oder Deaktivierung ('M49') des Vorschub- und Geschwindigkeitsüberbrückungsschalters. Für bestimmte Bewegungen, wie z.B. das Herausfahren aus dem Ende eines Gewindes während eines Einfädelzyklus, werden die Schalter automatisch deaktiviert.

note: type: Plain text
en: LinuxCNC reacts to the speed and feed override settings when these switches are enabled.
de: LinuxCNC reagiert auf die Geschwindigkeit und Vorschub Neufestsetzungs (engl. override)-Einstellungen, wenn diese Schalter aktiviert sind.

note: type: Plain text
en: See the <<mcode:m48-m49,M48 M49 Override>> section for more information.
de: Siehe den Abschnitt zu <<mcode:m48-m49,M48 M49 Neufestsetzungen>> für weitere Informationen.

note: type: Plain text
en: If the block delete switch is on, lines of G-code which start with a slash (the block delete character) are not interpreted. If the switch is off, such lines are interpreted. Normally the block delete switch should be set before starting the NGC program.
de: Wenn der Schalter für das Löschen von Blöcken aktiviert ist, werden G-Code-Zeilen, die mit einem Schrägstrich (dem Blocklöschzeichen) beginnen, nicht interpretiert. Wenn der Schalter ausgeschaltet ist, werden solche Zeilen interpretiert. Normalerweise sollte der Blocklöschschalter vor dem Start des NGC-Programms gesetzt werden.

note: type: Plain text
en: If this switch is on and an M1 code is encountered, program execution is paused.
de: Wenn dieser Schalter eingeschaltet ist und ein M1-Code auftritt, wird die Programmausführung angehalten.

note: type: Title ==
en: Tool Table(((Tool Table)))
de: Werkzeugtabelle(((Werkzeugtabelle)))

note: type: Plain text
en: A tool table is required to use the Interpreter. The file tells which tools are in which tool changer slots and what the size and type of each tool is. The name of the tool table is defined in the INI file:
de: Für die Verwendung des Interpreters ist eine Werkzeugtabelle erforderlich. In dieser Datei ist festgelegt, welche Werkzeuge sich in welchen Werkzeugwechslerplätzen befinden und welche Größe und welchen Typ die einzelnen Werkzeuge haben. Der Name der Werkzeugtabelle wird in der INI-Datei definiert:

note: type: delimited block -
en: # tool table file
    TOOL_TABLE = tooltable.tbl
de: # Datei mit Werkzeugtabelle
    TOOL_TABLE = tooltable.tbl

note: type: Plain text
en: The default filename probably looks something like the above, but you may prefer to give your machine its own tool table, using the same name as your INI file, but with a tbl extension:
de: Der Standard-Dateiname sieht wahrscheinlich so aus wie oben, aber Sie können es vorziehen, Ihrer Maschine eine eigene Werkzeugtabelle zu geben, die denselben Namen wie Ihre INI-Datei trägt, aber mit der Erweiterung tbl:

note: type: Plain text
en: or:
de: oder:

note: type: Plain text
en: For more information on the specifics of the tool table format, see the <<sec:tool-table,Tool Table Format>> section.
de: Weitere Informationen zu den Besonderheiten des Formats der Werkzeugtabelle finden Sie im Abschnitt <<sec:tool-table,Werkzeugtabellen-Format>>.

note: type: Title ==
en: Parameters(((Parameters)))
de: Parameter(((Parameter)))

note: type: Plain text
en: In the RS274/NGC language view, a machining center maintains an array of numerical parameters defined by a system definition (RS274NGC_MAX_PARAMETERS). Many of them have specific uses especially in defining coordinate systems. The number of numerical parameters can increase as development adds support for new parameters. The parameter array persists over time, even if the machining center is powered down.  LinuxCNC uses a parameter file to ensure persistence and gives the Interpreter the responsibility for maintaining the file. The Interpreter reads the file when it starts up, and writes the file when it exits.
de: In der RS274/NGC-Sprachansicht verwaltet ein Bearbeitungszentrum eine Reihe von numerischen Parametern, die durch eine Systemdefinition (RS274NGC_MAX_PARAMETERS) festgelegt sind. Viele von ihnen haben spezifische Verwendungen, insbesondere bei der Definition von Koordinatensystemen. Die Anzahl der numerischen Parameter kann sich erhöhen, wenn die Entwicklung die Unterstützung für neue Parameter hinzufügt. Das Parameter-Array bleibt über die Zeit erhalten, auch wenn das Bearbeitungszentrum ausgeschaltet ist.  LinuxCNC verwendet eine Parameterdatei, um die Persistenz zu gewährleisten und gibt dem Interpreter die Verantwortung für die Pflege der Datei. Der Interpreter liest die Datei, wenn er startet, und schreibt die Datei, wenn er beendet wird.

note: type: Plain text
en: All parameters are available for use in G-code programs.
de: Alle Parameter sind für die Verwendung in G-Code-Programmen verfügbar.

note: type: Plain text
en: The format of a parameter file is shown in the following table.  The file consists of any number of header lines, followed by one blank line, followed by any number of lines of data. The Interpreter skips over the header lines. It is important that there be exactly one blank line (with no spaces or tabs, even) before the data. The header line shown in the following table describes the data columns, so it is suggested (but not required) that that line always be included in the header.
de: Das Format einer Parameterdatei ist in der folgenden Tabelle dargestellt.  Die Datei besteht aus einer beliebigen Anzahl von Kopfzeilen, gefolgt von einer Leerzeile, gefolgt von einer beliebigen Anzahl von Datenzeilen. Der Interpreter überspringt die Kopfzeilen. Wichtig ist, dass vor den Daten genau eine Leerzeile (auch ohne Leerzeichen oder Tabulatoren) steht. Die in der folgenden Tabelle gezeigte Kopfzeile beschreibt die Datenspalten. Es wird daher vorgeschlagen (ist aber nicht erforderlich), diese Zeile immer in die Kopfzeile aufzunehmen.

note: type: Plain text
en: The Interpreter reads only the first two columns of the table. The third column, 'Comment', is not read by the Interpreter.
de: Der Interpreter liest nur die ersten beiden Spalten der Tabelle. Die dritte Spalte, 'Kommentar' (engl. comment), wird vom Interpreter nicht gelesen.

note: type: Plain text
en: Each line of the file contains the index number of a parameter in the first column and the value to which that parameter should be set in the second column. The value is represented as a double-precision floating point number inside the Interpreter, but a decimal point is not required in the file. All of the parameters shown in the following table are required parameters and must be included in any parameter file, except that any parameter representing a rotational axis value for an unused axis may be omitted. An error will be signaled if any required parameter is missing. A parameter file may include any other parameter, as long as its number is in the range 1 to 5400. The parameter numbers must be arranged in ascending order. An error will be signaled if not. Any parameter included in the file read by the Interpreter will be included in the file it writes as it exits. The original file is saved as a backup file when the new file is written. Comments are not preserved when the file is written.
de: Jede Zeile der Datei enthält in der ersten Spalte die Indexnummer eines Parameters und in der zweiten Spalte den Wert, auf den dieser Parameter gesetzt werden soll. Der Wert wird im Interpreter als Gleitkommazahl mit doppelter Genauigkeit dargestellt, aber ein Dezimalpunkt ist in der Datei nicht erforderlich. Alle in der folgenden Tabelle aufgeführten Parameter sind obligatorisch und müssen in jeder Parameterdatei enthalten sein, mit der Ausnahme, dass jeder Parameter, der einen Drehachsenwert für eine nicht verwendete Achse darstellt, weggelassen werden kann. Wenn ein erforderlicher Parameter fehlt, wird ein Fehler gemeldet. Eine Parameterdatei kann jeden anderen Parameter enthalten, solange seine Nummer im Bereich von 1 bis 5400 liegt. Die Parameternummern müssen in aufsteigender Reihenfolge angeordnet sein. Ist dies nicht der Fall, wird ein Fehler gemeldet. Jeder Parameter, der in der vom Interpreter gelesenen Datei enthalten ist, wird auch in die Datei aufgenommen, die er beim Beenden des Programms schreibt. Die Originaldatei wird beim Schreiben der neuen Datei als Sicherungsdatei gespeichert. Kommentare werden beim Schreiben der Datei nicht beibehalten.

note: type: Block title
en: Parameter File Format
de: Parameter-Dateiformat

note: type: Table
en: Parameter Number
de: Parameter-Nummer

note: type: Table
en: Parameter Value
de: Parameter-Wert

note: type: Table
en: Comment
de: Kommentar

note: type: Table
en: G28 Home X
de: G28 Referenzfahrt (engl. home) X

note: type: Table
en: G28 Home Y
de: G28 Referenzfahrt (engl. home)

note: type: Title ==
en: M-Code Quick Reference Table
de: M-Code Kurzübersichtstabelle

note: type: Content of: <html><body><table><tbody><tr><td>
en: Program Pause
de: Programm-Pause

note: type: Content of: <html><body><table><tbody><tr><td>
en: Program End
de: Programmende

note: type: Content of: <html><body><table><tbody><tr><td>
en: Pallet Change Pause
de: Palettenwechsel Pause

note: type: Content of: <html><body><table><tbody><tr><td>
en: Coolant Control
de: Kühlmittelkontrolle

note: type: Content of: <html><body><table><tbody><tr><td>
en: Orient Spindle
de: Spindel ausrichten

note: type: Table
en: Feed & Spindle Overrides Enable/Disable
de: Vorschub- und Spindel-Neufestsetzungen (engl. overrides) aktivieren/deaktivieren

note: type: Content of: <html><body><table><tbody><tr><td>
en: Feed Override Control
de: Kontrolle der Vorschub-Neufestsetzung (engl. override)

note: type: Table
en: Spindle Override Control
de: Kontrolle der Spindel-Neufestsetzung (engl. Override)

note: type: Content of: <html><body><table><tbody><tr><td>
en: Adaptive Feed Control
de: Adaptive Vorschubsteuerung

note: type: Content of: <html><body><table><tbody><tr><td>
en: Feed Stop Control
de: Steuerung des Vorschub-Stopps

note: type: Table
en: Set Current Tool Number
de: Aktuelle Werkzeugnummer einstellen

note: type: Table
en: Output Control
de: Ausgangs-Steuerung (engl. output control)

note: type: Table
en: Input Control
de: Eingabe-Steuerung (engl. input control)

note: type: Table
en: Analog Output Control
de: Steuerung des Analogausgangs

note: type: Table
en: <<mcode:m70,M70>>
de: :mcode:m70,M70>

note: type: Table
en: Save Modal State
de: Modalstatus speichern

note: type: Table
en: Invalidate Stored Modal State
de: Gespeicherten Modalzustand ungültig machen

note: type: Table
en: Restore Modal State
de: Modalen Zustand wiederherstellen

note: type: Table
en: Save Autorestore Modal State
de: Modalzustand der automatischen Wiederherstellung (engl. autorestore) speichern

note: type: Table
en: Call and Return From Subprogram
de: Aufruf und Rückkehr aus Unterprogramm

note: type: Table
en: User Defined M-Codes
de: Anwender-definierte M-Codes

note: type: Title ==
en: M0, M1 Program Pause(((M0, M1 Program Pause)))(((M0 Mandatory Program Pause)))(((M1 Optional Program Pause)))
de: M0, M1 Programmpause(((M0, M1 Programmpause)))(((M0 Obligatorische Programmpause)))(((M1 Optionale Programmpause)))

note: type: Plain text
en: 'M0' - pause a running program temporarily. LinuxCNC remains in the Auto Mode so MDI and other manual actions are not enabled. Pressing the resume button will restart the program at the following line.
de: M0' - pausiert ein laufendes Programm vorübergehend. LinuxCNC bleibt im Auto-Modus, somit sind MDI und andere manuelle Aktionen sind nicht aktiviert. Durch Drücken der Taste 'Fortführen' (engl. 'Resume') wird das Programm in der folgenden Zeile weiterlaufen.

note: type: Plain text
en: 'M1' - pause a running program temporarily if the optional stop switch is on.  LinuxCNC remains in the Auto Mode so MDI and other manual actions are not enabled. Pressing the resume button will restart the program at the following line.
de: M1' - pausiert ein laufendes Programm vorübergehend, wenn der optionale Stop-Schalter eingeschaltet ist.  LinuxCNC bleibt im Auto-Modus so MDI und andere manuelle Aktionen sind nicht aktiviert. Durch Drücken der Resume-Taste wird das Programm in der folgenden Zeile neu gestartet.

note: type: Plain text
en: It is OK to program 'M0' and 'M1' in MDI mode, but the effect will probably not be noticeable, because normal behavior in MDI mode is to stop after each line of input anyway.
de: Es ist in Ordnung, 'M0' und 'M1' im MDI-Modus zu programmieren, aber der Effekt wird wahrscheinlich nicht spürbar sein, weil das normale Verhalten im MDI-Modus ohnehin darin besteht, nach jeder Eingabezeile anzuhalten.

note: type: Title ==
en: M2, M30 Program End(((M2 Program End)))(((M30 Pallet Exchange and Program End)))
de: M2, M30 Programmende(((M2 Programmende)))(((M30 Palettentausch und Programmende)))

note: type: Plain text
en: 'M2' - end the program. Pressing `Cycle Start` ("R" in the Axis GUI)  will restart the program at the beginning of the file.
de: 'M2' - Programm beenden. Durch Drücken von 'Zyklusstart' (engl. Cycle Start, 'R' im Axis-GUI) wird das Programm am Anfang der Datei neu gestartet.

note: type: Plain text
en: 'M30' - exchange pallet shuttles and end the program.  Pressing `Cycle Start` will start the program at the beginning of the file.
de: 'M30' - tauschen Sie Paletten-Shuttles aus und beenden Sie das Programm.  Wenn Sie auf `Cycle Start` klicken, wird das Programm am Anfang der Datei gestartet.

note: type: Plain text
en: Both of these commands have the following effects:
de: Diese beiden Befehle haben die folgenden Auswirkungen:

note: type: Plain text
en: Change from Auto mode to MDI mode.
de: Wechsel vom Auto-Modus in den MDI-Modus.

note: type: Plain text
en: Origin offsets are set to the default (like 'G54').
de: Ursprungs-Offsets sind auf den Standard eingestellt (wie 'G54').

note: type: Plain text
en: Selected plane is set to XY plane (like 'G17').
de: Die ausgewählte Ebene ist auf die XY-Ebene eingestellt (wie 'G17').

note: type: Plain text
en: Distance mode is set to absolute mode (like 'G90').
de: Der Abstandsmodus ist auf den absoluten Modus eingestellt (wie 'G90').

note: type: Plain text
en: Feed rate mode is set to units per minute (like 'G94').
de: Der Vorschubmodus ist auf Einheiten pro Minute eingestellt (wie 'G94').

note: type: Plain text
en: Feed and speed overrides are set to ON (like 'M48').
de: Vorschub- und Geschwindigkeits-Neufestsetzungen (engl. overrides) sind auf ON gesetzt (wie 'M48').

note: type: Plain text
en: Cutter compensation is turned off (like 'G40').
de: Fräserkompensation ist ausgeschaltet (wie 'G40').

note: type: Plain text
en: The spindle is stopped (like 'M5').
de: Die Spindel wird angehalten (wie bei 'M5').

note: type: Plain text
en: The current motion mode is set to feed (like 'G1').
de: Der aktuelle Bewegungsmodus ist auf Vorschub eingestellt (wie 'G1').

note: type: Plain text
en: Coolant is turned off (like 'M9').
de: Das Kühlmittel ist ausgeschaltet (wie 'M9').

note: type: Plain text
en: Lines of code after M2/M30 will not be executed. Pressing `Cycle Start` will start the program at the beginning of the file.
de: Codezeilen nach M2/M30 werden nicht ausgeführt. Durch Drücken von 'Zyklusstart' wird das Programm am Anfang der Datei gestartet.

note: type: Plain text
en: Using % to wrap the G-code does not do the same thing as a 'Program End'.  See the section on <<gcode:file-requirements,File Requirements>> for more information on what using % does not do.
de: Die Verwendung von % zum Einschließen des G-Codes bewirkt nicht dasselbe wie ein "Programmende".  Siehe den Abschnitt zu <<gcode:file-requirements,Datei-Anforderungen>> (engl. file requirements) für weitere Informationen darüber, was die Verwendung von % nicht bewirkt.

note: type: Title ==
en: M60 Pallet Change Pause(((M60 Pallet Change Pause)))
de: M60 Palettenwechsel-Pause(((M60 Palettenwechsel Pause)))

note: type: Plain text
en: 'M60' - exchange pallet shuttles and then pause a running program temporarily (regardless of the setting of the optional stop switch). Pressing the cycle start button will restart the program at the following line.
de: 'M60' - Palettenshuttle tauschen und dann ein laufendes Programm vorübergehend pausieren (unabhängig von der Einstellung des optionalen Stoppschalters). Durch Drücken der Zyklusstarttaste wird das Programm in der folgenden Zeile neu gestartet.

note: type: Title ==
en: M3, M4, M5 Spindle Control(((M3, M4, M5 Spindle Control)))
de: M3, M4, M5 Spindelsteuerung(((M3, M4, M5 Spindelsteuerung)))

note: type: Plain text
en: 'M3 [$n]' - start the selected spindle clockwise at the 'S' speed.
de: 'M3 [$n]' - startet die ausgewählte Spindel im Uhrzeigersinn mit der Geschwindigkeit 'S'.

note: type: Plain text
en: 'M4 [$n]' - start the selected spindle counterclockwise at the 'S' speed.
de: 'M4 [$n]' - startet die ausgewählte Spindel gegen den Uhrzeigersinn mit der Geschwindigkeit 'S'.

note: type: Plain text
en: 'M5 [$n]' - stop the selected spindle.
de: 'M5 [$n]' - stoppt die ausgewählte Spindel.

note: type: Plain text
en: Use $ to operate on specific spindles.  If $ is omitted then the commands default to operating on spindle 0.  Use $-1 to operate on all active spindles.
de: Verwenden Sie $, um auf bestimmte Spindeln zu wirken.  Wenn $ weggelassen wird, arbeiten die Befehle standardmäßig an der Spindel 0. Verwenden Sie $-1, um an allen aktiven Spindeln zu arbeiten.

note: type: Plain text
en: This example will start spindles 0, 1, and 2 simultaneously at different speeds:
de: In diesem Beispiel werden die Spindeln 0, 1 und 2 gleichzeitig mit unterschiedlichen Drehzahlen gestartet:

note: type: Plain text
en: This example will then reverse spindle 1 but leave the other spindles rotating forwards:
de: In diesem Beispiel wird die Spindel 1 umgekehrt, während die anderen Spindeln vorwärts laufen:

note: type: Plain text
en: And this will stop spindle 2 and leave the other spindles rotating:
de: Dadurch wird Spindel 2 angehalten und die anderen Spindeln drehen sich weiter:

note: type: Plain text
en: If the $ is omitted then behaviour is exactly as normal for a single spindle machine.
de: Wenn das $ weggelassen wird, ist das Verhalten genau wie bei einer Einspindelmaschine.

note: type: Plain text
en: It is OK to use 'M3' or 'M4' if the <<sec:set-spindle-speed,S>> spindle speed is set to zero. If this is done (or if the speed override switch is enabled and set to zero), the spindle will not start turning.  If, later, the spindle speed is set above zero (or the override switch is turned up), the spindle will start turning.  It is OK to use 'M3' or 'M4' when the spindle is already turning or to use 'M5' when the spindle is already stopped.
de: Es ist OK, 'M3' oder 'M4' zu verwenden, wenn die <<sec:set-spindle-speed,S>> Spindeldrehzahl auf Null gesetzt ist. In diesem Fall (oder wenn der Drehzahl-Neufestsetzungs (engl. override)-Schalter aktiviert und auf Null gesetzt ist), beginnt die Spindel nicht zu drehen.  Wenn die Spindeldrehzahl später auf einen Wert über Null gesetzt wird (oder der Override-Schalter aktiviert wird), beginnt sich die Spindel zu drehen.  Es ist in Ordnung, 'M3' oder 'M4' zu verwenden, wenn sich die Spindel bereits dreht, oder 'M5' zu verwenden, wenn die Spindel bereits angehalten ist.

note: type: Title ==
en: M6 Tool Change(((M6-Tool-Change)))
de: M6 Werkzeugwechsel(((M6-Werkzeugwechsel)))

note: type: Title ===
en: Manual Tool Change
de: Manueller Werkzeugwechsel

note: type: Plain text
en: If the HAL component 'hal_manualtoolchange' is loaded, M6 will stop the spindle and prompt the user to change the tool based on the last 'T-' number programmed.  For more information on hal_manualtoolchange see the <<sec:manual-tool-change,Manual Tool Change>> section.
de: Wenn die HAL-Komponente 'hal_manualtoolchange' geladen ist, hält M6 die Spindel an und fordert den Benutzer auf, das Werkzeug auf der Grundlage der zuletzt programmierten 'T-'Nummer zu wechseln.  Für weitere Informationen zu hal_manualtoolchange siehe den Abschnitt <<sec:manual-tool-change,Manuelle Werkzeugwechsel>>.

note: type: Title ===
en: Tool Changer
de: Werkzeugwechsler

note: type: Plain text
en: To change a tool in the spindle from the tool currently in the spindle to the tool most recently selected (using a T word - see section <<sec:select-tool,Select Tool>>), program 'M6'.  When the tool change is complete:
de: Um ein Werkzeug in der Spindel von dem Werkzeug, das sich gerade in der Spindel befindet, auf das zuletzt ausgewählte Werkzeug zu wechseln (mit einem T-Wort - siehe Abschnitt <<sec:select-tool,Werkzeug-Auswahl>>) (engl. Select Tool), programmieren Sie 'M6'.  Wenn der Werkzeugwechsel abgeschlossen ist:

note: type: Plain text
en: The spindle will be stopped.
de: Die Spindel wird angehalten.

note: type: Plain text
en: The tool that was selected (by a T word on the same line or on any line after the previous tool change) will be in the spindle.
de: Das Werkzeug, das (durch ein T-Wort in derselben Zeile oder in einer beliebigen Zeile nach dem letzten Werkzeugwechsel) ausgewählt wurde, befindet sich in der Spindel.

note: type: Plain text
en: If the selected tool was not in the spindle before the tool change, the tool that was in the spindle (if there was one) will be placed back into the tool changer magazine.
de: Wenn sich das ausgewählte Werkzeug vor dem Werkzeugwechsel nicht in der Spindel befand, wird das Werkzeug, das sich in der Spindel befand (falls vorhanden), wieder in das Magazin des Werkzeugwechslers eingesetzt.

note: type: Plain text
en: If configured in the INI file some axis positions may move when a M6 is issued. See the <<sub:ini:sec:emcio,EMCIO section>> for more information on tool change options.
de: Wenn in der INI-Datei konfiguriert, können sich einige Achsenpositionen bewegen, wenn ein M6 ausgegeben wird. Siehe <<sub:ini:sec:emcio,EMCIO Abschnitt>> für weitere Informationen über Werkzeugwechseloptionen.

note: type: Plain text
en: No other changes will be made. For example, coolant will continue to flow during the tool change unless it has been turned off by an 'M9'.
de: Es werden keine weiteren Änderungen vorgenommen. Beispielsweise fließt während des Werkzeugwechsels weiterhin Kühlmittel, es sei denn, es wurde durch ein 'M9' abgeschaltet.

note: type: Plain text
en: The 'T-' word is an integer number designating the tool pocket number in the carousel (not its index).
de: Das 'T-'-Wort ist eine ganze Zahl, welche die Werkzeugfachnummer (engl. tool pocket number) im Karussell bezeichnet (nicht seinen Index).

note: type: Plain text
en: The tool length offset is not changed by 'M6', use '<<gcode:g43,G43>>' after the 'M6' to change the tool length offset.
de: Der Werkzeuglängen-Offset wird durch 'M6' nicht verändert, verwenden Sie '<<gcode:g43,G43>>' nach dem 'M6', um den Werkzeuglängen-Offset zu ändern.

note: type: Plain text
en: The tool change may include axis motion.  It is OK (but not useful) to program a change to the tool already in the spindle.  It is OK if there is no tool in the selected slot; in that case, the spindle will be empty after the tool change.  If slot zero was last selected, there will definitely be no tool in the spindle after a tool change. The tool changer will have to be setup to perform the tool change in HAL and possibly ClassicLadder.
de: Der Werkzeugwechsel kann eine Achsbewegung beinhalten.  Es ist in Ordnung (aber nicht sinnvoll), einen Wechsel des Werkzeugs zu programmieren, das sich bereits in der Spindel befindet.  Es ist in Ordnung, wenn sich kein Werkzeug auf dem gewählten Steckplatz befindet; in diesem Fall ist die Spindel nach dem Werkzeugwechsel leer.  Wenn zuletzt der Steckplatz Null gewählt wurde, befindet sich nach einem Werkzeugwechsel definitiv kein Werkzeug in der Spindel. Der Werkzeugwechsler muss so eingestellt werden, dass er den Werkzeugwechsel in HAL und bevorzugt in ClassicLadder durchführt.

note: type: Title ==
en: M7, M8, M9 Coolant Control(((M7, M8, M9 Coolant Control)))
de: M7, M8, M9 Kühlmittelsteuerung(((M7, M8, M9 Kühlmittelsteuerung)))

note: type: Plain text
en: 'M7' - turn mist coolant on. M7 controls iocontrol.0.coolant-mist pin.
de: 'M7' - Kühlmittelnebel (engl. mist coolant) einschalten. M7 steuert den iocontrol.0.coolant-mist Pin.

note: type: Plain text
en: 'M8' - turn flood coolant on. M8 controls iocontrol.0.coolant-flood pin.
de: 'M8' - Kühlmittelflutung (engl. flood cloolant) einschalten. M8 steuert iocontrol.0.coolant-flood Pin.

note: type: Plain text
en: 'M9' - turn both M7 and M8 off.
de: 'M9' - sowohl M7 als auch M8 ausschalten.

note: type: Plain text
en: Connect one or both of the coolant control pins in HAL before M7 or M8 will control an output. M7 and M8 can be used to turn on any output via G-code.
de: Verbindet einen oder beide Kühlmittelkontrollstifte in HAL, bevor M7 oder M8 einen Ausgang steuern. M7 und M8 können verwendet werden, um einen beliebigen Ausgang über G-Code einzuschalten.

note: type: Plain text
en: It is OK to use any of these commands, regardless of the current coolant state.
de: Sie können jeden dieser Befehle verwenden, unabhängig vom aktuellen Kühlmittelzustand.

note: type: Title ==
en: M19 Orient Spindle(((M19 Orient Spindle)))
de: M19 Spindel Orientierung (engl. orient spindle)(((M19 Orient Spindel)))

note: type: Plain text
en: 'R' Position to rotate to from 0, valid range is 0-360 degrees
de: 'R' Position zum Drehen von 0, gültiger Bereich ist 0-360 Grad

note: type: Plain text
en: 'Q' Number of seconds to wait until orient completes. If spindle.N.is-oriented does not become true within Q timeout an error occurs.
de: 'Q' Anzahl der Sekunden, die gewartet werden müssen, bis die Ausrichtung abgeschlossen ist. Wenn spindle.N.is-oriented innerhalb des Q-Timeouts nicht wahr wird, tritt ein Fehler auf.

note: type: Plain text
en: 'P' Direction to rotate to position.
de: 'P' Drehrichtung zur Position.

note: type: Plain text
en: '0' rotate for smallest angular movement (default)
de: '0' drehen für kleinste Winkelbewegung (Standard)

note: type: Plain text
en: '1' always rotate clockwise (same as M3 direction)
de: '1' immer im Uhrzeigersinn drehen (wie M3-Richtung)

note: type: Plain text
en: '2' always rotate counterclockwise (same as M4 direction)
de: '2' immer gegen den Uhrzeigersinn drehen (wie M4-Richtung)

note: type: Plain text
en: '$' The spindle to orient (actually only determines which HAL pins carry the spindle position commands)
de: $' Die auszurichtende Spindel (bestimmt eigentlich nur, welche HAL-Stifte die Spindelpositionsbefehle tragen)

note: type: Plain text
en: M19 is a command of modal group 7, like M3, M4 and M5.  M19 is cleared by any of M3,M4,M5.
de: M19 ist ein Befehl der Modalgruppe 7, wie M3, M4 und M5.  M19 wird durch einen der Befehle M3, M4, M5 gelöscht.

note: type: Plain text
en: Spindle orientation requires a quadrature encoder with an index to sense the spindle shaft position and direction of rotation.
de: Für die Spindelausrichtung ist ein Quadratur-Encoder mit einem Index erforderlich, der die Position und die Drehrichtung der Spindelwelle erfasst.

note: type: Plain text
en: INI Settings in the [RS274NGC] section:
de: INI-Einstellungen im Abschnitt [RS274NGC]:

note: type: Plain text
en: ORIENT_OFFSET = 0-360 (fixed offset in degrees added to M19 R word)
de: ORIENT_OFFSET = 0-360 (fester Offset in Grad, der zum M19 R-Wort hinzugefügt wird)

note: type: Plain text
en: 'spindle.N.orient-angle' (out float)  Desired spindle orientation for M19. Value of the M19 R word parameter plus the value of the [RS274NGC]ORIENT_OFFSET INI parameter.
de: 'spindle.N.orient-angle' (out float) Gewünschte Spindelausrichtung für M19. Wert des M19 R-Wort-Parameters plus dem Wert des [RS274NGC]ORIENT_OFFSET INI-Parameters.

note: type: Plain text
en: 'spindle.N.orient-mode' (out s32)  Desired spindle rotation mode. Reflects M19 P parameter word, default = 0.
de: 'spindle.N.orient-mode' (out s32) Gewünschter Spindeldrehungsmodus. Entspricht dem M19 P-Parameterwort, Voreinstellung = 0.

note: type: Plain text
en: 'spindle.N.orient' (out bit)  Indicates start of spindle orient cycle. Set by M19. Cleared by any of M3,M4,M5. If spindle-orient-fault is not zero during spindle-orient true, the M19 command fails with an error message.
de: 'spindle.N.orient' (out bit) Zeigt den Beginn des Spindelorientierungszyklus an. Wird von M19 gesetzt. Gelöscht durch einen der Befehle M3,M4,M5. Wenn 'spindle-orient-fault' während 'spindle-orient true' nicht Null ist, schlägt der Befehl M19 mit einer Fehlermeldung fehl.

note: type: Plain text
en: 'spindle.N.is-oriented' (in bit)  Acknowledge pin for spindle-orient. Completes orient cycle. If spindle-orient was true when spindle-is-oriented was asserted, the spindle-orient pin is cleared and the spindle-locked pin is asserted. Also, the spindle-brake pin is asserted.
de: 'spindle.N.is-oriented' (in bit) Pin bestätigt die Spindelorientierung. Schließt den Orientierungszyklus ab. Wenn spindel-orient wahr war, als spindel-oriented überprüft wurde, wird der spindel-orient-Pin gelöscht und der spindle-locked Pin wird gesichert. Auch der spindle-brake Pin ist dann gesichert.

note: type: Plain text
en: 'spindle.N.orient-fault' (in s32)  Fault code input for orient cycle. Any value other than zero will cause the orient cycle to abort.
de: 'spindle.N.orient-fault' (in s32) Eingang des Fehlercodes für den Orientierungszyklus. Jeder Wert ungleich Null führt zum Abbruch des Orientierungszyklus.

note: type: Plain text
en: 'spindle.N.locked' (out bit)  Spindle orient complete pin. Cleared by any of M3,M4,M5.
de: 'spindle.N.locked' (out bit) Spindel Orientierung komplett-Pin. Wird durch einen der Parameter M3,M4,M5 gelöscht.

note: type: Title ==
en: M48, M49 Speed and Feed Override Control(((M48, M49 Speed and Feed Override Control)))
de: M48, M49 Geschwindigkeits- und Vorschub-Override-Steuerung(((M48, M49 Geschwindigkeits- und Vorschub-Override-Steuerung)))

note: type: Plain text
en: 'M48' - enable the spindle speed and feed rate override controls.
de: 'M48' - aktiviert die Neufestsetzungs-Steuerungen für Spindeldrehzahl und Vorschubgeschwindigkeit.

note: type: Plain text
en: 'M49' - disable both controls.
de: 'M49' - beide Steuerelemente deaktivieren.

note: type: Plain text
en: These commands also take an optional $ parameter to determine which spindle they operate on.
de: Diese Befehle benötigen auch einen optionalen $-Parameter, um festzulegen, auf welcher Spindel sie arbeiten.

note: type: Plain text
en: It is OK to enable or disable the controls when they are already enabled or disabled.  See the <<sub:feed-rate,Feed Rate>> section for more details.
de: Es ist OK, die Kontrollen zu aktivieren oder zu deaktivieren, wenn sie bereits aktiviert oder deaktiviert sind.  Siehe den <<sub:feed-rate,Vorschubgeschwindigkeit>> Abschnitt für weitere Details.

note: type: Plain text
en: They also can be be toggled individually using 'M50' and 'M51', see below.
de: Sie können auch einzeln mit 'M50' und 'M51' umgeschaltet werden, siehe unten.

note: type: Title ==
en: M50 Feed Override Control(((M50 Feed Override Control)))
de: M50 Vorschub-Neufestsetzungs-Steuerung (engl. feed override control)(((M50 Feed Override Control)))

note: type: Plain text
en: 'M50 <P1>' - enable the feed rate override control. The P1 is optional.
de: 'M50 <P1>' - aktiviert die Vorschub-Override-Steuerung. Der P1 ist optional.

note: type: Plain text
en: 'M50 P0' - disable the feed rate control.
de: 'M50 P0' - Vorschubsteuerung deaktivieren.

note: type: Plain text
en: While disabled the feed override will have no influence, and the motion will be executed at programmed feed rate.  (unless there is an adaptive feed rate override active).
de: Im deaktivierten Zustand hat der Vorschub-Neufestsetzung (engl. override) keinen Einfluss, und die Bewegung wird mit der programmierten Vorschubgeschwindigkeit ausgeführt.  (es sei denn, es ist ein adaptiver Vorschub-Override aktiv).

note: type: Title ==
en: M51 Spindle Speed Override Control(((M51 Spindle Speed Override)))
de: M51 Spindeldrehzahl-Neufestsetzuung (engl. override) Steuerung(((M51 Spindeldrehzahl-Override)))

note: type: Plain text
en: 'M51 <P1> <$->'- enable the spindle speed override control for the selected spindle. The P1 is optional.
de: M51 <P1> <$->'- aktiviert die Spindeldrehzahlneufestsetzung für die ausgewählte Spindel. Die Angabe P1 ist optional.

note: type: Plain text
en: 'M51 P0 <$->' - disable the spindle speed override control program.
de: M51 P0 <$->' - Deaktivieren Sie das Programm zur Neufestsetzung der Spindeldrehzahl.

note: type: Plain text
en: While disabled the spindle speed override will have no influence, and the spindle speed will have the exact program specified value of the S-word (described in the <<sec:set-spindle-speed,Spindle Speed>> section).
de: Wenn diese Funktion deaktiviert ist, hat die Spindeldrehzahlneufestsetzung keinen Einfluss und die Spindeldrehzahl hat den exakten programmierten Wert des S-Wortes (beschrieben im Abschnitt zur <<sec:set-spindle-speed,Spindle Speed>>).

note: type: Title ==
en: M52 Adaptive Feed Control(((M52 Adaptive Feed Control)))
de: M52 Adaptive Vorschubregelung(((M52 Adaptive Vorschubregelung)))

note: type: Plain text
en: 'M52 <P1>' - use an adaptive feed. The P1 is optional.
de: 'M52 <P1>' - Verwendung eines adaptiven Vorschubs. Die Angabe P1 ist optional.

note: type: Plain text
en: 'M52 P0' - stop using adaptive feed.
de: 'M52 P0' - Verwendung des adaptiven Feeds beenden.

note: type: Plain text
en: When adaptive feed is enabled, some external input value is used together with the user interface feed override value and the commanded feed rate to set the actual feed rate. In LinuxCNC, the HAL pin 'motion.adaptive-feed' is used for this purpose. Values on 'motion.adaptive-feed' should range from -1 (programmed speed in reverse) to 1 (full speed). 0 is equivalent to feed-hold.
de: Wenn der adaptive Vorschub aktiviert ist, wird ein externer Eingangswert zusammen mit dem Vorschub-Override-Wert der Benutzeroberfläche und der befohlenen Vorschubgeschwindigkeit verwendet, um die tatsächliche Vorschubgeschwindigkeit einzustellen. In LinuxCNC wird der HAL-Pin 'motion.adaptive-feed' für diesen Zweck verwendet. Werte auf 'motion.adaptive-feed' sollte im Bereich von -1 (programmierte Geschwindigkeit in umgekehrter Richtung) bis 1 (volle Geschwindigkeit). 0 ist gleichbedeutend mit feed-hold.

note: type: Plain text
en: The use of negative adaptive-feed for reverse run is a new feature and is not very well tested as yet. The intended use is for plasma cutters and wire spark eroders but it is not limited to such applications.
de: Die Verwendung des negativen adaptiven Vorschubs für den Rückwärtslauf ist eine neue Funktion, die noch nicht sehr gut getestet wurde. Sie ist für Plasmaschneider und Drahterodiermaschinen vorgesehen, aber nicht auf diese Anwendungen beschränkt.

note: type: Title ==
en: M53 Feed Stop Control(((M53 Feed Stop Control)))
de: M53 Vorschub-Halt-Steuerung (((M53 Vorschub-Halt-Steuerung)))

note: type: Plain text
en: 'M53 <P1>' - enable the feed stop switch. The P1 is optional.  Enabling the feed stop switch will allow motion to be interrupted by means of the feed stop control. In LinuxCNC, the HAL pin 'motion.feed-hold' is used for this purpose. A 'true' value will cause the motion to stop when 'M53' is active.
de: 'M53 <P1>' - Aktivierung des Vorschubstoppschalters. Der P1 ist optional.  Durch die Aktivierung des Vorschubstoppschalters kann die Bewegung mit Hilfe der Vorschubstoppsteuerung unterbrochen werden. In LinuxCNC wird der HAL-Pin 'motion.feed-hold' für diesen Zweck verwendet. Ein 'true'-Wert wird die Bewegung zu stoppen, wenn 'M53' aktiv ist.

note: type: Plain text
en: 'M53 P0' - disable the feed stop switch. The state of 'motion.feed-hold' will have no effect on feed when M53 is not active.
de: 'M53 P0' - deaktiviert den Feed-Stop-Schalter. Der Zustand von 'motion.feed-hold' hat keine Auswirkungen auf den Feed, wenn M53 nicht aktiv ist.

note: type: Title ==
en: M61 Set Current Tool(((M61 Set Current Tool)))
de: M61 Aktuelles Werkzeug setzen(((M61 Aktuelles Werkzeug setzen)))

note: type: Plain text
en: 'M61 Q-' - change the current tool number while in MDI or Manual mode without a tool change. One use is when you power up LinuxCNC with a tool currently in the spindle you can set that tool number without doing a tool change.
de: 'M61 Q-' - ändert die aktuelle Werkzeugnummer, während in MDI-oder Handbetrieb ohne einen Werkzeugwechsel. Wenn Sie LinuxCNC einschalten mit einem Werkzeug bereits in der Spindel, können Sie die Werkzeug-Nummer setzen ohne einen Werkzeugwechsel zu initiieren.

note: type: Plain text
en: The tool length offset is not changed by 'M61', use '<<gcode:g43,G43>>' after the 'M61' to change the tool length offset.
de: Der Werkzeuglängen-Offset wird durch 'M61' nicht verändert, verwenden Sie '<<gcode:g43,G43>>' nach 'M61', um den Werkzeuglängen-Offset zu ändern.

note: type: Plain text
en: Q- is not 0 or greater
de: Q- ist nicht 0 oder größer

note: type: Title ==
en: M62 - M65 Digital Output Control(((M62 - M65 Digital Output Control)))
de: M62 - M65 Digitale Ausgangssteuerung(((M62 - M65 Digitale Ausgangssteuerung)))

note: type: Plain text
en: 'M62 P-' - turn on digital output synchronized with motion.
de: 'M62 P-' - schaltet den digitalen Ausgang synchron zur Bewegung ein.

note: type: Plain text
en: 'M63 P-' - turn off digital output synchronized with motion.
de: 'M63 P-' - Ausschalten des mit der Bewegung synchronisierten digitalen Ausgangs.

note: type: Plain text
en: 'M64 P-' - turn on digital output immediately.
de: 'M64 P-' - Digitalausgang sofort einschalten.

note: type: Plain text
en: 'M65 P-' - turn off digital output immediately.
de: 'M65 P-' - digitale Ausgabe sofort abschalten.

note: type: Plain text
en: The P- word specifies the digital output number.  The P-word ranges from 0 to a default value of 3. If needed the the number of I/O can be increased by using the num_dio parameter when loading the motion controller. See the <<sec:motion,Motion>> section for more information.
de: Das P-Wort gibt die Anzahl der digitalen Ausgänge an.  Das P-Wort reicht von 0 bis zu einem Standardwert von 3. Bei Bedarf kann die Anzahl der E/A durch Verwendung des Parameters num_dio beim Laden des Motion Controllers erhöht werden. Siehe Abschnitt zu <<sec:motion,Bewegungen>> für weitere Informationen.

note: type: Plain text
en: The M62 & M63 commands will be queued. Subsequent commands referring to the same output number will overwrite the older settings. More than one output change can be specified by issuing more than one M62/M63 command.
de: Die Befehle M62 und M63 werden in eine Warteschlange gestellt. Nachfolgende Befehle, die sich auf dieselbe Ausgangsnummer beziehen, überschreiben die älteren Einstellungen. Mehr als eine Ausgangsänderung kann durch mehrere M62/M63-Befehle festgelegt werden.

note: type: Plain text
en: The actual change of the specified outputs will happen at the beginning of the next motion command. If there is no subsequent motion command, the queued output changes won't happen. It's best to always program a motion G-code (G0, G1, etc) right after the M62/63.
de: Die tatsächliche Änderung der angegebenen Ausgänge erfolgt zu Beginn des nächsten Fahrbefehls. Wenn es keinen nachfolgenden Fahrbefehl gibt, werden die in der Warteschlange stehenden Ausgangsänderungen nicht ausgeführt. Es ist am besten, immer einen Bewegungs-G-Code (G0, G1, etc.) direkt nach dem M62/63 zu programmieren.

note: type: Plain text
en: M64 & M65 happen immediately as they are received by the motion controller. They are not synchronized with movement, and they will break blending.
de: M64 und M65 treten sofort auf, wenn sie von der Bewegungssteuerung empfangen werden. Sie sind nicht mit der Bewegung synchronisiert und unterbrechen den Übergang.

note: type: Plain text
en: M62-65 will not function unless the appropriate motion.digital-out-_nn_ pins are connected in your HAL file to outputs.
de: M62-65 funktionieren nur dann, wenn die entsprechenden motion.digital-out-_nn_-Pins in Ihrer HAL-Datei mit Ausgängen verbunden sind.

note: type: Title ==
en: M66 Wait on Input(((M66 Wait on Input)))
de: M66 Warten auf Eingabe(((M66 Warten auf Eingabe)))

note: type: Plain text
en: 'P-' - specifies the digital input number from 0 to 3. (Adjustable from motmod argument num_dio)
de: 'P-' - gibt die digitale Eingangsnummer von 0 bis 3 an. (Einstellbar mit motmod Argument num_dio)

note: type: Plain text
en: 'E-' - specifies the analog input number from 0 to 3.  (Adjustable from motmod argument num_aio)
de: 'E-' - gibt die Nummer des Analogeingangs von 0 bis 3 an (einstellbar über das motmod-Argument num_aio)

note: type: Plain text
en: 'L-' - specifies the wait mode type.
de: 'L-' - legt den Wartemodus fest.

note: type: Plain text
en: 'Mode 0: IMMEDIATE' - no waiting, returns immediately.  The current value of the input is stored in parameter #5399
de: Mode 0: IMMEDIATE' - kein Warten, kehrt sofort zurück.  Der aktuelle Wert des Eingangs wird in Parameter #5399 gespeichert

note: type: Plain text
en: 'Mode 1: RISE' - waits for the selected input to perform a rise event.
de: 'Mode 1: RISE' - wartet darauf, dass die ausgewählte Eingabe ein RISE-Ereignis ausführt.

note: type: Plain text
en: 'Mode 2: FALL' - waits for the selected input to perform a fall event.
de: 'Mode 2: FALL' - wartet darauf, dass die ausgewählte Eingabe ein Fallereignis ausführt.

note: type: Plain text
en: 'Mode 3: HIGH' - waits for the selected input to go to the HIGH state.
de: 'Mode 3: HIGH' - wartet darauf, dass die ausgewählte Eingabe in den HIGH-Zustand wechselt.

note: type: Plain text
en: 'Mode 4: LOW' - waits for the selected input to go to the LOW state.
de: 'Mode 4: LOW' - wartet, bis die ausgewählte Eingabe in den LOW-Zustand wechselt.

note: type: Plain text
en: 'Q-' - specifies the timeout in seconds for waiting. If the timeout is exceeded, the wait is interrupt, and the variable #5399 will be holding the value -1. The Q value is ignored if the L-word is zero (IMMEDIATE).  A Q value of zero is an error if the L-word is non-zero.
de: x'Q-' - gibt das Timeout in Sekunden für das Warten an. Wird das Timeout überschritten, so wird die Wartezeit unterbrochen, und die Variable #5399 enthält den Wert -1. Der Q-Wert wird ignoriert, wenn das L-Wort Null ist (SOFORT).  Ein Q-Wert von Null ist ein Fehler, wenn das L-Wort ungleich Null ist.

note: type: Plain text
en: Mode 0 is the only one permitted for an analog input.
de: Für einen Analogeingang ist nur der Modus 0 zulässig.

note: type: Block title
en: M66 Example Lines
de: M66 Beispielzeilen

note: type: delimited block -
en: M66 P0 L3 Q5 (wait up to 5 seconds for digital input 0 to turn on)
de: M66 P0 L3 Q5 (bis zu 5 Sekunden warten, bis der digitale Eingang 0 eingeschaltet wird)

note: type: Plain text
en: M66 wait on an input stops further execution of the program, until the selected event (or the programmed timeout) occurs.
de: M66 wartet auf eine Eingabe und stoppt die weitere Ausführung des Programms, bis das gewählte Ereignis (oder der programmierte Timeout) eintritt.

note: type: Plain text
en: It is an error to program M66 with both a P-word and an E-word (thus selecting both an analog and a digital input). In LinuxCNC these inputs are not monitored in real time and thus should not be used for timing-critical applications.
de: Es ist ein Fehler, M66 sowohl mit einem P-Wort als auch mit einem E-Wort zu programmieren (also sowohl einen analogen als auch einen digitalen Eingang zu wählen). In LinuxCNC sind diese Eingänge nicht in Echtzeit überwacht und sollte daher nicht für zeitkritische Anwendungen verwendet werden.

note: type: Plain text
en: The number of I/O can be increased by using the num_dio or num_aio parameter when loading the motion controller. See the <<sec:motion,Motion>> section for more information.
de: Die Anzahl der E/A kann durch Verwendung des Parameters num_dio oder num_aio beim Laden des Motion Controllers erhöht werden. Siehe den Abschnitt zu <<sec:motion,Bewegungen>> (engl. motion) für weitere Informationen.

note: type: Plain text
en: M66 will not function unless the appropriate motion.digital-in-_nn_ pins or motion.analog-in-_nn_ pins are connected in your HAL file to an input.
de: M66 funktioniert nur dann, wenn die entsprechenden motion.digital-in-_nn_-Pins oder motion.analog-in-_nn_-Pins in Ihrer HAL-Datei mit einem Eingang verbunden sind.

note: type: Block title
en: Example HAL Connection
de: Beispiel einer HAL-Verbindung

note: type: Plain text
en: 'M67' - set an analog output synchronized with motion.
de: 'M67' - stellt einen mit der Bewegung synchronisierten analogen Ausgang ein.

note: type: Plain text
en: 'E-' - output number ranging from 0 to 3 (Adjustable from motmod argument num_aio)
de: 'E-' - Ausgangsnummer im Bereich von 0 bis 3 (einstellbar über das motmod-Argument num_aio)

note: type: Plain text
en: 'Q-' - is the value to set (set to 0 to turn off).
de: 'Q-' - ist der einzustellende Wert (zum Ausschalten auf 0 setzen).

note: type: Plain text
en: The actual change of the specified outputs will happen at the beginning of the next motion command. If there is no subsequent motion command, the queued output changes won't happen. It's best to always program a motion G-code (G0, G1, etc) right after the M67. M67 functions the same as M62-63.
de: Die tatsächliche Änderung der angegebenen Ausgänge erfolgt zu Beginn des nächsten Fahrbefehls. Wenn es keinen nachfolgenden Bewegungsbefehl gibt, werden die in der Warteschlange stehenden Ausgangsänderungen nicht durchgeführt. Am besten programmieren Sie immer einen Bewegungs-G-Code (G0, G1, etc.) direkt nach M67. M67 funktioniert genauso wie M62-63.

note: type: Plain text
en: M67 will not function unless the appropriate motion.analog-out-_nn_ pins are connected in your HAL file to outputs.
de: M67 funktioniert nur, wenn die entsprechenden motion.analog-out-_nn_ Pins in Ihrer HAL-Datei mit Ausgängen verbunden sind.

note: type: Title ==
en: M68 Analog Output, Immediate(((M68 Analog Output)))
de: M68 Analogausgang, Sofort(((M68 Analogausgang)))

note: type: delimited block -
en: M68 E- Q-
de: M68 E-Q-

note: type: Plain text
en: 'M68' - set an analog output immediately.
de: 'M68' - sofort einen analogen Ausgang einstellen.

note: type: Plain text
en: 'E-' - output number ranging from 0 to 3. (Adjustable from motmod argument num_aio)
de: 'E-' - Ausgangsnummer im Bereich von 0 bis 3 (einstellbar über das motmod-Argument num_aio)

note: type: Plain text
en: M68 output happen immediately as they are received by the motion controller. They are not synchronized with movement, and they will break blending. M68 functions the same as M64-65.
de: M68-Ausgaben erfolgen sofort, wenn sie vom Motion Controller empfangen werden. Sie sind nicht mit der Bewegung synchronisiert und unterbrechen das Blending. M68 funktioniert genauso wie M64-65.

note: type: Plain text
en: M68 will not function unless the appropriate motion.analog-out-_nn_ pins are connected in your HAL file to outputs.
de: M68 funktioniert nur dann, wenn die entsprechenden motion.analog-out-_nn_ Pins in Ihrer HAL-Datei mit Ausgängen verbunden sind.

note: type: Title ==
en: M70 Save Modal State(((M70 Save Modal State)))
de: M70 Modalen Zustand speichern(((M70 Modalen Zustand speichern)))

note: type: Plain text
en: To explicitly save the modal state at the current call level, program 'M70'. Once modal state has been saved with 'M70', it can be restored to exactly that state by executing an 'M72'.
de: Um den modalen Zustand explizit auf der aktuellen Aufrufebene zu speichern, programmieren Sie 'M70'. Sobald der modale Zustand mit 'M70' gespeichert wurde, kann er durch die Ausführung von 'M72' wieder in genau diesen Zustand versetzt werden.

note: type: Plain text
en: A pair of 'M70' and 'M72' instructions will typically be used to protect a program against inadvertent modal changes within subroutines.
de: Ein Paar von 'M70'- und 'M72'-Befehlen wird normalerweise verwendet, um ein Programm gegen unbeabsichtigte Modaländerungen innerhalb von Unterprogrammen zu schützen.

note: type: Block title
en: M70 Saved state(((M70 Saved state)))
de: M70 Gespeicherter Zustand(((M70 Gespeicherter Zustand)))

note: type: Plain text
en: The state saved consists of:
de: Der gespeicherte Zustand besteht aus:

note: type: Plain text
en: current G20/G21 settings (imperial/metric)
de: aktuelle G20/G21-Einstellungen (imperial/metrisch)

note: type: Plain text
en: status of cutter compensation (G40,G41,G42,G41.1,G42,1)
de: Status der Fräserkompensation (G40,G41,G42,G41.1,G42,1)

note: type: Plain text
en: distance mode - relative/absolute (G90/G91)
de: Distanzmodus relativ/absolut (G90/G91)

note: type: Plain text
en: feed mode (G93/G94,G95)
de: Vorschubmodus (G93/G94,G95)

note: type: Plain text
en: current coordinate system (G54-G59.3)
de: aktuelles Koordinatensystem (G54-G59.3)

note: type: Plain text
en: tool length compensation status (G43,G43.1,G49)
de: Status der Werkzeuglängenkompensation (G43,G43.1,G49)

note: type: Plain text
en: retract mode (G98,G99)
de: Rückzieh-Modus (G98,G99)

note: type: Plain text
en: spindle mode (G96-css or G97-RPM)
de: Spindel-Modus (G96-css oder G97-RPM)

note: type: Plain text
en: arc distance mode (G90.1, G91.1)
de: Bogendistanz-Modus (G90.1, G91.1)

note: type: Plain text
en: lathe radius/diameter mode (G7,G8)
de: Radius-/Durchmessermodus der Drehmaschine (G7,G8)

note: type: Plain text
en: path control mode (G61, G61.1, G64)
de: Pfadsteuerungsmodus (G61, G61.1, G64)

note: type: Plain text
en: current feed and speed ('F' and 'S' values)
de: aktueller Vorschub und Geschwindigkeit ('F'- und 'S'-Werte)

note: type: Plain text
en: spindle status (M3,M4,M5) - on/off and direction
de: Spindelstatus (M3,M4,M5) - Ein/Aus und Richtung

note: type: Plain text
en: mist (M7) and flood (M8) status
de: Nebel- (M7) und Flut-Kühlung (M8) Status

note: type: Plain text
en: speed override (M51) and feed override (M50) settings
de: Geschwindigkeitsneufestsetzung (M51) und Vorschubneufestsetzung (M50)

note: type: Plain text
en: adaptive feed setting (M52)
de: adaptive Vorschubeinstellung (M52)

note: type: Plain text
en: Note that in particular, the motion mode (G1 etc) is NOT restored.
de: Beachten Sie, dass insbesondere der Bewegungsmodus (G1 usw.) NICHT wiederhergestellt wird.

note: type: Plain text
en: 'current call level' means either:
de: 'aktuelle Aufruf-Ebene' (engl. current call level) bedeutet entweder:

note: type: Plain text
en: executing in the main program. There is a single storage location for state at the main program level; if several 'M70' instructions are executed in turn, only the most recently saved state is restored when an 'M72' is executed.
de: im Hauptprogramm ausgeführt zu werden. Es gibt einen einzigen Speicherplatz für den Zustand auf der Ebene des Hauptprogramms; wenn mehrere 'M70'-Befehle nacheinander ausgeführt werden, wird bei der Ausführung eines 'M72' nur der zuletzt gespeicherte Zustand wiederhergestellt.

note: type: Plain text
en: executing within a G-code subroutine. The state saved with 'M70' within a subroutine behaves exactly like a local named parameter - it can be referred to only within this subroutine invocation with an 'M72' and when the subroutine exits, the parameter goes away.
de: innerhalb eines G-Code-Unterprogramms ausgeführt zu werden. Der innerhalb eines Unterprogramms mit 'M70' gespeicherte Zustand verhält sich genau wie ein lokaler benannter Parameter - er kann nur innerhalb dieses Unterprogrammaufrufs mit einem 'M72' angesprochen werden, und wenn das Unterprogramm beendet wird, verschwindet der Parameter.

note: type: Plain text
en: A recursive invocation of a subroutine introduces a new call level.
de: Ein rekursiver Aufruf eines Unterprogramms führt eine neue Aufrufebene ein.

note: type: Title ==
en: M71 Invalidate Stored Modal State(((M71 Invalidate Stored Modal State)))
de: M71 Gespeicherten modalen Zustand ungültig machen(((M71 Gespeicherten modalen Zustand ungültig machen)))

note: type: Plain text
en: Modal state saved with an 'M70' or by an 'M73' at the current call level is invalidated (cannot be restored from anymore).
de: Der mit einem 'M70' oder einem 'M73' auf der aktuellen Anrufebene gespeicherte Modalzustand wird ungültig (kann nicht mehr wiederhergestellt werden).

note: type: Plain text
en: A subsequent 'M72' at the same call level will fail.
de: Ein nachfolgendes 'M72' auf der gleichen Aufrufebene schlägt fehl.

note: type: Plain text
en: If executed in a subroutine which protects modal state by an 'M73', a subsequent return or endsub will *not* restore modal state.
de: Wenn es in einem Unterprogramm ausgeführt wird, das den modalen Zustand durch ein 'M73' schützt, wird der modale Zustand durch eine anschließende Rückkehr oder endsub *nicht* wiederhergestellt.

note: type: Plain text
en: The usefulness of this feature is dubious. It should not be relied upon as it might go away.
de: Die Nützlichkeit dieser Funktion ist zweifelhaft. Man sollte sich nicht auf sie verlassen, da sie verschwinden könnte.

note: type: Title ==
en: M72 Restore Modal State(((M72 Restore Modal State)))
de: M72 Wiederherstellung des modalen Zustands(((M72 Wiederherstellung des modalen Zustands)))

note: type: Plain text
en: <<mcode:m70-saved-state,Modal state saved with an 'M70'>> code can be restored by executing an 'M72'.
de: <<mcode:m70-saved-state,Modaler Zustand, der mit einem 'M70'>> Code gespeichert wurde, kann durch Ausführen eines 'M72' wiederhergestellt werden.

note: type: Plain text
en: The handling of G20/G21 is specially treated as feeds are interpreted differently depending on G20/G21: if length units (mm/in) are about to be changed by the restore operation, 'M72 'will restore the distance mode first, and then all other state including feed to make sure the feed value is interpreted in the correct unit setting.
de: Die Handhabung von G20/G21 wird besonders behandelt, da Vorschübe je nach G20/G21 unterschiedlich interpretiert werden: Wenn die Längeneinheiten (mm/in) durch die Wiederherstellungsoperation geändert werden sollen, stellt 'M72' zuerst den Abstandsmodus wieder her und dann alle anderen Zustände einschließlich des Vorschubs, um sicherzustellen, dass der Vorschubwert in der richtigen Einheiteneinstellung interpretiert wird.

note: type: Plain text
en: It is an error to execute an 'M72' with no previous 'M70' save operation at that level.
de: Es ist ein Fehler, einen 'M72' ohne vorherige 'M70'-Speicheroperation auf dieser Ebene auszuführen.

note: type: Plain text
en: The following example demonstrates saving and explicitly restoring modal state around a subroutine call using 'M70' and 'M72'. Note that the 'imperialsub' subroutine is not "aware" of the M7x features and can be used unmodified:
de: Das folgende Beispiel demonstriert das Speichern und explizite Wiederherstellen des modalen Zustands bei einem Unterprogrammaufruf mit 'M70' und 'M72'. Beachten Sie, dass das Unterprogramm "imperialsub" die M7x-Funktionen nicht "kennt" und unverändert verwendet werden kann:

note: type: delimited block -
en: O<imperialsub> sub
    g20 (imperial)
    g91 (relative mode)
    F5 (low feed)
    S300 (low rpm)
    (debug, in subroutine, state now:)
    o<showstate> call
    O<imperialsub> endsub
de: O<imperialsub> sub
    g20 (imperial)
    g91 (relativer Modus)
    F5 (niedriger Vorschub)
    S300 (niedrige Drehzahl)
    (Debug, im Unterprogramm, Zustand jetzt:)
    o<showstate> Aufruf
    O<imperialsub> endsub

note: type: delimited block -
en: ; main program
    g21 (metric)
    g90 (absolute)
    f200 (fast speed)
    S2500 (high rpm)
de: ; Hauptprogramm
    G21 (metrisch)
    G90 (absolut)
    F200 (Schnelle Geschwindigkeit)
    S2500 (hohe U/min)

note: type: delimited block -
en: (debug, in main, state now:)
    o<showstate> call
de: (debug, in main, Zustand jetzt:)
    o<showstate> call

note: type: delimited block -
en: M70 (save caller state in at global level)
    O<imperialsub> call
    M72 (explicitly restore state)
de: M70 (Speichern des Anruferstatus auf globaler Ebene)
    O<imperialsub> Aufruf
    M72 (Zustand explizit wiederherstellen)

note: type: delimited block -
en: (debug, back in main, state now:)
    o<showstate> call
    m2
de: (Debug, zurück in Main, Zustand jetzt:)
    o<showstate> Aufruf
    m2

note: type: Title ==
en: M73 Save and Autorestore Modal State(((M73 Save and Autorestore Modal State)))
de: M73 Modaler Zustand speichern und automatisch wiederherstellen(((M73 Modaler Zustand speichern und automatisch wiederherstellen)))

note: type: Plain text
en: To save modal state within a subroutine, and restore state on subroutine 'endsub' or any 'return' path, program 'M73'.
de: Um den modalen Zustand innerhalb eines Unterprogramms zu speichern und ihn bei 'endsub' oder einem beliebigen 'Return'-Pfad wiederherzustellen, programmieren Sie 'M73'.

note: type: Plain text
en: Aborting a running program in a subroutine which has an 'M73' operation will *not* restore state .
de: Der Abbruch eines laufenden Programms in einem Unterprogramm, das eine 'M73'-Operation hat, stellt *nicht* den Zustand wieder her.

note: type: Plain text
en: Also, the normal end ('M2') of a main program which contains an 'M73' will *not* restore state.
de: Auch das normale Ende ('M2') eines Hauptprogramms, das ein 'M73' enthält, stellt den Zustand *nicht* wieder her.

note: type: Plain text
en: The suggested use is at the beginning of a O-word subroutine as in the following example. Using 'M73' this way enables designing subroutines which need to modify modal state but will protect the calling program against inadvertent modal changes. Note the use of <<gcode:predefined-named-parameters,predefined named parameters>> in the 'showstate' subroutine.
de: Die empfohlene Verwendung ist am Anfang eines O-Wort-Unterprogramms wie im folgenden Beispiel. Die Verwendung von 'M73' auf diese Weise ermöglicht den Entwurf von Unterprogrammen, die den Modalzustand ändern müssen, schützt aber das aufrufende Programm vor versehentlichen Modaländerungen. Beachten Sie die Verwendung von <<gcode:predefined-named-parameters,Vordefinierte benannte Parameter>> im Unterprogramm "showstate".

note: type: delimited block -
en: O<imperialsub> sub
    M73 (save caller state in current call context, restore on return or endsub)
    g20 (imperial)
    g91 (relative mode)
    F5 (low feed)
    S300 (low rpm)
    (debug, in subroutine, state now:)
    o<showstate> call
de: O<imperialsub> sub
    M73 (Zustand des Aufrufers im aktuellen Aufrufkontext speichern, bei Rückkehr oder Endsub wiederherstellen)
    g20 (imperial)
    g91 (relativer Modus)
    F5 (niedriger Vorschub)
    S300 (niedrige Drehzahl)
    (debug, im Unterprogramm, Zustand jetzt:)
    o<showstate> call

note: type: delimited block -
en: ; note - no M72 is needed here - the following endsub or an
    ; explicit 'return' will restore caller state
    O<imperialsub> endsub
de: ; Hinweis: Hier wird kein M72 benötigt - das folgende endsub oder ein
    ; explizites 'return' wird den Zustand des Aufrufers wiederherstellen
    O<imperialsub> endsub

note: type: delimited block -
en: ; main program
    g21 (metric)
    g90 (absolute)
    f200 (fast speed)
    S2500 (high rpm)
    (debug, in main, state now:)
    o<showstate> call
    o<imperialsub> call
    (debug, back in main, state now:)
    o<showstate> call
    m2
de: ; Hauptprogramm
    g21 (metrisch)
    g90 (absolut)
    f200 (schnelle Drehzahl)
    S2500 (hohe Drehzahl)
    (debug, in Hauptprogramm, Zustand jetzt:)
    o<showstate> call
    o<imperialsub> call
    (debug, zurück im Hauptmenü, Status jetzt:)
    o<showstate> call
    m2

note: type: Title ==
en: M98 and M99
de: M98 und M99

note: type: Plain text
en: The interpreter supports Fanuc-style main- and sub-programs with the 'M98' and 'M99' M-codes.  See <<ocode:fanuc-style-programs,Fanuc-Style Programs>>.
de: Der Interpreter unterstützt Haupt- und Unterprogramme im Fanuc-Stil mit den M-Codes 'M98' und 'M99'.  Siehe <<ocode:fanuc-style-programs,Fanuc-Style Programme>>.

note: type: Title ===
en: Selectively Restoring Modal State
de: Selektive Wiederherstellung des modalen Zustands

note: type: Plain text
en: Executing an 'M72' or returning from a subroutine which contains an 'M73' will restore <<mcode:m70-saved-state,*all* modal state saved>>.
de: Die Ausführung eines 'M72' oder die Rückkehr aus einer Unterroutine, die ein 'M73' enthält, stellt <<mcode:m70-saved-state,*alle* gesicherten modalen Zustände>> wieder her.

note: type: Plain text
en: If only some aspects of modal state should be preserved, an alternative is the usage of <<gcode:predefined-named-parameters, predefined named parameters>>, local parameters and conditional statements. The idea is to remember the modes to be restored at the beginning of the subroutine, and restore these before exiting. Here is an example, based on snippet of 'nc_files/tool-length-probe.ngc':
de: Wenn nur einige Aspekte des modalen Zustands erhalten bleiben sollen, ist eine Alternative die Verwendung von <<gcode:predefined-named-parameters, vordefinierten benannten Parametern>>, lokalen Parametern und bedingten Anweisungen. Die Idee ist, sich zu Beginn des Unterprogramms die wiederherzustellenden Modi zu merken und diese vor dem Verlassen des Programms wiederherzustellen. Hier ist ein Beispiel, das auf einem Ausschnitt aus 'nc_files/tool-length-probe.ngc' basiert:

note: type: delimited block -
en: O<measure> sub   (measure reference tool)
    ;
    #<absolute> = #<_absolute>  (remember in local variable if G90 was set)
    ;
    g30 (above switch)
    g38.2 z0 f15 (measure)
    g91 g0z.2 (off the switch)
    #1000=#5063 (save reference tool length)
    (print,reference length is #1000)
    ;
    O<restore_abs> if [#<absolute>]
        g90 (restore G90 only if it was set on entry:)
    O<restore_abs> endif
    ;
    O<measure> endsub
de: O<Maßnahme> sub (Referenzwerkzeug für Maßnahmen)
    ;
    #<absolute> = #<_absolute> (in lokaler Variable speichern, wenn G90 gesetzt wurde)
    ;
    g30 (über Schalter)
    g38.2 z0 f15 (messen)
    g91 g0z.2 (außerhalb des Schalters)
    #1000=#5063 (Referenzlänge des Werkzeugs speichern)
    (print, Referenzlänge ist #1000)
    ;
    O<restore_abs> if [#<absolute>]
        g90 (G90 nur dann wiederherstellen, wenn es bei der Eingabe gesetzt wurde:)
    O<restore_abs> endif
    ;
    O<measure> endsub

note: type: Title ==
en: M100-M199 User Defined Commands(((M100-M199 User Defined Commands)))
de: M100-M199 Benutzerdefinierte Befehle(((M100-M199 Benutzerdefinierte Befehle)))

note: type: Plain text
en: 'M1--' - an integer in the range of 100 - 199.
de: 'M1--' - eine ganze Zahl im Bereich von 100 - 199.

note: type: Plain text
en: 'P-' - a number passed to the file as the first parameter.
de: 'P-' - eine Zahl, die als erster Parameter an die Datei übergeben wird.

note: type: Plain text
en: 'Q-' - a number passed to the file as the second parameter.
de: 'Q-' - eine Zahl, die als zweiter Parameter an die Datei übergeben wird.

note: type: Plain text
en: After creating a new 'M1nn' file you must restart the GUI so it is aware of the new file, otherwise you will get an 'Unknown m code' error.
de: Nach dem Erstellen einer neuen 'M1nn'-Datei müssen Sie die grafische Benutzeroberfläche neu starten, damit sie die neue Datei erkennt, sonst erhalten Sie die Fehlermeldung 'Unbekannter m-Code'.

note: type: Plain text
en: The external program named 'M100' through 'M199' (no extension, a capital M, found in directory pointed by '[DISPLAY] PROGRAM_PREFIX' parameter of the INI file) is executed with the optional P and Q values as its two arguments.
de: Das externe Programm mit den Namen 'M100' bis 'M199' (keine Erweiterung, ein großes M, das sich im Verzeichnis befindet, auf das der Parameter '[DISPLAY] PROGRAM_PREFIX' der INI-Datei verweist) wird mit den optionalen Werten P und Q als seinen beiden Argumenten ausgeführt.

note: type: Plain text
en: Execution of the G-code file pauses until the external program exits.  Any valid executable file can be used. The file must be located in the search path specified in the INI file configuration.  See the <<sub:ini:sec:display,Display>> section for more information on search paths.
de: Die Ausführung der G-Code-Datei wird angehalten, bis das externe Programm beendet wird.  Es kann jede gültige ausführbare Datei verwendet werden. Die Datei muss sich in dem Suchpfad befinden, der in der Konfiguration der INI-Datei angegeben ist.  Weitere Informationen zu Suchpfaden finden Sie im Abschnitt <<sub:ini:sec:display,Display>>.

note: type: Plain text
en: After creating a new M1nn program, the GUI should be restarted so that the new program is taken into account, otherwise a 'Unknown M-code' error will occur.
de: Nach dem Erstellen eines neuen M1nn-Programms sollte die GUI neu gestartet werden, damit das neue Programm berücksichtigt wird, da sonst ein 'Unbekantner M-Code'-Fehler auftritt.

note: type: Plain text
en: Do not use a word processor to create or edit the files. A word processor will leave unseen codes that will cause problems and may prevent a bash or python file from working. Use a text editor like Geany in Debian or Notepad++ in other operating systems to create or edit the files.
de: Verwenden Sie kein Textverarbeitungsprogramm, um die Dateien zu erstellen oder zu bearbeiten. Ein Textverarbeitungsprogramm hinterlässt unsichtbare Codes, die Probleme verursachen und verhindern können, dass eine Bash- oder Python-Datei funktioniert. Verwenden Sie einen Texteditor wie Geany in Debian oder Notepad++ in anderen Betriebssystemen, um die Dateien zu erstellen oder zu bearbeiten.

note: type: Plain text
en: The error 'Unknown M-code used' denotes one of the following:
de: Der Fehler "Unbekannter M-Code verwendet" bedeutet eine der folgenden Möglichkeiten:

note: type: Plain text
en: The specified User Defined Command does not exist
de: Der angegebene benutzerdefinierte Befehl existiert nicht

note: type: Plain text
en: The file is not an executable file
de: Die Datei ist keine ausführbare Datei

note: type: Plain text
en: The file name has an extension
de: Der Dateiname hat eine Erweiterung

note: type: Plain text
en: The file name does not follow this format Mnnn where nnn = 100 through 199
de: Der Dateiname entspricht nicht diesem Format Mnnn, wobei nnn = 100 bis 199

note: type: Plain text
en: The file name used a lower case M
de: Der Dateiname enthielt ein kleines M

note: type: Plain text
en: For example to open and close a collet closer that is controlled by a parallel port pin using a bash script file using M101 and M102. Create two files named M101 and M102. Set them as executable files (typically right click/properties/permissions) before running LinuxCNC. Make sure the parallel port pin is not connected to anything in a HAL file.
de: Beispiel: Öffnen und Schließen eines Spannzangenverschlusses, der über einen Pin der parallelen Schnittstelle gesteuert wird, mit einer Bash-Skriptdatei unter Verwendung von M101 und M102. Erstellen Sie zwei Dateien mit den Namen M101 und M102. Setzen Sie sie als ausführbare Dateien (typischerweise Rechtsklick/Eigenschaften/Berechtigungen), bevor Sie LinuxCNC ausführen. Stellen Sie sicher, dass der Parallelport-Pin nicht mit irgendetwas in einer HAL-Datei verbunden ist.

note: type: Block title
en: M101 Example File
de: M101-Beispieldatei

note: type: delimited block -
en: #!/bin/bash
    # file to turn on parport pin 14 to open the collet closer
    halcmd setp parport.0.pin-14-out True
    exit 0
de: #!/bin/bash
    # Datei zum Einschalten von Parport Pin 14, um die Spannzange näher zu öffnen
    halcmd setp parport.0.pin-14-out True
    exit 0

note: type: Block title
en: M102 Example File
de: M102 Beispieldatei

note: type: delimited block -
en: #!/bin/bash
    # file to turn off parport pin 14 to open the collet closer
    halcmd setp parport.0.pin-14-out False
    exit 0
de: #!/bin/bash
    # Datei zum Ausschalten von Parport Pin 14, um die Spannzange näher zu öffnen
    halcmd setp parport.0.pin-14-out False
    exit 0

note: type: Plain text
en: To pass a variable to a M1nn file you use the P and Q option like this:
de: Um eine Variable an eine M1nn-Datei zu übergeben, verwenden Sie die Optionen P und Q wie folgt:

note: type: Block title
en: M100 Example file
de: M100 Beispieldatei

note: type: Plain text
en: To display a graphic message and stop until the message window is closed use a graphic display program like Eye of Gnome to display the graphic file. When you close it the program will resume.
de: Um eine grafische Nachricht anzuzeigen und anzuhalten, bis das Meldungsfenster geschlossen wird, verwenden Sie ein grafisches Anzeigeprogramm wie Eye of Gnome, um die Grafikdatei anzuzeigen. Wenn Sie es schließen, wird das Programm fortgesetzt.

note: type: Block title
en: M110 Example file
de: M110 Beispieldatei

note: type: Plain text
en: To display a graphic message and continue processing the G-code file suffix an ampersand to the command.
de: Um eine grafische Meldung anzuzeigen und die Bearbeitung der G-Code-Datei fortzusetzen, fügen Sie dem Befehl ein kaufmännisches Und hinzu.

note: type: Block title
en: M110 Example display and keep going
de: M110 Beispielanzeige und Weiterfahrt

note: type: Title ==
en: Use of O-codes
de: Verwendung von O-Codes

note: type: Plain text
en: O-codes provide for flow control in NC programs. Each block has an associated number, which is the number used after O. Care must be taken to properly match the O-numbers. O codes use the letter 'O' not the number zero as the first character in the number like O100 or o100.
de: O-Codes sorgen für die Ablaufsteuerung in NC-Programmen. Jeder Satz hat eine zugehörige Nummer, die nach dem O verwendet wird. Es muss darauf geachtet werden, dass die O-Nummern richtig zugeordnet werden. O-Codes verwenden den Buchstaben 'O' und nicht die Zahl Null als erstes Zeichen in der Nummer wie O100 oder o100.

note: type: Title ==
en: Numbering
de: Nummerierung

note: type: Plain text
en: Numbered O codes must have a unique number for each subroutine,
de: Nummerierte O-Codes müssen für jedes Unterprogramm eine eindeutige Nummer haben,

note: type: Block title
en: Numbering Example
de: Beispiel für eine Nummerierung

note: type: delimited block -
en: (the start of o100)
    o100 sub
    (notice that the if-endif block uses a different number)
      (the start of o110)
      o110 if [#2 GT 5]
        (some code here)
      (the end of o110)
      o110 endif
      (some more code here)
    (the end of o100)
    o100 endsub
de: (der Beginn von o100)
    o100 sub
    (beachten Sie, dass der if-endif-Block eine andere Nummer verwendet)
      (der Anfang von o110)
      o110 if [#2 GT 5]
        (etwas Code hier)
      (das Ende von o110)
      o110 endif
      (etwas mehr Code hier)
    (das Ende von o100)
    o100 endsub

note: type: Title ==
en: Comments(((Comments)))
de: Kommentare(((Kommentare)))

note: type: Plain text
en: Comments on the same line as the O word should not be used as the behavior can change in the future.
de: Kommentare in der gleichen Zeile wie das O-Wort sollten nicht verwendet werden, da sich das Verhalten in Zukunft ändern kann.

note: type: Plain text
en: The behavior is undefined if:
de: Das Verhalten ist undefiniert, wenn:

note: type: Plain text
en: The same number is used for more than one block.
de: Die gleiche Nummer für mehr als einen Block verwendet wird.

note: type: Plain text
en: Other words are used on a line with an O- word.
de: Andere Wörter in einer Zeile mit einem O-Wort verwendet werden.

note: type: Plain text
en: Comments are used on a line with an O-word.
de: Kommentare in einer Zeile mit einem O-Wort verwendet werden.

note: type: Plain text
en: Using the lower case 'o' makes it easier to distinguish from a 0 that might have been mistyped. For example 'o100' is easier to see than 'O100' that it is not a '0'.
de: Die Verwendung des Kleinbuchstaben 'o' erleichtert die Unterscheidung von einer 0, die möglicherweise falsch geschrieben wurde. Zum Beispiel ist bei 'o100' leichter zu erkennen als 'O100', dass es sich nicht um eine '0' handelt.

note: type: Title ==
en: Subroutines(((Subroutines)))
de: Unterprogramme (engl. subroutines)(((Unterprogramme)))

note: type: Plain text
en: Subroutines starts at 'Onnn sub' and ends at 'Onnn endsub'. The lines between 'Onnn sub' and 'Onnn endsub' are not executed until the subroutine is called with 'Onnn call'. Each subroutine must use a unique number.
de: Unterroutinen beginnen mit 'Onnn sub' und enden mit 'Onnn endsub'. Die Zeilen zwischen 'Onnn sub' und 'Onnn endsub' werden nicht ausgeführt, bis das Unterprogramm mit 'Onnn call' aufgerufen wird. Jede Subroutine muss eine eindeutige Nummer verwenden.

note: type: Block title
en: Subroutine Example
de: Beispiel für ein Unterprogramm

note: type: delimited block -
en: o100 sub
      G53 G0 X0 Y0 Z0 (rapid move to machine home)
    o100 endsub
de: o100 unter
      G53 G0 X0 Y0 Z0 (Eilgang zum Referenzpunkt der Maschine)
    o100 Endsub

note: type: delimited block -
en: (the subroutine is called)
    o100 call
    M2
de: (das Unterprogramm wird aufgerufen)
    o100 call
    M2

note: type: Plain text
en: See <<gcode:g53,G53>>, <<gcode:g0,G0>> and <<mcode:m2-m30,M2>> sections for more information.
de: Weitere Informationen finden Sie in den Abschnitten <<gcode:g53,G53>>, <<gcode:g0,G0>> und <<mcode:m2-m30,M2>>.

note: type: Block title
en: O- Return
de: O- Return (engl. für Rücksprung oder Rückkehr)

note: type: Plain text
en: Inside a subroutine, 'O- return' can be executed. This immediately returns to the calling code, just as though 'O- endsub' was encountered.
de: Innerhalb einer Subroutine kann 'O- return' ausgeführt werden. Damit kehrt man sofort zum aufrufenden Code zurück, so als wäre man auf 'O- endsub' gestoßen.

note: type: Block title
en: O- Return Example
de: O- Return-Beispiel

note: type: delimited block -
en: o100 sub
      (test if parameter #2 is greater than 5)
      o110 if [#2 GT 5]
        (return to top of subroutine if test is true)
        o100 return
      o110 endif
        (this only gets executed if parameter #2 is not greater than 5)
        (DEBUG, parameter 1 is [#1])
    o100 endsub
de: o100 sub
      (Prüfung, ob Parameter #2 größer als 5 ist)
      o110 if [#2 GT 5]
        (Rückkehr zum Anfang des Unterprogramms, wenn der Test wahr ist)
        o100 return
      o110 endif
        (dies wird nur ausgeführt, wenn Parameter #2 nicht größer als 5 ist)
        (DEBUG, parameter 1 ist [#1])
    o100 endsub

note: type: Plain text
en: See the <<gcode:binary-operators,Binary Operators>> and <<sec:overview-parameters,Parameters>> sections for more information.
de: Weitere Informationen finden Sie in den Abschnitten <<gcode:binary-operators,Binäre Operatoren>> und <<sec:overview-parameters,Parameter>>.

note: type: Block title
en: O- Call
de: O- Call (engl. für Aufruf)

note: type: Plain text
en: 'O- Call' takes up to 30 optional arguments, which are passed to the subroutine as '#1', '#2' , ..., #N. Parameters from #N+1 to #30 have the same value as in the calling context.  On return from the subroutine, the values of parameters #1 through #30 (regardless of the number of arguments) will be restored to the values they had before the call. Parameters #1 - #30 are local to the subroutine.
de: 'O- Call' nimmt bis zu 30 optionale Argumente auf, die als '#1', '#2' , ..., #N an das Unterprogramm übergeben werden. Die Parameter von #N+1 bis #30 haben den gleichen Wert wie im aufrufenden Kontext.  Bei der Rückkehr aus dem Unterprogramm werden die Werte der Parameter #1 bis #30 (unabhängig von der Anzahl der Argumente) auf die Werte zurückgesetzt, die sie vor dem Aufruf hatten. Die Parameter #1 - #30 sind lokal für das Unterprogramm.

note: type: Plain text
en: Because '1 2 3' is parsed as the number 123, the parameters must be enclosed in square brackets. The following calls a subroutine with 3 arguments:
de: Da '1 2 3' als die Zahl 123 geparst wird, müssen die Parameter in eckige Klammern gesetzt werden. Im Folgenden wird eine Unterroutine mit 3 Argumenten aufgerufen:

note: type: Block title
en: O- Call Example
de: O- Call-Beispiel

note: type: delimited block -
en: o100 sub
      (test if parameter #2 is greater than 5)
      o110 if [#2 GT 5]
        (return to top of subroutine if test is true)
        o100 return
      o110 endif
        (this only gets executed if parameter #2 is not greater than 5)
        (DEBUG, parameter 1 is [#1])
        (DEBUG, parameter 3 is [#3])
    o100 endsub
de: o100 sub
      (Prüfung, ob Parameter #2 größer als 5 ist)
      o110 if [#2 GT 5]
        (Rückkehr zum Anfang des Unterprogramms, wenn der Test wahr ist)
        o100 return
      o110 endif
        (dies wird nur ausgeführt, wenn Parameter #2 nicht größer als 5 ist)
        (DEBUG, Parameter 1 ist [#1])
        (DEBUG, Parameter 3 ist [#3])
    o100 endif

note: type: Plain text
en: Subroutine bodies may not be nested. They may only be called after they are defined. They may be called from other functions, and may call themselves recursively if it makes sense to do so. The maximum subroutine nesting level is 10.
de: Unterprogrammkörper dürfen nicht verschachtelt werden. Sie dürfen erst aufgerufen werden, nachdem sie definiert wurden. Sie können von anderen Funktionen aufgerufen werden und können sich selbst rekursiv aufrufen, wenn dies sinnvoll ist. Die maximale Verschachtelungsebene eines Unterprogramms ist 10.

note: type: Plain text
en: Subroutines can change the value of parameters above #30 and those changes will be visible to the calling code. Subroutines may also change the value of global named parameters.
de: Unterprogramme können den Wert von Parametern über #30 ändern, und diese Änderungen werden für den aufrufenden Code sichtbar. Unterprogramme können auch den Wert von globalen benannten Parametern ändern.

note: type: Title ===
en: Fanuc-Style Numbered Programs(((Subroutines,M98,M99)))
de: Nummerierte Programme im Fanuc-Stil(((Unterprogramme,M98,M99)))

note: type: Plain text
en: Numbered programs (both main and subprograms), the 'M98' call and 'M99' return M-codes, and their respective semantic differences are an alternative to the rs274ngc subroutines described above, provided for compatibility with Fanuc and other machine controllers.
de: Nummerierte Programme (sowohl Haupt- als auch Unterprogramme), die M-Codes 'M98' call und 'M99' return und ihre jeweiligen semantischen Unterschiede sind eine Alternative zu den oben beschriebenen rs274ngc-Unterprogrammen, die aus Gründen der Kompatibilität mit Fanuc- und anderen Maschinensteuerungen bereitgestellt werden.

note: type: Plain text
en: Numbered programs are enabled by default, and may be disabled by placing `DISABLE_FANUC_STYLE_SUB = 1` in the `[RS274NGC]` section of the `.ini` file.
de: Nummerierte Programme sind standardmäßig aktiviert und können durch Einfügen von `DISABLE_FANUC_STYLE_SUB = 1` in den Abschnitt `[RS274NGC]` der INI-Datei deaktiviert werden.

note: type: Plain text
en: Numbered main and subprogram definitions and calls differ from traditional rs274ngc both in syntax and execution.  To reduce the possibility of confusion, the interpreter will raise an error if definitions of one style are mixed with calls of another.
de: Nummerierte Haupt- und Unterprogrammdefinitionen und -aufrufe unterscheiden sich sowohl in der Syntax als auch in der Ausführung vom traditionellen rs274ngc.  Um Verwechslungen vorzubeugen, gibt der Interpreter eine Fehlermeldung aus, wenn Definitionen eines Stils mit Aufrufen eines anderen Stils vermischt werden.

note: type: Block title
en: Numbered Subprogram Simple Example
de: Nummeriertes Unterprogramm Einfaches Beispiel

note: type: delimited block -
en: o1 (Example 1)    ; Main program 1, "Example 1"
    M98 P100          ; Call subprogram 100
    M30               ; End main program
de: o1 (Beispiel 1) ; Hauptprogramm 1, "Beispiel 1"
    M98 P100 ; Unterprogramm 100 aufrufen
    M30 ; Hauptprogramm beenden

note: type: delimited block -
en: o100              ; Beginning of subprogram 100
      G53 G0 X0 Y0 Z0 ; Rapid move to machine home
    M99               ; Return from subprogram 100
de: o100 ; Beginn des Unterprogramms 100
      G53 G0 X0 Y0 Z0 ; Eilgang zum Referenzpunkt
    M99 ; Rückkehr aus Unterprogramm 100

note: type: Block title
en: 'o1 (Title)'
de: 'o1 (Titel)'

note: type: Plain text
en: The optional main program beginning block gives the main program the number `1`.  Some controllers treat an optional following parenthesized comment as a program title, `Example 1` in this example, but this has no special meaning in the rs274ngc interpreter.
de: Der optionale Hauptprogramm-Anfangsblock gibt dem Hauptprogramm die Nummer `1`.  Einige Steuerungen behandeln einen optionalen, in Klammern gesetzten Kommentar als Programmtitel, "Beispiel 1" in diesem Beispiel, aber dies hat keine besondere Bedeutung im rs274ngc-Interpreter.

note: type: Plain text
en: Call a numbered subprogram.  The block `M98 P100` is analogous to the traditional `o100 call` syntax, but may only be used to call a following numbered subprogram defined with `o100`...`M99`.  An optional 'L'-word specifies a loop count.
de: Aufruf eines nummerierten Unterprogramms.  Der Satz `M98 P100` ist analog zur traditionellen `o100 call`-Syntax, darf aber nur zum Aufruf eines folgenden nummerierten Unterprogramms verwendet werden, das mit `o100`...`M99` definiert wurde.  Ein optionales 'L'-Wort legt eine Schleifenanzahl fest.

note: type: Plain text
en: The main program must be terminated with `M02` or `M30` (or `M99`; see below).
de: Das Hauptprogramm muss mit `M02` oder `M30` (oder `M99`; siehe unten) beendet werden.

note: type: Block title
en: 'O-' subprogram definition start
de: 'O-' Beginn der Unterprogrammdefinition

note: type: Plain text
en: Marks the start of a numbered subprogram definition.  The block `O100` is similar to `o100 sub`, except that it must be placed later in the file than the `M98 P100` calling block.
de: Markiert den Beginn einer nummerierten Unterprogrammdefinition.  Der Block `O100` ist ähnlich wie `o100 sub`, außer dass er später in der Datei platziert werden muss als der aufrufende Block `M98 P100`.

note: type: Block title
en: 'M99' return from numbered subroutine
de: 'M99' Rückkehr aus nummeriertem Unterprogramm

note: type: Plain text
en: The block `M99` is analogous to the traditional `o100 endsub` syntax, but may only terminate a numbered program (`o100` in this example), and may not terminate a subroutine beginning with the `o100 sub` syntax.
de: Der Block `M99` ist analog zur traditionellen `o100 endsub`-Syntax, darf aber nur ein nummeriertes Programm beenden (`o100` in diesem Beispiel) und darf nicht ein Unterprogramm beenden, das mit der `o100 sub`-Syntax beginnt.

note: type: Plain text
en: The `M98` subprogram call differs from rs274ngc `O call` in the following ways:
de: Der Unterprogrammaufruf "M98" unterscheidet sich vom "O"-Aufruf von rs274ngc in folgender Weise:

note: type: Plain text
en: The numbered subprogram must follow the `M98` call in the program file.  The interpreter will throw an error if the subprogram precedes the call block.
de: Das nummerierte Unterprogramm muss in der Programmdatei auf den `M98`-Aufruf folgen.  Der Interpreter gibt einen Fehler aus, wenn das Unterprogramm vor dem Aufrufblock steht.

note: type: Plain text
en: Parameters `#1`, `#2`, ..., `#30` are global and accessible in numbered subprograms, similar to higher-numbered parameters in traditional style calls.  Modifications to these parameters within a subprogram are global modifications, and will be persist after subprogram return.
de: Die Parameter `#1`, `#2`, ..., `#30` sind global und in nummerierten Unterprogrammen zugänglich, ähnlich wie höher nummerierte Parameter in Aufrufen im traditionellen Stil.  Änderungen an diesen Parametern innerhalb eines Unterprogramms sind globale Änderungen, die nach der Rückkehr des Unterprogramms bestehen bleiben.

note: type: Plain text
en: `M98` subprogram calls have no return value.
de: M98"-Unterprogrammaufrufe haben keinen Rückgabewert.

note: type: Plain text
en: `M98` subprogram call blocks may contain an optional L-word specifying a loop repeat count.  Without the L-word, the subprogram will execute once only (equivalent to `M98 L1`).  An `M98 L0` block will not execute the subprogram.
de: M98"-Unterprogrammaufrufblöcke können ein optionales L-Wort enthalten, das eine Schleifenwiederholungszahl angibt.  Ohne das L-Wort wird das Unterprogramm nur einmal ausgeführt (äquivalent zu `M98 L1`).  Ein `M98 L0`-Satz führt das Unterprogramm nicht aus.

note: type: Plain text
en: In rare cases, the `M99` M-code may be used to terminate the main program, where it indicates an 'endless program'.  When the interpreter reaches an `M99` in the main program, it will skip back to the beginning of the file and resume execution at the first line.  An example use of an endless program is in a machine warm-up cycle; a block delete program end `/M30` block might be used to stop the cycle at a tidy point when the operator is ready.
de: In seltenen Fällen kann der M-Code `M99` zur Beendigung des Hauptprogramms verwendet werden, wo er ein 'Endlosprogramm' anzeigt.  Wenn der Interpreter ein `M99` im Hauptprogramm erreicht, springt er an den Anfang der Datei zurück und setzt die Ausführung bei der ersten Zeile fort.  Ein Beispiel für die Verwendung eines Endlosprogramms ist ein Aufwärmzyklus einer Maschine; ein `M30`-Satz zum Löschen des Programmendes könnte verwendet werden, um den Zyklus an einem sauberen Punkt zu beenden, wenn der Bediener bereit ist.

note: type: Block title
en: Numbered Subprogram Full Example
de: Vollständiges Beispiel für ein nummeriertes Unterprogramm

note: type: delimited block -
en: O1                             ; Main program 1
      #1 = 0
      (PRINT,X MAIN BEGIN:  1=#1)
      M98 P100 L5                  ; Call subprogram 100
      (PRINT,X MAIN END:  1=#1)
    M30                            ; End main program
de: O1 ; Hauptprogramm 1
      #1 = 0
      (PRINT,X MAIN BEGIN: 1=#1)
      M98 P100 L5 ; Unterprogramm 100 aufrufen
      (PRINT,X MAIN END: 1=#1)
    M30 ; Hauptprogramm beenden

note: type: delimited block -
en: O100                           ; Subprogram 100
      #1 = [#1 + 1]
      M98 P200 L5                  ; Call subprogram 200
      (PRINT,>> O100:  #1)
    M99                            ; Return from Subprogram 100
de: O100 ; Unterprogramm 100
      #1 = [#1 + 1]
      M98 P200 L5 ; Aufruf des Unterprogramms 200
      (PRINT,>> O100: #1)
    M99 ; Rückkehr aus Unterprogramm 100

note: type: delimited block -
en: O200                           ; Subprogram 200
      #1 = [#1 + 0.01]
      (PRINT,>>>> O200:  #1)
    M99                            ; Return from Subprogram 200
de: O200 ; Unterprogramm 200
      #1 = [#1 + 0.01]
      (PRINT,>>>>> O200: #1)
    M99 ; Rückkehr aus Unterprogramm 200

note: type: Plain text
en: In this example, parameter `#1` is initialized to `0`.  Subprogram `O100` is called five times in a loop.  Nested within each call to `O100`, subprogram `O200` is called five times in a loop, for 25 times total.
de: In diesem Beispiel wird der Parameter `#1` auf `0` initialisiert.  Das Unterprogramm "O100" wird fünfmal in einer Schleife aufgerufen.  Innerhalb jedes Aufrufs von "O100" wird das Unterprogramm "O200" fünfmal in einer Schleife aufgerufen, also insgesamt 25-mal.

note: type: Plain text
en: Note that parameter `#1` is global.  At the end of the main program, after updates within `O100` and `O200`, its value will equal `5.25`.
de: Beachten Sie, dass der Parameter `#1` global ist.  Am Ende des Hauptprogramms, nach den Aktualisierungen innerhalb von `O100` und `O200`, wird sein Wert gleich `5.25` sein.

note: type: Title ==
en: Looping(((Subroutines,Looping)))
de: Schleifen(((Unterprogramme,Schleifen)))

note: type: Plain text
en: The 'while loop' has two structures: 'while/endwhile', and 'do/while'. In each case, the loop is exited when the 'while' condition evaluates to false. The difference is when the test condition is done. The 'do/while' loop runs the code in the loop then checks the test condition. The 'while/endwhile' loop does the test first.
de: Die 'while-Schleife' hat zwei Strukturen: 'while/endwhile', und 'do/while'. In beiden Fällen wird die Schleife verlassen, wenn die 'while' Bedingung als falsch bewertet wird. Der Unterschied besteht darin, wann die Testbedingung erfüllt ist. Die 'do/while' Schleife führt den Code in der Schleife aus und überprüft dann die Testbedingung. Die 'while/endwhile' Schleife führt zuerst den Test durch.

note: type: Block title
en: While Endwhile Example
de: While Endwhile Beispiel

note: type: delimited block -
en: (draw a sawtooth shape)
    G0 X1 Y0 (move to start position)
    #1 = 0 (assign parameter #1 the value of 0)
    F25 (set a feed rate)
    o101 while [#1 LT 10]
      G1 X0
      G1 Y[#1/10] X1
      #1 = [#1+1] (increment the test counter)
    o101 endwhile
    M2 (end program)
de: (eine Sägezahnform zeichnen)
    G0 X1 Y0 (auf Startposition fahren)
    #1 = 0 (Parameter #1 den Wert 0 zuweisen)
    F25 (Vorschubgeschwindigkeit einstellen)
    o101 while [#1 LT 10]
      G1 X0
      G1 Y[#1/10] X1
      #1 = [#1+1] (Inkrementieren des Testzählers)
    o101 endwhile
    M2 (Programm beenden)

note: type: Block title
en: Do While Example
de: Do While-Beispiel

note: type: delimited block -
en: #1 = 0 (assign parameter #1 the value of 0)
    o100 do
      (debug, parameter 1 = #1)
      o110 if [#1 EQ 2]
        #1 = 3 (assign the value of 3 to parameter #1)
        (msg, #1 has been assigned the value of 3)
        o100 continue (skip to start of loop)
      o110 endif
      (some code here)
      #1 = [#1 + 1] (increment the test counter)
    o100 while [#1 LT 3]
    (msg, Loop Done!)
    M2
de: #1 = 0 (Parameter #1 wird der Wert 0 zugewiesen)
    o100 do
      (Fehlersuche, Parameter 1 = #1)
      o110 if [#1 EQ 2]
        #1 = 3 (weisen Sie dem Parameter #1 den Wert 3 zu)
        (msg, #1 wurde der Wert 3 zugewiesen)
        o100 continue (zum Anfang der Schleife springen)
      o110 endif
      (hier etwas Code)
      #1 = [#1 + 1] (Inkrementieren des Testzählers)
    o100 while [#1 LT 3]
    (msg, Schleife fertig!)
    M2

note: type: Plain text
en: Inside a while loop, 'O- break' immediately exits the loop, and 'O- continue' immediately skips to the next evaluation of the 'while' condition. If it is still true, the loop begins again at the top. If it is false, it exits the loop.
de: Innerhalb einer while-Schleife wird mit 'O- break' die Schleife sofort verlassen, und mit 'O- continue' wird sofort zur nächsten Auswertung der 'while' Bedingung übergegangen. Wenn sie immer noch wahr ist, beginnt die Schleife wieder von vorne. Wenn sie falsch ist, wird die Schleife verlassen.

note: type: Title ==
en: Conditional(((Subroutines,Conditional Loops)))
de: Bedingte Anweisungen(((Unterprogramme, bedingte Schleifen)))

note: type: Plain text
en: The 'if' conditional consists of a group of statements with the same 'o' number that start with 'if' and end with 'endif'. Optional 'elseif' and 'else' conditions may be between the starting 'if' and the ending 'endif'.
de: Die 'if' Bedingung besteht aus einer Gruppe von Anweisungen mit der gleichen 'o' Nummer, die mit 'if' beginnen und mit 'endif' enden. Optionale 'elseif' und 'else' Bedingungen können zwischen dem beginnenden 'if' und dem endenden 'endif' stehen.

note: type: Plain text
en: If the 'if' conditional evaluates to true then the group of statements following the 'if' up to the next conditional line are executed.
de: Wenn die 'if' Bedingung als wahr bewertet wird, dann wird die Gruppe von Anweisungen nach der 'if' bis zur nächsten Bedingungszeile ausgeführt.

note: type: Plain text
en: If the 'if' conditional evaluates to false then the 'elseif' conditions are evaluated in order until one evaluates to true. If the 'elseif' condition is true then the statements following the 'elseif' up to the next conditional line are executed. If none of the 'if' or 'elseif' conditions evaluate to true then the statements following the 'else' are executed. When a condition is evaluated to true no more conditions are evaluated in the group.
de: Wenn die 'if' Bedingung als falsch bewertet wird, werden die 'elseif' Bedingungen der Reihe nach ausgewertet, bis eine als wahr bewertet wird. Wenn die 'elseif' Bedingung wahr ist, werden die auf die 'elseif' folgenden Anweisungen bis zur nächsten Bedingungszeile ausgeführt. Wenn keine der 'if' oder 'elseif' Bedingungen als wahr ausgewertet wird, werden die auf die 'else' folgenden Anweisungen ausgeführt. Wenn eine Bedingung zu wahr ausgewertet wird, werden keine weiteren Bedingungen in der Gruppe ausgewertet.

note: type: Block title
en: If Endif Example
de: If Endif Beispiel

note: type: Block title
en: If ElseIf Else EndIf Example
de: If ElseIf else EndIf-Beispiel

note: type: Plain text
en: Several conditions may be tested for by 'elseif' statements until the 'else' path is finally executed if all preceding conditions are false:
de: Mehrere Bedingungen können durch 'elseif' Anweisungen getestet werden, bis der 'else' Pfad schließlich ausgeführt wird, wenn alle vorangegangenen Bedingungen falsch sind:

note: type: Block title
en: If Elseif Else Endif Example
de: If elseif else endif-Beispiel

note: type: delimited block -
en: (if parameter #2 is greater than 5 set F100)
    O102 if [#2 GT 5]
      F100
    (else if parameter #2 less than 2 set F200)
    O102 elseif [#2 LT 2]
      F20
    (parameter #2 is between 2 and 5)
    O102 else
      F200
    O102 endif
de: (wenn Parameter #2 größer als 5 ist, F100 einstellen)
    O102 wenn [#2 GT 5]
      F100
    (wenn Parameter #2 kleiner als 2 ist, wird F200 gesetzt)
    O102 elseif [#2 LT 2]
      F20
    (Parameter #2 liegt zwischen 2 und 5)
    O102 else
      F200
    O102 endif

note: type: Title ==
en: Repeat(((Subroutines,Repeat Loop)))
de: Wiederholen(((Unterprogramme,Wiederholungsschleife)))

note: type: Plain text
en: The 'repeat' will execute the statements inside of the repeat/endrepeat the specified number of times. The example shows how you might mill a diagonal series of shapes starting at the present position.
de: Mit 'repeat' werden die Anweisungen innerhalb von repeat/endrepeat die angegebene Anzahl von Malen ausgeführt. Das Beispiel zeigt, wie Sie eine diagonale Reihe von Formen fräsen könnten, beginnend an der aktuellen Position.

note: type: Block title
en: Example with 'repeat'
de: Beispiel mit 'repeat'

note: type: delimited block -
en: (Mill 5 diagonal shapes)
    G91 (Incremental mode)
    o103 repeat [5]
    ... (insert milling code here)
    G0 X1 Y1 (diagonal move to next position)
    o103 endrepeat
    G90 (Absolute mode)
de: (5 diagonale Formen fräsen)
    G91 (Inkremental-Modus)
    o103 repeat [5]
    ... (Fräscode hier einfügen)
    G0 X1 Y1 (diagonale Bewegung zur nächsten Position)
    o103 endrepeat
    G90 (Absoluter Modus)

note: type: Title ==
en: Indirection(((Indirection)))
de: Indirektion(((Indirektion)))

note: type: Plain text
en: The O-number may be given by a parameter and/or calculation.
de: Die O-Zahl kann durch einen Parameter und/oder eine Berechnung angegeben werden.

note: type: Block title
en: Indirection Example
de: Beispiel für Indirektion

note: type: Block title
en: Computing values in O-words
de: Berechnung von Werten in O-Wörtern

note: type: Plain text
en: For more information on computing values see the following sections:
de: Weitere Informationen zur Berechnung von Werten finden Sie in den folgenden Abschnitten:

note: type: Plain text
en: <<sec:overview-parameters,Parameters>>
de: <<sec:overview-parameters,Parameter>>

note: type: Plain text
en: <<gcode:expressions,Expressions>>
de: <<gcode:Ausdrücke,Ausdrücke>> (engl. expressions)

note: type: Plain text
en: <<gcode:binary-operators,Binary Operators>>
de: <<gcode:binary-operators,Binäre Operatoren>>

note: type: Plain text
en: <<gcode:functions,Functions>>
de: <<gcode:functions,Funktionen>>

note: type: Title ==
en: Calling Files(((Calling Files)))
de: Aufrufen von Dateien(((Aufrufen von Dateien)))

note: type: Plain text
en: To call a separate file with a subroutine name the file the same as your call and include a sub and endsub in the file. The file must be in the directory pointed to by 'PROGRAM_PREFIX' or 'SUBROUTINE_PATH' in the INI file.  The file name can include *lowercase* letters, numbers, dash, and underscore only. A named subroutine file can contain only a single subroutine definition.
de: Um eine separate Datei mit einem Unterprogramm aufzurufen, geben Sie der Datei den gleichen Namen wie Ihrem Aufruf und fügen Sie ein sub und endsub in die Datei ein. Die Datei muss sich in dem Verzeichnis befinden, auf das 'PROGRAM_PREFIX' oder 'SUBROUTINE_PATH' in der INI-Datei verweist.  Der Dateiname darf nur *Kleinbuchstaben*, Zahlen, Bindestriche und Unterstriche enthalten. Eine benannte Subroutinendatei kann nur eine einzige Subroutinendefinition enthalten.

note: type: Block title
en: Named File Example
de: Beispiel für eine benannte Datei

note: type: Block title
en: Numbered File Example
de: Beispiel für eine nummerierte Datei

note: type: Plain text
en: In the called file you must include the oxxx sub and endsub and the file must be a valid file.
de: In der aufgerufenen Datei müssen die oxxx sub und endsub enthalten sein und die Datei muss eine gültige Datei sein.

note: type: Block title
en: Called File Example
de: Beispiel für eine aufgerufene Datei

note: type: Plain text
en: The file names are lowercase letters only so 'o<MyFile>' is converted to 'o<myfile>' by the interpreter. More information about the search path and options for the search path are in the INI configuration section.
de: Die Dateinamen sind nur Kleinbuchstaben, so dass 'o<MyFile>' vom Interpreter in 'o<myfile>' umgewandelt wird. Weitere Informationen über den Suchpfad und Optionen für den Suchpfad finden Sie im Abschnitt zur INI-Konfiguration.

note: type: Title ==
en: Subroutine return values(((Return Values)))
de: Unterprogramm Rückgabewerte(((Rückgabewerte)))

note: type: Plain text
en: Subroutines may optionally return a value by an optional expression at an 'endsub' or 'return' statement.
de: Unterprogramme können optional einen Wert durch einen optionalen Ausdruck in einer 'endsub' oder 'return' Anweisung zurückgeben.

note: type: Block title
en: Return value example
de: Beispiel für einen Rückgabewert

note: type: Plain text
en: A subroutine return value is stored in the '#<_value>' <<gcode:predefined-named-parameters,predefined named parameter>> , and the '#<_value_returned>' predefined parameter is set to 1, to indicate a value was returned. Both parameters are global, and are cleared just before the next subroutine call.
de: Der Rückgabewert eines Unterprogramms wird im '#<_value>' <gcode:predefined-named-parameters,predefined named parameter>> gespeichert, und der '#<_value_returned>' vordefinierte Parameter wird auf 1 gesetzt, um anzuzeigen, dass ein Wert zurückgegeben wurde. Beide Parameter sind global und werden kurz vor dem nächsten Unterprogrammaufruf gelöscht.

note: type: Title ==
en: Errors(((O-Code Errors)))
de: Fehler (engl. errors)(((O-Code-Fehler)))

note: type: Plain text
en: The following statements cause an error message and abort the interpreter:
de: Die folgenden Anweisungen führen zu einer Fehlermeldung und zum Abbruch des Interpreters:

note: type: Plain text
en: a `return` or `endsub` not within a sub definition
de: ein "return" oder "endsub", außerhalb einer Unterdefinition

note: type: Plain text
en: a label on `repeat` which is defined elsewhere
de: ein Label (benamte Markierung) für `repeat`, das an anderer Stelle definiert ist

note: type: Plain text
en: a label on `while` which is defińed elsewhere and not referring to a `do`
de: ein Label für `while`, das an anderer Stelle definiert ist und sich nicht auf ein `do` bezieht

note: type: Plain text
en: a label on `if` defined elsewhere
de: ein an anderer Stelle definiertes Label für `if`

note: type: Plain text
en: a undefined label on `else` or `elseif`
de: ein undefiniertes Label bei `else` oder `elseif`

note: type: Plain text
en: a label on `else`, `elseif` or `endif` not pointing to a matching `if`
de: ein Label auf `else`, `elseif` oder `endif`, das nicht auf ein passendes `if` verweist

note: type: Plain text
en: a label on `break` or `continue` which does not point to a matching `while` or `do`
de: eine Bezeichnung für `break` oder `continue`, die nicht auf ein passendes `while` oder `do` verweist

note: type: Plain text
en: a label on `endrepeat` or `endwhile` no referring to a corresponding `while` or `repeat`
de: eine Bezeichnung für `endrepeat` oder ``endwhile`, die nicht auf ein entsprechendes `while` oder `repeat` verweist

note: type: Plain text
en: To make these errors non-fatal warnings on stderr, set bit 0x20 in the `[RS274NGC]FEATURE=` mask ini option.
de: Um diese Fehler zu nicht-fatalen Warnungen auf stderr zu machen, setzen Sie Bit 0x20 bei der Option `[RS274NGC]FEATURE=` in mask ini.

note: type: Title =
en: Other Codes(((Other Codes)))
de: Andere Codes(((Andere Codes)))

note: type: Title ==
en: F: Set Feed Rate(((F: Set Feed Rate)))
de: F: Vorschub einstellen(((F: Vorschub einstellen)))

note: type: Plain text
en: 'Fx' - set the feed rate to 'x'.  'x' is usually in machine units (inches or millimeters) per minute.
de: 'Fx' - stellt die Vorschubgeschwindigkeit auf 'x' ein. 'x' ist normalerweise in Maschineneinheiten (Zoll oder Millimeter) pro Minute.

note: type: Plain text
en: The application of the feed rate is as described in the <<sub:feed-rate,Feed Rate>> Section, unless 'inverse time feed rate mode' or 'feed per revolution mode' are in effect, in which case the feed rate is as described in the <<gcode:g93-g94-g95,G93 G94 G95>> section.
de: Die Anwendung des Vorschubs ist wie im dedizierten Abschnitt zum <<sub:feed-rate,Vorschub>> beschrieben, es sei denn 'inverse time feed rate mode' oder 'feed per revolution mode' sind in Kraft, in welchem Fall der Vorschub wie im <<gcode:g93-g94-g95,G93 G94 G95>> Abschnitt beschrieben ist.

note: type: Title ==
en: S: Set Spindle Speed(((S: Set Spindle Speed)))
de: S: Spindeldrehzahl einstellen(((S: Spindeldrehzahl einstellen)))

note: type: Plain text
en: 'Sx [$n]' - set the speed of the spindle to 'x' revolutions per minute (RPM)  with the optional $ set the spindle speed for a specific spindle. Without the $ the command will default to spindle.0.
de: 'Sx [$n]' - setzt die Spindeldrehzahl auf 'x' Umdrehungen pro Minute (U/min, engl. RPM) mit dem optionalen $ setzt die Spindeldrehzahl für eine bestimmte Spindel. Ohne das $ wird der Befehl standardmäßig auf spindle.0 gesetzt.

note: type: Plain text
en: The spindle(s) or selected spindle will turn at that speed when a 'M3' or 'M4' is in effect. It is OK to program an S word whether the spindle is turning or not. If the speed override switch is enabled and not set at 100%, the speed will be different from what is programmed.
de: Die Spindel(n) oder die ausgewählte Spindel dreht sich mit dieser Geschwindigkeit, wenn ein 'M3' oder 'M4' in Kraft ist. Es ist OK, ein S-Wort zu programmieren, egal ob sich die Spindel dreht oder nicht. Wenn der Geschwindigkeits-Override-Schalter aktiviert und nicht auf 100% eingestellt ist, weicht die Geschwindigkeit von der programmierten ab.

note: type: Plain text
en: It is OK to program S0, the spindle will not turn if that is done.
de: Es ist OK, S0 zu programmieren, die Spindel wird sich dann nicht drehen.

note: type: Plain text
en: the S number is negative.
de: die S-Nummer negativ ist.

note: type: Plain text
en: As described in the section <<gcode:g84, Right-hand Tapping Cycle with Dwell>>, if a 'G84' (tapping) drilling cycle is active and the speed and feed potentiometers are enabled, the one with the lowest setting will be used.  The rotational speed and feed rate will remain synchronized. In this case, the speed may differ from the one programmed, even if the speed correction potentiometer is set to 100%.
de: Wie im Abschnitt 'gcode:g84, Rechtsgewindebohrzyklus mit Verweilzeit>> beschrieben, wird, wenn ein 'G84' (Gewindebohren) Bohrzyklus aktiv ist und die Drehzahl- und Vorschubpotentiometer sind aktiviert, dasjenige mit der niedrigsten Einstellung verwendet.  Die Drehzahl und der Vorschub bleiben synchronisiert. In diesem Fall kann die Drehzahl von der programmierten abweichen, auch wenn das Drehzahlkorrekturpotentiometer auf 100% eingestellt ist.

note: type: Title ==
en: T: Select Tool(((T: Select Tool)))
de: T: Werkzeug auswählen(((T: Werkzeug auswählen)))

note: type: Plain text
en: 'Tx' - prepare to change to tool 'x'.
de: 'Tx' - Vorbereitung für den Wechsel zum Werkzeug 'x'.

note: type: Plain text
en: The tool is not changed until an 'M6' is programmed (see Section <<mcode:m6,M6>>). The T word may appear on the same line as the 'M6' or on a previous line. It is OK if T words appear on two or more lines with no tool change. Only the the most recent T word will take effect at the next tool change.
de: Das Werkzeug wird erst gewechselt, wenn ein 'M6' programmiert wird (siehe Abschnitt <mcode:m6,M6>>). Das T-Wort kann in der gleichen Zeile wie der 'M6' oder in einer vorhergehenden Zeile erscheinen. Es ist in Ordnung, wenn T-Wörter in zwei oder mehr Zeilen erscheinen, ohne dass das Werkzeug gewechselt wird. Nur das letzte T-Wort wird beim nächsten Werkzeugwechsel wirksam.

note: type: Plain text
en: When LinuxCNC is configured for a nonrandom toolchanger (see the entry for RANDOM_TOOLCHANGER in the <<sub:ini:sec:emcio,EMCIO Section>>), 'T0' gets special handling: no tool will be selected. This is useful if you want the spindle to be empty after a tool change.
de: Wenn LinuxCNC für einen nicht-zufälligen Werkzeugwechsler konfiguriert ist (siehe den Eintrag für RANDOM_TOOLCHANGER zum <<sub:ini:sec:emcio,EMCIO Abschnitt>>), 'T0' bekommt eine besondere Behandlung: kein Werkzeug wird ausgewählt. Dies ist nützlich, wenn Sie wollen, dass die Spindel nach einem Werkzeugwechsel leer ist.

note: type: Plain text
en: When LinuxCNC is configured for a random toolchanger (see the entry for RANDOM_TOOLCHANGER in the <<sub:ini:sec:emcio,EMCIO Section>>), 'T0' does not get any special treatment: T0 is a valid tool like any other.  It is customary to use T0 on a random toolchanger machine to track an empty pocket, so that it behaves like a nonrandom toolchanger machine and unloads the spindle.
de: Wenn LinuxCNC für einen zufälligen Werkzeugwechsler konfiguriert ist (siehe den Eintrag für RANDOM_TOOLCHANGER zum <<sub:ini:sec:emcio,EMCIO Abschnitt>>), 'T0' bekommt keine besondere Behandlung: T0 ist ein gültiges Werkzeug wie jedes andere.  Es ist üblich, T0 auf einem Zufallswerkzeugwechsler zu verwenden, um eine leere Tasche zu verfolgen, so dass er sich wie ein Nicht-Zufallswerkzeugwechsler verhält und die Spindel entlädt.

note: type: Plain text
en: a negative T number is used,
de: eine negative T-Nummer verwendet wird,

note: type: Plain text
en: T number is used that does not appear in the tool table file (with the exception that T0 on nonrandom toolchangers *is* accepted, as noted above).
de: T Nummer verwendet wird, die nicht in der Werkzeugtabellendatei enthalten ist (mit der Ausnahme, dass T0 bei nicht zufälligen Werkzeugwechslern akzeptiert wird, wie oben erwähnt).

note: type: Plain text
en: On some machines, the carousel will move when a T word is programmed, at the same time machining is occurring. On such machines, programming the T word several lines before a tool change will save time. A common programming practice for such machines is to put the T word for the next tool to be used on the line after a tool change. This maximizes the time available for the carousel to move.
de: Bei einigen Maschinen bewegt sich das Karussell, wenn ein T-Wort programmiert wird, während gleichzeitig eine Bearbeitung stattfindet. Bei solchen Maschinen spart man Zeit, wenn man das T-Wort mehrere Zeilen vor einem Werkzeugwechsel programmiert. Eine gängige Programmierpraxis für solche Maschinen besteht darin, das T-Wort für das nächste zu verwendende Werkzeug in die Zeile nach einem Werkzeugwechsel zu setzen. Dadurch wird die verfügbare Zeit für die Bewegung des Karussells maximiert.

note: type: Plain text
en: Rapid moves after a 'T<n>' will not show on the AXIS preview until after a feed move. This is for machines that travel long distances to change the tool like a lathe. This can be very confusing at first. To turn this feature off for the current tool program a G1 without any move after the 'T<n>'.
de: Eilgangbewegungen nach einem 'T<n>' werden in der AXIS-Vorschau erst nach einer Vorschubbewegung angezeigt. Dies gilt für Maschinen, die zum Werkzeugwechsel lange Strecken zurücklegen, wie z. B. eine Drehmaschine. Dies kann anfangs sehr verwirrend sein. Um diese Funktion für das aktuelle Werkzeug auszuschalten, programmieren Sie einen G1 ohne eine Bewegung nach dem 'T<n>'.

note: type: Title =
en: G-code Overview
de: G-Code Übersicht

note: type: Plain text
en: The LinuxCNC G-code language is based on the RS274/NGC language. The G Code language is based on lines of code. Each line (also called a 'block') may include commands to do several different things. Lines of code may be collected in a file to make a program.
de: Die LinuxCNC G-Code Sprache basiert auf der RS274/NGC Sprache. Die G-Code-Sprache basiert auf Codezeilen. Jede Zeile (auch 'Block' genannt) kann Befehle enthalten, um mehrere verschiedene Dinge zu tun. Codezeilen können in einer Datei gesammelt werden, um ein Programm zu erstellen.

note: type: Plain text
en: A typical line of code consists of an optional line number at the beginning followed by one or more 'words'. A word consists of a letter followed by a number (or something that evaluates to a number). A word may either give a command or provide an argument to a command. For example, 'G1 X3' is a valid line of code with two words. 'G1' is a command meaning 'move in a straight line at the programmed feed rate to the programmed end point', and 'X3' provides an argument value (the value of X should be 3 at the end of the move).  Most LinuxCNC G-code commands start with either G or M (for General and Miscellaneous). The words for these commands are called 'G codes' and 'M-codes'.
de: Eine typische Codezeile besteht aus einer optionalen Zeilennummer am Anfang, gefolgt von einem oder mehreren 'Wörtern'. Ein Wort besteht aus einem Buchstaben gefolgt von einer Zahl (oder etwas, das als Zahl ausgewertet werden kann). Ein Wort kann entweder einen Befehl geben oder ein Argument für einen Befehl darstellen. Zum Beispiel ist 'G1 X3' eine gültige Codezeile mit zwei Wörtern. 'G1' ist ein Befehl, der bedeutet 'fahre in einer geraden Linie mit der programmierten Vorschubgeschwindigkeit zum programmierten Endpunkt', und 'X3' liefert einen Argumentwert (der Wert von X sollte am Ende der Bewegung 3 sein).  Die meisten LinuxCNC G-Code Befehle beginnen entweder mit G oder M (für General und Miscellaneous). Die Wörter für diese Befehle werden 'G-Codes' und 'M-Codes' genannt.

note: type: Plain text
en: The LinuxCNC language has no indicator for the start of a program. The Interpreter, however, deals with files. A single program may be in a single file, or a program may be spread across several files. A file may demarcated with percents in the following way. The first non-blank line of a file may contain nothing but a percent sign, '%', possibly surrounded by white space, and later in the file (normally at the end of the file) there may be a similar line. Demarcating a file with percents is optional if the file has an 'M2' or 'M30' in it, but is required if not. An error will be signaled if a file has a percent line at the beginning but not at the end. The useful contents of a file demarcated by percents stop after the second percent line. Anything after that is ignored.
de: Die LinuxCNC Sprache hat keinen Indikator für den Start eines Programms. Der Interpreter arbeitet jedoch mit Dateien. Ein einzelnes Programm kann in einer einzigen Datei stehen, oder ein Programm kann über mehrere Dateien verteilt sein. Eine Datei kann auf folgende Weise mit Prozent-Zeichen abgegrenzt werden. Die erste nicht leere Zeile einer Datei kann nichts anderes als ein Prozentzeichen, '%', enthalten, möglicherweise umgeben von Leerzeichen, und später in der Datei (normalerweise am Ende der Datei) kann es eine ähnliche Zeile geben. Die Abgrenzung einer Datei mit Prozentzeichen ist optional, wenn die Datei ein 'M2' oder 'M30' enthält, ist aber erforderlich, wenn nicht. Ein Fehler wird gemeldet, wenn eine Datei am Anfang, aber nicht am Ende eine Prozentzeile enthält. Der nützliche Inhalt einer Datei, die durch Prozentzeichen abgegrenzt ist, hört nach der zweiten Prozentzeile auf. Alles, was danach kommt, wird ignoriert.

note: type: Plain text
en: The LinuxCNC G-code language has two commands ('M2' or 'M30'), either of which ends a program. A program may end before the end of a file. Lines of a file that occur after the end of a program are not to be executed. The interpreter does not even read them.
de: Die LinuxCNC G-Code Sprache hat zwei Befehle ('M2' oder 'M30'), von denen jeder ein Programm beendet. Ein Programm kann vor dem Ende einer Datei enden. Zeilen einer Datei, die nach dem Ende eines Programms stehen, werden nicht ausgeführt. Der Interpreter liest sie nicht einmal.

note: type: Title ==
en: Format of a line
de: Format einer Zeile

note: type: Plain text
en: A permissible line of input code consists of the following, in order, with the restriction that there is a maximum (currently 256) to the number of characters allowed on a line.
de: Eine zulässige Eingabezeile besteht der Reihe nach aus den folgenden Zeichen, wobei die Anzahl der in einer Zeile zulässigen Zeichen begrenzt ist (derzeit 256).

note: type: Plain text
en: an optional block delete character, which is a slash '/'.
de: ein optionales Blocklöschzeichen, das ein Schrägstrich '/' ist.

note: type: Plain text
en: an optional line number.
de: eine optionale Zeilennummer.

note: type: Plain text
en: any number of words, parameter settings, and comments.
de: eine beliebige Anzahl von Wörtern, Parametereinstellungen und Kommentaren.

note: type: Plain text
en: an end of line marker (carriage return or line feed or both).
de: eine Zeilenende-Markierung (Wagenrücklauf oder Zeilenvorschub oder beides).

note: type: Plain text
en: Any input not explicitly allowed is illegal and will cause the Interpreter to signal an error.
de: Jede nicht ausdrücklich erlaubte Eingabe ist illegal und führt zu einer Fehlermeldung des Interpreters.

note: type: Plain text
en: Spaces and tabs are allowed anywhere on a line of code and do not change the meaning of the line, except inside comments. This makes some strange-looking input legal. The line 'G0X +0. 12 34Y 7' is equivalent to 'G0 x+0.1234 Y7', for example.
de: Leerzeichen und Tabulatoren sind an jeder Stelle einer Codezeile erlaubt und ändern die Bedeutung der Zeile nicht, außer innerhalb von Kommentaren. Dies macht einige seltsam aussehende Eingaben legal. Die Zeile 'G0X +0. 12 34Y 7' ist zum Beispiel äquivalent zu 'G0 x+0.1234 Y7'.

note: type: Plain text
en: Blank lines are allowed in the input. They are to be ignored.
de: Leerzeilen sind in der Eingabe erlaubt. Sie sind zu ignorieren.

note: type: Plain text
en: Input is case insensitive, except in comments, i.e., any letter outside a comment may be in upper or lower case without changing the meaning of a line.
de: Bei der Eingabe wird nicht zwischen Groß- und Kleinschreibung unterschieden, außer in Kommentaren, d. h. jeder Buchstabe außerhalb eines Kommentars kann groß- oder kleingeschrieben sein, ohne dass sich die Bedeutung einer Zeile ändert.

note: type: Title ===
en: '/': Block Delete((('/' Block Delete)))
de: '/': Block löschen (engl. block delete)((('/' Block löschen)))

note: type: Plain text
en: The optional block delete character the slash '/' when placed first on a line can be used by some user interfaces to skip lines of code when needed. In Axis the key combination Alt-m-/ toggles block delete on and off. When block delete is on any lines starting with the slash '/' are skipped.
de: Das optionale Zeichen zum Löschen von Blöcken, der Schrägstrich '/', kann, wenn er an erster Stelle in einer Zeile steht, von einigen Benutzeroberflächen verwendet werden, um Codezeilen bei Bedarf zu überspringen. In Axis schaltet die Tastenkombination Alt-m-/ die Blocklöschung ein und aus. Wenn die Blocklöschung aktiviert ist, werden alle Zeilen, die mit dem Schrägstrich '/' beginnen, übersprungen.

note: type: Plain text
en: In AXIS, it is also possible to enable block delete with the following icon:
de: In AXIS ist es auch möglich, das Löschen von Blöcken mit dem folgenden Symbol zu aktivieren:

note: type: Block title
en: AXIS Block Delete Icon
de: AXIS-Block Löschsymbol

note: type: Title ===
en: Line Number(((Line Number)))
de: Zeilennummer(((Zeilennummer)))

note: type: Plain text
en: A line number is the letter N followed by an unsigned integer, optionally followed by a period and another unsigned integer. For example, 'N1234' and 'N56.78' are valid line numbers. They may be repeated or used out of order, although normal practice is to avoid such usage. Line numbers may also be skipped, and that is normal practice. A line number is not required to be used, but must be in the proper place if used.
de: Eine Zeilennummer ist der Buchstabe N, gefolgt von einer ganzen Zahl ohne Vorzeichen, optional gefolgt von einem Punkt und einer weiteren ganzen Zahl ohne Vorzeichen. Zum Beispiel sind 'N1234' und 'N56.78' gültige Zeilennummern. Sie können wiederholt oder außer der Reihe verwendet werden, obwohl dies in der Regel vermieden werden sollte. Zeilennummern können auch übersprungen werden, was ebenfalls gängige Praxis ist. Eine Zeilennummer muss nicht zwingend verwendet werden, aber sie muss an der richtigen Stelle stehen, wenn sie verwendet wird.

note: type: Title ===
en: Word(((Words)))
de: Wort(((Wörter)))

note: type: Plain text
en: A word is a letter other than N followed by a real value.
de: Ein Wort ist ein Buchstabe außer N, gefolgt von einer Gleitkommazahl.

note: type: Plain text
en: Words may begin with any of the letters shown in the following Table.  The table includes N for completeness, even though, as defined above, line numbers are not words. Several letters (I, J, K, L, P, R) may have different meanings in different contexts.  Letters which refer to axis names are not valid on a machine which does not have the corresponding axis.
de: Wörter können mit jedem der in der folgenden Tabelle aufgeführten Buchstaben beginnen.  Die Tabelle enthält der Vollständigkeit halber auch N, obwohl Zeilennummern, wie oben definiert, keine Wörter sind. Mehrere Buchstaben (I, J, K, L, P, R) können in verschiedenen Zusammenhängen unterschiedliche Bedeutungen haben.  Buchstaben, die sich auf Achsennamen beziehen, gelten nicht für eine Maschine, die nicht über die entsprechende Achse verfügt.

note: type: Block title
en: Words and their meanings
de: Wörter und ihre Bedeutungen

note: type: Table
en: Letter
de: Buchstabe

note: type: Table
en: A axis of machine
de: A-Achse der Maschine

note: type: Table
en: B axis of machine
de: B-Achse der Maschine

note: type: Table
en: C axis of machine
de: C-Achse der Maschine

note: type: Table
en: Tool radius compensation number
de: Werkzeugradius-Korrekturnummer

note: type: Table
en: General function (See table  <<cap:modal-groups,Modal Groups>>)
de: Allgemeine Funktion (siehe Tabelle <cap:modal-groups,Modale Gruppen>>)

note: type: Table
en: Tool length offset index
de: Werkzeuglängen-Offset-Index

note: type: Table
en: X offset for arcs and G87 canned cycles
de: X-Versatz für Bögen und G87-Festzyklen

note: type: Table
en: Y offset for arcs and G87 canned cycles
de: Y-Versatz für Bögen und G87-Festzyklen

note: type: Table
en: Z offset for arcs and G87 canned cycles.
de: Z-Versatz für Bögen und G87-Konservenzyklen.

note: type: Table
en: Spindle-Motion Ratio for G33 synchronized movements.
de: Spindel-Bewegungs-Verhältnis für G33 synchronisierte Bewegungen.

note: type: Table
en: generic parameter word for G10, M66 and others
de: generisches Parameterwort für G10, M66 und andere

note: type: Table
en: Miscellaneous function (See table  <<cap:modal-groups,Modal Groups>>)
de: Verschiedene Funktionen (siehe Tabelle <cap:modal-groups,Modal Groups>>)

note: type: Table
en: Line number
de: Zeilennummer

note: type: Table
en: Dwell time in canned cycles and with G4.
de: Verweilzeit in Festzyklen und mit G4.

note: type: Table
en: Key used with G10.
de: Schlüssel wird mit G10 verwendet.

note: type: Table
en: Feed increment in G73, G83 canned cycles
de: Vorschubinkrement in G73, G83 Festzyklen

note: type: Table
en: Arc radius or canned cycle plane
de: Bogenradius oder Festzyklusebene

note: type: Table
en: Spindle speed
de: Spindeldrehzahl

note: type: Table
en: Tool selection
de: Werkzeugauswahl

note: type: Table
en: U axis of machine
de: U-Achse der Maschine

note: type: Table
en: V axis of machine
de: V-Achse der Maschine

note: type: Table
en: W axis of machine
de: W-Achse der Maschine

note: type: Table
en: X axis of machine
de: X-Achse der Maschine

note: type: Table
en: Y axis of machine
de: Y-Achse der Maschine

note: type: Table
en: Z axis of machine
de: Z-Achse der Maschine

note: type: Title ===
en: Numbers(((Numbers)))
de: Nummern(Nummern)

note: type: Plain text
en: The following rules are used for (explicit) numbers. In these rules a digit is a single character between 0 and 9.
de: Die folgenden Regeln werden für (explizite) Zahlen verwendet. In diesen Regeln ist eine Ziffer ein einzelnes Zeichen zwischen 0 und 9.

note: type: Plain text
en: A number consists of:
de: Eine Nummer besteht aus:

note: type: Plain text
en: an optional plus or minus sign, followed by
de: ein optionales Plus- oder Minuszeichen, gefolgt von

note: type: Plain text
en: zero to many digits, followed, possibly, by
de: Null bis viele Ziffern, eventuell gefolgt von

note: type: Plain text
en: one decimal point, followed by
de: eine Dezimalstelle, gefolgt von

note: type: Plain text
en: zero to many digits - provided that there is at least one digit somewhere in the number.
de: Null bis viele Ziffern - vorausgesetzt, die Zahl enthält mindestens eine Ziffer.

note: type: Plain text
en: There are two kinds of numbers:
de: Es gibt zwei Arten von Zahlen:

note: type: Plain text
en: Integers, that does not have a decimal point,
de: Ganze Zahlen, die keinen Dezimalpunkt haben,

note: type: Plain text
en: Decimals, that do have a decimal point.
de: Dezimalzahlen, die einen Dezimalpunkt haben.

note: type: Plain text
en: Numbers may have any number of digits, subject to the limitation on line length. Only about seventeen significant figures will be retained, however (enough for all known applications).
de: Zahlen können eine beliebige Anzahl von Ziffern haben, vorbehaltlich der Begrenzung der Zeilenlänge. Es werden jedoch nur etwa siebzehn signifikante Stellen beibehalten (ausreichend für alle bekannten Anwendungen).

note: type: Plain text
en: A non-zero number with no sign but the first character is assumed to be positive.
de: Eine Zahl ungleich Null ohne Vorzeichen, aber das erste Zeichen wird als positiv angenommen.

note: type: Plain text
en: Notice that initial (before the decimal point and the first non-zero digit) and trailing (after the decimal point and the last non-zero digit) zeros are allowed but not required. A number written with initial or trailing zeros will have the same value when it is read as if the extra zeros were not there.
de: Beachten Sie, dass Anfangs- (vor dem Dezimalpunkt und der ersten Nicht-Null-Stelle) und Nachnullen (nach dem Dezimalpunkt und der letzten Nicht-Null-Stelle) erlaubt, aber nicht erforderlich sind. Eine Zahl, die mit Anfangs- oder Nachnullen geschrieben wird, hat beim Lesen denselben Wert, als ob die zusätzlichen Nullen nicht vorhanden wären.

note: type: Plain text
en: Numbers used for specific purposes in RS274/NGC are often restricted to some finite set of values or some to some range of values. In many uses, decimal numbers must be close to integers; this includes the values of indices (for parameters and carousel slot numbers, for example), M-codes, and G-codes multiplied by ten. A decimal number which is intended to represent an integer is considered close enough if it is within 0.0001 of an integer value.
de: Zahlen, die für bestimmte Zwecke in RS274/NGC verwendet werden, sind oft auf eine endliche Menge von Werten oder auf einen Wertebereich beschränkt. Bei vielen Verwendungszwecken müssen Dezimalzahlen nahe an Ganzzahlen liegen; dazu gehören die Werte von Indizes (z. B. für Parameter und Karussellplatznummern), M-Codes und G-Codes multipliziert mit zehn. Eine Dezimalzahl, die eine ganze Zahl darstellen soll, gilt als nahe genug, wenn sie innerhalb von 0,0001 eines ganzzahligen Wertes liegt.

note: type: Plain text
en: The RS274/NGC language supports 'parameters' - what in other programming languages would be called 'variables'. There are several types of parameter of different purpose and appearance, each described in the following sections. The only value type supported by parameters is floating-point; there are no string, boolean or integer types in G-code like in other programming languages. However, logic expressions can be formulated with <<gcode:binary-operators,boolean operators>> ( 'AND', 'OR', 'XOR', and the comparison operators 'EQ','NE','GT','GE','LT','LE'), and the 'MOD', 'ROUND', 'FUP' and 'FIX' <<gcode:functions,operators>> support integer arithmetic.
de: Die Sprache RS274/NGC unterstützt 'Parameter' - was in anderen Programmiersprachen als 'Variablen' bezeichnet würde. Es gibt mehrere Arten von Parametern mit unterschiedlichem Zweck und Aussehen, die in den folgenden Abschnitten beschrieben werden. Der einzige Wertetyp, der von Parametern unterstützt wird, ist die Fließkommazahl; es gibt in G-Code keine String-, Boolean- oder Integer-Typen wie in anderen Programmiersprachen. Logische Ausdrücke können jedoch mit gcode formuliert werden: gcode:binary-operators,Boolesche Operatoren>> ( 'AND', 'OR', 'XOR', und die Vergleichsoperatoren 'EQ','NE','GT','GE','LT','LE'), sowie die 'MOD', 'ROUND', 'FUP' und 'FIX' <gcode:functions,Operatoren>> unterstützen Ganzzahlarithmetik.

note: type: Plain text
en: Parameters differ in syntax, scope, behavior when not yet initialized, mode, persistence and intended use.
de: Die Parameter unterscheiden sich in Syntax, Umfang, Verhalten, wenn sie noch nicht initialisiert sind, Modus, Persistenz und Verwendungszweck.

note: type: Plain text
en: There are three kinds of syntactic appearance:
de: Es gibt drei Arten der syntaktischen Erscheinung:

note: type: Plain text
en: 'numbered' - #4711
de: 'nummeriert' - #4711

note: type: Plain text
en: 'named local' - #<localvalue>
de: 'benannt local' - #<lokaler Wert>

note: type: Plain text
en: 'named global' - #<_globalvalue>
de: 'benannt global' - #<_globalvalue>

note: type: Labeled list
en: Scope
de: Geltungsbereich (engl. scope)

note: type: Plain text
en: The scope of a parameter is either global, or local within a subroutine. Subroutine parameters and local named variables have local scope. Global named parameters and numbered parameters starting from number 31 are global in scope. RS274/NGC uses 'lexical scoping' - in a subroutine only the local variables defined therein, and any global variables are visible. The local variables of a calling procedure are not visible in a called procedure.
de: Der Geltungsbereich eines Parameters ist entweder global oder lokal innerhalb eines Unterprogramms. Unterprogramm-Parameter und lokale benannte Variablen haben einen lokalen Geltungsbereich. Globale benannte Parameter und nummerierte Parameter ab der Nummer 31 haben einen globalen Geltungsbereich. RS274/NGC verwendet 'lexical scoping' - in einer Subroutine sind nur die darin definierten lokalen Variablen und alle globalen Variablen sichtbar. Die lokalen Variablen einer aufrufenden Prozedur sind in einer aufgerufenen Prozedur nicht sichtbar.

note: type: Labeled list
en: Behavior of uninitialized parameters
de: Verhalten nicht initialisierter Parameter

note: type: Plain text
en: Uninitialized global parameters, and unused subroutine parameters return the value zero when used in an expression.
de: Nicht initialisierte globale Parameter und nicht verwendete Unterprogrammparameter geben den Wert Null zurück, wenn sie in einem Ausdruck verwendet werden.

note: type: Plain text
en: Uninitialized named parameters signal an error when used in an expression.
de: Uninitialisierte benannte Parameter signalisieren einen Fehler, wenn sie in einem Ausdruck verwendet werden.

note: type: Title ===
en: Mode
de: Modus

note: type: Plain text
en: Most parameters are read/write and may be assigned to within an assignment statement. However, for many predefined parameters this does not make sense, so they are are read-only - they may appear in expressions, but not on the left-hand side of an assignment statement.
de: Die meisten Parameter sind schreib- und lesbar und können innerhalb einer Zuweisungsanweisung zugewiesen werden. Bei vielen vordefinierten Parametern ist dies jedoch nicht sinnvoll, daher sind sie schreibgeschützt - sie können in Ausdrücken erscheinen, aber nicht auf der linken Seite einer Zuweisungsanweisung.

note: type: Labeled list
en: Persistence
de: Persistenz

note: type: Plain text
en: When LinuxCNC is shut down, volatile parameters lose their values. All parameters except numbered parameters in the current persistent range footnoteref:[persistent_range,The range of persistent parameters may change as development progresses. This range is currently 5161- 5390. It is defined in the '_required_parameters array' in file the src/emc/rs274ngc/interp_array.cc .] are volatile.  Persistent parameters are saved in the .var file and restored to their previous values when LinuxCNC is started again. Volatile numbered parameters are reset to zero.
de: Wenn LinuxCNC heruntergefahren wird, verlieren die flüchtigen Parameter ihre Werte. Alle Parameter mit Ausnahme der nummerierten Parameter im aktuellen persistenten Bereich footnoteref:[persistent_range,Der Bereich der persistenten Parameter kann sich mit fortschreitender Entwicklung ändern. Dieser Bereich liegt derzeit zwischen 5161 und 5390. Er ist im Array '_required_parameters' in der Datei src/emc/rs274ngc/interp_array.cc definiert.] sind flüchtig.  Persistente Parameter werden in der .var-Datei gespeichert und auf ihre vorherigen Werte zurückgesetzt, wenn LinuxCNC erneut gestartet wird. Flüchtige nummerierte Parameter werden auf Null zurückgesetzt.

note: type: Labeled list
en: Intended Use
de: Verwendungszweck

note: type: Plain text
en: user parameters - numbered parameters in the range 31..5000, and named global and local parameters except predefined parameters. These are available for general-purpose storage of floating-point values, like intermediate results, flags etc, throughout program execution. They are read/write (can be assigned a value).
de: Benutzer-Parameter - nummerierte Parameter im Bereich 31..5000 und benannte globale und lokale Parameter mit Ausnahme der vordefinierten Parameter. Diese sind für die allgemeine Speicherung von Fließkommawerten, wie Zwischenergebnisse, Flags usw., während der Programmausführung verfügbar. Sie können gelesen und geschrieben werden (ihnen kann ein Wert zugewiesen werden).

note: type: Plain text
en: <<sub:subroutine-parameters,subroutine parameters>> - these are used to hold the actual parameters passed to a subroutine.
de: <<sub:subroutine-parameters,Unterprogramm-Parameter>> - diese werden verwendet, um die aktuellen Parameter zu speichern, die an ein Unterprogramm übergeben werden.

note: type: Plain text
en: <<sub:numbered-parameters,numbered parameters>> - most of these are used to access offsets of coordinate systems.
de: <<sub:numbered-parameters,Nummerierte Parameter>> - die meisten davon werden verwendet, um auf Offsets von Koordinatensystemen zuzugreifen.

note: type: Plain text
en: <<sub:system-parameters,system parameters>> - used to determine the current running version. They are read-only.
de: <<sub:system-parameters,System-Parameter>> - werden verwendet, um die aktuell laufende Version zu ermitteln. Sie sind schreibgeschützt.

note: type: Title ===
en: Numbered Parameters(((Numbered Parameters)))
de: Nummerierte Parameter(((Nummerierte Parameter)))

note: type: Plain text
en: A numbered parameter is the pound character '#' followed by an integer between 1 and (currently) 5602 footnote:[The RS274/NGC interpreter maintains an array of numbered parameters. Its size is defined by the symbol 'RS274NGC_MAX_PARAMETERS' in the file src/emc/rs274ngc/interp_internal.hh). This number of numerical parameters may also increase as development adds support for new parameters.]. The parameter is referred to by this integer, and its value is whatever number is stored in the parameter.
de: Ein nummerierter Parameter ist das Doppelkreuz-Zeichen '#' (auch hash oder pound), gefolgt von einer ganzen Zahl zwischen 1 und (derzeit) 5602 footnote:[Der RS274/NGC-Interpreter verwaltet ein Array mit nummerierten Parametern. Seine Größe wird durch das Symbol 'RS274NGC_MAX_PARAMETERS' in der Datei src/emc/rs274ngc/interp_internal.hh) definiert. Diese Anzahl numerischer Parameter kann sich auch erhöhen, wenn die Entwicklung die Unterstützung für neue Parameter hinzufügt.]. Der Parameter wird durch diese Ganzzahl referenziert, und sein Wert ist die Zahl, die im Parameter gespeichert ist.

note: type: Plain text
en: A value is stored in a parameter with the = operator; for example:
de: Mit dem =-Operator wird ein Wert in einem Parameter gespeichert, zum Beispiel:

note: type: delimited block -
en: #3 = 15 (set parameter 3 to 15)
de: #3 = 15 (Parameter 3 auf 15 setzen)

note: type: Plain text
en: A parameter setting does not take effect until after all parameter values on the same line have been found. For example, if parameter 3 has been previously set to 15 and the line '#3=6 G1 X#3' is interpreted, a straight move to a point where X equals 15 will occur and the value of parameter 3 will be 6.
de: Eine Parametereinstellung wird erst dann wirksam, wenn alle Parameterwerte in der gleichen Zeile gefunden worden sind. Wenn beispielsweise der Parameter 3 zuvor auf 15 eingestellt wurde und die Zeile '#3=6 G1 X#3' interpretiert wird, erfolgt eine gerade Bewegung zu einem Punkt, an dem X gleich 15 ist, und der Wert von Parameter 3 wird 6 sein.

note: type: Plain text
en: The '\#' character takes precedence over other operations, so that, for example, '\#1+2' means the number found by adding 2 to the value of parameter 1, not the value found in parameter 3. Of course, '\#[1+2]' does mean the value found in parameter 3. The '\#' character may be repeated; for example '##2' means the value of the parameter whose index is the (integer) value of parameter 2.
de: Das Zeichen '\#' hat Vorrang vor anderen Operationen, so dass z. B. '\#1+2' die Zahl bedeutet, die sich durch Addition von 2 zum Wert von Parameter 1 ergibt, und nicht den Wert in Parameter 3. Natürlich bedeutet '\#[1+2]' den in Parameter 3 gefundenen Wert. Das '\#'-Zeichen kann wiederholt werden; zum Beispiel bedeutet '##2' den Wert des Parameters, dessen Index der (ganzzahlige) Wert von Parameter 2 ist.

note: type: Plain text
en: '31-5000' - G-code user parameters. These parameters are global in the G code file, and available for general use. Volatile.
de: '31-5000' - G-Code Benutzerparameter. Diese Parameter sind global in der G-Codedatei und für die allgemeine Verwendung verfügbar. Flüchtig.

note: type: Plain text
en: '5061-5069' - Coordinates of a <<gcode:g38,G38>> probe result (X, Y, Z, A, B, C, U, V & W).  Coordinates are in the coordinate system in which the G38 took place.  Volatile.
de: '5061-5069' - Koordinaten eines <<gcode:g38,G38>> Sondenergebnisses (X, Y, Z, A, B, C, U, V & W).  Koordinaten befinden sich in dem Koordinatensystem, in dem die G38 stattfand.  Flüchtig.

note: type: Plain text
en: '5070' - <<gcode:g38,G38>> probe result: 1 if success, 0 if probe failed to close.  Used with G38.3 and G38.5. Volatile.
de: '5070' - <<gcode:g38,G38>> Prüfpunktergebnis: 1 bei Erfolg, 0, wenn Prüfpunkt nicht geschlossen werden konnte.  Verwendet mit G38.3 und G38.5. Flüchtig.

note: type: Plain text
en: '5161-5169' - "G28" Home for X, Y, Z, A, B, C, U, V & W. Persistent.
de: '5161-5169' - "G28" Home für X, Y, Z, A, B, C, U, V & W. Persistent.

note: type: Plain text
en: '5181-5189' - "G30" Home for X, Y, Z, A, B, C, U, V & W. Persistent.
de: '5181-5189' - "G30" Home für X, Y, Z, A, B, C, U, V & W. Persistent.

note: type: Plain text
en: '5210' - 1 if "G52" or "G92" offset is currently applied, 0 otherwise.  Volatile by default; persistent if 'DISABLE_G92_PERSISTENCE = 1' in the '[RS274NGC]' section of the INI file.
de: '5210' - 1, wenn "G52"- oder "G92"-Offset derzeit angewendet wird, sonst 0.  Standardmäßig flüchtig; beständig, wenn 'DISABLE_G92_PERSISTENCE = 1' im Abschnitt '[RS274NGC]' der INI-Datei.

note: type: Plain text
en: '5211-5219' - Shared "G52" and "G92" offset for X, Y, Z, A, B, C, U, V & W.  Volatile by default; persistent if 'DISABLE_G92_PERSISTENCE = 1' in the '[RS274NGC]' section of the INI file.
de: '5211-5219' - Gemeinsamer "G52" und "G92" Offset für X, Y, Z, A, B, C, U, V & W.  Standardmäßig flüchtig; persistent, wenn 'DISABLE_G92_PERSISTENCE = 1' im Abschnitt '[RS274NGC]' der INI-Datei.

note: type: Plain text
en: '5220' - Coordinate System number 1 - 9 for G54 - G59.3. Persistent.
de: '5220' - Koordinatensystem Nummer 1 - 9 für G54 - G59.3. Persistent.

note: type: Plain text
en: '5221-5230' - Coordinate System 1, G54 for X, Y, Z, A, B, C, U, V, W & R.  R denotes the XY rotation angle around the Z axis. Persistent.
de: '5221-5230' - Koordinatensystem 1, G54 für X, Y, Z, A, B, C, U, V, W & R. R bezeichnet den XY-Drehwinkel um die Z-Achse. Persistent.

note: type: Plain text
en: '5241-5250' - Coordinate System 2, G55 for X, Y, Z, A, B, C, U, V, W & R.  Persistent.
de: '5241-5250' - Koordinatensystem 2, G55 für X, Y, Z, A, B, C, U, V, W & R. Persistent.

note: type: Plain text
en: '5261-5270' - Coordinate System 3, G56 for X, Y, Z, A, B, C, U, V, W & R.  Persistent.
de: '5261-5270' - Koordinatensystem 3, G56 für X, Y, Z, A, B, C, U, V, W & R. Persistent.

note: type: Plain text
en: '5281-5290' - Coordinate System 4, G57 for X, Y, Z, A, B, C, U, V, W & R.  Persistent.
de: '5281-5290' - Koordinatensystem 4, G57 für X, Y, Z, A, B, C, U, V, W & R. Persistent.

note: type: Plain text
en: '5301-5310' - Coordinate System 5, G58 for X, Y, Z, A, B, C, U, V, W & R.  Persistent.
de: '5301-5310' - Koordinatensystem 5, G58 für X, Y, Z, A, B, C, U, V, W & R. Persistent.

note: type: Plain text
en: '5321-5330' - Coordinate System 6, G59 for X, Y, Z, A, B, C, U, V, W & R.  Persistent.
de: '5321-5330' - Koordinatensystem 6, G59 für X, Y, Z, A, B, C, U, V, W & R. Persistent.

note: type: Plain text
en: '5341-5350' - Coordinate System 7, G59.1 for X, Y, Z, A, B, C, U, V, W & R.  Persistent.
de: '5341-5350' - Koordinatensystem 7, G59.1 für X, Y, Z, A, B, C, U, V, W & R. Persistent.

note: type: Plain text
en: '5361-5370' - Coordinate System 8, G59.2 for X, Y, Z, A, B, C, U, V, W & R.  Persistent.
de: '5361-5370' - Koordinatensystem 8, G59.2 für X, Y, Z, A, B, C, U, V, W & R. Persistent.

note: type: Plain text
en: '5381-5390' - Coordinate System 9, G59.3 for X, Y, Z, A, B, C, U, V, W & R.  Persistent.
de: '5381-5390' - Koordinatensystem 9, G59.3 für X, Y, Z, A, B, C, U, V, W & R. Persistent.

note: type: Plain text
en: '5399' - Result of M66 - Check or wait for input. Volatile.
de: '5399' - Ergebnis von M66 - Prüfen oder auf Eingabe warten. Flüchtig.

note: type: Plain text
en: '5400' - Tool Number. Volatile.
de: '5400' - Werkzeugnummer. Flüchtig.

note: type: Plain text
en: '5401-5409' - Tool Offsets for X, Y, Z, A, B, C, U, V & W. Volatile.
de: '5401-5409' - Werkzeug-Offsets für X, Y, Z, A, B, C, U, V & W. Flüchtig.

note: type: Plain text
en: '5410' - Tool Diameter. Volatile.
de: '5410' - Werkzeugdurchmesser. Flüchtig.

note: type: Plain text
en: '5411' - Tool Front Angle. Volatile.
de: '5411' - Werkzeug-Frontwinkel. Flüchtig.

note: type: Plain text
en: '5412' - Tool Back Angle. Volatile.
de: '5412' - Werkzeug-Rückenwinkel (engl. back angle). Flüchtig.

note: type: Plain text
en: '5413' - Tool Orientation. Volatile.
de: '5413' - Werkzeugausrichtung. Flüchtig.

note: type: Plain text
en: '5420-5428' - Current relative position in the active coordinate system including all offsets and in the current program units for X, Y, Z, A, B, C, U, V & W, volatile.
de: '5420-5428' - Aktuelle relative Position im aktiven Koordinatensystem inklusive aller Offsets und in den aktuellen Programmeinheiten für X, Y, Z, A, B, C, U, V & W, flüchtig.

note: type: Plain text
en: '5599' - Flag for controlling the output of (DEBUG,) statements.  1=output, 0=no output; default=1. Volatile.
de: '5599' - Flag zur Steuerung der Ausgabe von (DEBUG,)-Anweisungen.  1=Ausgabe, 0=keine Ausgabe; default=1. Flüchtig.

note: type: Plain text
en: '5600' - Toolchanger fault indicator. Used with the iocontrol-v2 component.  1: toolchanger faulted, 0: normal. Volatile.
de: '5600' - Werkzeugwechsler-Fehleranzeige. Wird mit der Komponente iocontrol-v2 verwendet.  1: Werkzeugwechsler gestört, 0: normal. Flüchtig.

note: type: Plain text
en: '5601' - Toolchanger fault code. Used with the iocontrol-v2 component.  Reflects the value of the 'toolchanger-reason' HAL pin if a fault occurred.  Volatile.
de: '5601' - Fehlercode des Werkzeugwechslers. Wird mit der Komponente iocontrol-v2 verwendet.  Gibt den Wert des HAL-Pins 'toolchanger-reason' wieder, wenn ein Fehler aufgetreten ist.  Flüchtig.

note: type: Block title
en: Numbered Parameters Persistence
de: Persistenz nummerierter Parameter

note: type: Plain text
en: The values of parameters in the persistent range are retained over time, even if the machining center is powered down. LinuxCNC uses a parameter file to ensure persistence. It is managed by the Interpreter. The Interpreter reads the file when it starts up, and writes the file when it exits.
de: Die Werte der Parameter im persistenten Bereich werden über die Zeit beibehalten, auch wenn das Bearbeitungszentrum ausgeschaltet ist. LinuxCNC verwendet eine Parameterdatei, um die Persistenz zu gewährleisten. Sie wird vom Interpreter verwaltet. Der Interpreter liest die Datei, wenn er startet, und schreibt die Datei, wenn er beendet wird.

note: type: Plain text
en: The format of a parameter file is shown in Table <<gcode:format-parameter-file,Parameter File Format>>.
de: Das Format einer Parameter-Datei ist in Tabelle <<gcode:format-parameter-file,Parameter-Datei-Format>> dargestellt.

note: type: Plain text
en: The Interpreter expects the file to have two columns. It skips any lines which do not contain exactly two numeric values. The first column is expected to contain an integer value (the parameter's number). The second column contains a floating point number (this parameter's last value). The value is represented as a double-precision floating point number inside the Interpreter, but a decimal point is not required in the file.
de: Der Interpreter erwartet, dass die Datei zwei Spalten enthält. Er überspringt alle Zeilen, die nicht genau zwei numerische Werte enthalten. In der ersten Spalte wird ein Integer-Wert erwartet (die Nummer des Parameters). Die zweite Spalte enthält eine Fließkommazahl (der letzte Wert dieses Parameters). Der Wert wird im Interpreter als doppelt genaue Fließkommazahl dargestellt, aber ein Dezimalpunkt ist in der Datei nicht erforderlich.

note: type: Plain text
en: Parameters in the user-defined range (31-5000) may be added to this file. Such parameters will be read by the Interpreter and written to the file as it exits.
de: Parameter im benutzerdefinierten Bereich (31-5000) können in diese Datei eingefügt werden. Solche Parameter werden vom Interpreter gelesen und in die Datei geschrieben, wenn er beendet wird.

note: type: Plain text
en: Missing Parameters in the persistent range will be initialized to zero and written with their current values on the next save operation.
de: Fehlende Parameter im persistenten Bereich werden auf Null initialisiert und beim nächsten Speichervorgang mit ihren aktuellen Werten geschrieben.

note: type: Plain text
en: The parameter numbers must be arranged in ascending order. An 'Parameter file out of order' error will be signaled if they are not in ascending order.
de: Die Parameternummern müssen in aufsteigender Reihenfolge angeordnet sein. Wenn sie nicht in aufsteigender Reihenfolge angeordnet sind, wird ein Fehler "Parameterdatei nicht in Ordnung" gemeldet.

note: type: Plain text
en: The original file is saved as a backup file when the new file is written.
de: Die Originaldatei wird als Sicherungsdatei gespeichert, wenn die neue Datei geschrieben wird.

note: type: Title ===
en: Subroutine Parameters(((Subroutine Parameters)))
de: Unterprogramm-Parameter(((Unterprogramm-Parameter)))

note: type: Plain text
en: '1-30' Subroutine local parameters of call arguments. These parameters are local to the subroutine. Volatile. See also the chapter on <<cha:o-codes,O-Codes>>.
de: '1-30' Lokale Parameter für den Aufruf von Unterroutinen. Diese Parameter sind lokal für das Unterprogramm. Flüchtig. Siehe auch das Kapitel zu <<cha:o-codes,O-Codes>>.

note: type: Title ===
en: Named Parameters(((Named Parameters)))
de: Benannte Parameter(((Benannte Parameter)))

note: type: Plain text
en: Named parameters work like numbered parameters but are easier to read.  All parameter names are converted to lower case and have spaces and tabs removed, so '#<param>' and '#<P a R am >' refer to the same parameter. Named parameters must be enclosed with '< >' marks.
de: Benannte Parameter funktionieren wie nummerierte Parameter, sind aber einfacher zu lesen.  Alle Parameternamen werden in Kleinbuchstaben umgewandelt und Leerzeichen und Tabulatoren werden entfernt, so dass sich '#<param>' und '#<P a R am >' auf denselben Parameter beziehen. Benannte Parameter müssen mit '< >'-Zeichen umschlossen werden.

note: type: Plain text
en: '#<named parameter>' is a local named parameter. By default, a named parameter is local to the scope in which it is assigned. You can't access a local parameter outside of its subroutine. This means that two subroutines can use the same parameter names without fear of one subroutine overwriting the values in another.
de: '#<benannter Parameter>' ist ein lokaler benannter Parameter. Standardmäßig ist ein benannter Parameter lokal in dem Bereich, in dem er zugewiesen ist. Sie können nicht auf einen lokalen Parameter außerhalb des Unterprogramms zugreifen. Das bedeutet, dass zwei Unterprogramme die gleichen Parameternamen verwenden können, ohne dass die Gefahr besteht, dass ein Unterprogramm die Werte in einem anderen überschreibt.

note: type: Plain text
en: '#<_global named parameter>' is a global named parameter. They are accessible from within called subroutines and may set values within subroutines that are accessible to the caller. As far as scope is concerned, they act just like regular numeric parameters. They are not stored in files.
de: '#<_globaler benannter Parameter>' ist ein globaler benannter Parameter. Sie sind von aufgerufenen Unterprogrammen aus zugänglich und können Werte innerhalb von Unterprogrammen setzen, die für den Aufrufer zugänglich sind. Was den Anwendungsbereich betrifft, verhalten sie sich wie normale numerische Parameter. Sie werden nicht in Dateien gespeichert.

note: type: Plain text
en: Examples:
de: Beispiele:

note: type: Block title
en: Declaration of named global variable
de: Deklaration einer benannten globalen Variablen

note: type: Block title
en: Reference to previously declared global variable
de: Verweis auf eine zuvor deklarierte globale Variable

note: type: Block title
en: Mixed literal and named parameters
de: Gemischte literale und benannte Parameter

note: type: Plain text
en: Named parameters spring into existence when they are assigned a value for the first time. Local named parameters vanish when their scope is left: when a subroutine returns, all its local parameters are deleted and cannot be referred to anymore.
de: Benannte Parameter entstehen, wenn ihnen zum ersten Mal ein Wert zugewiesen wird. Lokale benannte Parameter verschwinden, wenn ihr Geltungsbereich verlassen wird: Wenn ein Unterprogramm zurückkehrt, werden alle seine lokalen Parameter gelöscht und können nicht mehr referenziert werden.

note: type: Plain text
en: It is an error to use a non-existent named parameter within an expression, or at the right-hand side of an assignment. Printing the value of a non-existent named parameter with a DEBUG statement - like '(DEBUG, #<no_such_parameter>)' will display the string '######'.
de: Es ist ein Fehler, einen nicht existierenden benannten Parameter innerhalb eines Ausdrucks oder auf der rechten Seite einer Zuweisung zu verwenden. Die Ausgabe des Wertes eines nicht existierenden benannten Parameters mit einer DEBUG-Anweisung - wie '(DEBUG, #<kein_solcher_parameter>)' - zeigt die Zeichenkette '######' an.

note: type: Plain text
en: Global parameters, as well as local parameters assigned to at the global level, retain their value once assigned even when the program ends, and have these values when the program is run again.
de: Globale Parameter sowie lokale Parameter, die auf globaler Ebene zugewiesen werden, behalten ihren einmal zugewiesenen Wert auch nach Beendigung des Programms und haben diese Werte auch bei der erneuten Ausführung des Programms.

note: type: Plain text
en: The <<gcode:functions,'EXISTS' function>> tests whether a given named parameter exists.
de: Die Funktion <<gcode:functions,'EXISTS'>> prüft, ob ein bestimmter benannter Parameter existiert.

note: type: Title ===
en: Predefined Named Parameters(((Predefined Named Parameters)))
de: Vordefinierte benannte Parameter(((Vordefinierte benannte Parameter)))

note: type: Plain text
en: The following global read only named parameters are available to access internal state of the interpreter and machine state. They can be used in arbitrary expressions, for instance to control flow of the program with if-then-else statements. Note that new <<remap:adding-predefined-named-parameters,predefined named parameters>> can be added easily without changes to the source code.
de: Die folgenden globalen, nur lesbaren benannten Parameter sind verfügbar, um auf den internen Zustand des Interpreters und den Maschinenzustand zuzugreifen. Sie können in beliebigen Ausdrücken verwendet werden, zum Beispiel um den Programmablauf mit if-then-else-Anweisungen zu steuern. Beachten Sie, dass neue <<remap:adding-predefined-named-parameters,predefined named parameters>> einfach und ohne Änderungen am Quellcode hinzugefügt werden können.

note: type: Plain text
en: '#<_vmajor>' - Major package version. If current version was 2.5.2 would return 2.5.
de: '#<_vmajor>' - Hauptversion des Pakets. Wenn die aktuelle Version 2.5.2 wäre, würde 2.5 zurückgegeben.

note: type: Plain text
en: '#<_vminor>' - Minor package version. If current version was 2.6.2 it would return 0.2.
de: '#<_vminor>' - Kleinere Paketversion. Wenn die aktuelle Version 2.6.2 wäre, würde es 0.2 zurückgeben.

note: type: Plain text
en: '#<_line>' - Sequence number. If running a G-code file, this returns the current line number.
de: '#<_line>' - Sequenznummer. Wenn eine G-Code-Datei ausgeführt wird, gibt dies die aktuelle Zeilennummer zurück.

note: type: Plain text
en: '#<_motion_mode>' - Return the interpreter's current motion mode:
de: '#<_motion_mode>' - Gibt den aktuellen Bewegungsmodus des Interpreters zurück:

note: type: Table
en: Motion mode
de: Bewegungsmodus

note: type: Table
en: return value
de: Rückgabewert

note: type: Plain text
en: '#<_plane>' - returns the value designating the current plane:
de: '#<_plane>' - gibt den Wert zurück, der die aktuelle Ebene bezeichnet:

note: type: Table
en: Plane
de: Ebene

note: type: Plain text
en: '#<_ccomp>' - Status of cutter compensation. Return values:
de: '#<_ccomp>' - Status der Fräserkompensation. Rückgabewerte:

note: type: Plain text
en: '#<_metric>' - Return 1 if G21 is on, else 0.
de: '#<_metric>' - Gibt 1 zurück, wenn G21 eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_imperial>' - Return 1 if G20 is on, else 0.
de: '#<_imperial>' - Gibt 1 zurück, wenn G20 eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_absolute>' - Return 1 if G90 is on, else 0.
de: '#<_absolute>' - Gibt 1 zurück, wenn G90 eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_incremental>' - Return 1 if G91 is on, else 0.
de: '#<_incremental>' - Gibt 1 zurück, wenn G91 eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_inverse_time>' - Return 1 if inverse feed mode (G93) is on, else 0.
de: '#<_inverse_time>' - Gibt 1 zurück, wenn der inverse Vorschubmodus (G93) eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_units_per_minute>' - Return 1 if Units/minute feed mode (G94) is on, else 0.
de: '#<_Units_per_minute>' - Rückgabe 1, wenn der Modus Einheiten/Minute (G94) eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_units_per_rev>' - Return 1 if Units/revolution mode (G95) is on, else 0.
de: '#<_units_per_rev>' - Rückgabe 1, wenn der Modus Einheiten/Umdrehung (G95) eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_coord_system>' - Return a float of the current coordinate system name (G54..G59.3).  For example if your in G55 coordinate system the return value is 550.000000 and if your in G59.1 the return value is 591.000000.
de: #<_coord_system>' - Gibt eine Fließkommazahl mit dem Namen des aktuellen Koordinatensystems zurück (G54..G59.3).  Wenn Sie sich beispielsweise im G55-Koordinatensystem befinden, ist der Rückgabewert 550.000000 und wenn Sie sich im G59.1-Koordinatensystem befinden, ist der Rückgabewert 591.000000.

note: type: Plain text
en: '#<_tool_offset>' - Return 1 if tool offset (G43) is on, else 0.
de: '#<_tool_offset>' - Gibt 1 zurück, wenn Werkzeugkorrektur (G43) eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_retract_r_plane>' - Return 1 if G98 is set, else 0.
de: '#<_retract_r_plane>' - Rückgabe 1, wenn G98 gesetzt ist, sonst 0.

note: type: Plain text
en: '#<_retract_old_z>' - Return 1 if G99 is on, else 0.
de: '#<_retract_old_z>' - Rückgabe 1, wenn G99 eingeschaltet ist, sonst 0.

note: type: Title ===
en: System Parameters(((System Parameters)))
de: Systemparameter(((Systemparameter)))

note: type: Plain text
en: '#<_spindle_rpm_mode>' - Return 1 if spindle rpm mode (G97) is on, else 0.
de: '#<_spindle_rpm_mode>' - Gibt 1 zurück, wenn der Spindeldrehzahlmodus (G97) eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_spindle_css_mode>' - Return 1 if constant surface speed mode (G96) is on, else 0.
de: '#<_spindle_css_mode>' - Gibt 1 zurück, wenn der Modus für konstante Schnittgeschwindigkeit (G96) eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_ijk_absolute_mode>' - Return 1 if Absolute Arc distance mode (G90.1) is on, else 0.
de: '#<_ijk_absolute_mode>' - Gibt 1 zurück, wenn der Modus für den absoluten Bogenabstand (G90.1) eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_lathe_diameter_mode>' - Return 1 if this is a lathe configuration and diameter (G7) mode is on, else 0.
de: '#<_lathe_diameter_mode>' - Gibt 1 zurück, wenn es sich um eine Drehbankkonfiguration handelt und der Durchmessermodus (G7) aktiviert ist, sonst 0.

note: type: Plain text
en: '#<_lathe_radius_mode>' - Return 1 if this is a lathe configuration and radius (G8) mode is on, else 0.
de: '#<_lathe_radius_mode>' - Gibt 1 zurück, wenn es sich um eine Drehbankkonfiguration handelt und der Radiusmodus (G8) aktiviert ist, sonst 0.

note: type: Plain text
en: '#<_spindle_on>' - Return 1 if spindle currently running (M3 or M4) else 0.
de: '#<_spindle_on>' - Gibt 1 zurück, wenn die Spindel gerade läuft (M3 oder M4), sonst 0.

note: type: Plain text
en: '#<_spindle_cw>' - Return 1 if spindle direction is clockwise (M3) else 0.
de: '#<_spindle_cw>' - Gibt 1 zurück, wenn die Spindeldrehrichtung im Uhrzeigersinn ist (M3), sonst 0.

note: type: Plain text
en: '#<_mist>' - Return 1 if mist (M7) is on.
de: '#<_mist>' - Gibt 1 zurück, wenn Nebel (M7) eingeschaltet ist.

note: type: Plain text
en: '#<_flood>' - Return 1 if flood (M8) is on.
de: '#<_flut>' - Rückgabe 1, wenn Flut (M8) eingeschaltet ist.

note: type: Plain text
en: '#<_speed_override>' - Return 1 if feed override (M48 or M50 P1) is on, else 0.
de: '#<_speed_override>' - Rückgabe 1, wenn Vorschubneufestsetzung (M48 oder M50 P1) eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_feed_override>' - Return 1 if feed override (M48 or M51 P1) is on, else 0.
de: '#<_feed_override>' - Gibt 1 zurück, wenn die Vorschubüberbrückung (M48 oder M51 P1) eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_adaptive_feed>' - Return 1 if adaptive feed (M52 or M52 P1) is on, else 0.
de: '#<_adaptive_feed>' - Gibt 1 zurück, wenn der adaptive Feed (M52 oder M52 P1) eingeschaltet ist, sonst 0.

note: type: Plain text
en: '#<_feed_hold>' - Return 1 if feed hold switch is enabled (M53 P1), else 0.
de: '#<_feed_hold>' - Rückgabe 1, wenn der Schalter für die Vorschubfreigabe aktiviert ist (M53 P1), sonst 0.

note: type: Plain text
en: '#<_feed>' - Return the current value of F, not the actual feed rate.
de: '#<_feed>' - Gibt den aktuellen Wert von F zurück, nicht den tatsächlichen Vorschub.

note: type: Plain text
en: '#<_rpm>' - Return the current value of S, not the actual spindle speed.
de: '#<_rpm>' - Gibt den aktuellen Wert von S zurück, nicht die tatsächliche Spindeldrehzahl.

note: type: Plain text
en: '#<_x>' - Return current relative X coordinate including all offsets. Same as #5420.  In a lathe configuration, it always returns radius.
de: '#<_x>' - Gibt die aktuelle relative X-Koordinate einschließlich aller Offsets zurück. Dasselbe wie #5420.  In einer Drehbank-Konfiguration wird immer der Radius zurückgegeben.

note: type: Plain text
en: '#<_y>' - Return current relative Y coordinate including all offsets. Same as #5421.
de: '#<_y>' - Liefert die aktuelle relative Y-Koordinate einschließlich aller Offsets. Dasselbe wie #5421.

note: type: Plain text
en: '#<_z>' - Return current relative Z coordinate including all offsets. Same as #5422.
de: '#<_z>' - Liefert die aktuelle relative Z-Koordinate einschließlich aller Offsets. Dasselbe wie #5422.

note: type: Plain text
en: '#<_a>' - Return current relative A coordinate including all offsets. Same as #5423.
de: '#<_a>' - Liefert die aktuelle relative A-Koordinate einschließlich aller Offsets. Dasselbe wie #5423.

note: type: Plain text
en: '#<_b>' - Return current relative B coordinate including all offsets. Same as #5424.
de: '#<_b>' - Gibt die aktuelle relative B-Koordinate einschließlich aller Offsets zurück. Dasselbe wie #5424.

note: type: Plain text
en: '#<_c>' - Return current relative C coordinate including all offsets. Same as #5425.
de: '#<_c>' - Gibt die aktuelle relative C-Koordinate einschließlich aller Offsets zurück. Dasselbe wie #5425.

note: type: Plain text
en: '#<_u>' - Return current relative U coordinate including all offsets. Same as #5426.
de: '#<_u>' - Liefert die aktuelle relative U-Koordinate einschließlich aller Offsets. Dasselbe wie #5426.

note: type: Plain text
en: '#<_v>' - Return current relative V coordinate including all offsets. Same as #5427.
de: '#<_v>' - Liefert die aktuelle relative V-Koordinate einschließlich aller Offsets. Dasselbe wie #5427.

note: type: Plain text
en: '#<_w>' - Return current relative W coordinate including all offsets. Same as #5428.
de: '#<_w>' - Gibt die aktuelle relative W-Koordinate einschließlich aller Offsets zurück. Dasselbe wie #5428.

note: type: Plain text
en: '#<_abs_x>' - Return current absolute X coordinate (G53) including no offsets.
de: '#<_abs_x>' - Rückgabe der aktuellen absoluten X-Koordinate (G53) ohne Offsets.

note: type: Plain text
en: '#<_abs_y>' - Return current absolute Y coordinate (G53) including no offsets.
de: '#<_abs_y>' - Rückgabe der aktuellen absoluten Y-Koordinate (G53) ohne Offsets.

note: type: Plain text
en: '#<_abs_z>' - Return current absolute Z coordinate (G53) including no offsets.
de: '#<_abs_z>' - Rückgabe der aktuellen absoluten Z-Koordinate (G53) ohne Offsets.

note: type: Plain text
en: '#<_abs_a>' - Return current absolute A coordinate (G53) including no offsets.
de: '#<_abs_a>' - Rückgabe der aktuellen absoluten A-Koordinate (G53) ohne Offsets.

note: type: Plain text
en: '#<_abs_b>' - Return current absolute B coordinate (G53) including no offsets.
de: '#<_abs_b>' - Rückgabe der absoluten B-Koordinate (G53) ohne Offsets.

note: type: Plain text
en: '#<_abs_c>' - Return current absolute C coordinate (G53) including no offsets.
de: '#<_abs_c>' - Rückgabe der aktuellen absoluten C-Koordinate (G53) ohne Offsets.

note: type: Plain text
en: '#<_current_tool>' - Return number of the current tool in spindle. Same as #5400.
de: '#<_aktuelles_Werkzeug>' - Rückgabe der Nummer des aktuellen Werkzeugs in der Spindel. Dasselbe wie #5400.

note: type: Plain text
en: '#<_current_pocket>' - Return the tooldata index for the current tool.
de: '#<_current_pocket>' - Liefert den Tooldatenindex für das aktuelle Werkzeug.

note: type: Plain text
en: '#<_selected_tool>' - Return number of the selected tool post a T code. Default -1.
de: '#<_selected_tool>' - Rückgabe der Nummer des ausgewählten Werkzeugs nach einem T-Code. Voreinstellung -1.

note: type: Plain text
en: '#<_selected_pocket>' - Return the tooldata index of the selected pocket post a T code.  Default -1 (no pocket selected).
de: #<_selected_pocket>' - Gibt den tooldata-Index der ausgewählten Tasche nach einem T-Code zurück.  Voreinstellung -1 (keine Tasche ausgewählt).

note: type: Plain text
en: '#<_value>' - Return value from the last O-word 'return' or 'endsub'. Default value 0 if no expression after 'return' or 'endsub'. Initialized to 0 on program start.
de: '#<_value>' - Rückgabewert des letzten O-Wortes 'return' oder 'endsub'. Standardwert 0, wenn kein Ausdruck nach 'return' oder 'endsub'. Wird beim Programmstart auf 0 initialisiert.

note: type: Plain text
en: '#<_value_returned>' - 1.0 if the last O-word 'return' or 'endsub' returned a value, 0 otherwise. Cleared by the next O-word call.
de: '#<_value_returned>' - 1.0 wenn das letzte O-Wort 'return' oder 'endsub' einen Wert zurückgegeben hat, sonst 0. Wird durch den nächsten O-Wort-Aufruf gelöscht.

note: type: Plain text
en: '#<_task>' - 1.0 if the executing interpreter instance is part of milltask, 0.0 otherwise. Sometimes it is necessary to treat this case specially to retain proper preview, for instance when testing the success of a probe (G38.n) by inspecting #5070, which will always fail in the preview interpreter (e.g. Axis).
de: '#<_task>' - 1.0 wenn die ausführende Interpreterinstanz Teil von milltask ist, sonst 0.0. Manchmal ist es notwendig, diesen Fall speziell zu behandeln, um eine korrekte Vorschau zu erhalten, z.B. beim Testen des Erfolgs einer Probe (G38.n) durch Inspektion von #5070, die im Vorschau-Interpreter (z.B. Axis) immer fehlschlagen wird.

note: type: Plain text
en: '#<_call_level>' - current nesting level of O-word procedures. For debugging.
de: '#<_call_level>' - aktuelle Verschachtelungsebene der O-Wort-Prozeduren. Für die Fehlersuche.

note: type: Plain text
en: '#<_remap_level>' - current level of the remap stack. Each remap in a block adds one to the remap level. For debugging.
de: '#<_remap_level>' - aktuelle Ebene des Remap-Stapels. Jeder Remap in einem Block erhöht die Remap-Ebene um eins. Zur Fehlersuche.

note: type: Title ==
en: HAL pins and INI values(((HAL pins and INI values)))
de: HAL-Pins und INI-Werte(((HAL-Pins und INI-Werte)))

note: type: Plain text
en: If enabled in the <<sub:ini:sec:rs274ngc, INI file>> G-code has access to the values of INI file entries and HAL pins.
de: Wenn dies in der <sub:ini:sec:rs274ngc, INI-Datei>> aktiviert ist, hat der G-Code Zugriff auf die Werte der INI-Datei-Einträge und HAL-Pins.

note: type: Plain text
en: '#<_ini[section]name>' Returns the value of the corresponding item in the INI file.
de: '#<_ini[section]name>' Gibt den Wert des entsprechenden Elements in der INI-Datei zurück.

note: type: Plain text
en: For example, if the INI file looks like so:
de: Wenn die INI-Datei zum Beispiel so aussieht:

note: type: Plain text
en: you may refer to the named parameters `#<_ini[setup]xpos>` and `#<_ini[setup]ypos>` within G-code.
de: können Sie sich im G-Code auf die genannten Parameter `#<_ini[setup]xpos>` und `#<_ini[setup]ypos>` beziehen.

note: type: Plain text
en: `EXISTS` can be used to test for presence of a given INI file variable:
de: `EXISTS` kann verwendet werden, um das Vorhandensein einer bestimmten INI-Datei-Variable zu prüfen:

note: type: delimited block -
en: o100 if [EXISTS[#<_ini[setup]xpos>]]
      (debug, [setup]xpos exists: #<_ini[setup]xpos>)
    o100 else
      (debug, [setup]xpos does not exist)
    o100 endif
de: o100 if [EXISTS[#<_ini[setup]xpos>]]
      (debug, [setup]xpos existiert: #<_ini[setup]xpos>)
    o100 else
      (debug, [setup]xpos existiert nicht)
    o100 endif

note: type: Plain text
en: The value is read from the INI file once, and cached in the interpreter. These parameters are read-only - assigning a value will cause a runtime error. The names are not case sensitive - they are converted to uppercase before consulting the INI file.
de: Der Wert wird einmal aus der INI-Datei gelesen und im Interpreter zwischengespeichert. Diese Parameter sind schreibgeschützt - die Zuweisung eines Wertes führt zu einem Laufzeitfehler. Bei den Namen wird nicht zwischen Groß- und Kleinschreibung unterschieden - sie werden vor der Konsultation der INI-Datei in Großbuchstaben umgewandelt.

note: type: Plain text
en: '#<_hal[HAL item]>' Allows G-code programs to read the values of HAL pins Variable access is read-only, the only way to _set_ HAL pins from G-code remains M62-M65, M67, M68 and custom M100-M199 codes.  Note that the value read will not update in real-time, typically the value that was on the pin when the G-code program was started will be returned. It is possible to work round this by forcing a state synch.  One way to do this is with a dummy M66 command: M66E0L0
de: '#<_hal[HAL item]>' Ermöglicht es G-Code-Programmen, die Werte von HAL-Pins zu lesen. Der variable Zugriff ist schreibgeschützt, die einzige Möglichkeit, HAL-Pins von G-Code aus zu _setzen_, bleiben M62-M65, M67, M68 und benutzerdefinierte M100-M199-Codes.  Beachten Sie, dass der gelesene Wert nicht in Echtzeit aktualisiert wird. Normalerweise wird der Wert zurückgegeben, der zum Zeitpunkt des Starts des G-Code-Programms an dem Pin anlag. Es ist möglich, dies zu umgehen, indem man eine Zustandssynchronisation erzwingt.  Eine Möglichkeit, dies zu tun, ist ein Dummy-M66-Befehl: M66E0L0

note: type: Plain text
en: Access of HAL items is read-only. Currently, only all-lowercase HAL names can be accessed this way.
de: Der Zugriff auf HAL-Elemente ist schreibgeschützt. Derzeit kann auf diese Weise nur auf HAL-Namen in Kleinbuchstaben zugegriffen werden.

note: type: Plain text
en: `EXISTS` can be used to test for the presence of a given HAL item:
de: `EXISTS` kann verwendet werden, um das Vorhandensein eines bestimmten HAL-Elements zu testen:

note: type: Plain text
en: This feature was motivated by the desire for stronger coupling between user interface components like `GladeVCP` and `PyVCP` to act as parameter source for driving NGC file behavior. The alternative - going through the M6x pins and wiring them - has a limited, non-mnemonic namespace and is unnecessarily cumbersome just as a UI/Interpreter communications mechanism.
de: Diese Funktion wurde durch den Wunsch nach einer stärkeren Kopplung zwischen Benutzerschnittstellenkomponenten wie `GladeVCP` und `PyVCP` motiviert, um als Parameterquelle für das Verhalten von NGC-Dateien zu fungieren. Die Alternative - durch die M6x-Pins zu gehen und sie zu verdrahten - hat einen begrenzten, nicht-mnemonischen Namensraum und ist unnötig schwerfällig, nur als UI/Interpreter-Kommunikationsmechanismus.

note: type: Title ==
en: Expressions(((Expressions)))
de: Ausdrücke (engl. expression)(((Ausdrücke)))

note: type: Plain text
en: An expression is a set of characters starting with a left bracket '[' and ending with a balancing right bracket ']' . In between the brackets are numbers, parameter values, mathematical operations, and other expressions. An expression is evaluated to produce a number. The expressions on a line are evaluated when the line is read, before anything on the line is executed. An example of an expression is '[1 + acos[0] - [#3 ** [4.0/2]]]'.
de: Ein Ausdruck ist eine Reihe von Zeichen, die mit einer linken Klammer '[' beginnen und mit einer ausgleichenden rechten Klammer ']' enden. Zwischen den Klammern stehen Zahlen, Parameterwerte, mathematische Operationen und andere Ausdrücke. Ein Ausdruck wird ausgewertet, um eine Zahl zu erzeugen. Die Ausdrücke in einer Zeile werden ausgewertet, wenn die Zeile gelesen wird, bevor etwas in der Zeile ausgeführt wird. Ein Beispiel für einen Ausdruck ist '[1 + acos[0] - [#3 ** [4.0/2]]]'.

note: type: Title ==
en: Binary Operators(((Binary Operators)))
de: Binäre Operatoren(((Binäre Operatoren)))

note: type: Plain text
en: Binary operators only appear inside expressions. There are four basic mathematical operations: addition ('+'), subtraction ('-'), multiplication ('\*'), and division ('/'). There are three logical operations: non-exclusive or ('OR'), exclusive or ('XOR'), and logical and ('AND'). The eighth operation is the modulus operation ('MOD'). The ninth operation is the 'power' operation ('**') of raising the number on the left of the operation to the power on the right. The relational operators are equality ('EQ'), inequality ('NE'), strictly greater than ('GT'), greater than or equal to ('GE'), strictly less than ('LT'), and less than or equal to ('LE').
de: Binäre Operatoren erscheinen nur innerhalb von Ausdrücken. Es gibt vier grundlegende mathematische Operationen: Addition ('+'), Subtraktion ('-'), Multiplikation ('\*') und Division ('/'). Es gibt drei logische Operationen: nicht-exklusive oder ('OR'), exklusive oder ('XOR') und logische und ('AND'). Die achte Operation ist die Modulusoperation ('MOD'). Die neunte Operation ist die 'Potenz' -Operation ('**'), bei der die Zahl links von der Operation mit der Potenz rechts davon erhöht wird. Die relationalen Operatoren sind Gleichheit ('EQ'), Ungleichheit ('NE'), streng größer als ('GT'), größer oder gleich ('GE'), streng kleiner als ('LT') und kleiner als oder gleich ('LE').

note: type: Plain text
en: The binary operations are divided into several groups according to their precedence. If operations in different precedence groups are strung together (for example in the expression '[2.0 / 3 * 1.5 - 5.5 / 11.0]'), operations in a higher group are to be performed before operations in a lower group. If an expression contains more than one operation from the same group (such as the first '/' and '*' in the example), the operation on the left is performed first. Thus, the example is equivalent to: '[ [ [2.0 / 3] * 1.5] - [5.5 / 11.0] ]' , which is equivalent to to '[1.0 - 0.5]' , which is '0.5'.
de: Die binären Operationen werden entsprechend ihrer Rangfolge in mehrere Gruppen unterteilt. Wenn Operationen in verschiedenen Ranggruppen aneinandergereiht werden (z. B. im Ausdruck "[2.0 / 3 * 1.5 - 5.5 / 11.0]"), sind Operationen in einer höheren Gruppe vor Operationen in einer niedrigeren Gruppe auszuführen. Wenn ein Ausdruck mehr als eine Operation aus derselben Gruppe enthält (z. B. das erste '/' und '*' im Beispiel), wird der Vorgang auf der linken Seite zuerst ausgeführt. Somit ist das Beispiel äquivalent zu: '[ [ [2.0 / 3] * 1.5] - [5.5 / 11.0] ]' , was äquivalent zu '[1.0 - 0.5]' ist, was '0.5' ist.

note: type: Plain text
en: The logical operations and modulus are to be performed on any real numbers, not just on integers. The number zero is equivalent to logical false, and any non-zero number is equivalent to logical true.
de: Die logischen Operationen und der Modulus können mit allen reellen Zahlen durchgeführt werden, nicht nur mit ganzen Zahlen. Die Zahl Null ist gleichbedeutend mit logisch falsch, und jede Zahl ungleich Null ist gleichbedeutend mit logisch wahr.

note: type: Block title
en: Operators Precedence(((Operators Precedence)))
de: Vorrang der Operatoren(((Vorrang der Operatoren)))

note: type: Table
en: Operators
de: Operatoren

note: type: Table
en: Precedence
de: Vorrang

note: type: Table
en: 'highest'
de: 'höchste'

note: type: Table
en: 'lowest'
de: 'niedrigste'

note: type: Title ==
en: Equality and floating-point values
de: Gleichheit und Gleitkommawerte

note: type: Plain text
en: The RS274/NGC language only supports floating-point values of finite precision. Therefore, testing for equality or inequality of two floating-point values is inherently problematic. The interpreter solves this problem by considering values equal if their absolute difference is less than 0.0001 (this value is defined as 'TOLERANCE_EQUAL' in src/emc/rs274ngc/interp_internal.hh).
de: Die Sprache RS274/NGC unterstützt nur Fließkommazahlen mit endlicher Genauigkeit. Daher ist die Prüfung auf Gleichheit oder Ungleichheit zweier Fließkommazahlen von Natur aus problematisch. Der Interpreter löst dieses Problem, indem er Werte als gleich betrachtet, wenn ihre absolute Differenz kleiner als 0,0001 ist (dieser Wert ist als 'TOLERANCE_EQUAL' in src/emc/rs274ngc/interp_internal.hh definiert).

note: type: Title ==
en: Functions(((Functions)))(((Unary operations)))
de: Funktionen(((Funktionen)))(((Unäre Operationen)))

note: type: Plain text
en: The available functions are shown in following table. Arguments to unary operations which take angle measures ('COS', 'SIN', and 'TAN' ) are in degrees. Values returned by unary operations which return angle measures ('ACOS', 'ASIN', and 'ATAN') are also in degrees.
de: Die verfügbaren Funktionen sind in der folgenden Tabelle aufgeführt. Argumente für unäre Operationen, die Winkelmaße annehmen ('COS', 'SIN', und 'TAN' ), sind in Grad. Werte, die von unären Operationen zurückgegeben werden, die Winkelmaße zurückgeben ('ACOS', 'ASIN', und 'ATAN') sind ebenfalls in Grad.

note: type: Block title
en: G-code Functions
de: G-Code-Funktionen

note: type: Table
en: Function Name
de: Funktionsname

note: type: Table
en: Function result
de: Funktionsergebnis

note: type: Table
en: Absolute value
de: Absoluter Wert

note: type: Table
en: Inverse cosine
de: Inverser Kosinus

note: type: Table
en: Inverse sine
de: Inverser Sinus

note: type: Table
en: Cosine
de: Kosinus

note: type: Table
en: e raised to the given power
de: e in der angegebenen Potenz

note: type: Table
en: Round down to integer
de: Abrunden auf ganze Zahl

note: type: Table
en: Round up to integer
de: Auf Ganzzahl aufrunden

note: type: Table
en: Round to nearest integer
de: Runden auf die nächste Ganzzahl

note: type: Table
en: Base-e logarithm
de: Natürlicher Logarithmus

note: type: Table
en: Sine
de: Sinus

note: type: Table
en: Square Root
de: Quadratwurzel

note: type: Table
en: Tangent
de: Tangente

note: type: Table
en: Check named Parameter
de: Benannte Parameter prüfen

note: type: Plain text
en: The 'FIX' function rounds towards the left (less positive or more negative)  on a number line, so that 'FIX[2.8] =2' and 'FIX[-2.8] = -3'.
de: Die Funktion 'FIX' rundet auf einer Zahlengeraden nach links (weniger positiv oder mehr negativ), so dass 'FIX[2.8] =2' und 'FIX[-2.8] = -3'.

note: type: Plain text
en: The 'FUP' operation rounds towards the right (more positive or less negative) on a number line; 'FUP[2.8] = 3' and 'FUP[-2.8] = -2'.
de: Die Operation 'FUP' rundet auf einer Zahlengeraden nach rechts (mehr positiv oder weniger negativ); 'FUP[2.8] = 3' und 'FUP[-2.8] = -2'.

note: type: Plain text
en: The 'EXISTS' function checks for the existence of a single named parameter.  It takes only one named parameter and returns 1 if it exists and 0 if it does not exist. It is an error if you use a numbered parameter or an expression.  Here is an example for the usage of the EXISTS function:
de: Die Funktion 'EXISTS' prüft, ob ein einzelner benannter Parameter vorhanden ist.  Sie nimmt nur einen benannten Parameter und gibt 1 zurück, wenn er existiert, und 0, wenn er nicht existiert. Es ist ein Fehler, wenn Sie einen nummerierten Parameter oder einen Ausdruck verwenden.  Hier ist ein Beispiel für die Verwendung der EXISTS-Funktion:

note: type: delimited block -
en: o<test> sub
    o10 if [EXISTS[#<_global>]]
        (debug, _global exists and has the value #<_global>)
    o10 else
        (debug, _global does not exist)
    o10 endif
    o<test> endsub
de: o<test> sub
    o10 if [EXISTS[#<_global>]]
        (debug, _global existiert und hat den Wert #<_global>)
    o10 sonst
        (debug, _global existiert nicht)
    o10 endif
    o<test> endsub

note: type: Title ==
en: Repeated Items
de: Wiederholte Elemente

note: type: Plain text
en: A line may have any number of G words, but two G words from the same modal group may not appear on the same line.  See the <<gcode:modal-groups,Modal Groups>> section for more information.
de: Eine Zeile kann eine beliebige Anzahl von G-Wörtern haben, aber zwei G-Wörter aus derselben modalen Gruppe dürfen nicht in derselben Zeile erscheinen. Weitere Informationen finden Sie im Abschnitt <gcode:modal-groups,Modal Groups>>.

note: type: Plain text
en: A line may have zero to four M words. Two M words from the same modal group may not appear on the same line.
de: Eine Zeile kann null bis vier M-Wörter enthalten. Zwei M-Wörter aus der gleichen Modalgruppe dürfen nicht in der gleichen Zeile erscheinen.

note: type: Plain text
en: For all other legal letters, a line may have only one word beginning with that letter.
de: Bei allen anderen Buchstaben darf eine Zeile nur ein Wort enthalten, das mit diesem Buchstaben beginnt.

note: type: Plain text
en: If a parameter setting of the same parameter is repeated on a line, '#3=15 #3=6', for example, only the last setting will take effect.  It is silly, but not illegal, to set the same parameter twice on the same line.
de: Wird derselbe Parameter wiederholt in einer Zeile eingestellt, z. B. '#3=15 #3=6', wird nur die letzte Einstellung wirksam.  Es ist zwar etwas merkwürdig unnötig, aber nicht illegal, denselben Parameter zweimal in derselben Zeile zu setzen.

note: type: Plain text
en: If more than one comment appears on a line, only the last one will be used; each of the other comments will be read and its format will be checked, but it will be ignored thereafter. It is expected that putting more than one comment on a line will be very rare.
de: Wenn mehr als ein Kommentar in einer Zeile erscheint, wird nur der letzte verwendet; jeder der anderen Kommentare wird gelesen und auf sein Format geprüft, danach aber ignoriert. Es wird erwartet, dass mehr als ein Kommentar in einer Zeile sehr selten vorkommt.

note: type: Title ==
en: Item order
de: Artikelreihenfolge

note: type: Plain text
en: The three types of item whose order may vary on a line (as given at the beginning of this section) are word, parameter setting, and comment. Imagine that these three types of item are divided into three groups by type.
de: Die drei Arten von Elementen, deren Reihenfolge in einer Zeile variieren kann (wie am Anfang dieses Abschnitts angegeben), sind Wort, Parametereinstellung und Kommentar. Stellen Sie sich vor, dass diese drei Arten von Einträgen nach Typ in drei Gruppen unterteilt sind.

note: type: Plain text
en: The first group (the words) may be reordered in any way without changing the meaning of the line.
de: Die erste Gruppe (die Wörter) kann in beliebiger Reihenfolge angeordnet werden, ohne dass sich der Sinn der Zeile ändert.

note: type: Plain text
en: If the second group (the parameter settings) is reordered, there will be no change in the meaning of the line unless the same parameter is set more than once. In this case, only the last setting of the parameter will take effect. For example, after the line '#3=15 #3=6' has been interpreted, the value of parameter 3 will be 6. If the order is reversed to '#3=6 #3=15' and the line is interpreted, the value of parameter 3 will be 15.
de: Wenn die zweite Gruppe (die Parametereinstellungen) neu geordnet wird, ändert sich die Bedeutung der Zeile nicht, es sei denn, derselbe Parameter wird mehr als einmal eingestellt. In diesem Fall wird nur die letzte Einstellung des Parameters wirksam. Nachdem zum Beispiel die Zeile '#3=15 #3=6' interpretiert wurde, ist der Wert des Parameters 3 gleich 6. Wenn die Reihenfolge umgekehrt wird zu '#3=6 #3=15' und die Zeile interpretiert wird, ist der Wert von Parameter 3 15.

note: type: Plain text
en: If the third group (the comments) contains more than one comment and is reordered, only the last comment will be used.
de: Wenn die dritte Gruppe (die Kommentare) mehr als einen Kommentar enthält und neu geordnet wird, dann wird nur der letzte Kommentar verwendet.

note: type: Plain text
en: If each group is kept in order or reordered without changing the meaning of the line, then the three groups may be interleaved in any way without changing the meaning of the line. For example, the line 'g40 g1 #3=15 (foo) #4=-7.0' has five items and means exactly the same thing in any of the 120 possible orders (such as '#4=-7.0 g1 #3=15 g40 (foo)') for the five items.
de: Wenn jede Gruppe in ihrer Reihenfolge beibehalten oder umgeordnet wird, ohne dass sich die Bedeutung der Zeile ändert, können die drei Gruppen in beliebiger Weise verschachtelt werden, ohne dass sich die Bedeutung der Zeile ändert. Zum Beispiel hat die Zeile 'g40 g1 #3=15 (foo) #4=-7.0' fünf Elemente und bedeutet in jeder der 120 möglichen Reihenfolgen (wie '#4=-7.0 g1 #3=15 g40 (foo)') für die fünf Elemente genau dasselbe.

note: type: Title ==
en: Commands and Machine Modes
de: Befehle und Maschinenmodi

note: type: Plain text
en: Many commands cause the controller to change from one mode to another, and the mode stays active until some other command changes it implicitly or explicitly. Such commands are called 'modal'. For example, if coolant is turned on, it stays on until it is explicitly turned off. The G-codes for motion are also modal. If a G1 (straight move) command is given on one line, for example, it will be executed again on the next line if one or more axis words is available on the line, unless an explicit command is given on that next line using the axis words or canceling motion.
de: Viele Befehle bewirken, dass die Steuerung von einem Modus in einen anderen wechselt, und der Modus bleibt so lange aktiv, bis er durch einen anderen Befehl implizit oder explizit geändert wird. Solche Befehle werden 'modal' genannt. Zum Beispiel bleibt aach dem Einschalten des Kühlmittels dies so lange eingeschaltet, bis es explizit ausgeschaltet wird. Die G-Codes für Bewegungen sind ebenfalls modal. Wird beispielsweise ein G1-Befehl (gerade Bewegung) in einer Zeile gegeben, so wird er in der nächsten Zeile erneut ausgeführt, wenn ein oder mehrere Achsenwörter in der Zeile vorhanden sind, es sei denn, ein expliziter Befehl wird in dieser nächsten Zeile gegeben, der die Achsenwörter verwendet oder die Bewegung abbricht.

note: type: Plain text
en: 'Non-modal' codes have effect only on the lines on which they occur.  For example, G4 (dwell) is non-modal.
de: "Nicht modale" Codes wirken sich nur auf die Zeilen aus, auf denen sie vorkommen.  Beispielsweise ist G4 (Verweilen) nicht modal.

note: type: Title ==
en: Polar Coordinates(((Polar Coordinates)))
de: Polarkoordinaten(((Polarkoordinaten)))

note: type: Plain text
en: Polar Coordinates can be used to specify the XY coordinate of a move.  The @n is the distance and ^n is the angle. The advantage of this is for things like bolt hole circles which can be done very simply by moving to a point in the center of the circle, setting the offset and then moving out to the first hole then run the drill cycle.  Polar Coordinates always are from the current XY zero position.  To shift the Polar Coordinates from machine zero use an offset or select a coordinate system.
de: Polarkoordinaten können verwendet werden, um die XY-Koordinaten einer Bewegung anzugeben.  Dabei ist @n der Abstand und ^n der Winkel. Dies hat den Vorteil, dass z. B. Lochkreise sehr einfach durch Anfahren eines Punktes in der Mitte des Kreises, Einstellen des Versatzes und anschließendes Anfahren des ersten Lochs und Ausführen des Bohrzyklus erstellt werden können.  Polarkoordinaten beziehen sich immer auf die aktuelle XY-Nullposition.  Um die Polarkoordinaten vom Maschinennullpunkt aus zu verschieben, verwenden Sie einen Offset oder wählen Sie ein Koordinatensystem.

note: type: Plain text
en: In Absolute Mode the distance and angle is from the XY zero position and the angle starts with 0 on the X Positive axis and increases in a CCW direction about the Z axis. The code G1 @1^90 is the same as G1 Y1.
de: Im absoluten Modus beziehen sich Abstand und Winkel auf die XY-Nullposition, und der Winkel beginnt bei 0 auf der positiven X-Achse und nimmt im Gegenuhrzeigersinn um die Z-Achse zu. Der Code G1 @1^90 ist der gleiche wie G1 Y1.

note: type: Plain text
en: In Relative Mode the distance and angle is also from the XY zero position but it is cumulative.  This can be confusing at first how this works in incremental mode.
de: Im relativen Modus werden Abstand und Winkel ebenfalls von der XY-Nullposition aus gemessen, jedoch kumulativ.  Dies kann anfangs verwirrend sein, wie dies im inkrementellen Modus funktioniert.

note: type: Plain text
en: For example if you have the following program you might expect it to be a square pattern:
de: Wenn Sie zum Beispiel das folgende Programm haben, könnten Sie erwarten, dass es ein quadratisches Muster ist:

note: type: Plain text
en: You can see from the following figure that the output is not what you might expect. Because we added 0.5 to the distance each time the distance from the XY zero position increased with each line.
de: Aus der folgenden Abbildung können Sie ersehen, dass die Ausgabe nicht den Erwartungen entspricht. Da wir jedes Mal 0,5 zum Abstand addiert haben, vergrößerte sich der Abstand von der XY-Nullposition mit jeder Zeile.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Polar Spiral
de: Polare Spirale

note: type: Plain text
en: The following code will produce our square pattern:
de: Der folgende Code erzeugt unser quadratisches Muster:

note: type: Plain text
en: As you can see by only adding to the angle by 90 degrees each time the end point distance is the same for each line.
de: Wie Sie sehen können, ist der Endpunktabstand für jede Linie gleich, wenn Sie nur den Winkel um 90 Grad erhöhen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Polar Square
de: Polares Quadrat

note: type: Plain text
en: An incremental move is started at the origin
de: Eine inkrementelle Bewegung wird am Ursprung gestartet

note: type: Plain text
en: A mix of Polar and X or Y words are used
de: Eine Mischung aus Polar und X- oder Y-Wörtern wird verwendet

note: type: Title ==
en: Modal Groups(((Modal Groups)))
de: Modale Gruppen(((Modale Gruppen)))

note: type: Plain text
en: Modal commands are arranged in sets called 'modal groups', and only one member of a modal group may be in force at any given time. In general, a modal group contains commands for which it is logically impossible for two members to be in effect at the same time - like measure in inches vs. measure in millimeters. A machining center may be in many modes at the same time, with one mode from each modal group being in effect. The modal groups are shown in the following Table.
de: Modale Befehle sind in Gruppen angeordnet, die "modale Gruppen" genannt werden, und nur ein Mitglied einer modalen Gruppe kann zu einem bestimmten Zeitpunkt in Kraft sein. Im Allgemeinen enthält eine Modalgruppe Befehle, bei denen es logisch unmöglich ist, dass zwei Mitglieder gleichzeitig in Kraft sind - wie z. B. Messen in Zoll gegenüber Messen in Millimetern. Ein Bearbeitungszentrum kann sich in vielen Modi gleichzeitig befinden, wobei ein Modus aus jeder Modalgruppe in Kraft ist. Die Modalgruppen sind in der folgenden Tabelle aufgeführt.

note: type: Table
en: Modal Group Meaning
de: Bedeutung der Modalgruppe

note: type: Table
en: Member Words
de: Member-Wörter

note: type: Table
en: Non-modal codes (Group 0)
de: Nicht-modale Codes (Gruppe 0)

note: type: Table
en: Motion (Group 1)
de: Bewegung (engl. motion) (Gruppe 1)

note: type: Table
en: Plane selection (Group 2)
de: Auswahl der Ebene (Gruppe 2)

note: type: Table
en: Distance Mode (Group 3)
de: Distanzmodus (Gruppe 3)

note: type: Table
en: Arc IJK Distance Mode (Group 4)
de: Arc IJK-Distanzmodus (Gruppe 4)

note: type: Table
en: Feed Rate Mode (Group 5)
de: Vorschubmodus (Gruppe 5)

note: type: Table
en: Units (Group 6)
de: Einheiten (Gruppe 6)

note: type: Table
en: Cutter Diameter Compensation (Group 7)
de: Fräserdurchmesser-Kompensation (Gruppe 7)

note: type: Table
en: Tool Length Offset (Group 8)
de: Werkzeuglängenausgleich (engl. tool length offset) (Gruppe 8)

note: type: Table
en: Canned Cycles Return Mode (Group 10)
de: Festzyklen Rückgabe-Modus (Gruppe 10)

note: type: Table
en: Coordinate System (Group 12)
de: Koordinatensystem (Gruppe 12)

note: type: Table
en: Control Mode (Group 13)
de: Kontrollmodus (Gruppe 13)

note: type: Table
en: Spindle Speed Mode (Group 14)
de: Spindeldrehzahl-Modus (Gruppe 14)

note: type: Table
en: Lathe Diameter Mode (Group 15)
de: Drehmaschinen-Durchmessermodus (Gruppe 15)

note: type: Table
en: Stopping (Group 4)
de: Anhalten (Gruppe 4)

note: type: Table
en: On/Off I/O ('Group 5')
de: Ein/Aus E/A ('Gruppe 5')

note: type: Table
en: Toolchange ('Group 6')
de: Werkzeugwechsel ('Gruppe 6')

note: type: Table
en: Spindle (Group 7)
de: Spindel (Gruppe 7)

note: type: Table
en: Coolant (Group 8)
de: Kühlmittel (Gruppe 8)

note: type: Table
en: (M7 M8 can both be on), M9
de: (M7 und M8 können beide eingeschaltet sein), M9

note: type: Table
en: Override Switches (Group 9)
de: Neufestsetzungsschalter (engl. override switches) (Gruppe 9)

note: type: Table
en: User Defined (Group 10)
de: Benutzerdefiniert (Gruppe 10)

note: type: Plain text
en: For several modal groups, when a machining center is ready to accept commands, one member of the group must be in effect. There are default settings for these modal groups. When the machining center is turned on or otherwise re-initialized, the default values are automatically in effect.
de: Bei mehreren modalen Gruppen muss ein Mitglied der Gruppe in Kraft sein, wenn ein Bearbeitungszentrum bereit ist, Befehle anzunehmen. Für diese modalen Gruppen gibt es Standardeinstellungen. Wenn das Bearbeitungszentrum eingeschaltet oder anderweitig neu initialisiert wird, werden die Standardwerte automatisch übernommen.

note: type: Plain text
en: Group 1, the first group on the table, is a group of G-codes for motion. One of these is always in effect. That one is called the current motion mode.
de: Gruppe 1, die erste Gruppe auf der Tabelle, ist eine Gruppe von G-Codes für Bewegung. Einer von ihnen ist immer in Kraft. Dieser wird als der aktuelle Bewegungsmodus bezeichnet.

note: type: Plain text
en: It is an error to put a G-code from group 1 and a G-code from group 0 on the same line if both of them use axis words. If an axis word-using G-code from group 1 is implicitly in effect on a line (by having been activated on an earlier line), and a group 0 G-code that uses axis words appears on the line, the activity of the group 1 G-code is suspended for that line. The axis word-using G-codes from group 0 are G10, G28, G30, G52 and G92.
de: Es ist ein Fehler, einen G-Code der Gruppe 1 und einen G-Code der Gruppe 0 auf dieselbe Zeile zu setzen, wenn beide Achsenwörter verwenden. Wenn ein G-Code der Gruppe 1, der Achsenwörter verwendet, implizit auf einer Zeile in Kraft ist (weil er auf einer früheren Zeile aktiviert wurde) und ein G-Code der Gruppe 0, der Achsenwörter verwendet, auf der Zeile erscheint, wird die Aktivität des G-Codes der Gruppe 1 für diese Zeile ausgesetzt. Die Achsenwort-verwendenden G-Codes der Gruppe 0 sind G10, G28, G30, G52 und G92.

note: type: Plain text
en: It is an error to include any unrelated words on a line with 'O-' flow control.
de: Es ist ein Fehler, irgendwelche nicht zusammenhängende Wörter in eine Zeile mit 'O-'-Flusssteuerung aufzunehmen.

note: type: Plain text
en: Comments are purely informative and have no influence on machine behaviour.
de: Kommentare sind rein informativ und haben keinen Einfluss auf das Verhalten der Maschine.

note: type: Plain text
en: Comments can be added to lines of G-code to help clear up the intention of the programmer. Comments can be embedded in a line using parentheses () or for the remainder of a line using a semi-colon. The semi-colon is not treated as the start of a comment when enclosed in parentheses.
de: Kommentare können zu Zeilen von G-Code hinzugefügt werden, um die Absicht des Programmierers zu verdeutlichen. Kommentare können in einer Zeile mit Klammern () oder für den Rest der Zeile mit einem Semikolon eingebettet werden. Das Semikolon wird nicht als Beginn eines Kommentars behandelt, wenn es in Klammern eingeschlossen ist.

note: type: Plain text
en: Comments may appear between words, but not between words and their corresponding parameter. So, 'S100(set speed)F200(feed)' is OK while 'S(speed)100F(feed)' is not.
de: Kommentare können zwischen Wörtern stehen, aber nicht zwischen Wörtern und dem entsprechenden Parameter. So ist 'S100(set speed)F200(feed)' in Ordnung, 'S(speed)100F(feed)' hingegen nicht.

note: type: Plain text
en: Here is an example of a commented program:
de: Hier ist ein Beispiel für ein kommentiertes Programm:

note: type: delimited block -
en: G0 (Rapid to start) X1 Y1
    G0 X1 Y1 (Rapid to start; but don't forget the coolant)
    M2 ; End of program.
de: G0 (Schnellstart) X1 Y1
    G0 X1 Y1 (Schnellstart; aber das Kühlmittel nicht vergessen)
    M2 ; Ende des Programms.

note: type: Plain text
en: There are several 'active' comments which look like comments but cause some action, like '(debug,..)' or '(print,..)'. If there are several comments on a line, only the last comment will be interpreted according to these rules. Hence, a normal comment following an active comment will in effect disable the active comment. For example, '(foo)  (debug,#1)' will print the value of parameter '#1', however '(debug,#1)(foo)' will not.
de: Es gibt mehrere 'aktive' Kommentare, die wie Kommentare aussehen, aber eine Aktion auslösen, wie z.B. '(debug,..)' oder '(print,..)'. Wenn es mehrere Kommentare in einer Zeile gibt, wird nur der letzte Kommentar nach diesen Regeln interpretiert. Daher wird ein normaler Kommentar, der auf einen aktiven Kommentar folgt, den aktiven Kommentar deaktivieren. Zum Beispiel wird '(foo) (debug,#1)' den Wert des Parameters '#1' ausgeben, '(debug,#1)(foo)' jedoch nicht.

note: type: Plain text
en: A comment introduced by a semicolon is by definition the last comment on that line, and will always be interpreted for active comment syntax.
de: Ein Kommentar, der durch ein Semikolon eingeleitet wird, ist per Definition der letzte Kommentar in dieser Zeile und wird immer als aktive Kommentarsyntax interpretiert.

note: type: Plain text
en: Inline comments on O-words should not be used see the O-code <<ocode:comments,comments>> section for more information.
de: Inline-Kommentare zu O-Wörtern sollten nicht verwendet werden, siehe den Abschnitt O-Code <<ocode:comments,Kommentare>> für weitere Informationen.

note: type: Title ==
en: Messages(((Messages)))
de: Meldungen(((Meldungen)))

note: type: Plain text
en: '(MSG,)' - displays message if 'MSG' appears after the left parenthesis and before any other printing characters. Variants of 'MSG' which include white space and lower case characters are allowed. The rest of the characters before the right parenthesis are considered to be a message.  Messages should be displayed on the message display device of the user interface if provided.
de: '(MSG,)' - zeigt eine Meldung an, wenn 'MSG' nach der linken Klammer und vor einem anderen Druckzeichen erscheint. Varianten von 'MSG', die Leerzeichen und Kleinbuchstaben enthalten, sind zulässig. Der Rest der Zeichen vor der rechten Klammer wird als Nachricht betrachtet.  Meldungen sollten auf dem Meldungsanzeigegerät der Benutzeroberfläche angezeigt werden, falls vorhanden.

note: type: Block title
en: Message Example
de: Beispiel für eine Nachricht

note: type: delimited block -
en: (MSG, This is a message)
de: (MSG, Dies ist eine Nachricht)

note: type: Title ==
en: Probe Logging(((Probe Logging)))
de: Prüfpunkt-Protokollierung (engl. probe logging)(((Prüfpunktprotokollierung)))

note: type: Plain text
en: '(PROBEOPEN filename.txt)' - will open filename.txt and store the 9-number coordinate consisting of XYZABCUVW of each successful straight probe in it.
de: '(PROBEOPEN dateiname.txt)' - öffnet dateiname.txt und speichert darin die 9-stellige Koordinate, bestehend aus XYZABCUVW, jeder erfolgreichen geraden Probe.

note: type: Plain text
en: '(PROBECLOSE)' - will close the open probelog file.
de: '(PROBECLOSE)' - schließt die geöffnete Probelog-Datei.

note: type: Plain text
en: For more information on probing see the <<gcode:g38,G38>> section.
de: Weitere Informationen zur Sondierung finden Sie im Abschnitt <<gcode:g38,G38>>.

note: type: Title ==
en: Logging(((Logging)))
de: Protokollierung (engl. logging)(((Protokollierung)))

note: type: Plain text
en: '(LOGOPEN,filename.txt)' - opens the named log file. If the file already exists, it is truncated.
de: '(LOGOPEN,Dateiname.txt)' - öffnet die genannte Protokolldatei. Wenn die Datei bereits existiert, wird sie abgeschnitten.

note: type: Plain text
en: '(LOGAPPEND,filename)' - opens the named log file. If the file already exists, the data is appended.
de: '(LOGAPPEND,Dateiname)' - öffnet die genannte Protokolldatei. Wenn die Datei bereits existiert, werden die Daten angehängt.

note: type: Plain text
en: '(LOGCLOSE)' - closes an open log file.
de: '(LOGCLOSE)' - schließt eine geöffnete Protokolldatei.

note: type: Plain text
en: '(LOG,)' - everything past the ',' is written to the log file if it is open.  Supports expansion of parameters as described below.
de: '(LOG,)' - alles, was über das ',' hinausgeht, wird in die Protokolldatei geschrieben, wenn sie geöffnet ist.  Unterstützt die Erweiterung von Parametern wie unten beschrieben.

note: type: Plain text
en: Examples of logging are in 'nc_files/examples/smartprobe.ngc' and in 'nc_files/ngcgui_lib/rectange_probe.ngc' sample G-code files.
de: Beispiele für die Protokollierung finden Sie in den Beispiel-G-Code-Dateien 'nc_files/examples/smartprobe.ngc' und 'nc_files/ngcgui_lib/rectange_probe.ngc'.

note: type: Title ==
en: Debug Messages(((Debug Messages)))
de: Debug-Meldungen(((Debug-Meldungen)))

note: type: Plain text
en: '(DEBUG,)' - displays a message like '(MSG,)' with the addition of special handling for comment parameters as described below.
de: '(DEBUG,)' - zeigt eine Meldung wie '(MSG,)' an, mit dem Zusatz einer besonderen Behandlung von Kommentarparametern, wie unten beschrieben.

note: type: Title ==
en: Print Messages(((Print Messages)))
de: Meldungen drucken(((Meldungen drucken)))

note: type: Plain text
en: '(PRINT,)' - messages are output to 'stderr' with special handling for comment parameters as described below.
de: '(PRINT,)' - Meldungen werden auf 'stderr' ausgegeben, wobei Kommentarparameter wie unten beschrieben besonders behandelt werden.

note: type: Title ==
en: Comment Parameters(((Comment Parameters)))
de: Kommentar-Parameter(((Kommentar Parameter)))

note: type: Plain text
en: In the DEBUG, PRINT and LOG comments, the values of parameters in the message are expanded.
de: In den Kommentaren DEBUG, PRINT und LOG werden die Werte der Parameter in der Meldung erweitert.

note: type: Plain text
en: For example: to print a named global variable to stderr (the default console window).
de: Zum Beispiel: um eine benannte globale Variable auf stderr (das Standard-Konsolenfenster) auszugeben.

note: type: Block title
en: Parameters Example
de: Parameter Beispiel

note: type: delimited block -
en: (print,endmill dia = #<_endmill_dia>)
    (print,value of variable 123 is: #123)
de: (print,Endfräserdurchmesser = #<_endmill_dia>)
    (print,Wert der Variablen 123 ist: #123)

note: type: Plain text
en: Inside the above types of comments, sequences like '\#123' are replaced by the value of the parameter 123. Sequences like '\#<named parameter>' are replaced by the value of the named parameter. Named parameters will have white space removed from them. So, '\#<named parameter>' will be converted to '#<namedparameter>'.
de: Innerhalb der oben genannten Arten von Kommentaren werden Sequenzen wie "\#123" durch den Wert des Parameters 123 ersetzt. Sequenzen wie "\#<benannter Parameter>" werden durch den Wert des benannten Parameters ersetzt. Bei benannten Parametern wird das Leerzeichen entfernt. So wird '\#<Benannter Parameter>' in '#<Benannter Parameter>' umgewandelt.

note: type: Plain text
en: Parameter numbers can be formatted, e.g.:
de: Parameternummern können formatiert werden, z.B.:

note: type: delimited block -
en: (DEBUG, value = %d#<some_value>)
de: (DEBUG, Wert = %d#<some_value>)

note: type: Plain text
en: will print the value rounded to an integer.
de: gibt den Wert gerundet auf eine ganze Zahl aus.

note: type: Plain text
en: %lf is default if there is no formatting string.
de: %lf ist Standard, wenn keine Formatierungszeichenfolge vorhanden ist.

note: type: Plain text
en: %d = 0 decimals
de: %d = keine Dezimalstellen

note: type: Plain text
en: %f = four decimals
de: %f = vier Dezimalstellen

note: type: Plain text
en: %.xf = x (0-9) number of decimals
de: %.xf = x (0-9) explizite Angabe der Anzahl an Dezimalstellen

note: type: Plain text
en: The formatting will be performed on all parameters in the same line unless changed, i.e., multiple formatting is allowed in one line.
de: Die Formatierung wird für alle Parameter in derselben Zeile durchgeführt, sofern sie nicht geändert werden, d.h. mehrere Formatierungen in einer Zeile sind zulässig.

note: type: Plain text
en: The formatting string does not need to be right beside the parameter.
de: Die Formatierungszeichenfolge muss nicht direkt neben dem Parameter stehen.

note: type: Plain text
en: If the formatting string is created with the wrong pattern it will be printed as characters.
de: Wird die Formatierungszeichenfolge mit dem falschen Muster erstellt, so wird sie als Zeichen gedruckt.

note: type: Title ==
en: File Requirements(((File Requirements)))
de: Dateianforderungen(((Dateianforderungen)))

note: type: Plain text
en: A G-code file must contain one or more lines of G-code and be terminated with a <<mcode:m2-m30,Program End>>. Any G-code past the program end is not evaluated.
de: Eine G-Code-Datei muss eine oder mehrere Zeilen G-Code enthalten und mit einem <<mcode:m2-m30,Programmende>> abgeschlossen werden. Jeder G-Code nach dem Programmende wird nicht ausgewertet.

note: type: Plain text
en: If a program end code is not used a pair of percent signs '%' with the first percent sign on the first line of the file followed by one or more lines of G-code and a second percent sign. Any code past the second percent sign is not evaluated.
de: Wenn kein Programmendcode verwendet wird, sollte der auszuführende Code von ein Paar von Prozentzeichen '%' begrenzt werden. Die ersten Prozentzeichen stehen in der ersten Zeile der Datei, gefolgt von einer oder mehreren Zeilen G-Code und einem zweiten Prozentzeichen. Jeder Code nach dem zweiten Prozentzeichen wird nicht ausgewertet.

note: type: Plain text
en: Using % to wrap a G-code file will not do the same thing as using a program end. The machine will be in what ever state the program left it in using %, the spindle and coolant may still be on and things like G90/91 are left as the last program set them. If you don't use a proper preamble the next program could start in a dangerous condition.
de: Die Verwendung von % zum Umschließen einer G-Code-Datei bewirkt nicht dasselbe wie die Verwendung eines Programmendes. Die Maschine befindet sich in dem Zustand, in dem das Programm sie mit % verlassen hat, die Spindel und das Kühlmittel können noch eingeschaltet sein und Dinge wie G90/91 sind noch so, wie sie im letzten Programm eingestellt waren. Wenn Sie keine korrekte Präambel verwenden, könnte das nächste Programm in einem gefährlichen Zustand starten.

note: type: Plain text
en: The file must be created with a text editor like Gedit and not a word processor like Open Office Word Processor.
de: Die Datei muss mit einem Texteditor wie Gedit erstellt werden und nicht mit einem Textverarbeitungsprogramm wie Open Office Word Processor.

note: type: Title ==
en: File Size(((File Size)))
de: Dateigröße((Einzelgröße)

note: type: Plain text
en: The interpreter and task are carefully written so that the only limit on part program size is disk capacity. The TkLinuxCNC and Axis interface both load the program text to display it to the user, though, so RAM becomes a limiting factor. In Axis, because the preview plot is drawn by default, the redraw time also becomes a practical limit on program size. The preview can be turned off in Axis to speed up loading large part programs. In Axis sections of the preview can be turned off using <<axis:preview-control,preview control>> comments.
de: Der Interpreter und die Task sind sorgfältig geschrieben, so dass die einzige Grenze für die Größe des Teilprogramms die Festplattenkapazität ist. Die TkLinuxCNC- und Axis-Schnittstelle laden beide den Programmtext, um ihn dem Benutzer anzuzeigen, so dass der RAM-Speicher ein begrenzender Faktor wird. Da in Axis die Vorschau standardmäßig gezeichnet wird, ist die Zeit, die für das Neuzeichnen benötigt wird, auch eine praktische Grenze für die Programmgröße. Die Vorschau kann in Axis ausgeschaltet werden, um das Laden großer Teileprogramme zu beschleunigen. In Axis können Teile der Vorschau mit dem Kommentar <<axis:preview-control,preview control>> ausgeschaltet werden.

note: type: Title ==
en: G-code Order of Execution(((G-code Order of Execution)))
de: G-Code Reihenfolge der Ausführung(((G-Code Reihenfolge der Ausführung)))

note: type: Plain text
en: The order of execution of items on a line is defined not by the position of each item on the line, but by the following list:
de: Die Reihenfolge der Ausführung der Posten in einer Zeile wird nicht durch die Position der einzelnen Posten in der Zeile bestimmt, sondern durch die folgende Liste:

note: type: Plain text
en: O-word commands (optionally followed by a comment but no other words allowed on the same line)
de: O-Wort-Befehle (optional gefolgt von einem Kommentar, aber keine anderen Wörter in der gleichen Zeile erlaubt)

note: type: Plain text
en: Comment (including message)
de: Kommentar (einschließlich Nachricht)

note: type: Plain text
en: Set feed rate mode (G93, G94).
de: Vorschubmodus einstellen (G93, G94).

note: type: Plain text
en: Set feed rate (F).
de: Vorschubgeschwindigkeit (F) einstellen.

note: type: Plain text
en: Set spindle speed (S).
de: Spindeldrehzahl (S) einstellen.

note: type: Plain text
en: Select tool (T).
de: Werkzeug auswählen (T).

note: type: Plain text
en: HAL pin I/O (M62-M68).
de: HAL-Pin-E/A (M62-M68).

note: type: Plain text
en: Change tool (M6) and Set Tool Number (M61).
de: Werkzeug wechseln (M6) und Werkzeugnummer einstellen (M61).

note: type: Plain text
en: Spindle on or off (M3, M4, M5).
de: Spindel ein- oder ausschalten (M3, M4, M5).

note: type: Plain text
en: Save State (M70, M73), Restore State (M72), Invalidate State (M71).
de: Status speichern (M70, M73), Wiederherstellung des Status (M72), Status ungültig machen (M71).

note: type: Plain text
en: Coolant on or off (M7, M8, M9).
de: Kühlmittel ein- oder ausschalten (M7, M8, M9).

note: type: Plain text
en: Enable or disable overrides (M48, M49,M50,M51,M52,M53).
de: Aktivieren oder Deaktivieren von Neufestsetzungen (engl. overrides) (M48, M49,M50,M51,M52,M53).

note: type: Plain text
en: User-defined Commands (M100-M199).
de: Benutzerdefinierte Befehle (M100-M199).

note: type: Plain text
en: Dwell (G4).
de: Verweilen (engl. dwell) (G4).

note: type: Plain text
en: Set active plane (G17, G18, G19).
de: Aktive Ebene einstellen (G17, G18, G19).

note: type: Plain text
en: Set length units (G20, G21).
de: Längeneinheiten einstellen (G20, G21).

note: type: Plain text
en: Cutter radius compensation on or off (G40, G41, G42)
de: Fräserradiuskorrektur ein oder aus (G40, G41, G42)

note: type: Plain text
en: Cutter length compensation on or off (G43, G49)
de: Fräserlängenkorrektur ein oder aus (G43, G49)

note: type: Plain text
en: Coordinate system selection (G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3).
de: Auswahl des Koordinatensystems (G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3).

note: type: Plain text
en: Set path control mode (G61, G61.1, G64)
de: Bahnsteuerungsmodus einstellen (G61, G61.1, G64)

note: type: Plain text
en: Set distance mode (G90, G91).
de: Abstandsmodus einstellen (G90, G91).

note: type: Plain text
en: Set retract mode (G98, G99).
de: Rückzugsmodus einstellen (G98, G99).

note: type: Plain text
en: Go to reference location (G28, G30) or change coordinate system data (G10) or set axis offsets (G52, G92, G92.1, G92.2, G94).
de: Referenzpunkt anfahren (G28, G30) oder Koordinatensystemdaten ändern (G10) oder Achsenoffsets einstellen (G52, G92, G92.1, G92.2, G94).

note: type: Plain text
en: Perform motion (G0 to G3, G33, G38.n, G73, G76, G80 to G89), as modified (possibly) by G53.
de: Bewegung ausführen (G0 bis G3, G33, G38.n, G73, G76, G80 bis G89), eventuell modifiziert durch G53.

note: type: Plain text
en: Stop (M0, M1, M2, M30, M60).
de: Stopp (M0, M1, M2, M30, M60).

note: type: Title ==
en: G-code Best Practices(((G-code Best Practices)))
de: Bewährte Verfahren für den G-Code(((Best Practices des G-Code)))

note: type: Block title
en: Use an appropriate decimal precision
de: Verwenden einer angemessenen Dezimalgenauigkeit

note: type: Plain text
en: Use at least 3 digits after the decimal when milling in millimeters, and at least 4 digits after the decimal when milling in inches.
de: Verwenden Sie mindestens 3 Nachkommastellen, wenn Sie in Millimetern fräsen, und mindestens 4 Nachkommastellen, wenn Sie in Zoll fräsen.

note: type: Plain text
en: In particular, tolerance checks of arcs are done for .001 and .0001 according to the active units.
de: Insbesondere werden Toleranzprüfungen der Bögen für .001 und .0001 entsprechend den aktiven Einheiten durchgeführt.

note: type: Block title
en: Use consistent white space
de: Lehrzeichen konsistent nutzen

note: type: Plain text
en: G-code is most legible when at least one space appears before words.  While it is permitted to insert white space in the middle of numbers, there is no reason to do so.
de: G-Code ist am besten lesbar, wenn vor den Wörtern mindestens ein Leerzeichen steht.  Es ist zwar erlaubt, Leerzeichen in der Mitte von Zahlen einzufügen, aber es gibt keinen Grund, dies zu tun.

note: type: Block title
en: Use Center-format arcs
de: Bögen im Zentrum-Format verwenden

note: type: Plain text
en: Center-format arcs (which use 'I- J- K-' instead of 'R-' ) behave more consistently than R-format arcs, particularly for included angles near 180 or 360 degrees.
de: Bögen im Zentrum-Format (engl. center format) (die „I-J-K-“ anstelle von „R-“ verwenden) verhalten sich konsistenter als Bögen im R-Format, insbesondere bei eingeschlossenen Winkeln nahe 180 oder 360 Grad.

note: type: Block title
en: Use a Preamble set modal groups
de: Verwenden Sie eine Präambel für modale Gruppen

note: type: Plain text
en: When correct execution of your program depends on modal settings, be sure to set them at the beginning of the part program. Modes can carry over from previous programs and from the MDI commands.
de: Wenn die korrekte Ausführung Ihres Programms von Modaleinstellungen abhängt, sollten Sie diese zu Beginn des Werkstück-Programms festlegen. Modi können von früheren Programmen und von den MDI-Befehlen übernommen werden.

note: type: Block title
en: Example Preamble for a Mill
de: Beispiel einer Präambel für eine Fräse

note: type: Plain text
en: G17 use XY plane, G20 inch mode, G40 cancel diameter compensation, G49 cancel length offset, G54 use coordinate system 1, G80 cancel canned cycles, G90 absolute distance mode, G94 feed/minute mode.
de: G17 XY-Ebene verwenden, G20 Zoll-Modus, G40 Durchmesserkompensation aufheben, G49 Längenversatz aufheben, G54 Koordinatensystem 1 verwenden, G80 Festzyklen aufheben, G90 Absolutweg-Modus, G94 Vorschub/Minuten-Modus.

note: type: Plain text
en: Perhaps the most critical modal setting is the distance units--If you do not include G20 or G21, then different machines will mill the program at different scales. Other settings, such as the return mode in canned cycles may also be important.
de: Die vielleicht wichtigste modale Einstellung ist die Abstandseinheit - wenn Sie G20 oder G21 nicht einbeziehen, fräsen verschiedene Maschinen das Programm in unterschiedlichen Maßstäben. Andere Einstellungen, wie der Rücklaufmodus bei Festzyklen, können ebenfalls wichtig sein.

note: type: Block title
en: Don't put too many things on one line
de: Nicht zu viele Dinge in eine Zeile packen

note: type: Plain text
en: Ignore everything in section <<gcode:order-of-execution,Order of Execution>>, and instead write no line of code that is the slightest bit ambiguous.
de: Ignorieren Sie alles, was in Abschnitt <<gcode:order-of-execution,Reihenfolge der Ausführung>> steht, und schreiben Sie stattdessen keine Codezeile, die auch nur ein bisschen zweideutig ist.

note: type: Block title
en: Don't set & use a parameter on the same line
de: Einen Parameter nicht in der gleichen Zeile setzen und verwenden

note: type: Plain text
en: Don't use and set a parameter on the same line, even though the semantics are well defined. Updating a variable to a new value, such as '#1=[#1+#2]' is OK.
de: Verwenden und setzen Sie einen Parameter nicht in der gleichen Zeile, auch wenn die Semantik klar definiert ist. Die Aktualisierung einer Variablen auf einen neuen Wert, z. B. '#1=[#1+#2]', ist in Ordnung.

note: type: Block title
en: Don't use line numbers
de: Verwenden Sie keine Zeilennummern

note: type: Plain text
en: Line numbers offer no benefits. When line numbers are reported in error messages, the numbers refer to the line number in the file, not the N-word value.
de: Zeilennummern bieten keine Vorteile. Wenn Zeilennummern in Fehlermeldungen angegeben werden, beziehen sich die Nummern auf die Zeilennummer in der Datei, nicht auf den N-Wort-Wert.

note: type: Block title
en: When several coordinate systems are moved
de: Wenn mehrere Koordinatensysteme verschoben werden

note: type: Plain text
en: Consider using the inverse time speed mode.
de: Erwägen Sie die Verwendung des umgekehrten Zeit-Geschwindigkeits-Modus (inverse time speed mode).

note: type: Plain text
en: Because the meaning of an 'F' word in meters per minute varies depending on the type of axis to be moved and because the amount of removed material does not depend only on the feed rate, it can be simpler to use G93, inverse speed of time, to achieve the removal of desired material.
de: Da die Bedeutung eines "F"-Wortes in Metern pro Minute je nach Art der zu bewegenden Achse variiert und die Menge des abgetragenen Materials nicht nur von der Vorschubgeschwindigkeit abhängt, kann es einfacher sein, G93, die inverse Geschwindigkeit der Zeit, zu verwenden, um den Abtrag des gewünschten Materials zu erreichen.

note: type: Title ==
en: Linear and Rotary Axis
de: Lineare und rotierende Achsen

note: type: Plain text
en: Because the meaning of an F-word in feed-per-minute mode varies depending on which axes are commanded to move, and because the amount of material removed does not depend only on the feed rate, it may be easier to use G93 inverse time feed mode to achieve the desired material removal rate.
de: Da die Bedeutung eines F-Wortes im Vorschub-pro-Minute-Modus davon abhängt, welche Achsen zu bewegen sind, und da die Menge des abgetragenen Materials nicht nur von der Vorschubgeschwindigkeit abhängt, kann es einfacher sein, den G93-Modus für den inversen Zeitvorschub zu verwenden, um die gewünschte Materialabtragsrate zu erreichen.

note: type: Title ==
en: Common Error Messages
de: Häufige Fehlermeldungen

note: type: Plain text
en: 'G-code out of range' - A G-code greater than G99 was used, the scope of G codes in LinuxCNC is 0 - 99. Not every number between 0 and 99 is a valid G-code.
de: G-Code außerhalb des Bereichs' - Ein G-Code größer als G99 wurde verwendet, der Umfang der G-Codes in LinuxCNC ist 0 - 99. Nicht jede Zahl zwischen 0 und 99 ist ein gültiger G-Code.

note: type: Plain text
en: 'Unknown G-code used' - A G-code was used that is not part of the LinuxCNC G-code language.
de: Unbekannter G-Code verwendet' - Es wurde ein G-Code verwendet, der nicht Teil der LinuxCNC G-Code Sprache ist.

note: type: Plain text
en: 'i,j,k word with no Gx to use it' - i, j and k words must be used on the same line as the G-code.
de: 'i,j,k Wort ohne Gx, um es zu verwenden' - i, j und k Wörter müssen in der gleichen Zeile wie der G-Code verwendet werden.

note: type: Plain text
en: 'Cannot use axis values without a G-code that uses them' - Axis values can not be used on a line without either a modal G-code in effect or a G-code on the same line.
de: "Achsenwerte können nicht ohne einen G-Code verwendet werden, der sie verwendet" - Achsenwerte können nicht in einer Zeile verwendet werden, ohne dass entweder ein modaler G-Code oder ein G-Code in derselben Zeile wirksam ist.

note: type: Plain text
en: 'File ended with no percent sign or program end' - Every G-code file must end in a M2 or M30 or be wrapped with the percent sign %.
de: 'Datei endete ohne Prozentzeichen oder Programmende' - Jede G-Code-Datei muss in einem M2 oder M30 enden oder mit dem Prozentzeichen umschlossen sein.

note: type: Title =
en: RS274/NGC Differences
de: RS274/NGC Unterschiede

note: type: Title ==
en: Changes from RS274/NGC
de: Änderungen gegenüber RS274/NGC

note: type: Block title
en: Differences that change the meaning of RS274/NGC programs
de: Unterschiede mit Einfluss auf die Interpretation von RS274/NGC-Programmen

note: type: Labeled list
en: Location after a tool change
de: Position nach einem Werkzeugwechsel

note: type: Plain text
en: In LinuxCNC, the machine does not return to its original position after a tool change. This change was made because the new tool might be longer than the old tool, and the move to the original machine position could therefore leave the tool tip too low.
de: In LinuxCNC kehrt die Maschine nicht auf seine ursprüngliche Position nach einem Werkzeugwechsel zurück. Diese Änderung wurde vorgenommen, weil das neue Werkzeug länger sein könnte als das alte Werkzeug, und die Bewegung auf die ursprüngliche Maschinenposition könnte daher für die Werkzeugspitze zu niedrig sein.

note: type: Labeled list
en: Offset parameters are INI file units
de: Offset-Parameter sind Einheiten der INI-Datei

note: type: Plain text
en: In LinuxCNC, the values stored in parameters for the G28 and G30 home locations, the P1...P9 coordinate systems, and the G92 offset are in "INI file units". This change was made because otherwise the meaning of a location changed depending on whether G20 or G21 was active when G28, G30, G10 L2, or G92.3 is programmed.
de: In LinuxCNC werden die Werte in den Parametern für die G28 und G30 Referenzpunkte, die P1...P9 Koordinatensysteme und die G92 Offset sind in "INI-Datei Einheiten" gespeichert. Diese Änderung wurde vorgenommen, weil sonst die Bedeutung eines Standortes geändert, je nachdem, ob G20 oder G21 aktiv war, wenn G28, G30, G10 L2, oder G92.3 programmiert wird.

note: type: Labeled list
en: Tool table lengths/diameters are in INI file units
de: Längen/Durchmesser der Werkzeugtabelle sind in den in der INI-Datei spezifizierten Einheiten angegeben

note: type: Plain text
en: In LinuxCNC, the tool lengths (offsets) and diameters in the tool table are specified in INI file units only. This change was made because otherwise the length of a tool and its diameter would change based on whether G20 or G21 was active when initiating G43, G41, G42 modes. This made it impossible to run G-code in the machine's non-native units, even when the G-code was simple and well-formed (starting with G20 or G21, and didn't change units throughout the program), without changing the tool table.
de: In LinuxCNC werden die Werkzeuglängen (Offsets) und Durchmesser in der Werkzeugtabelle nur in der in der INI-Datei spezifizierten Einheiten angegeben. Diese Änderung wurde vorgenommen, da sich sonst die Länge eines Werkzeugs und sein Durchmesser ändern würden, je nachdem, ob G20 oder G21 beim Initiieren der G43-, G41- und G42-Modi aktiv war. Dies machte es unmöglich, G-Code in den nicht-nativen Einheiten der Maschine auszuführen, selbst wenn der G-Code einfach und wohlgeformt war (beginnend mit G20 oder G21 und keine Einheiten im gesamten Programm geändert), ohne die Werkzeugtabelle zu ändern.

note: type: Labeled list
en: G84, G87 not implemented
de: G84, G87 nicht implementiert

note: type: Plain text
en: G84 and G87 are not currently implemented, but may be added to a future release of LinuxCNC.
de: G84 und G87 sind derzeit nicht implementiert, können aber in einer zukünftigen Version von LinuxCNC hinzugefügt werden.

note: type: Labeled list
en: G28, G30 with axis words
de: G28, G30 mit Achswörtern

note: type: Plain text
en: When G28 or G30 is programmed with only some axis words present, LinuxCNC only moves the named axes. This is common on other machine controls. To move some axes to an intermediate point and then move all axes to the predefined point, write two lines of G code:
de: Wenn G28 oder G30 mit nur einigen vorhandenen Achsenwörtern programmiert wird, bewegt LinuxCNC nur die benannten Achsen. Dies ist bei anderen Maschinensteuerungen üblich. Um einige Achsen zu einem Zwischenpunkt und dann alle Achsen zu dem vordefinierten Punkt zu bewegen, schreiben Sie zwei Zeilen G-Code:

note: type: delimited block -
en: G0 X- Y- (axes to move to intermediate point)
    G28 (move all axes to predefined point)
de: G0 X- Y- (Achsen auf Zwischenpunkt fahren)
    G28 (alle Achsen auf vordefinierten Punkt fahren)

note: type: Title ==
en: Additions to RS274/NGC
de: Ergänzungen zu RS274/NGC

note: type: Block title
en: Differences that do not change the meaning of RS274/NGC programs
de: Unterschiede ohne Einfluss auf die Bedeutung der RS274/NGC Programme

note: type: Labeled list
en: G33, G76 threading codes
de: G33, G76 Gewindecodes

note: type: Plain text
en: These codes are not defined in RS274/NGC.
de: Diese Codes sind in RS274/NGC nicht definiert.

note: type: Plain text
en: The probe tip is not retracted after a G38.2 movement. This retraction move may be added in a future release of LinuxCNC.
de: Die Tastspitze ist nicht nach einer G38.2 Bewegung zurückgezogen. Dieser Rückzug Bewegung kann in einer zukünftigen Version von LinuxCNC hinzugefügt werden.

note: type: Plain text
en: These codes are not defined in RS274/NGC
de: Diese Codes sind in RS274/NGC nicht definiert

note: type: Labeled list
en: O-codes
de: O-Codes

note: type: Labeled list
en: M50...M53 overrides
de: M50...M53 Neufestsetzungen (engl. overrides)

note: type: Plain text
en: 'Negative Tool Lengths'
de: 'Negative Werkzeuglängen'

note: type: Plain text
en: The RS274/NGC spec says "it is expected that" all tool lengths will be positive. However, G43 works for negative tool lengths.
de: In der RS274/NGC-Spezifikation heißt es, dass alle Werkzeuglängen positiv sein sollen. G43 funktioniert jedoch auch bei negativen Werkzeuglängen.

note: type: Plain text
en: 'Lathe tools'
de: 'Drehwerkzeuge'

note: type: Plain text
en: G43 tool length compensation can offset the tool in both the X and Z dimensions. This feature is primarily useful on lathes.
de: Die G43-Werkzeuglängenkompensation kann das Werkzeug sowohl in der X- als auch in der Z-Dimension versetzen. Diese Funktion ist vor allem bei Drehbänken nützlich.

note: type: Plain text
en: 'Dynamic tool lengths'
de: 'Dynamische Werkzeuglängen'

note: type: Plain text
en: LinuxCNC allows specification of a computed tool length through G43.1 I K.
de: LinuxCNC ermöglicht die Angabe einer berechneten Werkzeuglänge durch G43.1 I K.

note: type: Plain text
en: LinuxCNC allows specification of a tool diameter and, if in lathe mode, orientation in the G-code. The format is G41.1/G42.1 D L, where D is diameter and L (if specified) is the lathe tool orientation.
de: LinuxCNC ermöglicht die Angabe eines Werkzeugdurchmessers und, wenn im Drehmaschinenmodus, Orientierung durch G-Code. Das Format ist G41.1/G42.1 D L, wo D ist der Durchmesser und L (wenn angegeben) ist die Drehmaschine Werkzeug Orientierung.

note: type: Labeled list
en: G43 without H word
de: G43 ohne H-Wort

note: type: Plain text
en: In NGC this is not allowed. In LinuxCNC, it sets length offsets for the currently loaded tool. If no tool is currently loaded, it is an error. This change was made so the user doesn't have to specify the tool number in two places for each tool change, and because it's consistent with the way G41/G42 work when the D word is not specified.
de: Mit NGC ist dies nicht erlaubt. In LinuxCNC, setzt es Länge Offsets für die derzeit geladenen Werkzeug. Ist aktuell kein Werkzeug geladen, so ist es ein Fehler. Diese Änderung wurde vorgenommen, damit der Benutzer die Werkzeugnummer nicht an zwei Stellen für jeden Werkzeugwechsel angeben muss, und weil es im Einklang mit der Art und Weise ist wie G41/G42 arbeitet, wenn das D-Wort nicht angegeben ist.

note: type: Labeled list
en: U, V, and W axes
de: U-, V- und W-Achsen

note: type: Plain text
en: LinuxCNC allows machines with up to 9 axes by defining an additional set of 3 linear axes known as U, V and W
de: LinuxCNC ermöglicht Maschinen mit bis zu 9 Achsen durch die Definition einer zusätzlichen Reihe von 3 linearen Achsen bekannt als U, V und W

note: type: Title =
en: Tool Compensation(((Tool Compensation)))
de: Werkzeugkorrektur(((Werkzeugkorrektur)))

note: type: Title ==
en: Touch Off(((Touch Off)))
de: Touch Off((Touch Off)

note: type: Plain text
en: Using the Touch Off Screen in the AXIS interface you can update the tool table automatically.
de: Mit dem Touch Off Screen in der AXIS Schnittstelle können Sie die Werkzeugtabelle automatisch aktualisieren.

note: type: Plain text
en: Typical steps for updating the tool table:
de: Typische Schritte zum Aktualisieren der Werkzeugtabelle:

note: type: Plain text
en: After homing load a tool with 'T__n__ M6' where _n_ is the tool number.
de: Nach der Referenzfahrt laden Sie ein Werkzeug mit 'T__n__ M6', wobei _n_ die Werkzeugnummer (engl. tool number) ist.

note: type: Plain text
en: Move tool to an established point using a gauge or take a test cut and measure.
de: Fahren Sie das Werkzeug mit Hilfe einer Lehre auf einen festgelegten Punkt oder machen Sie einen Testschnitt und messen Sie.

note: type: Plain text
en: Click the 'Touch Off' button in the Manual Control tab (or hit the 'End' button on your keyboard).
de: Klicken Sie auf der Registerkarte "Manuelle Steuerung" auf den Button "Ausschalten" (oder drücken Sie die Taste "Ende" auf Ihrer Tastatur).

note: type: Plain text
en: Select 'Tool Table' in the Coordinate System drop down box.
de: Wählen Sie „Werkzeugtabelle“ im Dropdown-Feld „Koordinatensystem“ aus.

note: type: Plain text
en: Enter the gauge or measured dimension and select OK.
de: Geben Sie das Messgerät oder die gemessene Bemaßung ein und wählen Sie OK aus.

note: type: Plain text
en: The Tool Table will be changed with the correct Z length to make the DRO display the correct Z position and a G43 command will be issued so the new tool Z length will be in effect. Tool table touch off is only available when a tool is loaded with 'T__n__ M6'.
de: Die Werkzeugtabelle wird mit der korrekten Z-Länge geändert, damit die DRO die richtige Z-Position anzeigt, und ein G43-Befehl wird ausgegeben, damit die neue Z-Länge des Werkzeugs in Kraft tritt. Das Antasten der Werkzeugtabelle ist nur verfügbar, wenn ein Werkzeug mit 'T__n__ M6' geladen ist.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Touch Off Tool Table
de: Touch-Off-Werkzeugtabelle

note: type: Title ===
en: Using G10 L1/L10/L11
de: Verwendung von G10 L1/L10/L11

note: type: Plain text
en: The G10 L1/L10/L11 commands can be used to set tool table offsets:
de: Die G10-Befehle L1/L10/L11 können zum Einstellen von Werkzeugtabellen-Offsets verwendet werden:

note: type: Plain text
en: `G10 L1 P__n__` - Set offset(s) to a value. Current position irrelevant.  (see <<gcode:g10-l1,G10 L1>> for details)
de: 'G10 L1 P__n__' - Setzt den/die Offset(s) auf einen Wert. Die aktuelle Position ist irrelevant.  (siehe <<gcode:g10-l1,G10 L1>> für Einzelheiten)

note: type: Plain text
en: `G10 L10 P__n__` - Set offset(s) so current position w/ fixture 1-8 becomes a value. (see <<gcode:g10-l10,G10 L10>> for details)
de: 'G10 L10 P__n__' - Setzt Offset(s), so dass die aktuelle Position mit dem Gerät 1-8 ein Wert wird. (siehe <<gcode:g10-l10,G10 L10>> für Details)

note: type: Plain text
en: `G10 L11 P__n__` - Set offset(s) so current position w/ fixture 9 becomes a value. (see <<gcode:g10-l11,G10 L11>> for details)
de: 'G10 L11 P__n__' - Offset(s) setzen, so dass die aktuelle Position mit dem Gerät 9 ein Wert wird. (siehe <<gcode:g10-l11,G10 L11>> für Details)

note: type: Plain text
en: This is only a brief presentation, refer to the reference guide of the G-code for more detailed explanations.
de: Dies ist nur eine kurze Darstellung, genauere Erläuterungen finden Sie im Referenzhandbuch des G-Codes.

note: type: Plain text
en: The 'Tool Table' is a text file that contains information about each tool. The file is located in the same directory as your configuration and is called 'tool.tbl' by default.  A file name may be specified with the INI file [EMCIO]TOOL_TABLE setting.  The tools might be in a tool changer or just changed manually.  The file can be edited with a text editor or be updated using G10 L1. See the <<sec:lathe-tool-table,Lathe Tool Table>> Section for an example of the lathe tool table format. The maximum pocket number is 1000.
de: Die "Werkzeugtabelle" ist eine Textdatei, die Informationen über jedes Werkzeug enthält. Die Datei befindet sich im gleichen Verzeichnis wie Ihre Konfiguration und heißt standardmäßig "tool.tbl".  Ein Dateiname kann mit der INI-Datei [EMCIO]TOOL_TABLE festgelegt werden.  Die Werkzeuge können sich in einem Werkzeugwechsler befinden oder einfach manuell geändert werden.  Die Datei kann mit einem Texteditor bearbeitet werden oder mit G10 L1 aktualisiert werden. Im Abschnitt <<sec:lathe-tool-table,Lathe Tool Table>> finden Sie ein Beispiel für das Format der Drehbank-Werkzeugtabelle. Die maximale Platzanzahl beträgt 1000.

note: type: Plain text
en: The <<cha:tooledit-gui,Tool Editor>> or a text editor can be used to edit the tool table. If you use a text editor make sure you reload the tool table in the GUI.
de: Der <<cha:tooledit-gui,Tool Editor>> oder ein Texteditor können verwendet werden, um die Werkzeugtabelle zu bearbeiten. Wenn Sie einen Texteditor verwenden, stellen Sie sicher, dass Sie die Werkzeugtabelle in der GUI neu laden.

note: type: Title ===
en: Tool Table Format(((Tool Table Format)))
de: Werkzeugtabellen-Format(((Werkzeugtabellenformat)))

note: type: Block title
en: Tool Table Format
de: Werkzeugtabellen-Format

note: type: Table
en: Dia
de: Durchm

note: type: Table
en: (no data after opening semicolon)
de: (keine Daten nach dem öffnenden Semikolon)

note: type: Plain text
en: In general, the tool table line format is:
de: Im Allgemeinen ist das Zeilenformat der Werkzeugtabelle wie folgt:

note: type: Plain text
en: T - tool number (tool numbers must be unique)
de: T - Werkzeugnummer (Werkzeugnummern müssen eindeutig sein)

note: type: Plain text
en: P - pocket number, 1-1000 (pocket numbers must be unique, Pocket 0 represents the spindle)
de: P - Taschennummer, 1-1000 (Taschennummern müssen eindeutig sein, Tasche 0 steht für die Spindel)

note: type: Plain text
en: X..W - tool offset on specified axis - floating-point
de: X.. W - Werkzeugversatz auf vorgegebener Achse - Gleitkommazahl

note: type: Plain text
en: D - tool diameter - floating-point, absolute value
de: D - Werkzeugdurchmesser - Fließkommazahl, absoluter Wert

note: type: Plain text
en: I - front angle (lathe only) - floating-point
de: I - Frontwinkel (nur Drehbank) - Gleitkommazahl

note: type: Plain text
en: J - back angle (lathe only) - floating-point
de: J - Rückenwinkel (nur Drehmaschine) - Gleitkommazahl

note: type: Plain text
en: Q - tool orientation (lathe only) - integer, 0-9
de: Q - Werkzeugausrichtung (nur Drehmaschine) - ganze Zahl, 0-9

note: type: Plain text
en: ; - beginning of comment or remark - text
de: ; - Beginn des Kommentars oder der Bemerkung - Text

note: type: Plain text
en: Tool numbers should be unique.  Lines beginning with a semicolon are ignored.
de: Werkzeugnummern sollten eindeutig sein.  Zeilen, die mit einem Semikolon beginnen, werden ignoriert.

note: type: Plain text
en: The units used for the length, diameter, etc., are in machine units.
de: Die Einheiten für Länge, Durchmesser usw. werden in Maschineneinheiten angegeben.

note: type: Plain text
en: You will probably want to keep the tool entries in ascending order, especially if you are going to be using a randomizing tool changer.  Although the tool table does allow for tool numbers in any order.
de: Wahrscheinlich werden Sie die Werkzeugeinträge in aufsteigender Reihenfolge halten wollen, besonders wenn Sie einen zufälligen Werkzeugwechsler verwenden.  Die Werkzeugtabelle erlaubt jedoch Werkzeugnummern in beliebiger Reihenfolge.

note: type: Plain text
en: One line may contain as many as 16 entries, but will likely contain much fewer.  The entries for T (tool number) and P (pocket number) are required.  The last entry (a remark or comment, preceded by a semicolon) is optional. It makes reading easier if the entries are arranged in columns, as shown in the table, but the only format requirement is that there be at least one space or tab after each of the entries on a line and a newline character at the end of each entry.
de: Eine Zeile kann bis zu 16 Einträge enthalten, wird aber wahrscheinlich viel weniger enthalten.  Die Einträge für T (Werkzeugnummer) und P (Platznummer) sind erforderlich.  Der letzte Eintrag (eine Bemerkung oder ein Kommentar, dem ein Semikolon vorangestellt ist) ist optional. Es erleichtert das Lesen, wenn die Einträge in Spalten angeordnet sind, wie in der Tabelle gezeigt, aber die einzige Formatvorschrift ist, dass nach jedem Eintrag in einer Zeile mindestens ein Leerzeichen oder Tabulator und am Ende jedes Eintrags ein Zeilenumbruch stehen muss.

note: type: Plain text
en: The meanings of the entries and the type of data to be put in each are as follows.
de: Die Bedeutung der Einträge und die Art der Daten, die sie enthalten, sind wie folgt.

note: type: Labeled list
en: Tool Number (required)
de: Werkzeugnummer (erforderlich)

note: type: Plain text
en: The 'T' column contains the number (unsigned integer) which represents a code number for the tool. The user may use any code for any tool, as long as the codes are unsigned integers.
de: Die Spalte 'T' enthält die Zahl (Ganzzahl ohne Vorzeichen), die eine Codenummer für das Tool darstellt. Der Benutzer kann jeden Code für jedes Tool verwenden, solange die Codes unsignierte ganze Zahlen sind.

note: type: Labeled list
en: Pocket Number (required)
de: Taschen-Nummer (erforderlich)

note: type: Plain text
en: The 'P' column contains the number (unsigned integer) which represents the pocket number (slot number) of the tool changer slot where the tool can be found. The entries in this column must all be different.
de: Die Spalte 'P' enthält die Taschennummer (ganzzahlig ohne Vorzeichen, auch Steckplatznummer, engl. pocket number oder slot number) des Werkzeugwechslers, in dem sich das Werkzeug befindet. Die Einträge in dieser Spalte müssen alle unterschiedlich sein.

note: type: Plain text
en: The pocket numbers will typically start at 1 and go up to the highest available pocket on your tool changer. But not all tool changers follow this pattern. Your pocket numbers will be determined by the numbers that your tool changer uses to refer to the pockets. So all this is to say that the pocket numbers you use will be determined by the numbering scheme used in your tool changer, and the pocket numbers you use must make sense on your machine.
de: Die Platznummern beginnen in der Regel bei 1 und gehen bis zum höchsten verfügbaren Platz auf Ihrem Werkzeugwechsler. Aber nicht alle Werkzeugwechsler folgen diesem Muster. Die Platznummern richten sich nach den Nummern, die Ihr Werkzeugwechsler für die Bezeichnungen der Plätze verwendet. Das heißt also, dass die von Ihnen verwendeten Platznummern durch das Nummerierungsschema Ihres Werkzeugwechslers bestimmt werden, und dass die von Ihnen verwendeten Platznummern auf Ihrer Maschine Sinn machen müssen.

note: type: Labeled list
en: Data Offset Numbers (optional)
de: Daten-Offset-Nummern (optional)

note: type: Plain text
en: The 'Data Offset' columns (XYZABCUVW) contain real numbers which represent tool offsets in each axis. This number will be used if tool length offsets are being used and this tool is selected.  These numbers can be positive, zero, or negative, and are in fact completely optional. Although you will probably want to make at least one entry here, otherwise there would be little point in making an entry in the tool table to begin with.
de: Die Spalten 'Datenversatz' (XYZABCUVW) enthalten reelle Zahlen, die Werkzeugversätze in jeder Achse darstellen. Diese Zahl wird verwendet, wenn die Werkzeuglängenkorrekturen verwendet werden und dieses Werkzeug ausgewählt ist.  Diese Zahlen können positiv, null oder negativ sein, und sind eigentlich völlig optional. Allerdings sollten Sie hier mindestens einen Eintrag vornehmen, da es sonst wenig Sinn macht, einen Eintrag in der Werkzeugtabelle vorzunehmen.

note: type: Plain text
en: In a typical mill, you probably want an entry for Z (tool length offset). In a typical lathe, you probably want an entry for X (X tool offset) and Z (Z tool offset). In a typical mill using cutter diameter compensation (cutter comp), you probably also want to add an entry for D (cutter diameter). In a typical lathe using tool nose diameter compensation (tool comp), you probably also want to add an entry for D (tool nose diameter).
de: Bei einer typischen Fräsmaschine benötigen Sie wahrscheinlich einen Eintrag für Z (Werkzeuglängenkorrektur). Bei einer typischen Drehmaschine benötigen Sie wahrscheinlich einen Eintrag für X (X-Werkzeugkorrektur) und Z (Z-Werkzeugkorrektur). Bei einer typischen Fräsmaschine, die eine Fräserdurchmesserkompensation verwendet, möchten Sie wahrscheinlich auch einen Eintrag für D (Fräserdurchmesser) hinzufügen. In einer typischen Drehmaschine, die eine Werkzeugdurchmesserkompensation (tool comp) verwendet, möchten Sie wahrscheinlich auch einen Eintrag für D (Werkzeugdurchmesser) hinzufügen.

note: type: Plain text
en: A lathe also requires some additional information to describe the shape and orientation of the tool. So you probably want to have entries for I (tool front angle) and J (tool back angle). You probably also want an entry for Q (tool orientation).
de: Eine Drehmaschine erfordert auch einige zusätzliche Informationen, um die Form und Ausrichtung des Werkzeugs zu beschreiben. Daher möchten Sie wahrscheinlich Einträge für I (vorderer Werkzeugwinkel) und J (hinterer Werkzeugwinkel) haben. Wahrscheinlich möchten Sie auch einen Eintrag für Q (Werkzeugausrichtung).

note: type: Plain text
en: See the <<cha:lathe-user-information,Lathe User Information>> chapter for more detail.
de: Siehe das Kapitel <<cha:lathe-user-information,Informationen für Nutzer von Drehmaschinen>> für weitere Details.

note: type: Plain text
en: The 'Diameter' column contains a real number. This number is used only if cutter compensation is turned on using this tool. If the programmed path during compensation is the edge of the material being cut, this should be a positive real number representing the measured diameter of the tool. If the programmed path during compensation is the path of a tool whose diameter is nominal, this should be a small number (positive or negative, but near zero) representing only the difference between the measured diameter of the tool and the nominal diameter.  If cutter compensation is not used with a tool, it does not matter what number is in this column.
de: Die Spalte 'Durchmesser' enthält eine reelle Zahl. Diese Nummer wird nur verwendet, wenn die Fräserkompensation mit diesem Werkzeug aktiviert ist. Wenn der programmierte Weg während der Kompensation die Kante des zu schneidenden Materials ist, sollte dies eine positive reelle Zahl sein, die den gemessenen Durchmesser des Werkzeugs darstellt. Wenn der programmierte Weg während der Kompensation der Weg eines Werkzeugs ist, dessen Durchmesser nominal ist, sollte dies eine kleine Zahl (positiv oder negativ, aber nahe Null) sein, die nur die Differenz zwischen dem gemessenen Durchmesser des Werkzeugs und dem Nenndurchmesser darstellt.  Wenn die Fräserkompensation nicht mit einem Werkzeug verwendet wird, spielt es keine Rolle, welche Nummer in dieser Spalte enthalten ist.

note: type: Plain text
en: The 'Comment' column may optionally be used to describe the tool. Any type of description is OK. This column is for the benefit of human readers only. The comment must be preceded by a semicolon.
de: Die Spalte 'Kommentar' kann optional zur Beschreibung des Werkzeugs verwendet werden. Jede Art von Beschreibung ist zulässig. Diese Spalte ist nur für den menschlichen Leser gedacht. Dem Kommentar muss ein Semikolon vorangestellt werden.

note: type: Plain text
en: Earlier versions of LinuxCNC had two different tool table formats for mills and lathes, but since the 2.4.x release, one tool table format is used for all machines.
de: Frühere Versionen von LinuxCNC hatte zwei verschiedene Werkzeug-Tabelle Formate für Fräsen und Drehen, aber seit der 2.4.x Release, wird dasselbe Werkzeug-Tabellen-Format für alle Maschinen verwendet.

note: type: Title ===
en: Tool IO(((Tool IO)))
de: Werkzeug-E/A (engl. tool I/O)(((Werkzeug-E/A)))

note: type: Plain text
en: The userspace program specified by *[EMCIO]EMCIO = io* is conventionally used for tool changer management (and other io functions for enabling LinuxCNC and the control of coolant/lube hardware).  The HAL pins used for tool management are prefixed with *iocontrol.0.*.
de: Das durch *[EMCIO]EMCIO = io* spezifizierte Userspace-Programm wird üblicherweise für die Werkzeugwechsler-Verwaltung (und andere E/A (I/O)-Funktionen zum Aktivieren von LinuxCNC und die Steuerung von Kühlmittel-/Schmiermittel-Hardware) verwendet.  Die HAL-Pins, die für die Werkzeugverwaltung verwendet werden, sind mit dem Präfix *iocontrol.0.* versehen.

note: type: Plain text
en: A G-code *T* command asserts the HAL output pin *iocontrol.0.tool-prepare*.  The HAL input pin, *iocontrol.0.tool-prepared*, must be set by external HAL logic to complete tool preparation leading to a subsequent reset of the tool-prepare pin.
de: Ein G-Code *T*-Befehl setzt den HAL-Ausgangspin *iocontrol.0.tool-prepare*.  Der HAL-Eingangspin *iocontrol.0.tool-prepared* muss durch externe HAL-Logik gesetzt werden, um die Werkzeugvorbereitung abzuschließen, was zu einem anschließenden Reset des Tool-Prepare-Pins führt.

note: type: Plain text
en: A G-code *M6* command asserts the HAL output pin *iocontrol.0.tool-change*.  The related HAL input pin, *iocontrol.0.tool-prepared*, must be set by external HAL logic to indicate completion of the tool change leading to a subsequent reset of the tool-change pin.
de: Ein G-Code *M6*-Befehl aktiviert den HAL-Ausgangspin *iocontrol.0.tool-change*.  Der zugehörige HAL-Eingangs-Pin, *iocontrol.0.tool-prepared*, muss durch externe HAL-Logik gesetzt werden, um den Abschluss des Werkzeugwechsels anzuzeigen, was zu einem anschließenden Reset des Tool-Change-Pins führt.

note: type: Plain text
en: Tooldata is accessed by an ordered index (idx) that depends on the type of toolchanger specified by *[EMCIO]RANDOM_TOOLCHANGER=type*.
de: Der Zugriff auf die Werkzeugdaten erfolgt über einen geordneten Index (idx), der vom Typ des Werkzeugwechslers abhängt, der durch *[EMCIO]RANDOM_TOOLCHANGER=type* festgelegt ist.

note: type: Plain text
en: For *RANDOM_TOOLCHANGER = 0*, (0 is default and specifies a non-random toolchanger) idx is a number indicating the sequence in which tooldata was loaded.
de: Bei *RANDOM_TOOLCHANGER = 0* (0 ist die Standardeinstellung und gibt einen nicht zufälligen Werkzeugwechsler an) ist idx eine Zahl, zur Angabe der Reihenfolge, in der die Werkzeugdaten geladen wurden.

note: type: Plain text
en: For *RANDOM_TOOLCHANGER = 1*, idx is the *current* pocket number for the tool number specified by the G-code select tool command *T__n__*.
de: Bei *RANDOM_TOOLCHANGER = 1* ist idx die *aktuelle* Platznummer für die Werkzeugnummer, die durch den G-Code-Befehl zur Werkzeugauswahl *T__n__* festgelegt wurde.

note: type: Plain text
en: The io program provides HAL output pins to facilitate toolchanger management:
de: Das io-Programm bietet HAL Ausgangsstifte, um die Verwaltung des Werkzeugwechslers zu erleichtern:

note: type: Title ====
en: IO for non-random toolchanger
de: E/A (I/O) für nicht-zufälligen Werkzeugwechsler

note: type: Plain text
en: Tool number _n_==0 indicates no tool.
de: Werkzeugnummer __n__==0 zeigt an, dass kein Werkzeug vorhanden ist.

note: type: Plain text
en: The pocket number for a tool is set when tooldata is loaded/reloaded from its data source ([EMCIO]TOOL_TABLE or [EMCIO]DB_PROGRAM).
de: Die Platznummer für ein Werkzeug wird beim Laden/Nachladen der Werkzeugdaten aus der Datenquelle ([EMCIO]TOOL_TABLE oder [EMCIO]DB_PROGRAM) festgelegt.

note: type: Plain text
en: At G-code *T__n__* (_n_ != 0) command:
de: Beim Befehl G-Code *T__n__* (_n_ != 0):

note: type: Plain text
en: *iocontrol.0.tool-prep-index*  = _idx_ (index based on tooldata load sequence)
de: *iocontrol.0.tool-prep-index* = _idx_ (Index basierend auf der Tooldaten-Ladesefolge)

note: type: Plain text
en: *iocontrol.0.tool-prep-pocket* = the pocket number for _n_
de: *iocontrol.0.tool-prep-pocket* = die feste Platz-/Taschen-Nummer für _n_

note: type: Plain text
en: At G-code *T0* (_n_ == 0 remove) command:
de: Beim Befehl G-code *T0* (_n_ == 0 entfernen):

note: type: Plain text
en: At M-code *M6* (following iocontrol.0.tool-changed pin 0-->1):
de: Bei M-Code *M6* (nach iocontrol.0.tool-changed pin 0-->1):

note: type: Plain text
en: *iocontrol.0.tool-from-pocket* = pocket number used to retrieve tool
de: *iocontrol.0.tool-from-pocket* = Nummer der Tasche, die zum Abrufen des Werkzeugs verwendet wird

note: type: Title ====
en: IO for random toolchanger
de: E/A (I/O) für zufälligen Werkzeugwechsler

note: type: Plain text
en: Tool number _n_==0 is *not special*.
de: Die Werkzeugnummer _n_==0 ist *nicht speziell*.

note: type: Plain text
en: Pocket number 0 is *special* as it indicates the *spindle*.
de: Die Taschennummer 0 ist *speziell*, da sie die *Spindel* anzeigt.

note: type: Plain text
en: The *current* pocket number for tool _n_ is the tooldata index (_idx_) for tool _n_.
de: Die *aktuelle* Platznummer für Werkzeug _n_ ist der Werkzeugdatenindex (_idx_) für Werkzeug _n_.

note: type: Plain text
en: At G-code command *T__n__*:
de: Bei G-Code Befehl *T__n__*:

note: type: Plain text
en: *iocontrol.0.tool-prep-index*  = tooldata index (idx) for tool _n_
de: *iocontrol.0.tool-prep-index* = Tooldatenindex (idx) für Werkzeug _n_

note: type: Plain text
en: *iocontrol.0.tool-prep-pocket* = pocket number for tool _n_
de: *iocontrol.0.tool-prep-pocket* = Platznummer für Werkzeug _n_

note: type: Plain text
en: At startup, *iocontrol.0.tool-from-pocket* = 0.  An M61Q__n__ (_n_!=0) command does not change the *iocontrol.0.tool-from-pocket*.  An M61Q0 (_n_==0) command sets *iocontrol.0.tool-from-pocket* to 0.
de: Beim Start ist *iocontrol.0.tool-from-pocket* = 0. Ein M61Q__n__ (_n_!=0) Befehl ändert *iocontrol.0.tool-from-pocket* nicht.  Ein M61Q0 (n==0) Befehl setzt *iocontrol.0.tool-from-pocket* auf 0.

note: type: Title ===
en: Tool Changers(((Tool Changers)))
de: Werkzeugwechsler(((Werkzeugwechsler)))

note: type: Plain text
en: LinuxCNC supports three types of tool changers: 'manual', 'random location' and 'non-random or fixed location'. Information about configuring a LinuxCNC tool changer is in the <<sub:ini:sec:emcio,EMCIO Section>> of the INI chapter.
de: LinuxCNC unterstützt drei Arten von Werkzeugwechslern: 'manuell', 'zufällige Position' und 'nicht zufällige oder feste Position'. Informationen über die Konfiguration eines LinuxCNC Werkzeugwechsler ist in dem Abschnitt <<sub:ini:sec:emcio,EMCIO>> des INI-Kapitels.

note: type: Block title
en: Manual Tool Changer
de: Manueller Werkzeugwechsler

note: type: Plain text
en: Manual tool changer (you change the tool by hand) is treated like a fixed location tool changer.  Manual toolchanges can be aided by a HAL configuration that employs the userspace program *hal_manualtoolchange* and is typically specified in an INI file with INI statements:
de: Ein manueller Werkzeugwechsler (Sie wechseln das Werkzeug von Hand) wird wie ein Festplatz-Werkzeugwechsler behandelt.  Manuelle Werkzeugwechsel können durch eine HAL-Konfiguration unterstützt werden, die das Userspace-Programm *hal_manualtoolchange* verwendet und normalerweise in einer INI-Datei mit INI-Anweisungen angegeben wird:

note: type: Block title
en: Fixed Location Tool Changers
de: Werkzeugwechsler mit festen Plätzen

note: type: Plain text
en: Fixed location tool changers always return the tools to a fixed position in the tool changer. This would also include designs like lathe turrets. When LinuxCNC is configured for a fixed location tool changer the 'P' number is not used internally (but read, preserved and rewritten) by LinuxCNC, so you can use P for any bookkeeping number you want.
de: Werkzeugwechsler mit fester Positionierung bringen die Werkzeuge immer in eine feste Position im Werkzeugwechsler zurück. Dies würde auch Designs wie Drehmaschine Revolver umfassen. Wenn LinuxCNC für eine feste Position Werkzeugwechsler konfiguriert ist die 'P'-Nummer nicht intern verwendet wird (aber gelesen, erhalten und neu geschrieben) von LinuxCNC, so können Sie P für jede Buchhaltung Nummer, die Sie wollen.

note: type: Plain text
en: When using [EMCIO]RANDOM_TOOLCHANGER = 0 (the default), the 'P' pocket number is a parameter of the tooldata that is retrieved from the tooldata source ([EMCIO]TOOL_TABLE or [EMCIO]DB_PROGRAM).  In many applications it is fixed but it may be changed by edits to the [EMCIO]TOOL_TABLE or programmatically when the [EMCIO]DB_PROGRAM is used.  LinuxCNC pushes updates to the data source ([EMCIO]TOOL_TABLE or [EMCIO]DB_PROGRAM) for gcodes G10L1,G10L10,G10L11,M61.  LinuxCNC can pull tooldata updates from the data source by UI (user-interface)  commands (Python example: linuxcnc.command().load_tool_table()) or by the gcode: G10L0.
de: Bei Verwendung von [EMCIO]RANDOM_TOOLCHANGER = 0 (Standardeinstellung) ist die Taschennummer 'P' ein Parameter der Werkzeugdaten, die aus der tooldata-Quelle ([EMCIO]TOOL_TABLE oder [EMCIO]DB_PROGRAM) abgerufen werden.  In vielen Anwendungen ist es behoben, kann aber durch Änderungen am [EMCIO]TOOL_TABLE oder programmgesteuert geändert werden, wenn das [EMCIO]DB_PROGRAM verwendet wird.  LinuxCNC pusht Aktualisierungen an die Datenquelle ([EMCIO]TOOL_TABLE oder [EMCIO]DB_PROGRAM) für die G-codes G10L1, G10L10, G10L11, M61.  LinuxCNC kann Werkzeugdaten-Aktualisierungen aus der Datenquelle über UI-Befehle (Benutzeroberfläche) (Python-Beispiel: linuxcnc.command().load_tool_table()) oder über den G-Code `G10L0` abrufen.

note: type: Block title
en: Random Location Tool Changers
de: Werkzeugwechsler mit zufälliger Position

note: type: Plain text
en: Random location tool changers ([EMCIO]RANDOM_TOOLCHANGER = 1) swap the tool in the spindle with the one in the changer. With this type of tool changer the tool will always be in a different pocket after a tool change. When a tool is changed LinuxCNC rewrites the pocket number to keep track of where the tools are. T can be any number but P must be a number that makes sense for the machine.
de: Zufallswerkzeugwechsler ([EMCIO]RANDOM_TOOLCHANGER = 1) tauschen das Werkzeug in der Spindel mit dem Werkzeug im Wechsler aus. Mit dieser Art von Werkzeugwechsler wird das Werkzeug immer in einer anderen Tasche nach einem Werkzeugwechsel sein. Wenn ein Werkzeug gewechselt wird, schreibt LinuxCNC die Platznummer neu, um den Überblick zu behalten, wo die Werkzeuge sind. T kann eine beliebige Zahl sein, aber P muss eine Zahl sein, die für die Maschine Sinn Macht.

note: type: Title ==
en: Tool Length Compensation(((Tool Length Compensation)))
de: Werkzeuglängenkompensation(((Werkzeuglängenkompensation)))

note: type: Plain text
en: The tool length compensations are given as positive numbers in the tool table.  A tool compensation is programmed using G43 H_n_, where _n_ is the index number of the desired tool in the tool table. It is intended that all entries in the tool table are positive. The value of H is checked, it must be a non-negative integer when read. The interpreter behaves as follows:
de: Die Werkzeuglängenkorrekturen werden als positive Zahlen in der Werkzeugtabelle angegeben.  Eine Werkzeugkorrektur wird mit G43 H__n__ programmiert, wobei 'n' die Indexnummer des gewünschten Werkzeugs in der Werkzeugtabelle ist. Es ist vorgesehen, dass alle Einträge in der Werkzeugtabelle positiv sind. Der Wert von H wird geprüft, er muss beim Lesen eine nicht-negative ganze Zahl sein. Der Interpreter verhält sich wie folgt:

note: type: Plain text
en: If G43 H_n_ is programmed, a call to the function USE_TOOL_LENGTH_OFFSET(length) is made (where length is the length difference, read from the tool table, of the indexed tool _n_), tool_length_offset is repositioned in the machine settings model and the value of current_z in the model is adjusted. Note that _n_ does not have to be the same as the slot number of the tool currently in the spindle.
de: Wenn G43 H__n__ programmiert ist, erfolgt ein Aufruf der Funktion USE_TOOL_LENGTH_OFFSET(length) (wobei length die aus der Werkzeugtabelle gelesene Längendifferenz des indizierten Werkzeugs _n_ ist), tool_length_offset wird im Maschineneinstellungsmodell neu positioniert und der Wert von current_z im Modell wird angepasst. Beachten Sie, dass _n_ nicht mit der Steckplatz-Nummer des Werkzeugs übereinstimmen muss, das sich gerade in der Spindel befindet.

note: type: Plain text
en: If G49 is programmed, USE_TOOL_LENGTH_OFFSET(0.0) is called, tool_length_offset is reset to 0.0 in the machine settings template and the current value of current_z in the model is adjusted.  The effect of the tool length compensation is illustrated in the capture below. Note that the tool length is subtracted from Z so that the programmed control point corresponds to the tip of the tool.  Note also that the effect of the length compensation is immediate when you see the compensation is immediate when the position of Z is seen as a relative coordinate, but it has no effect on the actual machine position until a Z movement is programmed.
de: Wenn G49 programmiert ist, wird USE_TOOL_LENGTH_OFFSET(0.0) aufgerufen, tool_length_offset wird in der Maschineneinstellungsvorlage auf 0.0 zurückgesetzt und der aktuelle Wert von current_z im Modell wird angepasst.  Die Auswirkung der Werkzeuglängenkompensation ist in der folgenden Abbildung zu sehen. Beachten Sie, dass die Werkzeuglänge von Z abgezogen wird, so dass der programmierte Kontrollpunkt mit der Spitze des Werkzeugs übereinstimmt.  Beachten Sie auch, dass die Auswirkung der Längenkompensation sofort sichtbar ist, wenn Sie die Position von Z als relative Koordinate sehen, aber sie hat keine Auswirkung auf die tatsächliche Maschinenposition, bis eine Z-Bewegung programmiert wird.

note: type: Block title
en: Tool length test program. Tool #1 is one inch long.
de: Testprogramm für die Werkzeuglänge. Werkzeug #1 ist einen Zoll lang.

note: type: Plain text
en: With this program, in most cases, the machine will apply the offset in the form of a ramp during the movement in xyz following the word G43.
de: Mit diesem Programm wird die Maschine in den meisten Fällen den Offset in Form einer Rampe während der Bewegung in xyz nach dem Wort G43 anwenden.

note: type: Title ==
en: Cutter Radius Compensation(((Cutter Radius Compensation)))
de: Fräserradiuskompensation(((Fräserradiuskompensation)))

note: type: Plain text
en: Cutter Compensation allows the programmer to program the tool path without knowing the exact tool diameter. The only caveat is the programmer must program the lead in move to be at least as long as the largest tool radius that might be used.
de: Die Fräserkompensation ermöglicht es dem Programmierer, den Werkzeugweg zu programmieren, ohne den genauen Werkzeugdurchmesser zu kennen. Der einzige Vorbehalt ist, dass der Programmierer den Lead in Move so programmieren muss, dass er mindestens so lang ist wie der größte Werkzeugradius, der verwendet werden könnte.

note: type: Plain text
en: There are two possible paths the cutter can take since the cutter compensation can be on to the left or right side of a line when facing the direction of cutter motion from behind the cutter. To visualize this imagine you were standing on the part walking behind the tool as it progresses across the part. G41 is your left side of the line and G42 is the right side of the line.
de: Es gibt zwei mögliche Pfade, die der Fräser einschlagen kann, da der Fräserausgleich auf der linken oder der rechten Seite einer Linie vorgenommen werden kann, wenn man die Bewegungsrichtung des Fräsers von hinten betrachtet. Um dies zu veranschaulichen, stellen Sie sich vor, Sie stünden auf dem Werkstück und gingen hinter dem Werkzeug, während es sich über das Werkstück bewegt. G41 ist Ihre linke Seite der Linie und G42 ist die rechte Seite der Linie.

note: type: Plain text
en: The end point of each move depends on the next move. If the next move creates an outside corner the move will be to the end point of the compensated cut line. If the next move creates in an inside corner the move will stop short so to not gouge the part. The following figure shows how the compensated move will stop at different points depending on the next move.
de: Der Endpunkt jeder Bewegung hängt von der nächsten Bewegung ab. Wenn die nächste Bewegung eine Außenecke erzeugt, erfolgt die Bewegung zum Endpunkt der kompensierten Schnittlinie. Wenn die nächste Bewegung eine Innenecke erzeugt, wird die Bewegung kurz angehalten, um das Teil nicht auszuschneiden. Die folgende Abbildung zeigt, wie die kompensierte Bewegung je nach der nächsten Bewegung an verschiedenen Punkten stoppt.

note: type: Block title
en: Compensation End Point(((Compensation End Point)))
de: Ausgleich am Endpunkt (engl. Compensation End Point)(((Compensation End Point)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Compensation End Point
de: Ausgleich am Endpunkt

note: type: Title ====
en: Tool Table
de: Werkzeugtabelle

note: type: Plain text
en: Cutter compensation uses the data from the tool table to determine the offset needed. The data can be set at run time with G10 L1.
de: Die Fräserkompensation verwendet die Daten aus der Werkzeugtabelle, um den benötigten Versatz zu bestimmen. Die Daten können zur Laufzeit mit G10 L1 eingestellt werden.

note: type: Title ====
en: Programming Entry Moves
de: Einstiegsbewegungen programmieren

note: type: Plain text
en: Any move that is long enough to perform the compensation will work as the entry move. The minimum length is the cutter radius. This can be a rapid move above the work piece. If several rapid moves are issued after a G41/42 only the last one will move the tool to the compensated position.
de: Jede Bewegung, die lang genug ist, um die Kompensation durchzuführen, kann als Eingangsbewegung verwendet werden. Die Mindestlänge ist der Radius des Fräsers. Dies kann eine Eilgangbewegung über dem Werkstück sein. Wenn mehrere Eilgänge nach einem G41/42 ausgeführt werden, fährt nur der letzte das Werkzeug in die kompensierte Position.

note: type: Plain text
en: In the following figure you can see that the entry move is compensated to the right of the line. This puts the center of the tool to the right of X0 in this case. If you were to program a profile and the end is at X0 the resulting profile would leave a bump due to the offset of the entry move.
de: In der folgenden Abbildung sehen Sie, dass die Einfahrbewegung rechts von der Linie kompensiert wird. Dadurch befindet sich der Mittelpunkt des Werkzeugs in diesem Fall rechts von X0. Wenn Sie ein Profil programmieren würden und das Ende bei X0 liegt, würde das resultierende Profil aufgrund des Versatzes der Einfahrbewegung eine Beule hinterlassen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Entry Move
de: Eingangs-Bewegung (engl. entry move)

note: type: Title ====
en: Z Motion
de: Z-Bewegung

note: type: Plain text
en: Z axis motion may take place while the contour is being followed in the XY plane. Portions of the contour may be skipped by retracting the Z axis above the part and by extending the Z-axis at the next start point.
de: Die Bewegung der Z-Achse kann erfolgen, während die Kontur in der XY-Ebene verfolgt wird. Teile der Kontur können übersprungen werden, indem die Z-Achse über dem Teil zurückgezogen und am nächsten Startpunkt wieder ausgefahren wird.

note: type: Title ====
en: Rapid Moves
de: Eilgänge

note: type: Plain text
en: Rapid moves may be programmed while compensation is turned on.
de: Eilgänge können programmiert werden, während die Kompensation eingeschaltet ist.

note: type: Title ====
en: Good Practices
de: Gute Praktiken

note: type: Plain text
en: Start a program with G40 to make sure compensation is off.
de: Starten Sie ein Programm mit G40, um sicherzustellen, dass die Kompensation ausgeschaltet ist.

note: type: Table
en: Examples
de: Beispiele

note: type: Title ====
en: Outside Profile Example
de: Beispiel für ein äußeres Profil

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Outside Profile
de: Äußeres Profil

note: type: Title ====
en: Inside Profile Example
de: Beispiel für ein Innenprofil

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Inside Profile
de: Innenprofil

note: type: Title =
en: About LinuxCNC(((About LinuxCNC)))
de: Über LinuxCNC(((Über LinuxCNC)))

note: type: Title ==
en: The Software
de: Die Software

note: type: Plain text
en: LinuxCNC (the Enhanced Machine Control) is a software system for computer control of machine tools such as milling machines and lathes, robots such as puma and scara and other computer controlled machines up to 9 axes.
de: LinuxCNC (Enhanced Machine Control) ist ein Softwaresystem zur Computersteuerung von Werkzeugmaschinen wie Fräs- und Drehmaschinen, Robotern wie Puma und Scara und anderen computergesteuerten Maschinen mit bis zu 9 Achsen.

note: type: Plain text
en: LinuxCNC is free software with open source code. Current versions of LinuxCNC are entirely licensed under the GNU General Public License and Lesser GNU General Public License (GPL and LGPL)
de: LinuxCNC ist freie Software mit offenem Quellcode. Aktuelle Versionen von LinuxCNC sind vollständig unter der GNU General Public License und Lesser GNU General Public License (GPL und LGPL) lizenziert

note: type: Plain text
en: LinuxCNC provides:
de: LinuxCNC bietet:

note: type: Plain text
en: easy discovery and testing without installation with the LiveCD
de: einfaches Entdecken und Testen ohne Installation mit der LiveCD

note: type: Plain text
en: easy installation from the Live CD
de: einfache Installation von der Live-CD

note: type: Plain text
en: easy to use graphical configuration wizards to rapidly create a configuration specific to the machine
de: benutzerfreundliche grafische Konfigurationsassistenten zum schnellen Erstellen einer maschinenspezifischen Konfiguration

note: type: Plain text
en: directly available as regular packages of recent releases of Debian (since Bookworm) and Ubuntu (since Kinetic Kudu)
de: direkt verfügbar als reguläre Pakete in den letzten Veröffentlichungen von Debian (seit Bookworm) und Ubuntu (seit Kinetic Kudu)

note: type: Plain text
en: a graphical user interface (actually several interfaces to choose from)
de: eine grafische Benutzeroberfläche (GUI) (es stehen sogar mehrere GUIs zur Auswahl)

note: type: Plain text
en: a graphical interface creation tool (Glade)
de: ein Tool zur Erstellung einer grafischen Benutzeroberfläche (Glade)

note: type: Plain text
en: an interpreter for 'G-code' (the RS-274 machine tool programming language)
de: ein Interpreter für 'G-Code' (die Programmiersprache für RS-274-Werkzeugmaschinen)

note: type: Plain text
en: a realtime motion planning system with look-ahead
de: ein System zur Bewegungsplanung in Echtzeit mit Vorausschau

note: type: Plain text
en: operation of low-level machine electronics such as sensors and motor drives
de: Betrieb von Low-Level-Maschinenelektronik wie Sensoren und Motorantriebe

note: type: Plain text
en: an easy to use 'breadboard' layer for quickly creating a unique configuration for your machine
de: eine einfach zu bedienende 'Steckplatinen'-Schicht für die schnelle Erstellung einer einzigartigen Konfiguration für Ihre Maschine

note: type: Plain text
en: a software PLC programmable with ladder diagrams
de: eine mit Leiterdiagrammen programmierbare Software-SPS

note: type: Plain text
en: It does not provide drawing (CAD - Computer Aided Design) or G-code generation from the drawing (CAM - Computer Automated Manufacturing) functions.
de: Es bietet keine Zeichnungsfunktionen (CAD - Computer Aided Design) oder G-Code-Generierung aus der Zeichnung (CAM - Computer Automated Manufacturing).

note: type: Plain text
en: It can simultaneously move up to 9 axes and supports a variety of interfaces.
de: Er kann bis zu 9 Achsen gleichzeitig bewegen und unterstützt eine Vielzahl von Schnittstellen.

note: type: Plain text
en: The control can operate true servos (analog or PWM) with the feedback loop closed by the LinuxCNC software at the computer, or open loop with step-servos or stepper motors.
de: Die Steuerung kann echte Servos (analog oder PWM) mit der Feedback-Schleife durch die LinuxCNC-Software auf dem Computer, oder Open-Loop mit Schritt-Servos oder Schrittmotoren betreiben.

note: type: Plain text
en: Motion control features include: cutter radius and length compensation, path deviation limited to a specified tolerance, lathe threading, synchronized axis motion, adaptive feedrate, operator feed override, and constant velocity control.
de: Zu den Funktionen der Bewegungssteuerung gehören: Fräserradius- und Längenkompensation, auf eine bestimmte Toleranz begrenzte Bahnabweichung, Gewindedrehen, synchronisierte Achsenbewegung, adaptiver Vorschub, Vorschubübersteuerung durch den Bediener und konstante Geschwindigkeitsregelung.

note: type: Plain text
en: Support for non-Cartesian motion systems is provided via custom kinematics modules. Available architectures include hexapods (Stewart platforms and similar concepts) and systems with rotary joints to provide motion such as PUMA or SCARA robots.
de: Unterstützung für nicht-kartesische Bewegungssysteme wird über benutzerdefinierte Kinematikmodule bereitgestellt. Zu den verfügbaren Architekturen gehören Hexapoden (Stewart-Plattformen und ähnliche Konzepte) und Systeme mit Drehgelenken für die Bewegung wie PUMA- oder SCARA-Roboter.

note: type: Plain text
en: LinuxCNC runs on Linux using real time extensions.
de: LinuxCNC läuft auf Linux mit Echtzeit-Erweiterungen.

note: type: Title ==
en: The Operating System
de: Das Betriebssystem

note: type: Plain text
en: LinuxCNC is available as ready-to-use packages for the Ubuntu and Debian distributions.
de: LinuxCNC ist als gebrauchsfertige Pakete für die Ubuntu- und Debian-Distributionen verfügbar.

note: type: Title ==
en: Getting Help(((Getting Help)))
de: Hilfe erhalten(((Hilfe erhalten)))

note: type: Plain text
en: IRC stands for Internet Relay Chat.  It is a live connection to other LinuxCNC users.  The LinuxCNC IRC channel is #linuxcnc on libera.chat.
de: IRC steht für Internet Relay Chat.  Es ist eine Live-Verbindung zu anderen LinuxCNC-Benutzern.  Der LinuxCNC IRC-Kanal ist #linuxcnc auf libera.chat.

note: type: Plain text
en: The simplest way to get on the IRC is to use the embedded client on this https://web.libera.chat/#linuxcnc[page].
de: Der einfachste Weg, in den IRC zu gelangen, ist die Verwendung des eingebetteten Clients auf dieser https://web.libera.chat/#linuxcnc[Seite].

note: type: Labeled list
en: Some IRC etiquette
de: Etwas IRC-Etikette

note: type: Plain text
en: Ask specific questions... Avoid questions like "Can someone help me?".
de: Stellen Sie gezielte Fragen... Vermeiden Sie Fragen wie „Kann mir jemand helfen?“.

note: type: Plain text
en: If you're really new to all this, think a bit about your question before typing it.  Make sure you give enough information so someone can solve your question.
de: Wenn Sie wirklich neu auf diesem Gebiet sind, denken Sie ein wenig über Ihre Frage nach, bevor Sie sie tippen.  Stellen Sie sicher, dass Sie genügend Informationen geben, damit jemand Ihre Frage lösen kann.

note: type: Plain text
en: Have some patience when waiting for an answer, sometimes it takes a while to formulate an answer or everyone might be busy working or something.
de: Haben Sie etwas Geduld, wenn Sie auf eine Antwort warten, denn manchmal dauert es eine Weile, bis eine Antwort formuliert wird, oder alle sind mit der Arbeit beschäftigt oder so.

note: type: Plain text
en: Set up your IRC account with your unique name so people will know who you are.  If you use the java client, use the same name every time you log in.  This helps people remember who you are and if you have been on before many will remember the past discussions which saves time on both ends.
de: Richten Sie Ihr IRC-Konto mit Ihrem eindeutigen Namen ein, damit andere wissen, wer Sie sind.  Wenn Sie den Java-Client verwenden, sollten Sie jedes Mal, wenn Sie sich anmelden, denselben Namen verwenden.  So können sich die Leute merken, wer Sie sind, und wenn Sie schon einmal dabei waren, werden sich viele an die vergangenen Diskussionen erinnern, was für beide Seiten Zeit spart.

note: type: Labeled list
en: Sharing Files
de: Dateien teilen

note: type: Plain text
en: The most common way to share files on the IRC is to upload the file to one of the following or a similar service and paste the link:
de: Die gängigste Art, Dateien im IRC auszutauschen, besteht darin, die Datei auf einen der folgenden oder einen ähnlichen Dienst hochzuladen und den Link einzufügen:

note: type: Plain text
en: 'For text': http://pastebin.com/, http://pastie.org/, https://gist.github.com/
de: 'Für Text': http://pastebin.com/, http://pastie.org/, https://gist.github.com/

note: type: Plain text
en: 'For pictures': http://imagebin.org/, http://imgur.com/, http://bayimg.com/
de: 'Für Bilder': http://imagebin.org/, http://imgur.com/, http://bayimg.com/

note: type: Plain text
en: 'For files': https://filedropper.com/, http://filefactory.com/, http://1fichier.com/
de: 'Für Dateien': https://filedropper.com/, http://filefactory.com/, http://1fichier.com/

note: type: Title ===
en: Mailing List
de: Mailingliste

note: type: Plain text
en: An Internet Mailing List is a way to put questions out for everyone on that list to see and answer at their convenience. You get better exposure to your questions on a mailing list than on the IRC but answers take longer. In a nutshell you e-mail a message to the list and either get daily digests or individual replies back depending on how you set up your account.
de: Eine Internet-Mailingliste ist eine Möglichkeit, Fragen zu stellen, die jeder auf dieser Liste sehen und nach Belieben beantworten kann. Auf einer Mailingliste können Sie Ihre Fragen besser stellen als im IRC, aber die Antworten dauern länger. Kurz gesagt: Sie senden eine Nachricht an die Liste und erhalten entweder tägliche Zusammenfassungen oder individuelle Antworten, je nachdem, wie Sie Ihr Konto eingerichtet haben.

note: type: Plain text
en: You can subscribe to the emc-users mailing list at: https://lists.sourceforge.net/lists/listinfo/emc-users
de: Sie können die Mailingliste emc-users abonnieren unter: https://lists.sourceforge.net/lists/listinfo/emc-users

note: type: Title ===
en: Web Forum
de: Web-Forum

note: type: Plain text
en: A web forum can be found at https://forum.linuxcnc.org or by following the link at the top of the linuxcnc.org home page.
de: Ein Webforum finden Sie unter https://forum.linuxcnc.org oder über den Link oben auf der Homepage von linuxcnc.org.

note: type: Plain text
en: This is quite active but the demographic is more user-biased than the mailing list.  If you want to be sure that your message is seen by the developers then the mailing list is to be preferred.
de: Diese ist recht aktiv, aber die Zielgruppe ist stärker auf die Benutzer ausgerichtet als die Mailingliste.  Wenn Sie sicher sein wollen, dass Ihre Nachricht von den Entwicklern gesehen wird, sollten Sie die Mailingliste bevorzugen.

note: type: Title ===
en: LinuxCNC Wiki
de: LinuxCNC-Wiki

note: type: Plain text
en: A Wiki site is a user maintained web site that anyone can add to or edit.
de: Eine Wiki-Site ist eine von Benutzern gepflegte Website, die von jedermann ergänzt und bearbeitet werden kann.

note: type: Plain text
en: The user maintained LinuxCNC Wiki site contains a wealth of information and tips at: link:http://wiki.linuxcnc.org/[http://wiki.linuxcnc.org]
de: Die von den Benutzern gepflegte LinuxCNC Wiki Seite enthält eine Fülle von Informationen und Tipps: link:http://wiki.linuxcnc.org/[http://wiki.linuxcnc.org]

note: type: Title ===
en: Bug Reports
de: Fehlerberichte

note: type: Plain text
en: Report bugs to the LinuxCNC link:http:///github.com/LinuxCNC/linuxcnc/issues[github bug tracker].
de: Melden Sie Fehler an den LinuxCNC Link:http:///github.com/LinuxCNC/linuxcnc/issues[github bug tracker].

note: type: Title =
en: Getting LinuxCNC(((Getting LinuxCNC)))
de: LinuxCNC erhalten(((LinuxCNC erhalten)))

note: type: Plain text
en: This section describes the recommended way to download and make a fresh install of LinuxCNC.  There are also <<sec:_alternate_install_methods,Alternate Install Methods>> for the adventurous.  If you have an existing install that you want to upgrade, go to the <<cha:updating-linuxcnc,Updating LinuxCNC>> section instead.
de: Dieser Abschnitt beschreibt den empfohlenen Weg zum Herunterladen und zur Neuinstallation von LinuxCNC.  Es gibt auch <<sec:_alternate_install_methods,Alternate Install Methods>> für die Abenteuerlustigen.  Wenn Sie eine bestehende Installation haben, die Sie aktualisieren möchten, gehen Sie stattdessen zum Abschnitt <<cha:updating-linuxcnc,Updating LinuxCNC>>.

note: type: Plain text
en: LinuxCNC requires a special kernel with real-time extensions.  There are three possibilities here: preempt-rt, RTAI or Xenomai. In addition there are two versions of LinuxCNC which work with these kernels.  See the table below for details.
de: LinuxCNC benötigt einen speziellen Kernel mit Echtzeit-Erweiterungen.  Hier gibt es drei Möglichkeiten: preempt-rt, RTAI oder Xenomai. Darüber hinaus gibt es zwei Versionen von LinuxCNC, die mit diesen Kerneln arbeiten.  Siehe die Tabelle unten für Details.

note: type: Plain text
en: Fresh installs of LinuxCNC are most easily created using the Live/Install Image.  This is a hybrid ISO filesystem image that can be written to a USB storage device or a DVD and used to boot a computer.  At boot time you will be given a choice of booting the "Live" system (to run LinuxCNC without making any permanent changes to your computer) or booting the Installer (to install LinuxCNC and its operating system onto your computer's hard drive).
de: Neue Installationen von LinuxCNC werden am einfachsten mit dem Live/Install Image erstellt.  Dies ist ein hybrides ISO-Dateisystem-Image, das auf ein USB-Speichergerät oder eine DVD geschrieben und zum Booten eines Computers verwendet werden kann.  Beim Booten haben Sie die Wahl, das "Live"-System zu starten (um LinuxCNC auszuführen, ohne irgendwelche dauerhaften Änderungen an Ihrem Computer vorzunehmen) oder den Installer zu starten (um LinuxCNC und sein Betriebssystem auf der Festplatte Ihres Computers zu installieren).

note: type: Plain text
en: The outline of the process looks like this:
de: Der Prozesses sieht grob umrissen wie folgt aus:

note: type: Plain text
en: Download the Live/Install Image.
de: Laden Sie das Live/Installations-Image herunter.

note: type: Plain text
en: Write the image to a USB storage device or DVD.
de: Schreiben Sie das Image auf ein USB-Speichergerät oder eine DVD.

note: type: Plain text
en: Boot the Live system to test out LinuxCNC.
de: Booten Sie das Live-System, um LinuxCNC zu testen.

note: type: Plain text
en: Boot the Installer to install LinuxCNC.
de: Booten Sie das Installationsprogramm, um LinuxCNC zu installieren.

note: type: Title ==
en: Download the image
de: Das Festplattenabbild (engl. kurz image) herunterladen

note: type: Plain text
en: This section describes some methods for downloading the Live/Install Image.
de: In diesem Abschnitt werden einige Methoden zum Herunterladen des Live/Install Image beschrieben.

note: type: Title ===
en: Normal Download
de: Normales Herunterladen

note: type: Plain text
en: For x86 PCs Download the Live/Install CD by clicking here:
de: Für x86-PCs laden Sie die Live/Installations-CD herunter, indem Sie hier klicken:

note: type: Plain text
en: For the Raspberry Pi a complete SD card image is available here:
de: Für den Raspberry Pi ist ein vollständiges SD-Karten-Image hier verfügbar:

note: type: Plain text
en: http://www.linuxcnc.org/iso/linuxcnc-2.8.1-pi4.zip (this will auto-update to 2.8.2)
de: http://www.linuxcnc.org/iso/linuxcnc-2.8.1-pi4.zip (dies wird automatisch auf 2.8.2 aktualisiert)

note: type: Plain text
en: This can be installed using the normal Pi https://www.raspberrypi.org/documentation/installation/installing-images/README.md[install process] including with the Raspberry Pi Imager app.
de: Diese kann mit dem normalen Pi https://www.raspberrypi.org/documentation/installation/installing-images/README.md[Installationsprozess] installiert werden, auch mit der Raspberry Pi Imager App.

note: type: Plain text
en: This SD image is reported not to work with the Raspberry Pi4 8GB model.  Note also that this version of the SD image limits available memory to 3GB as this is necessary to persuade it to run with both WiFi and USB working on some versions of the Pi. You can experiment with removing this limit by editing the config-rt.txt file in the boot directory. If you can't boot after the change then the file can be edited back by mounting the SD card in a a different computer (maybe even a Pi with a USB card reader).
de: Es wird berichtet, dass dieses SD-Image nicht mit dem Raspberry Pi4 8GB Modell funktioniert.  Beachten Sie auch, dass diese Version des SD-Images den verfügbaren Speicher auf 3 GB begrenzt, da dies notwendig ist, um es zu überzeugen, dass sowohl WiFi als auch USB auf einigen Versionen des Pi funktionieren. Sie können versuchen, diese Begrenzung aufzuheben, indem Sie die Datei config-rt.txt im Boot-Verzeichnis bearbeiten. Wenn Sie nach der Änderung nicht mehr booten können, dann können Sie die Datei wieder bearbeiten, indem Sie die SD-Karte in einen anderen Computer einlegen (vielleicht sogar einen Pi mit einem USB-Kartenleser).

note: type: Title ===
en: Download using zsync
de: Herunterladen mit zsync

note: type: Plain text
en: zsync is a download application that efficiently resumes interrupted downloads and efficiently transfers large files with small modifications (if you have an older local copy).  Use zsync if you have trouble downloading the image using the <<sec:_normal_download,Normal Download>> method.
de: zsync ist eine Download-Anwendung, die unterbrochene Downloads effizient wieder aufnimmt und große Dateien mit kleinen Änderungen effizient überträgt (wenn Sie eine ältere lokale Kopie haben).  Verwenden Sie zsync, wenn Sie Probleme beim Herunterladen des Bildes mit der Methode <<sec:_normal_download,Normales Herunterladen>> haben.

note: type: Block title
en: zsync in Linux
de: zsync unter Linux

note: type: Plain text
en: Install zsync using Synaptic or, by running the following in a <<faq:terminal,terminal>>
de: Installieren Sie zsync mit Synaptic oder indem Sie Folgendes in einem <<faq:terminal,Terminal-Programm>> ausführen

note: type: Plain text
en: Then run this command to download the iso to your computer
de: Führen Sie dann diesen Befehl aus, um die Iso auf Ihren Computer herunterzuladen

note: type: Block title
en: zsync in Windows
de: zsync unter Windows

note: type: Plain text
en: There is a Windows port of zsync. It works as a console application. It can be downloaded from:
de: Es gibt eine Windows-Portierung von zsync. Sie funktioniert als Konsolenanwendung. Sie kann heruntergeladen werden von:

note: type: Title ===
en: Verify the image
de: Überprüfen des Abbilds

note: type: Plain text
en: (This step is unnecessary if you used zsync)
de: (Dieser Schritt ist nicht erforderlich, wenn Sie zsync verwendet haben)

note: type: Plain text
en: After downloading, verify the checksum of the image to ensure integrity.
de: Überprüfen Sie nach dem Herunterladen die Prüfsumme des Bildes, um die Integrität sicherzustellen.

note: type: Plain text
en: Then compare to these checksums
de: Vergleichen Sie dann mit diesen Prüfsummen

note: type: Block title
en: Verify md5sum on Windows or Mac
de: Überprüfen Sie md5sum auf Windows oder Mac

note: type: Plain text
en: Windows and Mac OS X do not come with an md5sum program, but there are alternatives.  More information can be found at: https://help.ubuntu.com/community/HowToMD5SUM[How To MD5SUM]
de: Windows und Mac OS X werden nicht mit einem md5sum-Programm ausgeliefert, aber es gibt Alternativen.  Weitere Informationen finden Sie unter: https://help.ubuntu.com/community/HowToMD5SUM[How To MD5SUM]

note: type: Title ==
en: Write the image to a bootable device
de: Schreiben des Abbilds auf ein bootfähiges Gerät

note: type: Plain text
en: The Raspberry Pi image is a completes SD card image and should be written to an SD card in https://www.raspberrypi.org/documentation/installation/installing-images/README.md[the normal way].
de: Das Raspbery Pi-Image ist ein komplettes SD-Karten-Image und sollte auf eine SD-Karte in https://www.raspberrypi.org/documentation/installation/installing-images/README.md[der normale Weg] geschrieben werden.

note: type: Plain text
en: The LinuxCNC Live/Install ISO Image is a hybrid ISO image which can be written directly to a USB storage device (flash drive) or a DVD and used to boot a computer. The image is too large to fit on a CD.
de: Das LinuxCNC Live/Install-ISO-Image ist ein hybrides ISO-Image, das direkt auf ein USB-Speichergerät (Flash-Laufwerk) oder eine DVD geschrieben und zum Booten eines Computers verwendet werden kann. Das Image ist zu groß, um auf eine CD zu passen.

note: type: Block title
en: Writing the image to a USB storage device in Linux
de: Schreiben des Images auf ein USB-Speichergerät unter Linux

note: type: Plain text
en: Connect a USB storage device (for example a flash drive or thumb drive type device).
de: Schließen Sie ein USB-Speichergerät an (z. B. ein Flash-Laufwerk oder ein Gerät vom Typ Thumb Drive).

note: type: Plain text
en: Determine the device file corresponding to the USB flash drive.  This information can be found in the output of `dmesg` after connecting the device.  `/proc/partitions` may also be helpful.
de: Ermitteln Sie die Gerätedatei, die dem USB-Flash-Laufwerk entspricht.  Diese Information finden Sie in der Ausgabe von `dmesg`, nachdem Sie das Gerät angeschlossen haben.  `/proc/partitions` kann ebenfalls hilfreich sein.

note: type: Plain text
en: Use the `dd` command to write the image to your USB storage device.  For example, if your storage device showed up as `/dev/sde`, then use this command:
de: Verwenden Sie den Befehl `dd`, um das Image auf Ihr USB-Speichergerät zu schreiben.  Wenn Ihr Speichergerät zum Beispiel als `/dev/sde` angezeigt wird, verwenden Sie diesen Befehl:

note: type: Block title
en: Writing the image to a USB storage device in Mac OSX
de: Schreiben des Abbilds auf ein USB-Speichergerät unter Mac OSX

note: type: Plain text
en: Insert the USB and note the name of the new disk that appears, eg /dev/disk5
de: Stecken Sie den USB-Stick ein und notieren Sie sich den Namen der neuen Festplatte, die angezeigt wird, z. B. /dev/disk5

note: type: Plain text
en: unmount the USB. The number found above should be substituted in place of the N
de: trennen Sie den USB-Anschluss. Die oben gefundene Zahl sollte anstelle des N ersetzt werden

note: type: Plain text
en: Transfer the data with dd, as for Linux above. Note that the disk name has an added "r" at the beginning
de: Übertragen Sie die Daten mit dd, wie oben für Linux beschrieben. Beachten Sie, dass der Datenträgername ein "r" am Anfang hat

note: type: Plain text
en: Note that this may take a long time to complete and there will be no feedback during the process.
de: Bitte beachten Sie, dass dieser Vorgang sehr lange dauern kann und dass Sie während des Vorgangs keine Rückmeldung erhalten.

note: type: Block title
en: Writing the image to a DVD in Linux
de: Schreiben des Abbilds auf eine DVD unter Linux

note: type: Plain text
en: Insert a blank DVD into your burner. A 'CD/DVD Creator' or 'Choose Disc Type' window will pop up. Close this, as we will not be using it.
de: Legen Sie einen DVD-Rohling in Ihren Brenner ein. Ein Fenster "CD/DVD Creator" oder "Disc-Typ auswählen" wird angezeigt. Schließen Sie es, da wir es nicht verwenden werden.

note: type: Plain text
en: Browse to the downloaded image in the file browser.
de: Suchen Sie das heruntergeladene Bild im Dateibrowser.

note: type: Plain text
en: Right click on the ISO image file and choose Write to Disc.
de: Klicken Sie mit der rechten Maustaste auf die ISO-Image-Datei und wählen Sie Write to Disc.

note: type: Plain text
en: Select the write speed. It is recommended that you write at the lowest possible speed.
de: Wählen Sie die Schreibgeschwindigkeit. Es wird empfohlen, mit der niedrigstmöglichen Geschwindigkeit zu schreiben.

note: type: Plain text
en: Start the burning process.
de: Starten Sie den Brennvorgang.

note: type: Plain text
en: If a 'choose a file name for the disc image' window pops up, just pick OK.
de: Wenn ein Fenster "Wählen Sie einen Dateinamen für das Disk-Image" erscheint, wählen Sie einfach OK.

note: type: Block title
en: Writing the image to a DVD in Windows
de: Schreiben des Abbilds auf eine DVD unter Windows

note: type: Plain text
en: Download and install Infra Recorder, a free and open source image burning program: http://infrarecorder.org/
de: Laden Sie Infra Recorder, ein kostenloses und quelloffenes Bildbrennprogramm, herunter und installieren Sie es: http://infrarecorder.org/

note: type: Plain text
en: Insert a blank CD in the drive and select Do nothing or Cancel if an auto-run dialog pops up.
de: Legen Sie eine leere CD in das Laufwerk ein und wählen Sie Nichts tun oder Abbrechen, wenn ein Dialogfeld für die automatische Ausführung erscheint.

note: type: Plain text
en: Open Infra Recorder, and select the 'Actions' menu, then 'Burn image'.
de: Öffnen Sie Infra Recorder, wählen Sie das Menü "Aktionen" und dann "Bild brennen".

note: type: Block title
en: Writing the image to a DVD in Mac OSX
de: Schreiben des Abbilds auf eine DVD unter Mac OSX

note: type: Plain text
en: Download the .iso file
de: Die .iso-Datei herunterladen

note: type: Plain text
en: Right-click on the file in the Finder window and select "Burn to disc" (The option to burn to disc will only appear if the machine has an optical drive fitted or connected)
de: Klicken Sie mit der rechten Maustaste auf die Datei im Finder-Fenster und wählen Sie "Auf einen Datenträger brennen" (die Option zum Brennen auf einen Datenträger wird nur angezeigt, wenn der Computer über ein optisches Laufwerk verfügt oder angeschlossen ist)

note: type: Title ==
en: Testing LinuxCNC
de: Testen von LinuxCNC

note: type: Plain text
en: With the USB storage device plugged in or the DVD in the DVD drive, shut down the computer then turn the computer back on. This will boot the computer from the Live/Install Image and choose the Live boot option.
de: Schalten Sie den Computer mit dem angeschlossenen USB-Speichergerät oder der DVD im DVD-Laufwerk aus und schalten Sie ihn dann wieder ein. Dadurch wird der Computer vom Live/Installationsabbild gebootet und die Option Live-Boot gewählt.

note: type: Plain text
en: If the system does not boot from the DVD or USB stick it might be necessary to change the boot order in the PC BIOS.
de: Wenn das System nicht von der DVD oder dem USB-Stick bootet, kann es erforderlich sein, die Bootreihenfolge im PC-BIOS zu ändern.

note: type: Plain text
en: Once the computer has booted up you can try out LinuxCNC without installing it. You can not create custom configurations or modify most system settings in a Live session, but you can (and should) run the latency test.
de: Sobald der Computer hochgefahren ist, können Sie LinuxCNC ausprobieren, ohne es zu installieren. Sie können keine benutzerdefinierten Konfigurationen erstellen oder ändern die meisten Systemeinstellungen in einer Live-Sitzung, aber Sie können (und sollten) den Latenz-Test durchführen.

note: type: Plain text
en: To try out LinuxCNC: from the Applications/CNC menu pick LinuxCNC. A dialog box will open from which you can choose one of many sample configurations. At this point it only really makes sense to pick a "sim" configuration. Some of the sample configurations include onscreen 3D simulated machines, look for "Vismach" to see these.
de: Um LinuxCNC auszuprobieren: Wählen Sie aus dem Menü Anwendungen/CNC den Eintrag LinuxCNC. Es öffnet sich ein Dialogfeld, aus dem Sie eine von vielen Beispielkonfigurationen auswählen können. An diesem Punkt ist es nur wirklich sinnvoll, eine "sim" Konfiguration zu wählen. Einige der Beispielkonfigurationen enthalten auf dem Bildschirm 3D simulierte Maschinen, suchen Sie nach "Vismach", um diese zu sehen.

note: type: Plain text
en: To see if your computer is suitable for software step pulse generation run the Latency Test as shown <<sec:latency-test,here>>.
de: Um festzustellen, ob Ihr Computer für die Erzeugung von Software-Schrittimpulsen geeignet ist, führen Sie den Latenztest wie folgt aus: <<sec:latency-test,here>>.

note: type: Plain text
en: At the time of writing the Live-Image is only available with the preempt-rt kernel and a matching LinuxCNC. On some hardware this might not offer good enough latency. There is an experimental version available using the RTAI realtime kernel which will often give better latency.
de: Zum Zeitpunkt des Schreibens der Live-Image ist nur mit dem preempt-rt Kernel und einem passenden LinuxCNC verfügbar. Auf mancher Hardware bietet dies möglicherweise keine ausreichende Latenzzeit. Es gibt eine experimentelle Version, die den RTAI-Echtzeit-Kernel verwendet, der oft eine bessere Latenzzeit bietet.

note: type: Title ==
en: Installing LinuxCNC
de: LinuxCNC installieren

note: type: Plain text
en: To install LinuxCNC from the LiveCD select 'Install (Graphical)' at bootup.
de: Um LinuxCNC von der LiveCD zu installieren, wählen Sie beim Booten "Install (Graphical)".

note: type: Title ==
en: Updates to LinuxCNC(((Updates to LinuxCNC)))
de: Updates für LinuxCNC(((Updates für LinuxCNC)))

note: type: Plain text
en: With the normal install the Update Manager will notify you of updates to LinuxCNC when you go on line and allow you to easily upgrade with no Linux knowledge needed.  It is OK to upgrade everything except the operating system when asked to.
de: Mit der normalen Installation der Update-Manager wird Sie über Updates zu LinuxCNC, wenn Sie online gehen und ermöglichen es Ihnen, einfach zu aktualisieren, ohne Linux Kenntnisse erforderlich.  Es ist OK, alles außer dem Betriebssystem zu aktualisieren, wenn gefragt.

note: type: Plain text
en: Do not upgrade the operating system if prompted to do so. You should accept OS _updates_ however, especially security updates.
de: Aktualisieren Sie das Betriebssystem nicht, wenn Sie dazu aufgefordert werden. Sie sollten jedoch Betriebssystem _Aktualisierungen_ akzeptieren, insbesondere Sicherheitsaktualisierungen.

note: type: Title ==
en: Install Problems(((LinuxCNC:Installation Problems)))(((Installation:Problems)))
de: Probleme bei der Installation(((LinuxCNC:Installationsprobleme)))(((Installation:Probleme)))

note: type: Plain text
en: In rare cases you might have to reset the BIOS to default settings if during the Live CD install it cannot recognize the hard drive during the boot up.
de: In seltenen Fällen kann es vorkommen, dass Sie das BIOS auf die Standardeinstellungen zurücksetzen müssen, wenn während der Live-CD-Installation die Festplatte beim Booten nicht erkannt wird.

note: type: Title ==
en: Alternate Install Methods(((LinuxCNC:Alternate Install Methods)))(((Installation:Alternate Methods)))
de: Alternative Installationsmethoden(((LinuxCNC:Alternative Installationsmethoden)))(((Installation:Alternative Methoden)))

note: type: Plain text
en: The easiest, preferred way to install LinuxCNC is to use the Live/Install Image as described above.  That method is as simple and reliable as we can make it, and is suitable for novice users and experienced users alike.  However, this will typically replace any existing operating system.
de: Der einfachste und bevorzugte Weg, LinuxCNC zu installieren, ist die Verwendung des Live/Installations-Images wie oben beschrieben.  Diese Methode ist so einfach und zuverlässig, wie wir es machen können, und ist für Anfänger und erfahrene Benutzer gleichermaßen geeignet.  Allerdings wird dies in der Regel ersetzen alle bestehenden Betriebssystem.

note: type: Plain text
en: In addition, for experienced users who are familiar with Debian system administration (finding install images, manipulating apt sources, changing kernel flavors, etc), new installs are supported on following platforms: ("amd64" means "64-bit", and is not specific to AMD processors, it will run on any 64-bit x86 system)
de: Zusätzlich werden für erfahrene Benutzer, die mit der Debian-Systemadministration vertraut sind (Installations-Images finden, apt-Quellen manipulieren, Kernel-Flavors ändern usw.), Neuinstallationen auf den folgenden Plattformen unterstützt: ("amd64" bedeutet "64-bit" und ist nicht spezifisch für AMD-Prozessoren, es läuft auf jedem 64-bit x86-System)

note: type: Table
en: Architecture
de: Architektur

note: type: Table
en: Package name
de: Paket-Name

note: type: Table
en: Typical use
de: Typische Verwendung

note: type: Table
en: Stock
de: LinuxCNC direkt nach der Installation

note: type: Table
en: simulation only
de: nur Simulation

note: type: Table
en: machine control & simulation
de: Maschinensteuerung und -simulation

note: type: Table
en: machine control (known issues)
de: Maschinensteuerung (bekannte Probleme)

note: type: Plain text
en: LinuxCNC v2.8 is not supported on Ubuntu Lucid or older.
de: LinuxCNC v2.8 wird auf Ubuntu Lucid oder älter nicht unterstützt.

note: type: Block title
en: Preempt-RT kernels
de: Preempt-RT-Kernel

note: type: Plain text
en: The Preempt-rt kernels are available for Debian from the regular debian.org archive. The preempt-rt kernel for RaspBerry Pi is available from the LinuxCNC repository.  The package is called `linux-image-rt-*` Simply install the package in the same way as any other package from the Synaptic Package manager or with apt-get at the command-line.
de: Die Preempt-rt-Kernel sind für Debian aus dem regulären debian.org-Archiv verfügbar. Der preempt-rt Kernel für RaspBerry Pi ist im LinuxCNC Repository verfügbar.  Das Paket heißt `linux-image-rt-*` Installieren Sie das Paket einfach wie jedes andere Paket über den Synaptic-Paketmanager oder mit apt-get über die Kommandozeile.

note: type: Block title
en: RTAI Kernels
de: RTAI-Kernel

note: type: Plain text
en: The RTAI kernels are available for download from the linuxcnc.org debian archive.  The apt source is:
de: Die RTAI-Kernel stehen im linuxcnc.org-Debian-Archiv zum Download bereit.  Die apt-Quelle ist:

note: type: Plain text
en: Debian Wheezy and Ubuntu Precise are both extremely old, and are out of their support period. It is strongly advised not to use either for a new install, and to seriously consider upgrading an existing installation.
de: Debian Wheezy und Ubuntu Precise sind beide sehr alt und haben ihren Supportzeitraum hinter sich. Es wird dringend davon abgeraten, beide für eine Neuinstallation zu verwenden und ein Upgrade einer bestehenden Installation ernsthaft in Betracht zu ziehen.

note: type: Plain text
en: The Buster / RTAI package is only available on amd64, but there are very few surviving systems that can not run a 64-bit OS.
de: Das Buster/RTAI-Paket ist nur für amd64 verfügbar, aber es gibt nur sehr wenige überlebende Systeme, die nicht mit einem 64-Bit-Betriebssystem arbeiten können.

note: type: Plain text
en: There are known issues with the 64-bit RTAI 5.2 kernel with this version of LinuxCNC. The system will occasionally lock solid.  However, this has, so far, been seen only during system exit. While running the system appears to be stable. But should nevertheless be considered experimental at this point.
de: Es gibt bekannte Probleme mit dem 64-Bit RTAI 5.2 Kernel mit dieser Version von LinuxCNC. Das System wird gelegentlich einfrieren.  Allerdings hat dies bisher nur beim Beenden des Systems gesehen worden. Während des Betriebs scheint das System stabil zu sein. Dennoch sollte es an dieser Stelle als experimentell betrachtet werden.

note: type: Plain text
en: If you decide to use the RTAI 5.2 kernel and see a problem outside the circumstances described above then please report it immediately to the project developers.
de: Wenn Sie sich entscheiden, den RTAI 5.2-Kernel zu verwenden und ein Problem außerhalb der oben beschriebenen Umstände feststellen, melden Sie es bitte umgehend den Projektentwicklern.

note: type: Title ===
en: Installing on Debian Buster (with Preempt-RT kernel)
de: Installation auf Debian Buster (mit Preempt-RT-Kernel)

note: type: Plain text
en: Install Debian Buster (Debian 10), amd64 version. You can download the installer here: https://www.debian.org/releases/buster/
de: Installieren Sie Debian Buster (Debian 10), Version amd64. Sie können das Installationsprogramm hier herunterladen: https://www.debian.org/releases/buster/

note: type: Plain text
en: After burning the iso and booting up if you don't want Gnome desktop select 'Advanced Options' > 'Alternative desktop environments' and pick the one you like.
de: Wenn Sie nach dem Brennen der Iso und dem Booten den Gnome-Desktop nicht möchten, wählen Sie "Erweiterte Optionen" > "Alternative Desktop-Umgebungen" und wählen Sie die gewünschte aus.

note: type: Plain text
en: Then select 'Install' or 'Graphical Install'.
de: Wählen Sie dann „Installieren“ oder „Grafische Installation“.

note: type: Plain text
en: Do not enter a root password, if you do sudo is disabled and you won't be able to complete the following steps.
de: Geben Sie kein root-Passwort ein, da sonst sudo deaktiviert ist und Sie die folgenden Schritte nicht ausführen können.

note: type: Plain text
en: Run the following in a <<faq:terminal,terminal>> to bring the machine up to date with the latest packages.
de: Führen Sie das Folgende in einem <<faq:terminal,Terminal>> aus, um den Rechner auf den neuesten Stand der Pakete zu bringen.

note: type: Plain text
en: Re-boot, and select the Linux 4.19.0-9-rt-amd64 kernel. This might be hidden in the "Advanced options for Debian Buster" sub-menu in Grub.  When you log in, verify that `PREEMPT RT`is reported by the following command.
de: Starten Sie neu und wählen Sie den Linux-Kernel 4.19.0-9-rt-amd64. Dies könnte im Untermenü "Erweiterte Optionen für Debian Buster" in Grub versteckt sein.  Wenn Sie sich anmelden, überprüfen Sie, ob `PREEMPT RT` durch den folgenden Befehl gemeldet wird.

note: type: Plain text
en: Open Applications Menu > System > Synaptic Package Manager search for 'linux-image' and right click on the original non-rt and select 'Mark for Complete Removal'. Reboot.  This is to force the system to boot from the RT kernel. If you prefer to retain both kernels then the other kernels need not be deleted, but grub boot configuration changes will be needed beyond the scope of this document.
de: Öffnen Sie Menü Anwendungen > System > Synaptic Package Manager, suchen Sie nach 'linux-image' und klicken Sie mit der rechten Maustaste auf das ursprüngliche Nicht-rt und wählen Sie "Zur vollständigen Entfernung markieren". Neu starten.  Damit wird das System gezwungen, vom RT-Kernel zu booten. Wenn Sie es vorziehen, beide Kernel beizubehalten, müssen die anderen Kernel nicht gelöscht werden, aber es sind Änderungen an der Grub-Boot-Konfiguration erforderlich, die den Rahmen dieses Dokuments sprengen.

note: type: Plain text
en: Add the LinuxCNC Archive Signing Key to your apt keyring by running
de: Fügen Sie den LinuxCNC Archive Signing Key zu Ihrem apt keyring hinzu, indem Sie

note: type: Plain text
en: Add the apt repository:
de: Fügen Sie das apt-Repository hinzu:

note: type: Plain text
en: Update the package list from linuxcnc.org
de: Aktualisieren Sie die Paketliste von linuxcnc.org

note: type: Plain text
en: Install uspace (a reboot may be required prior to installing uspace)
de: Installieren Sie uspace (vor der Installation von uspace kann ein Neustart erforderlich sein)

note: type: Plain text
en: Optionally you can install mesaflash if you are using a Mesa card.
de: Optional können Sie Mesaflash installieren, wenn Sie eine Mesa-Karte verwenden.

note: type: Title ===
en: Installing on Debian Buster (with experimental RTAI kernel)
de: Installation unter Debian Buster (mit experimentellem RTAI-Kernel)

note: type: Plain text
en: This kernel has known stability problems. It appears to run reliably once LinuxCNC is loaded. However kernel panics have been seen at system shut-down.
de: Dieser Kernel hat bekannte Stabilitätsprobleme. Er scheint zuverlässig zu laufen, sobald LinuxCNC geladen ist. Allerdings wurden Kernel-Panics beim Herunterfahren des Systems gesehen.

note: type: Plain text
en: This kernel and LinuxCNC version can be installed on top of the LiveDVD install, or alternatively on a fresh Install of Debian Buster 64-bit as described above
de: Dieser Kernel und die LinuxCNC-Version können auf der LiveDVD-Installation installiert werden, oder alternativ auf einer neuen Installation von Debian Buster 64-bit, wie oben beschrieben

note: type: Plain text
en: Add the LinuxCNC Archive Signing Key to your apt keyring (Not necessary if switching the realtime mode of a LinuxCNC Live-CD image)
de: Fügen Sie den LinuxCNC Archive Signing Key zu Ihrem apt Keyring hinzu (nicht notwendig, wenn Sie den Echtzeitmodus eines LinuxCNC Live-CD-Images umschalten)

note: type: delimited block -
en: # Alternate keyserver: keyserver.ubuntu.com
    sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef
de: # Alternativer Schlüsselserver: keyserver.ubuntu.com
    sudo apt-key adv --keyserver hkp://keys.openpgp.org --recv-key 3cb9fd148f374fef

note: type: Plain text
en: Install the new realtime kernel, RTAI and the rtai version of linuxcnc
de: Installieren Sie den neuen Echtzeit-Kernel, RTAI und die rtai-Version von linuxcnc

note: type: Plain text
en: Install the RTAI application layer
de: Installation der RTAI-Anwendungsschicht

note: type: Plain text
en: Install LinuxCNC (may be necessary to reboot before installing)
de: Installieren Sie LinuxCNC (eventuell ist ein Neustart vor der Installation erforderlich)

note: type: Plain text
en: Reboot the machine, ensuring that the system boots from the new 4.19.195-rtai kernel.
de: Starten Sie den Rechner neu und stellen Sie sicher, dass das System mit dem neuen Kernel 4.19.195-rtai bootet.

note: type: Title ===
en: Installing on Raspbian 10
de: Installieren auf Raspbian 10

note: type: Plain text
en: Download a stock Raspbian image to an SD card and install in the https://www.raspberrypi.org/documentation/installation/installing-images/README.md[usual way]
de: Laden Sie ein Standard-Raspbian-Image auf eine SD-Karte herunter und installieren Sie es auf die https://www.raspberrypi.org/documentation/installation/installing-images/README.md[übliche Weise]

note: type: Plain text
en: Boot the Pi and open a terminal
de: Starten Sie den Pi und öffnen Sie ein Terminal

note: type: Plain text
en: Add the LinuxCNC Archive Signing Key to your apt keyring
de: Fügen Sie den LinuxCNC Archive Signing Key zu Ihrem apt Schlüsselbund hinzu

note: type: Plain text
en: install the realtime kernel
de: den Echtzeit-Kernel installieren

note: type: Plain text
en: Install linuxcnc (a reboot may be required prior to installing)
de: Installieren Sie linuxcnc (vor der Installation kann ein Neustart erforderlich sein)

note: type: Title ===
en: Installing on Ubuntu Precise
de: Installieren unter Ubuntu Precise

note: type: Plain text
en: Install Ubuntu Precise 12.04 x86 (32-bit). Any flavor should work (regular Ubuntu, Xubuntu, Lubuntu, etc). 64-bit (AMD64)  is currently not supported. You can download the installer here: http://releases.ubuntu.com/precise/ Note the warnings that this release is out of support. But it is a way to install LinuxCNC with a well-tested RTAI kernel.
de: Installieren Sie Ubuntu Precise 12.04 x86 (32-bit). Jede Variante sollte funktionieren (normales Ubuntu, Xubuntu, Lubuntu, etc.). 64-Bit (AMD64) wird derzeit nicht unterstützt. Sie können das Installationsprogramm hier herunterladen: http://releases.ubuntu.com/precise/ Beachten Sie die Warnungen, dass diese Version nicht mehr unterstützt wird. Aber es ist ein Weg, um LinuxCNC mit einem gut getesteten RTAI-Kernel zu installieren.

note: type: Plain text
en: Run the following to bring the machine up to date with the latest packages in Ubuntu Precise.
de: Führen Sie die folgenden Schritte aus, um den Rechner mit den neuesten Paketen in Ubuntu Precise auf den neuesten Stand zu bringen.

note: type: Plain text
en: Add a new apt source
de: Hinzufügen einer neuen Apt-Quelle

note: type: Plain text
en: Fetch the package list from linuxcnc.org.
de: Holen Sie die Paketliste von linuxcnc.org.

note: type: Plain text
en: Install the RTAI kernel and modules by running
de: Installieren Sie den RTAI-Kernel und die Module durch Ausführen von

note: type: Plain text
en: If you want to be able to build LinuxCNC from source using the git repo, also run
de: Wenn Sie in der Lage sein wollen, LinuxCNC aus dem Quellcode zu bauen, indem Sie das Git Repo benutzen, führen Sie auch aus

note: type: Plain text
en: Reboot, and make sure you boot into the rtai kernel. When you log in, verify that the kernel name is 3.4-9-rtai-686-pae.
de: Starten Sie neu und vergewissern Sie sich, dass Sie mit dem rtai-Kernel booten. Wenn Sie sich anmelden, stellen Sie sicher, dass der Kernel-Name 3.4-9-rtai-686-pae lautet.

note: type: Plain text
en: Run
de: Ausführen

note: type: Title =
en: Running LinuxCNC(((Running LinuxCNC)))
de: Ausführen von LinuxCNC(((Ausführen von LinuxCNC)))

note: type: Title ==
en: Invoking LinuxCNC
de: Aufrufen von LinuxCNC

note: type: Plain text
en: After installation, LinuxCNC starts just like any other Linux program: run it from the <<faq:terminal,terminal>> by issuing the command 'linuxcnc', or select it in the 'Applications -> CNC' menu.
de: Nach der Installation startet LinuxCNC wie jedes andere Linux-Programm: Führen Sie es aus dem <<faq:terminal,terminal>> aus, indem Sie den Befehl 'linuxcnc' eingeben, oder wählen Sie es im Menü 'Anwendungen -> CNC' aus.

note: type: Title ==
en: Configuration Launcher(((Configuration Launcher)))
de: Konfigurationsstarter(((Konfigurationsstarter)))

note: type: Plain text
en: When starting LinuxCNC (from the CNC menu or from the command line without specifying an INI file) the Configuration Selector dialog starts.
de: Beim Starten von LinuxCNC (aus dem CNC-Menü oder von der Kommandozeile ohne Angabe einer INI-Datei) startet der Dialog Kofigurations-Auswahl.

note: type: Plain text
en: The Configuration Selector dialog allows the user to pick one of their existing configurations (My Configurations) or select a new one (from the Sample Configurations) to be copied to their home directory. Copied configurations will appear under My Configurations on the next invocation of the Configuration Selector.
de: Im Dialogfeld "Konfigurationsauswahl" kann der Benutzer eine seiner vorhandenen Konfigurationen (Meine Konfigurationen) oder eine neue Konfiguration (aus den Beispielkonfigurationen) auswählen, die in sein Home-Verzeichnis kopiert werden soll. Die kopierten Konfigurationen werden beim nächsten Aufruf der Konfigurationsauswahl unter Meine Konfigurationen angezeigt.

note: type: Plain text
en: The Configuration Selector offers a selection of configurations organized:
de: Der Konfigurations Selector bietet eine Auswahl an Konfigurationen:

note: type: Plain text
en: 'My Configurations' - User configurations located in linuxcnc/configs in your home directory.
de: 'Meine Konfigurationen' - Benutzerkonfigurationen in linuxcnc/configs in Ihrem Home-Verzeichnis.

note: type: Plain text
en: 'Sample Configurations' - Sample configurations, when selected, are copied to linuxcnc/configs.  Once a sample configuration was copied to your local directory, the launcher will offer it as 'My Configurations'.  The names under which these local configurations are presented correspond to the names of the directories within the configs/ directory:
de: 'Beispielkonfigurationen' - Beispielkonfigurationen werden, wenn ausgewählt, nach linuxcnc/configs kopiert. Sobald eine Beispielkonfiguration in Ihr lokales Verzeichnis kopiert wurde, bietet der Launcher sie als „Meine Konfigurationen“ an. Die Namen, unter denen diese lokalen Konfigurationen angezeigt werden, entsprechen den Namen der Verzeichnisse innerhalb des Verzeichnisses configs/:

note: type: Plain text
en: 'sim' - Configurations that include simulated hardware.  These can be used for testing or learning how LinuxCNC works.
de: 'sim' - Konfigurationen, die simulierte Hardware enthalten.  Diese können zum Testen oder Lernen, wie LinuxCNC funktioniert, verwendet werden.

note: type: Plain text
en: 'by_interface' - Configurations organized by GUI.
de: by_interface' - Konfigurationen nach GUI geordnet.

note: type: Plain text
en: 'by_machine' - Configurations organized by machine.
de: 'by_machine' - Konfigurationen organisiert nach Maschine.

note: type: Plain text
en: 'apps' - Applications that do not require starting linuxcnc but may be useful for testing or trying applications like <<cha:pyvcp,PyVCP>> or <<cha:glade-vcp,GladeVCP>>.
de: 'apps' - Anwendungen, die kein Starten von linuxcnc erfordern, aber zum Testen oder Ausprobieren von Anwendungen wie <<cha:pyvcp,PyVCP>> oder <<cha:glade-vcp,GladeVCP>> nützlich sein können.

note: type: Plain text
en: 'attic' - Obsolete or historical configurations.
de: 'attic' - Veraltete oder historische Konfigurationen.

note: type: Plain text
en: The sim configurations are often the most useful starting point for new users and are organized around supported GUIs:
de: Die Simulationskonfigurationen sind oft der nützlichste Ausgangspunkt für neue Benutzer und sind nach unterstützten GUIs organisiert:

note: type: Plain text
en: 'axis' - Keyboard and Mouse GUI
de: 'axis' - Tastatur- und Maus-GUI

note: type: Plain text
en: 'gmoccapy' - Touch Screen GUI
de: 'gmoccapy' - Touchscreen-GUI

note: type: Plain text
en: 'gscreen' - Touch Screen GUI
de: 'gscreen' - Touchscreen-GUI

note: type: Plain text
en: 'low_graphics' - Keyboard GUI
de: 'low_graphics' - Tastatur-GUI

note: type: Plain text
en: 'pyvcp_demo' - Paneles de Control Virtuales Python
de: pyvcp_demo' - Virtuelle Kontrolltafeln Python

note: type: Plain text
en: 'qtvcp_screens' - Guis diseñadas con Qt5 y Python
de: 'qtvcp_screens' - Mit Qt5 und Python erstellte Anleitungen

note: type: Plain text
en: 'tklinuxcnc' - Keyboard and Mouse Gui(no longer maintained)
de: 'tklinuxcnc' - Tastatur- und Maus-Gui (wird nicht mehr gepflegt)

note: type: Plain text
en: 'touchy' - Touch Screen GUI
de: 'touchy' - Touchscreen-GUI

note: type: Plain text
en: A GUI configuration directory may contain subdirectories with configurations that illustrate special situations or the embedding of other applications.
de: Ein GUI-Konfigurationsverzeichnis kann Unterverzeichnisse mit Konfigurationen enthalten, die spezielle Situationen oder die Einbettung anderer Anwendungen veranschaulichen.

note: type: Plain text
en: The 'by_interface' configurations are organized around common, supported interfaces like:
de: Die 'by_interface'-Konfigurationen sind um gängige, unterstützte Schnittstellen herum organisiert:

note: type: Plain text
en: general mechatronics
de: allgemeine Mechatronik

note: type: Plain text
en: Related hardware may be required to use these configurations as starting points for a system.
de: Um diese Konfigurationen als Ausgangspunkt für ein System zu verwenden, kann entsprechende Hardware erforderlich sein.

note: type: Plain text
en: The 'by_machine' configurations are organized around complete, known systems like:
de: Die 'by_machine'-Konfigurationen sind um vollständige, bekannte Systeme herum organisiert:

note: type: Plain text
en: A complete system may be required to use these configurations.
de: Für die Verwendung dieser Konfigurationen kann ein komplettes System erforderlich sein.

note: type: Plain text
en: The 'apps items' are typically 1) utilities that don't require starting linuxcnc or 2) demonstrations of applications that can be used with linuxcnc:
de: Die 'Apps-Elemente' sind normalerweise 1) Dienstprogramme, die kein Starten von linuxcnc erfordern, oder 2) Demonstrationen von Anwendungen, die mit linuxcnc verwendet werden können:

note: type: Plain text
en: info - creates a file with system information that may be useful for problem diagnosis.
de: info - erstellt eine Datei mit Systeminformationen, die für die Problemdiagnose nützlich sein können.

note: type: Plain text
en: gladevcp - Example GladeVCP applications.
de: gladevcp - Beispiele für GladeVCP-Anwendungen.

note: type: Plain text
en: halrun - Starts halrun in an <<faq:terminal,terminal>>.
de: halrun - Startet halrun in einem <<faq:terminal,Terminal>>.

note: type: Plain text
en: latency - Applications to investigate latency
de: latency - Anwendungen zur Untersuchung der Latenz

note: type: Plain text
en: latency-test - standard test
de: latency-test - Standard-Test zur Bestimmung der Latenz

note: type: Plain text
en: latency-plot - stripchart
de: latency-plot - Streifendiagramm

note: type: Plain text
en: latency-histogram - histogram
de: latency-histogram - Histogram

note: type: Plain text
en: parport - Applications to test parport.
de: parport - Anwendungen zum Testen von parport.

note: type: Plain text
en: pyvcp - Example pyvcp applications.
de: pyvcp - Beispiele für pyvcp-Anwendungen.

note: type: Plain text
en: xhc-hb04 - Applications to test an xhc-hb04 USB wireless MPG
de: xhc-hb04 – Anwendungen zum Testen eines drahtlosen USB-MPG xhc-hb04

note: type: Plain text
en: Under the Apps directory, only applications that are usefully modified by the user are offered for copying to the user's directory.
de: Im Verzeichnis Apps werden nur Anwendungen zum Kopieren in das Benutzerverzeichnis angeboten, die vom Benutzer sinnvollerweise geändert werden.

note: .Configuration Selector type: Positional ($1) AttributeList argument for macro 'image'
en: LinuxCNC Configuration Selector
de: LinuxCNC-Konfigurationsauswahl

note: type: Plain text
en: Click any of the listed configurations to display specific information about it.  Double-click a configuration or click OK to start the configuration.
de: Klicken Sie auf eine der aufgelisteten Konfigurationen, um spezifische Informationen zu ihr anzuzeigen.  Doppelklicken Sie auf eine Konfiguration oder klicken Sie auf OK, um die Konfiguration zu starten.

note: type: Plain text
en: Select 'Create Desktop Shortcut' and then click 'OK' to add an icon on the Ubuntu desktop to directly launch this configuration without showing the Configuration Selector screen.
de: Wählen Sie "Desktop-Verknüpfung erstellen" und klicken Sie dann auf "OK", um ein Symbol auf dem Ubuntu-Desktop hinzuzufügen, mit dem diese Konfiguration direkt gestartet wird, ohne dass der Bildschirm "Konfigurationsauswahl" angezeigt wird.

note: type: Plain text
en: When you select a configuration from the Sample Configurations section, it will automatically place a copy of that config in the ~/linuxcnc/configs directory.
de: Wenn Sie eine Konfiguration aus dem Abschnitt Beispielkonfigurationen auswählen, wird automatisch eine Kopie dieser Konfiguration im Verzeichnis ~/linuxcnc/configs abgelegt.

note: type: Title ==
en: Next steps in configuration
de: Nächste Schritte für die Konfiguration

note: type: Plain text
en: After finding the sample configuration that uses the same interface hardware as your machine (or a simulator configuration), and saving a copy to your home directory, you can customize it according to the details of your machine.  Refer to the Integrator Manual for topics on configuration.
de: Nachdem Sie die Beispielkonfiguration gefunden haben, die dieselbe Schnittstellenhardware wie Ihr Rechner verwendet (oder eine Simulatorkonfiguration), und eine Kopie in Ihrem Home-Verzeichnis gespeichert haben, können Sie sie an die Details Ihres Rechners anpassen.  Weitere Informationen zur Konfiguration finden Sie im Integrator-Handbuch.

note: type: Title ==
en: Simulator Configurations
de: Simulator-Konfigurationen

note: type: Plain text
en: All configurations listed under Sample Configurations/sim are intended to run on any computer.  No specific hardware is required and real-time support is not needed.
de: Alle unter Beispielkonfigurationen/Sim aufgeführten Konfigurationen können auf jedem Computer ausgeführt werden.  Es ist keine spezielle Hardware erforderlich und Echtzeitunterstützung ist nicht notwendig.

note: type: Plain text
en: These configurations are useful for studying individual capabilities or options.  The sim configurations are organized according to the graphical user interface used in the demonstration.  The directory for axis contains the most choices and subdirectories because it is the most tested GUI.  The capabilities demonstrated with any specific GUI may be available in other GUIs as well.
de: Diese Konfigurationen sind nützlich, um einzelne Fähigkeiten oder Optionen zu untersuchen.  Die Sim-Konfigurationen sind nach der in der Demonstration verwendeten grafischen Benutzeroberfläche geordnet.  Das Verzeichnis für die Achse enthält die meisten Auswahlmöglichkeiten und Unterverzeichnisse, da es sich um die am häufigsten getestete grafische Benutzeroberfläche handelt.  Die Fähigkeiten, die mit einer bestimmten grafischen Benutzeroberfläche demonstriert werden, sind möglicherweise auch in anderen grafischen Benutzeroberflächen verfügbar.

note: type: Title ==
en: Configuration Resources
de: Konfigurationsressourcen

note: type: Plain text
en: The Configuration Selector copies all files needed for a configuration to a new subdirectory of ~/linuxcnc/configs (equivalently: /home/username/linuxcnc/configs).  Each created directory will include at least one INI file (iniflename.ini)  that is used to describe a specific configuration.
de: Die Konfigurationsauswahl kopiert alle für eine Konfiguration benötigten Dateien in ein neues Unterverzeichnis von ~/linuxcnc/configs (äquivalent: /home/username/linuxcnc/configs).  Jedes erstellte Verzeichnis enthält mindestens eine INI-Datei (iniflename.ini), die zur Beschreibung einer bestimmten Konfiguration verwendet wird.

note: type: Plain text
en: File resources within the copied directory will typically include one or more INI file (filename.ini) for related configurations and a tool table file (toolfilename.tbl).  Additionally, resources may include HAL files (filename.hal, filename.tcl), a README file for describing the directory, and configuration specific information in a text file named after a specific configuration (inifilename.txt).  That latter two files are displayed when using the Configuration Selector.
de: Zu den Dateiressourcen innerhalb des kopierten Verzeichnisses gehören in der Regel eine oder mehrere INI-Dateien (Dateiname.ini) für zugehörige Konfigurationen und eine Werkzeugtabellendatei (Toolfilename.tbl).  Darüber hinaus können die Ressourcen HAL-Dateien (Dateiname.hal, Dateiname.tcl), eine README-Datei zur Beschreibung des Verzeichnisses und konfigurationsbezogene Informationen in einer nach einer bestimmten Konfiguration benannten Textdatei (inifilename.txt) enthalten.  Die beiden letztgenannten Dateien werden angezeigt, wenn Sie die Konfigurationsauswahl verwenden.

note: type: Plain text
en: The supplied sample configurations may specify the parameter HALFILE (filename.hal) in the configuration INI file that are not present in the copied directory because they are found in the system HAL file library.  These files can be copied to the user configuration directory and altered as required by the user for modification or test.  Since the user configuration directory is searched first when finding HAL files, local modifications will then prevail.
de: Die mitgelieferten Beispielkonfigurationen können den Parameter HALFILE (Dateiname.hal) in der Konfigurations-INI-Datei angeben, die im kopierten Verzeichnis nicht vorhanden sind, da sie sich in der HAL-Dateibibliothek des Systems befinden.  Diese Dateien können in das Benutzerkonfigurationsverzeichnis kopiert und nach Bedarf vom Benutzer für Modifikationen oder Tests geändert werden.  Da das Benutzerkonfigurationsverzeichnis bei der Suche nach HAL-Dateien zuerst durchsucht wird, haben lokale Änderungen dann Vorrang.

note: type: Plain text
en: The Configuration selector makes a symbolic link in the user configuration directory (named hallib) that points to the system HAL file library.  This link simplifies copying a library file.  For example, to copy the library core_sim.hal file in order to make local modifications:
de: Der Konfigurationsselektor erstellt einen symbolischen Link im Benutzerkonfigurationsverzeichnis (namens hallib), der auf die System-HAL-Datei-Bibliothek verweist.  Diese Verknüpfung vereinfacht das Kopieren einer Bibliotheksdatei.  Zum Beispiel, um die Bibliotheksdatei core_sim.hal zu kopieren, um lokale Änderungen vorzunehmen:

note: type: Title =
en: System Requirements(((System Requirements)))
de: Systemvoraussetzungen(((Systemvoraussetzungen)))

note: type: Title ==
en: Minimum Requirements
de: Mindestanforderungen

note: type: Plain text
en: The minimum system to run LinuxCNC and Debian / Ubuntu may vary depending on the exact usage. Stepper systems in general require faster threads to generate step pulses than servo systems. You can use the Live-CD to test the software before committing to a permanent installation on a computer.  Keep in mind that the Latency Test numbers are more important than the processor speed for software step generation. More information on the Latency Test is <<sec:latency-test,here>>.  In addition LinuxCNC needs to be run on an operating system that uses a specially modified kernel, see <<sec:kernel_and_version_requirements,Kernel and Version Requirements>>.
de: Das minimale System, um LinuxCNC unter Debian/Ubuntu zu nutzen variiert mit der jeweiligen Anwendung. Stepper-Systeme benötigen im Allgemeinen schnellere Threads, um Schrittimpulse zu erzeugen, als Servo-Systeme. Sie können die Live-CD verwenden, um die Software zu testen, bevor Sie sich für eine permanente Installation auf einem Computer entscheiden.  Beachten Sie, dass die Zahlen des Latenz-Tests für die Software-Schritterzeugung wichtiger sind als die Prozessorgeschwindigkeit. Mehr Informationen über den Latency Test sind <<sec:latency-test,hier>>.  Außerdem muss LinuxCNC auf einem Betriebssystem ausgeführt werden, das einen speziell modifizierten Kernel verwendet, siehe <<sec:kernel_and_version_requirements,Kernel and Version Requirements>>.

note: type: Plain text
en: Additional information is on the LinuxCNC Wiki site: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Hardware_Requirements[Hardware Requirements]
de: Weitere Informationen finden Sie auf der LinuxCNC Wiki Seite: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Hardware_Requirements[Hardware Requirements]

note: type: Plain text
en: LinuxCNC and Debian Linux should run reasonably well on a computer with the following minimum hardware specification. These numbers are not the absolute minimum but will give reasonable performance for most stepper systems.
de: LinuxCNC und Debian Linux sollte einigermaßen gut auf einem Computer mit den folgenden minimalen Hardware-Spezifikationen laufen. Diese Zahlen sind nicht das absolute Minimum, sondern wird eine angemessene Leistung für die meisten Stepper-Systeme geben.

note: type: Plain text
en: 700 MHz x86 processor (1.2 GHz x86 processor recommended) or Raspberry Pi 4 or better.
de: 700 MHz x86-Prozessor (1,2 GHz x86-Prozessor empfohlen) oder Raspberry Pi 4 oder besser.

note: type: Plain text
en: To run LinuxCNC 2.8 and Debian Buster from the LiveCD the system should be 64-bit capable.
de: Um LinuxCNC 2.8 und Debian Buster von der LiveCD auszuführen, sollte das System 64-Bit-fähig sein.

note: type: Plain text
en: 512 MB or more of RAM
de: 512 MB oder mehr RAM

note: type: Plain text
en: 8 GB hard disk
de: 8 GB Festplatte

note: type: Plain text
en: Graphics card capable of at least 1024x768 resolution, which is not using the NVidia or ATI fglrx proprietary drivers. Modern onboard graphic chipsets seem to generally be OK.
de: Grafikkarte mit einer Auflösung von mindestens 1024x768, die nicht die proprietären NVidia- oder ATI-Treiber verwendet. Moderne Onboard-Grafikchipsätze scheinen im Allgemeinen in Ordnung zu sein.

note: type: Plain text
en: A network or Internet connection (not strictly needed, but very useful for updates and for communicating with the LinuxCNC community)
de: Eine Netzwerk- oder Internetverbindung (nicht unbedingt erforderlich, aber sehr nützlich für Updates und für die Kommunikation mit der LinuxCNC-Community)

note: type: Plain text
en: Minimum hardware requirements change as Linux distributions evolve so check the https://www.debian.org/releases/stable/amd64/ch02.en.html[Debian] web site for details on the LiveCD you're using. Older hardware may benefit from selecting an older version of the LiveCD when available.
de: Die Mindestanforderungen an die Hardware ändern sich mit der Weiterentwicklung der Linux-Distributionen, daher sollten Sie sich auf der https://www.debian.org/releases/stable/amd64/ch02.en.html[Debian]-Website über die Details der von Ihnen verwendeten LiveCD informieren. Bei älterer Hardware kann es von Vorteil sein, eine ältere Version der LiveCD zu wählen, wenn diese verfügbar ist.

note: type: Title ==
en: Kernel and Version requirements
de: Kernel- und Versionsanforderungen

note: type: Plain text
en: LinuxCNC requires a kernel modified for realtime use to control real machine hardware. It can, however run on a standard kernel in simulation mode for purposes such as checking G-code, testing config files and learning the system.  To work with these kernel versions there are two versions of LinuxCNC distributed. The package names are "linuxcnc" and "linuxcnc-uspace".
de: LinuxCNC erfordert einen Kernel, der für die Echtzeitnutzung modifiziert wurde, um echte Maschinenhardware zu steuern. Es kann jedoch auf einem Standard-Kernel im Simulationsmodus für Zwecke wie die Überprüfung G-Code, Testen von Konfigurationsdateien und Lernen des Systems laufen.  Um mit diesen Kernel-Versionen arbeiten zu können, werden zwei Versionen von LinuxCNC verteilt. Die Paketnamen sind "linuxcnc" und "linuxcnc-uspace".

note: type: Plain text
en: The realtime kernel options are preempt-rt, RTAI and Xenomai.
de: Die Echtzeit-Kerneloptionen sind preempt-rt, RTAI und Xenomai.

note: type: Plain text
en: You can discover the kernel version of your system with the command:
de: Sie können die Kernel-Version Ihres Systems mit dem folgenden Befehl ermitteln:

note: type: Plain text
en: If you see (as above) `-rt-` in the kernel name then you are running the preempt-rt kernel and should install the "uspace" version of LinuxCNC.  You should also install uspace for "sim" configs on non-realtime kernels
de: Wenn Sie (wie oben) `-rt-` im Kernel-Namen sehen, dann laufen Sie mit dem preempt-rt Kernel und sollten die "uspace" Version von LinuxCNC installieren.  Sie sollten auch uspace für "sim"-Konfigurationen auf Nicht-Echtzeit-Kerneln installieren

note: type: Plain text
en: If you see `-rtai-` in the kernel name then you are running RTAI realtime. See below for the LinuxCNC version to install.
de: Wenn Sie `-rtai-` im Kernel-Namen sehen, dann laufen Sie mit RTAI-Echtzeit. Siehe unten für die LinuxCNC Version zu installieren.

note: type: Title ===
en: Preempt-RT with 'linuxcnc-uspace' package
de: Preempt-RT mit dem Paket 'linuxcnc-uspace'

note: type: Title ===
en: RTAI with 'linuxcnc' package
de: RTAI mit 'linuxcnc'-Paket

note: type: Plain text
en: RTAI has been the mainstay of LinuxCNC distributions for many years. It will generally give the best realtime performance in terms of low latency, but might have poorer peripheral support and not as many screen resolutions. An RTAI kernel is available from the LinuxCNC package repository. If you installed from the Live/Install image then switching kernel and LinuxCNC flavour is described in [Installing-RTAI].
de: RTAI ist seit vielen Jahren die Hauptstütze der LinuxCNC-Distributionen. Es wird in der Regel die beste Echtzeit-Leistung in Bezug auf niedrige Latenz, aber möglicherweise schlechtere Peripherie-Unterstützung und nicht so viele Bildschirmauflösungen haben. Ein RTAI-Kernel ist im LinuxCNC-Paket-Repository verfügbar. Wenn Sie aus dem Live/Install-Image installiert haben, wird der Wechsel zwischen Kernel und LinuxCNC-Flavour in [Installing-RTAI] beschrieben.

note: type: Title ===
en: Xenomai with 'linuxcnc-uspace' package
de: Xenomai mit 'linuxcnc-uspace' Paket

note: type: Plain text
en: Xenomai is also supported, but you will have to find or build the kernel and compile LinuxCNC from source to utilise it.
de: Xenomai wird auch unterstützt, aber Sie müssen den Kernel finden oder bauen und LinuxCNC aus den Quellen kompilieren, um es zu nutzen.

note: type: Title ===
en: RTAI with 'linuxcnc-uspace' package
de: RTAI mit 'linuxcnc-uspace'-Paket

note: type: Plain text
en: It is also possible to run LinuxCNC with RTAI in user-space mode. As with Xenomai you will need to compile from source to do this.
de: Es ist auch möglich, LinuxCNC mit RTAI im User-Space-Modus zu betreiben. Wie bei Xenomai müssen Sie dazu aus dem Quellcode kompilieren.

note: type: Title ==
en: Problematic Hardware
de: Problematische Hardware

note: type: Plain text
en: Laptops are not generally suited to real time software step generation. Again a Latency Test run for an extended time will give you the info you need to determine suitability.
de: Laptops sind im Allgemeinen nicht für die Erzeugung von Softwareschritten in Echtzeit geeignet. Auch hier wird Ihnen ein Latenztest über einen längeren Zeitraum die Informationen liefern, die Sie benötigen, um die Eignung festzustellen.

note: type: Title ===
en: Video Cards
de: Videokarten

note: type: Plain text
en: If your installation pops up with 800 x 600 screen resolution then most likely Debian does not recognize your video card or monitor. This can sometimes be worked-around by installing drivers or creating / editing Xorg.conf files.
de: Wenn Ihre Installation mit einer Bildschirmauflösung von 800 x 600 erscheint, erkennt Debian höchstwahrscheinlich Ihre Grafikkarte oder Ihren Monitor nicht. Dies kann manchmal durch die Installation von Treibern oder die Erstellung/Bearbeitung von Xorg.conf-Dateien umgangen werden.

note: type: Title =
en: Updating LinuxCNC(((Updating LinuxCNC)))
de: Aktualisieren von LinuxCNC(((Aktualisieren von LinuxCNC)))

note: type: Plain text
en: Updating LinuxCNC to a new minor release (ie to a new version in the same stable series, for example from 2.7.0 to 2.7.1) is an automatic process if your PC is connected to the internet. You will see an update prompt after a minor release along with other software updates. If you don't have an internet connection to your PC see <<getting-started:update-no-network,Updating without Network>>.
de: Die Aktualisierung von LinuxCNC auf eine neue Nebenversion (d.h. auf eine neue Version in der gleichen stabilen Serie, z.B. von 2.7.0 auf 2.7.1) ist ein automatischer Prozess, wenn Ihr PC mit dem Internet verbunden ist. Nach einem Minor-Release wird eine Update-Aufforderung zusammen mit anderen Software-Updates angezeigt. Wenn Ihr PC nicht mit dem Internet verbunden ist, lesen Sie bitte <<start:update-no-network,Updating without Network>>.

note: type: Title ==
en: Upgrade to the new version
de: Upgrade auf die neue Version

note: type: Plain text
en: This section describes how to upgrade LinuxCNC from version 2.7 to the new 2.8.0 version.  It assumes that you have an existing 2.7 install that you want to update.
de: Dieser Abschnitt beschreibt, wie Sie LinuxCNC von Version 2.7 auf die neue Version 2.8.0 aktualisieren.  Es wird davon ausgegangen, dass Sie eine bestehende 2.7 Installation haben, die Sie aktualisieren möchten.

note: type: Plain text
en: To upgrade LinuxCNC from a version older than 2.7, you have to first http://linuxcnc.org/docs/2.7/html/getting-started/updating-linuxcnc.html[upgrade your old install to 2.7], then follow these instructions to upgrade to the new version.
de: Um LinuxCNC von einer Version älter als 2.7 zu aktualisieren, müssen Sie zuerst http://linuxcnc.org/docs/2.7/html/getting-started/updating-linuxcnc.html[upgrade your old install to 2.7], dann folgen Sie diesen Anweisungen, um auf die neue Version zu aktualisieren.

note: type: Plain text
en: If you do not have an old version of LinuxCNC to upgrade, then you're best off making a fresh install of the new version as described in the section <<cha:getting-linuxcnc,Getting LinuxCNC>>.
de: Wenn Sie keine alte Version von LinuxCNC zu aktualisieren haben, dann sind Sie am besten aus machen eine frische Installation der neuen Version, wie im Abschnitt <<cha:getting-linuxcnc,LinuxCNC erhalten>> beschrieben.

note: type: Plain text
en: Furthermore, if you are running Ubuntu Precise or Debian Wheezy it is well worth considering making a backup of the "linuxcnc" directory on removable media and performing a <<cha:getting-linuxcnc,clean install of a newer OS and LinuxCNC version>> as these releases were EOL in 2017 and 2018 respectively.  If you are running on Ubuntu Lucid then you will have to do this, as Lucid is no longer supported by LinuxCNC (it was EOL in 2013).
de: Darüber hinaus ist es unter Ubuntu Precise oder Debian Wheezy eine Überlegung wert, ein Backup des "linuxcnc"-Verzeichnisses auf einem Wechselmedium vorzunehmen und eine <<cha:getting-linuxcnc,Neuinstallaion des neuesn Betriebsystems und der LinuxCNC version>> durchzuführen, da diese Versionen des OS 2017 bzw. 2018 ausliefen.  Wenn Sie Ubuntu Lucid nutzen, dann werden Sie dies tun müssen, da Lucid nicht mehr von LinuxCNC unterstützt wird (es war EOL im Jahr 2013).

note: type: Plain text
en: To upgrade major versions like 2.7 to 2.8 when you have a network connection at the machine you need to disable the old linuxcnc.org apt sources in the file /etc/apt/sources.list and add a new linuxcnc.org apt source for 2.7, then upgrade LinuxCNC.
de: Um größere Versionen wie 2.7 auf 2.8 zu aktualisieren, wenn Sie eine Netzwerkverbindung an der Maschine haben, müssen Sie die alten linuxcnc.org Quellen des Paketmanagers 'apt' in der Datei /etc/apt/sources.list deaktivieren und fügen Sie eine neue linuxcnc.org apt Quelle für 2.7 hinzu, um dann mit apt die LinuxCNC-Installation zu aktualisieren.

note: type: Plain text
en: The details will depend on which platform you're running on.  Open a <<faq:terminal,terminal>> then type `lsb_release -ic` to find this information out:
de: Die Details hängen von der Plattform ab, auf der Sie arbeiten.  Öffnen Sie ein <<faq:terminal,terminal>> und geben Sie `lsb_release -ic` ein, um diese Informationen herauszufinden:

note: type: Plain text
en: You should be running on Debian Stretch or Wheezy (as above), or Ubuntu Precise. Packages are also available for Debian Jessie or Debian Buster if you happen to already be running one of those.
de: Sie sollten Debian Stretch oder Wheezy (wie oben) oder Ubuntu Precise verwenden. Es sind auch Pakete für Debian Jessie oder Debian Buster verfügbar, falls Sie bereits eines davon verwenden.

note: type: Plain text
en: You will also need to check which realtime kernel is being used:
de: Sie müssen auch prüfen, welcher Echtzeit-Kernel verwendet wird:

note: type: Title ===
en: Apt Sources Configuration
de: Apt Sources Konfiguration

note: type: Plain text
en: Open the `Software Sources` window. The process for doing this differs slightly on the three supported platforms:
de: Öffnen Sie das Fenster `Software-Quellen`. Die Vorgehensweise ist auf den drei unterstützten Plattformen leicht unterschiedlich:

note: type: Plain text
en: Click on `Applications Menu`, then `System`, then
de: Klicken Sie auf `Anwendungsmenü`, dann `System`, dann

note: type: Plain text
en: `Synaptic Package Manager`.
de: 'Synaptic Paketmanager'.

note: type: Plain text
en: In Synaptic, click on the `Settings` menu, then click `Repositories` to open the `Software Sources` window.
de: Klicken Sie in Synaptic auf das Menü `Einstellungen` und dann auf `Repositories`, um das Fenster `Softwarequellen` zu öffnen.

note: type: Plain text
en: Click on the `Dash Home` icon in the top left.
de: Klicken Sie auf das Symbol "Dash Home" oben links.

note: type: Plain text
en: In the `Search` field, type "software", then click on the `Ubuntu Software Center` icon.
de: Geben Sie in das Feld "Suche" den Begriff "Software" ein und klicken Sie dann auf das Symbol "Ubuntu Software Center".

note: type: Plain text
en: In the Ubuntu Software Center window, click on the `Edit` menu, then click on `Software Sources...` to open the `Software Sources` window.
de: Klicken Sie im Ubuntu Software Center-Fenster auf das Menü "Bearbeiten" und dann auf "Softwarequellen...", um das Fenster "Softwarequellen" zu öffnen.

note: type: Plain text
en: Click the `System` menu, then `Administration`, then `Synaptic Package Manager`.
de: Klicken Sie auf das Menü "System", dann auf "Verwaltung" und dann auf "Synaptic Package Manager".

note: type: Plain text
en: In Synaptic, click on the `Settings` menu, then click on `Repositories` to open the `Software Sources` window.
de: Klicken Sie in Synaptic auf das Menü `Einstellungen` und dann auf `Repositories`, um das Fenster `Softwarequellen` zu öffnen.

note: type: Plain text
en: In the `Software Sources` window, select the `Other Software` tab.
de: Wählen Sie im Fenster "Software-Quellen" die Registerkarte "Andere Software".

note: type: Plain text
en: Delete or un-check all the old linuxcnc.org entries (leave all non-linuxcnc.org lines as they are).
de: Löschen oder deaktivieren Sie alle alten linuxcnc.org-Einträge (lassen Sie alle nicht-linuxcnc.org-Zeilen unverändert).

note: type: Plain text
en: Click the `Add` button and add a new apt line. The line will be slightly different on the different platforms:
de: Klicken Sie auf die Schaltfläche "Hinzufügen" und fügen Sie eine neue apt-Zeile hinzu. Die Zeile wird auf den verschiedenen Plattformen etwas anders aussehen:

note: type: Table
en: Platform
de: Plattform

note: type: Table
en: apt source line
de: apt Quellzeile

note: type: Table
en: Debian Buster - RTAI
de: Debian-Knacker - RTAI

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Setting apt sources
de: Festlegen von apt-Quellen

note: type: Plain text
en: Click `Add Source`, then `Close` in the Software Sources window.  If it pops up a window informing you that the information about available software is out-of-date, click the `Reload` button.
de: Klicken Sie im Fenster "Softwarequellen" auf "Quelle hinzufügen" und dann auf "Schließen".  Wenn ein Fenster angezeigt wird, das Sie darüber informiert, dass die Informationen über die verfügbare Software veraltet sind, klicken Sie auf die Schaltfläche "Neu laden".

note: type: Title ===
en: Upgrading to the new version
de: Upgrade auf die neue Version

note: type: Plain text
en: Now your computer knows where to get the new version of the software, next we need to install it.
de: Da Ihr Computer nun weiß, wo er die neue Version der Software erhält, müssen wir sie nun installieren.

note: type: Plain text
en: The process again differs depending on your platform.
de: Der Prozess unterscheidet sich wiederum je nach Plattform.

note: type: Title ====
en: Debian Wheezy & Stretch and Ubuntu Lucid
de: Debian Wheezy & Stretch und Ubuntu Lucid

note: type: Plain text
en: Debian Wheezy and Stretch both use the Synaptic Package Manager.
de: Debian Wheezy und Stretch verwenden beide den Synaptic Package Manager.

note: type: Plain text
en: Open Synaptic using the instructions in <<_setting_apt_sources,Setting apt sources>> above.
de: Öffnen Sie Synaptic gemäß den Anweisungen in <<_setting_apt_sources,Festlegen der apt sources>> oben.

note: type: Plain text
en: Click the `Reload` button.
de: Klicken Sie auf die Schaltfläche "Neu laden".

note: type: Plain text
en: Use the Search function to search for `linuxcnc`.
de: Verwenden Sie die Suchfunktion, um nach `linuxcnc` zu suchen.

note: type: Plain text
en: The package is called "linuxcnc" for RTAI kernels and "linuxcnc-uspace" for preempt-rt.
de: Das Paket heißt „linuxcnc“ für RTAI-Kernel und „linuxcnc-uspace“ für preempt-rt.

note: type: Plain text
en: Click the check box to mark the new linuxcnc and linuxcnc-doc-* packages for upgrade. The package manager may select a number of additional packages to be installed, to satisfy dependencies that the new linuxcnc package has.
de: Klicken Sie auf das Kontrollkästchen, um die neuen Pakete linuxcnc und linuxcnc-doc-* für ein Upgrade zu markieren. Der Paketmanager kann eine Reihe zusätzlicher Pakete auswählen, die installiert werden sollen, um die Abhängigkeiten zu erfüllen, die das neue linuxcnc-Paket hat.

note: type: Plain text
en: Click the `Apply` button, and let your computer install the new package. The old linuxcnc package will be automatically upgraded to the new one.
de: Klicken Sie auf die Schaltfläche "Anwenden", und lassen Sie Ihren Computer das neue Paket installieren. Das alte linuxcnc-Paket wird automatisch auf das neue Paket aktualisiert.

note: type: Plain text
en: In the `Search` field, type "update", then click on the `Update Manager` icon.
de: Geben Sie in das Feld "Suche" den Begriff "Update" ein und klicken Sie dann auf das Symbol "Update Manager".

note: type: Plain text
en: Click the `Check` button to fetch the list of packages available.
de: Klicken Sie auf die Schaltfläche "Prüfen", um die Liste der verfügbaren Pakete aufzurufen.

note: type: Plain text
en: Click the `Install Updates` button to install the new versions of all packages.
de: Klicken Sie auf die Schaltfläche "Updates installieren", um die neuen Versionen aller Pakete zu installieren.

note: type: Title ==
en: Updating without Network
de: Aktualisieren ohne Netzwerk

note: type: Plain text
en: To update without a network connection you need to download the .deb then install it with dpkg. The .debs can be found in http://linuxcnc.org/dists/ .
de: Um ohne Netzwerkverbindung zu aktualisieren, müssen Sie die .deb-Datei herunterladen und mit dpkg installieren. Die .debs können unter http://linuxcnc.org/dists/ gefunden werden.

note: type: Plain text
en: You have to drill down from the above link to find the correct deb for your installation. Open a <<faq:terminal,terminal>> and type in 'lsb_release -ic' to find the release name of your OS.
de: Sie müssen im obigen Link nach unten gehen, um das richtige Debian Paket (.deb Datei) für Ihre Installation zu finden. Öffnen Sie ein <<faq:terminal,Terminal>> und geben Sie "lsb_release -ic" ein, um den Versions-Bezeichner Ihres Betriebssystems zu finden.

note: type: Plain text
en: Pick the OS from the list then pick the major version you want like 2.8-rt for RTAI or 2.8-rtpreempt for preempt-rt.
de: Wählen Sie das Betriebssystem aus der Liste und dann die gewünschte Hauptversion wie 2.8-rt für RTAI oder 2.8-rtpreempt für preempt-rt.

note: type: Plain text
en: Next pick the type of computer you have: binary-amd64 for any 64-bit x86, binary-i386 for 32 bit, binary-armhf (32bit) or binary-arm64 (64bit) for Raspberry Pi.
de: Wählen Sie als Nächstes den Computertyp aus, den Sie haben: binary-amd64 für jeden 64-Bit-x86, binary-i386 für 32-Bit, binary-armhf (32-Bit) oder binary-arm64 (64-Bit) für Raspberry Pi.

note: type: Plain text
en: Next pick the version you want from the bottom of the list like 'linuxcnc-uspace_2.8.0_amd64.deb' (choose the latest by date).  Download the deb and copy it to your home directory. You can rename the file to something a bit shorter with the file manager like 'linuxcnc_2.8.0.deb' then open a terminal and install it with the package manager with this command:
de: Wählen Sie dann die gewünschte Version am Ende der Liste aus, z.B. 'linuxcnc-uspace_2.8.0_amd64.deb' (wählen Sie die neueste Version nach Datum).  Laden Sie die deb-Datei herunter und kopieren Sie sie in Ihr Home-Verzeichnis. Sie können die Datei mit dem Dateimanager in etwas kürzeres umbenennen, wie z.B. 'linuxcnc_2.8.0.deb', dann öffnen Sie ein Terminal und installieren es mit dem Paketmanager mit diesem Befehl:

note: type: Title ==
en: Updating Configuration Files (for 2.8.x)
de: Aktualisieren von Konfigurationsdateien (für 2.8.x)

note: type: Plain text
en: The new version of LinuxCNC differs from version 2.7 in some ways that may require changes to your machine configuration.
de: Die neue Version von LinuxCNC unterscheidet sich von der Version 2.7 in einigen Punkten, die möglicherweise Änderungen an Ihrer Maschinenkonfiguration erfordern.

note: type: Plain text
en: The main difference is that LinuxCNC no longer makes any assumptions about which joint controls which axis. This change is generally termed "joints-axes" after the name of the development branch where the changes started.  This change has been in development since at least 2010, and has finally been merged.
de: Der Hauptunterschied ist, dass LinuxCNC keine Annahmen mehr darüber macht, welches Gelenk welche Achse steuert. Diese Änderung wird "joint-axes" genannt nach dem Namen des Entwicklungszweigs, in dem die Änderungen ihren Anfang nahmen.  Diese Änderung hat in der Entwicklung seit mindestens 2010 gewesen, und wurde nun letztlich in der 2.8er Release integriert.

note: type: Title ===
en: Distribution Configurations (updates for joints_axes)
de: Verteilungskonfigurationen (Aktualisierungen für joints_axes)

note: type: Plain text
en: The LinuxCNC distribution includes many example configurations organized in directory hierarchies named: by_machine, by_interface, and sim (simulated machines).  These configurations are often used as starting points for making a new configuration, as examples for study, or as complete simulated machines that can run without special hardware or real-time kernels.
de: Die LinuxCNC-Distribution enthält viele Beispielkonfigurationen, die in Verzeichnishierarchien organisiert sind: by_machine, by_interface, und sim (simulierte Maschinen).  Diese Konfigurationen werden oft als Ausgangspunkt für die Erstellung einer neuen Konfiguration, als Beispiele für die Studie, oder als komplette simulierte Maschinen, die ohne spezielle Hardware oder Echtzeit-Kernel ausgeführt werden können.

note: type: Plain text
en: The configuration files in these directory trees have been updated for the changes required for the joints_axes updates.
de: Die Konfigurationsdateien in diesen Verzeichnisbäumen wurden für die für die joints_axes Updates erforderlichen Änderungen aktualisiert.

note: type: Title ===
en: Automatic updates (update_ini script for joints_axes)
de: Automatische Aktualisierungen (update_ini-Skript für joints_axes)

note: type: Plain text
en: Since the joints_axes updates require a number of changes to user INI files and their related HAL files, a script named update_ini is provided to automatically convert user configurations.
de: Da die joints_axes-Updates eine Reihe von Änderungen an den Benutzer-INI-Dateien und den zugehörigen HAL-Dateien erfordern, wird ein Skript namens update_ini bereitgestellt, das die Benutzerkonfigurationen automatisch konvertiert.

note: type: Plain text
en: This script is invoked when a user starts an existing configuration for the first time after updating LinuxCNC. The script searches the user INI file for a [EMC]VERSION item. If this item 1) does not exist, or 2) exists and is set to the historical CVS value "$Revision$", or is a numerical value less than 1.1, then the update_ini script will popup a dialog to offer to edit the user files to create an updated configuration. If the user accepts, the configuration will be updated.
de: Dieses Skript wird aufgerufen, wenn ein Benutzer eine bestehende Konfiguration zum ersten Mal nach der Aktualisierung von LinuxCNC startet. Das Skript sucht in der Benutzer-INI-Datei nach einem [EMC]VERSION-Element. Wenn dieses Element 1) nicht existiert, oder 2) existiert und auf den historischen CVS-Wert "$Revision$" gesetzt ist, oder ein numerischer Wert kleiner als 1.1 ist, dann wird das update_ini Skript einen Dialog öffnen, um anzubieten, die Benutzerdateien zu bearbeiten, um eine aktualisierte Konfiguration zu erstellen. Wenn der Benutzer zustimmt, wird die Konfiguration aktualisiert.

note: type: Plain text
en: For example, if the user configuration is named bigmill.ini, the bigmill.ini file and its local associated HAL files will be edited to incorporate joints_axes changes. All files of the initial configuration will be saved in a new directory named after the original configuration with a ".old" suffix (bigmill.old in the example).
de: Wenn die Benutzerkonfiguration beispielsweise bigmill.ini heißt, werden die Datei bigmill.ini und die mit ihr verbundenen lokalen HAL-Dateien bearbeitet, um die Änderungen an joints_axes zu übernehmen. Alle Dateien der ursprünglichen Konfiguration werden in einem neuen Verzeichnis gespeichert, das nach der ursprünglichen Konfiguration mit dem Suffix ".old" benannt ist (im Beispiel bigmill.old).

note: type: Plain text
en: The update_ini script handles all common user items that are found in basic machines employing identity kinematics.  Less common items used in more complex machines may not be converted automatically.  Examples of complex machine configurations include:
de: Das Skript update_ini behandelt alle gängigen Benutzerelemente, die in einfachen Maschinen mit Identitätskinematik zu finden sind.  Weniger gängige Elemente aus komplexeren Maschinen werden möglicherweise nicht automatisch konvertiert.  Beispiele für komplexe Maschinenkonfigurationen sind:

note: type: Plain text
en: gantries with two joints for an axis
de: Portale mit zwei Gelenken für eine Achse

note: type: Plain text
en: machines with jogwheels
de: Maschinen mit Handsteuerung (engl. jogwheels)

note: type: Plain text
en: robots with non-identity kinematics
de: Roboter mit nicht-identischer Kinematik

note: type: Plain text
en: configurations using haltcl files
de: Konfigurationen mit haltcl-Dateien

note: type: Plain text
en: The following subsections and the section for 'HAL Changes' list items that may require additional user edits to INI or HAL files.
de: In den folgenden Unterabschnitten und im Abschnitt "HAL-Änderungen" werden die Punkte aufgeführt, die zusätzliche Benutzeränderungen an INI- oder HAL-Dateien erfordern können.

note: type: Title ===
en: Multiple Spindle Support
de: Unterstützung mehrerer Spindeln

note: type: Plain text
en: LinuxCNC now supports up to 8 spindles (and can be recompiled for more).  Existing G-code will run without modification and most configurations will default to single spindles. To specify more than one spindle set the [TRAJ]SPINDLES= entry in the INI file *and* include the num_spindles= parameter for the motion module (set with either [EMCMOT]EMCMOT = motmod num_spindles= or included in a HAL file loadrt entry for motmod).
de: LinuxCNC unterstützt nun bis zu 8 Spindeln (und kann für mehr neu kompiliert werden). Bestehender G-Code wird ohne Änderung laufen und die meisten Konfigurationen werden standardmäßig auf einzelne Spindeln. Um mehr als eine Spindel zu spezifizieren, setzen Sie den [TRAJ]SPINDLES= Eintrag in der INI-Datei *und* fügen Sie den num_spindles= Parameter für das Bewegungsmodul ein (gesetzt entweder mit [EMCMOT]EMCMOT = motmod num_spindles= oder in einem HAL-Datei loadrt Eintrag für motmod).

note: type: Plain text
en: The motion module num_spindles= parameter and the [TRAJ]SPINDLES= settings *must* match.
de: Der Parameter num_spindles= des Bewegungsmoduls und die Einstellungen für [TRAJ]SPINDLES= müssen übereinstimmen.

note: type: Plain text
en: The spindle control pin names have been changed to make spindles look more like axes and joints. motion.spindle-speed-out is now spindle.0.speed-out for example. The automatic update script will take care of these changes.  To control extra spindles the G and M-codes which control spindle speed now accept an additional "$" argument, for example M3 $2 to start the third spindle. "$" was chosen to avoid clashes with any existing code letters. It should be possible to create custom G-codes to match any other multi-spindle controller.  See the G-code and M-code manuals for code changes, and man motion for the HAL pin changes.
de: Die Namen der Spindelsteuerungspins wurden geändert, damit die Spindeln mehr wie Achsen und Gelenke aussehen. motion.spindle-speed-out heißt zum Beispiel jetzt spindle.0.speed-out. Das automatische Update-Skript wird diese Änderungen übernehmen.  Um zusätzliche Spindeln zu steuern, akzeptieren die G- und M-Codes, welche die Spindeldrehzahl steuern, jetzt ein zusätzliches "$"-Argument, zum Beispiel M3 $2, um die dritte Spindel zu starten. Es sollte möglich sein, benutzerdefinierte G-Codes zu erstellen, die zu jeder anderen Mehrspindelsteuerung passen.  Siehe die G-Code- und M-Code-Handbücher für Code-Änderungen und man motion für die HAL-Pin-Änderungen.

note: type: Title ===
en: TRAJ velocities, accelerations names
de: TRAJ Geschwindigkeiten, Beschleunigungen Namen

note: type: Plain text
en: With incorporation of joints_axes functionality, some names were changed to clarify available functionality.
de: Mit der Aufnahme der Funktionalität joints_axes wurden einige Namen geändert, um die verfügbare Funktionalität zu verdeutlichen.

note: type: delimited block -
en: was: [TRAJ]MAX_VELOCITY         is: [TRAJ]MAX_LINEAR_VELOCITY
    was: [TRAJ]DEFAULT_VELOCITY     is: [TRAJ]DEFAULT_LINEAR_VELOCITY
de: war: [TRAJ]MAX_VELOCITY ist: [TRAJ]MAX_LINEAR_VELOCITY
    war: [TRAJ]DEFAULT_VELOCITY ist: [TRAJ]DEFAULT_LINEAR_VELOCITY

note: type: delimited block -
en: was: [TRAJ]MAX_ACCELERATION     is: [TRAJ]MAX_LINEAR_ACCELERATION
    was: [TRAJ]DEFAULT_ACCELERATION is: [TRAJ]DEFAULT_LINEAR_ACCELERATION
de: war: [TRAJ]MAX_ACCELERATION ist: [TRAJ]MAX_LINEAR_ACCELERATION
    war: [TRAJ]DEFAULT_ACCELERATION ist: [TRAJ]DEFAULT_LINEAR_ACCELERATION

note: type: Title ===
en: Kinematics modules
de: Kinematik-Module

note: type: Plain text
en: The gentrivkins and gantrykins kinematics modules have been removed as their functionality is now available in the updated trivkins module.
de: Die Kinematikmodule gentrivkins und gantrykins wurden entfernt, da ihre Funktionalität nun im aktualisierten Modul trivkins verfügbar ist.

note: type: Plain text
en: The gentrivkins module has only been available in prior joints_axes branches. To convert, it is necessary to change the name.
de: Das Modul gentrivkins war nur in früheren joints_axes-Zweigen verfügbar. Für die Konvertierung ist es notwendig, den Namen zu ändern.

note: type: Plain text
en: HAL file examples:
de: Beispiele für HAL-Dateien:

note: type: delimited block -
en: was: loadrt gentrivkins
     is: loadrt trivkins
de: war: loadrt gentrivkins
     ist: loadrt trivkins

note: type: delimited block -
en: was: loadrt gentrivkins coordinates=xyyz
     is: loadrt trivkins    coordinates=xyyz
de: war: loadrt gentrivkins koordinaten=xyyz
     ist: loadrt trivkins koordinaten=xyyz

note: type: Plain text
en: Configurations using gantrykins should be updated to use trivkins with the kinstype= parameter set to BOTH (for KINEMATICS_BOTH).
de: Konfigurationen, die gantrykins verwenden, sollten aktualisiert werden, um trivkins zu verwenden, wobei der Parameter kinstype= auf BOTH (für KINEMATICS_BOTH) gesetzt wird.

note: type: Plain text
en: HAL file example:
de: Beispiel einer HAL-Datei:

note: type: delimited block -
en: was: loadrt gantrykins coordinates=xyyz
     is: loadrt trivkins   coordinates=xyyz kinstype=BOTH
de: war: loadrt gantrykins Koordinaten=xyyz
     ist: loadrt trivkins Koordinaten=xyyz kinstype=BOTH

note: type: Plain text
en: See the trivkins man page for additional information ('$ man trivkins')
de: Weitere Informationen finden Sie in der Manpage von trivkins ('$ man trivkins')

note: type: Plain text
en: Note: the most supported usage for specifying kinematics in joints_axes is to set values in the configuration INI file [KINS] section and then reference them within the specified [HAL]HALFILES ( .hal .tcl files). For example:
de: Note: Die am meisten unterstützte Verwendung für die Angabe von Kinematik in joints_axes ist die Festlegung von Werten im Abschnitt [KINS] der Konfigurations-INI-Datei und die anschließende Bezugnahme auf diese Werte innerhalb der angegebenen [HAL]HALFILES ( .hal .tcl-Dateien). Zum Beispiel:

note: type: delimited block -
en: INI file:    [KINS]
                 KINEMATICS = trivkins
                 JOINTS = 3
                 ...
de: INI-Datei:    [KINS]
                KINEMATICS = trivkins
                JOINTS = 3
                ...

note: type: delimited block -
en: HAL file:    loadrt [KINS]KINEMATICS
de: HAL-Datei:    loadrt [KINS]KINEMATICS

note: type: delimited block -
en: haltcl file: loadrt $::KINS(KINEMATICS)
de: haltcl Datei: loadrt $::KINS(KINEMATICS)

note: type: Title ===
en: Lathe Configurations
de: Drehmaschinen-Konfigurationen

note: type: Plain text
en: Prior to joints_axes incorporation, lathes were often configured as if they were three axis (XYZ) machines with an unused axis (Y). This was convenient for sharing HAL files (especially for simulation configs) but required specification of [TRAJ]AXES =3, a 'dummy' AXIS_Y section, and provisions for homing the unused Y coordinate. These arrangements are no longer required or recommended.
de: Vor der Einführung von joints_axes wurden Drehmaschinen oft so konfiguriert, als wären sie dreiachsige (XYZ) Maschinen mit einer unbenutzten Achse (Y). Dies war praktisch für die gemeinsame Nutzung von HAL-Dateien (insbesondere für Simulationskonfigurationen), erforderte jedoch die Angabe von [TRAJ]AXES =3, einen "Dummy"-Abschnitt AXIS_Y und Vorkehrungen für die Referenzierung der unbenutzten Y-Koordinate. Diese Vorkehrungen sind nicht mehr erforderlich oder empfehlenswert.

note: type: Plain text
en: Historical lathe configurations used the default options for the trivkins kinematics module. These default options configure all axis letters (XYZABCUVW). With joints_axes incorporation, a more appropriate kinematics specification sets the coordinates to the exact ones used (XZ) and sets the number of joints accordingly to 2.  There is no need for an INI file [AXIS_Y] section and only two [JOINT_N] sections need be defined.
de: Historische Drehmaschinenkonfigurationen verwendeten die Standardoptionen für das trivkins Kinematikmodul. Diese Standardoptionen konfigurieren alle Achsenbuchstaben (XYZABCUVW). Mit der Einbindung von joints_axes setzt eine geeignetere Kinematik-Spezifikation die Koordinaten auf genau die verwendeten (XZ) und setzt die Anzahl der Gelenke entsprechend auf 2. Es besteht keine Notwendigkeit für einen [AXIS_Y]-Abschnitt in der INI-Datei und es müssen nur zwei [JOINT_N]-Abschnitte definiert werden.

note: type: Plain text
en: Example INI file items for a lathe (only sections relevant to kinematics are shown):
de: Beispiel für INI-Dateien für eine Drehmaschine (es werden nur die für die Kinematik relevanten Abschnitte gezeigt):

note: type: Plain text
en: Note that some simulation configurations may still use the historical lathe configuration precedents.
de: Beachten Sie, dass einige Simulationskonfigurationen möglicherweise noch immer die historischen Drehbankkonfigurationen verwenden.

note: type: Title ===
en: Consistent Joints/Axes specifications
de: Konsistente Gelenke/Achsen-Spezifikationen

note: type: Plain text
en: INI file items that affect joints and axes usage must be consistent.
de: INI-Datei-Elemente für die Verwendung von Gelenken und Achsen müssen konsistent sein.

note: type: Plain text
en: The motion kinematics module typically loaded with '[KINS]KINEMATICS=' must use a number of joints equal to the number specified with '[KINS]JOINTS='.
de: Das Bewegungskinematikmodul, das normalerweise mit '[KINS]KINEMATICS=' geladen wird, muss eine Anzahl von Gelenken verwenden, die der mit '[KINS]JOINTS=' angegebenen Anzahl entspricht.

note: type: Plain text
en: The kinematics module must implement axis letters that are consistent with the specification used by the task module item '[TRAJ]COORDINATES='.
de: Das Kinematikmodul muss Achsenbuchstaben implementieren, die mit der vom Aufgabenmodul verwendeten Spezifikation '[TRAJ]COORDINATES=' übereinstimmen.

note: type: Plain text
en: Three axis Cartesian machine using trivkins (KINEMATICS_IDENTITY):
de: Dreiachsige kartesische Maschine mit trivkins (KINEMATICS_IDENTITY):

note: type: Plain text
en: Two axis lathe using trivkins (KINEMATICS_IDENTITY) with non-consecutive axis letters:
de: Zweiachsige Drehmaschine mit trivkins (KINEMATICS_IDENTITY) mit nicht aufeinanderfolgenden Achsenbuchstaben:

note: type: Plain text
en: Gantry using trivkins with duplicated axis letters and KINEMATICS_BOTH to allow individual joint positioning (for homing):
de: Gantry unter Verwendung von trivkins mit doppelten Achsenbuchstaben und KINEMATICS_BOTH, um eine individuelle Gelenkpositionierung (für die Referenzfahrt) zu ermöglichen:

note: type: Plain text
en: Gantry using trivkins (KINEMATICS_BOTH) with duplicated axis letters and a rotary axis with skipped axis letters (A,B skipped):
de: Gantry mit Trivkins (KINEMATICS_BOTH) mit doppelten Achsenbuchstaben und einer Drehachse mit übersprungenen Achsenbuchstaben (A,B übersprungen):

note: type: Plain text
en: Linear Delta Robot with non-identity kins (KINEMATICS_BOTH) working in Cartesian frame with an additional rotary coordinate:
de: Linearer Delta-Roboter mit nicht-identischen Kins (KINEMATICS_BOTH), der im kartesischen Rahmen mit einer zusätzlichen Drehkoordinate arbeitet:

note: type: Plain text
en: Note: Some general-purpose kinematics modules (like trivkins) implement identity kinematics with support for coordinate specification (axis letters).  Axis letters may be omitted.  Axis letters may be duplicated.  Joints are assigned to axis letters in a defined manner ('$ man trivkins').
de: Note: Einige universelle Kinematikmodule (wie trivkins) implementieren Identitätskinematik mit Unterstützung für Koordinatenangaben (Achsenbuchstaben).  Achsenbuchstaben können weggelassen werden.  Achsenbuchstaben können dupliziert werden.  Gelenke werden den Achsenbuchstaben auf definierte Weise zugewiesen ("$ man trivkins").

note: type: Plain text
en: Note: For trivkins module loading, do not include spaces about the = sign or letters:
de: Note: Für das Laden von trivkins-Modulen dürfen Sie keine Leerzeichen um das =-Zeichen oder Buchstaben einfügen:

note: type: Plain text
en: Note: Custom kinematics modules that implement non-identity kinematics (like lineardeltakins) define machine-specific relationships between a set of coordinates and a set of joints.  Typically, custom kinematics modules compute the joints-axes relationships within the custom module but it is important to use consistent settings for the related INI items: '[KINS]JOINTS' and '[TRAJ]COORDINATES'.  The details will usually be explained in the module man page (for example, '$ man lineardeltakins').
de: Note: Benutzerdefinierte Kinematikmodule, die Nicht-Identitätskinematiken implementieren (wie lineardeltakins), definieren maschinenspezifische Beziehungen zwischen einem Satz von Koordinaten und einem Satz von Gelenken.  Normalerweise berechnen benutzerdefinierte Kinematikmodule die Beziehungen zwischen Gelenken und Achsen innerhalb des benutzerdefinierten Moduls, aber es ist wichtig, konsistente Einstellungen für die zugehörigen INI-Elemente zu verwenden: '[KINS]JOINTS' und '[TRAJ]COORDINATES'.  Die Details werden in der Regel in der Manpage des Moduls erklärt (z.B. '$ man lineardeltakins').

note: type: Title ===
en: Home sequences
de: Referenzierfahrt-Sequenzen

note: type: Plain text
en: *Negative* values may be used for the INI file items
    named [JOINT_n]HOME_SEQUENCE.  Prior to joints_axes incorporation a value
    of -1 or the omission of the item indicated no sequence was applicable.
    Now, only omission of the item is used for that purpose.
    See the chapter: <<cha:homing-configuration,'Homing Configuration'>>
    for more information.
de: *Negative* Werte können für die INI-Datei-Elemente verwendet werden
    mit der Bezeichnung [JOINT_n]HOME_SEQUENCE.  Vor der Aufnahme von joints_axes bedeutete ein Wert
    von -1 oder das Weglassen des Elements an, dass keine Sequenz anwendbar war.
    Jetzt wird nur noch das Weglassen des Eintrags für diesen Zweck verwendet.
    Siehe das Kapitel: <<cha:homing-configuration,'Referenzierfahrt Konfiguration'>>
    für weitere Informationen.

note: type: Title ===
en: Locking rotary indexer (updates for joints_axes)
de: Sperrender (engl. locking) rotierender Indexers (Updates für joints_axes)

note: type: Plain text
en: With joints_axes, an indexer is a joint that can be homed (joint mode)  but must also be unlocked from G-code.  This requires a one-to-one correspondence between a single joint and an axis.
de: Bei joints_axes ist ein Indexer ein Gelenk, das referenziert werden kann (Gelenkmodus), aber auch aus dem G-Code heraus entriegelt werden muss.  Dies erfordert eine Eins-zu-eins-Entsprechung zwischen einem einzelnen Gelenk und einer Achse.

note: type: Plain text
en: Specify the joint number that corresponds to a rotary axis (_L_ = A,B, or C)  with an INI file setting for the axis:
de: Geben Sie die Gelenknummer an, die einer Drehachse (_L_ = A, B oder C) mit einer INI-Datei-Einstellung für die Achse entspricht:

note: type: delimited block -
en: [AXIS_L]LOCKING_INDEXER_JOINT = joint_number_for_indexer
de: [AXIS_L]LOCKING_INDEXER_JOINT = Gelenknummer_für_Indexer

note: type: Plain text
en: Specify that the joint is a locking indexer with an INI file setting for the joint (_N_ is the joint_number_for_indexer):
de: Geben Sie an, dass es sich bei der Verbindung um einen sperrenden (engl. locking) Indexer handelt, indem Sie in der INI-Datei eine Einstellung für die Verbindung vornehmen (_N_ steht für joint_number_for_indexer):

note: type: Plain text
en: HAL pins can be created to coordinate use of a locking indicator joint:
de: Es können HAL Pins erstellt werden, um die Verwendung eines sperrenden (engl. locking) Indikator-Gelenks zu koordinieren:

note: type: delimited block -
en: joint.N.unlock      (BIT output from HAL)
    joint.N.is-unlocked (BIT input  to   HAL)
de: joint.N.unlock (BIT-Ausgang vom HAL)
    joint.N.is-unlocked (BIT-Eingang zum HAL)

note: type: Plain text
en: To create these HAL pins for locking joints, specify all joints that are used as locking indexers with the 'unlock_joints_mask' parameter for the motmod module.  (bit0(LSB)==>joint0, bit1==>joint1, etc.)
de: Um diese HAL-Pins für sperrende Gelenke zu erzeugen, müssen alle Gelenke, die als sperrende Indexer verwendet werden, mit dem Parameter 'unlock_joints_mask' für das motmod-Modul angegeben werden.  (bit0(LSB)==>Gelenk0, bit1==>Gelenk1, usw.)

note: type: Plain text
en: As an example, consider a machine using trivkins kinematics with coordinates XYZB where B is a locking indexer.  For trivkins, joint numbers (starting with 0) are assigned consecutively to the coordinates specified (axis coordinate letters may be omitted).  For this example, X==>joint0, Y==>joint1, Z==>joint2, B==>joint3.  The mask to specify joint 3 is 000001000 (binary) == 0x08 (hexadecimal)
de: Nehmen wir als Beispiel eine Maschine mit einer Trivkins-Kinematik mit den Koordinaten XYZB, wobei B ein Verriegelungsindexer ist.  Bei der Trivkins-Kinematik werden den angegebenen Koordinaten fortlaufend Gelenknummern (beginnend mit 0) zugewiesen (die Buchstaben der Achsenkoordinaten können weggelassen werden).  In diesem Beispiel: X==>Gelenk0, Y==>Gelenk1, Z==>Gelenk2, B==>Gelenk3.  Die Maske zur Angabe von Gelenk 3 ist 000001000 (binär) == 0x08 (hexadezimal)

note: type: Plain text
en: The required INI file entries for this trivkins XYZB example are:
de: Die erforderlichen INI-Datei-Einträge für dieses trivkins XYZB-Beispiel sind:

note: type: Plain text
en: For more complex kinematics, select the joint number as required -- there must be a one-to-one correspondence between the rotary axis and the joint number.
de: Für komplexere Kinematiken wählen Sie die Gelenknummer nach Bedarf aus - es muss eine Eins-zu-Eins-Entsprechung zwischen der Drehachse und der Gelenknummer bestehen.

note: type: Plain text
en: (See the motion man page ('$ man motion') for more information on motmod)
de: (Weitere Informationen zu motmod finden Sie in der motion man-Seite ('$ man motion'))

note: type: Title ===
en: Stricter INI file syntax
de: Strengere INI-Datei Syntax

note: type: Plain text
en: Lines with numeric INI variables are no longer allowed to have trailing text.  In earlier versions of LinuxCNC any text after the number was silently ignored, but as of this version such text is totally disallowed.  This includes hash characters ("#"), which in this position are a part of the value, not a comment character.
de: Zeilen mit numerischen INI-Variablen sind nicht mehr erlaubt, um Text am Ende zu haben.  In früheren Versionen von LinuxCNC wurde jeglicher Text nach der Zahl stillschweigend ignoriert, aber ab dieser Version ist ein solcher Text völlig unzulässig.  Dies schließt Rautezeichen ("#") ein, die in dieser Position ein Teil des Wertes sind, nicht ein Kommentarzeichen.

note: type: Plain text
en: For example, lines like this will no longer be accepted:
de: Beispielsweise werden Zeilen wie diese nicht mehr akzeptiert:

note: type: delimited block -
en: MAX_VELOCITY = 7.5 # This is the max velocity of the axis.
de: MAX_VELOCITY = 7.5 # Dies ist die maximale Geschwindigkeit der Achse.

note: type: Plain text
en: They could be transformed into pairs of lines like this:
de: Sie könnten wie folgt in zwei Zeilen ausgedrückt werden:

note: type: delimited block -
en: # This is the max velocity of the axis.
    MAX_VELOCITY = 7.5
de: # Dies ist die maximale Geschwindigkeit der Achse.
    MAX_VELOCITY = 7.5

note: type: Title ===
en: [TRAJ] settings
de: [TRAJ] Einstellungen

note: type: Plain text
en: In 2.7.x versions, trajectory planning ([TRAJ]) settings included:
de: In den Versionen 2.7.x sind die Einstellungen für die Trajektorien-Planung ([TRAJ]) enthalten:

note: type: Plain text
en: Interim work prepared for distinct linear and angular items by renaming these items as:
de: Zwischenzeitlich wurden Arbeiten für unterschiedliche lineare und winklige Elemente vorbereitet, indem diese Elemente umbenannt wurden:

note: type: Plain text
en: As these abbreviated names were inconsistent with other name conventions and the implementation of the update_ini script, the interim naming has been corrected to use:
de: Da diese abgekürzten Namen nicht mit anderen Namenskonventionen und der Implementierung des update_ini-Skripts übereinstimmten, wurde die vorläufige Namensgebung korrigiert und verwendet:

note: type: Plain text
en: Support for specifying trajectory planning angular default and maximum accelerations has not been implemented.
de: Eine Unterstützung für die Angabe von Winkelvorgaben und Maximalbeschleunigungen bei der Flugbahnplanung wurde nicht implementiert.

note: type: Title ==
en: HAL Changes (updates for joints_axes 2.8.x)
de: HAL Änderungen (Aktualisierungen für joints_axes 2.8.x)

note: type: Title ===
en: Wheel or MPG (manual pulse generator) jogging
de: Joggen mit dem Handrad oder MPG (manueller Impulsgeber)

note: type: Plain text
en: Prior to incorporation of joints_axes updates, wheel jogging was supported in joint mode only and controlled with HAL pins:
de: Vor der Einbindung der joints_axes-Updates wurde das Joggen der Räder nur im Gelenkmodus unterstützt und mit HAL-Pins gesteuert:

note: type: Plain text
en: where 'M' is a number corresponding to an axis letter (0==>X, 1==>Y, etc.)
de: wobei "M" eine Zahl ist, die einem Achsenbuchstaben entspricht (0==>X, 1==>Y, usw.)

note: type: Plain text
en: With incorporation of joints_axes updates, wheel jogging is available for joints in joint mode and for each axis coordinate in teleop mode.  The controlling HAL pins provided are:
de: Durch die Einbindung von joints_axes-Updates ist das Joggen der Räder für Gelenke im Joint-Modus und für jede Achsenkoordinate im Teleop-Modus verfügbar.  Die zur Verfügung stehenden HAL-Pins sind:

note: type: Plain text
en: where _N_ is a joint number and _L_ is an axis letter.
de: wobei _N_ eine Gelenknummer und _L_ ein Achsenbuchstabe ist.

note: type: Plain text
en: To use an MPG in identity kins configurations where there is a one-to-one correspondence of a joint number and an axis letter, it may be convenient to connect the corresponding HAL pins.  For example, if joint 1 corresponds exactly to axis letter y:
de: Um ein Handrad in Identitäts-Kins-Konfigurationen zu verwenden, bei denen es eine Eins-zu-Eins-Entsprechung zwischen einer Gelenknummer und einem Achsenbuchstaben gibt, kann es sinnvoll sein, die entsprechenden HAL-Pins zu verbinden.  Zum Beispiel, wenn Gelenk 1 genau dem Achsenbuchstaben y entspricht:

note: type: Plain text
en: (The signal names jora_1_y_* are examples, names prior to conversion for joints_axes will depend upon the specific configuration details.)
de: (Die Signalnamen jora_1_y_* sind Beispiele, die Namen vor der Konvertierung für joints_axes hängen von den spezifischen Konfigurationsdetails ab.)

note: type: Plain text
en: Configurations with non-identity kinematics and configurations that use duplicated axis letters (for example, gantries using more than one joint for an axis coordinate) will require appropriate independent control logic to support both joint and teleop (world) jogging.
de: Konfigurationen mit nicht identischer Kinematik und Konfigurationen, die doppelte Achsenbuchstaben verwenden (z. B. Portale, die mehr als ein Gelenk für eine Achsenkoordinate verwenden), erfordern eine geeignete unabhängige Steuerlogik, um sowohl die Gelenk- als auch die Teleop-(Welt-)Bewegung zu unterstützen.

note: type: Title ===
en: INI HAL pins
de: INI HAL-Pins

note: type: Plain text
en: HAL pins are created for INI file items for both joints ([JOINT_N]) and axes ([AXIS_L]):
de: HAL-Pins werden für INI-Dateielemente sowohl für Gelenke ([JOINT_N]) als auch für Achsen ([AXIS_L]) erstellt:

note: type: Plain text
en: For _N_ = 0 ... [KINS](JOINTS-1):
de: Für _N_ = 0 ... [KINS](GELENKE-1):

note: type: Plain text
en: For _L_ = x y z a b c u v w:
de: Für _L_ = x y z a b c u v w:

note: type: Plain text
en: In prior versions of LinuxCNC (before joints_axes updates), the HAL pin names `ini._N_.*` referred to axes with 0==>x, 1==>y, etc. (pins were created for all 9 axes). See the man page of 'milltask' for more information.
de: In früheren Versionen von LinuxCNC (vor joints_axes Updates), bezogen sich die HAL-Pin-Namen `ini._N_.*` sich Achsen mit 0==>x, 1==>y, usw. (Pins wurden für alle 9 Achsen erstellt). Weitere Informationen finden Sie in der Manpage von 'milltask'.

note: type: Title ==
en: HAL Changes (Other 2.8.x)
de: HAL Änderungen (Aktualisierungen für joints_axes 2.8.x)

note: type: Plain text
en: The number of names= instances was formerly limited to 16.  Now, for realtime components (loadrt) the instances are assigned dynamically with no built-in limit.  The limit of 16 still applies to names= items for userspace (loadusr) components.
de: Die Anzahl der names=-Instanzen war früher auf 16 begrenzt.  Jetzt werden die Instanzen für Echtzeitkomponenten (loadrt) dynamisch zugewiesen, ohne dass eine Begrenzung eingebaut ist.  Die Begrenzung auf 16 gilt weiterhin für names=-Elemente für Userspace-Komponenten (loadusr).

note: type: Plain text
en: For components using 'personality', the maximum number is now settable by a command line option -P|--personalities.
de: Für Komponenten, die "personality" verwenden, kann die maximale Anzahl nun durch eine Kommandozeilenoption -P|--personalities eingestellt werden.

note: type: Title ===
en: Parameter to Pin changes
de: Parameter zu Pin Änderungen

note: type: Plain text
en: The following HAL output pins were changed from parameters to pins so that they can be connected to signals:
de: Die folgenden HAL-Ausgangspins wurden von Parametern in Pins umgewandelt, so dass sie mit Signalen verbunden werden können:

note: type: delimited block -
en: motion.servo.last-period    (servo last period in clks)
    motion.servo.last-period_ns (kernel-dependent availability)
de: motion.servo.last-period (letzte Periode des Servos in clks)
    motion.servo.last-period_ns (Kernel-abhängige Verfügbarkeit)

note: type: Title ==
en: Interface changes for joints_axes 2.8.x
de: Schnittstellenänderungen für joint_axes 2.8.x

note: type: Title ===
en: Python LinuxCNC module
de: Python LinuxCNC-Modul

note: type: Plain text
en: The jog() interface includes a 'joint-flag' to specify joint (True)  or teleop (False) jogging:
de: Die jog()-Schnittstelle enthält ein 'joint-flag' zur Angabe von joint (True) oder teleop (False) jogging:

note: type: Title ==
en: GUIs (updates for joints_axes 2.8.x)
de: GUIs (Aktualisierungen für joints_axes 2.8.x)

note: type: Title ===
en: Notes on joint/axis jogging, homing, and kinematics
de: Hinweise zu Gelenk/Achsen-Jogging, Referenzfahrt und Kinematik

note: type: Plain text
en: With incorporation of joints_axes updates, LinuxCNC enforces the distinctions of joints and axes (coordinate letters) -- but some GUIs (like the AXIS GUI) may hide some of the distinctions for simple machines.
de: Mit der Aufnahme von joints_axes Updates, erzwingt LinuxCNC die Unterscheidungen von Gelenken und Achsen (Koordinaten Buchstaben) - aber einige GUIs (wie die AXIS GUI) verstecken diese Unterscheidungen für einfache Maschinen.

note: type: Plain text
en: In most cases, you can think of joints as 'motors'.
de: In den meisten Fällen kann man sich die Gelenke als 'Motoren' vorstellen.

note: type: Plain text
en: The relationships between joints and axis coordinates are determined by the mathematical kinematics functions that describe a machine's motion.
de: Die Beziehungen zwischen Gelenken und Achsenkoordinaten werden durch die mathematischen Kinematikfunktionen bestimmt, welche die Bewegung einer Maschine beschreiben.

note: type: Plain text
en: World coordinates (X,Y,Z,A,B,C,U,V,W) are determined by applying 'FORWARD' kinematics operations to joint (motor) positions.
de: Die Weltkoordinaten (X,Y,Z,A,B,C,U,V,W) werden durch die Anwendung von 'FORWARD' Kinematikoperationen auf die Gelenkpositionen (Motor) bestimmt.

note: type: Plain text
en: When moving in world space (e.g., G-code movements) the required joint (motor) positions are determined by applying 'INVERSE' kinematics operations to the coordinates requested for motion in world space.
de: Bei Bewegungen im Weltraum (z. B. G-Code-Bewegungen) werden die erforderlichen Gelenk- (Motor-) Positionen durch Anwendung von 'INVERSE' Kinematikoperationen auf die für die Bewegung im Weltraum angeforderten Koordinaten bestimmt.

note: type: Plain text
en: Moving in world space is possible only 'after' homing.
de: Eine Bewegung im Weltraum ist nur 'nach' der Referenzfahrt möglich.

note: type: Plain text
en: For simple machines (like mills and lathes) there is a one-to-one equivalence of joints and axis coordinate letters.  For example, on an XYZ mill, the relationships are typically: axisX==joint0, axisY==joint1, axisZ=joint2.  This correspondence is characterized as 'IDENTITY' kinematics and the kinematics module used is usually trivkins (trivial kinematics).  (See the trivkins man page '$ man trivkins')
de: Bei einfachen Maschinen (wie Fräsmaschinen und Drehmaschinen) gibt es eine Eins-zu-Eins-Entsprechung von Gelenken und Achsenkoordinatenbuchstaben.  Bei einer XYZ-Fräse beispielsweise lauten die Beziehungen typischerweise: AchseX==Gelenk0, AchseY==Gelenk1, AchseZ=Gelenk2.  Diese Korrespondenz wird als "IDENTITY"-Kinematik bezeichnet und das verwendete Kinematikmodul ist in der Regel trivkins (trivial kinematics).  (Siehe die Manpage von trivkins '$ man trivkins')

note: type: Plain text
en: Joint jogging (by joint number 0,1,...) is used in joint mode (usually used only 'BEFORE' homing).  When homing is completed, the jogging mode is 'AUTOMATICALLY' switched from joint mode to world mode and axis jogging (coordinate letter X,Y,...) is used.  This is appropriate for all G-code moves requested by MDI commands or by G-code programs.
de: Gelenk-Jogging (mit Gelenknummer 0,1,...) wird im Gelenkmodus verwendet (normalerweise nur 'VOR' der Referenzfahrt).  Wenn die Referenzfahrt abgeschlossen ist, wird der Jogging-Modus 'AUTOMATISCH' vom Joint-Modus in den World-Modus umgeschaltet und das Achsen-Jogging (Koordinatenbuchstabe X,Y,...) wird verwendet.  Dies ist für alle G-Code-Bewegungen geeignet, die durch MDI-Befehle oder G-Code-Programme angefordert werden.

note: type: Plain text
en: Although jogging in joint mode is often never required after homing, some GUIs (like AXIS) provide a keyboard shortcut ('$')  to allow toggling between joint and world (teleop) modes for machines that use 'non-IDENTITY' kinematics.
de: Obwohl das Joggen im Gelenkmodus nach der Referenzfahrt oft nicht erforderlich ist, bieten einige GUIs (wie z. B. AXIS) eine Tastenkombination ("$"), mit der bei Maschinen, die eine 'nicht-Idenitäts"-Kinematik verwenden, zwischen Gelenk- und Weltmodus (Teleop) umgeschaltet werden kann.

note: type: Plain text
en: In many common situations, joint jogging is never needed since homing is accomplished using home switches and/or the various homing methods provided by LinuxCNC.  One simply turns on the machine, issues the Home-All command, the machine homes and changes to world mode automatically.  See <<cha:homing-configuration,Homing Configuration>>.
de: In vielen häufigen Situationen ist gleichzeitiges Jogging nicht erforderlich, da die Referenzfahrt mit Referenzpunkt-Schalter durchgeführt wird und/oder die verschiedenen Referenzfahrt-Methoden von LinuxCNC zur Verfügung gestellt werden.  Man schaltet einfach die Maschine ein, gibt den Befehl Referenzfahrt-Alle, die Maschine referenziert und wechselt automatisch in den Weltmodus.  Siehe <<cha:homing-configuration,Referenzfahrt-Konfiguration>>.

note: type: Plain text
en: Machines that do not use home switches may require manual jogging in joint mode before homing each and every joint.  It is also possible to use immediate homing (see the homing docs) for joints that do not require homing to a fixed position.
de: Bei Maschinen, die keine Referenzfahrtschalter verwenden, kann es erforderlich sein, vor der Referenzfahrt jedes einzelnen Gelenk manuell in den Gelenkmodus zu schalten.  Es ist auch möglich, die sofortige Referenzfahrt (siehe Referenzfahrt-Dokumente) für Gelenke zu verwenden, die keine Referenzfahrt zu einer festen Position erfordern.

note: type: Plain text
en: Although a GUI may hide joints/axes distinctions for 'IDENTITY' kinematics machines, it is usually important to complete homing in order to run programs or use features provided by a GUI.
de: Obwohl ein GUI die Unterscheidung zwischen Gelenken und Achsen für "IDENTITY"-Kinematikmaschinen ausblenden kann, ist es in der Regel wichtig, die Referenzfahrt abzuschließen, um Programme auszuführen oder von einer Benutzeroberfläche bereitgestellte Funktionen zu nutzen.

note: type: Plain text
en: By default, the trivkins module declares itself as having 'IDENTITY' kinematics.  The distinctions of joint/world operations can be made visible in the AXIS GUI when using trivkins by setting the kinemetics type to a 'non-IDENTITY' type using 'kinstype=both'.  The 'both' setting indicates that both forward and inverse kinematics functions are available and GUI provisions that hide the distinctions of joints and axis letters should not be employed.  For example, for an xyz configuration, specify:
de: Standardmäßig deklariert sich das trivkins-Modul mit einer 'IDENTITY'-Kinematik.  Die Unterscheidung zwischen Gelenk- und Weltoperationen kann bei der Verwendung von trivkins in der grafischen Benutzeroberfläche von AXIS sichtbar gemacht werden, indem der Kinematik-Typ mit "kinstype=both" auf einen "Nicht-IDENTITY"-Typ gesetzt wird.  Die Einstellung 'both' zeigt an, dass sowohl Vorwärts- als auch Inverskinematikfunktionen verfügbar sind und dass solche GUI-Bestimmungen, die eine Unterscheidung von Gelenken und Achsenbuchstaben verbergen, nicht verwendet werden sollten.  Geben Sie zum Beispiel für eine xyz-Konfiguration an:

note: type: Plain text
en: With this setting, identity kinematics will be used but the AXIS GUI will:
de: Bei dieser Einstellung wird Identitätskinematik verwendet, aber die AXIS-GUI wird:

note: type: Plain text
en: show joint numbers prior to homing
de: Gelenknummern vor Referenzfahrt anzeigen

note: type: Plain text
en: show axis letters after successful homing
de: Achsenbuchstaben nach erfolgreicher Referenzfahrt anzeigen

note: type: Plain text
en: support toggling between joint and teleop modes with the '$' key
de: Unterstützung des Umschaltens zwischen Gelenk- und Teleop-Modus mit der '$'-Taste

note: type: Plain text
en: Halui now supports teleop jogging resulting in some changed pin names and numerous new names for jogging-related pins.
de: Halui unterstützt nun Teleop-Jogging, was zu einigen geänderten Pin-Namen und zahlreichen neuen Namen für Jogging-bezogene Pins führt.

note: type: Plain text
en: See the man page ('$ man halui') for all pin names.
de: In der Manpage ('$ man halui') finden Sie alle Pin-Namen.

note: type: Title ====
en: TELEOP jogging (also called axis or world jogging)
de: TELEOP-Jogging (auch Achsen- oder Welt-Jogging genannt)

note: type: Plain text
en: New pins for teleop jogging are:
de: Neue Pins für Teleop-Jogging sind:

note: type: delimited block -
en: new: halui.axis.L.plus
    new: halui.axis.L.minus
          ... etc.
de: neu: halui.axis.L.plus
    neu: halui.axis.L.minus
          ... usw.

note: type: Plain text
en: where _L_ is a letter corresponding to one of the axis letters specified by [TRAJ]COORDINATES or 'selected' for the axis selected by the halui.axis._L_.select pins.
de: wobei _L_ ein Buchstabe ist, der einem der durch [TRAJ]COORDINATES angegebenen Achsenbuchstaben entspricht, oder 'selected' für die durch die halui.axis._L_.select-Pins ausgewählte Achse.

note: type: Title ====
en: Joint jogging
de: Gemeinsames Joggen

note: type: Plain text
en: All pins for joint jogging were renamed for specificity:
de: Alle Pins für gemeinsames Joggen wurden aus Gründen der Spezifität umbenannt:

note: type: delimited block -
en: was: halui.jog-speed          is: halui.joint.jog-speed
    was: halui.jog-deadband       is: halui.joint.jog-deadband
de: war: halui.jog-speed ist: halui.joint.jog-speed
    war: halui.jog-deadband ist: halui.joint.jog-deadband

note: type: delimited block -
en: was: halui.jog.N.plus         is: halui.joint.N.plus
    was: halui.jog.N.minus        is: halui.joint.N.minus
          ...  etc.                    ... etc.
de: was: halui.jog.N.plus         ist: halui.joint.N.plus
    was: halui.jog.N.minus        ist: halui.joint.N.minus
          ...  usw.                    ... usw.

note: type: Plain text
en: where _N_ is a joint number (0 ... _num_noints_-1) or 'selected' for the joint selected by the halui.joint._N_.select pins.
de: wobei _N_ eine Gelenknummer (0 ... _num_noints_-1) oder 'selected' für das durch die halui.joint._N_.select Pins ausgewählte Gelenk ist.

note: type: Title ====
en: Additional pin renames
de: Zusätzliche Pin-Umbenennungen

note: type: Plain text
en: The HAL pins for 'selected' joints were renamed for consistency with related pins.
de: Die HAL-Pins für "ausgewählte" Gelenke wurden umbenannt, damit sie mit verwandten Pins konsistent sind.

note: type: delimited block -
en: was: halui.joint.selected.is_homed
    is: halui.joint.selected.is-homed
de: war: halui.joint.selected.is_homed
    ist: halui.joint.selected.is-homed

note: type: delimited block -
en: was: halui.joint.selected.on-soft-limit
    is: halui.joint.selected.on-soft-min-limit
de: war: halui.joint.selected.on-soft-limit
    ist: halui.joint.selected.on-soft-min-limit

note: type: Title ====
en: Identity Kinematics
de: Identitäts-Kinematik

note: type: Plain text
en: The AXIS GUI continues to support identity kinematics configurations. This GUI hides the distinctions of axes and joints in order to simplify the display and usage of simple machines.
de: Die AXIS GUI unterstützt weiterhin Identitätskinematik-Konfigurationen. Diese Steuerung verbirgt die Unterscheidung von Achsen und Gelenken, um die Anzeige und Verwendung von einfachen Maschinen zu vereinfachen.

note: type: Title ====
en: Special case kinematics
de: Sonderfall-Kinematiken

note: type: Plain text
en: Some machines, typically gantrys, may use a configuration with more than one joint assigned to an axis letter.  This can be done with the trivkins kinematics module using repeated coordinate letters.  For example, a machine configured with INI settings:
de: Einige Maschinen, typischerweise Gantrys, können eine Konfiguration verwenden, bei der einem Achsenbuchstaben mehr als ein Gelenk zugeordnet ist.  Dies kann mit dem trivkins Kinematikmodul unter Verwendung wiederholter Koordinatenbuchstaben erfolgen.  Beispiel: Eine Maschine, die mit INI-Einstellungen wie folgt konfiguriert ist:

note: type: Plain text
en: This machine, after homing, has a one-to-one correspondence between a single axis letter (Y) and a pair of joints (1,2).  Using 'kinematics=BOTH' allows control of individual joints in joint mode 'if/when required'.
de: Diese Maschine hat nach der Referenzfahrt eine Eins-zu-Eins-Entsprechung zwischen einem einzelnen Achsenbuchstaben (Y) und einem Gelenkpaar (1,2).  Die Verwendung von 'kinematics=BOTH' ermöglicht die Steuerung einzelner Gelenke im Gelenkmodus 'falls erforderlich'.

note: type: Title ====
en: Non-identity kinematics
de: Nicht-Identitäts-Kinematik

note: type: Plain text
en: The AXIS GUI supports configurations using non-identity kinematics with:
de: Die AXIS GUI unterstützt Konfigurationen mit Nicht-Identitäts-Kinematiken:

note: type: Plain text
en: Key binding ('$') to toggle joint or teleop mode
de: Tastenbindung ('$') zum Umschalten des Gelenk- oder Teleop-Modus

note: type: Plain text
en: Preview Tab display of joints or axes according to joint or teleop mode
de: Vorschau Tab-Anzeige von Gelenken oder Achsen je nach Gelenk- oder Teleop-Modus

note: type: Plain text
en: Preview Tab display of 'Home' and 'Limit' icons in joint mode
de: Vorschau Registerkarte mit Anzeige der Symbole "Referenzfahrt" und "Limit" im Gelenk-Modus

note: type: Plain text
en: Preview Tab display of 'All-homed' and 'Any-limit' icons in teleop mode
de: Vorschau Registerkarte Anzeige der Symbole 'Alle Referenziert' (engl. all homed) und 'Beliebiges Limit' (engl. any limit) im Teleop-Modus

note: type: Plain text
en: DRO Tab display of joint or axes according to joint or teleop mode
de: DRO Tab-Anzeige des Gelenks oder der Achsen je nach Gelenk- oder Teleop-Modus

note: type: Plain text
en: Jogging is supported in both joint and teleop motion modes.
de: Jogging wird sowohl im Gelenk- als auch im Teleop-Bewegungsmodus unterstützt.

note: type: Plain text
en: External changes to the joint/teleop motion mode are detected.
de: Externe Änderungen des Bewegungsmodus "Joint/Teleop" werden erkannt.

note: type: Title ====
en: Home icons
de: Referenzpunkt-Symbole

note: type: Plain text
en: For identity kinematics, 'Home' icons are shown for the corresponding (one-to-one) axis letter when a joint is homed.
de: Bei Identitätskinematiken werden "Referenzpunkt" (engl. home)-Symbole für den entsprechenden (eins-zu-eins) Achsenbuchstaben angezeigt, wenn ein Gelenk referenziert ist.

note: type: Plain text
en: For non-identity kinematics, 'Home' icons are shown for individual joints when a joint is homed in joint display mode.  An 'All-homed' icon is displayed for all axis letters when ALL joints are homed in world display mode.
de: Bei Nicht-Identitätskinematiken werden "Referenzpunkt"-Symbole für einzelne Gelenke angezeigt, wenn ein Gelenk im Gelenkanzeigemodus referenziert ist.  Das Symbol "Alle referenziert" wird für alle Achsenbuchstaben angezeigt, wenn ALLE Gelenke im Weltanzeigemodus referenziert sind.

note: type: Title ====
en: Limit icons
de: Grenzwert (engl. limit)-Icons

note: type: Plain text
en: For identity kinematics, 'Limit' icons are shown for the corresponding (one-to-one) axis letter when a joint limit is active.
de: Bei Identitätskinematiken werden "Limit"-Symbole für den entsprechenden (eineindeutigen) Achsenbuchstaben angezeigt, wenn ein Gelenklimit aktiv ist.

note: type: Plain text
en: For non-identity kinematics, 'Limit' icons are shown for individual joints when the joint limit is active in joint display mode.  An 'Any-Limit' icon is displayed if any joint is at a limit in teleop display mode.
de: Bei Nicht-Identitätskinematiken werden "Limit"-Symbole für einzelne Gelenke angezeigt, wenn das Gelenklimit im Gelenkanzeigemodus aktiv ist.  Ein "Any-Limit"-Symbol wird angezeigt, wenn sich ein beliebiges Gelenk im Teleop-Anzeigemodus an einem Limit befindet.

note: type: Title ====
en: Key bindings for a fourth axis
de: Tastenbelegung für eine vierte Achse

note: type: Plain text
en: In the AXIS GUI, jogging keys are assigned to axes in a configurable fashion.  For 3-axis machines, XYZA machines, and lathes the default is the same as in 2.7.  For other machines, the 4 pairs of jogging keys are assigned to the first 4 axes that exist in the order XYZ ABC UVW.  These assignments can be controlled by new INI file directives in the <<sub:ini:sec:display,[DISPLAY] section of the INI file>>.
de: In der AXIS-Bedienoberfläche werden die Jogging-Tasten den Achsen auf eine konfigurierbare Weise zugewiesen.  Für 3-Achsen-Maschinen, XYZA-Maschinen und Drehmaschinen ist die Voreinstellung die gleiche wie in 2.7.  Bei anderen Maschinen werden die 4 Tipptastenpaare den ersten 4 Achsen zugewiesen, die in der Reihenfolge XYZ ABC UVW existieren.  Diese Zuweisungen können durch neue INI-Datei-Direktiven im Abschnitt <<sub:ini:sec:display,[DISPLAY] der INI-Datei>> gesteuert werden.

note: type: Plain text
en: Note that the parameters used for jogging may not be appropriate for both modes for machines with non-identity kinematics.
de: Beachten Sie, dass die für das Jogging verwendeten Parameter bei Maschinen mit nicht identischer Kinematik möglicherweise nicht für beide Modi geeignet sind.

note: type: Plain text
en: The TkkLinuxCNC GUI supports both identity and non-identity kinematics, includes GUI radiobuttons and a key binding ('$') for toggling joint and teleop modes.  External changes to joint or teleop motion mode are detected.  Jogging is supported in both joint and teleop motion modes.  Note that the parameters used for jogging may not be appropriate for both modes for machines with non-identity kinematics.
de: Die TkLinuxCNC-GUI unterstützt sowohl Identitäts- als auch Nicht-Identitätskinematiken, enthält GUI-Radiobuttons und eine Tastenbindung ('$') zum Umschalten zwischen Gelenk- und Teleop-Modus.  Externe Änderungen des Gelenk- oder Teleop-Bewegungsmodus werden erkannt.  Jogging wird sowohl im Gelenk- als auch im Teleop-Bewegungsmodus unterstützt.  Beachten Sie, dass die für das Jogging verwendeten Parameter bei Maschinen mit nicht identischer Kinematik möglicherweise nicht für beide Modi geeignet sind.

note: type: Plain text
en: OpenGL is not used by TkLinuxCNC so it may be used to isolate problems and system dependencies that are exposed with more modern GUIs like AXIS.
de: OpenGL wird von TkLinuxCNC nicht verwendet, so dass es verwendet werden kann, um Probleme und Systemabhängigkeiten zu isolieren, die mit moderneren GUIs wie AXIS offengelegt werden.

note: type: Plain text
en: The rudimentary backplot GUI provided is available for use with identity kinematics (xyz) machine configurations.
de: Die rudimentäre Backplot-GUI ist für die Verwendung mit identischen kinematischen (xyz) Maschinenkonfigurationen verfügbar.

note: type: Title ====
en: emcsh commands
de: emcsh-Befehle

note: type: Plain text
en: The code of emcsh.cc provides the set of Tcl commands used by TkLinuxCNC.  The commands are available to Tcl applications as the Tcl package named 'Linuxcnc'.  A number of commands previously required the use of a numeric argument to specify an axis coordinate (0-->X, 1-->Y, ..., 8-->W).  These commands have been simplified to use an argument that is just the coordinate letter.
de: Der Code von emcsh.cc stellt die von TkLinuxCNC verwendeten Tcl-Befehle bereit.  Die Befehle sind für Tcl-Anwendungen als Tcl-Paket mit dem Namen 'Linuxcnc' verfügbar.  Eine Reihe von Befehlen erforderte bisher die Verwendung eines numerischen Arguments zur Angabe einer Achsenkoordinate (0-->X, 1-->Y, ..., 8-->W).  Diese Befehle wurden vereinfacht, so dass nur noch der Koordinatenbuchstabe als Argument verwendet wird.

note: type: Plain text
en: Commands now using a coordinate letter argument are:
de: Befehle, die jetzt ein Koordinaten-Buchstaben-Argument verwenden, sind:

note: type: Plain text
en: The Touchy GUI continues to support the identity kinematics configurations that it supported prior to joints_axes incorporation.  Jogging is done in teleop mode.
de: Die Touchy-GUI unterstützt weiterhin die Identitätskinematik-Konfigurationen, die sie vor der Integration von joints_axes unterstützt hat.  Joggen wird im Teleop-Modus ausgeführt.

note: type: Plain text
en: The Gscreen GUI continues to support the identity kinematics configurations that it supported prior to joints_axes incorporation.  Jogging is done in teleop mode.
de: Die Gscreen-GUI unterstützt weiterhin die Identitätskinematik-Konfigurationen, die sie vor der Integration von joints_axes unterstützt hat.  Jogging wird im Teleop-Modus durchgeführt.

note: type: Plain text
en: The GMOCCAPY GUI continues to support the identity kinematics configurations that it supported prior to joints_axes incorporation.  Jogging is done in teleop mode.
de: Die GMOCCAPY-GUI unterstützt weiterhin die Identitätskinematik-Konfigurationen, die sie vor der Integration von joints_axes unterstützt hat.  Joggen wird im Teleop-Modus ausgeführt.

note: type: Title ===
en: `shuttlexpress` driver renamed to `shuttle`
de: `shuttlexpress`-Treiber umbenannt in `shuttle`

note: type: Plain text
en: The HAL driver for the Contour Designs ShuttleXpress device has been renamed from "shuttlexpress" to just "shuttle".  If your HAL files include some variant of "loadusr shuttlexpress", replace "shuttlexpress" with "shuttle".
de: Der HAL-Treiber für das Contour Designs ShuttleXpress-Gerät wurde von "shuttlexpress" in einfach "shuttle" umbenannt.  Wenn Ihre HAL-Dateien eine Variante von "loadusr shuttlexpress" enthalten, ersetzen Sie "shuttlexpress" durch "shuttle".

note: type: Plain text
en: Support has been added for the ShuttlePRO, a bigger version of the ShuttleXpress, so the old driver name is no longer accurate.
de: Der ShuttlePRO, eine größere Version des ShuttleXpress, wird nun unterstützt, so dass der alte Treibername nicht mehr korrekt ist.

note: type: Plain text
en: "Home All" is now supported with the set home subcommand by using -1 for the joint number.
de: "Referenzfahrt aller Achsen" (engl. home all) wird jetzt mit dem Unterbefehl "Set Home" (Referenzpunkt setzen) unterstützt, indem -1 für die Gelenknummer verwendet wird.

note: type: Plain text
en: The jogging commands have been altered to accommodate both joint (free)  and teleop (world) jogging.
de: Die Jogging-Befehle wurden geändert, um sowohl das gemeinsame (freie) als auch das Teleop-Jogging (Welt) zu ermöglichen.

note: type: delimited block -
en: was: set jog      joint_number             speed
    is: set jog      joint_number|axis_letter speed
de: war: set jog      joint_number             speed
    ist: set jog      joint_number|axis_letter speed

note: type: delimited block -
en: was: set jog_incr joint_number             speed increment
    is: set jog_incr joint_number|axis_letter speed increment
de: war: set jog_incr joint_number             speed increment
    ist: set jog_incr joint_number|axis_letter speed increment

note: type: delimited block -
en: was: set jog_stop
    is: set jog_stop joint_number|axis_letter
de: war: set jog_stop
    ist: set jog_stop joint_number|axis_letter

note: type: delimited block =
en: Test for teleop mode using command: `get teleop_enable` +
    If TELEOP_ENABLE=YES, use axis_letter; +
    Else                  use joint_number
de: Test auf Teleop-Modus mit dem Befehl: `get teleop_enable` +
    Wenn TELEOP_ENABLE=YES, benutze axis_letter; +
    Andernfalls joint_number verwenden

note: type: Plain text
en: Formerly, the command 'set jog 0 1.234' would jog the zeroth axis (X) with requested speed=1.234 in any mode (free or teleop).  This command now attempts to jog the zeroth joint (Joint0) provided the mode is free (not teleop).  To jog the X axis, the mode must be teleop and the corresponding command is: 'set jog x 1.234'.
de: Früher hat der Befehl 'set jog 0 1.234' die nullte Achse (X) mit der geforderten Geschwindigkeit=1.234 in jedem Modus (frei oder teleop) verfahren.  Dieser Befehl versucht nun, das nullte Gelenk (Joint0) zu verfahren, vorausgesetzt der Modus ist frei (nicht teleop).  Um die X-Achse zu verfahren, muss der Modus teleop sein und der entsprechende Befehl lautet: 'set jog x 1.234'.

note: type: Title ==
en: Tools
de: Werkzeuge (engl. tools)

note: type: Title ===
en: Calibration (emccalib.tcl)
de: Kalibrierung (emccalib.tcl)

note: type: Plain text
en: The calibration/tuning tool now supports stanzas:
de: Das Kalibrierungs-/Tuning-Tool unterstützt jetzt Zeilengruppen (engl. stanzas):

note: type: Plain text
en: where _N_ is a joint number (0 .. ([KINS]JOINTS-1) ), _L_ is an axis coordinate letter (X,Y,Z,A,B,C,U,V,W), and _S_ is a spindle number (0 .. 9).
de: wobei _N_ eine Gelenknummer (0 ... ([KINS]JOINTS-1) ), _L_ ein Achsenkoordinatenbuchstabe (X,Y,Z,A,B,C,U,V,W) und _S_ eine Spindelnummer (0 ... 9) ist.

note: type: Plain text
en: The number of allowed spindles is 8 but legacy configurations may include a stanza [SPINDLE_9] unrelated to an actual spindle number.
de: Die Anzahl der zulässigen Spindeln beträgt 8, aber ältere Konfigurationen können eine Stanza [SPINDLE_9] enthalten, die nicht mit einer tatsächlichen Spindelanzahl in Verbindung steht.

note: type: Plain text
en: The [TUNE] stanza may be used for specifying tunable items not relevant to the other supported stanzas.
de: Die [TUNE]-Zeilengruppe kann zum Angeben von abstimmbaren (engl. tunable) Elementen verwendet werden, die für die anderen unterstützten Zeilengruppen nicht relevant sind.

note: type: Title ==
en: Obsolete Guis (removed for 2.8.x)
de: Veraltete GUIs (entfernt für 2.8.x)

note: type: Plain text
en: The GUIs 'mini', 'keystick', and 'xlinuxcnc' have been removed in conjunction with updates for joints_axes.  All related source code, examples, and documentation are available in the git repository.
de: Die GUIs 'mini', 'keystick' und 'xlinuxcnc' wurden in Verbindung mit Updates für joints_axes entfernt.  Der gesamte zugehörige Quellcode, die Beispiele und die Dokumentation sind im Git-Repository verfügbar.

note: type: Title ==
en: Deprecated Guis (marked at 2.8.x)
de: Veraltete GUIs (markiert bei 2.8.x)

note: type: Plain text
en: The 'linuxcnclcd' GUI is a candidate for removal.  Should this component be removed, all related source code, examples, and documentation will be available in the git repository.
de: Die Benutzeroberfläche 'linuxcnclcd' ist ein Kandidat für die Entfernung.  Sollte diese Komponente entfernt werden, bleiben alle zugehörigen Quellcodes, Beispiele und Dokumentationen im Git-Repository verfügbar.

note: type: Title ==
en: Simulator configurations (updates for joints axes 2.8.x)
de: Simulator-Konfigurationen (Aktualisierungen für Gelenke Achsen 2.8.x)

note: type: Title ===
en: Pre-joints_axes
de: Vor joints_axes

note: type: Plain text
en: Prior to joints_axes incorporation, the HAL files used in sim configs typically supported a common milling machine -- a Cartesian system with trivial kinematics and three axes named 'X Y Z'.  Typical HAL file entries:
de: Vor der Integration von joints_axes unterstützten die in den Sim-Konfigurationen verwendeten HAL-Dateien typischerweise eine gewöhnliche Fräsmaschine - ein kartesisches System mit trivialer Kinematik und drei Achsen mit der Bezeichnung 'X Y Z'.  Typische HAL-Datei-Einträge:

note: type: Plain text
en: Lathe configs often shared the same HAL files and used the expedient method of specifying 3 axes with 'Y' unused.  More complex sim configs provided specific sets of HAL files according to the configuration purpose.
de: Drehbankkonfigurationen hatten oft dieselben HAL-Dateien und verwendeten die zweckmäßige Methode, 3 Achsen mit unbenutztem "Y" anzugeben.  Komplexere Sim-Konfigurationen boten je nach Konfigurationszweck spezifische Sätze von HAL-Dateien.

note: type: Title ===
en: Post-joints_axes
de: Nach joints_axes

note: type: Plain text
en: With the incorporation of joints_axes functionality, many sims provided in the distribution now take advantage of a general purpose HAL file that supports numerous configurations automatically.  A typical sim config HALFILE specification is:
de: Mit der Einbindung der joints_axes-Funktionalität nutzen viele der in der Distribution enthaltenen Simulationen nun die Vorteile einer Allzweck-HAL-Datei, die automatisch zahlreiche Konfigurationen unterstützt.  Eine typische sim config HALFILE-Spezifikation ist:

note: type: Plain text
en: The basic_sim.tcl HALFILE supports a number of commonly required functions for any number of joints as specified by:
de: Die HALFILE basic_sim.tcl unterstützt eine Reihe von häufig benötigten Funktionen für eine beliebige Anzahl von Gelenken, die angegeben werden durch:

note: type: delimited block -
en: [KINS]
    ...
    JOINTS = number_of_joints
    ...
de: [KINS]
    ...
    JOINTS = anzahl_an_gelenken
    ...

note: type: Plain text
en: Functions supported include:
de: Zu den unterstützten Funktionen gehören:

note: type: Plain text
en: 'ddts' -- differentiator HAL components are loaded and connected for each joint (and xy, xyz for trivkins machines)
de: 'ddts' -- die HAL-Komponenten des Differenzierers werden für jedes Gelenk geladen und verbunden (und xy, xyz für Trivkins-Maschinen)

note: type: Plain text
en: 'simulated_home' -- a sim_home_switch HAL component is loaded and connected for each joint.  The homing conditions are specified by the usual [JOINT_n]HOME_* INI file items.
de: 'simulated_home' -- eine sim_home_switch HAL-Komponente wird geladen und für jedes Gelenk verbunden. Die Homing-Bedingungen werden durch die üblichen [JOINT_n]HOME_* INI-Dateielemente spezifiziert.

note: type: Plain text
en: 'use_hal_manualtoolchange' -- the user space hal_manualtoolchange component is loaded and connected.
de: 'use_hal_manualtoolchange' – der Benutzerbereich hal_manualtoolchange Komponente wird geladen und verbunden.

note: type: Plain text
en: 'sim_spindle' -- the sim_spindle component is loaded and connected to additional loaded HAL components to simulate the inertia of a rotating spindle mass.
de: 'sim_spindle' -- die sim_spindle-Komponente wird geladen und mit zusätzlich geladenen HAL-Komponenten verbunden, um die Trägheit einer rotierenden Spindelmasse zu simulieren.

note: type: Plain text
en: The functions are activated by default but can be excluded using options: '-no_make_ddts', '-no_simulated_home', '-no_use_hal_manualtoolchange', '-no_sim_spindle'.
de: Die Funktionen sind standardmäßig aktiviert, können aber mit folgenden Optionen ausgeschlossen werden: '-no_make_ddts', '-no_simulated_home', '-no_use_hal_manualtoolchange', '-no_sim_spindle'.

note: type: Plain text
en: For example, to omit creation of ddts:
de: Um beispielsweise die Erstellung von ddts wegzulassen:

note: type: Plain text
en: Omitting one or more of the core functions allows testing without without the function or addition of new HALFILEs to implement or expand on the functionality.
de: Das Weglassen einer oder mehrerer Kernfunktionen ermöglicht das Testen ohne diese Funktion oder das Hinzufügen neuer HALFILEs zur Implementierung oder Erweiterung der Funktionalität.

note: type: Title ====
en: Equivalent HAL commands file
de: Äquivalente HAL-Befehlsdatei

note: type: Plain text
en: When LIB:basic_sim.tcl is used, an equivalent HAL file is created (in the
    configuration directory) to show the halcmd commands issued.   The file
    name is based on the name of the INI file with '_cmds' appended to
    the basename and a conventional '.hal' file extension. Example:
de: Wenn LIB:basic_sim.tcl verwendet wird, so wird eine entsprechende HAL-Datei erstellt (im
    Konfigurationsverzeichnis) erstellt, um die ausgegebenen halcmd-Befehle anzuzeigen.   Der Name der Datei
    Name basiert auf dem Namen der INI-Datei mit angehängtem '_cmds',
    dem Basisnamen und einer konventionellen '.hal'-Dateierweiterung. Beispiel:

note: type: Plain text
en: The equivalent HAL file supersedes previous instances of files with the same filename.  INI file variables substitutions specified in the INI file and interpreted by halcmd are automatically substituted in the created HAL file.  If there are [HAL]HALFILEs specified before LIB:basic_sim.tcl, their halcmd commands are included too.
de: Die entsprechende HAL-Datei ersetzt frühere Instanzen von Dateien mit demselben Dateinamen. Es werden INI-Datei-Variablen, die in der INI-Datei angegeben und von halcmd interpretiert werden, automatisch in der erstellten HAL-Datei ersetzt.  Wenn es [HAL]HALFILEs gibt, die vor LIB:basic_sim.tcl angegeben sind, so werden deren halcmd Befehle ebenfalls einbezogen.

note: type: Plain text
en: The equivalent HAL file can be used to create a new configuration based on the original configuration made with LIB:basic_sim.tcl with the following steps:
de: Die entsprechende HAL-Datei kann verwendet werden, um eine neue Konfiguration zu erstellen, die auf der mit LIB:basic_sim.tcl erstellten ursprünglichen Konfiguration basiert:

note: type: Plain text
en: Run the simulator configuration to create a new equivalent HAL file, for example: 'example_cmds.hal'.
de: Führen Sie die Simulatorkonfiguration aus, um eine neue äquivalente HAL-Datei zu erstellen, z. B.: "example_cmds.hal".

note: type: Plain text
en: To use this new equivalent HAL file in the original simulator configuration INI file (or a copy of it), edit to change:
de: Um diese neue äquivalente HAL-Datei in der ursprünglichen INI-Datei der Simulatorkonfiguration (oder einer Kopie davon) zu verwenden, bearbeiten Sie sie, um sie zu ändern:

note: type: Plain text
en: to:
de: zu:

note: type: Title ===
en: Notes
de: Anmerkungen

note: type: Plain text
en: All components and connections made by LIB:basic_sim.tcl can be viewed using halcmd.  The entire HAL configuration (except for userspace components loaded with loadusr) can be saved to a file using:
de: Alle von LIB:basic_sim.tcl hergestellten Komponenten und Verbindungen können mit halcmd angezeigt werden.  Die gesamte HAL-Konfiguration (mit Ausnahme der mit loadusr geladenen Userspace-Komponenten) kann mit in einer Datei gespeichert werden:

note: type: Plain text
en: Use of LIB:basic_sim.tcl reduces the effort needed to make a simulation config since it handles most of the required component loading and HAL connections.
de: Die Verwendung von LIB:basic_sim.tcl reduziert den Aufwand für die Erstellung einer Simulationskonfiguration, da sie die meisten der erforderlichen Komponentenladungen und HAL-Verbindungen übernimmt.

note: type: Plain text
en: The sim config 'Sample Configurations/sim/axis/minimal_xyz.ini' demonstrates a working xyz configuration that uses LIB:basic_sim.tcl with a minimal number of INI file settings.
de: Die Sim-Konfiguration 'Sample Configurations/sim/axis/minimal_xyz.ini' demonstriert eine funktionierende xyz-Konfiguration, die LIB:basic_sim.tcl mit einer minimalen Anzahl von INI-Datei-Einstellungen verwendet.

note: type: Title ==
en: Miscellaneous updates for 2.8.x
de: Verschiedene Updates für 2.8.x

note: type: Plain text
en: Commits to unreleased branches may make changes that affect testers and early-adopters of the unreleased software.
de: Commits zu unveröffentlichten Entwicklungs-Zweigen (engl. branches) können Änderungen vornehmen, von denen Tester und early adopters der unveröffentlichten Software profitieren (oder Fehler feststellen).

note: type: Title ===
en: Motion pins
de: Bewegungs-Pins (engl. motion pins)

note: type: Plain text
en: New pins (see the motion man page for more info):
de: Neue Pins (weitere Informationen finden Sie in der Motion-Manpage):

note: type: Title ===
en: HAL pins
de: HAL-Pins

note: type: Plain text
en: Name changes:
de: Namensänderungen:

note: type: delimited block -
en: was: axis.L.vel-cmd
    is:  axis.l.teleop-vel-cmd
de: war: axis.L.vel-cmd
    ist: axis.l.teleop-vel-cmd

note: type: Plain text
en: New pins:
de: Neue Pins:

note: type: delimited block -
en: motion.homing-inhibit (see motion manpage)
de: motion.homing-inhibit (siehe motion manpage)

note: type: Title ===
en: HAL component updates
de: HAL-Komponenten

note: type: Plain text
en: siggen: new pin 'reset' to set output signal values to predefined state
de: siggen: neuer Pin 'reset' zum Setzen von Ausgangssignalwerten auf vordefinierten Zustand

note: type: Plain text
en: biquad: pins 'type,f0,Q,s1,s2' were formerly params
de: biquad: Pins'type,f0,Q,s1,s2' waren zuvor Parameter

note: type: Plain text
en: userkins: template for user-built kinematics modules using halcompile
de: userkins: Vorlage für benutzerdefinierte Kinematikmodule mit halcompile

note: type: Title ===
en: XHC-HB04 Pendant Support
de: XHC-HB04 vorbereitete Unterstützung

note: type: Title ====
en: xhc_hb04_util.comp (helper component)
de: xhc_hb04_util.comp (Hilfskomponente)

note: type: Plain text
en: Remove unused pin 'jogenable-off'.
de: Entfernen Sie den ungenutzten Pin 'jogenable-off'.

note: type: Plain text
en: Add pin 'amux-enable' so that the multiplexed acceleration reductions are now enabled by the ANDing the pins: 'is-manual' and 'amux-enable'.  These two pins are typically connected to 'halui.mode.is-manual' and 'halui.mode.is-teleop' respectively.
de: Fügen Sie den Pin 'amux-enable' hinzu, so dass die gemultiplexten Beschleunigungsreduktionen nun durch die UND-Verknüpfung der Pins 'is-manual' und 'amux-enable' aktiviert werden.  Diese beiden Pins sind normalerweise mit 'halui.mode.is-manual' bzw. 'halui.mode.is-teleop' verbunden.

note: type: Title ====
en: xhc_hb04.tcl (optional LIB configuration HAL file)
de: xhc_hb04.tcl (optionale HAL-Datei für die LIB-Konfiguration)

note: type: Plain text
en: Remove signal pendant:jogenable-off for removed pin 'pendant_util.jogenable-off'.
de: Signal pendant:jogenable-off für entfernten Pin 'pendant_util.jogenable-off' entfernen.

note: type: Plain text
en: Support new motion pins for reduced accelerations (axis._L_.jog-accel-fraction, joint._N_.jog-accel-fraction) for wheel jogging.  The use of [APPLICATIONS]APP=xhc-hb04-accels is no longer supported.  Reduced accels are applied for wheel jogging only (not for nml commands issued by GUIs).
de: Unterstützung neuer Bewegungspins für reduzierte Beschleunigungen (axis._L_.jog-accel-fraction, joint._N_.jog-accel-fraction) für das Joggen der Räder.  Die Verwendung von [APPLICATIONS]APP=xhc-hb04-accels wird nicht mehr unterstützt.  Reduzierte Beschleunigungen werden nur noch für das Rad-Jogging angewendet (nicht für nml-Befehle, die von GUIs ausgegeben werden).

note: type: Title ===
en: XHC-WHB04B-6 pendant support
de: XHC-WHB04B-6 pendant Unterstützung

note: type: Plain text
en: See the documentation for the xhc-whb04b-6 component.
de: Siehe die Dokumentation für die Komponente xhc-whb04b-6.

note: type: Plain text
en: The bldc_hall3 component has been removed. The *bldc* component is more flexible and better tested.
de: Die Komponente bldc_hall3 wurde entfernt. Die Komponente *bldc* ist flexibler und besser getestet.

note: type: Title ===
en: [JOINT_n]HOME_SEQUENCE Starting values
de: [JOINT_n] HOME_SEQUENCE Startwerte

note: type: Plain text
en: Starting sequence values may be 0, 1 (or -1) only.  See the "Homing Configuration" documentation for more information.
de: Die Werte der Startsequenz können nur 0, 1 (oder -1) sein.  Weitere Informationen finden Sie in der Dokumentation zur "Referenzfahrt-Konfiguration".

note: type: Title ===
en: [JOINT_n]HOME_SEQUENCE Negative values
de: [JOINT_n]HOME_SEQUENCE Negative Werte

note: type: Plain text
en: Joints using a negative HOME_SEQUENCE are not allowed to jog in joint mode in order to prevent misalignment (racking) in common gantry configurations.  As always, machines with any kinematics type must be homed prior to enabling conventional world mode jogging.
de: Gelenke mit einer negativen HOME_SEQUENCE dürfen nicht im Gelenkmodus verfahren werden, um eine Fehlausrichtung (Racking) in üblichen Gantry-Konfigurationen zu verhindern.  Wie immer müssen Maschinen mit einem beliebigen Kinematik-Typ vor der Aktivierung des konventionellen Weltmodus-Jogging referenziert werden.

note: type: Title ===
en: TWOPASS support for complex loadrt config= items
de: TWOPASS-Unterstützung für komplexe loadrt config= items

note: type: Plain text
en: Added twopass support for loadrt config modparams with multiple settings separated by blanks and enclosed with quotes.  Example:
de: Twopass-Unterstützung für loadrt config modparams mit mehreren durch Leerzeichen getrennten und in Anführungszeichen eingeschlossenen Einstellungen hinzugefügt.  Beispiel:

note: type: Title ==
en: Changes beyond 2.8.x (master branch development)
de: Änderungen nach 2.8.x (Master-Zweig Entwicklung)

note: type: Plain text
en: The master branch is version-tagged with prerelease notation, typically 2.9~pre*
de: Der Master-Zweig ist mit einer Vorabversion gekennzeichnet, normalerweise 2.9~pre*

note: type: Title ===
en: Python3 and GTK3
de: Python3 und GTK3

note: type: Plain text
en: 2.9 changed to Python3 and GTK3. This only affects you if you have custom glade or Python handlers in your config.
de: 2.9 wurde auf Python3 und GTK3 umgestellt. Dies betrifft Sie nur, wenn Sie benutzerdefinierte Glade- oder Python-Handler in Ihrer Konfiguration haben.

note: type: Plain text
en: Run py3clean in your config directory to remove any temporary files.
de: Führen Sie py3clean in Ihrem Konfigurationsverzeichnis aus, um alle temporären Dateien zu entfernen.

note: type: Plain text
en: Run py3clean in your LinuxCNC source directory if you compile from source.
de: Führen Sie py3clean in Ihrem LinuxCNC-Quellverzeichnis aus, wenn Sie aus den Quellen kompilieren.

note: type: Plain text
en: Run 2to3 -w on any .py files you have written.
de: Führen Sie 2to3 -w für alle .py-Dateien aus, die Sie geschrieben haben.

note: type: Plain text
en: Make sure the interpreter in the first line of the script is Python 3, not Python 2.
de: Stellen Sie sicher, dass der Interpreter in der ersten Zeile des Skripts Python 3 und nicht Python 2 ist.

note: type: Plain text
en: Open the ui file in glade, and save it. It should convert everything that can be converted automatically, and give you warnings.
de: Öffnen Sie die UI-Datei in Glade, und speichern Sie sie. Es sollte alles, was konvertiert werden kann, automatisch konvertieren und Ihnen Warnungen geben.

note: type: Title ===
en: LinuxCNC Startup
de: LinuxCNC-Startup

note: type: Plain text
en: The main script, *linuxcnc*, supports a new option (-H dirname) to specify an additional user-specified directory for HAL files.  This directory is searched before the usual search of 1) the INI directory and 2)the system HAL file library directory.
de: Das Hauptskript *linuxcnc* unterstützt eine neue Option (-H dirname) zur Angabe eines zusätzlichen benutzerdefinierten Verzeichnisses für HAL-Dateien.  Dieses Verzeichnis wird vor der üblichen Suche nach 1) dem INI-Verzeichnis und 2) dem System-HAL-Dateibibliotheksverzeichnis durchsucht.

note: type: Title ===
en: G-code changes
de: G-Code Änderungen

note: type: Plain text
en: G43.2 (additional offsets) now accepts transient offsets to be added by axis words as well as from the tool table.
de: G43.2 (zusätzliche Offsets) akzeptiert nun transiente Offsets, die sowohl durch Achsenwörter als auch aus der Werkzeugtabelle hinzugefügt werden sollen.

note: type: Title ===
en: Configuration Updates
de: Konfigurations-Updates

note: type: Title ===
en: INI file Settings
de: INI-Datei Einstellungen

note: type: Plain text
en: New: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET -- support encoder with index that does not reset upon receipt of index pulse following assertion of index_enable.
de: Neu: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET -- unterstützt Encoder mit einem Index, der bei Empfang eines Indeximpulses nach Aktivierung von index_enable nicht zurückgesetzt wird.

note: type: Plain text
en: axis.py default for [DISPLAY]GEOMETRY was:"XYZBCUVW",is:"XYZABCUVW"
de: axis.py Vorgabe für [DISPLAY]GEOMETRY war: "XYZBCUVW",ist: "XYZABCUVW"

note: type: Title ===
en: Code Updates
de: Code-Aktualisierungen

note: type: Plain text
en: Management of the internal storage of tool data and the communication of same between EMCIO and TASK has been refactored to use memory mapped storage.  Legacy use of nml messages for tooldata is deprecated and may be removed before a new release.
de: Die Verwaltung der internen Speicherung von Werkzeugdaten und die Kommunikation derselben zwischen EMCIO und TASK wurde überarbeitet, so dass nun Memory-Mapped Storage verwendet wird.  Die frühere Verwendung von nml-Nachrichten für Tooldaten ist veraltet und wird möglicherweise vor einer neuen Version entfernt.

note: type: Plain text
en: Code references to the sequential indexes for internal tooldata have been clarified but legacy variable names persist for *selected_pocket* and *current_pocket*.  Variables with these names refer to the sequential index for internal tooldata not an actual pocket number.  These variable names may be renamed in the future and require changes to user-fielded Python remap applications that modify tool handling.
de: Codeverweise auf die sequenziellen Indizes für interne Werkzeugdaten wurden geklärt, aber die alten Variablennamen für *selected_pocket* und *current_pocket* bleiben bestehen.  Variablen mit diesen Namen beziehen sich auf den sequenziellen Index für interne Werkzeugdaten und nicht auf eine tatsächliche Taschennummer.  Diese Variablennamen können in Zukunft umbenannt werden und erfordern Änderungen an benutzerdefinierten Python-Remap-Anwendungen, welche die Handhabung der Werkzeuge ändern.

note: type: Plain text
en: A new optional interface is provided to support management of tool data by an external database application.
de: Eine neue optionale Schnittstelle unterstützt die Verwaltung von Werkzeugdaten durch eine externe Datenbankanwendung.

note: type: Plain text
en: The ioControl_v2.cc file providing the userspace program iov2 has no maintainter and its use is deprecated -- it may be removed before the next release.
de: Die Datei ioControl_v2.cc, die das Userspace-Programm iov2 bereitstellt, hat keinen Maintainer und ihre Verwendung ist veraltet - sie wird möglicherweise vor der nächsten Version entfernt.

note: type: Title ====
en: Reverse Run
de: Rückwärtslauf

note: type: Plain text
en: Support added for reverse run in the trajectory planner, the task, and motion modules, the Python interface, the AXIS GUI, and the test suite.
de: Unterstützung für Rückwärtslauf im Trajektorienplaner, den Aufgaben- und Bewegungsmodulen, der Python-Schnittstelle, der AXIS-GUI und der Test-Suite hinzugefügt.

note: type: Title ====
en: Number of Joints
de: Anzahl der Gelenke

note: type: Plain text
en: The maximum number of joints (EMCMOT_MAX_JOINTS) increased from 9 to 16.  The AXIS GUI now supports display of up to 16 joints.
de: Die maximale Anzahl der Gelenke (EMCMOT_MAX_JOINTS) wurde von 9 auf 16 erhöht.  Die AXIS GUI unterstützt nun die Anzeige von bis zu 16 Gelenken.

note: type: Title ====
en: Extra Joints
de: Extra Gelenke

note: type: Plain text
en: A new motmod parameter (num_extrajoints) specifies joints that are homed by conventional joint homing methods but controlled by new HAL pins (joint._N_.posthome-cmd) after homing.  Such joints may be managed by independent motion planner/controllers in HAL and manipulated from G-code using custom M-codes.  See the motion man page for more info.
de: Ein neuer motmod-Parameter (num_extrajoints) spezifiziert Gelenke, die mit konventionellen Referenzfahrtmethoden angefahren werden, aber nach der Referenzfahrt über neue HAL-Pins (joint._N_.posthome-cmd) gesteuert werden.  Solche Gelenke können von unabhängigen Bewegungsplanern/-controllern in HAL verwaltet und von G-Code aus mit Hilfe von benutzerdefinierten M-Codes manipuliert werden.  Weitere Informationen finden Sie in der Manpage motion.

note: type: Plain text
en: A homing api is provided by src/emc/motion/homing.h to support users' custom homing code that replaces src/emc/motion/homing.c with a user-customized homing.c file.
de: Eine Referenzfahrt (engl. homing)-API wird von src/emc/motion/homing.h bereitgestellt, um benutzerdefinierten Homing-Code zu unterstützen, der src/emc/motion/homing.c durch eine benutzerdefinierte homing.c-Datei ersetzt.

note: type: Content of: <html><body><table><tbody><tr><th>
en: Motion
de: Bewegung (engl. motion)

note: type: Plain text
en: The motion module supports kinematics modules that define new functions kinematicsSwitchable() and kinematicsSwitch() to switch their kinematics type.  A HAL pin, motion.switchkins-type, is provided for use of such kinematics modules.
de: Das Bewegungsmodul unterstützt Kinematikmodule, die neue Funktionen kinematicsSwitchable() und kinematicsSwitch() definieren, um ihren Kinematik-Typ zu wechseln.  Ein HAL-Pin, motion.switchkins-type, ist für die Verwendung solcher Kinematikmodule vorgesehen.

note: type: Plain text
en: Provided kinematics modules that implement kinematics switching use the switchkins.o object to supply the required rtapi_main()  and related functions.  Kinematics modules that do not support kinematics switching use the macro "KINS_NOT_SWITCHABLE" provided by kinematics.h.
de: Kinematikmodule, die Kinematikumschaltung implementieren, verwenden das Objekt switchkins.o, um die erforderlichen rtapi_main() und zugehörige Funktionen bereitzustellen.  Kinematikmodule, die Kinematikumschaltung nicht unterstützen, verwenden das Makro "KINS_NOT_SWITCHABLE", das von kinematics.h bereitgestellt wird.

note: type: Title ====
en: Switchkins Kinematics Modules
de: Switchkins Kinematik-Module

note: type: Plain text
en: Several kinematics modules are now switchable between their eponymous kinematics and an alternate identity kinematics mode.
de: Mehrere Kinematikmodule sind nun zwischen ihrer gleichnamigen Kinematik und einem alternativen Identitätskinematikmodus umschaltbar.

note: type: Plain text
en: Kinematic modules supporting switchkins:
de: Kinematische Module, die Switchkins unterstützen:

note: type: Plain text
en: xyzac-trt-kins table-rotary-tilting (supersedes xyzac-trt-kins)
de: xyzac-trt-kins table-rotary-tilting (ersetzt xyzac-trt-kins)

note: type: Plain text
en: xyzbc-trt-kins table-rotary-tilting (supersedes xyzbc-trt-kins)
de: xyzbc-trt-kins table-rotary-tilting (ersetzt xyzbc-trt-kins)

note: type: Plain text
en: genserkins     generalized serial-link kinematics
de: genserkins verallgemeinerte Kinematik mit seriellen Gliedern

note: type: Plain text
en: genhexkins     generalized hexapod parallel kinematics
de: genhexkins verallgemeinerte parallele Hexapod-Kinematik

note: type: Plain text
en: scarakins      scara robot
de: Scarakins Scara Roboter

note: type: Plain text
en: pumakins       puma robot
de: pumakins puma roboter

note: type: Plain text
en: 5axiskins      bridgemill (xyzbcw 6axes)
de: 5axiskins bridgemill (xyzbcw 6 Achsen)

note: type: Plain text
en: The switchkins modules above (and trivkins) support a coordinates= parameter that optionally specifies an ordered set of coordinate letters that are sequentially assigned to joint numbers (beginning with joint0).
de: Die obigen switchkins-Module (und trivkins) unterstützen einen coordinates=-Parameter, der optional eine geordnete Menge von Koordinatenbuchstaben angibt, die nacheinander Gelenknummern zugeordnet werden (beginnend mit joint0).

note: type: Plain text
en: The switchkins modules above include provisions for compile-time support of an additional user-specified kinematics type identified on the make command line by the userkfuncs environmental variable.  (See src/Makefile)
de: Die obigen switchkins-Module enthalten Vorkehrungen für die Kompilierzeitunterstützung eines zusätzlichen benutzerspezifischen Kinematik-Typs, der in der make-Befehlszeile durch die Umgebungsvariable userkfuncs identifiziert wird.  (Siehe src/Makefile)

note: type: Plain text
en: The userspace test program bin/genserkins has been isolated to a single file (ugenserkins.c) since its original source file (genserkins.c) has been refactored for switchkins support.  The userspace test program has not been actively maintained and its use is deprecated.  The ugenserkins.c file may be removed in the future.
de: Das Userspace-Testprogramm bin/genserkins wurde in eine einzige Datei (ugenserkins.c) isoliert, da die ursprüngliche Quelldatei (genserkins.c) für die Unterstützung von switchkins überarbeitet wurde.  Das Userspace-Testprogramm wurde nicht aktiv gepflegt und seine Verwendung ist veraltet.  Die Datei ugenserkins.c wird möglicherweise in Zukunft entfernt werden.

note: type: Title ====
en: Trajectory Planner
de: Trajektorienplaner

note: type: Plain text
en: The trajectory planner is now implemented as a loadable module (default:tpmod).  An alternate (user-built) planner can be loaded using INI setting [TRAJ]TPMOD= modulename or the 'linuxcnc -t modulename' option.  The example file src/hal/components/tpcomp.com illustrates a method for creating a module using halcompile.
de: Der Trajektorienplaner ist jetzt als ladbares Modul implementiert (Standard:tpmod).  Ein alternativer (vom Benutzer erstellter) Planer kann mit der INI-Einstellung [TRAJ]TPMOD= modulename oder der Option 'linuxcnc -t modulename' geladen werden.  Die Beispieldatei src/hal/components/tpcomp.com illustriert eine Methode zur Erstellung eines Moduls mit halcompile.

note: type: Plain text
en: Homing functions are now implemented by a loadable module (default:homemod).  An alternate (user-built) planner can be loaded using INI setting [EMCMOT]HOMEMOD=modulename or the 'linuxcnc -m modulename' option.  The example file src/hal/components/homecomp.comp is a minimal example of a homing module that can be built with halcompile.
de: Die Referenzfahrt (engl. homing)-Funktionen werden jetzt durch ein ladbares Modul implementiert (Standard:homemod).  Ein alternativer (vom Benutzer erstellter) Planer kann mit der INI-Einstellung [EMCMOT]HOMEMOD=modulename oder der Option 'linuxcnc -m modulename' geladen werden.  Die Beispieldatei src/hal/components/homecomp.comp ist ein Minimalbeispiel für ein Homing-Modul, das mit halcompile erstellt werden kann.

note: type: Title ====
en: Other
de: Sonstiges

note: type: Plain text
en: lib/hallib/sim_lib.tcl: simulate encoder index if [JOINT_n]HOME_USE_INDEX is specified.
de: lib/hallib/sim_lib.tcl: Simulation des Encoder-Index, wenn [JOINT_n]HOME_USE_INDEX angegeben ist.

note: type: Plain text
en: lib/python/vismach.py: new HAL pin vismach.plotclear
de: lib/python/vismach.py: neuer HAL-Pin vismach.plotclear

note: type: Title ==
en: Components
de: Komponenten

note: type: Plain text
en: sim_home_switch: added I/O pin for index-enable
de: sim_home_switch: I/O-Pin für Index-Aktivierung hinzugefügt

note: type: Title ====
en: Motion module pins
de: Pins für Bewegungsmodule

note: type: Plain text
en: motion.feed-upm -- current feed in units per minute
de: motion.feed-upm -- aktueller Vorschub in Einheiten pro Minute

note: type: Title ===
en: Configs
de: Konfigurationen

note: type: Title ====
en: INI file
de: INI-Datei

note: type: Plain text
en: [DISPLAY]GEOMETRY settings that include the '!' character specify that displayed rotations respect G5x,G92 offsets.
de: [DISPLAY]GEOMETRY Einstellungen, die das '!' Zeichen geben an, dass die angezeigten Drehungen G5x-, G92-Offsets berücksichtigen.

note: type: Title ====
en: Simulation Configs
de: Simulationskonfigurationen

note: type: Plain text
en: sim/configs/axis/axis_9axis: demonstrate simulated encoder index
de: sim/configs/axis/axis_9axis: Demonstriert den simulierten Encoder-Index

note: type: Title ==
en: Changes after 2.8.x
de: Änderungen nach 2.8.x

note: type: Plain text
en: Future versions of this document will take into account changes made to the development branch after the latest 2.8.x release.
de: Künftige Versionen dieses Dokuments werden die Änderungen berücksichtigen, die nach der letzten Version 2.8.x am Entwicklungszweig vorgenommen wurden.

note: type: Plain text
en: AXIS is a graphical front-end for LinuxCNC which features a live preview and backplot. It is written in Python and uses Tk and OpenGL to display its user interface.
de: AXIS ist ein grafisches Frontend für LinuxCNC mit Live-Vorschau und Backplot. Es ist in Python geschrieben und verwendet Tk und OpenGL, um seine Benutzeroberfläche anzuzeigen.

note: type: Block title
en: The AXIS Window
de: Das AXIS-Fenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: AXIS main window
de: AXIS Hauptfenster

note: type: Title ==
en: Getting Started
de: Erste Schritte

note: type: Plain text
en: If your configuration is not currently set up to use AXIS, you can change it by editing the .ini file (INI file). In the section `[DISPLAY]` change the `[DISPLAY]` line to read `DISPLAY = axis`.
de: Wenn Ihre Konfiguration derzeit nicht für die Verwendung von AXIS eingerichtet ist, können Sie sie ändern, indem Sie die .ini Datei (INI-Datei) bearbeiten. Ändern Sie im Abschnitt '[DISPLAY]' die Zeile '[DISPLAY]' in 'DISPLAY = axis'.

note: type: Plain text
en: The sample configuration 'sim/axis.ini' is already configured to use AXIS as its front-end.
de: Die Beispielkonfiguration "sim/axis.ini" ist bereits für die Verwendung von AXIS als Front-End konfiguriert.

note: type: Plain text
en: When AXIS starts, a window like the one in the figure <<fig:axis-window>> above opens.
de: Wenn AXIS gestartet wird, öffnet sich ein Fenster wie das in der Abbildung <<fig:axis-window>> oben.

note: type: Plain text
en: For more information on INI file settings that can change how AXIS works see the <<sub:ini:sec:display,Display Section>> of the INI Configuration Chapter.
de: Weitere Informationen zur Einstellung der Funktionsweise von AXIS in der INI-Datei, finden Sie im <<sub:ini:sec:display,Abschnitt Anzeige>> des Kapitels INI-Konfiguration.

note: type: Plain text
en: 'CYCLE_TIME' - Adjust the response rate of the GUI in milliseconds. Typical 100, useable range 50 - 200
    (will accept time in seconds (.05 -.2) for legacy reasons - milliseconds preferred to match other screens).
de: 'CYCLE_TIME' - Passen Sie die Antwortrate der GUI in Millisekunden an. Typisch 100, nutzbarer Bereich 50 - 200
    (akzeptiert Zeit in Sekunden (.05 -.2) aus Legacy-Gründen - Millisekunden bevorzugt, um anderen Bildschirmen zu entsprechen).

note: type: Plain text
en: 'PREVIEW_TIMEOUT' - Set timeout in seconds for loading G-code preview.  If parsing the G-code lasts longer than this, a notice is shown and only the initial part of the program is drawn in the graphical display. Specifying 0 or leaving the setting out results in no timeout.
de: PREVIEW_TIMEOUT' - Legt den Timeout für das Laden der G-Code-Vorschau in Sekunden fest.  Dauert das Parsen des G-Codes länger als diese Zeitspanne, wird ein Hinweis angezeigt und nur der erste Teil des Programms wird in der grafischen Anzeige dargestellt. Die Angabe von 0 oder das Weglassen der Einstellung führt zu keinem Timeout.

note: type: Title ===
en: A Typical Session
de: Eine typische Sitzung

note: type: Plain text
en: Launch LinuxCNC and select a configuration file.
de: Start von LinuxCNC und Auswahl einer Konfigurationsdatei.

note: type: Plain text
en: Release the E-STOP button (F1) and turn the Machine Power on (F2).
de: Geben Sie den Notaus frei (F1) und schalten Sie das Gerät ein (F2).

note: type: Plain text
en: Home all axes.
de: Referenzfahrt aller Achsen.

note: type: Plain text
en: Load the G-code file.
de: Laden der G-Code-Datei.

note: type: Plain text
en: Use the preview plot to verify that the program is correct.
de: Verwenden Sie das Vorschaudiagramm, um zu überprüfen, ob das Programm korrekt ist.

note: type: Plain text
en: Load the material.
de: Laden des Materials.

note: type: Plain text
en: Set the proper offset for each axis by jogging and using the `Touch Off` button as needed.
de: Stellen Sie den richtigen Versatz für jede Achse ein, indem Sie joggen und bei Bedarf die Taste "Touch Off" verwenden.

note: type: Plain text
en: Run the program.
de: Führen Sie das Programm aus.

note: type: Plain text
en: To machine the same file again, return to step 6.  To machine a different file, return to step 4.
de: Um dieselbe Datei erneut zu bearbeiten, kehren Sie zu Schritt 6 zurück.  Um eine andere Datei zu bearbeiten, kehren Sie zu Schritt 4 zurück.

note: type: Plain text
en: When the job is complete, exit AXIS.
de: Wenn der Auftrag abgeschlossen ist, beenden Sie AXIS.

note: type: Plain text
en: To run the same program again depends on your setup and requirements.  You might need to load more material and set offsets or move over and set an offset then run the program again. If your material is fixtured then you might need to only run the program again. See the <<sub:axis-machine-menu,Machine Menu>> for more information on the run command.
de: Nun notwendige Schritte um dasselbe Programm erneut auszuführen, hängen von Ihrem Setup und Ihren Anforderungen ab.  Möglicherweise müssen Sie mehr Material laden und Offsets setzen oder einen Offset verschieben und festlegen und dann das Programm erneut ausführen. Wenn Ihr Material fixiert ist, müssen Sie das Programm möglicherweise nur erneut ausführen. Weitere Informationen zum Befehl run finden Sie im Abschnitt zum <<sub:axis-machine-menu,Menü Maschine>>.

note: type: Title ==
en: AXIS Window
de: AXIS Fenster

note: type: Plain text
en: The AXIS window contains the following elements:
de: Das AXIS-Fenster enthält die folgenden Elemente:

note: type: Plain text
en: A display area that shows one of the following:
de: Ein Anzeigebereich, der Folgendes anzeigt:

note: type: Plain text
en: A preview of the loaded file (in this case, 'axis.ngc'), as well as the current location of the CNC machine's 'controlled point'. Later, this area will display the path the CNC machine has moved through, called the 'backplot'.
de: Eine Vorschau der geladenen Datei (in diesem Fall 'axis.ngc') sowie des aktuellen Speicherorts des "kontrollierten Punktes" der CNC-Maschine. Später wird in diesem Bereich der Pfad angezeigt, den die CNC-Maschine durchlaufen hat, der als "Backplot" bezeichnet wird.

note: type: Plain text
en: A large readout showing the current position and all offsets.
de: Eine große Anzeige der aktuellen Position und aller Offsets.

note: type: Plain text
en: A menu bar and toolbar that allow you to perform various actions
de: Eine Menüleiste und Symbolleiste, mit der Sie verschiedene Aktionen ausführen können

note: type: Plain text
en: 'Manual Control Tab' - which allows you to make the machine move, turn the spindle on or off, and turn the coolant on or off if included in the INI file.
de: 'Manuelle Steuerungsregisterkarte' (engl. Manual Control Tab) - mit der Sie die Maschine bewegen können, die Spindel ein- oder ausschalten und das Kühlmittel ein- oder ausschalten können, wenn es in der INI-Datei enthalten ist.

note: type: Plain text
en: 'MDI Tab' - where G-code programs can be entered manually, one line at a time. This also shows the 'Active G-codes' which shows which modal G-codes are in effect.
de: 'MDI Tab' - in dem G-Code-Programme manuell eingegeben werden können, eine Zeile nach der anderen. Dies zeigt auch die 'Aktive G-Codes', die zeigen, welche modalen G-Codes in Kraft sind.

note: type: Plain text
en: 'Feed Override' - which allows you to scale the speed of programmed motions.  The default maximum is 120% and can be set to a different value in the INI file. See the <<sub:ini:sec:display,Display Section>> of the INI file for more information.
de: 'Vorschub Neufestsetzung' (engl. feed override) - mit dem Sie die Geschwindigkeit programmierter Bewegungen skalieren können.  Das Standardmaximum beträgt 120 % und kann in der INI-Datei auf einen anderen Wert festgelegt werden. Weitere Informationen finden Sie im <<sub:ini:sec:display,Abschnitt Anzeige>> der INI-Datei.

note: type: Plain text
en: 'Spindle Override' - which allows you to scale the spindle speed up or down.
de: 'Spindel Neufestsetzung' (engl. spindle override) - mit dem Sie die Spindelgeschwindigkeit nach oben oder unten skalieren können.

note: type: Plain text
en: 'Jog Speed' - which allows you to set the jog speed within the limits set in the INI file.  See the <<sub:ini:sec:display,Display Section>> of the INI file for more information.
de: 'Jog Speed' - mit dem Sie die Jog-Geschwindigkeit innerhalb der in der INI-Datei festgelegten Grenzen einstellen können.  Weitere Informationen finden Sie im <<sub:ini:sec:display,Abschnitt Anzeige>> der INI-Datei.

note: type: Plain text
en: 'Max Velocity' - which allows you to restrict the maximum velocity of all programmed motions (except spindle synchronized motion).
de: 'Max. Geschwindigkeit' (engl. max velocity) - ermöglicht es Ihnen, die maximale Geschwindigkeit aller programmierten Bewegungen zu begrenzen (außer spindelsynchronisierte Bewegung).

note: type: Plain text
en: A text display area that shows the loaded G-code.
de: Ein Textanzeigebereich, der den geladenen G-Code anzeigt.

note: type: Plain text
en: A status bar which shows the state of the machine. In this screen shot, the machine is turned on, does not have a tool inserted, and the displayed position is 'Relative' (showing all offsets), and 'Actual' (showing feedback position).
de: Eine Statusleiste, die den Zustand der Maschine anzeigt. In diesem Screenshot ist die Maschine eingeschaltet, hat kein Werkzeug eingesetzt und die angezeigte Position ist "Relativ" (mit allen Offsets) und "Aktuell" (zeigt die Feedback-Position).

note: type: Title ===
en: Menu Items
de: Menüpunkte

note: type: Plain text
en: Some menu items might be grayed out depending on how you have your INI file configured. For more information on configuration see the <<cha:ini-configuration,INI Chapter>>.
de: Einige Menüelemente sind möglicherweise ausgegraut, je nachdem, wie Sie Ihre INI-Datei konfiguriert haben. Weitere Informationen zur Konfiguration finden Sie im Kapitel <<cha:ini-configuration,INI>>.

note: type: Title ====
en: File Menu
de: Menü "Datei"

note: type: Plain text
en: 'Open...' - Opens a standard dialog box to open a G-code file to load in AXIS. If you have configured LinuxCNC to use a filter program you can also open it up. See the <<sub:ini:sec:filter,FILTER Section>> of the INI configuration for more information.
de: 'Öffnen...' - Öffnet ein Standarddialogfeld zum Öffnen einer G-Code-Datei, die in AXIS geladen werden soll. Wenn Sie LinuxCNC für die Verwendung eines Filterprogramms konfiguriert haben, können Sie es auch öffnen. Weitere Informationen finden Sie im Abschnitt <<sub:ini:sec:filter,FILTER>> der INI-Konfiguration.

note: type: Plain text
en: 'Recent Files' - Displays a list of recently opened files.
de: „Letzte Dateien“ – Zeigt eine Liste der zuletzt geöffneten Dateien an.

note: type: Plain text
en: 'Edit...' - Open the current G-code file for editing if you have an editor configured in your INI file. See the <<sub:ini:sec:display,DISPLAY Section>> for more information on specifying an editor to use.
de: 'Bearbeiten...' - Öffnen Sie die aktuelle G-Code-Datei zur Bearbeitung, wenn Sie einen Editor in Ihrer INI-Datei konfiguriert haben. Weitere Informationen zum Angeben eines zu verwendenden Editors finden Sie im Abschnitt <<sub:ini:sec:display,DISPLAY>>.

note: type: Plain text
en: 'Reload' - Reload the current G-code file. If you edited it you must reload it for the changes to take affect. If you stop a file and want to start from the beginning then reload the file. The toolbar reload is the same as the menu.
de: 'Reload' - Laden Sie die aktuelle G-Code-Datei neu. Wenn Sie es bearbeitet haben, müssen Sie es neu laden, damit die Änderungen wirksam werden. Wenn Sie eine Datei stoppen und von vorne beginnen möchten, laden Sie die Datei neu. Das Neuladen der Symbolleiste ist identisch mit dem Menü.

note: type: Plain text
en: 'Save G-code as...' - Save the current file with a new name.
de: 'G-Code speichern unter...' - Speichern Sie die aktuelle Datei unter einem neuen Namen.

note: type: Plain text
en: 'Properties' - The sum of the rapid and feed moves. Does not factor in acceleration, blending or path mode so time reported will never be less than the actual run time.
de: 'Eigenschaften' - Die Summe der Eilgang- und Vorschubbewegungen. Berücksichtigt keine Beschleunigung, Überblendung oder den Pfadmodus, sodass die gemeldete Zeit nie weniger als die tatsächliche Laufzeit ist.

note: type: Plain text
en: 'Edit tool table...' - Same as Edit if you have defined an editor you can open the tool table and edit it.
de: 'Werkzeugtabelle bearbeiten...' - Wie bei Bearbeiten, wenn Sie einen Editor definiert haben, können Sie die Werkzeugtabelle öffnen und bearbeiten.

note: type: Plain text
en: 'Reload tool table' - After editing the tool table you must reload it.
de: 'Werkzeugtabelle neu laden' - Nach dem Bearbeiten der Werkzeugtabelle müssen Sie diese neu laden.

note: type: Plain text
en: 'Ladder editor' - If you have loaded ClassicLadder you can edit it from here. See the <<cha:classicladder,ClassicLadder chapter>> for more information.
de: 'Ladder Editor' - Wenn Sie ClassicLadder geladen haben, können Sie es von hier aus bearbeiten. Weitere Informationen finden Sie im Kapitel <<cha:classicladder,ClassicLadder>>.

note: type: Plain text
en: 'Quit' - Terminates the current LinuxCNC session.
de: 'Beenden' - Beendet die aktuelle LinuxCNC-Sitzung.

note: type: Title ====
en: Machine Menu
de: Maschinen-Menü

note: type: Plain text
en: 'Toggle Emergency Stop F1' - Change the state of the Emergency Stop.
de: 'Notaus F1 ein-/ausschalten' - Ändern Sie den Zustand des Notaus.

note: type: Plain text
en: 'Toggle Machine Power F2' - Change the state of the Machine Power if the Emergency Stop is not on.
de: 'Toggle Machine Power F2' - Ändern Sie den Zustand der Maschinenleistung, wenn der Notaus nicht eingeschaltet ist.

note: type: Plain text
en: 'Run Program' - Run the currently loaded program from the beginning.
de: 'Programm ausführen' - Führt das aktuell geladene Programm von Anfang an aus.

note: type: Plain text
en: 'Run From Selected Line' - Select the line you want to start from first.  Use with caution as this will move the tool to the expected position before the line first then it will execute the rest of the code.
de: „Ab ausgewählter Zeile ausführen“ – Wählen Sie die Zeile aus, bei der Sie zuerst beginnen möchten. Seien Sie vorsichtig, da dies das Werkzeug zuerst an die erwartete Position vor der Zeile bewegt und dann den Rest des Codes ausführt.

note: type: Plain text
en: Do not use 'Run From Selected Line' if your G-code program contains subroutines.
de: Verwenden Sie nicht 'Run From Selected Line', wenn Ihr G-Code-Programm Unterroutinen enthält.

note: type: Plain text
en: 'Step' - Single step through a program.
de: 'Step' - Einzelner Schritt durch ein Programm.

note: type: Plain text
en: 'Pause' - Pause a program.
de: Pause - Unterbrechung eines Programms.

note: type: Plain text
en: 'Resume' - Resume running from a pause.
de: 'Fortsetzen' (engl. resume) - Wiederaufnahme der Ausführung nach einer Pause.

note: type: Plain text
en: 'Stop' - Stop a running program. When run is selected after a stop the program will start from the beginning.
de: 'Stop' - Stoppt ein laufendes Programm. Folgt nach einem Stopp erneut das Kommando "Ausführen!", so wird das Programm von vorne gestartet.

note: type: Plain text
en: 'Stop at M1' - If an M1 is reached, and this is checked, program execution will stop on the M1 line. Press Resume to continue.
de: 'Stop at M1' - Wenn ein M1 erreicht ist und dies aktiviert ist, wird die Programmausführung auf der M1-Leitung angehalten. Drücken Sie Fortsetzen, um fortzufahren.

note: type: Plain text
en: 'Skip lines with "/"' - If a line begins with '/' and this is checked, the line will be skipped.
de: 'Zeilen mit "/" überspringen' - Wenn eine Zeile mit '/' beginnt und dies aktiviert ist, wird die Zeile übersprungen.

note: type: Plain text
en: 'Clear MDI history' - Clears the MDI history window.
de: 'MDI-Verlauf löschen' - Löscht das MDI-Verlaufsfenster.

note: type: Plain text
en: 'Copy from MDI history' - Copies the MDI history to the clipboard
de: 'Aus MDI-Verlauf kopieren' - Kopiert den MDI-Verlauf in die Zwischenablage

note: type: Plain text
en: 'Paste to MDI history' - Paste from the clipboard to the MDI history window
de: 'In MDI-Verlauf einfügen' - Einfügen aus der Zwischenablage in das MDI-Verlaufsfenster

note: type: Plain text
en: 'Calibration' - Starts the Calibration assistant (emccalib.tcl).  Calibration reads the HAL file and for every 'setp' that uses a variable from the INI file that is in an [AXIS_L],[JOINT_N],[SPINDLE_S], or [TUNE] section it creates an entry that can be edited and tested.
de: 'Kalibrierung' - Startet den Kalibrierungsassistenten (emccalib.tcl).  Die Kalibrierung liest die HAL-Datei und erstellt für jedes 'setp', das eine Variable aus der INI-Datei verwendet, die sich in einem [AXIS_L],[JOINT_N],[SPINDLE_S] oder [TUNE] Abschnitt befindet, ein Eintrag, der bearbeitet und getestet werden kann.

note: type: Plain text
en: 'Show HAL Configuration' - Opens the HAL Configuration window where you can monitor HAL Components, Pins, Parameters, Signals, Functions, and Threads.
de: 'HAL-Konfiguration anzeigen' - Öffnet das Fenster HAL-Konfiguration, in dem Sie HAL-Komponenten, Pins, Parameter, Signale, Funktionen und Threads überwachen können.

note: type: Plain text
en: 'HAL Meter' - Opens a window where you can monitor a single HAL Pin, Signal, or Parameter.
de: 'HAL-Messgerät' - Öffnet ein Fenster, in dem Sie einen einzelnen HAL-Pin, ein Signal oder einen Parameter überwachen können.

note: type: Plain text
en: 'HAL Scope' - Opens a virtual oscilloscope that allows plotting HAL values vs. time.
de: 'HAL Scope' - Öffnet ein virtuelles Oszilloskop zur Anzeige von HAL-Werten (vertikal) über die Zeit (horizontal) ermöglicht.

note: type: Plain text
en: 'Show LinuxCNC Status' - Opens a window showing LinuxCNC's status.
de: 'LinuxCNC-Status anzeigen' - Öffnet ein Fenster mit dem Status von LinuxCNC.

note: type: Plain text
en: 'Set Debug Level' - Opens a window where debug levels can be viewed and some can be set.
de: 'Debug Level festlegen' - Öffnet ein Fenster, in dem Debug-Ebenen angezeigt und einige festgelegt werden können.

note: type: Plain text
en: 'Homing' - Home one or all axes.
de: 'Referenzfahrt' (engl. Homing) - Eine oder alle Achsen zu Referenzpunkt führen.

note: type: Plain text
en: 'Unhoming' - Unhome one or all axes.
de: 'Unhoming' - Unhoming einer oder aller Achsen.

note: [[sub:axis:tool-touch-off]] type: Plain text
en: 'Zero Coordinate System' - Set all offsets to zero in the coordinate system chosen.
de: 'Nullkoordinatensystem' - Setzt alle Versätze im gewählten Koordinatensystem auf Null.

note: type: Plain text
en: Tool Touch Off(((AXIS, Tool Touch Off)))
de: Werkzeug Touch Off(((AXIS, Tool Touch Off)))

note: type: Plain text
en: 'Tool touch off to workpiece' - When performing Touch Off, the value entered is relative to the current workpiece ('G5x') coordinate system, as modified by the axis offset ('G92').  When the Touch Off is complete, the Relative coordinate for the chosen axis will become the value entered.  See <<gcode:g10-l10,G10 L10>> in the G-code chapter.
de: 'Werkzeug auf Werkstück aufsetzen' - Beim Ausführen von Touch Off bezieht sich der eingegebene Wert auf das aktuelle Werkstückkoordinatensystem ('G5x'), modifiziert durch den Achsversatz ('G92'). Wenn die Berührung abgeschlossen ist, wird die relative Koordinate für die gewählte Achse zum eingegebenen Wert. Siehe <<gcode:g10-l10,G10 L10>> im G-Code-Kapitel.

note: type: Plain text
en: 'Tool touch off to fixture' - When performing Touch Off, the value entered is relative to the ninth ('G59.3') coordinate system, with the axis offset ('G92') ignored.  This is useful when there is a tool touch-off fixture at a fixed location on the machine, with the ninth ('G59.3') coordinate system set such that the tip of a zero-length tool is at the fixture's origin when the Relative coordinates are 0.  See <<gcode:g10-l11,G10 L11>> in the G-code chapter.
de: 'Werkzeug-Touch Off to Fixture' - Beim Ausführen von Touch Off ist der eingegebene Wert relativ zum neunten ('G59.3') Koordinatensystem, wobei der Achsenversatz ('G92') ignoriert wird. Dies ist nützlich, wenn an einer festen Position auf der Maschine eine Werkzeug-Berührungshalterung vorhanden ist, wobei das neunte ('G59.3') Koordinatensystem so eingestellt ist, dass sich die Spitze eines Werkzeugs mit der Länge Null am Ursprung der Halterung befindet, wenn die Relative Koordinaten sind 0. Siehe <<gcode:g10-l11,G10 L11>> im G-Code-Kapitel.

note: type: Title ====
en: View Menu
de: Ansicht-Menü

note: type: Plain text
en: 'Top View' - The Top View (or Z view) displays the G-code looking along the Z axis from positive to negative. This view is best for looking at X & Y.
de: 'Draufsicht' (engl. top view) – Die Draufsicht (oder Z-Ansicht) zeigt den G-Code entlang der Z-Achse von positiv nach negativ. Diese Ansicht eignet sich am besten zum Betrachten von X und Y.

note: type: Plain text
en: 'Rotated Top View' - The Rotated Top View (or rotated Z view) also displays the G-code looking along the Z axis from positive to negative. But sometimes it's convenient to display the X & Y axes rotated 90 degrees to fit the display better. This view is also best for looking at X & Y.
de: 'Gedrehte Draufsicht' (engl. rotated top view) - Die gedrehte Draufsicht (oder gedrehte Z-Ansicht) zeigt auch den G-Code an, der entlang der Z-Achse von positiv nach negativ aussieht. Aber manchmal ist es praktisch, die X & Y-Achsen um 90 Grad gedreht anzuzeigen, um besser zum Display zu passen. Diese Ansicht eignet sich auch bestens, um X & Y zu betrachten.

note: type: Plain text
en: 'Side View' - The Side View (or X view) displays the G-code looking along the X axis from positive to negative. This view is best for looking at Y & Z.
de: 'Seitenansicht' (engl. side view) - Die Seitenansicht (oder X-Ansicht) zeigt den G-Code an, der entlang der X-Achse von positiv nach negativ aussieht. Diese Ansicht eignet sich am besten für den Blick auf Y & Z.

note: type: Plain text
en: 'Front View' - The Front View (or Y view) displays the G-code looking along the Y axis from negative to positive. This view is best for looking at X & Z.
de: 'Vorderansicht' - Die Vorderansicht (oder Y-Ansicht) zeigt den G-Code an, der entlang der Y-Achse von negativ nach positiv aussieht. Diese Ansicht eignet sich am besten für den Blick auf X & Z.

note: type: Plain text
en: 'Perspective View' - The Perspective View (or P view) displays the G-code looking at the part from an adjustable point of view, defaulting to X+, Y-, Z+. The position is adjustable using the mouse and the drag/rotate selector.  This view is a compromise view, and while it does do a good job of trying to show three (to nine!) axes on a two-dimensional display, there will often be some feature that is hard to see, requiring a change in viewpoint. This view is best when you would like to see all three (to nine) axes at once.
de: 'Perspektivische Ansicht' (engl. perspective view) - Die perspektivische Ansicht (oder P-Ansicht) zeigt den G-Code an, der das Teil aus einem einstellbaren Blickwinkel betrachtet, standardmäßig X+, Y-, Z+. Die Position ist mit der Maus und dem Zug-/Drehwahlschalter einstellbar.  Diese Ansicht ist eine Kompromissansicht, und obwohl sie versucht, drei (bis neun!) Diese Ansicht ist am besten, wenn Sie alle drei (bis neun) Achsen gleichzeitig sehen möchten.

note: type: Block title
en: Point of View
de: Sichtweise

note: type: delimited block *
en: The AXIS display pick menu 'View' refers to 'Top', 'Front', and 'Side' views.  These terms are correct if the CNC machine has its Z axis vertical, with positive Z up. This is true for vertical mills, which is probably the most popular application, and also true for almost all EDM machines, and even vertical turret lathes, where the part is turning below the tool.
de: Das AXIS-Anzeigeauswahlmenü "Ansicht" bezieht sich auf die Ansichten "Oben", "Vorne" und "Seitlich".  Diese Begriffe sind korrekt, wenn die Z-Achse der CNC-Maschine senkrecht steht, mit positivem Z nach oben. Dies gilt für vertikale Fräsmaschinen, was wahrscheinlich die häufigste Anwendung ist, und auch für fast alle Erodiermaschinen und sogar vertikale Revolverdrehbänke, bei denen sich das Teil unter dem Werkzeug dreht.

note: type: delimited block *
en: The terms 'Top', 'Front', and 'Side' might be confusing in other CNC machines, such as a standard lathe, where the Z axis is horizontal, or a horizontal mill, again where the Z axis is horizontal, or even an inverted vertical turret lathe, where the part is turning above the tool, and the Z axis positive direction is down!
de: Die Begriffe 'Oben' (engl. top), 'Vorne' (engl. front) und 'Seitlich' (engl. side) können verwirrend sein bei anderen CNC-Maschinen, wie z.B. bei einer Standard-Drehmaschine, bei der die Z-Achse horizontal verläuft, oder bei einer horizontalen Fräsmaschine, bei der die Z-Achse ebenfalls horizontal verläuft, oder sogar bei einer umgekehrten vertikalen Revolverdrehmaschine, bei der sich das Werkstück über dem Werkzeug dreht und die positive Richtung der Z-Achse nach unten verläuft!

note: type: delimited block *
en: Just remember that positive Z axis is (almost) always away from the part.  So be familiar with your machine's design and interpret the display as needed.
de: Denken Sie nur daran, dass die positive Z-Achse (fast) immer vom Werkstück entfernt ist.  Seien Sie also mit der Konstruktion Ihrer Maschine vertraut und interpretieren Sie die Anzeige nach Bedarf.

note: type: Plain text
en: 'Display Inches' - Set the AXIS display scaling for inches.
de: 'Display Inches' - Legt die AXIS-Anzeigeskalierung für Zoll fest.

note: type: Plain text
en: 'Display MM' - Set the AXIS display scaling for millimeters.
de: 'Display MM' - Legt die AXIS Display-Skalierung auf Millimeter fest.

note: type: Plain text
en: 'Show Program' - The preview display of the loaded G-code program can be entirely disabled if desired.
de: 'Programm anzeigen' - Die Vorschauanzeige des geladenen G-Code-Programms kann auf Wunsch vollständig deaktiviert werden.

note: type: Plain text
en: 'Show Program Rapids' - The preview display of the loaded G-code program will always show the feed rate moves (G1,G2,G3) in white.  But the display of rapid moves (G0) in cyan can be disabled if desired.
de: 'Zeige Vorschau von Eilgängen' (engl. show program rapids) - Die Vorschauanzeige des geladenen G-Code-Programms zeigt die Vorschubbewegungen (G1,G2,G3) immer in weiß an.  Die Anzeige von Eilgängen (G0) in cyan kann jedoch auf Wunsch deaktiviert werden.

note: type: Plain text
en: 'Alpha-blend Program' - This option makes the preview of complex programs easier to see, but may cause the preview to display more slowly.
de: 'Alpha-Blend-Programm' - Diese Option macht die Vorschau komplexer Programme leichter sichtbar, kann aber dazu führen, dass die Vorschau langsamer angezeigt wird.

note: type: Plain text
en: 'Show Live Plot' - The highlighting of the feedrate paths (G1,G2,G3) as the tool moves can be disabled if desired.
de: 'Show Live Plot' - Die Hervorhebung der Vorschubpfade (G1,G2,G3) während der Bewegungen des Werkzeugs kann auf Wunsch deaktiviert werden.

note: type: Plain text
en: 'Show Tool' - The display of the tool cone/cylinder can be disabled if desired.
de: 'Werkzeug anzeigen' - Die Anzeige des Werkzeugkegels/-zylinders kann auf Wunsch deaktiviert werden.

note: type: Plain text
en: 'Show Extents' - The display of the extents (maximum travel in each axis direction) of the loaded G-code program can be disabled if desired.
de: 'Zeige Ausdehnung' - Die Anzeige der Ausdehnung (engl. extents) (maximaler Verfahrweg in jeder Achsenrichtung) des geladenen G-Code-Programms kann auf Wunsch deaktiviert werden.

note: type: Plain text
en: 'Show Offsets' - The selected fixture offset (G54-G59.3) origin location can be shown as a set of three orthogonal lines, one each of red, blue, and green.  This offset origin (or fixture zero) display can be disabled if desired.
de: 'Offsets anzeigen' – Der ausgewählte Fixture Offset (G54-G59.3) Ursprungsort kann als Satz von drei orthogonalen Linien angezeigt werden, jeweils eine aus rot, blau und grün. Diese Offset-Ursprungsanzeige (oder Fixture Zero) kann auf Wunsch deaktiviert werden.

note: type: Plain text
en: 'Show Machine Limits' - The machine's maximum travel limits for each axis, as set in the INI file, are shown as a rectangular box drawn in red dashed lines. This is useful when loading a new G-code program, or when checking for how much fixture offset would be needed to bring the G-code program within the travel limits of your machine. It can be shut off if not needed.
de: 'Maschinenlimits anzeigen' - Die maximalen Verfahrwege der Maschine für jede Achse, wie sie in der INI-Datei festgelegt sind, werden als rechteckiges Feld in roten, gestrichelten Linien dargestellt. Dies ist nützlich, wenn Sie ein neues G-Code-Programm laden oder prüfen, wie viel Fixture-Offset benötigt wird, um das G-Code-Programm innerhalb der Reisegrenzen Ihrer Maschine zu bringen. Es kann abgeschaltet werden, wenn es nicht benötigt wird.

note: type: Plain text
en: 'Show Velocity' - A display of velocity is sometimes useful to see how close your machine is running to its design velocities. It can be disabled if desired.
de: 'Geschwindigkeit anzeigen' - Eine Anzeige der Geschwindigkeit ist manchmal nützlich, um zu sehen, wie nah Ihre Maschine an ihren Entwurfsgeschwindigkeiten läuft. Sie kann auf Wunsch deaktiviert werden.

note: type: Plain text
en: 'Show Distance to Go' - Distance to go is a very handy item to know when running an unknown G-code program for the first time. In combination with the rapid override and feedrate override controls, unwanted tool and machine damage can be avoided.  Once the G-code program has been debugged and is running smoothly, the Distance to Go display can be disabled if desired.
de: 'Restweg anzeigen' (engl. Show Distance to Go) - Der Restweg ist ein sehr nützlicher Hinweis, wenn Sie ein unbekanntes G-Code-Programm zum ersten Mal ausführen. In Kombination mit den Eilgang- und Vorschub-Override-Steuerungen können unerwünschte Werkzeug- und Maschinenschäden vermieden werden.  Sobald das G-Code-Programm fehlerfrei läuft, kann die Restweg-Anzeige auf Wunsch deaktiviert werden.

note: type: Plain text
en: 'Coordinates in large font...' - The coordinates of the axes and the speed in advance, will display in large font in the toolpath view.
de: 'Koordinaten in großer Schrift...' - Die Koordinaten der Achsen und die Geschwindigkeit im Voraus werden in großer Schrift in der Werkzeugwegansicht angezeigt.

note: type: Plain text
en: 'Clear Live Plot' - As the tool travels in the AXIS display, the G-code path is highlighted.  To repeat the program, or to better see an area of interest, the previously highlighted paths can be cleared.
de: 'Live Plot löschen' - Während das Werkzeug in der AXIS-Anzeige reist, wird der G-Code-Pfad hervorgehoben.  Um das Programm zu wiederholen oder einen Interessenbereich besser zu sehen, können die zuvor markierten Pfade gelöscht werden.

note: type: Plain text
en: 'Show Commanded Position' - This is the position that LinuxCNC will try to go to. Once motion has stopped, this is the position LinuxCNC will try to hold.
de: 'Zeige befohlene Position' (engl. show commanded position) - Dies ist die Position, die LinuxCNC versuchen wird zu gehen. Sobald die Bewegung gestoppt wurde, ist dies die Position, die LinuxCNC versuchen wird, zu halten.

note: type: Plain text
en: 'Show Actual Position' - Actual Position is the measured position as read back from the system's encoders or simulated by step generators. This may differ slightly from the Commanded Position for many reasons including PID tuning, physical constraints, or position quantization.
de: 'Ist-Position anzeigen' (engl. show actual position) - Die Ist-Position ist die gemessene Position, wie sie von den Encodern des Systems zurückgelesen oder von Schrittgeneratoren simuliert wird. Diese kann aus vielen Gründen, wie z. B. PID-Abstimmung, physikalische Einschränkungen oder Positionsquantisierung, leicht von der befohlenen Position abweichen.

note: type: Plain text
en: 'Show Machine Position' - This is the position in unoffset coordinates, as established by Homing.
de: 'Maschinenposition anzeigen' (engl. show machine position) - Dies ist die Position in nicht verschobenen Koordinaten, wie sie bei der Referenzfahrt ermittelt wurde.

note: type: Plain text
en: 'Show Relative Position' - This is the Machine Position modified by 'G5x', 'G92', and 'G43' offsets.
de: 'Relative Position anzeigen' (engl. show relative position) - Dies ist die Maschinenposition, modifiziert durch die Offsets "G5x", "G92" und "G43".

note: type: Title ====
en: Help Menu
de: Hilfemenü

note: type: Plain text
en: 'About AXIS' - We all know what this is.
de: "Über AXIS" - Wir alle wissen, was das ist.

note: type: Plain text
en: 'Quick Reference' - Shows the keyboard shortcut keys.
de: 'Schnellübersicht' - Zeigt die Tastenkombinationen an.

note: type: Title ===
en: Toolbar buttons
de: Schaltflächen der Symbolleiste

note: type: Plain text
en: From left to right in the AXIS display, the toolbar buttons (keyboard shortcuts shown [in brackets]) are:
de: Von links nach rechts in der AXIS-Anzeige lauten die Schaltflächen der Symbolleiste (Tastenkombinationen werden [in Klammern] angezeigt):

note: type: Plain text
en: image:images/tool_estop.png["Toggle Emergency Stop"] Toggle Emergency Stop [F1] (also called E-Stop)
de: image:images/tool_estop.png["Ein-/ausschalten Notaus"] Umschalten des Notausschalters [F1] (auch E-Stop genannt)

note: type: Plain text
en: image:images/tool_power.png["Toggle Machine Power"] Toggle Machine Power [F2]
de: image:images/tool_power.png["Ein-/ausschalten Stromversorgung"] Umschalten Machinenstrom [F2]

note: type: Plain text
en: image:images/tool_open.png["Open G Code file"] Open G Code file [O]
de: image:images/tool_open.png["G-Code-Datei öffnen"] G-Code-Datei öffnen [O]

note: type: Plain text
en: image:images/tool_reload.png["Reload current file"] Reload current file [Ctrl-R]
de: image:images/tool_reload.png["Aktuelle Datei neu laden"] Aktuelle Datei neu laden [Strg-R]

note: type: Plain text
en: image:images/tool_run.png["Begin executing the current file"] Begin executing the current file [R]
de: image:images/tool_run.png["Beginn der Ausführung der aktuellen Datei"] Beginn der Ausführung der aktuellen Datei [R]

note: type: Plain text
en: image:images/tool_step.png["Execute next line"] Execute next line [T]
de: image:images/tool_step.png["Nächste Zeile ausführen"] Nächste Zeile ausführen [T]

note: type: Plain text
en: image:images/tool_pause.png["Pause Execution - Resume Execution"] Pause Execution [P] Resume Execution [S]
de: image:images/tool_pause.png["Ausführung anhalten - Ausführung fortsetzen"] Ausführung anhalten [P] Ausführung fortsetzen [S]

note: type: Plain text
en: image:images/tool_stop.png["Stop Program Execution"] Stop Program Execution [ESC]
de: image:images/tool_stop.png["Programmausführung anhalten"] Programmausführung anhalten [ESC]

note: type: Plain text
en: image:images/tool_blockdelete.png["Toggle Skip lines"] Toggle Skip lines with "/" [Alt-M-/]
de: image:images/tool_blockdelete.png["Zeilen überspringen"] Zeilen überspringen mit "/" [Alt-M-/] umschalten

note: type: Plain text
en: image:images/tool_optpause.png["Toggle Optional Pause"] Toggle Optional Pause [Alt-M-1]
de: image:images/tool_optpause.png["Optionale Pause einschalten"] Optionale Pause einschalten [Alt-M-1]

note: type: Plain text
en: image:images/tool_zoomin.png["Zoom In"] Zoom In
de: image:images/tool_zoomin.png["Hineinzoomen"] Vergrößern (engl. zoom in)

note: type: Plain text
en: image:images/tool_axis_z2.png["Rotated Top view"] Rotated Top view
de: image:images/tool_axis_z2.png["Gedrehte Draufsicht"] Gedrehte Draufsicht

note: type: Plain text
en: image:images/tool_axis_p.png["Perspective view"] Perspective view
de: image:images/tool_axis_p.png["Perspektivische Ansicht"] Perspektivische Ansicht

note: type: Plain text
en: image:images/tool_rotate.png["Toggle between Drag and Rotate Mode"] Toggle between Drag and Rotate Mode [D]
de: image:images/tool_rotate.png["Umschalten zwischen Ziehen und Drehen"] Umschalten zwischen Ziehen und Drehen [D]

note: type: Plain text
en: image:images/tool_clear.png["Clear live backplot"] Clear live backplot [Ctrl-K]
de: image:images/tool_clear.png["Live-Backplot löschen"] Live-Backplot löschen [Strg-K]

note: type: Title ===
en: Graphical Display Area
de: Grafischer Anzeigebereich

note: type: Block title
en: Coordinate Display
de: Koordinatenanzeige

note: type: Plain text
en: In the upper-left corner of the program display is the coordinate position display for each axis. To the right of the number an origin symbol image:images/axis-homed.png["origin symbol is shown if the axis has been homed"] is shown if the axis has been homed.
de: In der oberen linken Ecke der Programmanzeige befindet sich die Anzeige der Koordinatenposition für jede Achse. Rechts neben der Nummer wird ein Ursprungssymbol image:images/axis-homed.png["Ursprungssymbol wird angezeigt, wenn die Achse referenziert wurde"] angezeigt, wenn die Achse referenziert wurde.

note: type: Plain text
en: A limit symbol image:images/axis-limit.png["limit symbol"] is shown on the right side of the coordinate position number if the axis is on one of its limit switches.
de: Ein Grenzwertsymbol image:images/axis-limit.png["Grenzwertsymbol"] wird rechts neben der Koordinatenpositionsnummer angezeigt, wenn die Achse an einem ihrer Endschalter steht.

note: type: Plain text
en: To properly interpret the coordinate position numbers, refer to the 'Position:' indicator in the status bar. If the position is 'Machine Actual', then the displayed number is in the machine coordinate system. If it is 'Relative Actual', then the displayed number is in the offset coordinate system. When the coordinates displayed are relative and an offset has been set, the display will include a cyan <<sec:machine-coordinate-system,'machine origin'>> image:images/axis-machineorigin.png["cyan machine origin"] marker.
de: Um die Positionsnummern richtig zu interpretieren, beachten Sie die Anzeige "Position:" in der Statusleiste. Wenn die Position "Maschinen-Ist" lautet, dann ist die angezeigte Zahl im Maschinenkoordinatensystem. Steht sie auf "Relativ Aktuell", dann ist die angezeigte Zahl im Offset-Koordinatensystem. Wenn die angezeigten Koordinaten relativ sind und ein Offset eingestellt wurde, enthält die Anzeige eine cyanfarbene Markierung <<sec:machine-coordinate-system,'Maschinen-Ursprung'>> (engl. machine origin) image:images/axis-machineorigin.png["cyan Maschinen-Ursprung"].

note: type: Plain text
en: If the position is 'Commanded', then the exact coordinate given in a G-code command is displayed. If it is 'Actual', then it is the position the machine has actually moved to. These values can be different from commanded position due to following error, dead band, encoder resolution, or step size. For instance, if you command a movement to X 0.0033 on your mill, but one step of your stepper motor or one encoder count is 0.00125, then the 'Commanded' position might be 0.0033, but the 'Actual' position will be 0.0025 (2 steps) or 0.00375 (3 steps).
de: Ist die Position 'Befohlen' (engl. commanded), wird die genaue Koordinate angezeigt, die in einem G-Code-Befehl angegeben wurde. Ist die Position 'Ist' (engl. actual), dann ist es von der Maschine tatsächlich angefahrene Position. Diese Werte können aufgrund von Schleppfehler, Totzone, Messgeräteauflösung oder Schrittweite von der befohlenen Position abweichen. Wenn Sie z. B. eine Bewegung mit X 0,0033 auf Ihrer Fräsmaschine befehlen, aber ein Schritt Ihres Schrittmotors oder eine Encoderzählung 0,00125 beträgt, dann könnte die 'befohlene' Position 0,0033 sein, aber die 'tatsächliche' Position wird 0,0025 (2 Schritte) oder 0,00375 (3 Schritte) sein.

note: type: Block title
en: Preview Plot
de: Vorschau-Plot

note: type: Plain text
en: When a file is loaded, a preview of it is shown in the display area.  Fast moves (such as those produced by the 'G0' command) are shown as cyan lines. Moves at a feed rate (such as those produced by the 'G1' command) are shown as solid white lines. Dwells (such as those produced by the 'G4' command)  are shown as small pink 'X' marks.
de: Wird eine Datei geladen, so wird im Anzeigebereich eine Vorschau angezeigt.  Schnelle Bewegungen (z.B. durch den Befehl 'G0') werden als cyanfarbene Linien dargestellt. Bewegungen im Vorschub (z. B. mit dem Befehl "G1") werden als durchgezogene weiße Linien dargestellt. Verweilzeiten (z. B. durch den Befehl "G4") werden als kleine rosa "X"-Markierungen dargestellt.

note: type: Plain text
en: G0 (Rapid) moves prior to a feed move will not show on the preview plot.  Rapid moves after a T<n> (Tool Change) will not show on the preview until after the first feed move.  To turn either of these features off program a G1 without any moves prior to the G0 moves.
de: G0 (Eilgang) Bewegungen vor einer Vorschubbewegung werden nicht in der Vorschau angezeigt.  Eilgangbewegungen nach einem T<n> (Werkzeugwechsel) werden erst nach der ersten Vorschubbewegung in der Vorschau angezeigt.  Um eine dieser Funktionen auszuschalten, programmieren Sie einen G1 ohne Bewegungen vor den G0-Bewegungen.

note: type: Block title
en: Program Extents
de: Programm-Extents

note: type: Plain text
en: The 'extents' of the program in each axis are shown.  At the ends, the least and greatest coordinate values are indicated.  In the middle, the difference between the coordinates is shown.
de: Die 'Ausdehnungen' des Programms in jeder Achse werden angezeigt.  An den Enden werden die kleinsten und größten Koordinatenwerte angegeben.  In der Mitte ist die Differenz zwischen den Koordinaten dargestellt.

note: type: Plain text
en: When some coordinates exceed the 'soft limits' in the INI file, the relevant dimension is shown in a different color and enclosed by a box.  In figure below the maximum soft limit is exceeded on the X axis as indicated by the box surrounding the coordinate value.  The minimum X travel of the program is -1.95, the maximum X travel is 1.88, and the program requires 3.83 inches of X travel.  To move the program so it's within the machine's travel in this case, jog to the left and Touch Off X again.
de: Wenn einige Koordinaten die "weichen Grenzen" in der INI-Datei überschreiten, wird die betreffende Abmessung in einer anderen Farbe angezeigt und von einem Kästchen umgeben.  In der nachstehenden Abbildung ist die maximale weiche Grenze auf der X-Achse überschritten, was durch das Kästchen um den Koordinatenwert angezeigt wird.  Der minimale X-Verfahrweg des Programms ist -1,95, der maximale X-Verfahrweg ist 1,88, und das Programm benötigt einen X-Verfahrweg von 3,83 Zoll.  Um das Programm so zu verschieben, dass es sich innerhalb des Verfahrwegs der Maschine befindet, gehen Sie nach links und berühren Sie die X-Position erneut.

note: type: Block title
en: Soft Limits(((Soft Limits)))
de: Weiche Grenzwerte (engl. soft limits)(((Weiche Grenzwerte)))

note: type: Title ===
en: Soft Limits
de: Weiche Grenzwerte

note: type: Block title
en: Tool Cone
de: Werkzeugkegel

note: type: Plain text
en: When no tool is loaded, the location of the tip of the tool is indicated by the 'tool cone'.  The 'tool cone' does not provide guidance on the form, length, or radius of the tool.
de: Wenn kein Werkzeug geladen ist, wird die Position der Werkzeugspitze durch den „Werkzeugkegel“ angezeigt. Der „Werkzeugkegel“ gibt keine Auskunft über Form, Länge oder Radius des Werkzeugs.

note: type: Plain text
en: When a tool is loaded (for instance, with the MDI command 'T1 M6' ), the cone changes to a cylinder which shows the diameter of the tool given in the tool table file.
de: Wenn ein Werkzeug geladen wird (z.B. mit dem MDI-Befehl 'T1 M6' ), ändert sich der Kegel in einen Zylinder, der den in der Werkzeugtabellendatei angegebenen Durchmesser des Werkzeugs anzeigt.

note: type: Plain text
en: When the machine moves, it leaves a trail called the backplot.  The color of the line indicates the type of motion: Yellow for jogs, faint green for rapid movements, red for straight moves at a feed rate, and magenta for circular moves at a feed rate.
de: Wenn sich die Maschine bewegt, hinterlässt sie eine Spur, den so genannten Backplot.  Die Farbe der Linie gibt die Art der Bewegung an: Gelb für Jogging, blassgrün für schnelle Bewegungen, rot für gerade Bewegungen mit Vorschubgeschwindigkeit und magenta für kreisförmige Bewegungen mit Vorschubgeschwindigkeit.

note: type: Block title
en: Grid
de: Raster

note: type: Plain text
en: AXIS can optionally display a grid when in orthogonal views.  Enable or disable the grid using the 'Grid' menu under 'View'.  When enabled, the grid is shown in the top and rotated top views; when coordinate system is not rotated, the grid is shown in the front and side views as well.  The presets in the 'Grid' menu are controlled by the INI file item `[DISPLAY]GRIDS`.  If unspecified, the default is `10mm 20mm 50mm 100mm 1in 2in 5in 10in`.
de: AXIS kann in orthogonalen Ansichten optional ein Raster anzeigen.  Aktivieren oder deaktivieren Sie das Raster über das Menü "Raster" unter "Ansicht".  Wenn es aktiviert ist, wird das Gitter in der Draufsicht und der gedrehten Draufsicht angezeigt; wenn das Koordinatensystem nicht gedreht ist, wird das Gitter auch in der Vorder- und Seitenansicht angezeigt.  Die Voreinstellungen im Menü 'Raster' werden durch den Eintrag `[DISPLAY]GRIDS` in der INI-Datei gesteuert.  Wenn nichts angegeben wird, ist die Voreinstellung `10mm 20mm 50mm 100mm 1in 2in 5in 10in`.

note: type: Plain text
en: Specifying a very small grid may decrease performance.
de: Die Angabe eines sehr kleinen Rasters kann die Leistung verringern.

note: type: Block title
en: Interacting
de: Interaktionen

note: type: Plain text
en: By left-clicking on a portion of the preview plot, the line will be highlighted in both the graphical and text displays.  By left-clicking on an empty area, the highlighting will be removed.
de: Wenn Sie mit der linken Maustaste auf einen Teil des Vorschaudiagramms klicken, wird die Linie sowohl in der grafischen Darstellung als auch in der Textanzeige hervorgehoben.  Wenn Sie mit der linken Maustaste auf einen leeren Bereich klicken, wird die Hervorhebung wieder entfernt.

note: type: Plain text
en: By dragging with the left mouse button pressed, the preview plot will be shifted (panned).
de: Durch Ziehen mit gedrückter linker Maustaste wird die Vorschaudarstellung verschoben (Panning).

note: type: Plain text
en: By dragging with shift and the left mouse button pressed, or by dragging with the mouse wheel pressed, the preview plot will be rotated.  When a line is highlighted, the center of rotation is the center of the line.  Otherwise, the center of rotation is the center of the entire program.
de: Durch Ziehen mit gedrückter linker Maustaste bei gedrückter Umschalttaste oder durch Ziehen mit gedrücktem Mausrad wird das Vorschaubild gedreht.  Bei einer hervorgehoben Linie ist der Drehpunkt der Mittelpunkt der Linie.  Andernfalls ist der Drehpunkt der Mittelpunkt des gesamten Programms.

note: type: Plain text
en: By rotating the mouse wheel, or by dragging with the right mouse button pressed, or by dragging with control and the left mouse button pressed, the preview plot will be zoomed in or out.
de: Durch Drehen des Mausrads oder durch Ziehen mit gedrückter rechter Maustaste oder durch Ziehen mit der Steuerung und gedrückter linker Maustaste wird die Vorschaudarstellung vergrößert oder verkleinert.

note: type: Plain text
en: By clicking one of the 'Preset View' icons, or by pressing 'V', several preset views may be selected.
de: Durch Anklicken eines der Symbole "Voreingestellte Ansicht" oder durch Drücken von "V" können mehrere voreingestellte Ansichten ausgewählt werden.

note: type: Title ===
en: Text Display Area
de: Textanzeigebereich

note: type: Plain text
en: By left-clicking a line of the program, the line will be highlighted in both the graphical and text displays.
de: Wenn Sie mit der linken Maustaste auf eine Zeile des Programms klicken, wird diese Zeile sowohl in der grafischen als auch in der Textanzeige hervorgehoben.

note: type: Plain text
en: When the program is running, the line currently being executed is highlighted in red. If no line has been selected by the user, the text display will automatically scroll to show the current line.
de: Wenn das Programm läuft, wird die Zeile, die gerade ausgeführt wird, rot hervorgehoben. Wenn der Benutzer keine Zeile ausgewählt hat, wird die Textanzeige automatisch umgeschaltet, um die aktuelle Zeile anzuzeigen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Current and Selected Lines
de: Aktuelle und ausgewählte Zeilen

note: type: Title ===
en: Manual Control
de: Manuelle Steuerung

note: type: Plain text
en: While the machine is turned on but not running a program, the items in the 'Manual Control' tab can be used to move the machine or control its spindle and coolant.
de: Wenn die Maschine eingeschaltet ist, aber kein Programm abläuft, können die Elemente auf der Registerkarte "Manuelle Steuerung" verwendet werden, um die Maschine zu bewegen oder ihre Spindel und Kühlmittel zu steuern.

note: type: Plain text
en: When the machine is not turned on, or when a program is running, the manual controls are unavailable.
de: Wenn das Gerät nicht eingeschaltet ist oder wenn ein Programm läuft, sind die manuellen Bedienelemente nicht verfügbar.

note: type: Plain text
en: Many of the items described below are not useful on all machines.  When AXIS detects that a particular pin is not connected in HAL, the corresponding item in the Manual Control tab is removed.  For instance, if the HAL pin 'spindle.0.brake' is not connected, then the 'Brake' button will not appear on the screen.  If the environment variable 'AXIS_NO_AUTOCONFIGURE' is set, this behavior is disabled and all the items will appear.
de: Viele der im Folgenden beschriebenen Elemente sind nicht bei allen Maschinen sinnvoll.  Wenn AXIS feststellt, dass ein bestimmter Pin in HAL nicht angeschlossen ist, wird das entsprechende Element auf der Registerkarte "Manuelle Steuerung" entfernt.  Ist zum Beispiel der HAL-Pin "spindle.0.brake" nicht angeschlossen, erscheint die Schaltfläche "Brake" nicht auf dem Bildschirm.  Ist die Umgebungsvariable 'AXIS_NO_AUTOCONFIGURE' gesetzt, so ist dieses Verhalten deaktiviert und alle Elemente werden angezeigt.

note: type: Block title
en: The Axis group
de: Die Achsengruppe

note: type: Plain text
en: 'AXIS' allows you to manually move the machine.  This action is known as 'jogging'.  First, select the axis to be moved by clicking it.  Then, click and hold the '+' or '-' button depending on the desired direction of motion.  The first four axes can also be moved by the arrow keys (X and Y), PAGE UP and PAGE DOWN keys (Z), and the [ and ] keys (A).
de: Mit 'AXIS' können Sie die Maschine manuell bewegen.  Diese Aktion wird als "Jogging" bezeichnet.  Wählen Sie zunächst die zu bewegende Achse durch Anklicken aus.  Klicken Sie dann auf die Schaltfläche "+" oder "-" und halten Sie sie gedrückt, je nachdem, in welche Richtung Sie verfahren möchten.  Die ersten vier Achsen können auch mit den Pfeiltasten (X und Y), den Tasten PAGE UP und PAGE DOWN (Z) und den Tasten [ und ] (A) bewegt werden.

note: type: Plain text
en: If 'Continuous' is selected, the motion will continue as long as the button or key is pressed.  If another value is selected, the machine will move exactly the displayed distance each time the button is clicked or the key is pressed.  By default, the available values are '0.1000, 0.0100, 0.0010, 0.0001'.
de: Wenn Sie "Kontinuierlich" auswählen, wird die Bewegung so lange fortgesetzt, wie die Schaltfläche oder Taste gedrückt wird.  Wenn ein anderer Wert gewählt wird, bewegt sich die Maschine bei jedem Klicken auf die Schaltfläche oder Drücken der Taste genau um die angezeigte Strecke.  Standardmäßig sind die folgenden Werte verfügbar: "0.1000, 0.0100, 0.0010, 0.0001".

note: type: Plain text
en: See the <<sub:ini:sec:display,DISPLAY Section>> for more information on setting the increments.
de: Siehe den <<sub:ini:sec:display,DISPLAY>> Abschnitt für weitere Informationen zum Einstellen der Schrittweiten.

note: type: Block title
en: Homing (Identity Kinematics)
de: Referenzfahrt (engl. homing) (Identitätskinematik)

note: type: Plain text
en: The INI file setting [KINS]JOINTS defines the total number of joints for the system.  A joint may be configured with a home switch or for 'immediate' homing.  Joints may specify a home sequence that organizes the order for homing groups of joints.
de: Die INI-Datei Einstellung [KINS]JOINTS definiert die Gesamtzahl der Gelenke für das System.  Ein Gelenk kann mit einem Referenzpunktschalter oder für eine "sofortige" Referenzfahrt konfiguriert werden.  Gelenke können eine Referenzfahrt-Reihenfolge angeben, um die Reihenfolge der Referenzfahrt für Gruppen von Gelenken zu organisieren.

note: type: Plain text
en: If *all* joints are configured for homing and have valid home sequences, the homing button will show 'Home All'. Pressing the 'Home All' button (or the Ctrl-HOME key) will initiate homing for all joints using their defined home sequences. Pressing the HOME key will home the joint corresponding to the currently selected axis even if no homing sequence is defined.
de: Wenn *alle* Gelenke für die Referenzfahrt konfiguriert sind und über gültige Referenzfahrten verfügen, zeigt die Referenzfahrt-Schaltfläche "Alle Referenzfahrten" an. Durch Drücken der Schaltfläche "Alle referenzieren" (oder der Taste Strg-Pos1 (engl. Ctrl-HOME) ) wird die Referenzfahrt für alle Gelenke unter Verwendung ihrer definierten Referenzfahrt-Sequenzen eingeleitet. Durch Drücken der Taste Pos1/HOME wird die Referenzfahrt für das Gelenk, das der aktuell ausgewählten Achse entspricht, eingeleitet, auch wenn keine Referenzfahrtsequenz definiert ist.

note: type: Plain text
en: If not all axes have valid home sequences, the homing button will show 'Home Axis' and will home the joint for the currently selected axis only.  Each axis must be selected and homed separately.
de: Wenn nicht alle Achsen über gültige Referenzfahrt-Sequenzen verfügen, zeigt die Referenzfahrt-Schaltfläche "Home Axis" (Referenzfahrt-Achse) an und führt die Referenzfahrt nur für die aktuell ausgewählte Achse durch.  Jede Achse muss separat ausgewählt und referenziert werden.

note: type: Plain text
en: The dropdown menu Machine/Homing provides an alternate method to home axes. The dropdown menu Machine/Unhoming provides means to unhome axes.
de: Das Dropdown-Menü Maschine/Referenzierung bietet eine alternative Methode zum Referenzieren von Achsen. Das Dropdown-Menü Maschine/Unhoming bietet die Möglichkeit, die Referenzfahrt von Achsen aufzuheben.

note: type: Plain text
en: If your machine does not have home switches defined in the configuration, the 'Home' button will set the current position of the selected axis as the absolute position 0 for that axis and will set the 'is-homed' bit for that axis.
de: Wenn Ihre Maschine keine Home-Schalter in der Konfiguration definiert hat, setzt die Schaltfläche "Home" die aktuelle Position der ausgewählten Achse als absolute Position 0 für diese Achse und setzt das Bit "is-homed" für diese Achse.

note: type: Plain text
en: See the <<cha:homing-configuration,Homing Configuration Chapter>> for more information.
de: Weitere Informationen finden Sie im Kapitel <<cha:homing-configuration,Referenzfahrt Konfiguration>>.

note: type: Block title
en: Homing (Non-Identity Kinematics)
de: Referenzfahrt (engl. homing) (nicht-Identität-Kinematik)

note: type: Plain text
en: Operation is similar to that for Identity Kinematics but, prior to homing, the selection radio buttons select joints by number. The homing button will show 'Home All' if all joints are configured for homing and have valid home sequences.  Otherwise, the homing button will show 'Home Joint'.
de: Die Bedienung ist ähnlich wie bei der Identitätskinematik, aber vor der Referenzfahrt wählen die Auswahlknöpfe die Gelenke nach Nummern aus. Die Schaltfläche für die Referenzfahrt zeigt "Home All" an, wenn alle Gelenke für die Referenzfahrt konfiguriert sind und über gültige Referenzfahrten verfügen.  Andernfalls zeigt die Schaltfläche für die Referenzfahrt "Home Joint" an.

note: type: Block title
en: Touch Off
de: Touch-Off

note: type: Plain text
en: By pressing 'Touch Off' or the END key, the 'G5x offset' for the current axis is changed so that the current axis value will be the specified value. Expressions may be entered using the rules for rs274ngc programs, except that variables may not be referred to. The resulting value is shown as a number.
de: Durch Drücken von 'Touch Off' oder der END-Taste wird der 'G5x-Offset' für die aktuelle Achse geändert, so dass der aktuelle Achsenwert dem angegebenen Wert entspricht. Ausdrücke können nach den Regeln für rs274ngc-Programme eingegeben werden, mit der Ausnahme, dass auf Variablen nicht Bezug genommen werden darf. Der resultierende Wert wird als Zahl angezeigt.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Touch Off Window
de: Touch Off Fenster

note: type: Plain text
en: See also the Machine menu options: 'Touch part' and 'Touch part holder'.
de: Siehe auch die Optionen im Menü Maschine: "Werkstück berühren" und "Werkstückhalter berühren".

note: type: Title ==
en: Tool Touch Off
de: Werkzeug Touch Off

note: type: Plain text
en: By pressing the 'Tool Touch Off' button the tool length and offsets of the currently loaded tool will be changed so that the current tool tip position matches the entered coordinate.
de: Durch Drücken der Schaltfläche 'Tool Touch Off' werden die Werkzeuglänge und die Offsets des aktuell geladenen Werkzeugs so verändert, dass die aktuelle Position der Werkzeugspitze mit der eingegebenen Koordinate übereinstimmt.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Tool Touch Off Window
de: Werkzeug Touch Off Fenster

note: type: Plain text
en: See also the 'Tool touch off to workpiece' and 'Tool touch off to fixture' options in the Machine menu.
de: Siehe auch die Optionen 'Werkzeug berühren auf Werkstück' und 'Werkzeug berühren auf Halterung' im Menü Maschine.

note: type: Table
en: Override Limits
de: Grenzwerte überschreiten

note: type: Plain text
en: By pressing Override Limits, the machine will temporarily be allowed to jog off of a physical limit switch. This check box is only available when a limit switch is tripped.  The override is reset after one jog.  If the axis is configured with separate positive and negative limit switches, LinuxCNC will allow the jog only in the correct direction.  _Override Limits will not allow a jog past a soft limit.  The only way to disable a soft limit on an axis is to Unhome it._
de: Wenn Sie auf "Grenzen außer Kraft setzen" (engl. override limits) klicken, kann die Maschine vorübergehend über einen physischen Endschalter hinausfahren. Dieses Kontrollkästchen ist nur verfügbar, wenn ein Endschalter ausgelöst wird.  Die Überbrückung wird nach einem Tippen zurückgesetzt.  Wenn die Achse mit separaten positiven und negativen Endschaltern konfiguriert ist, wird LinuxCNC das Joggen nur in der richtigen Richtung erlauben.  Die Funktion _Override Limits erlaubt kein Überschreiten eines Softlimits.  Der einzige Weg, um eine weiche Grenze auf einer Achse zu deaktivieren ist, um einen neuen Referenzpunkt zu bestimmen (engl. unhome)._

note: type: Block title
en: The Spindle group
de: Die Spindel-Gruppe

note: type: Plain text
en: The buttons on the first row select the direction for the spindle to rotate: Counterclockwise, Stopped, Clockwise. Counterclockwise will only show up if the pin 'spindle.0.reverse' is in the HAL file (it can be 'net trick-axis spindle.0.reverse' ). The buttons on the next row increase or decrease the rotation speed. The checkbox on the third row allows the spindle brake to be engaged or released. Depending on your machine configuration, not all the items in this group may appear. Pressing the spindle start button sets the 'S' speed to 1.
de: Mit den Buttons in der ersten Reihe wählen Sie die Drehrichtung der Spindel aus: Gegen den Uhrzeigersinn, Angehalten, Im Uhrzeigersinn. Gegen den Uhrzeigersinn wird nur angezeigt, wenn der Pin 'spindle.0.reverse' in der HAL-Datei enthalten ist (er kann 'net trick-axis spindle.0.reverse' sein). Die Schaltflächen in der nächsten Zeile erhöhen oder verringern die Drehgeschwindigkeit. Mit dem Kontrollkästchen in der dritten Zeile kann die Spindelbremse aktiviert oder deaktiviert werden. Je nach Maschinenkonfiguration werden möglicherweise nicht alle Elemente in dieser Gruppe angezeigt. Durch Drücken der Spindelstarttaste wird die 'S'-Drehzahl auf 1 gesetzt.

note: type: Block title
en: The Coolant group
de: Die Kühlmittelgruppe

note: type: Plain text
en: The two buttons allow the 'Mist' and 'Flood' coolants to be turned on and off.  Depending on your machine configuration, not all the items in this group may appear.
de: Mit den beiden Schaltflächen können die Kühlmittel 'Nebel' und 'Flut' ein- und ausgeschaltet werden.  Je nach Konfiguration Ihres Geräts werden möglicherweise nicht alle Elemente in dieser Gruppe angezeigt.

note: type: Plain text
en: MDI allows G-code commands to be entered manually.  When the machine is not turned on, or when a program is running, the MDI controls are unavailable.
de: Mit MDI können G-Code-Befehle manuell eingegeben werden.  Wenn das Gerät nicht eingeschaltet ist oder wenn ein Programm läuft, sind die MDI-Steuerungen nicht verfügbar.

note: type: Block title
en: The MDI tab
de: Die MDI-Registerkarte

note: type: Positional ($1) AttributeList argument for macro 'image'
en: MDI tab
de: MDI-Registerkarte

note: type: Plain text
en: 'History' - This shows MDI commands that have been typed earlier in this session.
de: 'Verlauf' - Hier werden MDI-Befehle angezeigt, die zuvor in dieser Sitzung eingegeben wurden.

note: type: Plain text
en: 'MDI Command' - This allows you to enter a G-code command to be executed. Execute the command by pressing Enter or by clicking 'Go'.
de: 'MDI-Befehl' - Hier können Sie einen G-Code-Befehl eingeben, der ausgeführt werden soll. Führen Sie den Befehl aus, indem Sie Enter drücken oder auf "Go" klicken.

note: type: Plain text
en: 'Active G-codes' - This shows the 'modal codes' that are active in the interpreter. For instance, 'G54' indicates that the 'G54 offset' is applied to all coordinates that are entered. When in Auto the Active G-codes represent the codes after any read ahead by the interpreter.
de: 'Aktive G-Codes' - Dies zeigt die 'modalen Codes', die im Interpreter aktiv sind. Zum Beispiel zeigt 'G54' an, dass der 'G54-Offset' auf alle eingegebenen Koordinaten angewendet wird. In Auto stellen die aktiven G-Codes die Codes nach dem Vorlesen durch den Interpreter dar.

note: type: Title ===
en: Feed Override
de: Vorschub Neufestsetzung (engl. override)

note: type: Plain text
en: By moving this slider, the programmed feed rate can be modified. For instance, if a program requests 'F60' and the slider is set to 120%, then the resulting feed rate will be 72.
de: Durch Verschieben dieses Schiebereglers kann der programmierte Vorschub geändert werden. Wenn z.B. ein Programm "F60" verlangt und der Schieberegler auf 120% eingestellt ist, dann ist der resultierende Vorschub 72.

note: type: Plain text
en: By moving this slider, the programmed spindle speed can be modified. For instance, if a program requests S8000 and the slider is set to 80%, then the resulting spindle speed will be 6400. This item only appears when the HAL pin 'spindle.0.speed-out' is connected.
de: Durch Verschieben dieses Schiebereglers kann die programmierte Spindeldrehzahl geändert werden. Wenn ein Programm beispielsweise S8000 anfordert und der Schieberegler auf 80% eingestellt ist, beträgt die resultierende Spindeldrehzahl 6400. Dieser Punkt erscheint nur, wenn der HAL-Pin 'spindle.0.speed-out' angeschlossen ist.

note: type: Title ===
en: Jog Speed
de: Jog-Geschwindigkeit

note: type: Plain text
en: By moving this slider, the speed of jogs can be modified. For instance, if the slider is set to 1 in/min, then a .01 inch jog will complete in about .6 seconds, or 1/100 of a minute. Near the left side (slow jogs) the values are spaced closely together, while near the right side (fast jogs) they are spaced much further apart, allowing a wide range of jog speeds with fine control when it is most important.
de: Durch Bewegen dieses Schiebereglers kann die Geschwindigkeit des Joggens geändert werden. Zum Beispiel, wenn der Schieberegler auf 1 Zoll / min eingestellt ist, dann wird ein 0,01-Zoll-Joggen in etwa 0,6 Sekunden oder 1/100 einer Minute abgeschlossen. In der Nähe der linken Seite (langsames Joggen) sind die Werte eng beieinander angeordnet, während sie in der Nähe der rechten Seite (schnelle Jogs) viel weiter voneinander entfernt sind, was eine breite Palette von Jog-Geschwindigkeiten mit feiner Kontrolle ermöglicht, wenn es am wichtigsten ist.

note: type: Plain text
en: On machines with a rotary axis, a second jog speed slider is shown.  This slider sets the jog rate for the rotary axes (A, B and C).
de: Auf Maschinen mit Drehachse wird ein zweiter Jog-Speed-Slider angezeigt.  Dieser Schieberegler legt die Jog-Rate für die Drehachsen (A, B und C) fest.

note: type: Title ===
en: Max Velocity
de: Max. Geschwindigkeit

note: type: Plain text
en: By moving this slider, the maximum velocity can be set. This caps the maximum velocity for all programmed moves except spindle-synchronized moves.
de: Durch Verschieben dieses Schiebereglers kann die maximale Geschwindigkeit eingestellt werden. Damit wird die maximale Geschwindigkeit für alle programmierten Bewegungen außer spindelsynchronisierten Bewegungen begrenzt.

note: type: Title ==
en: Keyboard Controls
de: Tastatursteuerung

note: type: Plain text
en: Almost all actions in AXIS can be accomplished with the keyboard. A full list of keyboard shortcuts can be found in the AXIS Quick Reference, which can be displayed by choosing Help > Quick Reference.  Many of the shortcuts are unavailable when in MDI mode.
de: Fast alle Aktionen in AXIS können über die Tastatur ausgeführt werden. Eine vollständige Liste der Tastaturkürzel finden Sie in der AXIS-Kurzreferenz, die Sie über Hilfe > Kurzreferenz aufrufen können.  Viele der Tastenkombinationen sind im MDI-Modus nicht verfügbar.

note: type: Title ===
en: Feed Override Keys
de: Vorschub-Neufestsetzung (engl. override)-Tasten

note: type: Plain text
en: For details on the Spanish keyboard layout please inspect the translated documentation.
de: Einzelheiten zur spanischen Tastaturbelegung entnehmen Sie bitte der übersetzten Dokumentation.

note: type: Plain text
en: The Feed Override keys behave differently when in Manual Mode.  The keys '12345678 will select an axis if it is programmed. If you have 3 axis then ' will select axis 0, 1 will select axis 1, and 2 will select axis 2. The remainder of the number keys will still set the Feed Override. When running a program '1234567890 will set the Feed Override to 0% - 100%.
de: Die Vorschub-Override-Tasten verhalten sich im manuellen Modus anders.  Die Tasten '12345678 wählen eine Achse aus, wenn diese programmiert ist. Wenn Sie 3 Achsen haben, wählt ' die Achse 0, 1 die Achse 1 und 2 die Achse 2. Die übrigen Zifferntasten stellen weiterhin den Vorschub-Override ein. Wenn Sie ein Programm ausführen, stellt '1234567890' den Vorschub-Override auf 0% - 100% ein.

note: type: Plain text
en: The most frequently used keyboard shortcuts are shown in the following table:
de: Die am häufigsten verwendeten Tastaturkürzel sind in der folgenden Tabelle aufgeführt:

note: type: Block title
en: Most Common Keyboard Shortcuts(((AXIS,Keyboard Shortcuts)))
de: Häufigste Tastaturkürzel(((AXIS,Keyboard Shortcuts)))

note: type: Table
en: Keystroke
de: Tastenkombination

note: type: Table
en: Action Taken
de: Ergriffene Maßnahmen

note: type: Table
en: Toggle Emergency Stop
de: Notaus ein-/ausschalten

note: type: Table
en: Any
de: Jede (engl. any)

note: type: Table
en: Turn machine on/off
de: Maschine ein-/ausschalten

note: type: Table
en: Set feed override from 0% to 100%
de: Vorschub-Override von 0% bis 100% einstellen

note: type: Table
en: Varies
de: Variiert

note: type: Table
en: Activate first axis
de: Erste Achse aktivieren

note: type: Table
en: Manual
de: Handbuch

note: type: Table
en: Activate second axis
de: Zweite Achse aktivieren

note: type: Table
en: Activate third axis
de: Dritte Achse aktivieren

note: type: Table
en: Activate fourth axis
de: Vierte Achse aktivieren

note: type: Table
en: Select jog increment
de: Jog-Inkrement auswählen

note: type: Table
en: Continuous jog
de: Kontinuierliches Joggen

note: type: Table
en: Control-Home
de: Steuerung-Pos1 (engl. Home)

note: type: Table
en: Perform homing sequence
de: Referenzfahrt durchführen

note: type: Table
en: End
de: Ende

note: type: Table
en: Touch off: Set G5x offset for active axis
de: Touch off: G5x Offset für aktive Achse setzen

note: type: Table
en: Left, Right
de: Links, Rechts

note: type: Table
en: Jog first axis
de: Erste Achse joggen

note: type: Table
en: Up, Down
de: Hoch, Runter

note: type: Table
en: Jog second axis
de: Zweite Achse joggen

note: type: Table
en: Pg Up, Pg Dn
de: Bild Hoch, Bild Runter (engl. Pg Up, Pg Dn)

note: type: Table
en: Jog third axis
de: Joggen der dritten Achse

note: type: Table
en: Jog fourth axis
de: Vierte Achse joggen

note: type: Table
en: Open File
de: Datei öffnen

note: type: Table
en: Control-R
de: Steuerung-R

note: type: Table
en: Reload File
de: Datei neu laden

note: type: Table
en: Run file
de: Datei ausführen

note: type: Table
en: Pause execution
de: Ausführung anhalten

note: type: Table
en: Resume Execution
de: Ausführung fortsetzen

note: type: Table
en: ESC
de: Esc

note: type: Table
en: Stop execution
de: Ausführung stoppen

note: type: Table
en: Control-K
de: Steuerung-K

note: type: Table
en: Clear backplot
de: Backplot löschen

note: type: Table
en: Auto/Manual
de: Auto/Manuell

note: type: Table
en: Cycle among preset views
de: Wechseln zwischen voreingestellten Ansichten

note: type: Table
en: Shift-Left,Right
de: Umschalttaste-Links,Rechts

note: type: Table
en: Rapid X Axis
de: Eilgang X-Achse

note: type: Table
en: Shift-Up,Down
de: Umschalttaste-Hoch/Runter

note: type: Table
en: Rapid Y Axis
de: Eilgang Y-Achse

note: type: Table
en: Shift-PgUp, PgDn
de: Umschalt-Bild auf, Bild ab

note: type: Table
en: Rapid Z Axis
de: Eilgang Z-Achse

note: type: Table
en: Toggle Actual/Commanded
de: Umschalten Ist/Befehl

note: type: Table
en: Toggle Relative/Machine
de: Umschalten Relativ/Maschine

note: type: Plain text
en: AXIS includes a program called 'linuxcnctop' which shows some of the details of LinuxCNC's state. You can run this program by invoking Machine > Show LinuxCNC Status
de: AXIS enthält ein Programm namens 'linuxcnctop', das einige der Details des LinuxCNC-Status anzeigt. Sie können dieses Programm ausführen, indem Sie Maschine > LinuxCNC-Status anzeigen aufrufen

note: type: Positional ($1) AttributeList argument for macro 'image'
en: LinuxCNC Status Window
de: LinuxCNC-Statusfenster

note: type: Plain text
en: The name of each item is shown in the left column. The current value is shown in the right column. If the value has recently changed, it is shown on a red background.
de: Der Name jedes Elements wird in der linken Spalte angezeigt. Der aktuelle Wert wird in der rechten Spalte angezeigt. Wenn sich der Wert kürzlich geändert hat, wird er rot unterlegt angezeigt.

note: type: Title ==
en: MDI interface
de: MDI-Schnittstelle

note: type: Plain text
en: AXIS includes a program called `mdi` which allows text-mode entry of MDI commands to a running LinuxCNC session. You can run this program by opening a terminal and typing:
de: AXIS enthält ein Programm namens `mdi`, das die Eingabe von MDI-Befehlen im Textmodus in eine laufende LinuxCNC-Sitzung ermöglicht. Sie können dieses Programm ausführen, indem Sie ein Terminal öffnen und eingeben:

note: type: Plain text
en: Once it is running, it displays the prompt 'MDI>'. When a blank line is entered, the machine's current position is shown.  When a command is entered, it is sent to LinuxCNC to be executed.
de: Sobald es läuft, wird die Eingabeaufforderung 'MDI>' angezeigt. Bei Eingabe einer leere Zeile wird die aktuelle Position der Maschine angezeigt.  Ein eingegebener Befehl wird an LinuxCNC gesendet, um ausgeführt zu werden.

note: type: Plain text
en: This is a sample session of mdi:
de: Dies ist eine Beispielsitzung von mdi:

note: type: Plain text
en: AXIS includes a program called 'axis-remote' which can send certain commands to a running AXIS. The available commands are shown by running 'axis-remote --help' and include checking whether AXIS is running ('--ping'), loading a file by name, reloading the currently loaded file ('--reload'), and making AXIS exit ('--quit').
de: AXIS enthält ein Programm namens 'axis-remote', das bestimmte Befehle an einen laufenden AXIS senden kann. Die verfügbaren Befehle werden durch Ausführen von 'axis-remote --help' angezeigt und umfassen die Überprüfung, ob AXIS läuft ('--ping'), das Laden einer Datei nach Namen, das erneute Laden der aktuell geladenen Datei ('--reload') und das Beenden von AXIS ('--quit').

note: type: Title ==
en: Manual Tool Change(((AXIS:Manual Tool Change)))
de: Manueller Werkzeugwechsel(((AXIS: Manueller Werkzeugwechsel)))

note: type: Plain text
en: LinuxCNC includes a userspace HAL component called 'hal_manualtoolchange', which shows a window prompt telling you what tool is expected when a 'M6' command is issued. After the OK button is pressed, execution of the program will continue.
de: LinuxCNC enthält eine Userspace-HAL-Komponente namens 'hal_manualtoolchange', die ein Fenster zeigt, das Ihnen sagt, welches Werkzeug erwartet wird, wenn ein 'M6'-Befehl ausgegeben wird. Nach dem Drücken der Schaltfläche OK wird die Ausführung des Programms fortgesetzt.

note: type: Plain text
en: The hal_manualtoolchange component includes a HAL pin for a button that can be connected to a physical button to complete the tool change and remove the window prompt (hal_manualtoolchange.change_button).
de: Die Komponente hal_manualtoolchange enthält einen HAL-Pin für eine Taste, die mit einer physischen Taste verbunden werden kann, um den Werkzeugwechsel abzuschließen und die Fensteraufforderung zu entfernen (hal_manualtoolchange.change_button).

note: type: Plain text
en: The HAL configuration file 'lib/hallib/axis_manualtoolchange.hal' shows the HAL commands necessary to use this component.
de: Die HAL-Konfigurationsdatei 'lib/hallib/axis_manualtoolchange.hal' enthält die HAL-Befehle, die zur Verwendung dieser Komponente erforderlich sind.

note: type: Plain text
en: hal_manualtoolchange can be used even when AXIS is not used as the GUI.  This component is most useful if you have presettable tools and you use the tool table.
de: hal_manualtoolchange kann auch verwendet werden, wenn AXIS nicht als GUI verwendet wird.  Diese Komponente ist besonders nützlich, wenn Sie voreinstellbare Werkzeuge haben und die Werkzeugtabelle verwenden.

note: type: Plain text
en: Important Note: Rapids will not show on the preview after a T<n> is issued until the next feed move after the M6.  This can be very confusing to most users.  To turn this feature off for the current tool change program a G1 with no move after the T<n>.
de: Wichtiger Hinweis: Eilgänge werden nach der Ausgabe eines T<n> bis zum nächsten Vorschub nach dem M6 nicht in der Vorschau angezeigt.  Dies kann für die meisten Anwender sehr verwirrend sein.  Um diese Funktion für den aktuellen Werkzeugwechsel auszuschalten, programmieren Sie ein G1 ohne Vorschub nach dem T<n>.

note: type: Block title
en: Manual Toolchange Window(((AXIS:Manual Toolchange Window)))
de: Fenster für manuellen Werkzeugwechsel(((AXIS:Fenster für manuellen Werkzeugwechsel)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Manual Toolchange Window
de: Fenster für Manuellen Werkzeugwechsel

note: type: Title ==
en: Python modules(((AXIS:Python Modules)))
de: Python-Module(((AXIS:Python-Module)))

note: type: Plain text
en: AXIS includes several Python modules which may be useful to others. For more information on one of these modules, use 'pydoc <module name>' or read the source code. These modules include:
de: AXIS enthält mehrere Python-Module, die für andere nützlich sein können. Für weitere Informationen über eines dieser Module verwenden Sie 'pydoc <Modulname>' oder lesen Sie den Quellcode. Zu diesen Modulen gehören:

note: type: Plain text
en: 'emc' provides access to the LinuxCNC command, status, and error channels
de: emc' ermöglicht den Zugriff auf die LinuxCNC Befehls-, Status- und Fehlerkanäle

note: type: Plain text
en: 'gcode' provides access to the rs274ngc interpreter
de: 'gcode' bietet Zugriff auf den RS274NGC-Interpreter

note: type: Plain text
en: 'rs274' provides additional tools for working with rs274ngc files
de: 'rs274' bietet zusätzliche Tools für die Arbeit mit RS274NGC-Dateien

note: type: Plain text
en: 'hal' allows the creation of userspace HAL components written in Python
de: 'hal' ermöglicht die Erstellung von in Python geschriebenen Userspace-HAL-Komponenten

note: type: Plain text
en: '_togl' provides an OpenGL widget that can be used in Tkinter applications
de: '_togl' stellt ein OpenGL-Widget bereit, das in Tkinter-Anwendungen verwendet werden kann

note: type: Plain text
en: 'minigl' provides access to the subset of OpenGL used by AXIS
de: 'minigl' bietet Zugriff auf die von AXIS verwendete Teilmenge von OpenGL

note: type: Plain text
en: To use these modules in your own scripts, you must ensure that the directory where they reside is on Python's module path. When running an installed version of LinuxCNC, this should happen automatically. When running 'in-place', this can be done by using 'scripts/rip-environment'.
de: Um diese Module in Ihren eigenen Skripten zu verwenden, müssen Sie sicherstellen, dass sich das Verzeichnis, in dem sie sich befinden, im Modulpfad von Python befindet. Wenn Sie eine installierte Version von LinuxCNC ausführen, sollte dies automatisch geschehen. Wenn Sie "in-place" laufen, können Sie dies mit "scripts/rip-environment" tun.

note: type: Title ==
en: Using AXIS in Lathe Mode(((AXIS:Lathe Mode)))
de: Verwendung von AXIS im Drehmaschinenmodus(((AXIS:Drehmaschinenmodus)))

note: type: Plain text
en: By including the line 'LATHE = 1' in the [DISPLAY] section of the INI file, AXIS selects lathe mode. The 'Y' axis is not shown in coordinate readouts, the view is changed to show the Z axis extending to the right and the X axis extending towards the bottom of the screen, and several controls (such as those for preset views) are removed.  The coordinate readouts for X are replaced with diameter and radius.
de: Durch Einfügen der Zeile 'LATHE = 1' in den Abschnitt [DISPLAY] der INI-Datei wählt AXIS den Drehmaschinenmodus. Die Y-Achse wird in den Koordinatenanzeigen nicht angezeigt, die Ansicht wird so geändert, dass die Z-Achse nach rechts und die X-Achse zum unteren Rand des Bildschirms zeigt, und mehrere Steuerelemente (z. B. die für voreingestellte Ansichten) werden entfernt.  Die Koordinatenanzeigen für X werden durch Durchmesser und Radius ersetzt.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: AXIS Lathe Mode
de: AXIS-Drehmaschinenmodus

note: type: Plain text
en: Pressing 'V' zooms out to show the entire file, if one is loaded.
de: Durch Drücken von 'V' wird die gesamte Datei angezeigt, sofern eine solche geladen ist.

note: type: Plain text
en: When in lathe mode, the shape of the loaded tool (if any) is shown.
de: Im Drehmaschinenmodus wird die Form des geladenen Werkzeugs (falls vorhanden) angezeigt.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Lathe Tool Shape
de: Drehwerkzeug-Form

note: type: Plain text
en: To change the display to a back tool lathe you need to have both 'LATHE = 1' and 'BACK_TOOL_LATHE = 1' in the [DISPLAY] section. This will invert the view and put the tool on the back side of the Z axis.
de: Um die Anzeige in eine Drehbank mit hinterem Werkzeug zu ändern, müssen Sie sowohl 'LATHE = 1' als auch 'BACK_TOOL_LATHE = 1' in der Sektion [DISPLAY] eingeben. Dadurch wird die Ansicht umgedreht und das Werkzeug auf die Rückseite der Z-Achse gelegt.

note: type: Title ==
en: Using AXIS in Foam Cutting mode
de: Verwendung von AXIS im Modus Schaumstoffschneiden (engl. foam cutting mode)

note: type: Plain text
en: By including the line 'FOAM = 1' in the [DISPLAY] section of the INI file, AXIS selects foam-cutting mode.  In the program preview, XY motions are displayed in one plane, and UV motions in another.  In the live plot, lines are drawn between corresponding points on the XY plane and the UV plane.  The special comments (XY_Z_POS) and (UV_Z_POS)  set the Z coordinates of these planes, which default to 0 and 1.5 machine units.
de: Durch Einfügen der Zeile 'FOAM = 1' in den [DISPLAY]-Abschnitt der INI-Datei wählt AXIS den Schaumschneidemodus.  In der Programmvorschau werden die XY-Bewegungen in einer Ebene und die UV-Bewegungen in einer anderen Ebene angezeigt.  In der Live-Darstellung werden Linien zwischen entsprechenden Punkten auf der XY-Ebene und der UV-Ebene gezeichnet.  Die speziellen Kommentare (XY_Z_POS) und (UV_Z_POS) legen die Z-Koordinaten dieser Ebenen fest, die standardmäßig 0 und 1,5 Maschineneinheiten betragen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Foam Cutting Mode
de: Modus Schaumstoffschneiden

note: type: Title ==
en: Advanced Configuration
de: Erweiterte Konfiguration

note: type: Plain text
en: When AXIS is started it creates the HAL pins for the GUI then it executes the HAL file named in the INI file: '[HAL]POSTGUI_HALFILE=<filename>'.  Typically '<filename>' would be the configs base name + '_postgui' + '.hal' eg. 'lathe_postgui.hal', but can be any legal filename.  These commands are executed after the screen is built, guaranteeing the widget's HAL pins are available.  You can have multiple line of 'POSTGUI_HALFILE=<filename>' in the INI.  Each will be run one after the other in the order they appear.
de: Wenn AXIS gestartet wird, werden die HAL-Pins für die grafische Benutzeroberfläche erstellt und die in der INI-Datei genannte HAL-Datei ausgeführt: '[HAL]POSTGUI_HALFILE=<Dateiname>'.  Typischerweise ist '<Dateiname>' der Basisname der Konfiguration + '_postgui' + '.hal', z.B. 'lathe_postgui.hal', kann aber jeder beliebige Dateiname sein.  Diese Befehle werden nach der Erstellung des Bildschirms ausgeführt und garantieren, dass die HAL-Pins des Widgets verfügbar sind.  Sie können mehrere Zeilen mit 'POSTGUI_HALFILE=<Dateiname>' in der INI haben.  Sie werden nacheinander in der Reihenfolge ausgeführt, in der sie erscheinen.

note: type: Plain text
en: For more information on the INI file settings that can change the way AXIS works, see the <<sub:ini:sec:display,Display Section>> of the INI configuration chapter.
de: Weitere Informationen zu den Einstellungen in der INI-Datei der Funktionsweise von AXIS, finden Sie im Kapitel INI-Konfiguration zur <<sub:ini:sec:display,Display Section>>.

note: type: Title ===
en: Program Filters
de: Programm-Filter

note: type: Plain text
en: AXIS has the ability to send loaded files through a 'filter program'.  This filter can do any desired task: Something as simple as making sure the file ends with 'M2', or something as complicated as generating G-code from an image.
de: AXIS hat die Möglichkeit, geladene Dateien durch ein "Filterprogramm" zu schicken.  Dieser Filter kann jede gewünschte Aufgabe erfüllen: Etwas so Einfaches wie sicherzustellen, dass die Datei mit "M2" endet, oder etwas so Kompliziertes wie die Erzeugung von G-Code aus einem Bild.

note: type: Plain text
en: The '[FILTER]' section of the INI file controls how filters work.  First, for each type of file, write a 'PROGRAM_EXTENSION' line.  Then, specify the program to execute for each type of file.  This program is given the name of the input file as its first argument, and must write rs274ngc code to standard output. This output is what will be displayed in the text area, previewed in the display area, and executed by LinuxCNC when 'Run'. The following lines add support for the 'image-to-gcode' converter included with LinuxCNC:
de: Der Abschnitt [FILTER] der INI-Datei steuert, wie die Filter funktionieren. Schreiben Sie zunächst für jeden Dateityp eine PROGRAM_EXTENSION-Zeile.  Dann geben Sie das Programm an, das für jeden Dateityp ausgeführt werden soll. Dieses Programm erhält den Namen der Eingabedatei als erstes Argument und muss rs274ngc-Code in die Standardausgabe schreiben. Diese Ausgabe ist das, was im Textbereich angezeigt wird, in der Vorschau im Anzeigebereich, und dann auch von LinuxCNC ausgeführt wird.  Die folgenden Zeilen fügen Unterstützung für den in LinuxCNC enthaltenen "image-to-gcode" (engl. für Bild zu G-Code) -Konverter hinzu:

note: type: Plain text
en: In this way, any Python script can be opened, and its output is treated as G-code. One such example script is available at 'nc_files/holecircle.py'. This script creates G-code for drilling a series of holes along the circumference of a circle.
de: Auf diese Weise kann jedes Python-Skript geöffnet werden, und seine Ausgabe wird als G-Code behandelt. Ein solches Beispielskript ist unter "nc_files/holecircle.py" verfügbar. Dieses Skript erzeugt G-Code für das Bohren einer Reihe von Löchern entlang des Umfangs eines Kreises.

note: type: Named 'alt' AttributeList argument for macro 'image'
en: Circular Holes
de: Kreisförmige Löcher

note: type: Plain text
en: If the environment variable AXIS_PROGRESS_BAR is set, then lines written to stderr of the form
de: Wenn die Umgebungsvariable AXIS_PROGRESS_BAR gesetzt ist, werden in stderr Zeilen der Form

note: type: Plain text
en: will set the AXIS progress bar to the given percentage. This feature should be used by any filter that runs for a long time.
de: setzt den AXIS-Fortschrittsbalken auf den angegebenen Prozentsatz. Diese Funktion sollte von jedem Filter verwendet werden, der lange läuft.

note: type: Title ===
en: The X Resource Database
de: Die X-Ressourcen-Datenbank

note: type: Plain text
en: The colors of most elements of the AXIS user interface can be customized through the X Resource Database. The sample file 'axis_light_background' changes the colors of the backplot window to a 'dark lines on white background' scheme, and also serves as a reference for the configurable items in the display area.  The sample file 'axis_big_dro' changes the position readout to a larger size font.  To use these files:
de: Die Farben der meisten Elemente der AXIS-Benutzeroberfläche können über die X-Ressourcen-Datenbank angepasst werden. Die Beispieldatei 'axis_light_background' ändert die Farben des Backplot-Fensters in ein Schema "dunkle Linien auf weißem Hintergrund" und dient auch als Referenz für die konfigurierbaren Elemente im Anzeigebereich. Die Beispieldatei 'axis_big_dro' ändert die Positionsanzeige in eine größere Schriftart. So verwenden Sie diese Dateien:

note: type: Plain text
en: For information about the other items which can be configured in Tk applications, see the Tk man pages.
de: Informationen zu den anderen Elementen, die in Tk-Anwendungen konfiguriert werden können, finden Sie auf den Manpages von Tk.

note: type: Plain text
en: Because modern desktop environments automatically make some settings in the X Resource Database that adversely affect AXIS, by default these settings are ignored. To make the X Resource Database items override AXIS defaults, include the following line in your X Resources:
de: Da moderne Desktop-Umgebungen automatisch einige Einstellungen in der X-Ressourcen-Datenbank vornehmen, die sich nachteilig auf AXIS auswirken, werden diese Einstellungen standardmäßig ignoriert. Damit die Elemente der X-Ressourcen-Datenbank die AXIS-Standardeinstellungen außer Kraft setzen, fügen Sie die folgende Zeile in Ihre X-Ressourcen ein:

note: in this case, we want the asterisks to actually appear. type: Plain text
en: this causes the built-in options to be created at the option level 'widgetDefault', so that X Resources (which are level 'userDefault')  can override them.
de: Dies bewirkt, dass die eingebauten Optionen auf der Optionsebene 'widgetDefault' erstellt werden, so dass X-Ressourcen (die der Ebene 'userDefault' angehören) sie außer Kraft setzen können.

note: type: Title ===
en: Jogwheel(((AXIS:Jogwheel)))
de: Handrad (engl. jogwheel)(((AXIS:Jogwheel)))

note: type: Plain text
en: To improve the interaction of AXIS with a physical jogwheel, the current active axis selected in the GUI is also reported on a 'HAL pin' with a name like 'axisui.jog.x'.  Except for a short time after the current axis has changed, only one of these pins at a time is 'TRUE', the others remain 'FALSE'.
de: Um die Interaktion von AXIS mit einem physischen Jogwheel zu verbessern, wird die aktuell aktive Achse, die in der GUI ausgewählt wurde, auch an einen 'HAL-Pin' mit einem Namen wie 'axisui.jog.x' gemeldet.  Außer für eine kurze Zeit nach dem Wechsel der aktuellen Achse ist jeweils nur einer dieser Pins 'TRUE', die anderen bleiben 'FALSE'.

note: type: Plain text
en: After AXIS has created these 'HAL pins', it runs the HAL file declared with: [HAL]POSTGUI_HALFILE. What differs from [HAL]HALFILE, which can only be used once.
de: Nachdem AXIS diese HAL-Pins erstellt hat, führt es die HAL-Datei aus, die mit: [HAL]POSTGUI_HALFILE deklariert ist. Was unterscheidet sich von [HAL]HALFILE, die nur einmal verwendet werden kann.

note: type: Plain text
en: If it exists, the contents of `~/.axisrc` are executed as Python source code just before the AXIS GUI is displayed. The details of what may be written in the `~/.axisrc` are subject to change during the development cycle.
de: Wenn sie existiert, wird der Inhalt von `~/.axisrc` als Python-Quellcode ausgeführt, kurz bevor die AXIS-GUI angezeigt wird. Die Details dessen, was in `~/.axisrc` geschrieben werden kann, können sich während des Entwicklungszyklus ändern.

note: type: Plain text
en: The following adds Control-Q as a keyboard shortcut for Quit.
de: Im Folgenden wird Strg-Q als Tastenkombination für Beenden hinzugefügt.

note: type: Block title
en: Example of .axisrc file
de: Beispiel einer .axisrc-Datei

note: type: Plain text
en: The following stops the "Do you really want to quit" dialog.
de: Das folgende Beispiel stoppt den Dialog "Wollen Sie wirklich beenden".

note: type: Title ===
en: External Editor
de: Externer Editor

note: type: Plain text
en: The menu options File > Edit... and File > Edit Tool Table... become available after defining the editor in the INI section [DISPLAY].  Useful values include EDITOR=gedit and EDITOR=gnome-terminal -e vim.  For more information, see the <<sub:ini:sec:display,Display Section>> of the INI Configuration Chapter.
de: Die Menüpunkte Datei > Bearbeiten... und Datei > Werkzeugtabelle bearbeiten... werden nach der Definition des Editors im INI-Abschnitt [DISPLAY] verfügbar.  Nützliche Werte sind EDITOR=gedit und EDITOR=gnome-terminal -e vim.  Weitere Informationen finden Sie unter <<sub:ini:sec:display,Display Section>> im Kapitel INI-Konfiguration.

note: type: Title ===
en: Virtual Control Panel(((AXIS: Virtual Control Panel)))
de: Virtuelles Bedienfeld (engl. virtual control panel, kurz VCP)(((AXIS: Virtuelles Bedienfeld)))

note: type: Plain text
en: AXIS can display a custom virtual control panel in either the right side column or the bottom row.  Additionally one or more panels may be displayed as embedded tabs.  You can program buttons, indicators, data displays and more. For more information, see the <<cha:pyvcp,PyVCP>> and the <<cha:glade-vcp,GladeVCP>> chapters.
de: AXIS kann ein benutzerdefiniertes virtuelles Bedienfeld entweder in der rechten Spalte oder in der unteren Zeile anzeigen.  Zusätzlich können ein oder mehrere Bedienfelder als eingebettete Registerkarten angezeigt werden.  Sie können Schaltflächen, Indikatoren, Datenanzeigen und mehr programmieren. Weitere Informationen finden Sie in den Kapiteln <<cha:pyvcp,PyVCP>> und <<cha:glade-vcp,GladeVCP>>.

note: type: Title ===
en: Preview Control(((AXIS: Preview Control)))
de: Vorschau-Steuerung(((AXIS: Vorschau-Steuerung)))

note: type: Plain text
en: Special comments can be inserted into the G-code file to control how the preview of AXIS behaves. In the case where you want to limit the drawing of the preview use these special comments. Anything between the (AXIS,hide) and (AXIS,show) will not be drawn during the preview. The (AXIS,hide) and (AXIS,show) must be used in pairs with the (AXIS,hide)  being first. Anything after a (AXIS,stop) will not be drawn during the preview.
de: Spezielle Kommentare können in die G-Code-Datei eingefügt werden, um zu steuern, wie sich die Vorschau von AXIS verhält. Wenn Sie das Zeichnen der Vorschau einschränken wollen, verwenden Sie diese speziellen Kommentare. Alles, was zwischen (AXIS,hide) und (AXIS,show) liegt, wird während der Vorschau nicht gezeichnet. (AXIS,hide) und (AXIS,show) müssen paarweise verwendet werden, wobei (AXIS,hide) an erster Stelle steht. Alles, was nach einem (AXIS,stop) kommt, wird während der Vorschau nicht gezeichnet.

note: type: Plain text
en: These comments are useful to unclutter the preview display (for instance while debugging a larger G-code file, one can disable the preview on certain parts that are already working OK).
de: Diese Kommentare sind nützlich, um die Anzeige der Vorschau zu entschlacken (z. B. kann man bei der Fehlersuche in einer größeren G-Code-Datei die Vorschau für bestimmte Teile, die bereits gut funktionieren, deaktivieren).

note: type: Plain text
en: (AXIS,hide) Stops the preview (must be first)
de: (AXIS,hide) Stoppt die Vorschau (muss zuerst sein)

note: type: Plain text
en: (AXIS,show) Resumes the preview (must follow a hide)
de: (AXIS,show) Setzt die Vorschau fort (muss auf ein 'hide' folgen)

note: type: Plain text
en: (AXIS,stop) Stops the preview from here to the end of the file.
de: (AXIS,stop) Stoppt die Vorschau von hier bis zum Ende der Datei.

note: type: Plain text
en: (AXIS,notify,the_text) Displays the_text as an info display
de: (AXIS,notify,the_text) Zeigt the_text als Infoanzeige an

note: type: Plain text
en: This display can be useful in the AXIS preview when (debug,message) comments are not displayed.
de: Diese Anzeige kann in der AXIS-Vorschau nützlich sein, wenn (Debug-, Nachrichten-) Kommentare nicht angezeigt werden.

note: type: Plain text
en: To improve the interaction of AXIS with physical jog wheels, the axis currently selected in the GUI is also reported on a pin with a name like 'axisui.jog.x'. One of these pins is 'TRUE' at one time, and the rest are 'FALSE'. These are meant to control motion's jog-enable pins.
de: Um die Interaktion von AXIS mit physischen Jogwheels zu verbessern, wird die aktuell in der GUI ausgewählte Achse auch auf einem Pin mit einem Namen wie 'axisui.jog.x' gemeldet. Einer dieser Pins ist immer 'TRUE', die anderen sind 'FALSE'. Diese sind dazu gedacht, die Jog-Aktivierungspins von Motion zu steuern.

note: type: Block title
en: Axisui Pins
de: Axisui-Pins

note: type: Plain text
en: AXIS has HAL pins to indicate which jog radio button is selected in the 'Manual Control' tab.
de: AXIS verfügt über HAL-Pins, die anzeigen, welcher Jog-Radio-Button auf der Registerkarte "Manuelle Steuerung" ausgewählt ist.

note: type: Plain text
en: AXIS has a HAL pin to indicate the jog increment selected on the 'Manual Tab'.
de: AXIS verfügt über einen HAL-Pin zur Anzeige der auf der Registerkarte "Manuell" ausgewählten Schrittweite.

note: type: Plain text
en: AXIS has a HAL output pin that indicates when an abort has occurred. The 'axisui.abort' pin will be 'TRUE' and come back to 'FALSE' after 0.3ms.
de: AXIS hat einen HAL-Ausgangspin, der anzeigt, wenn ein Abbruch stattgefunden hat. Der Pin 'axisui.abort' wird 'TRUE' und kehrt nach 0,3 ms auf 'FALSE' zurück.

note: type: Plain text
en: AXIS has a HAL output pin that indicates when an error has occurred. The 'axisui.error' pin will remain 'TRUE' until all error notifications have been dismissed.
de: AXIS verfügt über einen HAL-Ausgabe-Pin, der anzeigt, wenn ein Fehler aufgetreten ist. Der Pin 'axisui.error' bleibt 'TRUE', bis alle Fehlerbenachrichtigungen geschlossen wurden.

note: type: Plain text
en: AXIS has HAL input pins to clear the pop up notifications for errors and information.
de: AXIS verfügt über HAL-Eingangspins, um die Popup-Benachrichtigungen nach Fehlern und Informationen zu löschen.

note: type: Plain text
en: AXIS has a HAL input pin that disables/enables the 'Pause/Resume' function.
de: AXIS verfügt über einen HAL-Eingangspin, der die Funktion "Pause/Resume" deaktiviert/aktiviert.

note: type: Title ==
en: AXIS Customization Hints
de: Hinweise zur AXIS-Anpassung

note: type: Plain text
en: AXIS is a fairly large and difficult-to-penetrate code base, this is helpful To keep the code stable but makes it difficult to customize.
    Here we will show code snippets to modify behaviours or visuals of the screen. Keep in mind the internal code of AXIS can change from time to time.
    these snippets are not guaranteed to continue to work - they may need adjustment.
de: AXIS ist eine ziemlich große und schwer zu durchdringende Codebasis. Das ist hilfreich, um den Code stabil zu halten, macht es aber schwierig, ihn anzupassen.
    Hier werden wir Codeschnipsel zeigen, um das Verhalten oder die Darstellung des Bildschirms zu ändern. Bitte beachten Sie, dass sich der interne Code von AXIS von Zeit zu Zeit ändern kann.
    Es ist nicht garantiert, dass diese Schnipsel weiterhin funktionieren - sie müssen möglicherweise angepasst werden.

note: type: Title ===
en: The update function
de: Die Update-Funktion

note: type: Plain text
en: There is a function in AXIS named user_live_update that is called every time AXIS updates itself. You can use this to update your own functions.
de: In AXIS gibt es eine Funktion namens user_live_update, die jedes Mal aufgerufen wird, wenn AXIS sich selbst aktualisiert. Sie können diese Funktion verwenden, um Ihre eigenen Funktionen zu aktualisieren.

note: type: Title ===
en: Disable the Close Dialog
de: Deaktivieren des Schließen-Dialogs

note: type: delimited block -
en: # disable the do you want to close dialog
    root_window.tk.call("wm","protocol",".","WM_DELETE_WINDOW","destroy .")
de: # Deaktivieren Sie den "Do you want to close"-Dialog
    root_window.tk.call("wm", "protocol",".", "WM_DELETE_WINDOW", "destroy .")

note: type: Title ===
en: Change the Text Font
de: Ändern Sie die Textschriftart

note: type: delimited block -
en: # change the font
de: # Schriftart ändern

note: type: delimited block -
en: # redo the text in tabs so they resize for the new default font
de: # den Text in den Tabs so umgestalten, dass er die Größe der neuen Standardschriftart annimmt

note: type: delimited block -
en: # G-code font is independent
de: # G-Code-Schriftart ist unabhängig

note: type: Title ===
en: Modify Rapid Rate with Keyboard Shortcuts
de: Ändern der Rapid Rate mit Tastenkombinationen

note: type: delimited block -
en: # use control + ` or 1-0 as keyboard shortcuts for rapidrate and keep ` or 1-0 for feedrate
    # also adds text to quick reference in help
de: # Verwenden Sie Control + ` oder 1-0 als Tastaturkürzel für die rapid rate und behalten Sie ` oder 1-0 für feedrate
    # fügt auch Text zur Kurzreferenz in der Hilfe hinzu

note: type: delimited block -
en: help1.insert(10,("Control+ `,1..9,0", _("Set Rapid Override from 0% to 100%")),)
de: help1.insert(10,("Strg+ `,1..9,0", _("Set Rapid Override from 0% to 100%")),)

note: type: Title ===
en: Read the INI file
de: Lesen der INI-Datei

note: type: delimited block -
en: # read an INI file item
    machine = inifile.find('EMC','MACHINE')
    print('machine name =',machine)
de: # INI-Dateielement lesen
    machine = inifile.find('EMC','MACHINE')
    print('machine name =',machine)

note: type: Title ===
en: Change the current view
de: Ändern der aktuellen Ansicht

note: type: delimited block -
en: # set the view of the preview
    # valid views are view_x view_y view_y2 view_z view_z2 view_p
    commands.set_view_z()
de: # Legen Sie die Ansicht der Vorschau fest.
    # gültige Ansichten sind view_x view_y view_y2 view_z view_z2 view_p
    commands.set_view_z()

note: type: Title ===
en: Creating new AXISUI HAL Pins
de: Erstellen neuer AXISUI HAL-Pins

note: type: Title ===
en: Creating new HAL Component and Pins
de: Neue HAL-Komponente und Pins erstellen

note: type: delimited block -
en: # create a component
de: # Komponente erstellen

note: type: delimited block -
en: mycomp = hal.component('my_component')
    mycomp.newpin('idle-led',hal.HAL_BIT,hal.HAL_IN)
    mycomp.newpin('pause-led',hal.HAL_BIT,hal.HAL_IN)
    mycomp.ready()
de: mycomp = hal.component('meine_Komponente')
    mycomp.newpin('idle-led',hal.HAL_BIT,hal.HAL_IN)
    mycomp.newpin('pause-led',hal.HAL_BIT,hal.HAL_IN)
    mycomp.ready()

note: type: delimited block -
en: # connect pins
de: # Pins verbinden

note: type: delimited block -
en: # set a pin
de: # Pin setzen

note: type: delimited block -
en: hal.set_p('my_component.pause-led','1')
de: hal.set_p('meine_Komponente.pause-led','1')

note: type: delimited block -
en: # get a pin 2,8+ branch
de: # Pin auslesen (engl. get) ab Version 2.8

note: type: Title ===
en: Switch Tabs with HAL Pins
de: Tabs wechseln mit HAL-Pins

note: type: delimited block -
en: # HAL pins from a GladeVCP panel will not be ready when user_live_update is run
    # to read them you need to put them in a try/except block
de: # HAL Pins von einem GladeVCP-Panel werden nicht bereit sein, wenn user_live_update ausgeführt wird.
    # um sie zu lesen, müssen Sie sie in einen try/except-Block setzen

note: type: delimited block -
en: # the following example assumes 5 HAL buttons in a GladeVCP panel used to switch
    # the tabs in the AXIS screen.
    # button names are 'manual-tab', 'mdi-tab', 'preview-tab', 'dro-tab', 'user0-tab'
    # the user_0 tab if it exists would be the first GladeVCP embedded tab
de: # Das folgende Beispiel geht von 5 HAL-Tasten in einem GladeVCP-Panel aus, die zum Umschalten
    # die Registerkarten von AXIS.
    # Die Namen der Schaltflächen sind 'manual-tab', 'mdi-tab', 'preview-tab', 'dro-tab', 'user0-tab'.
    # Die Registerkarte "user_0" wäre, falls vorhanden, die erste in GladeVCP eingebettete Registerkarte.

note: type: delimited block -
en: # for LinuxCNC 2.8+ branch
de: # LinuxCNC ab Version 2.8

note: type: Title ===
en: Add a GOTO Home button
de: Hinzufügen einer GOTO Referenzpunkt (engl. Home)-Taste

note: type: delimited block -
en: # make a button to home y axis
    root_window.tk.call('button','.pane.top.tabs.fmanual.homey','-text','Home Y','-command','goto_home Y','-height','2')
de: # einen Button für die Y-Achse erzeugen
    root_window.tk.call('button','.pane.top.tabs.fmanual.homey','-text','Home Y','-command','goto_home Y','-height','2')

note: type: delimited block -
en: # place the button
    root_window.tk.call('grid','.pane.top.tabs.fmanual.homey','-column','1','-row','7','-columnspan','2','-padx','4','-sticky','w')
de: # Platzieren des Button
    root_window.tk.call('grid','.pane.top.tabs.fmanual.homey','-column','1','-row','7','-columnspan','2','-padx','4','-sticky','w')

note: type: delimited block -
en: # any function called from Tcl needs to be added to TclCommands
    TclCommands.goto_home = goto_home
    commands = TclCommands(root_window)
de: # jede Funktion, die aus Tcl aufgerufen wird, muss zu TclCommands hinzugefügt werden
    TclCommands.goto_home = goto_home
    Befehle = TclCommands(root_window)

note: type: Title ===
en: Add Button to manual frame
de: Button zum manuellen Rahmen hinzufügen

note: type: delimited block -
en: # make a new button and put it in the manual frame
de: # Erstellen eines neuen Button und einfügen in den manuellen Rahmen

note: type: delimited block -
en: # the above send the "mybutton_clicked" command when clicked
    # other options are to bind a press or release (or both) commands to the button
    # these can be in addition to or instead of the clicked command
    # if instead of then delete '-command','mybutton_clicked', from the first line
de: # Die obigen senden den Befehl "mybutton_clicked", wenn sie angeklickt werden
    # Weitere Optionen sind das Binden eines Druck- oder Freigabebefehls (oder beides) an die Schaltfläche
    # diese können zusätzlich oder anstelle des angeklickten Befehls sein,
    # dann '-command','mybutton_clicked' aus der ersten Zeile löschen.

note: type: delimited block -
en: # Button-1 = left mouse button, 2 = right or 3 = middle
de: # Button-1 = linke Maustaste, 2 = rechte oder 3 = mittlere Maustaste

note: type: delimited block -
en: # functions called from the buttons
de: # Funktionen, die von den Buttons aufgerufen werden

note: type: delimited block -
en: # any function called from Tcl needs to be added to TclCommands
de: # jede Funktion, die von Tcl aufgerufen wird, muss zu TclCommands hinzugefügt werden

note: type: Title ===
en: Reading Internal Variables
de: Interne Variablen lesen

note: type: delimited block -
en: # the following variables may be read from the vars instance
de: # die folgenden Variablen können aus der vars-Instanz gelesen werden

note: type: Title ===
en: Hide Widgets
de: Widgets ausblenden

note: type: delimited block -
en: # hide a widget
    # use 'grid' or 'pack' depending on how it was originally placed
    root_window.tk.call('grid','forget','.pane.top.tabs.fmanual.jogf.zerohome.tooltouch')
de: # ein Widget ausblenden
    # 'grid' oder 'pack' verwenden, je nachdem, wie es ursprünglich platziert wurde
    root_window.tk.call('grid','forget','.pane.top.tabs.fmanual.jogf.zerohome.tooltouch')

note: type: Title ===
en: Change a label
de: Ändern eines Labels

note: type: delimited block -
en: # change label of a widget
    root_window.tk.call('setup_widget_accel','.pane.top.tabs.fmanual.mist','Downdraft')
de: # Label eines Widgets ändern
    root_window.tk.call('setup_widget_accel','.pane.top.tabs.fmanual.mist','Downdraft')

note: type: delimited block -
en: # make sure it appears (only needed in this case if the mist button was hidden)
    root_window.tk.call('grid','.pane.top.tabs.fmanual.mist','-column','1','-row','5','-columnspan','2','-padx','4','-sticky','w')
de: # sicherstellen, dass es erscheint (in diesem Fall nur erforderlich, wenn die Schaltfläche mist ausgeblendet war)
    root_window.tk.call('grid','.pane.top.tabs.fmanual.mist','-column','1','-row','5','-columnspan','2','-padx','4','-sticky','w')

note: type: Title ===
en: Redirect an existing command
de: Einen bestehenden Befehl umleiten

note: type: delimited block -
en: # hijack an existing command
    # originally the mist button calls the mist function
    root_window.tk.call('.pane.top.tabs.fmanual.mist','configure','-command','hijacked_command')
de: # einen bestehenden Befehl abgreifen
    # ursprünglich ruft die Schaltfläche mist die Funktion mist auf
    root_window.tk.call('.pane.top.tabs.fmanual.mist','configure','-command','hijacked_command')

note: type: delimited block -
en: # The new function
    def hijacked_command():
        print('hijacked mist command')
de: # Die neue Funktion
    def hijacked_command():
        print('abgegriffener mist command')

note: type: delimited block -
en: # add the function to TclCommands
    TclCommands.hijacked_command = hijacked_command
    commands = TclCommands(root_window)
de: # Hinzufügen der Funktion zu TclCommands
    TclCommands.hijacked_command = hijacked_command
    Befehle = TclCommands(root_window)

note: type: Title ===
en: Change the DRO color
de: Ändern Sie die DRO-Farbe

note: type: delimited block -
en: # change dro screen
    root_window.tk.call('.pane.top.right.fnumbers.text','configure','-foreground','green','-background','black')
de: # dro-Bildschirm ändern
    root_window.tk.call('.pane.top.right.fnumbers.text','configure','-foreground','green','-background','black')

note: type: Title ===
en: Change the Toolbar Buttons
de: Ändern der Buttons der Werkzeugleiste

note: type: delimited block -
en: # change the toolbar buttons
de: # ändern der Werkzeugleisten-Buttons

note: type: Title ===
en: Change Plotter Colors
de: Plotterfarben ändern

note: type: Plain text
en: In RGBA format, in this order: jog, rapid, feed, arc, toolchange, probe
de: Im RGBA-Format, in dieser Reihenfolge: Joggen, Eilgang, Vorschub, Lichtbogen, Werkzeugwechsel, Messtaster

note: type: delimited block -
en: # change plotter colors
    try:
        live_plotter.logger.set_colors((255,0,0,255),
                                        (0,255,0,255),
                                        (0,0,255,255),
                                        (255,255,0,255),
                                        (255,255,255,255),
                                        (0,255,255,255))
    except Exception as e:
        print(e)
de: # Plotterfarben ändern
    try:
        live_plotter.logger.set_colors((255,0,0,255),
                                        (0,255,0,255),
                                        (0,0,255,255),
                                        (255,255,0,255),
                                        (255,255,255,255),
                                        (0,255,255,255))
    except Exception as e:
        print(e)

note: type: Title =
en: Filter Programs
de: Filter-Programme

note: type: Plain text
en: Most of LinuxCNC's screens have the ability to send loaded files through a 'filter program' or use the filter program to make G-code.  Such a filter can do any desired task: Something as simple as making sure the file ends with 'M2', or something as complicated as generating G-code from an image.
de: Die meisten Bildschirme von LinuxCNC haben die Möglichkeit, geladene Dateien durch ein "Filterprogramm" zu senden oder das Filterprogramm zu verwenden, um G-Code zu machen.  Ein solcher Filter kann jede gewünschte Aufgabe erledigen: Etwas so Einfaches wie sicherzustellen, dass die Datei mit 'M2' endet, oder etwas so Kompliziertes wie die Erzeugung von G-Code aus einem Bild.

note: type: Title ==
en: Setting up the INI for Program Filters
de: Einrichten der INI für Programmfilter

note: type: Plain text
en: If the filter program sends lines to stderr of the form:
de: Wenn das Filterprogramm Zeilen in der folgenden Form an stderr sendet:

note: type: Plain text
en: It will set the screens progress bar to the given (10 in this case) percentage.  This feature should be used by any filter that runs for a long time.
de: Sie setzt den Fortschrittsbalken des Bildschirms auf den angegebenen Prozentsatz (in diesem Fall 10).  Diese Funktion sollte von jedem Filter verwendet werden, der lange läuft.

note: type: Title ==
en: Making Python Based Filter Programs
de: Erstellung von Filterprogrammen auf Python-Basis

note: type: Plain text
en: Here is a very basic example of the filtering mechanics: When run through a Linucnc screen that offers program filtering, it will produce and write a line of G-code every 100th of a second to standard output.  It also sends a progress message out to the Unix standard error stream.  If there was an error it would post an error message and exit with an exitcode of 1.
de: Hier ist ein sehr einfaches Beispiel für die Filtermechanik: Wenn ein Linucnc-Bildschirm, der Programmfilterung bietet, durchläuft, wird jede 100stel Sekunde eine Zeile G-Code erzeugt und auf die Standardausgabe geschrieben.  Außerdem sendet es eine Fortschrittsmeldung an den Unix-Standardfehlerstrom.  Wenn ein Fehler auftritt, gibt es eine Fehlermeldung aus und beendet sich mit dem Exitcode 1.

note: type: delimited block -
en: for i in range(0,100):
        try:
            # simulate calculation time
            time.sleep(.1)
de: for i in range(0,100):
        try:
            # Rechenzeit simulieren
            time.sleep(.1)

note: type: delimited block -
en:         # output a line of G-code
            print('G0 X1', file=sys.stdout)
de:         # Ausgabe einer Zeile G-Code
            print('G0 X1', file=sys.stdout)

note: type: delimited block -
en:         # update progress
            print('FILTER_PROGRESS={}'.format(i), file=sys.stderr)
        except:
            # This causes an error message
            print('Error; But this was only a test', file=sys.stderr)
            raise SystemExit(1)
de:         # Fortschritt aktualisieren
            print('FILTER_PROGRESS={}'.format(i), file=sys.stderr)
        except:
            # Dies führt zu einer Fehlermeldung
            print('Fehler; Aber das war nur ein Test', file=sys.stderr)
            raise SystemExit(1)

note: type: Plain text
en: Here is a similar program but it actually could filter.  It puts up a PyQt5 dialog with a cancel button.  Then it reads the program line by line and passes it to standard output.  As it goes along, it updates any process listening to standard error output.
de: Hier ist ein ähnliches Programm, aber es kann tatsächlich filtern.  Es zeigt einen PyQt5-Dialog mit einer Abbruch-Schaltfläche an.  Dann liest es das Programm Zeile für Zeile und gibt es an die Standardausgabe weiter.  Während es weiterläuft, aktualisiert es jeden Prozess, der auf die Standardfehlerausgabe hört.

note: type: delimited block -
en:         if not os.path.exists(path):
                print("Path: '{}' doesn't exist:".format(path), file=sys.stderr)
                raise SystemExit(1)
de:         if not os.path.exists(path):
                print("Path: '{}' existiert nicht:".format(path), file=sys.stderr)
                raise SystemExit(1)

note: type: delimited block -
en:     def process(self):
            try:
                # get next line of code
                codeLine = self.temp[self.line]
de:     def process(self):
            try:
                # nächste Codezeile erhalten
                codeLine = self.temp[self.line]

note: type: delimited block -
en:             # process the line somehow
de:             # die Zeile irgendwie verarbeiten

note: type: delimited block -
en:             # push out processed code
                print(codeLine, file=sys.stdout)
                self.line +=1
de:             # Verarbeiteten Code ausgeben
                print(codeLine, file=sys.stdout)
                self.line +=1

note: type: delimited block -
en:             # if done end with no error/error message
                if self._percentDone >= 99:
                    print('FILTER_PROGRESS=-1', file=sys.stderr)
                    self.infile.close()
                    raise SystemExit(0)
de:             # if done Ende ohne Fehler/Fehlermeldung
                if self._percentDone >= 99:
                    print('FILTER_PROGRESS=-1', file=sys.stderr)
                    self.infile.close()
                    raise SystemExit(0)

note: type: delimited block -
en:         except Exception as e:
                # This provides an error message
                print(('Something bad happened:',e), file=sys.stderr)
                # this signals the error message should be shown
                raise SystemExit(1)
de:         except Exception as e:
                # Dies liefert eine Fehlermeldung
                print(('Something bad happened:',e), file=sys.stderr)
                # dies signalisiert, dass die Fehlermeldung angezeigt werden soll
                raise SystemExit(1)

note: type: Title =
en: GladeVCP: Glade Virtual Control Panel(((GladeVCP: Glade Virtual Control Panel)))
de: GladeVCP: Glade Virtuelles (engl. virtual) Control Panel(((GladeVCP: Glade Virtuelles Control Panel)))

note: begin a listing of INI/HAL/NGC files like so: [source,{ini}] [source,{hal}] [source,{ngc}] type: Title ==
en: What is GladeVCP?
de: Was ist GladeVCP?

note: type: Plain text
en: GladeVCP is a LinuxCNC component which adds the ability to add a new user interface panel to LinuxCNC user interfaces like:
de: GladeVCP ist eine LinuxCNC-Komponente, welche die Fähigkeit, eine neue Schaltfläche (engl. panel) auf LinuxCNC Benutzeroberflächen hinzuzufügen wie:

note: type: Plain text
en: Unlike PyVCP, GladeVCP is not limited to displaying and setting HAL pins, as arbitrary actions can be executed in Python code - in fact, a complete LinuxCNC user interface could be built with GladeVCP and Python.
de: Im Gegensatz zu PyVCP ist GladeVCP nicht auf die Anzeige und Einstellung von HAL-Pins beschränkt, da beliebige Aktionen in Python-Code ausgeführt werden können - tatsächlich könnte eine komplette LinuxCNC-Benutzeroberfläche mit GladeVCP und Python erstellt werden.

note: type: Plain text
en: GladeVCP uses the http://glade.gnome.org/[Glade] WYSIWYG user interface editor, which makes it easy to create visually pleasing panels. It relies on the https://pygobject.readthedocs.io/en/latest/[PyGObject] bindings to the rich http://www.gtk.org/[GTK+] widget set, and in fact all of these may be used in a GladeVCP application - not just the specialized widgets for interacting with HAL and LinuxCNC, which are documented here.
de: GladeVCP verwendet den http://glade.gnome.org/[Glade] WYSIWYG-Benutzeroberflächen-Editor, der es einfach macht, visuell ansprechende Panels zu erstellen. Es stützt sich auf die https://pygobject.readthedocs.io/en/latest/[PyGObject]-Bindungen an das umfangreiche http://www.gtk.org/[GTK+]-Widget-Set, und tatsächlich können alle diese Widgets in einer GladeVCP-Anwendung verwendet werden - nicht nur die speziellen Widgets für die Interaktion mit HAL und LinuxCNC, die hier dokumentiert sind.

note: type: Title ===
en: PyVCP versus GladeVCP at a glance
de: PyVCP im Vergleich zu GladeVCP auf einen Blick

note: type: Plain text
en: Both support the creation of panels with 'HAL widgets' - user interface elements like LED's, buttons, sliders etc whose values are linked to a HAL pin, which in turn interfaces to the rest of LinuxCNC.
de: Beide unterstützen die Erstellung von Panels mit "HAL Widgets" - Benutzeroberfläche Elemente wie LED's, Tasten, Schieberegler usw., deren Werte zu einem HAL-Pin, die wiederum Schnittstellen zu den Rest von LinuxCNC verbunden sind.

note: type: Plain text
en: Widget set: uses TkInter widgets.
de: Widget-Set: verwendet TkInter-Widgets.

note: type: Plain text
en: User interface creation: "edit XML file / run result / evaluate looks" cycle.
de: Erstellung der Benutzeroberfläche: Zyklus "XML-Datei bearbeiten / Ergebnis ausführen / Aussehen auswerten".

note: type: Plain text
en: No support for embedding user-defined event handling.
de: Keine Unterstützung für die Einbettung benutzerdefinierter Ereignisbehandlung.

note: type: Plain text
en: No LinuxCNC interaction beyond HAL pin I/O supported.
de: Keine LinuxCNC Interaktion über HAL Pin I/O hinaus unterstützt.

note: type: Plain text
en: Widget set: relies on the http://www.gtk.org/[GTK+] widget set.
de: Widget-Set: stützt sich auf das http://www.gtk.org/[GTK+] Widget-Set.

note: type: Plain text
en: User interface creation: uses the http://glade.gnome.org/[Glade] WYSIWYG user interface editor.
de: Erstellung von Benutzeroberflächen: verwendet den http://glade.gnome.org/[Glade] WYSIWYG-Editor für Benutzeroberflächen.

note: type: Plain text
en: Any HAL pin change may be directed to call back into a user-defined Python event handler.
de: Jede HAL-Pin-Änderung kann für einen Callback und damit einen benutzerdefinierten Python-Ereignishandler genutzt werden.

note: type: Plain text
en: Any GTK signal (key/button press, window, I/O, timer, network events) may be associated with user-defined handlers in Python.
de: Jedes GTK-Signal (Tastendruck, Fenster-, E/A-, Timer-, Netzwerkereignisse) kann mit benutzerdefinierten Handlern in Python verknüpft werden.

note: type: Plain text
en: Direct LinuxCNC interaction: arbitrary command execution, like initiating MDI commands to call a G-code subroutine, plus support for status change operations through Action Widgets.
de: Direkte LinuxCNC-Interaktion: beliebige Befehlsausführung, wie das Auslösen von MDI-Befehlen, um ein G-Code-Unterprogramm aufzurufen, sowie Unterstützung für Statuswechseloperationen durch Action Widgets.

note: type: Plain text
en: Several independent GladeVCP panels may be run in different tabs.
de: Mehrere unabhängige GladeVCP-Panels können in verschiedenen Registerkarten ausgeführt werden.

note: type: Plain text
en: Separation of user interface appearance and functionality: change appearance without touching any code.
de: Trennung von Aussehen und Funktionalität der Benutzeroberfläche: Änderung des Aussehens ohne Eingriff in den Code.

note: type: Title ==
en: A Quick Tour with the Example Panel
de: Ein kurzer Rundgang mit dem Beispielpanel

note: type: Plain text
en: GladeVCP panel windows may be run in three different setups:
de: Die GladeVCP-Panel-Fenster können in drei verschiedenen Konfigurationen betrieben werden:

note: type: Plain text
en: always visible integrated into AXIS at the right side, exactly like PyVCP panels,
de: immer sichtbar, integriert in AXIS auf der rechten Seite, genau wie PyVCP-Panels,

note: type: Plain text
en: as a tab in AXIS,Touchy, Gscreen, or GMOCCAPY; in AXIS this would create a third tab besides the Preview and DRO tabs which must be raised explicitly,
de: als Registerkarte in AXIS, Touchy, Gscreen oder GMOCCAPY; in AXIS würde dies eine dritte Registerkarte neben den Registerkarten Vorschau und DRO erzeugen, die explizit angehoben werden müssen,

note: type: Plain text
en: as a standalone toplevel window, which can be iconifyed/deiconified independent of the main window.
de: als eigenständiges Toplevel-Fenster, das unabhängig vom Hauptfenster ikonifiziert/deikonifiziert werden kann.

note: type: Block title
en: Installed LinuxCNC
de: Installiertes LinuxCNC

note: type: Plain text
en: If you're using an installed version of LinuxCNC the examples shown below are in the <<cha:starting-linuxcnc,configuration picker>> in the 'Sample Configurations > apps > GladeVCP' branch.
de: Wenn Sie eine installierte Version von LinuxCNC verwenden, sind die unten gezeigten Beispiele in der <<cha:starting-linuxcnc,configuration picker>> in der 'Sample Configurations > apps > GladeVCP' Zweig.

note: type: Block title
en: Git Checkout
de: Git-Checkout

note: type: Plain text
en: The following instructions only apply if you're using a git checkout. Open a terminal and change to the directory created by git then issue the commands as shown.
de: Die folgenden Anweisungen gelten nur, wenn Sie einen Git-Checkout verwenden. Öffnen Sie ein Terminal, wechseln Sie in das von git erstellte Verzeichnis und geben Sie dann die angezeigten Befehle ein.

note: type: Plain text
en: For the following commands to work on your git checkout you must first run 'make' then run 'sudo make setuid' then run '. ./scripts/rip-environment'.  More information about a git checkout is on the LinuxCNC wiki page.
de: Damit die folgenden Befehle bei Ihrem Git-Checkout funktionieren, müssen Sie zuerst 'make' ausführen, dann 'sudo make setuid' und dann '. ./scripts/rip-environment'.  Weitere Informationen über einen Git-Checkout finden Sie auf der LinuxCNC-Wiki-Seite.

note: type: Plain text
en: Run the sample GladeVCP panel integrated into AXIS like PyVCP as follows:
de: Führen Sie das in AXIS integrierte GladeVCP-Beispielpanel wie PyVCP wie folgt aus:

note: type: Plain text
en: Run the same panel, but as a tab inside AXIS:
de: Führen Sie das gleiche Panel aus, aber als Registerkarte innerhalb von AXIS:

note: To run this panel as a standalone toplevel window besides AXIS, just start AXIS in the background and start GladeVCP as follows: FIXME: I'm not sure how this is supposed to work with axis in one directory and GladeVCP in a different directory. FIXME: there is a conflict for motion.N.spindle-speed-ou
en: To run this panel inside 'Touchy':
de: Um dieses Panel innerhalb von 'Touchy' auszuführen:

note: type: Plain text
en: Functionally these setups are identical - they only differ in screen real estate requirements and visibility. Since it is possible to run several GladeVCP components in parallel (with different HAL component names), mixed setups are possible as well - for instance a panel on the right hand side, and one or more tabs for less-frequently used parts of the interface.
de: Funktional sind diese Setups identisch - sie unterscheiden sich nur in den Anforderungen an die Bildschirmfläche und die Sichtbarkeit. Da es möglich ist, mehrere GladeVCP-Komponenten parallel laufen zu lassen (mit unterschiedlichen HAL-Komponentennamen), sind auch gemischte Setups möglich - zum Beispiel ein Panel auf der rechten Seite und eine oder mehrere Registerkarten für weniger häufig genutzte Teile der Oberfläche.

note: type: Title ===
en: Exploring the example panel
de: Erkunden des Beispielpanels

note: type: Plain text
en: The example panel has two frames at the bottom. The panel is configured so that resetting ESTOP activates the Settings frame and turning the machine on enables the Commands frame at the bottom. The HAL widgets in the Settings frame are linked to LEDs and labels in the 'Status' frame, and to the current and prepared tool number - play with them to see the effect. Executing the 'T<toolnumber>' and 'M6' commands in the MDI window will change the current and prepared tool number fields.
de: Das Beispiel-Panel hat zwei Rahmen am unteren Rand. Das Bedienfeld ist so konfiguriert, dass das Zurücksetzen des Notaus (engl. ESTOP) den Rahmen "Einstellungen" aktiviert und das Einschalten der Maschine den Rahmen "Befehle" im unteren Bereich aktiviert. Die HAL-Widgets im Rahmen "Einstellungen" sind mit den LEDs und Beschriftungen im Rahmen "Status" sowie mit der aktuellen und vorbereiteten Werkzeugnummer verknüpft - spielen Sie mit ihnen, um die Wirkung zu sehen. Wenn Sie die Befehle 'T<Werkzeugnummer>' und 'M6' im MDI-Fenster ausführen, werden die Felder für die aktuelle und die vorbereitete Werkzeugnummer geändert.

note: type: Plain text
en: The buttons in the 'Commands' frame are 'MDI Action widgets' - pressing them will execute an MDI command in the interpreter.  The third button 'Execute Oword subroutine' is an advanced example - it takes several HAL pin values from the 'Settings' frame, and passes them as parameters to the Oword subroutine. The actual parameters received by the routine are displayed by '(DEBUG, )' commands - see '../../nc_files/oword.ngc' for the subroutine body.
de: Die Buttons im Rahmen "Befehle" (engl. Commands) sind 'MDI-Aktions-Widgets' - wenn Sie sie drücken, wird ein MDI-Befehl im Interpreter ausgeführt.  Der dritte Button "Oword-Unterprogramm ausführen" (engl. Execute Oword subroutine) ist ein fortgeschrittenes Beispiel - dieser übernimmt mehrere HAL-Pin-Werte aus dem Rahmen 'Einstellungen' (engl. Settings) und übergibt sie als Parameter an das Oword-Unterprogramm. Die tatsächlichen Parameter der Routine werden durch '(DEBUG, )' Befehle angezeigt - siehe '../../nc_files/oword.ngc' für den Unterprogrammkörper.

note: type: Plain text
en: To see how the panel is integrated into AXIS, see the '[DISPLAY]GLADEVCP' statement in configs/sim/axis/gladevcp/gladevcp_panel.ini, the '[DISPLAY]EMBED*' statement in configs/sim/axis/gladevcp/gladevcp_tab.ini and '[HAL]POSTGUI_HALFILE' statements in both configs/sim/axis/gladevcp/gladevcp_tab.ini and configs/sim/axis/gladevcp/gladevcp_panel.ini.
de: Um zu sehen, wie das Panel in AXIS integriert ist, sehen Sie die Anweisung '[DISPLAY]GLADEVCP' in configs/sim/axis/gladevcp/gladevcp_panel.ini, die Anweisung '[DISPLAY]EMBED*' in configs/sim/axis/gladevcp/gladevcp_tab.ini und '[HAL]POSTGUI_HALFILE' sowohl in configs/sim/axis/gladevcp/gladevcp_tab.ini als auch in configs/sim/axis/gladevcp/gladevcp_panel.ini.

note: type: Title ===
en: Exploring the User Interface description
de: Erkunden der Beschreibung der Benutzeroberfläche

note: type: Plain text
en: The user interface is created with the Glade UI editor - to explore it, you need to have <<gladevcp:prerequisites,Glade installed>>. To edit the user interface, run the command
de: Die Benutzeroberfläche wird mit dem Glade UI-Editor erstellt - um sie zu erkunden, müssen Sie <<gladevcp:prerequisites,Glade installiert>> haben. Um die Benutzeroberfläche zu bearbeiten, nutzen Sie den Befehl

note: type: Plain text
en: The required glade program may be named glade-gtk2 on more recent systems.
de: Das erforderliche glade-Programm kann auf neueren Systemen den Namen glade-gtk2 tragen.

note: type: Plain text
en: The center window shows the appearance of the UI. All user interface objects and support objects are found in the right top window, where you can select a specific widget (or by clicking on it in the center window). The properties of the selected widget are displayed, and can be changed, in the right bottom window.
de: Das mittlere Fenster zeigt das Aussehen der Benutzeroberfläche. Alle Objekte der Benutzeroberfläche und Unterstützungsobjekte befinden sich im rechten oberen Fenster, in dem Sie ein bestimmtes Widget auswählen können (oder indem Sie es im mittleren Fenster anklicken). Die Eigenschaften des ausgewählten Widgets werden im rechten unteren Fenster angezeigt und können dort geändert werden.

note: type: Plain text
en: To see how MDI commands are passed from the MDI Action widgets, explore the widgets listed under 'Actions' in the top right window, and in the right bottom window, under the 'General' tab, the 'MDI command' property.
de: Um zu sehen, wie MDI-Befehle von den MDI-Aktions-Widgets weitergegeben werden, erkunden Sie die Widgets, die unter "Aktionen" im Fenster oben rechts aufgeführt sind, und im Fenster unten rechts unter der Registerkarte "Allgemein" die Eigenschaft "MDI-Befehl".

note: type: Title ===
en: Exploring the Python callback
de: Erkunden der Python Callback Funktionen

note: type: Plain text
en: See how a Python callback is integrated into the example:
de: Sehen Sie, wie ein Python-Callback in das Beispiel integriert wird:

note: type: Plain text
en: In Glade, see the +hits+ label widget (a plain GTK+ widget).
de: In Glade siehe das +hits+ Label Widget (ein einfaches GTK+ Widget).

note: type: Plain text
en: In the +button1+ widget, look at the 'Signals' tab, and find the signal 'pressed' associated with the handler 'on_button_press'.
de: Im Widget +button1+ auf der Registerkarte "Signale" das Signal "gedrückt" suchen, das mit dem Handler "on_button_press" verknüpft ist.

note: type: Plain text
en: In hitcounter.py, see the method 'on_button_press' and see how it sets the label property in the 'hits' object.
de: In hitcounter.py sehen Sie sich die Methode 'on_button_press' an und sehen, wie sie die Eigenschaft label im Objekt 'hits' setzt.

note: type: Plain text
en: The is just touching upon the concept - the callback mechanism will be handled in more detail in the <<gladevcp:programming,GladeVCP Programming>> section.
de: Dies ist nur ein kurzer Überblick über das Konzept - der Callback-Mechanismus wird im Abschnitt <<gladevcp:programming,GladeVCP Programming>> ausführlicher behandelt.

note: type: Title ==
en: Creating and Integrating a Glade user interface
de: Erstellen und Integrieren einer Glade-Benutzeroberfläche

note: type: Title ===
en: Prerequisite: Glade installation
de: Voraussetzung ist: Glade-Installation

note: type: Plain text
en: To view or modify Glade UI files, you need Glade 3.38.2 or later installed - it is not needed just to run a GladeVCP panel. If the 'glade' command is missing, install it with the command:
de: Um Glade UI Dateien anzuzeigen oder zu verändern, muss Glade 3.38.2 oder höher installiert sein - es wird nicht benötigt, um ein GladeVCP Panel zu starten. Wenn der Befehl `glade` fehlt, installieren Sie ihn mit dem Befehl:

note: type: Plain text
en: Then verify installed version, which must be equal or superior to 3.6.7:
de: Überprüfen Sie dann die installierte Version, die gleich oder höher als 3.6.7 sein muss:

note: type: Plain text
en: Glade contains an internal Python interpreter, and only Python 3 is supported.  This is true for Debian Bullseye, Ubuntu 21 and Mint 21 or later.  Older versions will not work, you will get a Python error.
de: Glade enthält einen internen Python-Interpreter, und es wird nur Python3 unterstützt.  Dies gilt für Debian Bullseye, Ubuntu 21 und Mint 21 oder später.  Ältere Versionen werden nicht funktionieren, Sie werden einen Python-Fehler erhalten.

note: type: Title ===
en: Running Glade to create a new user interface
de: Glade ausführen, um eine neue Benutzeroberfläche zu erstellen

note: type: Plain text
en: This section just outlines the initial LinuxCNC-specific steps. For more information and a tutorial on Glade, see http://glade.gnome.org. Some Glade tips & tricks may also be found on http://www.youtube.com[youtube].
de: Dieser Abschnitt umreißt nur die ersten LinuxCNC-spezifischen Schritte. Weitere Informationen und eine Anleitung zu Glade finden Sie unter http://glade.gnome.org. Einige Tipps und Tricks zu Glade finden Sie auch auf http://www.youtube.com[youtube].

note: type: Plain text
en: Either modify an existing UI component by running +glade <file>.ui+ or start a new one by just running the +glade+ command from the shell.
de: Ändern Sie entweder eine bestehende UI-Komponente, indem Sie +glade <Datei>.ui+ ausführen, oder starten Sie eine neue, indem Sie einfach den Befehl +glade+ in der Shell ausführen.

note: type: Plain text
en: If LinuxCNC was not installed from a package, the LinuxCNC shell environment needs to be set up with +<linuxcncdir>/scripts/rip-environment+, otherwise Glade won't find the LinuxCNC-specific widgets.
de: Wenn LinuxCNC nicht aus einem Paket installiert wurde, muss die LinuxCNC-Shell-Umgebung mit +<linuxcncdir>/scripts/rip-environment+ eingerichtet werden, sonst findet Glade die LinuxCNC-spezifischen Widgets nicht.

note: type: Plain text
en: When asked for unsaved preferences, just accept the defaults and hit 'Close'.
de: Wenn Sie nach nicht gespeicherten Einstellungen gefragt werden, akzeptieren Sie einfach die Standardeinstellungen und klicken Sie auf „Schließen“.

note: type: Plain text
en: From 'Toplevel' (left pane), pick 'Window' (first icon) as top level window, which by default will be named 'window1'. Do not change this name - GladeVCP relies on it.
de: Wählen Sie unter "Toplevel" (linker Bereich) "Window" (erstes Symbol) als Fenster der obersten Ebene, das standardmäßig "window1" heißt. Ändern Sie diesen Namen nicht - GladeVCP verlässt sich auf ihn.

note: type: Plain text
en: In the left tab, scroll down and expand 'HAL Python' and 'VCP Actions'.
de: Blättern Sie auf der linken Registerkarte nach unten und erweitern Sie 'HAL Python' und 'VCP-Aktionen'.

note: type: Plain text
en: add a container like a HAL_Box or a HAL_Table from 'HAL Python' to the frame
de: einen Container wie eine HAL_Box oder eine HAL_Table aus 'HAL Python' in den Rahmen einfügen

note: type: Plain text
en: pick and place some elements like LED, button, etc. within a container
de: einige Elemente wie LEDs, Schaltflächen usw. auswählen und in einem Container platzieren

note: type: Plain text
en: This will look like so:
de: Dies wird folgendermaßen aussehen:

note: type: Plain text
en: Glade tends to write a lot of messages to the shell window, which mostly can be ignored.  Select 'File→Save as', give it a name like 'myui.ui' and make sure it's saved as 'GtkBuilder' file (radio button left bottom corner in Save dialog). GladeVCP will also process the older 'libglade' format correctly but there is no point in using it. The convention for GtkBuilder file extension is '.ui'.
de: Glade neigt dazu, eine Menge Meldungen in das Shell-Fenster zu schreiben, die meist ignoriert werden können.  Wählen Sie "Datei→Speichern unter", geben Sie der Datei einen Namen wie "myui.ui" und stellen Sie sicher, dass sie als "GtkBuilder"-Datei gespeichert wird (Optionsfeld links unten im Speichern-Dialog). GladeVCP verarbeitet auch das ältere 'libglade'-Format korrekt, aber es hat keinen Sinn, es zu verwenden. Die Konvention für die GtkBuilder-Dateierweiterung ist '.ui'.

note: type: Title ===
en: Testing a panel
de: Testen eines Panels

note: type: Plain text
en: You're now ready to give it a try (while LinuxCNC, e.g. AXIS is running) it with:
de: Sie sind jetzt bereit, es auszuprobieren (während LinuxCNC, z. B. AXIS läuft) mit:

note: type: Title ===
en: Preparing the HAL command file
de: Vorbereiten der HAL-Befehlsdatei

note: type: Plain text
en: The suggested way of linking HAL pins in a GladeVCP panel is to collect them in a separate file with extension '.hal'. This file is passed via the +POSTGUI_HALFILE=+ option in the +HAL+ section of your INI file.
de: Die vorgeschlagene Methode zur Verknüpfung von HAL-Pins in einem GladeVCP-Panel besteht darin, sie in einer separaten Datei mit der Erweiterung '.hal' zu sammeln. Diese Datei wird über die Option +POSTGUI_HALFILE=+ im Abschnitt +HAL+ Ihrer INI-Datei übergeben.

note: type: Plain text
en: Do not add the GladeVCP HAL command file to the AXIS +[HAL]HALFILE=+ ini section, this will not have the desired effect - see the following sections.
de: Fügen Sie die GladeVCP-HAL-Befehlsdatei nicht in den Abschnitt AXIS +[HAL]HALFILE=+ ini ein, da dies nicht den gewünschten Effekt hat - siehe die folgenden Abschnitte.

note: type: Title ===
en: Integrating into AXIS, like PyVCP
de: Einbindung in AXIS, wie PyVCP

note: type: Plain text
en: Place the GladeVCP panel in the righthand side panel by specifying the following in the INI file:
de: Platzieren Sie das GladeVCP-Panel im rechten Seitenbereich, indem Sie in der INI-Datei Folgendes angeben:

note: type: delimited block -
en: [HAL]
    # HAL commands for GladeVCP components in a tab must be executed via POSTGUI_HALFILE
    POSTGUI_HALFILE =  ./manual-example.hal
de: [HAL]
    # HAL-Befehle für GladeVCP-Komponenten in einer Registerkarte müssen über POSTGUI_HALFILE ausgeführt werden
    POSTGUI_HALFILE = ./handbuch-beispiel.hal

note: type: delimited block -
en: [RS274NGC]
    # gladevcp Demo specific Oword subs live here
    SUBROUTINE_PATH = ../../nc_files/gladevcp_lib
de: [RS274NGC]
    # gladevcp Demo-spezifische Oword-Subs leben hier
    SUBROUTINE_PATH = ../../nc_files/gladevcp_lib

note: type: Plain text
en: The command line actually run by AXIS in the above configuration is as follows:
de: Die von AXIS in der obigen Konfiguration tatsächlich ausgeführte Befehlszeile lautet wie folgt:

note: type: Plain text
en: It is possible to create a custom HAL component name by adding the +-c+ option:
de: Es ist möglich, einen benutzerdefinierten HAL-Komponentennamen zu erstellen, indem Sie die Option +-c+ hinzufügen:

note: type: delimited block -
en: [DISPLAY]
    # add GladeVCP panel where PyVCP used to live:
    GLADEVCP= -c example -u ./hitcounter.py ./manual-example.ui
de: [DISPLAY]
    # fügen Sie das GladeVCP-Panel an der Stelle ein, an der früher PyVCP stand:
    GLADEVCP= -c example -u ./hitcounter.py ./manual-example.ui

note: type: Plain text
en: The command line actually run by AXIS for the above is:
de: Die Befehlszeile, die von AXIS für die obigen Schritte ausgeführt wird, lautet:

note: type: Plain text
en: The file specifiers like ./hitcounter.py, ./manual-example.ui, etc. indicate that the files are located in the same directory as the INI file.  You might have to copy them to you directory (alternatively, specify a correct absolute or relative path to the file(s))
de: Die Dateispezifikationen wie ./hitcounter.py, ./manual-example.ui usw. bedeuten, dass sich die Dateien im selben Verzeichnis wie die INI-Datei befinden.  Möglicherweise müssen Sie sie in Ihr Verzeichnis kopieren (oder einen korrekten absoluten oder relativen Pfad zu der/den Datei(en) angeben)

note: type: Plain text
en: The +[RS274NGC]SUBROUTINE_PATH=+ option is only set so the example panel will find the Oword subroutine (oword.ngc) for the MDI Command widget. It might not be needed in your setup. The relative path specifier ../../nc_files/gladevcp_lib is constructed to work with directories copied by the configuration picker and when using a run-in-place setup.
de: Die Option +[RS274NGC]SUBROUTINE_PATH=+ ist nur gesetzt, damit das Beispiel-Panel die Oword-Subroutine (oword.ngc) für das MDI Command Widget findet. Sie wird in Ihrem Setup möglicherweise nicht benötigt. Die relative Pfadangabe ../../nc_files/gladevcp_lib ist so konstruiert, dass sie mit Verzeichnissen funktioniert, die von der Konfigurationsauswahl kopiert wurden, und wenn ein Run-in-Place-Setup verwendet wird.

note: type: Title ===
en: Embedding as a Tab
de: Einbetten als Registerkarte (engl. tab)

note: type: Plain text
en: To do so, edit your INI file and add to the DISPLAY and HAL sections of INI file as follows:
de: Bearbeiten Sie dazu Ihre INI-Datei und fügen Sie die Abschnitte DISPLAY und HAL der INI-Datei wie folgt hinzu:

note: type: delimited block -
en: [DISPLAY]
    # add GladeVCP panel as a tab next to Preview/DRO:
    EMBED_TAB_NAME=GladeVCP demo
    EMBED_TAB_COMMAND=halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID} -u ./gladevcp/hitcounter.py ./gladevcp/manual-example.ui
de: [DISPLAY]
    # GladeVCP-Panel als Registerkarte neben Vorschau/DRO hinzufügen:
    EMBED_TAB_NAME=GladeVCP demo
    EMBED_TAB_COMMAND=halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x {XID} -u ./gladevcp/hitcounter.py ./gladevcp/manual-example.ui

note: type: delimited block -
en: [HAL]
    # HAL commands for GladeVCP components in a tab must be executed via POSTGUI_HALFILE
    POSTGUI_HALFILE =  ./gladevcp/manual-example.hal
de: [HAL]
    # HAL-Befehle für GladeVCP-Komponenten in einer Registerkarte müssen über POSTGUI_HALFILE ausgeführt werden
    POSTGUI_HALFILE = ./gladevcp/manual-example.hal

note: type: Plain text
en: Try it out by running AXIS - there should be a new tab called 'GladeVCP demo' near the DRO tab. Select that tab, you should see the example panel nicely fit within AXIS.
de: Probieren Sie es aus, indem Sie AXIS starten - es sollte eine neue Registerkarte mit dem Namen "GladeVCP demo" in der Nähe der Registerkarte "DRO" erscheinen. Wählen Sie diese Registerkarte, sollten Sie das Beispiel-Panel schön innerhalb von AXIS passen zu sehen.

note: type: Title ===
en: Integrating into Touchy
de: Integration in Touchy

note: type: Plain text
en: To do add a GladeVCP tab to 'Touchy', edit your INI file as follows:
de: Um eine GladeVCP-Registerkarte zu "Touchy" hinzuzufügen, bearbeiten Sie Ihre INI-Datei wie folgt:

note: type: delimited block -
en: [DISPLAY]
    # add GladeVCP panel as a tab
    EMBED_TAB_NAME=GladeVCP demo
    EMBED_TAB_COMMAND=gladevcp -c gladevcp -x {XID} -u ./hitcounter.py -H ./gladevcp-touchy.hal  ./manual-example.ui
de: [DISPLAY]
    # GladeVCP-Panel als Registerkarte hinzufügen
    EMBED_TAB_NAME=GladeVCP-Demo
    EMBED_TAB_COMMAND=gladevcp -c gladevcp -x {XID} -u ./hitcounter.py -H ./gladevcp-touchy.hal ./manual-example.ui

note: type: Plain text
en: Note the following differences to the AXIS tab setup:
de: Beachten Sie die folgenden Unterschiede zur Einrichtung der Registerkarte von AXIS:

note: type: Plain text
en: The HAL command file is slightly modified since 'Touchy' does not use the 'halui' components so its signals are not available and some shortcuts have been taken.
de: Die HAL-Befehlsdatei ist leicht modifiziert, da 'Touchy' die 'halui'-Komponenten nicht verwendet, so dass seine Signale nicht verfügbar sind und einige Verknüpfungen verwendet wurden.

note: type: Plain text
en: there is no 'POSTGUI_HALFILE=' INI option, but passing the HAL command file on the 'EMBED_TAB_COMMAND=' line is ok
de: es gibt keine INI-Option "POSTGUI_HALFILE=", aber die Übergabe der HAL-Befehlsdatei in der Zeile "EMBED_TAB_COMMAND=" ist in Ordnung

note: type: Plain text
en: the 'halcmd loaduser -Wn ...' incantation is not needed.
de: die Beschwörungsformel "halcmd loaduser -Wn ..." ist nicht erforderlich.

note: type: Title ==
en: GladeVCP command line options
de: GladeVCP-Befehlszeilenoptionen

note: type: delimited block -
en: Options:
de: Optionen:

note: type: delimited block -
en: -c NAME::
        Set component name to NAME. Default is base name of UI file.
de: -c NAME::
        Setzt den Komponentennamen auf NAME. Standard ist der Basisname der UI-Datei.

note: type: delimited block -
en: -d::
        Enable debug output
de: -d::
        Debug-Ausgabe einschalten

note: type: delimited block -
en: -g GEOMETRY::
        Set geometry WIDTHxHEIGHT+XOFFSET+YOFFSET. Values are in pixel units,
        XOFFSET/YOFFSET is referenced from top left of screen.
        Use -g WIDTHxHEIGHT for just setting size or -g +XOFFSET+YOFFSET for just
        position
de: -g GEOMETRIE::
        Legt die Geometrie WIDTHxHEIGHT+XOFFSET+YOFFSET fest. Die Werte sind in Pixel-Einheiten,
        XOFFSET/YOFFSET wird vom linken oberen Bildschirmrand aus referenziert.
        Verwenden Sie -g WIDTHxHEIGHT, um nur die Größe zu bestimmen, oder -g +XOFFSET+YOFFSET, um nur
        Position zu bestimmen.

note: type: delimited block -
en: -H FILE::
        Execute HAL statements from FILE with halcmd after the
        component is set up and ready
de: -H DATEI::
        Führt HAL-Anweisungen aus DATEI mit halcmd aus, nachdem die
        Komponente eingerichtet und bereit ist

note: type: delimited block -
en: -m MAXIMUM::
        Force panel window to maximize. Together with the -g geometry option
        one can move the panel to a second monitor and force it to use all of the screen
de: -m MAXIMUM::
        Erzwingt die Maximierung des Panel-Fensters. Zusammen mit der Option -g geometry
        kann man das Panel auf einen zweiten Monitor verschieben und es zwingen, den gesamten Bildschirm zu nutzen.

note: type: delimited block -
en: -t THEME::
        Set gtk theme. Default is system theme. Different panels can have different themes.
        An example theme can be found in the http://wiki.linuxcnc.org/cgi-bin/wiki.pl?GTK_Themes[EMC Wiki].
de: -t THEME::
        Setzt das gtk-Theme. Standard ist das Systemthema. Verschiedene Panels können unterschiedliche Themen haben.
        Ein Beispielthema finden Sie im http://wiki.linuxcnc.org/cgi-bin/wiki.pl?GTK_Themes[EMC Wiki].

note: type: delimited block -
en: -x XID::
        Re-parent GladeVCP into an existing window XID instead of creating a
        new top level window
de: -x XID::
        GladeVCP in ein bestehendes Fenster XID einbinden, anstatt eines
        neuen Fensters der obersten Ebene

note: type: delimited block -
en: -u FILE::
        Use File's as additional user defined modules with handlers
de: -u FILE::
        Dateien als zusätzliche benutzerdefinierte Module mit Handlern verwenden

note: type: delimited block -
en: -U USEROPT::
        pass USEROPTs to Python modules
de: -U USEROPT::
        übergibt USEROPTs an Python-Module

note: type: Title ==
en: Understanding the GladeVCP startup process
de: Den GladeVCP-Startvorgang verstehen

note: type: Plain text
en: The integration steps outlined above look a bit tricky, and they are. It does therefore help to understand the startup process of LinuxCNC and how this relates to GladeVCP.
de: Die oben beschriebenen Integrationsschritte sehen ein wenig kompliziert aus, und das sind sie auch. Es ist daher hilfreich, den Startvorgang von LinuxCNC zu verstehen und wie sich dieser auf GladeVCP bezieht.

note: type: Plain text
en: The normal LinuxCNC startup process does the following:
de: Der normale Startvorgang von LinuxCNC macht folgendes:

note: type: Plain text
en: The realtime environment is started.
de: Die Echtzeitumgebung wird gestartet.

note: type: Plain text
en: All HAL components are loaded.
de: Alle HAL-Komponenten werden geladen.

note: type: Plain text
en: The HAL components are linked together through the .hal cmd scripts.
de: Die HAL-Komponenten sind durch die .hal cmd-Skripte miteinander verbunden.

note: type: Plain text
en: `task`, `iocontrol` and eventually the user interface is started.
de: `task`, `iocontrol` und schließlich wird die Benutzeroberfläche gestartet.

note: type: Plain text
en: Pre-GladeVCP the assumption was: by the time the UI starts, all of HAL is loaded, plumbed and ready to go.
de: Vor der Einführung von GladeVCP wurde davon ausgegangen, dass zu dem Zeitpunkt, zu dem die Benutzeroberfläche gestartet wird, die gesamte HAL geladen, verkabelt und einsatzbereit ist.

note: type: Plain text
en: The introduction of GladeVCP brought the following issue:
de: Die Einführung von GladeVCP brachte das folgende Problem mit sich:

note: type: Plain text
en: GladeVCP panels need to be embedded in a master GUI window setup.
de: GladeVCP-Panels müssen in ein übergeordnetes GUI-Fenster eingebettet werden.

note: type: Plain text
en: This requires the master GUI to run before the GladeVCP window can be hooked into the master GUI.
de: Dies erfordert, dass die Master-GUI läuft, bevor das GladeVCP-Fenster in die Master-GUI eingehängt werden kann.

note: type: Plain text
en: However, GladeVCP is also a HAL component, and creates HAL pins of its own.
de: GladeVCP ist jedoch auch eine HAL-Komponente und erzeugt eigene HAL-Pins.

note: type: Plain text
en: As a consequence, all HAL plumbing involving GladeVCP HAL pins as source or destination must be run *after* the GUI has been set up.
de: Als Folge davon müssen alle HAL-Pins, die GladeVCP HAL-Pins als Quelle oder Ziel verwenden, *nach* der Einrichtung der GUI ausgeführt werden.

note: type: Plain text
en: This is the purpose of the `POSTGUI_HALFILE`. This INI option is inspected by the GUIs. If a GUI detects this option, it runs the corresponding HAL file after any embedded GladeVCP panel is set up. However, it does not check whether a GladeVCP panel is actually used, in which case the HAL cmd file is just run normally. So if you do NOT start GladeVCP through `GLADEVCP` or `EMBED_TAB` etc, but later in a separate shell window or some other mechanism, a HAL command file in `POSTGUI_HALFILE` will be executed too early. Assuming GladeVCP pins are referenced herein, this will fail with an error message indicating that the GladeVCP HAL component is not available.
de: Dies ist der Zweck der Option "POSTGUI_HALFILE". Diese INI-Option wird von den GUIs überprüft. Wenn ein GUI diese Option erkennt, führt es die entsprechende HAL-Datei aus, nachdem ein eingebettetes GladeVCP-Panel eingerichtet wurde. Es wird jedoch nicht geprüft, ob ein GladeVCP-Panel tatsächlich verwendet wird, in diesem Fall wird die HAL cmd-Datei einfach normal ausgeführt. Wenn man also GladeVCP NICHT über `GLADEVCP` oder `EMBED_TAB` usw. startet, sondern später in einem separaten Shell-Fenster oder einem anderen Mechanismus, wird eine HAL-Befehlsdatei in `POSTGUI_HALFILE` zu früh ausgeführt. Unter der Annahme, dass hierin GladeVCP-Pins referenziert werden, wird dies mit einer Fehlermeldung fehlschlagen, die anzeigt, dass die GladeVCP-HAL-Komponente nicht verfügbar ist.

note: type: Plain text
en: So, in case you run GladeVCP from a separate shell window (i.e., not started by the GUI in an embedded fashion):
de: Falls Sie also GladeVCP von einem separaten Shell-Fenster aus starten (d.h. nicht von der GUI eingebettet gestartet):

note: type: Plain text
en: You cannot rely on the `POSTGUI_HALFILE` INI option causing the HAL commands being run 'at the right point in time', so comment that out in the INI file.
de: Sie können sich nicht darauf verlassen, dass die INI-Option "POSTGUI_HALFILE" dazu führt, dass die HAL-Befehle "zum richtigen Zeitpunkt" ausgeführt werden, also kommentieren Sie sie in der INI-Datei aus.

note: type: Title ==
en: HAL Widget reference
de: HAL Widget-Referenz

note: type: Plain text
en: GladeVCP includes a collection of Gtk widgets with attached HAL pins called HAL Widgets, intended to control, display or otherwise interact with the LinuxCNC HAL layer. They are intended to be used with the Glade user interface editor. With proper installation, the HAL Widgets should show up in Glade's 'HAL Python' widget group. Many HAL specific fields in the Glade 'General' section have an associated mouse-over tool tip.
de: GladeVCP enthält eine Sammlung von Gtk-Widgets mit angehängten HAL-Pins, genannt HAL-Widgets, die zur Steuerung, Anzeige oder anderweitigen Interaktion mit der LinuxCNC-HAL-Schicht gedacht sind. Sie sind für die Verwendung mit dem Glade-Benutzerschnittstellen-Editor vorgesehen. Bei ordnungsgemäßer Installation sollten die HAL Widgets in der Widget-Gruppe "HAL Python" von Glade auftauchen. Viele HAL-spezifische Felder im Glade-Abschnitt "Allgemein" haben einen zugehörigen Tooltip, wenn man mit der Maus darüber fährt.

note: type: Plain text
en: HAL signals come in two variants, bits and numbers. Bits are off/on signals. Numbers can be "float", "s32" or "u32". For more information on HAL data types see the <<sec:hal-data,HAL manual>>. The GladeVCP widgets can either display the value of the signal with an indicator widget, or modify the signal value with a control widget. Thus there are four classes of GladeVCP widgets that you can connect to a HAL signal. Another class of helper widgets allow you to organize and label your panel.
de: HAL-Signale gibt es in zwei Varianten: Bits und Zahlen. Bits sind Aus/Ein-Signale. Zahlen können "float", "s32" oder "u32" sein. Für weitere Informationen über HAL-Datentypen siehe <<sec:hal-data,HAL Handbuch>>. Die GladeVCP-Widgets können entweder den Wert des Signals mit einem Indikator-Widget anzeigen oder den Signalwert mit einem Kontroll-Widget verändern. Es gibt also vier Klassen von GladeVCP-Widgets, die Sie mit einem HAL-Signal verbinden können. Eine weitere Klasse von Hilfs-Widgets ermöglicht es Ihnen, Ihr Panel zu organisieren und zu beschriften.

note: type: Plain text
en: Widgets for indicating "bit" signals: <<gladevcp:hal-led,HAL_LED>>
de: Widgets zur Anzeige von "Bit"-Signalen: <<gladevcp:hal-led,HAL_LED>>

note: type: Plain text
en: Widgets for controlling "bit" signals: <<gladevcp:hal-buttons,HAL_Button HAL_RadioButton HAL_CheckButton>>
de: Widgets zur Steuerung von „Bit“-Signalen: <<gladevcp:hal-buttons,HAL_Button HAL_RadioButton HAL_CheckButton>>

note: type: Plain text
en: Widgets for indicating "number" signals: <<gladevcp:hal-label,HAL_Label>>, <<gladevcp:hal-progressbar,HAL_ProgressBar>>, <<gladevcp:hal-bars,HAL_HBar and HAL_VBar>>, <<gladevcp:hal-meter,HAL_Meter>>
de: Widgets zur Anzeige von "Zahlen"-Signalen: <<gladevcp:hal-label,HAL_Label>>, <<gladevcp:hal-progressbar,HAL_ProgressBar>>, <<gladevcp:hal-bars,HAL_HBar und HAL_VBar>>, <<gladevcp:hal-meter,HAL_Meter>>

note: type: Plain text
en: Widgets for controlling "number" signals: <<gladevcp:hal-spinbutton,HAL_SpinButton>>, <<gladevcp:hal-scales,HAL_HScale and HAL_VScale>>, <<gladevcp:jogwheel,Jog Wheel>>, <<gladevcp:speedcontrol,Speed Control>>
de: Widgets zur Steuerung von "Zahlen"-Signalen: <<gladevcp:hal-spinbutton,HAL_SpinButton>>, <<gladevcp:hal-scales,HAL_HScale and HAL_VScale>>, <<gladevcp:jogwheel,Jog Wheel>>, <<gladevcp:speedcontrol ,Geschwindigkeitsregelung>>

note: type: Plain text
en: Sensitive control widgets: <<gladevcp:hal-table,State_Sensitive_Table HAL_Table and HAL_HBox>>
de: Empfindliche Kontroll-Widgets: <<gladevcp:hal-table,State_Sensitive_Table HAL_Table and HAL_HBox>>

note: type: Plain text
en: Tool Path preview: <<gladevcp:hal-gremlin,HAL_Gremlin>>
de: Vorschau des Werkzeugpfads: <<gladevcp:hal-gremlin,HAL_Gremlin>>

note: type: Plain text
en: Widgets to show axis positions: <<gladevcp:dro_widget,DRO Widget>>, <<gladevcp:combi_dro,Combi DRO Widget>>
de: Widgets zur Anzeige der Achsenpositionen: <<gladevcp:dro_widget,DRO Widget>>, <<gladevcp:combi_dro,Combi DRO Widget>>

note: type: Plain text
en: Widgets for file handling: <<gladevcp:iconview,IconView File Selection>>
de: Widgets für die Dateiverarbeitung: <<gladevcp:iconview,IconView Datei Auswahl>>

note: type: Title ===
en: Widget and HAL pin naming
de: Benennung von Widgets und HAL-Pins

note: type: Plain text
en: Most HAL widgets have a single associated HAL pin with the same HAL name as the widget (glade: General→Name).
de: Die meisten HAL-Widgets haben einen einzigen zugehörigen HAL-Pin mit demselben HAL-Namen wie das Widget (glade: General→Name).

note: type: Plain text
en: Exceptions to this rule currently are:
de: Ausnahmen von dieser Regel sind derzeit:

note: type: Plain text
en: 'HAL_Spinbutton' and 'HAL_ComboBox', which have two pins: a +<widgetname>-f+ (float) and a +<widgetname>-s+ (s32) pin
de: HAL_Spinbutton' und 'HAL_ComboBox', die zwei Pins haben: einen +<widgetname>-f+ (float) und einen +<widgetname>-s+ (s32) Pin

note: type: Plain text
en: 'HAL_ProgressBar', which has a +<widgetname>-value+ input pin, and a +<widgetname>-scale+ input pin.
de: HAL_ProgressBar', die einen +<widgetname>-value+-Eingangspin und einen +<widgetname>-scale+-Eingangspin hat.

note: type: Title ===
en: Python attributes and methods of HAL Widgets
de: Python-Attribute und Methoden von HAL Widgets

note: type: Plain text
en: HAL widgets are instances of GtKWidgets and hence inherit the methods, properties and signals of the applicable GtkWidget class. For instance, to figure out which GtkWidget-related methods, properties and signals a 'HAL_Button' has, lookup the description of http://www.pygtk.org/docs/pygtk/class-gtkbutton.html[GtkButton] in the http://www.pygtk.org/docs/pygtk[PyGtk Reference Manual].
de: HAL-Widgets sind Instanzen von GtKWidgets und erben daher die Methoden, Eigenschaften und Signale der entsprechenden GtkWidget-Klasse. Um zum Beispiel herauszufinden, welche GtkWidget-bezogenen Methoden, Eigenschaften und Signale ein 'HAL_Button' hat, schauen Sie in der Beschreibung von http://www.pygtk.org/docs/pygtk/class-gtkbutton.html[GtkButton] im http://www.pygtk.org/docs/pygtk[PyGtk Referenzhandbuch] nach.

note: type: Plain text
en: An easy way to find out the inheritance relationship of a given HAL widget is as follows: run glade, place the widget in a window, and select it; then choose the 'Signals' tab in the 'Properties' window. For example, selecting a 'HAL_LED' widget, this will show that a 'HAL_LED' is derived from a 'GtkWidget', which in turn is derived from a 'GtkObject', and eventually a 'GObject'.
de: Ein einfacher Weg, um die Vererbungsbeziehung eines bestimmten HAL-Widgets herauszufinden, ist folgender: Starten Sie Glade, platzieren Sie das Widget in einem Fenster und wählen Sie es aus; wählen Sie dann die Registerkarte 'Signale' im Fenster 'Eigenschaften'. Wenn Sie zum Beispiel ein 'HAL_LED'-Widget auswählen, wird dies zeigen, dass ein 'HAL_LED' von einem 'GtkWidget' abgeleitet ist, welches wiederum von einem 'GtkObject' und schließlich einem 'GObject' abgeleitet ist.

note: type: Plain text
en: HAL Widgets also have a few HAL-specific Python attributes:
de: HAL-Widgets haben auch einige HAL-spezifische Python-Attribute:

note: type: Plain text
en: the underlying HAL pin Python object in case the widget has a single pin type
de: das zugrundeliegende HAL-Pin-Python-Objekt, falls das Widget einen einzigen Pin-Typ hat

note: type: Plain text
en: the s32 and float pins of the 'HAL_Spinbutton' and 'HAL_ComboBox' widgets - note these widgets do not have a 'hal_pin' attribute!
de: die s32- und float-Pins der Widgets 'HAL_Spinbutton' und 'HAL_ComboBox' - beachten Sie, dass diese Widgets kein Attribut 'hal_pin' haben!

note: type: Plain text
en: the float input pin of 'HAL_ProgressBar' widget representing the maximum absolute value of input.
de: der Float-Eingangs-Pin des Widgets "HAL_ProgressBar", der den maximalen absoluten Wert des Eingangs darstellt.

note: type: Plain text
en: The are several HAL-specific methods of HAL Widgets, but the only relevant method is:
de: Es gibt mehrere HAL-spezifische Methoden von HAL Widgets, aber die einzige relevante Methode ist:

note: type: Plain text
en: Retrieve the value of the current HAL pin, where '<halpin>' is the applicable HAL pin name listed above.
de: Abrufen des Wertes des aktuellen HAL-Pins, wobei '<halpin>' der oben aufgeführte zutreffende HAL-Pinname ist.

note: type: Title ===
en: Setting pin and widget values
de: Einstellung von Pin- und Widget-Werten

note: type: Plain text
en: As a general rule, if you need to set a HAL output widget's value from Python code, do so by calling the underlying Gtk 'setter' (e.g.  +set_active()+, +set_value()+) - do not try to set the associated pin's value by +halcomp[pinname] = value+ directly because the widget will not take notice of the change!
de: Als allgemeine Regel gilt: Wenn Sie den Wert eines HAL-Ausgabe-Widgets von Python-Code aus setzen müssen, tun Sie dies, indem Sie den zugrundeliegenden Gtk-'Setter' (z.B. +set_active()+, +set_value()+) aufrufen - versuchen Sie nicht, den Wert des zugehörigen Pins direkt durch +halcomp[pinname] = value+ zu setzen, da das Widget die Änderung nicht zur Kenntnis nimmt!

note: type: Plain text
en: It is perfectly OK to set an output HAL pin's value with +halcomp[pinname] = value+ provided this HAL pin is not associated with a widget, that is, has been created by the +hal_glib.GPin(halcomp.newpin(<name>,<type>,<direction>))+ method (see <<gladevcp:programming,GladeVCP Programming>> for an example).
de: Es ist völlig in Ordnung, den Wert eines Ausgangs-HAL-Pins mit +halcomp[pinname] = value+ zu setzen, vorausgesetzt, dieser HAL-Pin ist nicht mit einem Widget verbunden, d.h. er wurde mit der Methode +hal_glib.GPin(halcomp.newpin(<name>,<type>,<direction>))+ erstellt (siehe <<gladevcp:programming,GladeVCP Programming>> für ein Beispiel).

note: type: Title ===
en: The hal-pin-changed signal
de: Das hal-pin-changed-Signal

note: type: Plain text
en: Event-driven programming means that the UI tells your code when "something happens" - through a callback, like when a button was pressed. The output HAL widgets (those which display a HAL pin's value) like LED, Bar, VBar, Meter etc, support the 'hal-pin-changed' signal which may cause a callback into your Python code when - well, a HAL pin changes its value. This means there's no more need for permanent polling of HAL pin changes in your code, the widgets do that in the background and let you know.
de: Ereignisgesteuerte Programmierung bedeutet, dass die Benutzeroberfläche Ihrem Code mitteilt, wenn "etwas passiert" - durch einen Rückruf, z. B. wenn eine Taste gedrückt wurde. Die Ausgabe-HAL-Widgets (die den Wert eines HAL-Pins anzeigen) wie LED, Balken, VStabi, Zähler usw. unterstützen das Signal "hal-pin-changed", das einen Callback in Ihrem Python-Code auslösen kann, wenn - nun ja, ein HAL-Pin seinen Wert ändert. Das bedeutet, dass es keine Notwendigkeit mehr gibt, HAL-Pin-Änderungen in Ihrem Code permanent abzufragen, die Widgets erledigen das im Hintergrund und informieren Sie darüber.

note: type: Plain text
en: Here is an example how to set a +hal-pin-changed+ signal for a HAL_LED in the Glade UI editor:
de: Hier ist ein Beispiel, wie man ein +hal-pin-changed+ Signal für eine HAL_LED im Glade UI Editor setzt:

note: type: Plain text
en: The example in +configs/apps/gladevcp/complex+ shows how this is handled in Python.
de: Das Beispiel in +configs/apps/gladevcp/complex+ zeigt, wie dies in Python gehandhabt wird.

note: type: Plain text
en: This group of widgets are derived from various Gtk buttons and consists of HAL_Button, HAL_ToggleButton, HAL_RadioButton and CheckButton widgets. All of them have a single output BIT pin named identical to the widget. Buttons have no additional properties compared to their base Gtk classes.
de: Diese Gruppe von Widgets ist von verschiedenen Gtk-Buttons abgeleitet und besteht aus den Widgets HAL_Button, HAL_ToggleButton, HAL_RadioButton und CheckButton. Alle haben einen einzelnen BIT-Ausgangspin, der den gleichen Namen wie das Widget trägt. Buttons haben keine zusätzlichen Eigenschaften im Vergleich zu ihren Gtk-Basisklassen.

note: .Buttons type: Block title
en: Check button
de: Checkbutton

note: type: Block title
en: Radio buttons
de: Radiobuttons

note: type: Block title
en: Toggle button
de: Toggle-Button

note: type: delimited block =
en: Defining radio button groups in Glade:
de: Definieren von Optionsschaltflächengruppen in Glade:

note: type: delimited block =
en: Decide on default active button.
de: Entscheiden Sie sich für einen aktiven Standardbutton.

note: type: delimited block =
en: In the other button's 'General→Group' select the default active button's name in the 'Choose a Radio Button in this project' dialog.
de: Wählen Sie unter 'Allgemein→Gruppe' der anderen Schaltfläche den Namen der standardmäßig aktiven Schaltfläche im Dialogfeld 'Wählen Sie eine Optionsschaltfläche in diesem Projekt'.

note: type: Plain text
en: See +configs/apps/gladevcp/by-widget/+ for a GladeVCP applications and UI file for working with radio buttons.
de: Siehe +configs/apps/gladevcp/by-widget/+ für eine GladeVCP-Anwendung und UI-Datei für die Arbeit mit Optionsfeldern.

note: type: Title ===
en: Scales
de: Skalen (engl. scales)

note: type: Plain text
en: HAL_HScale and HAL_VScale are derived from the GtkHScale and GtkVScale respectively.
de: HAL_HScale und HAL_VScale sind von GtkHScale bzw. GtkVScale abgeleitet.

note: type: Plain text
en: To make a scale useful in Glade, add an 'Adjustment' (General → Adjustment → New or existing adjustment) and edit the adjustment object. It defines the default/min/max/increment values. Also, set adjustment 'Page size' and 'Page increment' to zero to avoid warnings.
de: Um eine Skala in Glade nützlich zu machen, fügen Sie eine "Anpassung" hinzu (Allgemein → Anpassung → Neue oder bestehende Anpassung) und bearbeiten das Anpassungsobjekt. Es definiert die Standard-/Min-/Max-/Inkrementwerte. Setzen Sie außerdem die Anpassung 'Seitengröße' und 'Seiteninkrement' auf Null, um Warnungen zu vermeiden.

note: type: Block title
en: Example HAL_HScale
de: Beispiel HAL_HScale

note: type: Plain text
en: HAL SpinButton is derived from GtkSpinButton and holds two pins:
de: HAL SpinButton ist von GtkSpinButton abgeleitet und besitzt zwei Pins:

note: type: Plain text
en: To be useful, Spinbuttons need an adjustment value like scales, see above.
de: Um nützlich zu sein, benötigen SpinButtons einen Einstellwert wie Skalen, siehe oben.

note: type: Block title
en: Example SpinButton
de: Beispiel SpinButton

note: type: Plain text
en: The hal_dial widget simulates a jogwheel or adjustment dial.
    It can be operated with the mouse. You can just use the mouse wheel, while the mouse cursor is over the Hal_Dial widget, or you hold the left mouse button and move the cursor in circular direction to increase or degrease the counts.
    By double clicking the left or right button the scale factor can be increased or decreased.
de: Das hal_dial Widget simuliert ein Jogwheel oder ein Einstellrad.
    Es kann mit der Maus bedient werden. Sie können einfach das Mausrad benutzen, während sich der Mauszeiger über dem Hal_Dial-Widget befindet, oder Sie halten die linke Maustaste gedrückt und bewegen den Mauszeiger in kreisförmiger Richtung, um die Zählungen zu erhöhen oder zu verringern.
    Mit einem Doppelklick auf die linke oder rechte Taste kann der Skalierungsfaktor erhöht oder verringert werden.

note: type: Plain text
en: Counterclockwise   = reduce counts
de: Gegen den Uhrzeigersinn = Zählungen reduzieren

note: type: Plain text
en: Clockwise          = increase counts
de: Im Uhrzeigersinn = Zählungen erhöhen

note: type: Plain text
en: Wheel up           = increase counts
de: Rad hoch = Zählungen erhöhen

note: type: Plain text
en: Wheel down         = reduce counts
de: Rad nach unten = Zählungen reduzieren

note: type: Plain text
en: left Double Click  = x10 scale
de: Links Doppelklick = x10 Skala

note: type: Plain text
en: Right Double Click = /10 scale
de: Rechter Doppelklick = /10 Skala

note: type: Plain text
en: `hal_dial` exports it's count value as HAL pins:
de: 'hal_dial' exportiert seinen Zählwert als HAL-Pins:

note: type: Block title
en: Properties
de: Eigenschaften

note: type: Plain text
en: `hal_dial` has the following properties:
de: `hal_dial` hat die folgenden Eigenschaften:

note: type: Plain text
en: Sets the Counts per Revolution, allowed values are in the range from 25 to 360
    default = 100
de: Legt die Anzahl der Zählungen pro Umdrehung fest, zulässige Werte liegen im Bereich von 25 bis 360 +
    Voreinstellung = 100

note: type: Plain text
en: Set this to False, if you want to hide the counts display in the middle of the widget.
    default = True
de: Setzen Sie diesen Wert auf False, wenn Sie die Anzeige der Zählerstände in der Mitte des Widgets ausblenden möchten. +
    Standard = True

note: type: Plain text
en: Set the content of the label which may be shown over the counts value.
    If the label given is longer than 15 Characters, it will be cut to 15 Characters.
    default = blank
de: Legen Sie den Inhalt der Beschriftung fest, die über dem Zählwert angezeigt werden kann.
    Ist die angegebene Beschriftung länger als 15 Zeichen, wird sie auf 15 Zeichen gekürzt.
    Standard = leer

note: type: Plain text
en: This allows one to change the color of the wheel. It uses a GDK color string.
    default = #bdefbdefbdef (gray)
de: Damit kann man die Farbe des Rades ändern. Sie verwendet einen GDK-Farbstring. +
    Standard = #bdefbdefbdef (grau)

note: type: Plain text
en: There are three counts available 0) Raw CPR counts 1) Scaled counts 2) Delta scaled counts.
    default = 1
de: Es sind drei Zählungen verfügbar 0) Rohe CPR-Zählungen 1) Skalierte Zählungen 2) Delta-skalierte Zählungen. +
    Standard = 1

note: type: Plain text
en: count is based on the CPR selected - it will count positive and negative. It is available as a s32 pin.
de: Die Zählung basiert auf der gewählten CPR - sie zählt positiv und negativ. Er ist als s32-Pin verfügbar.

note: type: Plain text
en: Scaled-count is CPR count times the scale - it can be positive and negative.
    If you change the scale the output will immediately reflect the change. It is available as a FLOAT pin.
de: Der skalierte Zähler ist die CPR-Zahl mal der Skala - er kann positiv und negativ sein.
    Wenn Sie die Skala ändern, spiegelt der Ausgang die Änderung sofort wider. Er ist als FLOAT-Pin verfügbar.

note: type: Plain text
en: Delta-scaled-count is cpr count CHANGE, times scale.
    If you change the scale, only the counts after that change will be scaled and then added to the current value.
    It is available as a FLOAT pin.
de: Delta-scaled-count ist cpr count CHANGE, mal scale. +
    Wenn Sie die Skala ändern, werden nur die Zählerstände nach dieser Änderung skaliert und dann zum aktuellen Wert addiert. +
    Er ist als FLOAT-Pin verfügbar.

note: type: Plain text
en: Set this to False if you want to disallow scale changes by double clicking the widget.
    If this is false the scale factor will not show on the widget.
    default = True
de: Setzen Sie diesen Wert auf False, wenn Sie Änderungen der Skalierung durch Doppelklick auf das Widget nicht zulassen wollen. +
    Wenn dieser Wert auf False gesetzt ist, wird der Skalierungsfaktor im Widget nicht angezeigt. +
    Standard = True

note: type: Plain text
en: Set this to scale the counts.
    default = 1.0
de: Legen Sie diesen Wert fest, um die Zählungen zu skalieren. +
    Standard = 1.0

note: type: Title ====
en: Direct program control
de: Direkte Programmsteuerung

note: type: Plain text
en: There are ways to directly control the widget using Python.
de: Es gibt Möglichkeiten, das Widget direkt mit Python zu steuern.

note: type: Plain text
en: Using goobject to set the above listed properties:
de: Verwenden Sie goobject, um die oben aufgeführten Eigenschaften einzustellen:

note: type: Plain text
en: There are Python methods:
de: Es gibt Python-Methoden:

note: type: Plain text
en: `[widget name].get_value()`
    Will return the counts value as a s32 integer
de: `[Widgetname].get_value()`
    Gibt den Zählwert als s32-Ganzzahl zurück

note: type: Plain text
en: `[widget name].get_scaled_value()`
    Will return the counts value as a float
de: [Widgetname].get_scaled_value()`
    Gibt den Zählwert als Gleitkommazahl zurück

note: type: Plain text
en: `[widget name].get_delta_scaled_value()`
    Will return the counts value as a float
de: '[Widget-Name].get_delta_scaled_value()' +
    Gibt den Counts-Wert als Gleitkommawert zurück

note: type: Plain text
en: `[widget name].set_label("string")`
    Sets the label content with "string"
de: `[Widgetname].set_label("string")` +
    Setzt den Inhalt des Labels mit "string"

note: type: Plain text
en: There are two GObject signals emitted:
de: Es werden zwei GObject-Signale ausgegeben:

note: type: Plain text
en: `count_changed`
    Emitted when the widget's count changes eg. from being wheel scrolled.
de: `count_changed` +
    Wird ausgesendet, wenn sich die Anzahl des Widgets ändert, z.B. wenn es mit dem Rad gescrollt wird.

note: type: Plain text
en: `scale_changed`
    Emitted when the widget's scale changes eg. from double clicking.
de: `scale_changed`
    Wird ausgegeben, wenn sich der Maßstab des Widgets ändert, z. B. durch Doppelklick.

note: type: Plain text
en: Connect to these like so:
de: Schließen Sie diese wie folgt an:

note: type: Plain text
en: The callback functions would use this pattern:
de: Die Callback-Funktionen würden dieses Muster verwenden:

note: type: delimited block -
en: def [count function name](widget, count,scale,delta_scale):
de: def [Name der Zählfunktion](widget, count,scale,delta_scale):

note: type: Plain text
en: This will return: the widget, the current count, scale and delta scale of that widget.
de: Dies gibt zurück: das Widget, die aktuelle Anzahl, Skalierung und Delta-Skalierung dieses Widgets.

note: type: Block title
en: Example Hal_Dial
de: Beispiel Hal_Dial

note: type: Title ===
en: Jog Wheel
de: Jog-Handrad (engl. jog wheel)

note: type: Plain text
en: The `jogwheel` widget simulates a real jogwheel.  It can be operated with the mouse. You can just use the mouse wheel, while the mouse cursor is over the JogWheel widget, or you push the left mouse button and move the cursor in circular direction to increase or degrease the counts.
de: Das Widget "Jogwheel" simuliert ein echtes Jogwheel.  Es kann mit der Maus bedient werden. Sie können einfach das Mausrad benutzen, während sich der Mauszeiger über dem JogWheel-Widget befindet, oder Sie drücken die linke Maustaste und bewegen den Mauszeiger in kreisförmiger Richtung, um die Zählungen zu erhöhen oder zu verringern.

note: type: Plain text
en: Counterclockwise = reduce counts
de: Gegen den Uhrzeigersinn = kleinere Zählwerte

note: type: Plain text
en: Clockwise        = increase counts
de: Im Uhrzeigersinn = erhöhte Zählungen

note: type: Plain text
en: Wheel up         = increase counts
de: Rad hoch = Zählungen erhöhen

note: type: Plain text
en: Wheel down       = reduce counts
de: Rad nach unten = Zählungen reduzieren

note: type: Plain text
en: As moving the mouse the drag and drop way may be faster than the widget can update itself, you may loose counts turning to fast.  It is recommended to use the mouse wheel, and only for very rough movements the drag and drop way.
de: Da das Bewegen der Maus per Drag & Drop schneller sein kann, als das Widget sich selbst zu aktualisieren vermag, kann, dass Sie Zähler verlieren, wenn Sie zu schnell drehen.  Es wird empfohlen, das Mausrad zu verwenden, und nur für sehr grobe Bewegungen die Drag-and-Drop-Methode.

note: type: Plain text
en: `jogwheel` exports it's count value as HAL pin:
de: `jogwheel` exportiert seinen Zählwert als HAL-Pin:

note: type: Plain text
en: `jogwheel` has the following properties:
de: `jogwheel` hat folgende Eigenschaften:

note: type: Labeled list
en: size
de: Größe

note: type: Plain text
en: Sets the size in pixel of the widget, allowed values are in the range of 100 to 500 default = 200
de: Legt die Größe des Widgets in Pixeln fest; die zulässigen Werte liegen im Bereich von 100 bis 500 Standard = 200

note: type: Plain text
en: Sets the Counts per Revolution, allowed values are in the range from 25 to 100 default = 40
de: Legt die Anzahl der Zählungen pro Umdrehung fest, zulässige Werte liegen im Bereich von 25 bis 100 Standard = 40

note: type: Plain text
en: Set this to False, if you want to hide the counts display in the middle of the widget.
de: Setzen Sie diesen Wert auf False, wenn Sie die Anzeige der Zählerstände in der Mitte des Widgets ausblenden möchten.

note: type: Plain text
en: There a couple ways to directly control the widget using Python.
de: Es gibt mehrere Möglichkeiten, das Widget direkt mit Python zu steuern.

note: type: Plain text
en: Using GObject to set the above listed properties:
de: Verwenden Sie GObject, um die oben aufgeführten Eigenschaften einzustellen:

note: type: Plain text
en: `[widget name].get_value()`
    Will return the counts value as integer
de: `[widget name].get_value()`
    Gibt den Zählwert als Ganzzahl zurück

note: type: Block title
en: Example JogWheel
de: Beispiel JogWheel

note: type: Title ===
en: Speed Control
de: Geschwindigkeitsregelung

note: type: Plain text
en: `speedcontrol` is a widget specially made to control an adjustment with a touch screen. It is a replacement to the normal scale widget which is difficult to slide on a touch screen.
de: speedcontrol" ist ein Widget, das speziell für die Steuerung einer Einstellung über einen Touchscreen entwickelt wurde. Es ist ein Ersatz für das normale Skalen-Widget, das auf einem Touchscreen nur schwer zu verschieben ist.

note: type: Plain text
en: The value is controlled with two button to increase or decrease the value.  The increment will change as long a button is pressed. The value of each increment as well as the time between two changes can be set using the widget properties.
de: Der Wert wird mit zwei Tasten zum Erhöhen oder Verringern des Wertes gesteuert.  Die Schrittweite ändert sich, solange eine Schaltfläche gedrückt wird. Der Wert jedes Inkrements sowie die Zeit zwischen zwei Änderungen können über die Widgeteigenschaften eingestellt werden.

note: type: Plain text
en: `speedcontrol` offers some HAL pin:
de: 'speedcontrol' bietet einige HAL-Pins:

note: type: Plain text
en: out float pin
    The shown value of the widget.
de: out float pin +
    Der angezeigte Wert des Widgets.

note: type: Plain text
en: out float pin
    The shown value divided by the scale value, this is very useful, if the velocity is shown in units / min, but LinuxCNC expects it to be in units / second.
de: out float pin +
    Der angezeigte Wert geteilt durch den Skalenwert, ist dies sehr nützlich, wenn die Geschwindigkeit in Einheiten / min angezeigt wird, aber LinuxCNC erwartet, dass es in Einheiten / Sekunde sind.

note: type: Plain text
en: in float pin
    The scale to apply.
    Default is 60.
de: in float pin +
    Die anzuwendende Skalierung. +
    Voreingestellt ist 60.

note: type: Plain text
en: in bit pin
    As long as the pin is true, the value will increase.
    Very handy with connected momentary switch.
de: in Bit-Pin +
    Solange der Pin wahr ist, erhöht sich der Wert. +
    Sehr praktisch bei angeschlossenem Taster.

note: type: Plain text
en: in bit pin
    As long as the pin is true, the value will decrease.
    Very handy with connected momentary switch.
de: in Bit-Pin
    Solange der Pin wahr ist, wird der Wert verringert.
    Sehr praktisch bei angeschlossenem Taster.

note: type: Plain text
en: `speedcontrol` has the following properties:
de: 'speedcontrol' hat die folgenden Eigenschaften:

note: type: Labeled list
en: height
de: height (engl. für Höhe)

note: type: Plain text
en: Integer
    The height of the widget in pixel.
    Allowed values are 24 to 96.
    Default is 36.
de: Integer +
    Die Höhe des Widgets in Pixel. +
    Erlaubte Werte sind 24 bis 96. +
    Voreinstellung ist 36.

note: type: Plain text
en: Float
    The start value to set.
    Allowed values are in the range from 0.001 to 99999.0.
    Default is 10.0.
de: Gleitkommazahl +
    Der einzustellende Startwert. +
    Erlaubte Werte liegen im Bereich von 0,001 bis 99999,0. +
    Standardwert ist 10,0.

note: type: Plain text
en: Float
    The min allowed value.
    Allowed values are 0.0 to 99999.0.
    Default is 0.0.
    If you change this value, the increment will be reset to default, so it might be necessary to set afterwards a new increment.
de: Gleitkommazahl +
    Der zulässige Mindestwert. +
    Erlaubte Werte sind 0,0 bis 99999,0. +
    Der Standardwert ist 0,0. +
    Wenn Sie diesen Wert ändern, wird die Schrittweite auf den Standardwert zurückgesetzt, so dass es notwendig sein kann, anschließend eine neue Schrittweite festzulegen.

note: type: Plain text
en: Float
    The max allowed value.
    Allowed values are 0.001 to 99999.0.
    Default is 100.0.
    If you change this value, the increment will be reset to default, so it might be necessary to set afterwards a new increment.
de: Gleitkommazahl
    Der maximal zulässige Wert.
    Erlaubte Werte sind 0,001 bis 99999,0.
    Der Standardwert ist 100,0.
    Wenn Sie diesen Wert ändern, wird die Schrittweite auf den Standardwert zurückgesetzt, so dass es notwendig sein kann, anschließend eine neue Schrittweite festzulegen.

note: type: Labeled list
en: increment
de: increment (engl. für Zunahme)

note: type: Plain text
en: Float
    Sets the applied increment per mouse click.
    Allowed values are 0.001 to 99999.0 and -1.
    Default is -1, resulting in 100 increments from min to max.
de: Gleitkomma +
    Legt die angewandte Schrittweite pro Mausklick fest. +
    Erlaubte Werte sind 0,001 bis 99999,0 und -1. +
    Standardwert ist -1, was zu 100 Schritten von min bis max führt.

note: type: Plain text
en: Integer
    Sets the timer delay for the increment speed holding pressed the buttons.
    Allowed values are 20 to 300.
    Default is 100.
de: Ganzzahlig +
    Legt die Zeitverzögerung für die Erhöhung der Geschwindigkeit fest, bei der die Tasten gedrückt gehalten werden. +
    Erlaubte Werte sind 20 bis 300. +
    Voreinstellung ist 100.

note: type: Labeled list
en: unit
de: unit (engl. für Einheit)

note: type: Plain text
en: String
    Sets the unit to be shown in the bar after the value.
    Any string is allowed.
    Default is "".
de: Zeichenfolge
    Legt die Einheit fest, die in der Leiste hinter dem Wert angezeigt wird.
    Jede Zeichenkette ist erlaubt.
    Standard ist "".

note: type: Labeled list
en: color
de: color (engl. für Farbe)

note: type: Plain text
en: Color
    Sets the color of the bar.
    Any hex color is allowed.
    Default is "#FF8116".
de: Farbe +
    Legt die Farbe des Balkens fest. +
    Jede Hex-Farbe ist erlaubt. +
    Standard ist "#FF8116".

note: type: Labeled list
en: template
de: template (engl. für Vorlage)

note: type: Plain text
en: String
    Text template to display the value. Python formatting is used.
    Any allowed format.
    Default is "%.1f".
de: Zeichenfolge +
    Textvorlage zur Anzeige des Wertes. Es wird die Python-Formatierung verwendet. +
    Jedes zulässige Format. +
    Standard ist "%.1f".

note: type: Plain text
en: Boolean
    Whether to show or hide the increment an decrement button.
    True or False.
    Default = False.
de: Boolescher Wert +
    Ob die Schaltfläche zum Erhöhen und Verringern angezeigt oder ausgeblendet werden soll. +
    True oder False. +
    Voreinstellung = False.

note: type: delimited block -
en: [widget name].set_property("do_hide_button",bool(value))
    [widget name].set_property("color","#FF00FF")
    [widget name].set_property("unit", "mm/min")
    etc.
de: [widget name].set_property("do_hide_button",bool(value))
    [widget name].set_property("color","#FF00FF")
    [widget name].set_property("unit", "mm/min")
    usw.

note: type: Plain text
en: There are also Python methods to modify the widget:
de: Es gibt auch Python-Methoden zur Änderung des Widgets:

note: type: Plain text
en: You can assign a existing adjustment to the control, that way it is easy to replace existing sliders without many code changes. Be aware, that after changing the adjustment you may need to set a new increment, as it will be reset to its default (100 steps from MIN to MAX):
de: Sie können dem Regler eine bestehende Einstellung zuweisen, so dass es einfach ist, bestehende Schieberegler ohne viele Codeänderungen zu ersetzen. Beachten Sie, dass Sie nach dem Ändern der Einstellung möglicherweise eine neue Schrittweite einstellen müssen, da sie auf die Standardeinstellung zurückgesetzt wird (100 Schritte von MIN bis MAX):

note: type: Plain text
en: `[widget name].get_value()`
    Will return the counts value as float
de: `[Widgetname].get_value()` +
    Gibt den Zählwert als Float zurück

note: type: Plain text
en: `[widget name].set_value(float(value))`
    Sets the widget to the commanded value
de: `[Widgetname].set_value(float(Wert))` +
    Setzt das Widget auf den befohlenen Wert

note: type: Plain text
en: `[widget name].set_digits(int(value))`
    Sets the digits of the value to be used
de: `[Widgetname].set_digits(int(Wert))` +
    Setzt die Ziffern des zu verwendenden Wertes

note: type: Plain text
en: `[widget name].hide_button(bool(value))`
    Hide or show the button
de: `[Widgetname].hide_button(bool(Wert))` +
    Die Schaltfläche ausblenden oder anzeigen

note: type: Block title
en: Example Speedcontrol
de: Beispiel Speedcontrol

note: type: Plain text
en: `hal_label` is a simple widget based on GtkLabel which represents a HAL pin value in a user-defined format.
de: `hal_label` ist ein einfaches Widget, das auf GtkLabel basiert und einen HAL-Pin-Wert in einem benutzerdefinierten Format darstellt.

note: type: Plain text
en: The pin's HAL type (0:s32, 1:float, 2:u32), see also the tooltip on 'General→HAL pin type '(note this is different from PyVCP which has three label widgets, one for each type).
de: Der HAL-Typ des Pins (0:s32, 1:float, 2:u32), siehe auch den Tooltip auf 'General→HAL pin type ' (Hinweis: Dies unterscheidet sich von PyVCP, das drei Label-Widgets hat, eines für jeden Typ).

note: type: Plain text
en: Determines the text displayed - a Python format string to convert the pin value to text. Defaults to +%s+ (values are converted by the str() function) but may contain any legit as an argument to Pythons format() method.
    Example: +Distance: %.03f+ will display the text and the pin value with 3 fractional digits padded with zeros for a FLOAT pin.
de: Bestimmt den angezeigten Text - eine Python-Formatzeichenfolge zur Umwandlung des Pin-Werts in Text. Der Standardwert ist +%s+ (Werte werden mit der Funktion str() umgewandelt), kann aber als Argument für Pythons format()-Methode jede beliebige Zahl enthalten. +
    Beispiel: +Distance: %.03f+ zeigt den Text und den Pin-Wert mit 3 Nachkommastellen, aufgefüllt mit Nullen für einen FLOAT-Pin.

note: type: Title ===
en: Containers
de: Containers (engl. für Behälter)

note: type: Plain text
en: These containers are meant to be used to insensitize (grey out) or hide their children.
    Insensitized children will not respond to input.
de: Diese Container sollen dazu dienen, ihre Kinder zu insensibilisieren (auszugrauen) oder zu verstecken. +
    Nicht sensibilisierte Kinder reagieren nicht auf Eingaben.

note: type: Plain text
en: in bit pin
    If the pin is low then child widgets are visible which is the default state.
de: in Bit-Pin
    Wenn der Pin niedrig ist, sind die untergeordneten Widgets sichtbar, was der Standardzustand ist.

note: type: Labeled list
en: *HAL_Table* and *HAL_Hbox*
de: *HAL_Table* und *HAL_Hbox*

note: type: Plain text
en: Have one HAL BIT input pin which controls if their child widgets are sensitive or not. +
de: Haben Sie einen HAL BIT-Eingangspin, der steuert, ob ihre untergeordneten Widgets empfindlich sind oder nicht. +

note: type: Plain text
en: in bit pin
    If the pin is low then child widgets are inactive which is the default state.
de: in Bit-Pin
    Wenn der Pin niedrig ist, sind die untergeordneten Widgets inaktiv, was der Standardzustand ist.

note: type: Plain text
en: Responds to the state to LinuxCNC's interpreter. +
    Optionally selectable to respond to 'must-be-all-homed', 'must-be-on' and 'must-be-idle'. +
    You can combine them. It will always be insensitive at Estop. +
    (Has no pin).
     +
de: Reagiert auf den Zustand der LinuxCNC's Interpreter. +
    Optional auswählbar, um auf 'must-be-all-homed', 'must-be-on' und 'must-idle' zu reagieren. +
    Sie können sie kombinieren. Bei Notaus (engl. E-stop) ist es immer unempfindlich. +
    (Hat keinen Pin).
     +

note: type: Plain text
en: **HAL_Hbox is deprecated - use HAL_Table.** +
    If current panels use it, it won't fail. You just won't find it in the GLADE editor anymore. +
    Future versions of GladeVCP may remove this widget completely and then you will need to update the panel.
de: **HAL_Hbox ist veraltet - verwenden Sie HAL_Table**.
    Wenn aktuelle Panels es verwenden, wird es nicht scheitern. Sie werden es nur nicht mehr im GLADE-Editor finden. +
    Zukünftige Versionen von GladeVCP könnten dieses Widget komplett entfernen und dann müssen Sie das Panel aktualisieren.

note: type: delimited block =
en: If you find some part of your GladeVCP application is 'grayed out' (insensitive), see whether a HAL_Table pin is unset or unconnected.
de: Wenn Sie feststellen, dass ein Teil Ihrer GladeVCP-Anwendung "ausgegraut" (unempfindlich) ist, prüfen Sie, ob ein HAL_Table-Pin nicht gesetzt oder nicht angeschlossen ist.

note: type: Plain text
en: The `hal_led` simulates a real indicator LED.
    It has a single input BIT pin which controls it's state: ON or OFF.
de: Die `hal_led` simuliert eine echte Anzeige-LED.
    Sie hat einen einzigen BIT-Eingangspin, der ihren Zustand steuert: EIN oder AUS.

note: type: Plain text
en: LEDs have several properties which control their look and feel:
de: LEDs haben verschiedene Eigenschaften, die ihr Aussehen und ihre Wirkung bestimmen:

note: type: Plain text
en: String defining ON color of LED.
    May be any valid gdk.Color name.
    Not working on Ubuntu 8.04.
de: String, der die ON-Farbe der LED definiert. +
    Kann jeder gültige gdk.Color-Name sein. +
    Funktioniert nicht unter Ubuntu 8.04.

note: type: Plain text
en: String defining OFF color of LED.
    May be any valid gdk.Color name or special value `dark`. `dark` means that OFF color will be set to 0.4 value of ON color.
    Not working on Ubuntu 8.04.
de: String, der die OFF-Farbe der LED definiert. +
    Kann jeder gültige gdk.Color-Name oder der spezielle Wert `dark` sein. `dark` bedeutet, dass die OFF-Farbe auf den Wert 0,4 der ON-Farbe gesetzt wird.
    Funktioniert nicht unter Ubuntu 8.04.

note: type: Plain text
en: Colors for ON and OFF states.
    These may be represented as `#RRRRGGGGBBBB` strings and are optional properties which have precedence over `on_color` and `off_color`.
de: Farben für den EIN- und AUS-Zustand.
    Diese können als "#RRRRGGGGBBBB"-Strings dargestellt werden und sind optionale Eigenschaften, die Vorrang vor "on_color" und "off_color" haben.

note: type: Plain text
en: LED radius (for square - half of LED's side)
de: LED-Radius (für Quadrat - halbe LED-Seite)

note: type: Plain text
en: LED Shape.
    Valid values are 0 for round, 1 for oval and 2 for square shapes.
de: LED-Form. +
    Gültige Werte sind 0 für runde, 1 für ovale und 2 für quadratische Formen.

note: type: Plain text
en: If set and LED is ON then it's blinking.
    Blink period is equal to "led_blink_rate" specified in milliseconds.
de: Wenn gesetzt und die LED eingeschaltet ist, blinkt sie. +
    Die Blinkperiode ist gleich der "led_blink_rate", die in Millisekunden angegeben wird.

note: type: Plain text
en: Select/deselect creation of a HAL pin to control the LED.
    With no HAL pin created LED can be controlled with a Python function.
de: Aktivierung/Deaktivierung der Erstellung eines HAL-Pins zur Steuerung der LED. +
    Wenn kein HAL-Pin erstellt wurde, kann die LED mit einer Python-Funktion gesteuert werden.

note: type: Block title
en: Signals
de: Signale

note: type: Plain text
en: As an input widget, LED also supports the +hal-pin-changed+ signal. If you want to get a notification in your code when the LED's HAL pin was changed, then connect this signal to a handler, for example +on_led_pin_changed+ and provide the handler as follows:
de: Als Input-Widget unterstützt die LED auch das Signal +hal-pin-changed+. Wenn Sie in Ihrem Code eine Benachrichtigung erhalten möchten, wenn der HAL-Pin der LED geändert wurde, dann verbinden Sie dieses Signal mit einem Handler, z.B. +on_led_pin_changed+, und stellen Sie den Handler wie folgt bereit:

note: type: delimited block -
en: def on_led_pin_changed(self,hal_led,data=None):
        print("on_led_pin_changed() - HAL pin value:",hal_led.hal_pin.get())
de: def on_led_pin_changed(self,hal_led,data=None):
        print("on_led_pin_changed() - HAL Pin Wert:",hal_led.hal_pin.get())

note: type: Plain text
en: This will be called at any edge of the signal and also during program start up to report the current value.
de: Dieser wird bei jeder Flanke des Signals und auch beim Programmstart aufgerufen, um den aktuellen Wert zu melden.

note: type: Block title
en: Example LEDs
de: Beispiel LEDs

note: type: Title ===
en: ProgressBar
de: ProgressBar (engl. für Fortschrittsbalken)

note: type: delimited block =
en: This widget might go away.
    Use the HAL_HBar and HAL_VBar widgets instead.
de: Dieses Widget wird möglicherweise entfernt.
    Verwenden Sie stattdessen die Widgets HAL_HBar und HAL_VBar.

note: type: Plain text
en: The `HAL_ProgressBar` is derived from gtk.ProgressBar and has two float HAL input pins:
de: Der `HAL_ProgressBar` ist von gtk.ProgressBar abgeleitet und hat zwei Float-HAL-Eingangspins:

note: type: Plain text
en: the current value to be displayed
de: den aktuell anzuzeigenden Wert

note: type: Plain text
en: the maximum absolute value of input
de: der maximale absolute Wert der Eingabe

note: type: Plain text
en: `HAL_ProgressBar` has the following properties:
de: `HAL_ProgressBar` hat die folgenden Eigenschaften:

note: type: Plain text
en: Value scale.
    Sets the maximum absolute value of input. Same as setting the <widgetname>.scale pin.
    A float, range from -2^24 to +2^24.
de: Werteskala. +
    Legt den maximalen absoluten Wert der Eingabe fest. Entspricht dem Setzen des <widgetname>.scale-Pins.
    Ein Float, Bereich von -2^24 bis +2^24.

note: type: Plain text
en: Green zone lower limit
de: Untere Grenze der grünen Zone

note: type: Plain text
en: Yellow zone lower limit
de: Untere Grenze der gelben Zone

note: type: Plain text
en: Red zone lower limit
de: Untergrenze der roten Zone

note: type: Plain text
en: Text template to display the current value of the +<widgetname>+ pin.
    Python formatting may be used for dict +{"value":value}+.
de: Textvorlage zur Anzeige des aktuellen Wertes des `__<widgetname>__` Pin.
    Python-Formatierung kann für dict +{"value":value}+ verwendet werden.

note: type: Block title
en: Example HAL_ProgressBar
de: Beispiel HAL_ProgressBar

note: type: Plain text
en: `HAL_ComboBox` is derived from gtk.ComboBox. It enables choice of a value from a dropdown list.
de: Die `HAL_ComboBox` ist von der gtk.ComboBox abgeleitet. Sie ermöglicht die Auswahl eines Wertes aus einer Dropdown-Liste.

note: type: Plain text
en: `HAL_ComboBox` exports two HAL pins:
de: Die `HAL_ComboBox` exportiert zwei HAL-Pins:

note: type: Plain text
en: Current value, type FLOAT
de: Aktueller Wert, Typ FLOAT

note: type: Plain text
en: Current value, type s32
de: Aktueller Wert, Typ s32

note: type: Plain text
en: `HAL_ComboBox` has the following property which can be set in Glade:
de: `HAL_ComboBox` hat die folgende Eigenschaft, die in Glade gesetzt werden kann:

note: type: Plain text
en: The column index.
    Type s32.
    Valid range from -1..100.
    Defaults value -1.
de: Der Spaltenindex. +
    Typ s32. +
    Gültiger Bereich von -1..100. +
    Standardwert ist -1.

note: type: Plain text
en: In default mode this widgets sets the pins to the index of the chosen list entry. So if your widget has three labels, it may only assume values 0,1 and 2.
de: Im Standardmodus setzt dieses Widget die Pins auf den Index des gewählten Listeneintrags. Wenn Ihr Widget also drei Etiketten hat, kann es nur die Werte 0, 1 und 2 annehmen.

note: type: Plain text
en: In column mode (column > -1), the value reported is chosen from the ListStore array as defined in Glade. So typically your widget definition would have two columns in the ListStore , one with text displayed in the dropdown, and an int or float value to use for that choice.
de: Im Spaltenmodus (engl. column Mode) (Spalte > -1) wird der gemeldete Wert aus dem ListStore-Array, wie in Glade definiert, ausgewählt. Typischerweise würde Ihre Widget-Definition also zwei Spalten im ListStore haben, eine mit Text, der im Dropdown angezeigt wird, und einen int- oder float-Wert, der für diese Auswahl verwendet wird.

note: type: Plain text
en: There's an example in +configs/apps/by-widget/combobox.{py,ui}+ which uses column mode to pick a float value from the ListStore.
de: Es gibt ein Beispiel in +configs/apps/by-widget/combobox. {py,ui}+, das den Spaltenmodus verwendet, um einen Gleitkommawert aus dem ListStore auszuwählen.

note: type: Plain text
en: If you're confused like me about how to edit ComboBox ListStores and CellRenderer, see http://www.youtube.com/watch?v=Z5_F-rW2cL8.
de: Wenn Sie so verwirrt sind wie ich, wie man ComboBox ListStores und CellRenderer bearbeitet, lesen Sie http://www.youtube.com/watch?v=Z5_F-rW2cL8.

note: type: Title ===
en: Bars
de: Bars (engl. für Balken)

note: type: Plain text
en: `HAL_Bar` and `HAL_VBar` widgets for horizontal and vertical bars representing float values.
de: 'HAL_Bar'- und 'HAL_VBar'-Widgets für horizontale und vertikale Balken, die Gleitkommawerte darstellen.

note: type: Plain text
en: `HAL_Bar` and `HAL_VBar` each have one input FLOAT HAL pin.
de: `HAL_Bar` und `HAL_VBar` haben jeweils einen Eingangs-FLOAT-HAL-Pin.

note: type: Plain text
en: `HAL_Bar` and `HAL_VBar` both bars have the following properties:
de: Die beiden Balken `HAL_Bar` und `HAL_VBar` haben die folgenden Eigenschaften:

note: type: Plain text
en: Swap min and max direction.
    An inverted HBar grows from right to left, an inverted VBar from top to bottom.
de: Vertauschen Sie die Richtung von Minimum und Maximum. +
    Eine invertierte HBar wächst von rechts nach links, eine invertierte VStabi von oben nach unten.

note: type: Plain text
en: Minimum and maximum value of desired range.  It is not an error condition if the current value is outside this range.
de: Mindest- und Höchstwert des gewünschten Bereichs.  Es wird Fehler ausgelöst, wenn der aktuelle Wert außerhalb dieses Bereichs liegt.

note: type: Labeled list
en: show limits
de: show limits (engl. für Grenzen zeigen)

note: type: Plain text
en: Used to select/deselect the limits text on bar.
de: Dient zum Auswählen/Abwählen des Grenzwerttextes auf der Leiste.

note: type: Labeled list
en: zero
de: zero (Null)

note: type: Plain text
en: Zero point of range.
    If it's inside of min/max range then the bar will grow from that value and not from the left (or right) side of the widget.
    Useful to represent values that may be both positive or negative.
de: Nullpunkt des Bereichs.
    Wenn er innerhalb des Min/Max-Bereichs liegt, wächst der Balken von diesem Wert aus und nicht von der linken (oder rechten) Seite des Widgets.
    Nützlich zur Darstellung von Werten, die sowohl positiv als auch negativ sein können.

note: type: Plain text
en: Forced width or height of widget.
    If not set then size will be deduced from packing or from fixed widget size and bar will fill whole area.
de: Erzwungene Breite oder Höhe des Widgets. +
    Wenn nicht festgelegt, wird die Größe aus der Verpackung oder aus der festen Widgetgröße abgeleitet und die Leiste füllt den gesamten Bereich aus.

note: type: Plain text
en: Like in Label, sets text format for min/max/current values.
    Can be used to turn off value display.
de: Legt wie bei Label das Textformat für Min/Max/Aktuelle Werte fest. +
    Kann verwendet werden, um die Anzeige der Werte auszuschalten.

note: type: Plain text
en: Sets the bar display to the value entered.
    Used only for testing in GLADE editor.
    The value will be set from a HAL pin.
de: Setzt die Balkenanzeige auf den eingegebenen Wert. +
    Wird nur zum Testen im GLADE-Editor verwendet. +
    Der Wert wird von einem HAL-Pin gesetzt.

note: type: Labeled list
en: target value
de: target value (engl. für Zielwert)

note: type: Plain text
en: Sets the target line to the value entered.
    Used only for testing in GLADE editor.
    The value will can be set in a Python function.
de: Setzt die Zielzeile auf den eingegebenen Wert. +
    Wird nur zum Testen im GLADE-Editor verwendet. +
    Der Wert kann in einer Python-Funktion festgelegt werden.

note: type: Plain text
en: Width of the line that marks the target value.
de: Breite der Linie, die den Zielwert markiert.

note: type: Plain text
en: Background (inactive) color of bar.
de: Hintergrund (inaktiv) Farbe des Balken (engl. bar).

note: type: Plain text
en: Color of the the target line.
de: Farbe der Ziellinie.

note: type: Plain text
en: Colors of different value zones.
    Defaults are `green`, `yellow` and `red`.
    For description of zones see `z*_border` properties.
de: Farben der verschiedenen Wertzonen. +
    Standardwerte sind `grün`, `gelb` und `rot`. +
    Für eine Beschreibung der Zonen siehe Eigenschaften von `z*_border`.

note: type: Plain text
en: Define up bounds of color zones.
    By default only one zone is enabled. If you want more then one zone set `z0_border` and `z1_border` to desired values so zone 0 will fill from 0 to first border, zone 1 will fill from first to second border and zone 2 from last border to 1.
    Borders are set as fractions.
    Valid values range from 0 to 1.
de: Definieren Sie die Grenzen der Farbzonen. +
    Standardmäßig ist nur eine Zone aktiviert. Wenn Sie mehr als eine Zone wünschen, setzen Sie `z0_border` und `z1_border` auf die gewünschten Werte, so dass Zone 0 von 0 bis zur ersten Grenze, Zone 1 von der ersten bis zur zweiten Grenze und Zone 2 von der letzten Grenze bis 1 gefüllt wird. +
    Die Ränder werden als Brüche festgelegt. +
    Gültige Werte reichen von 0 bis 1.

note: type: Block title
en: Horizontal bar
de: Horizontaler Balken

note: type: Block title
en: Vertical bar
de: Vertikaler Balken

note: type: Plain text
en: `HAL_Meter` is a widget similar to PyVCP meter - it represents a float value.
de: 'HAL_Meter' ist ein Widget ähnlich dem PyVCP-Meter - es stellt einen Gleitkommawert dar.

note: type: Plain text
en: `HAL_Meter` has one input FLOAT HAL pin.
de: `HAL_Meter` hat einen Eingangs-FLOAT-HAL-Pin.

note: type: Plain text
en: HAL Meter has the following properties:
de: HAL Meter hat die folgenden Eigenschaften:

note: type: Plain text
en: Minimum and maximum value of desired range.
    It is not an error condition if the current value is outside this range.
de: Mindest- und Höchstwert des gewünschten Bereichs.
    Es handelt sich nicht um eine Fehlerbedingung, wenn der aktuelle Wert außerhalb dieses Bereichs liegt.

note: type: Plain text
en: Forced diameter of widget.
    If not set then size will be deduced from packing or from fixed widget size, and meter will fill all available space with respect to aspect ratio.
de: Erzwungener Durchmesser des Widgets.
    Wenn nicht festgelegt, wird die Größe aus der Packung oder aus der festen Widgetgröße abgeleitet, und der Zähler füllt den gesamten verfügbaren Platz unter Berücksichtigung des Seitenverhältnisses.

note: type: Plain text
en: Like in Label, sets text format for current value.
    Can be used to turn off value display.
de: Legt, wie bei Label, das Textformat für den aktuellen Wert fest.
    Kann verwendet werden, um die Anzeige des Wertes auszuschalten.

note: type: Plain text
en: Large label above center of meter.
de: Großes Etikett über der Metermitte.

note: type: Labeled list
en: sublabel
de: Sublabel

note: type: Plain text
en: Small label below center of meter.
de: Kleines Etikett unter der Mitte des Messgeräts.

note: type: Plain text
en: Background color of meter.
de: Hintergrundfarbe des Messgeräts.

note: type: Plain text
en: Define up bounds of color zones.
    By default only one zone is enabled. If you want more then one zone set `z0_border` and `z1_border` to desired values so zone 0 will fill from min to first border, zone 1 will fill from first to second border and zone 2 from last border to max.
    Borders are set as values in range min-max.
de: Definieren Sie die Grenzen der Farbzonen. +
    Standardmäßig ist nur eine Zone aktiviert. Wenn Sie mehr als eine Zone wünschen, setzen Sie `z0_border` und `z1_border` auf die gewünschten Werte, so dass Zone 0 vom Minimum bis zum ersten Rand, Zone 1 vom ersten bis zum zweiten Rand und Zone 2 vom letzten Rand bis zum Maximum gefüllt wird. +
    Die Ränder werden als Werte im Bereich min-max eingestellt.

note: type: Block title
en: Example HAL Meters
de: Beispiel HAL-Messgeräte

note: type: Plain text
en: This widget is for plotting values over time.
de: Dieses Widget dient zum Auftragen von Werten über die Zeit.

note: type: Plain text
en: Gremlin does not export any HAL pins.
de: Gremlin exportiert keine HAL-Pins.

note: type: Plain text
en: Gremlin has the following properties:
de: Gremlin hat die folgenden Eigenschaften:

note: type: Labeled list
en: show tool speed
de: Anzeige der Werkzeuggeschwindigkeit

note: type: Plain text
en: This displays the tool speed.
    Default = true.
de: Dies zeigt die Werkzeuggeschwindigkeit an. 
    Vorteinstellung = true.

note: type: Labeled list
en: show commanded
de: befohlen zeigen

note: type: Plain text
en: This selects the DRO to use: commanded or actual values.
    Default = true.
de: Dies wählt die zu verwendende DRO aus: befohlene oder tatsächliche Werte.
    Voreinstellung = true.

note: type: Labeled list
en: use metric units
de: metrische Einheiten verwenden

note: type: Plain text
en: This selects the DRO to use: metric or imperial units.
    Default = true.
de: Dies legt fest was die DRO nutzt: metrische oder imperiale Einheiten.
    Voreinstellung = true.

note: type: Labeled list
en: show rapids
de: schnelle Bewegungen zeigen

note: type: Plain text
en: This tells the plotter to show the rapid moves.
    Default = true.
de: Dies legt fest, dass der Plotter die schnelle Bewegungen zeigt.
    Voreinstellung = true.

note: type: Labeled list
en: show DTG
de: DTG anzeigen

note: type: Plain text
en: This selects the DRO to display the distance-to-go value.
    Default = true.
de: Hiermit wird die Anzeige des Restweges auf der DRO ausgewählt.
    Voreinstellung = true.

note: type: Labeled list
en: show relative
de: relativ anzeigen

note: type: Plain text
en: This selects the DRO to show values relative to user system or machine coordinates.
    Default = true.
de: Hiermit wird festgelegt, dass die Anzeige der Werte relativ zu den Koordinaten des Benutzersystems oder der Maschine erfolgen soll.
    Voreinstellung = true.

note: type: Labeled list
en: show live plot
de: Live-Plot anzeigen

note: type: Plain text
en: This tells the plotter to draw or not.
    Default = true.
de: Hiermit wird dem Plotter mitgeteilt, ob er zeichnen soll oder nicht.
    Voreinstellung = true.

note: type: Plain text
en: This tells the plotter to show the machine's limits.
    Default = true.
de: Hiermit wird der Plotter angewiesen, die Grenzen der Maschine anzuzeigen.
    Voreinstellung = true.

note: type: Labeled list
en: show lathe radius
de: Drehmaschinenradius anzeigen

note: type: Plain text
en: This selects the DRO to display the X axis in radius or diameter, if in lathe mode (selectable in the INI file with LATHE = 1).
    Default = true.
de: Hiermit wird die DRO Anzeige der X-Achse in Radius oder Durchmesser gewählt, wenn der Drehmaschinenmodus aktiviert ist (wählbar in der INI-Datei mit LATHE = 1).
    Voreinstellung = true.

note: type: Labeled list
en: show extents
de: Ausmaße anzeigen

note: type: Plain text
en: This tells the plotter to show the extents.
    Default = true.
de: Hiermit wird der Plotter angewiesen, die Ausdehnungen anzuzeigen.
    Voreinstellung = true.

note: type: Labeled list
en: show tool
de: Werkzeug anzeigen

note: type: Plain text
en: This tells the plotter to draw the tool.
    Default = true.
de: Hiermit wird der Plotter angewiesen, das Werkzeug zu zeichnen.
    Voreinstellung = true.

note: type: Labeled list
en: show program
de: Programm zeigen

note: type: Labeled list
en: use joints mode
de: Verwenden des Gelenkmodus

note: type: Plain text
en: Used in non trivialkins machines (e.g., robots).
    Default = false.
de: Wird in nicht trivialkins Maschinen (z.B. Robotern) verwendet.
    Standard = false.

note: type: Labeled list
en: grid size
de: Rastergröße

note: type: Plain text
en: Sets the size of the grid (only visible in the X, Y and Z views).
    Defaults to 0
de: Legt die Größe des Gitters fest (nur in den Ansichten X, Y und Z sichtbar). +
    Standardwert ist 0

note: type: Labeled list
en: use default mouse controls
de: Standard-Maussteuerung verwenden

note: type: Labeled list
en: view
de: view (engl. für Sicht)

note: type: Plain text
en: May be any of `x`, `y`, `y2` , `z`, `z2` , `p` (perspective).
    Defaults to `z` view.
de: Kann einer der Werte `x`, `y`, `y2` , `z`, `z2` , `p` (Perspektive) sein.
    Standardmäßig wird die Ansicht `z` verwendet.

note: type: Plain text
en: Type = boolean.
    Whether to draw a DRO on the plot or not.
    Default = true.
de: Typ = boolesch. +
    Ob ein DRO auf dem Plot gezeichnet werden soll oder nicht. +
    Voreinstellung = true.

note: type: Plain text
en: Type = integer.
    Mouse button handling: leads to different functions of the button:
de: Typ = Ganzzahl.
    Maustastenbehandlung: führt zu verschiedenen Funktionen der Taste:

note: type: Plain text
en: 0 = default: left rotate, middle move,   right zoom
de: 0 = Standard: Links drehen, Mitte bewegen, rechts zoomen

note: type: Plain text
en: 1 =          left zoom,   middle move,   right rotate
de: 1 = Links zoomen, Mitte verschieben, rechts rotieren

note: type: Plain text
en: 2 =          left move,   middle rotate, right zoom
de: 2 = Links bewegen, Mitte drehen, rechts zoomen

note: type: Plain text
en: 3 =          left zoom,   middle rotate, right move
de: 3 = Links zoomen, Mitte drehen, rechts verschieben

note: type: Plain text
en: 4 =          left move,   middle zoom,   right rotate
de: 4 = Links verschieben, mittig zoomen, rechts rotieren

note: type: Plain text
en: 5 =          left rotate, middle zoom,   right move
de: 5 = Links drehen, Mitte zoomen, rechts bewegen

note: type: Plain text
en: 6 =          left move,   middle zoom,   right zoom
de: 6 = Bewegung nach links, mittlerer Zoom, rechter Zoom

note: type: Plain text
en: Mode 6 is recommended for plasmas and lathes, as rotation is not needed for such machines.
de: Modus 6 wird für Plasmas und Drehbänke empfohlen, da für diese Maschinen keine Rotation erforderlich ist.

note: type: Labeled list
en: Hints
de: Hinweise

note: type: Plain text
en: If you set all the plotting options false but show_offsets true you get an offsets page instead of a graphics plot.
de: Wenn Sie alle Plot-Optionen auf false, show_offsets aber auf true setzen, erhalten Sie eine Seite mit Offsets anstelle einer grafischen Darstellung.

note: type: Plain text
en: If you get the zoom distance before changing the view then reset the zoom distance, it's much more user friendly.
de: Es ist viel benutzerfreundlicher, wenn Sie die Zoomdistanz ermitteln, bevor Sie die Ansicht ändern, und dann die Zoomdistanz zurücksetzen.

note: type: Plain text
en: if you select an element in the preview, the selected element will be used as rotation center point
de: wenn Sie ein Element in der Vorschau auswählen, wird das ausgewählte Element als Rotationsmittelpunkt verwendet

note: type: Block title
en: Gremlin Example
de: Gremlin Beispiel

note: type: Plain text
en: The `HAL_Offset` widget is used to display the offset of a single axis.
de: Das `HAL_Offset`-Widget wird verwendet, um den Offset einer einzelnen Achse anzuzeigen.

note: type: Plain text
en: `HAL_Offset` has the following properties:
de: `HAL_Offset` hat die folgenden Eigenschaften:

note: type: Labeled list
en: Joint Number
de: Gelenk Nummer

note: type: Plain text
en: Used to select which axis (technically which joint) is displayed.
    On a trivialkins machine (mill, lathe, router) axis vrs joint number are:
de: Dient zur Auswahl, welche Achse (technisch gesehen welches Gelenk) angezeigt wird.
    Auf einer Trivialkins-Maschine (Fräse, Drehmaschine, Oberfräse) sind Achse und Gelenknummer gleich:

note: type: Labeled list
en: Text template for metric units
de: Textvorlage für metrische Einheiten

note: type: Plain text
en: You can use Python formatting to display the position with different precision.
de: Sie können die Python-Formatierung verwenden, um die Position mit unterschiedlicher Genauigkeit anzuzeigen.

note: type: Labeled list
en: Text template for imperial units
de: Textvorlage für imperiale Einheiten

note: type: Labeled list
en: Reference Type
de: Referenztyp

note: type: Plain text
en: 0:G5x 1:tool 2:G92 3:Rotation around Z
de: 0:G5x 1:Werkzeug 2:G92 3:Drehung um Z

note: type: Title ===
en: DRO widget
de: DRO-Widget

note: type: Plain text
en: The DRO widget is used to display the current axis position.
de: Das DRO-Widget wird verwendet, um die aktuelle Achsenposition anzuzeigen.

note: type: Plain text
en: It has the following properties:
de: Es hat die folgenden Eigenschaften:

note: type: Labeled list
en: Actual Position
de: Actual Position (tatsächliche Position)

note: type: Plain text
en: select actual (feedback) position or commanded position.
de: Wählen Sie die Istposition (Rückmeldung) oder die Sollposition.

note: type: Plain text
en: `absolute` <<sec:machine-coordinate-system,(machine origin)>>, or
de: `absolute` <<sec:machine-coordinate-system,(Maschinen-Ursprung)>>, or

note: type: Plain text
en: `relative` (to current user coordinate origin - G5x), or
de: `relativ` (zum aktuellen Ursprung der Benutzerkoordinate - G5x) oder

note: type: Plain text
en: `distance-to-go` (relative to current user coordinate origin).
de: `distance-to-go` (engl. für verbleibender Weg) (relativ zum aktuellen Ursprung der Benutzerkoordinate).

note: type: Plain text
en: Used to toggle the display units between metric and imperial.
de: Dient zum Umschalten der Anzeigeeinheiten zwischen metrisch und imperial.

note: type: Plain text
en: If you want the display to be right justified, set the X align to 1.0
de: Wenn die Anzeige rechtsbündig sein soll, setzen Sie die X-Ausrichtung auf 1.0

note: type: Plain text
en: If you want different colors or size or text change the attributes in the Glade editor (eg scale is a good way to change the size of the text)
de: Wenn du andere Farben oder eine andere Größe oder einen anderen Text möchtest, ändere die Attribute im Glade-Editor (z.B. ist Skalierung ein guter Weg, um die Größe des Textes zu ändern)

note: type: Plain text
en: The background of the widget is actually see through - so if you place if over an image the DRO numbers will show on top of it with no background. There is a special technique to do this. See the animated function diagrams below.
de: Der Hintergrund des Widgets ist eigentlich durchsichtig - wenn Sie es also über einem Bild platzieren, werden die DRO-Zahlen oben ohne Hintergrund angezeigt. Es gibt eine spezielle Technik, um dies zu erreichen. Siehe die animierten Funktionsdiagramme unten.

note: type: Plain text
en: The DRO widget is a modified gtk label widget. As such much or what can be done to a gtk label can be done to DRO widget.
de: Das DRO-Widget ist ein modifiziertes gtk-Label-Widget. Es somit alles was mit einem gtk Label getan werden kann auch auf ein DRO Widget angewendet werden.

note: type: Title ===
en: Combi_DRO widget
de: Combi_DRO Widget

note: type: Plain text
en: The `Combi_DRO` widget is used to display the current, the relative axis position and the distance to go in one DRO.
    By clicking on the DRO the Order of the DRO will toggle around.
    In Relative Mode the actual coordinate system will be displayed.
de: Das `Combi_DRO`-Widget wird verwendet, um die aktuelle, die relative Achsenposition und die zu fahrende Strecke in einem DRO anzuzeigen.
    Durch Klicken auf das DRO wird die Reihenfolge der DRO umgeschaltet.
    Im relativen Modus wird das aktuelle Koordinatensystem angezeigt.

note: type: Plain text
en: `Combi_DRO` has the following properties:
de: `Combi_DRO` hat die folgenden Eigenschaften:

note: type: Plain text
en: Used to select which axis (technically which joint) is displayed.
    On a trivialkins machine (mill, lathe, router) axis vrs. joint number are:
de: Dient zur Auswahl, welche Achse (technisch gesehen welche Gelenk) angezeigt wird.
    Auf einer Trivialkins-Maschine (Fräse, Drehmaschine, Oberfräse) sind Achse und Gelenknummer gleich:

note: type: Plain text
en: 0:X 1:Y 2:Z etc.
de: 0:X 1:Y 2:Z usw.

note: type: Labeled list
en: actual
de: actual (engl. für tatsächlich)

note: type: Plain text
en: Select actual (feedback) or commanded position.
de: Wählen Sie die tatsächliche (Rückmeldung) oder die befohlene Position.

note: type: Plain text
en: Units will toggle between metric and imperial according to the active G-code being G20 or G21.
    Default is TRUE.
de: Die Einheiten werden zwischen metrisch und imperial umgeschaltet, je nachdem, ob der aktive G-Code G20 oder G21 ist. +
    Voreinstellung ist TRUE.

note: type: Plain text
en: Whether to display position as diameter or radius.
    In diameter mode the DRO will display the joint value multiplied by 2.
de: Ob die Position als Durchmesser oder Radius angezeigt werden soll. +
    Im Durchmessermodus zeigt die Positionsanzeige den Gelenkwert multipliziert mit 2 an.

note: type: Plain text
en: You can use Python formatting to display the position with different precision.
    Default is "%10.3f".
de: Sie können die Python-Formatierung verwenden, um die Position mit unterschiedlicher Genauigkeit anzuzeigen.
    Standard ist "%10.3f".

note: type: Plain text
en: You can use Python formatting to display the position with different precision.
    Default is "%9.4f".
de: Sie können die Python-Formatierung verwenden, um die Position mit unterschiedlicher Genauigkeit anzuzeigen.
    Standard ist "%9.4f".

note: type: Plain text
en: The foreground color of the DRO numbers if the joint is homed.
    Default is green.
de: Die Vordergrundfarbe der DRO-Nummern, wenn das Gelenk referenziert ist.
    Standard ist grün.

note: type: Plain text
en: The foreground color of the DRO numbers if the joint is not homed.
    Default is red.
de: Die Vordergrundfarbe der DRO-Nummern, wenn das Gelenk nicht referenziert ist.
    Standard ist rot.

note: type: Plain text
en: The background color of the DRO, if main DRO shows absolute coordinates.
    Default is blue.
de: Die Hintergrundfarbe der DRO, wenn die Haupt-DRO absolute Koordinaten anzeigt.
    Standard ist blau.

note: type: Plain text
en: The background color of the DRO, if main DRO shows relative coordinates.
    Default is black.
de: Die Hintergrundfarbe des DRO, wenn das Haupt-DRO relative Koordinaten anzeigt.
    Standard ist schwarz.

note: type: Plain text
en: The background color of the DRO, if main DRO shows distance to go.
    Default is yellow.
de: Die Hintergrundfarbe der DRO, wenn die Haupt-DRO die verbleibende Entfernung anzeigt.
    Standard ist gelb.

note: type: Plain text
en: The font size of the big numbers, the small ones will be 2.5 times smaller.
    The value must be an integer in the range of 8 to 96.
    Default is 25.
de: Die Schriftgröße der großen Zahlen, die kleinen Zahlen werden 2,5 mal kleiner sein.
    Der Wert muss eine ganze Zahl im Bereich von 8 bis 96 sein.
    Standardwert ist 25.

note: type: Plain text
en: A left mouse click will toggle the DRO readout through the different modes ["Rel", "Abs", "DTG"].
    By unchecking the box you can disable that behavior. The toggling can still be done with `[widget name].toggle_readout()`.
    Value must be boolean.
    Default is TRUE.
de: Ein linker Mausklick schaltet die DRO-Anzeige zwischen den verschiedenen Modi um ["Rel", "Abs", "DTG"].
    Durch Deaktivieren des Kontrollkästchens können Sie dieses Verhalten abschalten. Das Umschalten kann immer noch mit `[Widgetname].toggle_readout()` durchgeführt werden.
    Der Wert muss boolesch sein.
    Voreinstellung ist TRUE.

note: type: Plain text
en: The time the DRO waits between two polls.
    this setting should only be changed if you use more than 5 DRO at the same time, i.e., on a 6 axis config, to avoid, that the DRO slows down the main application too much.
    The value must be an integer in the range of 100 to 1000. FIXME unit=ms ?
    Default is 150.
de: Die Zeit, die ein DRO zwischen zwei Abfragen wartet.
    Diese Einstellung sollte nur geändert werden, wenn Sie mehr als 5 DROs gleichzeitig verwenden, z.B. bei einer 6-Achsen-Konfiguration, um zu vermeiden, dass die DRO die Hauptanwendung zu sehr verlangsamt.
    Der Wert muss eine ganze Zahl im Bereich von 100 bis 1000 sein. FIXME unit=ms ?
    Voreinstellung ist 150.

note: type: Plain text
en: There are several Python methods to control the widget:
de: Es gibt mehrere Python-Methoden zur Steuerung des Widgets:

note: type: Plain text
en: `[widget name].set_to_inch(state)`
    Sets the DRO to show imperial units.
    `state` = boolean (True or False)
    Default is FIXME.
de: `[Widgetname].set_to_inch(state)`
    Legt fest, dass die DRO imperiale Einheiten anzeigt.
    `state` = boolesch (True oder False)
    Voreinstellung ist FIXME.

note: type: Plain text
en: `[widget name].set_auto_units(state)`
    If True the DRO will change units according to active G-code (G20 / G21).
    `state` = boolean (True or False)
    Default is True.
de: `[Widgetname].set_auto_units(state)`
    Wenn True, ändert die DRO die Einheiten entsprechend dem aktiven G-Code (G20 / G21).
    `state` = boolean (Wahr oder Falsch)
    Standard ist True.

note: type: Plain text
en: `[widget name].set_to_diameter(state)`
    If True the DRO will show the diameter not the radius, i.e., the axis value multiplied by 2 (specially needed for lathes).
    `state` = boolean (True or False)
    Default is False.
de: `[Name des Widgets].set_to_diameter(state)`
    Wenn True, zeigt die DRO den Durchmesser und nicht den Radius an, d. h. den Achsenwert multipliziert mit 2 (speziell für Drehmaschinen erforderlich).
    `state` = boolean (Wahr oder Falsch)
    Der Standardwert ist Falsch.

note: type: Plain text
en: `[widget name].toggle_readout()`
    Toggles the order of the DRO in the widget.
de: `[Widgetname].toggle_readout()`
    Schaltet die Reihenfolge des DRO im Widget um.

note: type: Plain text
en: `[widget name].change_axisletter(letter)`
    Changes the automatically given axis letter.
    Very useful to change an lathe DRO from 'X' to 'R' or 'D'.
    `letter` = string
de: '[Widget-Name].change_axisletter(Buchstabe)'
    Ändert den automatisch angegebenen Achsenbuchstaben.
    Sehr nützlich, um eine Drehmaschine DRO von 'X' auf 'R' oder 'D' zu ändern.
    'letter' = Zeichenfolge

note: type: Plain text
en: `[widget name].get_order()`
    Returns the order of the DRO in the widget mainly used to maintain them consistent.
    The order will also be transmitted with the clicked signal.
    Returns a list containing the order.
de: `[Widgetname].get_order()`
    Gibt die Reihenfolge der DRO im Widget zurück, die hauptsächlich dazu dient, sie konsistent zu halten.
    Die Reihenfolge wird auch mit dem Klicksignal übertragen.
    Gibt eine Liste mit der Reihenfolge zurück.

note: type: Plain text
en: `[widget name].set_order(order)`
    Sets the order of the DRO, mainly used to maintain them consistent.
    `order` = list object, must be one of:
de: `[Name des Widgets].set_order(order)`
    Legt die Reihenfolge der DRO fest, die hauptsächlich verwendet wird, um sie konsistent zu halten.
    `order` = Listenobjekt, muss eines der folgenden sein:

note: type: Plain text
en: `["Rel", "Abs", "DTG"]` (default)
de: `["Rel", "Abs", "DTG"]` (Standard)

note: type: Plain text
en: `[widget name].get_position()`
    Returns the position of the DRO as a list of floats.
    The order is independent of the order shown on the DRO and will be given as `[Absolute , relative , DTG]`. +
de: `[Widgetname].get_position()`
    Liefert die Position des DRO als eine Liste von Floats.
    Die Reihenfolge ist unabhängig von der auf dem DRO angezeigten Reihenfolge und wird als `[Absolut , relativ , DTG]` angegeben. +

note: type: Plain text
en: `Absolute` = the machine coordinates, depends on the actual property will give actual or commanded position. +
de: `Absolut` = die Maschinenkoordinaten, abhängig von der tatsächlichen Eigenschaft, die eine tatsächliche oder befohlene Position ergibt. +

note: type: Plain text
en: `Relative` = will be the coordinates of the actual coordinate system. +
de: `Relativ` = sind die Koordinaten des aktuellen Koordinatensystems. +

note: type: Plain text
en: `DTG` = the distance to go.
    Will mostly be 0, as this function should not be used while the machine is moving, because of time delays.
de: `DTG` = die zu gehende Strecke.
    Wird meistens 0 sein, da diese Funktion aufgrund von Zeitverzögerungen nicht verwendet werden sollte, während sich die Maschine bewegt.

note: type: Plain text
en: The widget will emit the following signals:
de: Das Widget sendet die folgenden Signale aus:

note: type: Plain text
en: `clicked`
    This signal is emitted, when the user has clicked on the Combi_DRO widget.
    It will send the following data:
de: `clicked`
    Dieses Signal wird ausgesendet, wenn der Benutzer auf das Combi_DRO-Widget geklickt hat.
    Es wird die folgenden Daten senden:

note: type: Plain text
en: `widget` = widget object
    The widget object that sends the signal.
de: `widget` = Widget-Objekt
    Das Widget-Objekt, welches das Signal sendet.

note: type: Plain text
en: `joint_number` = integer
    The joint number of the DRO, where '0:X  1:Y  2:Z  etc'.
de: `joint_number` = ganze Zahl
    Die gemeinsame Nummer des DRO, wobei '0:X 1:Y 2:Z etc'.

note: type: Plain text
en: `order` = list object
    The order of the DRO in that widget.
    The order may be used to set other Combi_DRO widgets to the same order with `[widget name].set_order(order)`.
de: `order` = Listenobjekt +
    Die Reihenfolge des DRO in diesem Widget. +
    Die Reihenfolge kann verwendet werden, um andere Combi_DRO-Widgets mit `[widget name].set_order(order)` auf die gleiche Reihenfolge zu setzen.

note: type: Plain text
en: `units_changed`
    This signal is emitted if the DRO units are changed.
    It will send the following data:
de: `units_changed` +
    Dieses Signal wird ausgegeben, wenn die DRO-Einheiten gewechselt werden. +
    Es sendet die folgenden Daten:

note: type: Plain text
en: `metric_units` = boolean
    True if the DRO does display metric units, False in case of imperial display.
de: `metric_units` = boolesch +
    True, wenn die DRO metrische Einheiten anzeigt, False, wenn die Anzeige imperial ist.

note: type: Plain text
en: `system_changed`
    This signal is emitted if the DRO units are changed.
    It will send the following data:
de: `system_changed`+
    Dieses Signal wird ausgegeben, wenn die DRO-Einheiten gewechselt werden. +
    Es sendet die folgenden Daten:

note: type: Plain text
en: `system` = string
    The actual coordinate system. Will be one of G54 G55 G56 G57 G58 G59 G59.1 G59.2 G59.3 or Rel if non has been selected at all, what will only happen in Glade with no LinuxCNC running.
de: `system` = Zeichenfolge +
    Das eigentliche Koordinatensystem. Wird einer von G54 G55 G56 G57 G58 G59 G59.1 G59.2 G59.3 oder Rel sein, wenn überhaupt nicht ausgewählt wurde, was nur in Glade passieren wird, wenn kein LinuxCNC läuft.

note: type: Plain text
en: There are some information you can get through commands, which may be of interest for you:
de: Es gibt einige Informationen, die Sie über Befehle erhalten können und die für Sie von Interesse sein könnten:

note: type: Plain text
en: `[widget name].system`
    The actual system, as mentioned in the system_changed signal.
de: `[Widgetname].system`
    Das eigentliche System, wie im Signal system_changed erwähnt.

note: type: Plain text
en: `[widget name].homed`
    True if the joint is homed.
de: `[Widget-Name].homed` +
    True, wenn das Gelenk referenziert ist.

note: type: Plain text
en: `[widget name].machine_units`
    0 if Imperial, 1 if Metric.
de: `[Widgetname].machine_units` +
    0 wenn imperial, 1 wenn metrisch.

note: type: Block title
en: Example: Three Combi_DRO in a window
de: Beispiel: Drei Combi_DRO in einem Fenster

note: type: delimited block -
en: X = Relative Mode
    Y = Absolute Mode
    Z = DTG Mode
de: X = Relativer Modus +
    Y = Absoluter Modus +
    Z = DTG-Modus

note: type: Title ===
en: IconView (File Select)
de: IconView (Dateiauswahl)

note: type: Plain text
en: This is a touch screen friendly widget to select a file and to change directories.
de: Dies ist ein Touchscreen-freundliches Widget zur Auswahl einer Datei und zum Wechseln von Verzeichnissen.

note: type: Plain text
en: `IconView` widget has the following properties:
de: Das `IconView`-Widget hat die folgenden Eigenschaften:

note: type: Plain text
en: Sets the size of the displayed icon.
    Allowed values are integers in the range from 12 to 96.
    Default is 48.
de: Legt die Größe des angezeigten Symbols fest. +
    Erlaubte Werte sind Ganzzahlen im Bereich von 12 bis 96. +
    Voreinstellung ist 48.

note: type: Plain text
en: Sets the directory to start in when the widget is shown first time.
    Must be a string, containing a valid directory path.
    Default is "/".
de: Legt das Verzeichnis fest, in dem das Widget beim ersten Mal angezeigt wird.
    Muss ein String sein, der einen gültigen Verzeichnispfad enthält.
    Standard ist "/".

note: type: Plain text
en: Sets the "jump to" directory, which is selected by the corresponding button in the bottom button list (the 5th button counting from the left).
    Must be a string, containing a valid directory path.
    Default is "\~".
de: Legt das Verzeichnis fest, in das gesprungen werden soll und das durch die entsprechende Schaltfläche in der unteren Schaltflächenliste ausgewählt wird (die 5. Schaltfläche von links).
    Muss ein String sein, der einen gültigen Verzeichnispfad enthält.
    Voreinstellung ist "\~".

note: type: Plain text
en: Sets the file filter for the objects to be shown.
    Must be a string containing a comma separated list of extensions to be shown.
    Default is "ngc,py".
de: Legt den Dateifilter für die anzuzeigenden Objekte fest.
    Muss eine Zeichenkette sein, die eine durch Komma getrennte Liste von Erweiterungen enthält, die angezeigt werden sollen.
    Standard ist "ngc,py".

note: type: Plain text
en: Sets the sorting order of the displayed icon.
    Must be an integer value from 0 to 3, where: +
de: Legt die Sortierreihenfolge des angezeigten Symbols fest. +
    Muss ein ganzzahliger Wert von 0 bis 3 sein, mit den entsprechenden Konstanten: +

note: type: Plain text
en: 0 = ASCENDING (sorted according to file names)
de: 0 = ASCENDING (engl. für aufsteigend) (nach Dateinamen sortiert)

note: type: Plain text
en: 1 = DESCENDING (sorted according to file names)
de: 1 = DESCENDING (engl. für absteigend) (Sortierung nach Dateinamen)

note: type: Plain text
en: 2 = FOLDERFIRST (show the folders first, then the files), default
de: 2 = FOLDERFIRST (zuerst die Ordner, dann die Dateien anzeigen), Standard

note: type: Plain text
en: 3 = FILEFIRST (show the files first, then the folders)
de: 3 = FILEFIRST (zuerst die Dateien, dann die Ordner anzeigen)

note: type: delimited block -
en: [widget name].set_property(property,Value)
de: [Widgetname].set_property(Eigenschaft,Wert)

note: type: Plain text
en: There are Python methods to control the widget:
de: Es gibt Python-Methoden zur Steuerung des Widgets:

note: type: Plain text
en: `[widget name].show_buttonbox(state)`
    If False the bottom button box will be hidden.
    This is helpful in custom screens, with special buttons layouts to not alter the layout of the GUI. Good example for that is gmoccapy.
    `state` = boolean (True or False).
    Default is True.
de: `[Widgetname].show_buttonbox(state)` +
    Bei False wird das untere Schaltflächenfeld ausgeblendet. +
    Dies ist hilfreich in benutzerdefinierten Bildschirmen, mit speziellen Schaltflächen-Layouts, um das Layout der GUI nicht zu verändern. Ein gutes Beispiel dafür ist gmoccapy. +
    `state` = boolescher Wert (True oder False). +
    Voreinstellung ist True.

note: type: Plain text
en: `[widget name].show_filelabel(state)`
    If True the file label (between the IconView window and the bottom button box) will be shown.
    Hiding this label may save place, but showing it is very useful for debugging reasons.
    `state` = boolean (True or False).
    Default is True.
de: `[Widgetname].show_filelabel(state)`+
    Bei True wird das Dateilabel (zwischen dem IconView-Fenster und dem unteren Schaltflächenfeld) angezeigt. +
    Das Ausblenden dieses Labels kann Platz sparen, aber das Anzeigen ist sehr nützlich für die Fehlersuche. +
    `state` = boolescher Wert (True oder False). +
    Voreinstellung ist True.

note: type: Plain text
en: `[widget name].set_icon_size(iconsize)`
    Sets the icon size.
    Must be an integer in the range from 12 to 96.
    Default = 48.
de: `[Widgetname].set_icon_size(iconsize)` +
    Setzt die Größe des Icons. +
    Muss eine ganze Zahl im Bereich von 12 bis 96 sein. +
    Voreinstellung = 48.

note: type: Plain text
en: `[widget name].set_directory(directory)`
    Allows to set an directory to be shown.
    `directory` = string (a valid file path).
de: `[Widgetname].set_directory(Verzeichnis)` +
    Ermöglicht das Setzen eines anzuzeigenden Verzeichnisses. +
    `Verzeichnis` = String (ein gültiger Dateipfad).

note: type: Plain text
en: `[widget name].set_filetypes(filetypes)`
    Sets the file filter to be used.
    Only files with the given extensions will be shown.
    `filetypes` = string containing a comma separated list of extensions.
    Default = "ngc,py".
de: `[Widgetname].set_filetypes(Dateitypen)` +
    Legt den zu verwendenden Dateifilter fest. +
    Es werden nur Dateien mit den angegebenen Erweiterungen angezeigt. +
    `Dateitypen` = String mit einer durch Komma getrennten Liste von Erweiterungen. +
    Voreinstellung = "ngc,py".

note: type: Plain text
en: `[widget name].get_selected()`
    Returns the path of the selected file, or `None` if a directory has been selected.
de: `[Widgetname].get_selected()` +
    Gibt den Pfad der ausgewählten Datei zurück, oder `None`, wenn ein Verzeichnis ausgewählt wurde.

note: type: Plain text
en: `[widget name].refresh_filelist()`
    Refreshes the filelist.
    Needed if you add a file without changing the directory.
de: `[Widgetname].refresh_filelist()` +
    Aktualisiert die Dateiliste. +
    Wird benötigt, wenn Sie eine Datei hinzufügen, ohne das Verzeichnis zu ändern.

note: type: Plain text
en: If the button box has been hidden, you can reach the functions of this button through it's clicked signals like so:
de: Wenn der Button ausgeblendet wurde, können Sie die Funktionen dieses Buttons über die angeklickten Signale wie folgt erreichen:

note: type: Plain text
en: `selected`
    This signal is emitted when the user selects an icon.
    It will return a string containing a file path if a file has been selected, or `None` if a directory has been selected.
de: `selected` (engl. für ausgewählt) +
    Dieses Signal wird ausgegeben, wenn der Benutzer ein Symbol auswählt. +
    Es gibt einen String zurück, der einen Dateipfad enthält, wenn eine Datei ausgewählt wurde, oder `None`, wenn ein Verzeichnis ausgewählt wurde.

note: type: Plain text
en: `sensitive`
    This signal is emitted when the buttons change their state from sensitive to not sensitive or vice versa.
    This signal is useful to maintain surrounding GUI synchronized with the button of the widget. See gmoccapy as example.
    It will return the **buttonname** and the new **state**: +
de: `empfindlich` +
    Dieses Signal wird ausgegeben, wenn die Schaltflächen ihren Zustand von sensitiv zu nicht sensitiv oder umgekehrt ändern. +
    Dieses Signal ist nützlich, um die umgebende GUI mit der Schaltfläche des Widgets synchronisiert zu halten. Siehe gmoccapy als Beispiel. +
    Es gibt den **Buttonnamen** und den neuen **Zustand** zurück: +

note: type: Plain text
en: `buttonname` is one of `btn_home`, `btn_dir_up`, `btn_sel_prev`, `btn_sel_next`, `btn_jump_to` or `btn_select`.
de: Der Name der Schaltfläche ist einer der folgenden: `btn_home`, `btn_dir_up`, `btn_sel_prev`, `btn_sel_next`, `btn_jump_to` oder `btn_select`.

note: type: Plain text
en: `state` is a boolean and will be True or False.
de: `state` ist ein boolescher Wert und wird True oder False sein.

note: type: Plain text
en: `exit`
    This signal is emitted when the exit button has been pressed to close the IconView.
    Mostly needed if the application is started as stand alone.
de: `exit` +
    Dieses Signal wird ausgegeben, wenn der Exit-Button gedrückt wurde, um die IconView zu schließen. +
    Meistens benötigt, wenn die Anwendung als eigenständige Anwendung gestartet wird.

note: type: Block title
en: Iconview Example
de: Iconview Beispiel

note: type: Title ===
en: Calculator widget
de: Rechner-Widget

note: type: Plain text
en: This is a simple calculator widget, that can be used for numerical input.
    You can preset the display and retrieve the result or that preset value. +
de: Dies ist ein einfaches Taschenrechner-Widget, das für numerische Eingaben verwendet werden kann. +
    Sie können die Anzeige voreinstellen und das Ergebnis oder den voreingestellten Wert abrufen. +

note: type: Plain text
en: `calculator` has the following properties:
de: `Rechner` (engl. calculator) hat folgende Eigenschaften:

note: type: Labeled list
en: Is editable
de: Ist bearbeitbar

note: type: Plain text
en: This allows the entry display to be typed into from a keyboard.
de: Damit kann die Eingabeanzeige über eine Tastatur eingegeben werden.

note: type: Labeled list
en: Set Font
de: Schriftart einstellen

note: type: Plain text
en: This allows you to set the font of the display.
de: Hier können Sie die Schriftart für die Anzeige einstellen.

note: type: Plain text
en: `[widget name].set_value(2.5)`
    This presets the display and is recorded.
de: `[Widgetname].set_value(2.5)`
    Damit ist die Anzeige voreingestellt und wird aufgezeichnet.

note: type: Plain text
en: `[widget name].set_font("sans 25")`
de: `[Widgetname].set_font("sans 25")`

note: type: Plain text
en: `[widget name].set_editable(True)`
de: `[Widgetname].set_editable(True)`

note: type: Plain text
en: `[widget name].get_value()`
    Returns the calculated value - a float.
de: `[Widgetname].get_value()`
    Gibt den berechneten Wert zurück - eine Fließkommazahl.

note: type: Plain text
en: `[widget name].set_editable(True)` +
de: `[Widgetname].set_editable(True)` +

note: type: Plain text
en: `[widget name].get_preset_value()`
    Returns the recorded value: a float.
de: `[Widgetname].get_preset_value()`
    Gibt den aufgezeichneten Wert zurück: eine Fließkommazahl.

note: type: Title ===
en: Tooleditor widget
de: Werkzeugeditor-Widget (engl. tooleditor widget)

note: type: Plain text
en: This is a `tooleditor` widget for displaying and modifying a tool file.
    If in lathe mode, it will display wear offsets and tool offsets separately.
    Wear offsets are designated by tool number above 10000 (Fanuc style).
    It checks the current file once a second to see if LinuxCNC updated it.
de: Dies ist ein "Werkzeug-Editor"-Widget zum Anzeigen und Ändern einer Werkzeugdatei. +
    Im Drehmaschinenmodus werden Verschleißkorrekturen und Werkzeugkorrekturen separat angezeigt. +
    Verschleißkorrekturen werden durch Werkzeugnummern über 10000 (Fanuc-Stil) gekennzeichnet. +
    Es überprüft die aktuelle Datei einmal pro Sekunde, um zu sehen, ob LinuxCNC es aktualisiert.

note: type: Plain text
en: LinuxCNC requires remapping of tool calls to actually use wear offsets.
de: LinuxCNC erfordert Mapping von Werkzeug-Aufrufe, um Verschleiß-Offsets anzuwenden.

note: type: Plain text
en: `tooleditor` has the following properties:
de: `tooleditor` hat die folgenden Eigenschaften:

note: type: Labeled list
en: Hidden Columns
de: Versteckte Spalten

note: type: Plain text
en: This will hide the given columns.
    The columns are designated (in order) as such: `s,t,p,x,y,z,a,b,c,u,v,w,d,i,j,q`.
    You can hide any number of columns including the select and comments.
de: Dadurch werden die angegebenen Spalten ausgeblendet. +
    Die Spalten werden (in dieser Reihenfolge) wie folgt bezeichnet: `s,t,p,x,y,z,a,b,c,u,v,w,d,i,j,q`. +
    Sie können eine beliebige Anzahl von Spalten ausblenden, einschließlich der Auswahl und der Kommentare.

note: type: delimited block -
en: [widget name].set_properties('hide_columns','uvwijq')
de: [Widgetname].set_properties('hide_columns','uvwijq')

note: type: Plain text
en: This would hide the uvwij and q columns and show all others.
de: Dadurch würden die Spalten uvwij und q ausgeblendet und alle anderen angezeigt.

note: type: Plain text
en: `[widget name].set_visible("ijq",False)`
    Would hide ij and Q columns and leave the rest as they were.
de: `[Widgetname].set_visible("ijq",False)`
    Blendet die Spalten ij und Q aus und belässt den Rest so, wie er war.

note: type: Plain text
en: `[widget name].set_filename(path_to_file)`
    Sets and loads the tool file.
de: `[Widgetname].set_filename(pfad_zur_datei)`
    Setzt und lädt die Werkzeugdatei.

note: type: Plain text
en: `[widget name].reload(None)`
    Reloads the current toolfile.
de: `[Widgetname].reload(None)`
    Lädt die aktuelle Werkzeugdatei neu.

note: type: Plain text
en: `[widget name].set_font('sans 16,tab='1')`
    Sets the (Pango) font on the Tab, column title, and tool data.
    The `all_offsets`, `wear_offsets`, `tool_offsets` can be set at the same time by adding 1, 2 and/or 3 to the tab string.
    Default is all the tabs set.
de: `[Widgetname].set_font('sans 16,tab='1')` +
    Setzt die (Pango)-Schriftart für die Registerkarte, den Spaltentitel und die Werkzeugdaten. +
    Die `all_offsets`, `wear_offsets`, `tool_offsets` können gleichzeitig gesetzt werden, indem man 1, 2 und/oder 3 an den Tab-String anhängt. +
    Standardmäßig sind alle Registerkarten eingestellt.

note: type: Plain text
en: `[widget name].set_title_font('sans 16,tab='1')`
    Sets the (Pango) font on the column titles only.
    The `all_offsets`, `wear_offsets`, `tool_offsets` can be set at the same time by adding 1, 2 and/or 3 to the tab string.
    Default is all the tabs set.
de: `[Widgetname].set_title_font('sans 16,tab='1')` +
    Setzt die (Pango)-Schriftart nur für die Spaltentitel. +
    Die `all_offsets`, `wear_offsets`, `tool_offsets` können gleichzeitig gesetzt werden, indem man 1, 2 und/oder 3 an den Tab-String anhängt. +
    Standardmäßig sind alle Tabulatoren gesetzt.

note: type: Plain text
en: `[widget name].set_tab_font('sans 16,tab='1')`
    Sets the (Pango) font on the tabs only.
    The `all_offsets`, `wear_offsets`, `tool_offsets` can be set at the same time by adding 1, 2 and/or 3 to the tab string.
    Default is all the tabs set.
de: `[Widgetname].set_tab_font('sans 16,tab='1')` +
    Setzt die (Pango)-Schriftart nur auf den Registerkarten. +
    Die `all_offsets`, `wear_offsets`, `tool_offsets` können gleichzeitig gesetzt werden, indem man 1, 2 und/oder 3 an den Tab-String anhängt. +
    Standardmäßig sind alle Tabs gesetzt.

note: type: Plain text
en: `[widget name].set_col_visible("abcUVW", False, tab='1')`
    This would hide (False) the abcuvw columns on tab 1 (all_offsets)
de: `[Widgetname].set_col_visible("abcUVW", False, tab='1')` +
    Dies würde die abcuvw-Spalten auf der Registerkarte 1 (all_offsets) ausblenden (False)

note: type: Plain text
en: `[widget name].set_lathe_display(value)`
    Hides or shows the wear and tool offset tabs used for lathes
de: `[widget name].set_lathe_display(value)` +
    Blendet die Verschleiß- und Werkzeugkorrekturtabellen für Drehbänke ein oder aus

note: type: Plain text
en: `[widget name].get_toolinfo(toolnum)`
    Returns the tool information array of the requested toolnumber or current tool if no tool number is specified.
    Returns None if tool not found in table or if there is no current tool.
de: `[Widgetname].get_toolinfo(toolnum)` +
    Gibt das Werkzeuginformationsfeld der angeforderten Werkzeugnummer oder des aktuellen Werkzeugs zurück, wenn keine Werkzeugnummer angegeben ist. +
    Gibt None zurück, wenn das Werkzeug nicht in der Tabelle gefunden wurde oder wenn es kein aktuelles Werkzeug gibt.

note: type: Plain text
en: `[widget name].hide_buttonbox(self, True)`
    'Convenience' method to hide buttons.
    You must call this after show_all().
de: `[Widgetname].hide_buttonbox(self, True)` +
    Komfortable Methode zum Ausblenden von Schaltflächen. +
    Sie müssen diese Methode nach show_all() aufrufen.

note: type: Plain text
en: `[widget name].get_selected_tool()`
    Return the user selected (highlighted) tool number.
de: `[Widgetname].get_selected_tool()` +
    Gibt die vom Benutzer ausgewählte (hervorgehobene) Werkzeugnummer zurück.

note: type: Plain text
en: `[widget name].set_selected_tool(toolnumber)`
    Selects (highlights) the requested tool.
de: `[Widgetname].set_selected_tool(toolnumber)` +
    Wählt das gewünschte Werkzeug aus (markiert es).

note: type: Block title
en: Tooleditor Example
de: Werkzeug-Editor (engl. tooleditor) Beispiel

note: type: Title ===
en: Offsetpage
de: Offset-Seite

note: type: Plain text
en: The `Offsetpage` widget is used to display/edit the offsets of all the axes.
    It has convenience buttons for zeroing G92 and Rotation-Around-Z offsets.
    It will only allow you to select the edit mode when the machine is on and idle.
    You can directly edit the offsets in the table at this time. Unselect the edit button to allow the `OffsetPage` to reflect changes.
de: Das Widget `Offsetpage` dient der Anzeige/Bearbeitung der Offsets aller Achsen.
    Es hat praktische Schaltflächen für die Nullstellung von G92- und Rotation-Around-Z-Offsets.
    Sie können den Bearbeitungsmodus nur auswählen, wenn die Maschine eingeschaltet und im Leerlauf ist.
    Zu diesem Zeitpunkt können Sie die Offsets in der Tabelle direkt bearbeiten. Heben Sie die Auswahl der Schaltfläche "Bearbeiten" auf, damit die Offset-Seite die Änderungen wiedergeben kann.

note: type: Plain text
en: A no-space list of columns to hide. The columns are designated (in order) as such: `xyzabcuvwt`.
    You can hide any of the columns.
de: Eine Liste der auszublendenden Spalten ohne Leerzeichen. Die Spalten werden (in dieser Reihenfolge) wie folgt bezeichnet: `xyzabcuvwt`.
    Sie können jede der Spalten ausblenden.

note: type: Labeled list
en: Hidden Rows
de: Ausgeblendete Zeilen

note: type: Plain text
en: A no-space list of rows to hide.
    The rows are designated (in order) as such: `0123456789abc`.
    You can hide any of the rows.
de: Eine Liste der auszublendenden Zeilen ohne Leerzeichen.
    Die Zeilen werden (der Reihe nach) wie folgt bezeichnet: `0123456789abc`.
    Sie können jede der Zeilen ausblenden.

note: type: Labeled list
en: Pango Font
de: Pango-Schriftart

note: type: Plain text
en: Sets text font type and size.
de: Legt Art und Größe der Schriftart fest.

note: type: Labeled list
en: HighLight color
de: Hervorhebungsfarbe

note: type: Plain text
en: When editing this is the highlight color.
de: Beim Bearbeiten ist dies die Hervorhebungsfarbe.

note: type: Labeled list
en: Active color
de: Aktive Farbe

note: type: Plain text
en: When `OffsetPage` detects an active user coordinate system it will use this color for the text.
de: Wenn `OffsetPage` ein aktives Benutzerkoordinatensystem erkennt, wird diese Farbe für den Text verwendet.

note: type: Plain text
en: `[widget name].mark_active("G55")`
    Allows you to directly set a row to highlight, e.g., in case you wish to use your own navigation controls. See the chapter on <<cha:gmoccapy,GMOCCAPY>>.
de: `[Widgetname].mark_active("G55")`
    Ermöglicht es Ihnen, eine Zeile direkt zu markieren, z.B. wenn Sie Ihre eigenen Navigationskontrollen verwenden möchten. Siehe das Kapitel über <<cha:gmoccapy,GMOCCAPY>>.

note: type: Plain text
en: `[widget name].selection_mask = ("Tool","Rot","G5x")`
    These rows are NOT selectable in edit mode.
de: `[Widgetname].selection_mask = ("Werkzeug", "Rot", "G5x")` +
    Diese Zeilen sind im Bearbeitungsmodus NICHT auswählbar.

note: type: Plain text
en: `[widget name].set_names([['G54','Default'],["G55","Vice1"],['Rot','Rotational']])`
    This allows you to set the text of the 'T' column of each/any row.
    This is a list of a list of offset-name/user-name pairs.
    The default text is the same as the offset name.
de: `[Widgetname].set_names([['G54','Default'],["G55", "Vice1"],['Rot','Rotational']])` +
    Damit können Sie den Text der Spalte "T" in jeder beliebigen Zeile festlegen. +
    Es handelt sich um eine Liste von Offset-Namen/Benutzernamen-Paaren. +
    Der Standardtext ist derselbe wie der Offsetname.

note: type: Plain text
en: `[widget name].get_names()`
    This returns a list of a list of row-keyword/user-name pairs.
    The user name column is editable, so saving this list is user friendly.
    See `set_names` above.
de: [Widgetname].get_names()` +
    Diese Funktion gibt eine Liste von Paaren aus Zeilen-Schlüsselwort/Benutzername zurück. +
    Die Spalte mit den Benutzernamen ist editierbar, so dass das Speichern dieser Liste benutzerfreundlich ist. +
    Siehe `set_names` oben.

note: type: Block title
en: Offsetpage Example
de: Beispiel für eine Offset-Seite

note: type: Title ===
en: HAL_sourceview widget
de: HAL_sourceview-Widget

note: type: Plain text
en: This is for displaying and simple editing of G-code.  It looks for `.ngc` highlighting specs in `~/share/gtksourceview-2.0/language-specs/`.  The current running line will be highlighted.
de: Dies ist für die Anzeige und einfache Bearbeitung von G-Code.  Es sucht nach `.ngc`-Hervorhebungsspezifikationen in `~/share/gtksourceview-2.0/language-specs/`.  Die aktuell laufende Zeile wird hervorgehoben.

note: type: Plain text
en: With external Python glue code it can:
de: Mit externem Python-Glue-Code kann dies:

note: type: Plain text
en: Search for text, undo and redo changes.
de: Nach Text suchen, Änderungen rückgängig machen und Wiederherstellen,

note: type: Plain text
en: Be used for program line selection.
de: für die Auswahl von Programmzeilen genutzt werden.

note: type: Plain text
en: `[widget name].redo()`
    Redo one level of changes.
de: `[widget name].redo()` +
    Wiederholung einer Ebene von Änderungen.

note: type: Plain text
en: `[widget name].undo()`
    Undo one level of changes
de: [widget name].undo()` +
    Rückgängig machen einer Ebene von Änderungen

note: type: Plain text
en: `[widget name].text_search(direction=True,mixed_case=True,text='G92')`
    Searches forward (direction = True) or backward,
    Searches with mixed case (mixed_case = True) or exact match
de: `[Widgetname].text_search(direction=True,mixed_case=True,text='G92')` +
    Sucht vorwärts (direction = True) oder rückwärts, +
    Sucht mit gemischter Groß- und Kleinschreibung (mixed_case = True) oder exakter Übereinstimmung

note: type: Plain text
en: `[widget name].set_line_number(linenumber)`
    Sets the line to highlight.
    Uses the sourceview line numbers.
de: `[Widgetname].set_line_number(Zeilennummer)` +
    Setzt die hervorzuhebende Zeile. +
    Verwendet die Zeilennummern der Quellansicht.

note: type: Plain text
en: `[widget name].get_line_number()`
    Returns the currently highlighted line.
de: `[Widgetname].get_line_number()` +
    Gibt die aktuell hervorgehobene Zeile zurück.

note: type: Plain text
en: `[widget name].line_up()`
    Moves the highlighted line up one line.
de: [Widget-Name].line_up()` +
    Verschiebt die markierte Zeile um eine Zeile nach oben.

note: type: Plain text
en: `[widget name].line_down()`
    Moves the highlighted line down one line.
de: `[Name des Widgets].line_down()`
    Verschiebt die markierte Zeile um eine Zeile nach unten.

note: type: Plain text
en: `[widget name].load_file('filename')`
    Loads a file.
    Using None (not a filename string) will reload the same program.
de: `[Widgetname].load_file('Dateiname')`
    Lädt eine Datei.
    Die Verwendung von None (keine Zeichenkette für den Dateinamen) lädt das gleiche Programm erneut.

note: type: Plain text
en: `[widget name].get_filename()`
    FIXME description
de: '[Widget-Name].get_filename()'
    FIXME Beschreibung

note: type: Block title
en: Sourceview Example
de: Quellen-Ansicht (engl. sourceview) Beispiel

note: type: Title ===
en: MDI history
de: MDI-Geschichte

note: type: Plain text
en: This is for displaying and entering MDI codes.
    It will be automatically grayed out when MDI is not available, eg during E-stop and program running.
de: Dient zur Anzeige und Eingabe von MDI-Codes.
    Sie wird automatisch ausgegraut, wenn MDI nicht verfügbar ist, z. B. bei Not-Aus und Programmlauf.

note: type: Plain text
en: Integer value between 8 and 96.
    Will modify the default font size of the treeview to the selected value.
de: Ganzzahliger Wert zwischen 8 und 96.
    Ändert die Standardschriftgröße der Baumansicht auf den ausgewählten Wert.

note: type: Plain text
en: Integer value between 8 and 96.
    Will modify the default font size of the entry to the selected value. +
de: Ganzzahliger Wert zwischen 8 und 96. +
    Ändert die Standardschriftgröße der Baumansicht auf den ausgewählten Wert. +

note: type: Plain text
en: Boolean, True enables the mouse double click feature and a double click on an entry will submit that command.
    It is not recommended to use this feature on real machines, as a double click on a wrong entry may cause dangerous situations
de: Boolean, True aktiviert die Maus-Doppelklick-Funktion und ein Doppelklick auf einen Eintrag sendet diesen Befehl.
    Es wird nicht empfohlen, diese Funktion auf echten Maschinen zu verwenden, da ein Doppelklick auf einen falschen Eintrag zu gefährlichen Situationen führen kann

note: type: Title ===
en: Animated function diagrams: HAL widgets in a bitmap
de: Animierte Funktionsdiagramme: HAL-Widgets in einer Bitmap

note: type: Plain text
en: For some applications it might be desirable to have a background image - like a functional diagram - and position widgets at appropriate places in that image.  A good combination is setting a bitmap background image, like from a .png file, making the GladeVCP window fixed-size, and use the Glade Fixed widget to position widgets on this image.  The code for the below example can be found in `configs/apps/gladevcp/animated-backdrop`:
de: Für einige Anwendungen kann es wünschenswert sein, ein Hintergrundbild zu haben - wie ein Funktionsdiagramm - und Widgets an geeigneten Stellen in diesem Bild zu positionieren.  Eine gute Kombination ist das Setzen eines Bitmap-Hintergrundbildes, z.B. aus einer .png-Datei, das Festlegen der Größe des GladeVCP-Fensters und die Verwendung des Glade Fixed-Widgets zur Positionierung von Widgets auf diesem Bild.  Der Code für das folgende Beispiel ist in `configs/apps/gladevcp/animated-backdrop` zu finden:

note: type: Block title
en: HAL widgets in a bitmap Example
de: HAL-Widgets in einem Bitmap Beispiel

note: type: Title ==
en: Action Widgets Reference
de: Referenz zu Aktions-Widgets

note: type: Plain text
en: GladeVCP includes a collection of "canned actions" called **VCP Action Widgets** for the Glade user interface editor.
de: GladeVCP enthält eine Sammlung von "vorgefertigten Aktionen" (engl. canned actions) namens **VCP Action Widgets** für den Glade-Benutzeroberflächeneditor.

note: type: Plain text
en: VCP Action Widgets are derived from the `Gtk.Action` widget.
de: VCP Action Widgets sind von dem `Gtk.Action` Widget abgeleitet.

note: type: Plain text
en: The Action widget in a nutshell:
de: Das Action-Widget in Kürze:

note: type: Plain text
en: is an object available in Glade
de: ist ein in Glade verfügbares Objekt

note: type: Plain text
en: has no visual appearance by itself
de: hat für sich genommen kein optisches Erscheinungsbild

note: type: Plain text
en: it's purpose: associate a visible, sensitive UI component like menu, toolbutton, button with a command.  See these widget's 'General→Related→Action' property.
de: Sein Zweck: eine sichtbare, empfindliche UI-Komponente wie ein Menü, eine Werkzeugschaltfläche oder eine Schaltfläche mit einem Befehl zu verknüpfen.  Siehe die Eigenschaft "General→Related→Action" dieser Widgets.

note: type: Plain text
en: the "canned action" will be executed when the associated UI component is triggered (button press, menu click..)
de: Die "vorgefertigte Aktion" (nicht-veränderbares Makro, engl. canned action) wird ausgeführt, wenn die zugehörige UI-Komponente ausgelöst wird (Tastendruck, Menüklick..)

note: type: Plain text
en: provides an easy way to execute commands without resorting to Python programming.
de: bietet eine einfache Möglichkeit, Befehle auszuführen, ohne auf Python-Programmierung zurückgreifen zu müssen.

note: type: Plain text
en: The appearance of VCP Actions in Glade is roughly as follows:
de: Das Erscheinungsbild der VCP-Aktionen in Glade sieht in etwa wie folgt aus:

note: type: Block title
en: Action Widgets
de: Action-Widgets

note: type: Plain text
en: Tooltip hovers provide a description.
de: Hover über Werkzeugspitzen (engl. tooltips) liefert eine Beschreibung.

note: type: Title ===
en: VCP Action Widgets
de: VCP Action-Widgets

note: type: Plain text
en: VCP Action widgets are one-shot type widgets. They implement a single action and are for use in simple buttons, menu entries or radio/check groups.
de: VCP Action-Widgets sind einmalige Widgets. Sie implementieren eine einzelne Aktion und sind für die Verwendung in einfachen Schaltflächen, Menüeinträgen oder Options-/Kontrollgruppen vorgesehen.

note: type: Plain text
en: The command string may use special keywords to access important functions.
de: Der Befehlsstring kann spezielle Schlüsselwörter für den Zugriff auf wichtige Funktionen enthalten.

note: type: Plain text
en: 'ACTION' for access to the ACTION command library.
de: 'ACTION' für den Zugriff auf die ACTION-Befehlsbibliothek.

note: type: Plain text
en: `GSTAT` for access to the Gstat status message library.
de: `GSTAT` für den Zugriff auf die Gstat-Bibliothek für Statusmeldungen.

note: type: Plain text
en: 'INFO' for access to collected data from the INI file.
de: 'INFO' für den Zugriff auf gesammelte Daten aus der INI-Datei.

note: type: Plain text
en: 'HAL' for access to the HAL linuxcnc Python module
de: 'HAL' für den Zugriff auf das HAL `linuxcnc` Python-Modul

note: type: Plain text
en: `STAT` for access to LinuxCNC's raw status via the LinuxCNC Python module.
de: `STAT` für den Zugriff auf LinuxCNC's rohen Status über das LinuxCNC Python Modul.

note: type: Plain text
en: `CMD` for access to LinuxCNC's commands via the LinuxCNC Python module.
de: `CMD` für den Zugriff auf LinuxCNC-Befehle über das LinuxCNC-Python-Modul.

note: type: Plain text
en: `EXT` for access to the handler file functions if available.
de: `EXT` für den Zugriff auf die Handler-Dateifunktionen, falls verfügbar.

note: type: Plain text
en: `linuxcnc` for access to the LinuxCNC Python module.
de: `linuxcnc` für den Zugriff auf das LinuxCNC-Python-Modul.

note: type: Plain text
en: `self` for access to the widget instance.
de: `self` für den Zugriff auf die Widget-Instanz.

note: type: Plain text
en: 'dir' for access to the handlers list of attributes.
de: 'dir' für den Zugriff auf die Handler-Attributliste.

note: type: Plain text
en: There are options to
de: Es gibt Optionen für

note: type: Plain text
en: select when the widget will be active,
de: wählen Sie aus, wann das Widget aktiv sein soll,

note: type: Plain text
en: set the mode before the command is executed.
de: den Modus einstellen, bevor der Befehl ausgeführt wird.

note: type: Plain text
en: Example command to just print a message to the terminal:
de: Beispiel für einen Befehl, um einfach eine Nachricht auf dem Terminal zu auszugeben:

note: type: delimited block -
en: print('action activated')
de: print('Aktion aktiviert')

note: type: Plain text
en: Example command to set the machine to off state:
de: Beispiel für einen Befehl, um die Maschine in den Aus-Zustand zu versetzen:

note: type: Plain text
en: Example command to call a handler function that passes data:
de: Beispiel für einen Befehl für den Aufruf einer Handler-Funktion, die Daten übergibt:

note: type: Plain text
en: You can use a semicolon to separate multiple commands:
de: Sie können ein Semicolon verwenden, um mehrere Befehle zu trennen;

note: type: Plain text
en: More information on INFO and ACTION can be found here: <<cha:gladevcp-libraries,GladeVCP Libraries modules>>
de: Weitere Informationen zu INFO und ACTION finden Sie hier: <<cha:gladevcp-libraries,GladeVCP Libraries modules>>

note: type: Plain text
en: More information on GStat can be found here: <<cha:gstat,GStat>>
de: Weitere Informationen zu GStat finden Sie hier: <<cha:gstat,GStat>>

note: type: Title ===
en: VCP ToggleAction widgets
de: VCP ToggleAction-Widgets

note: type: Plain text
en: These are **bi-modal** widgets. They implement two actions or use a second (usually `pressed`) state to indicate that currently an action is running.  Toggle actions are aimed for use in `ToggleButtons`, `ToggleToolButtons` or toggling menu items.  A simplex example is the `ESTOP` toggle button.
de: Dies sind **bi-modale** Widgets. Sie implementieren zwei Aktionen oder verwenden einen zweiten (normalerweise `gedrückten`) Zustand, um anzuzeigen, dass gerade eine Aktion ausgeführt wird.  Toggle-Aktionen sind für die Verwendung in `ToggleButtons`, `ToggleToolButtons` oder zum Umschalten von Menüpunkten gedacht.  Ein einfaches Beispiel ist die `ESTOP`  (engl. für Notaus) Umschalttaste.

note: type: Plain text
en: Currently the following widgets are available:
de: Derzeit sind die folgenden Widgets verfügbar:

note: type: Plain text
en: The `ESTOP` toggle sends `ESTOP` or `ESTOP_RESET` commands to LinuxCNC depending on it's state.
de: Der `ESTOP` Toggle sendet `ESTOP` oder `ESTOP_RESET` Befehle an LinuxCNC, abhängig von seinem Zustand.

note: type: Plain text
en: The `ON/OFF` toggle sends `STATE_ON` and `STATE_OFF` commands.
de: Die Umschaltfunktion `ON/OFF` sendet die Befehle `STATE_ON` und `STATE_OFF`.

note: type: Plain text
en: `Pause/Resume` sends `AUTO_PAUSE` or `AUTO_RESUME` commands.
de: `Pause/Fortsetzen` sendet die Befehle `AUTO_PAUSE` oder `AUTO_RESUME`.

note: type: Plain text
en: The following toggle actions have only one associated command and use the `pressed` state to indicate that the requested operation is running:
de: Die folgenden Toggle-Aktionen haben nur einen zugehörigen Befehl und verwenden den Zustand "gedrückt", um anzuzeigen, dass der angeforderte Vorgang ausgeführt wird:

note: type: Plain text
en: The `Run` toggle sends an `AUTO_RUN` command and waits in the `pressed` state until the interpreter is idle again.
de: Der `Run`-Toggle sendet einen `AUTO_RUN`-Befehl und wartet im `gedrückten` Zustand, bis der Interpreter wieder im Leerlauf ist.

note: type: Plain text
en: The `Stop` toggle is inactive until the interpreter enters the active state (is running G-code) and then allows user to send `AUTO_ABORT` command.
de: Der `Stop`-Schalter ist inaktiv, bis der Interpreter in den aktiven Zustand übergeht (d.h. G-Code ausführt) und dem Benutzer dann erlaubt, den Befehl `AUTO_ABORT` zu senden.

note: type: Plain text
en: The `MDI` toggle sends given MDI command and waits for its completion in `pressed` inactive state.
de: Der `MDI`-Umschalter sendet einen bestimmten MDI-Befehl und wartet im inaktiven Zustand "gedrückt" auf dessen Ausführung.

note: type: Title ===
en: The Action_MDI Toggle and Action_MDI widgets
de: Die Action_MDI Toggle und Action_MDI Widgets

note: type: Plain text
en: These widgets provide a means to execute arbitrary MDI commands.
    The `Action_MDI` widget does not wait for command completion as the `Action_MDI` Toggle does, which remains disabled until command complete.
de: Diese Widgets bieten eine Möglichkeit, beliebige MDI-Befehle auszuführen.
    Das `Action_MDI`-Widget wartet nicht auf die Beendigung des Befehls, wie es das `Action_MDI`-Toggle tut, das deaktiviert bleibt, bis der Befehl beendet ist.

note: type: Title ===
en: A simple example: Execute MDI command on button press
de: Ein einfaches Beispiel: Ausführen eines MDI-Befehls bei Button-Druck

note: type: Plain text
en: `configs/apps/gladevcp/mdi-command-example/whoareyou.ui` is a Glade UI file which conveys the basics:
de: `configs/apps/gladevcp/mdi-command-example/whoareyou.ui` ist eine Glade UI-Datei, welche die Grundlagen vermittelt:

note: type: Plain text
en: Open it in Glade and study how it's done.
de: Öffnen Sie es in Glade und studieren Sie, wie es gemacht wird.

note: type: Plain text
en: Start AXIS, and then start this from a terminal window with `gladevcp whoareyou.ui`.
de: Starten Sie AXIS, und starten Sie es dann von einem Terminalfenster aus mit `gladevcp whoareyou.ui`.

note: type: Plain text
en: See the `hal_action_mdi1` action and it's `MDI command` property - this just executes `(MSG, "Hi, I'm an VCP_Action_MDI")` so there should be a message popup in AXIS like so:
de: Sehen Sie sich die Aktion `hal_action_mdi1` und ihre Eigenschaft `MDI command` an - diese führt einfach `(MSG, "Hi, I'm an VCP_Action_MDI")` aus, so dass in AXIS ein Nachrichten-Popup erscheinen sollte, etwa so:

note: type: Block title
en: Action_MDI Simple Example
de: Action_MDI Einfaches Beispiel

note: type: Plain text
en: You'll notice that the button associated with the Action_MDI action is grayed out if the machine is off, in E-Stop or if the interpreter is running.  It will automatically become active when the machine is turned on and out of E-Stop, and the program is idle.
de: Sie werden feststellen, dass die mit der Aktion Action_MDI verbundene Schaltfläche ausgegraut ist, wenn die Maschine ausgeschaltet ist, sich im E-Stop befindet oder der Interpreter läuft.  Sie wird automatisch aktiv, wenn die Maschine eingeschaltet ist und sich nicht mehr im Notaus-Modus befindet und das Programm im Leerlauf ist.

note: type: Title ===
en: Parameter passing with Action_MDI and ToggleAction_MDI widgets
de: Parameterübergabe mit Action_MDI- und ToggleAction_MDI-Widgets

note: type: Plain text
en: Optionally, `MDI command` strings may have parameters substituted before they are passed to the interpreter.  Parameters currently may be names of HAL pins in the GladeVCP component.  This is how it works:
de: Optional können bei "MDI Befehl"-Zeichenketten Parameter ersetzt werden, bevor sie an den Interpreter übergeben werden.  Parameter können derzeit Namen von HAL-Pins in der GladeVCP-Komponente sein.  So funktioniert es:

note: type: Plain text
en: assume you have a 'HAL SpinBox' named +speed+, and you want to pass it's current value as a parameter in an MDI command.
de: Nehmen Sie an, Sie haben eine 'HAL SpinBox' mit dem Namen +Geschwindigkeit+, und Sie wollen ihren aktuellen Wert als Parameter in einem MDI-Befehl übergeben.

note: type: Plain text
en: The HAL SpinBox will have a float-type HAL pin named speed-f (see HalWidgets description).
de: Die HAL SpinBox hat einen HAL-Pin vom Typ float mit dem Namen speed-f (siehe HalWidgets-Beschreibung).

note: type: Plain text
en: To substitute this value in the MDI command, insert the HAL pin name enclosed like so: `${pin-name}`
de: Um diesen Wert im MDI-Befehl zu ersetzen, fügen Sie den Namen des HAL-Pins in der folgenden Weise ein: ${pin-name}`

note: type: Plain text
en: for the above HAL SpinBox, we could use `(MSG, "The speed is: ${speed-f}")` just to show what's happening.
de: für die obige HAL SpinBox könnten wir `(MSG, "Die Geschwindigkeit ist: ${geschwindigkeit-f}")` verwenden, um zu zeigen, was passiert.

note: type: Plain text
en: The example UI file is `configs/apps/gladevcp/mdi-command-example/speed.ui`.  Here's what you get when running it:
de: Die Beispiel-UI-Datei ist "configs/apps/gladevcp/mdi-command-example/speed.ui".  So sieht das Ergebnis aus, wenn man sie ausführt:

note: type: Block title
en: Action_MDI Parameter Passing Example
de: Action_MDI Parameterübergabe Beispiel

note: type: Title ===
en: An advanced example: Feeding parameters to an O-word subroutine
de: Ein fortgeschrittenes Beispiel: Übergabe von Parametern an eine O-Wort-Unterroutine

note: type: Plain text
en: It's perfectly OK to call an O-word subroutine in an MDI command, and pass HAL pin values as actual parameters.  An example UI file is in `configs/apps/gladevcp/mdi-command-example/owordsub.ui`.
de: Es ist völlig in Ordnung, eine O-Wort-Unterroutine in einem MDI-Befehl aufzurufen und HAL-Pin-Werte als aktuelle Parameter zu übergeben.  Eine Beispiel-UI-Datei befindet sich in `configs/apps/gladevcp/mdi-command-example/owordsub.ui`.

note: type: Plain text
en: Place `nc_files/gladevcp_lib/oword.ngc` so AXIS can find it, and run `gladevcp owordsub.ui` from a terminal window.  This looks like so:
de: Legen Sie `nc_files/gladevcp_lib/oword.ngc` so ab, dass AXIS es finden kann, und führen Sie `gladevcp owordsub.ui` in einem Terminalfenster aus.  Das sieht dann so aus:

note: type: Block title
en: Action_MDI Advanced Example
de: Action_MDI Erweitertes Beispiel

note: type: Title ===
en: Preparing for an MDI Action, and cleaning up afterwards
de: Vorbereitung einer MDI-Aktion und anschließendes Aufräumen

note: type: Plain text
en: The LinuxCNC G-code interpreter has a single global set of variables, like feed, spindle speed, relative/absolute mode and others. If you use G-code commands or O-word subs, some of these variables might get changed by the command or subroutine - for example, a probing subroutine will very likely set the feed value quite low. With no further precautions, your previous feed setting will be overwritten by the probing subroutine's value.
de: Der LinuxCNC G-Code-Interpreter hat einen einzigen globalen Satz von Variablen, wie Vorschub, Spindeldrehzahl, relative/absolute Modus und andere. Wenn Sie G-Code-Befehle oder O-Wort-Subs verwenden, könnten einige dieser Variablen durch den Befehl oder Unterprogramm geändert werden - zum Beispiel wird ein Antasten Unterprogramm sehr wahrscheinlich den Vorschubwert ziemlich niedrig eingestellt. Ohne weitere Vorkehrungen wird Ihre vorherige Vorschubeinstellung durch den Wert des Sondierungsunterprogramms überschrieben.

note: type: Plain text
en: To deal with this surprising and undesirable side effect of a given O-word subroutine or G-code statement executed with an LinuxCNC ToggleAction_MDI, you might associate pre-MDI and post-MDI handlers with a given LinuxCNC ToggleAction_MDI. These handlers are optional and provide a way to save any state before executing the MDI Action, and to restore it to previous values afterwards. The signal names are +mdi-command-start+ and +mdi-command-stop+; the handler names can be set in Glade like any other handler.
de: Um mit diesem überraschenden und unerwünschten Nebeneffekt eines bestimmten O-Wort-Unterprogramms oder einer G-Code-Anweisung, die mit einem LinuxCNC ToggleAction_MDI ausgeführt wird, umzugehen, können Sie pre-MDI- und post-MDI-Handler mit einem bestimmten LinuxCNC ToggleAction_MDI verbinden. Diese Handler sind optional und bieten die Möglichkeit, den Zustand vor der Ausführung der MDI-Aktion zu speichern und danach wieder auf die vorherigen Werte zurückzusetzen. Die Signalnamen sind +mdi-command-start+ und +mdi-command-stop+; die Namen der Handler können in Glade wie jeder andere Handler gesetzt werden.

note: type: Plain text
en: Only the `Action_MDI` Toggle widget supports these signals.
de: Nur das Toggle-Widget `Action_MDI` unterstützt diese Signale.

note: type: delimited block =
en: In a later release of LinuxCNC, the new M-codes M70-M72 will be available.  They will make saving state before a subroutine call, and restoring state on return much easier.
de: In einer späteren Version von LinuxCNC, werden die neuen M-Codes M70-M72 verfügbar sein.  Sie machen das Speichern von Zustand vor einem Unterprogramm aufrufen, und Wiederherstellen von Zustand bei der Rückkehr viel einfacher.

note: type: Title ===
en: Using the LinuxCNC Stat object to deal with status changes
de: Verwendung des LinuxCNC Stat-Objekts zum Umgang mit Statusänderungen

note: type: Plain text
en: Many actions depend on LinuxCNC status - is it in manual, MDI or auto mode? is a program running, paused or idle? You cannot start an MDI command while a G-code program is running, so this needs to be taken care of.  Many LinuxCNC actions take care of this themselves, and related buttons and menu entries are deactivated when the operation is currently impossible.
de: Viele Aktionen hängen vom LinuxCNC-Status ab - ist es im manuellen, MDI- oder Auto-Modus? läuft ein Programm, pausiert es oder ist es im Leerlauf? Sie können keinen MDI-Befehl starten, während ein G-Code-Programm läuft, also muss dies beachtet werden.  Viele LinuxCNC-Aktionen kümmern sich selbst darum, und die zugehörigen Schaltflächen und Menüeinträge sind deaktiviert, wenn die Operation gerade nicht möglich ist.

note: type: Plain text
en: When using Python event handlers - which are at a lower level than Actions - one needs to take care of dealing with status dependencies oneself. For this purpose, there's the LinuxCNC Stat widget: to associate LinuxCNC status changes with event handlers.
de: Bei der Verwendung von Python-Ereignishandlern - die sich auf einer niedrigeren Ebene als Actions befinden - muss man sich selbst um den Umgang mit Statusabhängigkeiten kümmern. Für diesen Zweck gibt es das LinuxCNC Stat-Widget: um LinuxCNC-Statusänderungen mit Event-Handlern zu verknüpfen.

note: type: Plain text
en: LinuxCNC Stat has no visible component - you just add it to your UI with Glade. Once added, you can associate handlers with its following signals:
de: LinuxCNC Stat hat keine sichtbare Komponente - Sie fügen es einfach mit Glade zu Ihrer Benutzeroberfläche hinzu. Einmal hinzugefügt, können Sie Handler mit den folgenden Signalen verknüpfen:

note: type: Plain text
en: state-related:
de: zustandsbezogen:

note: type: Plain text
en: `state-estop`: emitted when E-Stop condition occurs,
de: `state-estop`: ausgegeben, wenn die Notaus-Bedingung eintritt,

note: type: Plain text
en: `state-estop-reset`: emitted when machine is reset,
de: `state-estop-reset`: ausgegeben, wenn die Maschine zurückgesetzt wird,

note: type: Plain text
en: `state-on`: emitted when machine is turned on,
de: "state-on": wird beim Einschalten des Geräts ausgegeben,

note: type: Plain text
en: `state-off`: emitted when machine is turned off.
de: `state-off`: wird ausgegeben, wenn die Maschine ausgeschaltet wird.

note: type: Plain text
en: mode-related:
de: Modus-bezogen:

note: type: Plain text
en: `mode-manual`: emitted when LinuxCNC enters manual mode,
de: 'mode-manual': wird ausgegeben, wenn LinuxCNC in den manuellen Modus wechselt,

note: type: Plain text
en: `mode-mdi`: emitted when LinuxCNC enters MDI mode,
de: `mode-mdi`: ausgegeben, wenn LinuxCNC in den MDI-Modus wechselt,

note: type: Plain text
en: `mode-auto`: emitted when LinuxCNC enters automatic mode,
de: `mode-auto`: ausgegeben, wenn LinuxCNC in den automatischen Modus wechselt,

note: type: Plain text
en: interpreter-related: emitted when the G-code interpreter changes into that mode
de: Interpreter-bezogen: wird ausgegeben, wenn der G-Code-Interpreter in diesen Modus wechselt

note: type: Plain text
en: homing-related: emitted when LinuxCNC is homed or not
de: Referenzfart-bezogen: ausgegeben, wenn LinuxCNC referenziert ist oder nicht

note: type: Plain text
en: `not-all-homed`
de: `nicht-all-homed`

note: type: Title ==
en: GladeVCP Programming
de: GladeVCP-Programmierung

note: type: Title ===
en: User Defined Actions
de: Benutzerdefinierte Aktionen

note: type: Plain text
en: Most widget sets, and their associated user interface editors, support the concept of callbacks - functions in user-written code which are executed when 'something happens' in the UI - events like mouse clicks, characters typed, mouse movement, timer events, window hiding and exposure and so forth.
de: Die meisten Widgetsets und die dazugehörigen Editoren für die Benutzeroberfläche unterstützen das Konzept der Callback-Funktionen im vom Benutzer geschriebenen Code, die ausgeführt werden, wenn in der Benutzeroberfläche "etwas passiert" - Ereignisse wie Mausklicks, eingegebene Zeichen, Mausbewegungen, Timer-Ereignisse, das Ein- und Ausblenden von Fenstern und so weiter.

note: type: Plain text
en: HAL output widgets typically map input-type events like a button press to a value change of the associated HAL pin by means of such a - predefined - callback. Within PyVCP, this is really the only type of event handling supported - doing something more complex, like executing MDI commands to call a G-code subroutine, is not supported.
de: HAL-Ausgabe-Widgets bilden typischerweise Eingabe-Ereignisse wie einen Tastendruck mittels eines solchen - vordefinierten - Callbacks auf eine Wertänderung des zugehörigen HAL-Pins ab. In PyVCP ist dies wirklich die einzige Art der Ereignisbehandlung, die unterstützt wird - etwas Komplexeres, wie die Ausführung von MDI-Befehlen zum Aufruf eines G-Code-Unterprogramms, wird nicht unterstützt.

note: type: Plain text
en: Within GladeVCP, HAL pin changes are just one type of the general class of events (called signals) in GTK+. Most widgets may originate such signals, and the Glade editor supports associating such a signal with a Python method or function name.
de: Innerhalb von GladeVCP sind HAL-Pin-Änderungen nur ein Typ der allgemeinen Klasse von Ereignissen (Signale genannt) in GTK+. Die meisten Widgets können solche Signale auslösen, und der Glade-Editor unterstützt die Verknüpfung eines solchen Signals mit einem Python-Methoden- oder Funktionsnamen.

note: type: Plain text
en: If you decide to use user-defined actions, your job is to write a Python module whose class methods - or in the simple case, just functions - can be referred to in Glade as event handlers. GladeVCP provides a way to import your module(s) at startup and will automatically link your event handlers with the widget signals as set in the Glade UI description.
de: Wenn Sie sich entscheiden, benutzerdefinierte Aktionen zu verwenden, ist es Ihre Aufgabe, ein Python-Modul zu schreiben, dessen Klassenmethoden - oder im einfachen Fall nur Funktionen - in Glade als Event-Handler referenziert werden können. GladeVCP bietet eine Möglichkeit, Ihr(e) Modul(e) beim Start zu importieren und wird Ihre Event-Handler automatisch mit den Widgetsignalen verknüpfen, wie sie in der Glade-UI-Beschreibung festgelegt sind.

note: type: Title ===
en: Core Library
de: Core-Bibliothek

note: type: Plain text
en: There are three libraries of functions that can be used to help program GladeVCP.
de: Es gibt drei Bibliotheken mit Funktionen, die zur Programmierung von GladeVCP verwendet werden können.

note: type: Plain text
en: 'Info': collects details from the INI file.
de: 'Info': sammelt Details aus der INI-Datei.

note: type: Plain text
en: 'Action': A collection of functions to change LinuxCNC states.
de: 'Action': Eine Sammlung von Funktionen zum Ändern von LinuxCNC-Zuständen.

note: type: Plain text
en: 'Status': Reports the state of LinuxCNC. It wraps around 'Gstat'.
de: 'Status': Meldet den Status von LinuxCNC. Es führt intern "Gstat" aus ("wrapt").

note: type: Plain text
en: Importing and instantiating the libraries:
de: Importieren und Instanziieren der Bibliotheken:

note: type: Plain text
en: using the library functions:
de: Verwendung der Bibliotheksfunktionen:

note: type: Title ===
en: An example: adding custom user callbacks in Python
de: Ein Beispiel: Hinzufügen benutzerdefinierter Callback-Funktionen in Python

note: type: Plain text
en: This is just a minimal example to convey the idea - details are laid out in the rest of this section.
de: Dies ist nur ein minimales Beispiel, um die Idee zu vermitteln - Details werden im restlichen Teil dieses Abschnitts erläutert.

note: type: Plain text
en: GladeVCP can not only manipulate or display HAL pins, you can also write regular event handlers in Python. This could be used, among others, to execute MDI commands. Here's how you do it:
de: GladeVCP kann nicht nur HAL-Pins manipulieren oder anzeigen, man kann auch reguläre Event-Handler in Python schreiben. Dies kann unter anderem zur Ausführung von MDI-Befehlen verwendet werden. So wird es gemacht:

note: type: Plain text
en: Write a Python module like so and save as e.g. handlers.py:
de: Schreiben Sie ein Python-Modul wie folgt und speichern Sie es z. B. als handlers.py:

note: type: Plain text
en: In Glade, define a button or HAL button, select the 'Signals' tab, and in the GtkButton properties select the 'pressed' line. Enter 'on_button_press' there, and save the Glade file.
de: Definieren Sie in Glade eine Schaltfläche oder eine HAL-Schaltfläche, wählen Sie die Registerkarte "Signale" und wählen Sie in den Eigenschaften von GtkButton die Zeile "pressed". Geben Sie dort "on_button_press" ein und speichern Sie die Glade-Datei.

note: type: Plain text
en: Then add the option '-u handlers.py' to the GladeVCP command line. If your event handlers are spread over several files, just add multiple '-u <pyfilename>' options.
de: Fügen Sie dann die Option '-u handlers.py' in die GladeVCP-Befehlszeile ein. Wenn Ihre Event-Handler über mehrere Dateien verteilt sind, fügen Sie einfach mehrere '-u <pyfilename>' Optionen hinzu.

note: type: Plain text
en: Now, pressing the button should change its label since it's set in the callback function.
de: Wenn Sie nun auf die Schaltfläche drücken, sollte sich ihre Beschriftung ändern, da sie in der Callback-Funktion festgelegt wurde.

note: type: Plain text
en: Or do some more useful stuff, like calling an MDI command!
de: Oder machen Sie etwas Nützlicheres, wie den Aufruf eines MDI-Befehls!

note: type: Title ===
en: HAL value change events
de: HAL-Wertänderungs-Ereignisse

note: type: Plain text
en: HAL input widgets, like a LED, automatically associate their HAL pin state (on/off) with the optical appearance of the widget (LED lit/dark).
de: HAL-Eingangs-Widgets, wie z.B. eine LED, assoziieren automatisch ihren HAL-Pin-Status (an/aus) mit dem optischen Erscheinungsbild des Widgets (LED leuchtet/dunkelt).

note: type: Plain text
en: Beyond this built-in functionality, one may associate a change callback with any HAL pin, including those of predefined HAL widgets. This fits nicely with the event-driven structure of a typical widget application: every activity, be it mouse click, key, timer expired, or the change of a HAL pin's value, generates a callback and is handled by the same orthogonal mechanism.
de: Über diese eingebaute Funktionalität hinaus kann man jedem HAL-Pin, auch denen von vordefinierten HAL-Widgets, einen Änderungs-Callback zuordnen. Dies passt gut zu der ereignisgesteuerten Struktur einer typischen Widget-Anwendung: Jede Aktivität, sei es ein Mausklick, eine Taste, ein abgelaufener Timer oder die Änderung des Wertes eines HAL-Pins, erzeugt einen Callback und wird durch denselben orthogonalen Mechanismus behandelt.

note: type: Plain text
en: For user-defined HAL pins not associated with a particular HAL widget, the signal name is 'value-changed'.  See the <<gladevcp:adding-hal-pins,Adding HAL pins>> section below for details.
de: Für benutzerdefinierte HAL-Pins, die nicht mit einem bestimmten HAL-Widget verbunden sind, lautet der Signalname 'value-changed'.  Siehe den Abschnitt <<gladevcp:adding-hal-pins,AL Pins hinzufügen>> weiter unten für Details.

note: type: Plain text
en: HAL widgets come with a pre-defined signal called 'hal-pin-changed'.  See the <<gladevcp:hal-pin-changed-signal,HAL Widgets>> section for details.
de: HAL Widgets werden mit einem vordefinierten Signal namens 'hal-pin-changed' geliefert.  Siehe den Abschnitt <<gladevcp:hal-pin-changed-signal,HAL Widgets>> für Details.

note: type: Title ===
en: Programming model
de: Programmiermodell

note: type: Plain text
en: The overall approach is as follows:
de: Das Gesamtkonzept sieht folgendermaßen aus:

note: type: Plain text
en: Design your UI with Glade, and set signal handlers where you want actions associated with a widget.
de: Entwerfen Sie Ihre Benutzeroberfläche mit Glade, und legen Sie Signal-Handler fest, wenn Sie Aktionen mit einem Widget verbinden möchten.

note: type: Plain text
en: Write a Python module which contains callable objects (see 'handler models' below).
de: Schreiben Sie ein Python-Modul, das aufrufbare Objekte enthält (siehe "Handler-Modelle" unten).

note: type: Plain text
en: Pass your module's path name to GladeVCP with the '-u <module>' option.
de: Übergeben Sie den Pfadnamen Ihres Moduls an GladeVCP mit der Option '-u <modul>'.

note: type: Plain text
en: GladeVCP imports the module, inspects it for signal handlers and connects them to the widget tree.
de: GladeVCP importiert das Modul, prüft es auf Signalhandler und verbindet sie mit dem Widgetbaum.

note: type: Plain text
en: The main event loop is run.
de: Die Hauptereignisschleife wird ausgeführt.

note: type: Title ====
en: The simple handler model
de: Das einfache Handler-Modell

note: type: Plain text
en: For simple tasks it's sufficient to define functions named after the Glade signal handlers. These will be called when the corresponding event happens in the widget tree. Here's a trivial example - it assumes that the 'pressed' signal of a Gtk Button or HAL Button is linked to a callback called 'on_button_press':
de: Für einfache Aufgaben reicht es aus, Funktionen zu definieren, die nach den Glade-Signalhandlern benannt sind. Diese werden aufgerufen, wenn das entsprechende Ereignis im Widgetbaum eintritt. Hier ist ein triviales Beispiel - es nimmt an, dass das 'pressed' Signal eines Gtk Buttons oder HAL Buttons mit einem Callback namens 'on_button_press' verknüpft ist:

note: type: Plain text
en: Add this function to a Python file and run as follows:
de: Fügen Sie diese Funktion in eine Python-Datei ein und führen Sie sie wie folgt aus:

note: type: Plain text
en: Note communication between handlers has to go through global variables, which does not scale well and is positively un-pythonic.  This is why we came up with the class-based handler model.
de: Beachten Sie, dass die Kommunikation zwischen Handlern über globale Variablen erfolgen muss, was nicht gut skalierbar und absolut unpythonisch ist.  Aus diesem Grund haben wir das klassenbasierte Handler-Modell entwickelt.

note: type: Title ====
en: The class-based handler model
de: Das klassenbasierte Handler-Modell

note: type: Plain text
en: The idea here is: handlers are linked to class methods. The underlying class(es) are instantiated and inspected during GladeVCP startup and linked to the widget tree as signal handlers. So the task now is to write:
de: Die Idee dabei ist: Handler werden mit Klassenmethoden verknüpft. Die zugrundeliegende(n) Klasse(n) werden beim Start von GladeVCP instanziiert und inspiziert und als Signal-Handler mit dem Widget-Baum verknüpft. Die Aufgabe ist nun also zu schreiben:

note: type: Plain text
en: one or more several class definition(s) with one or several methods, in one module or split over several modules,
de: eine oder mehrere Klassendefinition(en) mit einer oder mehreren Methoden, in einem Modul oder aufgeteilt auf mehrere Module,

note: type: Plain text
en: a function 'get_handlers' in each module which will return a list of class instances to GladeVCP - their method names will be linked to signal handlers
de: eine Funktion 'get_handlers' in jedem Modul, die eine Liste von Klasseninstanzen an GladeVCP zurückgibt - ihre Methodennamen werden mit Signalhandlern verknüpft

note: type: Plain text
en: Here is a minimum user-defined handler example module:
de: Hier ist ein minimales benutzerdefiniertes Handler-Beispielmodul:

note: type: Plain text
en: Now, 'on_this_signal' will be available as signal handler to your widget tree.
de: Jetzt wird 'on_this_signal' als Signalhandler für Ihren Widgetbaum verfügbar sein.

note: type: Title ====
en: GladeVCP-specific signals
de: GladeVCP-spezifische Signale

note: type: Title ====
en: The get_handlers protocol
de: Das get_handlers Protokoll

note: type: Plain text
en: If during module inspection GladeVCP finds a function `get_handlers`, it calls it as follows:
de: Wenn GladeVCP bei der Modulinspektion eine Funktion `get_handlers` findet, ruft es diese wie folgt auf:

note: type: Plain text
en: The arguments are:
de: Die Argumente sind:

note: type: Plain text
en: `useropts` - a list of strings collected from the GladeVCP command line `-U <useropts>` option.
de: `useropts` - eine Liste von Zeichenfolgen, die von der GladeVCP-Befehlszeile mit der Option '-U <useropts>' gesammelt werden.

note: type: Plain text
en: GladeVCP then inspects the list of class instances and retrieves their method names. Qualifying method names are connected to the widget tree as signal handlers. Only method names which do not begin with an '_' (underscore) are considered.
de: GladeVCP untersucht dann die Liste der Klasseninstanzen und ruft deren Methodennamen ab. Qualifizierende Methodennamen werden als Signalhandler mit dem Widgetbaum verbunden. Nur Methodennamen, die nicht mit einem '_' (Unterstrich) beginnen, werden berücksichtigt.

note: type: Plain text
en: Note that regardless whether you're using the libglade or the new GtkBuilder format for your Glade UI, widgets can always be referred to as `builder.get_object(<widgetname>)`. Also, the complete list of widgets is available as `builder.get_objects()` regardless of UI format.
de: Beachten Sie, dass unabhängig davon, ob Sie das libglade- oder das neue GtkBuilder-Format für Ihre Glade-Benutzeroberfläche verwenden, Widgets immer als `builder.get_object(<widgetname>)` bezeichnet werden können. Außerdem ist die komplette Liste der Widgets als `builder.get_objects()` verfügbar, unabhängig vom UI-Format.

note: type: Title ===
en: Initialization sequence
de: Initialisierungssequenz

note: type: Plain text
en: It is important to know in which state of affairs your `get_handlers()` function is called so you know what is safe to do there and what not.  First, modules are imported and initialized in command line order.  After successful import, `get_handlers()` is called in the following state:
de: Es ist wichtig zu wissen, in welchem Zustand die Funktion `get_handlers()` aufgerufen wird, damit Sie wissen, was Sie dort sicher tun können und was nicht.  Zunächst werden die Module in der Befehlszeilenreihenfolge importiert und initialisiert.  Nach erfolgreichem Import wird `get_handlers()` im folgenden Zustand aufgerufen:

note: type: Plain text
en: The widget tree is created, but not yet realized (no toplevel `window.show()` has been executed yet).
de: Der Widgetbaum ist erstellt, aber noch nicht realisiert (es wurde noch kein Toplevel `window.show()` ausgeführt).

note: type: Plain text
en: The halcomp HAL component is set up and all HAL widget's pins have already been added to it.
de: Die halcomp HAL-Komponente ist eingerichtet und alle Pins des HAL-Widgets wurden bereits hinzugefügt.

note: type: Plain text
en: It is safe to add more HAL pins because `halcomp.ready()` has not yet been called at this point, so you may add your own pins, for instance in the class `__init__()` method.
de: Es ist sicher, weitere HAL-Pins hinzuzufügen, da 'halcomp.ready()' zu diesem Zeitpunkt noch nicht aufgerufen wurde, so dass Sie Ihre eigenen Pins hinzufügen können, zum Beispiel in der Klasse '__init__()'-Methode.

note: type: Plain text
en: Once all modules have been imported and method names extracted, the following steps happen:
de: Nachdem alle Module importiert und die Methodennamen extrahiert wurden, werden die folgenden Schritte durchgeführt:

note: type: Plain text
en: All qualifying method names will be connected to the widget tree with `connect_signals()/signal_autoconnect()` (depending on the type of UI imported - GtkBuilder vs the old libglade format).
de: Alle qualifizierenden Methodennamen werden mit 'connect_signals()/signal_autoconnect()' mit dem Widget-Baum verbunden (abhängig von der Art der importierten Benutzeroberfläche - GtkBuilder im Vergleich zum alten libglade-Format).

note: type: Plain text
en: The HAL component is finalized with halcomp.ready().
de: Die HAL-Komponente wird mit halcomp.ready() abgeschlossen.

note: type: Plain text
en: If a window ID was passed as argument, the widget tree is re-parented to run in this window, and Glade's toplevel window1 is abandoned (see FAQ).
de: Wenn eine Fenster-ID als Argument übergeben wurde, wird der Widget-Baum neu geparented, um in diesem Fenster zu laufen, und Glades Toplevel window1 wird aufgegeben (siehe FAQ).

note: type: Plain text
en: If a HAL command file was passed with `-H halfile`, it is executed with halcmd.
de: Wenn eine HAL-Befehlsdatei mit `-H halfile` übergeben wurde, wird sie mit halcmd ausgeführt.

note: type: Plain text
en: The Gtk main loop is run.
de: Die Gtk-Hauptschleife wird ausgeführt.

note: type: Plain text
en: So when your handler class is initialized, all widgets are existent but not yet realized (displayed on screen). And the HAL component isn't ready as well, so its unsafe to access pins values in your `__init__()` method.
de: Wenn also Ihre Handler-Klasse initialisiert wird, sind alle Widgets vorhanden, aber noch nicht realisiert (auf dem Bildschirm angezeigt). Und die HAL-Komponente ist auch noch nicht fertig, so dass es unsicher ist, auf die Werte der Pins in Ihrer Methode "_init__()" zuzugreifen.

note: type: Plain text
en: If you want to have a callback to execute at program start after it is safe to access HAL pins, then a connect a handler to the realize signal of the top level window1 (which might be its only real purpose). At this point GladeVCP is done with all setup tasks, the HAL file has been run, and GladeVCP is about to enter the Gtk main loop.
de: Wenn Sie einen Callback haben wollen, der beim Programmstart ausgeführt wird, nachdem es sicher ist, auf die HAL-Pins zuzugreifen, dann verbinden Sie einen Handler mit dem realize-Signal des Top-Level-Fensters1 (was sein einziger wirklicher Zweck sein könnte). An diesem Punkt ist GladeVCP mit allen Setup-Aufgaben fertig, die HAL-Datei wurde ausgeführt, und GladeVCP ist dabei, in die Gtk-Hauptschleife einzutreten.

note: type: Title ===
en: Multiple callbacks with the same name
de: Mehrere Callbacks mit demselben Namen

note: type: Plain text
en: Within a class, method names must be unique. However, it is OK to have multiple class instances passed to GladeVCP by get_handlers() with identically named methods. When the corresponding signal occurs, these methods will be called in definition order - module by module, and within a module, in the order class instances are returned by `get_handlers()`.
de: Innerhalb einer Klasse müssen die Methodennamen eindeutig sein. Es ist jedoch in Ordnung, wenn mehrere Klasseninstanzen mit identisch benannten Methoden durch get_handlers() an GladeVCP übergeben werden. Wenn das entsprechende Signal auftritt, werden diese Methoden in der Definitionsreihenfolge aufgerufen - Modul für Modul, und innerhalb eines Moduls in der Reihenfolge, in der die Klasseninstanzen von "get_handlers()" zurückgegeben werden.

note: type: Title ===
en: The GladeVCP `-U <useropts>` flag
de: Die GladeVCP `-U <useropts>` Flag

note: type: Plain text
en: Instead of extending GladeVCP for any conceivable option which could potentially be useful for a handler class, you may use the -U <useroption> flag (repeatedly if you wish). This flag collects a list of <useroption> strings. This list is passed to the get_handlers()  function (useropts argument). Your code is free to interpret these strings as you see fit. An possible usage would be to pass them to the Python exec function in your `get_handlers()` as follows:
de: Anstatt GladeVCP für jede denkbare Option zu erweitern, die für eine Handler-Klasse potentiell nützlich sein könnte, können Sie das Flag -U <Benutzeroption> verwenden (auf Wunsch wiederholt). Dieses Flag sammelt eine Liste von <useroption>-Strings. Diese Liste wird an die Funktion get_handlers() übergeben (Argument useropts). Es steht Ihrem Code frei, diese Zeichenfolgen nach eigenem Ermessen zu interpretieren. Eine mögliche Verwendung wäre, sie in der Funktion `get_handlers()` wie folgt an die Python-Funktion exec zu übergeben:

note: type: Plain text
en: This way you can pass arbitrary Python statements to your module through the `gladevcp -U` option, for example:
de: Auf diese Weise können Sie beliebige Python-Anweisungen an Ihr Modul übergeben, zum Beispiel durch die Option `gladevcp -U`:

note: type: Plain text
en: This should set debug to 2 and confirm that your module actually did it.
de: Dies sollte debug auf 2 setzen und bestätigen, dass Ihr Modul es tatsächlich getan hat.

note: type: Title ===
en: Persistent variables in GladeVCP
de: Persistente Variablen in GladeVCP

note: type: Plain text
en: An annoying aspect of GladeVCP in its earlier form and PyVCP is the fact that you may change values and HAL pins through text entry, sliders, spin boxes, toggle buttons etc, but their settings are not saved and restored at the next run of LinuxCNC - they start at the default value as set in the panel or widget definition.
de: Ein ärgerlicher Aspekt von GladeVCP in seiner früheren Form und PyVCP ist die Tatsache, dass Sie Werte und HAL-Pins durch Texteingabe, Schieberegler, Spin-Boxen, Toggle-Buttons usw. ändern können, aber ihre Einstellungen werden nicht gespeichert und beim nächsten Lauf von LinuxCNC wiederhergestellt - sie beginnen mit dem Standardwert, wie in der Panel-oder Widget-Definition eingestellt.

note: type: Plain text
en: GladeVCP has an easy-to-use mechanism to save and restore the state of HAL widgets, and program variables (in fact any instance attribute of type int, float, bool or string).
de: GladeVCP verfügt über einen einfach zu bedienenden Mechanismus zum Speichern und Wiederherstellen des Zustands von HAL-Widgets und Programmvariablen (in der Tat jedes Instanzattribut vom Typ int, float, bool oder string).

note: type: Plain text
en: This mechanism uses the popular INI file format to save and reload persistent attributes.
de: Dieser Mechanismus verwendet das weit verbreitete INI-Dateiformat, um dauerhafte Attribute zu speichern und wieder zu laden.

note: type: Block title
en: Persistence, program versions and the signature check
de: Persistenz, Programmversionen und die Signaturprüfung

note: type: Plain text
en: Imagine renaming, adding or deleting widgets in Glade: an .INI file lying around from a previous program version, or an entirely different user interface, would be not be able to restore the state properly since variables and types might have changed.
de: Stellen Sie sich vor, Sie benennen Widgets in Glade um, fügen sie hinzu oder löschen sie: eine INI-Datei aus einer früheren Programmversion oder eine völlig andere Benutzeroberfläche könnte den Zustand nicht richtig wiederherstellen, da sich Variablen und Typen geändert haben könnten.

note: type: Plain text
en: GladeVCP detects this situation by a signature which depends on all object names and types which are saved and to be restored. In the case of signature mismatch, a new INI file with default settings is generated.
de: GladeVCP erkennt diese Situation durch eine Signatur, die von allen Objektnamen und -typen abhängt, die gespeichert sind und wiederhergestellt werden sollen. Im Falle einer Nichtübereinstimmung der Signatur wird eine neue INI-Datei mit Standardeinstellungen erzeugt.

note: type: Title ===
en: Using persistent variables
de: Verwendung persistenter Variablen

note: type: Plain text
en: If you want any of Gtk widget state, HAL widgets output pin's values and/or class attributes of your handler class to be retained across invocations, proceed as follows:
de: Wenn Sie möchten, dass der Status des Gtk-Widgets, die Werte des HAL-Widgets-Ausgabepins und/oder die Klassenattribute Ihrer Handler-Klasse über Aufrufe hinweg erhalten bleiben, gehen Sie wie folgt vor:

note: type: Plain text
en: Import the `gladevcp.persistence` module.
de: Importieren Sie das Modul 'gladevcp.persistence'.

note: type: Plain text
en: Decide which instance attributes, and their default values you want to have retained, if any.
de: Entscheiden Sie, welche Instanzattribute und deren Standardwerte Sie beibehalten wollen, falls vorhanden.

note: type: Plain text
en: Decide which widgets should have their state retained.
de: Entscheiden Sie, welche Widgets ihren Zustand beibehalten sollen.

note: type: delimited block -
en: def __init__(self, halcomp,builder,useropts):
        self.halcomp = halcomp
        self.builder = builder
        self.useropts = useropts
        self.defaults = {
            # the following names will be saved/restored as method attributes
            # the save/restore mechanism is strongly typed - the variables type will be derived from the type of the
            # initialization value. Currently supported types are: int, float, bool, string
            IniFile.vars : { 'nhits' : 0, 'a': 1.67, 'd': True ,'c' : "a string"},
            # to save/restore all widget's state which might remotely make sense, add this:
            IniFile.widgets : widget_defaults(builder.get_objects())
            # a sensible alternative might be to retain only all HAL output widgets' state:
            # IniFile.widgets: widget_defaults(select_widgets(self.builder.get_objects(), hal_only=True,output_only = True)),
        }
de: def __init__(self, halcomp,builder,useropts):
        self.halcomp = halcomp
        self.builder = builder
        self.useropts = useropts
        self.defaults = {
            # die folgenden Namen werden als Methodenattribute gespeichert/wiederhergestellt
            # Der Mechanismus zum Speichern/Wiederherstellen ist stark typisiert - der Typ der Variablen wird vom Typ des
            # Initialisierungswertes abgeleitet. Derzeit unterstützte Typen sind: int, float, bool, string
            IniFile.vars : { 'nhits' : 0, 'a': 1.67, 'd': True ,'c' : "ein String"},
            # zum Speichern/Wiederherstellen aller Widgets, die auch nur im Entferntesten Sinn machen könnten, fügen Sie dies hinzu:
            IniFile.widgets : widget_defaults(builder.get_objects())
            # Eine sinnvolle Alternative wäre es, nur den Zustand aller HAL-Ausgabe-Widgets beizubehalten:
            # IniFile.widgets: widget_defaults(select_widgets(self.builder.get_objects(), hal_only=True,output_only = True)),
        }

note: type: Plain text
en: Then associate an INI file with this descriptor:
de: Dann verknüpfen Sie eine INI-Datei mit diesem Deskriptor:

note: type: Plain text
en: After `restore_state()`, self will have attributes set if as running the following:
de: Nach `restore_state()` werden die Attribute von self gesetzt, wenn sie wie folgt ablaufen:

note: type: delimited block -
en: self.nhits = 0
    self.a = 1.67
    self.d = True
    self.c = "a string"
de: self.nhits = 0
    self.a = 1.67
    self.d = True
    self.c = "eine Zeichenkette"

note: type: Plain text
en: Note that types are saved and preserved on restore. This example assumes that the INI file didn't exist or had the default values from self.defaults.
de: Beachten Sie, dass die Typen gespeichert und bei der Wiederherstellung beibehalten werden. In diesem Beispiel wird davon ausgegangen, dass die INI-Datei nicht vorhanden war oder die Standardwerte aus self.defaults enthielt.

note: type: Plain text
en: After this incantation, you can use the following IniFile methods:
de: Nach dieser Beschwörung können Sie die folgenden IniFile-Methoden verwenden:

note: type: Plain text
en: Saves objs's attributes as per `IniFile.vars` dictionary and the widget state as described in `IniFile.widgets` in `self.defaults`.
de: Speichert die Attribute von objs gemäß dem `IniFile.vars`-Wörterbuch und den Zustand des Widgets wie in `IniFile.widgets` beschrieben in `self.defaults`.

note: type: Plain text
en: Create an INI file with default values.
de: Erstellen Sie eine INI-Datei mit Standardwerten.

note: type: Plain text
en: Restore HAL out pins and obj's attributes as saved/initialized to default as above.
de: HAL out Pins und obj's Attribute wie oben gespeichert/initialisiert auf Standard zurücksetzen.

note: type: Title ===
en: Saving the state on GladeVCP shutdown
de: Speichern des Status beim Herunterfahren von GladeVCP

note: type: Plain text
en: To save the widget and/or variable state on exit, proceed as follows:
de: Um den Zustand des Widgets und/oder der Variablen beim Beenden zu speichern, gehen Sie wie folgt vor:

note: type: Plain text
en: Select some interior widget (type is not important, for instance a table).
de: Wählen Sie ein Interieur-Widget aus (Typ ist nicht wichtig, z. B. eine Tabelle).

note: type: Plain text
en: In the 'Signals' tab, select 'GtkObject'. It should show a 'destroy' signal in the first column.
de: Wählen Sie auf der Registerkarte "Signale" die Option "GtkObject". In der ersten Spalte sollte ein 'destroy'-Signal angezeigt werden.

note: type: Plain text
en: Add the handler name, e.g. 'on_destroy' to the second column.
de: Fügen Sie den Namen des Handlers, z. B. 'on_destroy', in die zweite Spalte ein.

note: type: Plain text
en: Add a Python handler like below:
de: Fügen Sie einen Python-Handler wie unten beschrieben hinzu:

note: type: Plain text
en: This will save state and shutdown GladeVCP properly, regardless whether the panel is embedded in AXIS, or a standalone window.
de: Dadurch wird der Status gespeichert und GladeVCP ordnungsgemäß heruntergefahren, unabhängig davon, ob das Panel in AXIS eingebettet oder ein eigenständiges Fenster ist.

note: type: delimited block =
en: Do not use `window1` (the toplevel window) to connect a 'destroy' event. Due to the way a GladeVCP panel interacts with AXIS, if a panel is embedded within AXIS, *window1 will not receive destroy events properly*. However, since on shutdown all widgets are destroyed, anyone will do. Recommended: use a second-level widget - for instance, if you have a table container in your panel, use that.
de: Verwenden Sie nicht `window1` (das Toplevel-Fenster), um ein`destroy` (engl. für zerstören)-Event zu verbinden. Aufgrund der Art und Weise, wie ein GladeVCP-Panel mit AXIS interagiert, wenn ein Panel in AXIS eingebettet ist, wird *window1 destroy-Ereignisse nicht richtig empfangen*. Da jedoch beim Herunterfahren alle Widgets zerstört werden, reicht jedes beliebige aus. Empfohlen: Verwenden Sie ein Widget der zweiten Ebene - zum Beispiel, wenn Sie einen Tabellencontainer in Ihrem Panel haben, verwenden Sie diesen.

note: type: Plain text
en: Next time you start the GladeVCP application, the widgets should come up in the state when the application was closed.
de: Wenn Sie die GladeVCP-Anwendung das nächste Mal starten, sollten die Widgets in dem Zustand angezeigt werden, in dem sie beim Schließen der Anwendung waren.

note: type: delimited block =
en: The 'GtkWidget' line has a similarly sounding 'destroy-event' - *dont use that to connect to the 'on_destroy' handler, it wont work* - make sure you use the 'destroy' event from the 'GtkObject' line.
de: Die 'GtkWidget'-Zeile hat ein ähnlich klingendes 'destroy-event' - *nicht verwenden, um sich mit dem 'on_destroy'-Handler zu verbinden, es wird nicht funktionieren* - stellen Sie sicher, dass Sie das 'destroy'-Ereignis aus der 'GtkObject'-Zeile verwenden.

note: type: Title ===
en: Saving state when Ctrl-C is pressed
de: Status speichern, wenn Strg-C gedrückt wird

note: type: Title ===
en: Hand-editing INI (.ini) files
de: Manuelle Bearbeitung von INI-Dateien (.ini)

note: type: Plain text
en: You can do that, but note that the values in self.defaults override your edits if there is a syntax or type error in your edit. The error is detected, a console message will hint about that happened, and the bad inifile will be renamed to have the .BAD suffix. Subsequent bad INI files overwrite earlier .BAD files.
de: Sie können dies tun, aber beachten Sie, dass die Werte in self.defaults Ihre Änderungen überschreiben, wenn ein Syntax- oder Typfehler in Ihrer Bearbeitung auftritt. Der Fehler wird erkannt, eine Konsolenmeldung weist auf den Fehler hin und die fehlerhafte INI-Datei wird umbenannt und erhält die Endung .BAD. Nachfolgende fehlerhafte INI-Dateien überschreiben frühere .BAD-Dateien.

note: type: Title ===
en: Adding HAL pins
de: Hinzufügen von HAL-Pins

note: type: Plain text
en: If you need HAL pins which are not associated with a specific HAL widget, add them as follows:
de: Wenn Sie HAL-Pins benötigen, die nicht mit einem bestimmten HAL-Widget verbunden sind, fügen Sie sie wie folgt hinzu:

note: type: delimited block -
en: # note '_' - this method will not be visible to the widget tree
    def _on_example_trigger_change(self,pin,userdata=None):
        print("pin value changed to:" % (pin.get()))
de: # Hinweis: '_' - diese Methode ist für den Widget-Baum nicht sichtbar.
    def _on_example_trigger_change(self,pin,userdata=None):
        print("Pin-Wert geändert in:" % (pin.get()))

note: type: Title ===
en: Adding timers
de: Hinzufügen von Timern

note: type: Plain text
en: Since GladeVCP uses Gtk widgets which rely on the http://www.pygtk.org/pygtk2reference/gobject-functions.html[GObject] base class, the full glib functionally is available. Here is an example for a timer callback:
de: Da GladeVCP Gtk-Widgets verwendet, die sich auf die Basisklasse http://www.pygtk.org/pygtk2reference/gobject-functions.html[GObject] stützen, ist die volle Glib-Funktionalität verfügbar. Hier ist ein Beispiel für einen Timer-Callback:

note: type: delimited block -
en: def _on_timer_tick(self,userdata=None):
        ...
        return True # to restart the timer; return False for on-shot
    ...
    # demonstrate a slow background timer - granularity is one second
    # for a faster timer (granularity 1 ms), use this:
    # glib.timeout_add(100, self._on_timer_tick,userdata) # 10Hz
    glib.timeout_add_seconds(1, self._on_timer_tick)
de: def _on_timer_tick(self,userdata=None):
        ...
        return True # um den Timer neu zu starten; return False für on-shot
    ...
    # Demonstration eines langsamen Hintergrund-Timers - Granularität ist eine Sekunde
    # für einen schnelleren Timer (Granularität 1 ms), verwenden Sie dies:
    # glib.timeout_add(100, self._on_timer_tick,userdata) # 10Hz
    glib.timeout_add_seconds(1, self._on_timer_tick)

note: type: Title ===
en: Setting HAL widget properties programmatically
de: HAL-Widget-Eigenschaften programmatisch einstellen

note: type: Plain text
en: With Glade, widget properties are typically set fixed while editing.  You can, however, set widget properties at runtime, for instance from INI file values, which would typically be done in the handler initialization code. Setting properties from HAL pin values is possible, too.
de: Bei Glade werden die Widget-Eigenschaften normalerweise während der Bearbeitung fest eingestellt.  Sie können jedoch Widgeteigenschaften zur Laufzeit festlegen, z.B. anhand von INI-Dateiwerten, was normalerweise im Initialisierungscode des Handlers geschieht. Das Setzen von Eigenschaften aus HAL-Pin-Werten ist ebenfalls möglich.

note: type: Plain text
en: In the following example (assuming a HAL Meter widget called `meter`), the meter's min value is set from an INI file parameter at startup, and the max value is set via a HAL pin, which causes the widget's scale to readjust dynamically:
de: Im folgenden Beispiel (unter der Annahme eines HAL Meter-Widgets mit dem Namen `meter`) wird der Minimalwert des Zählers beim Start über einen INI-Dateiparameter und der Maximalwert über einen HAL-Pin eingestellt, wodurch die Skala des Widgets dynamisch angepasst wird:

note: type: delimited block -
en:         # HAL pin with change callback.
            # When the pin's value changes the callback is executed.
            self.max_value = hal_glib.GPin(halcomp.newpin('max-value',  hal.HAL_FLOAT, hal.HAL_IN))
            self.max_value.connect('value-changed', self._on_max_value_change)
de:         # HAL-Pin mit Änderungs-Callback.
            # Wenn sich der Wert des Pins ändert, wird der Callback ausgeführt.
            self.max_value = hal_glib.GPin(halcomp.newpin('max-value',  hal.HAL_FLOAT, hal.HAL_IN))
            self.max_value.connect('value-changed', self._on_max_value_change)

note: type: Title ===
en: Examples, and rolling your own GladeVCP application
de: Beispiele und die Entwicklung Ihrer eigenen GladeVCP-Anwendung

note: type: Labeled list
en: I get an unexpected unmap event in my handler function right after startup. What's this?
de: Ich erhalte ein unerwartetes Unmap-Ereignis in meiner Handler-Funktion direkt nach dem Start. Was ist das?

note: type: Plain text
en: This is a consequence of your Glade UI file having the window1 Visible property set to True, together with re-parenting the GladeVCP window into AXIS or touchy. The GladeVCP widget tree is created, including a top level window, and then 'reparented into AXIS', leaving that toplevel window laying around orphaned. To avoid having this useless empty window hanging around, it is unmapped (made invisible), which is the cause of the unmap signal you get. Suggested fix: set window1.visible to False, and ignore an initial unmap event.
de: Dies ist eine Folge davon, dass in Ihrer Glade UI-Datei die Eigenschaft window1 Visible auf True gesetzt ist und das GladeVCP-Fenster in AXIS oder touchy neu geparentet wird. Der GladeVCP-Widget-Baum wird erstellt, einschließlich eines Fensters der obersten Ebene, und dann in AXIS "reparented", so dass das Fenster der obersten Ebene verwaist herumliegt. Um zu vermeiden, dass dieses nutzlose leere Fenster herumhängt, wird es entmappt (unsichtbar gemacht), was die Ursache für das Unmap-Signal ist, das Sie erhalten. Vorgeschlagene Lösung: window1.visible auf False setzen und ein anfängliches Unmap-Ereignis ignorieren.

note: type: Labeled list
en: My GladeVCP program starts, but no window appears where I expect it to be?
de: Mein GladeVCP-Programm startet, aber es erscheint kein Fenster dort, wo ich es erwarte?

note: type: Plain text
en: The window AXIS allocates for GladeVCP will obtain the 'natural size' of all its child widgets combined. It's the child widget's job to request a size (width and/or height). However, not all widgets do request a width greater than 0, for instance the Graph widget in its current form. If there's such a widget in your Glade file and it's the one which defines the layout you might want to set its width explicitly. Note that setting the window1 width and height properties in Glade does not make sense because this window will be orphaned during re-parenting and hence its geometry will have no impact on layout (see above). The general rule is: if you manually run a UI file with 'gladevcp <uifile>' and its window has reasonable geometry, it should come up in AXIS properly as well.
de: Das Fenster, das AXIS für GladeVCP zuweist, erhält die "natürliche Größe" aller seiner untergeordneten Widgets zusammen. Es ist die Aufgabe der untergeordneten Widgets, eine Größe (Breite und/oder Höhe) anzufordern. Allerdings fordern nicht alle Widgets eine Breite größer als 0 an, zum Beispiel das Graph-Widget in seiner aktuellen Form. Wenn es ein solches Widget in Ihrer Glade-Datei gibt und es dasjenige ist, welches das Layout definiert, sollten Sie seine Breite explizit festlegen. Beachten Sie, dass das Festlegen der Eigenschaften Breite und Höhe von window1 in Glade nicht sinnvoll ist, da dieses Fenster beim Re-Parenting verwaist wird und seine Geometrie daher keine Auswirkungen auf das Layout hat (siehe oben). Generell gilt: Wenn Sie eine UI-Datei manuell mit 'gladevcp <uifile>' ausführen und ihr Fenster eine vernünftige Geometrie hat, sollte es auch in AXIS korrekt angezeigt werden.

note: type: Labeled list
en: I want a blinking LED, but it wont blink
de: Ich möchte eine blinkende LED, aber sie blinkt nicht

note: type: Plain text
en: I ticked the checkbutton to let it blink with 100 msec interval. It wont blink, and I get a startup warning: Warning: value "0" of type `gint' is invalid or out of range for property `led-blink-rate' of type `gint'? This seems to be a Glade bug. Just type over the blink rate field, and save again - this works for me.
de: Ich habe das Kontrollkästchen aktiviert, damit die Anzeige im Abstand von 100 ms blinkt. Sie blinkt nicht, und ich erhalte eine Startwarnung: Warning: value "0" of type `gint' is invalid or out of range for property `led-blink-rate' of type `gint'? Dies scheint ein Glade-Bug zu sein. Überschreiben Sie einfach das Feld für die Blinkrate und speichern Sie erneut - das funktioniert bei mir.

note: type: Labeled list
en: My GladeVCP panel in AXIS doesn't save state when I close AXIS, although I defined an on_destroy handler linked to the window destroy signal
de: Mein GladeVCP-Panel in AXIS speichert den Status nicht, wenn ich AXIS schließe, obwohl ich einen on_destroy-Handler definiert habe, der mit dem Fensterzerstörungssignal verbunden ist

note: type: Plain text
en: Very likely this handler is linked to window1, which due to reparenting isn't usable for this purpose. Please link the on_destroy handler to the destroy signal of an interior window. For instance, I have a notebook inside window1, and linked on_destroy to the notebooks destroy signal, and that works fine. It doesn't work for window1.
de: Sehr wahrscheinlich ist dieser Handler mit window1 verknüpft, das aufgrund des Reparenting für diesen Zweck nicht verwendbar ist. Bitte verknüpfen Sie den on_destroy-Handler mit dem destroy-Signal eines inneren Fensters. Ich habe z.B. ein Notizbuch innerhalb von window1 und habe on_destroy mit dem Zerstörungssignal des Notizbuchs verknüpft, und das funktioniert gut. Für window1 funktioniert es nicht.

note: type: Labeled list
en: I want to set the background color or text of a HAL_Label widget depending on its HAL pin value
de: Ich möchte die Hintergrundfarbe oder den Text eines HAL_Label-Widgets abhängig von seinem HAL-Pin-Wert einstellen

note: type: Plain text
en: See the example in configs/apps/gladevcp/colored-label.  Setting the background color of a GtkLabel widget (and HAL_Label is derived from GtkLabel) is a bit tricky. The GtkLabel widget has no window object of its own for performance reasons, and only window objects can have a background color. The solution is to enclose the Label in an EventBox container, which has a window but is otherwise invisible - see the coloredlabel.ui file.
de: Siehe das Beispiel in configs/apps/gladevcp/colored-label.  Das Einstellen der Hintergrundfarbe eines GtkLabel-Widgets (und HAL_Label ist von GtkLabel abgeleitet) ist ein wenig knifflig. Das GtkLabel-Widget hat aus Leistungsgründen kein eigenes Fensterobjekt, und nur Fensterobjekte können eine Hintergrundfarbe haben. Die Lösung ist, das Label in einen EventBox-Container einzuschließen, der ein Fenster hat, aber ansonsten unsichtbar ist - siehe die Datei coloredlabel.ui.

note: type: Labeled list
en: I defined a `hal_spinbutton` widget in Glade, and set a default `value` property in the corresponding adjustment. It comes up with zero?
de: Ich habe ein "hal_spinbutton"-Widget in Glade definiert und eine Standard-Eigenschaft `value` in der entsprechenden Einstellung festgelegt. Wieso zeigt es Null?

note: type: Plain text
en: This is due to a bug in the old Gtk version distributed with Ubuntu 8.04 and 10.04, and is likely to be the case for all widgets using adjustment. The workaround mentioned for instance in http://osdir.com/ml/gtk-app-devel-list/2010-04/msg00129.html does not reliably set the HAL pin value, it is better to set it explicitly in an `on_realize` signal handler during widget creation.  See the example in `configs/apps/gladevcp/by-widget/spinbutton.{ui,py}`.
de: Dies ist auf einen Fehler in der alten Gtk-Version zurückzuführen, die mit Ubuntu 8.04 und 10.04 verteilt wird, und ist wahrscheinlich der Fall für alle Widgets, die Anpassung verwenden. Der Workaround, der zum Beispiel in http://osdir.com/ml/gtk-app-devel-list/2010-04/msg00129.html erwähnt wird, setzt den HAL-Pin-Wert nicht zuverlässig, es ist besser, ihn explizit in einem `on_realize`-Signal-Handler während der Widget-Erstellung zu setzen.  Siehe das Beispiel in `configs/apps/gladevcp/by-widget/spinbutton.{ui,py}`.

note: type: Title ==
en: Troubleshooting
de: Fehlersuche

note: type: Plain text
en: Make sure you have the development version of LinuxCNC installed. You don't need the axisrc file any more, this was mentioned in the old GladeVCP wiki page.
de: Stellen Sie sicher, dass Sie die Entwicklungsversion von LinuxCNC installiert haben. Sie brauchen nicht die axisrc Datei nicht mehr, wurde dies in der alten GladeVCP Wiki-Seite erwähnt.

note: type: Plain text
en: If you're using run-in-place, do a 'make clean' to remove any accidentally left over hal.so file, then 'make'.
de: Wenn Sie run-in-place verwenden, führen Sie ein 'make clean' aus, um alle versehentlich übrig gebliebenen hal.so-Dateien zu entfernen, und dann 'make'.

note: type: Plain text
en: If you're using 'HAL_table' or 'HAL_HBox' widgets, be aware they have an HAL pin associated with it which is off by default. This pin controls whether these container's children are active or not.
de: Wenn Sie die Widgets 'HAL_table' oder 'HAL_HBox' verwenden, beachten Sie bitte, dass sie einen HAL-Pin haben, der standardmäßig ausgeschaltet ist. Dieser Pin steuert, ob die Kinder dieser Container aktiv sind oder nicht.

note: type: Title ==
en: Implementation note: Key handling in AXIS
de: Implementierungshinweis: Schlüsselbehandlung in AXIS

note: type: Plain text
en: We believe key handling works OK, but since it is new code, we're telling about it you so you can watch out for problems; please let us know of errors or odd behavior. This is the story:
de: Wir glauben, dass die Handhabung der Tasten gut funktioniert, aber da es sich um neuen Code handelt, informieren wir Sie darüber, damit Sie auf Probleme achten können; bitte teilen Sie uns Fehler oder seltsames Verhalten mit. Dies ist die Geschichte:

note: type: Plain text
en: AXIS uses the TkInter widget set. GladeVCP applications use Gtk widgets and run in a separate process context. They are hooked into AXIS with the Xembed protocol. This allows a child application like GladeVCP to properly fit in a parent's window, and - in theory - have integrated event handling.
de: AXIS verwendet den TkInter-Widgetsatz. GladeVCP-Anwendungen verwenden Gtk-Widgets und werden in einem separaten Prozesskontext ausgeführt. Sie werden über das Xembed-Protokoll in AXIS eingebunden. Dies ermöglicht es einer untergeordneten Anwendung wie GladeVCP, sich ordnungsgemäß in ein übergeordnetes Fenster einzufügen und - theoretisch - eine integrierte Ereignisbehandlung zu haben.

note: type: Plain text
en: However, this assumes that both parent and child application properly support the Xembed protocol, which Gtk does, but TkInter doesn't. A consequence of this is that certain keys would not be forwarded from a GladeVCP panel to AXIS properly under all circumstances. One of these situations was the case when an Entry, or SpinButton widget had focus: in this case, for instance an Escape key would not have been forwarded to AXIS and cause an abort as it should, with potentially disastrous consequences.
de: Dies setzt jedoch voraus, dass sowohl die übergeordnete als auch die untergeordnete Anwendung das Xembed-Protokoll korrekt unterstützen, was bei Gtk der Fall ist, bei TkInter jedoch nicht. Eine Folge davon ist, dass bestimmte Tasten von einem GladeVCP-Panel nicht unter allen Umständen korrekt an AXIS weitergeleitet werden können. Eine dieser Situationen war der Fall, wenn ein Entry- oder SpinButton-Widget den Fokus hatte: in diesem Fall wurde z.B. eine Escape-Taste nicht an AXIS weitergeleitet und führte zu einem Abbruch, wie es sein sollte, mit möglicherweise katastrophalen Folgen.

note: type: Plain text
en: Therefore, key events in GladeVCP are explicitly handled, and selectively forwarded to AXIS, to assure that such situations cannot arise. For details, see the `keyboard_forward()` function in `lib/python/gladevcp/xembed.py`.
de: Daher werden Tastenereignisse in GladeVCP explizit behandelt und selektiv an AXIS weitergeleitet, um sicherzustellen, dass solche Situationen nicht auftreten können. Für Details siehe die Funktion `keyboard_forward()` in `lib/python/gladevcp/xembed.py`.

note: type: Title ==
en: Adding Custom Widgets
de: Hinzufügen von benutzerdefinierten Widgets

note: type: Plain text
en: The LinuxCNC Wiki has information on adding custom widgets to GladeVCP.  link:http://wiki.linuxcnc.org/cgi-bin/wiki.pl?GladeVCP_Custom_Widgets[GladeVCP Custom Widgets]
de: Das LinuxCNC Wiki hat Informationen über das Hinzufügen von benutzerdefinierten Widgets zu GladeVCP. link:http://wiki.linuxcnc.org/cgi-bin/wiki.pl?GladeVCP_Custom_Widgets[GladeVCP Custom Widgets]

note: type: Title ==
en: Auxiliary GladeVCP Applications
de: GladeVCP-Hilfsanwendungen

note: type: Plain text
en: Support is provided for independently installed GladeVCP applications that conform to system directory placements as defined by the LINUXCNC_AUX_GLADEVCP and LINUXCNC_AUX_EXAMPLES items reported by the script linuxcnc_var:
de: Es werden unabhängig installierte GladeVCP-Anwendungen unterstützt, die mit der Platzierung des Systemverzeichnisses übereinstimmen, wie sie von den LINUXCNC_AUX_GLADEVCP- und LINUXCNC_AUX_EXAMPLES-Elementen definiert wird, die vom Skript linuxcnc_var gemeldet werden:

note: type: Plain text
en: The system directory defined by LINUXCNC_AUX_GLADEVCP (/usr/share/linuxcnc/aux_gladevcp) specifies the location for a GladeVCP-compatible Python file(s) and related subdirectories.  The Python file is imported at GladeVCP startup and made available to subsequent GladeVCP applications including embedded usage in supporting GUIs.
de: Das durch LINUXCNC_AUX_GLADEVCP definierte Systemverzeichnis (/usr/share/linuxcnc/aux_gladevcp) gibt den Speicherort für eine GladeVCP-kompatible Python-Datei(en) und zugehörige Unterverzeichnisse an.  Die Python-Datei wird beim Start von GladeVCP importiert und für nachfolgende GladeVCP-Anwendungen verfügbar gemacht, einschließlich der eingebetteten Verwendung in unterstützenden GUIs.

note: type: Plain text
en: The system directory defined by LINUXCNC_AUX_EXAMPLES (/usr/share/linuxcnc/aux_examples) specifies the location of example configuration subdirectories used for auxiliary applications.  See the getting-started/running-linuxcnc section for 'Adding Configuration Selection Items'.
de: Das durch LINUXCNC_AUX_EXAMPLES definierte Systemverzeichnis (/usr/share/linuxcnc/aux_examples) gibt den Speicherort von Beispielkonfigurations-Unterverzeichnissen an, die für Hilfsanwendungen verwendet werden.  Siehe den Abschnitt getting-started/running-linuxcnc für 'Hinzufügen von Konfigurationsauswahlen'.

note: type: Plain text
en: For testing, a runtime specification of auxiliary applications may be specified using the exported environmental variable: GLADEVCP_EXTRAS.  This variable should be a path list of one or more configuration directories separated by a (:). Typically, this variable would be set in a shell starting linuxcnc or in a user's ~/.profile startup script. Example:
de: Zu Testzwecken kann mit der exportierten Umgebungsvariablen eine Laufzeitspezifikation von Hilfsanwendungen angegeben werden: GLADEVCP_EXTRAS.  Diese Variable sollte eine Pfadliste von einem oder mehreren Konfigurationsverzeichnissen sein, die durch ein (:) getrennt sind. Normalerweise wird diese Variable in einer Shell gesetzt, die linuxcnc startet, oder im ~/.profile Startskript eines Benutzers. Beispiel:

note: type: Plain text
en: Files found in directories specified with the environmental variable GLADEVCP_EXTRAS supersede identically-named files within subdirectories of the system directory specified by LINUXNC_AUX_GLADEVCP (e.g., /usr/share/linuxcnc/aux_gladevcp).  This provision allows a developer to test an application by exporting GLADEVCP_EXTRAS to specify a private application directory without removing a system-installed application directory.  Messages indicating rejected duplicates are printed to stdout.
de: Dateien, die in Verzeichnissen gefunden werden, die mit der Umgebungsvariablen GLADEVCP_EXTRAS angegeben sind, ersetzen gleichnamige Dateien in Unterverzeichnissen des durch LINUXNC_AUX_GLADEVCP angegebenen Systemverzeichnisses (z. B. /usr/share/linuxcnc/aux_gladevcp).  Diese Bestimmung ermöglicht es einem Entwickler, eine Anwendung zu testen, indem er GLADEVCP_EXTRAS exportiert, um ein privates Anwendungsverzeichnis anzugeben, ohne ein im System installiertes Anwendungsverzeichnis zu entfernen.  Meldungen über abgelehnte Duplikate werden auf stdout ausgegeben.

note: type: delimited block =
en: Support for auxiliary GladeVCP applications requires a Python module named 'importlib'.  This module may not be available in older installations like Ubuntu-Lucid.
de: Die Unterstützung für GladeVCP-Hilfsanwendungen erfordert ein Python-Modul namens 'importlib'.  Dieses Modul ist möglicherweise in älteren Installationen wie Ubuntu-Lucid nicht verfügbar.

note: type: Plain text
en: Libraries are prebuilt Python modules that give added features to GladeVCP.  In this way you can select what features you want - yet don't have to build common ones yourself.
de: Bibliotheken sind vorgefertigte Python-Module, die GladeVCP zusätzliche Funktionen verleihen.  Auf diese Weise können Sie auswählen, welche Funktionen Sie wünschen - und müssen die gängigen Funktionen nicht selbst erstellen.

note: type: Plain text
en: Info is a library to collect and filters data from the INI file.
de: Info ist eine Bibliothek zum Sammeln und Filtern von Daten aus der INI-Datei.

note: type: Plain text
en: The available data and defaults:
de: Die verfügbaren Daten und Voreinstellungen:

note: type: delimited block -
en: DEFAULT_LINEAR_JOG_VEL = 15 units per minute
    MIN_LINEAR_JOG_VEL = 60 units per minute
    MAX_LINEAR_JOG_VEL = 300 units per minute
de: DEFAULT_LINEAR_JOG_VEL = 15 Einheiten pro Minute
    MIN_LINEAR_JOG_VEL = 60 Einheiten pro Minute
    Länge_LINEAR_JOG_VEL = 300 Einheiten pro Minute

note: type: delimited block -
en: # user message dialog info
    USRMESS_BOLDTEXT = self.INI.findall("DISPLAY", "MESSAGE_BOLDTEXT")
    USRMESS_TEXT = self.INI.findall("DISPLAY", "MESSAGE_TEXT")
    USRMESS_TYPE = self.INI.findall("DISPLAY", "MESSAGE_TYPE")
    USRMESS_PINNAME = self.INI.findall("DISPLAY", "MESSAGE_PINNAME")
    USRMESS_DETAILS = self.INI.findall("DISPLAY", "MESSAGE_DETAILS")
    USRMESS_ICON = self.INI.findall("DISPLAY", "MESSAGE_ICON")
    ZIPPED_USRMESS =
de: # Benutzer Nachrichten Dialog Info
    USRMESS_BOLDTEXT = self.INI.findall("DISPLAY", "MESSAGE_BOLDTEXT")
    USRMESS_TEXT = self.INI.findall("DISPLAY", "MESSAGE_TEXT")
    USRMESS_TYPE = self.INI.findall("DISPLAY", "MESSAGE_TYPE")
    USRMESS_PINNAME = self.INI.findall("DISPLAY", "MESSAGE_PINNAME")
    USRMESS_DETAILS = self.INI.findall("DISPLAY", "MESSAGE_DETAILS")
    USRMESS_ICON = self.INI.findall("DISPLAY", "MESSAGE_ICON")
    ZIPPED_USRMESS =

note: type: Plain text
en: There are some 'helper functions' - mostly used for widget support
de: Es gibt einige "Hilfsfunktionen" - hauptsächlich für die Widget-Unterstützung verwendet

note: type: Plain text
en: To import this modules add this Python code to your import section:
de: Um diese Module zu importieren, fügen Sie diesen Python-Code in Ihren Import-Abschnitt ein:

note: type: Plain text
en: To instantiate the module so you can use it in a handler file add this Python code to your instantiate section:
de: Um das Modul zu instanziieren, so dass Sie es in einer Handler-Datei verwenden können, fügen Sie diesen Python-Code in Ihren instantiate-Abschnitt ein:

note: type: delimited block -
en: ###########################################
    # **** INSTANTIATE LIBRARIES SECTION **** #
    ###########################################
de: ###########################################
    # **** BIBLIOTHEKEN INSTANZIIEREN **** #
    ###########################################

note: type: Plain text
en: To access INFO data use this general syntax:
de: Für den Zugriff auf INFO-Daten verwenden Sie diese allgemeine Syntax:

note: type: Plain text
en: This library is used to command LinuxCNC's motion controller.  It tries to hide incidental details and add convenience methods for developers.
de: Diese Bibliothek wird verwendet, um die Bewegungssteuerung von LinuxCNC zu steuern. Es versucht, zufällige Details zu verbergen und praktische Methoden für Entwickler hinzuzufügen.

note: type: Plain text
en: To instantiate the module so you can use it add this Python code to your instantiate section:
de: Um das Modul zu instanziieren, damit Sie es verwenden können, fügen Sie den folgenden Python-Code in Ihren instanziierten Abschnitt ein:

note: type: Plain text
en: To access Action commands use general syntax such as these:
de: Für den Zugriff auf Aktionsbefehle verwenden Sie eine allgemeine Syntax wie die folgende:

note: type: Plain text
en: There are some 'helper functions' - mostly used for this library's support
de: Es gibt einige 'Hilfsfunktionen', die hauptsächlich für die Unterstützung dieser Bibliothek verwendet werden

note: type: Plain text
en: GMOCCAPY is a GUI for LinuxCNC, designed to be used with a touch screen, but can also be used on normal screens with a mouse or hardware buttons and MPG wheels, as it presents HAL Pins for the most common needs. Please find more information in the following.
de: GMOCCAPY ist eine grafische Benutzeroberfläche für LinuxCNC, die für die Verwendung mit einem Touchscreen entwickelt wurde, aber auch auf normalen Bildschirmen mit einer Maus oder Hardware-Tasten und MPG-Rädern verwendet werden kann, da sie HAL-Pins für die häufigsten Anforderungen bereitstellt. Weitere Informationen finden Sie im Folgenden.

note: type: Plain text
en: It offers the possibility to display up to 9 axes, support a lathe mode for normal and back tool lathe and can be adapted to nearly every need, because GMOCCAPY supports embedded tabs and side panels.  As a good example for that see http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Gmoccapy_plasma[gmoccapy_plasma].
de: Es bietet die Möglichkeit, bis zu 9 Achsen darzustellen, unterstützt einen Drehmodus für normale und rückseitige Werkzeugdrehungen und kann an nahezu jeden Bedarf angepasst werden, da GMOCCAPY eingebettete Tabs und Seitenpanels unterstützt.  Als gutes Beispiel dafür siehe http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Gmoccapy_plasma[gmoccapy_plasma].

note: type: Plain text
en: GMOCCAPY 3 does support up to 9 axes and 9 joints. As GMOCCAPY 3 has been changed in code to support the joint / axis changes in LinuxCNC it does not work on 2.7 or 2.6 branch!
de: GMOCCAPY 3 unterstützt bis zu 9 Achsen und 9 Gelenke. Da GMOCCAPY 3 im Code geändert wurde, um die Gelenk- / Achsenänderungen in LinuxCNC zu unterstützen, funktioniert es nicht mit LinuxCNC 2.7 oder 2.6!

note: type: Plain text
en: It has support for integrated virtual keyboard (onboard or matchbox-keyboard), so there is no need for a hardware keyboard or mouse, but it can also be used with that hardware. GMOCCAPY offers a separate settings page to configure most settings of the GUI without editing files.
de: Es unterstützt eine integrierte virtuelle Tastatur (Onboard- oder Matchbox-Tastatur), so dass keine Hardware-Tastatur oder -Maus benötigt wird, kann aber auch mit dieser Hardware verwendet werden. GMOCCAPY bietet eine separate Einstellungsseite, um die meisten Einstellungen der GUI zu konfigurieren, ohne Dateien zu bearbeiten.

note: type: Plain text
en: GMOCCAPY can be localized very easy, because the corresponding files are separated from the linuxcnc.po files, so there is no need to translate unneeded stuff. The files are placed in */src/po/gmoccapy*. You could just copy the gmoccapy.pot file to something like it.po and translate that file with gtranslator or poedit.  After rebuilding, you'd get the GUI in your preference language. To facilitate the sharing of the translation, GMOCCAPY is available on the https://hosted.weblate.org/projects/linuxcnc/gmocappy/[Weblate web interface].  GMOCCAPY is currently available in English, German, Spanish, Polish, Serbian and Hungarian. Feel free to help me to introduce more languages, be it locally or via the web.  If you need help, don't hesitate to contact me on *nieson@web.de*.
de: GMOCCAPY kann sehr einfach lokalisiert werden, da die entsprechenden Dateien von den linuxcnc.po-Dateien getrennt sind, so dass es nicht notwendig ist, nicht benötigte Dinge zu übersetzen. Die Dateien befinden sich in */src/po/gmoccapy*. Du könntest einfach die Datei gmoccapy.pot in etwas wie it.po kopieren und diese Datei mit gtranslator oder poedit übersetzen.  Nach dem Neuaufbau erhalten Sie die GUI in der von Ihnen bevorzugten Sprache. Um die Weitergabe der Übersetzung zu erleichtern, ist GMOCCAPY auf https://hosted.weblate.org/projects/linuxcnc/gmocappy/[Weblate web interface] verfügbar.  GMOCCAPY ist derzeit in Englisch, Deutsch, Spanisch, Polnisch, Serbisch und Ungarisch verfügbar. Sie können mir gerne helfen, weitere Sprachen einzuführen, sei es lokal oder über das Web.  Wenn Sie Hilfe benötigen, zögern Sie nicht, mich unter *nieson@web.de* zu kontaktieren.

note: type: Plain text
en: GMOCCAPY 3 has been tested on Debian Jessie, Debian Stretch and MINT 18 with LinuxCNC master and 2.8 release. It fully support joint / axis changes of LinuxCNC, making it suitable as GUI for Scara, Robots or any other config with more joints than axes. So it supports also gantry configs. If you use other versions, please inform about problems and / or solutions on the http://www.linuxcnc.org/index.php/english/forum/41-guis/26314-gmoccapy-a-new-screen-for-linuxcnc[LinuxCNC forum] or the http://www.cncecke.de/forum/showthread.php?t=78549[German CNC Ecke Forum] or https://lists.sourceforge.net/lists/listinfo/emc-users[LinuxCNC users mailing list].
de: GMOCCAPY 3 wurde auf Debian Jessie, Debian Stretch und MINT 18 mit LinuxCNC Master und 2.8 Release getestet. Es unterstützt vollständig Gelenk / Achse Änderungen von LinuxCNC, so dass es geeignet als GUI für Scara, Roboter oder jede andere Konfiguration mit mehr Gelenke als Achse. Wenn Sie andere Versionen verwenden, informieren Sie bitte über Probleme und / oder Lösungen auf der http://www.linuxcnc.org/index.php/english/forum/41-guis/26314-gmoccapy-a-new-screen-for-linuxcnc[LinuxCNC Forum] oder die http://www.cncecke.de/forum/showthread.php?t=78549[Deutsche CNC Ecke Forum] oder https://lists.sourceforge.net/lists/listinfo/emc-users[LinuxCNC Benutzer Mailingliste].

note: type: Plain text
en: The minimum screen resolution for GMOCCAPY, using it without side panels is *979 x 750 Pixel*, so it should fit to every standard screen. It is recommended to use screens with minimum resolution of 1024x748.
de: Die minimale Bildschirmauflösung für GMOCCAPY ist *979 x 750 Pixel*, also sollte es auf jeden Standardbildschirm passen. Es wird empfohlen, Bildschirme mit einer Mindestauflösung von 1024x748 zu verwenden.

note: type: Title ==
en: How To Get GMOCCAPY
de: So erhalten Sie GMOCCAPY

note: type: Plain text
en: You will get a similar screen to the following (the design may vary depending on your config):
de: Sie erhalten einen ähnlichen Bildschirm wie den folgenden (das Design kann je nach Ihrer Konfiguration variieren):

note: type: Title ==
en: Basic Configuration
de: Basiseinstellung

note: type: Plain text
en: GMOCCAPY 3 supports the following command line options:
de: GMOCCAPY 3 unterstützt die folgenden Befehlszeilenoptionen:

note: type: Plain text
en: There is really not to much to configure just to run GMOCCAPY, but there are some points you should take care off if you want to use all the features of the GUI.
de: Es gibt eigentlich nicht viel zu konfigurieren, um GMOCCAPY auszuführen, aber es gibt einige Punkte, die Sie beachten sollten, wenn Sie alle Funktionen der GUI nutzen wollen.

note: type: Plain text
en: You will find a lot of simulation configurations (INI files) included, just to show the basics:
de: Sie werden eine Reihe von Simulationskonfigurationen (INI-Dateien) finden, die nur die Grundlagen zeigen:

note: type: Plain text
en: and a lot more ...
de: und vieles mehr ...

note: type: Plain text
en: The names should explain the main intention of the different INI files.
de: Die Namen sollten den Hauptzweck der verschiedenen INI-Dateien erklären.

note: type: Plain text
en: If you use an existing configuration of your machine, just edit your INI according to this document.
de: Wenn Sie eine bestehende Konfiguration Ihres Rechners verwenden, bearbeiten Sie einfach Ihre INI-Datei entsprechend diesem Dokument.

note: type: Plain text
en: If you want to use <<gmoccapy:macros,MACROS>>, don't forget to set the path to your macros or subroutines folder as described below.
de: Wenn Sie <<gmoccapy:macros,MACROS>> verwenden wollen, vergessen Sie nicht, den Pfad zu Ihrem Makro- oder Subroutinen-Ordner wie unten beschrieben anzugeben.

note: type: Plain text
en: So let us take a closer look at the INI file and what you need to include to use GMOCCAPY on your machine:
de: Schauen wir uns also die INI-Datei genauer an und was Sie einfügen müssen, um GMOCCAPY auf Ihrem Rechner zu verwenden:

note: type: Title ===
en: The DISPLAY Section
de: Die DISPLAY-Sektion

note: type: Plain text
en: _DISPLAY = gmoccapy_ - This tells LinuxCNC to use GMOCCAPY.
de: _DISPLAY = gmoccapy_ - Damit wird LinuxCNC angewiesen, GMOCCAPY zu verwenden.

note: type: Plain text
en: If no value is given, it will be set to 1.0.
de: Wenn kein Wert angegeben wird, so wird er auf 1,0 gesetzt.

note: type: Plain text
en: See also the <<gmoccapy:lathe-section,Lathe Specific Section>>.
de: Siehe auch den Abschnitt speziell zu <<gmoccapy:lathe-section,Drehmaschinen>>.

note: type: Title ===
en: The TRAJ Section
de: Der TRAJ Abschnitt

note: max. jog velocity? type: Plain text
en: _MAX_LINEAR_VELOCITY = 230.0_ - Sets the maximal velocity of the machine.
de: _MAX_LINEAR_VELOCITY = 230.0_ - Legt die maximale Geschwindigkeit der Maschine fest.

note: type: Plain text
en: Defaults to 600 if not set.
de: Der Standardwert ist 600, falls nicht festgelegt.

note: type: Title ===
en: Macro Buttons
de: Makro-Buttons

note: type: Plain text
en: Then you just have to add a section like this:
de: Dann müssen Sie nur noch einen Abschnitt wie diesen hinzufügen:

note: type: Plain text
en: Then you have to provide the corresponding NGC files which have to follow these rules:
de: Dann müssen Sie die entsprechenden NGC-Dateien bereitstellen, die diesen Regeln entsprechen müssen:

note: type: Plain text
en: The name of the file need to be exactly the same as the name mentioned in the macro line, just with the ".ngc" extension (case sensitive).
de: Der Name der Datei muss genau dem in der Makrozeile angegebenen Namen entsprechen, nur mit der Erweiterung ".ngc" (Groß- und Kleinschreibung beachten).

note: type: Plain text
en: The file must contain a subroutine like '*O<i_am_lost> sub*', the name of the sub must match exactly (case sensitive) the name of the macro.
de: Die Datei muss ein Unterprogramm enthalten: '*O<i_am_lost> sub*', der Name des Unterprogramms muss genau (Groß-/Kleinschreibung beachten) mit dem Namen des Makros übereinstimmen.

note: type: Plain text
en: The file must end with an endsub '*O<i_am_lost> endsub*' followed by an '*M2*' command.
de: Die Datei muss mit einem endsub '*O<i_am_lost> endsub*' gefolgt von einem '*M2*'-Befehl enden.

note: type: Plain text
en: The files need to be placed in a folder specified in your INI file by 'SUBROUTINE_PATH' in the RS274NGC section
de: Die Dateien müssen in einem Ordner abgelegt werden, der in Ihrer INI-Datei durch 'SUBROUTINE_PATH' im Abschnitt RS274NGC angegeben ist

note: type: Plain text
en: The code between sub and endsub will be executed by pushing the corresponding macro button.
de: Der Code zwischen sub und endsub wird durch Betätigen der entsprechenden Makrotaste ausgeführt.

note: type: Plain text
en: A maximum of 16 macros will be shown in the GUI. Due to space reasons you may need to click on an arrow to switch the page and display hidden macro buttons.  The macro buttons will be displayed in the order of the INI entries.  It is no error placing more than 16 macros in your INI file, they will just not be shown.
de: Es werden maximal 16 Makros in der GUI angezeigt. Aus Platzgründen kann es sein, dass Sie auf einen Pfeil klicken müssen, um die Seite zu wechseln und versteckte Makroschaltflächen anzuzeigen.  Die Makro-Schaltflächen werden in der Reihenfolge der INI-Einträge angezeigt.  Es ist kein Fehler, mehr als 16 Makros in Ihrer INI-Datei zu platzieren, sie werden nur nicht angezeigt.

note: .Macros example image::images/gmoccapy_mdi_hidden_keyboard.png[align="left"] type: Plain text
en: You will find the sample macros in a folder named 'macros' placed in the GMOCCAPY sim folder. If you have given several subroutine paths, they will be searched in the order of the given paths. The first file found will be used.
de: Sie finden die Beispielmakros in einem Ordner mit dem Namen 'macros', der sich im GMOCCAPY sim-Ordner befindet. Wenn Sie mehrere Pfade für Unterprogramme angegeben haben, werden diese in der Reihenfolge der angegebenen Pfade durchsucht. Die erste gefundene Datei wird verwendet.

note: type: Plain text
en: GMOCCAPY will also accept macros asking for parameters like:
de: GMOCCAPY akzeptiert auch Makros, die nach Parametern wie den folgenden fragen:

note: type: Plain text
en: The parameters must be separated by spaces.  This example calls a file 'go_to_position.ngc' with the following content:
de: Die Parameter müssen durch Leerzeichen getrennt werden.  Dieses Beiaspiel ruft eine Datei "go_to_position.ngc" mit dem folgenden Inhalt auf:

note: type: delimited block -
en: ; Test file "go to position"
    ; will jog the machine to a given position
de: ; Testdatei "go to position" (engl. für geh' zur Position)
    ; fährt die Maschine zu einer bestimmten Position

note: type: delimited block -
en: (DBG, Will now move machine to X = #1 , Y = #2 , Z = #3)
    G0 X #1 Y #2 Z #3
de: (DBG, wird jetzt die Maschine zu X = #1 , Y = #2 , Z = #3 bewegen)
    G0 X #1 Y #2 Z #3

note: type: Plain text
en: After pushing the '*execute macro button*', you will be asked to enter the values for '*X-pos Y-pos Z-pos*' and the macro will only run if all values have been given.
de: Nach dem Drücken der Taste '*Makro ausführen*' werden Sie aufgefordert, die Werte für '*X-pos Y-pos Z-pos*' einzugeben, und das Makro wird nur ausgeführt, wenn alle Werte angegeben wurden.

note: type: Plain text
en: If you would like to use a macro without any movement, see also the notes in <<sub:NOT_ENDING_MACROS,known problems>>.
de: Wenn Sie ein Makro ohne Bewegung verwenden möchten, beachten Sie auch die Hinweise in <<sub:NOT_ENDING_MACROS,bekannte Probleme>>.

note: type: Block title
en: Macro example using the "go to position"-macro
de: Makrobeispiel mit dem "Gehe zu Position"-Makro

note: type: Plain text
en: You can add embedded programs to GMOCCAPY like you can do in AXIS, Touchy and Gscreen. All is done by GMOCCAPY automatically if you include a few lines in your INI file in the DISPLAY section.
de: Sie können GMOCCAPY eingebettete Programme hinzufügen, wie Sie es bei AXIS, Touchy und Gscreen tun können. Alles wird von GMOCCAPY automatisch erledigt, wenn Sie ein paar Zeilen in Ihre INI-Datei im DISPLAY-Abschnitt einfügen.

note: type: Block title
en: Embedded Tab Example
de: Beispiel für eingebettete Registerkarten

note: type: Plain text
en: All you have to take care of, is that you include for every tab or side panel the mentioned three lines:
de: Alles, was Sie beachten müssen, ist, dass Sie für jede Registerkarte oder jedes Seitenfeld die genannten drei Zeilen einfügen:

note: type: Plain text
en: EMBED_TAB_NAME = Represents the name of the tab or side panel, it is up to you what name you use, but it must be present!
de: EMBED_TAB_NAME = Stellt den Namen der Registerkarte oder des Seitenfensters dar, es ist Ihnen überlassen, welchen Namen Sie verwenden, aber er muss vorhanden sein!

note: type: Plain text
en: EMBED_TAB_LOCATION = The place where your program will be placed in the GUI, see figure <<fig:gmoccapy_emb_tab_locations,Embedded tab locations>>. Valid values are:
de: EMBED_TAB_LOCATION = Der Ort, an dem Ihr Programm in der GUI platziert wird, siehe Abbildung <<fig:gmoccapy_emb_tab_locations,Embedded tab locations>>. Gültige Werte sind:

note: type: Plain text
en: *ntb_user_tabs*            (as main tab, covering the complete screen)
de: *ntb_user_tabs* (als Hauptregisterkarte, die den gesamten Bildschirm abdeckt)

note: type: Plain text
en: *ntb_preview*              (as tab on the preview side *(1)*)
de: *ntb_preview* (als Tab auf der Vorschauseite *(1)*)

note: type: Plain text
en: *hbox_jog*                 (will hide the jog buttons and introduce your glade file here *(2)*)
de: *hbox_jog* (blendet die Jog-Buttons aus und führt die Glade-Datei hier ein *(2)*)

note: type: Plain text
en: *box_left*                 (on the left, complete high of the screen)
de: *box_left* (auf der linken Seite, ganz oben auf dem Bildschirm)

note: type: Plain text
en: *box_right*                (on the right, in between the normal screen and the button list)
de: *box_right* (auf der rechten Seite, zwischen dem normalen Bildschirm und der Schaltflächenliste)

note: type: Plain text
en: *box_tool_and_code_info*   (will hide the Tool information and G-code frames and introduce your glade file here *(3)*)
de: *box_tool_and_code_info* (blendet die Werkzeuginformationen und die G-Code-Frames aus und fügt Ihre Glade-Datei hier ein *(3)*)

note: type: Plain text
en: *box_tool_info*            (will hide the Tool information frame and introduce your glade file here)
de: *box_tool_info* (blendet den Werkzeuginformationsrahmen aus und fügt hier Ihre Glade-Datei ein)

note: type: Plain text
en: *box_code_info*            (will hide the G-code information frame and introduce your glade file here)
de: *box_code_info* (blendet den G-Code-Informationsrahmen aus und fügt hier Ihre Glade-Datei ein)

note: type: Plain text
en: *box_vel_info*             (will hide the velocity frames and introduce your glade file *(4)*)
de: *box_vel_info* (blendet die Geschwindigkeitsrahmen aus und fügt Ihre Glade-Datei ein *(4)*)

note: type: Plain text
en: *box_coolant_and_spindle*  (will hide the coolant and spindle frames and introduce your glade file here *(5)+(6)*)
de: *box_coolant_and_spindle* (blendet die Rahmen für Kühlmittel und Spindel aus und fügt die Glade-Datei hier ein *(5)+(6)*)

note: type: Plain text
en: *box_cooling*              (will hide the cooling frame and introduce your glade file *(5)*)
de: *box_cooling* (blendet den Kühlrahmen aus und fügt Ihre Glade-Datei ein *(5)*)

note: type: Plain text
en: *box_spindle*              (will hide the spindle frame and introduce your glade file *(6)*)
de: *box_spindle* (blendet den Spindelrahmen aus und fügt Ihre Glade-Datei ein *(6)*)

note: type: Plain text
en: *box_custom_1*             (will introduce your glade file left of vel_frame)
de: *box_custom_1* (fügt Ihre Glade-Datei links von vel_frame ein)

note: type: Plain text
en: *box_custom_2*             (will introduce your glade file left of cooling_frame)
de: *box_custom_2* (fügt Ihre Glade-Datei links von cooling_frame ein)

note: type: Plain text
en: *box_custom_3*             (will introduce your glade file left of spindle_frame)
de: *box_custom_3* (fügt Ihre Glade-Datei links von spindle_frame ein)

note: type: Plain text
en: *box_custom_4*             (will introduce your glade file right of spindle_frame)
de: *box_custom_4* (fügt Ihr Glade-Datei rechts vom spindle_frame ein)

note: type: Plain text
en: See also the included sample INI files to see the differences.
de: Siehe auch die mitgelieferten INI-Beispieldateien, um die Unterschiede zu sehen.

note: type: Plain text
en: EMBED_TAB_COMMAND = The command to execute, i.e.
de: EMBED_TAB_COMMAND = Der auszuführende Befehl, d. h.

note: type: Plain text
en: includes a custom glade file called dro.glade in the mentioned location The file must be placed in the config folder of your machine.
de: enthält eine benutzerdefinierte Glade-Datei mit dem Namen dro.glade an dem genannten Ort. Die Datei muss sich im Konfigurationsordner Ihres Computers befinden.

note: type: Plain text
en: will just open a new user window called h_buttonlist.glade note the difference, this one is stand alone, and can be moved around independent from GMOCCAPY window.
de: öffnet einfach ein neues Benutzerfenster mit dem Namen h_buttonlist.glade. Beachten Sie den Unterschied, dass dieses Fenster eigenständig ist und unabhängig vom GMOCCAPY-Fenster verschoben werden kann.

note: type: Plain text
en: will add a the panel manual-example.ui, include a custom Python handler, hitcounter.py and make all connections after realizing the panel according to manual-example.hal.
de: fügt das Panel manual-example.ui hinzu, fügt einen benutzerdefinierten Python-Handler, hitcounter.py, ein und stellt alle Verbindungen her, nachdem das Panel gemäß manual-example.hal realisiert wurde.

note: type: delimited block -
en: hide
de: hide (engl. für ausblenden)

note: type: Plain text
en: will hide the chosen box.
de: blendet das gewählte Kästchen aus.

note: type: Block title
en: Embedded tab locations
de: Eingebettete Registerkartenpositionen

note: type: Plain text
en: If you make any HAL connections to your custom glade panel, you need to do that in the HAL file specified in the EMBED_TAB_COMMAND line, otherwise you may get an error that the HAL pin does not exist -- this is because of race conditions loading the HAL files. Connections to GMOCCAPY HAL pins need to be made in the postgui HAL file specified in your INI file, because these pins do not exist prior of realizing the GUI.
de: Wenn Sie HAL-Verbindungen zu Ihrem benutzerdefinierten Glade-Panel herstellen, müssen Sie dies in der HAL-Datei tun, die in der EMBED_TAB_COMMAND-Zeile angegeben ist, andernfalls erhalten Sie möglicherweise die Fehlermeldung, dass der HAL-Pin nicht existiert - dies ist auf Race Conditions beim Laden der HAL-Dateien zurückzuführen. Verbindungen zu GMOCCAPY HAL-Pins müssen in der postgui-HAL-Datei hergestellt werden, die in Ihrer INI-Datei angegeben ist, da diese Pins vor der Realisierung der GUI nicht existieren.

note: type: Plain text
en: Here are some examples:
de: Hier sind einige Beispiele:

note: type: Block title
en: ntb_preview - in maximized view
de: ntb_preview - in maximierter Ansicht

note: type: Block title
en: box_right - and GMOCCAPY in MDI mode
de: box_right - und GMOCCAPY im MDI-Modus

note: type: Plain text
en: GMOCCAPY has the ability to create HAL driven user messages. To use them you need to introduce some lines in the [DISPLAY] section of the INI file.
de: GMOCCAPY hat die Möglichkeit, HAL-gesteuerte Benutzermeldungen zu erstellen. Um sie zu verwenden, müssen Sie einige Zeilen in den [DISPLAY]-Abschnitt der INI-Datei einfügen.

note: type: Plain text
en: These three lines are needed to define a user pop up message dialog:
de: Diese drei Zeilen werden benötigt, um einen Popup-Meldungsdialog für den Benutzer zu definieren:

note: type: delimited block -
en: MESSAGE_TEXT    = The text to be displayed, may be pango markup formatted
    MESSAGE_TYPE    = "status" , "okdialog" , "yesnodialog"
    MESSAGE_PINNAME = is the name of the HAL pin group to be created
de: MESSAGE_TEXT = Der anzuzeigende Text, kann mit Tango-Markup formatiert sein
    MESSAGE_TYPE = "status" , "okdialog" , "yesnodialog"
    MESSAGE_PINNAME = ist der Name der zu erstellenden HAL-Pin-Gruppe

note: type: Plain text
en: The messages support pango markup language. Detailed information about the markup language can be found at https://developer.gnome.org/pango/stable/PangoMarkupFormat.html[Pango Markup].
de: Die Nachrichten unterstützen die Auszeichnungssprache Pango. Detaillierte Informationen über die Auszeichnungssprache finden Sie unter https://developer.gnome.org/pango/stable/PangoMarkupFormat.html[Pango Markup].

note: type: Plain text
en: The following three dialog types are available:
de: Die folgenden drei Dialogtypen sind verfügbar:

note: type: Plain text
en: *status* - Will just display a message as pop up window, using the messaging
    system of GMOCCAPY.
de: *status* - Zeigt eine Nachricht in einem Pop-up-Fenster an, das Nachrichtensystem
    System von GMOCCAPY nutzend.

note: type: Plain text
en: *okdialog* - Will hold focus on the message dialog and will activate a
    `-waiting` HAL pin.
de: *okdialog* - Hält den Fokus auf dem Nachrichtendialog und aktiviert einen `-waiting`(engl. für wartenden) HAL-Pin.

note: type: Plain text
en: *yesnodialog* - Will hold focus on the message dialog and will activate
    a `-waiting` HAL pin and provide a `-response` HAL pin.
de: *yesnodialog* - Hält den Fokus auf dem Nachrichtendialog und aktiviert
    einen `-waiting` (engl. für wartenden) HAL-Pin und einen `-response` (engl. für Antwort) HAL-Pin.

note: type: Block title
en: Example of User Message Configuration
de: Beispiel für die Konfiguration von Benutzernachrichten

note: type: Plain text
en: Currently the formatting doesn't work.
de: Derzeit funktioniert die Formatierung nicht.

note: type: Title ===
en: Preview Control
de: Vorschau Kontrolle

note: type: Plain text
en: Magic comments can be used to control the G-code preview.  On very large programs the preview can take a long time to load. You can control what is shown and what is hidden on the graphics screen by adding the appropriate comments from this list into your gcode:
de: Magische Kommentare können verwendet werden, um die G-Code-Vorschau zu steuern.  Bei sehr großen Programmen kann die Vorschau sehr lange zum Laden brauchen. Sie können steuern, was auf dem Grafikbildschirm angezeigt und was ausgeblendet wird, indem Sie die entsprechenden Kommentare aus dieser Liste in Ihren G-Code einfügen:

note: type: delimited block =
en: You will have to do all connections to GMOCCAPY pins in your postgui.hal file.  When GMOCCAPY is started, it creates the HAL pins for the GUI then it executes the post-GUI HAL file named in the INI file:
de: Sie müssen alle Verbindungen zu GMOCCAPY-Pins in Ihrer postgui.hal-Datei herstellen.  Wenn GMOCCAPY gestartet wird, erstellt es die HAL-Pins für die GUI und führt dann die in der INI-Datei genannte post-GUI-HAL-Datei aus:

note: type: delimited block -
en: [HAL]
    POSTGUI_HALFILE=<filename>
de: [HAL]
    POSTGUI_HALFILE=<Dateiname>

note: type: Plain text
en: Typically `<filename>` would be the configs base name + `_postgui.hal`, e.g. `lathe_postgui.hal`, but can be any legal filename.
    These commands are executed after the screen is built, guaranteeing the widget's HAL pins are available.
    You can have multiple line of `POSTGUI_HALFILE=<filename>` in the INI file. Each will be run one after the other in the order they appear.
de: Typischerweise wäre `<Dateiname>` der Basisname der Konfiguration + `_postgui.hal`, z.B. `lathe_postgui.hal`, aber es kann jeder legale Dateiname sein.
    Diese Befehle werden nach der Erstellung des Bildschirms ausgeführt und garantieren, dass die HAL-Pins des Widgets verfügbar sind.
    Sie können mehrere Zeilen mit `POSTGUI_HALFILE=<Dateiname>` in der INI-Datei haben. Sie werden nacheinander in der Reihenfolge ausgeführt, in der sie erscheinen.

note: type: delimited block =
en: For a three axes XYZ machine the HAL pins will react as shown in the following three tables:
de: Bei einer dreiachsigen XYZ-Maschine reagieren die HAL-Pins wie in den folgenden drei Tabellen dargestellt:

note: type: Block title
en: Functional assignment of horizontal buttons (1)
de: Funktionelle Zuordnung der horizontalen Buttons (1)

note: type: Table
en: macro_0 or nothing
de: macro_0 oder nichts

note: type: Table
en: open touch off stuff
de: Offenes Touch-Off-Krims

note: type: Table
en: macro_1 or nothing
de: macro_1 oder nichts

note: type: Table
en: macro_2 or nothing
de: macro_2 oder nichts

note: type: Table
en: macro_3 or nothing
de: macro_3 oder nichts

note: type: Table
en: macro_4 or nothing
de: macro_4 oder nichts

note: type: Table
en: macro_5 or nothing
de: macro_5 oder nichts

note: type: Table
en: macro_6 or nothing
de: macro_6 oder nichts

note: type: Table
en: macro_7 or nothing
de: macro_7 oder nichts

note: type: Table
en: edit code
de: Code bearbeiten

note: type: Block title
en: Functional assignment of horizontal buttons (2)
de: Funktionszuweisung der horizontalen Buttons (2)

note: type: Table
en: Touch off Mode
de: Touch-Off-Modus

note: type: Table
en: open HAL scope
de: öffnen von HAL-scope

note: type: Table
en: open HAL status
de: HAL-Status öffnen

note: type: Table
en: open HAL calibration
de: HAL-Kalibrierung öffnen

note: type: Table
en: open HAL show
de: öffnen von HAL-show

note: type: Block title
en: Functional assignment of horizontal buttons (3)
de: Funktionelle Zuordnung der horizontalen Buttons (3)

note: type: Table
en: reload tool table
de: Werkzeugtabelle neu laden

note: type: Table
en: save
de: speichern

note: type: Table
en: apply changes
de: Änderungen übernehmen

note: type: Table
en: save as
de: speichern unter

note: type: Table
en: touch of tool in Z
de: Werkzeugberührung in Z

note: type: Plain text
en: So we have 67 reactions with only 10 HAL pins!
de: Wir haben also 67 Reaktionen mit nur 10 HAL-Pins!

note: type: Block title
en: Sample configuration "gmoccapy_sim_hardware_button" showing the buttons
de: Beispielkonfiguration "gmoccapy_sim_hardware_button" mit den Schaltflächen

note: type: Title ===
en: Velocities And Overrides
de: Geschwindigkeiten und Neufestsetzungen/Übersteuerungen (engl. overrides)

note: type: Plain text
en: *gmoccapy.jog.jog-velocity.counts*                _(s32 IN)_ - Jog velocity
de: *gmoccapy.jog.jog-velocity.counts*                _(s32 IN)_ - Jog Geschwindigkeit

note: type: Plain text
en: *gmoccapy.feed.feed-override.counts*              _(s32 IN)_ - feed override
de: *gmoccapy.feed.feed-override.counts*              _(s32 IN)_ - Vorschub Override

note: type: Plain text
en: *gmoccapy.feed.feed-override.count-enable*        _(bit IN)_ - Must be True, to enable counts
de: *gmoccapy.feed.feed-override.count-enable* _(bit IN)_ - Muss True sein, um Zählungen zu aktivieren

note: type: Plain text
en: *gmoccapy.feed.reset-feed-override*               _(bit IN)_ - reset the feed override to *0%
de: *gmoccapy.feed.reset-feed-override* _(bit IN)_ - setzt den Vorschub-Override auf *0% zurück

note: type: Plain text
en: *gmoccapy.spindle.spindle-override.counts*        _(s32 IN)_ - spindle override
de: *gmoccapy.spindle.spindle-override.counts*        _(s32 IN)_ - Spindel override

note: type: Plain text
en: *gmoccapy.spindle.spindle-override.count-enable*  _(bit IN)_ - Must be True, to enable counts
de: *gmoccapy.spindle.spindle-override.count-enable* _(bit IN)_ - Muss True sein, um Zählungen zu aktivieren

note: type: Plain text
en: *gmoccapy.spindle.reset-spindle-override*         _(bit IN)_ - reset the spindle override to *0%
de: *gmoccapy.spindle.reset-spindle-override* _(bit IN)_ - setzt den Spindel-Override auf *0% zurück

note: type: Plain text
en: *gmoccapy.rapid.rapid-override.counts*            _(s32 IN)_ - Maximal Velocity of the *chine
de: *gmoccapy.rapid.rapid-override.counts* _(s32 IN)_ - Maximale Geschwindigkeit der *Chine

note: type: Plain text
en: *gmoccapy.rapid.rapid-override.count-enable*      _(bit IN)_ - Must be True, to enable counts
de: *gmoccapy.rapid.rapid-override.count-enable* _(bit IN)_ - Muss True sein, um Zählungen zu aktivieren

note: type: Plain text
en: *gmoccapy.jog.jog-velocity.direct-value*          _(float IN)_ - To adjust the jog velocity slider
de: *gmoccapy.jog.jog-velocity.direct-value* _(float IN)_ - So stellen Sie den Schieberegler für die Jog-Geschwindigkeit ein

note: type: Plain text
en: *gmoccapy.jog.jog-velocity.analog-enable*         _(bit IN)_   - Must be True, to allow analog inputs
de: *gmoccapy.jog.jog-velocity.analog-enable* _(bit IN)_ - Muss True sein, um analoge Eingänge zuzulassen

note: type: Plain text
en: *gmoccapy.feed.feed-override.direct-value*        _(float IN)_ - To adjust the feed override slider
de: *gmoccupy.feed.feed-override. direct-value* _(float IN)_ So passen Sie den Schieberegler für die Vorschubüberschreitung an (engl. feed override)

note: type: Plain text
en: *gmoccapy.feed.feed-override.analog-enable*       _(bit IN)_   - Must be True, to allow analog inputs
de: *gmoccapy.feed.feed-override.analog-enable* _(bit IN)_ - Muss True sein, um analoge Eingänge zuzulassen

note: type: Plain text
en: *gmoccapy.spindle.spindle-override.direct-value*  _(float IN)_ - To adjust the spindle override slider
de: *gmoccapy.spindle.spindle-override.direct-value* _(float IN)_ - Zum Einstellen des Spindel-Override-Schiebereglers

note: type: Plain text
en: *gmoccapy.spindle.spindle-override.analog-enable* _(bit IN)_   - Must be True, to allow analog inputs
de: *gmoccapy.spindle.spindle-override.analog-enable* _(bit IN)_ - Muss True sein, um Analogeingänge zuzulassen

note: type: Plain text
en: *gmoccapy.rapid.rapid-override.direct-value*      _(float)_    - To adjust the max velocity slider
de: *gmoccapy.rapid.rapid-override.direct-value* _(float)_ - Zum Einstellen des Reglers für die maximale Geschwindigkeit

note: type: Plain text
en: *gmoccapy.rapid.rapid-override.analog-enable*     _(bit IN)_   - Must be True, to allow analog inputs
de: *gmoccapy.rapid.rapid-override.analog-enable* _(bit IN)_ - Muss True sein, um Analogeingänge zuzulassen

note: type: Block title
en: SPEED
de: GESCHWINDIGKEIT

note: type: Plain text
en: *gmoccapy.spc_jog_vel.increase*      _(bit IN)_    - As long as True the value of the slider will increase
de: *gmoccapy.spc_jog_vel.increase* _(bit IN)_ - Solange True, wird der Wert des Schiebereglers erhöht

note: type: Plain text
en: *gmoccapy.spc_jog_vel.decrease*      _(bit IN)_    - As long as True the value of the slider will decrease
de: *gmoccapy.spc_jog_vel.decrease* _(bit IN)_ - Solange True, wird der Wert des Schiebereglers verringert

note: type: Plain text
en: *gmoccapy.spc_jog_vel.scale*         _(float IN)_  - A value to scale the output value (handy to change units/min to units/sec)
de: *gmoccapy.spc_jog_vel.scale* _(float IN)_ - Ein Wert zur Skalierung des Ausgabewerts (praktisch, um Einheiten/Min in Einheiten/Sek zu ändern)

note: type: Plain text
en: *gmoccapy.spc_jog_vel.value*         _(float OUT)_ - Value of the widget
de: *gmoccapy.spc_jog_vel.value* _(float OUT)_ - Wert des Widgets

note: type: Plain text
en: *gmoccapy.spc_jog_vel.scaled-value*  _(float OUT)_ - Scaled value of the widget
de: *gmoccapy.spc_jog_vel.scaled-value* _(float OUT)_ - Skalierter Wert des Widgets

note: type: Plain text
en: *gmoccapy.spc_feed.increase*         _(bit IN)_    - As long as True the value of the slider will increase
de: *gmoccapy.spc_feed.increase* _(bit IN)_ - Solange True wird der Wert des Schiebereglers erhöht

note: type: Plain text
en: *gmoccapy.spc_feed.decrease*         _(bit IN)_    - As long as True the value of the slider will decrease
de: *gmoccapy.spc_feed.decrease* _(bit IN)_ - Solange True wird der Wert des Schiebereglers verringert

note: type: Plain text
en: *gmoccapy.spc_feed.scale*            _(float IN)_  - A value to scale the output value (handy to change units/min to units/sec)
de: *gmoccapy.spc_feed.scale* _(float IN)_ - Ein Wert zur Skalierung des Ausgabewerts (praktisch, um Einheiten/Min in Einheiten/Sek zu ändern)

note: type: Plain text
en: *gmoccapy.spc_feed.value*            _(float OUT)_ - Value of the widget
de: *gmoccapy.spc_feed.value* _(float OUT)_ - Wert des Widgets

note: type: Plain text
en: *gmoccapy.spc_feed.scaled-value*     _(float OUT)_ - Scaled value of the widget
de: *gmoccapy.spc_feed.scaled-value* _(float OUT)_ - Skalierter Wert des Widgets

note: type: Plain text
en: *gmoccapy.spc_spindle.increase*      _(bit IN)_    - As long as True the value of the slider will increase
de: *gmoccapy.spc_spindle.increase* _(bit IN)_ - Solange True, wird der Wert des Schiebereglers erhöht

note: type: Plain text
en: *gmoccapy.spc_spindle.decrease*      _(bit IN)_    - As long as True the value of the slider will decrease
de: *gmoccapy.spc_spindle.decrease* _(bit IN)_ - Solange True, wird der Wert des Schiebereglers verringert

note: type: Plain text
en: *gmoccapy.spc_spindle.scale*         _(float IN)_  - A value to scale the output value (handy to change units/min to units/sec)
de: *gmoccapy.spc_spindle.scale* _(float IN)_ - Ein Wert zur Skalierung des Ausgabewerts (praktisch, um Einheiten/min in Einheiten/sec zu ändern)

note: type: Plain text
en: *gmoccapy.spc_spindle.value*         _(float OUT)_ - Value of the widget
de: *gmoccapy.spc_spindle.value* _(float OUT)_ - Wert des Widgets

note: type: Plain text
en: *gmoccapy.spc_spindle.scaled-value*  _(float OUT)_ - Scaled value of the widget
de: *gmoccapy.spc_spindle.scaled-value* _(float OUT)_ - Skalierter Wert des Widgets

note: type: Plain text
en: *gmoccapy.spc_rapid.increase*        _(bit IN)_    - As long as True the value of the slider will increase
de: *gmoccapy.spc_rapid.increase* _(bit IN)_ - Solange True wird der Wert des Schiebereglers erhöht

note: type: Plain text
en: *gmoccapy.spc_rapid.decrease*        _(bit IN)_    - As long as True the value of the slider will decrease
de: *gmoccapy.spc_rapid.decrease* _(bit IN)_ - Solange True, wird der Wert des Schiebereglers verringert

note: type: Plain text
en: *gmoccapy.spc_rapid.scale*           _(float IN)_  - A value to scale the output value (handy to change units/min to units/sec)
de: *gmoccapy.spc_rapid.scale* _(float IN)_ - Ein Wert zur Skalierung des Ausgabewerts (praktisch, um Einheiten/Min in Einheiten/Sek zu ändern)

note: type: Plain text
en: *gmoccapy.spc_rapid.value*           _(float OUT)_ - Value of the widget
de: *gmoccapy.spc_rapid.value* _(float OUT)_ - Wert des Widgets

note: type: Plain text
en: *gmoccapy.spc_rapid.scaled-value*    _(float OUT)_ - Scaled value of the widget
de: *gmoccapy.spc_rapid.scaled-value* _(float OUT)_ - Skalierter Wert des Widgets

note: type: Plain text
en: If you use both connection types, do not connect the same slider to both pin, as the influences between the two has not been tested! Different sliders may be connected to the one or other HAL connection type.
de: Wenn Sie beide Anschlussarten verwenden, schließen Sie nicht denselben Schieberegler an beide Pins an, da die Einflüsse zwischen den beiden nicht getestet wurden! Verschiedene Schieberegler können an die eine oder andere HAL-Anschlussart angeschlossen werden.

note: type: Plain text
en: All axes given in the INI file have a jog-plus and a jog-minus pin, so hardware momentary switches can be used to jog the axes.
de: Alle Achsen, die in der INI-Datei angegeben sind, haben einen Jog-Plus- und einen Jog-Minus-Pin, so dass Hardware-Taster verwendet werden können, um die Achse zu joggen.

note: type: Plain text
en: Naming of these HAL pins have changed in GMOCCAPY 2.
de: Die Benennung dieser HAL-Pins hat sich in GMOCCAPY 2 geändert.

note: type: Plain text
en: If you use a 4 axes configuration, there will be two additional pins:
de: Wenn Sie eine 4-Achsen-Konfiguration verwenden, gibt es zwei zusätzliche Pins:

note: type: Plain text
en: *gmoccapy.jog.jog-<your fourth axis letter >-plus*  _(bit IN)_
de: *gmoccapy.jog.jog-<Ihr Buchstabe der vierten Achse >-plus*  _(bit IN)_

note: type: Plain text
en: *gmoccapy.jog.jog-<your fourth axis letter >-minus* _(bit IN)_
de: *gmoccapy.jog.jog-<Ihr Buchstabe der vierten Achse >-minus* _(bit IN)_

note: type: Plain text
en: The jog velocity can be selected with the corresponding slider. The scale of the slider will be modified if the turtle button (the one showing a rabbit or a turtle) has been toggled. If the button is not visible, it might have been disabled on the <<gmoccapy:turtle-jog,settings page>>. If the button shows the rabbit-icon, the scale is from min to max machine velocity. If it shows the turtle, the scale will reach only 1/20 of max velocity by default. The used divider can be set on the <<gmoccapy:turtle-jog,settings page>>.
de: Die Tippgeschwindigkeit kann mit dem entsprechenden Schieberegler ausgewählt werden. Die Skala des Schiebereglers wird geändert, wenn der Schildkrötenknopf (derjenige, der einen Hasen oder eine Schildkröte zeigt) umgeschaltet wurde. Wenn die Schaltfläche nicht sichtbar ist, wurde sie möglicherweise auf der Seite <<gmoccapy:turtle-jog,Einstellungen>> deaktiviert. Wenn die Schaltfläche das Kaninchen-Symbol zeigt, ist die Skala von der minimalen bis zur maximalen Geschwindigkeit der Maschine. Zeigt sie die Schildkröte, erreicht die Skala standardmäßig nur 1/20 der maximalen Geschwindigkeit. Der verwendete Teiler kann auf der <<gmoccapy:turtle-jog,Einstellungsseite>> eingestellt werden.

note: type: Plain text
en: So using a touch screen it is much easier to select smaller velocities.
de: Mit einem Touchscreen ist es also viel einfacher, kleinere Geschwindigkeiten auszuwählen.

note: type: Plain text
en: GMOCCAPY offers this HAL pin to toggle between turtle and rabbit jogging:
de: GMOCCAPY bietet diesen HAL-Pin an, um zwischen Hasen- und Igel-Joggen zu wechseln:

note: type: Title ===
en: Jog Increment HAL Pins
de: Jog Increment HALPins

note: type: Plain text
en: The jog increments given in thhe INI file like
de: Die in der INI-Datei angegebenen Jog-Inkremente wie

note: type: Plain text
en: If you have 6 increments in your INI file like in the example above, you will get *7* pins:
de: Wenn Sie 6 Inkremente in Ihrer INI-Datei haben, wie im obigen Beispiel, erhalten Sie *7* Pins:

note: type: Plain text
en: *gmoccapy.jog.jog-inc-0* _(bit IN)_ - This one is fixed and will represent continuous jogging.
de: *gmoccapy.jog.jog-inc-0* _(bit IN)_ - Dieser Wert ist fest und steht für kontinuierliches Joggen.

note: type: Plain text
en: *gmoccapy.jog.jog-inc-1* _(bit IN)_ - First increment given in the INI file.
de: *gmoccapy.jog.jog-inc-1* _(bit IN)_ - Erste in der INI-Datei angegebene Schrittweite.

note: type: Plain text
en: GMOCCAPY offers also a HAL pin to output the selected jog increment:
de: GMOCCAPY bietet auch einen HAL-Pin zur Ausgabe der gewählten Jog-Schrittweite:

note: type: Title ===
en: Hardware Unlock Pin
de: Hardware-Entsperr-Pin

note: type: Plain text
en: To be able to use a key switch to unlock the settings page, the following pin is exported:
de: Um einen Schlüsselschalter zum Entsperren der Einstellungsseite verwenden zu können, wird der folgende Pin exportiert:

note: type: Plain text
en: *gmoccapy.unlock-settings* _(bit IN)_ - The settings page is unlocked if the pin is high.
    To use this pin, you need to activate it on the settings page.
de: *gmoccapy.unlock-settings* _(bit IN)_ - Die Einstellungsseite wird entsperrt, wenn der Pin high ist.
    Um diesen Pin zu verwenden, müssen Sie ihn auf der Einstellungsseite aktivieren.

note: type: Title ===
en: Error/Warning Pins
de: Fehler/Warnung Pins

note: type: Plain text
en: *gmoccapy.error* _(bit OUT)_ - Indicates an error, so a light can lit or even the machine may
    be stopped. It will be reset with the pin `gmoccapy.delete-message`.
de: *gmoccapy.error* _(bit OUT)_ - Zeigt einen Fehler an, so dass eine Lampe aufleuchten kann oder sogar die Maschine
    angehalten werden. Es wird mit dem Pin `gmoccapy.delete-message` zurückgesetzt.

note: type: Plain text
en: *gmoccapy.delete-message* _(bit IN)_ - Will delete the first error and reset the `gmoccapy.error` pin to false after the last error has been cleared.
de: *gmoccapy.delete-message* _(bit IN)_ - Löscht den ersten Fehler und setzt den Pin `gmoccapy.error` auf false, nachdem der letzte Fehler gelöscht wurde.

note: type: Plain text
en: *gmoccapy.warning-confirm* _(bit IN)_ - Confirms warning dialog like click on OK
de: *gmoccapy.warning-confirm* _(bit IN)_ - Bestätigt den Warnungsdialog mit Klick auf OK

note: type: Title ===
en: User Created Message HAL Pins
de: Vom Benutzer erstellte HAL-Pins für Nachrichten

note: type: Plain text
en: *gmoccapy.messages.status* _(bit IN)_ - Triggers the dialog.
de: *gmoccapy.messages.status* _(bit IN)_ - Löst den Dialog aus.

note: type: Plain text
en: *gmoccapy.messages.okdialog* _(bit IN)_ - Triggers the dialog.
de: *gmoccapy.messages.okdialog* _(bit IN)_ - Löst den Dialog aus.

note: type: Plain text
en: *gmoccapy.messages.okdialog-waiting* _(bit OUT)_ - Will be '1' as long as the dialog is open. Closing the message will reset the this pin.
de: *gmoccapy.messages.okdialog-waiting* _(bit OUT)_ - Wird '1' sein, solange der Dialog geöffnet ist. Beim Schließen der Nachricht wird dieser Pin zurückgesetzt.

note: type: Plain text
en: *gmoccapy.messages.yesnodialog* _(bit IN)_ - Triggers the dialog.
de: *gmoccapy.messages.yesnodialog* _(bit IN)_ - Löst den Dialog aus.

note: type: Plain text
en: *gmoccapy.messages.yesnodialog-waiting* _(bit OUT)_ - Will be '1' as long as the dialog is open. Closing the message will reset the this pin.
de: *gmoccapy.messages.yesnodialog-waiting* _(bit OUT)_ - Wird '1' sein, solange der Dialog geöffnet ist. Beim Schließen der Nachricht wird dieser Pin zurückgesetzt.

note: type: Plain text
en: To add a user created message you need to add the message to the INI file in the DISPLAY section. See <<sub:gmocccapy-configuration-user-messages,Configuration of User Created Messages>>.
de: Um eine vom Benutzer erstellte Nachricht hinzuzufügen, müssen Sie die Nachricht zur INI-Datei im Abschnitt DISPLAY hinzufügen. Siehe <<sub:gmocccapy-configuration-user-messages,Konfiguration von benutzererstellten Nachrichten>>.

note: type: Block title
en: User Message Example (INI file)
de: Beispiel für eine Benutzermeldung (INI-Datei)

note: type: Plain text
en: To connect these new pins you need to do this in the postgui HAL file.  Here are some example connections which connect the message signals to some place else in the HAL file.
de: Um diese neuen Pins zu verbinden, müssen Sie dies in der postgui-HAL-Datei tun.  Hier sind einige Beispielverbindungen zum Verbinden der Nachrichtensignale mit anderen Stellen in der HAL-Datei.

note: type: Block title
en: Example Connection of User Messages (HAL file)
de: Beispiel für den Anschluss von Benutzernachrichten (HAL-Datei)

note: type: Plain text
en: For more information about HAL files and the net command see the <<cha:basic-hal-reference,HAL Basics>>.
de: Für weitere Informationen über HAL-Dateien und den net-Befehl siehe <<cha:basic-hal-reference,HAL Basics>>.

note: type: Title ===
en: Spindle Feedback Pins
de: Spindel-Feedback-Pins

note: type: Plain text
en: There are two pins for spindle feedback:
de: Es gibt zwei Pins für das Spindelfeedback:

note: type: Plain text
en: *gmoccapy.spindle_feedback_bar* _(float IN)_ - Pin to show the spindle speed on the spindle bar.
de: *gmoccapy.spindle_feedback_bar* _(float IN)_ - Pin zur Anzeige der Spindeldrehzahl auf der Spindelleiste.

note: type: Plain text
en: *gmoccapy.spindle_at_speed_led* _(bit IN)_ - Pin to lit the is-at-speed-led.
de: *gmoccapy.spindle_at_speed_led* _(bit IN)_ - Pin zum Beleuchten der is-at-speed-led.

note: type: Title ===
en: Pins To Indicate Program Progress Information
de: Pins zur Anzeige von Programmfortschrittsinformationen

note: type: Plain text
en: *gmoccapy.program.length* _(s32 OUT)_ - Shows the total number of lines of the program
de: *gmoccapy.program.length* _(s32 OUT)_ - Zeigt die Gesamtzahl der Zeilen des Programms an

note: type: Plain text
en: *gmoccapy.program.current-line* _(s32 OUT)_ - Indicates the current working line of the program
de: *gmoccapy.program.current-line* _(s32 OUT)_ - Gibt die aktuelle Arbeitszeile des Programms an

note: type: Plain text
en: *gmoccapy.program.progress* _(float OUT)_ - Gives the program progress in percentage
de: *gmoccapy.program.progress* _(float OUT)_ - Gibt den Programmfortschritt in Prozent an

note: type: Title ===
en: Tool related pins
de: Werkzeugbezogene Pins

note: type: Block title
en: Tool Change Pins
de: Werkzeugwechsel-Pins

note: type: Plain text
en: These pins are provided to use GMOCCAPY's internal tool change dialog, similar to the one known from AXIS, but with several modifications. So you will not only get the message to change to 'tool number 3', but also the description of that tool like '7.5 mm 3 flute cutter'. The information is taken from the tool table, so it is up to you what to display.
de: Diese Pins werden bereitgestellt, um den GMOCCAPY-internen Werkzeugwechsel-Dialog zu verwenden, der dem von AXIS bekannten Dialog ähnelt, jedoch mit einigen Änderungen. So erhalten Sie nicht nur die Meldung, dass Sie zu 'Werkzeug Nummer 3' wechseln sollen, sondern auch die Beschreibung dieses Werkzeugs wie '7,5 mm 3-Nuten-Fräser'. Die Informationen werden aus der Werkzeugtabelle entnommen, es liegt also an Ihnen, was angezeigt wird.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Manual tool change
de: Manueller Werkzeugwechsel

note: type: Plain text
en: *gmoccapy.toolchange-number*  _(s32 IN)_ - The number of the tool to be changed
de: *gmoccapy.toolchange-number* _(s32 IN)_ - Die Nummer des zu wechselnden Werkzeugs

note: type: Plain text
en: *gmoccapy.toolchange-change*  _(bit IN)_ - Indicates that a tool has to be changed
de: *gmoccapy.toolchange-change* _(bit IN)_ - Zeigt an, dass ein Werkzeug gewechselt werden muss

note: type: Plain text
en: *gmoccapy.toolchange-changed* _(bit OUT)_ - Indicates tool has been changed
de: *gmoccapy.toolchange-changed* _(bit OUT)_ - Zeigt an, dass das Werkzeug gewechselt wurde

note: type: Plain text
en: *gmoccapy.toolchange-confirm* _(bit IN)_ - Confirms tool change
de: *gmoccapy.toolchange-confirm* _(bit IN)_ - Bestätigt den Werkzeugwechsel

note: type: Plain text
en: Usually they are connected like this for a manual tool change:
de: Normalerweise werden sie für einen manuellen Werkzeugwechsel so angeschlossen:

note: type: Plain text
en: Please take care, that this connections have to be done in the postgui HAL file.
de: Bitte beachten Sie, dass diese Verbindungen in der postgui HAL Datei vorgenommen werden müssen.

note: type: Block title
en: Tool Offset Pins
de: Werkzeug-Offset Pins

note: type: Plain text
en: These pins allow you to show the active tool offset values for X and Z in the tool information frame. You should know that they are only active after G43 has been sent.
de: Mit diesen Pins können Sie die aktiven Werkzeugversatzwerte für X und Z im Werkzeuginformationsrahmen anzeigen. Sie sollten wissen, dass sie erst aktiv sind, nachdem G43 gesendet wurde.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Tool information
de: Werkzeuginformationen

note: type: Plain text
en: The tooloffset-x line is not needed on a mill, and will not be displayed on a mill with trivial kinematics.
de: Die Zeile "tooloffset-x" wird bei einer Fräsmaschine nicht benötigt und wird bei einer Fräsmaschine mit trivialer Kinematik nicht angezeigt.

note: type: Plain text
en: To display the current offsets, the pins have to be connected like this in the postgui HAL file:
de: Um die aktuellen Offsets anzuzeigen, müssen die Pins in der postgui-HAL-Datei wie folgt verbunden werden:

note: type: Plain text
en: Please note, that GMOCCAPY takes care of its own to update the offsets, sending an G43 after any tool change, *but not in auto mode!*
    So writing a program makes you responsible to include an G43 after each tool change!
de: Bitte beachten Sie, dass GMOCCAPY selbst dafür sorgt, die Offsets zu aktualisieren, indem es nach jedem Werkzeugwechsel ein G43 sendet, *aber nicht im Auto-Modus!*
    Wenn Sie also ein Programm schreiben, sind Sie dafür verantwortlich, nach jedem Werkzeugwechsel ein G43 zu senden!

note: type: Title ==
en: Auto Tool Measurement
de: Automatische Werkzeugmessung

note: type: Plain text
en: GMOCCAPY offers an integrated auto tool measurement. To use this feature, you will need to do some additional settings and you may want to use the offered HAL pin to get values in your own NGC remap procedure.
de: GMOCCAPY bietet eine integrierte automatische Werkzeugmessung. Um diese Funktion zu nutzen, müssen Sie einige zusätzliche Einstellungen vornehmen und vielleicht möchten Sie den angebotenen HAL-Pin verwenden, um Werte in Ihrem eigenen NGC-Remap-Verfahren zu erhalten.

note: type: Plain text
en: Before starting the first test, do not forget to enter the probe height and probe velocities on the settings page! See <<gmoccapy:tool-measurement,Settings Page Tool Measurement>>
de: Vergessen Sie nicht, vor dem ersten Test die Tasterhöhe und die Tastergeschwindigkeiten auf der Einstellungsseite einzugeben! Siehe <<gmoccapy:tool-measurement,Einstellungsseite Werkzeugmessung>>

note: type: Plain text
en: It might be also a good idea to take a look at the tool measurement video: see <<gmoccapy:tool-measurement-videos,tool measurement related videos>>.
de: Es könnte auch eine gute Idee sein, einen Blick auf das Video zur Werkzeugvermessung zu werfen: siehe <<gmoccapy:tool-measurement-videos,Videos zur Werkzeugvermessung>>.

note: type: Plain text
en: Measure the height of your block from the base where your tool switch is located, to the upper face of the block (including chuck etc.).
de: Messen Sie die Höhe Ihres Blocks von der Basis, an der sich Ihr Werkzeugschalter befindet, bis zur Oberseite des Blocks (einschließlich Spannfutter usw.).

note: type: Plain text
en: Push the button block height and enter the measured value.
de: Drücken Sie die Taste Blockhöhe und geben Sie den Messwert ein.

note: type: Plain text
en: Go to auto mode and start your program.
de: Gehen Sie in den Automatikmodus und starten Sie Ihr Programm.

note: type: Plain text
en: Here is a small sketch:
de: Hier ist eine kleine Skizze:

note: type: Block title
en: Tool measurement data
de: Werkzeugmessung Daten

note: type: Plain text
en: With the first given tool change the tool will be measured and the offset will be set automatically to fit the block height. The advantage of the GMOCCAPY way is, that you do not need a reference tool.
de: Beim ersten vorgegebenen Werkzeugwechsel wird das Werkzeug vermessen und der Versatz automatisch auf die Blockhöhe eingestellt. Der Vorteil der GMOCCAPY Methode ist, dass Sie kein Referenzwerkzeug benötigen.

note: type: delimited block =
en: Your program must contain a tool change at the beginning! The tool will be measured, even it has been used before, so there is no danger, if the block height has changed. There are several videos showing the way to do that on YouTube.
de: Ihr Programm muss am Anfang einen Werkzeugwechsel enthalten! Das Werkzeug wird vermessen, auch wenn es schon vorher benutzt wurde, so dass keine Gefahr besteht, wenn sich die Blockhöhe geändert hat. Es gibt mehrere Videos auf YouTube, die zeigen, wie man das macht.

note: type: Title ===
en: Tool Measurement Pins
de: Werkzeugmess-Pins

note: type: Plain text
en: *gmoccapy.toolmeasurement* _(bit OUT)_ - Enable or not tool measurement
de: *gmoccapy.toolmeasurement* _(bit OUT)_ - Werkzeugmessung einschalten oder nicht

note: type: Plain text
en: *gmoccapy.blockheight* _(float OUT)_ - The measured value of the top face of the workpiece
de: *gmoccapy.blockheight* _(float OUT)_ - Der gemessene Wert der oberen Fläche des Werkstücks

note: type: Plain text
en: *gmoccapy.probeheight* _(floiat OUT)_ - The probe switch height
de: *gmoccapy.probeheight* _(float OUT)_ - Die Höhe des Sondenschalters

note: type: Plain text
en: *gmoccapy.searchvel* _(float OUT)_ - The velocity to search for the tool probe switch
de: *gmoccapy.searchvel* _(float OUT)_ - Die Geschwindigkeit, mit der nach dem Schalter des Werkzeugmesstasters gesucht wird

note: type: Plain text
en: *gmoccapy.probevel* _(float OUT)_ - The velocity to probe tool length
de: *gmoccapy.probevel* _(float OUT)_ - Die Geschwindigkeit zum Antasten der Werkzeuglänge

note: type: Title ===
en: Tool Measurement INI File Modifications
de: Änderungen an der INI-Datei für Werkzeugmessungen

note: type: Plain text
en: Modify your INI file to include the following sections.
de: Ändern Sie Ihre INI-Datei so, dass sie die folgenden Abschnitte enthält.

note: type: Block title
en: The RS274NGC Section
de: Der RS274NGC-Abschnitt

note: type: delimited block -
en: [RS274NGC]
    # is the sub, with is called when a error during tool change happens, not needed on every machine configuration
    ON_ABORT_COMMAND=O <on_abort> call
de: [RS274NGC]
    # Unterfunktion wird aufgerufen, wenn ein Fehler beim Werkzeugwechsel auftritt, wird nicht bei jeder Maschinenkonfiguration benötigt
    ON_ABORT_COMMAND=O <on_abort> call

note: type: Plain text
en: Make sure INI_VARS and HAL_PIN_VARS are not set to 0. They are set to 1 by default.
de: Stellen Sie sicher, dass INI_VARS und HAL_PIN_VARS nicht auf 0 gesetzt sind, sondern standardmäßig auf 1.

note: type: Title ====
en: The Tool Sensor Section
de: Der Abschnitt Werkzeugsensor (engl. tool sensor)

note: type: Title ====
en: The Change Position Section
de: Der Abschnitt "Position ändern"

note: type: Plain text
en: This is not named TOOL_CHANGE_POSITION on purpose - *canon uses that name and will interfere otherwise.* The position to move the machine before giving the change tool command. All values are in absolute coordinates.
de: Die Position wird nicht absichtlich TOOL_CHANGE_POSITION genannt - *canon verwendet diesen Namen und stört sonst.* Die Position, an welche die Maschine bewegt werden soll, bevor der Befehl zum Werkzeugwechsel gegeben wird. Alle Werte sind in absoluten Koordinaten.

note: type: Title ====
en: The Python Section
de: Die Python-Sektion

note: type: Plain text
en: The Python plug ins serves interpreter and task.
de: Das Python-Plug-in dient als Interpreter und Task.

note: type: Title ===
en: Needed Files
de: Benötigte Dateien

note: type: Plain text
en: First make a directory "python" in your config folder.  From `<your_linuxcnc-dev_directory>/configs/sim/gmoccapy/python` copy the following files into the just created `config_dir/python` folder:
de: Erstellen Sie zunächst ein Verzeichnis "python" in Ihrem Konfigurationsverzeichnis.  Kopieren Sie von `<Ihr_linuxcnc-dev_verzeichnis>/configs/sim/gmoccapy/python` die folgenden Dateien in den gerade erstellten Ordner `config_dir/python`:

note: type: Plain text
en: From `<your_linuxcnc-dev_directory>/configs/sim/gmoccapy/macros` copy
de: Von `<Ihr_linuxcnc-dev_Verzeichnis>/configs/sim/gmoccapy/macros` kopieren

note: type: Plain text
en: You may want to modify this file to fit more your needs.
de: Möglicherweise möchten Sie diese Datei an Ihre Bedürfnisse anpassen.

note: type: Title ===
en: Needed HAL Connections
de: Benötigte HAL-Verbindungen

note: type: Plain text
en: Connect the tool probe in your HAL file like so:
de: Schließen Sie die Werkzeugsonde in Ihrer HAL-Datei wie folgt an:

note: type: delimited block -
en: net probe  motion.probe-input <= <your_input_pin>
de: net probe motion.probe-input <= <Ihr_input_pin>

note: type: Plain text
en: The line might look like this:
de: Die Zeile könnte so aussehen:

note: type: delimited block -
en: # The next lines are only needed if the pins had been connected before
    unlinkp iocontrol.0.tool-change
    unlinkp iocontrol.0.tool-changed
    unlinkp iocontrol.0.tool-prep-number
    unlinkp iocontrol.0.tool-prepared
de: # Die nächsten Zeilen werden nur benötigt, wenn die Pins vorher angeschlossen waren.
    unlinkp iocontrol.0.tool-change
    unlinkp iocontrol.0.werkzeug-gewechselt
    unlinkp iocontrol.0.werkzeug-vorbereitung-nummer
    unlinkp iocontrol.0.werkzeug-vorbereitet

note: type: delimited block -
en: # link to GMOCCAPY toolchange, so you get the advantage of tool description on change dialog
    net tool-change gmoccapy.toolchange-change <= iocontrol.0.tool-change
    net tool-changed gmoccapy.toolchange-changed <= iocontrol.0.tool-changed
    net tool-prep-number gmoccapy.toolchange-number <= iocontrol.0.tool-prep-number
    net tool-prep-loop iocontrol.0.tool-prepare <= iocontrol.0.tool-prepared
de: # Verknüpfung mit GMOCCAPY toolchange, damit Sie den Vorteil der Werkzeugbeschreibung im Änderungsdialog nutzen können
    net tool-change gmoccapy.toolchange-change <= iocontrol.0.tool-change
    net tool-changed gmoccapy.toolchange-changed <= iocontrol.0.tool-changed
    net tool-prep-number gmoccapy.toolchange-number <= iocontrol.0.tool-prep-number
    net tool-prep-loop iocontrol.0.tool-prepare <= iocontrol.0.tool-prepared

note: type: Title ==
en: The Settings Page
de: Die Einstellungsseite

note: type: Plain text
en: The page is separated in three main tabs:
de: Die Seite ist in drei Hauptregisterkarten unterteilt:

note: type: Title ===
en: Appearance
de: Erscheinungsbild

note: type: Block title
en: GMOCCAPY settings page Appearance
de: GMOCCAPY Einstellungsseite Erscheinungsbild

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Configuration page
de: Konfigurationsseite

note: type: Plain text
en: On this tab you will find the following options:
de: Auf dieser Registerkarte finden Sie die folgenden Optionen:

note: type: Block title
en: Main Window
de: Hauptfenster

note: type: Plain text
en: Here you can select how you wish the GUI to start. The main reason for this was the wish to get an easy way for the user to set the starting options without the need to touch code.  You have three options:
de: Hier können Sie auswählen, wie die grafische Benutzeroberfläche gestartet werden soll. Der Hauptgrund dafür war der Wunsch, eine einfache Möglichkeit für den Benutzer zu schaffen, die Startoptionen einzustellen, ohne dass er den Code berühren muss.  Sie haben drei Optionen:

note: type: Plain text
en: _Start as window_ - If you select start as window the spinboxes to set the position and size will get active.  One time set, the GUI will start every time on the place and with the size selected.  Nevertheless the user can change the size and position using the mouse, but that will not have any influence on the settings.
de: _Start als Fenster_ - Wenn Sie "Start als Fenster" wählen, werden die Spinboxen zum Einstellen der Position und Größe aktiv.  Einmal eingestellt, startet die GUI jedes Mal an der gewählten Stelle und mit der gewählten Größe.  Dennoch kann der Benutzer die Größe und Position mit der Maus verändern, was aber keinen Einfluss auf die Einstellungen hat.

note: type: Block title
en: Keyboard
de: Tastatur

note: type: Plain text
en: Default are :
de: Standard sind:

note: type: Plain text
en: The letters "de" are for German, you will have to set them according to your locale settings. Just execute this file before starting LinuxCNC, it can be done also adding a starter to your local folder.
de: Die Buchstaben "de" sind für Deutsch, Sie müssen sie entsprechend Ihrer Locale-Einstellungen setzen. Führen Sie einfach diese Datei vor dem Start von LinuxCNC, kann es auch das Hinzufügen eines Starters zu Ihrem lokalen Ordner getan werden.

note: type: Plain text
en: So that the layout is set automatically on starting.
de: Damit das Layout beim Start automatisch eingestellt wird.

note: type: Plain text
en: For matchbox-keyboard you will have to make your own layout, for a German layout ask in the forum.
de: Für matchbox-keyboard müssen Sie Ihr eigenes Layout erstellen, für ein deutsches Layout fragen Sie im Forum.

note: type: Block title
en: Gmoccapy with Onboard keyboard in edit mode
de: GMOCCAPY mit Onboard-Tastatur im Bearbeitungsmodus

note: type: Plain text
en: This gives the option whether to show the preview tab or the offset page tab when
     you enter the touch off mode by clicking the corresponding bottom button.
de: Hier können Sie wählen, ob die Registerkarte "Vorschau" oder die Registerkarte "Offset-Seite" angezeigt werden soll, wenn Sie
     wenn Sie durch Klicken auf die entsprechende untere Schaltfläche in den Touch-off-Modus wechseln.

note: type: Block title
en: DRO Options
de: DRO-Optionen

note: type: Plain text
en: You have the option to select the background colors of the different DRO states.  So users suffering from protanopia (red/green weakness) are able to select proper colors.
de: Sie haben die Möglichkeit, die Hintergrundfarben für die verschiedenen DRO-Zustände auszuwählen.  So können Benutzer, die an Protanopie (Rot/Grün-Schwäche) leiden, die richtigen Farben auswählen.

note: type: Plain text
en: Relative mode = black
de: Relativer Modus = schwarz

note: type: Plain text
en: Absolute mode = blue
de: Absoluter Modus = blau

note: type: Plain text
en: Distance to go = yellow
de: Verbleibende Entfernung = gelb

note: type: Plain text
en: The foreground color of the DRO can be selected with:
de: Die Vordergrundfarbe der DRO kann ausgewählt werden mit:

note: type: Plain text
en: You can change through the DRO modes (absolute, relative, distance to go) by clicking the number on the DRO! If you click on the left side letter of the DRO a popup window will allow you to set the value of the axes, making it easier to set the value, as you will not need to go over the touch off bottom button.
de: Sie können durch die DRO-Modi (absolut, relativ, Entfernung zu gehen) wechseln, indem Sie auf die Zahl auf dem DRO klicken! Wenn Sie auf den linken Seitenbuchstaben des DRO klicken, können Sie in einem Popup-Fenster den Wert der Achsen festlegen, was das Einstellen des Werts erleichtert, da Sie nicht über die untere Touch-Off-Taste gehen müssen.

note: type: Plain text
en: Allows to set the size of the DRO font, default is 28, if you use a bigger screen you may want to increase the size up to 56.  If you do use 4 axes, the DRO font size will be 3/4 of the value, because of space reason.
de: Ermöglicht die Einstellung der Größe der DRO-Schrift, Standard ist 28, wenn Sie einen größeren Bildschirm verwenden, können Sie die Größe auf 56 erhöhen.  Wenn Sie 4 Achsen verwenden, wird die DRO-Schriftgröße aus Platzgründen 3/4 des Wertes betragen.

note: type: Labeled list
en: digits
de: digits (engl. für Ziffern)

note: type: Plain text
en: Sets the number of digits of the DRO from 1 to 5.
de: Stellt die Anzahl der Ziffern der Positionsanzeige von 1 bis 5 ein.

note: type: delimited block =
en: Imperial will show one digit more that metric.  So if you are in imperial machine units and set the digit value to 1, you will get no digit at all in metric.
de: Imperiale Einheiten zeigen eine Ziffer mehr an als metrische.  Wenn Sie also imperiale Maschineneinheiten verwenden und den Ziffernwert auf 1 setzen, erhalten Sie im metrischen System überhaupt keine Ziffer.

note: type: Labeled list
en: toggle DRO mode
de: DRO-Modus umschalten

note: type: Plain text
en: If not active, a mouse click on the DRO will not take any action.
    By default this checkbox is active, so every click on any DRO will toggle the DRO readout from actual to relative to DTG (distance to go).
    Neverthereless a click on the axis letter will open the popup dialog to set the axis value.
de: Wenn diese Option nicht aktiviert ist, führt ein Mausklick auf die Anzeige zu keiner Aktion. +
    Standardmäßig ist dieses Kontrollkästchen aktiviert, so dass jeder Klick auf eine Anzeige die Anzeige von aktuell auf relativ zu DTG (distance to go) umschaltet. +
    Nichtsdestotrotz öffnet ein Klick auf den Achsenbuchstaben den Popup-Dialog zum Einstellen des Achsenwertes.

note: type: Table
en: Preview
de: Vorschau

note: type: Plain text
en: The grid will not be shown in perspective view.
de: Das Gitter wird in der perspektivischen Ansicht nicht angezeigt.

note: type: Plain text
en: _Show DRO_ - Will show the a DRO also in the preview pane, it will be always shown in fullsize preview.
de: _Show DRO_ - Zeigt die DRO auch im Vorschaufenster an, sie wird immer in der Vollbildvorschau angezeigt.

note: type: Plain text
en: left rotate, middle move, right zoom
de: Links drehen, Mitte verschieben, rechts zoomen

note: type: Plain text
en: left zoom, middle move, right rotate
de: Links zoomen, Mitte verschieben, rechts rotieren

note: type: Plain text
en: left move, middle rotate, right zoom
de: links bewegen, mitte drehen, rechts zoomen

note: type: Plain text
en: left zoom, middle rotate, right move
de: Links zoomen, Mitte drehen, rechts bewegen

note: type: Plain text
en: left move, middle zoom, right rotate
de: Links verschieben, Mitte zoomen, rechts rotieren

note: type: Plain text
en: left rotate, middle zoom, right move
de: Links drehen, Mitte zoomen, rechts bewegen

note: type: Plain text
en: Default is left move, middle zoom, right rotate.
de: Die Standardeinstellung ist links verschieben, Mitte zoomen, rechts drehen.

note: type: Plain text
en: The mouse wheel will still zoom the preview in every mode.
de: Mit dem Mausrad können Sie die Vorschau in jedem Modus vergrößern.

note: type: delimited block =
en: If you select an element in the preview, the selected element will be taken as rotation center point and in auto mode the corresponding code line will be highlighted.
de: Wenn Sie ein Element in der Vorschau auswählen, wird das ausgewählte Element als Rotationsmittelpunkt genommen und im Automodus wird die entsprechende Codezeile hervorgehoben.

note: type: Block title
en: File to load on start up
de: Beim Starten zu ladende Datei

note: type: Block title
en: Jump to dir
de: Zum Verzeichnis springen

note: type: Plain text
en: You can set here the directory to jump to if you press the corresponding button in the file selection dialog.
de: Sie können hier das Verzeichnis einstellen, in das gesprungen werden soll, wenn Sie im Dateiauswahldialog auf die entsprechende Schaltfläche klicken.

note: image::images/gmoccapy_file_selection_dialog_with_keyboard.png["Directory selection",align="left"] type: Block title
en: Themes and Sounds
de: Themen und Klänge

note: type: Plain text
en: This lets the user select what desktop theme to apply and what error and messages sounds should be played.  By default "Follow System Theme" is set.
de: Hier kann der Benutzer auswählen, welches Desktop-Thema angewendet werden soll und welche Fehler- und Meldungstöne abgespielt werden sollen.  Standardmäßig ist "Systemthema folgen" eingestellt.

note: type: Plain text
en: It further allows to change the icon theme.  Currently there are three themes available:
de: Es ermöglicht weiterhin, das Symbolthema zu ändern.  Derzeit stehen drei Themen zur Verfügung:

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Hardware settings
de: Hardware-Einstellungen

note: type: Plain text
en: By default all scales are set using the calculation:
de: Standardmäßig werden alle Skalen anhand der Berechnung festgelegt:

note: type: Block title
en: Keyboard shortcuts
de: Tastatürkürzel

note: type: Plain text
en: Some users want to jog there machine using the keyboard buttons and there are others that will never allow this. So everybody can select whether to use them or not.
    Keyboard shortcuts are disabled by default.
de: Einige Benutzer möchten ihre Maschine mit den Tasten der Tastatur steuern, andere werden dies niemals zulassen. Jeder kann also wählen, ob er sie verwenden möchte oder nicht.
    Tastaturkürzel sind standardmäßig deaktiviert.

note: type: Plain text
en: It is not recommended to use keyboard jogging, as it represents a serious risk for operator and machine.
de: Es wird nicht empfohlen, Tastatur-Jogging zu verwenden, da dies ein ernsthaftes Risiko für Bediener und Maschine darstellt.

note: type: Labeled list
en: In Manual Mode
de: Im manuellen Modus

note: type: Labeled list
en: In Auto Mode
de: Im Auto-Modus

note: type: Block title
en: Unlock options
de: Optionen freischalten

note: type: Plain text
en: There are three options to unlock the settings page:
de: Es gibt drei Optionen zum Entsperren der Einstellungsseite:

note: type: Plain text
en: _Spindle bar min_ and _Spindle bar max_ - Sets the limits of the spindle bar shown in the INFO frame on the main screen.
de: _Spindelstange min_ und _Spindelstange max_ - Legt die Grenzen der Spindelstange fest, die im INFO-Rahmen auf dem Hauptbildschirm angezeigt werden.

note: type: delimited block =
en: Default values are:
    MIN = 0
    MAX = 6000
de: Standardwerte sind
    MIN = 0
    MAX = 6000

note: type: Block title
en: Turtle Jog
de: Schildkröten Jog

note: type: Title ===
en: Advanced Settings
de: Erweiterte Einstellungen

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Advanced settings
de: Erweiterte Einstellungen

note: type: Block title
en: Tool Measurement
de: Werkzeugmessung

note: type: Plain text
en: Please check <<gmoccapy:auto-tool-measurement,Auto Tool Measurement>>
de: Bitte prüfen Sie <<gmoccapy:auto-tool-measurement,Auto Tool Measurement>>

note: type: Plain text
en: If this part is not sensitive, you do not have a valid INI file configuration to use tool measurement.
de: Wenn dieser Teil nicht empfindlich ist, haben Sie keine gültige INI-Datei-Konfiguration für die Verwendung der Werkzeugmessung.

note: type: Labeled list
en: Probe Information
de: Sonden-Informationen

note: type: Plain text
en: The following information is taken from your INI file and must be given in absolute coordinates.
de: Die folgenden Informationen werden aus Ihrer INI-Datei entnommen und müssen in absoluten Koordinaten angegeben werden.

note: type: Plain text
en: _X Pos._ - The X position of the tool switch.
de: _X Pos._ - Die X-Position des Werkzeugschalters.

note: type: Plain text
en: _Y Pos._ - The Y position of the tool switch.
de: _Y Pos._ - Die Y-Position des Werkzeugschalters.

note: type: Plain text
en: _Z Pos._ - The Z position of the tool switch, we will go as rapid move to this coordinate.
de: _Z Pos._ - Die Z-Position des Werkzeugschalters, wir fahren im Eilgang zu dieser Koordinate.

note: type: Labeled list
en: Probe velocities
de: Geschwindigkeiten der Sonde

note: type: Plain text
en: _Reload Tool on Start_ - Loads the last tool on start after homing.
de: _Reload Tool on Start_ - Lädt das letzte Werkzeug beim Start nach der Referenzfahrt.

note: type: Block title
en: Run From Line Option
de: Option "Von Zeile ausführen"

note: type: Plain text
en: You can allow or disallow the run from line. This will set the corresponding button insensitive (grayed out), so the user will not be able to use this option. The default is disable run from line.
de: Sie können die Ausführung aus der Zeile erlauben oder verbieten. Dadurch wird die entsprechende Schaltfläche unempfindlich (ausgegraut), so dass der Benutzer diese Option nicht verwenden kann. Die Standardeinstellung ist "Aus der Zeile ausführen" deaktivieren.

note: type: Block title
en: Message Behavior And Appearance
de: Nachrichtenverhalten und Erscheinungsbild

note: type: Plain text
en: You are able to set some options:
de: Sie haben die Möglichkeit, einige Optionen einzustellen:

note: type: Plain text
en: _Width_ - The width of the message box.
de: _Width_ - Die Breite des Meldungsfelds.

note: type: Title ==
en: Icon Theme
de: Icon Themen

note: type: Plain text
en: Icon themes are used to customize the look and feel of GMOCCAPY's icons.
de: Icon-Themen werden verwendet, um das Aussehen der Icons von GMOCCAPY anzupassen.

note: type: Plain text
en: GMOCCAPY ships with three different icon themes:
de: GMOCCAPY wird mit drei verschiedenen Symbolthemen geliefert:

note: type: Plain text
en: The icon theme used in GMOCCAPY is a regular GTK icon theme that follows the freedestktop icon theme specification.  Thus every valid GTK icon theme can be used as GMOCCAPY icon theme as long as it contains the required icons.
de: Das in GMOCCAPY verwendete Icon-Theme ist ein reguläres GTK Icon-Theme, das der Spezifikation des freedestktop Icon-Theme folgt.  Somit kann jedes gültige GTK-Icon-Theme als GMOCCAPY-Icon-Theme verwendet werden, solange es die erforderlichen Icons enthält.

note: type: Plain text
en: GMOCCAPY scans the following directories for icon themes:
de: GMOCCAPY durchsucht die folgenden Verzeichnisse nach Icon-Themes:

note: type: Title ===
en: Custom Icon Theme
de: Benutzerdefiniertes Symboldesign (eigentlich engl. icon theme)

note: type: Plain text
en: Start by creating an empty directory with the name of the icon theme. Place the directory in one of GMOCCAPY's icon theme directories.  Then we need a file called index.theme in the root folder of our icon theme which contains the required metadata for the theme.  That's a simple text file with at least the following sections:
de: Beginnen Sie damit, ein leeres Verzeichnis mit dem Namen des Icon-Theme zu erstellen. Legen Sie das Verzeichnis in eines der Icon-Theme-Verzeichnisse von GMOCCAPY.  Dann brauchen wir eine Datei namens index.theme im Stammverzeichnis unseres Icon-Themes mit den erforderlichen Metadaten für das Theme.  Das ist eine einfache Textdatei mit mindestens den folgenden Abschnitten:

note: type: delimited block -
en: [Icon Theme]
    Name=YOUR_THEME_NAME
    Comment=A DESCRIPTION OF YOUR THEME
    Inherits=hicolor
    Directories=16x16/actions,24x24/actions,32x32/actions,48x48/actions,scalable/actions
de:  [Icon Theme]
     Name=Ihr_Theme-Name
     Comment=Eine Beschreibung des Themes
     Inherits=hicolor
     Directories=16x16/actions,24x24/actions,32x32/actions,48x48/actions,scalable/actions

note: type: Plain text
en: Name: The name of your icon theme.
de: Name: Der Name Ihres Icon-Designs.

note: type: Plain text
en: Comment: A description of your icon theme.
de: Comment: Eine Beschreibung des Themas Ihres Symbols.

note: type: Plain text
en: Inherits: A icon theme can derive from another icon theme, the default is hicolor.
de: Inherits: Ein Icon-Thema kann von einem anderen Icon-Thema abgeleitet werden, der Standard ist hicolor.

note: type: Plain text
en: Directories: A comma separated list of all the directories of your icon theme.
    Each directory usually contains all the icons of the theme in a specific size, for example 16x16/actions should contain all icons with the category "actions" in the size 16x16 pixels as pixel-graphics (e.g. png files). A special case is the directory called "scalable/actions", this contains scalable icons not tied to a specific size (e.g. svg files).
    By supplying different sized versions of the icons, we can guarantee a nice looking icon if different sizes and we also have the ability to change the icon according to its size, for example a 64x64 px sized icon may contain more details than its 16x16 px version.
de: Verzeichnisse: Eine durch Kommata getrennte Liste aller Verzeichnisse Ihres Icon-Themas.
    Jedes Verzeichnis enthält in der Regel alle Icons des Themas in einer bestimmten Größe, z.B. 16x16/actions sollte alle Icons mit der Kategorie "actions" in der Größe 16x16 Pixel als Pixelgrafiken (z.B. png-Dateien) enthalten. Ein Sonderfall ist das Verzeichnis "scalable/actions", dieses enthält skalierbare Icons, die nicht an eine bestimmte Größe gebunden sind (z.B. svg-Dateien).
    Durch die Bereitstellung unterschiedlich großer Versionen der Icons können wir ein schön aussehendes Icon in verschiedenen Größen garantieren, und wir haben auch die Möglichkeit, das Icon entsprechend seiner Größe zu verändern, zum Beispiel kann ein 64x64 px großes Icon mehr Details enthalten als seine 16x16 px Version.

note: type: Plain text
en: For each directory we also have to write a section in the index.theme file:
de: Für jedes Verzeichnis müssen wir auch einen Abschnitt in die Datei index.theme schreiben:

note: type: delimited block -
en: [16x16/actions]
    Size=16
    Type=Fixed
    Context=Actions
de:  [16x16/actions]
     Size=16
     Type=Fixed
     Context=Actions

note: type: delimited block -
en: [scalable/actions]
    Size=48
    Type=Scalable
    Context=Actions
de:  [scalable/actions]
     Size=48
     Type=Scalable
     Context=Actions

note: type: Plain text
en: Size: Nominal icon size in this directory
de: SIze: Nominale Symbolgröße in diesem Verzeichnis

note: type: Plain text
en: Type: Fixed, Threshold or Scalable
de: Type: Fixed (engl. für festgelegt), Threshold (engl. für Schwellwert) or Scalable (engl. für skalierbar)

note: type: Plain text
en: Context: Intended "category" of icons
de: Context: Beabsichtigte "Kategorie" von Icons

note: type: Plain text
en: Basically that's everything needed to create a custom icon theme.
de: Das ist im Grunde alles, was man braucht, um ein eigenes Icon Theme zu erstellen.

note: type: Title ===
en: Symbolic Icons
de: Symbolische Icons

note: type: Plain text
en: Symbolic icons are a special type of icon, usually a monochrome image. The special feature of symbolic icons is that the icons are automatically colored at runtime to match the desktop theme.  That way, icon themes can be created that work well with dark and also light desktop themes (in fact, that's not always the best option, that's why a dedicated "material-light" theme exists).
de: Symbolische Symbole sind eine besondere Art von Symbolen, in der Regel ein einfarbiges Bild. Das Besondere an symbolischen Icons ist, dass die Icons zur Laufzeit automatisch eingefärbt werden, um dem Desktop-Thema zu entsprechen.  Auf diese Weise können Icon-Themen erstellt werden, die sowohl mit dunklen als auch mit hellen Desktop-Themen gut funktionieren (tatsächlich ist das nicht immer die beste Option, deshalb gibt es ein spezielles "Material-light"-Thema).

note: type: Plain text
en: To make use of the symbolic feature, a icon file has to have the suffix .symbolic.$ext (where $ext is the regular file extension like png) for example "power_on.symbolic.png".
de: Um die symbolische Funktion zu nutzen, muss eine Symboldatei die Endung .symbolic.$ext haben (wobei $ext die reguläre Dateierweiterung wie png ist), zum Beispiel "power_on.symbolic.png".

note: type: Plain text
en: With that name, GTK treats this image as symbolic icon and applies some recoloring when loading the icon.  There are only four colors allowed to use:
de: Mit diesem Namen behandelt GTK dieses Bild als symbolisches Icon und wendet beim Laden des Icons eine Umfärbung an.  Es gibt nur vier Farben, die verwendet werden dürfen:

note: type: Table
en: Color
de: Farbe

note: type: Table
en: Hex Code
de: Hexadezimale RGB-Anteile

note: type: Plain text
en: black
de: black (engl. für schwarz)

note: type: Table
en: Primary color, gets changed to match the desktop themes primary color.
de: Primäre Farbe, wird an die Primärfarbe des Desktop-Themas angepasst.

note: type: Table
en: red
de: red (engl. für rot)

note: type: Table
en: green
de: green (engl. für grün)

note: type: Table
en: blue
de: blue (engl. für blau)

note: type: Title ==
en: Lathe Specific Section
de: Drehmaschinen-spezifischer Abschnitt

note: type: Block title
en: Normal Lathe
de: Normale Drehmaschine

note: type: Plain text
en: Also the keyboard behavior will change:
de: Auch das Verhalten der Tastatur wird sich ändern:

note: type: Plain text
en: Normal Lathe:
de: Normale Drehmaschine:

note: type: Plain text
en: The tool information frame will show not only the Z offset, but also the X offset and the tool table is showing all lathe relevant information.
de: Der Werkzeuginformationsrahmen zeigt nicht nur die Z-Korrektur, sondern auch die X-Korrektur und die Werkzeugtabelle zeigt alle drehbankrelevanten Informationen an.

note: type: Title ==
en: Plasma Specific Section
de: Plasmaspezifischer Abschnitt

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Plasma GUI
de: Plasma-GUI

note: type: Plain text
en: There is a very good WIKI, which is actually growing, maintained by Marius see http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Gmoccapy_plasma[Plasma wiki page].
de: Es gibt ein sehr gutes WIKI, das von Marius gepflegt wird, siehe http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Gmoccapy_plasma[Plasma wiki page].

note: type: Title ==
en: Videos On YouTube
de: Videos auf YouTube

note: type: Title ===
en: Basic Usage
de: Grundlegende Verwendung

note: type: Title ===
en: Simulated Jog Wheels
de: Simulierte Jog-Wheels

note: type: Title ===
en: Settings Page
de: Einstellungen Seite

note: type: Title ===
en: Simulated Hardware Button
de: Simulierte Hardware-Taste

note: type: Title ===
en: User Tabs
de: Benutzer-Registerkarten

note: type: Title ===
en: Tool Measurement Videos
de: Videos zur Werkzeugvermessung

note: type: Title ==
en: Known problems
de: Bekannte Probleme

note: type: Title ===
en: Strange numbers in the info area
de: Seltsame Zahlen im Infobereich

note: type: Plain text
en: If you get strange numbers in the info area of GMOCCAPY like:
de: Wenn Sie im Infobereich von GMOCCAPY seltsame Zahlen erhalten wie:

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Strange numbers
de: Seltsame Zahlen

note: type: Plain text
en: You have made your config file using an older version of StepConfWizard.  It has made a wrong entry in the INI file under the [TRAJ] named MAX_LINEAR_VELOCITY = xxx. Change that entry to MAX_VELOCITY = xxx.
de: Sie haben Ihre Konfigurationsdatei mit einer älteren Version von StepConfWizard erstellt.  Diese hat in der INI-Datei unter [TRAJ] einen falschen Eintrag namens MAX_LINEAR_VELOCITY = xxx vorgenommen. Ändern Sie diesen Eintrag in MAX_VELOCITY = xxx.

note: type: Title ===
en: Not ending macro
de: Nicht endendes Makro

note: type: Plain text
en: If you use a macro without movement, like this one:
de: Wenn Sie ein Makro ohne Bewegung verwenden, wie dieses hier:

note: type: Plain text
en: GMOCCAPY will not see the end of the macro, because the interpreter needs to change its state to IDLE, but the macro does not even set the interpreter to a new state. To avoid that just add a G4 P0.1 line to get the needed signal.  The correct macro would be:
de: GMOCCAPY wird das Ende des Makros nicht sehen, weil der Interpreter seinen Zustand auf IDLE ändern muss, aber das Makro setzt den Interpreter nicht einmal in einen neuen Zustand. Um dies zu vermeiden, fügen Sie einfach eine G4 P0.1-Zeile hinzu, um das benötigte Signal zu erhalten.  Das korrekte Makro würde lauten:

note: type: Plain text
en: Gscreen is an infrastructure to display a custom screen to control LinuxCNC.  Gscreen borrows heavily from GladeVCP. GladeVCP uses the GTK widget editor GLADE to build virtual control panels (VCP) by point and click. Gscreen combines this with Python programming to create a GUI screen for running a CNC machine.
de: Gscreen ist eine Infrastruktur zur Anzeige eines benutzerdefinierten Bildschirms zur Steuerung von LinuxCNC.  Gscreen lehnt sich stark an GladeVCP an. GladeVCP verwendet den GTK-Widget-Editor GLADE, um virtuelle Bedienfelder (VCP) durch Zeigen und Klicken zu erstellen. Gscreen kombiniert dies mit Python-Programmierung, um einen GUI-Bildschirm für den Betrieb einer CNC-Maschine zu erstellen.

note: type: Plain text
en: Gscreen is customizable if you want different buttons and status LEDs. Gscreen supports GladeVCP which is used to add controls and indicators. To customize Gscreen you use the Glade editor. Gscreen is not restricted to adding a custom panel on the right or a custom tab it is fully editable.
de: Gscreen ist anpassbar, wenn Sie verschiedene Tasten und Status-LEDs wünschen. Gscreen unterstützt GladeVCP, das zum Hinzufügen von Steuerelementen und Anzeigen verwendet wird. Zum Anpassen von Gscreen verwenden Sie den Glade-Editor. Gscreen ist nicht auf das Hinzufügen eines benutzerdefinierten Panels auf der rechten Seite oder einer benutzerdefinierten Registerkarte beschränkt, sondern kann vollständig bearbeitet werden.

note: type: Block title
en: Gscreen Default Screen
de: Gscreen Standardbildschirm

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Gscreen Mill Based Screen
de: Gscreen Maske für Fräsmaschinen

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Gscreen Silverdragon Screen
de: Gscreen Silverdragon-Bildschirm

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Gscreen Spartan Screen
de: Gscreen Spartan-Bildschirm

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Gscreen Gaxis Screen
de: Gscreen Gaxis-Bildschirm

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Gscreen Industrial Screen
de: Gscreen Industrieller Bildschirm

note: type: Plain text
en: Gscreen is based on 'Glade' (the editor), 'PyGTK' (the widget toolkit), and 'GladeVCP' (LinuxCNC's connection to Glade and PyGTK). GladeVCP has some special widgets and actions added just for LinuxCNC A widget is just the generic name used for the buttons, sliders, labels etc of the PyGTK toolkit.
de: Gscreen basiert auf 'Glade' (dem Editor), 'PyGTK' (dem Widget-Toolkit) und 'GladeVCP' (die Verbindung von LinuxCNC zu Glade und PyGTK). GladeVCP hat einige spezielle Widgets und Aktionen, die nur für LinuxCNC hinzugefügt wurden. Ein Widget ist nur der allgemeine Name, der für die Buttons, Schieberegler, Beschriftungen usw. des PyGTK-Toolkits verwendet wird.

note: type: Title ===
en: Glade File
de: Glade-Datei

note: type: Plain text
en: A Glade file is a text file organized in the XML standard that describes the layout and the widgets of the screen. PyGTK uses this file to actually display and react to those widgets. The Glade editor makes it relatively easy to build and edit this file You must use the Glade 3.38.2 editor that uses the GTK3 widgets.
de: Eine Glade-Datei ist eine Textdatei, die im XML-Standard organisiert ist und das Layout und die Widgets des Bildschirms beschreibt. PyGTK verwendet diese Datei, um diese Widgets anzuzeigen und darauf zu reagieren. Der Glade-Editor macht es relativ einfach, diese Datei zu erstellen und zu bearbeiten. Sie müssen den Glade-Editor 3.38.2 verwenden, der die GTK3-Widgets verwendet.

note: type: Plain text
en: PyGTK is the Python binding to GTK. GTK is the 'toolkit' of visual widgets, it's programmed in C. PyGTK uses Python to 'bind' with GTK.
de: PyGTK ist die Python-Bindung an GTK. GTK ist das 'Toolkit' von visuellen Widgets, es ist in C programmiert. PyGTK verwendet Python, um sich mit GTK zu 'binden'.

note: type: Plain text
en: <<cha:glade-vcp,GladeVCP>> binds LinuxCNC, HAL, PyGTK and Glade all together.  LinuxCNC requires some special widgets so GladeVCP supplies them. Many are just HAL extensions to existing PyGTK widgets. GladeVCP creates the HAL pins for the special widgets described in the Glade file.  GladeVCP also allows one to add Python commands to interact with the widgets, to make them do things not available in their default form.  If you can build a GladeVCP panel you can customize Gscreen!
de: <<cha:glade-vcp,GladeVCP>> verbindet LinuxCNC, HAL, PyGTK und Glade miteinander.  LinuxCNC benötigt einige spezielle Widgets und GladeVCP liefert diese. Viele sind nur HAL-Erweiterungen zu bestehenden PyGTK-Widgets. GladeVCP erzeugt die HAL-Pins für die speziellen Widgets, die in der Glade-Datei beschrieben sind. GladeVCP erlaubt es auch, Python-Befehle hinzuzufügen, um mit den Widgets zu interagieren und sie Dinge tun zu lassen, die in ihrer Standardform nicht verfügbar sind. Wenn Sie ein GladeVCP-Panel bauen können, dann können Sie auch Gscreen anpassen!

note: type: Plain text
en: There are two files that can be used, individually or in combination to add customizations. Local Glade files and handler files. Normally Gscreen uses the stock Glade file and possibly a handler file (if using a sample 'skin').  You can specify Gscreen to use 'local' Glade and handler files. Gscreen looks in the folder that holds all the configuration files for the configuration you selected.
de: Es gibt zwei Dateien, die einzeln oder in Kombination verwendet werden können, um Anpassungen vorzunehmen. Lokale Glade-Dateien und Handler-Dateien. Normalerweise verwendet Gscreen die Standard-Gladedatei und möglicherweise eine Handler-Datei (bei Verwendung eines Beispiel-"Skins"). Sie können Gscreen so einstellen, dass es "lokale" Glade- und Handler-Dateien verwendet. Gscreen sucht in dem Ordner, der alle Konfigurationsdateien für die von Ihnen gewählte Konfiguration enthält.

note: type: Block title
en: Local Glade Files
de: Lokale Glade-Dateien

note: type: Plain text
en: If present, local Glade files in the configuration folder will be loaded instead of the stock Glade files. Local Glade files allow you to use your customized designs rather then the default screens. There is a switch in the INI file to set set the base name: -c name so Gscreen looks for MYNAME.glade and MYNAME_handler.py.
de: Wenn vorhanden, werden lokale Glade-Dateien im Konfigurationsordner anstelle der Standard-Gladedateien geladen. Lokale Glade-Dateien ermöglichen es Ihnen, Ihre eigenen Designs anstelle der Standardbildschirme zu verwenden. Es gibt einen Schalter in der INI-Datei, um den Basisnamen festzulegen: -c name, damit Gscreen nach MYNAME.glade und MYNAME_handler.py sucht.

note: type: Plain text
en: You can tell Gscreen to just load the Glade file and not connect it's internal signals to it. This allows gscreen to load any GTK builder saved Glade file This means you can display a completely custom screen, but also requires you to use a handler file. Gscreen uses the Glade file to define the widgets, so it can show and interact with them. Many of them have specific names, others have Glade given generic names. If the widget will be displayed but never changed then a generic name is fine. If one needs to control or interact with the widget then a hopefully purposeful name is given (all names must be unique). Widgets can also have signals defined for them in the GLADE editor. It defines what signal is given and what method to call.
de: Sie können Gscreen anweisen, nur die Glade-Datei zu laden und seine internen Signale nicht mit ihr zu verbinden. Dies erlaubt gscreen, jede vom GTK-Builder gespeicherte Glade-Datei zu laden. Das bedeutet, dass Sie einen komplett benutzerdefinierten Bildschirm anzeigen können, aber auch, dass Sie eine Handler-Datei verwenden müssen. Gscreen verwendet die Glade-Datei, um die Widgets zu definieren, damit es sie anzeigen und mit ihnen interagieren kann. Viele von ihnen haben spezifische Namen, anderen hat Glade generische Namen gegeben. Wenn das Widget angezeigt, aber nie verändert wird, ist ein allgemeiner Name in Ordnung. Wenn man das Widget steuern oder mit ihm interagieren muss, wird ein hoffentlich zweckmäßiger Name vergeben (alle Namen müssen eindeutig sein). Für Widgets können im GLADE-Editor auch Signale definiert werden. Hier wird festgelegt, welches Signal gegeben wird und welche Methode aufgerufen werden soll.

note: type: Block title
en: Modifying Stock Skins
de: Ändern von Standard-Skins

note: type: Plain text
en: If you change the name of a widget, Gscreen might not be able to find it. If this widget is referenced to from Python code, at best this makes the widget not work anymore at worst it will cause an error when loading Gscreen's default screens don't use many signals defined in the editor, it defines them in the Python code. If you move (cut and paste) a widget with signals, the signals will not be copied. You must add them again manually.
de: Wenn Sie den Namen eines Widgets ändern, kann es sein, dass Gscreen es nicht finden kann. Wenn auf dieses Widget im Python-Code verwiesen wird, funktioniert das Widget im besten Fall nicht mehr, im schlimmsten Fall führt es zu einem Fehler beim Laden. Die Standardbildschirme von Gscreen verwenden nicht viele Signale, die im Editor definiert sind, sondern im Python-Code. Wenn Sie ein Widget mit Signalen verschieben (ausschneiden und einfügen), werden die Signale nicht kopiert. Sie müssen sie manuell wieder hinzufügen.

note: type: Title ===
en: Handler Files
de: Handler-Dateien

note: type: Plain text
en: A handler file is a file containing Python code, which Gscreen adds to it's default routines. A handler file allows one to modify defaults, or add logic to a Gscreen skin without having to modify Gscreen proper. You can combine new functions with Gscreen's function to modify behavior as you like. You can completely bypass all of Gscreen's functions and make if work completely differently. If present a handler file named gscreen_handler.py (or MYNAME_handler.py if using the INI switch) will be loaded and registered only one file is allowed Gscreen looks for the handler file, if found it will look for specific function names and call them instead of the default ones. If adding widgets you can set up signal calls from the Glade editor to call routines you have written in the handler file. In this way you can have custom behavior. Handler routines can call Gscreen's default routines, either before or after running it's own code. In this way you can tack on extra behavior such as adding a sound. Please see the <<cha:glade-vcp,GladeVCP Chapter>> for the basics to GladeVCP handler files. Gscreen uses a very similar technique.
de: Eine Handler-Datei ist eine Datei, die Python-Code enthält, den Gscreen zu seinen Standardroutinen hinzufügt. Eine Handler-Datei ermöglicht es, Standardeinstellungen zu ändern oder einem Gscreen-Skin Logik hinzuzufügen, ohne Gscreen selbst ändern zu müssen. Sie können neue Funktionen mit den Funktionen von Gscreen kombinieren, um das Verhalten nach Belieben zu ändern. Sie können alle Funktionen von Gscreen komplett umgehen und sie völlig anders arbeiten lassen. Wenn eine Handler-Datei mit dem Namen gscreen_handler.py (oder MYNAME_handler.py, wenn Sie den INI-Schalter verwenden) vorhanden ist, wird diese geladen, und wenn nur eine Datei registriert ist, sucht Gscreen nach der Handler-Datei; wenn sie gefunden wird, sucht sie nach bestimmten Funktionsnamen und ruft diese anstelle der Standardfunktionen auf. Wenn Sie Widgets hinzufügen, können Sie Signalaufrufe aus dem Glade-Editor einrichten, um Routinen aufzurufen, die Sie in der Handler-Datei geschrieben haben. Auf diese Weise können Sie benutzerdefiniertes Verhalten haben. Handler-Routinen können die Standardroutinen von Gscreen aufrufen, entweder vor oder nach der Ausführung ihres eigenen Codes. Auf diese Weise können Sie zusätzliches Verhalten, wie z.B. das Hinzufügen eines Tons, einbauen. Bitte lesen Sie das <<cha:glade-vcp,GladeVCP Kapitel>> für die Grundlagen der GladeVCP Handler-Dateien. Gscreen verwendet eine sehr ähnliche Technik.

note: type: Title ===
en: Themes
de: Themen

note: type: Plain text
en: Gscreen uses the PyGTK toolkit to display the screen.  PyGTK is the Python language binding to GTK.  GTK supports 'themes'.  Themes are a way to modify the look and feel of the widgets on the screen.  For instance the color or size of buttons and sliders can be changed using themes.  There are many GTK themes available on the web.  Themes can also be customized to modify visuals of particular named widgets.  This ties the theme file to the Glade file more tightly.  Some of the sample screen skins allow the user to select any of the themes on the system.  The sample 'gscreen' is an example.  Some will load the theme that is the same name in the config file.  The sample 'gscreen-gaxis' is an example.  This is done by putting the theme folder in the config folder that has the INI and HAL files and naming it: SCREENNAME_theme (SCREENNAME being the base name of the files eg. gaxis_theme).  Inside this folder is another folder call gtk-2.0, inside that is the theme files.  If you add this file, Gscreen will default to this theme on start up.  gscreen-gaxis has a sample custom theme that looks for certain named widgets and changes the visual behavior of those specific widgets.  The Estop and machine-on buttons use different colors then the rest of the buttons so that they stand out.  This is done in the handler file by giving them specific names an by adding specific commands in the theme's gtkrc file.  For some info on GTK theming (The sample theme uses the pixmap theme engine), see: https://wiki.gnome.org/Attic/GnomeArt/Tutorials/GtkThemes[GTK Themes], https://wiki.gnome.org/Attic/GnomeArt/Tutorials/GtkEngines/PixmapEngine[Pixmap Theme Engine].
de: Gscreen verwendet das PyGTK-Toolkit zur Anzeige des Bildschirms.  PyGTK ist die Python-Sprachbindung an GTK.  GTK unterstützt "Themen".  Themes sind eine Möglichkeit, das Aussehen der Widgets auf dem Bildschirm zu verändern.  Zum Beispiel kann die Farbe oder Größe von Schaltflächen und Schiebereglern mit Themen geändert werden.  Es gibt viele GTK-Themen im Internet.  Themes können auch angepasst werden, um das Erscheinungsbild bestimmter benannter Widgets zu verändern.  Dies bindet die Themendatei enger an die Glade-Datei.  Einige der Beispielscreen-Skins erlauben es dem Benutzer, ein beliebiges Thema auf dem System auszuwählen.  Das Beispiel 'gscreen' ist ein Beispiel dafür.  Andere laden das Thema, das den gleichen Namen in der Konfigurationsdatei hat.  Das Beispiel 'gscreen-gaxis' ist ein Beispiel dafür.  Dazu wird der Theme-Ordner in den Konfigurationsordner mit den INI- und HAL-Dateien gelegt und benannt: SCREENNAME_theme (SCREENNAME ist der Basisname der Dateien, z. B. gaxis_theme).  Innerhalb dieses Ordners befindet sich ein weiterer Ordner namens gtk-2.0, in dem sich die Themadateien befinden.  Wenn Sie diese Datei hinzufügen, wird Gscreen beim Starten standardmäßig dieses Thema verwenden. gscreen-gaxis enthält ein Beispiel für ein benutzerdefiniertes Thema, das nach bestimmten benannten Widgets sucht und das visuelle Verhalten dieser spezifischen Widgets ändert.  Die Schaltflächen "Estop" und "Maschine ein" verwenden andere Farben als die übrigen Schaltflächen, damit sie sich abheben.  Dies geschieht in der Handler-Datei, indem man ihnen bestimmte Namen gibt und indem man bestimmte Befehle in der gtkrc-Datei des Themas hinzufügt.  Für einige Informationen über GTK-Themen (das Beispielthema verwendet die Pixmap-Themen-Engine), siehe: https://wiki.gnome.org/Attic/GnomeArt/Tutorials/GtkThemes[GTK-Themen], https://wiki.gnome.org/Attic/GnomeArt/Tutorials/GtkEngines/PixmapEngine[Pixmap-Themen-Engine].

note: type: Title ===
en: Build a GladeVCP Panel
de: Ein GladeVCP-Panel erstellen

note: type: Plain text
en: Gscreen is just a big complicated GladeVCP panel, with Python code to control it. To customize it we need the Glade file loaded in the Glade editor.
de: Gscreen ist nur ein großes, kompliziertes GladeVCP-Panel, mit Python-Code zur Steuerung. Um es anzupassen, müssen wir die Glade-Datei im Glade-Editor laden.

note: type: Plain text
en: If you have LinuxCNC 2.6+ installed on Ubuntu 10.04 just start the Glade editor from the applications menu or from the terminal. Newer versions of Linux will require you to install Glade 3.8.0 - 3.8.6 (you may need to compile it yourself).
de: Wenn Sie LinuxCNC 2.6+ auf Ubuntu 10.04 installiert haben, starten Sie einfach den Glade-Editor aus dem Anwendungsmenü oder über das Terminal. Neuere Versionen von Linux benötigen Sie Glade 3.8.0 - 3.8.6 zu installieren (möglicherweise müssen Sie es selbst kompilieren).

note: type: Block title
en: RIP compiled commands
de: RIP-kompilierte Befehle

note: type: Plain text
en: Using a compiled from source version of http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Installing_LinuxCNC[LinuxCNC] open a terminal and <<faq:cd,cd>> to the top of the LinuxCNC folder. Set up the environment by entering '. ./scripts/rip-environment' now enter 'glade', you see a bunch of warnings in the terminal that you can ignore and the editor should open. The stock Gscreen Glade file is in: src/emc/usr_intf/gscreen/ sample skins are in /share/gscreen/skins/. This should be copied to a configuration folder. Or you can make a clean-sheet Glade file by saving it in a configuration folder.
de: Mit einer aus dem Quellcode kompilierten Version von http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Installing_LinuxCNC[LinuxCNC] öffnen Sie ein Terminal und <<faq:cd,cd>> zum Anfang des LinuxCNC-Ordners. Richten Sie die Umgebung ein, indem Sie '. ./scripts/rip-environment' eingeben. Geben Sie nun 'glade' ein, Sie sehen eine Reihe von Warnungen im Terminal, die Sie ignorieren können und der Editor sollte sich öffnen. Die Standard-Gscreen-Gladedatei befindet sich in: src/emc/usr_intf/gscreen/ Beispielskins befinden sich in /share/gscreen/skins/. Diese sollte in einen Konfigurationsordner kopiert werden. Sie können auch eine saubere Glade-Datei erstellen, indem Sie sie in einem Konfigurationsordner speichern.

note: type: Plain text
en: Ok you have loaded the stock Glade file and now can edit it. The first thing you notice is it does not look in the editor like what it's displayed like Gscreen uses some tricks, such as hiding all boxes of buttons except one and changing that one depending on the mode. The same goes for notebooks, some screens use notebooks with the tabs not shown. To change pages in the editor you need to temporarily show those tabs.
de: Ok, Sie haben die Glade-Datei geladen und können sie nun bearbeiten. Das erste, was Ihnen auffällt, ist, dass es im Editor nicht so aussieht, wie es angezeigt wird. Gscreen verwendet einige Tricks, wie z. B. das Ausblenden aller Schaltflächenfelder bis auf eines und das Ändern dieses Feldes je nach Modus. Dasselbe gilt für die Notizbücher. Einige Bildschirme verwenden Notizbücher, bei denen die Registerkarten nicht angezeigt werden. Um die Seiten im Editor zu wechseln, müssen Sie diese Registerkarten vorübergehend einblenden.

note: type: Plain text
en: When making changes it is far easier to add widgets then subtract widgets and still have the screen work properly making objects 'not visible' is one way to change the display without getting errors. This won't always work some widgets will be set visible again. Changing the names of Gscreen's regular widgets is probably not gonna work well without changing the Python code, but moving a widget while keeping the name is usually workable.
de: Wenn Sie Änderungen vornehmen, ist es viel einfacher, Widgets hinzuzufügen, als Widgets zu entfernen, damit der Bildschirm trotzdem richtig funktioniert. Das funktioniert nicht immer, manche Widgets werden wieder sichtbar gemacht. Das Ändern der Namen der regulären Widgets von Gscreen wird wahrscheinlich nicht gut funktionieren, ohne den Python-Code zu ändern, aber das Verschieben eines Widgets unter Beibehaltung des Namens ist normalerweise machbar.

note: type: Plain text
en: Gscreen leverages GladeVCP widgets as much as possible, to avoid adding Python code. Learning about <<cha:glade-vcp,GladeVCP>> widgets is a prerequisite.  If the existing widgets give you the function you want or need then no Python code needs be added, just save the Glade file in your configuration folder.  If you need something more custom then you must do some Python programming.  The name of the parent window needs to be window1. Gscreen assumes this name.
de: Gscreen nutzt die GladeVCP-Widgets so weit wie möglich, um das Hinzufügen von Python-Code zu vermeiden. Die Kenntnis der <<cha:glade-vcp,GladeVCP>>-Widgets ist eine Voraussetzung.  Wenn die vorhandenen Widgets die gewünschte oder benötigte Funktion bieten, muss kein Python-Code hinzugefügt werden, sondern nur die Glade-Datei im Konfigurationsordner gespeichert werden.  Wenn Sie etwas benutzerdefinierteres benötigen, müssen Sie etwas Python-Programmierung vornehmen.  Der Name des übergeordneten Fensters muss window1 lauten. Gscreen nimmt diesen Namen an.

note: type: Plain text
en: Remember, if you use a custom screen option YOU are responsible for fixing it (if required) when updating LinuxCNC.
de: Denken Sie daran, wenn Sie eine benutzerdefinierte Bildschirmoption verwenden, sind SIE dafür verantwortlich, diese zu reparieren (falls erforderlich), wenn Sie LinuxCNC aktualisieren.

note: type: Title ==
en: Building a simple clean-sheet custom screen
de: Erstellen eines einfachen benutzerdefinierten Bildschirms

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Gscreen simple usable screen
de: Gscreen einfacher nutzbarer Bildschirm

note: type: Plain text
en: Lets build a simple usable screen. Build this in the Glade editor (if using a RIP package run it from a terminal after using . scripts/rip-environment ).
de: Lassen Sie uns einen einfachen brauchbaren Bildschirm erstellen. Erstellen Sie diesen im Glade-Editor (wenn Sie ein RIP-Paket verwenden, führen Sie ihn von einem Terminal aus, nachdem Sie . scripts/rip-environment verwendet haben).

note: type: Block title
en: Things to note:
de: Zu beachtende Punkte:

note: type: Plain text
en: The top level window must be called the default name, 'window1' - Gscreen relies on this.
de: Das Fenster der obersten Ebene muss den Standardnamen "window1" tragen - Gscreen verlässt sich auf diesen Namen.

note: type: Plain text
en: Add actions by right clicking, and selecting 'add as toplevel widget' they don't add anything visual to the window but are added to the right most action list. Add all the ones you see on the top right.
de: Fügen Sie Aktionen hinzu, indem Sie mit der rechten Maustaste klicken und "Als Toplevel-Widget hinzufügen" wählen. Sie fügen dem Fenster nichts Visuelles hinzu, sondern werden der rechten Aktionsliste hinzugefügt. Fügen Sie alle Aktionen hinzu, die Sie oben rechts sehen.

note: type: Plain text
en: After adding the actions we must link the buttons to the actions for them to work (see below).
de: Nach dem Hinzufügen der Aktionen müssen wir die Schaltflächen mit den Aktionen verknüpfen, damit sie funktionieren (siehe unten).

note: type: Plain text
en: The gremlin widget doesn't have a default size so setting a requested size is helpful (see below).
de: Das Gremlin-Widget hat keine Standardgröße, daher ist die Angabe einer gewünschten Größe hilfreich (siehe unten).

note: type: Plain text
en: The sourceview widget will try to use the whole window so adding it to a scrolled window will cover this (This is already been done in the example).
de: Das Sourceview-Widget wird versuchen, das gesamte Fenster zu verwenden, so dass das Hinzufügen zu einem gescrollten Fenster dies abdeckt (dies wurde bereits im Beispiel getan).

note: type: Plain text
en: The buttons will expand as the window is made larger which is ugly so we will set the box they are in, to not expand (see below).
de: Die Schaltflächen werden sich ausdehnen, wenn das Fenster vergrößert wird, was unschön ist, also werden wir das Feld, in dem sie sich befinden, so einstellen, dass es sich nicht ausdehnt (siehe unten).

note: type: Plain text
en: The button types to use depend on the VCP_action used -eg vcp_toggle_action usually require toggle buttons (Follow the example for now).
de: Die zu verwendenden Button-Typen hängen von der verwendeten VCP_action ab -eg vcp_toggle_action erfordern in der Regel Toggle-Schaltflächen (folgen Sie zunächst dem Beispiel).

note: type: Plain text
en: The buttons in this example are regular buttons not HAL buttons. We don't need the HAL pins.
de: Die Tasten in diesem Beispiel sind normale Tasten und keine HAL-Buttons. Wir brauchen die HAL-Pins nicht.

note: type: Plain text
en: In this screen we are using VCP_actions to communicate to LinuxCNC the actions we want. This allows us standard functions without adding Python code in the handler file. Let's link the estop toggle button to the estop action Select the estop toggle button and under the general tab look for 'Related Action' and click the button beside it. Now select the toggle estop action. Now the button will toggle estop on and off when clicked. Under the general tab you can change the text of the button's label to describe it's function. Do this for all the buttons.
de: In diesem Bildschirm verwenden wir VCP_actions, um LinuxCNC die Aktionen, die wir wollen, zu kommunizieren. Dies ermöglicht es uns, Standard-Funktionen ohne Hinzufügen von Python-Code in der Handler-Datei. Verknüpfen wir den Toggle-Estop-Knopf mit der Estop-Aktion Wählen Sie den Toggle-Estop-Knopf und suchen Sie unter der Registerkarte "Allgemein" nach "Related Action" und klicken Sie auf die Schaltfläche daneben. Wählen Sie nun die Aktion zum Umschalten der Sperrung aus. Jetzt schaltet die Schaltfläche die Sperrung ein und aus, wenn sie angeklickt wird. Auf der Registerkarte "Allgemein" können Sie den Text der Schaltflächenbeschriftung ändern, um die Funktion der Schaltfläche zu beschreiben. Tun Sie dies für alle Schaltflächen.

note: type: Plain text
en: Select the gremlin widget click the common tab and set the requested height to 100 and click the checkbox beside it.
de: Wählen Sie das Gremlin-Widget aus, klicken Sie auf die Registerkarte Allgemein, setzen Sie die gewünschte Höhe auf 100 und klicken Sie auf das Kontrollkästchen daneben.

note: type: Plain text
en: Click the horizontal box that holds the buttons. Click the packing tab and click 'expand' to 'No'.
de: Klicken Sie auf das horizontale Feld, in dem sich die Schaltflächen befinden. Klicken Sie auf die Registerkarte "Verpackung" (engl. packing) und klicken Sie bei "Erweitern" (engl. expand) auf "Nein".

note: type: Plain text
en: Save it as tester.glade and save it in sim/gscreen/gscreen_custom/ folder. Now launch LinuxCNC and click to sim/gscreen/gscreen_custom/tester and start it.  If all goes well our screen will pop up and the buttons will do their job This works because the tester.ini tells gscreen to look for and load tester.glade and tester_handler.py. The tester_handler.py file is included in that folder and is coded just show the screen and not much else. Since the special widgets directly communicate with LinuxCNC you can still do useful things. If your screen needs are covered by the available special widgets then this is as far as you need to go to build a screen. If you want something more there are still many tricks available from just adding 'function calls' to get canned behaviour.  To coding your own Python code to customize exactly what you want. But that means learning about handler files.
de: Speichern Sie es als tester.glade und speichern Sie es in sim/gscreen/gscreen_custom/ Ordner. Nun starten Sie LinuxCNC und klicken Sie auf sim/gscreen/gscreen_custom/tester und starten Sie es.  Wenn alles gut geht, wird unser Bildschirm auftauchen und die Knöpfe werden ihre Arbeit tun. Das funktioniert, weil die tester.ini gscreen anweist, nach tester.glade und tester_handler.py zu suchen und zu laden. Die Datei tester_handler.py befindet sich in diesem Ordner und ist so programmiert, dass sie nur den Bildschirm anzeigt und nicht viel mehr. Da die speziellen Widgets direkt mit LinuxCNC kommunizieren, können Sie trotzdem nützliche Dinge tun. Wenn Ihr Bedarf an Bildschirmen durch die verfügbaren speziellen Widgets abgedeckt ist, dann ist das alles, was Sie brauchen, um einen Bildschirm zu erstellen. Wenn Sie etwas mehr wollen, gibt es immer noch viele Tricks zur Verfügung von nur Hinzufügen von "Funktionsaufrufe", um canned Verhalten zu erhalten.  Sie können auch Ihren eigenen Python-Code programmieren, um genau das zu erreichen, was Sie wollen. Das bedeutet aber, dass Sie sich mit Handler-Dateien vertraut machen müssen.

note: type: Title ==
en: Handler file example
de: Beispiel für eine Handler-Datei

note: type: Plain text
en: There are special functions Gscreen checks the handler file for.  If you add these in you handler file Gscreen will call them instead of gscreen's internal same-named functions.
de: Es gibt spezielle Funktionen, auf die Gscreen die Handler-Datei überprüft.  Wenn Sie diese in Ihre Handler-Datei aufnehmen, ruft Gscreen sie anstelle der gleichnamigen internen Funktionen von Gscreen auf.

note: type: Plain text
en: initialize_preferences(self): You can install new preference routines.
de: initialize_preferences(self): Sie können neue Einstellungsroutinen installieren.

note: type: Plain text
en: initialize_keybindings(self) You can install new keybinding routines. In most cases you won't want to do this, you will want to override the individual keybinding calls. You can also add more keybindings that will call an arbitrary function.
de: initialize_keybindings(self) Sie können neue Tastenbindungsroutinen installieren. In den meisten Fällen werden Sie dies nicht tun wollen, sondern die einzelnen Tastaturbindungsaufrufe außer Kraft setzen wollen. Sie können auch weitere Tastenbindungen hinzufügen, die eine beliebige Funktion aufrufen.

note: type: Plain text
en: initialize_pins(self): makes / initializes HAL pins
de: initialize_pins(self): erzeugt / initialisiert HAL-Pins

note: type: Plain text
en: connect_signals(self,handlers): If you are using a completely different screen the default Gscreen you must add this or gscreen will try to connect signals to widgets that are not there. Gscreen's default function is called with self.gscreen.connect_signals(handlers) If you wish to just add extra signals to your screen but still want the default ones call this first then add more signals. If you signals are simple (no user data passed) then you can also use the Glade signal selection in the Glade editor.
de: connect_signals(self,handlers): Wenn Sie einen völlig anderen Bildschirm als den Standard-Gscreen verwenden, müssen Sie dies hinzufügen, da gscreen sonst versucht, Signale mit Widgets zu verbinden, die nicht vorhanden sind. Die Standardfunktion von Gscreen wird mit self.gscreen.connect_signals(handlers) aufgerufen. Wenn Sie nur zusätzliche Signale zu Ihrem Bildschirm hinzufügen möchten, aber trotzdem die Standardsignale verwenden wollen, rufen Sie zuerst diese Funktion auf und fügen dann weitere Signale hinzu. Wenn Ihre Signale einfach sind (keine Benutzerdaten übergeben), können Sie auch die Glade-Signalauswahl im Glade-Editor verwenden.

note: type: Plain text
en: initialize_widgets(self): You can use this to set up any widgets. Gscreen usually calls 'self.gscreen.initialize_widgets()' which actually calls many separate functions. If you wish to incorporate some of those widgets then just call those functions directly. or add self.gscreen.init_show_windows() so widgets are just shown. Then if desired, initialize/adjust your new widgets.
de: initialize_widgets(self): Hiermit können Sie alle Widgets einrichten. Gscreen ruft normalerweise 'self.gscreen.initialize_widgets()' auf, das eigentlich viele separate Funktionen aufruft. Wenn Sie einige dieser Widgets einbinden möchten, rufen Sie diese Funktionen einfach direkt auf. Oder fügen Sie self.gscreen.init_show_windows() hinzu, damit die Widgets nur angezeigt werden. Dann, falls gewünscht, initialisieren/anpassen Sie Ihre neuen Widgets.

note: type: Plain text
en: initialize_manual_toolchange(self): allows a complete revamp of the manual toolchange system.
de: initialize_manual_toolchange(self): Ermöglicht eine vollständige Überarbeitung des manuellen Werkzeugwechselsystems.

note: type: Plain text
en: timer_interrupt(self): allows one to complete redefine the interrupt routine This is used for calling periodic() and checking for errors from linuxcnc.status.
de: timer_interrupt(self): ermöglicht die vollständige Neudefinition der Interrupt-Routine. Dies wird für den Aufruf von periodic() und die Überprüfung auf Fehler von linuxcnc.status verwendet.

note: type: Plain text
en: check_mode(self): used to check what mode the screen is in. Returns a list[] 0 -manual 1- mdi 2- auto 3- jog.
de: check_mode(self): wird verwendet, um zu prüfen, in welchem Modus sich der Bildschirm befindet. Liefert eine Liste[] 0 -manual 1- mdi 2- auto 3- jog.

note: type: Plain text
en: on_tool_change(self,widget): You can use this to override the manual tool change dialog -this is called when 'gscreen.tool-change' changes state.
de: on_tool_change(self,widget): Sie können dies verwenden, um den manuellen Werkzeugwechsel-Dialog zu überschreiben - dieser wird aufgerufen, wenn 'gscreen.tool-change' den Status ändert.

note: type: Plain text
en: dialog_return(self,dialog_widget,displaytype,pinname): Use this to override any user message or manual tool change dialog. Called when the dialog is closed.
de: dialog_return(self,dialog_widget,displaytype,pinname): Verwenden Sie diese Funktion, um eine Benutzermeldung oder einen manuellen Werkzeugwechsel-Dialog außer Kraft zu setzen. Wird aufgerufen, wenn der Dialog geschlossen wird.

note: type: Plain text
en: periodic(self): This is called every (default 100) milliseconds. Use it to update your widgets/HAL pins. You can call Gscreen regular periodic afterwards too, self.gscreen.update_position() or just add pass to not update anything. Gscreen's update_position() actually calls many separate functions. If you wish to incorporate some of those widgets then just call those functions directly.
de: periodisch(self): Diese Funktion wird alle (standardmäßig 100) Millisekunden aufgerufen. Verwenden Sie es, um Ihre Widgets/HAL-Pins zu aktualisieren. Sie können danach auch Gscreen regular periodic aufrufen, self.gscreen.update_position() oder einfach pass hinzufügen, um nichts zu aktualisieren. Die Funktion update_position() von Gscreen ruft eigentlich viele separate Funktionen auf. Wenn Sie einige dieser Widgets einbinden möchten, rufen Sie diese Funktionen einfach direkt auf.

note: type: Plain text
en: You can also add you own functions to be called in this file. Usually you would add a signal to a widget to call your function.
de: Sie können auch eigene Funktionen hinzufügen, die in dieser Datei aufgerufen werden sollen. Normalerweise würden Sie einem Widget ein Signal hinzufügen, um Ihre Funktion aufzurufen.

note: type: Title ===
en: Adding Keybindings Functions
de: Hinzufügen von Funktionen für Tastenkombinationen

note: type: Plain text
en: Our tester example would be more useful if it responded to keyboard commands.  There is a function called keybindings() that tries to set this up.  While you can override it completely, we didn't - but it assumes some things:
de: Unser Tester-Beispiel wäre nützlicher, wenn es auf Tastaturbefehle reagieren würde.  Es gibt eine Funktion namens keybindings(), die versucht, dies einzurichten.  Man kann sie zwar komplett außer Kraft setzen, was wir nicht getan haben, aber sie setzt einige Dinge voraus:

note: type: Plain text
en: It assumes the estop toggle button is call 'button_estop' and that F1 key controls it.
de: Es wird davon ausgegangen, dass die Umschalttaste für den Ausstieg 'button_estop' heißt und mit der Taste F1 gesteuert wird.

note: type: Plain text
en: It assumes the power button is called 'button_machine_on' and the F2 key controls it.
de: Es wird davon ausgegangen, dass der Netzschalter "button_machine_on" heißt und mit der Taste F2 gesteuert wird.

note: type: Plain text
en: These are easily fixed by renaming the buttons in the Glade editor to match.  But instead we are going to override the standard calls and add our own.
de: Diese lassen sich leicht beheben, indem man die Schaltflächen im Glade-Editor entsprechend umbenennt.  Aber stattdessen werden wir die Standardaufrufe außer Kraft setzen und unsere eigenen hinzufügen.

note: type: Plain text
en: Add these command to the handler file:
de: Fügen Sie diese Befehle in die Handler-Datei ein:

note: type: delimited block -
en: # override Gscreen Functions
    # keybinding calls
    def on_keycall_ESTOP(self,state,SHIFT,CNTRL,ALT):
      if state: # only if pressed, not released
        self.widgets.togglebutton1.emit('activate')
        self.gscreen.audio.set_sound(self.data.alert_sound)
        self.gscreen.audio.run()
        return True # stop progression of signal to other widgets
    def on_keycall_POWER(self,state,SHIFT,CNTRL,ALT):
      if state:
        self.widgets.togglebutton2.emit('activate')
        return True
    def on_keycall_ABORT(self,state,SHIFT,CNTRL,ALT):
      if state:
        self.widgets.button3.emit('activate')
        return True
de: # Gscreen-Funktionen überschreiben
    # Tastatur-Funktionen (engl. key binding)-Aufrufe
    def on_keycall_ESTOP(self,state,SHIFT,CNTRL,ALT):
      if state: # only if pressed, not released
        self.widgets.togglebutton1.emit('activate')
        self.gscreen.audio.set_sound(self.data.alert_sound)
        self.gscreen.audio.run()
        return True # stop progression of signal to other widgets
    def on_keycall_POWER(self,state,SHIFT,CNTRL,ALT):
      if state:
        self.widgets.togglebutton2.emit('activate')
        return True
    def on_keycall_ABORT(self,state,SHIFT,CNTRL,ALT):
      if state:
        self.widgets.button3.emit('activate')
        return True

note: type: Plain text
en: So now we have overridden Gscreen's function calls of the same name and deal with them in our handler file We now reference the widgets by the name we used in the Glade editor.  We also added a built in gscreen function to make a sound when Estop changes.  Note that we we call Gscreen's built in functions we must use self.gscreen.[FUNCTION NAME]()  If we used self.[FUNCTION NAME]() it would call the function in our handler file.
de: Jetzt haben wir die gleichnamigen Funktionsaufrufe von Gscreen überschrieben und behandeln sie in unserer Handler-Datei. Wir verweisen jetzt auf die Widgets mit dem Namen, den wir im Glade-Editor verwendet haben.  Wir haben auch eine eingebaute Gscreen-Funktion hinzugefügt, um einen Ton zu erzeugen, wenn sich Estop ändert.  Beachten Sie, dass wir die eingebauten Gscreen-Funktionen mit self.gscreen.[FUNKTIONSNAME]() aufrufen müssen. Wenn wir self.[FUNKTIONSNAME]() verwenden, wird die Funktion in unserer Handler-Datei aufgerufen.

note: type: Plain text
en: Lets add another key binding that loads halmeter when F4 is pressed.
de: Fügen wir eine weitere Tastenkombination hinzu, die das Halmeter lädt, wenn F4 gedrückt wird.

note: type: Plain text
en: In the handler file under 'def initialize_widgets(self):' change to:
de: In der Handler-Datei unter 'def initialize_widgets(self):' ändern in:

note: type: Plain text
en: Then add these functions under the 'HandlerClass' class:
de: Fügen Sie dann diese Funktionen unter der Klasse "HandlerClass" hinzu:

note: type: Plain text
en: This adds a keybinding conversion that directs gscreen to call on_keycall_HALMETER when F4 is pressed.  Then we add the function to the handle file to call a Gscreen builtin function to start halmeter.
de: Dies fügt eine Keybinding-Konvertierung hinzu, die gscreen anweist, wenn F4 gedrückt wird on_keycall_HALMETER aufzurufen.  Dann fügen wir die Funktion zur Handle-Datei hinzu, um eine Gscreen-Builtin-Funktion zum Starten von Halmeter aufzurufen.

note: type: Title ===
en: Linuxcnc State Status
de: LinuxCNC-Status Status

note: type: Plain text
en: The module 'Gstat' polls LinuxCNC's state every 100ms and sends callback messages to user functions when state changes.  You can register messages to act on specific state changes.  As an example we will register to get 'file-loaded' messages when LinuxCNC loads a new file.  First we must import the module and instantiate it: In the import section of the handler file add:
de: Das Modul 'Gstat' fragt den Zustand von LinuxCNC alle 100&thinsp;ms ab und sendet Callback-Nachrichten an Benutzerfunktionen, wenn sich der Zustand ändert.  Sie können Nachrichten registrieren, um auf bestimmte Zustandsänderungen zu reagieren.  Als Beispiel werden wir uns registrieren, um 'file-loaded'-Meldungen zu erhalten, wenn LinuxCNC eine neue Datei lädt.  Zuerst müssen wir das Modul importieren und instanziieren: Fügen Sie in der Import-Sektion der Handler-Datei hinzu:

note: type: Plain text
en: In the handler file under 'def \_\_init__(self):' add:
de: In der Handler-Datei unter 'def \_\_init__(self):' hinzufügen:

note: type: Plain text
en: Then in the 'HandlerClass', add the function:
de: Fügen Sie dann in der 'HandlerClass' folgende Funktion hinzu:

note: type: Plain text
en: When LinuxCNC loads a new file, Gstat will send a callback message to the function 'update_filepath'.  In this example we update a label with that path name (assuming there is a label nammed 'my_path_label') in the GLADE file.
de: Wenn LinuxCNC eine neue Datei lädt, sendet Gstat eine Callback-Nachricht an die Funktion 'update_filepath'.  In diesem Beispiel aktualisieren wir ein Label mit dem Pfadnamen (vorausgesetzt, es gibt ein Label mit dem Namen 'my_path_label') in der Glade-Datei.

note: type: Title ===
en: Jogging Keys
de: Jogging-Tasten

note: type: Plain text
en: There are no special widgets to do screen-button jogging, so we must do it with Python code.  Under the connect_signals function add this code:
de: Es gibt keine speziellen Widgets für ein Bildschirm-Button-Joggen, also müssen wir es mit Python-Code tun.  Fügen Sie unter der Funktion connect_signals folgenden Code hinzu:

note: type: Plain text
en: Add these functions under the HandlerClass class:
de: Fügen Sie diese Funktionen unter der Klasse HandlerClass hinzu:

note: type: Plain text
en: Finally add two buttons to the GLADE file for each axis - one for positive, one for negative direction jogging.  Name these buttons xneg, xpos, yneg, ypos zneg, zpos respectively.  add a SpeedControl widget to the GLADE file and name it jog_speed.
de: Schließlich fügen Sie der GLADE-Datei für jede Achse zwei Schaltflächen hinzu - eine für die positive und eine für die negative Richtung des Tippens.  Nennen Sie diese Schaltflächen xneg, xpos, yneg, ypos bzw. zneg, zpos. Fügen Sie ein SpeedControl-Widget in die GLADE-Datei ein und nennen Sie es jog_speed.

note: type: Title ==
en: Gscreen Start Up
de: Gscreen Start

note: type: Plain text
en: Gscreen is really just infrastructure to load a custom GladeVCP file and interact with it.
de: Gscreen ist wirklich nur eine Infrastruktur, um eine benutzerdefinierte GladeVCP-Datei zu laden und damit zu interagieren.

note: type: Plain text
en: Gscreen reads the options it was started with.
de: Gscreen liest die Optionen, mit denen es gestartet wurde.

note: type: Plain text
en: Gscreen sets the debug mode and set the optional skin name.
de: Gscreen stellt den Debug-Modus ein und setzt den optionalen Skin-Namen.

note: type: Plain text
en: Gscreen checks to see if there are 'local' XML, handler and/or locale files in the configuration folder. It will use them instead of the default ones (in share/gscreen/skins/) (There can be two separate screens displayed).
de: Gscreen prüft, ob im Konfigurationsordner "lokale" XML-, Handler- und/oder Locale-Dateien vorhanden sind. Diese werden dann anstelle der Standarddateien (in share/gscreen/skins/) verwendet (es können zwei verschiedene Bildschirme angezeigt werden).

note: type: Plain text
en: The main screen is loaded and translations set up. If present the second screen will be loaded and translations set up.
de: Der Hauptbildschirm wird geladen und die Übersetzungen werden eingerichtet. Falls vorhanden, wird der zweite Bildschirm geladen und die Übersetzungen werden eingerichtet.

note: type: Plain text
en: Optional Audio is initialized if available.
de: Optionales Audio wird initialisiert, falls vorhanden.

note: type: Plain text
en: It reads some of the INI file to initialize the units, and the number/type of axes.
de: Es liest einen Teil der INI-Datei, um die Einheiten und die Anzahl/Typen der Achsen zu initialisieren.

note: type: Plain text
en: Initializes Python's binding to HAL to build a userspace component with the Gscreen name.
de: Initialisiert die Bindung von Python an HAL, um eine Userspace-Komponente mit dem Namen Gscreen zu erstellen.

note: type: Plain text
en: GladeVCP's makepins is called to parse the XML file to build HAL pins for the HAL widgets and register the LinuxCNC connected widgets.
de: GladeVCP's makepins wird aufgerufen, um die XML-Datei zu parsen, um HAL-Pins für die HAL-Widgets zu erstellen und die mit LinuxCNC verbundenen Widgets zu registrieren.

note: type: Plain text
en: Checks for a 'local' handler file in the configuration folder or else uses the stock one from the skin folder.
de: Prüft, ob eine "local" Handler-Datei im Konfigurationsordner vorhanden ist, oder verwendet die Standard-Handler-Datei aus dem Skin-Ordner.

note: type: Plain text
en: If there is a handler file gscreen parses it, and registers the function calls into Gscreen's namespace.
de: Wenn eine Handler-Datei vorhanden ist, analysiert Gscreen diese und registriert die Funktionsaufrufe im Namensraum von Gscreen.

note: type: Plain text
en: Glade matches/registers all signal calls to functions in gscreen and the handler file.
de: Glade gleicht/registriert alle Signalaufrufe an Funktionen in Gscreen und der Handler-Datei.

note: type: Plain text
en: Gscreen checks the INI file for an option preference file name otherwise it uses '.gscreen_preferences' =.
de: Gscreen prüft die INI-Datei auf den Namen einer Optionseinstellungsdatei, andernfalls verwendet es '.gscreen_preferences' =.

note: type: Plain text
en: Gscreen checks to see if there is a preference function call ('initialize_preferences(self)') in the handler file otherwise it uses the stock Gscreen one.
de: Gscreen prüft, ob ein Aufruf der Einstellungsfunktion ('initialize_preferences(self)') in der Handler-Datei vorhanden ist, andernfalls wird die Standardfunktion von Gscreen verwendet.

note: type: Plain text
en: Gscreen checks for ClassicLadder realtime component.
de: Gscreen sucht nach der "ClassicLadder"-Echtzeit-Komponente.

note: type: Plain text
en: Gscreen checks for the system wide GTK theme.
de: Gscreen prüft auf das systemweite GTK-Thema.

note: type: Plain text
en: Gscreen collects the jogging increments from the INI file.
de: Gscreen holt sich das Inkrement beim Joggen aus der INI-Datei.

note: type: Plain text
en: Gscreen collects the angular jogging increments from the INI file.
de: Gscreen holt sich die Winkelschritte für das Joggen aus der INI-Datei.

note: type: Plain text
en: Gscreen collects the default and max jog rate from the INI.
de: Gscreen holt sich die Standard- und die maximale Jog-Geschwindigkeit aus der INI.

note: type: Plain text
en: Gscreen collects the max velocity of any axes from the INI's TRAJ section.
de: Gscreen sammelt die maximale Geschwindigkeit aller Achsen aus dem TRAJ-Abschnitt der INI.

note: type: Plain text
en: Gscreen checks to see if there is angular axes then collects the default and max velocity from the INI file.
de: Gscreen prüft, ob Winkelachsen vorhanden sind, und entnimmt dann die Standard- und Höchstgeschwindigkeit aus der INI-Datei.

note: type: Plain text
en: Gscreen collect all the override setting from the INI.
de: Gscreen sammelt alle Override-Einstellungen aus der INI.

note: type: Plain text
en: Gscreen checks if its a lathe configuration from the INI file.
de: Gscreen prüft, ob es sich um eine Drehbankkonfiguration aus der INI-Datei handelt.

note: type: Plain text
en: Gscreen finds the name of the tool_table,tool editor and param file from the INI.
de: Gscreen findet den Namen der tool_table-, tool editor- und param-Datei in der INI.

note: type: Plain text
en: Gscreen checks the handler file for keybindings function ('initialize_keybindings(self)') or else use Gscreen stock one.
de: Gscreen prüft die Handler-Datei auf die Funktion "keybindings" ("initialize_keybindings(self)") oder verwendet die von Gscreen bereitgestellte Funktion.

note: type: Plain text
en: Gscreen checks the handler file for pins function ('initialize_pins(self)')  or else use Gscreen stock one.
de: Gscreen prüft die Handler-Datei auf die Pin-Funktion ('initialize_pins(self)') oder verwendet die regulär von Gscreen zur Verfügung gestellte.

note: type: Plain text
en: Gscreen checks the handler file for manual_toolchange function ('initialize_manual_toolchange(self)') or else use Gscreen stock one.
de: Gscreen prüft die Handler-Datei auf die Funktion manual_toolchange ('initialize_manual_toolchange(self)') oder verwendet die regulär von Gscreen zur Verfügung gestellte.

note: type: Plain text
en: Gscreen checks the handler file for connect_signals function ('initialize_connect_signals(self)') or else use Gscreen stock one.
de: Gscreen überprüft die Handler-Datei auf die Funktion connect_signals ('initialize_connect_signals(self)') oder verwendet andernfalls eine Standarddatei von Gscreen.

note: type: Plain text
en: Gscreen checka the handler file for widgets function ('initialize_widgets(self)') or else use Gscreen stock one.
de: Gscreen prüft die Handler-Datei für die Widgets-Funktion ('initialize_widgets(self)') oder verwendet die regulär von Gscreen zur Verfügung gestellte.

note: type: Plain text
en: Gscreen set up messages specified in the INI file.
de: Gscreen richtet die in der INI-Datei angegebenen Meldungen ein.

note: type: Plain text
en: Gscreen tells HAL the Gscreen HAL component is finished making pins and is ready. If there is a terminal widget in the screen it will print all the Gscreen pins to it.
de: Gscreen teilt HAL mit, dass die Gscreen-HAL-Komponente mit der Erstellung von Pins fertig ist und bereit ist. Wenn ein Terminal-Widget auf dem Bildschirm vorhanden ist, werden alle Gscreen-Pins dorthin gedruckt.

note: type: Plain text
en: Gscreen sets the display cycle time based on the INI file.
de: Gscreen stellt die Anzeigezykluszeit auf der Grundlage der INI-Datei ein.

note: type: Plain text
en: Gscreen checks the handler file for 'timer_interupt(self)' function call otherwise use Gscreen's default function call.
de: Gscreen prüft die Handler-Datei auf den Aufruf der Funktion 'timer_interupt(self)', andernfalls wird der Standardfunktionsaufruf von Gscreen verwendet.

note: type: Plain text
en: Under the [DISPLAY] heading:
de: Unter der Überschrift [DISPLAY]:

note: type: Plain text
en: The -c switch allows one to select a 'skin'. Gscreen assumes the Glade file and the handler file use this same name. The optional second screen will be the same name with a 2 (eg. tester2.glade) There is no second handler file allowed.  It will only be loaded if it is present. Gscreen will search the LinuxCNC configuration file that was launched first for the files, then in the system skin folder.
de: Mit dem Schalter -c kann man einen "Skin" auswählen. Gscreen geht davon aus, dass die Glade-Datei und die Handler-Datei denselben Namen haben. Der optionale zweite Bildschirm ist derselbe Name mit einer 2 (z.B. tester2.glade) Es ist keine zweite Handler-Datei erlaubt.  Sie wird nur geladen, wenn sie vorhanden ist. Gscreen sucht in der LinuxCNC-Konfigurationsdatei, die zuerst gestartet wurde, nach den Dateien, dann im System-Skin-Ordner.

note: type: Title ==
en: User Dialog Messages
de: Benutzerdialog-Meldungen

note: type: Plain text
en: This function is used to display pop up dialog messages on the screen.  These are defined in the INI file and controlled by HAL pins:
de: Diese Funktion wird verwendet, um Pop-up-Dialogmeldungen auf dem Bildschirm anzuzeigen.  Diese werden in der INI-Datei definiert und über HAL-Pins gesteuert:

note: type: Plain text
en: is generally a title.
de: ist im Allgemeinen ein Titel.

note: type: Plain text
en: is below that and usually longer.
de: ist darunter und in der Regel länger.

note: type: Plain text
en: is hidden unless clicked on.
de: ist ausgeblendet, wenn nicht darauf geklickt wird.

note: type: Plain text
en: is the basename of the HAL pins.
de: ist der Basisname der HAL-Pins.

note: type: Plain text
en: specifies whether its a yes/no, ok, or status message
de: gibt an, ob es sich um eine Ja/Nein-, eine Ok- oder eine Statusmeldung handelt

note: type: Plain text
en: Status messages
de: Statusmeldungen

note: type: Plain text
en: will be shown in the status bar and the notify dialog,
de: wird in der Statusleiste und im Benachrichtigungsdialog angezeigt,

note: type: Plain text
en: require no user intervention.
de: erfordern keinen Benutzereingriff.

note: type: Plain text
en: ok messages
de: OK-Meldungen

note: type: Plain text
en: require the user to click ok to close the dialog.
de: den Benutzer auffordern, auf ok zu klicken, um den Dialog zu schließen.

note: type: Plain text
en: have one HAL pin to launch the dialog and one to signify it's waiting for response.
de: einen HAL-Pin haben, um den Dialog zu starten, und einen, um zu signalisieren, dass er auf eine Antwort wartet.

note: type: Plain text
en: yes/no messages
de: Ja/Nein-Meldungen

note: type: Plain text
en: require the user to select yes or no buttons to close the dialog.
de: den Benutzer auffordern, die Schaltflächen "Ja" oder "Nein" auszuwählen, um den Dialog zu schließen.

note: type: Plain text
en: one to show the dialog,
de: eine, um den Dialog anzuzeigen,

note: type: Plain text
en: one for waiting, and
de: eine für das Warten, und

note: type: Plain text
en: one for the answer.
de: eine für die Antwort.

note: type: Plain text
en: Here is a sample INI code. It would be under the [DISPLAY] heading.
de: Hier ist ein Beispiel für einen INI-Code. Er befindet sich unter der Überschrift [DISPLAY].

note: type: delimited block -
en: # This just shows in the status bar and desktop notify popup.
    MESSAGE_BOLDTEXT = NONE
    MESSAGE_TEXT = This is a statusbar test
    MESSAGE_DETAILS = STATUS DETAILS
    MESSAGE_TYPE = status
    MESSAGE_PINNAME = statustest
de: # Dies wird nur in der Statusleiste und im Popup-Fenster für Desktop-Benachrichtigungen angezeigt.
    MESSAGE_BOLDTEXT = NONE
    MESSAGE_TEXT = This is a statusbar test
    MESSAGE_DETAILS = STATUS DETAILS
    MESSAGE_TYPE = status
    MESSAGE_PINNAME = statustest

note: type: delimited block -
en: # This will pop up a dialog that asks a yes no question
    MESSAGE_BOLDTEXT = NONE
    MESSAGE_TEXT = This is a yes no dialog test
    MESSAGE_DETAILS = Y/N DETAILS
    MESSAGE_TYPE = yesnodialog
    MESSAGE_PINNAME = yndialogtest
de: # Es wird ein Dialog mit einer Ja-Nein-Frage eingeblendet
    MESSAGE_BOLDTEXT = NONE
    MESSAGE_TEXT = This is a yes no dialog test
    MESSAGE_DETAILS = Y/N DETAILS
    MESSAGE_TYPE = yesnodialog
    MESSAGE_PINNAME = yndialogtest

note: type: delimited block -
en: # This pops up a dialog that requires an ok response and it shows in the status bar and
    # the desktop notify popup.
    MESSAGE_BOLDTEXT = This is the short text
    MESSAGE_TEXT = This is the longer text of the both type test. It can be longer then the status bar text
    MESSAGE_DETAILS = BOTH DETAILS
    MESSAGE_TYPE = okdialog status
    MESSAGE_PINNAME = bothtest
de: # Es erscheint ein Dialog, der eine OK-Antwort erfordert und in der Statusleiste und
    # dem Desktop-Benachrichtigungs-Popup.
    MESSAGE_BOLDTEXT = This is the short text
    MESSAGE_TEXT = This is the longer text of the both type test. It can be longer then the status bar text
    MESSAGE_DETAILS = BOTH DETAILS
    MESSAGE_TYPE = okdialog status
    MESSAGE_PINNAME = bothtest

note: type: Title ===
en: Copy the Stock Handler/Glade File For Modification
de: Kopieren Sie die Datei "Stock Handler/Glade" zur Bearbeitung

note: type: Plain text
en: If you wish to use a stock screen but modify it's handler file, you need to copy the stock file to your config file folder.  Gscreen will see this and use the copied file.  But where is the original file? If using a RIP LinuxCNC the sample skins are in /share/gscreen/skins/'SCREENNAME' Installed versions of LinuxCNC have them in slightly different places depending on the distribution used.  An easy way to find the location is to open a terminal and start the sim screen you wish to use.  In the terminal the file locations will be printed.  It may help to add the -d switch to the gscreen load line in the INI.
de: Wenn Sie einen Standardbildschirm verwenden, aber dessen Handler-Datei ändern möchten, müssen Sie die Standarddatei in Ihren Konfigurationsdateiordner kopieren.  Gscreen wird dies erkennen und die kopierte Datei verwenden.  Aber wo ist die Originaldatei? Wenn Sie ein RIP LinuxCNC verwenden, befinden sich die Beispiel-Skins in /share/gscreen/skins/'SCREENNAME' Installierte Versionen von LinuxCNC haben sie an leicht unterschiedlichen Orten, je nach verwendeter Distribution.  Eine einfache Möglichkeit, den Speicherort zu finden, besteht darin, ein Terminal zu öffnen und den gewünschten Sim-Screen zu starten.  Im Terminal werden die Speicherorte der Dateien ausgegeben.  Es kann hilfreich sein, den Schalter -d in die Zeile gscreen load in der INI einzufügen.

note: type: Plain text
en: Here is a sample:
de: Hier ist ein Beispiel:

note: type: Plain text
en: The line:
de: Die Zeile:

note: type: Plain text
en: shows where the stock file lives. Copy this file to your config folder.  This works the same for the Glade file.
de: zeigt, wo sich die Bestandsdatei befindet. Kopieren Sie diese Datei in Ihren Konfigurationsordner.  Das Gleiche gilt für die Glade-Datei.

note: type: Title ==
en: Intro
de: Einführung

note: type: Plain text
en: GStat is a Python class used to send messages from LinuxCNC to other Python programs.  It uses GObject to deliver messages, making it easy to listen for specific information.  This is referred to as event-driven programming, which is more efficient then every program polling LinuxCNC at the same time.  GladeVCP, Gscreen, Gmoccapy and QtVCP use GStat extensively.  GStat is in the `hal_glib` module.
de: GStat ist eine Python-Klasse, die verwendet wird, um Nachrichten von LinuxCNC an andere Python-Programme zu senden.  Sie verwendet GObject, um Nachrichten zu übermitteln, was es einfach macht, auf bestimmte Informationen zu hören.  Dies wird als ereignisgesteuerte Programmierung bezeichnet, die effizienter ist als jedes Programm, das LinuxCNC zur gleichen Zeit abfragt.  GladeVCP, Gscreen, Gmoccapy und QtVCP verwenden GStat ausgiebig.  GStat befindet sich im Modul `hal_glib`.

note: type: Plain text
en: First, a program imports the `hal_glib` module and instantiates GStat.
de: Zunächst importiert ein Programm das Modul "hal_glib" und instanziiert GStat.

note: type: Plain text
en: Then it 'connects' to the messages it wishes to monitor.
de: Dann stellt es eine Verbindung zu den Nachrichten her, die es überwachen möchte.

note: type: Plain text
en: When GStat calls the registered function, it sends the GStat object plus any return codes from the message.
de: Wenn GStat die registrierte Funktion aufruft, sendet es das GStat-Objekt und alle Rückgabewerte der Nachricht.

note: type: Plain text
en: Typical code signatures:
de: Typische Codesignaturen:

note: type: Plain text
en: Often LAMBDA is used to strip the GSTAT object and manipulate the return codes:
de: Oft wird LAMBDA verwendet, um das GSTAT-Objekt zu entfernen und die Rückgabecodes zu manipulieren:

note: type: Title ==
en: Sample GStat Code
de: Beispiel für einen GStat-Code

note: type: Plain text
en: There are some basic patterns for using GStat, depending on what library you are using them in.  If using GStat with GladeVCP, Gscreen, or QtVCP, the GObject library is not needed as those toolkits already set up GObject.
de: Es gibt einige grundlegende Muster für die Verwendung von GStat, je nachdem, in welcher Bibliothek Sie sie verwenden.  Wenn Sie GStat mit GladeVCP, Gscreen oder QtVCP verwenden, wird die GObject-Bibliothek nicht benötigt, da diese Toolkits GObject bereits einrichten.

note: type: Title ===
en: Sample HAL component code pattern
de: Codemuster für HAL-Komponenten

note: type: Plain text
en: This program creates two HAL pins that output the status of G20/G21.
de: Dieses Programm erzeugt zwei HAL-Pins, die den Status von G20/G21 ausgeben.

note: type: delimited block -
en: # callback to change HAL pin state
    def mode_changed(obj, data):
            h['g20'] = not data
            h['g21'] = data
de: # Callback zum Ändern des HAL-Pin-Status
    def mode_changed(obj, data):
            h['g20'] = not data
            h['g21'] = data

note: type: delimited block -
en: # Make a component and pins
    h = hal.component("metric_status")
    h.newpin("g20", hal.HAL_BIT, hal.HAL_OUT)
    h.newpin("g21", hal.HAL_BIT, hal.HAL_OUT)
    h.ready()
de: # Erstelle eine Komponente und Pins
    h = hal.component("metric_status")
    h.newpin("g20", hal.HAL_BIT, hal.HAL_OUT)
    h.newpin("g21", hal.HAL_BIT, hal.HAL_OUT)
    h.ready()

note: type: delimited block -
en: # connect a GSTAT message to a callback function
    GSTAT.connect("metric-mode-changed",mode_changed)
de: # eine GSTAT-Nachricht mit einer Callback-Funktion verbinden
    GSTAT.connect("metric-mode-changed",mode_changed)

note: type: delimited block -
en: # force GSTAT to initialize states
    GSTAT.forced_update()
de: # GSTAT zwingen, Zustände zu initialisieren
    GSTAT.forced_update()

note: type: Plain text
en: This would be loaded with 'loadusr python PATH-TO-FILE/FILENAME.py' or if you need to wait for the pins to be made before continuing:
    `loadusr python -Wn metric_status PATH-TO-FILE/FILENAME.py`
    The pins would be: 'metric_status.g20' and 'metric_status.g21'.
de: Dies würde mit 'loadusr python PATH-TO-FILE/FILENAME.py' geladen werden oder wenn Sie warten müssen, bis die Pins hergestellt sind, bevor Sie fortfahren:
    'loadusr python -Wn metric_status PATH-TO-FILE/FILENAME.py'
    Die Pins lauten dann: 'metric_status.g20' und 'metric_status.g21'.

note: type: Title ===
en: GladeVCP Python extension code pattern
de: GladeVCP Python-Erweiterung Code-Muster

note: type: Plain text
en: This file assumes there are three GTK labels named:
de: In dieser Datei wird davon ausgegangen, dass es drei GTK-Labels mit Namen gibt:

note: type: Title ===
en: QtVCP Python extension code pattern
de: QtVCP Python-Erweiterungscode-Muster

note: type: Plain text
en: QtVCP extends GStat, so must be loaded differently but all the messages are available in QtVCP.
    This handler file assumes there are three QLabels named:
de: QtVCP erweitert GStat, muss also anders geladen werden, aber alle Meldungen sind in QtVCP verfügbar.
    Diese Handler-Datei geht davon aus, dass es drei QLabels mit Namen gibt:

note: type: Content of: <html><body><table><tbody><tr><td>
en: Messages
de: Nachrichten

note: type: Labeled list
en: *periodic*
de: *periodic* (engl. für periodisch)

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC is goes into estop.
de: '(gibt nichts zurück)' - Wird gesendet, wenn LinuxCNC in den Notaus geht.

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC comes out of estop.
de: '(gibt nichts zurück)' - Wird gesendet, wenn LinuxCNC aus dem Notaus heraus kommt.

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC is in machine on state.
de: '(gibt nichts zurück)' - Wird gesendet, wenn LinuxCNC im Zustand Maschine ein ist.

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC is in machine off state.
de: '(gibt nichts zurück)' - Wird gesendet, wenn sich LinuxCNC im ausgeschalteten Zustand befindet.

note: type: Plain text
en: '(returns string)' - Sent as each joint is homed.
de: '(returns string)' - Wird gesendet, wenn jeder Joint in die Ausgangsposition gebracht wird.

note: type: Plain text
en: '(returns nothing)' - Sent when all defined joints are homed.
de: '(gibt nichts zurück)' - Wird gesendet, wenn alle definierten Gelenke referenziert sind.

note: type: Plain text
en: '(returns string)' - Sends a list of joints not currently homed.
de: '(gibt eine Zeichenkette zurück)' - Sendet eine Liste von Gelenken, die derzeit nicht referenziert sind.

note: type: Plain text
en: '(returns string)' - Sent if LinuxCNC has been directed to override its limits.
de: '(returns string)' - Wird gesendet, wenn LinuxCNC angewiesen wurde, seine Grenzen zu überschreiten.

note: type: Plain text
en: '(returns bool, Python List)' - Sent when any hard limit is tripped.  bool indicates if any limit is tripped, the list shows all available joint's current limit values.
de: '(liefert bool, Python-Liste)' - Wird gesendet, wenn ein hartes Limit ausgelöst wird. bool zeigt an, dass ein Limit ausgelöst wurde, die Liste zeigt alle aktuellen Grenzwerte der verfügbaren Gelenke.

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC switches to manual mode.
de: '(returns nothing)' - Wird gesendet, wenn LinuxCNC in den manuellen Modus wechselt.

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC switches to MDI mode.
de: '(returns nothing)' - Wird gesendet, wenn LinuxCNC in den MDI-Modus wechselt.

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC switches to auto mode.
de: '(gibt nichts zurück)' - Wird gesendet, wenn LinuxCNC in den Auto-Modus wechselt.

note: type: Plain text
en: '(returns nothing)' - Sent when running a program or MDI
de: '(gibt nichts zurück)' - Wird gesendet, wenn ein Programm oder MDI ausgeführt wird

note: type: Plain text
en: '(returns nothing)' - Sent when a program or MDI stopped
de: '(gibt nichts zurück)' - Wird gesendet, wenn ein Programm oder MDI angehalten wurde

note: type: Plain text
en: '(returns nothing)' - Sent when there is a command error
de: '(returns nothing)' - Wird gesendet, wenn bei der Ausführung eines Befehls ein Fehler auftritt

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC's interpreter is running an MDI or program.
de: '(gibt nichts zurück)' - Wird gesendet, wenn der Interpreter von LinuxCNC ein MDI oder Programm ausführt.

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC's interpreter idle.
de: '(returns nothing)' - Wird gesendet, wenn der Interpreter von LinuxCNC im Leerlauf ist.

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC's interpreter is paused.
de: '(gibt nichts zurück)' - Wird gesendet, wenn der Interpreter von LinuxCNC pausiert ist.

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC's interpreter is reading.
de: '(gibt nichts zurück)' - Wird gesendet, wenn der Interpreter von LinuxCNC gerade liest.

note: type: Plain text
en: '(returns nothing)' - Sent when LinuxCNC's interpreter is waiting.
de: '(gibt nichts zurück)' - Wird gesendet, wenn der Interpreter von LinuxCNC wartet.

note: type: Plain text
en: '(returns float)' - Sent when jog rate has changed.
    LinuxCNC does not have an internal jog rate.
    This is GStat's internal jog rate.
    It is expected to be in the machine's native units regardless of the current unit mode .
de: '(gibt Float zurück)' - Wird gesendet, wenn sich die Jog-Rate geändert hat.
    LinuxCNC verfügt nicht über eine interne Jog-Geschwindigkeit.
    Dies ist die interne Jog-Rate von GStat.
    Es wird erwartet, dass sie in den nativen Einheiten der Maschine angegeben wird, unabhängig vom aktuellen Einheitenmodus.

note: type: Plain text
en: '(returns float)' - Sent when the angular jog rate has changed.
    LinuxCNC does not have an internal angular jog rate.
    This is GStat's internal jog rate.
    It is expected to be in the machine's native units regardless of the current unit mode .
de: '(gibt Float zurück)' - Wird gesendet, wenn sich die Jog-Rate geändert hat.
    LinuxCNC verfügt über keine interne Jog-Geschwindigkeit.
    Dies ist die interne Jog-Rate von GStat.
    Es wird erwartet, dass sie in den nativen Einheiten der Maschine angegeben wird, unabhängig vom aktuellen Einheitenmodus.

note: type: Plain text
en: '(returns float, text)' - Sent when jog increment has changed.
    LinuxCNC does not have an internal jog increment.
    This is GStat's internal jog increment.
    It is expected to be in the machine's native units regardless of the current unit mode .
de: '(liefert Float, Text)' - Wird gesendet, wenn sich die Schrittweite geändert hat.
    LinuxCNC verfügt über keine interne Schrittweite.
    Dies ist die interne Schrittweite von GStat.
    Es wird erwartet, dass es in den nativen Einheiten der Maschine angegeben wird, unabhängig vom aktuellen Einheitenmodus.

note: type: Plain text
en: '(returns float, text)' - Sent when angular jog increment has changed.
    LinuxCNC does not have an internal angular jog increment.
    This is GStat's internal angular jog increment.
    It is expected to be in the machine's native units regardless of the current unit mode .
de: '(gibt float, text zurück)' - Wird gesendet, wenn sich das Winkeljog-Inkrement geändert hat.
    LinuxCNC hat kein internes Winkeljog-Inkrement.
    Dies ist das interne Winkeljog-Inkrement von GStat.
    Es wird erwartet, dass es sich unabhängig vom aktuellen Einheitenmodus in den nativen Einheiten der Maschine befindet.

note: type: Plain text
en: '(returns bool)' - Sent when program is paused/unpaused.
de: '(gibt bool zurück)' - Wird gesendet, wenn das Programm pausiert/unpausiert wird.

note: type: Plain text
en: '(returns bool)' - Sent when optional stop is set/unset
de: '(gibt bool zurück)' - Wird gesendet, wenn der optionale Stopp gesetzt/entfernt wird

note: type: Plain text
en: '(returns bool)' - sent when block delete is set/unset.
de: '(gibt bool zurück)' - wird gesendet, wenn der Block delete gesetzt/gelöscht wird.

note: type: Plain text
en: '(returns string)' - Sent when LinuxCNC has loaded a file
de: '(liefert String)' - Wird gesendet, wenn LinuxCNC eine Datei geladen hat

note: type: Plain text
en: '(returns nothing)' - Sent when there is a request to reload the display
de: '(gibt nichts zurück)' - Wird gesendet, wenn eine Anforderung zum Neuladen der Anzeige vorliegt

note: type: Plain text
en: '(returns integer)' - Sent when LinuxCNC has read a new line.
    LinuxCNC does not update this for every type of line.
de: '(gibt eine ganze Zahl zurück)' - Wird gesendet, wenn LinuxCNC eine neue Zeile gelesen hat.
    LinuxCNC aktualisiert diese nicht für jede Art von Zeile.

note: type: Plain text
en: '(returns integer)' - Sent when the tool has changed.
de: '(gibt ganze Zahl zurück)' - Wird gesendet, wenn sich das Werkzeug geändert hat.

note: type: Plain text
en: '(returns Python object)' - Sent when current tool info changes.
de: '(gibt Python-Objekt zurück)' - Wird gesendet, wenn sich die aktuelle Werkzeuginformation ändert.

note: type: Plain text
en: '(returns Python object)' - Sent when the current tool offsets change.
de: '(gibt Python-Objekt zurück)' - Wird gesendet, wenn sich der aktuelle Werkzeugversatz ändert.

note: type: Plain text
en: '(returns integer)' - Sent when motion's mode has changed
de: '(gibt ganze Zahl zurück)' - Wird gesendet, wenn sich der Modus der Bewegung geändert hat

note: type: Plain text
en: '(returns integer, bool, integer, bool)' - (spindle num, spindle on state, requested spindle direction & rate, at-speed state)
    Sent when spindle direction or running status changes or at-speed changes.
de: '(gibt Integer, Bool, Integer, Bool zurück)' - (Spindelnummer, Zustand der eingeschalteten Spindel, angeforderte Spindelrichtung und -geschwindigkeit, Zustand bei Drehzahl)
    Wird gesendet, wenn sich die Spindelrichtung oder der Laufstatus ändert oder die Drehzahl sich ändert.

note: type: Plain text
en: '(returns float)' - Sent when the current feed rate changes.
de: '(liefert Float)' - Wird gesendet, wenn sich die aktuelle Vorschubgeschwindigkeit ändert.

note: type: Plain text
en: '(returns float)' - Sent when the current requested RPM changes
de: '(liefert Float)' - Wird gesendet, wenn sich die aktuell angeforderte Drehzahl ändert

note: type: Plain text
en: '(returns float)' - Sent when the actual RPM changes based on the HAL pin 'spindle.0.speed-in'.
de: '(returns float)' - Wird gesendet, wenn sich die tatsächliche Drehzahl basierend auf dem HAL-Pin `spindle.0.speed-in` ändert.

note: type: Plain text
en: '(returns float)' - Sent when the spindle override value changes
    in percent
de: '(returns float)' - Wird gesendet, wenn sich der Spindel-Override-Wert ändert
    in Prozent

note: type: Plain text
en: '(returns float)' - Sent when the feed override value changes
    in percent
de: '(returns float)' – Wird gesendet, wenn sich der Feed-Override-Wert ändert
    in Prozent

note: type: Plain text
en: '(returns float)' - Sent when the rapid override value changes
    in percent (0-100)
de: '(returns float)' – Wird gesendet, wenn sich der Rapid-Override-Wert ändert
    in Prozent (0-100)

note: type: Plain text
en: '(returns float)' - Sent when the maximum velocity override value changes
    in units per minute
de: '(returns float)' - Wird gesendet, wenn sich der Override-Wert der maximalen Geschwindigkeit ändert
    in Einheiten pro Minute

note: type: Plain text
en: '(returns bool)' - Sent when feed hold status changes
de: '(returns bool)' - Wird gesendet, wenn sich der Feed-Hold-Status ändert

note: type: Plain text
en: '(returns bool)' - Sent when G93 status changes
    (inverse time mode)
de: '(gibt bool zurück)' - Wird gesendet, wenn sich der G93-Status ändert
    (inverser Zeitmodus)

note: type: Plain text
en: '(returns bool)' - Sent when G94 status changes
    (feed per minute mode)
de: '(returns bool)' - Wird gesendet, wenn sich der G94-Status ändert
    (Vorschub pro Minute Modus)

note: type: Plain text
en: '(returns bool)' - Sent when G95 status changes
    (feed per revolution mode)
de: '(returns bool)' - Wird gesendet, wenn sich der G95-Status ändert
    (Vorschub pro Umdrehung Modus)

note: type: Plain text
en: '(returns bool)' - Sent when G96 status changes
    (constant surface feed mode)
de: '(liefert bool)' - Wird gesendet, wenn sich der G96-Status ändert +
    (Modus konstanter Oberflächenvorschub, engl. constant surface feed mode)

note: type: Plain text
en: '(returns bool)' - Sent when G97 status changes
    (constant RPM mode)
de: '(returns bool)' - Wird gesendet, wenn sich der G97-Status ändert
    (Modus mit konstanter Drehzahl, engl. constant RPM mode)

note: type: Plain text
en: '(returns bool)' - Sent when G8 status changes
    display X in radius mode
de: '(gibt bool zurück)' - Wird gesendet, wenn sich der G8-Status ändert +
    Anzeige X in Radian - Modus

note: type: Plain text
en: '(returns bool)' - Sent when G7 status changes
    display X in Diameter mode
de: '(gibt bool zurück)' - Wird gesendet, wenn sich der G7-Status ändert
    Anzeige X im Diameter-Modus

note: type: Plain text
en: '(returns bool)' - Sent when flood coolant state changes.
de: '(gibt boolean zurück)' - Wird gesendet, wenn sich der Flutkühlmittelzustand ändert.

note: type: Plain text
en: '(returns bool )' - Sent when mist coolant state changes.
de: '(liefert boolean )' - Wird gesendet, wenn sich der Zustand des Nebelkühlmittels ändert.

note: type: Plain text
en: '(returns string)' - Sent when active M-codes change
de: '(gibt String zurück)' - Wird gesendet, wenn sich aktive M-Codes ändern

note: type: Plain text
en: '(returns string)' - Sent when active G-code change
de: '(gibt String zurück)' - Wird gesendet, wenn sich der aktive G-Code ändert

note: type: Plain text
en: '(returns bool)' - Sent when G21 status changes
de: '(gibt bool zurück)' - Wird gesendet, wenn sich der G21-Status ändert

note: type: Plain text
en: '(returns string)' - Sent when the reference coordinate system (G5x) changes
de: '(gibt String zurück)' - Wird gesendet, wenn sich das Referenzkoordinatensystem (G5x) ändert

note: type: Plain text
en: '(returns string, string)' - intended to be sent when an MDI line is selected by user.
    This depends on the widget/libraries used.
de: '(returns string, string)' - soll gesendet werden, wenn eine MDI-Zeile vom Benutzer ausgewählt wird. +
    Dies hängt von den verwendeten Widgets / Bibliotheken ab.

note: type: Plain text
en: '(returns integer)' - intended to be sent when a G-code line is selected by user.
    This depends on the widget/libraries used.
de: '(gibt eine ganze Zahl zurück)' - soll gesendet werden, wenn eine G-Code-Zeile vom Benutzer ausgewählt wird. +
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns integer)' - intended to be sent when graphics line is selected by user.
    This depends on the widget/libraries used.
de: '(gibt eine ganze Zahl zurück)' - soll gesendet werden, wenn der Benutzer eine Grafikzeile auswählt. +
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns integer)' - intended to return percentage done of loading a program or running a program.
    This depends on the widget/libraries used.
de: '(gibt eine ganze Zahl zurück)' - soll den Prozentsatz zurückgeben, der beim Laden eines Programms oder bei der Ausführung eines Programms erreicht wurde.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns string)' - intended to be sent when a G-code error is found when loading.
    This depends on the widget/libraries used.
de: '(gibt String zurück)' - soll gesendet werden, wenn beim Laden ein G-Code-Fehler gefunden wird.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns string)' - intended to be sent when G-code is loaded.
    This depends on the widget/libraries used.
de: '(gibt String zurück)' - soll gesendet werden, wenn G-Code geladen wird.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns string, Python dict or None)' - intended to be sent when graphics view is changed.
    This depends on the widget/libraries used.
de: '(liefert string, Python dict oder None)' - soll gesendet werden, wenn die Grafikansicht geändert wird. 
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns None)' - intended to be sent when an MDI history needs to be reloaded.
    This depends on the widget/libraries used.
de: '(gibt keine zurück)' - soll gesendet werden, wenn ein MDI-Verlauf neu geladen werden muss.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns None)' - intended to be sent when machine log has changed.
    This depends on the widget/libraries used.
de: '(gibt keine zurück)' - soll gesendet werden, wenn sich das Maschinenprotokoll geändert hat.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns None)' - intended to be sent when moving the cursor one line up in G-code display.
    This depends on the widget/libraries used.
de: '(gibt None zurück)' - soll gesendet werden, wenn der Cursor in der G-Code-Anzeige um eine Zeile nach oben bewegt wird.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns None)' - intended to be sent when moving the cursor one line down in G-code display.
    This depends on the widget/libraries used.
de: '(gibt None zurück)' - soll gesendet werden, wenn der Cursor in der G-Code-Anzeige eine Zeile nach unten bewegt wird.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns Python dict)' - intended to be sent when requesting a gui dialog.
    It uses a Python dict for communication. The dict must include the following keyname pair: +
de: '(gibt Python dict zurück)' - soll gesendet werden, wenn ein GUI-Dialog angefordert wird.
    Es verwendet ein Python-Dict für die Kommunikation. Das dict muss das folgende Keyname-Paar enthalten: +

note: type: Plain text
en: NAME: 'requested dialog name'
    The dict usually has several keyname pairs - it depends on the dialog.
    dialogs return information using a general message
    This depends on the widget/libraries used.
de: NAME: 'angeforderter Dialogname'
    Das dict (engl. kurz für dictionary, eine Python Funktionalität) hat normalerweise mehrere Keyname-Paare - das hängt vom Dialog ab.
    Dialoge geben Informationen über eine allgemeine Nachricht zurück
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns bool, string, Python object)' - intended to be sent when requesting an overlay to be put over the display.
    This depends on the widget/libraries used.
de: '(gibt bool, string, Python object)' - soll gesendet werden, wenn ein Overlay über die Anzeige gelegt werden soll.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns string)' - intended to be sent when requesting a specific sound file to be played.
    This depends on the widget/libraries used.
de: '(returns string)' - soll gesendet werden, wenn eine bestimmte Sounddatei angefordert wird, die abgespielt werden soll.
    Dies hängt von den verwendeten Widgets / Bibliotheken ab.

note: type: Plain text
en: '(returns string)' - intended to be sent when requesting a on screen keyboard.
    This depends on the widget/libraries used.
de: '(gibt String zurück)' - soll gesendet werden, wenn eine Bildschirmtastatur angefordert wird.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns integer)' - intended to be sent when requesting a DRO widget to change its reference.
    0 = machine, 1 = relative, 3 = distance-to-go
    This depends on the widget/libraries used.
de: '(liefert eine ganze Zahl)' - soll gesendet werden, wenn ein DRO-Widget aufgefordert wird, seine Referenz zu ändern.
    0 = Maschine, 1 = relativ, 3 = Restweg
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns None)' - intended to be sent when requesting the screen preferences to be displayed.
    This depends on the widget/libraries used.
de: '(returns string)' - soll gesendet werden, wenn eine bestimmte Sounddatei angefordert wird, die abgespielt werden soll.
    Dies hängt von den verwendeten Widgets / Bibliotheken ab.

note: type: Plain text
en: '(returns None)' - intended to be sent when requesting LinuxCNC to shutdown.
    This depends on the widget/libraries used.
de: '(gibt None zurück)' - soll gesendet werden, wenn LinuxCNC zum Herunterfahren aufgefordert wird.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns integer, string)' - intended to be sent when an error has been reported .
    integer represents the kind of error. ERROR, TEXT or DISPLAY
    string is the actual error message.
    This depends on the widget/libraries used.
de: '(liefert Integer, String)' - soll gesendet werden, wenn ein Fehler gemeldet wurde.
    integer steht für die Art des Fehlers. ERROR, TEXT oder DISPLAY
    string ist die eigentliche Fehlermeldung.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns Python dict)' - intended to be sent when message must be sent that is not covered by a more specific message.
    General message should be used a sparsely as reasonable because all object connected to it will have to parse it.
    It uses a Python dict for communication.
    The dict should include and be checked for a unique id  keyname pair: +
de: '(gibt Python dict zurück)' - soll gesendet werden, wenn eine Nachricht gesendet werden muss, die nicht von einer spezifischeren Nachricht abgedeckt wird.
    Die allgemeine Nachricht sollte spärlich als vernünftig verwendet werden, da alle damit verbundenen Objekte sie analysieren müssen.
    Es verwendet ein Python-Diktum für die Kommunikation.
    Das Diktat sollte ein eindeutiges ID-Schlüsselnamenpaar enthalten und darauf überprüft werden: +

note: type: Plain text
en: ID: 'UNIQUE_ID_CODE'
    The dict usually has more keyname pair - it depends on implementation.
de: Kennung: 'UNIQUE_ID_CODE'
    Das Dikt hat normalerweise mehr Schlüsselnamenpaar - es hängt von der Implementierung ab.

note: type: Labeled list
en: *forced-update*
de: *erzwungene Aktualisierung* (engl. forced update)

note: type: Plain text
en: '(returns None)' - intended to be sent when one wishes to initialize or arbitrarily update an object.
    This depends on the widget/libraries used.
de: (gibt keine zurück)" - soll gesendet werden, wenn ein Objekt initialisiert oder willkürlich aktualisiert werden soll.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Labeled list
en: *progress*
de: *Fortschritt* (engl. progress)

note: type: Plain text
en: '(returns integer, Python object)' - intended to be sent to indicate the progress of a filter program.
    This depends on the widget/libraries used.
de: '(liefert Integer, Python-Objekt)' - soll gesendet werden, um den Fortschritt eines Filterprogramms anzuzeigen.
    Dies hängt von den verwendeten Widgets/Bibliotheken ab.

note: type: Plain text
en: '(returns Python list)' - returns a list of all joints current following error.
de: '(gibt eine Python-Liste zurück)' - gibt eine Liste aller Gelenke zurück, die aktuell einem Fehler folgen.

note: type: Plain text
en: These are convenience functions that are commonly used in programming.
de: Dies sind Komfortfunktionen, die in der Programmierung häufig verwendet werden.

note: type: Plain text
en: '(float)' - LinuxCNC has no internal concept of jog rate -each GUI has its own. This is not always convenient.
    This function allows one to set a jog rate for all objects connected to the signal 'jograte-changed'.
    It defaults to 15.
    GSTAT.set_jog_rate(10) would set the jog rate to 10 machine-units-per-minute and emit the jograte-changed signal.
de: '(float)' - LinuxCNC hat kein internes Konzept für die Jog-Rate - jede GUI hat ihre eigene. Dies ist nicht immer bequem.
    Diese Funktion ermöglicht es, eine Tipprate für alle Objekte einzustellen, die mit dem Signal „Tipp-geändert“ verbunden sind.
    Der Standardwert ist 15.
    GSTAT.set_jog_rate(10) würde die Jog-Rate auf 10 Maschineneinheiten pro Minute setzen und das Jograte-Changed-Signal ausgeben.

note: type: Plain text
en: '(Nothing)' - x = GSTAT.get_jograte() would return GSTAT's current internal jograte (float).
de: '(Nothing)' - x = GSTAT.get_jograte() würde die aktuelle interne Jograte von GSTAT (float) zurückgeben.

note: type: Labeled list
en: *is_all_homed*
de: *ist_all_homed*

note: type: Plain text
en: '(nothing)' - This will return the current state of all_homed (BOOL).
de: '(nothing)' - Dies gibt den aktuellen Status von all_homed (BOOL) zurück.

note: type: Plain text
en: '(nothing)' - This will return the current state of machine (BOOL).
de: '(nothing)' - Dies gibt den aktuellen Zustand der Maschine zurück (BOOL).

note: type: Plain text
en: '(nothing)' - This will return the state of Estop (BOOL)
de: '(nichts)' - Gibt den Status von Estop zurück (BOOL)

note: type: Plain text
en: '(tool,axis,value)' - This command will
de: '(Werkzeug,Achse,Wert)' - Dieser Befehl wird

note: type: Plain text
en: record the current mode,
de: den aktuellen Modus aufzeichnen,

note: type: Plain text
en: switch to MDI mode,
de: Wechsel zu MDI-Modus,

note: type: Plain text
en: invoke the MDI command: G10 L10 P[TOOL] [AXIS] [VALUE],
de: den MDI-Befehl aufrufen: G10 L10 P[WERKZEUG] [ACHSE] [WERT],

note: type: Plain text
en: wait for it to complete,
de: warten, bis der Vorgang abgeschlossen ist,

note: type: Plain text
en: invoke G43,
de: G43 aufrufen,

note: type: Plain text
en: switch back to the original mode.
de: zurück in den ursprünglichen Modus wechseln.

note: type: Plain text
en: '(axis,value)' - This command will
de: '(Achse,Wert)' - Dieser Befehl wird

note: type: Plain text
en: invoke the MDI command: G10 L20 P0 [AXIS] [VALUE],
de: den MDI-Befehl aufzurufen: G10 L20 P0 [ACHSE] [WERT],

note: type: Plain text
en: switch back to the original mode,
de: zurück in den ursprünglichen Modus wechseln,

note: type: Plain text
en: emit a 'reload-display' signal.
de: ein 'Reload-Display'-Signal aussenden.

note: type: Plain text
en: '(axis_number,direction, distance)' - This will jog an axis continuously or at a set distance.
    You must be in the proper mode to jog.
de: '(Achsennummer, Richtung, Abstand)' - Diese Funktion bewegt eine Achse kontinuierlich oder in einem bestimmten Abstand.
    Sie müssen sich im richtigen Modus befinden, um zu joggen.

note: type: Plain text
en: '(mode)' - This function checks for required LinuxCNC mode.
    It returns a Python tuple (state, mode)
    mode will be set the mode the system is in
    state will set to:
de: '(mode)' - Diese Funktion prüft, ob der LinuxCNC-Modus erforderlich ist.
    Es gibt ein Python-Tupel zurück (Status, Modus)
    -Modus wird in dem Modus eingestellt, in dem sich das System befindet
    wird wie folgt festgelegt:

note: type: Plain text
en: false if mode is 0
de: false, wenn mode 0 ist

note: type: Plain text
en: false if machine is busy
de: false, wenn die Maschine beschäftigt ist

note: type: Plain text
en: true if LinuxCNC is in the requested mode
de: wahr, wenn LinuxCNC im angeforderten Modus ist

note: type: Plain text
en: None if possible to change, but not in requested mode
de: Keine, wenn eine Änderung möglich ist, aber nicht im gewünschten Modus

note: type: Plain text
en: '(nothing)' - returns integer: the current LinuxCNC mode. +
de: '(nothing)' - gibt eine ganze Zahl zurück: den aktuellen LinuxCNC-Modus. +

note: type: Plain text
en: '(integer)' - records the selected joint number internally.
    requests the joint to be selected by emitting the
    'joint-selection-changed' message.
de: '(Integer)' - speichert intern die ausgewählte Gelenknummer.
    fordert die Auswahl des Gelenks an, indem er die Meldung
    Nachricht "Gelenkauswahl geändert".

note: type: Plain text
en: '(string)' - records the selected axis letter internally.
    Requests the axis to be selected by emitting the 'axis-selection-changed' message.
de: '(string)' - speichert intern den ausgewählten Achsenbuchstaben.
    Fordert die Auswahl der Achse durch die Meldung "Achsenauswahl-geändert" an.

note: type: Plain text
en: '(None)' - returns string representing the internal selected axis letter.
de: '(None)' - gibt eine Zeichenkette zurück, die den intern ausgewählten Achsenbuchstaben darstellt.

note: type: Title ==
en: Known Issues
de: Bekannte Probleme

note: type: Plain text
en: Some status points are reported wrongly during a running program because the interpreter runs ahead of the current position of a running program.  This will hopefully be resolved with the merge of state-tags branch.
de: Einige Statuspunkte werden während eines laufenden Programms falsch gemeldet, da der Interpreter der aktuellen Position eines laufenden Programms vorausläuft.  Dies wird hoffentlich mit der Integration der State-Tags-Entwicklungs-Zweiges behoben.

note: type: TH
en: HAL User Interface
de: HAL-Benutzeroberfläche

note: type: Plain text
en: Halui is a HAL based user interface for LinuxCNC, it connects HAL pins to NML commands. Most of the functionality (buttons, indicators etc.) that is provided by a traditional GUI (AXIS, GMOCCAPY, QtDragon, etc.), is provided by HAL pins in Halui.
de: Halui ist eine HAL-basierte Benutzeroberfläche für LinuxCNC, es verbindet HAL-Pins mit NML-Befehlen. Die meisten Funktionen (Schaltflächen, Anzeigen usw.), wie von einer traditionellen GUI (AXIS, GMOCCAPY, QtDragon, etc.) zur Verfügung gestellt, werden von HAL-Pins in Halui übernommen.

note: type: Plain text
en: The easiest way to add halui is to add the following to the [HAL] section of the INI file:
de: Der einfachste Weg, halui hinzuzufügen, besteht darin, das Folgende in den [HAL]-Abschnitt der INI-Datei einzufügen:

note: type: Plain text
en: An alternate way to invoke it (specially if you generate the configuration with StepConf) is to include the following in your `custom.hal` file.
    Make sure you use the correct path to your INI file.
de: Ein alternativer Weg, es aufzurufen (besonders, wenn Sie die Konfiguration mit StepConf erzeugen), ist, das Folgende in Ihre `custom.hal`-Datei aufzunehmen.
    Stellen Sie sicher, dass Sie den richtigen Pfad zu Ihrer INI-Datei verwenden.

note: type: Plain text
en: Sometimes the user wants to add more complicated tasks to be performed by the activation of a HAL pin.  This is possible by adding MDI commands to the INI file in the [HALUI] section.  Example:
de: Manchmal möchte der Benutzer kompliziertere Aufgaben hinzufügen, die durch die Aktivierung eines HAL-Pins ausgeführt werden sollen.  Dies ist durch Hinzufügen von MDI-Befehlen in die INI-Datei im Abschnitt [HALUI] möglich.  Beispiel:

note: type: Plain text
en: When halui starts it will read the `MDI_COMMAND` fields in the INI and export pins from 00 to the number of `MDI_COMMAND` 's found in the INI, up to a maximum of 64 commands. These pins can be connected like any HAL pins. A common method is to use buttons provided by virtual control panels like shown in the example <<code:Example-HAL-file-connections, Example for MDI_COMMAND connections>>.
de: Wenn halui startet, liest es die `MDI_COMMAND'-Felder in der INI und exportiert Pins von 00 bis zur Anzahl der `MDI_COMMAND's, die in der INI gefunden wurden, bis zu einem Maximum von 64 Befehlen. Diese Pins können wie alle HAL-Pins angeschlossen werden. Eine gängige Methode ist die Verwendung von Schaltflächen, die von virtuellen Bedienfeldern bereitgestellt werden, wie im <<code:Example-HAL-file-connections, Beispiel für MDI_COMMAND Verbindungen>> gezeigt.

note: type: Block title
en: Example for MDI_COMMAND connections
de: Beispiel für MDI_COMMAND-Verbindungen

note: type: Block title
en: HAL file
de: HAL-Datei

note: type: Block title
en: Nets connecting the `halui.mdi-command-NN` pins provided by halui.
de: Netze zum Verbinden der von halui bereitgestellten `halui.mdi-command-NN`-Pins.

note: type: delimited block =
en: When a halui MDI pin is set (pulsed) true, halui will send the MDI command defined in the INI.  This will not always succeed depending on the current operating mode (e.g., while in AUTO halui can't successfully send MDI commands).
de: Wenn ein Halui-MDI-Pin auf true gesetzt (gepulst) wird, sendet halui den in der INI definierten MDI-Befehl.  Dies wird je nach aktuellem Betriebsmodus nicht immer gelingen (z.B. während in AUTO halui MDI-Befehle nicht erfolgreich senden kann).

note: type: Title ==
en: Example Configuration
de: Beispiel-Konfiguration

note: type: delimited block =
en: An example sim config (`configs/sim/axis/halui_pyvcp/halui.ini`)  is included in the distribution.
de: Eine Beispiel-Sim-Konfiguration (`configs/sim/axis/halui_pyvcp/halui.ini`) ist in der Distribution enthalten.

note: type: Title ==
en: Halui Pin Reference
de: Halui-Pin-Referenz

note: type: delimited block =
en: All halui pins are also documented in the halui man page:
de: Alle halui-Pins sind auch in der halui-Manualseite dokumentiert:

note: type: Plain text
en: Abort
de: Abbrechen

note: type: Plain text
en: 'halui.abort' (bit, in) - pin to send an abort message (clears out most errors)
de: halui.abort' (bit, in) - Pin zum Senden einer Abbruchmeldung (löscht die meisten Fehler)

note: type: Title ===
en: E-Stop
de: Notaus (engl. E-Stop)

note: type: Plain text
en: 'halui.estop.activate' (bit, in) - pin for requesting E-Stop
de: halui.estop.activate' (bit, in) - Pin für die Anforderung des Notausschalters

note: type: Plain text
en: 'halui.estop.is-activated' (bit, out) - indicates E-stop reset
de: halui.estop.is-activated' (Bit, out) - zeigt an, dass der Not-Aus-Schalter zurückgesetzt wurde

note: type: Plain text
en: 'halui.estop.reset' (bit, in) - pin for requesting E-Stop reset
de: halui.estop.reset' (bit, in) - Pin für die Anforderung eines Not-Aus-Resets

note: type: Plain text
en: 'halui.feed-override.count-enable' (bit, in) - must be true for 'counts' or 'direct-value' to work.
de: 'halui.feed-override.count-enable' (bit, in) - muss wahr sein, damit 'counts' oder 'direct-value' funktioniert.

note: type: Plain text
en: 'halui.feed-override.counts' (s32, in) - counts * scale = FO percentage. Can be used with an encoder or 'direct-value'.
de: 'halui.feed-override.counts' (s32, in) - counts * scale = FO percentage. Kann mit einem Encoder oder 'direct-value' verwendet werden.

note: type: Plain text
en: 'halui.feed-override.decrease' (bit, in) - pin for decreasing the FO (-=scale)
de: 'halui.feed-override.decrease' (bit, in) - Pin zum Verringern des FO (-=Skala)

note: type: Plain text
en: 'halui.feed-override.increase' (bit, in) - pin for increasing the FO (+=scale)
de: 'halui.feed-override.increase' (bit, in) - Pin zur Erhöhung des FO (+=Skala)

note: type: Plain text
en: 'halui.feed-override.reset' (bit, in) - pin for resetting the FO (scale=1.0)
de: 'halui.feed-override.reset' (bit, in) - Pin zum Zurücksetzen des FO (scale=1.0)

note: type: Plain text
en: 'halui.feed-override.direct-value' (bit, in) - false when using encoder to change counts, true when setting counts directly.
de: 'halui.feed-override.direct-value' (bit, in) - falsch, wenn der Encoder verwendet wird, um die Anzahl zu ändern, wahr, wenn die Anzahl direkt eingestellt wird.

note: type: Plain text
en: 'halui.feed-override.scale' (float, in) - pin for setting the scale for increase and decrease of 'feed-override'.
de: 'halui.feed-override.scale' (float, in) - Pin zum Einstellen der Skala für die Erhöhung und Verringerung des 'feed-override'.

note: type: Plain text
en: 'halui.feed-override.value' (float, out) - current FO value
de: 'halui.feed-override.value' (float, out) - aktueller FO-Wert

note: type: Title ===
en: Mist
de: Nebel (engl. mist)

note: type: Plain text
en: 'halui.mist.is-on' (bit, out) - indicates mist is on
de: 'halui.mist.is-on' (bit, out) - zeigt an, dass Nebel eingeschaltet ist

note: type: Plain text
en: 'halui.mist.off' (bit, in) - pin for requesting mist off
de: 'halui.mist.off' (bit, in) - Pin zum Anfordern von Nebel

note: type: Plain text
en: 'halui.mist.on' (bit, in) - pin for requesting mist on
de: halui.mist.on' (bit, in) - Pin zur Abfrage von Nebel ein

note: type: Title ===
en: Flood
de: Flut-Kühlmittel (engl. flood)

note: type: Plain text
en: 'halui.flood.is-on' (bit, out) - indicates flood is on
de: 'halui.flood.is-on' (bit, out) - zeigt an, dass die Flut an ist

note: type: Plain text
en: 'halui.flood.off' (bit, in) - pin for requesting flood off
de: 'halui.flood.off' (bit, in) - Pin zum Anforderung des Ausschaltens der Flut

note: type: Plain text
en: 'halui.flood.on' (bit, in) - pin for requesting flood on
de: 'halui.flood.on' (bit, in) - Pin für die Anforderung für das Einschalten der Flut

note: type: Plain text
en: 'halui.home-all' (bit, in) - pin for requesting all axis to home. This pin will only be there if HOME_SEQUENCE is set in the INI file.
de: 'halui.home-all' (bit, in) - Pin zum Anfordern einer Referenzfahrt aller Achsen. Dieser Pin ist nur vorhanden, wenn HOME_SEQUENCE in der INI-Datei festgelegt ist.

note: type: Title ===
en: Lube
de: Schmiermittel (engl. lube)

note: type: Plain text
en: 'halui.lube.is-on' (bit, out) - indicates lube is on
de: halui.lube.is-on' (bit, out) - zeigt an, dass das Schmiermittel eingeschaltet ist

note: type: Plain text
en: 'halui.lube.off' (bit, in) - pin for requesting lube off
de: halui.lube.off' (bit, in) - Pin für die Anforderung von Schmiermittel aus

note: type: Plain text
en: 'halui.lube.on' (bit, in) - pin for requesting lube on
de: halui.lube.on" (bit, in) - Stift für die Anforderung von Schmiermittel auf

note: type: Title ====
en: Machine
de: Maschine

note: type: Plain text
en: 'halui.machine.units-per-mm' (float out) - pin for machine units-per-mm (inch:1/25.4, mm:1) according to inifile setting: [TRAJ]LINEAR_UNITS
de: halui.machine.units-per-mm' (float out) - Pin für Maschineneinheiten-pro-mm (inch:1/25.4, mm:1) entsprechend der inifile-Einstellung: [TRAJ]LINEAR_UNITS

note: type: Plain text
en: 'halui.machine.is-on' (bit, out) - indicates machine on
de: halui.machine.is-on' (bit, out) - zeigt an, dass die Maschine eingeschaltet ist

note: type: Plain text
en: 'halui.machine.off' (bit, in) - pin for requesting machine off
de: 'halui.machine.off' (bit, in) - Pin zum Anfordern der Maschinenabschaltung

note: type: Plain text
en: 'halui.machine.on' (bit, in) - pin for requesting machine on
de: 'halui.machine.on' (bit, in) - Pin zum Anfordern der Maschinen-Einschaltung

note: type: Plain text
en: The maximum linear velocity can be adjusted from 0 to the MAX_VELOCITY that is set in the [TRAJ] section of the INI file.
de: Die maximale lineare Geschwindigkeit kann zwischen 0 und der MAX_VELOCITY eingestellt werden, die im Abschnitt [TRAJ] der INI-Datei festgelegt ist.

note: type: Plain text
en: 'halui.max-velocity.count-enable' (bit, in) - must be true for 'counts' or 'direct-value' to work.
de: 'halui.max-velocity.count-enable' (bit, in) - muss true sein, damit 'counts' oder 'direct-value' funktionieren.

note: type: Plain text
en: 'halui.max-velocity.counts' (s32, in) - counts * scale = MV percentage. Can be used with an encoder or 'direct-value'.
de: 'halui.max-velocity.counts' (s32, in) - counts * scale = MV percentage. Kann mit einem Encoder oder 'direct-value' verwendet werden.

note: type: Plain text
en: 'halui.max-velocity.direct-value' (bit, in) - false when using encoder to change counts, true when setting counts directly.
de: 'halui.max-velocity.direct-value' (bit, in) - false bei Verwendung des Encoders zum Ändern der Anzahl, true beim direkten Festlegen von Zählungen.

note: type: Plain text
en: 'halui.max-velocity.decrease' (bit, in) - pin for decreasing max velocity
de: 'halui.max-velocity.decrease' (bit, in) - Pin zur Verringerung der maximalen Geschwindigkeit

note: type: Plain text
en: 'halui.max-velocity.increase' (bit, in) - pin for increasing max velocity
de: 'halui.max-velocity.increase' (bit, in) - Pin zur Erhöhung der maximalen Geschwindigkeit

note: type: Plain text
en: 'halui.max-velocity.scale' (float, in) - the amount applied to the current maximum velocity with each transition from off to on of the increase or decrease pin in machine units per second.
de: 'halui.max-velocity.scale' (float, in) - der Betrag, der auf die aktuelle maximale Geschwindigkeit bei jedem Übergang von Aus zu Ein des An- oder Abnahmestiftes in Maschineneinheiten pro Sekunde angewendet wird.

note: type: Plain text
en: 'halui.max-velocity.value' (float, out) - is the maximum linear velocity in machine units per second.
de: 'halui.max-velocity.value' (float, out) - ist die maximale lineare Geschwindigkeit in Maschineneinheiten pro Sekunde.

note: type: Plain text
en: 'halui.mdi-command-_<nn>_' (bit, in) - halui will try to send the MDI command defined in the INI. _<nn>_ is a two  digit number  starting  at 00.
    If the command succeeds then it will place LinuxCNC in the MDI mode and then back to Manual mode.
    If no [HALUI]MDI_COMMAND variables are set in the  ini  file, no halui.mdi-command-<nn> pins will be exported by halui.
de: halui.mdi-command-<nn>' (bit, in) - halui versucht, den in der INI-Datei definierten MDI-Befehl zu senden. <nn> ist eine zweistellige Zahl, die bei 00 beginnt.
    Wenn das Kommando erfolgreich ist, dann wird es LinuxCNC in den MDI-Modus setzen und dann zurück in den manuellen Modus.
    Wenn keine [HALUI]MDI_COMMAND Variablen in der INI-Datei gesetzt sind, werden keine halui.mdi-command-<nn> Pins von halui exportiert.

note: type: Title ===
en: Joint
de: Gelenk

note: type: Plain text
en: _N_ = joint number (0 ... num_joints-1)
    Example:
de: _N_ = Gelenknummer (0 ... num_joints-1)
    Beispiel:

note: type: Plain text
en: 'halui.joint._N_.select' (bit in) - pin for selecting joint _N_
de: 'halui.joint.N.select' (Bit in) - Pin zur Auswahl von Gelenk N

note: type: Plain text
en: 'halui.joint._N_.is-selected' (bit out) - status pin that joint _N_ is selected
de: 'halui.joint.N.is-s selected' (bit out) – Status-Pin, dass Gelenk N ausgewählt ist

note: type: Plain text
en: 'halui.joint._N_.has-fault' (bit out) - status pin telling that joint _N_ has a fault
de: 'halui.joint.N.has-fault' (bit out) - Status-Pin, der angibt, dass Gelenk N einen Fehler hat

note: type: Plain text
en: 'halui.joint._N_.home' (bit in) - pin for homing joint _N_
de: 'halui.joint.N.home' (Bit in) - Pin für Referenzfahrt von Gelenk N

note: type: Plain text
en: 'halui.joint._N_.is-homed' (bit out) - status pin telling that joint _N_ is homed
de: 'halui.joint.N.is-homed' (bit out) - Status-Pin, der angibt, dass Gelenk N referenziert ist

note: type: Plain text
en: 'halui.joint._N_.on-hard-max-limit' (bit out) - status pin telling that joint _N_ is on the positive hardware limit
de: 'halui.joint._N_.on-hard-max-limit' (bit out) - Status-Pin, der anzeigt, dass Gelenk _N_ am positiven Hardware-Limit liegt

note: type: Plain text
en: 'halui.joint._N_.on-hard-min-limit' (bit out) - status pin telling that joint _N_ is on the negative hardware limit
de: 'halui.joint._N_.on-hard-min-limit' (bit out) - Status-Pin, der anzeigt, dass sich Gelenk _N_ am negativen Hardware-Limit befindet

note: type: Plain text
en: 'halui.joint._N_.on-soft-max-limit' (bit out) - status pin telling that joint _N_ is on the positive software limit
de: 'halui.joint._N_.on-hard-max-limit' (bit out) - Status-Pin, der anzeigt, dass Gelenk _N_ am positiven Hardware-Limit liegt

note: type: Plain text
en: 'halui.joint._N_.on-soft-min-limit' (bit out) - status pin telling that joint _N_ is on the negative software limit
de: 'halui.joint._N_.on-soft-min-limit' (bit out) - Status-Pin, der anzeigt, dass sich Gelenk _N_ an der negativen Softwaregrenze befindet

note: type: Plain text
en: 'halui.joint._N_.override-limits' (bit out) - status pin telling that joint _N_'s limits are temporarily overridden
de: 'halui.joint._N_.override-limits' (bit out) - Status-Pin, der angibt, dass die Grenzen von Gelenk _N_ vorübergehend außer Kraft gesetzt werden

note: type: Plain text
en: 'halui.joint._N_.unhome' (bit in) - pin for unhoming joint _N_
de: 'halui.joint._N_.unhome' (bit in) - Pin für das Aufheben der Referenzierung von Gelenk _N_

note: type: Plain text
en: 'halui.joint.selected' (u32 out) - selected joint number (0 ... num_joints-1)
de: 'halui.joint.selected' (u32 out) - ausgewählte Gelenknummer (0 ... num_joints-1

note: type: Plain text
en: 'halui.joint.selected.has-fault' (bit out) - status pin selected joint is faulted
de: 'halui.joint.selected.has-fault' (bit out) - Status-Pin ausgewähltes Gelenk ist fehlerhaft

note: type: Plain text
en: 'halui.joint.selected.home' (bit in) - pin for homing the selected joint
de: 'halui.joint.selected.home' (Bit in) - Pin für das Homing des ausgewählten Gelenks

note: type: Plain text
en: 'halui.joint.selected.is-homed' (bit out) - status pin telling that the selected joint is homed
de: 'halui.joint.s selected.is-homed' (bit out) - Status-Pin, der angibt, dass das ausgewählte Gelenk referenziert ist

note: type: Plain text
en: 'halui.joint.selected.on-hard-max-limit' (bit out) - status pin telling that the selected joint is on the positive hardware limit
de: 'halui.joint.selected.on-hard-max-limit' (bit out) - Status-Pin, der anzeigt, dass sich das ausgewählte Gelenk auf dem positiven Hardware-Limit befindet

note: type: Plain text
en: 'halui.joint.selected.on-hard-min-limit' (bit out) - status pin telling that the selected joint is on the negative hardware limit
de: 'halui.joint.selected.on-hard-min-limit' (bit out) - Status-Pin, der anzeigt, dass sich das ausgewählte Gelenk am negativen Hardware-Limit befindet

note: type: Plain text
en: 'halui.joint.selected.on-soft-max-limit' (bit out) - status pin telling that the selected joint is on the positive software limit
de: 'halui.joint.s selected.on-soft-max-limit' (bit out) - Status-Pin, der angibt, dass sich das ausgewählte Gelenk auf der positiven Softwaregrenze befindet

note: type: Plain text
en: 'halui.joint.selected.on-soft-min-limit' (bit out) - status pin telling that the selected joint is on the negative software limit
de: 'halui.joint.selected.on-soft-min-limit' (bit out) - Status-Pin, der anzeigt, dass sich das ausgewählte Gelenk auf dem negativen Software-Limit befindet

note: type: Plain text
en: 'halui.joint.selected.override-limits' (bit out) - status pin telling that the selected joint's limits are temporarily overridden
de: 'halui.joint.s selected.override-limits' (bit out) - Status-Pin, der angibt, dass die Grenzen des ausgewählten Gelenks vorübergehend außer Kraft gesetzt werden

note: type: Plain text
en: 'halui.joint.selected.unhome' (bit in) - pin for unhoming the selected joint
de: 'halui.joint.s selected.unhome' (bit in) - Pin zum Unhoming des ausgewählten Gelenks

note: type: Title ===
en: Joint Jogging
de: Gelenk-Joggen

note: type: Plain text
en: _N_ = joint number (0 ... num_joints-1)
de: _N_ = Anzahl der Gelenke (0 ... num_joints-1)

note: type: Plain text
en: 'halui.joint.jog-deadband' (float in) - pin for setting jog analog deadband (jog analog inputs smaller/slower than this - in absolute value - are ignored)
de: 'halui.joint.jog-deadband' (float in) - Pin zum Einstellen der Jog-Analog-Totzone (Jog-Analogeingänge, die kleiner/langsamer als dieser - im absoluten Wert - sind, werden ignoriert)

note: type: Plain text
en: 'halui.joint.jog-speed' (float in) - pin for setting jog speed for plus/minus jogging.
de: 'halui.joint.jog-speed' (float in) - Pin zur Einstellung der Jog-Geschwindigkeit für Plus/Minus-Jogging.

note: type: Plain text
en: 'halui.joint._N_.analog' (float in) - pin for jogging the joint _N_ using a float value (e.g.  joy-stick).  The value, typically set between 0.0 and ±1.0, is used as a jog-speed multiplier.
de: 'halui.joint._N_.analog' (float in) - Pin zum Joggen des Gelenks _N_ mit einem Float-Wert (z.  Joystick).  Der Wert, der normalerweise zwischen 0,0 und ±1,0 festgelegt ist, wird als Jog-Speed-Multiplikator verwendet.

note: type: Plain text
en: 'halui.joint._N_.increment' (float in) - pin for setting the jog increment for joint _N_ when using increment-plus/minus
de: 'halui.joint._N_.increment' (float in) - Pin zum Einstellen des Jog-Inkrements für Gelenk _N_ bei Verwendung von increment-plus/minus

note: type: Plain text
en: 'halui.joint._N_.increment-minus' (bit in) - a rising edge will will make joint _N_ jog in the negative direction by the increment amount
de: 'halui.joint._N_.increment-minus' (bit in) - eine steigende Kante lässt das Gelenk _N_ um den Inkrementbetrag in die negative Richtung joggen

note: type: Plain text
en: 'halui.joint._N_.increment-plus' (bit in) - a rising edge will will make joint _N_ jog in the positive direction by the increment amount
de: 'halui.joint._N_.increment-plus' (bit in) - eine steigende Kante lässt das Gelenk _N_ um den Inkrementbetrag in die positive Richtung joggen

note: type: Plain text
en: 'halui.joint._N_.minus' (bit in) - pin for jogging joint _N_ in negative direction at the halui.joint.jog-speed velocity
de: 'halui.joint._N_.minus' (bit in) - Pin für Jogginggelenk _N_ in negativer Richtung bei der halui.joint.jog-Geschwindigkeitsgeschwindigkeit

note: type: Plain text
en: 'halui.joint._N_.plus' (bit in) - pin for jogging joint _N_ in positive direction at the halui.joint.jog-speed velocity
de: 'halui.joint._N_.plus' (bit in) - Pin für Jogginggelenk _N_ in positiver Richtung bei der halui.joint.jog-Geschwindigkeitsgeschwindigkeit

note: type: Plain text
en: 'halui.joint.selected.increment' (float in) - pin for setting the jog increment for the selected joint when using increment-plus/minus
de: 'halui.joint.selected.increment' (float in) - Pin zum Einstellen des Jog-Inkrements für das ausgewählte Gelenk bei Verwendung von increment-plus/minus

note: type: Plain text
en: 'halui.joint.selected.increment-minus' (bit in) - a rising edge will will make the selected joint jog in the negative direction by the increment amount
de: 'halui.joint.s selected.increment-minus' (bit in) – eine ansteigende Flanke lässt das ausgewählte Gelenk um den Inkrementbetrag in die negative Richtung joggen

note: type: Plain text
en: 'halui.joint.selected.increment-plus' (bit in) - a rising edge will will make the selected joint jog in the positive direction by the increment amount
de: halui.joint.selected.increment-plus' (Bit in) - eine steigende Flanke bewirkt, dass das ausgewählte Gelenk um den Betrag des Inkrements in die positive Richtung bewegt wird

note: type: Plain text
en: 'halui.joint.selected.minus' (bit in) - pin for jogging the selected joint in negative direction at the halui.joint.jog-speed velocity
de: halui.joint.selected.minus' (bit in) - Pin zum Joggen des ausgewählten Gelenks in negativer Richtung mit der halui.joint.jog-speed Geschwindigkeit

note: type: Plain text
en: 'halui.joint.selected.plus' (bit in) - pin for jogging the selected joint in positive direction at the halui.joint.jog-speed velocity
de: halui.joint.selected.plus' (bit in) - Pin für das Joggen des ausgewählten Gelenks in positiver Richtung mit der halui.joint.jog-speed Geschwindigkeit

note: type: Plain text
en: _L_ = axis letter (xyzabcuvw)
de: _L_ = Buchstabe der Achse (xyzabcuvw)

note: type: Plain text
en: 'halui.axis._L_.select' (bit) - pin for selecting axis by letter
de: 'halui.axis._L_.select' (Bit) - Pin zur Auswahl der Achse anhand des Buchstaben

note: type: Plain text
en: 'halui.axis._L_.is-selected' (bit out) - status pin that axis _L_ is selected
de: 'halui.axis._L_.is-selected' (Bit out) - Status-Pin, dass die Achse _L_ ausgewählt ist

note: type: Plain text
en: 'halui.axis._L_.pos-commanded' (float out) - Commanded axis position in machine coordinates
de: 'halui.axis._L_.pos-commanded' (float out) - Befohlene Achsenposition in Maschinenkoordinaten

note: type: Plain text
en: 'halui.axis._L_.pos-feedback' float out) - Feedback axis position in machine coordinates
de: 'halui.axis._L_.pos-feedback' float out) - Rückmeldung der Achsposition in Maschinenkoordinaten

note: type: Plain text
en: 'halui.axis._L_.pos-relative' (float out) - Feedback axis position in relative coordinates
de: 'halui.axis._L_.pos-relative' (float out) – Rückmeldung der Achsenposition in relativen Koordinaten

note: type: Title ===
en: Axis Jogging
de: Achsen-Jogging

note: type: Plain text
en: 'halui.axis.jog-deadband' (float in) - pin  for  setting  jog  analog  deadband  (jog   analog   inputs smaller/slower than this (in absolute value) are ignored)
de: 'halui.axis.jog-deadband' (float in) - Pin zum Einstellen der Jog-Analog-Totzone (Jog-Analogeingänge, die kleiner/langsamer als dieser (im absoluten Wert) sind, werden ignoriert)

note: type: Plain text
en: 'halui.axis.jog-speed' (float in) - pin for setting jog speed for plus/minus jogging.
de: 'halui.axis.jog-speed' (float in) - Pin zum Einstellen der Jog-Geschwindigkeit für Plus/Minus-Joggen.

note: type: Plain text
en: 'halui.axis._L_.analog' (float in) - pin for jogging the axis _L_ using an float value (e.g. joystick). The value, typically set between 0.0 and  ±1.0,  is  used as a jog-speed multiplier.
de: 'halui.axis._L_.analog' (float in) - Pin zum Joggen der Achse _L_ mit einem Float-Wert (z.B. Joystick). Der Wert, der normalerweise zwischen 0,0 und ±1,0 festgelegt ist, wird als Jog-Speed-Multiplikator verwendet.

note: type: Plain text
en: 'halui.axis._L_.increment' (float in) - pin  for  setting the jog increment for axis _L_ when using increment-plus/minus
de: 'halui.axis._L_.increment' (float in) - Pin zum Einstellen des Jog-Inkrements für Achse _L_ bei Verwendung von Increment-Plus/Minus

note: type: Plain text
en: 'halui.axis._L_.increment-minus' (bit in) - a rising edge will will make axis _L_ jog in the  negative  direction by the increment amount
de: 'halui.axis._L_.increment-minus' (bit in) – eine ansteigende Flanke bewirkt, dass die Achse _L_ um den Inkrementbetrag in die negative Richtung joggt

note: type: Plain text
en: 'halui.axis._L_.increment-plus' (bit in) - a  rising  edge will will make axis _L_ jog in the positive direction by the increment amount
de: 'halui.axis._L_.increment-plus' (Bit in) - eine steigende Kante lässt die Achse _L_ um den Inkrementbetrag in die positive Richtung joggen

note: type: Plain text
en: 'halui.axis._L_.minus' (bit in) - pin  for  jogging  axis  _L_  in   negative   direction   at   the halui.axis.jog-speed velocity
de: 'halui.axis._L_.minus' (Bit in) - Pin für Jogging entlang der Achse _L_ in negativer Richtung bei der halui.axis.jog-Geschwindigkeitsgeschwindigkeit

note: type: Plain text
en: 'halui.axis._L_.plus' (bit in) - pin   for   jogging   axis   _L_  in  positive  direction  at  the halui.axis.jog-speed velocity
de: 'halui.axis._L_.plus' (bit in) - Pin zum Joggen der Achse _L_ in positiver Richtung mit der Geschwindigkeit halui.axis.jog-speed

note: type: Plain text
en: 'halui.axis.selected' (u32 out) - selected axis (by index: 0:x 1:y 2:z 3:a 4:b 5:cr 6:u 7:v 8:w)
de: 'halui.axis.selected' (U32 out) - Ausgewählte Achse (nach Index: 0:x 1:y 2:Z 3:A 4:B 5:CR 6:U 7:V 8:W)

note: type: Plain text
en: 'halui.axis.selected.increment' (float in) - pin for setting the jog increment for  the  selected  axis  when using increment-plus/minus
de: 'halui.axis.selected.increment' (float in) - Pin zum Einstellen des Jog-Inkrements für die ausgewählte Achse bei Verwendung von increment-plus/minus

note: type: Plain text
en: 'halui.axis.selected.increment-minus' (bit in) - a  rising edge will will make the selected axis jog in the negative direction by the increment amount
de: 'halui.axis.s selected.increment-minus' (bit in) - eine steigende Flanke bewirkt, dass die ausgewählte Achse um den Inkrementbetrag in die negative Richtung joggt

note: type: Plain text
en: 'halui.axis.selected.increment-plus' (bit in) - a rising edge will will make the selected axis jog in the  positive direction by the increment amount
de: 'halui.axis.selected.increment-plus' (Bit in) - Eine steigende Kante lässt die ausgewählte Achse um den Inkrementbetrag in die positive Richtung joggen

note: type: Plain text
en: 'halui.axis.selected.minus' (bit in) - pin  for  jogging the selected axis in negative direction at the halui.axis.jog-speed velocity
de: 'halui.axis.selected.minus' (Bit in) - Pin zum Joggen der ausgewählten Achse in negativer Richtung bei der halui.axis.jog-Geschwindigkeitsgeschwindigkeit

note: type: Plain text
en: 'halui.axis.selected.plus' (pin in) - for jogging the selected axis bit in in positive  direction at the halui.axis.jog-speed velocity
de: 'halui.axis.selected.plus' (pin in) - zum Joggen des ausgewählten Achsenbits in positiver Richtung bei der halui.axis.jog-Geschwindigkeitsgeschwindigkeit

note: type: Plain text
en: 'halui.mode.auto' (bit, in) - pin for requesting auto mode
de: 'halui.mode.auto' (bit, in) - Pin zum Anfordern des automatischen Modus

note: type: Plain text
en: 'halui.mode.is-auto' (bit, out) - indicates auto mode is on
de: 'halui.mode.is-auto' (bit, out) - zeigt an, dass der Auto-Modus eingeschaltet ist

note: type: Plain text
en: 'halui.mode.is-joint' (bit, out) - indicates joint by joint jog mode is on
de: 'halui.mode.is-joint' (bit, out) - zeigt an, dass der Gelenk-für-Gelenk (engl. joint by joint)-Jogging-Modus eingeschaltet ist

note: type: Plain text
en: 'halui.mode.is-manual' (bit, out) - indicates manual mode is on
de: 'halui.mode.is-manual' (bit, out) - zeigt an, dass der manuelle Modus eingeschaltet ist

note: type: Plain text
en: 'halui.mode.is-mdi' (bit, out) - indicates MDI mode is on
de: 'halui.mode.is-mdi' (bit, out) - zeigt an, dass der MDI-Modus eingeschaltet ist

note: type: Plain text
en: 'halui.mode.is-teleop' (bit, out) - indicates coordinated jog mode is on
de: 'halui.mode.is-teleop' (bit, out) - zeigt an, dass der koordinierte Jog-Modus eingeschaltet ist

note: type: Plain text
en: 'halui.mode.joint' (bit, in) - pin for requesting joint by joint jog mode
de: 'halui.mode.joint' (bit, in) - Pin für die Abfrage des Joint-by-Joint-Jog-Modus

note: type: Plain text
en: 'halui.mode.manual' (bit, in) - pin for requesting manual mode
de: 'halui.mode.manual' (bit, in) - Pin für die Anforderung des manuellen Modus

note: type: Plain text
en: 'halui.mode.mdi' (bit, in) - pin for requesting MDI mode
de: halui.mode.mdi' (bit, in) - Pin zur Abfrage des MDI-Modus

note: type: Plain text
en: 'halui.mode.teleop' (bit, in) - pin for requesting coordinated jog mode
de: 'halui.mode.teleop' (bit, in) - Pin zum Anfordern des koordinierten Jog-Modus

note: type: Title ====
en: Program
de: Programm

note: type: Plain text
en: 'halui.program.block-delete.is-on' (bit, out) - status pin telling that block delete is on
de: 'halui.program.block-delete.is-on' (bit, out) - Status-Pin, der anzeigt, dass Block delete on ist

note: type: Plain text
en: 'halui.program.block-delete.off' (bit, in) - pin for requesting that block delete is off
de: 'halui.program.block-delete.off' (bit, in) - Pin zum Anfordern, dass das Blocklöschen deaktiviert ist

note: type: Plain text
en: 'halui.program.block-delete.on' (bit, in) - pin for requesting that block delete is on
de: 'halui.program.block-delete.on' (bit, in) - Pin zum Anfordern, dass das Blocklöschen aktiviert ist

note: type: Plain text
en: 'halui.program.is-idle' (bit, out) - status pin telling that no program is running
de: 'halui.program.is-idle' (bit, out) - Status-Pin, die anzeigt, dass kein Programm läuft

note: type: Plain text
en: 'halui.program.is-paused' (bit, out) - status pin telling that a program is paused
de: 'halui.program.is-paused' (bit, out) - Status-Pin, der angibt, dass ein Programm angehalten wurde

note: type: Plain text
en: 'halui.program.is-running' (bit, out) - status pin telling that a program is running
de: 'halui.program.is-running' (bit, out) - Status-Pin, der angibt, dass ein Programm ausgeführt wird

note: type: Plain text
en: 'halui.program.optional-stop.is-on' (bit, out) - status pin telling that the optional stop is on
de: 'halui.program.optional-stop.is-on' (bit, out) - Status-Pin zur Angabe, dass der optionale Stopp eingeschaltet ist

note: type: Plain text
en: 'halui.program.optional-stop.off' (bit, in) - pin requesting that the optional stop is off
de: 'halui.program.optional-stop.off' (bit, in) - Pin, der anfordert, dass der optionale Stopp ausgeschaltet ist

note: type: Plain text
en: 'halui.program.optional-stop.on' (bit, in) - pin requesting that the optional stop is on
de: halui.program.optional-stop.on' (bit, in) - Pin, der anfordert, dass der optionale Stopp eingeschaltet ist

note: type: Plain text
en: 'halui.program.pause' (bit, in) - pin for pausing a program
de: 'halui.program.pause' (bit, in) - Pin zum Anhalten eines Programms

note: type: Plain text
en: 'halui.program.resume' (bit, in) - pin for resuming a paused program
de: 'halui.program.resume' (bit, in) - Pin zum Fortsetzen eines pausierten Programms

note: type: Plain text
en: 'halui.program.run' (bit, in) - pin for running a program
de: 'halui.program.run' (bit, in) - Pin zum Ausführen eines Programms

note: type: Plain text
en: 'halui.program.step' (bit, in) - pin for stepping in a program
de: 'halui.program.step' (bit, in) - Pin für das Steppen eines Programms

note: type: Plain text
en: 'halui.program.stop' (bit, in) - pin for stopping a program
de: 'halui.program.stop' (bit, in) - Pin zum Stoppen eines Programms

note: type: Title ===
en: Rapid Override
de: Eilgang-Override (engl. rapid override)

note: type: Plain text
en: 'halui.rapid-override.count-enable' (bit in (default: TRUE)) - When TRUE, modify Rapid Override when counts changes.
de: halui.rapid-override.count-enable' (Bit in (Standard: TRUE)) - Wenn TRUE, wird Rapid Override geändert, wenn sich die Zählerstände ändern.

note: type: Plain text
en: 'halui.rapid-override.counts' (s32 in) - counts X scale = Rapid Override percentage. Can be used with an encoder or 'direct-value'.
de: halui.rapid-override.counts' (s32 in) - counts X scale = Rapid Override Prozentsatz. Kann mit einem Encoder oder 'direct-value' verwendet werden.

note: type: Plain text
en: 'halui.rapid-override.decrease' (bit in) - pin for decreasing the Rapid Override (-=scale)
de: halui.rapid-override.decrease' (bit in) - Pin zum Verringern des Rapid Override (-=scale)

note: type: Plain text
en: 'halui.rapid-override.direct-value' (bit in) - pin to enable direct value Rapid Override input
de: 'halui.rapid-override.direct-value' (Bit in) - pin, um den direkten Wert zu aktivieren Rapid Override-Eingabe

note: type: Plain text
en: 'halui.rapid-override.increase' (bit in) - pin for increasing the Rapid Override (+=scale)
de: 'halui.rapid-override.increase' (bit in) - Pin zur Erhöhung des Rapid Override (+=scale)

note: type: Plain text
en: 'halui.rapid-override.scale' (float in) - pin for setting the scale on changing the Rapid Override
de: 'halui.rapid-override.scale' (float in) - Pin zum Einstellen der Skala beim Ändern der Rapid Override

note: type: Plain text
en: 'halui.rapid-override.value' (float out) - current Rapid Override value
de: 'halui.rapid-override.value' (float out) - aktueller Rapid Override-Wert

note: type: Plain text
en: 'halui.rapid-override.reset' (bit, in) - pin for resetting the Rapid Override value (scale=1.0)
de: 'halui.rapid-override.reset' (bit, in) - Pin zum Zurücksetzen des Rapid-Override-Wertes (Skala=1.0)

note: type: Title ===
en: Spindle Override
de: Spindel Neufestsetzung (engl. override)

note: type: Plain text
en: 'halui.spindle._N_.override.count-enable' (bit, in) - must be true for 'counts' or 'direct-value' to work.
de: 'halui.spindle._N_.override.count-enable' (bit, in) - muss wahr sein, damit 'counts' oder 'direct-value' funktioniert.

note: type: Plain text
en: 'halui.spindle._N_.override.counts' (s32, in) - counts * scale = SO percentage.  Can be used with an encoder or 'direct-value'.
de: 'halui.spindle._N_.override.counts' (s32, in) - zählt * Skala = SO-Prozentsatz.  Kann mit einem Encoder oder "Direct-Value" verwendet werden.

note: type: Plain text
en: 'halui.spindle._N_.override.decrease' (bit, in) - pin for decreasing the SO (-=scale)
de: 'halui.spindle._N_.override.decrease' (bit, in) - Pin zum Verringern der SO (-=Skala)

note: type: Plain text
en: 'halui.spindle._N_.override.direct-value' (bit, in) - false when using encoder to change counts, true when setting counts directly.
de: 'halui.spindle._N_.override.direct-value' (bit, in) - false, wenn der Encoder zum Ändern der Zählerstände verwendet wird, true, wenn die Zählerstände direkt gesetzt werden.

note: type: Plain text
en: 'halui.spindle._N_.override.increase' (bit, in) - pin for increasing the SO (+=scale)
de: 'halui.spindle._N_.override.decrease' (bit, in) - Pin zum Verringern der SO (-=Skala)

note: type: Plain text
en: 'halui.spindle._N_.override.scale' (float, in) - pin for setting the scale on changing the SO
de: 'halui.spindle._N_.override.scale' (float, in) - Pin zum Einstellen der Skala beim Ändern der SO

note: type: Plain text
en: 'halui.spindle._N_.override.value' (float, out) - current SO value
de: 'halui.spindle._N_.override.value' (float, out) - aktueller SO-Wert

note: type: Plain text
en: 'halui.spindle._N_.override.reset' (bit, in) - pin for resetting the SO value (scale=1.0)
de: 'halui.spindle._N_.override.reset' (bit, in) - Pin zum Zurücksetzen des SO-Werts (scale=1.0)

note: type: Plain text
en: 'halui.spindle._N_.brake-is-on' (bit, out) - indicates brake is on
de: 'halui.spindle._N_.brake-is-on' (bit, out) - zeigt an, dass die Bremse eingeschaltet ist

note: type: Plain text
en: 'halui.spindle._N_.brake-off' (bit, in) - pin for deactivating spindle/brake
de: 'halui.spindle._N_.brake-off' (bit, in) - Pin zur Deaktivierung der Spindel/Bremse

note: type: Plain text
en: 'halui.spindle._N_.brake-on' (bit, in) - pin for activating spindle-brake
de: 'halui.spindle._N_.brake-off' (bit, in) - Pin zur Deaktivierung der Spindel/Bremse

note: type: Plain text
en: 'halui.spindle._N_.decrease' (bit, in) - decreases spindle speed
de: 'halui.spindle._N_.decrease' (bit, in) - verringert die Spindeldrehzahl

note: type: Plain text
en: 'halui.spindle._N_.forward' (bit, in) - starts the spindle with CW motion
de: 'halui.spindle._N_.forward' (bit, in) - startet die Spindel mit Bewegung im Uhrzeigersinn

note: type: Plain text
en: 'halui.spindle._N_.increase' (bit, in)- increases spindle speed
de: 'halui.spindle._N_.increase' (bit, in)- erhöht die Spindeldrehzahl

note: type: Plain text
en: 'halui.spindle._N_.is-on' (bit, out) - indicates spindle is on (either direction)
de: 'halui.spindle._N_.is-on' (bit, out) - zeigt an, dass die Spindel eingeschaltet ist (in beide Richtungen)

note: type: Plain text
en: 'halui.spindle._N_.reverse' (bit, in)- starts the spindle with a CCW motion
de: 'halui.spindle._N_.reverse' (bit, in)- startet die Spindel mit einer Bewegung gegen den Uhrzeigersinn

note: type: Plain text
en: 'halui.spindle._N_.runs-backward' (bit, out) - indicates spindle is on, and in reverse
de: 'halui.spindle._N_.runs-backward' (bit, out) - zeigt an, dass die Spindel eingeschaltet ist und umgekehrt

note: type: Plain text
en: 'halui.spindle._N_.runs-forward' (bit, out) - indicates spindle is on, and in forward
de: 'halui.spindle._N_.runs-forward' (bit, out) - zeigt an, dass die Spindel eingeschaltet und vorwärts läuft

note: type: Plain text
en: 'halui.spindle._N_.start' (bit, in) - starts the spindle
de: 'halui.spindle._N_.start' (bit, in) - startet die Spindel

note: type: Plain text
en: 'halui.spindle._N_.stop' (bit, in) - stops the spindle
de: 'halui.spindle._N_.stop' (bit, in) - stoppt die Spindel

note: type: Title ===
en: Tool
de: Werkzeug

note: type: Plain text
en: 'halui.tool.length-offset.a' (float out) - current applied tool length offset for the A axis
de: 'halui.tool.length-offset.a' (float out) - aktuell angewendeter Werkzeuglängenversatz für die A-Achse

note: type: Plain text
en: 'halui.tool.length-offset.b' (float out) - current applied tool length offset for the B axis
de: 'halui.tool.length-offset.b' (float out) - aktuell angewendeter Werkzeuglängenversatz für die B-Achse

note: type: Plain text
en: 'halui.tool.length-offset.c' (float out) - current applied tool length offset for the C axis
de: 'halui.tool.length-offset.c' (float out) – aktuell angewendeter Werkzeuglängenversatz für die C-Achse

note: type: Plain text
en: 'halui.tool.length-offset.u' (float out) - current applied tool length offset for the U axis
de: 'halui.tool.length-offset.u' (float out) - aktuell angewendeter Werkzeuglängenversatz für die U-Achse

note: type: Plain text
en: 'halui.tool.length-offset.v' (float out) - current applied tool length offset for the V axis
de: 'halui.tool.length-offset.v' (float out) – aktuell angewendeter Werkzeuglängenversatz für die V-Achse

note: type: Plain text
en: 'halui.tool.length-offset.w' (float out) - current applied tool length offset for the W axis
de: 'halui.tool.length-offset.w' (float out) - aktuell angewendeter Werkzeuglängenversatz für die W-Achse

note: type: Plain text
en: 'halui.tool.length-offset.x' (float out) - current applied tool length offset for the X axis
de: 'halui.tool.length-offset.x' (float out) – aktuell angewendeter Werkzeuglängenversatz für die X-Achse

note: type: Plain text
en: 'halui.tool.length-offset.y' (float out) - current applied tool length offset for the Y axis
de: 'halui.tool.length-offset.y' (float out) - aktuell angewendeter Werkzeuglängenversatz für die Y-Achse

note: type: Plain text
en: 'halui.tool.length-offset.z' (float out) - current applied tool length offset for the Z axis
de: 'halui.tool.length-offset.z' (float out) - aktuell angewendeter Werkzeuglängenversatz für die Z-Achse

note: type: Plain text
en: 'halui.tool.diameter' (float out) - Current tool diameter, or 0 if no tool is loaded.
de: 'halui.tool.diameter' (float out) - Aktueller Werkzeugdurchmesser oder 0, wenn kein Werkzeug geladen ist.

note: type: Plain text
en: 'halui.tool.number' (u32, out) - indicates current selected tool
de: 'halui.tool.number' (u32, out) - zeigt das aktuell ausgewählte Werkzeug an

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Image to G-Code
de: Vom Bild zu G-Code

note: type: Title ==
en: What is a depth map?
de: Was ist eine Tiefenkarte (engl. depth map)?

note: type: Plain text
en: A depth map is a greyscale image where the brightness of each pixel corresponds to the depth (or height) of the object at each point.
de: Eine Tiefenkarte ist ein Graustufenbild, bei dem die Helligkeit der einzelnen Pixel der Tiefe (oder Höhe) des Objekts an jedem Punkt entspricht.

note: type: Title ==
en: Integrating image-to-gcode with the AXIS user interface
de: Integration von Image-to-Gcode in die AXIS-Benutzeroberfläche

note: type: Plain text
en: Add the following lines to the '[FILTER]' section of your INI file to make AXIS automatically invoke image-to-gcode when you open a PNG, GIF, or JPEG image:
de: Fügen Sie die folgenden Zeilen in den Abschnitt '[FILTER]' Ihrer INI-Datei ein, damit AXIS automatisch image-to-gcode aufruft, wenn Sie ein PNG-, GIF- oder JPG-Bild öffnen:

note: type: Plain text
en: The standard 'sim/axis.ini' configuration file is already prepared this way.
de: Die Standard-Konfigurationsdatei 'sim/axis.ini' ist bereits auf diese Weise vorbereitet.

note: type: Title ==
en: Using `image-to-gcode`
de: Verwendung von `image-to-gcode`

note: type: Plain text
en: Start image-to-gcode either by opening an image file in AXIS, or by invoking image-to-gcode from the terminal, as follows:
de: Starten Sie `image-to-gcode` entweder durch Öffnen einer Bilddatei in AXIS oder durch Aufrufen von `image-to-gcode` über das Terminal wie folgt:

note: type: Plain text
en: Verify all the settings in the right-hand column, then press OK to create the G-code. Depending on the image size and options chosen, this may take from a few seconds to a few minutes. If you are loading the image in AXIS, the G-code will automatically be loaded and previewed once image-to-gcode completes. In AXIS, hitting reload will show the image-to-gcode option screen again, allowing you to tweak them.
de: Überprüfen Sie alle Einstellungen in der rechten Spalte und drücken Sie dann auf OK, um den G-Code zu erstellen. Je nach Bildgröße und gewählten Optionen kann dies einige Sekunden bis einige Minuten dauern. Wenn Sie das Bild in AXIS laden, wird der G-Code automatisch geladen und in der Vorschau angezeigt, sobald die Umwandlung durch `image-to-gcode` (ein Programm, wörtlich engl. "Bild zu G-Code") abgeschlossen ist. Wenn Sie in AXIS auf "Neu laden" klicken, wird der Bildschirm mit den image-to-gcode-Optionen erneut angezeigt, so dass Sie die Optionen anpassen können.

note: type: Title ==
en: Option Reference
de: Optionen

note: type: Plain text
en: Specifies whether to use G20 (inches) or G21 (mm) in the generated G-code and as the units for each option labeled '(units)'.
de: Gibt an, ob G20 (Zoll) oder G21 (mm) im generierten G-Code und als Einheiten für jede mit "(units)" bezeichnete Option verwendet werden soll.

note: type: Title ===
en: Invert Image
de: Bild invertieren (engl. invert image)

note: type: Plain text
en: If "no", the black pixel is the lowest point and the white pixel is the highest point. If "yes", the black pixel is the highest point and the white pixel is the lowest point.
de: Wenn "nein", ist das schwarze Pixel der niedrigste Punkt und das weiße Pixel der höchste Punkt. Wenn "Ja", ist das schwarze Pixel der höchste Punkt und das weiße Pixel der niedrigste Punkt.

note: type: Title ===
en: Normalize Image
de: Bild normalisieren (engl. normalize image)

note: type: Plain text
en: If 'yes', the darkest pixel is remapped to black, the lightest pixel is remapped to white.
de: Wenn "ja", wird das dunkelste Pixel auf Schwarz und das hellste Pixel auf Weiß umgestellt.

note: type: Title ===
en: Expand Image Border
de: Erweitern des Bildrandes (engl. expand image border)

note: type: Plain text
en: If 'None', the input image is used as-is, and details which are at the very edges of the image may be cut off. If 'White' or 'Black', then a border of pixels equal to the tool diameter is added on all sides, and details which are at the very edges of the images will not be cut off.
de: Bei 'None' (engl. für keinen) wird das Eingabebild so verwendet, wie es ist, und Details, die sich an den Rändern des Bildes befinden, können abgeschnitten werden. Bei 'White' (engl. für weiß) oder 'black' (engl. für Schwarz) wird an allen Seiten ein Rand aus Pixeln in Höhe des Werkzeugdurchmessers hinzugefügt, und Details an den Rändern des Bildes werden nicht abgeschnitten.

note: type: Title ===
en: Tolerance (units)
de: Toleranz (Einheiten)

note: type: Plain text
en: When a series of points are within 'tolerance' of being a straight line, they are output as a straight line.  Increasing tolerance can lead to better contouring performance in LinuxCNC, but can also remove or blur small details in the image.
de: Wenn eine Reihe von Punkten innerhalb der "Toleranz" (engl. tolerance) auf eine geraden Linie liegen, werden sie als eine gerade Linie ausgegeben.  Die Erhöhung der Toleranz kann zu einer besseren Leistung bei der Konturierung in LinuxCNC führen, kann aber auch kleine Details im Bild entfernen oder verwischen.

note: type: Title ===
en: Pixel Size (units)
de: Pixelgröße (Einheiten)

note: type: Plain text
en: One pixel in the input image will be this many units--usually this number is much smaller than 1.0. For instance, to mill a 2.5x2.5-inch object from a 400x400 image file, use a pixel size of .00625, because 2.5 / 400 = .00625.
de: Ein Pixel im Eingabebild entspricht dieser Anzahl von Einheiten - in der Regel ist diese Zahl viel kleiner als 1,0. Um beispielsweise ein 2,5 x 2,5-Zoll-Objekt aus einer 400 x 400-Bilddatei zu fräsen, verwenden Sie eine Pixelgröße von .00625, da 2,5 / 400 = .00625.

note: type: Title ===
en: Plunge Feed Rate (units per minute)
de: Tauchvorschubgeschwindigkeit (Einheiten pro Minute)

note: type: Plain text
en: The feed rate for the initial plunge movement.
de: Die Vorschubgeschwindigkeit für die erste Eintauchbewegung.

note: type: Title ===
en: Feed Rate (units per minute)
de: Vorschubgeschwindigkeit (Einheiten pro Minute)

note: type: Plain text
en: The feed rate for other parts of the path.
de: Die Vorschubgeschwindigkeit für andere Teile der Bahn.

note: type: Title ===
en: Spindle Speed (RPM)
de: Spindeldrehzahl (RPM)

note: type: Plain text
en: The spindle speed S-code that should be put into the G-code file.
de: Der Spindeldrehzahl-S-Code, der in die G-Code-Datei eingefügt werden soll.

note: type: Title ===
en: Scan Pattern
de: Abtastmuster (engl. scan pattern)

note: type: Plain text
en: Possible scan patterns are:
de: Mögliche Scanmuster sind:

note: type: Plain text
en: Rows
de: Reihen

note: type: Plain text
en: Columns
de: Spalten

note: type: Plain text
en: Rows, then Columns
de: Zeilen, dann Spalten

note: type: Plain text
en: Columns, then Rows
de: Spalten, dann Zeilen

note: type: Title ===
en: Scan Direction
de: Scanrichtung

note: type: Plain text
en: Possible scan directions are:
de: Mögliche Scanrichtungen sind:

note: type: Plain text
en: Positive: Start milling at a low X or Y axis value, and move towards a high X or Y axis value.
de: Positive (engl. positiv): Starten Sie das Fräsen bei einem niedrigen X- oder Y-Achsenwert und bewegen Sie sich zu einem hohen X- oder Y-Achsenwert.

note: type: Plain text
en: Negative: Start milling at a high X or Y axis value, and move towards a low X or Y axis value.
de: Negative (engl. für negativ): Starten Sie das Fräsen bei einem hohen X- oder Y-Achsenwert und bewegen Sie sich zu einem niedrigen X- oder Y-Achsenwert.

note: type: Plain text
en: Alternating: Start on the same end of the X or Y axis travel that the last move ended on. This reduces the amount of traverse movements.
de: Alternating (engl. für abwechselnd): Beginnen Sie am gleichen Ende der X- oder Y-Achse, an dem die letzte Bewegung endete. Dies reduziert die Anzahl der Verfahrbewegungen.

note: type: Plain text
en: Up Milling: Start milling at low points, moving towards high points.
de: Up Milling (engl. für aufwärts fräsen): Beginnen Sie mit dem Fräsen an niedrigen Punkten und bewegen Sie sich zu hohen Punkten.

note: type: Plain text
en: Down Milling: Start milling at high points, moving towards low points.
de: Down Milling (engl. für abwärts fräsen): Beginnen Sie das Fräsen an hohen Punkten und bewegen Sie sich zu niedrigen Punkten.

note: type: Title ===
en: Depth (units)
de: Tiefe (engl. depth) (Einheiten)

note: type: Title ===
en: Step Over (pixels)
de: Schrittweite (engl. step over) (Pixel)

note: type: Plain text
en: The distance between adjacent rows or columns. To find the number of pixels for a given units distance, compute 'distance/pixel size' and round to the nearest whole number. For example, if 'pixel size=.006' and the desired step over 'distance=.015', then use a Step Over of 2 or 3 pixels, because '.015/.006=2.5'.
de: Der Abstand zwischen benachbarten Zeilen oder Spalten. Um die Anzahl der Pixel für einen gegebenen Einheitsabstand zu ermitteln, berechnen Sie 'Abstand/Pixelgröße' und runden Sie auf die nächste ganze Zahl. Wenn zum Beispiel 'Pixelgröße=.006' und der gewünschte Step Over 'Abstand=.015', dann verwenden Sie einen Step Over von 2 oder 3 Pixeln, denn '.015/.006=2.5'.

note: type: Title ===
en: Tool Diameter
de: Werkzeug-Durchmesser

note: type: Plain text
en: The diameter of the cutting part of the tool.
de: Der Durchmesser des schneidenden Teils des Werkzeugs.

note: type: Title ===
en: Safety Height
de: Sicherheitshöhe

note: type: Plain text
en: The height to move to for traverse movements. image-to-gcode always assumes the top of material is at 'Z=0'.
de: Die Höhe, die bei Verfahrbewegungen angefahren werden soll. image-to-gcode geht immer davon aus, dass die Oberseite des Materials bei 'Z=0' liegt.

note: type: Title ===
en: Tool Type
de: Werkzeug-Typ

note: type: Plain text
en: The shape of the cutting part of the tool. Possible tool shapes are:
de: Die Form des schneidenden Teils des Werkzeugs. Mögliche Werkzeugformen sind:

note: type: Plain text
en: Ball End
de: Kugelkopf (engl. ball end)

note: type: Plain text
en: Flat End
de: Flaches Ende (engl. flat end)

note: type: Plain text
en: 45 degree "vee"
de: 45 Grad "V" (engl. vee)

note: type: Plain text
en: 60 degree "vee"
de: 60 Grad "Vee"

note: type: Plain text
en: This controls whether areas that are relatively flat along a row or column are skipped. This option only makes sense when both rows and columns are being milled. Possible bounding options are:
de: Damit wird gesteuert, ob Bereiche, die entlang einer Zeile oder Spalte relativ flach sind, übersprungen werden. Diese Option ist nur sinnvoll, wenn sowohl Zeilen als auch Spalten gefräst werden. Mögliche Begrenzungsoptionen sind:

note: type: Plain text
en: None: Rows and columns are both fully milled.
de: None (engl. für keine): Zeilen und Spalten werden beide vollständig gefräst.

note: type: Plain text
en: Secondary: When milling in the second direction, areas that do not strongly slope in that direction are skipped.
de: Secondary (engl. für Sekundär): Beim Fräsen in der zweiten Richtung werden Bereiche, die nicht stark in diese Richtung geneigt sind, übersprungen.

note: type: Plain text
en: Full: When milling in the first direction, areas that strongly slope in the second direction are skipped. When milling in the second direction, areas that do not strongly slope in that direction are skipped.
de: Voll: Beim Fräsen in der ersten Richtung werden Bereiche, die stark in die zweite Richtung geneigt sind, übersprungen. Beim Fräsen in der zweiten Richtung werden Bereiche, die nicht stark in diese Richtung geneigt sind, übersprungen.

note: type: Title ===
en: Contact angle
de: Kontaktwinkel

note: type: Title ===
en: Roughing offset and depth per pass
de: Schruppversatz und Schrupptiefe pro Durchgang

note: type: Plain text
en: Image-to-gcode can optionally perform roughing passes. The depth of successive roughing passes is given by 'Roughing depth per pass'. For instance, entering 0.2 will perform the first roughing pass with a depth of 0.2, the second roughing pass with a depth of 0.4, and so on until the full Depth of the image is reached. No part of any roughing pass will cut closer than Roughing Offset to the final part. The following figure shows a tall vertical feature being milled.  In this image, Roughing depth per pass is 0.2 inches and roughing offset is 0.1 inches.
de: Image-to-gcode kann optional Schruppdurchgänge durchführen. Die Tiefe der aufeinanderfolgenden Schruppdurchgänge wird durch "Schrupptiefe pro Durchgang" angegeben. Wenn Sie z. B. 0,2 eingeben, wird der erste Schruppdurchgang mit einer Tiefe von 0,2 durchgeführt, der zweite Schruppdurchgang mit einer Tiefe von 0,4 usw., bis die volle Tiefe des Bildes erreicht ist. Kein Teil eines Schruppdurchgangs schneidet näher als der Schruppversatz zum endgültigen Teil. Die folgende Abbildung zeigt ein hohes vertikales Feature, das gefräst wird.  In diesem Bild beträgt die Schrupptiefe pro Durchgang 0,2 Zoll und der Schruppversatz 0,1 Zoll.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Roughing passes and final pass
de: Schruppen und Schlichten

note: type: Plain text
en: MDRO is a simple graphical front-end for LinuxCNC providing a display of data from Digital Read Out (DRO) scales. It provides functionality similar to a normal machinist's DRO display, allowing the user to use the DRO scales on the machine when operating in a manual-only (hand-cranked) mode. It is most useful for manual machines such as DRO equipped Bridgeport style mills that have been converted to CNC but still have the manual controls.
de: MDRO ist eine einfache grafische Front-End für LinuxCNC bietet eine Anzeige von Daten aus Digital Read Out (DRO) Skalen. Es bietet Funktionalität ähnlich wie ein normaler Maschinist DRO-Anzeige, so dass der Benutzer die DRO-Skalen auf der Maschine zu verwenden, wenn der Betrieb in einem manuellen-only (Hand-Kurbel) Modus. Sie ist besonders nützlich für manuelle Maschinen, wie z. B. mit DRO ausgestattete Bridgeport-Fräsmaschinen, die auf CNC umgerüstet wurden, aber noch über manuelle Bedienelemente verfügen.

note: type: Plain text
en: MDRO is mouse and touch screen friendly.
de: MDRO ist Maus- und Touchscreen-freundlich.

note: type: Title ==
en: MDRO Window
de: MDRO Fenster

note: type: Plain text
en: If your configuration is not currently set up to use MDRO, you can change it by editing the INI file. In the `[DISPLAY]` section, change the `DISPLAY =` line to read `DISPLAY = mdro`. MDRO defaults to XYZ for the axes but that can be changed.  Set `[DISPLAY]` section `GEOMETRY = XYZ` for a 3 axis mill. A lathe with with DRO scales on the X and Z axes might use `GEOMETRY = XZ`.
de: Wenn Ihre Konfiguration derzeit nicht für die Verwendung von MDRO eingerichtet ist, können Sie dies durch Bearbeiten der INI-Datei ändern. Ändern Sie im Abschnitt `[DISPLAY]` die Zeile `DISPLAY =` in `DISPLAY = mdro`. MDRO ist standardmäßig auf XYZ für die Achsen eingestellt, aber das kann geändert werden.  Setzen Sie den Abschnitt `[DISPLAY] ` auf `GEOMETRY = XYZ` für eine 3-Achsen-Fräse. Bei einer Drehmaschine mit DRO-Skalen für die X- und Z-Achse könnte `GEOMETRY = XZ` verwendet werden.

note: type: Plain text
en: When MDRO starts, a window like the one in the figure <<fig:mdro-window>> above opens.
de: Wenn MDRO gestartet wird, öffnet sich ein Fenster wie das in der Abbildung <<fig:mdro-window>> oben.

note: type: Title ===
en: INI File Options
de: INI-Datei Optionen

note: type: Plain text
en: Other options that can be included on the `[DISPLAY]` section include:
de: Weitere Optionen, die im Abschnitt "[DISPLAY]" enthalten sein können, sind:

note: type: Plain text
en: `MDRO_VAR_FILE = <file.var>` - preload G54 - G57 coordinate system data.
de: `MDRO_VAR_FILE = <file.var>` - Vorladen von G54 - G57 Koordinatensystemdaten.

note: type: Plain text
en: Preload a .var file. This is typically the .var file used by the operational code.
de: Vorladen einer .var-Datei. Dies ist in der Regel die vom operativen Code verwendete .var-Datei.

note: type: Plain text
en: `POINT_SIZE = <n>` - Set text point size.
de: `POINT_SIZE = <n>` - Setzt die Punktgröße des Textes.

note: type: Plain text
en: This option sets the size of the font used which sets the overall size of the window. The default point size is 20, Typical sizes are 20 to 30.
de: Mit dieser Option wird die Größe der verwendeten Schrift festgelegt, wodurch sich auch die Gesamtgröße des Fensters ergibt. Die Standardschriftgröße ist 20, typische Größen sind 20 bis 30.

note: type: Plain text
en: `MM = 1` Set this if the DRO scales provide data scaled in millimeters.
de: `MM = 1` Stellen Sie dies ein, wenn die DRO-Skalen in Millimeter skalierte Daten liefern.

note: type: Plain text
en: MDRO can be started by a `loadusr` command in a HAL file. Options equivalent to those in the INI file can be set on the command line:
de: MDRO kann mit dem Befehl `loadusr` in einer HAL-Datei gestartet werden. Optionen, die denen in der INI-Datei entsprechen, können in der Befehlszeile gesetzt werden:

note: type: Plain text
en: `-l <file.var>` - preload G54 - G57 coordinate system data.
de: '-l <file.var>' - Daten des G54 - G57-Koordinatensystems vorladen.

note: type: Plain text
en: `-p <n>` - Set text point size.
de: `-p <n>` - Setzt die Punktgröße des Textes.

note: type: Plain text
en: `-m` - Set this if the DRO scales provide data scaled in millimeters.
de: `-m` - Stellen Sie dies ein, wenn die DRO-Skalen in Millimeter skalierte Daten liefern.

note: type: Plain text
en: `<axes>` - axes to display. See `GEOMETRY` above.
de: `<axes>` - anzuzeigende Achsen. Siehe „GEOMETRIE“ oben.

note: type: Plain text
en: Using an example of "XYZA" for an AXES argument, these pins will be created when MDRO starts:
de: Bei einem Beispiel mit "XYZA" als AXES-Argument werden diese Pins beim Start von MDRO erstellt:

note: type: Plain text
en: In this example, the first row of the display will be labeled `X` and will show the data from the DRO scale connected to pin `mdro.axis.0`. The `mdro.index-enable.n` pins should be connected to the index pins of the DRO if the DRO supports them.
de: In diesem Beispiel ist die erste Zeile der Anzeige mit "X" beschriftet und zeigt die Daten der DRO-Skala, die an den Pin "mdro.axis.0" angeschlossen ist. Die Pins `mdro.index-enable.n` sollten mit den Index-Pins des DRO verbunden werden, wenn das DRO sie unterstützt.

note: type: Plain text
en: The pins must be connected in the file specified in the `POSTGUI_HALFILE` entry of the INI file when the program is started from an INI file. They can be set directly after the loadusr command if the program is started in a HAL file.
de: Die Pins müssen in der im Eintrag `POSTGUI_HALFILE` der INI-Datei angegebenen Datei angeschlossen werden, wenn das Programm aus einer INI-Datei gestartet wird. Sie können direkt nach dem Befehl loadusr gesetzt werden, wenn das Programm in einer HAL-Datei gestartet wird.

note: type: Plain text
en: The MDRO window contains the following elements:
de: Das MDRO-Fenster enthält die folgenden Elemente:

note: type: Plain text
en: A row for each axis. Each row includes:
de: Eine Zeile für jede Achse. Jede Zeile enthält:

note: type: Plain text
en: the name of the axis,
de: der Name der Achse,

note: type: Plain text
en: the current value,
de: der aktuelle Wert,

note: type: Plain text
en: a "z" button that zeros the value,
de: ein "z"-Button, der den Wert auf Null setzt

note: type: Plain text
en: a "1/2" button that halves the value,
de: ein Button "1/2", der den Wert halbiert

note: type: Plain text
en: a entry field that can be used to set a user-defined value. This field can be set from the keyboard or from the on-screen keypad.
de: ein Eingabefeld, in dem ein benutzerdefinierter Wert eingegeben werden kann. Dieses Feld kann über die Tastatur oder über das Bildschirmtastenfeld eingestellt werden.

note: type: Plain text
en: A "I" button that starts an index operation (see below),
de: Ein "I"-Button, der einen Indexvorgang startet (siehe unten),

note: type: Plain text
en: a keypad used to set values in the entry field via a mouse or touchscreen,
de: ein Tastenfeld, mit dem über eine Maus oder einen Touchscreen Werte in das Eingabefeld eingegeben werden können,

note: type: Plain text
en: coordinate system selection buttons:
de: Koordinatensystem Auswahl Buttons:

note: type: Plain text
en: The "mcs" button selects the machine coordinate system. These are the raw values from the encoders connected to the `mdro.axis.n` pins.
de: Mit dem Button "mcs" wird das Maschinenkoordinatensystem ausgewählt. Dies sind die Rohwerte der an die Pins `mdro.axis.__n__` angeschlossenen Messgeräte.

note: type: Plain text
en: The "cs1" - "cs4" buttons allow the user to select among one of four user-defined coordinate systems. If the program is started with the `MDRO_VAR_FILE =` option, the labels will be changed to "g54" - "g57" and the values from the specified .var file will be preloaded. Note that any changes to the values are not persistent: the .var file is never changed.
de: Mit den Buttons "cs1" - "cs4" kann der Benutzer eines von vier benutzerdefinierten Koordinatensystemen auswählen. Wenn das Programm mit der Option `MDRO_VAR_FILE =` gestartet wird, werden die Beschriftungen in "g54" - "g57" geändert und die Werte aus der angegebenen .var-Datei werden vorgeladen. Beachten Sie, dass alle Änderungen an den Werten nicht dauerhaft sind: Die .var-Datei wird nie geändert.

note: type: Plain text
en: Inch/Millimeter selection buttons.
de: Inch/Millimeter-Auswahltasten.

note: type: Title ==
en: Index operations
de: Index-Operationen

note: type: Plain text
en: `MDRO` supports DRO scales with index marks. Hit the "I" button on the axis row then crank the axis to the index position. The machine coordinate will be zeroed. This is easiest to see at startup or when the "mcs" coordinate system has been selected.
de: `MDRO` unterstützt DRO-Skalen mit Indexmarken. Klicken Sie auf die Schaltfläche "I" in der Achsenzeile und kurbeln Sie die Achse auf die Indexposition. Die Maschinenkoordinate wird auf Null gesetzt. Dies ist am einfachsten beim Start oder bei Auswahl des Koordinatensystems "mcs" zu erkennen.

note: type: Plain text
en: The easiest way to see how `MDRO` works is to try it in a simulation environment.  Add this section to the end of your simulation HAL file, usually "hallib/core_sim.hal":
de: Der einfachste Weg zu sehen, wie `MDRO` funktioniert, ist, es in einer Simulationsumgebung auszuprobieren.  Fügen Sie diesen Abschnitt an das Ende Ihrer Simulations-HAL-Datei an, normalerweise "hallib/core_sim.hal":

note: type: Block title
en: NGCGUI embedded into AXIS
de: NGCGUI eingebettet in AXIS

note: type: Plain text
en: 'NGCGUI' is a Tcl application to work with subroutines. It allows you to have a conversational interface with LinuxCNC. You can organize the subroutines in the order you need them to run and concatenate the subroutines into one file for a complete part program.
de: 'NGCGUI' ist eine Tcl-Anwendung zur Arbeit mit Unterroutinen. Es ermöglicht Ihnen, eine Konversationsschnittstelle mit LinuxCNC zu haben. Sie können die Unterroutinen in der Reihenfolge organisieren, in der Sie sie ausführen und die Unterroutinen in einer Datei für ein vollständiges Teileprogramm verketten müssen.

note: type: Plain text
en: 'NGCGUI' can run as a standalone application or can be embedded in multiple tab pages in the AXIS GUI.
de: 'NGCGUI' kann als eigenständige Anwendung ausgeführt oder in mehrere Registerkarten in der AXIS GUI eingebettet werden.

note: type: Plain text
en: 'PyNGCGUI' can run as a standalone application or can be embedded as a tab page (with its own set of multiple subroutine tabs) in any GUI that supports embedding of GladeVCP applications AXIS, Touchy, Gscreen and GMOCCAPY.
de: 'PyNGCGUI' kann als eigenständige Anwendung laufen oder als Registerkarte (mit einem eigenen Satz von mehreren Unterprogramm-Registerkarten) in jede GUI eingebettet werden, die eine Einbettung der GladeVCP-Anwendungen AXIS, Touchy, Gscreen und GMOCCAPY unterstützt.

note: type: Plain text
en: Using NGCGUI or PyNGCGUI:
de: NGCGUI oder PyNGCGUI verwenden:

note: type: Plain text
en: Tab pages are provided for each subroutine specified in the INI file.
de: Für jedes in der INI-Datei angegebene Unterprogramm gibt es Registerkarten (engl. tabs).

note: type: Plain text
en: New subroutines tab pages can be added on the fly using the <<ngcgui-ini,custom tab>>.
de: Neue Subroutinen-Registerkarten können mit dem <<ngcgui-ini,custom tab>> spontan hinzugefügt werden.

note: type: Plain text
en: Each subroutine tab page provides entry boxes for all subroutine parameters.
de: Jede Registerkarte eines Unterprogramms enthält Eingabefelder für alle Unterprogrammparameter.

note: type: Plain text
en: The entry boxes can have a default value and an label that are identified by special comments in the subroutine file.
de: Die Eingabefelder können einen Standardwert und eine Bezeichnung haben, die durch spezielle Kommentare in der Unterprogrammdatei gekennzeichnet sind.

note: type: Plain text
en: Subroutine invocations can be concatenated together to form a multiple step program.
de: Unterprogrammaufrufe können miteinander verkettet werden, um ein mehrschrittiges Programm zu bilden.

note: type: Plain text
en: Any single-file G-code subroutine that conforms to NGCGUI conventions can be used.
de: Jede G-Code-Subroutine in einer einzigen Datei, die den NGCGUI-Konventionen entspricht, kann verwendet werden.

note: type: Plain text
en: Any gcmc (G-code-meta-compiler) program that conforms to NGCGUI conventions for tagging variables can be used. (The gcmc executable must be installed separately, see: http://www.vagrearg.org/content/gcmc)
de: Jedes gcmc-Programm (G-Code-Meta-Compiler), das den NGCGUI-Konventionen für die Kennzeichnung von Variablen entspricht, kann verwendet werden. (Die ausführbare Datei gcmc muss separat installiert werden, siehe: http://www.vagrearg.org/content/gcmc)

note: type: delimited block =
en: NGCGUI and PyNGCGUI implement the same functions and both process .ngc and .gcmc files that conform to a few NGCGUI-specific conventions.  In this document, the term 'NGCGUI' generally refers to either application.
de: NGCGUI und PyNGCGUI implementieren die gleichen Funktionen und verarbeiten beide .ngc- und .gcmc-Dateien, die einigen NGCGUI-spezifischen Konventionen entsprechen.  In diesem Dokument bezieht sich der Begriff "NGCGUI" im Allgemeinen auf beide Anwendungen.

note: type: Title ==
en: Demonstration Configurations
de: Beispiel-Konfigurationen

note: type: Plain text
en: A number of demonstration configurations are located in the sim directory of the Sample Configurations offered by the LinuxCNC configuration picker. The configuration picker is on the system's main menu: Applications > CNC > LinuxCNC
de: Eine Reihe von Demonstrations-Konfigurationen sind in der sim-Verzeichnis der Sample Configurations von der LinuxCNC Konfiguration Picker angeboten befindet. Der Konfigurationspicker befindet sich im Hauptmenü des Systems: Anwendungen > CNC > LinuxCNC

note: type: Plain text
en: Examples are included for the AXIS, Touchy, gscreen, and GMOCCAPY.  These examples demonstrate both 3-axis (XYZ) cartesian configurations (like mills) and lathe (XZ) setups.  Some examples show the use of a pop up keyboard for touch screen systems and other examples demonstrate the use of files created for the gcmc (G-code Meta Compiler) application.  The touchy examples also demonstrate incorporation of a GladeVCP back plot viewer (gremlin_view).
de: Es sind Beispiele für AXIS, Touchy, Gscreen und GMOCCAPY enthalten.  Diese Beispiele demonstrieren sowohl kartesische 3-Achsen-Konfigurationen (wie Fräsmaschinen) als auch Drehbank-Konfigurationen (XZ).  Einige Beispiele zeigen die Verwendung einer Pop-up-Tastatur für Touchscreen-Systeme und andere Beispiele demonstrieren die Verwendung von Dateien, die für die Anwendung gcmc (G-code Meta Compiler) erstellt wurden.  Die berührungsempfindlichen Beispiele zeigen auch die Einbindung eines GladeVCP-Backplot-Viewers (gremlin_view).

note: type: Plain text
en: The simplest application is found as:
de: Die einfachste Anwendung ist die folgende:

note: type: Plain text
en: A comprehensive example showing gcmc compatibility is at:
de: Ein umfassendes Beispiel für die Kompatibilität von gcmc finden Sie unter:

note: type: Plain text
en: A comprehensive example embedded as a GladeVCP app and using gcmc is at:
de: Ein umfassendes Beispiel, das als GladeVCP-App eingebettet ist und gcmc verwendet, finden Sie unter:

note: type: Plain text
en: The example sim configurations make use of library files that provide example G-code subroutine (.ngc) files and G-code-meta-compiler (.gcmc) files:
de: Die Beispielsimulationskonfigurationen verwenden Bibliotheksdateien, die Beispiel-G-Code-Unterprogrammdateien (.ngc) und G-Code-Meta-Compilerdateien (.gcmc) enthalten:

note: type: Plain text
en: 'ngcgui.ngc' - An easy to understand example using subroutines
de: 'ngcgui.ngc' - Ein leicht verständliches Beispiel mit Unterroutinen

note: type: Plain text
en: 'arc1.ngc' - basic arc using cutter radius compensation
de: 'arc1.ngc' - Kreisbogen mit Fräserradiuskompensation

note: type: Plain text
en: 'arc2.ngc' - arc speced by center, offset, width, angle (calls arc1)
de: 'arc2.ngc' - Bogen angegeben durch Zentrum, Offset, Breite, Winkel (ruft arc1 auf)

note: type: Plain text
en: 'backlash.ngc' - routine to measure an axis backlash with dial indicator
de: 'backlash.ngc' - Routine zur Messung eines Achsenspiels mit Wählanzeige

note: type: Plain text
en: 'db25.ngc' - creates a DB25 plug cutout
de: 'db25.ngc' - erstellt einen DB25-Plug-Ausschnitt

note: type: Plain text
en: 'gosper.ngc' - a recursion demo (flowsnake)
de: 'gosper.ngc' - eine Rekursionsdemo (FlowSnake)

note: type: Plain text
en: 'helix.ngc' - helix or D-hole cutting
de: 'helix.ngc' - Helix- oder D-Loch-Schneiden

note: type: Plain text
en: 'helix_rtheta.ngc' - helix or D-hole positioned by radius and angle
de: 'helix_rtheta.ngc' - Helix oder D-Loch, die durch Radius und Winkel positioniert sind

note: type: Plain text
en: 'hole_circle.ngc' - equally spaced holes on a circle
de: 'hole_circle.ngc' - gleichmäßig verteilte Löcher auf einem Kreis

note: type: Plain text
en: 'ihex.ngc' - internal hexagon
de: 'ihex.ngc' - internes Sechseck (hexagon)

note: type: Plain text
en: 'ohex.ngc' - outside hexagon
de: 'ohex.ngc' - äußeres (engl. outside) hexagon

note: type: Plain text
en: 'oquad.ngc' - outside quadrilateral
de: 'oquad.ngc' - äußeres (engl. outside) quadrilateral

note: type: Plain text
en: 'qpex_mm.ngc' - demo of qpockets (mm based)
de: 'qpex_mm.ngc' - Demo von qpockets (mm-basiert)

note: type: Plain text
en: 'qpex.ngc' - demo of qpockets (inch based)
de: 'qpex.ngc' - Demo von qpockets (zollbasiert)

note: type: Plain text
en: 'qpocket.ngc' - quadrilateral pocket
de: 'qpocket.ngc' - vierseitige Tasche (lateinisch/englisch quadrilateral pocket)

note: type: Plain text
en: 'rectangle_probe.ngc' - probe a rectangular area
de: 'rectangle_probe.ngc' - sondiert einen rechteckigen Bereich

note: type: Plain text
en: 'simp.ngc' - a simple subroutine example that creates two circles
de: 'simp.ngc' - ein einfaches Beispiel für ein Unterprogramm, das zwei Kreise erzeugt

note: type: Plain text
en: 'slot.ngc' - slot from connecting two endpoints
de: 'slot.ngc' - Schlitz aus der Verbindung zweier Endpunkte

note: type: Plain text
en: 'xyz.ngc' - machine exerciser constrained to a box shape
de: 'xyz.ngc' - Maschinentrainer, der auf eine Kastenform beschränkt ist

note: type: Plain text
en: 'Custom' - Creates custom tabs
de: 'Custom' - Erzeugt Benutzer-angepasste Registrierkarten (engl. tabs)

note: type: Plain text
en: 'ttt' - True Type Tracer, to create texts to be engraved
de: 'ttt' - True Type Tracer, um Texte zu erstellen, die graviert werden sollen

note: type: Plain text
en: 'ngcgui-lathe' - Example lathe subroutine
de: ngcgui-lathe' - Beispiel-Unterprogramm für Drehmaschinen

note: type: Plain text
en: 'g76base.ngc' - GUI for G76 threading
de: 'g76base.ngc' - GUI für G76 Gewindebohren

note: type: Plain text
en: 'g76diam.ngc' - threading speced by major, minor diameters
de: g76diam.ngc' - Gewinde nach Haupt- und Nebendurchmesser spezifiziert

note: type: Plain text
en: 'id.ngc' - bores the inside diameter
de: 'id.ngc' - bohrt den Innendurchmesser

note: type: Plain text
en: 'od.ngc' - turns the outside diameter
de: 'od.ngc' - dreht den Außendurchmesser

note: type: Plain text
en: 'taper-od.ngc' - turns a taper on the outside diameter
de: taper-od.ngc' - dreht einen Kegel auf dem Außendurchmesser

note: type: Plain text
en: 'drill.gcmc' - drill holes in rectangle pattern
de: 'drill.gcmc' - Löcher im Rechteckmuster bohren

note: type: Plain text
en: 'square.gcmc' - simple demo of variable tags for gcmc files
de: square.gcmc' - einfache Demo von variablen Tags für gcmc-Dateien

note: type: Plain text
en: 'star.gcmc' - gcmc demo illustrating functions and arrays
de: 'star.gcmc' - GCMC-Demo zur Veranschaulichung von Funktionen und Arrays

note: type: Plain text
en: 'wheels.gcmc' - gcmc demo of complex patterns
de: 'wheels.gcmc' - GCMC Demo komplexer Muster

note: type: Plain text
en: To try a demonstration, select a sim configuration and start the LinuxCNC program.
de: Um eine Demonstration zu versuchen, wählen Sie eine Sim-Konfiguration und starten Sie das LinuxCNC-Programm.

note: type: Plain text
en: If using the AXIS GUI, press the 'E-Stop' image:images/tool_estop.png[] then 'Machine Power' image:images/tool_power.png[] then 'Home All'. Pick a NGCGUI tab, fill in any empty blanks with sensible values and press 'Create Feature' then 'Finalize'. Finally press the 'Run' image:images/tool_run.png[] button to watch it run. Experiment by creating multiple features and features from different tab pages.
de: Wenn Sie die AXIS GUI verwenden, drücken Sie auf "Notaus" (engl. E-Stop) image:images/tool_estop.png[] und dann auf "Machine Power" image:images/tool_power.png[] und dann auf "Refefernzierfahrt aller Achsen" (engl. Home All). Wählen Sie eine NGCGUI-Registerkarte, füllen Sie alle leeren Felder mit sinnvollen Werten aus und drücken Sie auf "Feature anlegen" (engl. create feature) und dann auf "Finalize". Drücken Sie abschließend auf die Schaltfläche "Ausführen" image:images/tool_run.png[], um die Ausführung zu beobachten. Experimentieren Sie, indem Sie mehrere Merkmale und Merkmale aus verschiedenen Registerkarten erstellen.

note: type: Plain text
en: To create several subroutines concatenated into a single file, go to each tab fill in the blanks, press 'Create Feature' then using the arrow keys move any tabs needed to put them in order. Now press 'Finalize' and answer the prompt to create
de: Um mehrere Unterprogramme zu erstellen, die in einer einzigen Datei zusammengefasst sind, gehen Sie zu jeder Registerkarte, füllen Sie die Leerstellen aus und drücken Sie "Feature erstellen". Drücken Sie nun auf "Abschließen" und beantworten Sie die Aufforderung zum Erstellen von

note: type: Plain text
en: Other GUIs will have similar functionality but the buttons and names may be different.
de: Andere GUIs haben eine ähnliche Funktionalität, aber die Schaltflächen und Namen können unterschiedlich sein.

note: type: delimited block =
en: The demonstration configs create tab pages for just a few of the provided examples. Any GUI with a <<ngcgui-ini,custom tab>> can open any of the library example subroutines or any user file if it is in the LinuxCNC subroutine path.
de: Die Demonstrationskonfigurationen erstellen Registerkarten für nur einige der mitgelieferten Beispiele. Jede GUI mit einem <<ngcgui-ini,angepassten Registrierkarte>> kann jede der Bibliotheks-Beispiel-Subroutinen oder jede Benutzerdatei öffnen, wenn sie sich im LinuxCNC-Subroutinenpfad befindet.

note: type: delimited block =
en: To see special key bindings, click inside an NGCGUI tab page to get focus and then press Control-k.
de: Um spezielle Tastenbelegungen zu sehen, klicken Sie in eine ngcgui-Registerkarte, um den Fokus zu erhalten, und drücken Sie dann STRG-K.

note: type: delimited block =
en: The demonstration subroutines should run on the simulated machine configurations included in the distribution.  A user should always understand the behavior and purpose of a program before running on a real machine.
de: Die Demonstrationsunterprogramme sollten auf den simulierten Maschinenkonfigurationen laufen, die in der Distribution enthalten sind.  Ein Benutzer sollte immer das Verhalten und den Zweck eines Programms verstehen, bevor er es auf einer echten Maschine ausführt.

note: type: Title ==
en: Library Locations
de: Bibliothek (engl. library)-Verzeichnisse (engl. locations)

note: type: Plain text
en: In LinuxCNC installations installed from deb packages, the simulation configs for NGCGUI use symbolic links to non-user-writable LinuxCNC libraries for:
de: In LinuxCNC-Installationen, die aus .deb-Paketen installiert wurden, verwenden die Simulationskonfigurationen für NGCGUI symbolische Links zu nicht vom Benutzer beschreibbaren LinuxCNC-Bibliotheken für:

note: type: Plain text
en: 'nc_files/ngcgui_lib'             NGCGUI-compatible subfiles
de: 'nc_files/ngcgui_lib' NGCGUI-kompatible Unterdateien

note: type: Plain text
en: 'nc_files/ngcgui_lib/lathe'       NGCGUI-compatible lathe subfiles
de: 'nc_files/ngcgui_lib/lathe' NGCGUI-kompatible Drehmaschinen-Unterdateien

note: type: Plain text
en: 'nc_files/gcmc_lib'               NGCGUI-gcmc-compatible programs
de: 'nc_files/gcmc_lib' NGCGUI-gcmc-kompatible Programme

note: type: Plain text
en: 'nc_files/ngcgui_lib/utilitysubs' Helper subroutines
de: 'nc_files/ngcgui_lib/utilitysubs' Hilfs-Unterprogramme

note: type: Plain text
en: 'nc_files/ngcgui_lib/mfiles'      User M files
de: 'nc_files/ngcgui_lib/mfiles' Benutzer-M-Dateien

note: type: Plain text
en: These libraries are located by INI file items that specify the search paths used by LinuxCNC (and NGCGUI):
de: Diese Bibliotheken werden durch INI-Datei-Elemente gefunden, in denen die Suchpfade von LinuxCNC (und NGCGUI) stehen:

note: type: delimited block =
en: These are long lines (not continued on multiple lines)  that specify the directories used in a search patch.  The directory names are separated by colons (:). No spaces should occur between directory names.
de: Dabei handelt es sich um lange Zeilen (die nicht über mehrere Zeilen fortgesetzt werden), in denen die in einem Suchfeld verwendeten Verzeichnisse angegeben werden.  Die Verzeichnisnamen werden durch Doppelpunkte (:) getrennt. Zwischen den Verzeichnisnamen sollten keine Leerzeichen stehen.

note: type: Plain text
en: A user can create new directories for their own subroutines and M-files and add them to the search path(s).
de: Ein Benutzer kann neue Verzeichnisse für seine eigenen Unterprogramme und M-Dateien erstellen und sie zu den Suchpfaden hinzufügen.

note: type: Plain text
en: For example, a user could create directories from the terminal with the commands:
de: So könnte ein Benutzer beispielsweise Verzeichnisse vom Terminal aus mit den folgenden Befehlen erstellen:

note: type: Plain text
en: And then create or copy system-provided files to these user-writable directories.  For instance, a user might create a NGCGUI-compatible subfile named:
de: Und dann die vom System bereitgestellten Dateien in diesen vom Benutzer beschreibbaren Verzeichnisse anlegen oder dorthin kopieren.  Ein Benutzer könnte zum Beispiel eine NGCGUI-kompatible Unterdatei namens:

note: type: Plain text
en: To use files in new directories, the INI file must be edited to include the new subfiles and to augment the search path(s).  For this example:
de: Um Dateien in neuen Verzeichnissen zu verwenden, muss die INI-Datei bearbeitet werden, um die neuen Unterdateien einzuschließen und den Suchpfad/die Suchpfade zu ergänzen.  Für dieses Beispiel:

note: type: Plain text
en: LinuxCNC (and NGCGUI) use the first file found when searching directories in the search path.  With this behavior, you can supersede an ngcgui_lib subfile by placing a subfile with an identical name in a directory that is found earlier in the path search. More information can be found in the INI chapter of the Integrators Manual.
de: LinuxCNC (und NGCGUI) verwenden die erste gefundene Datei bei der Suche nach Verzeichnissen im Suchpfad.  Mit diesem Verhalten können Sie eine ngcgui_lib Unterdatei ersetzen, indem Sie eine Unterdatei mit einem identischen Namen in einem Verzeichnis platzieren, das früher in der Pfadsuche gefunden wird. Weitere Informationen finden Sie im INI-Kapitel des Integrators Manual.

note: type: SH
en: Standalone Usage
de: Standalone-Nutzung

note: type: Title ===
en: Standalone NGCGUI
de: Eigenständiges NGCGUI

note: type: Plain text
en: For usage, type in a terminal:
de: Zur Verwendung geben Sie in ein Terminal ein:

note: type: delimited block -
en: ngcgui --help
    Usage:
      ngcgui --help | -?
      ngcgui [Options] -D <nc files directory name>
      ngcgui [Options] -i <LinuxCNC INI file name>
      ngcgui [Options]
de: ngcgui --help
    Usage:
      ngcgui --help | -?
      ngcgui [Options] -D <nc-Dateien Verzeichnisname>
      ngcgui [Options] -i <LinuxCNC INI Dateiname>
      ngcgui [Options]

note: type: delimited block -
en: Options:
      [-S subroutine_file]
      [-p preamble_file]
      [-P postamble_file]
      [-o output_file]
      [-a autosend_file]            (autosend to AXIS default:auto.ngc)
      [--noauto]                    (no autosend to AXIS)
      [-N | --nom2]                 (no m2 terminator (use %))
      [--font [big|small|fontspec]] (default: "Helvetica -10 normal")
      [--horiz|--vert]              (default: --horiz)
      [--cwidth comment_width]      (width of comment field)
      [--vwidth varname_width]      (width of varname field)
      [--quiet]                     (fewer comments in outfile)
      [--noiframe]                  (default: frame displays image)
de: Optionen:
      [-S subroutine_file]
      [-p preamble_file]
      [-P postamble_file]
      [-o output_file]
      [-a autosend_file] (automatisches Senden an AXIS Standard:auto.ngc)
      [--noauto] (keine automatische Übertragung an AXIS)
      [-N | --nom2] (kein m2-Terminator (% verwenden))
      [--font [big|small|fontspec]] (Voreinstellung: "Helvetica -10 normal")
      [--horiz|--vert] (Voreinstellung: --horiz)
      [--cwidth comment_width] (Breite des Kommentarfeldes)
      [--vwidth varname_width] (Breite des Feldes varname)
      [--quiet] (weniger Kommentare in der Ausgabedatei)
      [--noiframe] (Voreinstellung: Rahmen zeigt Bild an)

note: type: delimited block =
en: As a standalone application, NGCGUI handles a single subroutine file which can be invoked multiple times.  Multiple standalone NGCGUI applications can be started independently.
de: Als eigenständige Anwendung bearbeitet NGCGUI eine einzelne Unterprogrammdatei, die mehrfach aufgerufen werden kann.  Mehrere eigenständige NGCGUI-Anwendungen können unabhängig voneinander gestartet werden.

note: type: Title ===
en: Standalone PyNGCGUI
de: Eigenständiges (engl. standalone) PyNGCGUI

note: type: delimited block =
en: As a standalone application, PyNGCGUI can read an INI file (or a running LinuxCNC application) to create tab pages for multiple subfiles.
de: Als eigenständige Anwendung kann PyNGCGUI eine INI-Datei (oder eine laufende LinuxCNC-Anwendung) lesen, um Registerkarten für mehrere Unterdateien zu erstellen.

note: type: Title ==
en: Embedding NGCGUI
de: NGCGUI einbetten

note: type: Title ===
en: Embedding NGCGUI in AXIS
de: NGCGUI in AXIS einbetten

note: type: Plain text
en: The following INI file items go in the [DISPLAY] section. (See additional sections below for additional items needed)
de: Die folgenden INI-Datei-Elemente gehören in den Abschnitt [DISPLAY]. (Siehe weitere Abschnitte unten für zusätzlich benötigte Elemente)

note: type: Plain text
en: 'TKPKG = Ngcgui 1.0' - the NGCGUI package
de: 'TKPKG = Ngcgui 1.0' - das NGCGUI-Paket

note: type: Plain text
en: 'TKPKG = Ngcguittt 1.0' - the True Type Tracer package for generating text for engraving (optional, must follow TKPKG = Ngcgui).
de: 'TKPKG = Ngcguittt 1.0' - das True Type Tracer-Paket zum Generieren von Text für die Gravur (optional, muss TKPKG = Ngcgui folgen).

note: type: Plain text
en: 'NGCGUI_FONT = Helvetica -12 normal' - Sets the font used
de: 'NGCGUI_FONT = Helvetica -12 normal' - Legt die verwendete Schriftart fest

note: type: Plain text
en: 'NGCGUI_PREAMBLE = in_std.ngc' - The preamble file to be added at the beginning of the subroutine. When several subroutines are concatenated, it is only added once.
de: NGCGUI_PREAMBLE = in_std.ngc' - Die Präambel-Datei, die am Anfang des Unterprogramms hinzugefügt wird. Bei der Verkettung mehrerer Unterprogramme wird sie nur einmal hinzugefügt.

note: FIXME * 'NGCGUI_SUBFILE = "" - Creates a custom tab ? type: Plain text
en: 'NGCGUI_SUBFILE = simp.ngc' - Creates a tab from the named subroutine.
de: 'NGCGUI_SUBFILE = simp.ngc' - Erstellt eine Registerkarte aus der benannten Unterroutine.

note: type: Plain text
en: 'NGCGUI_SUBFILE = ""' - Creates a custom tab
de: 'NGCGUI_SUBFILE = ""' - Erzeugt eine benutzerdefinierte Registerkarte

note: type: Plain text
en: '#NGCGUI_OPTIONS = opt1 opt2 ...' - NGCGUI options:
de: '#NGCGUI_OPTIONS = opt1 opt2 ...' - NGCGUI-Optionen:

note: type: Plain text
en: 'nonew'    -- Prohibits creation of new custom tab
de: 'nonew' -- Verhindert die Erstellung einer neuen benutzerdefinierten Registerkarte

note: type: Plain text
en: 'noremove' -- Prohibits deleting a tab page
de: 'noremove' -- Verbietet das Löschen einer Registerkartenseite

note: type: Plain text
en: 'noauto'   -- Do not run automatically (makeFile, then manual run)
de: 'noauto' -- Nicht automatisch ausführen (makeFile, dann manuell ausführen)

note: type: Plain text
en: 'noiframe' -- No internal image, image on separate top level
de: 'noiframe' -- Kein internes Bild, Bild auf separater oberster Ebene

note: type: Plain text
en: 'TTT = truetype-tracer' - name of the truetype tracer program (it must be in user PATH)
de: 'TTT = truetype-tracer' - Name des truetype tracer-Programms (es muss im Benutzer-PATH sein)

note: type: Plain text
en: 'TTT_PREAMBLE = in_std.ngc' - Optional, specifies filename for preamble used for
    ttt created subfiles. (alternate: mm_std.ngc)
de: 'TTT_PREAMBLE = in_std.ngc' - Optional, gibt den Dateinamen der Präambel an, die für
    ttt erstellten Unterdateien verwendet wird. (alternativ: mm_std.ngc)

note: type: delimited block =
en: The optional truetype tracer items are used to specify an NGCGUI-compatible tab page that uses the application truetype-tracer.  The truetype-tracer application must be installed independently and located in the user PATH.
de: Die optionalen truetype-tracer-Elemente werden verwendet, um eine NGCGUI-kompatible Registerkarte anzugeben für die Anwendung von truetype-tracer.  Die truetype-tracer-Anwendung muss unabhängig installiert werden und sich im Benutzer-PATH befinden.

note: type: Title ===
en: Embedding PyNGCGUI as a GladeVCP tab page in a GUI
de: PyNGCGUI als GladeVCP-Registerkarte in ein GUI einbetten

note: type: Plain text
en: The following INI file items go in the [DISPLAY] section for use with the AXIS, Gscreen, or Touchy GUIs.  (See additional sections below for additional items needed)
de: Die folgenden INI-Datei-Elemente gehören in den Abschnitt [DISPLAY] zur Verwendung mit den grafischen Benutzeroberflächen AXIS, Gscreen oder Touchy.  (Weitere benötigte Elemente finden Sie in den folgenden Abschnitten)

note: type: Plain text
en: `EMBED_TAB_NAME = PyNGCGUI` - name to appear on embedded tab
de: `EMBED_TAB_NAME = PyNGCGUI` - Name, der auf der eingebetteten Registerkarte erscheinen soll

note: type: Plain text
en: `EMBED_TAB_COMMAND = gladevcp -x {XID} pyngcgui_axis.ui` - invokes GladeVCP
de: `EMBED_TAB_COMMAND = gladevcp -x {XID} pyngcgui_axis.ui` - ruft GladeVCP auf

note: type: Plain text
en: `EMBED_TAB_LOCATION = name_of_location` - where the embedded page is located
de: `EMBED_TAB_LOCATION = name_of_location` - wo sich die eingebettete Seite befindet

note: type: delimited block =
en: The EMBED_TAB_LOCATION specifier is not used for the AXIS GUI.  While PyNGCGUI can be embedded in AXIS, integration is more complete when using NGCGUI (using TKPKG = Ngcgui 1.0).  To specify the EMBED_TAB_LOCATION for other GUIs, see the <<sub:ini:sec:display,DISPLAY Section>> of the INI Configuration Chapter.
de: Der EMBED_TAB_LOCATION-Spezifizierer wird nicht für die AXIS-GUI verwendet.  Während PyNGCGUI in AXIS eingebettet werden kann, ist die Integration vollständiger, wenn NGCGUI verwendet wird (mit TKPKG = Ngcgui 1.0).  Um die EMBED_TAB_LOCATION für andere GUIs festzulegen, vgl. den <<sub:ini:sec:display,Abschnitt zu 'DISPLAY'>> des INI-Konfigurationskapitels.

note: type: delimited block =
en: The truetype tracer GUI front-end is not currently available for GladeVCP applications.
de: Das Truetype Tracer GUI-Frontend ist derzeit nicht für GladeVCP-Anwendungen verfügbar.

note: type: Title ===
en: Additional INI File items required for NCGUI or PyNGCGUI
de: Zusätzliche INI-Datei-Elemente, die für NGCGUI oder PyNGCGUI erforderlich sind

note: type: Plain text
en: The following INI file items go in the [DISPLAY] section for any GUI that embeds either NGCGUI or PyNGCGUI.
de: Die folgenden INI-Datei-Elemente gehören in den Abschnitt [DISPLAY] für jede GUI, die entweder NGCGUI oder PyNGCGUI einbindet.

note: type: Plain text
en: 'NGCGUI_FONT = Helvetica -12 normal' - specifies the font name,size, normal|bold
de: NGCGUI_FONT = Helvetica -12 normal' - gibt den Namen und die Größe der Schriftart an, normal|fett (engl. bold)

note: type: Plain text
en: 'NGCGUI_PREAMBLE = in_std.ngc' - the preamble file to be added in front of the subroutines. When concatenating several common subroutine invocations, this preamble is only added once.  For mm-based machines, use mm_std.ngc
de: NGCGUI_PREAMBLE = in_std.ngc' - die Präambel-Datei, die den Unterprogrammen vorangestellt wird. Bei der Verkettung mehrerer gemeinsamer Subroutinenaufrufe wird diese Präambel nur einmal hinzugefügt.  Für mm-basierte Maschinen verwenden Sie mm_std.ngc

note: type: Plain text
en: 'NGCGUI_SUBFILE = filename1.ngc' - creates a tab from the filename1 subroutine
de: 'NGCGUI_SUBFILE = filename1.ngc' - erstellt eine Registerkarte aus der Unterroutine filename1

note: type: Plain text
en: 'NGCGUI_SUBFILE = filename2.ngc' - creates a tab from the filename2 subroutine
de: 'NGCGUI_SUBFILE = filename2.ngc' - erstellt eine Registerkarte aus der Unterroutine filename2

note: type: Plain text
en: '... etc.'
de: '... usw.'

note: type: Plain text
en: 'NGCGUI_SUBFILE = gcmcname1.gcmc' - creates a tab from the gcmcname1 file
de: 'NGCGUI_SUBFILE = gcmcname1.gcmc' - erstellt eine Registerkarte aus der Datei gcmcname1

note: type: Plain text
en: 'NGCGUI_SUBFILE = gcmcname2.gcmc' - creates a tab from the gcmcname2 file
de: 'NGCGUI_SUBFILE = gcmcname2.gcmc' - erstellt eine Registerkarte aus der Datei gcmcname2

note: type: Plain text
en: 'NGCGUI_SUBFILE = ""' - creates a custom tab that can open any subroutine in the search path
de: 'NGCGUI_SUBFILE = ""' - erstellt eine benutzerdefinierte Registerkarte, die jede Unterroutine im Suchpfad öffnen kann

note: type: Plain text
en: 'NGCGUI_OPTIONS = opt1 opt2 ...' - NGCGUI options
de: 'NGCGUI_OPTIONS = opt1 opt2 ...' - NGCGUI-Optionen

note: type: Plain text
en: 'nonew' - disallow making a new custom tab
de: 'nonew' - Erstellen eines neuen benutzerdefinierten Tabs nicht zugelassen

note: type: Plain text
en: 'noremove' - disallow removing any tab page
de: 'noremove' - das Entfernen von Tab-Seiten nicht zugelassen

note: type: Plain text
en: 'noauto' - no autosend (use makeFile, then save or manually send)
de: 'noauto' - kein automatisches Senden (makeFile verwenden, dann speichern oder manuell senden)

note: type: Plain text
en: 'noiframe' - no internal image, display images on separate top level widget
de: 'noiframe' - kein internes Bild, Bilder auf separatem Top-Level-Widget anzeigen

note: type: Plain text
en: 'nom2' - do not terminate with m2, use % terminator.  This option eliminates all the side effects of m2 termination
de: 'nom2' - nicht mit m2 abschließen, sondern %-Terminator verwenden.  Diese Option beseitigt alle Nebeneffekte der m2-Terminierung

note: type: Plain text
en: 'GCMC_INCLUDE_PATH = dirname1:dirname2' - search directories for gcmc include files
de: GCMC_INCLUDE_PATH = dirname1:dirname2' - sucht Verzeichnisse nach gcmc-Include-Dateien

note: type: Plain text
en: This is an example of embedding NGCGUI into AXIS. The subroutines need to be in a directory specified by the [RS274NGC]SUBROUTINE_PATH.  Some example subroutines use other subroutines so check to be sure you have the dependences, if any, in a SUBROUTINE_PATH directory.  Some subroutines may use custom M-files which must be in a directory specified by the [RS274NGC]USER_M_PATH.
de: Dies ist ein Beispiel für die Einbettung von NGCGUI in AXIS. Die Unterprogramme müssen sich in einem Verzeichnis befinden, das durch den [RS274NGC]SUBROUTINE_PATH angegeben ist.  Einige Beispielsubroutinen verwenden andere Subroutinen, daher sollten Sie sicherstellen, dass Sie die Abhängigkeiten, falls vorhanden, in einem SUBROUTINE_PATH-Verzeichnis haben.  Einige Unterprogramme können benutzerdefinierte M-Dateien verwenden, die sich in einem durch [RS274NGC]USER_M_PATH angegebenen Verzeichnis befinden müssen.

note: type: Plain text
en: The G-code-meta-compiler (gcmc) can include statements like:
de: Der G-Code-Meta-Compiler (gcmc) kann Anweisungen wie diese enthalten:

note: type: Plain text
en: By default, gcmc includes the current directory which, for LinuxCNC, will be the directory containing the LinuxCNC INI file. Additional directories can be prepended to the gcmc search order with the GCMC_INCLUDE_PATH item.
de: Standardmäßig schließt gcmc das aktuelle Verzeichnis ein, das für LinuxCNC das Verzeichnis ist, das die LinuxCNC INI-Datei enthält. Zusätzliche Verzeichnisse können der gcmc-Suchreihenfolge mit dem Element GCMC_INCLUDE_PATH vorangestellt werden.

note: type: Block title
en: Sample AXIS-GUI-based INI
de: Beispiel einer AXIS-GUI-basierten INI

note: type: delimited block -
en: [DISPLAY]
    TKPKG             = Ngcgui    1.0
    TKPKG             = Ngcguittt 1.0
    # Ngcgui must precede Ngcguittt
de: [DISPLAY]
    TKPKG = Ngcgui 1.0
    TKPKG = Ngcguittt 1.0
    # Ngcgui muss vor Ngcguittt stehen

note: type: delimited block -
en: NGCGUI_FONT       = Helvetica -12 normal
    # specify filenames only, files must be in [RS274NGC]SUBROUTINE_PATH
    NGCGUI_PREAMBLE   = in_std.ngc
    NGCGUI_SUBFILE    = simp.ngc
    NGCGUI_SUBFILE    = xyz.ngc
    NGCGUI_SUBFILE    = iquad.ngc
    NGCGUI_SUBFILE    = db25.ngc
    NGCGUI_SUBFILE    = ihex.ngc
    NGCGUI_SUBFILE    = gosper.ngc
    # specify "" for a custom tab page
    NGCGUI_SUBFILE    = ""
    #NGCGUI_SUBFILE   = "" use when image frame is specified if
    #                      opening other files is required
    #                      images will be put in a top level window
    NGCGUI_OPTIONS    =
    #NGCGUI_OPTIONS   = opt1 opt2 ...
    # opt items:
    #   nonew      -- disallow making a new custom tab
    #   noremove   -- disallow removing any tab page
    #   noauto     -- no auto send (makeFile, then manually send)
    #   noiframe   -- no internal image, image on separate top level
    GCMC_INCLUDE_PATH = /home/myname/gcmc_includes
de: NGCGUI_FONT       = Helvetica -12 normal
    # nur Dateinamen angeben, Dateien müssen sich im [RS274NGC]SUBROUTINE_PATH befinden
    NGCGUI_PREAMBLE   = in_std.ngc
    NGCGUI_SUBFILE    = simp.ngc
    NGCGUI_SUBFILE    = xyz.ngc
    NGCGUI_SUBFILE    = iquad.ngc
    NGCGUI_SUBFILE    = db25.ngc
    NGCGUI_SUBFILE    = ihex.ngc
    NGCGUI_SUBFILE    = gosper.ngc
    # angeben von "" für eine benutzerdefinierte Registerkarte
    NGCGUI_SUBFILE    = ""
    #NGCGUI_SUBFILE   = "" verwenden, wenn ein Bildrahmen angegeben ist,
    # wenn das Öffnen anderer Dateien erforderlich ist
    # Bilder werden in ein Fenster der obersten Ebene gestellt
    NGCGUI_OPTIONS    =
    #NGCGUI_OPTIONS   = opt1 opt2 ...
    # opt items:
    #   nonew      -- disallow making a new custom tab
    #   noremove   -- disallow removing any tab page
    #   noauto     -- no auto send (makeFile, then manually send)
    #   noiframe   -- no internal image, image on separate top level
    GCMC_INCLUDE_PATH = /home/myname/gcmc_includes

note: type: delimited block =
en: The above is not a complete AXIS GUI INI -- the items show are those used by NGCGUI.  Many additional items are required by LinuxCNC to have a complete INI file.
de: Die obige Datei ist keine vollständige AXIS GUI INI -- die gezeigten Elemente sind diejenigen, die von NGCGUI verwendet werden.  Viele zusätzliche Elemente werden von LinuxCNC erforderlich, um eine vollständige INI-Datei haben.

note: type: Plain text
en: Ngcgui_ttt provides support for truetype-tracer (v4).  It creates an AXIS tab page which allows a user to create a new NGCGUI tab page after entering text and selecting a font and other parameters.  (Truetype-tracer must be installed independently).
de: Ngcgui_ttt bietet Unterstützung für truetype-tracer (v4).  Es erstellt eine AXIS-Registerkarte, die es dem Benutzer ermöglicht, eine neue NGCGUI-Registerkarte zu erstellen, nachdem er Text eingegeben und eine Schriftart sowie andere Parameter ausgewählt hat.  (Truetype-tracer muss unabhängig installiert werden).

note: type: Plain text
en: To embed ngcgui_ttt in AXIS, specify the following items in addition to NGCGUI items:
de: Um ngcgui_ttt in AXIS einzubetten, geben Sie zusätzlich zu den NGCGUI-Elementen die folgenden Elemente an:

note: type: delimited block -
en: Item:    [DISPLAY]TKPKG = Ngcgui_ttt version_number
    Example: [DISPLAY]TKPKG = Ngcgui_ttt 1.0
    Note:    Mandatory, specifies loading of ngcgui_ttt in an AXIS tab page
             named ttt.
             Must follow the TKPKG = Ngcgui item.
de: Element: [DISPLAY]TKPKG = Ngcgui_ttt version_number
    Beispiel: [DISPLAY]TKPKG = Ngcgui_ttt 1.0
    Hinweis: Obligatorisch, gibt das Laden von ngcgui_ttt in einer AXIS-Registerkarte
             namens ttt.
             Muss auf den Eintrag TKPKG = Ngcgui folgen.

note: type: Plain text
en: The search path begins with the standard directory specified by:
de: Der Suchpfad beginnt mit dem durch angegebenen Standardverzeichnis:

note: type: delimited block -
en: [DISPLAY]PROGRAM_PREFIX = directory_name
de: [DISPLAY]PROGRAM_PREFIX = verzeichnis_name

note: type: Plain text
en: followed by multiple directories specified by:
de: gefolgt von mehreren Verzeichnissen, angegeben durch:

note: type: delimited block -
en: [RS274NGC]SUBROUTINE_PATH = directory1_name:directory1_name:directory3_name ...
de: [RS274NGC]SUBROUTINE_PATH = Verzeichnis1_Name:Verzeichnis1_Name:Verzeichnis3_Name ...

note: type: Block title
en: Directories
de: Verzeichnisse

note: type: Plain text
en: Directories may be specified as absolute paths or relative paths.
de: Verzeichnisse (engl. directories) können als absolute Pfade oder relative Pfade angegeben werden.

note: type: Plain text
en: Example: `[DISPLAY]PROGRAM_PREFIX = /home/myname/linuxcnc/nc_files`
de: Beispiel: `[DISPLAY]PROGRAM_PREFIX = /home/myname/linuxcnc/nc_files`

note: type: Plain text
en: Example: `[DISPLAY]PROGRAM_PREFIX = ~/linuxcnc/nc_files`
de: Beispiel: `[DISPLAY]PROGRAM_PREFIX = ~/linuxcnc/nc_files`

note: type: Plain text
en: Example: `[DISPLAY]PROGRAM_PREFIX = ../../nc_files`
de: Beispiel: `[DISPLAY]PROGRAM_PREFIX = .. /.. /nc_files`

note: type: Block title
en: Absolute Paths
de: Absolute Pfade

note: type: Plain text
en: An absolute path beginning with a "/" specifies a complete filesystem location.  A path beginning with a "\~/" specifies a path starting from the user's home directory.  A path beginning with "~username/" specifies a path starting in username's home directory.
de: Ein absoluter Pfad, der mit einem "/" beginnt, gibt einen vollständigen Dateisystemstandort an.  Ein Pfad, der mit "\~/" beginnt, gibt einen Pfad an, der im Home-Verzeichnis des Benutzers beginnt.  Ein Pfad, der mit "~Benutzername/" beginnt, legt einen Pfad fest, der im Home-Verzeichnis des Benutzers beginnt.

note: type: Plain text
en: Relative paths are based on the startup directory which is the directory containing the INI file.  Using relative paths can facilitate relocation of configurations but requires a good understanding of Linux path specifiers.
de: Relative Pfade basieren auf dem Startverzeichnis, also dem Verzeichnis, das die INI-Datei enthält.  Die Verwendung relativer Pfade kann das Verschieben von Konfigurationen erleichtern, erfordert aber ein gutes Verständnis der Linux-Pfadangaben.

note: type: Plain text
en: `./d0`        is the same as d0, e.g., a directory named d0 in the startup directory
de: './d0' ist dasselbe wie d0, z. B. ein Verzeichnis mit dem Namen d0 im Startup-Verzeichnis

note: type: Plain text
en: `../d1`       refers to a directory d1 in the parent directory
de: `../d1` bezieht sich auf ein Verzeichnis d1 im übergeordneten Verzeichnis

note: type: Plain text
en: `../../d2`    refers to a directory d2 in the parent of the parent directory
de: `../../d2` verweist auf ein Verzeichnis d2 im übergeordneten Verzeichnis des übergeordneten Verzeichnisses

note: type: Plain text
en: `../../../d3` etc.
de: `../../../d3` usw.

note: type: Plain text
en: Multiple directories can be specified with [RS274NGC]SUBROUTINE_PATH by separating them with colons.  The following example illustrates the format for multiple directories and shows the use of relative and absolute paths.
de: Mehrere Verzeichnisse können mit [RS274NGC]SUBROUTINE_PATH angegeben werden, indem sie durch Doppelpunkte getrennt werden.  Das folgende Beispiel veranschaulicht das Format für mehrere Verzeichnisse und zeigt die Verwendung von relativen und absoluten Pfaden.

note: type: Block title
en: Multiple Directories Example:
de: Beispiel für mehrere Verzeichnisse:

note: type: Plain text
en: This is one long line, do not continue on multiple lines.  When LinuxCNC and/or NGCGUI searches for files, the first file found in the search is used.
de: Dies ist eine lange Zeile, fahren Sie nicht in mehreren Zeilen fort.  Wenn LinuxCNC und/oder NGCGUI nach Dateien suchen, wird die erste Datei, die bei der Suche gefunden wird, verwendet.

note: type: Plain text
en: LinuxCNC (and NGCGUI) must be able to find all subroutines including helper routines that are called from within NGCGUI subfiles.  It is convenient to place utility subs in a separate directory as indicated in the example above.
de: LinuxCNC (und NGCGUI) muss in der Lage sein, alle Unterprogramme einschließlich der Hilfsroutinen zu finden, die aus den NGCGUI Unterdateien aufgerufen werden.  Es ist zweckmäßig, Utility-Subs in einem separaten Verzeichnis zu platzieren, wie im obigen Beispiel angegeben.

note: type: Plain text
en: The distribution includes the ngcgui_lib directory and demo files for preambles, subfiles, postambles and helper files.  To modify the behavior of the files, you can copy any file and place it in an earlier part of the search path.  The first directory searched is [DISPLAY]PROGRAM_PREFIX.  You can use this directory but it is better practice to create dedicated directory(ies) and put them at the beginning of the [RS274NGC]SUBROUTINE_PATH.
de: Die Distribution enthält das Verzeichnis ngcgui_lib und Demodateien für Präambeln, Subdateien, Postambeln und Hilfsdateien.  Um das Verhalten der Dateien zu ändern, können Sie eine beliebige Datei kopieren und sie an einer früheren Stelle des Suchpfads platzieren.  Das erste Verzeichnis, das durchsucht wird, ist [DISPLAY]PROGRAM_PREFIX.  Sie können dieses Verzeichnis verwenden, aber es ist besser, eigene Verzeichnisse zu erstellen und sie an den Anfang des [RS274NGC]SUBROUTINE_PATH zu stellen.

note: type: Plain text
en: In the following example, files in /home/myname/linuxcnc/mysubs will be found before files in ../../nc_files/ngcgui_lib.
de: Im folgenden Beispiel werden die Dateien in /home/myname/linuxcnc/mysubs vor den Dateien in ../../nc_files/ngcgui_lib gefunden.

note: type: Block title
en: Adding User Directory Example:
de: Beispiel für das Hinzufügen eines Benutzerverzeichnisses:

note: type: delimited block -
en: [RS274NGC]SUBROUTINE_PATH = /home/myname/linuxcnc/mysubs:../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs`
de: [RS274NGC]SUBROUTINE_PATH = /home/myname/linuxcnc/mysubs:../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs

note: type: Plain text
en: New users may inadvertently try to use files that are not structured to be compatible with NGCGUI requirements.  NGCGUI will likely report numerous errors if the files are not coded per its conventions.  Good practice suggests that NGCGUI-compatible subfiles should be placed in a directory dedicated to that purpose and that preamble, postamble, and helper files should be in separate directory(ies) to discourage attempts to use them as subfiles.  Files not intended for use as subfiles can include a special comment: "(not_a_subfile)" so that NGCGUI will reject them automatically with a relevant message.
de: Neue Benutzer können versehentlich versuchen, Dateien zu verwenden, die nicht so strukturiert sind, dass sie mit den Anforderungen von NGCGUI kompatibel sind.  NGCGUI wird wahrscheinlich zahlreiche Fehler melden, wenn die Dateien nicht nach seinen Konventionen kodiert sind.  Gute Praxis legt nahe, dass ngcgui-kompatible Unterdateien in ein dafür vorgesehenes Verzeichnis gelegt werden sollten und dass Präambel-, Postambel- und Hilfsdateien in separaten Verzeichnissen liegen sollten, um Versuche, sie als Unterdateien zu verwenden, zu unterbinden.  Dateien, die nicht für die Verwendung als Unterdateien vorgesehen sind, können einen speziellen Kommentar enthalten: "(not_a_subfile)", so dass NGCGUI sie automatisch mit einer entsprechenden Meldung zurückweist.

note: type: Title ===
en: Summary of INI File item details for NGCGUI usage
de: Zusammenfassung der Details der INI-Datei für die Verwendung von NGCGUI

note: type: Plain text
en: _Example_: `[RS274NGC]SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs` +
    _Note_:    Optional, but very useful to organize subfiles and utility files.
de: _Beispiel_: `[RS274NGC]SUBROUTINE_PATH = ../../nc_files/ngcgui_lib:../../nc_files/ngcgui_lib/utilitysubs` +
    _Hinweis_:    Optional, aber sehr nützlich, um Unterdateien und Utility-Dateien zu organisieren.

note: type: Plain text
en: _Example_: `[RS274NGC]USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles` +
    _Note_:    Optional, needed to locate custom user M-files.
de: _Beispiel_: `[RS274NGC]USER_M_PATH = ../../nc_files/ngcgui_lib/mfiles` +
    _Hinweis_:    Optional, wird benötigt, um benutzerdefinierte M-files zu finden.

note: type: Labeled list
en: [DISPLAY]EMBED_TAB_NAME = name to display on embedded tab page
de: [DISPLAY]EMBED_TAB_NAME = Name, der auf der eingebetteten Registerkarte angezeigt wird

note: type: Plain text
en: _Example_: `[DISPLAY]EMBED_TAB_NAME = Pyngcgui` +
    _Note_:    The entries: `EMBED_TAB_NAME`, `EMBED_TAB_COMMAND`, `EMBED_TAB_LOCATION`
    define an embedded application for several LinuxCNC GUIs.
de: _Beispiel_: `[DISPLAY]EMBED_TAB_NAME = Pyngcgui` +
    _Hinweis_:    Die Einträge: `EMBED_TAB_NAME`, `EMBED_TAB_COMMAND`, `EMBED_TAB_LOCATION`
    definieren eine eingebettete Anwendung für mehrere LinuxCNC-GUIs.

note: type: Labeled list
en: [DISPLAY]EMBED_TAB_COMMAND = programname followed by arguments
de: [DISPLAY]EMBED_TAB_COMMAND = Programmname gefolgt von Argumenten

note: type: Plain text
en: _Example_: `[DISPLAY]EMBED_TAB_COMMAND = gladevcp -x {XID} pyngcgui_axis.ui` +
    _Note_:    For GladeVCP applications, see the <<cha:glade-vcp,GladeVCP Chapter>>.
de: _Beispiel_: `[DISPLAY]EMBED_TAB_COMMAND = gladevcp -x {XID} pyngcgui_axis.ui` +
    _Hinweis_:    Für GladeVCP-Anwendungen siehe das <<cha:glade-vcp,GladeVCP Kapitel>>.

note: type: Labeled list
en: [DISPLAY]EMBED_TAB_LOCATION = name_of_location
de: [DISPLAY]EMBED_TAB_LOCATION = Name_des_Ortes (engl. location)

note: type: Plain text
en: _Example_: `[DISPLAY]EMBED_TAB_LOCATION = notebook_main` +
    _Note_:    See example INI files for possible locations. +
    Not required for the AXIS GUI.
de: _Beispiel_: `[DISPLAY]EMBED_TAB_LOCATION = notebook_main` +
    _Hinweis_:    Siehe Beispiel-INI-Dateien für mögliche Orte. +
    Nicht erforderlich für die AXIS GUI.

note: type: Labeled list
en: [DISPLAY]PROGRAM_PREFIX = dirname
de: [DISPLAY]PROGRAM_PREFIX = Verzeichnisname

note: type: Plain text
en: _Example_: `[DISPLAY]PROGRAM_PREFIX = ../../nc_files` +
    _Note_:    Mandatory and needed for numerous LinuxCNC functions. +
    It is the first directory used in the search for files.
de: _Beispiel_: `[DISPLAY]PROGRAM_PREFIX = ../../nc_files` +
    _Hinweis_:    Erforderlich, benötig für zahlreiche LinuxCNC-Funktionen. +
    Es ist das erste Verzeichnis, das bei der Suche nach Dateien verwendet wird.

note: type: Plain text
en: _Example_: `[DISPLAY]TKPKG = Ngcgui 1.0` +
    _Note_:    Required only for AXIS GUI embedding. +
    Specifies loading of NGCGUI AXIS tab pages.
de: _Beispiel_: `[DISPLAY]TKPKG = Ngcgui 1.0` +
    _Hinweis_:    Nur für AXIS GUI-Einbettung erforderlich. +
    Spezifiziert das Laden von NGCGUI AXIS Registerkarten.

note: type: Labeled list
en: [DISPLAY]NGCGUI_FONT = font_descriptor
de: [DISPLAY]NGCGUI_FONT = Schriftart_deskriptor

note: type: Plain text
en: _Example_: [DISPLAY]NGCGUI_FONT = Helvetica -12 normal +
    _Note_:    Optional, font_descriptor is a tcl-compatible font specifier
    with items for fonttype -fontsize fontweight. +
    Default is: Helvetica -10 normal. +
    Smaller font sizes may be useful for small screens. +
    Larger font sizes may be helpful for touch screen applications .
de: _Beispiel_: [DISPLAY]NGCGUI_FONT = Helvetica -12 normal +
    _Hinweis_:    Optional, font_descriptor ist ein tcl-kompatibler Font-Spezifikator
    mit Elementen für fonttype -fontsize fontweight. +
    Voreinstellung ist: Helvetica -10 normal. +
    Kleinere Schriftgrößen können für kleine Bildschirme nützlich sein. +
    Größere Schriftgrößen können für Touchscreen-Anwendungen hilfreich sein.

note: type: Labeled list
en: [DISPLAY]NGCGUI_SUBFILE = subfile_filename
de: [ANZEIGE] NGCGUI_SUBFILE = subfile_filename

note: type: Plain text
en: _Example_: `[DISPLAY]NGCGUI_SUBFILE = simp.ngc` +
    _Example_: `[DISPLAY]NGCGUI_SUBFILE = square.gcmc` +
    _Example_: `[DISPLAY]NGCGUI_SUBFILE = ""` +
    _Note_:    Use one or more items to specify NGCGUI-compatible
    subfiles or gcmc programs that require a tab page on startup. +
    A "Custom" tab will be created when the filename is "". +
    A user can use a "Custom" tab to browse the file system
    and identify preamble, subfile, and postamble files.
de: _Beispiel_: `[DISPLAY]NGCGUI_SUBFILE = simp.ngc` +
    _Beispiel_: `[ANZEIGE]NGCGUI_SUBFILE = square.gcmc` +
    _Beispiel_: `[DISPLAY]NGCGUI_SUBFILE = ""` + _Beispiel_: `[DISPLAY]NGCGUI_SUBFILE = ""` +
    _Hinweis_:    Verwenden Sie ein oder mehrere Elemente, um NGCGUI-kompatible
    Unterdateien oder gcmc-Programme anzugeben, die beim Start eine Registerkarte benötigen. +
    Eine "Benutzerdefinierte" Registerkarte wird erstellt, wenn der Dateiname "" lautet. +
    Ein Benutzer kann eine "Custom"-Registerkarte verwenden, um das Dateisystem zu durchsuchen
    und Präambel-, Subfile- und Postambel-Dateien zu identifizieren.

note: type: Labeled list
en: [DISPLAY]NGCGUI_POSTAMBLE = postamble_filename
de: [ANZEIGE] NGCGUI_POSTAMBLE = postamble_filename

note: type: Plain text
en: _Example_: [DISPLAY]NGCGUI_OPTIONS = nonew noremove +
    _Note_:    Multiple options are separated by blanks. +
    By default, NGCGUI configures tab pages so that: +
de: _Beispiel_: [DISPLAY]NGCGUI_OPTIONS = nonew noremove +
    _Hinweis_:    Mehrere Optionen werden durch Leerzeichen getrennt. +
    Standardmäßig konfiguriert NGCGUI die Registerkarten derart, dass: +

note: type: Plain text
en: a user can make new tabs; +
de: ein Benutzer neue Registerkarten erstellen kann; +

note: type: Plain text
en: a user can remove tabs (except for the last remaining one); +
de: ein Benutzer Registerkarten entfernen kann (mit Ausnahme der letzten verbleibenden Registerkarte); +

note: type: Plain text
en: finalized files are automatically sent to LinuxCNC; +
de: fertiggestellte Dateien automatisch an LinuxCNC gesendet werden; +

note: type: Plain text
en: an image frame (iframe) is made available to display
    an image for the subfile (if an image is provided); +
de: ein Bildrahmen (iframe) wird zur Verfügung gestellt, um
    ein Bild für die Unterdatei anzuzeigen (falls ein Bild bereitgestellt wird); +

note: type: Plain text
en: the NGCGUI result file sent to LinuxCNC is terminated with
    an M2 (and incurs M2 side-effects). +
de: die an LinuxCNC gesendete NGCGUI Ergebnisdatei wird mit
    einem M2 beendet (und verursacht M2 Nebeneffekte). +

note: type: Plain text
en: The options `nonew`, `noremove`, `noauto`, `noiframe`, `nom2` respectively disable these default behaviors.
de: Die Optionen `nonew`, `noremove`, `noauto`, `noiframe`, `nom2` schalten diese Standardverhaltensweisen jeweils aus.

note: type: Plain text
en: By default, if an image (.png,.gif,jpg,pgm) file
    is found in the same directory as the subfile, the
    image is displayed in the iframe. Specifying
    the `noiframe` option makes available additional buttons
    for selecting a preamble, subfile, and postamble and
    additional checkboxes. Selections of the checkboxes
    are always available with special keys: +
      `Ctrl-R` Toggle "Retain values on Subfile read", +
      `Ctrl-E` Toggle "Expand subroutine", +
      `Ctrl-a` Toggle "Autosend", +
      `Ctrl-k` lists all keys and functions. +
de: Standardmäßig wird, wenn eine Bilddatei (.png,.gif,jpg,pgm)
    in demselben Verzeichnis wie die Unterdatei gefunden wird, das Bild im iframe angezeigt.
    Bei Angabe der Option "noiframe" werden zusätzliche Schaltflächen zur Verfügung gestellt
    für die Auswahl von Präambel, Subdatei und Postambel sowie zusätzliche Kontrollkästchen. Die Auswahl der Kontrollkästchen sind immer mit speziellen Tasten verfügbar: +
      `Strg-R` Umschalten von "Werte beim Lesen von Subfiles beibehalten", +
      `Strg-E` Umschalten "Unterprogramm erweitern", +
      `Strg-a` Umschalten "Automatisches Senden", +
      `Strl-k` listet alle Tasten und Funktionen auf. +

note: type: Plain text
en: If `noiframe` is specified and an image file is found, the image is displayed in a separate window and all functions are available on the tab page.
de: Wenn 'noiframe' angegeben ist und eine Bilddatei gefunden wird, dann wird das Bild in einem separaten Fenster angezeigt und alle Funktionen stehen auf der Registerkarte zur Verfügung.

note: type: Plain text
en: The `NGCGUI_OPTIONS` apply to all NGCGUI tabs except that the `nonew`, `noremove`, and `noiframe` options are not applicable for "Custom" tabs.  Do not use "Custom" tabs if you want to limit the user's ability to select subfiles or create additional tab pages.
de: Die `NGCGUI_OPTIONS` gelten für alle NGCGUI-Registerkarten mit der Ausnahme, dass die Optionen `nonew`, `noremove` und `noiframe` nicht für "Custom"-Registerkarten gelten.  Verwenden Sie keine "Custom"-Registerkarten, wenn Sie die Möglichkeit des Benutzers einschränken wollen, Unterdateien auszuwählen oder zusätzliche Registerkarten zu erstellen.

note: type: Plain text
en: _Example_: `[DISPLAY]GCMC_INCLUDE_PATH = /home/myname/gcmc_includes:/home/myname/gcmc_includes2` +
    _Note_:    Optional, each directory will be included when gcmc is invoked
    using the option: `--include dirname`.
de: _Beispiel_: `[DISPLAY]GCMC_INCLUDE_PATH = /home/myname/gcmc_includes:/home/myname/gcmc_includes2` +
    _Hinweis_:    Optional, jedes Verzeichnis wird einbezogen, wenn gcmc aufgerufen wird +
    mit der Option: `--include dirname`.

note: FIXME Keyboard shortcuts do not work in version _fr. type: Title ==
en: File Requirements for NGCGUI Compatibility
de: Dateianforderungen für NGCGUI-Kompatibilität

note: type: Title ===
en: Single-File Gcode (.ngc) Subroutine Requirements
de: Anforderungen an eine G-code-Unterroutine (.ngc) in einer Datei

note: type: Plain text
en: An NGCGUI-compatible subfile contains a single subroutine definition. The name of the subroutine must be the same as the filename (not including the .ngc suffix). LinuxCNC supports named or numbered subroutines, but only named subroutines are compatible with NGCGUI. For more information see the <<cha:o-codes,O-Codes>> chapter.
de: Eine NGCGUI-kompatible Unterdatei enthält eine einzelne Unterprogrammdefinition. Der Name der Subroutine muss derselbe sein wie der Dateiname (ohne das Suffix .ngc). LinuxCNC unterstützt benannte oder nummerierte Subroutinen, aber nur benannte Subroutinen sind mit NGCGUI kompatibel. Für weitere Informationen siehe das Kapitel <<cha:o-codes,O-Codes>>.

note: type: Plain text
en: The first non-comment line should be a `sub` statement.
    The last non-comment line should be a `endsub` statement.
de: Die erste unkommentierte Zeile sollte eine `sub`-Anweisung sein.
    Die letzte unkommentierte Zeile sollte eine `endsub`-Anweisung sein.

note: type: delimited block -
en: (info: info_text_to_appear_at_top_of_tab_page)
    ; comment line beginning with semicolon
    ( comment line using parentheses)
    o<examp> sub
      BODY_OF_SUBROUTINE
    o<examp> endsub
    ; comment line beginning with semicolon
    ( comment line using parentheses)
de: (info: info_text_zu_erscheinen_oben_auf_der_Tabellenseite)
    ; Kommentarzeile beginnend mit Semikolon
    ( Kommentarzeile mit Klammern)
    o<examp> sub
      KÖRPER_DER_UNTERROUTINE
    o<examp> endsub
    ; Kommentarzeile beginnend mit Semikolon
    ( Kommentarzeile mit Klammern)

note: type: Plain text
en: The body of the subroutine should begin with a set of statements that define local named parameters for each positional parameter expected for the subroutine call. These definitions must be consecutive beginning with #1 and ending with the last used parameter number. Definitions must be provided for each of these parameters (no omissions).
de: Der Hauptteil (Körper, engl. body) des Unterprogramms sollte mit einer Reihe von Anweisungen beginnen, die lokale benannte Parameter für jeden für den Unterprogrammaufruf erwarteten Positionsparameter definieren. Diese Definitionen müssen fortlaufend sein, beginnend mit #1 und endend mit der zuletzt verwendeten Parameternummer. Für jeden dieser Parameter müssen Definitionen angegeben werden (keine Auslassungen).

note: type: Block title
en: Parameter Numbering
de: Nummerierung der Parameter

note: type: Plain text
en: LinuxCNC considers all numbered parameters in the range #1 thru #30 to be calling parameters so NGCGUI provides entry boxes for any occurrence of parameters in this range. It is good practice to avoid use of numbered parameters #1 through #30 anywhere else in the subroutine. Using local, named parameters is recommended for all internal variables.
de: LinuxCNC betrachtet alle nummerierten Parameter im Bereich #1 bis #30 als Aufrufparameter, so dass NGCGUI Eingabefelder für jedes Auftreten von Parametern in diesem Bereich zur Verfügung stellt. Es ist eine gute Praxis, um die Verwendung von nummerierten Parametern #1 bis #30 überall sonst in der Subroutine zu vermeiden. Die Verwendung lokaler, benannter Parameter wird für alle internen Variablen empfohlen.

note: type: Plain text
en: Each defining statement may optionally include a special comment and a default value for the parameter.
de: Jede definierende Anweisung kann optional einen speziellen Kommentar und einen Standardwert für den Parameter enthalten.

note: type: Block title
en: Statement Prototype
de: Ausdruck/Anweisung (engl. statement) Prototyp

note: type: delimited block -
en: #<vname> = #n (=default_value)
    or
    #<vname> = #n (comment_text)
    or
    #<vname> = #n (=default_value comment_text)
de: #<vname> = #n (=Standard_Wert)
    oder
    #<vname> = #n (kommentar_text)
    oder
    #<vname> = #n (=Standardwert_Kommentar_text)

note: type: Block title
en: Parameter Examples
de: Beispiele für Parameter

note: type: delimited block -
en: #<xparm> = #1 (=0.0)
    #<yparm> = #2 (Ystart)
    #<zparm> = #3 (=0.0 Z start setting)
de: #<xparm> = #1 (=0.0)
    #<yparm> = #2 (Ystart)
    #<zparm> = #3 (=0.0 Z Start Einstellung)

note: type: Plain text
en: If a default_value is provided, it will be entered in the entry box for the parameter on startup.
de: Wenn ein default_value angegeben wird, dann wird dieser beim Start in das Eingabefeld für den Parameter eingetragen.

note: type: Plain text
en: If comment_text is included, it will be used to identify the input instead of the parameter name.
de: Wenn comment_text enthalten ist, wird er zur Identifizierung der Eingabe anstelle des Parameternamens verwendet.

note: type: Block title
en: Global Named Parameters
de: Globale benannte Parameter

note: type: Plain text
en: Notes on global named parameters and NGCGUI:
de: Hinweise zu globalen benannten Parametern und NGCGUI:

note: type: Plain text
en: (global named parameters have a leading underscore in the name, like #<_someglobalname>)
de: (globale benannte Parameter haben einen führenden Unterstrich im Namen, wie #<_irgendeinglobalername>)

note: type: Plain text
en: As in many programming languages, use of globals is powerful but can often lead to unexpected consequences. In LinuxCNC, existing global named parameters will be valid at subroutine execution and subroutines can modify or create global named parameters.
de: Wie in vielen Programmiersprachen ist die Verwendung von globalen Parametern mächtig, kann aber oft zu unerwarteten Konsequenzen führen. In LinuxCNC werden bestehende globale benannte Parameter bei der Ausführung von Unterprogrammen gültig sein und Unterprogramme können globale benannte Parameter ändern oder erstellen.

note: type: Plain text
en: Passing information to subroutines using global named parameters is discouraged since such usage requires the establishment and maintenance of a well-defined global context that is difficult to maintain. Using numbered parameters #1 thru #30 as subroutine inputs should be sufficient to satisfy a wide range of design requirements.
de: Von der Übergabe von Informationen an Unterprogramme unter Verwendung globaler benannter Parameter wird abgeraten, da eine solche Verwendung die Einrichtung und Pflege eines genau definierten globalen Kontexts erfordert, der schwer zu pflegen ist. Die Verwendung der nummerierten Parameter Nr. 1 bis Nr. 30 als Unterprogramm-Eingaben sollte ausreichen, um eine breite Palette von Design-Anforderungen zu erfüllen.

note: FIXME are input global named parameters supported or not ? type: Plain text
en: NGCGUI supports some input global named parameter but their usage is obsolete and not documented here.
de: NGCGUI unterstützt einige globale benannte Eingabeparameter, aber deren Verwendung ist veraltet und hier nicht dokumentiert.

note: type: Plain text
en: While input global named parameters are discouraged, LinuxCNC subroutines must use global named parameters for returning results. Since NGCGUI-compatible subfiles are aimed at GUI usage, return values are not a common requirement.  However, NGCGUI is useful as a testing tool for subroutines which do return global named parameters and it is common for NGCGUI-compatible subfiles to call utility subroutine files that return results with global named parameters.
de: Während von global benannten Eingabeparametern abgeraten wird, müssen LinuxCNC-Subroutinen global benannte Parameter für die Rückgabe von Ergebnissen verwenden. NGCGUI-kompatible Unterdateien sind auf die Verwendung in der Benutzeroberfläche ausgerichtet. Daher sind Rückgabewerte keine übliche Anforderung.  Allerdings ist NGCGUI als Testwerkzeug für Subroutinen nützlich, die global benannte Parameter zurückgeben, und es ist üblich, dass NGCGUI-kompatible Subdateien Utility-Subroutinen aufrufen, die Ergebnisse mit global benannten Parametern zurückgeben.

note: type: Plain text
en: To support these usages, NGCGUI ignores global named parameters that include a colon (:) character in their name. Use of the colon (:) in the name prevents NGCGUI from making entryboxes for these parameters.
de: Um diese Verwendungen zu unterstützen, ignoriert NGCGUI globale benannte Parameter, die einen Doppelpunkt (:) in ihrem Namen enthalten. Die Verwendung des Doppelpunkts (:) im Namen verhindert, dass NGCGUI Eingabefelder für diese Parameter erstellt.

note: type: Block title
en: Global Named Parameters Example
de: Beispiel für globale benannte Parameter

note: type: delimited block -
en: o<examp> sub
    ...
    #<_examp:result> = #5410       (return the current tool diameter)
    ...
    o<helper> call [#<x1>] [#<x2>] (call a subroutine)
    #<xresult> = #<_helper:answer> (immediately localize the helper global result)
    #<_helper:answer> = 0.0        (nullify global named parameter used by subroutine)
    ...
    o<examp> endsub
de: o<examp> sub
    ...
    #<_examp:result> = #5410 (liefert den aktuellen Werkzeugdurchmesser)
    ...
    o<helper> call [#<x1>] [#<x2>] (Aufruf einer Subroutine)
    #<xresult> = #<_helper:answer> (lokalisiert sofort das globale Ergebnis des Helfers)
    #<_helper:answer> = 0.0 (löscht den globalen benannten Parameter, der von der Subroutine verwendet wird)
    ...
    o<examp> endsub

note: type: Plain text
en: In the above example, the utility subroutine will be found in a separate file named helper.ngc. The helper routine returns a result in a global named parameter named #<_helper:answer.
de: Im obigen Beispiel befindet sich das Unterprogramm in einer separaten Datei namens helper.ngc. Die helper-Routine liefert ein Ergebnis in einem globalen benannten Parameter namens #<_helper:answer.

note: type: Plain text
en: For good practice, the calling subfile immediately localizes the result for use elsewhere in the subfile and the global named parameter used for returning the result is nullified in an attempt to mitigate its inadvertent use elsewhere in the global context. (A nullification value of 0.0 may not always be a good choice).
de: Aus Gründen der guten Praxis lokalisiert die aufrufende Teildatei das Ergebnis sofort für die Verwendung an anderer Stelle in der Teildatei. Es wird der globale benannte Parameter genullt, der für die Rückgabe des Ergebnisses verwendet wird, um seine unbeabsichtigte Verwendung an anderer Stelle im globalen Kontext zu verhindern. (Ein Nullifizierungswert von 0,0 ist nicht immer eine gute Wahl).

note: type: Plain text
en: NGCGUI supports the creation and concatenation of multiple features for a subfile and for multiple subfiles. It is sometimes useful for subfiles to determine their order at runtime so NGCGUI inserts a special global parameter that can be tested within subroutines. The parameter is named #<_feature:>.  Its value begins with a value of 0 and is incremented for each added feature.
de: NGCGUI unterstützt die Erstellung und Verkettung von mehreren Features für ein Subfile und für mehrere Subfiles. Es ist manchmal nützlich, die Reihenfolge der Unterdateien zur Laufzeit zu bestimmen, daher fügt NGCGUI einen speziellen globalen Parameter ein, der in Unterprogrammen getestet werden kann. Der Parameter heißt #<_feature:>.  Sein Wert beginnt mit dem Wert 0 und wird für jedes hinzugefügte Feature inkrementiert.

note: type: Block title
en: Additional Features
de: Zusatzfunktionen

note: type: Plain text
en: A special 'info' comment can be included anywhere in an NGCGUI-compatible subfile. The format is:
de: Ein spezieller 'info'-Kommentar kann überall in einer NGCGUI-kompatiblen Unterdatei eingefügt werden. Das Format ist:

note: type: Plain text
en: The info_text is displayed near the top of the NGCGUI tab page in AXIS.
de: Der info_text wird im oberen Bereich der Registerkarte NGCGUI in AXIS angezeigt.

note: type: Plain text
en: Files not intended for use as subfiles can include a special comment so that NGCGUI will reject them automatically with a relevant message.
de: Dateien, die nicht für die Verwendung als Unterdateien vorgesehen sind, können einen speziellen Kommentar enthalten, so dass NGCGUI sie automatisch mit einer entsprechenden Meldung zurückweist.

note: type: Plain text
en: An optional image file (.png,.gif,.jpg,.pgm) can accompany a subfile. The image file can help clarify the parameters used by the subfile. The image file should be in the same directory as the subfile and have the same name with an appropriate image suffix, e.g. the subfile example.ngc could be accompanied by an image file examp.png. NGCGUI attempts to resize large images by subsampling to a size with maximum width of 320 and maximum height of 240 pixels.
de: Eine optionale Bilddatei (.png,.gif,.jpg,.pgm) kann eine Unterdatei begleiten. Die Bilddatei kann zur Verdeutlichung der von der Teildatei verwendeten Parameter beitragen. Die Bilddatei sollte sich im gleichen Verzeichnis wie die Unterdatei befinden und den gleichen Namen mit einem entsprechenden Bildsuffix haben, z.B. könnte die Unterdatei example.ngc von einer Bilddatei examp.png begleitet werden. NGCGUI versucht, große Bilder durch Subsampling auf eine Größe mit einer maximalen Breite von 320 und einer maximalen Höhe von 240 Pixeln zu verkleinern.

note: type: Plain text
en: None of the conventions required for making an NGCGUI-compatible subfile preclude its use as general purpose subroutine file for LinuxCNC.
de: Keine der Konventionen, die für die Herstellung einer NGCGUI-kompatiblen Subdatei erforderlich sind, schließen ihre Verwendung als allgemeine Subroutinendatei für LinuxCNC aus.

note: type: Plain text
en: The LinuxCNC distribution includes a library (ngcgui_lib directory) that includes both example NGCGUI-compatible subfiles and utility files to illustrate the features of LinuxCNC subroutines and NGCGUI usage.  Another library (gcmc_lib) provides examples for subroutine files for the G-code meta compiler (gcmc).
de: Die LinuxCNC-Distribution enthält eine Bibliothek (ngcgui_lib Verzeichnis), die sowohl Beispiel NGCGUI-kompatiblen Subdateien und Utility-Dateien, um die Funktionen von LinuxCNC Subroutinen und NGCGUI Verwendung zu veranschaulichen enthält.  Eine weitere Bibliothek (gcmc_lib) bietet Beispiele für Unterprogrammdateien für den G-Code-Meta-Compiler (gcmc).

note: type: Plain text
en: Additional user sumitted subroutines can be found on the Forum in the Subroutines Section.
de: Weitere benutzerdefinierte Subroutinen finden Sie im Forum im Abschnitt zu Subroutinen.

note: type: Title ===
en: Gcode-meta-compiler (.gcmc) file requirements
de: Gcode-Meta-Compiler-Dateianforderungen (.gcmc)

note: type: Plain text
en: Files for the Gcode-meta-compiler (gcmc) are read by NGCGUI and it creates entry boxes for variables tagged in the file.  When a feature for the file is finalized, NGCGUI passes the file as input to the gcmc compiler and, if the compile is successful, the resulting G-code file is sent to LinuxCNC for execution.  The resulting file is formatted as single-file subroutine; .gcmc files and .ngc files can be intermixed by NGCGUI.
de: Dateien für den Gcode-Meta-Compiler (gcmc) werden von NGCGUI gelesen und es werden Eingabefelder für die in der Datei markierten Variablen erstellt.  Wenn ein Feature für die Datei fertiggestellt ist, übergibt NGCGUI die Datei als Eingabe an den gcmc-Compiler und, wenn die Kompilierung erfolgreich ist, wird die resultierende G-Code-Datei an LinuxCNC zur Ausführung gesendet.  Die resultierende Datei wird als Single-File-Subroutine formatiert; .gcmc-Dateien und .ngc-Dateien können von NGCGUI gemischt werden.

note: type: Plain text
en: The variables identified for inclusion in NGCGUI are tagged with lines that will appear as comments to the gcmc compiler.
de: Die Variablen, die für die Aufnahme in NGCGUI identifiziert wurden, werden mit Zeilen markiert, die dem gcmc-Compiler als Kommentare erscheinen.

note: type: Block title
en: Variable Tags Formats
de: Formate für variable Tags

note: type: Block title
en: Variable Tags Examples
de: Beispiele für Variablen-Tags

note: type: Plain text
en: For these examples, the entry box for varname1 will have no default, the entry box for varname2 will have a default of value2, and the entry box for varname 3 will have a default of value 3 and a label label3 (instead of varname3).  The default values must be numbers.
de: In diesen Beispielen hat das Eingabefeld für varname1 keinen Standardwert, das Eingabefeld für varname2 hat den Standardwert 2 und das Eingabefeld für varname 3 hat den Standardwert 3 und die Bezeichnung label3 (statt varname3).  Die Standardwerte müssen Zahlen sein.

note: type: Plain text
en: To make it easier to modify valid lines in a gcmc file, alternate tag line formats accepted.  The alternate formats ignore trailing semicolons (;) and trailing comment markers (//)  With this provision, it is often makes it possible to just add the //ngcgui: tag to existing lines in a .gcmc file.
de: Um die Änderung gültiger Zeilen in einer gcmc-Datei zu erleichtern, werden alternative Tag-Zeilenformate akzeptiert.  Die alternativen Formate ignorieren abschließende Semikolons (;) und abschließende Kommentarzeichen (//). Mit dieser Bestimmung ist es oft möglich, einfach das //ngcgui: Tag zu bestehenden Zeilen in einer .gcmc-Datei hinzuzufügen.

note: type: Block title
en: Alternate Variable Tags Formats
de: Alternative Variablen-Tag-Formate

note: type: Block title
en: Alternate Variable Tags Examples
de: Beispiele für alternative Variablen-Tags

note: type: Plain text
en: An info line that will appear at the top of a tab page may be optionally included with a line tagged as:
de: Eine Info-Zeile, die oben auf einer Registerkarte erscheint, kann optional mit einer Zeile mit der Kennzeichnung als:

note: type: Block title
en: Info tag
de: Info-Tag

note: type: Plain text
en: When required, options can be passed to the gcmc compiler with a line tagged:
de: Falls erforderlich, können Optionen mit einem Zeilen-Tag an den gcmc-Compiler übergeben werden:

note: type: Block title
en: Option line tag Examples
de: Beispiele für Options-Zeilen-Tags

note: type: Plain text
en: Options for gcmc are available with the terminal command:
de: Die Optionen für gcmc sind mit dem Terminalbefehl verfügbar:

note: type: Plain text
en: A gcmc program by default uses metric mode.  The mode can be set to inches with the option setting:
de: Ein gcmc-Programm verwendet standardmäßig den metrischen Modus.  Mit der Option setting kann der Modus auf Zoll eingestellt werden:

note: type: Plain text
en: A preamble file, if used, can set a mode (g20 or g21) that conflicts with the mode used by a gcmc file.  To ensure that the gcmc program mode is in effect, include the following statement in the .gcmc file:
de: Eine eventuell verwendete Präambel-Datei kann einen Modus (g20 oder g21) festlegen, der mit dem von einer gcmc-Datei verwendeten Modus kollidiert.  Um sicherzustellen, dass der gcmc-Programmmodus in Kraft ist, fügen Sie die folgende Anweisung in die .gcmc-Datei ein:

note: type: Plain text
en: and provide a proper path for gcmc include_files in the INI file, for example:
de: und geben Sie den richtigen Pfad für gcmc include_files in der INI-Datei an, zum Beispiel:

note: type: Title ==
en: DB25 Example
de: DB25 Beispiel

note: type: Plain text
en: The following shows the DB25 subroutine.
de: Das folgende zeigt das DB25-Unterprogramm.

note: type: Plain text
en: In the first photo you see where you fill in the blanks for each variable.
de: Auf dem ersten Foto sehen Sie, wo Sie die Lücken für jede Variable ausfüllen.

note: type: Plain text
en: This photo shows the backplot of the DB25 subroutine.
de: Dieses Foto zeigt den Backplot der DB25-Subroutine.

note: type: Plain text
en: This photo shows the use of the new button and the custom tab to create three DB25 cutouts in one program.
de: Dieses Foto zeigt die Verwendung der neuen Schaltfläche und der benutzerdefinierten Registerkarte zur Erstellung von drei DB25-Ausschnitten in einem Programm.

note: type: Title ==
en: Creating a subroutine
de: Erstellen eines Unterprogramms

note: type: Plain text
en: For creating a subroutine for use with NGCGUI, the filename and the subroutine name must be the same.
de: Um ein Unterprogramm für die Verwendung mit NGCGUI zu erstellen, müssen der Dateiname und der Name des Unterprogramms identisch sein.

note: type: Plain text
en: The file must be placed in the subdirectory pointed to in the INI file.
de: Die Datei muss sich in dem Unterverzeichnis befinden, auf das in der INI-Datei verwiesen wird.

note: type: Plain text
en: On the first line there may be a comment of type `info:`
de: In der ersten Zeile kann ein Kommentar des Typs `info:` stehen

note: type: Plain text
en: The subroutine must be surrounded by the `sub` and `endsub` tags.
de: Das Unterprogramm muss von den Tags `sub` und `endsub` umgeben sein.

note: type: Plain text
en: The variables used must be numbered variables and must not skip number.
de: Die verwendeten Variablen müssen nummerierte Variablen sein und dürfen keine Nummer überspringen.

note: type: Plain text
en: Comments and presets may be included.
de: Kommentare und Voreinstellungen können enthalten sein.

note: type: Block title
en: Subroutine Skeleton Example
de: Unterprogramm-Skelett Beispiel

note: type: delimited block -
en: (info: simp -- simple exemple de sous-programme -- Ctrl-U pour éditer)
    o<simp> sub
      #<ra>       = #1 (=.6 Rayon A) ;Example de paramètre avec un commentaire
      #<radius_b> = #2 (=0.4)         ;Example de paramètre sans commentaire
      #<feedrate> = #3 (Feedrate)     ;Example de paramètre sans preset
      g0x0y0z1
      g3 i#<ra> f#<feedrate>
      g3 i[0-#<radius_b>]
    o<simp> endsub
de: (info: simp -- simple exemple de sous-programme -- Ctrl-U pour éditer)
    o<simp> sub
      #<ra> = #1 (=.6 Rayon A) ;Beispiel für einen Parameter mit einem Kommentar
      #<radius_b> = #2 (=0.4) ;Beispiel für einen Parameter ohne Kommentar
      #<feedrate> = #3 (Feedrate) ;Beispiel für einen Parameter ohne Voreinstellung
      g0x0y0z1
      g3 i#<ra> f#<feedrate>
      g3 i[0-#<Radius_b>]
    o<simp> endsub

note: type: Plain text
en: While actual input buttons are required to be momentary, Panelui will use this input to make toggle, radio, or momentary button output.
de: Während die eigentlichen Eingabetasten träge sein müssen, verwendet Panelui diese Eingabe für die Ausgabe von Toggle-, Radio- oder Tasterschaltungen.

note: type: Title ==
en: Loading Commands
de: Laden von Befehlen

note: type: Plain text
en: The command used to load panelui (with optional -d debug switch):
de: Der Befehl zum Laden von panelui (mit optionalem Schalter -d debug):

note: type: Plain text
en: This will initialize panelui, which will look for the INI file panelui.ini in the config folder or user folder.
de: Dadurch wird panelui initialisiert, das im Konfigurations- oder Benutzerordner nach der INI-Datei panelui.ini sucht.

note: type: Plain text
en: One can validate the INI file with this command:
de: Mit diesem Befehl kann man die INI-Datei validieren:

note: type: Plain text
en: This will read, try to correct, then save the panelui.ini file.  It will print errors to the terminal if found.
de: Damit wird die Datei panelui.ini gelesen, versucht zu korrigieren und dann gespeichert.  Eventuelle Fehler werden diese auf dem Terminal ausgegeben.

note: type: Plain text
en: A typical HAL file will have these commands added:
de: Einer typischen HAL-Datei werden diese Befehle hinzugefügt:

note: type: delimited block -
en: # commands needed for panelui loading
    #
    # sampler is needed for panelui
    # cfg= must always be u for panelui. depth sets the available buffer
    loadrt sampler cfg=u depth=1025
de: # Befehle, die für das Laden von Panelui benötigt werden
    #
    # sampler wird für panelui benötigt
    # cfg= muss für panelui immer u sein. depth legt den verfügbaren Puffer fest
    loadrt sampler cfg=u depth=1025

note: type: delimited block -
en: #uncomment to validate the panelui INI file
    #loadusr pyui
de: #unkommentiert, um die panelui INI-Datei zu validieren
    #loadusr pyui

note: type: delimited block -
en: # -d = debug, -v = verbose debug
    # -d will show you keypress identification and commands called
    # -v is for develeper info
    loadusr -W panelui -d
de: # -d = Fehlersuche, -v = ausführliche Fehlersuche
    # -d zeigt Ihnen die Tastenkennzeichnung und die aufgerufenen Befehle
    # -v ist für Informationen über den Entwickler
    loadusr -W panelui -d

note: type: delimited block -
en: # using simulated buttons instead of the MESA 7I73 card
    # so we load the sim_matrix_kb component to convert HAL pins to keyscan codes
    loadrt sim_matrix_kb
de: # mit simulierten Tasten anstelle der MESA 7I73-Karte
    # also laden wir die Komponente sim_matrix_kb, um die HAL-Pins in Keyscan-Codes umzuwandeln
    loadrt sim_matrix_kb

note: type: delimited block -
en: # connect the components together.
    # sampler talks to panelui internally
    net key-scan    sim-matrix-kb.0.out
    net key-scan    sampler.0.pin.0
de: # Verbinden Sie die Komponenten miteinander.
    # sampler spricht intern mit panelui
    net key-scan sim-matrix-kb.0.out
    net key-scan sampler.0.pin.0

note: type: delimited block -
en: # add panelui components to a thread
de: # panelui Komponenten zu einem Thread hinzufügen

note: type: Title ==
en: panelui.ini file reference
de: panelui.ini Dateireferenz

note: type: Block title
en: *Key words*
de: *Schlüsselwörter* (engl. keywords)

note: type: Plain text
en: OUTPUT= This sets the Button's output type, eg S32, U32, FLOAT, BIT, NONE, COMMAND, ZMQ.
de: OUTPUT= Hier wird der Ausgabetyp der Schaltfläche festgelegt, z. B. S32, U32, FLOAT, BIT, NONE, COMMAND, ZMQ.

note: type: Plain text
en: DEFAULT= This sets the starting output of the group or button.
de: DEFAULT= Hiermit wird die Startausgabe der Gruppe oder der Schaltfläche festgelegt.

note: type: Plain text
en: GROUP= In radiobuttons, designates the group the button interacts with.
de: GROUP= Bezeichnet bei Radiobuttons die Gruppe, mit innerhalb welcher der Button interagiert.

note: type: Plain text
en: GROUP_OUTPUT= sets the output the group pin will be, if this button is active.
de: GROUP_OUTPUT= legt den Ausgang fest, den der Gruppenpin hat, wenn dieser Button aktiv ist.

note: type: Plain text
en: STATUS_PIN= If TRUE, a HAL pin will be added that reflects the current state of button.
de: STATUS_PIN= Wenn TRUE, wird ein HAL-Pin hinzugefügt, der den aktuellen Zustand des Button wiedergibt.

note: type: Plain text
en: TRUE_STATE= sets the output the HAL pin will be, if button is TRUE.
de: TRUE_STATE= legt den Ausgang fest, den der HAL-Pin hat, wenn der Button TRUE ist.

note: type: Plain text
en: FALSE_STATE= sets the OUTPUT the HAL pin will be, if the button is FALSE.
de: FALSE_STATE= legt den OUTPUT fest, den der HAL-Pin erhält, wenn die Taste FALSE ist.

note: type: Plain text
en: TRUE_COMMAND= sets the command and arguments to be called when the button is TRUE.
de: TRUE_COMMAND= legt den Befehl und die Argumente fest, die aufgerufen werden, wenn der Button TRUE ist.

note: type: Plain text
en: FALSE_COMMAND= sets the command and arguments to be called when the button is FALSE.
de: FALSE_COMMAND= legt den Befehl und die Argumente fest, die aufgerufen werden, wenn der Button FALSE ist.

note: type: Plain text
en: TRUE_FUNCTION= sets the ZMQ message function and arguments to be called when the button is TRUE.
de: TRUE_FUNCTION= legt die ZMQ-Nachrichtenfunktion und Argumente fest, die aufgerufen werden sollen, wenn der Button TRUE ist.

note: type: Plain text
en: FALSE_FUNCTION= sets the ZMQ message function and arguments to be called when the button is FALSE.
de: FALSE_FUNCTION= legt die ZMQ-Nachrichtenfunktion und die Argumente fest, die aufgerufen werden sollen, wenn der Button FALSE ist.

note: type: delimited block -
en: [HAL_PREFIX]
        NAME= Yourname
de: [HAL_PREFIX]
        NAME= IhrName

note: type: Plain text
en: This allows one to change the prefix of the HAL pins from 'panelui' to an arbitrary name.
de: Damit kann man den Präfix der HAL-Pins von 'panelui' auf einen beliebigen Namen ändern.

note: type: Block title
en: *ZMQ Messaging Setup*
de: *ZMQ Messaging-Einrichtung*

note: type: Plain text
en: This sets up and enables ZMQ based messaging.  TOPIC and SOCKET must match the listening program.
de: Damit wird das ZMQ-basierte Messaging eingerichtet und aktiviert.  TOPIC und SOCKET müssen mit dem empfangenden Programm übereinstimmen.

note: type: Plain text
en: Radiobutons allow only one button in the group to be active at a time.  Each group has its own output pin, separate from each button in the group.  Radio button definitions start with the text 'RADIO_BUTTON' inside single brackets.
de: Bei Radiobutons kann jeweils nur eine Taste in der Gruppe aktiv sein.  Jede Gruppe hat ihren eigenen Ausgangspin, der von jeder Taste in der Gruppe getrennt ist.  Radiobutton-Definitionen beginnen mit dem Text "RADIO_BUTTON" in einfachen Klammern.

note: type: delimited block -
en: [RADIO_BUTTONS]
      # The double bracket section(s) define the group(s) of radio buttons.
      # The group name must be unique and is case sensitive.
      # Groups output is controlled by what button is active not directly by keycode.
      # DEFAULT references a button in the group by name and is case sensitive.
      [[group1_name]]
        KEY = NONE
        OUTPUT = FLOAT
        DEFAULT = small
        # The triple bracket sections define the buttons in this group.
        # button names must be unique and are case sensitive.
        # There must be at least two buttons in a group.
        #
        # This button, named 'small'is controller by the row 0 column 1 key.
        # It will cause the group output to be .0001 when it is pressed.
        # It has no output of it's own, but has a status
        # pin which will follow it's current state.
        # since this button is in a group, DEFAULT has no bearing.
        # since OUTPUT in not 'COMMAND' _COMMAND entries are ignored.
        [[[small]]]
          KEY = R0C1
          GROUP = group1_name
          GROUP_OUTPUT = .0001
          OUTPUT = NONE
          STATUS_PIN = True
          TRUE_STATE = TRUE
          FALSE_STATE = FALSE
          TRUE_COMMAND = NONE, NONE
          FALSE_COMMAND = NONE, NONE
          DEFAULT = false
        # This button, named 'large' is controller by the row 0 column 2 key.
        # It will cause the group output to be 1000 when it is pressed.
        # It has a S32 output of it's own, will be 20 on true and 0 on false.
        # It also has a status pin which will follow it's current state.
        # since this button is in a group, DEFAULT has no bearing.
        # since OUTPUT in not 'COMMAND' _COMMAND entries are ignored.
        [[[large]]]
          KEY = R0C2
          GROUP = group1_name
          GROUP_OUTPUT = 1000
          OUTPUT = S32
          STATUS_PIN = True
          TRUE_STATE = 20
          TRUE_COMMAND = NONE, NONE
          FALSE_COMMAND = NONE, NONE
          FALSE_STATE = 0
          DEFAULT = false
de: [RADIO_BUTTONS]
     # Die doppelte(n) Klammer(n) definieren die Gruppe(n) von Optionsschaltflächen.
    # Der Gruppenname muss eindeutig sein und Groß- und Kleinschreibung wird beachtet.
    # Die Ausgabe der Gruppe wird durch die aktive Schaltfläche gesteuert, nicht direkt durch den Keycode.
    # DEFAULT verweist auf eine Schaltfläche in der Gruppe durch den Namen und unterscheidet zwischen Groß- und Kleinschreibung.
      [[group1_name]]
        KEY = NONE
        OUTPUT = FLOAT
        DEFAULT = small
        # Die dreifachen Klammerabschnitte definieren die Schaltflächen in dieser Gruppe.
        # Die Namen der Schaltflächen müssen eindeutig sein und Groß- und Kleinschreibung wird beachtet.
        # Es muss mindestens zwei Schaltflächen in einer Gruppe geben.
        #
        # Diese Schaltfläche mit dem Namen 'small' wird durch die Taste Zeile 0 Spalte 1 gesteuert.
        # Sie bewirkt, dass der Gruppenausgang .0001 ist, wenn sie gedrückt wird.
        # Sie hat keinen eigenen Ausgang, aber einen Status Pin, der den aktuellen Zustand der Taste anzeigt.
        # Da diese Taste in einer Gruppe ist, hat DEFAULT keine Bedeutung. # da OUTPUT nicht 'COMMAND' ist,
        # werden _COMMAND-Einträge ignoriert. 
        [[[small]]]
          KEY = R0C1
          GROUP = group1_name
          GROUP_OUTPUT = .0001
          OUTPUT = NONE
          STATUS_PIN = True
          TRUE_STATE = TRUE
          FALSE_STATE = FALSE
          TRUE_COMMAND = NONE, NONE
          FALSE_COMMAND = NONE, NONE
          DEFAULT = false
         # Diese Schaltfläche mit dem Namen 'large' wird von der Taste Zeile 0 Spalte 2 gesteuert.
         # Sie bewirkt, dass der Gruppenausgang 1000 ist, wenn sie gedrückt wird.
         # Er hat einen eigenen S32-Ausgang, der bei true 20 und bei false 0 ist.
         # Sie hat auch einen Status-Pin, der ihren aktuellen Zustand anzeigt.
         # Da diese Taste in einer Gruppe ist, hat DEFAULT keine Bedeutung.
         # Da OUTPUT nicht 'COMMAND' ist, werden _COMMAND-Einträge ignoriert.
        [[[large]]]
          KEY = R0C2
          GROUP = group1_name
          GROUP_OUTPUT = 1000
          OUTPUT = S32
          STATUS_PIN = True
          TRUE_STATE = 20
          TRUE_COMMAND = NONE, NONE
          FALSE_COMMAND = NONE, NONE
          FALSE_STATE = 0
          DEFAULT = false

note: type: Block title
en: *Toggle Buttons*
de: *Wechsel-Buttons* (engl. toggle buttons)

note: type: Plain text
en: Togglebuttons only change state on each press of the button.  Toggle button definitions start with the text 'TOGGLE_BUTTON' inside single brackets.
de: Togglebuttons ändern ihren Zustand nur bei jedem Drücken der Taste.  Toggle-Button-Definitionen beginnen mit dem Text "TOGGLE_BUTTON" in einfachen Klammern.

note: type: delimited block -
en: [TOGGLE_BUTTONS]
      # Each button name inside double brackets, must be unique and is case sensitive.
      # This button, named 'tool_change'is controller by the row 2 column 5 key.
      # It has a BIT output, will output 1 on true state and 0 on false state.
      # It also has a status pin which will follow it's current state.
      # DEFAULT sets this to true when first initialized.
      # The _COMMAND are not used since OUTPUT is not set to COMMAND but validation will
      # add the lines regardless
      [[tool_change]]
        KEY = R2C5
        OUTPUT = BIT
        TRUE_COMMAND = NONE, NONE
        FALSE_COMMAND = NONE, NONE
        STATUS_PIN = True
        DEFAULT = TRUE
        TRUE_STATE = 1
        FALSE_STATE = 0
de: [TOGGLE_BUTTONS]
      # Jeder Button-Name in doppelten Klammern muss eindeutig sein und Groß- und Kleinschreibung wird unterschieden.
      # Diese Schaltfläche mit dem Namen 'tool_change' wird von der Taste in Zeile 2 Spalte 5 gesteuert.
      # Sie hat einen BIT-Ausgang, der bei einem wahren Zustand 1 und bei einem falschen Zustand 0 ausgibt.
      # Er hat auch einen Status-Pin, der seinen aktuellen Zustand anzeigt.
      # DEFAULT setzt diesen bei der ersten Initialisierung auf true.
      # Die _COMMAND werden nicht verwendet, da OUTPUT nicht auf COMMAND gesetzt ist, aber die Validierung wird
      # die Zeilen dennoch hinzufügen.
      [[tool_change]]
        KEY = R2C5
        OUTPUT = BIT
        TRUE_COMMAND = NONE, NONE
        FALSE_COMMAND = NONE, NONE
        STATUS_PIN = True
        DEFAULT = TRUE
        TRUE_STATE = 1
        FALSE_STATE = 0

note: type: Plain text
en: Momentary buttons are true when pressed and false when released.  Momentary button definitions start with the text 'MOMENTARY_BUTTON' inside single brackets.
de: Momentane Buttons sind wahr, wenn sie gedrückt werden, und falsch, wenn sie losgelassen werden.  Button-Definitionen beginnen mit dem Text "MOMENTARY_BUTTON" in einfachen Klammern.

note: type: delimited block -
en: [MOMENTARY_BUTTONS]
      # Each button name inside double brackets, must be unique and is case sensitive.
      # This button, named 'spindle_rev'is controller by the row 2 column 3 key.
      # It has a COMMAND output, so will use TRUE_COMMAND and FALSE_COMMAND.
      # It also has a status pin which will follow it's current state.
      # COMMANDs will have a command name and then any required arguments
      # This TRUE_COMMAND calls an internal command to start the spindle in reverse at 200 rpm
      # If the spindle is already started, it will increase the rpm.
      # DEFAULT is not used with Momentary buttons.
      # The _STATE are not used since OUTPUT is set to COMMAND but validation will
      # add the lines regardless
      [[spindle_rev]]
        KEY = R2C3
        OUTPUT = COMMAND
        TRUE_COMMAND = SPINDLE_REVERSE_INCREASE, 200
        FALSE_COMMAND = None, NONE
        STATUS_PIN = True
        DEFAULT = FALSE
        TRUE_STATE = 1
        FALSE_STATE = 0
de: [MOMENTARY_BUTTONS]
      # Jeder Tastenname in doppelten Klammern muss eindeutig sein und Groß- und Kleinschreibung wird unterschieden.
      # Diese Taste mit dem Namen 'spindle_rev' wird von der Taste in Zeile 2 Spalte 3 gesteuert.
      # Sie hat einen COMMAND-Ausgang, verwendet also TRUE_COMMAND und FALSE_COMMAND.
      # Er hat auch einen Status-Pin, der seinen aktuellen Zustand anzeigt.
      # COMMANDs haben einen Befehlsnamen und dann alle erforderlichen Argumente.
      # Dieser TRUE_COMMAND ruft einen internen Befehl zum Starten der Spindel im Rückwärtsgang mit 200 U/min auf.
      # Wenn die Spindel bereits gestartet ist, wird die Drehzahl erhöht.
      # DEFAULT wird nicht mit Momentary-Buttons verwendet.
      # Die _STATE werden nicht verwendet, da OUTPUT auf COMMAND gesetzt ist, aber die Validierung wird
      # die Zeilen dennoch hinzufügen.
      [[spindel_drehzahl]]
        KEY = R2C3
        OUTPUT = COMMAND
        TRUE_COMMAND = SPINDLE_REVERSE_INCREASE, 200
        FALSE_COMMAND = None, NONE
        STATUS_PIN = True
        DEFAULT = FALSE
        TRUE_STATE = 1
        FALSE_STATE = 0

note: type: Title ==
en: Internal Command reference
de: Übersicht zu Internen Anweisungen

note: type: Plain text
en: There are a number of internal commands you may use.
de: Es gibt eine Reihe von internen Befehlen, die Sie verwenden können.

note: type: Plain text
en: required argument: axis number (int)
de: erforderliches Argument: Achsennummer (int)

note: type: Plain text
en: optional argument: starting RPM (int) - default 100
de: optionales Argument: Anfangsdrehzahl (int) - Standardwert 100

note: type: Plain text
en: Description: If the spindle is stopped it will start in the forward direction.  If it is already running it will increase or decrease the rpm depending on what direction the spindle is running in.
de: Beschreibung: Wenn die Spindel angehalten ist, startet sie in Vorwärtsrichtung.  Wenn sie bereits läuft, erhöht oder verringert sie die Drehzahl, je nachdem, in welche Richtung die Spindel läuft.

note: type: Plain text
en: Description: If the spindle is stopped it will start in the reverse direction.  If it is already running it will increase or decrease the rpm depending on what direction the spindle is running in.
de: Beschreibung: Wenn die Spindel angehalten wird, startet sie in umgekehrter Richtung.  Wenn sie bereits läuft, erhöht oder verringert sie die Drehzahl, je nachdem, in welche Richtung die Spindel läuft.

note: type: Plain text
en: Description: increases spindle speed by 100 RPM
de: Beschreibung: erhöht die Spindeldrehzahl um 100 RPM

note: type: Plain text
en: Description: decreases spindle speed by 100 RPM, until RPM is 100
de: Beschreibung: Verringert die Spindeldrehzahl um 100 RPM, bis die Drehzahl 100 beträgt.

note: type: Plain text
en: required argument: velocity in inches per minute (float)
de: erforderliches Argument: Geschwindigkeit in Zoll pro Minute (Float)

note: type: Plain text
en: description: sets the jog velocity on axis 0,1,2,6,7,8 (X,Y,Z,U,V,W)
de: Beschreibung: setzt die Jog-Geschwindigkeit auf den Achsen 0,1,2,6,7,8 (X,Y,Z,U,V,W)

note: type: Plain text
en: required argument: velocity in degrees per minute (float)
de: erforderliches Argument: Geschwindigkeit in Grad pro Minute (Float)

note: type: Plain text
en: description: sets the jog velocity on axis 3,4,5 (A.B.C)
de: Beschreibung: Setzt die Jog-Geschwindigkeit auf Achse 3,4,5 (A.B.C)

note: type: Plain text
en: Description: Move Z axis to the given machine position
de: Beschreibung: Z-Achse auf die angegebene Maschinenposition fahren

note: type: Plain text
en: required argument: state (bool 0 or 1)
de: Erforderliches Argument: Zustand (bool 0 oder 1)

note: type: Plain text
en: required argument: rate (float)
de: erforderliches Argument: Rate (float)

note: type: Plain text
en: required argument: rate (float 0-1)
de: erforderliches Argument: Rate (float 0-1)

note: type: Plain text
en: Description: If idle, starts G-code program, if paused runs one line.
de: Beschreibung: Wenn im Leerlauf, startet G-Code-Programm, wenn angehalten wird eine Zeile ausgeführt.

note: type: Plain text
en: required argument: line number (int)
de: erforderliches Argument: Zeilennummer (int)

note: type: Plain text
en: required argument: G-code command(s)
de: erforderliches Argument: G-Code-Befehl(e)

note: type: Plain text
en: Description: records the current mode, calls commands and then returns to mode.
de: Beschreibung: Zeichnet den aktuellen Modus auf, ruft Befehle auf und kehrt dann zum Modus zurück.

note: type: Plain text
en: Description: sets mode to MDI, calls commands.
de: Beschreibung: Setzt den Modus auf MDI, ruft Befehle auf.

note: type: Title ==
en: ZMQ Messages
de: ZMQ-Nachrichten

note: type: Plain text
en: panelui can send ZMQ based messages on button presses.
    In this way panelui can interact will other programs such as QtVCP screens. +
de: panelui kann ZMQ-basierte Nachrichten beim Drücken von Tasten senden. +
    Auf diese Weise kann panelui mit anderen Programmen wie QtVCP-Bildschirmen interagieren. +

note: type: Plain text
en: Here is a sample program that will receive the message and print it to the terminal. +
de: Hier ist ein Beispielprogramm, das die Nachricht empfängt und auf dem Terminal ausgibt. +

note: type: delimited block -
en: # Define the socket using the "Context"
    sock = context.socket(zmq.SUB)
de: # Definition des Sockets mit Hilfe des "Context".
    sock = context.socket(zmq.SUB)

note: type: delimited block -
en: # Define subscription and messages with topic to accept.
    topic = "" # all topics
    sock.setsockopt(zmq.SUBSCRIBE, topic)
    sock.connect("tcp://127.0.0.1:5690")
de: # Definieren des Abonnements und der zu akzeptierenden Nachrichten ohne Einschränkung der Themen.
    topic = "" # alle Themen
    sock.setsockopt(zmq.SUBSCRIBE, topic)
    sock.connect("tcp://127.0.0.1:5690")

note: type: Title ==
en: Handler File Extension
de: Handler Dateierweiterung

note: type: Plain text
en: A special file can be used to add custom python code that will be available as commands.  panelui_handler.py must be written in python and be placed in the configuration folder.  If panelui finds a file there it will add it's function calls to the available commands.  Here is an example of a handler file that adds two functions - hello_world and cycle_mode:
de: Eine spezielle Datei kann verwendet werden, um benutzerdefinierten Python-Code hinzuzufügen, der als Befehle verfügbar ist. panelui_handler.py muss in Python geschrieben und im Konfigurationsordner abgelegt werden.  Wenn panelui dort eine Datei findet, fügt es deren Funktionsaufrufe zu den verfügbaren Befehlen hinzu.  Hier ist ein Beispiel für eine Handler-Datei, die zwei Funktionen hinzufügt - hello_world und cycle_mode:

note: type: Plain text
en: PyVCP, **Py**thon **V**irtual **C**ontrol **P**anel, is designed to give the integrator the ability to customize the AXIS interface with buttons and indicators to do special tasks.
de: PyVCP, **Py**thon **V**irtual **C**ontrol **P**anel, wurde entwickelt, um dem Integrator die Möglichkeit zu geben, die AXIS-Schnittstelle mit Schaltflächen und Anzeigen für spezielle Aufgaben anzupassen.

note: type: Plain text
en: Hardware machine control panels can use up a lot of I/O pins and can be expensive. That is where Virtual Control Panels have the advantage as well as it cost nothing to build a PyVCP.
de: Hardware-Maschinenbedienfelder können eine Menge E/A-Pins belegen und teuer sein. Hier haben virtuelle Control Panels den Vorteil, dass es nichts kostet, ein PyVCP zu erstellen.

note: type: Plain text
en: Virtual Control Panels can be used for testing or monitoring things to temporarily replace real I/O devices while debugging ladder logic, or to simulate a physical panel before you build it and wire it to an I/O board.
de: Virtuelle Bedienfelder können zum Testen oder Überwachen verwendet werden, um reale E/A-Geräte beim Debuggen der Kontaktplanlogik vorübergehend zu ersetzen oder um ein physisches Bedienfeld zu simulieren, bevor Sie es bauen und mit einer E/A-Platine verbinden.

note: type: Plain text
en: The following graphic displays many of the PyVCP widgets.
de: Die folgende Grafik zeigt viele der PyVCP-Widgets.

note: type: Title ==
en: Panel Construction
de: Panel Konstruktion

note: type: Plain text
en: The layout of a PyVCP panel is specified with an XML file that contains widget tags between <pyvcp> and </pyvcp>. For example:
de: Das Layout eines PyVCP-Panels wird mit einer XML-Datei festgelegt, die Widget-Tags zwischen <pyvcp> und </pyvcp> enthält. Zum Beispiel:

note: type: Block title
en: Simple PyVCP LED Panel Example
de: Einfaches PyVCP LED-Panel Beispiel

note: type: Plain text
en: If you place this text in a file called tiny.xml, and run
de: Wenn Sie diesen Text in eine Datei mit dem Namen tiny.xml einfügen und Folgendes ausführen

note: type: Plain text
en: PyVCP will create the panel for you, which includes two widgets, a Label with the text 'This is a LED indicator', and a LED, used for displaying the state of a HAL BIT signal. It will also create a HAL component named 'mypanel' (all widgets in this panel are connected to pins that start with 'mypanel.'). Since no <halpin> tag was present inside the <led> tag, PyVCP will automatically name the HAL pin for the LED widget mypanel.led.0
de: PyVCP erstellt das Panel für Sie, das zwei Widgets enthält, ein Label mit dem Text 'This is a LED indicator' (Dies ist eine LED-Anzeige) und eine LED, die den Zustand eines HAL-BIT-Signals anzeigt. Es wird auch eine HAL-Komponente mit dem Namen 'mypanel' erstellt (alle Widgets in diesem Panel sind mit Pins verbunden, die mit 'mypanel' beginnen). Da innerhalb des <led>-Tags kein <halpin>-Tag vorhanden war, benennt PyVCP den HAL-Pin für das LED-Widget automatisch mypanel.led.0

note: type: Plain text
en: For a list of widgets and their tags and options, see the <<sec:pyvcp:widgets,widget reference>> below.
de: Für eine Liste der Widgets und ihrer Tags und Optionen, siehe nachfolgende <<sec:pyvcp:widgets,Widget Übersicht>>.

note: type: Plain text
en: Once you have created your panel, connecting HAL signals to and from the PyVCP pins is done with the halcmd:
de: Sobald Sie Ihr Panel erstellt haben, können Sie mit dem halcmd HAL-Signale mit den PyVCP-Pins verbinden:

note: type: Plain text
en: If you are new to HAL, the HAL basics chapter in the Integrator Manual is a good place to start.
de: Wenn Sie mit HAL noch nicht vertraut sind, ist das Kapitel HAL-Grundlagen im Integrator-Handbuch ein guter Ausgangspunkt.

note: type: Title ==
en: Security
de: Sicherheit

note: type: Plain text
en: Parts of PyVCP files are evaluated as Python code, and can take any action available to Python programs. Only use PyVCP .xml files from a source that you trust.
de: Teile von PyVCP-Dateien werden als Python-Code ausgewertet und können alle für Python-Programme verfügbaren Aktionen ausführen. Verwenden Sie nur PyVCP-.xml-Dateien aus einer Quelle, der Sie vertrauen.

note: type: Title ==
en: AXIS(((PyVCP with AXIS)))
de: AXIS(((PyVCP mit AXIS)))

note: type: Plain text
en: Since AXIS uses the same GUI toolkit (Tkinter) as PyVCP, it is possible to include a PyVCP panel at either the right side or the bottom of the AXIS user interface. It is not possible to display a panel in both of these positions simultaneously.  A typical example is explained below.
de: Da AXIS dasselbe GUI-Toolkit (Tkinter) wie PyVCP verwendet, ist es möglich, ein PyVCP-Panel entweder an der rechten Seite oder am unteren Rand der AXIS-Benutzeroberfläche einzubinden. Es ist nicht möglich, ein Panel an beiden Positionen gleichzeitig anzuzeigen.  Ein typisches Beispiel wird im Folgenden erläutert.

note: type: Title ===
en: Example Panel
de: Beispiel-Panel

note: type: Plain text
en: Place your PyVCP XML file describing the panel in the same directory where your .ini file is. Say we we want to display the current spindle speed using a Bar widget. Place the following in a file called spindle.xml:
de: Legen Sie Ihre PyVCP-XML-Datei, die das Panel beschreibt, in demselben Verzeichnis ab, in dem sich Ihre INI-Datei befindet. Angenommen, wir möchten die aktuelle Spindeldrehzahl mit einem Balken-Widget anzeigen. Fügen Sie das Folgende in eine Datei namens spindle.xml ein:

note: type: delimited block -
en: <pyvcp>
        <label>
            <text>"Spindle speed:"</text>
        </label>
        <bar>
            <halpin>"spindle-speed"</halpin>
            <max_>5000</max_>
        </bar>
    </pyvcp>
de: <pyvcp>
        <label>
           <text>"Spindeldrehzahl:"</text>
        </label>
       <bar>
            <halpin>"spindle-speed"</halpin>
            <max_>5000</max_>
        </bar>
    </pyvcp>

note: type: Plain text
en: Here we've made a panel with a Label and a Bar widget, specified that the HAL pin connected to the Bar should be named 'spindle-speed', and set the maximum value of the bar to 5000 (see <<sec:pyvcp:widgets,widget reference>> below for all options). To make AXIS aware of this file, and call it at start up, we need to specify the following in the `[DISPLAY]` section of the `.ini` file:
de: Hier haben wir ein Panel mit einem Label- und einem Balken-Widget erstellt, festgelegt, dass der HAL-Pin, der mit dem Balken verbunden ist, 'spindle-speed' heißen soll, und den maximalen Wert des Balkens auf 5000 gesetzt (siehe <<sec:pyvcp:widgets,Widget Übersicht>> unten für alle Optionen). Um AXIS auf diese Datei aufmerksam zu machen und sie beim Start aufzurufen, müssen wir in der `[DISPLAY]` Sektion der INI-Datei folgendes angeben:

note: type: Plain text
en: If the panel should appear at the bottom of the AXIS user interface then we need to specify the following in the `[DISPLAY]` section of the `.ini` file:
de: Wenn das Panel am unteren Rand der AXIS-Benutzeroberfläche erscheinen soll, müssen wir im Abschnitt "DISPLAY" der INI-Datei Folgendes angeben:

note: type: Plain text
en: Anything other than BOTTOM or omitting this variable will place the PYVCP panel at the right.
de: Alles andere als BOTTOM oder das Weglassen dieser Variable platziert das PyVCP-Panel auf der rechten Seite.

note: type: Plain text
en: To make our widget actually display the spindle-speed it needs to be hooked up to the appropriate HAL signal. A .hal file that will be run once AXIS and PyVCP have started can be specified in the [HAL] section of the .ini file:
de: Damit unser Widget tatsächlich die Spindel-Geschwindigkeit anzeigt, muss es mit dem entsprechenden HAL-Signal verbunden werden. Eine HAL-Datei, die ausgeführt wird, sobald AXIS und PyVCP gestartet sind, kann im Abschnitt [HAL] der INI-Datei angegeben werden:

note: type: Plain text
en: This change will run the HAL commands specified in 'spindle_to_pyvcp.hal'. In our example the contents could look like this:
de: Diese Änderung führt die in 'spindle_to_pyvcp.hal' angegebenen HAL-Befehle aus. In unserem Beispiel könnte der Inhalt wie folgt aussehen:

note: type: Plain text
en: assuming that a signal called 'spindle-rpm-filtered' already exists.  Note that when running together with AXIS, all PyVCP panel widget HAL pins have names that start with 'pyvcp.', all PyVCP embedded tab widget HAL pins start with the name specified as EMBED_TAB_NAME converted to lower case.
de: unter der Annahme, dass ein Signal namens 'spindle-rpm-filtered' bereits existiert.  Beachten Sie, dass in Verbindung mit AXIS alle PyVCP-Panel-Widget-HAL-Pins Namen haben, die mit 'pyvcp.' beginnen, alle PyVCP-Embedded-Tab-Widget-HAL-Pins beginnen mit dem als EMBED_TAB_NAME angegebenen Namen, der in Kleinbuchstaben umgewandelt wurde.

note: type: Plain text
en: This is what the newly created PyVCP panel should look like in AXIS.  The 'sim/lathe' configuration is already configured this way.
de: So sollte das neu erstellte PyVCP-Panel in AXIS aussehen.  Die Konfiguration "sim/lathe" ist bereits auf diese Weise konfiguriert.

note: type: Block title
en: Stand Alone
de: Eigenständig (engl. stand alone)

note: type: Plain text
en: This section describes how PyVCP panels can be displayed on their own with or without LinuxCNC's machine controller.
de: Dieser Abschnitt beschreibt, wie PyVCP-Panels mit oder ohne LinuxCNCs Maschinensteuerung angezeigt werden können.

note: type: Plain text
en: To load a stand alone PyVCP panel with LinuxCNC use these commands:
de: Um ein eigenständiges PyVCP-Panel mit LinuxCNC zu laden, verwenden Sie diese Befehle:

note: type: Plain text
en: You would use this if you wanted a floating panel or a panel with a GUI other than AXIS.
de: Sie würden dies verwenden, wenn Sie ein schwebendes Bedienfeld oder ein Bedienfeld mit einer anderen GUI als AXIS wünschen.

note: type: Plain text
en: '-Wn panelname' - makes HAL wait for the component 'panelname' to finish loading ('become ready' in HAL speak) before processing more HAL commands. This is important because PyVCP panels export HAL pins, and other HAL components will need them present to connect to them. Note the capital W and lowercase n. If you use the -Wn option you must use the -c option to name the panel.
de: '-Wn panelname' - veranlasst HAL zu warten, bis die Komponente 'panelname' fertig geladen ist (in der HAL-Sprache 'bereit' werden), bevor weitere HAL-Befehle verarbeitet werden. Dies ist wichtig, da PyVCP-Panels HAL-Pins exportieren und andere HAL-Komponenten diese benötigen, um sich mit ihnen zu verbinden. Beachten Sie das große W und das kleine n. Wenn Sie die Option -Wn verwenden, müssen Sie die Option -c verwenden, um das Panel zu benennen.

note: type: Plain text
en: 'pyvcp < -g> < -c> panel.xml' - builds the panel with the optional geometry and/or panelname from the XML panel file. The panel.xml can be any name that ends in .xml. The .xml file is the file that describes how to build the panel. You must add the path name if the panel is not in the directory that the HAL script is in.
de: 'pyvcp < -g> < -c> panel.xml' - erstellt das Panel mit der optionalen Geometrie und/oder dem Panel-Namen aus der Panel-XML-Datei. Die Datei panel.xml kann jeder Name sein, der auf .xml endet. Die XML-Datei ist die Datei, die beschreibt, wie das Panel zu erstellen ist. Sie müssen den Pfadnamen hinzufügen, wenn das Panel nicht in dem Verzeichnis liegt, in dem sich das HAL-Skript befindet.

note: type: Plain text
en: '-g <WxH><+X+Y>' - specifies the geometry to be used when constructing the panel. The syntax is 'Width x Height + X Anchor + Y Anchor'. You can set the size or position or both. The anchor point is the upper left corner of the panel. An example is -g 250x500+800+0 This sets the panel at 250 pixels wide, 500 pixels tall, and anchors it at X800 Y0.
de: '-g <WxH><+X+Y>' - gibt die Geometrie an, die bei der Konstruktion des Panels verwendet werden soll. Die Syntax lautet 'Breite x Höhe + X-Anker + Y-Anker'. Sie können die Größe oder die Position oder beides festlegen. Der Ankerpunkt ist die obere linke Ecke des Panels. Ein Beispiel ist -g 250x500+800+0. Damit wird das Panel auf 250 Pixel Breite und 500 Pixel Höhe eingestellt und bei X800 Y0 verankert.

note: type: Plain text
en: '-c panelname' - tells PyVCP what to call the component and also the title of the window. The panelname can be any name without spaces.
de: '-c panelname' - teilt PyVCP mit, wie die Komponente genannt werden soll und auch den Titel des Fensters. Der Panelname kann ein beliebiger Name ohne Leerzeichen sein.

note: type: Plain text
en: To load a 'stand alone' PyVCP panel without LinuxCNC use this command:
de: Um ein 'eigenständiges' PyVCP-Panel ohne LinuxCNC zu laden, verwenden Sie diesen Befehl:

note: type: Plain text
en: The minimum command to load a PyVCP panel is:
de: Der minimale Befehl zum Laden eines PyVCP-Panels lautet:

note: type: Plain text
en: You would use this if you want a panel without LinuxCNC's machine controller such as for testing or a standalone DRO.
de: Sie würden diese verwenden, wenn Sie ein Panel ohne LinuxCNC's Maschine Controller wie für die Prüfung oder ein Standalone-DRO wollen.

note: type: Plain text
en: The loadusr command is used when you also load a component that will stop HAL from closing until it's done. If you loaded a panel and then loaded Classic Ladder using 'loadusr -w classicladder', CL would hold HAL open (and the panel)  until you closed CL.  The '-Wn' above means wait for the component '-Wn "name"' to become ready.  ('name' can be any name. Note the capital W and lowercase n.)  The -c tells PyVCP to build a panel with the name 'panelname' using the info in 'panel_file_name.xml'.  The name 'panel_file_name.xml' can be any name but must end in .xml - it is the file that describes how to build the panel. You must add the path name if the panel is not in the directory that the HAL script is in.
de: Der Befehl loadusr wird verwendet, wenn Sie auch eine Komponente laden, die HAL am Schließen hindert, bis sie fertig ist. Wenn Sie ein Panel laden und dann Classic Ladder mit 'loadusr -w classicladder' laden, würde CL HAL (und das Panel) offen halten, bis Sie CL schließen.  Das obige '-Wn' bedeutet, dass Sie warten, bis die Komponente '-Wn "name"' bereit ist.  ('name' kann ein beliebiger Name sein. Beachte das große W und das kleine n.) Das -c weist PyVCP an, ein Panel mit dem Namen 'panel_file_name' unter Verwendung der Informationen in 'panel_file_name.xml' zu erstellen.  Der Name 'panel_file_name.xml' kann ein beliebiger Name sein, muss aber auf .xml enden - es ist die Datei, die beschreibt, wie das Panel zu erstellen ist. Sie müssen den Pfadnamen hinzufügen, wenn das Panel nicht in dem Verzeichnis liegt, in dem sich das HAL-Skript befindet.

note: type: Plain text
en: An optional command to use if you want the panel to stop HAL from continuing commands / shutting down. After loading any other components you want the last HAL command to be:
de: Ein optionaler Befehl, den Sie verwenden können, wenn Sie möchten, dass das Panel HAL daran hindert, Befehle fortzusetzen / herunterzufahren. Nach dem Laden anderer Komponenten soll dies der letzte HAL-Befehl sein:

note: type: Plain text
en: This tells HAL to wait for component 'panelname' to close before continuing HAL commands. This is usually set as the last command so that HAL shuts down when the panel is closed.
de: Hiermit wird HAL angewiesen, auf das Schließen der Komponente 'panelname' zu warten, bevor HAL-Befehle fortgesetzt werden. Dies wird in der Regel als letzter Befehl eingestellt, so dass HAL heruntergefahren wird, wenn das Panel geschlossen ist.

note: type: Title ==
en: Widgets(((PyVCP Widgets Reference)))
de: Widgets(((PyVCP-Widgets-Referenz)))

note: type: Plain text
en: HAL signals come in two variants, bits and numbers. Bits are off/on signals. Numbers can be 'float', 's32' or 'u32'. For more information on HAL data types see the <<sec:hal-data,HAL Data>> section. The PyVCP widget can either display the value of the signal with an indicator widget, or modify the signal value with a control widget. Thus there are four classes of PyVCP widgets that you can connect to a HAL signal. A fifth class of helper widgets allow you to organize and label your panel.
de: HAL-Signale gibt es in zwei Varianten: Bits und Zahlen. Bits sind Aus/Ein-Signale. Zahlen können 'float', 's32' oder 'u32' sein. Für weitere Informationen über HAL-Datentypen siehe den Abschnitt <<sec:hal-data,HAL Data>>. Das PyVCP-Widget kann entweder den Wert des Signals mit einem Indikator-Widget anzeigen oder den Signalwert mit einem Kontroll-Widget verändern. Es gibt also vier Klassen von PyVCP-Widgets, die Sie mit einem HAL-Signal verbinden können. Eine fünfte Klasse von Hilfs-Widgets ermöglicht es Ihnen, Ihr Panel zu organisieren und zu beschriften.

note: type: Plain text
en: Widgets for indicating 'bit' signals: `led`, `rectled`.
de: Widgets zur Anzeige von "Bit"-Signalen: `led`, `rectled`.

note: type: Plain text
en: Widgets for controlling 'bit' signals: `button`, `checkbutton`, `radiobutton`.
de: Widgets zur Steuerung von 'Bit'-Signalen: `button`, `checkbutton`, `radiobutton`.

note: type: Plain text
en: Widgets for indicating 'number' signals: `number`, `s32`, `u32`, `bar`, `meter`.
de: Widgets zur Anzeige von numerischen Signalen: 'number', 's32', 'u32', 'bar', 'meter'.

note: type: Plain text
en: Widgets for controlling 'number' signals: `spinbox`, `scale`, `jogwheel`.
de: Widgets zur Steuerung von numerischen Signalen: `spinbox`, `scale`, `jogwheel`.

note: type: Plain text
en: Helper widgets: `hbox`, `vbox`, `table`, `label`, `labelframe`.
de: Hilfs-Widgets: `hbox`, `vbox`, `table`, `label`, `labelframe`.

note: type: Plain text
en: Each widget is described briefly, followed by the markup used, and a screen shot. All tags inside the main widget tag are optional.
de: Jedes Widget wird kurz beschrieben, gefolgt von dem verwendeten Markup und einem Screenshot. Alle Tags innerhalb des Haupt-Widget-Tags sind optional.

note: type: Title ===
en: General Notes
de: Allgemeine Anmerkungen

note: type: Plain text
en: At the present time, both a tag-based and an attribute-based syntax are supported. For instance, the following XML fragments are treated identically:
de: Gegenwärtig werden sowohl eine tagbasierte als auch eine attributbasierte Syntax unterstützt. So werden beispielsweise die folgenden XML-Fragmente identisch behandelt:

note: type: Plain text
en: When the attribute-based syntax is used, the following rules are used to turn the attributes value into a Python value:
de: Wenn die attributbasierte Syntax verwendet wird, werden die folgenden Regeln verwendet, um den Attributwert in einen Python-Wert zu verwandeln:

note: type: Plain text
en: If the first character of the attribute is one of the following, it is evaluated as a Python expression: `{(["'` .
de: Wenn das erste Zeichen des Attributs eines der folgenden ist, wird es als Python-Ausdruck ausgewertet: `{(["'` .

note: type: Plain text
en: If the string is accepted by int(), the value is treated as an integer.
de: Wird die Zeichenkette von int() akzeptiert, dann wird der Wert als Ganzzahl behandelt.

note: type: Plain text
en: If the string is accepted by float(), the value is treated as floating-point.
de: Bei Akzeptanz der Zeichenkette durch float() wird der Wert als Fließkommawert behandelt.

note: type: Plain text
en: Otherwise, the string is accepted as a string.
de: Andernfalls wird die Zeichenkette als Zeichenkette akzeptiert.

note: type: Plain text
en: When the tag-based syntax is used, the text within the tag is always evaluated as a Python expression.
de: Bei Verwendung der Tag-basierten Syntax wird der Text innerhalb des Tags immer als Python-Ausdruck ausgewertet.

note: type: Plain text
en: The examples below show a mix of formats.
de: Die folgenden Beispiele zeigen eine Mischung aus verschiedenen Formaten.

note: type: Content of: <html><body><table><tbody><tr><td>
en: Comments
de: Kommentare

note: type: Plain text
en: To add a comment use the xml syntax for a comment.
de: Um einen Kommentar hinzuzufügen, verwenden Sie die XML-Syntax für einen Kommentar.

note: type: delimited block -
en: <!-- My Comment -->
de: <!-- Mein Kommentar -->

note: type: Block title
en: Editing the XML file
de: Bearbeitung der XML-Datei

note: type: Plain text
en: Edit the XML file with a text editor. In most cases you can right click on the file and select 'open with text editor' or similar.
de: Bearbeiten Sie die XML-Datei mit einem Texteditor. In den meisten Fällen können Sie mit der rechten Maustaste auf die Datei klicken und "Mit Texteditor öffnen" oder ähnliches wählen.

note: type: Block title
en: Colors
de: Farben

note: type: Plain text
en: Colors can be specified using the X11 rgb colors by name 'gray75' or hex '#0000ff'. A complete list is located here http://sedition.com/perl/rgb.html[http://sedition.com/perl/rgb.html].
de: Farben können unter Verwendung der X11-RGB-Farben mit dem Namen 'gray75' oder hex '#0000ff' angegeben werden. Eine vollständige Liste befindet sich auf http://sedition.com/perl/rgb.html[http://sedition.com/perl/rgb.html].

note: type: Plain text
en: Common Colors (colors with numbers indicate shades of that color)
de: Gebräuchliche Farben (Nummern bezeichnen Schattierungen der jeweiligen Farbe)

note: type: Plain text
en: white
de: white (engl. für weiß)

note: type: Plain text
en: blue and blue1 - 4
de: blue (engl. für blau) und blue1 - 4

note: type: Plain text
en: cyan and cyan1 - 4
de: cyan und cyan1 - 4

note: type: Plain text
en: green and green1 - 4
de: green (engl. für grün) und green1 - 4

note: type: Plain text
en: yellow and yellow1 - 4
de: yellow (engl. für gelb) und yellow1 - 4

note: type: Plain text
en: red and red1 - 4
de: red (engl. für rot) und red1 - 4

note: type: Plain text
en: purple and purple1 - 4
de: purple (engl. für violett) und purple1 - 4

note: type: Plain text
en: gray and gray0 - 100
de: gray (amerikanisch für grau) und gray0 - 100

note: type: Plain text
en: HAL pins provide a means to 'connect' the widget to something. Once you create a HAL pin for your widget you can 'connect' it to another HAL pin with a 'net' command in a .hal file. For more information on the 'net' command see the <<sec:hal-commands,HAL Commands>> section.
de: HAL-Pins bieten die Möglichkeit, das Widget mit etwas zu "verbinden". Sobald Sie einen HAL-Pin für Ihr Widget erstellt haben, können Sie ihn mit einem 'net'-Befehl in einer .hal-Datei mit einem anderen HAL-Pin 'verbinden'. Für weitere Informationen über den 'net'-Befehl siehe den Abschnitt <<sec:hal-commands,HAL Befehle>>.

note: type: Plain text
en: A label is a way to add text to your panel.
de: Ein Etikett ist eine Möglichkeit, Ihrem Panel Text hinzuzufügen.

note: type: Plain text
en: '<label></label>' - creates a label.
de: '<label></label>' - erstellt ein Label.

note: type: Plain text
en: '<text>"text"</text>' - the text to put in your label, a blank label can be used as a spacer to align other objects.
de: '<text>"text"</text>' - der Text, der in das Etikett eingefügt werden soll; ein leeres Etikett kann als Abstandshalter verwendet werden, um andere Objekte auszurichten.

note: type: Plain text
en: '<font>("Helvetica",20)</font>' - specify the font and size of the text.
de: '<font>("Helvetica",20)</font>' - Schriftart und -größe des Textes angeben.

note: type: Plain text
en: '<relief>FLAT</relief>' - specify the border around the label ('FLAT', 'RAISED', 'SUNKEN') default is 'FLAT'.
de: '<relief>FLAT</relief>' - Angabe des Rahmens um das Etikett ('FLAT', 'RAISED', 'SUNKEN') Standard ist 'FLAT'.

note: type: Plain text
en: '<bd>_n_</bd>' - where _n_ is the border width when 'RAISED' or 'SUNKEN' borders are used.
de: '<bd>__n__</bd>' - wobei _n_ die Breite des Rahmens ist, wenn 'RAISED' oder 'SUNKEN' verwendet wird.

note: type: Plain text
en: '<padx>_n_</padx>' - where _n_ is the amount of extra horizontal extra space.
de: '<padx>__n__</padx>' - wobei _n_ die Menge des zusätzlichen horizontalen Raums ist.

note: type: Plain text
en: '<pady>_n_</pady>' - where _n_ is the amount of extra vertical extra space.
de: '<pady>__n__</pady>' - wobei _n_ für die Anzahl der zusätzlichen vertikalen Leerzeichen steht.

note: type: Plain text
en: The label has an optional disable pin that is created when you add '<disable_pin>True</disable_pin>'.
de: Das Etikett hat einen optionalen Deaktivierungsstift, der erstellt wird, wenn Sie '<disable_pin>True</disable_pin>' hinzufügen.

note: type: delimited block -
en: <label>
        <text>"This is a Label:"</text>
        <font>("Helvetica",20)</font>
    </label>
de: <label>
        <text>"Dies ist ein Label:"</text>
        <font>("Helvetica",20)</font>
    </label>

note: type: Plain text
en: The above code produced this example:
de: Der obige Code ergab dieses Beispiel:

note: type: Block title
en: Simple Label Example
de: Beispiel für ein einfaches Etikett

note: type: Plain text
en: An extension of the text label.
de: Eine Erweiterung der Textbeschriftung.

note: type: Plain text
en: Selectable text label, can display up to 6 label legends when associated bit pin is activated.
de: Wählbare Textbeschriftung, kann bis zu 6 Beschriftungslegenden anzeigen, wenn der zugehörige Bit-Pin aktiviert ist.

note: type: Plain text
en: Attach each legend pin to a signal and get a descriptive label when the signal is TRUE.
de: Verbinden Sie jeden Legenden-Pin mit einem Signal und erhalten Sie eine beschreibende Bezeichnung, wenn das Signal TRUE ist.

note: type: Plain text
en: If more than one legend pin is TRUE, the highest numbered 'TRUE' legend will be displayed.
de: Wenn mehr als ein Legenden-Pin TRUE ist, wird die Legende mit der höchsten Nummer "TRUE" angezeigt.

note: type: Plain text
en: If a disable pin is created with '<disable_pin>True</disable_pin>' and that pin is set to true the label changes to a grayed out state.
de: Wenn ein Deaktivierungs-Pin mit '<disable_pin>True</disable_pin>' erstellt wird und dieser Pin auf true gesetzt wird, ändert sich die Beschriftung in einen ausgegrauten Zustand.

note: type: Plain text
en: The above example would create the following pins.
de: Das obige Beispiel würde die folgenden Pins erzeugen.

note: type: Plain text
en: If you have more than one multilabel the pins created would increment the number like this 'pyvcp.multilabel.1.legend1'.
de: Wenn Sie mehr als ein Multilabel haben, würden die erzeugten Pins die Nummer wie folgt erhöhen: 'pyvcp.multilabel.1.legend1'.

note: type: Plain text
en: A LED is used to indicate the status of a 'bit' halpin. The LED color will be on_color when the halpin is true, and off_color otherwise.
de: Eine LED wird verwendet, um den Status eines 'bit' halpin anzuzeigen. Die LED-Farbe ist on_color, wenn der Halpin true ist, und off_color, wenn nicht.

note: type: Plain text
en: '<led></led>' - makes a round LED
de: '<led></led>' - erzeugt eine runde LED

note: type: Plain text
en: '<rectled></rectled>' - makes a rectangle LED
de: '<rectled></rectled>' - erzeugt eine rechteckige LED

note: type: Plain text
en: '<halpin>__name__</halpin>' - _name_ of the pin, default is 'led.__n__', where _n_ is an integer that is incremented for each LED.
de: '<halpin>__name__</halpin>' - Name des Pins, Standard ist 'led.__n__', wobei _n_ eine ganze Zahl ist, die für jede LED inkrementiert wird.

note: type: Plain text
en: '<size>__n__</size>' - _n_ is the size of the led in pixels, default is 20.
de: '<size>__n__</size>' - _n_ ist die Größe der LED in Pixeln, Standardwert ist 20.

note: type: Plain text
en: '<on_color>__color__</on_color>' - sets the color of the LED to _color_ when the pin is true.  default is 'green'. See section on <<pyvcp:colors,colors>> for more info.
de: <on_color>__farbe__</on_color>' - legt die Farbe der LED fest auf _farbe_, wenn der Pin wahr ist. Standard ist 'green' (engl. für grün). Siehe Abschnitt zu <<pyvcp:colors,Farben>> für weitere Informationen.

note: type: Plain text
en: '<off_color>__color__</off_color>' - sets the color of the LED to _color_ when the pin is false. default is 'red'.
de: '<off_color>__farbe__</off_color>' - legt die Farbe der LED fest auf __farbe__, wenn der Pin falsch ist. Voreinstellung ist 'red' (engl. für rot).

note: type: Plain text
en: '<height>__n__</height>' - sets the height of the LED in pixels.
de: '<height>__n__</height>' - legt die Höhe der LED in Pixeln fest.

note: type: Plain text
en: '<width>__n__</width>' - sets the width of the LED in pixels.
de: '<width>__n__</width>' - legt die Breite der LED in Pixeln fest.

note: type: Plain text
en: '<disable_pin>false</disable_pin>' - when true adds a disable pin to the led.
de: '<disable_pin>false</disable_pin>' - bei true wird der LED ein Deaktivierungspin hinzugefügt.

note: type: Plain text
en: '<disabled_color>__color__</disabled_color>' - sets the color of the LED to _color_ when the pin is disabled.
de: '<disabled_color>__color__</disabled_color>' - setzt die Farbe der LED auf _color_, wenn der Pin deaktiviert ist.

note: type: Block title
en: Round LED
de: Runde LED

note: type: delimited block -
en: <led>
        <halpin>"my-led"</halpin>
        <size>50</size>
        <on_color>"green"</on_color>
        <off_color>"red"</off_color>
    </led>
de: <led>
        <halpin>"meine-LED"</halpin>
        <size>50</size>
        <on_color>"green"</on_color>
        <off_color>"red"</off_color>
    </led>

note: type: Block title
en: Round LED Example
de: Beispiel für eine runde LED

note: type: Block title
en: Rectangle LED
de: Rechteckige LED

note: type: Plain text
en: This is a variant of the 'led' widget.
de: Dies ist eine Variante des "led" -Widgets.

note: type: delimited block -
en: <vbox>
        <relief>RIDGE</relief>
        <bd>6</bd>
        <rectled>
            <halpin>"my-led"</halpin>
            <height>"50"</height>
            <width>"100"</width>
            <on_color>"green"</on_color>
            <off_color>"red"</off_color>
        </rectled>
    </vbox>
de: <vbox>
        <relief>RIDGE</relief>
        <bd>6</bd>
        <rectled>
            <halpin>"meine-led"</halpin>
            <height>"50"</height>
            <width>"100"</width>
            <on_color>"green"</on_color>
            <off_color>"red"</off_color>
        </rectled>
    </vbox>

note: type: Plain text
en: The above code produced this example.  Also showing a vertical box with relief.
de: Der obige Code erzeugt dieses Beispiel.  Es zeigt auch einen vertikalen Kasten mit Relief.

note: type: Block title
en: Simple Rectangle LED Example
de: Beispiel für eine einfache Rechteck-LED

note: type: Plain text
en: A button is used to control a BIT pin. The pin will be set True when the button is pressed and held down, and will be set False when the button is released. Buttons can use the following optional options.
de: Eine Taste wird verwendet, um einen BIT-Pin zu steuern. Der Pin wird auf True gesetzt, wenn die Taste gedrückt und gehalten wird, und wird auf False gesetzt, wenn die Taste losgelassen wird. Schaltflächen können die folgenden optionalen Optionen verwenden.

note: type: Plain text
en: '<padx>__n__</padx>' - where _n_ is the amount of extra horizontal extra space.
de: '<padx>__n__</padx>' - wobei _n_ die Menge des zusätzlichen horizontalen Raums ist.

note: type: Plain text
en: '<pady>__n__</pady>' - where _n_ is the amount of extra vertical extra space.
de: '<pady>__n__</pady>' - wobei _n_ für die Anzahl der zusätzlichen vertikalen Leerzeichen steht.

note: type: Plain text
en: '<activebackground>"__color__"</activebackground>' - the cursor over color set to _color_.
de: '<activebackground>"__color__"</activebackground>' - der Cursor über Farbe auf _color_ gesetzt.

note: type: Plain text
en: '<fg>"__color__"</fg>' - the foreground color set to _color_.
de: '<fg>"__color__"</fg>' - die Vordergrundfarbe wird auf _color_ gesetzt.

note: type: Plain text
en: '<bg>"__color__"</bg>' - the background color set to _color_.
de: '<bg>"__color__"</bg>' - die auf _color_ gesetzte Hintergrundfarbe.

note: type: Plain text
en: '<disable_pin>True</disable_pin>' - disable pin.
de: '<disable_pin>True</disable_pin>' - Pin deaktivieren.

note: type: Plain text
en: A text button controls a 'bit' halpin. The halpin is false until the button is pressed then it is true. The button is a momentary button.
de: Eine Texttaste steuert einen "bit"-HAL-Pin. Der HAL-Pin liefert falsch, bis der Button gedrückt wird, dann ist er wahr. Der Button ist eine Momenttaste.

note: type: Plain text
en: The text button has an optional disable pin that is created when you add <disable_pin>True</disable_pin>.
de: Die Text Button hat einen optionalen Deaktivierungsstift, der beim Hinzufügen von <disable_pin>True</disable_pin> angelegt wird.

note: type: Block title
en: Simple Buttons Example
de: Beispiel für einfache Buttons

note: type: Plain text
en: A checkbutton controls a bit halpin. The halpin will be set True when the button is checked, and false when the button is unchecked. The checkbutton is a toggle type button. The checkbuttons may be set initially as TRUE or FALSE the initval field A pin called changepin is also created automatically, which can toggle the Checkbutton via HAL, if the value linked is changed, to update the display remotely.
de: Ein Checkbutton steuert ein bit HAL-Pin. Der HAL-Pin wird auf True gesetzt, wenn der Button angekreuzt ist, und auf False, wenn der Button nicht angekreuzt ist. Der Checkbutton ist ein Toggle-Button. Die Checkbuttons können anfänglich auf TRUE oder FALSE gesetzt werden. Ein Pin namens changepin wird ebenfalls automatisch erstellt, der den Checkbutton über HAL umschalten kann, wenn der verknüpfte Wert geändert wird, um die Anzeige aus der Ferne zu aktualisieren.

note: type: Block title
en: Unchecked button
de: Nicht-markierter (engl. unchecked) button

note: type: Block title
en: Checked button
de: Markierter (engl. checked) Button

note: type: Block title
en: Checkbutton Code Example
de: Checkbutton Code Beispiel

note: type: Block title
en: Simple Checkbutton Example
de: Einfaches Checkbutton-Beispiel

note: type: Plain text
en: The coolant checkbutton is checked.
    Notice the extra spaces in the "Chips" text to keep the checkbuttons aligned.
de: Das Kontrollkästchen für das Kühlmittel ist aktiviert.
    Beachten Sie die zusätzlichen Leerzeichen im Text "Chips", um die Kontrollkästchen auszurichten.

note: type: Plain text
en: A radiobutton will set one of the halpins true. The other pins are set false.  The initval field may be set to choose the default selection when the panel displays. Only one radio button may be set to TRUE (1) or only the highest number pin set TRUE will have that value.
de: Ein Radiobutton setzt einen der Halbpins auf true. Die anderen Pins werden auf false gesetzt.  Das Feld initval kann eingestellt werden, um die Standardauswahl zu treffen, wenn das Panel angezeigt wird. Es darf nur ein Radiobutton auf TRUE (1) gesetzt werden, oder nur der Pin mit der höchsten Nummer, der auf TRUE gesetzt wurde, erhält diesen Wert.

note: type: Block title
en: Simple Radiobutton Example
de: Einfaches Radiobutton-Beispiel

note: type: Plain text
en: Note that the HAL pins in the example above will be named my-radio.one, my-radio.two, and my-radio.three.
    In the image above, 'one' is the selected value.
    Use this tag `<orient>HORIZONTAL</orient>` to display horizontally.
de: Beachten Sie, dass die HAL-Pins im obigen Beispiel my-radio.one, my-radio.two und my-radio.three heißen werden.
    In der obigen Abbildung ist "eins" der ausgewählte Wert.
    Verwenden Sie dieses Tag "<orient>HORIZONTAL</orient>", um die Anzeige horizontal zu gestalten.

note: type: Title ===
en: Number Displays
de: Nummernanzeigen

note: type: Plain text
en: Number displays can use the following formatting options
de: Für die Anzeige von Zahlen stehen folgende Formatierungsoptionen zur Verfügung

note: type: Plain text
en: `<font>("Font Name",n)</font>`, where _n_ is the font size.
de: `<font>("Font Name",n)</font>` wobei _n_ die Schriftgröße ist.

note: type: Plain text
en: `<width>_n_</width>`, where _n_ is the overall width of the space used.
de: `<width>_n_</width>`, wobei _n_ die Gesamtbreite des verwendeten Raums ist.

note: type: Plain text
en: `<justify>_pos_</justify>`, where _pos_ is LEFT, CENTER, or RIGHT (doesn't work).
de: `<justify>_pos_</justify>`, wobei _pos_ LEFT, CENTER oder RIGHT ist (funktioniert nicht).

note: type: Plain text
en: `<padx>_n_</padx>`, where _n_ is the amount of extra horizontal extra space.
de: `<padx>__n__</padx>`, wobei _n_ die Menge des zusätzlichen horizontalen Raums ist.

note: type: Plain text
en: `<pady>_n_</pady>`, where _n_ is the amount of extra vertical extra space.
de: `<pady>__n__</pady>`, - wobei _n_ für die Anzahl der zusätzlichen vertikalen Leerzeichen steht.

note: type: Block title
en: Number
de: Nummer

note: type: Plain text
en: The number widget displays the value of a float signal.
de: Das Zahlen-Widget zeigt den Wert eines Gleitkomma-Signals an.

note: type: Block title
en: Simple Number Example
de: Beispiel für einfache Zahlen

note: type: Plain text
en: _<font>_ - is a Tkinter font type and size specification. One font that will show up to at least size 200 is 'courier 10 pitch', so for a really big Number widget you could specify:
de: _<font>_ - ist eine Tkinter-Schriftart und Größenangabe. Eine Schriftart, die mindestens bis zur Größe 200 angezeigt wird, ist "courier 10 pitch", so dass Sie für ein wirklich großes Zahlen-Widget angeben können:

note: type: Plain text
en: _<format>_ - is a 'C-style' format specified that determines how the number is displayed.
de: _<format>_ - ist ein angegebenes Format im C-Stil, das bestimmt, wie die Zahl angezeigt wird.

note: type: Block title
en: s32 Number
de: s32-Nummer

note: type: Plain text
en: The s32 number widget displays the value of a s32 number. The syntax is the same as 'number' except the name which is <s32>. Make sure the width is wide enough to cover the largest number you expect to use.
de: Das s32-Zahlen-Widget zeigt den Wert einer s32-Zahl an. Die Syntax ist die gleiche wie die von 'number', mit Ausnahme des Namens, der <s32> lautet. Stellen Sie sicher, dass die Breite breit genug ist, um die größte Zahl, die Sie voraussichtlich verwenden werden, abzudecken.

note: type: Block title
en: Simple s32 Number Example
de: Einfaches s32 Zahlenbeispiel

note: type: Block title
en: u32 Number
de: u32 Zahl

note: type: Plain text
en: The u32 number widget displays the value of a u32 number. The syntax is the same as 'number' except the name which is <u32>.
de: Das Widget u32 number zeigt den Wert einer u32-Zahl an. Die Syntax ist die gleiche wie die von 'number', mit Ausnahme des Namens, der <u32> lautet.

note: type: Block title
en: Bar
de: Bar (engl. für Balken)

note: type: Plain text
en: A bar widget displays the value of a FLOAT signal both graphically using a bar display and numerically.  The color of the bar can be set as one color throughout its range (default using fillcolor) or set to change color dependent upon the value of the halpin (range1, range2 range3 must all be set, if you only want 2 ranges, set 2 of them to the same color).
de: Ein Balken-Widget zeigt den Wert eines FLOAT-Signals sowohl grafisch mit einer Balkenanzeige als auch numerisch an.  Die Farbe des Balkens kann als eine Farbe für den gesamten Bereich festgelegt werden (Standard mit fillcolor) oder so eingestellt werden, dass sich die Farbe in Abhängigkeit vom Wert des Halbsignals ändert (Bereich1, Bereich2, Bereich3 müssen alle festgelegt werden; wenn Sie nur zwei Bereiche wünschen, setzen Sie zwei davon auf dieselbe Farbe).

note: type: Plain text
en: `<halpin>"my-bar"</halpin>` (text), derives and sets the pin name: `pyvcp.my-bar`.
de: `<halpin>"my-bar"</halpin>` text, setzt den Pin-Namen: `pyvcp.my-bar`.

note: type: Plain text
en: `<min_>0</min_>` (number), sets the minimum scale.
de: `<min_>0</min_>` Zahl, legt die minimale Skalierung fest.

note: type: Plain text
en: `<max_>140</max_>` (number), sets the maximum scale.
de: `<max_>140</max_>` (Zahl), legt die maximale Skalierung fest.

note: type: Plain text
en: `<format>"3.1f"</format>` (text), sets the number format using Python number formatting.
de: `<format>"3.1f"</format>` (Text), setzt das Zahlenformat mit Python-Zahlenformatierung.

note: type: Plain text
en: `<bgcolor>"grey"</bgcolor>` (text), sets the background color.
de: `<bgcolor>"grau"</bgcolor>` (Text), legt die Hintergrundfarbe fest.

note: type: Plain text
en: `<fillcolor>"red"</fillcolor>` (text), sets the fill color.
de: `<fillcolor>"rot"</fillcolor>` (Text), setzt die Füllfarbe.

note: type: Plain text
en: `<range1>0,100,"green"</range1>` (number, number, text), sets the first range and color.
de: `<range1>0,100, "grün"</range1>` (Zahl, Zahl, Text), legt den ersten Bereich und die Farbe fest.

note: type: Plain text
en: `<range2>101,135,"orange"</range2>` (number, number, text), sets the first range and color.
de: `<range2>101,135, "orange"</range2>` (number, number, text), legt den ersten Bereich und die Farbe fest.

note: type: Plain text
en: `<range3>136, 150,"red"</range3>` number, number, text), sets the first range and color.
de: <range3>136, 150, "rot"</range3> Zahl, Zahl, Text, legt den ersten Bereich und die Farbe fest.

note: type: Plain text
en: `<canvas_width>200</canvas_width>` (number), sets the overall width.
de: `<canvas_width>200</canvas_width>`, (Zahl), legt die Gesamtbreite fest.

note: type: Plain text
en: `<canvas_height>50</canvas_height>` (number), sets the overall height.
de: `<canvas_height>50</canvas_height>` (Zahl), legt die Gesamthöhe fest.

note: type: Plain text
en: `<bar_height>30</bar_height>` (number), sets the bar height, must be less than canvas_height.
de: `<bar_height>30</bar_height>` (Zahl), legt die Balkenhöhe fest, muss kleiner sein als canvas_height.

note: type: Plain text
en: `<bar_width>150</bar_width>` (number), sets the bar width, must be less than canvas_width.
de: `<bar_width>150</bar_width>` (Zahl), setzt die Balkenbreite, muss kleiner als canvas_width sein.

note: type: Block title
en: Simple Bar Example
de: Einfaches Bar-Beispiel

note: type: Plain text
en: Meter displays the value of a FLOAT signal using a traditional dial indicator.
de: Das Messgerät zeigt den Wert eines FLOAT-Signals mit einer herkömmlichen Messuhr an.

note: type: Block title
en: Simple Meter Example
de: Einfaches Beispiel für ein Messgerät

note: type: Title ===
en: Number Inputs
de: Numerische Eingaben

note: type: Block title
en: Spinbox
de: Spinbox (Einstellrad)

note: type: Plain text
en: A spinbox controls a FLOAT pin. You increase or decrease the value of the pin by either pressing on the arrows, or pointing at the spinbox and rolling your mouse-wheel. If the param_pin field is set TRUE(1), a pin will be created that can be used to set the spinbox to an initial value and to remotely alter its value without HID input.
de: Eine Spinbox steuert einen FLOAT-Stift. Sie erhöhen oder verringern den Wert des Pins, indem Sie entweder auf die Pfeile drücken oder auf die Spinbox zeigen und das Mausrad drehen. Wenn das Feld param_pin auf TRUE(1) gesetzt ist, wird ein Pin erstellt, der verwendet werden kann, um die Spinbox auf einen Anfangswert zu setzen und ihren Wert ohne HID-Eingabe aus der Ferne zu ändern.

note: type: Block title
en: Simple Spinbox Example
de: Einfaches Spinbox-Beispiel

note: type: Plain text
en: Scale
de: Skala

note: type: Plain text
en: A scale controls a float or a s32 pin. You increase or decrease the value of the pin be either dragging the slider, or pointing at the scale and rolling your mouse-wheel. The 'halpin' will have both '-f' and '-i' added to it to form the float and s32 pins. Width is the width of the slider in vertical and the height of the slider in horizontal orientation. If the param_pin field is set TRUE(1), a pin will be created that can be used to set the spinbox to an initial value and to remotely alter its value without HID input.
de: Eine Skala steuert einen Float oder einen s32-Pin. Sie erhöhen oder verringern den Wert des Pin, indem Sie entweder den Schieberegler ziehen oder auf die Skala zeigen und das Mausrad drehen. Dem 'halpin' werden sowohl '-f' als auch '-i' hinzugefügt, um die float- und s32-Pins zu bilden. Width ist die Breite des Schiebereglers in vertikaler und die Höhe des Schiebereglers in horizontaler Ausrichtung. Wenn das Feld param_pin auf TRUE(1) gesetzt wird, so wird ein Pin erstellt, der dazu verwendet werden kann, die Spinbox auf einen Anfangswert zu setzen und ihren Wert ohne HID-Eingabe ferngesteuert zu ändern.

note: type: Block title
en: Simple Scale Example
de: Beispiel für eine einfache Skalierung

note: type: delimited block =
en: Note that by default it is "min" which is displayed even if it is greater than "max", unless "min" is negative.
de: Beachten Sie, dass standardmäßig "min" angezeigt wird, auch wenn es größer als "max" ist, es sei denn, "min" ist negativ.

note: type: Block title
en: Dial
de: Wählscheibe (engl. dial)

note: type: Plain text
en: The Dial outputs a HAL float and reacts to both mouse wheel and dragging. Double left click to increase the resolution and double right click to reduce the resolution by one digit. The output is capped by the min and max values. The <cpr> is how many tick marks are on the outside of the ring (beware of high numbers). If the param_pin field is set TRUE(1), a pin will be created that can be used to set the spinbox to an initial value and to remotely alter its value without HID input.
de: Das Dial gibt einen HAL-Float aus und reagiert sowohl auf Mausrad als auch auf Ziehen. Doppelklicken Sie mit der linken Maustaste, um die Auflösung zu erhöhen, und doppelklicken Sie mit der rechten Maustaste, um die Auflösung um eine Ziffer zu reduzieren. Die Ausgabe wird durch die Min- und Max-Werte begrenzt. Das <cpr> ist, wie viele Teilstriche sich auf der Außenseite des Rings befinden (Vorsicht vor hohen Zahlen). Wenn das Feld param_pin auf TRUE(1) gesetzt ist, wird ein Pin erstellt, mit dem die Spinbox auf einen Anfangswert gesetzt und ihr Wert ohne HID-Eingabe aus der Ferne geändert werden kann.

note: type: Block title
en: Simple Dial Example
de: Einfaches Wählbeispiel

note: type: Plain text
en: Jogwheel mimics a real jogwheel by outputting a FLOAT pin which counts up or down as the wheel is turned, either by dragging in a circular motion, or by rolling the mouse-wheel.
de: Jogwheel ahmt ein echtes Jogwheel nach, indem es einen FLOAT-Pin ausgibt, der auf- oder abwärts zählt, wenn das Rad gedreht wird, entweder durch Ziehen in einer kreisförmigen Bewegung oder durch Drehen des Mausrads.

note: type: Plain text
en: Optional tags:
de: Optionale Tags:

note: type: Plain text
en: '<text>"My Text"</text>' displays text
de: '<text>"Mein Text"</text>' zeigt Text an

note: type: Plain text
en: '<bgcolor>"grey"</bgcolor> <fillcolor>"green"</fillcolor>' background & active colors
de: '<bgcolor>"grey"</bgcolor> <fillcolor>"green"</fillcolor>' Hintergrund- und aktive Farben

note: type: Plain text
en: '<scale_pin>1</scale_pin>' creates scale text and a FLOAT.scale pin to display jog scale
de: '<scale_pin>1</scale_pin>' erzeugt Skalentext und einen FLOAT.scale-Pin zur Anzeige der Jog-Skala

note: type: Plain text
en: '<clear_pin>1</clear_pin>' creates DRO and a BIT.reset pin to reset DRO. Needs scale_pin for scaled DRO. shift+click resets DRO also
de: '<clear_pin>1</clear_pin>' erstellt DRO und einen BIT.reset-Pin, um DRO zurückzusetzen. Benötigt scale_pin für skalierte DRO. shift+click setzt DRO ebenfalls zurück

note: type: Block title
en: Simple Jogwheel Example
de: Einfaches Jogwheel-Beispiel

note: type: Title ===
en: Images
de: Bilder

note: type: Plain text
en: Image displays use only .gif image format. All of the images must be the same size. The images must be in the same directory as your ini file (or in the current directory if running from the command line with halrun/halcmd).
de: Die Bilder dürfen nur im .gif-Format angezeigt werden. Alle Bilder müssen die gleiche Größe haben. Die Bilder müssen sich im gleichen Verzeichnis wie Ihre INI-Datei befinden (oder im aktuellen Verzeichnis, wenn Sie das Programm von der Kommandozeile aus mit halrun/halcmd ausführen).

note: type: Plain text
en: The 'image_bit' toggles between two images by setting the halpin to true or false.
de: Das 'image_bit' schaltet zwischen zwei Bildern um, indem es den halpin auf true oder false setzt.

note: type: Plain text
en: This example was produced from the above code.  Using the two image files fwd.gif and rev.gif.  FWD is displayed when 'selectimage' is false and REV is displayed when 'selectimage' is true.
de: Dieses Beispiel wurde mit dem obigen Code erstellt.  Es verwendet die beiden Bilddateien fwd.gif und rev.gif.  FWD wird angezeigt, wenn "selectimage" falsch ist, und REV wird angezeigt, wenn "selectimage" wahr ist.

note: type: Block title
en: Selectimage False Example
de: Selectimage False Beispiel

note: type: Block title
en: Selectimage True Example
de: Selectimage True Beispiel

note: type: Plain text
en: The 'image_u32' is the same as 'image_bit' except you have essentially an unlimited number of images and you 'select' the image by setting the halpin to a integer value with 0 for the first image in the images list and 1 for the second image etc.
de: Das 'image_u32' ist dasselbe wie 'image_bit', außer dass Sie im Wesentlichen eine unbegrenzte Anzahl von Bildern haben und das Bild 'auswählen', indem Sie den Halpin auf einen ganzzahligen Wert mit 0 für das erste Bild in der Bilderliste und 1 für das zweite setzen Bild usw.

note: type: Plain text
en: The above code produced the following example by adding the stb.gif image.
de: Der obige Code erzeugt das folgende Beispiel, indem das Bild stb.gif hinzugefügt wird.

note: type: Block title
en: Simple image_u32 Example with halpin=0
de: Einfaches image_u32 Beispiel mit halpin=0

note: type: Block title
en: Simple image_u32 Example withhalpin=1
de: Einfache image_u32 Beispiel withhalpin=1

note: type: Block title
en: Simple image_u32 Example withhalpin=2
de: Einfaches Beispiel image_u32 withhalpin=2

note: type: Plain text
en: Notice that the default is the min even though it is set higher than max unless there is a negative min.
de: Beachten Sie, dass der Standardwert der Minimalwert ist, auch wenn er höher als der Maximalwert ist, es sei denn, es gibt einen negativen Minimalwert.

note: type: Plain text
en: Containers are widgets that contain other widgets. Containers are used to group other widgets.
de: Container sind Widgets, die andere Widgets enthalten. Container werden verwendet, um andere Widgets zu gruppieren.

note: type: Block title
en: Borders
de: Begrenzungen (engl. borders)

note: type: Plain text
en: Container borders are specified with two tags used together. The <relief> tag specifies the type of border and the <bd> specifies the width of the border.
de: Containerränder werden mit zwei Tags angegeben, die zusammen verwendet werden. Der <relief>-Tag gibt die Art des Rahmens an, und der <bd>-Tag gibt die Breite des Rahmens an.

note: type: Labeled list
en: '<relief>_type_</relief>'
de: '<relief>_Typ_</relief>'

note: type: Plain text
en: Where _type_ is FLAT, SUNKEN, RAISED, GROOVE, or RIDGE.
de: Wobei _Typ_ FLAT, SUNKEN, RAISED, GROOVE, oder RIDGE ist.

note: type: Plain text
en: Where _n_ is the width of the border.
de: Dabei ist _n_ die Breite des Rahmens.

note: type: Block title
en: Containers Borders Showcase
de: Container Borders Showcase

note: type: Plain text
en: Container fill are specified with the '<boxfill fill=""/>' tag. Valid entries are none, x, y and both. The x fill is a horizontal fill and the y fill is a vertical fill
de: Containerfüllungen werden mit dem Tag '<boxfill fill=""/>' angegeben. Gültige Einträge sind none, x, y und both. Die x-Füllung ist eine horizontale Füllung und die y-Füllung ist eine vertikale Füllung

note: type: Plain text
en: Where 'style' is none, x, y, or both. Default is x for Vbox and y for Hbox.
de: Dabei ist 'style' none, x, y oder beides. Standardwert ist x für Vbox und y für Hbox.

note: type: Block title
en: Anchor
de: Anker

note: type: Plain text
en: Container anchors are specified with the <boxanchor anchor=""/> tag. The anchor specifies where to position each slave in its parcel. Valid entries are center, n, s, e, w, for center, north, south, east and west. Combinations like sw, se, nw and ne are also valid.
de: Container-Anker werden mit dem Tag <boxanchor anchor=""/> angegeben. Der Anker gibt an, wo jeder Slave in seiner Parzelle positioniert werden soll. Gültige Einträge sind center, n, s, e, w, für center, north, south, east und west. Kombinationen wie sw, se, nw und ne sind ebenfalls gültig.

note: type: Plain text
en: Where 'position' is center, n, s, e, w, ne, nw, se or sw. Default is center.
de: Dabei ist 'Position' center, n, s, e, w, ne, nw, se oder sw. Standardwert ist Mitte.

note: type: Block title
en: Expand
de: Erweitern

note: type: Plain text
en: Container expand is specified with the boolean <boxexpand expand=""/> tag.  Valid entries are yes, no.
de: Container expand wird mit dem booleschen Tag <boxexpand expand=""/> angegeben.  Gültige Einträge sind yes, no.

note: type: Plain text
en: Where 'boolean' is either yes or no. Default is yes.
de: Wobei 'boolean' entweder ja oder nein ist. Die Voreinstellung ist ja.

note: type: Plain text
en: Use an Hbox when you want to stack widgets horizontally next to each other.
de: Verwenden Sie eine Hbox, wenn Sie Widgets horizontal nebeneinander stapeln möchten.

note: type: Block title
en: Simple hbox Example
de: Einfaches hbox-Beispiel

note: type: Plain text
en: Inside an Hbox, you can use the '<boxfill fill=""/>', '<boxanchor anchor=""/>', and '<boxexpand expand=""/>' tags to choose how items in the box behave when the window is re-sized.The default is 'fill="y"', 'anchor="center"', 'expand="yes"' for a Hbox.
de: Innerhalb einer Hbox können Sie die Tags '<boxfill fill=""/>', '<boxanchor anchor=""/>' und '<boxexpand expand=""/>' verwenden, um festzulegen, wie sich die Elemente in der Box verhalten, wenn die Größe des Fensters geändert wird.Die Standardeinstellung ist 'fill="y"', 'anchor="center"', 'expand="yes"' für eine Hbox.

note: type: Plain text
en: Use a Vbox when you want to stack widgets vertically on top of each other.
de: Verwenden Sie eine Vbox, wenn Sie Widgets vertikal übereinander stapeln möchten.

note: type: delimited block -
en: <vbox>
        <relief>RIDGE</relief>
        <bd>6</bd>
        <label><text>"a vbox:"</text></label>
        <led></led>
        <number></number>
        <bar></bar>
    </vbox>
de: <vbox>
        <relief>RIDGE</relief>
        <bd>6</bd>
        <label><text>"eine vbox:"</text></label>
        <led></led>
        <number></number>
        <bar></bar>
    </vbox>

note: type: Block title
en: Simple vbox Example
de: Einfaches vbox-Beispiel

note: type: Plain text
en: Inside a Vbox, you can use the '<boxfill fill=""/>', '<boxanchor anchor=""/>', jnd '<boxexpand expand=""/>' tags to choose how items in the box behave when the window is re-sized. The default is 'fill="x"', 'anchor="center"', 'expand="yes"' for a Hbox.
de: Innerhalb einer Vbox können Sie die Tags '<boxfill fill=""/>', '<boxanchor anchor=""/>', jnd '<boxexpand expand=""/>' verwenden, um festzulegen, wie sich die Elemente in der Box verhalten, wenn die Größe des Fensters geändert wird. Die Standardeinstellung ist 'fill="x"', 'anchor="center"', 'expand="yes"' für eine Hbox.

note: type: Block title
en: Labelframe
de: Etikettrahmen (engl. labelframe)

note: type: Plain text
en: A labelframe is a frame with a groove and a label at the upper-left corner.
de: Ein Etikettenrahmen (engl. labelframe) ist ein Rahmen mit einer Rille und einem Etikett in der oberen linken Ecke.

note: type: Block title
en: Simple labelframe Example
de: Einfaches Labelframe-Beispiel

note: type: Block title
en: Table
de: Tabelle (engl. table)

note: type: Plain text
en: A table is a container that allows layout in a grid of rows and columns. Each row is started by a '<tablerow/>' tag. A contained widget may span rows or columns through the use of the '<tablespan rows= cols=/>' tag. The sides of the cells to which the contained widgets "stick" may be set through the use of the '<tablesticky sticky=/>' tag. A table expands on its flexible rows and columns.
de: Eine Tabelle (engl. table) ist ein Container, der das Layout in einem Raster aus Zeilen und Spalten ermöglicht. Jede Zeile wird mit einem "<tablerow/>"-Tag eingeleitet. Ein enthaltenes Widget kann sich über Zeilen oder Spalten erstrecken, indem es das Tag "<tablespan rows= cols=/>" verwendet. Die Seiten der Zellen, an denen die enthaltenen Widgets "kleben", können durch die Verwendung des Tags "<tablesticky sticky=/>" festgelegt werden. Eine Tabelle dehnt sich über ihre flexiblen Zeilen und Spalten aus.

note: type: Block title
en: Table Code Example
de: Tabelle Code Beispiel

note: type: Block title
en: Table Example
de: Beispiel für eine Tabelle

note: type: Block title
en: Tabs
de: Registerkarten (engl. tabs)

note: type: Plain text
en: A tabbed interface can save quite a bit of space.
de: Eine Benutzeroberfläche mit Registerkarten kann ziemlich viel Platz sparen.

note: type: Plain text
en: The above code produced this example showing each tab selected.
de: Der obige Code ergibt dieses Beispiel, in dem jede ausgewählte Registerkarte angezeigt wird.

note: type: Block title
en: Simple Tabs Example
de: Einfache Tabs-Beispiel

note: type: Title =
en: PyVCP Examples
de: PyVCP-Beispiele

note: type: Plain text
en: To create a PyVCP panel to use with the AXIS interface that is attached to the right of AXIS you need to do the following basic things.
de: Um ein PyVCP-Panel zur Verwendung mit der AXIS-Schnittstelle zu erstellen, die rechts von AXIS angebracht ist, müssen Sie die folgenden grundlegenden Dinge tun.

note: type: Plain text
en: Create an XML file that contains your panel description and put it in your config directory.
de: Erstellen Sie eine XML-Datei, die Ihre Panel-Beschreibung enthält, und legen Sie sie in Ihr Konfigurationsverzeichnis.

note: type: Plain text
en: Add the PyVCP entry to the [DISPLAY] section of the INI file with your XML file name.
de: Fügen Sie den PyVCP-Eintrag in den [DISPLAY]-Abschnitt der INI-Datei mit dem Namen Ihrer XML-Datei ein.

note: type: Plain text
en: Add the POSTGUI_HALFILE entry to the [HAL] section of the INI file with the name of your postgui HAL file name.
de: Fügen Sie den Eintrag POSTGUI_HALFILE in den [HAL]-Abschnitt der INI-Datei ein und geben Sie den Namen Ihrer postgui-HAL-Datei an.

note: type: Plain text
en: Add the links to HAL pins for your panel in the postgui.hal file to 'connect' your PyVCP panel to LinuxCNC.
de: Fügen Sie die Links zu HAL-Pins für Ihr Panel in der Datei postgui.hal hinzu, um Ihr PyVCP-Panel mit LinuxCNC zu 'verbinden'.

note: type: Title ==
en: Floating Panels
de: Schwebende (engl. floating) Panels

note: type: Plain text
en: To create floating PyVCP panels that can be used with any interface you need to do the following basic things.
de: Um schwebende PyVCP-Panels zu erstellen, die mit jeder Schnittstelle verwendet werden können, müssen Sie die folgenden grundlegenden Dinge tun.

note: type: Plain text
en: Add a loadusr line to your HAL file to load each panel.
de: Fügen Sie eine loadusr-Zeile in Ihre HAL-Datei ein, um jedes Panel zu laden.

note: type: Plain text
en: The following is an example of a loadusr command to load two PyVCP panels and name each one so the connection names in HAL will be known.
de: Nachfolgend ein Beispiel für einen loadusr-Befehl, um zwei PyVCP-Panels zu laden und jedes zu benennen, damit die Verbindungsnamen in HAL bekannt sind.

note: type: Plain text
en: The -Wn makes HAL 'Wait for name' to be loaded before proceeding.
de: Die Option -Wn bewirkt, dass HAL darauf wartet, dass der Name geladen wird, bevor es weitergeht.

note: type: Plain text
en: The pyvcp -c makes PyVCP name the panel.
de: Die Option pyvcp -c sorgt dafür, dass PyVCP das Panel benennt.

note: type: Plain text
en: The HAL pins from panel1.xml will be named btnpanel.<_pin name_>.
de: Die HAL-Pins aus panel1.xml werden als btnpanel.<_Pinname_> bezeichnet.

note: type: Plain text
en: The HAL pins from panel2.xml will be named sppanel.<_pin name_>.
de: Die HAL-Pins aus panel2.xml werden als btnpanel.<_Pinname_> bezeichnet.

note: type: Plain text
en: Make sure the loadusr line is before any nets that make use of the PyVCP pins.
de: Stellen Sie sicher, dass die loadusr-Zeile vor allen Netzen steht, welche die PyVCP-Pins verwenden.

note: type: Title ==
en: Jog Buttons Example
de: Beispiel für Jog-Buttons

note: type: Plain text
en: In this example we will create a PyVCP panel with jog buttons for X, Y, and Z.  This configuration will be built upon a Stepconf Wizard generated configuration. First we run the Stepconf Wizard and configure our machine, then on the Advanced Configuration Options page we make a couple of selections to add a blank PyVCP panel as shown in the following figure. For this example we named the configuration 'pyvcp_xyz' on the Basic Machine Information page of the Stepconf Wizard.
de: In diesem Beispiel erstellen wir ein PyVCP-Panel mit Jog-Buttons für X, Y und Z. Diese Konfiguration wird auf einer vom Stepconf-Assistenten generierten Konfiguration aufgebaut. Zunächst führen wir den Stepconf-Assistenten aus und konfigurieren unseren Rechner. Auf der Seite Erweiterte Konfigurationsoptionen fügen wir dann ein leeres PyVCP-Panel hinzu, wie in der folgenden Abbildung gezeigt. Für dieses Beispiel haben wir die Konfiguration auf der Seite mit den grundlegenden Maschineninformationen des Stepconf-Assistenten "pyvcp_xyz" genannt.

note: type: Block title
en: XYZ Wizard Configuration
de: XYZ-Assistent Konfiguration

note: type: Positional ($1) AttributeList argument for macro 'image'
en: PyVCP XYZ Wizard Configuration
de: PyVCP XYZ-Assistent Konfiguration

note: type: Plain text
en: The Stepconf Wizard will create several files and place them in the linuxcnc/configs/pyvcp_xyz directory. If you left the create link checked you will have a link to those files on your desktop.
de: Der Stepconf-Assistent erstellt mehrere Dateien und legt sie im Verzeichnis linuxcnc/configs/pyvcp_xyz ab. Wenn Sie die Option "Link erstellen" aktiviert haben, finden Sie auf Ihrem Desktop einen Link zu diesen Dateien.

note: type: Title ===
en: Create the Widgets
de: Erstellen der Widgets

note: type: Plain text
en: Open up the custompanel.xml file by right clicking on it and selecting 'open with text editor'. Between the <pyvcp></pyvcp> tags we will add the widgets for our panel.
de: Öffnen Sie die Datei custompanel.xml, indem Sie mit der rechten Maustaste darauf klicken und "Mit Texteditor öffnen" wählen. Zwischen den Tags <pyvcp></pyvcp> fügen wir die Widgets für unser Panel ein.

note: type: Plain text
en: Look in the PyVCP Widgets Reference section of the manual for more detailed information on each widget <<sec:pyvcp:widgets,documentation des widgets>>.
de: Schauen Sie in den Abschnitt PyVCP Widgets Referenz des Handbuchs für detailliertere Informationen über jedes Widget <<sec:pyvcp:widgets,documentation des widgets>>.

note: type: Plain text
en: In your custompanel.xml file we will add the description of the widgets.
de: In der Datei custompanel.xml werden wir die Beschreibung der Widgets hinzufügen.

note: type: Plain text
en: After adding the above you now will have a PyVCP panel that looks like the following attached to the right side of AXIS. It looks nice but it does not do anything until you 'connect' the buttons to halui. If you get an error when you try and run scroll down to the bottom of the pop up window and usually the error is a spelling or syntax error and it will be there.
de: Nach dem Hinzufügen des oben genannten haben Sie nun ein PyVCP-Panel, das wie das folgende aussieht und an der rechten Seite von AXIS angebracht ist. Es sieht schön aus, aber es tut nichts, bis Sie die Tasten mit Halui "verbinden". Wenn Sie einen Fehler erhalten, wenn Sie versuchen, und führen Sie nach unten scrollen, um den unteren Rand des Pop-up-Fenster und in der Regel der Fehler ist ein Rechtschreib-oder Syntaxfehler und es wird dort sein.

note: type: Title ===
en: Make Connections
de: Verbindungen herstellen

note: type: Plain text
en: To make the connections needed open up your custom_postgui.hal file and add the following.
de: Um die erforderlichen Verbindungen herzustellen, öffnen Sie die Datei custom_postgui.hal, und fügen Sie Folgendes hinzu.

note: type: delimited block -
en: # connect the X PyVCP buttons
    net my-jogxminus halui.axis.x.minus <= pyvcp.x-minus
    net my-jogxplus halui.axis.x.plus <= pyvcp.x-plus
de: # Verbinden Sie die X-PyVCP-Tasten
    net my-jogxminus halui.axis.x.minus <= pyvcp.x-minus
    net my-jogxplus halui.axis.x.plus <= pyvcp.x-plus

note: type: delimited block -
en: # connect the Y PyVCP buttons
    net my-jogyminus halui.axis.y.minus <= pyvcp.y-minus
    net my-jogyplus halui.axis.y.plus <= pyvcp.y-plus
de: # Verbinden der Y-PyVCP-Tasten
    net my-jogyminus halui.axis.y.minus <= pyvcp.y-minus
    net my-jogyplus halui.axis.y.plus <= pyvcp.y-plus

note: type: delimited block -
en: # connect the Z PyVCP buttons
    net my-jogzminus halui.axis.z.minus <= pyvcp.z-minus
    net my-jogzplus halui.axis.z.plus <= pyvcp.z-plus
de: # Verbinden der Z-PyVCP-Tasten
    net my-jogzminus halui.axis.z.minus <= pyvcp.z-minus
    net my-jogzplus halui.axis.z.plus <= pyvcp.z-plus

note: type: delimited block -
en: # connect the PyVCP jog speed slider
    net my-jogspeed halui.axis.jog-speed <= pyvcp.jog-speed-f
de: # den PyVCP-Jog-Speed-Schieberegler anschließen
    net my-jogspeed halui.axis.jog-speed <= pyvcp.jog-speed-f

note: type: Plain text
en: After resetting the E-Stop and putting it into jog mode and moving the jog speed slider in the PyVCP panel to a value greater than zero the PyVCP jog buttons should work. You can not jog when running a G-code file or while paused or while the MDI tab is selected.
de: Nachdem Sie den Notaus (engl. E-Stop) zurückgesetzt und in den Jog-Modus versetzt haben und den Schieberegler für die Jpggeschwindigkeit im PyVCP-Bedienfeld auf einen Wert größer als Null gestellt haben, sollten die PyVCP-Tipptasten funktionieren. Sie können nicht joggen, wenn eine G-Code-Datei ausgeführt wird, wenn das Programm pausiert oder wenn die Registerkarte MDI ausgewählt ist.

note: type: Title ==
en: Port Tester
de: Port-Tester

note: type: Plain text
en: This example shows you how to make a simple parallel port tester using PyVCP and HAL.
de: Dieses Beispiel zeigt Ihnen, wie Sie mit PyVCP und HAL einen einfachen Parallelport-Tester erstellen können.

note: type: Plain text
en: First create the ptest.xml file with the following code to create the panel description.
de: Erstellen Sie zunächst die Datei ptest.xml mit dem folgenden Code, um die Beschreibung des Panels zu erstellen.

note: type: Plain text
en: This will create the following floating panel which contains a couple of in pins and a couple of out pins.
de: Dadurch wird das folgende schwebende Panel erstellt, das einige Eingangs- und Ausgangsanschlüsse enthält.

note: type: Plain text
en: To run the HAL commands that we need to get everything up and running we put the following in our ptest.hal file.
de: Um die HAL-Befehle auszuführen, die wir benötigen, um alles zum Laufen zu bringen, fügen wir Folgendes in unsere Datei ptest.hal ein.

note: type: Plain text
en: To run the HAL file we use the following command from a terminal window.
de: Um die HAL-Datei auszuführen, verwenden wir den folgenden Befehl in einem Terminalfenster.

note: type: Plain text
en: The following figure shows what a complete panel might look like.
de: Die folgende Abbildung zeigt, wie ein komplettes Panel aussehen könnte.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Port Tester Complete Image
de: Port Tester Gesamtbild

note: type: Plain text
en: To add the rest of the parallel port pins just modify the XML and HAL files.
de: Um die restlichen Pins des Parallelports hinzuzufügen, müssen Sie nur die XML- und HAL-Dateien ändern.

note: type: Plain text
en: To show the pins after running the HAL script use the following command at the halcmd prompt:
de: Um die Pins nach der Ausführung des HAL-Skripts anzuzeigen, verwenden Sie den folgenden Befehl an der halcmd-Eingabeaufforderung:

note: type: Plain text
en: This will show you what pins are IN and what pins are OUT as well as any connections.
de: Dies zeigt Ihnen, welche Pins IN und welche Pins OUT sind, sowie alle Verbindungen.

note: type: Title ==
en: GS2 RPM Meter
de: GS2-Drehzahlmesser

note: type: Plain text
en: The following example uses the Automation Direct GS2 VDF driver and displays the RPM and other info in a PyVCP panel. This example is based on the GS2 example in the Hardware Examples section this manual.
de: Das folgende Beispiel verwendet den Automation Direct GS2 VDF-Treiber und zeigt die U/min (engl. RPM) und andere Informationen in einem PyVCP-Panel an. Dieses Beispiel basiert auf dem GS2-Beispiel im Abschnitt Hardware-Beispiele dieses Handbuchs.

note: type: Title ===
en: The Panel
de: Das Panel

note: type: Plain text
en: To create the panel we add the following to the XML file.
de: Um das Panel zu erstellen, fügen wir der XML-Datei Folgendes hinzu.

note: type: Plain text
en: The above gives us a PyVCP panel that looks like the following.
de: Damit erhalten wir ein PyVCP-Panel, das wie folgt aussieht.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: GS2 Panel
de: GS2-Panel

note: type: Title ===
en: The Connections
de: Die Verbindungen

note: type: Plain text
en: To make it work we add the following code to the custom_postgui.hal file.
de: Damit das funktioniert, fügen wir den folgenden Code in die Datei custom_postgui.hal ein.

note: type: delimited block -
en: # display the rpm based on freq * rpm per hz
    loadrt mult2
    addf mult2.0 servo-thread
    setp mult2.0.in1 28.75
    net cypher_speed mult2.0.in0 <= spindle-vfd.frequency-out
    net speed_out pyvcp.spindle_rpm <= mult2.0.out
de: # Anzeige der Drehzahl auf der Grundlage von freq * RPM per Hz
    loadrt mult2
    addf mult2.0 servo-thread
    setp mult2.0.in1 28.75
    net cypher_speed mult2.0.in0 <= spindel-vfd.frequency-out
    net speed_out pyvcp.spindle_rpm <= mult2.0.out

note: type: Plain text
en: Some of the lines might need some explanations. The fwd led line uses the signal created in the custom.hal file whereas the rev led needs to use the spindle-rev bit. You can't link the spindle-fwd bit twice so you use the signal that it was linked to.
de: Einige der Zeilen bedürfen vielleicht einer Erläuterung. Die Zeile fwd led verwendet das in der Datei custom.hal erstellte Signal, während die Zeile rev led das Bit spindle-rev verwenden muss. Sie können das Bit spindle-fwd nicht zweimal verknüpfen, also verwenden Sie das Signal, mit dem es verknüpft wurde.

note: type: Title ==
en: Rapid to Home Button
de: Referenzfahrt im Eilgang Button

note: type: Plain text
en: This example creates a button on the PyVCP side panel when pressed will send all the axis back to the home position. This example assumes you don't have a PyVCP panel.
de: In diesem Beispiel wird eine Schaltfläche auf dem PyVCP-Seitenpanel erstellt, die bei Betätigung alle Achsen zurück in die Ausgangsposition schickt. Dieses Beispiel setzt voraus, dass Sie kein PyVCP-Panel haben.

note: type: Plain text
en: In your configuration directory create the XML file. In this example it's named 'rth.xml'. In the 'rth.xml' file add the following code to create the button.
de: Erstellen Sie in Ihrem Konfigurationsverzeichnis die XML-Datei. In diesem Beispiel heißt sie 'rth.xml'. Fügen Sie in der Datei "rth.xml" den folgenden Code ein, um die Schaltfläche zu erstellen.

note: type: Plain text
en: Open your INI file with a text editor and in the [DISPLAY] section add the following line. This is what loads the PyVCP panel.
de: Öffnen Sie Ihre INI-Datei mit einem Texteditor und fügen Sie im Abschnitt [DISPLAY] die folgende Zeile ein. Damit wird das PyVCP-Panel geladen.

note: type: Plain text
en: If you don't have a [HALUI] section in the INI file create it and add the following MDI command.
de: Wenn Sie keinen [HALUI]-Abschnitt in der INI-Datei haben, erstellen Sie ihn und fügen Sie den folgenden MDI-Befehl hinzu.

note: type: delimited block =
en: Information about <<gcode:g53,G53>> and <<gcode:g0,G0>> G-codes.
de: Informationen zu <<gcode:g53,G53>> und <<gcode:g0,G0>> G-Codes.

note: type: Plain text
en: In the [HAL] section if you don't have a post gui file add the following and create a file called 'postgui.hal'.
de: Wenn Sie keine Post-GUI-Datei haben, fügen Sie im Abschnitt [HAL] Folgendes hinzu und erstellen Sie eine Datei namens 'postgui.hal'.

note: type: Plain text
en: In the 'postgui.hal' file add the following code to link the PyVCP button to the MDI command.
de: Fügen Sie in der Datei 'postgui.hal' den folgenden Code hinzu, um die PyVCP-Schaltfläche mit dem MDI-Befehl zu verknüpfen.

note: type: delimited block =
en: Information about the <<sub:hal-net, net>> command
de: Informationen über den Befehl <<sub:hal-net, net>>

note: type: Plain text
en: QtDragon and QtDragon_hd are built with the QtVCP framework.  It is the creative vision of forum personality Persei8.  Much of it is based on the excellent work of others in the LinuxCNC community.  LinuxCNC's version is adapted from Persei8's Github versions.  It is primarily meant for 3/4 axes machines such as mills or routers.  It works well with a touchscreen and/or mouse.  QtDragon supports multiple ways to touch off tools and probing work pieces.  You can use LinuxCNC's external offsets capability to automatically raise the spindle during a pause.  If you the VersaProbe option and remap code you can add auto tool length probing at tool changes.
de: QtDragon und QtDragon_hd werden mit dem QtVCP-Framework entwickelt.  Es ist die kreative Vision der Forum Persönlichkeit Persei8.  Vieles davon basiert auf der hervorragenden Arbeit anderer in der LinuxCNC-Gemeinschaft.  LinuxCNC's Version ist von Persei8's Github Versionen angepasst.  Es ist in erster Linie für 3/4-Achsen-Maschinen wie Fräsmaschinen oder Router gedacht.  Es funktioniert gut mit einem Touchscreen und/oder einer Maus.  QtDragon unterstützt mehrere Möglichkeiten zum Antasten von Werkzeugen und zum Antasten von Werkstücken.  Sie können LinuxCNC's externe Offsets Fähigkeit verwenden, um automatisch die Spindel während einer Pause zu erhöhen.  Wenn Sie die VersaProbe-Option und Remap-Code können Sie automatische Werkzeuglängen-Abtastung beim Werkzeugwechsel hinzuzufügen.

note: type: Plain text
en: QtDragon and QtVCP are relatively new programs added into LinuxCNC.  Bugs and oddities are possible. Please test carefully when using a dangerous machine. Please forward reports to the forum or maillist.
de: QtDragon und QtVCP sind relativ neue Programme in LinuxCNC hinzugefügt. Bugs und Unregelmäßigkeiten sind möglich. Bitte testen Sie sorgfältig, wenn Sie eine gefährliche Maschine benutzen. Bitte senden Sie Berichte an das Forum oder die Mailing Liste.

note: type: Block title
en: QtDragon - 3 or 4 Axes Sample (1440x860) in silver theme
de: QtDragon - 3 oder 4 Achsen Muster (1440x860) im Silber-look (eigentlich engl. theme)

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtDragon Router
de: QtDragon-Router

note: type: Plain text
en: QtDragon is resizable from a resolution of 1280x768 to 1680x1200.  It will work in window mode on any monitor with higher resolution but not on monitors with lower resolution.
de: QtDragon ist von einer Auflösung von 1280x768 bis 1680x1200 größenveränderbar.  Es funktioniert im Fenstermodus auf jedem Monitor mit höherer Auflösung, aber nicht auf Monitoren mit niedrigerer Auflösung.

note: type: Block title
en: QtDragon_hd - 3 or 4 Axis Sample for larger monitors (1920x1056) in dark theme
de: QtDragon_hd - 3 oder 4 Achsen-Beispiel für größere Monitore (1920x1056) im dunklen Thema

note: type: Plain text
en: QtDragon_hd is a similar design as QtDragon but modified to utilize the extra space of modern larger monitors.  There are some small differences in layout and utility.
de: QtDragon_hd hat ein ähnliches Design wie QtDragon, wurde aber modifiziert, um den zusätzlichen Platz auf modernen, größeren Monitoren zu nutzen.  Es gibt einige kleine Unterschiede im Layout und im Nutzen.

note: type: Plain text
en: QtDragon_hd has a resolution of 1920x1056 and is not realizable.  It will work in window mode on any monitor with higher resolution but not on monitors with lower resolution.
de: QtDragon_hd hat eine Auflösung von 1920x1056 und ist nicht größenveränderbar. Es funktioniert im Fenstermodus auf jedem Monitor mit höherer Auflösung, aber nicht auf Monitoren mit niedrigerer Auflösung.

note: type: Plain text
en: If your configuration is not currently set up to use QtDragon, you can change it by editing the INI file [DISPLAY] section.  For an exhaustive list of options, see the <<sub:ini:sec:display,display section>> of INI file documentation.
de: Wenn Ihre Konfiguration derzeit nicht für die Verwendung von QtDragon eingerichtet ist, können Sie sie ändern, indem Sie den Abschnitt [DISPLAY] der INI-Datei bearbeiten.  Eine ausführliche Liste der Optionen finden Sie im Abschnitt <<sub:ini:sec:display,Display>> der INI-Datei-Dokumentation.

note: type: Title ===
en: Display
de: Anzeige (engl. display)

note: type: Plain text
en: In the section '[DISPLAY]' change the 'DISPLAY' line to read:
de: Im Abschnitt '[DISPLAY]' ändern Sie die Zeile 'DISPLAY' wie folgt:

note: type: Plain text
en: `qtdragon` for a small version
de: `qtdragon` für eine kleine Version

note: type: Plain text
en: `qtdradon_hd` for the large version.
de: `qtdradon_hd` für die große Version.

note: type: Plain text
en: You can add `-d` or `-v` for debug output to the terminal.
de: Sie können `-c-` oder `-v` für die Debug-Ausgabe im Terminal hinzufügen.

note: type: Title ===
en: Preferences
de: Einstellungen

note: type: Plain text
en: To keep track of preferences, QtDragon looks for a preference text file.  add the following entry under the '[DISPLAY]' heading.  This example will save the file in the config folder of the launch screen.  (other options are possible see the QtVCP's screenoption widget docs.)
de: Um den Überblick über die Einstellungen zu behalten, sucht QtDragon nach einer Einstellungs-Textdatei. Fügen Sie den folgenden Eintrag unter der Überschrift '[DISPLAY]' hinzu.  Dadurch wird die Datei im config-Ordner des Startbildschirms gespeichert (andere Optionen sind möglich, siehe die QtVCP's screenoption Widget Dokumentation.)

note: type: Title ===
en: Logging
de: Protokollierung (engl. logging)

note: type: Plain text
en: You can specify where to save history/logs.  In the section `[DISPLAY]` add:
de: Sie können angeben, wo der Verlauf/die Protokolle gespeichert werden sollen.  Im Abschnitt `[DISPLAY]` hinzufügen:

note: type: Title ===
en: Override controls
de: Override-Kontrollen

note: type: Plain text
en: set override controls (1.0 = 100 percent):
de: Override-Steuerungen einstellen (1,0 = 100 Prozent):

note: type: Title ===
en: Spindle controls
de: Spindelsteuerungen

note: type: Plain text
en: Spindle control settings (in rpm and watts):
de: Spindelsteuerungseinstellungen (in U/min und Watt):

note: type: Title ===
en: Jogging increments
de: Jogging-Inkremente

note: type: Plain text
en: Set selectable jogging increments
de: Wählbare Jogging-Inkremente festlegen

note: type: Title ===
en: Jog speed
de: Jog-Geschwindigkeit

note: type: Plain text
en: Set jog speed controls (in units per minute)
de: Festlegen der Jog-Geschwindigkeitssteuerung (in Einheiten pro Minute)

note: type: Title ===
en: User message dialog system
de: Dialogsystem für Benutzermeldungen

note: type: delimited block -
en: [DISPLAY]
    MESSAGE_BOLDTEXT = This is the short text
    MESSAGE_TEXT = This is the longer text of the both type test. It can be longer than the status bar text
    MESSAGE_DETAILS = BOTH DETAILS
    MESSAGE_TYPE = okdialog
    MESSAGE_PINNAME = oktest
de: [DISPLAY]
    MESSAGE_BOLDTEXT = Dies ist der kurze Text
    MESSAGE_TEXT = Dies ist der längere Text des Tests der beiden Typen. Er kann länger sein als der Text der Statusleiste
    MESSAGE_DETAILS = BOTH DETAILS
    MESSAGE_TYPE = okdialog
    MESSAGE_PINNAME = oktest

note: type: Title ===
en: Embed Custom VCP Panels
de: Benutzerdefinierte VCP-Panels einbetten

note: type: Plain text
en: This sample adds a builtin panel; a graphical animated machine using the vismach library.
de: Dieses Beispiel fügt ein eingebautes Panel hinzu; eine grafisch animierte Maschine, die Vismach-Bibliothek nutzend.

note: type: delimited block -
en: [DISPLAY]
    EMBED_TAB_NAME = Vismach demo
    EMBED_TAB_COMMAND = qtvcp vismach_mill_xyz
    EMBED_TAB_LOCATION = tabWidget_utilities
de: [DISPLAY]
    EMBED_TAB_NAME = Vismach Demo
    EMBED_TAB_COMMAND = qtvcp vismach_mill_xyz
    EMBED_TAB_LOCATION = tabWidget_utilities

note: type: Title ===
en: Program Extensions/Filters
de: Programmerweiterungen/Filter

note: type: Plain text
en: You can control what programs are displayed in the filemanager window with program extensions: Create a line with the . endings you wish to use separated by commas, then a space and the description.  You can add multiple lines for different selections in the combo box.
de: Mit Programmerweiterungen können Sie steuern, welche Programme im Dateimanager-Fenster angezeigt werden: Erstellen Sie eine Zeile mit den gewünschten Endungen, getrennt durch Kommata, dann ein Leerzeichen und die Beschreibung.  Sie können mehrere Zeilen für verschiedene Auswahlen im Kombinationsfeld hinzufügen.

note: type: Plain text
en: QtDragon has the ability to send loaded files through a 'filter program'.  This filter can do any desired task: Something as simple as making sure the file ends with 'M2', or something as complicated as generating G-Code from an image.  See <<cha:filter,Filter Programs>> for more information.
de: QtDragon hat die Möglichkeit, geladene Dateien durch ein "Filterprogramm" zu schicken.  Dieser Filter kann jede gewünschte Aufgabe erfüllen: Etwas so Einfaches wie sicherzustellen, dass die Datei mit "M2" endet, oder etwas so Kompliziertes wie die Erzeugung von G-Code aus einem Bild.

note: type: Plain text
en: The '[FILTER]' section of the INI file controls how filters work.  First, for each type of file, write a 'PROGRAM_EXTENSION' line.  Then, specify the program to execute for each type of file.  This program is given the name of the input file as its first argument, and must write rs274ngc code to standard output. This output is what will be displayed in the text area, previewed in the display area, and executed by LinuxCNC when 'Run'. The following lines add support for the `image-to-gcode` converter included with LinuxCNC and running Python based filter programs:
de: Der Abschnitt '[FILTER]' der INI-Datei steuert, wie die Filter funktionieren.  Schreiben Sie zunächst für jeden Dateityp eine Zeile "PROGRAM_EXTENSION".  Geben Sie dann das Programm an, das für jeden Dateityp ausgeführt werden soll.  Dieses Programm erhält den Namen der Eingabedatei als erstes Argument und muss rs274ngc-Code in die Standardausgabe schreiben. Diese Ausgabe ist das, was im Textbereich angezeigt wird, in der Vorschau im Anzeigebereich, und von LinuxCNC ausgeführt werden, wenn 'Run'. Die folgenden Zeilen fügen Sie Unterstützung für den `image-to-gcode` (engl. für Bild zu G-Code) -Konverter mit LinuxCNC enthalten und die Ausführung von Python-basierte Filter-Programme:

note: type: Title ===
en: Probe/Touchplate/Laser Settings
de: Sonden-/Touchplate-/Lasereinstellungen

note: type: Plain text
en: QtDragon has custom INI entries for required setup.
de: QtDragon hat benutzerdefinierte INI-Einträge für die erforderlichen Einstellungen.

note: type: Plain text
en: QtDragon has two optional probing tab screens available.  Comment/uncomment which ever you prefer.
de: QtDragon hat zwei optionale Sondierungs-Tab-Screens zur Verfügung.  Kommentieren/unkommentieren Sie, was immer Sie bevorzugen.

note: type: Plain text
en: QtDragon has up to ten convenience macro buttons.  In the sample configurations they are labelled for moving between current user system origin (zero point) and Machine system origin.  User origin is the first MDI command in the INI list, machine origin is the second.  These could also call OWord routines if desired.  This example shows how to move Z axis up first. The commands are separated by the ';' The label is set after the comma. The symbols '\n' adds a line break.
de: QtDragon hat bis zu zehn praktische Makro-Buttons.  In den Beispielkonfigurationen sind sie so beschriftet, dass sie zwischen dem Ursprung des aktuellen Benutzersystems (Nullpunkt) und dem Ursprung des Maschinensystems wechseln.  Der Benutzerursprung ist der erste MDI-Befehl in der INI-Liste, der Maschinenursprung der zweite.  Diese können auch OWord-Routinen aufrufen, falls gewünscht.  Dieses Beispiel zeigt, wie man die Z-Achse zuerst nach oben bewegt. Die Befehle sind durch ein ';' getrennt. Die Beschriftung wird nach dem Komma gesetzt. Die Symbole '\n' fügen einen Zeilenumbruch hinzu.

note: type: Title ===
en: Builtin Sample Configurations
de: Integrierte Beispielkonfigurationen

note: type: Plain text
en: The sample configurations 'sim/qtvcp_screens/qtdragon/qtdragon_xyza.ini' is already configured to use QtDragon as its front-end.
    There are several others, to demonstrate different machine configurations.
de: Die Beispielkonfiguration "sim/qtvcp_screens/qtdragon/qtdragon_xyza.ini" ist bereits so konfiguriert, dass sie QtDragon als Front-End verwendet.
    Es gibt mehrere andere, um verschiedene Maschinenkonfigurationen zu demonstrieren.

note: type: Title ==
en: Key Bindings
de: Tastenbelegungen

note: type: Plain text
en: QtDragon is not intended to primarily use a keyboard for machine control.  It lacks many keyboard short cuts that for instance AXIS has - but you can use a mouse.  There are several key presses that will control the machine for convenience.
de: QtDragon ist nicht dafür gedacht, primär eine Tastatur zur Maschinensteuerung zu verwenden.  Es fehlen viele Tastenkombinationen, die zum Beispiel AXIS hat - aber Sie können eine Maus verwenden.  Es gibt mehrere Tastendrücke für eine bequeme Bedienung der Maschine.

note: type: delimited block -
en: F1 - Estop on/off
    F2 - Machine on/off
    F12 - Style Editor
    Home - Home All Joint of the Machine
    Escape - Abort Movement
    Pause - Pause Machine Movement
de: F1 - Estop ein/aus
    F2 - Maschine ein/aus
    F12 - Stil-Editor
    Home - Start aller Verbindungen der Maschine
    Escape - Abbruch der Bewegung
    Pause - Maschinenbewegung anhalten

note: type: Plain text
en: Buttons that are checkable will change their text colour when checked.
    This is controlled by the stylesheet/theme +
de: Schaltflächen, die ankreuzbar sind, ändern ihre Textfarbe, wenn sie angekreuzt werden.
    Dies wird durch das Stylesheet/Thema gesteuert +

note: type: Title ==
en: Virtual Keyboard
de: Virtuelle Tastatur

note: type: Plain text
en: QtDragon includes a virtual keyboard for use with touchscreens.
    To enable the keyboard, check the Use Virtual Keyboard checkbox in the Settings page.
    Clicking on any input field, such as probe parameters or tool table entries, will show the keyboard.
    To hide the keyboard, do one of the following:
de: QtDragon enthält eine virtuelle Tastatur für die Verwendung mit Touchscreens.
    Um die Tastatur zu aktivieren, markieren Sie das Kontrollkästchen Virtuelle Tastatur verwenden auf der Seite Einstellungen.
    Wenn Sie auf ein beliebiges Eingabefeld klicken, wie z.B. Sondenparameter oder Tooltabelleneinträge, wird die Tastatur angezeigt.
    Um die Tastatur auszublenden, führen Sie einen der folgenden Schritte aus:

note: type: Plain text
en: click the MAIN page button
de: Klicken Sie auf den MAIN page Button

note: type: Plain text
en: The curently selected page button.
de: Die Schaltfläche für die aktuell ausgewählte Seite.

note: type: Plain text
en: go into AUTO mode
de: in den AUTO-Modus wechseln

note: type: Plain text
en: It should be noted that keyboard jogging is disabled when using the virtual keyboard.
de: Es ist zu beachten, dass bei der Verwendung der virtuellen Tastatur das Jogging der Tastatur deaktiviert ist.

note: type: Plain text
en: These pins are specific to the QtDragon screen, There are of course are many more HAL pins that must be connected for LinuxCNC to function.
de: Diese Pins sind spezifisch für den QtDragon-Bildschirm, Es gibt natürlich viele weitere HAL-Pins, die für LinuxCNC angeschlossen werden müssen, um zu funktionieren.

note: type: Plain text
en: If you need a manual tool change prompt, add these lines in your postgui file.
de: Wenn Sie eine manuelle Aufforderung zum Werkzeugwechsel benötigen, fügen Sie diese Zeilen in Ihre postgui-Datei ein.

note: type: Plain text
en: This input pin should be connected to indicate probe state:
de: Dieser Eingangspin sollte verbunden werden, um den Sondenstatus anzuzeigen:

note: type: Plain text
en: These pins are inputs related to spindle VFD indicating: The volt and amp pins are used to calculate spindle power.  (You must also set the MAX_SPINDLE_POWER in the INI)
de: Diese Pins sind Eingänge für die Spindel-VFD-Anzeige: Die Volt- und Ampere-Pins werden zur Berechnung der Spindelleistung verwendet.  (Sie müssen auch die MAX_SPINDLE_POWER in der INI einstellen)

note: type: Plain text
en: This bit pin is an output to the spindle control to pause it: You would connect it to spindle.0.inhibit.
de: Dieser Bit-Pin ist ein Ausgang für die Spindelsteuerung, um sie anzuhalten: Sie verbinden ihn mit spindle.0.inhibit.

note: type: Plain text
en: This bit output pin can be connected to turn on a laser:
de: Dieser Bit-Ausgangspin kann angeschlossen werden, um einen Laser einzuschalten:

note: type: Plain text
en: This float output pin indicates the camera rotation in degrees:
de: Dieser Float-Ausgangspin zeigt die Kameradrehung in Grad an:

note: type: Plain text
en: These bit/s32 pins are related to external offsets if they are used:
de: Diese bit/s32-Pins beziehen sich auf externe Offsets, wenn sie verwendet werden:

note: type: delimited block -
en: qtdragon.eoffset-clear
    qtdragon.eoffset-count
    qtdragon.eoffset-enable
    qtdragon.eoffset-value
de: lqtdragon.eoffset-clear
    qtdragon.eoffset-count
    qtdragon.eoffset-enable
    qtdragon.eoffset-value

note: type: Plain text
en: These float output pins reflect the current slider jograte (in machine units):
de: Diese float-Ausgangspins spiegeln die aktuelle Jograte des Schiebers (in Maschineneinheiten) wider:

note: type: Plain text
en: These float output pins reflect the current slider override rates:
de: Diese float-Ausgangsstifte geben die aktuellen Schieberegler-Übersteuerungsraten wieder:

note: type: Plain text
en: These pins are available when setting the Versa Probe INI option.  They can be used for auto-tool-length-probe at tool change - with added remap code.
de: Diese Pins sind verfügbar, wenn Sie die Option Versa Probe INI einstellen.  Sie können für auto-tool-length-probe bei Werkzeugwechsel verwendet werden - mit hinzugefügtem Remap-Code.

note: type: Title ==
en: HAL files
de: HAL-Dateien

note: type: Plain text
en: The HAL files supplied are for simulation only. A real machine needs its own custom HAL files. The QtDragon screen works with 3 or 4 axes with one joint per axis or 3 or 4 axes in a gantry configuration (2 joints on 1 axis).
de: Die mitgelieferten HAL-Dateien sind nur für die Simulation gedacht. Eine reale Maschine benötigt ihre eigenen HAL-Dateien. Der QtDragon-Bildschirm funktioniert mit 3 oder 4 Achsen mit einem Gelenk pro Achse oder 3 oder 4 Achsen in einer Gantry-Konfiguration (2 Gelenke auf 1 Achse).

note: type: Title ==
en: Manual Tool Changes
de: Manueller Werkzeugwechsel

note: type: Plain text
en: If your machine requires manual tool changes, QtDragon can pop a message box to direct you.  You must connect the proper HAL pin in the postgui HAL file.  For example:
de: Wenn Ihre Maschine einen manuellen Werkzeugwechsel erfordert, kann QtDragon ein Meldungsfenster öffnen, um Sie anzuweisen.  Sie müssen den richtigen HAL-Pin in der postgui HAL-Datei anschließen.  Zum Beispiel:

note: type: Plain text
en: The screen is intended to interface to a VFD, but will still work without it.  There are a number of VFD drivers included in the LinuxCNC distribution. It is up to the end user to supply the appropriate driver and HAL file connections according to his own machine setup.
de: Der Bildschirm ist für den Anschluss an einen VFD gedacht, funktioniert aber auch ohne ihn.  Es gibt eine Reihe von VFD-Treiber in der LinuxCNC Distribution enthalten. Es ist bis zu dem Endbenutzer, um die entsprechenden Treiber und HAL-Datei-Verbindungen nach seiner eigenen Maschine Setup liefern.

note: type: Title ==
en: Auto Raise Z Axis on Spindle Pause
de: Automatisches Anheben der Z-Achse bei Pausieren der Spindel

note: type: Plain text
en: QtDragon can be set up to automatically raise and lower the Z axis when the spindle is paused.  When a program is paused, then you press the 'Spindle Pause' button to stop the spindle and raise it in Z.  Press the button again to start spindle and lower it, then unpause program.  The amount to raise and lower is set in the 'Settings' tab under the heading 'Z Ext Offset'.  This requires additions to the INI and the qtdragon_post_gui file.
de: QtDragon kann so eingestellt werden, dass die Z-Achse automatisch angehoben und abgesenkt wird, wenn die Spindel angehalten wird.  Wenn ein Programm angehalten wird, drücken Sie die Schaltfläche "Spindelpause", um die Spindel anzuhalten und in Z anzuheben. Drücken Sie die Schaltfläche erneut, um die Spindel zu starten und abzusenken, und beenden Sie dann das Programm.  Der Betrag zum Anheben und Absenken wird auf der Registerkarte "Einstellungen" unter der Überschrift "Z Ext Offset" festgelegt.  Dazu sind Ergänzungen in der INI und der Datei qtdragon_post_gui erforderlich.

note: type: Plain text
en: In the INI, under the AXIS_Z heading.
de: In der INI, unter der Überschrift AXIS_Z.

note: type: delimited block -
en: [AXIS_Z]
    OFFSET_AV_RATIO  = 0.2
de: [AXIS_Z]
    OFFSET_AV_RATIO = 0.2

note: type: Plain text
en: In the qtdragon_postgui.hal file add:
de: In der Datei qtdragon_postgui.hal hinzufügen:

note: type: delimited block -
en: # Set up Z axis external offsets
    net eoffset_clear    qtdragon.eoffset-clear => axis.z.eoffset-clear
    net eoffset_count    qtdragon.eoffset-count => axis.z.eoffset-counts
    net eoffset          qtdragon.eoffset-value <= axis.z.eoffset
de: # Externe Offsets der Z-Achse einrichten
    net eoffset_clear    qtdragon.eoffset-clear => axis.z.eoffset-clear
    net eoffset_count    qtdragon.eoffset-count => axis.z.eoffset-counts
    net eoffset          qtdragon.eoffset-value <= axis.z.eoffset

note: type: delimited block -
en: # uncomment for dragon_hd
    #net limited          qtdragon.led-limits-tripped <= motion.eoffset-limited
de: # uncomment für dragon_hd
    #net limited          qtdragon.led-limits-tripped <= motion.eoffset-limited

note: type: Title ==
en: Z level compensation
de: Z-Level-Kompensation

note: type: Plain text
en: QtDragon_hd can be set up to probe and compensate for Z level height changes by utilizing the external program 'G-code Ripper'.
de: QtDragon_hd kann mit dem externen Programm 'G-code Ripper' so eingestellt werden, dass es Höhenänderungen der Z-Ebene prüft und ausgleicht.

note: type: Plain text
en: This is only available in the QtDragon_hd version.
de: Diese Funktion ist nur in der Version QtDragon_hd verfügbar.

note: type: Plain text
en: Z level compensation is a bed levelling/distortion correction function typically used in 3D printing or engraving. It uses a HAL user space component which utilizes the external offsets feature of LinuxCNC. The component has a HAL pin that specifies an interpolation type, which must be one of cubic, linear or nearest (0,1,2 respectively). If none is specified or if an invalid number is specified, the default is assumed to be cubic.
de: Z-Ebene Ausgleich ist ein Bett Nivellierung / Verzerrung Korrekturfunktion typischerweise in 3D-Druck oder Gravur verwendet. Es verwendet eine HAL Userspace-Komponente, welche die externen Offsets Funktion von LinuxCNC verwendet. Die Komponente hat einen HAL-Pin, der einen Interpolationstyp spezifiziert, der entweder kubisch, linear oder am nächsten (0,1,2) sein muss. Wenn keine angegeben ist oder wenn eine ungültige Zahl angegeben ist, wird die Standardeinstellung kubisch sein.

note: type: Plain text
en: When Z LEVEL COMP is enabled, the compensation component reads a probe data file, which must be called 'probe_points.txt'. The file can be modified or updated at any time while compensation is disabled. When next enabled, the file will be reread and the compensation map is recalculated. This file is expected to be in the configuration directory.
de: Wenn Z LEVEL COMP aktiviert ist, liest die Kompensationskomponente eine Sondendaten-Datei, die 'probe_points.txt' heißen muss. Die Datei kann jederzeit geändert oder aktualisiert werden, solange die Kompensation deaktiviert ist. Bei der nächsten Aktivierung wird die Datei erneut gelesen und die Kompensationskarte wird neu berechnet. Diese Datei sollte sich im Konfigurationsverzeichnis befinden.

note: type: Plain text
en: The probe data file is generated by a probing program which itself is generated by an external python program called gcode_ripper, which can be launched from the file manager tab using the 'G-code Ripper' button.
de: Die Sondierungsdatei wird von einem Sondierungsprogramm erzeugt, das seinerseits von einem externen Python-Programm namens gcode_ripper erzeugt wird, das auf der Registerkarte "Dateimanager" über die Schaltfläche "G-code Ripper" aufgerufen werden kann.

note: type: Title ===
en: Using G-code Ripper for Z level Compensation
de: Verwendung von G-code Ripper für die Z-Ebenen-Kompensation

note: type: Block title
en: QtDragon_hd showing G-code Ripper
de: QtDragon_hd zeigt G-code Ripper

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtDragon G-code Ripper
de: QtDragon G-Code-Ripper

note: type: Plain text
en: G-code Ripper offers many functions that we will not go in to here.  This is only available in the QtDragon_hd version.
de: G-code Ripper bietet viele Funktionen, auf die wir hier nicht näher eingehen werden.  Diese sind nur in der QtDragon_hd Version verfügbar.

note: type: Plain text
en: In Qtdragon_hd switch to the file tab and press the load G-code Ripper button.
de: Wechseln Sie in Qtdragon_hd auf die Registerkarte Datei und drücken Sie die Schaltfläche G-code Ripper laden.

note: type: Plain text
en: set origin to match the origin of the gcode file to be probed
de: Ursprung so einstellen, dass er mit dem Ursprung der zu prüfenden G-Code-Datei übereinstimmt

note: type: Plain text
en: under G-Code Operations, check Auto Probe
de: Aktivieren Sie unter G-Code-Operationen die Option Auto Probe

note: type: Plain text
en: File -> Open G-Code File (The file you will run after compensation)
de: Datei -> G-Code Datei öffnen (Die Datei, die Sie nach der Kompensation ausführen)

note: type: Plain text
en: if necessary, make adjustments and press Recalculate
de: Falls erforderlich, nehmen Sie Anpassungen vor und drücken Sie Neu berechnen

note: type: Plain text
en: press Save G-Code File - Probe Only
de: Drücken Sie G-Code-Datei speichern - nur Sonde

note: type: Plain text
en: save the generated file to the nc_files folder
de: Speichern Sie die erzeugte Datei im Ordner nc_files

note: type: Plain text
en: exit gcode_ripper
de: beenden Sie gcode_ripper

note: type: Plain text
en: There should now be a file in the nc_files folder called {something}-probe-only.ngc. Set the file filter to G-Code Files, navigate to the nc_files directory and load this file.
de: Im Ordner nc_files sollte sich nun eine Datei mit dem Namen {something}-probe-only.ngc befinden. Setzen Sie den Dateifilter auf G-Code-Dateien, navigieren Sie zum Verzeichnis nc_files und laden Sie diese Datei.

note: type: Plain text
en: In Qtdragon_hd press the 'Enable Z Comp' button to enable compensation.  Look at the status line for indication of success or failure.  Active compensation will be displayed beside the label: 'Z Level Comp' While jogging that display should change based on the compensation component.
de: Drücken Sie in Qtdragon_hd die Schaltfläche "Enable Z Comp", um den Ausgleich zu aktivieren.  Schauen Sie in der Statuszeile nach, ob die Kompensation erfolgreich war oder nicht.  Die aktive Kompensation wird neben der Beschriftung "Z Level Comp" angezeigt. Während des Joggens sollte sich diese Anzeige je nach Kompensationskomponente ändern.

note: type: Plain text
en: If you use auto raise Z to lift the spindle on pause, you must combine the two with a HAL component and feed that to LinuxCNC's motion component.
de: Wenn Sie die automatische Anhebung Z verwenden, um die Spindel in der Pause anzuheben, müssen Sie die beiden mit einer HAL-Komponente kombinieren und diese an die Bewegungs (motion)-Komponente von LinuxCNC weiterleiten.

note: type: Plain text
en: sample postgui HAL file for combined spindle raise and Z Level compensation
de: Beispiel einer postgui HAL-Datei für kombinierte Spindelanhebung und Z-Niveau-Kompensation

note: type: delimited block -
en: # load components
    ########################################################################
de: # Komponenten laden
    ########################################################################

note: type: delimited block -
en: # connect signals to LinuxCNC's motion component
    ########################################################################
de: # Signale mit der Bewegungskomponente von LinuxCNC verbinden
    ########################################################################

note: type: delimited block -
en: # external offsets for spindle pause function
    ########################################################################
    net eoffset-spindle-count   <= qtdragon.eoffset-spindle-count
de: # Externe Offsets für die Spindelpausenfunktion
    ########################################################################
    net eoffset-spindle-count <= qtdragon.eoffset-spindle-count

note: type: delimited block -
en: # Z level compensation
    ########################################################################
    net xpos-cmd                z_level_compensation.x-pos      <= axis.x.pos-cmd
    net ypos-cmd                z_level_compensation.y-pos      <= axis.y.pos-cmd
    net zpos-cmd                z_level_compensation.z-pos      <= axis.z.pos-cmd
    net z_compensation_on       z_level_compensation.enable-in  <= qtdragon.comp-on
    net eoffset-zlevel-count    z_level_compensation.counts     => qtdragon.eoffset-zlevel-count
de: # Z level Kompensation
    ########################################################################
    net xpos-cmd                z_level_compensation.x-pos      <= axis.x.pos-cmd
    net ypos-cmd                z_level_compensation.y-pos      <= axis.y.pos-cmd
    net zpos-cmd                z_level_compensation.z-pos      <= axis.z.pos-cmd
    net z_compensation_on       z_level_compensation.enable-in  <= qtdragon.comp-on
    net eoffset-zlevel-count    z_level_compensation.counts     => qtdragon.eoffset-zlevel-count

note: type: Plain text
en: The probe screen has been through basic testing but there could still be some minor bugs.  When running probing routines, use extreme caution until you are familiar with how everything works.  Probe routines run without blocking the main GUI. This gives the operator the opportunity to watch the DROs and stop the routine at any time.
de: Der Sondenbildschirm wurde einem grundlegenden Test unterzogen, könnte aber noch einige kleinere Fehler aufweisen.  Gehen Sie bei der Ausführung von Prüfroutinen äußerst vorsichtig vor, bis Sie mit der Funktionsweise vertraut sind.  Die Prüfroutinen laufen, ohne die Haupt-GUI zu blockieren. Dies gibt dem Bediener die Möglichkeit, die DROs zu beobachten und die Routine jederzeit zu stoppen.

note: type: Plain text
en: Probing is very unforgiving to mistakes; be sure to check settings before using.
de: Die Sondierung ist sehr unempfindlich gegenüber Fehlern; überprüfen Sie die Einstellungen vor der Verwendung.

note: type: Block title
en: QtDragon - Versa Probe Option
de: QtDragon - Versa-Probe-Option

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtDragon Probe
de: QtDragon Sonde

note: type: Plain text
en: QtDragon has 2 methods for setting Z0. The first is a touchplate, where a metal plate of known thickness is placed on top of the workpiece and then the tool is lowered until it touches the plate, triggering the probe signal. Z0 is set to probe height - plate thickness.
de: QtDragon verfügt über 2 Methoden zur Einstellung von Z0. Die erste ist eine Tastplatte, bei der eine Metallplatte mit bekannter Dicke auf das Werkstück gelegt wird und dann das Werkzeug abgesenkt wird, bis es die Platte berührt, wodurch das Messtastersignal ausgelöst wird. Z0 wird auf Tasthöhe - Plattendicke eingestellt.

note: type: Plain text
en: The second method uses a tool setter in a fixed position and a known height above the table where the probe signal will be triggered. In order to set Z0 to the top of the workpiece, it has to know how far above the table the probe trigger point is (tool setter height) and how far above the table the top of the workpiece is. This operation has to be done every time the tool is changed as the tool length is not saved.
de: Bei der zweiten Methode wird ein Werkzeugeinstellgerät in einer festen Position und einer bekannten Höhe über dem Tisch verwendet, wo das Messtastersignal ausgelöst wird. Um Z0 auf die Oberseite des Werkstücks einzustellen, muss bekannt sein, wie weit über dem Tisch der Auslösepunkt des Messtasters liegt (Höhe der Werkzeugeinrichtung) und wie weit über dem Tisch die Oberseite des Werkstücks liegt. Dieser Vorgang muss bei jedem Werkzeugwechsel durchgeführt werden, da die Werkzeuglänge nicht gespeichert wird.

note: type: Plain text
en: For touching off with a touch probe, whether you use the touchplate operation with thickness set to 0 or use a probing routine, the height from table to top of workpiece parameter is not taken into account and can be ignored. It is only for the tool setter.
de: Beim Antasten mit einem Tastsystem wird der Parameter Höhe vom Tisch bis zur Oberkante des Werkstücks nicht berücksichtigt und kann ignoriert werden, unabhängig davon, ob Sie den Tastplattenbetrieb mit einer auf 0 eingestellten Dicke oder eine Antastroutine verwenden. Er gilt nur für den Werkzeugeinrichter.

note: type: Block title
en: QtDragon - Basic Probe Option
de: QtDragon - Grundlegende Sondenoption

note: type: Title ==
en: Touch plate
de: Touch-Platte

note: type: Block title
en: QtDragon - Touch Plate
de: QtDragon Touch-Fläche (engl. touch plate)

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtDragon Touch Plate
de: QtDragon Touch-Platte

note: type: Plain text
en: You can use a conductive touch plate or equivalent to auto touch off (zero the user coordinate) for the Z position of a tool.  There must be a tool loaded prior to probing.  In the tool tab or settings tab, set the touch plate height, search and probe velocity and Max probing distance.
de: Sie können eine leitfähige Tastplatte oder etwas Gleichwertiges verwenden, um die Z-Position eines Werkzeugs automatisch anzutasten (die Benutzerkoordinate auf Null zu setzen).  Vor dem Antasten muss ein Werkzeug geladen sein.  Legen Sie auf der Registerkarte "Werkzeug" oder "Einstellungen" die Höhe der Tastplatte, die Such- und Antastgeschwindigkeit und den maximalen Antastabstand fest.

note: type: Plain text
en: When using a conductive plate the search and probe velocity should be the same and slow.  If using a tool setter that has spring loaded travel then you can set search velocity faster.  LinuxCNC ramps speed down at the maximum acceleration rate, so there can be travel after the probe trip if the speed is set to high.
de: Wenn Sie eine leitfähige Platte verwenden, sollten die Such- und Tastgeschwindigkeit gleich langsam sein.  Wenn Sie einen Werkzeugwechsler mit gefedertem Verfahrweg verwenden, können Sie die Suchgeschwindigkeit schneller einstellen.  LinuxCNC fährt die Geschwindigkeit mit der maximalen Beschleunigung herunter, so dass nach dem Auslösen des Messtasters ein Verfahrweg vorhanden sein kann, wenn die Geschwindigkeit zu hoch eingestellt ist.

note: type: Plain text
en: Place the plate on top of the surface you wish to zero Z on.  Connect the probe input wire to the tool (if using a conductive plate)  There is a LED to confirm the probe connection is reliable prior to probing.  Move the tool manually within the max probe distance.  Press the 'Touch Plate' button.  The machine will probe down twice and the current user offset (G5X) will be zeroed at the bottom of the plate by calculation from the touchplate height setting.
de: Legen Sie die Platte auf die Oberfläche, auf der Sie Z nullen möchten.  Verbinden Sie das Eingangskabel des Messtasters mit dem Werkzeug (bei Verwendung einer leitfähigen Platte).  Bewegen Sie das Werkzeug manuell innerhalb des maximalen Tasterabstandes.  Drücken Sie die Taste "Tastplatte".  Die Maschine tastet zweimal nach unten und der aktuelle Benutzer-Offset (G5X) wird am unteren Ende der Platte durch Berechnung der Tastplattenhöhe auf Null gesetzt.

note: type: Plain text
en: QtDragon can be setup to do integrated auto tool measurement using the Versa Probe widget and remap code.  To use this feature, you will need to do some additional settings and you may want to use the offered HAL pin to get values in your own ngc remap procedure.
de: QtDragon kann so eingestellt werden, dass es eine integrierte automatische Werkzeugmessung mit dem Versa Probe Widget und Remap-Code durchführt.  Um diese Funktion zu nutzen, müssen Sie einige zusätzliche Einstellungen vornehmen und Sie können den angebotenen HAL-Pin verwenden, um Werte in Ihrer eigenen ngc-Remap-Prozedur zu erhalten.

note: type: Plain text
en: Before starting the first test, do not forget to enter the probe height and probe velocities on the versa probe settings page.
de: Vergessen Sie nicht, vor dem ersten Test die Sondenhöhe und die Sondengeschwindigkeiten auf der Seite mit den Sondeneinstellungen einzugeben.

note: type: Plain text
en: Tool Measurement in QtDragon is done with the following steps:
de: Die Werkzeugmessung in QtDragon erfolgt in den folgenden Schritten:

note: type: Plain text
en: Touch of you workpiece in X and Y.
de: Berührung des Werkstücks in X und Y.

note: type: Plain text
en: In the Versa probe tab, enter the measured value for block height.
de: Geben Sie auf der Registerkarte Versa-Sonde den Messwert für die Blockhöhe ein.

note: type: Plain text
en: Make sure the use tool measurement button in the Vesa probe tab is enabled.
de: Stellen Sie sicher, dass die Schaltfläche "Werkzeugmessung verwenden" in der Registerkarte "Vesa-Sonde" aktiviert ist.

note: type: Plain text
en: When fist setting up auto tool measurement, please use caution until you confirm tool change and probe locations - it's easy to break a tool/probe. Abort will be honoured while the probe is in motion.
de: Bei der Ersteinrichtung der automatischen Werkzeugmessung sollten Sie vorsichtig sein, bis Sie den Werkzeugwechsel und die Position des Messtasters bestätigt haben - ein Werkzeug/Taster kann leicht beschädigt werden. Ein Abbruch ist möglich, solange der Messtaster in Bewegung ist.

note: type: Block title
en: Auto tool measurement
de: Automatische Werkzeugvermessung

note: type: Plain text
en: With the first given tool change the tool will be measured and the offset will be set automatically to fit the block height.  The advantage of this way is, that you do not need a reference tool.
de: Beim ersten gegebenen Werkzeugwechsel wird das Werkzeug vermessen und der Versatz wird automatisch auf die Blockhöhe eingestellt.  Der Vorteil dieser Methode ist, dass Sie kein Referenzwerkzeug benötigen.

note: type: Plain text
en: Your program must contain a tool change at the beginning.  The tool will be measured, even it has been used before, so there is no danger if the block height has changed.  There are several videos on you tube that demonstrate the technique using GMOCCAPY.  The GMOCCAPY screen pioneered the technique.
de: Ihr Programm muss am Anfang einen Werkzeugwechsel enthalten.  Das Werkzeug wird gemessen, auch wenn es schon vorher verwendet wurde, so dass keine Gefahr besteht, wenn sich die Blockhöhe geändert hat.  Es gibt mehrere Videos auf you tube, die diese Technik mit GMOCCAPY demonstrieren.  Der GMOCCAPY-Bildschirm war der Wegbereiter dieser Technik.

note: type: Title ===
en: Work Piece Height Probing
de: Werkstückhöhe Antasten

note: type: Block title
en: QtDragon_hd - Work piece Height probing
de: QtDragon_hd - Werkstück Höhenabtastung

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtDragon_hd height probing
de: QtDragon_hd Höhen-Sondierung

note: type: Plain text
en: This program probes 2 user specified locations in the Z axis and calculates the difference in heights.
de: Dieses Programm tastet 2 benutzerdefinierte Positionen in der Z-Achse an und berechnet die Höhendifferenz.

note: type: Block title
en: Enable Probe Position Set Buttons
de: Buttons zum Einstellen der Sondenposition aktivieren

note: type: Plain text
en: Wwhen checked, the SET buttons are enabled.
de: Wenn diese Option markiert ist, sind die SET-Tasten aktiviert.

note: type: Plain text
en: This allows the user to automatically fill in the X, Y and Z parameters with the current position as displayed on the DROs.
de: Dadurch kann der Benutzer die X-, Y- und Z-Parameter automatisch mit der aktuellen Position, wie sie auf den DROs angezeigt wird, ausfüllen.

note: type: Block title
en: Autofill Workpiece Height on Main Screen
de: Automatische Füllung der Werkstückhöhe auf dem Hauptbildschirm

note: type: Plain text
en: Otherwise, the main screen is not affected.
de: Andernfalls ist der Hauptbildschirm nicht betroffen.

note: type: Block title
en: Workpiece Probe At
de: Werkstücktaster bei

note: type: Plain text
en: the X, Y and Z coordinates specify where the first probing routine should start, in current WCS
de: die X-, Y- und Z-Koordinaten geben an, wo die erste Sondierungsroutine im aktuellen WCS beginnen soll

note: type: Block title
en: Machine Probe At
de: Probenahme bei

note: type: Plain text
en: the X, Y and Z coordinates specify where the second probing routine should start, in current WCS
de: die X-, Y- und Z-Koordinaten geben an, wo die zweite Sondierungsroutine beginnen soll, und zwar im aktuellen WCS

note: type: Block title
en: Z Safe Travel Height
de: Z Sichere Fahrhöhe

note: type: Plain text
en: The machine is raised to the Z safe travel height before jogging to the X and Y coordinates.
de: Die Maschine wird auf die sichere Z-Fahrhöhe angehoben, bevor sie zu den X- und Y-Koordinaten rüttelt.

note: type: Plain text
en: The spindle then lowers to the specified Z coordinate.
de: Die Spindel senkt sich dann auf die angegebene Z-Koordinate.

note: type: Plain text
en: It should be selected so that the tool clears all obstructions while jogging.
de: Sie sollte so gewählt werden, dass das Werkzeug beim Joggen alle Hindernisse überwindet.

note: type: Block title
en: START button
de: START-Button

note: type: Plain text
en: The machine will jog to the first location and then probe down.
de: Die Maschine fährt zur ersten Position und tastet dann nach unten.

note: type: Plain text
en: The machine then jogs to the second location and probes down again.
de: Die Maschine fährt dann zum zweiten Standort und tastet sich erneut nach unten.

note: type: Plain text
en: The difference in probed values is reported as Calculated Workpiece Height.
de: Die Differenz der angetasteten Werte wird als berechnete Werkstückhöhe angegeben.

note: type: Plain text
en: The parameters for search velocity, probe velocity, maximum probe distance and return distance are read from the main GUI Settings page.
de: Die Parameter für Suchgeschwindigkeit, Sondengeschwindigkeit, maximale Sondenentfernung und Rücklaufentfernung werden von der Hauptseite der GUI-Einstellungen gelesen.

note: type: Block title
en: ABORT button
de: ABORT-Button

note: type: Plain text
en: causes all jog and probe routines currently executing to stop
de: bewirkt, dass alle derzeit ausgeführten Tipp- und Tastroutinen gestoppt werden

note: type: Block title
en: HELP button
de: HELP-Button

note: type: Plain text
en: displays this help file
de: zeigt dieses Hilfefenster an

note: type: Plain text
en: Setting incorrect values can lead to crashes into fixtures on the machine work surface. Initial testing with no tool and safe heights is recommended.
de: Das Einstellen falscher Werte kann zu Abstürzen in Vorrichtungen auf der Arbeitsfläche der Maschine führen. Ein erster Test ohne Werkzeug und in sicherer Höhe wird empfohlen.

note: type: Plain text
en: Versaprobe offers 5 pins for tool measurement purpose. The pins are used to be read from a remap G-code subroutine, so the code can react to different values.
de: Versaprobe bietet 5 Pins für die Werkzeugmessung. Die Pins werden von einem Remap-G-Code-Unterprogramm gelesen, so dass der Code auf verschiedene Werte reagieren kann.

note: type: Plain text
en: `qtversaprobe.toolmeasurement` (HAL_BIT) enable or not tool measurement
de: `qtversaprobe.toolmeasurement` (HAL_BIT) Werkzeugmessung aktivieren oder nicht

note: type: Plain text
en: `qtversaprobe.blockheight` (HAL_FLOAT) the measured value of the top face of the workpiece
de: `qtversaprobe.blockheight` (HAL_FLOAT) der gemessene Wert der Oberseite des Werkstücks

note: type: Plain text
en: `qtversaprobe.probeheight` (HAL_FLOAT) the probe switch height
de: `qtversaprobe.probeheight` (HAL_FLOAT) die Höhe des Sondenschalters

note: type: Plain text
en: `qtversaprobe.searchvel` (HAL_FLOAT) the velocity to search for the tool probe switch
de: `qtversaprobe.searchvel` (HAL_FLOAT) die Geschwindigkeit, mit der nach dem Schalter für den Werkzeugmesstaster gesucht wird

note: type: Plain text
en: `qtversaprobe.probevel` (HAL_FLOAT) the velocity to probe tool length
de: `gmoccapy.probevel` (HAL_FLOAT) die Länge des Werkzeugs zwischen Geschwindigkeit und Messtaster

note: type: Plain text
en: Modify your INI File to include the following:
de: Ändern Sie Ihre INI-Datei so, dass sie Folgendes enthält:

note: type: Title ====
en: The PROBE section
de: Der Abschnitt PROBE (Werkstück-Sensor)

note: type: Plain text
en: QtDragon allows you to select one of two styles of touch probe routines.  Versa probe works with a M6 remap to add auto tool probing.
de: QtDragon ermöglicht es Ihnen, eine von zwei Arten von Messtasterroutinen auszuwählen.  Versa Probe arbeitet mit einem M6-Remap, um die automatische Werkzeugerfassung hinzuzufügen.

note: type: Title ====
en: The RS274NGC section
de: Der RS274NGC-Abschnitt

note: type: delimited block -
en: # adjust this paths to point to folders with stdglu.py and qt_auto_tool_probe.ngc
    # or similarly coded custom remap files
    SUBROUTINE_PATH = ~/linuxcnc/nc_files/remap-subroutines:~/linuxcnc/nc_files/remap_lib
de: # diese Pfade so anpassen, dass sie auf Ordner mit stdglu.py und qt_auto_tool_probe.ngc zeigen
    # oder ähnlich kodierte benutzerdefinierte Remap-Dateien
    SUBROUTINE_PATH = ~/linuxcnc/nc_files/remap-subroutines:~/linuxcnc/nc_files/remap_lib

note: type: delimited block -
en: # is the sub, with is called when a error during tool change happens.
    ON_ABORT_COMMAND=O <on_abort> call
de: # ist die Sub, die aufgerufen wird, wenn ein Fehler beim Werkzeugwechsel auftritt.
    ON_ABORT_COMMAND=O <on_abort> Aufruf

note: type: delimited block -
en: # The remap code for QtVCP's versaprobe's automatic tool probe of Z
    REMAP=M6  modalgroup=6 prolog=change_prolog ngc=qt_auto_probe_tool epilog=change_epilog
de: # Der Remap-Code für die automatische Werkzeugsonde von Z der Versaprobe von QtVCP
    REMAP=M6  modalgroup=6 prolog=change_prolog ngc=qt_auto_probe_tool epilog=change_epilog

note: type: Plain text
en: The position of the tool sensor and the start position of the probing movement, all values are absolute (G53) coordinates, except MAXPROBE, what must be given in relative movement.  All values are in machine native units.
de: Die Position des Werkzeugsensors und die Startposition der Antastbewegung, alle Werte sind absolute (G53) Koordinaten, mit Ausnahme von MAXPROBE, das in relativer Bewegung angegeben werden muss.  Alle Werte sind in maschineneigenen Einheiten.

note: type: Plain text
en: This is not named TOOL_CHANGE_POSITION on purpose - *canon uses that name and will interfere otherwise.* The position to move the machine before giving the change tool command. All values are in absolute coordinates.  All values are in machine native units.
de: Die Position wird nicht zweckdienlichst TOOL_CHANGE_POSITION genannt - *canon verwendet diesen Namen und interveniert sonst.* Die Position, an welche die Maschine bewegt werden soll, bevor der Befehl zum Werkzeugwechsel gegeben wird. Alle Werte sind in absoluten Koordinaten.  Alle Werte sind in maschineneigenen Einheiten.

note: type: Plain text
en: The Python section sets up what files LinuxCNC's Python interpreter looks for.  ie. 'toplevel.py' file in the 'python' folder in the configuration directory:
de: Der Python-Abschnitt legt fest, nach welchen Dateien der Python-Interpreter von LinuxCNC sucht, z.B. die Datei 'toplevel.py' im Ordner 'python' im Konfigurationsverzeichnis:

note: type: Plain text
en: You must copy the following files to your config directory
de: Sie müssen die folgenden Dateien in Ihr Konfigurationsverzeichnis kopieren

note: type: Plain text
en: First create a folder named 'python' in your machine's configuration folder.
de: Erstellen Sie zunächst einen Ordner namens 'python' im Konfigurationsordner Ihres Rechners.

note: type: Plain text
en: If using a compiled RIP version of LinuxCNC:
    From 'YOUR-LINUXCNC-DIRECTORY/configs/sim/QtDragon/python', copy 'toplevel.py' and 'remap.py' to your configuration's new 'python' folder.
de: Wenn Sie eine kompilierte RIP-Version von LinuxCNC verwenden:
    Kopieren Sie aus "IHR-LINUXCNC-DIRECTORY/configs/sim/QtDragon/python" die Dateien "toplevel.py" und "remap.py" in den neuen "python"-Ordner Ihrer Konfiguration.

note: type: Plain text
en: if using an installed version of LinuxCNC:
    from '/usr/share/doc/linuxcnc/examples/sample-configs/sim/qtvcp_screens/qtdragon/python/' , copy 'toplevel.py' and 'remap.py' to your configuration's new 'python' folder.
de: Wenn Sie eine installierte Version von LinuxCNC verwenden:
    Kopieren Sie von '/usr/share/doc/linuxcnc/examples/sample-configs/sim/qtvcp_screens/qtdragon/python/' die Dateien 'toplevel.py' und 'remap.py' in den neuen 'python'-Ordner Ihrer Konfiguration.

note: type: Plain text
en: Alternately, you can make new files in your 'python' folder that you made in your configuration folder, with a text editor.
de: Alternativ können Sie mit einem Texteditor neue Dateien in Ihrem 'python'-Ordner erstellen, die Sie in Ihrem Konfigurationsordner angelegt haben.

note: type: Plain text
en: One named 'remap.py' saved with this text:
de: Eine mit dem Namen 'remap.py', die mit diesem Text gespeichert wurde:

note: type: Plain text
en: One named 'toplevel.py' saved with this text:
de: Eine Datei mit dem Namen 'toplevel.py' wird mit diesem Text gespeichert:

note: type: Plain text
en: Make a symbolic link or copy the following files into the 'python' folder described above.
de: Erstellen Sie eine symbolischen link oder kopieren Sie die folgenden Dateien in den oben beschriebenen Ordner 'python'.

note: type: Plain text
en: Make sure to connect the tool probe input in your HAL file: If connected properly, you should be able to toggle the probe LED in QtDragon if you press the probe stylus.
de: Stellen Sie sicher, dass der Messtastereingang in Ihrer HAL-Datei angeschlossen ist: Bei korrektem Anschluss sollten Sie in der Lage sein, die Taster-LED in QtDragon umzuschalten, wenn Sie den Tasterstift drücken.

note: type: Title ==
en: Run from Line
de: Ausführen von gegebener Zeile

note: type: Plain text
en: A G-code program can be started at any line by clicking on the desired line in the G-code display while in AUTO mode.  It is the operator's responsibility to ensure the machine is in the desired operational mode.  A dialog will be shown allowing the spindle direction and speed to be preset.  The start line is indicated in the box labelled LINE, next to the CYCLE START button.  The run from line feature can be disabled in the settings page.
de: Ein G-Code-Programm kann an jeder beliebigen Zeile gestartet werden, indem Sie im AUTO-Modus auf die gewünschte Zeile in der G-Code-Anzeige klicken.  Es liegt in der Verantwortung des Bedieners sicherzustellen, dass sich die Maschine im gewünschten Betriebsmodus befindet.  Es wird ein Dialogfeld angezeigt, in dem die Spindelrichtung und -geschwindigkeit voreingestellt werden können.  Die Startlinie wird in dem Feld mit der Bezeichnung LINE neben der Taste CYCLE START angezeigt.  Die Funktion "Von der Linie starten" kann auf der Einstellungsseite deaktiviert werden.

note: type: Plain text
en: LinuxCNC's run-from-line is not very user friendly. E.g., it does not start the spindle or confirm the proper tool.  Also, it does not handle subroutines well. If used it is best to start on a rapid move.
de: LinuxCNC's "Ausführen ab Zeile..." (engl. run-from-line) ist nicht sehr benutzerfreundlich. Z.B. startet es nicht die Spindel oder bestätigt das richtige Werkzeug.  Auch werden Unterprogramme nicht gut gehandhabt. Wenn es verwendet wird, ist es am besten, mit einem Eilgang zu beginnen.

note: type: Title ==
en: Laser buttons
de: Laser-Buttons

note: type: Plain text
en: The LASER ON/OFF button in intended to turn an output on or off which is connected to a small laser crosshair projector.  When the crosshair is positioned over a desired reference point on the workpiece, the REF LASER button can be pushed which then sets the X and Y offsets to the values indicated by the LASER OFFSET fields in the Settings page and the INI file.
de: Der Button LASER ON/OFF dient dazu, einen Ausgang ein- oder auszuschalten, der mit einem kleinen Laserkreuzprojektor verbunden ist.  Wenn das Fadenkreuz über einem gewünschten Referenzpunkt auf dem Werkstück positioniert ist, kann die Taste REF LASER gedrückt werden, die dann die X- und Y-Offsets auf die in den Feldern LASER OFFSET auf der Seite Einstellungen und in der INI-Datei angegebenen Werte setzt.

note: type: Title ==
en: Tabs Description
de: Beschreibung der Registerkarten

note: type: Plain text
en: Tabs allow the user to select the most appropriate info/control on the top three panels.
    If the on screen keyboard is showing and the user wishes to hide it but keep the current tab,
    they can do that by pressing the current show tab.
de: Über die Registerkarten kann der Benutzer die am besten geeigneten Informationen/Steuerelemente in den oberen drei Feldern auswählen.
    Wenn die Bildschirmtastatur eingeblendet ist und der Benutzer sie ausblenden, aber die aktuelle Registerkarte beibehalten möchte,
    kann er dies tun, indem er die aktuelle Registerkarte einblendet.

note: type: Title ===
en: Main tab
de: Hauptregisterkarte

note: type: Plain text
en: This tab displays the graphical representation of the current program.
    The side buttons will control the display.
de: Auf dieser Registerkarte wird die grafische Darstellung des aktuellen Programms angezeigt.
    Mit den seitlichen Schaltflächen wird die Anzeige gesteuert.

note: type: Plain text
en: 'User View': Select/restore a user set view of the current program
de: 'Benutzeransicht': Auswählen/Wiederherstellen einer benutzerdefinierten Ansicht des aktuellen Programms

note: type: Plain text
en: 'P','X','Y','Z': Set standard views
de: 'P','X','Y','Z': Standardansichten einstellen

note: type: Plain text
en: 'D': Toggle display of dimensions
de: 'D': Anzeige der Abmessungen umschalten

note: type: Plain text
en: '+', '-': Zoom controls
de: '+', '-': Zoom-Steuerung

note: type: Plain text
en: 'C': Clear graphics of tool movement lines
de: 'C': Übersichtliche Grafik der Werkzeugbewegungslinien

note: type: Plain text
en: In QtDragon_hd there are also macro buttons available on the right side.
    Up to tens buttons can be defined in the INI.
de: In QtDragon_hd sind auf der rechten Seite auch Makrotasten verfügbar.
    Bis zu zehn Buttons können in der INI definiert werden.

note: type: Title ===
en: File Tab
de: Registerkarte "Datei"

note: type: Plain text
en: You can use this tab to load or transfer programs.
    Editing of G-code programs can be selected from this tab. With qtdragon_hd, this is where you can load 'Gcode Ripper'
de: Sie können diese Registerkarte verwenden, um Programme zu laden oder zu übertragen.
    Die Bearbeitung von G-Code-Programmen kann über diese Registerkarte ausgewählt werden. Bei qtdragon_hd können Sie hier den 'Gcode Ripper' laden

note: type: Title ===
en: Offsets Tab
de: Registerkarte "Offsets"

note: type: Plain text
en: You can monitor/modify system offsets from this tab.  there are convenience buttons for zeroing the rotation.G92 and current G5x user offset.
de: Auf dieser Registerkarte können Sie die System-Offsets überwachen/ändern. Es gibt praktische Schaltflächen für die Nullstellung der Rotation.G92 und den aktuellen G5x-Benutzer-Offset.

note: type: Title ===
en: Tool Tab
de: Registerkarte "Werkzeug"

note: type: Plain text
en: You can monitor/modify tool offsets from this tab.
    Adding and deleting tools from the tool file can also be done from this tab.
de: Auf dieser Registerkarte können Sie die Werkzeugkorrekturen überwachen/verändern.
    Das Hinzufügen und Löschen von Werkzeugen aus der Werkzeugdatei kann ebenfalls über diese Registerkarte erfolgen.

note: type: Title ===
en: Status Tab
de: Registerkarte "Status"

note: type: Plain text
en: A time-stamped log of important machine or system events will be shown here.
    Machine events would be more suited to an operator, where the system events may help in debugging problems.
de: Hier wird ein mit einem Zeitstempel versehenes Protokoll wichtiger Maschinen- oder Systemereignisse angezeigt.
    Maschinenereignisse sind eher für einen Bediener geeignet, während die Systemereignisse bei der Fehlersuche helfen können.

note: type: Title ===
en: Probe Tab
de: Registerkarte "Sonde

note: type: Plain text
en: Probing routines options are displayed on this tab. Depending on INI options, this could be
    VersaProbe or BasicProbe style. They are functionally similar.
    QtDragon_hd will also show a smaller graphics display window.
de: Auf dieser Registerkarte werden Optionen für Prüfroutinen angezeigt. Abhängig von den INI-Optionen kann dies sein
    VersaProbe- oder BasicProbe-Stil sein. Sie sind funktionell ähnlich.
    QtDragon_hd zeigt auch ein kleineres Grafikanzeigefenster an.

note: type: Title ===
en: Camview Tab
de: Camview-Registerkarte

note: type: Plain text
en: If the recognized webcam is connected, this tab will display the video image overlayed with a cross-hair
    , circle and degree readout. This can be adjusted to suit a part feature for such things as touchoff.
    The underlying library uses openCV Python module to connect to the webcam.
de: Wenn die erkannte Webcam angeschlossen ist, wird auf dieser Registerkarte das Videobild mit einem Fadenkreuz überlagert angezeigt
    einem Kreis und einer Gradanzeige überlagert. Dies kann angepasst werden, um ein Teilmerkmal für solche Dinge wie Touchoff anzupassen.
    Die zugrunde liegende Bibliothek verwendet das openCV-Python-Modul, um eine Verbindung zur Webcam herzustellen.

note: type: Title ===
en: G-codes Tab
de: G-Codes Registrierkarte

note: type: Plain text
en: This tab will display a list of LinuxCNC's G-code.
    if you click on a line, a description of the code will be displayed.
de: Diese Registerkarte zeigt eine Liste von LinuxCNC's G-Code.
    Wenn Sie auf eine Zeile klicken, wird eine Beschreibung des Codes angezeigt.

note: type: Title ===
en: Setup Tab
de: Registerkarte "Einstellungen"

note: type: Plain text
en: It's possible to load HTML or PDF file (.html / .pdf ending) with setup notes.  HTML/PDF docs will be displayed in the setup tab.  Some program, such as Fusion 360 and Aspire will create these files for you.  If you load a G-code program and there is an HTML/PDF file of the same name, it will load automatically.  You can also write your own HTML docs with the included SetUp Writer button.
de: Es ist möglich, eine HTML- oder PDF-Datei (.html / .pdf-Endung) mit Einrichtungshinweisen zu laden.  Die HTML-/PDF-Dokumente werden auf der Registerkarte "Setup" angezeigt.  Einige Programme, wie Fusion 360 und Aspire, erstellen diese Dateien für Sie.  Wenn Sie ein G-Code-Programm laden und eine HTML/PDF-Datei mit demselben Namen vorhanden ist, wird diese automatisch geladen.  Sie können auch Ihre eigenen HTML-Dokumente mit der mitgelieferten Schaltfläche SetUp Writer schreiben.

note: type: Block title
en: QtDragon - Setup Tab Sample
de: QtDragon - Beispiel für die Registerkarte Setup

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtDragon Setup Tab
de: QtDragon Setup-Registerkarte

note: type: Title ===
en: Settings Tab
de: Registerkarte "Einstellungen"

note: type: Plain text
en: The settings tab is used to set running options, probing/touchplate/laser/camera offsets and load debugging external programs.
de: Die Registerkarte "Einstellungen" dient zum Einstellen der Betriebsoptionen, der Offsets für Messtaster/Tastplatte/Laser/Kamera und zum Laden externer Debugging-Programme.

note: type: Title ===
en: Utilities Tab
de: Registerkarte "Dienstprogramme"

note: type: Plain text
en: This tabs will display another stab election of G-code utility programs. +
de: Auf dieser Registerkarte wird eine weitere Auswahl von G-Code-Hilfsprogrammen angezeigt. +

note: type: Plain text
en: 'Facing': allows quick face milling of a definable area at angles of 0,45 and 90 degrees
de: "Facing": ermöglicht schnelles Planfräsen eines definierbaren Bereichs in Winkeln von 0,45 und 90 Grad

note: type: Plain text
en: 'Hole Circle': allows quick setting of a program to drill a bolt circle of definable diameter and number of holes.
de: 'Lochkreis': ermöglicht die schnelle Einstellung eines Programms zum Bohren eines Lochkreises mit definierbarem Durchmesser und Anzahl der Löcher.

note: type: Plain text
en: 'NGCGUI': is a QtVCP version of the popular G-code subroutine builder/selector.
de: 'NGCGUI': ist eine QtVCP-Version des beliebten G-Code Subroutine Builder/Selector.

note: type: Title ==
en: Styles
de: Stile

note: type: Block title
en: QtDragon - Two Style Examples
de: QtDragon - Zwei Stil-Beispiele

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtDragon styles
de: QtDragon-Stile

note: type: Title ==
en: Customization
de: Anpassung

note: type: Plain text
en: Stylesheets can be leveraged to do a fair amount of customization, but you usually need to know a bit about the widget names.  Pressing F12 will display a stylesheet editor dialog to load/test/save modification.  For instance:
de: Mit Hilfe von Stylesheets können Sie eine ganze Reihe von Anpassungen vornehmen, aber Sie müssen in der Regel ein wenig über die Widget-Namen wissen.  Wenn Sie F12 drücken, wird ein Stylesheet-Editor-Dialog zum Laden/Testen/Speichern von Änderungen angezeigt.  Zum Beispiel:

note: type: Plain text
en: To change the DRO font (look for this entry and change the font name):
de: So ändern Sie die DRO-Schriftart (suchen Sie nach diesem Eintrag und ändern Sie den Namen der Schriftart):

note: type: Plain text
en: To change the text of the mist button to 'air' (add these lines)
de: So ändern Sie den Text der Schaltfläche "Nebel" in "Luft" (fügen Sie diese Zeilen ein)

note: type: Title ===
en: Qt Designer and Python code
de: Qt Designer und Python-Code

note: type: Plain text
en: All aspects of the GUI are fully customization through Qt Designer and/or Python code.  This capability is included with the QtVCP development environment.  The extensive use of QtVCP widgets keeps the amount of required Python code to a minimum, allowing relatively easy modifications.  The LinuxCNC website has extensive documentation on the installation and use of QtVCP libraries.  <<cha:qtvcp,QtVCP Overview>> for more information
de: Alle Aspekte der grafischen Benutzeroberfläche können mit Qt Designer und/oder Python-Code vollständig angepasst werden.  Diese Fähigkeit ist in der QtVCP-Entwicklungsumgebung enthalten.  Die umfangreiche Verwendung von QtVCP Widgets hält die Menge der erforderlichen Python-Code auf ein Minimum, so dass relativ einfach Änderungen.  Die LinuxCNC Website hat eine umfangreiche Dokumentation über die Installation und Verwendung von QtVCP Bibliotheken. <<cha:qtvcp,QtVCP Overview>> für weitere Informationen

note: type: Block title
en: QtDragon - Customized QtDragon
de: QtDragon - Angepasster QtDragon

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtDragon customized
de: QtDragon angepasst

note: type: Plain text
en: QtVCP is an *infrastructure to build custom CNC screens or control panels for LinuxCNC*.
de: QtVCP ist eine *Infrastruktur zum Erstellen von benutzerdefinierten CNC-Bildschirmen oder Bedienfeldern für LinuxCNC*.

note: type: Plain text
en: It displays a _`.ui` file built with Qt Designer_ screen editor and combines this with _Python programming_ to create a GUI screen for running a CNC machine.
de: Es zeigt eine _`.ui`-Datei an, die mit dem Qt Designer_-Bildschirmeditor erstellt wurde, und kombiniert diese mit _Python-Programmierung_, um einen GUI-Bildschirm für den Betrieb einer CNC-Maschine zu erstellen.

note: type: Plain text
en: QtVCP is completely _customizable_: you can add different buttons and status LEDs etc. or add python code for even finer grain customization.
de: QtVCP ist vollständig _anpassbar_: Sie können verschiedene Schaltflächen und Status-LEDs usw. hinzufügen oder Python-Code für eine noch feinere Anpassung einfügen.

note: type: Title ==
en: Showcase
de: Schaukasten

note: type: Plain text
en: Few examples of QtVCP built screens and virtual control panels:
de: Einige Beispiele für mit QtVCP erstellte Bildschirme und virtuelle Bedienfelder:

note: type: Block title
en: QtDragon - 3/4-Axis Sample
de: QtDragon - 3/4-Achsen-Beispiel

note: type: Block title
en: QtDefault - 3-Axis Sample
de: QtDefault - 3-Achsen-Beispiel

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Qtscreen Mill
de: Qtscreen Fräse (engl. mill)

note: type: Block title
en: QtAxis - Self Adjusting Axis Sample
de: QtAxis - Beispiel für selbsteinstellende Achsen

note: type: Block title
en: Blender - 4-Axis Sample
de: Blender - 4-Achsen-Beispiel

note: type: Block title
en: X1mill - 4-Axis Sample
de: X1mill - 4-Achsen-Beispiel

note: type: Block title
en: cam_align - Camera Alignment VCP
de: cam_align – Kameraausrichtung VCP

note: type: Title ==
en: Overview(((QtVCP Overview)))
de: Übersicht(((QtVCP Übersicht)))

note: type: Plain text
en: _Two files are used, individually or in combination_, to add customizations:
de: Zwei Dateien werden, einzeln oder in Kombination, verwendet, um Anpassungen vorzunehmen:

note: type: Plain text
en: A *UI file* that is a _XML_ file made with _Qt Designer_ graphical editor.
de: Eine *UI-Datei*, bei der es sich um eine _XML_-Datei handelt, die mit dem grafischen Editor _Qt Designer_ erstellt wurde.

note: type: Plain text
en: A *handler file* which is a _Python_ code text file.
de: Eine *Handler-Datei*, die eine Textdatei mit _Python_-Code ist.

note: type: Plain text
en: Normally QtVCP uses the stock UI and handler file, but you can specify QtVCP to use 'local' UI and handler files.
    A *'local' file* is one that is in the _configuration folder_ that defines the rest of the machine's requirements.
de: Normalerweise verwendet QtVCP die standardmäßige UI- und Handler-Datei, aber Sie können QtVCP so einstellen, dass es "lokale" UI- und Handler-Dateien verwendet.
    Eine *'lokale' Datei* ist eine Datei, die sich im _Konfigurationsordner_ befindet, der den Rest der Anforderungen des Rechners definiert.

note: type: Plain text
en: One is not restricted to adding a custom panel on the right or a custom tab as QtVCP leverages _Qt Designer_ (the editor) and _PyQT5_ (the widget toolkit).
de: Man ist nicht darauf beschränkt, ein benutzerdefiniertes Panel auf der rechten Seite oder eine benutzerdefinierte Registerkarte hinzuzufügen, da QtVCP den _Qt Designer_ (den Editor) und _PyQT5_ (das Widget-Toolkit) nutzt.

note: type: Plain text
en: QtVCP has some added *special LinuxCNC widgets and actions*.
    There are special widgets to bridge third party widgets to HAL pins.
    It's possible to create widget responses by connecting signals to Python code in the handler file.
de: QtVCP hat einige *spezielle LinuxCNC Widgets und Aktionen* hinzugefügt.
    Es gibt spezielle Widgets, um Widgets von Drittanbietern mit HAL-Pins zu verbinden.
    Es ist möglich, Widget-Antworten zu erstellen, indem man Signale mit Python-Code in der Handler-Datei verbindet.

note: type: Plain text
en: QtVCP uses the *PyQt5 toolkit's widgets* for LinuxCNC integration.
de: QtVCP nutzt die *PyQt5-Toolkits* für die Einbeziehung von LinuxCNC.

note: type: Plain text
en: `-c` HAL component name. Default is to use the UI file name.
de: `-c` Name der HAL-Komponente. Standardmäßig wird der UI-Dateiname verwendet.

note: type: Plain text
en: `-m` Maximize window
de: `-m` Fenster maximieren

note: type: Plain text
en: `-f` Fullscreen the window
de: `-f` Vollbild des Fensters

note: type: Plain text
en: `-t` Theme. Default is system theme
de: `-t`-Design (engl. theme). Standard ist das Systemdesign

note: type: Plain text
en: `-x` Embed into a X11 window that doesn't support embedding.
de: -x Einbindung in ein X11-Fenster, das nicht die Integration unterstützt.

note: type: Plain text
en: `--push_xid` Send QtVCP's X11 window id number to standard output; for embedding.
de: `--push_xid` Sendet die X11-Fenster-Identifikationsnummer von QtVCP an die Standardausgabe; zum Einbetten.

note: type: Plain text
en: `-u` File path of a substitute handler file
de: `-u` Dateipfad einer Ersatz-Handler-Datei

note: type: Plain text
en: `-o` Pass a string to QtVCP's handler file under `self.w.USEROPTIONS_` list variable. can be multiple -o
de: `-o` Übergibt einen String an die Handler-Datei von QtVCP unter der Listenvariablen `self.w.USEROPTIONS_`. kann mehrfach sein -o

note: type: Block title
en: <screen_name>
de: <Bildschirm_name>

note: type: Plain text
en: `<screen_name>` is the _base name of the .ui and _handler.py files_.
    If `<screen_name>` is missing, the default screen will be loaded.
de: <<Bildschirmname>` ist der _Basisname der .ui und _handler.py Dateien_.
    Wenn `<Bildschirmname>` fehlt, wird der Standardbildschirm geladen.

note: type: Plain text
en: QtVCP assumes the UI file and the handler file use the *same base name*.
de: QtVCP geht davon aus, dass die UI-Datei und die Handler-Datei den *gleichen Basisnamen* verwenden.

note: type: Plain text
en: QtVCP will first search the LinuxCNC configuration directory that was launched for the files, then in the system skin folder holding standard screens.
de: QtVCP sucht nach Dateien zuerst im LinuxCNC-Konfigurationsverzeichnis, das gestartet wurde, dann im System-Skin-Ordner mit den Standardbildschirmen.

note: type: Block title
en: Cycle Times
de: Zykluszeiten

note: type: Plain text
en: Adjusts the response rate of the GUI updates in milliseconds.
    Defaults to 100, useable range 50 - 200.
de: Stellt die Reaktionsgeschwindigkeit der GUI-Aktualisierungen in Millisekunden ein.
    Standardwert ist 100, nutzbarer Bereich 50 - 200.

note: type: Plain text
en: The widgets, graphics and HAL pin update can be set separately.
de: Die Widgets, Grafiken und die HAL-Pin-Aktualisierung können separat eingestellt werden.

note: type: Plain text
en: If the update time is not set right the screen can become unresponsive or very jerky.
de: Wenn die Aktualisierungszeit nicht richtig eingestellt ist, kann der Bildschirm nicht mehr reagieren oder stark ruckeln.

note: type: Title ===
en: Qt Designer UI File
de: Qt Designer UI Datei

note: type: Plain text
en: A Qt Designer file is a text file organized in the _XML_ standard that describes the *layout and widgets* of the screen.
de: Eine Qt Designer-Datei ist eine Textdatei, die im _XML_-Standard organisiert ist und das *Layout und die Widgets* des Bildschirms beschreibt.

note: type: Plain text
en: _PyQt5_ uses this file to build the display and react to those widgets.
de: _PyQt5_ verwendet diese Datei, um die Anzeige zu erstellen und auf diese Widgets zu reagieren.

note: type: Plain text
en: The Qt Designer editor makes it relatively easy to build and edit this file.
de: Der Qt Designer Editor macht es relativ einfach, diese Datei zu erstellen und zu bearbeiten.

note: type: Plain text
en: A handler file is a file containing _Python_ code, which *adds to QtVCP default routines*.
de: Eine Handler-Datei ist eine Datei, die _Python_-Code enthält, der *zu den QtVCP-Standardroutinen hinzugefügt wird*.

note: type: Plain text
en: A handler file allows one to _modify defaults_, or _add logic_ to a QtVCP screen without having to modify QtVCP's core code. In this way you can have *custom behaviors*.
de: Eine Handler-Datei erlaubt es, Voreinstellungen zu _ändern_ oder einem QtVCP-Bildschirm _Logik hinzuzufügen_, ohne den Kerncode von QtVCP zu verändern. Auf diese Weise können Sie *eigene Verhaltensweisen* haben.

note: type: Plain text
en: If present a handler file will be loaded.
    *Only one file* is allowed.
de: Falls vorhanden, wird eine Handler-Datei geladen.
    *Es ist nur eine Datei* erlaubt.

note: type: Title ===
en: Libraries Modules
de: Bibliotheken Module

note: type: Plain text
en: QtVCP, as built, does little more than display the screen and react to widgets. For more *prebuilt behaviors* there are available libraries (found in `lib/python/qtvcp/lib` in RIP LinuxCNC install).
de: QtVCP, so wie es gebaut ist, tut wenig mehr als den Bildschirm anzuzeigen und auf Widgets zu reagieren. Für weitere *vorgefertigte Verhaltensweisen* gibt es verfügbare Bibliotheken (zu finden in `lib/python/qtvcp/lib` in RIP LinuxCNC install).

note: type: Plain text
en: *Libraries* are prebuilt _Python modules_ that *add features* to QtVCP.
    In this way you can select what features you want - yet don't have to
    build common ones yourself. +
    Such libraries include:
de: *Bibliotheken* sind vorgefertigte _Python-Module_, die *Funktionen* zu QtVCP hinzufügen.
    Auf diese Weise können Sie auswählen, welche Funktionen Sie wünschen - und müssen nicht
    selbst bauen. +
    Solche Bibliotheken umfassen:

note: type: Plain text
en: Themes are a way to modify the *look and feel* of the widgets on the screen.
de: Designs sind eine Möglichkeit, das *_look and feel_* der Widgets auf dem Bildschirm zu ändern.

note: type: Plain text
en: For instance the _color_ or _size_ of buttons and sliders can be changed using themes.
de: Zum Beispiel kann die _Farbe_ oder _Größe_ von Schaltflächen und Schiebereglern mit Hilfe von Themen geändert werden.

note: type: Plain text
en: The _Windows theme_ is default for screens.
    The _System theme_ is default for panels.
de: Das _Windows-Thema_ ist der Standard für Bildschirme.
    Das _Systemthema_ ist der Standard für Bedienfelder.

note: type: Plain text
en: QtVCP can also be customized with _Qt stylesheets (QSS)_ using CSS.
de: QtVCP kann auch mit _Qt-Stylesheets (QSS)_ unter Verwendung von CSS angepasst werden.

note: type: Title ===
en: Local Files
de: Lokale Dateien

note: type: Plain text
en: Local UI files allow you to use your customized designs rather than the default screens.
de: Lokale UI-Dateien ermöglichen es Ihnen, anstelle der Standardbildschirme Ihre eigenen Designs zu verwenden.

note: type: Plain text
en: QtVCP will look for a folder named <screen_name> (in the launched configuration folder that holds the INI file).
de: QtVCP sucht nach einem Ordner mit dem Namen <screen_name> (im Ordner für die Startkonfiguration, der die INI-Datei enthält).

note: type: Plain text
en: In that folder, QtVCP will load any of the available following files:
de: In diesem Ordner lädt QtVCP jede der folgenden Dateien:

note: type: Plain text
en: `<screen_name>.ui`,
de: `_<screen_name>_.ui`,

note: type: Plain text
en: `<screen_name>_handler.py`, and
de: `<screen_name>_handler.py`, und

note: type: Plain text
en: `<screen_name>.qss`.
de: `_<screen_name>_.qss`.

note: type: Title ===
en: Modifying Stock Screens
de: Veränderung mitglieferter Bildschirmmasken

note: type: Plain text
en: There are _three ways_ to customize a screen/panel.
de: Es gibt _drei Möglichkeiten_, einen Bildschirm/Panel anzupassen.

note: type: Plain text
en: Stylesheets can be used to *set Qt properties*.
    If a widget uses properties they usually can be modified by stylesheets.
    ie:
de: Stylesheets können zum *Setzen von Qt-Eigenschaften* verwendet werden.
    Wenn ein Widget Eigenschaften verwendet, können diese normalerweise durch Stylesheets verändert werden.
    z.B.:

note: type: Plain text
en: Another Python file can be used to *add commands* to the screen, after the handler file is parsed.
de: Eine weitere Python-Datei kann verwendet werden, um dem Bildschirm Befehle hinzuzufügen, nachdem die Handler-Datei geparst wurde.

note: type: Plain text
en: In the _INI file_ under the `[DISPLAY]` heading add *`USER_COMMAND_FILE = _PATH_`* +
de: In der _INI-Datei_ unter der Überschrift `[DISPLAY]` einfügen *`USER_COMMAND_FILE = _PATH_`* +

note: type: Plain text
en: _PATH_ can be any valid path. It can use `~` for home directory or `WORKINGDIRECTORY` or `CONFIGDIRECTORY` to represent QtVCP's idea of those directories.
    ie:
de: _PATH_ kann jeder gültige Pfad sein. Er kann `~` für das Heimatverzeichnis oder `WORKINGDIRECTORY` oder `CONFIGDIRECTORY` verwenden, um QtVCPs Vorstellung von diesen Verzeichnissen zu repräsentieren.
    Beispiel:

note: type: delimited block -
en: [DISPLAY]
    USER_COMMAND_FILE = CONFIGDIRECTORY/<screen_name_added_commands>
de: [ANZEIGE]
    USER_COMMAND_FILE = CONFIGDIRECTORY/<Bildschirm_name_hinzugefuegte_Befehle>

note: type: Plain text
en: This file will be read and executed as Python code in the *handler file context*.
de: Diese Datei wird als Python-Code im *handler-Dateikontext* gelesen und ausgeführt.

note: type: Plain text
en: *Only local functions and local attributes* can be referenced. +
    Global libraries can not be referenced. (usualy seen as all capital
    words with no preceding self.) +
de: *Nur lokale Funktionen und lokale Attribute* können referenziert werden. +
    Globale Bibliotheken können nicht referenziert werden. (üblicherweise als große
    Worte ohne vorangestelltes Selbst). +

note: type: Plain text
en: What can be used can vary by screen and development cycle.
de: Was verwendet werden kann, mag je nach Bildschirm und Entwicklungszyklus variieren.

note: type: delimited block -
en: self.w.setWindowTitle('My Title Test')
de: self.w.setWindowTitle('Mein Titel-Test')

note: type: Plain text
en: If you wish to *modify a stock screen* with full control, _copy it's UI and handler file to your configuration folder_.
de: Wenn Sie einen Standardbildschirm mit voller Kontrolle *verändern* möchten, _kopieren Sie dessen UI und Handler-Datei in Ihren Konfigurationsordner_.

note: type: Plain text
en: There is a QtVCP panel to help with this:
de: Es gibt ein QtVCP-Panel, das dabei hilft:

note: type: Plain text
en: Open a terminal and run the following command:
de: Öffnen Sie ein Terminal und führen den folgenden Befehl aus:

note: type: Plain text
en: Select the screen and destination folder in the dialog
de: Wählen Sie den Bildschirm und den Zielordner im Dialog

note: type: Plain text
en: If you wish to *name your screen* differently than the builtin screen's default name, change the _basename_ in the edit box.
de: Wenn Sie Ihren Bildschirm anders *benennen* möchten als den Standardnamen des eingebauten Bildschirms, ändern Sie den _Basisnamen_ im Bearbeitungsfeld.

note: type: Plain text
en: Validate to copy all the files
de: Bestätigen, um alle Dateien zu kopieren

note: type: Plain text
en: Delete the files you don't wish to modifyso that the original files will be used.
de: Löschen Sie die Dateien, die Sie nicht ändern möchten, damit die Originaldateien verwendet werden.

note: type: Title ==
en: VCP Panels
de: VCP-Paneele

note: FIXME Duplicate with qtvcp-vcp-panels.adoc content @silopolis thinks: remove from here as this file should be split anyway type: Plain text
en: QtVCP can be used to create control panels that interface with *HAL*.
de: QtVCP kann verwendet werden, um Bedienfelder zu erstellen, die mit *HAL* verbunden sind.

note: type: Plain text
en: There are several *builtin HAL panels* available.
de: Es sind mehrere *integrierte HAL-Panels* verfügbar.

note: type: Plain text
en: In a terminal type `qtvcp <return>` to see a list:
de: Geben Sie in einem Terminal `qtvcp <return>` ein, um eine Liste zu sehen:

note: type: Plain text
en: Collection of useful widgets for testing HAL components, including speech of LED state.
de: Sammlung nützlicher Widgets zum Testen von HAL-Komponenten, einschließlich der Anzeige des LED-Zustands.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP HAL Test Builtin Panel
de: QtVCP HAL Test Integriertes Panel

note: FIXME Add cam_align VCP capture type: Plain text
en: A camera display widget for rotational alignment.
de: Ein Kameraanzeige-Widget für die Rotationsausrichtung.

note: type: Title ===
en: Custom Panels
de: Benutzerdefinierte Bedienfelder

note: type: Plain text
en: You can of course *make your own panel and load it*.
de: Sie können natürlich *Ihr eigenes Panel erstellen und laden*.

note: type: Plain text
en: If you made a UI file named `my_panel.ui` and a HAL file named `my_panel.hal`, you would then load this from a terminal with:
de: Wenn Sie eine UI-Datei mit dem Namen `my_panel.ui` und eine HAL-Datei mit dem Namen `my_panel.hal` erstellt haben, würden Sie diese dann von einem Terminal aus laden mit:

note: type: Block title
en: Example HAL file loading a QtVCP panel
de: Beispiel einer HAL-Datei, die ein QtVCP-Panel lädt

note: type: delimited block -
en: # add components to thread
    addf classicladder.0.refresh thread1
de: # Komponenten zum Thread hinzufügen
    addf classicladder.0.refresh thread1

note: type: delimited block -
en: # connect pins
    net bit-input1     test_panel.checkbox_1        classicladder.0.in-00
    net bit-hide       test_panel.checkbox_4        classicladder.0.hide_gui
de: # Pins verbinden
    net bit-input1 test_panel.checkbox_1 classicladder.0.in-00
    net bit-hide test_panel.checkbox_4 classicladder.0.hide_gui

note: type: Plain text
en: In this case we load `qtvcp` using *`-Wn`* which waits for the panel to finish loading before continuing to run the next HAL command.
    This is to _ensure that the panel created HAL pins are actually done_ in case they are used in the rest of the file.
de: In diesem Fall laden wir `qtvcp` mit *`-Wn`*, das wartet, bis das Panel das Laden beendet hat, bevor es mit der Ausführung des nächsten HAL-Befehls fortfährt.
    Damit soll _gewährleistet werden, dass die vom Panel erstellten HAL-Pins tatsächlich fertig sind_, falls sie im Rest der Datei verwendet werden.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP Ugly custom screen
de: QtVCP Hässlicher benutzerdefinierter Bildschirm

note: type: Plain text
en: To build a panel or screen:
de: So erstellen Sie ein Bedienfeld oder einen Bildschirm:

note: type: Plain text
en: Use Qt Designer to build a design you like and save it to your configuration folder with a name of your choice, ending with `.ui`
de: Verwenden Sie Qt Designer, um ein Design zu erstellen, das Ihnen gefällt, und speichern Sie es in Ihrem Konfigurationsordner unter einem Namen Ihrer Wahl, der mit `.ui` endet

note: type: Plain text
en: Modify the configuration INI file to load QtVCP using your new `.ui` file.
de: Ändern Sie die Konfigurations-INI-Datei, um QtVCP mit Ihrer neuen `.ui`-Datei zu laden.

note: type: Plain text
en: Then connect any required HAL pins in a HAL file.
de: Dann verbinden Sie alle erforderlichen HAL-Kenntnisse in einer HAL-Datei.

note: type: Title ===
en: Get Qt Designer To Include LinuxCNC Widgets
de: Holen Sie sich Qt Designer, um LinuxCNC-Widgets einzubinden

note: type: Plain text
en: First you must have the *Qt Designer installed*.
    The following commands should add it to your system, or use your package manager to do the same:
de: Zuerst müssen Sie den *Qt Designer installieren*.
    Die folgenden Befehle sollten ihn zu Ihrem System hinzufügen, oder verwenden Sie Ihren Paketmanager, um dasselbe zu tun:

note: FIXME Do we need to keep this ? Luego necesita agregar la biblioteca de carga del módulo python. QtVCP usa QT5 con python2. Esta combinación normalmente no está disponible desde repositorios. Puede compilarlo usted mismo, o hay versiones precompiladas disponible para sistemas comunes. En 'lib/python
en: Add `qtvcp_plugin.py` link to the Qt Designer Search Path
de: Hinzufügen des Links `qtvcp_plugin.py` zum Qt Designer Suchpfad

note: type: Plain text
en: Then you must add a link to the `qtvcp_plugin.py` in one of the folders that Qt Designer will search into.
de: Dann müssen Sie einen Link zu `qtvcp_plugin.py` in einem der Ordner hinzufügen, in denen Qt Designer suchen wird.

note: type: Plain text
en: In a _RIP_ version of LinuxCNC `qtvcp_plugin.py` will be:
de: In einer _RIP_ (engl. Abkürzung von "run in place", d.h. das Programm started dort wo es durch den Quellcode auch kompiliert wurde) Version von LinuxCNC wird `qtvcp_plugin.py` sein:

note: type: Plain text
en: Make a symbolic link to the above file and move it to one of the places Qt Designer searches in.
de: Legen Sie einen symbolischen Link auf die obige Datei an und verschieben Sie sie an einen der Orte, an denen Qt Designer sucht.

note: type: Plain text
en: Qt Designer searches in these two place for links (pick one):
de: Qt Designer sucht an diesen beiden Stellen nach Links (wählen Sie einen aus):

note: type: Plain text
en: You may need to create the `plugins/python` folder.
de: Möglicherweise müssen Sie den Ordner `plugins/python` erstellen.

note: type: Block title
en: Start Qt Designer:
de: Starten Sie Qt Designer:

note: type: Plain text
en: For a _RIP install_:
    Open a terminal, set the environment for LinuxCNC <1>, then load Qt Designer <2> with :
de: Für eine _RIP-Installation_:
    Öffnen Sie ein Terminal, setzen Sie die Umgebungsvariablen für LinuxCNC <1>, dann laden Sie Qt Designer <2> mit :

note: type: Plain text
en: For a _package install_:
    Open a terminal and type:
de: Für eine _Paketinstallation_:
    Öffnen Sie ein Terminal und geben Sie ein:

note: type: Plain text
en: If all goes right, Qt Designer will launch and you will see the selectable LinuxCNC widgets on the left hand side.
de: Wenn alles gut geht, wird Qt Designer gestartet und Sie werden die auswählbaren LinuxCNC Widgets auf der linken Seite sehen.

note: type: Plain text
en: When Qt Designer is first started there is a _'New Form' dialog_ displayed.
    Pick _'Main Window'_ and press the _'Create'_ button.
    A _`MainWindow` widget_ is displayed.
de: Wenn Qt Designer zum ersten Mal gestartet wird, erscheint ein _'New Form' Dialog_.
    Wählen Sie _'Main Window'_ und drücken Sie die Schaltfläche _'Create'_.
    Ein _`MainWindow`-Widget_ wird angezeigt.

note: type: Plain text
en: *Do not rename this window !* +
      QtVCP requires the name to be `MainWindow`.
de: *Dieses Fenster nicht umbenennen !* +
      QtVCP verlangt, dass der Name `MainWindow` lautet.

note: type: Block title
en: Set `MainWindow` Minimum and Maximum Size
de: Minimale und maximale Größe des Hauptfensters festlegen

note: type: Plain text
en: Grab the corner of the window and resize to an appropriate size, say 1000x600. +
de: Fassen Sie die Ecke des Fensters an und ändern Sie die Größe auf eine geeignete Größe, z. B. 1000x600. +

note: type: Plain text
en: Right click on the window and click set _minimum size_.
de: Klicken Sie mit der rechten Maustaste auf das Fenster und klicken Sie auf _Mindestgröße_ einstellen.

note: type: Plain text
en: Do it again and set _maximum size_.
de: Wiederholen Sie dies und stellen Sie _maximale Größe_ ein.

note: FIXME Is that mandatory ? type: Plain text
en: Our sample widget will now not be resizable.
de: Unser Beispiel-Widget ist nun nicht mehr größenveränderbar.

note: type: Block title
en: Add the `ScreenOptions` Widget
de: Hinzufügen des Widgets `ScreenOptions`

note: type: Plain text
en: Drag and drop the `ScreenOptions` widget anywhere onto the main window.
de: Ziehen Sie das `ScreenOptions`-Widget per Drag-and-Drop an eine beliebige Stelle im Hauptfenster.

note: type: Plain text
en: This widget doesn't add anything visually but sets up some *common options*.
de: Dieses Widget fügt visuell nichts hinzu, richtet aber einige *allgemeine Optionen* ein.

note: type: Plain text
en: It's recommended to always _add this widget before any other_.
de: Es wird empfohlen, dieses Widget immer _vor allen anderen_ hinzuzufügen.

note: type: Plain text
en: Right click on the main window, not the `ScreenOptions` widget, and set the _layout_ as vertical to make the `ScreenOptions` fullsized.
de: Klicken Sie mit der rechten Maustaste auf das Hauptfenster, nicht auf das "ScreenOptions"-Widget, und stellen Sie "Layout" auf "Vertikal", um "ScreenOptions" in voller Größe anzuzeigen.

note: type: Plain text
en: On the right hand side there is a panel with tabs for a _Property editor_ and an _Object inspector_.
de: Auf der rechten Seite befindet sich ein Panel mit Registerkarten für einen _Eigenschaftseditor_ und einen _Objektinspektor_.

note: TODO Explain what this FileDialo_option does type: Plain text
en: On the Object inspector click on the _ScreenOptions_.
    Then switch to the Property Editor and, under the _ScreenOptions_ heading, toggle *`filedialog_option`*.
de: Klicken Sie im Objektinspektor auf _ScreenOptions_.
    Wechseln Sie dann zum Eigenschaftseditor (engl. property editor) und schalten Sie unter der Überschrift _ScreenOptions_ die *`filedialog_option`* um.

note: type: Plain text
en: Drag and drop a *`GCodeGraphics`* _widget_ and a *`GcodeEditor`* _widget_.
    Place and resize them as you see fit leaving some room for buttons.
de: Ziehen Sie ein *`GCodeGraphics`* _widget_ und ein *`GcodeEditor`* _widget_ per Drag and Drop.
    Platzieren Sie sie und ändern Sie die Größe, wie Sie es für richtig halten, und lassen Sie etwas Platz für Schaltflächen.

note: type: Plain text
en: Add 7 action buttons on to the main window.
de: Fügen Sie dem Hauptfenster 7 Aktionsschaltflächen hinzu.

note: type: Plain text
en: If you double click the button, you can add text.
    Edit the button labels for 'Estop', 'Machine On', 'Home', 'Load', 'Run', 'Pause' and 'stop'.
de: Wenn Sie auf die Schaltfläche (engl. button) doppelklicken, können Sie Text hinzufügen.
    Bearbeiten Sie die Schaltflächenbeschriftungen für "Notaus" (engl. "E-stop"), "Maschine ein", Referenzpunkt (engl. "Home"), "Laden" (engl. "Load"), "Ausführen" (engl. "Run"), "Pause" und "Stopp".

note: type: Plain text
en: Action buttons _default to no action_ so we must change the properties for defined functions. You can edit the properties:
de: Aktionsschaltflächen sind standardmäßig auf keine Aktion eingestellt, daher müssen wir die Eigenschaften für definierte Funktionen ändern. Sie können die Eigenschaften bearbeiten:

note: type: Plain text
en: directly in the _property editor_ on the right side of Qt Designer, or
de: direkt im _Eigenschaften-Editor_ auf der rechten Seite des Qt-Designers, oder

note: type: Plain text
en: conveniently, left double clicking on the button to launch a _properties dialog_ that allows selecting actions while only displaying relevant data to the action.
de: praktischerweise lassen sich durch einen Doppelklick mit der linken Maustaste auf die Schaltfläche ein Dialogfeld "Eigenschaften" aufrufen, was die Auswahl von Aktionen ermöglicht, wobei nur die für die Aktion relevanten Daten angezeigt werden.

note: type: Plain text
en: We will describe the convenient way first:
de: Wir werden zunächst den bequemen Weg beschreiben:

note: type: Plain text
en: Right click the 'Machine On' button and select _Set Actions_.
de: Klicken Sie mit der rechten Maustaste auf die Schaltfläche 'Maschine ein' (engl.machine on) und wählen Sie _Aktionen festlegen_ (engl. set actions).

note: type: Plain text
en: When the dialog displays, use the combobox to navigate to `MACHINE CONTROLS - Machine On`.
de: Wenn das Dialogfeld angezeigt wird, verwenden Sie die Combobox, um zu `MASCHINENSTEUERUNGEN - Maschine ein`(engl. `MACHINE CONTROLS - Machine On`) zu navigieren.

note: type: Plain text
en: In this case there is no option for this action so select 'OK'. +
de: In diesem Fall gibt es keine Option für diese Aktion, also wählen Sie "OK". +

note: type: Plain text
en: And now the direct way with Qt Designer's property editor:
de: Und nun der direkte Weg mit dem Eigenschaftseditor von Qt Designer:

note: type: Plain text
en: Select the 'Machine On' button.
de: Wählen Sie die Schaltfläche "Maschine ein".

note: type: Plain text
en: Go to the Property Editor on the right side of Qt Designer.
de: Gehen Sie zum Eigenschaftseditor auf der rechten Seite von Qt Designer.

note: type: Plain text
en: Scroll down until you find the _ActionButton_ heading.
de: Blättern Sie nach unten, bis Sie die Überschrift _ActionButton_ finden.

note: type: Plain text
en: Click the `machine_on` action checkbox you will see in the list of properties and values.
de: Klicken Sie auf das Kontrollkästchen für die Aktion "Machine_on", das Sie in der Liste der Eigenschaften und Werte sehen.

note: type: Plain text
en: The button will now control machine on/off.
de: Die Taste steuert nun das Ein- und Ausschalten der Maschine.

note: type: Plain text
en: Do the same for all the other button with the addition of:
de: Machen Sie das Gleiche für alle anderen Schaltflächen und fügen Sie noch einen hinzu:

note: type: Plain text
en: With the 'Home' button we must also change the `joint_number` property to `-1`.
    This tells the controller to _home all the axes_ rather then a specific axis.
de: Bei der Schaltfläche "Home" müssen wir auch die Eigenschaft `joint_number` auf `1` ändern.
    Dadurch wird der Controller angewiesen, _alle Achsen_ und nicht nur eine bestimmte Achse zu _referenzieren_.

note: type: Plain text
en: With the 'Pause' button:
de: Mit dem Button "Pause":

note: type: Plain text
en: Under the `Indicated_PushButton` heading check the `indicator_option`.
de: Unter der Überschrift `Indicated_PushButton` überprüfen Sie die `Indicator_option`.

note: type: Plain text
en: Under the `QAbstactButton` heading check `checkable`.
de: Unter der Überschrift `QAbstactButton` markieren Sie `checkable`.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Qt Designer: Selecting Pause Button's Properties
de: Qt Designer: Auswahl der Eigenschaften des Pause-Buttons (Schaltfläche)

note: type: Block title
en: Save The `.ui` File
de: `.ui`-Datei speichern

note: type: Plain text
en: We then need to save this design as `tester.ui` in the `sim/qtvcp` folder.
de: Diesen Entwurf müssen wir dann als `tester.ui` im Ordner `sim/qtvcp` speichern.

note: type: Plain text
en: We are saving it as _tester_ as that is a file name that qtvcp recognizes and will use a built in handler file to display it.
de: Wir speichern sie als _tester_, da dies ein Dateiname ist, den qtvcp erkennt und eine eingebaute Handler-Datei verwendet, um sie anzuzeigen.

note: type: Title ===
en: Handler file
de: Handler-Datei

note: type: Plain text
en: It allows customizations to be written in Python.
de: Er ermöglicht das Schreiben von Anpassungen in Python.

note: type: Plain text
en: For instance, _keyboard controls_ are usually written in the handler file.
de: Zum Beispiel werden _Tastatursteuerungen_ normalerweise in die Handler-Datei geschrieben.

note: type: Plain text
en: In this example, the built in file `tester_handler.py` is automatically used: it does the minimum required to display the `tester.ui` defined screen and do basic keyboard jogging.
de: In diesem Beispiel wird die eingebaute Datei `tester_handler.py` automatisch verwendet: sie tut das Minimum, das erforderlich ist, um den in `tester.ui` definierten Bildschirm darzustellen und einfache Tastatureingaben vorzunehmen.

note: type: Plain text
en: If you are using QtVCP to make a CNC control screen, under the _INI file_ `[DISPLAY]` heading, set:
de: Wenn Sie QtVCP zur Erstellung eines CNC-Steuerungsbildschirms verwenden, setzen Sie unter der Überschrift _INI-Datei_ `[DISPLAY]`:

note: type: delimited block -
en: DISPLAY = qtvcp <screen_name>
de: DISPLAY = qtvcp <Bildschirmname>

note: type: Plain text
en: `<screen_name>` is the _base name_ of the `.ui` and `_handler.py` files.
de: `_<Bildschirmname>_` ist der _Basisname_ der Dateien `.ui` und `_handler.py`.

note: type: Plain text
en: In our example there is already a sim configuration called tester, that we will use to display our test screen.
de: In unserem Beispiel gibt es bereits eine Sim-Konfiguration namens tester, die wir zur Anzeige unseres Testbildschirms verwenden werden.

note: type: Plain text
en: If your screen used _widgets with HAL pins_, then you must *connect them in a HAL file*.
de: Wenn Ihr Bildschirm _Widgets mit HAL-Pins_ verwendet, dann müssen Sie diese *in einer HAL-Datei* verbinden.

note: type: Plain text
en: QtVCP looks in the _INI file_, under the `[HAL]` heading for the entries below:
de: QtVCP sucht in der _INI-Datei_ unter der Überschrift `[HAL]` nach den folgenden Einträgen:

note: type: Labeled list
en: *`POSTGUI_HALFILE=<filename>`*
de: *`POSTGUI_HALFILE=<Dateiname>`*

note: type: Plain text
en: Typically `<filename>` would be `+<screen_name>_postgui.hal+`, but can be any legal filename.
    You can have _multiple `POSTGUI_HALFILE` lines_ in the INI: each will be run one after the other in the order they appear.
    These commands are _executed after the screen is built_, guaranteeing the widget HAL pins are available.
de: Der Konvention nach wäre `<Dateiname>` als `+<Bildschirm_name>_postgui.hal+` genannt, aber es kann jeder legale Dateiname sein.
    Sie können _mehrere `POSTGUI_HALFILE`-Zeilen_ in der INI haben: jede wird nacheinander in der Reihenfolge ausgeführt, in der sie erscheint.
    Diese Befehle werden _nach der Erstellung des Bildschirms ausgeführt_, um sicherzustellen, dass die HAL-Pins des Widgets verfügbar sind.

note: type: Labeled list
en: *`POSTGUI_HALCMD=<command>`*
de: *`POSTGUI_HALCMD=<Befehl>`*

note: type: Plain text
en: `<command>` would be _any valid HAL command_.
    You can have _multiple `POSTGUI_HALCMD` lines_ in the INI: each will be run one after the other in the order they appear.
    To guaranty the widget HAL pins are available, these commands are executed:
de: `<Befehl>` wäre _jeder gültige HAL-Befehl_.
    Sie können _mehrere `POSTGUI_HALCMD`-Zeilen_ in der INI haben: jede wird nacheinander in der Reihenfolge ausgeführt, in der sie erscheint.
    Um zu garantieren, dass die HAL-Pins des Widgets verfügbar sind, werden diese Befehle ausgeführt:

note: type: Plain text
en: _after all the POSTGUI_HALFILEs are run_.
de: _nachdem alle POSTGUI_HALFILEs ausgeführt wurden_.

note: type: Plain text
en: In our example there are no HAL pins to connect.
de: In unserem Beispiel gibt es keine HAL-Pins zu verbinden.

note: type: Plain text
en: Here is a sample handler file.
de: Hier ist ein Beispiel für eine Handler-Datei.

note: type: Plain text
en: It's broken up in sections for ease of discussion.
de: Es ist in Abschnitte unterteilt, um die Diskussion zu erleichtern.

note: type: Plain text
en: This section is for *importing required library modules* for your screen.
de: Dieser Abschnitt ist für *Import der erforderlichen Bibliotheksmodule* für Ihren Bildschirm.

note: type: Plain text
en: It would be typical to import QtVCP's _keybinding_, _Status_ and _Action_ libraries.
de: Es wäre typisch, die QtVCP-Bibliotheken _keybinding_, _Status_ und _Action_ zu importieren.

note: type: Title ===
en: INSTANTIATE LIBRARIES Section
de: Abschnitt INSTANTIATE BIBRARIES

note: type: Plain text
en: By instantiating the libraries here we *create global reference*.
de: Indem wir die Bibliotheken hier instanziieren, *erzeugen wir eine globale Referenz*.

note: type: Plain text
en: You can note this by the commands that don't have `self.` in front of them.
de: Sie können dies an den Befehlen erkennen, denen kein "self" vorangestellt ist.

note: type: Plain text
en: By convention we _capitalize the names of globaly referenced libraries_.
de: Konventionell werden die Namen von global referenzierten Bibliotheken _großgeschrieben_.

note: type: Plain text
en: The *custom code* is placed _in a class so QtVCP can utilize it_.
de: Der *angepasste Code* wird _in einer Klasse platziert, damit QtVCP ihn verwenden kann_.

note: type: Plain text
en: This is the definitions of the handler class.
de: Dies ist die Definition der Handler-Klasse.

note: type: Plain text
en: Like all Python libraries the *`+__init__+` function* is called when the library is _first instantiated_.
de: Wie alle Python-Bibliotheken wird die *`+__init__+`-Funktion* aufgerufen, wenn die Bibliothek _erstmals_ instanziiert wird.

note: type: Plain text
en: This is where you would set up _defaults_, as well as _reference variables_ and _global variables_.
de: Hier können Sie _Standardwerte_, _Referenzvariablen_ und _globale Variablen_ einrichten.

note: type: Plain text
en: The widget references are not available at this point.
de: Die Referenzen der Widgets sind zu diesem Zeitpunkt nicht verfügbar.

note: type: Plain text
en: The variables `halcomp`, `widgets` and `paths` give access to QtVCP's HAL component, widgets, and path info respectively.
de: Die Variablen `halcomp`, `widgets` und `paths` ermöglichen den Zugriff auf QtVCP's HAL-Komponenten, Widgets bzw. Pfadinformationen.

note: type: Title ===
en: SPECIAL FUNCTIONS Section
de: Abschnitt zu BESONDEREN FUNKTIONEN

note: type: Plain text
en: There are several _special functions_ that QtVCP looks for in the handler file.
de: Es gibt mehrere _special functions_, nach denen QtVCP in der Handlerdatei sucht.

note: type: Plain text
en: If QtVCP finds these it will call them, if not it will silently ignore them.
de: Wenn QtVCP diese findet, ruft es sie auf, wenn nicht, ignoriert es sie stillschweigend.

note: type: Plain text
en: This function is _called after the widgets and HAL pins are built_.
    You can manipulate the widgets and HAL pins or add more HAL pins here.
    Typically there can be
de: Diese Funktion wird _aufgerufen, nachdem die Widgets und HAL-Pins erstellt wurden_.
    Sie können hier die Widgets und HAL-Pins manipulieren oder weitere HAL-Pins hinzufügen.
    In der Regel gibt es

note: type: Plain text
en: preferences checked and set,
de: Einstellungen überprüft und eingestellt,

note: type: Plain text
en: status of LinuxCNC connected to functions.
de: Status von LinuxCNC verbunden mit Funktionen.

note: type: Plain text
en: keybindings would be added.
de: Tastenbelegungen würden hinzugefügt.

note: type: Plain text
en: _Class patching_, also known as _monkey patching_, allows to *override function calls in an imported module*.
    Class patching must be done _before the module is instantiated_, and it _modifies all instances_ made after that.
    An example might be patching button calls from the G-code editor to call functions in the handler file instead. +
de: _Class patching_, auch bekannt als _monkey patching_, erlaubt es, *Funktionsaufrufe in einem importierten Modul zu überschreiben*.
    Klassen-Patching muss _vor der Instanziierung des Moduls_ durchgeführt werden und _verändert alle danach erstellten Instanzen_.
    Ein Beispiel wäre das Patchen von Schaltflächenaufrufen aus dem G-Code-Editor, um stattdessen Funktionen in der Handler-Datei aufzurufen. +

note: type: Plain text
en: This function is called to facilitate _keyboard jogging_ etc.
    By using the _`keybinding` library_ this can be used to easily add functions bound to keypresses.
de: Diese Funktion wird aufgerufen, um _Tastatur-Jogging_ usw. zu erleichtern.
    Durch die Verwendung der _`keybinding`-Bibliothek_ kann dies verwendet werden, um einfach Funktionen hinzuzufügen, die an Tastendrücke gebunden sind.

note: type: Plain text
en: This function gives *raw key press events*.
    It takes _precedence over_ the `processed_key_event`.
de: Diese Funktion liefert *rohe Tastendruckereignisse*.
    Sie hat _Vorrang vor dem `verarbeiteten_Tastenereignis`.

note: type: Plain text
en: This function gives *raw key release events*.
    It takes _precedence over_ the `processed_key_event`.
de: Diese Funktion gibt *raw key release events* aus.
    Es hat _Vorrang vor_ dem `processed_key_event`.

note: type: Plain text
en: This function is _called just before the Qt event loop is entered_.  At that point, all widgets/libraries/initialization code has completed and the screen is already displayed.
de: Diese Funktion wird _kurz vor dem Eintritt in die Qt-Ereignisschleife_ aufgerufen.  Zu diesem Zeitpunkt sind alle Widgets/Bibliotheken/Initialisierungscodes abgeschlossen und der Bildschirm wird bereits angezeigt.

note: TODO Example(s) of good practice cleaning type: Plain text
en: If present, this function *overrides the normal function called for total system shutdown*.
    It could be used to do _pre-shutdown housekeeping_. +
de: Falls vorhanden, überschreibt diese Funktion *die normale Funktion, die beim vollständigen Herunterfahren des Systems aufgerufen wird*.
    Sie kann dazu benutzt werden, _vor dem Herunterfahren Hausarbeiten_ zu erledigen. +

note: FIXME The following two sentences feel contradictory ?! type: Plain text
en: The _system will not shutdown if using this function_, you will have to do that yourself.
    QtVCP/LinuxCNC will shutdown without a prompt after this function returns.
de: Das _System wird nicht heruntergefahren, wenn Sie diese Funktion verwenden_, Sie müssen das selbst tun.
    QtVCP/LinuxCNC wird nach der Rückkehr dieser Funktion ohne eine Aufforderung heruntergefahren.

note: type: Plain text
en: This function is _called just before the screen closes_.  It can be used to do cleanup before closing.
de: Diese Funktion wird _kurz vor dem Schließen des Bildschirms_ aufgerufen.  Sie kann verwendet werden, um vor dem Schließen aufzuräumen.

note: TODO Are there/what are relations b/w system_shutdown_request__() and clocing_cleanup__() type: Title ===
en: STATUS CALLBACKS Section
de: STATUS CALLBACKS Abschnitt

note: type: Plain text
en: By convention this is where you would put functions that are *callbacks from STATUS definitions*.
de: Konventionell würden Sie hier Funktionen unterbringen, die *Rückrufe von STATUS-Definitionen* sind.

note: type: Title ===
en: CALLBACKS FROM FORM Section
de: CALLBACKS FROM FORM Abschnitt

note: type: Plain text
en: By convention this is where you would put functions that are *callbacks from the widgets connected to the MainWindow* in the Qt Designer editor.
de: Konventionell würden Sie hier Funktionen ablegen, die *Rückrufe von den Widgets sind, die mit dem MainWindow* im Qt Designer-Editor verbunden sind.

note: type: Plain text
en: By convention this is where you put your *general functions*.
de: Konventionell werden hier die *allgemeinen Funktionen* untergebracht.

note: type: Plain text
en: If you are _using the `keybinding` library_ this is where you place your *custom key call routines*.
de: Wenn Sie die `Keybinding`-Bibliothek_ verwenden, platzieren Sie hier Ihre *benutzerdefinierten Tastenaufrufroutinen*.

note: type: Plain text
en: `KEY` being the code (from the keybindings library) for the desired key.
de: `KEY` ist der Code (aus der Keybindings-Bibliothek) für den gewünschten Schlüssel.

note: type: Plain text
en: Putting the *`closeEvent` function here will catch closing events*.
de: Wenn Sie die Funktion *`closeEvent` hier einfügen, werden Schließungsereignisse* abgefangen.

note: type: Plain text
en: This _replaces any predefined `closeEvent`_ function from QtVCP.
de: Dies _replaces eine vordefinierte 'closeEvent'_-Funktion von QtVCP.

note: type: Plain text
en: It is possible to connect widgets to Python code using *signals and slots*.
de: Es ist möglich, Widgets über *Signale und Slots* mit Python-Code zu verbinden.

note: type: Plain text
en: In this way you can:
de: Auf diese Weise können Sie:

note: type: Plain text
en: _Give new functions to LinuxCNC widgets_, or
de: _LinuxCNC-Widgets neue Funktionen geben_, oder

note: type: Plain text
en: _Utilize standard Qt widgets to control LinuxCNC_.
de: _Standard Qt-Widgets zur Steuerung von LinuxCNC verwenden_.

note: type: Plain text
en: *In the Qt Designer editor*:
de: *Im Qt Designer-Editor*:

note: type: Plain text
en: You _connect the slots to widgets using signals_.
de: Sie _verbinden die Slots mit Widgets, indem Sie Signale verwenden_.

note: type: Plain text
en: *In the handler file*:
de: *In der Handler-Datei*:

note: type: Plain text
en: Press the 'OK' button.
de: Drücken Sie die Taste 'OK'.

note: type: Plain text
en: Now you must *add the function to the handler file*.
de: Nun müssen Sie *die Funktion in die Handler-Datei einfügen*.

note: type: Plain text
en: For our example, we will add some code to print the widget name:
de: Für unser Beispiel fügen wir etwas Code hinzu, um den Namen des Widgets zu auszugeben:

note: type: Plain text
en: Add this code under the section named:
de: Fügen Sie diesen Code unter dem Abschnitt namens:

note: type: delimited block -
en: #######################
    # callbacks from form #
    #######################
de: #######################
    # Callbacks vom Formular
    #######################

note: type: Plain text
en: In fact it doesn't matter where in the handler class you put the commands but by convention this is where to put it.
de: Tatsächlich spielt es keine Rolle, wo in der Handler-Klasse Sie die Befehle ablegen, aber per Konvention ist dies der Ort, an dem Sie sie ablegen müssen.

note: type: Plain text
en: Save the handler file.
de: Speichern der Handlerdatei.

note: type: Plain text
en: Here is how to *load and save preferences at launch and closing time*.
de: Hier erfahren Sie, wie Sie *die Einstellungen beim Start und beim Beenden laden und speichern*.

note: type: Plain text
en: In this example:
de: In diesem Beispiel:

note: type: delimited block -
en: # set recorded columns sort settings
    self.SETTINGS_.beginGroup("MyGroupName")
    self.int_value = self.SETTINGS_.value('myInteger', type = int) or 20
    self.float_value = self.SETTINGS_.value('myFloat', type = float) or 2.5
    self.SETTINGS_.endGroup()
de: # Sortiereinstellungen für aufgezeichnete Spalten festlegen
    self.SETTINGS_.beginGroup("MeinGruppenname")
    self.int_value = self.SETTINGS_.value('myInteger', Typ = int) or 20
    self.float_value = self.SETTINGS_.value('myFloat', type = float) or 2.5
    self.SETTINGS_.endGroup()

note: type: delimited block -
en: # save values with QSettings
    self.SETTINGS_.beginGroup("MyGroupName")
    self.SETTINGS_.setValue('myInteger', self.int_value)
    self.SETTINGS_.setValue('myFloat', self.float_value)
    self.SETTINGS_.endGroup()
de: # Werte mit QSettings speichern
    self.SETTINGS_.beginGroup("MeinGruppenname")
    self.SETTINGS_.setValue('myInteger', self.int_value)
    self.SETTINGS_.setValue('myFloat', self.float_value)
    self.SETTINGS_.endGroup()

note: type: Block title
en: Create the key bound function in the `KEYBINDING SECTION`:
de: Erstellen Sie die tastengebundene Funktion im `KEYBINDING SECTION`:

note: type: Title ==
en: Request Dialog Entry
de: Dialog-Eintrag anfordern

note: type: Plain text
en: The function:
de: Die Funktion

note: type: Title ==
en: Speak a Startup Greeting
de: Sprechen Sie eine Startup-Begrüßung

note: type: Plain text
en: Under the '+__init__.(self, halcomp, widgets, paths)+' function:
de: Unter der '+__init__. (self, halcomp, widgets, paths)+' Funktion:

note: type: delimited block -
en: STATUS.emit('play-alert','SPEAK Please remember to oil the ways.')
de: STATUS.emit('play-alert','SPEAK Bitte denken Sie daran, die Wege zu ölen.')

note: type: Plain text
en: *`SPEAK`* is a keyword: _everything after it will be pronounced_.
de: *`SPEAK`* ist ein Schlüsselwort: _Alles, was danach kommt, wird ausgesprochen_.

note: type: Title ==
en: ToolBar Functions
de: ToolBar-Funktionen

note: type: Plain text
en: a user defined function action.
de: eine benutzerdefinierte Funktionsaktion.

note: type: Plain text
en: The `objectName` of the toolbar button is used to identify the button when configuring it - _descriptive names help_.
de: Der `objectName` der Symbolleistenschaltfläche wird verwendet, um die Schaltfläche bei der Konfiguration zu identifizieren - _deskriptive Namen helfen_.

note: type: Plain text
en: Using the action editor menu, right click and select edit.
    Edit the object name, text, and button type for an appropriate action.
de: Klicken Sie mit der rechten Maustaste auf das Menü des Aktionseditors und wählen Sie Bearbeiten.
    Editieren Sie den Objektnamen, den Text und den Schaltflächentyp für eine geeignete Aktion.

note: type: Plain text
en: submenu name must be `menuRecent`,
de: Der Name des Untermenüs (engl. submenu) muss `menuRecent` lauten,

note: type: Plain text
en: actions names must be `actionAbout`, `actionQuit`, `actionMyFunction`
de: Aktionsnamen müssen `actionAbout`, `actionQuit`, `actionMyFunction` sein

note: type: Block title
en: Loads the `toolbar_actions` library in the `IMPORT SECTION`
de: Lädt die Bibliothek `toolbar_actions` in die `IMPORT SECTION`

note: type: Block title
en: Instantiate `ToolBarActions` module in the `INSTANTIATE LIBRARY SECTION`
de: Instanziieren Sie das Modul `ToolBarActions` im Abschnitt `INSTANTIATE LIBRARY SECTION`

note: type: Block title
en: Configure submenus and actions in the `SPECIAL FUNCTIONS SECTION`
de: Konfigurieren Sie Untermenüs und Aktionen im Abschnitt "BESONDERE FUNKTIONEN"

note: type: Block title
en: Loads the `Qhal` library in the `IMPORT SECTION`
de: Lädt die Bibliothek `Qhal` in die `IMPORT SECTION`

note: type: Block title
en: Instantiate `Qhal` in the `INSTANTIATE LIBRARY SECTION`
de: Instanziieren von `Qhal` in der `INSTANTIATE LIBRARY SECTION`

note: type: Block title
en: Add a function that gets called when the pin state changes
de: Hinzufügen einer Funktion, die aufgerufen wird, wenn sich der Zustand des Pins ändert

note: type: delimited block -
en: ##########################################
    # Special Functions called from QtVCP
    ##########################################
de: ##########################################
    # Spezielle Funktionen, die von QtVCP aufgerufen werden
    ##########################################

note: type: delimited block -
en: # at this point:
    # the widgets are instantiated.
    # the HAL pins are built but HAL is not set ready
    def initialized__(self):
        self.pin_cycle_start_in = QHAL.newpin('cycle-start-in',QHAL.HAL_BIT, QHAL.HAL_IN)
        self.pin_cycle_start_in.value_changed.connect(lambda s: self.cycleStart(s))
de: # zu diesem Zeitpunkt:
    # sind die Widgets instanziiert.
    # die HAL-Pins sind gebaut, aber HAL ist nicht bereit
    def initialized__(self):
        self.pin_cycle_start_in = QHAL.newpin('cycle-start-in',QHAL.HAL_BIT, QHAL.HAL_IN)
        self.pin_cycle_start_in.value_changed.connect(lambda s: self.cycleStart(s))

note: type: Block title
en: Define the function called by pin state change in the `GENERAL FUNCTIONS SECTION`
de: Definieren der Funktion, die durch Pin-Statusänderung im 'GENERAL FUNCTIONS SECTION' aufgerufen wird

note: type: delimited block -
en: #####################
    # general functions #
    #####################
de: #######################################
    # allgemeine (engl. general) functions #
    #######################################

note: type: Plain text
en: This function assumes there is a Tab widget, named `mainTab`, that has tabs with the names `tab_auto`, `tab_graphics`, `tab_filemanager` and `tab_mdi`.
de: Diese Funktion geht davon aus, dass es ein Tab-Widget mit dem Namen `mainTab` gibt, das Tabs mit den Namen `tab_auto`, `tab_graphics`, `tab_filemanager` und `tab_mdi` hat.

note: type: Plain text
en: In this way the cycle start button works differently depending on what tab is shown.
de: Auf diese Weise funktioniert der Zyklusstart-Button je nach angezeigter Registerkarte unterschiedlich.

note: type: Plain text
en: This is simplified - _checking state and error trapping might be helpful_.
de: Dies ist vereinfacht - _Zustandskontrolle und Fehlerverfolgung könnten hilfreich sein_.

note: type: Plain text
en: Some times you want to *build a widget to do something not built in*.
de: Manchmal möchte man *ein Widget bauen, das etwas tut, was nicht eingebaut ist*.

note: type: Plain text
en: The built in Max velocity slider acts on units per minute, here we show how to do on percent.
de: Der eingebaute Schieberegler für die maximale Geschwindigkeit arbeitet mit Einheiten pro Minute, hier zeigen wir, wie man mit Prozent arbeitet.

note: type: Plain text
en: The *`STATUS`* command makes sure the slider adjusts if LinuxCNC changes the current max velocity.
de: Der *`STATUS`* Befehl stellt sicher, dass der Schieberegler sich anpasst, wenn LinuxCNC die aktuelle maximale Geschwindigkeit ändert.

note: type: Plain text
en: *`valueChanged.connect()`* _calls a function when the slider is moved_.
de: *`valueChanged.connect()`* _ruft eine Funktion auf, wenn der Schieberegler bewegt wird_.

note: type: Plain text
en: In Qt Designer add a *`QSlider`* widget called `mvPercent`, then add the following code to the handler file:
de: Fügen Sie im Qt Designer ein *`QSlider`*-Widget mit dem Namen `mvPercent` hinzu und fügen Sie dann den folgenden Code in die Handler-Datei ein:

note: type: Title ==
en: Toggle Continuous Jog On and Off
de: Kontinuierlichen Jog ein- und ausschalten

note: type: Plain text
en: We will build a button that toggles between continuous jog and whatever increment that was already selected.
de: Wir werden eine Schaltfläche erstellen, die zwischen kontinuierlichem Joggen und der bereits ausgewählten Schrittweite umschaltet.

note: type: Plain text
en: In Qt Designer:
de: Im Qt-Designer:

note: type: Plain text
en: Add an `ActionButton` with no action
de: Hinzufügen eines `ActionButton` ohne Aktion

note: type: Plain text
en: Call it `btn_toggle_continuous`.
de: Nennen Sie ihn "btn_toggle_continuous".

note: type: Plain text
en: Set the `AbstractButton` property `checkable` to `True`.
de: Setzen Sie die Eigenschaft `AbstractButton` `checkable` auf `True`.

note: type: Plain text
en: Set the `ActionButton` properties `incr_imperial_number` and `incr_mm_number` to `0`.
de: Setzen Sie die Eigenschaften `ActionButton` `incr_imperial_number` und `incr_mm_number` auf `0`.

note: type: Plain text
en: Use Qt Designer's slot editor to use the button signal `clicked(bool)` to call form's handler function `toggle_continuous_clicked()`.
    See <<sub:qtvcp:designer-slots,Using Qt Designer To Add Slots>> section for more informations.
de: Verwenden Sie den Slot-Editor von Qt Designer, um das Button-Signal `clicked(bool)` zu verwenden, um die Formular-Handler-Funktion `toggle_continuous_clicked()` aufzurufen.
    Siehe <<sub:qtvcp:designer-slots,Using Qt Designer To Add Slots>> Abschnitt für weitere Informationen.

note: type: Plain text
en: Then add this code snippets to the handler file under the `initialized__` function:
de: Dann fügen Sie diesen Code-Schnipsel in die Handler-Datei unter der Funktion `initialized__` ein:

note: type: delimited block -
en: # at this point:
    # the widgets are instantiated.
    # the HAL pins are built but HAL is not set ready
    def initialized__(self):
        STATUS.connect('jogincrement-changed', \
            lambda w, d, t: self.record_jog_incr(d,t) \
            )
        # set a default increment to toggle back to
        self.L_incr = 0.01
        self.L_text = "0.01in"
de: # zu diesem Zeitpunkt:
    # sind die Widgets instanziiert.
    # die HAL-Pins sind gebaut, aber HAL ist nicht bereit
    def initialized__(self):
        STATUS.connect('jogincrement-changed', \
            lambda w, d, t: self.record_jog_incr(d,t) \
            )
        # ein Standardinkrement festlegen, zu dem zurückgeschaltet werden soll
        self.L_incr = 0,01
        self.L_text = "0.01in"

note: type: delimited block -
en: # if it isn't continuous, record the latest jog increment
    # and untoggle the continuous button
    def record_jog_incr(self,d, t):
        if d != 0:
            self.L_incr = d
            self.L_text = t
            self.w.btn_toggle_continuous.safecheck(False)
de: # Wenn es nicht kontinuierlich ist, zeichnen Sie das letzte Jog-Inkrement auf.
    # und deaktiviere die Schaltfläche "kontinuierlich".
    def record_jog_incr(self,d, t):
        if d != 0:
            self.L_incr = d
            self.L_text = t
            self.w.btn_toggle_continuous.safecheck(False)

note: type: Plain text
en: In the `CALLBACKS FROM FORM SECTION` add:
de: Im Abschnitt `CALLBACKS FROM STATUS SECTION` hinzufügen:

note: type: delimited block -
en: #######################
    # CALLBACKS FROM FORM #
    #######################
de: ###########################
    # CALLBACKS VOM FORMULAR #
    ###########################

note: type: Plain text
en: Class patching (monkey patching) is a little like _black magic_ - so use it _only if needed_.
de: Class Patching (Monkey Patching) ist ein wenig wie _schwarze Magie_ - also verwenden Sie es _nur bei Bedarf_.

note: type: Plain text
en: The File manager widget is designed to load a selected program in LinuxCNC. But maybe you want to print the file name first.
de: Das Dateimanager-Widget ist dazu gedacht, ein ausgewähltes Programm in LinuxCNC zu laden. Aber vielleicht möchten Sie zuerst den Dateinamen drucken.

note: type: Plain text
en: We can "class patch" the library to _redirect the function call_.
de: Wir können die Bibliothek mit einem "Klassen-Patch" versehen, um den Funktionsaufruf _umzuleiten_.

note: type: Plain text
en: _Keep a reference to the original function_ (1) so we can still call it
de: _Behalten Sie einen Verweis auf die ursprüngliche Funktion_ (1), damit wir sie weiterhin aufrufen können

note: type: Plain text
en: _Redirect the class to call our custom function_ (2) in the handler file instead.
de: Leiten Sie die Klasse um, damit sie stattdessen unsere benutzerdefinierte Funktion (2) in der Handler-Datei aufruft.

note: type: Plain text
en: _Write a custom function to replace the original_:
    This function must have the *same signature as the original function*.
    In this example we are still going to call the original function by using the reference to it we recorded earlier.
    It _requires the first argument to be the widget instance_, which in this case is `self.w.filemanager` (the name given in the Qt Designer editor).
de: Schreiben Sie eine benutzerdefinierte Funktion, um das Original zu ersetzen:
    Diese Funktion muss die *gleiche Signatur wie die Originalfunktion* haben.
    In diesem Beispiel werden wir immer noch die ursprüngliche Funktion aufrufen, indem wir den Verweis auf sie verwenden, den wir zuvor aufgezeichnet haben.
    Sie _erfordert, dass das erste Argument die Widget-Instanz ist_, was in diesem Fall `self.w.filemanager` ist (der Name, der im Qt Designer-Editor angegeben wurde).

note: type: Plain text
en: Now our custom function will print the file path to the terminal before loading the file.
    Obviously boring but shows the principle.
de: Jetzt wird unsere benutzerdefinierte Funktion den Dateipfad in das Terminal ausgeben, bevor die Datei geladen wird.
    Offensichtlich langweilig, aber es zeigt das Prinzip.

note: type: delimited block =
en: There is another slightly different way to do this that can have advantages: you can _store the reference to the original function in the original class_.
    The trick here is to make sure the function name you use to store it is not already used in the class.
    `super__` added to the function name would be a good choice.
    We won't use that in built in QtVCP widgets.
de: Es gibt noch eine andere, etwas andere Methode, die Vorteile haben kann: Sie können _den Verweis auf die ursprüngliche Funktion in der ursprünglichen Klasse speichern_.
    Der Trick dabei ist, sicherzustellen, dass der Funktionsname, den Sie zum Speichern verwenden, nicht bereits in der Klasse verwendet wird.
    `super__` als Zusatz zum Funktionsnamen wäre eine gute Wahl.
    Wir werden das in den eingebauten QtVCP-Widgets nicht verwenden.

note: type: delimited block -
en: # For changing functions in widgets we can 'class patch'.
    # class patching must be done before the class is instantiated.
    def class_patch__(self):
        FM.super__load = FM.load # keep a reference of the old function in the original class
        FM.load = self.our_load # redirect function to our handle file function
de: # Um Funktionen in Widgets zu ändern, können wir 'class patch' verwenden.
    # Klassenpatching muss vor der Instanziierung der Klasse erfolgen.
    def class_patch__(self):
        FM.super__load = FM.load # eine Referenz auf die alte Funktion in der ursprünglichen Klasse behalten
        FM.load = self.our_load # Funktion auf unsere Handle-File-Funktion umlenken

note: type: delimited block =
en: In some situation it is only possible to *add widgets with Python code* rather then using the Qt Designer editor.
de: In manchen Situationen ist es nur möglich, Widgets mit Python-Code hinzuzufügen, anstatt den Qt Designer-Editor zu verwenden.

note: type: delimited block =
en: When adding QtVCP widgets programmatically, sometimes there are _extra steps_ to be taken.
de: Wenn QtVCP-Widgets programmatisch hinzugefügt werden, müssen manchmal _zusätzliche Schritte_ unternommen werden.

note: type: delimited block =
en: Here we are going to add a spindle speed indicator bar and up-to-speed LED to a tab widget corner.
    Qt Designer does not support adding corner widgets to tabs but PyQt does.
de: Hier werden wir eine Spindeldrehzahl-Anzeigeleiste und eine LED für die aktuelle Geschwindigkeit in die Ecke eines Tab-Widgets einfügen.
    Qt Designer unterstützt das Hinzufügen von Eck-Widgets zu Tabs nicht, PyQt hingegen schon.

note: type: delimited block =
en: This is a cut down example from QtAxis screen's handler file.
de: Dies ist ein gekürztes Beispiel aus der Handler-Datei von QtAxis screen.

note: type: Block title
en: Import required libraries
de: Importieren erforderlicher Bibliotheken

note: type: delimited block =
en: First we must import the libraries we need, if they're not already imported in the handler file:
de: Zunächst müssen wir die benötigten Bibliotheken importieren, sofern sie nicht bereits in der Handler-Datei enthalten sind:

note: type: delimited block =
en: `QtWidgets` gives us access to the `QProgressBar`,
de: `QtWidgets` gibt uns Zugriff auf die `QProgressBar`,

note: type: delimited block =
en: `QColor` is for the _LED color_,
de: `QColor` ist für die _LED-Farbe_,

note: type: delimited block =
en: `StateLED` is the QtVCP library used to _create the spindle-at-speed LED_,
de: `StateLED` ist die QtVCP-Bibliothek, die zum _Erstellen der Spindel-bei-Geschwindigkeit-LED_ verwendet wird,

note: type: delimited block =
en: `Status` is used to _catch LinuxCNC status information_,
de: `Status` wird verwendet, um _LinuxCNC-Statusinformationen abzufangen_,

note: type: Block title
en: Instantiate `Status` and `Info` channels
de: Instanziierung von `Status`- und `Info`-Kanälen

note: type: Plain text
en: `STATUS` and `INFO` are initialized outside the handler class so as to be _global references_ (no self. in front):
de: `STATUS` und `INFO` werden außerhalb der Handler-Klasse initialisiert, so dass es sich um _globale Referenzen_ handelt (kein self. vorangestellt):

note: type: delimited block -
en: ##########################################
    # **** instantiate libraries section **** #
    ###########################################
de: ##########################################
    **** Bibliotheken instanziieren Abschnitt **** #
    ###########################################

note: type: Block title
en: Register `STATUS` monitoring function
de: Register `STATUS` Überwachungsfunktion

note: type: Plain text
en: For the spindle speed indicator we need to know the current spindle speed.
    For this we _register_ with `STATUS` to:
de: Für die Spindeldrehzahlanzeige müssen wir die aktuelle Spindeldrehzahl kennen.
    Dazu _registrieren_ wir uns mit 'STATUS', um:

note: type: Plain text
en: _Call_ the `self.update_spindle()` _function_
de: _Aufruf_ der _Funktion `self.update_spindle()`

note: type: Block title
en: Add the widgets to the tab
de: Hinzufügen der Widgets zur Registerkarte

note: type: Plain text
en: We need to _make sure the Qt Designer widgets are already built_ before we try to add to them.
    For this, we add a call to `self.make_corner_widgets()` function to build our extra widgets at the right time, i.e. under the `initialized__()` function:
de: Wir müssen _sicherstellen, dass die Qt Designer Widgets bereits gebaut sind_, bevor wir versuchen, sie zu ergänzen.
    Zu diesem Zweck fügen wir einen Aufruf der Funktion `self.make_corner_widgets()` hinzu, um unsere zusätzlichen Widgets zum richtigen Zeitpunkt zu erstellen, d.h. unter der Funktion `initialized__()`:

note: type: Plain text
en: Ok let's code the function to build the widgets and add them in the tab widget.
    We are assuming there is a tab widget built with Designer called 'rightTab'.
de: Ok, lassen Sie uns die Funktion zum Erstellen der Widgets codieren und sie im Tab-Widget hinzufügen.
    Wir gehen davon aus, dass es ein mit Designer erstelltes Tab-Widget namens 'rightTab' gibt.

note: type: Plain text
en: We are assuming there is a tab widget built with Qt Designer called `rightTab`.
de: Wir gehen davon aus, dass es ein Tab-Widget gibt, das mit Qt Designer gebaut wurde und `rightTab` heißt.

note: type: delimited block -
en:     # add the container to the corner of the right tab widget
        self.w.rightTab.setCornerWidget(w)                        # <10>
de:     # den Container zur Ecke des rechten Tab-Widgets hinzufügen
        self.w.rightTab.setCornerWidget(w) # <10>

note: type: Plain text
en: This initializes the basic StateLed widget and uses `self.w.led` as the reference from then on.
de: Dies initialisiert das grundlegende StateLed-Widget und verwendet von da an `self.w.led` als Referenz.

note: type: Plain text
en: Since the state LED can be used for many indications, we must set the property that designates it as a spindle-at-speed LED.
de: Da die Zustands-LED für viele Anzeigen verwendet werden kann, müssen wir die Eigenschaft einstellen, die sie als LED für die Spindeldrehzahl kennzeichnet.

note: type: Plain text
en: This sets it as green when on.
de: Dadurch wird sie im eingeschalteten Zustand als grün angezeigt.

note: type: Plain text
en: This _widget's PyQt object instance_
de: dieses _Widgets PyQt-Objekt als Instanz_

note: type: Plain text
en: The _very top level parent_ of the screen
de: Die _übergeordnete Ebene_ des Bildschirms

note: type: Plain text
en: The _instance of QtVCP's path_ library
de: Die _Instanz der Pfadbibliothek von QtVCP

note: type: Plain text
en: the _instance of an optional preference file_
de: die _Instanz einer optionalen Präferenzdatei_

note: type: Plain text
en: the `Qsettings` _object_
de: das `Qsettings` _Objekt_

note: type: Plain text
en: Initializes a PyQt5 `QProgressBar`.
de: Initialisiert einen PyQt5 `QProgressBar`.

note: type: Plain text
en: Sets the max range of the progress bar to the max specified in the `INI`.
de: Setzt den maximalen Bereich des Fortschrittsbalkens auf den in der `INI` angegebenen Maximalwert.

note: type: Plain text
en: We create a QWidget
    Since you can only add one widget to the tab corner and we want two there, we must add both into a *container*.
de: Wir erstellen ein QWidget
    Da man nur ein Widget in die Tab-Ecke einfügen kann und wir dort zwei haben wollen, müssen wir beide in einen *Container* einfügen.

note: type: Plain text
en: add a QHBoxLayout to the QWidget. +
de: ein QHBoxLayout zum QWidget hinzufügen. +

note: type: Plain text
en: Then we add our QProgress bar and LED to the layout.
de: Dann fügen wir unseren QProgress-Balken und die LED in das Layout ein.

note: type: Plain text
en: Finally we add the QWidget (with our QProgress bar and LED in it) to the tab widget's corner.
de: Schließlich fügen wir das QWidget (mit unserem QProgress-Balken und der LED darin) in die Ecke des Tab-Widgets ein.

note: type: Block title
en: Create the `STATUS` monitoring function
de: Erstellen Sie die Überwachungsfunktion `STATUS`

note: type: Plain text
en: Now we build the function to actually update out the `QProgressBar` when `STATUS` updates the spindle speed:
de: Jetzt erstellen wir die Funktion, die den `QProgressBar` aktualisiert, wenn `STATUS` die Spindeldrehzahl aktualisiert:

note: type: delimited block -
en: ########################
    # callbacks from STATUS #
    ########################
    def update_spindle(self, data):
        self.w.rpm_bar.setInvertedAppearance(bool(data<0))       # <1>
        self.w.rpm_bar.setFormat('{0:d} RPM'.format(int(data)))  # <2>
        self.w.rpm_bar.setValue(abs(data))                       # <3>
de: #####################
    # callbacks von STATUS #
    #####################
    def update_spindle(self, data):
        self.w.rpm_bar.setInvertedAppearance(bool(data<0))       # <1>
        self.w.rpm_bar.setFormat('{0:d} RPM'.format(int(data)))  # <2>
        self.w.rpm_bar.setValue(abs(data))                       # <3>

note: type: Plain text
en: In this case we chose to display left-to-right or right-to-left, depending if we are turning clockwise or anticlockwise.
de: In diesem Fall haben wir uns für die Darstellung von links nach rechts oder von rechts nach links entschieden, je nachdem, ob wir uns im oder gegen den Uhrzeigersinn drehen.

note: type: Plain text
en: This formats the writing in the bar.
de: Dadurch wird die Schrift in der Leiste formatiert.

note: type: Title ==
en: Update/Read Objects Periodically
de: Objekte periodisch aktualisieren/auslesen

note: type: Plain text
en: Sometimes you need to *update a widget or read a value regularly* that isn't covered by normal libraries.
de: Manchmal muss man *ein Widget aktualisieren oder regelmäßig einen Wert auslesen*, der von den normalen Bibliotheken nicht abgedeckt wird.

note: type: Plain text
en: Here we update an LED based on a watched HAL pin every 100ms.
de: Hier aktualisieren wir eine LED auf der Grundlage eines überwachten HAL-Pins alle 100 ms.

note: type: Plain text
en: We assume there is an LED named `led` in the Qt Designer UI file.
de: Wir nehmen an, dass in der Qt Designer UI Datei eine LED mit dem Namen `led` vorhanden ist.

note: type: Block title
en: Load the `Qhal` library for access to QtVCP's HAL component
de: Laden Sie die `Qhal`-Bibliothek für den Zugriff auf die HAL-Komponente von QtVCP

note: type: Block title
en: Instantiate `Qhal`
de: Instanziiere `Qhal`

note: type: Plain text
en: Now add/modify these sections to include code that is similar to this:
de: Fügen Sie nun diese Abschnitte hinzu bzw. ändern Sie sie so, dass sie einen ähnlichen Code enthalten wie dieser:

note: type: Block title
en: Register a function to be called at `CYCLE_TIME` period
de: Registrierung einer Funktion, die im Zeitraum `CYCLE_TIME` aufgerufen wird

note: type: Plain text
en: This is usually every 100ms
de: Dies geschieht normalerweise alle 100&#8239;ms.

note: type: delimited block -
en:     # register a function to be called at CYCLE_TIME period (usually every 100ms)
        STATUS.connect('periodic', lambda w: self.update_periodic())
de:     # eine Funktion registrieren, die in einer CYCLE_TIME-Periode aufgerufen wird (normalerweise alle 100 ms)
        STATUS.connect('periodic', lambda w: self.update_periodic())

note: type: Block title
en: Create the custom function to be called periodically
de: Erstellen Sie die benutzerdefinierte Funktion, die periodisch aufgerufen werden soll

note: type: Plain text
en: _QtVCP can automatically set up_ *ZMQ messaging* _to send and/or receive remote messages from external programs_.
de: _QtVCP kann automatisch_ ein *ZMQ-Messaging* _einrichten, um Remote-Nachrichten von externen Programmen zu senden und/oder zu empfangen_.

note: type: Plain text
en: As always, consider *security* before letting programs interface though messaging.
de: Wie immer sollte man die *Sicherheit* im Auge behalten, bevor man Programmen eine Schnittstelle für Nachrichtenübermittlung einräumt.

note: type: Plain text
en: Sometimes you want to *control the screen with a separate program*.
de: Manchmal möchte man den *Bildschirm mit einem separaten Programm steuern*.

note: type: Block title
en: Enable reception of ZMQ messages
de: Aktivieren des Empfangs von ZMQ-Nachrichten

note: type: Plain text
en: In the `ScreenOptions` widget, you can select the property *`use_receive_zmq_option`*.
    You can also set this property directly _in the handler file_, as in this sample.
de: Im Widget `ScreenOptions` können Sie die Eigenschaft *`use_receive_zmq_option`* auswählen.
    Sie können diese Eigenschaft auch direkt _in der Handler-Datei_ einstellen, wie in diesem Beispiel.

note: type: Plain text
en: We assume the `ScreenOptions` widget is called `screen_options` in Qt Designer:
de: Wir nehmen an, dass das `ScreenOptions`-Widget in Qt Designer `screen_options` genannt wird:

note: type: Block title
en: Add a function to be called on ZMQ message reception
de: Hinzufügen einer Funktion, die beim Empfang einer ZMQ-Nachricht aufgerufen wird

note: type: Plain text
en: Let's add a specific function for testing.
    You will need to run LinuxCNC from a terminal to see the printed text.
de: Fügen wir eine spezielle Funktion zum Testen hinzu.
    Sie müssen LinuxCNC von einem Terminal aus starten, um den gedruckten Text zu sehen.

note: type: Block title
en: Create an external program sending ZMQ messages that will trigger function call
de: Erstellen eines externen Programms, das ZMQ-Nachrichten sendet, die einen Funktionsaufruf auslösen

note: type: Plain text
en: Set the *function to call* and the *arguments to send* to that function.
de: Legen Sie die *aufzurufende Funktion* und die *zu sendenden Argumente* auf diese Funktion fest.

note: type: Plain text
en: You will need to know the _signature_ of the function you wish to call.
    Also note that the _message is converted to a json object_.
    This is because ZMQ sends byte messages not Python objects.
    `json` converts Python objects to bytes and will be converted back when received.
de: Sie müssen die _Signatur_ der Funktion kennen, die Sie aufrufen möchten.
    Beachten Sie auch, dass die _Nachricht in ein json-Objekt_ umgewandelt wird.
    Das liegt daran, dass ZMQ Byte-Nachrichten und keine Python-Objekte sendet.
    json" konvertiert Python-Objekte in Bytes und wird beim Empfang wieder zurück konvertiert.

note: type: Plain text
en: You may also want to *communicate with an external program from the screen*.
de: Sie können auch *mit einem externen Programm vom Bildschirm aus kommunizieren*.

note: type: Plain text
en: In the `ScreenOptions` widget, you can select the property *`use_send_zmq_message`*.
    You can also set this property directly _in the handler file_, as in this sample.
de: Im Widget `ScreenOptions` können Sie die Eigenschaft *`use_send_zmq_message`* auswählen.
    Sie können diese Eigenschaft auch direkt _in der Handler-Datei_ einstellen, wie in diesem Beispiel.

note: type: Plain text
en: We assume the `ScreenOptions` widget is called `screen_options` in Qt Designer: +
de: Wir nehmen an, dass das `ScreenOptions`-Widget in Qt Designer `screen_options` heißt: +

note: type: Block title
en: Enable sending of ZMQ messages
de: Senden von ZMQ-Nachrichten aktivieren

note: type: delimited block -
en: ########################
    # **** INITIALIZE **** #
    ########################
    # widgets allows access to  widgets from the QtVCP files
    # at this point the widgets and hal pins are not instantiated
    def __init__(self, halcomp,widgets,paths):
        # directly select ZMQ message sending
        self.w.screen_options.setProperty('use_send_zmq_option',True)
de: ########################
    # **** INITIALIZE **** #
    ########################
    # widgets erlaubt den Zugriff auf Widgets aus den QtVCP-Dateien.
    # zu diesem Zeitpunkt sind die Widgets und Hal-Pins noch nicht instanziiert 
    def __init__(self, halcomp,widgets,paths):
        # directly select ZMQ message sending
        self.w.screen_options.setProperty('use_send_zmq_option',True)

note: type: Plain text
en: This allows sending messages to a separate program.
    The message sent will depend on what the external program is expecting.
de: Dies ermöglicht das Senden von Nachrichten an ein separates Programm.
    Welche Nachricht gesendet wird, hängt davon ab, was das externe Programm erwartet.

note: type: Block title
en: Create a function to send ZMQ messages
de: Erstellen einer Funktion zum Senden von ZMQ-Nachrichten

note: type: Plain text
en: Let's add a specific function for testing.
    You will need to run LinuxCNC from a terminal to see the printed text.
    Also, something needs to be added to call this function, such as a button click.
de: Lassen Sie uns eine spezielle Funktion zum Testen hinzufügen.
    Sie müssen LinuxCNC von einem Terminal aus starten, um den gedruckten Text zu sehen.
    Außerdem muss etwas hinzugefügt werden, um diese Funktion aufzurufen, wie z.B. ein Tastenklick.

note: type: Block title
en: Use or create a program that will receive ZMQ messages
de: Verwenden oder erstellen Sie ein Programm, das ZMQ-Nachrichten empfangen kann

note: type: Plain text
en: Here is a sample program that will receive the message and print it to the terminal:
de: Hier ist ein Beispielprogramm, das die Nachricht empfängt und auf dem Terminal ausgibt:

note: type: Plain text
en: There are several ways to *report information to the user*.
de: Es gibt mehrere Möglichkeiten, dem Benutzer *Informationen zu übermitteln*.

note: type: Plain text
en: A *status bar* is used for _short information_ to show the user. +
de: Eine *Statusleiste* wird für _short information_ verwendet, um den Benutzer anzuzeigen. +

note: type: Plain text
en: Not all screens have a status bar.
de: Nicht alle Bildschirme haben eine Statusleiste.

note: type: Plain text
en: `timeout` is in seconds and we assume `statusbar` is the Qt Designer set name of the widget.
de: `timeout` ist in Sekunden und wir nehmen an, dass "statusbar" der Name des Qt Designer Widgets ist.

note: type: Plain text
en: You can also use the `Status` library to send a message to the `notify` library if it is enabled (usually set in `ScreenOptions` widget): this will send the message to the statusbar and the *desktop notify dialog*.
de: Sie können auch die `Status'-Bibliothek verwenden, um eine Nachricht an die `notify'-Bibliothek zu senden, wenn diese aktiviert ist (normalerweise im `ScreenOptions'-Widget eingestellt): dies wird die Nachricht an die Statusleiste und den *Desktop Notify-Dialog* senden.

note: type: Plain text
en: The messages are also recorded until the user erases them using controls.
    The users can recall any recorded messages.
de: Die Nachrichten werden auch aufgezeichnet, bis der Benutzer sie mit Hilfe der Bedienelemente löscht.
    Die Benutzer können alle aufgezeichneten Nachrichten abrufen.

note: type: Plain text
en: Show the message for a short time only.
de: Anzeigen der Nachricht nur für eine kurze Zeit.

note: end definition list type: Block title
en: Example of sending an operator message:
de: Beispiel für das Versenden einer Bedienermeldung:

note: type: Plain text
en: You can send messages thru LinuxCNC's operator message functions.
    These are usually caught by the notify system, so are equal to above.
    They would be printed to the terminal as well.
de: Sie können Nachrichten über die Bedienernachrichtenfunktionen (engl. operator message functions) von LinuxCNC senden.
    Diese werden normalerweise vom Benachrichtigungssystem abgefangen, sind also gleich oben.
    Sie würden auch auf das Terminal gedruckt werden.

note: type: Title ==
en: Catch Focus Changes
de: Fokusänderungen abfangen

note: type: Plain text
en: Focus is used to *direct user action* such as keyboard entry to the proper widget.
de: Der Fokus wird verwendet, um Benutzeraktionen wie Tastatureingaben auf das richtige Widget zu lenken.

note: type: Block title
en: Get currently focused widget
de: Aktuell fokussiertes Widget abrufen

note: type: Block title
en: Get focused widget when focus changes
de: Fokussiertes Widget erhalten, wenn sich der Fokus ändert

note: type: delimited block -
en: # at this point:
    # the widgets are instantiated.
    # the HAL pins are built but HAL is not set ready
    def initialized__(self):
        QtWidgets.QApplication.instance().event_filter.focusIn.connect(self.focusInChanged)
de: # zu diesem Zeitpunkt:
    # sind die Widgets instanziiert.
    # die HAL-Pins sind gebaut, aber HAL ist nicht bereit
    def initialized__(self):
        QtWidgets.QApplication.instance().event_filter.focusIn.connect(self.focusInChanged)

note: type: Plain text
en: Notice we sometimes compare to `widget`, sometimes to `widget.parent()`.
de: Beachten Sie, dass wir manchmal mit `widget`, manchmal mit `widget.parent()` vergleichen.

note: type: Plain text
en: This is because _some QtVCP widgets are built from multiple_ *_sub-widgets_* and the latter actually get the focus; so we need to *check the parent* of those sub-widgets.
de: Das liegt daran, dass _einige QtVCP-Widgets aus mehreren_ *_Sub-Widgets_* aufgebaut sind und letztere tatsächlich den Fokus erhalten; daher müssen wir *den Elternteil* dieser Sub-Widgets überprüfen.

note: type: Plain text
en: Other times the main widget is what gets the focus; ie G-code display widget can be set to accept focus and in that case there are no sub-widgets in it so comparing to the `widget.parent()` would get you the container that holds the G-code widget.
de: In anderen Fällen ist das Hauptwidget das, was den Fokus erhält; d.h. das G-Code-Anzeige-Widget kann so eingestellt werden, dass es den Fokus annimmt, und in diesem Fall gibt es keine Unter-Widgets darin, so dass ein Vergleich mit `widget.parent()` den Container ergeben würde, der das G-Code-Widget enthält.

note: type: Plain text
en: Building custom widgets allows one to *use the Qt Designer editor to place a custom widget* _rather than doing it manually in a handler file_.
de: Die Erstellung von benutzerdefinierten Widgets ermöglicht es, *den Qt Designer-Editor zu verwenden, um ein benutzerdefiniertes Widget zu platzieren*, _anstatt dies manuell in einer Handler-Datei zu tun_.

note: type: Plain text
en: A useful custom widgets would be a great way to contribute back to LinuxCNC.
de: Ein nützliches benutzerdefiniertes Widget wäre eine großartige Möglichkeit, zu LinuxCNC beizutragen.

note: type: Plain text
en: *Widget* is the _general name for the UI objects_ such as buttons and
    labels in PyQt.
de: *Widget* ist der _allgemeine Name für die UI-Objekte_ wie Buttons und
    Beschriftungen in PyQt.

note: type: Plain text
en: All these widgets can be _placed with Qt Designer editor_ - allowing one to _see the result_ before actually loading the panel in LinuxCNC.
de: Alle diese Widgets können _mit Qt Designer Editor_ platziert werden - so dass man _das Ergebnis_ sehen kann, bevor man das Panel in LinuxCNC lädt.

note: type: Plain text
en: It's original intend was for building the graphic widgets for programs.
    We leverage it to *build screens and panels for LinuxCNC*.
de: Die ursprüngliche Absicht war es, die grafischen Widgets für Programme zu erstellen.
    Wir nutzen es, um *Bildschirme und Panels für LinuxCNC* zu bauen.

note: type: Plain text
en: In Qt Designer, on the left side of the editor, you find *three categories of LinuxCNC widgets*:
de: In Qt Designer, auf der linken Seite des Editors, finden Sie *drei Kategorien von LinuxCNC Widgets*:

note: type: Plain text
en: _LinuxCNC controller widgets_.
de: _LinuxCNC-Controller-Widgets_.

note: type: Plain text
en: _dialog widgets_.
de: _Dialog-Widgets_.

note: type: Plain text
en: For Qt Designer to _add custom widgets_ to it's editor it must have a *plugin* added to the right folder.
de: Damit Qt Designer benutzerdefinierte Widgets zu seinem Editor _hinzufügen_ kann, muss ein *Plugin* zum richtigen Ordner hinzugefügt werden.

note: type: Plain text
en: QtVCP does _extra setup_ for *widgets subclassed from `_HALWidgetBase`*, aka "HAL-ified" widgets.
de: QtVCP macht _extra setup_ für *Widgets, die Spezialisierungen* (Unterklassen) *von `_HALWidgetBase`* sind, auch bekannt als "HAL-ified" Widgets.

note: type: Plain text
en: Calling an _extra setup function_
de: Aufruf einer _extra Setup-Funktion_

note: type: Plain text
en: Calling a _closing cleanup function_ at shutdown.
de: Aufruf einer _schließenden Aufräumfunktion_ beim Herunterfahren.

note: type: Plain text
en: These functions are not called when the Qt Designer editor displays the widgets.
de: Diese Funktionen werden nicht aufgerufen, wenn der Qt Designer Editor die Widgets anzeigt.

note: type: Plain text
en: When QtVCP builds a screen from the `.ui` file:
de: Wenn QtVCP einen Bildschirm aus der '.ui'-Datei erstellt:

note: type: Plain text
en: It searches for all the HAL-ified widgets.
de: Es wird nach allen HAL-ifizierten Widgets gesucht.

note: type: Plain text
en: It finds the `ScreenOptions` widget, to collect information it needs to inject into the other widgets
de: Er findet das Widget `ScreenOptions`, um Informationen zu sammeln, die es in die anderen Widgets einspeisen muss

note: type: Plain text
en: It instantiates each widget and if it is a HAL-ified widget, calls the `hal_init()` function.
    *`hal_init()`* is defined in the base class and it:
de: Er instanziiert jedes Widget und ruft, wenn es ein HAL-ifiziertes Widget ist, die Funktion `hal_init()` auf.
    *`hal_init()`* ist in der Basisklasse definiert und sie:

note: type: Plain text
en: Adds variables such as the preference file to every HAL-ified widget.
de: Fügt Variablen wie die Einstellungsdatei zu jedem HAL-ifizierten Widget hinzu.

note: type: Plain text
en: Call `+_hal_init()+` on the widget.
    `+_hal_init()+` allows the widget designer to do setup that requires access to the extra variables.
de: Ruft `+_hal_init()+` für das Widget auf.
    `+_hal_init()+` erlaubt es dem Widget-Designer, Einstellungen vorzunehmen, die den Zugriff auf zusätzliche Variablen erfordern.

note: type: Plain text
en: Here is a description of the extra variables injected into "HAL-ified" widgets:
de: Hier finden Sie eine Beschreibung der zusätzlichen Variablen, die in "HAL-ifizierte" Widgets eingefügt werden:

note: type: Plain text
en: This _widget's object instance_
de: Diese _Objektinstanz des Widgets_

note: type: Plain text
en: The _QtVCP's path library instance_
de: Die Instanz der _QtVCP-Pfadbibliothek_

note: type: Plain text
en: The _optional preference file instance_
de: Die _optionale Instanz der Einstellungsdatei_

note: type: Plain text
en: The `Qsettings` _object instance_
de: Die `Qsettings` _Objektinstanz_

note: type: Title ===
en: cleanup process
de: Aufräum-Prozess

note: type: Plain text
en: When QtVCP closes, it calls the *`+_hal_cleanup()+`* function _on all HAL-ified widgets_.
de: Wenn QtVCP geschlossen wird, ruft es die *`+_hal_cleanup()+`* Funktion _auf allen HAL-ifizierten Widgets_ auf.

note: type: Plain text
en: The base class creates an empty `+_hal_cleanup()+` function, which can be redefined in the custom widget subclass.
de: Die Basisklasse erstellt eine leere Funktion `+_hal_cleanup()+`, die in der Unterklasse des benutzerdefinierten Widgets neu definiert werden kann.

note: type: Plain text
en: This can be used to do such things as record preferences, etc.
de: Damit können Sie z. B. Präferenzen aufzeichnen usw.

note: type: Plain text
en: This function is not called when the Qt Designer editor displays the widgets.
de: Diese Funktion wird nicht aufgerufen, wenn der Qt Designer Editor die Widgets anzeigt.

note: type: Plain text
en: HAL widgets are the simplest to show example of.
    `qtvcp/widgets/simple_widgets.py` holds many HAL only widgets.
de: HAL-Widgets sind die einfachsten, um ein Beispiel zu zeigen.
    Die Datei `qtvcp/widgets/simple_widgets.py` enthält viele reine HAL-Widgets.

note: type: Plain text
en: Lets look at a snippet of `simple_widgets.py`:
de: Sehen wir uns einen Ausschnitt aus `simple_widgets.py` an:

note: type: Block title
en: In the 'Imports' section
de: Im Abschnitt "Imports"

note: type: Plain text
en: This is where we import libraries that our widget class needs.
de: Hier importieren wir die Bibliotheken, die unsere Widget-Klasse benötigt.

note: type: Plain text
en: In this case we need access to:
de: In diesem Fall benötigen wir Zugang zu:

note: type: Plain text
en: PyQt's QtWidgets library,
de: Die QtWidgets-Bibliothek von PyQt,

note: TODO explain `_HalToggleBase` and `_HalScaleBase` too type: Plain text
en: QtVCP's widget `baseclass` 's *`_HalSensitiveBase`* for _automatic HAL pin setup_ and to _disable/enable the widget_ (also known as input sensitivity).
    There is also `_HalToggleBase`, and `_HalScaleBase` functions available in the library.`_HalToggleBase`, and `_HalScaleBase`
de: QtVCP's widget `baseclass` 's *`_HalSensitiveBase`* für _automatisches HAL-Pin-Setup_ und zum _Deaktivieren/Aktivieren des Widgets_ (auch bekannt als Eingangsempfindlichkeit).
    Es gibt auch `_HalToggleBase`, und `_HalScaleBase` Funktionen in der Bibliothek.`_HalToggleBase`, und `_HalScaleBase`

note: type: Block title
en: In the 'WIDGET' section
de: Im Abschnitt 'WIDGET'

note: type: Plain text
en: `QGridLayout` allows one to:
de: `QGridLayout` erlaubt es,:

note: type: Plain text
en: _Place objects in a grid_ fashion.
de: _Objekte in einem Raster zu positionieren_.

note: type: Plain text
en: _Enable/disable all widgets inside it_ based on a *HAL pin state*.
de: _Alle darin enthaltenen Widgets zu aktivieren/deaktivieren_, basierend auf einem *HAL-Pin-Status*.

note: type: Plain text
en: Line by Line:
de: Zeile für Zeile:

note: type: Plain text
en: This defines the _class name_ and the _libraries it inherits from_.
    This class, named `Lcnc_GridLayout`, inherits the functions of `QWidget` and `+_HalSensitiveBase+`.
    `+_HalSensitiveBase+` is 'subclass' of *`+_HalWidgetBase+`*, the _base class of most QtVCP widgets_, meaning it has all the functions of `+_HalWidgetBase+` plus the functions of `+_HalSensitiveBase+`.
    It adds the function to make the widget be enabled or disabled based on a HAL input BIT pin.
de: Dies definiert den _Klassennamen_ und die _Bibliotheken, von denen sie erbt_.
    Diese Klasse, genannt `Lcnc_GridLayout`, erbt die Funktionen von `QWidget` und `+_HalSensitiveBase+`.
    `+_HalSensitiveBase+` ist eine 'Unterklasse' von *`+_HalWidgetBase+`*, der _Basisklasse der meisten QtVCP-Widgets_, d.h. sie hat alle Funktionen von `+_HalWidgetBase+` plus die Funktionen von `+_HalSensitiveBase+`.
    Sie fügt die Funktion hinzu, um das Widget basierend auf einem HAL-Eingangs-BIT-Pin zu aktivieren oder zu deaktivieren.

note: type: Plain text
en: This is the function _called when the widget is first made_ (said instantiated) - this is pretty standard.
de: Dies ist die Funktion, die _aufgerufen wird, wenn das Widget zum ersten Mal erstellt wird_ (d.h. instanziiert wird) - das ist ziemlich standardmäßig.

note: type: Plain text
en: This function initializes our widget's *`Super` classes*.
    `Super` just means the _inherited baseclasses_, that is `QWidget` and `_HalSensitiveBase`.
    Pretty standard other than the widget name will change.
de: Diese Funktion initialisiert die *`Super`-Klassen* unseres Widgets.
    Super" bedeutet einfach die _vererbten Basisklassen_, d.h. `QWidget` und `_HalSensitiveBase`.
    Außer dem Namen des Widgets wird sich nichts ändern.

note: type: Title ==
en: Custom Controller Widgets Using `STATUS`
de: Benutzerdefinierte Controller-Widgets mit `STATUS`

note: type: Plain text
en: Widget that interact with LinuxCNC's controller are only a little more complicated and they require some _extra libraries_.
de: Widget, die mit LinuxCNC-Controller interagieren sind nur ein wenig komplizierter und sie erfordern einige _extra Bibliotheken_.

note: type: Plain text
en: In this cut down example we will add properties that can be changed in Qt Designer.
de: In diesem reduzierten Beispiel werden wir Eigenschaften hinzufügen, die im Qt Designer geändert werden können.

note: type: Plain text
en: This LED indicator widget will respond to selectable LinuxCNC controller states.
de: Dieses LED-Anzeige-Widget reagiert auf wählbare Zustände der LinuxCNC-Steuerung.

note: type: Plain text
en: `pyqtProperty` so we can interact with the Qt Designer editor,
de: `pyqtProperty`, damit wir mit dem Qt Designer-Editor interagieren können,

note: type: Plain text
en: `LED` because our custom widget is based on it,
de: `LED`, weil unser benutzerdefiniertes Widget darauf basiert,

note: type: Plain text
en: `Status` because it gives us status messages from LinuxCNC. +
de: `Status` weil es uns Statusmeldungen von LinuxCNC gibt. +

note: type: Title ===
en: In The 'Instantiate Libraries' Section
de: Im Abschnitt 'Bibliotheken instanziieren'

note: type: Plain text
en: Typically we instantiated the library _outside of the widget class_ so that the reference to it is *global* - meaning you don't need to use `self.` in front of it.
de: Typischerweise haben wir die Bibliothek _außerhalb der Widget-Klasse_ instanziiert, so dass der Verweis auf sie *global* ist - was bedeutet, dass Sie nicht `self.` davor verwenden müssen.

note: type: Plain text
en: By convention we use _all capital_ letters in the name for global references.
de: Konventionell verwenden wir _große_ Buchstaben im Namen für globale Verweise.

note: type: Title ===
en: In The 'Custom Widget Class Definition' Section
de: Im Abschnitt "Benutzerdefinierte Widget-Klassendefinition"

note: type: Plain text
en: This is the meat and potatoes of our custom widget.
de: Dies ist das Herzstück unseres benutzerdefinierten Widgets.

note: type: Block title
en: Class definition and instance initialization function
de: Klassendefinition und Instanzinitialisierungsfunktion

note: type: Plain text
en: Defines the *name* _of our custom widget_ and what other _class it inherits from_.
    In this case we inherit `LED` - a QtVCP widget that represents a status light.
de: Definiert den *Namen* _unseres benutzerdefinierten Widgets_ und von welcher anderen _Klasse es erbt_.
    In diesem Fall erben wir `LED` - ein QtVCP-Widget, das eine Statusleuchte darstellt.

note: type: Plain text
en: Typical of most widgets - called when the widget is first made.
de: Typisch für die meisten Widgets - wird aufgerufen, wenn das Widget zum ersten Mal erstellt wird.

note: type: Plain text
en: Typical of most widgets - calls the parent (super) widget initialization code.
de: Typisch für die meisten Widgets - ruft den Initialisierungscode des übergeordneten (Super-)Widgets auf.

note: type: Plain text
en: Then we set some attributes:
de: Dann setzen wir einige Attribute:

note: type: Plain text
en: Inherited from `Lcnc_Led` - we set it here so no HAL pin is made.
de: Geerbt von `Lcnc_Led` - wir setzen ihn hier, damit kein HAL-Pin erstellt wird.

note: type: Plain text
en: Inherited from `Lcnc_led` - we set it to make sure the LED is off.
de: Geerbt von `Lcnc_led` - wir setzen es, um sicherzustellen, dass die LED aus ist.

note: type: Block title
en: Widget's HAL initialization function
de: Die HAL-Initialisierungsfunktion des Widgets

note: type: Plain text
en: This function connects `STATUS` (LinuxCNC status message library) to our widget so that the LED will on or off based on the selected state of the controller.
de: Diese Funktion verbindet `STATUS` (LinuxCNC-Statusmeldungsbibliothek) mit unserem Widget, so dass die LED je nach dem gewählten Status des Controllers ein- oder ausgeschaltet wird.

note: type: Plain text
en: We have two states we can choose from `is_estopped` or `is_on`.
    Depending on which is active our widget get connected to the appropriate STATUS messages.
de: Wir haben zwei Zustände, zwischen denen wir wählen können: `is_estopped` oder `is_on`.
    Je nachdem, welcher Zustand aktiv ist, wird unser Widget mit den entsprechenden STATUS-Meldungen verbunden.

note: type: Plain text
en: *`+_hal_init()+`* is _called on each widget that inherits_ `+_HalWidgetBase+`,
    when QtVCP first builds the screen. +
    You might wonder why it's called on this widget since we didn't have
    `+_HalWidgetBase+` in our class definition (`class Lcnc_State_Led(Lcnc_Led):`) -
    it's called because `Lcnc_Led` inherits `+_HalWidgetBase+`.
de: *`+_hal_init()+`* wird _auf jedem Widget aufgerufen, das `+_HalWidgetBase+` erbt,
    wenn QtVCP zum ersten Mal den Bildschirm aufbaut. +
    Sie werden sich vielleicht fragen, warum diese Funktion bei diesem Widget aufgerufen wird, da wir nicht über
    `+_HalWidgetBase+` in unserer Klassendefinition (`class Lcnc_State_Led(Lcnc_Led):`) -
    es wird aufgerufen, weil `Lcnc_Led` `+_HalWidgetBase+` erbt.

note: type: Plain text
en: In this function you have access to some extra information (though we don't use them in this example):
de: In dieser Funktion haben Sie Zugang zu einigen zusätzlichen Informationen (obwohl wir sie in diesem Beispiel nicht verwenden):

note: type: Plain text
en: We could use this information to create HAL pins or look up image paths etc.
de: Wir könnten diese Informationen nutzen, um HAL-Pins zu erstellen oder Bildpfade nachzuschlagen usw.

note: type: Plain text
en: Lets look at this line more closely:
de: Schauen wir uns diese Zeile genauer an:

note: type: Plain text
en: `STATUS` is very common theme is widget building.
    `STATUS` uses `GObject` message system to send messages to widgets that register to it.
    This line is the registering process.
de: `STATUS` ist ein sehr verbreitetes Thema beim Erstellen von Widgets.
    `STATUS` verwendet das `GObject`-Nachrichtensystem, um Nachrichten an Widgets zu senden, die sich dafür registrieren.
    Diese Zeile ist der Registrierungsprozess.

note: type: Plain text
en: `state-estop` is the message we wish to listen for and act on. There are many messages available.
de: `state-estop` ist die Nachricht, auf die wir hören und auf die wir reagieren wollen. Es sind viele Nachrichten verfügbar.

note: type: Plain text
en: `lambda w:self._flip_state(True)` is what happens when the message is caught.
    The lambda function accepts the widget instance (`w`) that GObject sends it and then calls the function `self._flip_state(True)`.
    Lambda was used to strip the (`w`) object before calling the `self._flip_state` function.
    It also allowed use to send `self._flip_state()` the True state.
de: lambda w:self._flip_state(True)` ist das, was passiert, wenn die Nachricht abgefangen wird.
    Die Lambda-Funktion akzeptiert die Widget-Instanz (`w`), die GObject ihr sendet und ruft dann die Funktion `self._flip_state(True)` auf.
    Lambda wurde verwendet, um das (`w`) Objekt vor dem Aufruf der Funktion `self._flip_state` zu strippen.
    Es erlaubte auch die Verwendung, um `self._flip_state()` den Zustand True zu senden.

note: type: Plain text
en: This is the function that actually flips the state of the LED.
    It is what gets called when the appropriate STATUS message is accepted.
de: Dies ist die Funktion, die den Zustand der LED tatsächlich umschaltet.
    Sie wird aufgerufen, wenn die entsprechende STATUS-Meldung akzeptiert wird.

note: type: Plain text
en: in which the widget and any data must be accepted by the function.
de: in dem das Widget und alle Daten von der Funktion akzeptiert werden müssen.

note: type: Title ====
en: In the 'Designer Properties Setter/Getters/Resetters' Section
de: Im Abschnitt 'Designer Properties Setter/Getters/Resetters'

note: type: Plain text
en: This is _how Qt Designer sets the attributes of the widget_.
    This _can also be called directly_ in the widget.
de: Dies ist _die Art und Weise, wie Qt Designer die Attribute des Widgets setzt_.
    Dies _kann auch direkt_ im Widget aufgerufen werden.

note: type: Title ====
en: In the 'Designer properties' section
de: Im Abschnitt "Designereigenschaften"

note: type: Plain text
en: This is the *registering of properties in Qt Designer*.
de: Dies ist die *Registrierung von Eigenschaften in Qt Designer*.

note: type: Plain text
en: The *property name*:
de: Der *Eigenschaftsname*:

note: type: Plain text
en: is the _text used in Qt Designer_,
de: ist der _Text, der in Qt Designer_ verwendet wird,

note: type: Plain text
en: _cannot be the same as the attributes_ they represent.
de: _kann nicht mit den Attributen identisch sein_, die sie darstellen.

note: type: Plain text
en: These properties show in Qt Designer in the order they appear here.
de: Diese Eigenschaften werden im Qt Designer in der Reihenfolge angezeigt, in der sie hier erscheinen.

note: type: Title ==
en: Custom Controller Widgets with Actions
de: Benutzerdefinierte Controller-Widgets mit Aktionen

note: type: Plain text
en: Here is an example of a widget that sets the user reference system.
de: Hier ist ein Beispiel für ein Widget, welches das Benutzerreferenzsystem festlegt.

note: type: Plain text
en: the machine controller state using the `ACTION` library,
de: den Zustand der Maschinensteuerung mit Hilfe der Bibliothek `ACTION`,

note: type: Plain text
en: whether the button can be clicked or not using the `STATUS` library.
de: ob die Schaltfläche mit Hilfe der `STATUS`-Bibliothek angeklickt werden kann oder nicht.

note: type: delimited block -
en: # Instantiate the libraries with global reference
    # STATUS gives us status messages from LinuxCNC
    # INFO holds INI details
    # ACTION gives commands to LinuxCNC
    STATUS = Status()
    INFO = Info()
    ACTION = Action()
de: # Instanziieren Sie die Bibliotheken mit einer globalen Referenz.
    # STATUS gibt uns Statusmeldungen von LinuxCNC
    # INFO enthält INI-Details
    # ACTION gibt Befehle an LinuxCNC
    STATUS = Status()
    INFO = Info()
    ACTION = Aktion()

note: type: Title ==
en: Stylesheet Property Changes Based On Events
de: Stylesheet-Eigenschaftsänderungen auf der Grundlage von Ereignissen

note: type: Plain text
en: It's possible to *have widgets restyled when events change*.
de: Es ist möglich, *Widgets bei Ereignisänderungen neu zu gestalten*.

note: FIXME What does "polish" really mean ? type: Plain text
en: You must explicitly _"polish" the widget_ to have PyQt redo the style.
    This is a relatively expensive function so should be used sparingly.
de: Sie müssen das Widget explizit _"polieren", damit PyQt den Stil wiederherstellt.
    Dies ist eine relativ teure Funktion und sollte daher sparsam verwendet werden.

note: type: Plain text
en: This example sets an `isHomed` property based on LinuxCNC's homed state and in turn uses it to change stylesheet properties:
de: Dieses Beispiel setzt eine "isHomed"-Eigenschaft basierend auf dem "homed"-Zustand von LinuxCNC und verwendet diese wiederum, um Stylesheet-Eigenschaften zu ändern:

note: type: delimited block -
en:     # update ishomed property
        # polish widget so stylesheet sees the property change
        # some stylesheets color the text on home/unhome
        def _home_status_polish(self, d, state):
            if self.joint_number = d:
                self.setProperty('isHomed', state)
                self.style().unpolish(self)
                self.style().polish(self)
de:     # ishomed-Eigenschaft aktualisieren
        # Widget polieren, damit Stylesheet die Änderung der Eigenschaft sieht
        # einige Stylesheets färben den Text bei home/unhome
        def _home_status_polish(self, d, state):
            if self.joint_number = d:
                self.setProperty('isHomed', state)
                self.style().unpolish(self)
                self.style().polish(self)

note: type: Plain text
en: Here is a sample stylesheet to change text color based on home state.
de: Hier ist ein Beispiel-Stylesheet zum Ändern der Textfarbe basierend auf dem Home-Status.

note: type: Plain text
en: In this case any widget based on the HomeLabel widget above will change text color.
    You would usually pick specific widgets using `HomeLabel #specific_widget_name[homed=true]`:
de: In diesem Fall wird jedes Widget, das auf dem obigen HomeLabel-Widget basiert, die Textfarbe ändern.
    Normalerweise würden Sie bestimmte Widgets mit `HomeLabel #specific_widget_name[homed=true]` auswählen:

note: type: Title ==
en: Use Stylesheets To Change Custom Widget Properties
de: Verwenden von Stylesheets zum Ändern benutzerdefinierter Widget-Eigenschaften

note: type: Plain text
en: Sample stylesheet that sets a custom widget property.
de: Beispiel-Stylesheet, das eine benutzerdefinierte Widget-Eigenschaft festlegt.

note: type: Title ==
en: Widget Plugins
de: Widget-Plugins

note: type: Plain text
en: We must _register our custom widget_ for Qt Designer to use them. +
de: Wir müssen unsere benutzerdefinierten Widgets _registrieren_, damit Qt Designer sie verwenden kann. +

note: type: Plain text
en: Here are a typical samples.
    They would need to be added to `qtvcp/plugins/`
    Then `qtvcp/plugins/qtvcp_plugin.py` would need to be adjusted to _import_ them.
de: Hier sind ein paar typische Beispiele.
    Sie müssten zu `qtvcp/plugins/` hinzugefügt werden.
    Dann müsste `qtvcp/plugins/qtvcp_plugin.py` angepasst werden, um sie zu _importieren_.

note: type: Title ===
en: Making a plugin with a MenuEntry dialog box
de: Erstellen eines Plugins mit einem Dialogfeld "MenuEntry"

note: type: Plain text
en: the _handler file_, and
de: die _Handler-Datei_, und

note: type: Title ==
en: QtVCP Startup To Shutdown
de: QtVCP vom Startup bis zum Herunterfahren

note: type: Plain text
en: The `+initialized__()+` handler function is called
de: Die Handler-Funktion `+initialized__()+` wird aufgerufen

note: type: Title ===
en: QtVCP Shutdown
de: QtVCP Herunterfahren (engl. shutdown)

note: type: Plain text
en: Finally when QtVCP is asked to shutdown:
de: Wenn QtVCP schließlich zum Herunterfahren aufgefordert wird:

note: type: Plain text
en: It calls shutdown functions in the handler file,
de: Sie ruft die Abschaltfunktionen in der Handler-Datei auf,

note: type: Plain text
en: Path of handler file
de: Pfad der Handler-Datei

note: type: Plain text
en: When read, it is *'consumed'*, i.e. _no other object can read it_.
de: Wenn es gelesen wird, ist es *'konsumiert'*, d.h. _kein anderes Objekt kann es lesen_.

note: type: Plain text
en: *Import `Status` modules* +
    Add this Python code to your import section:
de: *Importiere `Status` Module* +
    Fügen Sie diesen Python-Code in Ihren Import-Abschnitt ein:

note: type: Plain text
en: *Instantiate `Status` module* +
    Add this Python code to your instantiate section:
de: *Instantiierung des Moduls `Status`* +
    Fügen Sie diesen Python-Code in Ihren "instantiate"-Abschnitt ein:

note: type: Plain text
en: For example, you can catch machine on and off messages.
de: So können Sie z. B. Ein- und Ausschaltmeldungen der Maschine auffangen.

note: type: Plain text
en: In this example code, when LinuxCNC is in _"machine on" state_ the function `self.on_state_on` will be called.
    When LinuxCNC is in _"machine off" state_ the function `self.on_state_off` will be called. +
de: Wenn sich LinuxCNC in _Zustand "machine on" befindet, wird in diesem Beispielcode state_ die Funktion 'self.on_state_on' aufgerufen.
    Wenn LinuxCNC in _Zustand "machine off"_ ist, wird die Funktion 'self.on_state_off' aufgerufen. +

note: type: Plain text
en: *`Info`* is a library to *collect and filter data from the INI file*. +
de: *`Info`* ist eine Bibliothek zum *Sammeln und Filtern von Daten aus der INI-Datei*. +

note: type: Title ===
en: Available data and defaults
de: Verfügbare Daten und Voreinstellungen

note: type: Plain text
en: *Import `Info` module* +
    Add this Python code to your import section:
de: *Importiere `Info` Modul* +
    Fügen Sie diesen Python-Code in Ihren Import-Abschnitt ein:

note: type: Plain text
en: *Instantiate `Info` module* +
    Add this Python code to your instantiate section:
de: *Instantiierung des Moduls `Info`* +
    Fügen Sie diesen Python-Code in Ihren "instantiate"-Abschnitt ein:

note: type: Plain text
en: *Access `INFO` data*
    Use this general syntax:
de: *Zugriff auf `INFO`-Daten*
    Verwenden Sie diese allgemeine Syntax:

note: type: Plain text
en: *`Action`* library is used to *command LinuxCNC's motion controller*.
de: *`Action`* Bibliothek wird verwendet, um *die Bewegungssteuerung von LinuxCNC* zu steuern.

note: type: Plain text
en: There are some *helper functions*, mostly used for this library's support:
de: Es gibt einige *Hilfsfunktionen*, die hauptsächlich für die Unterstützung dieser Bibliothek verwendet werden:

note: type: Plain text
en: Open G-code filter program.
de: Öffnen Sie das G-Code-Filterprogramm.

note: type: Plain text
en: *Import `Action` module* +
    Add this Python code to your import section:
de: *Importiere `Action` Modul* +
    Fügen Sie diesen Python-Code in Ihren Import-Abschnitt ein:

note: type: Plain text
en: *Instantiate `Action` module* +
    Add this Python code to your instantiate section:
de: *Instantiierung des Moduls `Action`* +
    Fügen Sie diesen Python-Code in Ihren instantiate-Abschnitt ein:

note: type: Plain text
en: *Access `ACTION` commands* +
    Use general syntax such as these:
de: *Zugriff auf `ACTION`-Befehle* +
    Verwenden Sie eine allgemeine Syntax wie die folgende:

note: type: Title ===
en: Referenced Paths
de: Referenzierte Pfade

note: type: Plain text
en: Handler file Path.
de: Handler-Datei Pfad.

note: type: Plain text
en: LinuxCNC's Python library.
de: LinuxCNCs Python-Bibliothek.

note: type: Plain text
en: The QtVCP library folder.
de: Der Ordner der QtVCP-Bibliothek.

note: type: Plain text
en: The QtVCP widget folder.
de: Der QtVCP-Widget-Ordner.

note: type: Plain text
en: The QtVCP widget plugin folder.
de: Der QtVCP-Widget-Plugin-Ordner.

note: type: Plain text
en: Directory where prebuilt Vismach files are found.
de: Verzeichnis, in dem sich die vorgefertigten Vismach-Dateien befinden.

note: type: Plain text
en: Not currently used:
de: Derzeit nicht verwendet:

note: type: Plain text
en: Locale translation folder.
de: Ordner für Übersetzungen.

note: type: Plain text
en: There are some helper functions available:
de: Es sind einige Hilfsfunktionen verfügbar:

note: type: Plain text
en: *Import `Path` module* +
    Add this Python code to your import section:
de: *Importiere `Path` Modul* +
    Fügen Sie diesen Python-Code in Ihren Import-Abschnitt ein:

note: type: Plain text
en: *Instantiate `Path` module* +
    Add this Python code to your instantiate section:
de: *Instantiierung des Moduls `Path`* +
    Fügen Sie diesen Python-Code in Ihren instantiate-Abschnitt ein:

note: type: Plain text
en: *`VCPWindow`* module gives *reference to the `MainWindow` and widgets*.
de: Das *`VCPWindow`* Modul gibt *Referenz auf das `MainWindow` und Widgets*.

note: type: Plain text
en: Typically this would be used for a library (eg, toolbar library uses it) as the widgets get a reference to the `MainWindow` from the `_hal_init()` function.
de: Typischerweise wird dies für eine Bibliothek verwendet (z.B. für die Toolbar-Bibliothek), da die Widgets einen Verweis auf das `MainWindow` von der Funktion `_hal_init()` erhalten.

note: type: Plain text
en: *Import `VCPWindow` module* +
    Add this Python code to your import section:
de: *Import 'VCPWindow' Modul* +
    Fügen Sie diesen Python-Code zu Ihrem Importabschnitt hinzu:

note: type: Plain text
en: *Instantiate `VCPWindow` module*+
    Add this Python code to your instantiate section:
de: *VCPWindow-Modul instanziieren*+
    Fügen Sie diesen Python-Code in Ihren instantiate-Abschnitt ein:

note: FIXME Aux_program_loader: load (into QtVCP) or launch ? type: Plain text
en: *`Aux_program_loader`* module allows an easy way to
    *load auxiliary programs LinuxCNC often uses*.
de: *`Aux_program_loader`* Modul ermöglicht einen einfachen Weg zu
    *Hilfsprogramme zu laden, die LinuxCNC oft benutzt*.

note: type: Plain text
en: _Halmeter_ is used to *display one HAL pin data*.
    Load a `halmeter` with:
de: _Halmeter_ wird zur *Anzeige von Daten eines HAL-Pins* verwendet.
    Laden Sie ein `Halmeter` mit:

note: type: Plain text
en: Load _ClassicLadder_ PLC program:
de: SPS-Programm _ClassicLadder_ laden:

note: type: Plain text
en: Load LinuxCNC `status` program:
de: Laden des LinuxCNC `status` Programms:

note: type: Plain text
en: Load _HALshow_, configure display program:
de: _HALshow_ laden, Anzeigeprogramm konfigurieren:

note: type: Plain text
en: Load _HALscope_ program:
de: Laden des _HALscope_ Programms:

note: type: Plain text
en: Load _Tooledit_ program:
de: Programm _Tooledit_ laden:

note: type: Plain text
en: Load _Calibration_ program:
de: Programm zur _Kalibrierung_ laden:

note: type: Plain text
en: *Import `Aux_program_loader` module* +
    Add this Python code to your import section:
de: *Modul `Aux_program_loader` importieren* +
    Fügen Sie diesen Python-Code zu Ihrem Importabschnitt hinzu:

note: type: Plain text
en: *Instantiate `Aux_program_loader` module* +
    Add this Python code to your instantiate section:
de: *Instantiierung des Moduls "Aux_program_loader "* +
    Fügen Sie diesen Python-Code in Ihren "instantiate"-Abschnitt ein:

note: FIXME Shouldn't it be Keylookup ?! type: Plain text
en: *`Keylookup`* module is used to *allow keypresses to control behaviors*
    such as jogging.
de: Das Modul *`Keylookup`* wird verwendet, um *Tastendrücke zur Steuerung von Verhaltensweisen* zu ermöglichen
    wie z.B. Joggen.

note: type: Plain text
en: It's used inside the handler file to facilitate creation of *key bindings* such as keyboard jogging etc.
de: Sie wird in der Handler-Datei verwendet, um die Erstellung von *Tastenbindungen* wie z. B. Tastatur-Jogging usw. zu erleichtern.

note: type: Block title
en: Instantiate `Keylookup` module
de: Instanziieren des Moduls `Keylookup`

note: type: Plain text
en: `Keylookup` requires code under the `processed_key_event` function
      to call `KEYBIND.call()`. +
      Most handler files already have this code.
de: `Keylookup` erfordert Code unter der Funktion `processed_key_event`,
      um 'KEYBIND.call()' aufzurufen. +
      Die meisten Handlerdateien verfügen bereits über diesen Code.

note: type: Plain text
en: In the handler file, under the _initialized function_ use this general syntax to *create keybindings*:
de: In der Handler-Datei, unter der _initialisierten Funktion_ verwenden Sie diese allgemeine Syntax, um *Tastenbindungen* zu erstellen:

note: type: Plain text
en: Here we add a keybinding for `F10`, `F11` and `F12`:
de: Hier fügen wir eine Tastenbindung für `F10`, `F11` und `F12` hinzu:

note: type: delimited block -
en: # at this point:
    # the widgets are instantiated.
    # the HAL pins are built but HAL is not set ready
    def initialized__(self):
        KEYBIND.add_call('Key_F10','on_keycall_F10',None)
        KEYBIND.add_call('Key_F11','on_keycall_override',10)
        KEYBIND.add_call('Key_F12','on_keycall_override',20)
de: # zu diesem Zeitpunkt:
    # sind die Widgets instanziiert.
    # die HAL-Pins sind gebaut, aber HAL ist nicht bereit
    def initialized__(self):
        KEYBIND.add_call('Key_F10','on_keycall_F10',None)
        KEYBIND.add_call('Key_F11','on_keycall_override',10)
        KEYBIND.add_call('Key_F12','on_keycall_override',20)

note: type: Plain text
en: And then we need to *add the functions that get called*.
    In the handler file, under the `KEY BINDING CALLS` section, add this:
de: Und dann müssen wir *die Funktionen hinzufügen, die aufgerufen werden*.
    Fügen Sie in der Handler-Datei unter dem Abschnitt `KEY BINDING CALLS` Folgendes hinzu:

note: type: Plain text
en: *`Messages`* module is used to *display pop up dialog messages on the screen*.
de: Das Modul *`Messages`* dient zur *Anzeige von Pop-up-Dialogmeldungen auf dem Bildschirm*.

note: type: Plain text
en: _defined in the INI file under the `[DISPLAY]` heading_, and
de: _definiert in der INI-Datei unter der Überschrift `[DISPLAY]`_, und

note: type: Plain text
en: _controlled by HAL pins_.
de: _gesteuert durch HAL-Pins_.

note: type: Plain text
en: Specifies whether it is a:
de: Gibt an, ob es sich um Folgendes handelt:

note: type: Plain text
en: *Status message* - shown in the _status bar and the notify dialog_. +
    Requires no user intervention.
de: *Statusmeldung* - angezeigt in der _Statusleiste und im Benachrichtigungsdialog_. +
    Erfordert keinen Benutzereingriff.

note: type: Plain text
en: *OK message* - _requiring the user to click OK to close the dialog_. +
    OK messages have _two HAL pins_:
de: *OK-Meldung* - _die den Benutzer auffordert, auf OK zu klicken, um den Dialog zu schließen_. +
    OK-Meldungen haben _zwei HAL-Pins_:

note: type: Plain text
en: One HAL pin to launch the dialog, and
de: Ein HAL-Pin, um den Dialog zu starten, und

note: type: Plain text
en: One to signify it's waiting for response.
de: Einen, um anzuzeigen, dass auf eine Antwort gewartet wird.

note: type: Plain text
en: One to show the dialog,
de: Eine, um den Dialog anzuzeigen,

note: type: Plain text
en: One for waiting, and
de: Eine für das Warten, und

note: type: Plain text
en: one for the answer.
de: eine für die Antwort.

note: FIXME Messages: means STATUS messages will be generated each time a focus_overlay is called or an alert sound emitted ? type: Plain text
en: By default it will send `STATUS` messages for `focus_overlay` and alert sound. +
de: Standardmäßig sendet es `STATUS`-Nachrichten für `focus_overlay` und einen Warnton. +

note: type: Plain text
en: Here are sample INI message definition code blocks that would be found under the `[DISPLAY]` heading:
de: Hier sind Beispiele für Codeblöcke zur Definition von INI-Nachrichten, die unter der Überschrift `[DISPLAY]' zu finden sind:

note: type: Plain text
en: Status bar and desktop notify pop up message:
de: Statusleiste und Desktop-Benachrichtigungs-Pop-up-Meldung:

note: type: Plain text
en: Pop up dialog asking a Yes/No question:
de: Pop-up-Dialog mit einer Ja/Nein-Frage:

note: type: Plain text
en: Pop up dialog asking an OK answer + Status bar and desktop notification:
de: Pop-up-Dialog, der eine OK-Antwort verlangt + Statusleiste und Desktop-Benachrichtigung:

note: type: delimited block -
en: MESSAGE_BOLDTEXT = This is the short text
    MESSAGE_TEXT = This is the longer text of the both type test. It can be longer then the status bar text
    MESSAGE_DETAILS = BOTH DETAILS
    MESSAGE_TYPE = okdialog status
    MESSAGE_PINNAME = bothtest
de: [DISPLAY]
    MESSAGE_BOLDTEXT = Dies ist der kurze Text
    MESSAGE_TEXT = Dies ist der längere Text des Tests der beiden Typen. Er kann länger sein als der Text der Statusleiste
    MESSAGE_DETAILS = BOTH DETAILS
    MESSAGE_TYPE = okdialog status
    MESSAGE_PINNAME = bothtest

note: type: Plain text
en: The `ScreenOptions` widget can automatically set up the message system.
de: Das Widget `ScreenOptions` kann das Nachrichtensystem automatisch einrichten.

note: type: Plain text
en: *`Notify`* module is used to *send messages that are integrated into the
    desktop*.
de: Das Modul *`Notify`* wird verwendet, um *Nachrichten zu versenden, die in den
    Desktop* integriert sind.

note: type: Plain text
en: It uses the `pynotify` library.
de: Es verwendet die `pynotify` Bibliothek.

note: type: Plain text
en: Ubuntu/Mint does not follow the standard so you can't set how long the message stays up for.
    I suggest fixing this with the `notify-osd` package available from https://launchpad.net/~leolik/+archive/leolik?field.series_filter=lucid[this PPA] (DISCONTINUED due to move of Ubuntu to Gnome).
de: Ubuntu/Mint folgt nicht dem Standard, so dass man nicht einstellen kann, wie lange die Meldung angezeigt wird.
    Ich schlage vor, dies mit dem Paket `notify-osd` zu beheben, das unter https://launchpad.net/~leolik/+archive/leolik?field.series_filter=lucid[dieses PPA] verfügbar ist (DISCONTINUED aufgrund der Umstellung von Ubuntu auf Gnome).

note: type: Plain text
en: Notify _keeps a list of all the alarm messages since starting_ in *`self.alarmpage`*.
    If you click _'Show all messages'_ in the notify popup, it will print them to the terminal.
de: Notify _erhält eine Liste aller Alarmmeldungen seit dem Start_ in *`self.alarmpage`*.
    Wenn Sie im Notify-Popup auf _'Show all messages'_ klicken, werden sie auf dem Terminal ausgegeben.

note: type: Plain text
en: The `ScreenOptions` widget can automatically set up the notify system.
de: Das Widget `ScreenOptions` kann das Benachrichtigungssystem automatisch einrichten.

note: type: Plain text
en: Typically `STATUS` _messages_ are used to sent notify messages. +
de: Typischerweise werden `STATUS` _messages_ verwendet, um Benachrichtigungen zu senden. +

note: type: Plain text
en: You can set the:
de: Sie können Folgendes festlegen:

note: type: Plain text
en: Notification message title text.
de: Titeltext der Benachrichtigung.

note: type: Plain text
en: Notification message content text.
de: Inhalt der Benachrichtigungsnachricht.

note: type: Plain text
en: Notification message icon.
de: Symbol für eine Benachrichtigung.

note: type: Plain text
en: How long the message stays up for.
de: Wie lange die Nachricht angezeigt wird.

note: type: Plain text
en: *`Preferences`* module allows one to *load and save preference data
    permanently to storage media*.
de: Das Modul *`Preferences`* ermöglicht das *Laden und Speichern von Einstellungsdaten
    dauerhaft auf Speichermedien* zu speichern.

note: type: Plain text
en: The `ScreenOptions` widget can automatically set up the preference system.
de: Das Widget `ScreenOptions` kann das Einstellungssystem automatisch einrichten.

note: type: Plain text
en: QtVCP searches for the `ScreenOptions` widget first and, if found, calls *`+_pref_init()+`*.
    This will _create the preferences object_ and return it to QtVCP to pass to all the widgets and add it to the window object attributes.
    In this case the preferences object would be accessable from the handler file's `initialized_` method as *`self.w.PREFS_`*.
de: QtVCP sucht zuerst nach dem `ScreenOptions`-Widget und ruft, falls gefunden, *`+_pref_init()+`* auf.
    Dies _erzeugt das Einstellungsobjekt_ und gibt es an QtVCP zurück, um es an alle Widgets zu übergeben und es zu den Attributen des Fensterobjekts hinzuzufügen.
    In diesem Fall wäre das Einstellungsobjekt von der `initialized_`-Methode der Handler-Datei als *`self.w.PREFS_`* zugänglich.

note: FIXME Global or per widget prefs file ? type: Plain text
en: Also all widgets can have access to a specific preferences file at initialization time.
de: Außerdem können alle Widgets bei der Initialisierung Zugriff auf eine bestimmte Einstellungsdatei haben.

note: FIXME Preference file vs preference system ? type: Plain text
en: The `ScreenOptions` widget can automatically set up the preference file.
de: Das Widget `ScreenOptions` kann die Einstellungsdatei automatisch einrichten.

note: type: Plain text
en: This module *allows playing sounds using Gstreamer, beep and Espeak*.
de: Dieses Modul *ermöglicht das Abspielen von Sounds mit Gstreamer, Beep und Espeak*.

note: type: Plain text
en: It can:
de: Es kann:

note: type: Plain text
en: *play sound/music files* using _Gstreamer_ (non blocking),
de: *Abspielen von Sound-/Musikdateien* mit _Gstreamer_ (nicht blockierend),

note: type: Plain text
en: *play sounds* using the `beep` library (currently blocks while beeping),
de: *Sounds abspielen* unter Verwendung der `beep`-Bibliothek (blockiert derzeit beim Piepsen),

note: type: Plain text
en: *speak words* using the `espeak` library (non blocking while speaking).
de: *Sprachwörter* unter Verwendung der `espeak`-Bibliothek (keine Blockierung beim Sprechen).

note: type: Plain text
en: There are _default alert sounds_ using Mint or FreeDesktop default sounds.
de: Es gibt _Standard-Warntöne_, die Mint oder FreeDesktop-Standardsounds verwenden.

note: type: Plain text
en: You can play arbitrary sounds or even songs by specifying the path.
de: Sie können beliebige Sounds oder sogar Songs abspielen, indem Sie den Pfad angeben.

note: type: Plain text
en: `STATUS` has _messages to control `Player` module_.
de: `STATUS` hat _Nachrichten zur Steuerung des `Player`-Moduls_.

note: type: Plain text
en: The `ScreenOptions` widget can automatically set up the audio system.
de: Das Widget `ScreenOptions` kann automatisch das Audiosystem einrichten.

note: type: Title ===
en: Sounds
de: Töne (engl. sounds)

note: type: Block title
en: Alerts
de: Alarmsignale

note: type: Plain text
en: There are default *alerts* to choose from:
de: Es gibt Standard-*Warnungen* zur Auswahl:

note: type: Block title
en: Beeps
de: Pieptöne

note: type: Plain text
en: There are three *beeps*:
de: Es gibt drei *Pieptöne*:

note: type: Plain text
en: *Import `Player` module* +
    Add this Python code to your import section:
de: *Import `Player` module* + 
    Fügen Sie diesen Python-Code in Ihren Import-Abschnitt ein:

note: type: Plain text
en: *Instantiate `Player` module* +
    Add this Python code to your instantiated section:
de: *Instantiierung des Moduls `Player`* +
    Fügen Sie diesen Python-Code zu Ihrem instanziierten Abschnitt hinzu:

note: type: Plain text
en: The *`_register_messages()`* function connects the audio player to the `STATUS` library so sounds can be played with the `STATUS` message system.
de: Die Funktion *`_register_messages()`* verbindet den Audioplayer mit der `STATUS`-Bibliothek, so dass Klänge mit dem `STATUS`-Meldungssystem abgespielt werden können.

note: type: Plain text
en: This library allows you to *use `STATUS` messages to launch a virtual keyboard*.
de: Diese Bibliothek ermöglicht es Ihnen, *mit `STATUS`-Nachrichten eine virtuelle Tastatur zu starten*.

note: type: Plain text
en: This library supplies *prebuilt submenus and actions for toolbar menus and toolbar buttons*.
de: Diese Bibliothek liefert *vorgefertigte Untermenüs und Aktionen für Symbolleistenmenüs und Symbolleistenschaltflächen*.

note: type: Plain text
en: _assigned actions/submenus in the handler file_.
de: _zugewiesene Aktionen/Untermenüs in der Handler-Datei_.

note: type: Block title
en: Actions
de: Aktionen

note: type: Plain text
en: Toggles dimensions display.
de: Schaltet die Anzeige der Dimensionen um.

note: type: Title ===
en: Submenus
de: Untermenüs

note: type: Plain text
en: Here is the typical code to add to the relevant _handler file_ sections:
de: Hier ist der typische Code, der zu den entsprechenden Abschnitten der _Handler-Datei_ hinzuzufügen ist:

note: type: delimited block -
en: ###########################################
    # **** instantiate libraries section **** #
    ###########################################
de: ###########################################
    **** Bibliotheken instanziieren Abschnitt **** #
    ###########################################

note: type: Plain text
en: Add a custom toolbar function:
de: Hinzufügen einer benutzerdefinierten Symbolleistenfunktion:

note: type: Title ===
en: Builtin Samples
de: Integrierte Beispiele

note: type: Title ===
en: Primitives Library
de: Primitives-Bibliothek

note: TODO Can't a collection hold other collections ? type: Plain text
en: This holds a *hierarchical list* of primitive shapes or _STL objects_ that operations can be applied to.
de: Diese enthält eine *hierarchische Liste* von primitiven Formen oder _STL-Objekten_, auf die Operationen angewendet werden können.

note: type: Plain text
en: _read a HAL system pin directly_ if the component argument is set to `None`.
de: _direktes Lesen eines HAL-Systempins_, wenn das Komponentenargument auf `None` gesetzt ist.

note: type: Plain text
en: This object will build a _CylinderZ object_ that will *change size and length based on loaded tool dimensition* (from the tool table) +
de: Dieses Objekt erstellt eine _CylinderZ object_, die *Größe und Länge basierend auf der geladenen Werkzeugdefinition* (aus der Werkzeugtabelle) ändert +

note: type: Plain text
en: Example from mill_xyz sample:
de: Beispiel aus dem mill_xyz-Beispiel:

note: type: Plain text
en: *Move and rotate an object to point from one `capture()` 'd coordinate
    system to another*.
de: *Bewege und drehe ein Objekt, um von einer `capture()`-Koordinate aus zu zeigen
    System zu einem anderen*.

note: type: Plain text
en: *Build a cylinder on the X, Y or Z axis* by giving _endpoint_ (X, Y, or Z)
    and _radii_ coordinates.
de: *Konstruieren Sie einen Zylinder auf der X-, Y- oder Z-Achse, indem Sie den _Endpunkt_ (X, Y oder Z)
    und _Radien_ Koordinaten.

note: type: Plain text
en: *Build a sphere* from _center_ and _radius_ coordinates.
de: *Baue eine Kugel* aus den Koordinaten _center_ und _radius_.

note: type: Plain text
en: *Build a triangle* in the _specified plane_ by giving the
    _corners Z coordinates_ for each side
de: *Baue ein Dreieck* in der _angegebenen Ebene_ durch Angabe der
    Eckpunkte Z-Koordinaten_ für jede Seite

note: type: Plain text
en: *Build an arc* by specifying
de: *Bogen erstellen* durch Angabe

note: type: Plain text
en: *Build a box* specified by the _6 vertex coordinates_.
de: *Erstellen Sie eine Box*, die durch den coordinates_ _6-Scheitelpunkt angegeben wird.

note: type: Plain text
en: *Build a box centered in X and Y, and running from Z=0*, by specifying
    the _width in X and Y_, and running up or down to the specified
    _height in Z_.
de: * Erstellen Sie eine Box, die in X und Y zentriert ist und von Z = 0 * aus ausgeführt wird, indem Sie Folgendes angeben
    die _width in X und Y_ und läuft nach oben oder unten auf die angegebene
    _height in Z_.

note: type: Plain text
en: This _transforms from the current coordinate system to the
      viewport system_, NOT to the world system.
de: Dies _transformiert vom aktuellen Koordinatensystem in das
      Ansichtsfenstersystem_, NICHT in das Weltsystem.

note: type: Plain text
en: *Applies a color* to the _parts of a collection_.
de: *Wendet eine Farbe* auf die _Teile einer Collection_ *an*.

note: type: Plain text
en: *Loads a STL or OBJ data file* as a _Vismach part_.
de: *Lädt eine STL- oder OBJ-Datendatei* als _Vismach part_.

note: type: Plain text
en: Instantiate the simulation widget and add it to the screen's main layout:
de: Instanziieren Sie das Simulations-Widget und fügen Sie es dem Hauptlayout des Bildschirms hinzu:

note: type: Title ===
en: More Information
de: Mehr zum Thema

note: type: Plain text
en: More information on how to build a custom machine simulation in the <<cha:qtvcp:vismach,Qt Vismach>> chapter.
de: Weitere Informationen über die Erstellung einer benutzerdefinierten Maschinensimulation finden Sie im Kapitel zu <<cha:qtvcp:vismach,Qt Vismach>>.

note: type: Title =
en: QtVCP Virtual Control Panels
de: QtVCP Virtuelle Kontrollpanels

note: type: Plain text
en: This panel has a *dial that adjusts S32 and Float HAL output pins*.
de: Dieses Panel hat ein * Einstellrad, das S32- und Float-HAL-Ausgangspins einstellt *.

note: type: Plain text
en: This panel has a *button that will set a HAL pin*.
de: Dieses Panel hat eine *Schaltfläche, die einen HAL-Pin* setzt.

note: type: Plain text
en: This panel has an *LED that can selected to watch HAL bit pins/signals*.
de: Dieses Panel verfügt über eine *LED, die ausgewählt werden kann, um HAL-Bit-Pins / Signale * zu beobachten.

note: type: Plain text
en: *Manual tool change dialog* that gives tool description.
de: *Manueller Werkzeugwechsel-Dialog*, der eine Werkzeugbeschreibung enthält.

note: type: Block title
en: Options:
de: Optionen:

note: type: Plain text
en: `-o notify_on` - _use desktop notify_ dialogs instead of QtVCP native ones.
de: -o notify_on` - _verwendet Desktop-Notify-Dialoge anstelle der QtVCP-eigenen Dialoge.

note: type: Plain text
en: These panels are prebuilt simulation of common machine types.
de: Diese Tafeln sind vorgefertigte Simulationen gängiger Maschinentypen.

note: type: Plain text
en: These are also embed-able in other screens such as AXIS or GMOCCAPY.
de: Diese können auch in andere Bildschirme wie AXIS oder GMOCCAPY eingebettet werden.

note: type: Block title
en: QtVCP `vismach_mill_xyz` - 3-Axis Mill 3D View Panel
de: QtVCP `vismach_mill_xyz` - 3-Achsen-Fräse 3D-Ansichtspanel

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP vismach_mill_xyz - 3-Axis Mill 3D View Panel
de: QtVCP vismach_mill_xyz - 3-Achsen-Fräse 3D-Ansichts-Panel

note: type: Plain text
en: 3D OpenGL view of a _SCARA based milling machine_.
de: 3D-OpenGL-Ansicht einer _SCARA-basierten Fräsmaschine_.

note: type: Block title
en: QtVCP `vismach_scara` - SCARA Mill 3D View Panel
de: QtVCP `vismach_scara` - SCARA Fräse 3D-Ansichtsfenster

note: type: Plain text
en: It is useful for testing to include the `#!/usr/bin/env python3` shebang to _allow the file to be run as a script_.
de: Zu Testzwecken ist es nützlich, das Shebang `#!/usr/bin/env python3` einzubinden, damit _die Datei als Skript ausgeführt werden kann_.

note: type: Title ==
en: Creating Parts
de: Erstellen von Teilen

note: type: Title ===
en: Import STL or OBJ Files
de: Importieren von STL- oder OBJ-Dateien

note: type: Plain text
en: It is probably easiest to:
de: Das ist wahrscheinlich am einfachsten:

note: type: Plain text
en: _create geometry in a CAD package_
de: Herstellung einer Geometrie in einem CAD-Paket_

note: type: Plain text
en: _import into the model script using the `AsciiSTL()` or `AsciiOBJ()` functions_.
de: _Import in das Modellskript unter Verwendung der Funktionen "ASCIISTL()" oder "ASCIIOBJ()".

note: FIXME Ascii(STL|OBJ): what's the second arg ? type: Plain text
en: Both functions can take one of two named arguments, either a _filename_ or _raw data_:
de: Beide Funktionen können eines von zwei benannten Argumenten annehmen, entweder einen _Dateinamen_ oder _Rohdaten_:

note: type: Plain text
en: The parts will be created in the Vismach space in the _same locations as they occupy in the STL or OBJ space_, meaning it may be possible to assemble the model in the CAD package.
de: Die Teile werden im Vismach-Raum an den _gleichen Stellen wie im STL- oder OBJ-Raum_ erstellt, was bedeutet, dass es möglich sein kann, das Modell im CAD-Paket zusammenzusetzen.

note: type: Title ===
en: Build from Geometric Primitives
de: Aufbau aus geometrischen Primitiven

note: type: Plain text
en: Alternatively parts can be _created inside the model script from a range of shape primitives_.
de: Alternativ können Teile auch _im Modellskript aus einer Reihe von Formprimitiven_ erstellt werden.

note: type: Plain text
en: Many shapes are _created at the origin_ and need to be _moved to the required location_ after creation.
de: Viele Formen werden _am Ursprung_ erstellt und müssen nach der Erstellung _an den gewünschten Ort_ verschoben werden.

note: type: Plain text
en: Creates a _(optionally tapered) cylinder on the given axis_ with the given radii at the given points on the axis.
de: Erzeugt einen _(optional verjüngten) Zylinder auf der gegebenen Achse_ mit den gegebenen Radien an den gegebenen Punkten auf der Achse.

note: type: Plain text
en: Creates a _sphere of radius r at (x,y,z)_.
de: Erzeugt eine _Kugel mit Radius r bei (x,y,z)_.

note: type: Plain text
en: Creates a _triangular plate between planes_ defined by the last two values parallel to the specified plane, with vertices given by the three coordinate pairs.
de: Erzeugt eine _dreieckige Platte zwischen Ebenen_, die durch die letzten beiden Werte parallel zur angegebenen Ebene definiert ist und deren Eckpunkte durch die drei Koordinatenpaare gegeben sind.

note: type: Plain text
en: Creates a _rectangular prism with opposite corners_ at the specified positions and edges parallel to the XYZ axes.
de: Erzeugt ein _rechteckiges Prisma mit gegenüberliegenden Ecken_ an den angegebenen Positionen und Kanten parallel zu den XYZ-Achsen.

note: type: Plain text
en: Creates an xw by yw by zw _box centred on the origin_.
de: Erzeugt eine xw mal yw mal zw _Box, die auf den Ursprung zentriert ist_.

note: type: Plain text
en: Creates a _box ground on WY plane_ of width xw / yw and height z.
de: Erstellt einen _Kastenboden auf der WY-Ebene_ mit der Breite xw / yw und der Höhe z.

note: type: Plain text
en: Composite parts may be created by assembling these primitives either at creation time or subsequently:
de: Zusammengesetzte Teile können durch Zusammenfügen dieser Primitive entweder zum Zeitpunkt der Erstellung oder später erstellt werden:

note: type: Plain text
en: Parts may need to be moved in the Vismach space to assemble the model.
de: Möglicherweise müssen Teile im Vismach-Bereich bewegt werden, um das Modell zusammenzubauen.

note: FIXME unclear type: Plain text
en: They may also need to be moved to create the animation as the animation rotation axis is created at the origin (but moves with the Part).
de: Möglicherweise müssen sie auch verschoben werden, um die Animation zu erstellen, da die Drehachse der Animation am Ursprung erstellt wird (aber sich mit dem Teil bewegt).

note: type: Plain text
en: Move part1 the specified distances in x, y and z.
de: Verschiebe Teil1 um die angegebenen Abstände in x, y und z.

note: type: Plain text
en: A _collection or part_.
    It can be pre-created earlier in the script, or could be created at this point if preferred eg +
de: Eine _Sammlung oder ein Teil_.
    Sie kann zu einem früheren Zeitpunkt im Skript erstellt werden oder, falls gewünscht, an dieser Stelle, z. B. +

note: type: Plain text
en: Otherwise the component instance would be specified and the pin name of that component would be specified.
de: Andernfalls würde die Komponenteninstanz und der Pin-Name dieser Komponente angegeben werden.

note: type: Plain text
en: This command is similar in its operation to `HalTranslate` except that it is typically necessary to move the part to the origin first to define the axis. +
de: Dieser Befehl funktioniert ähnlich wie `HalTranslate`, mit dem Unterschied, dass es normalerweise notwendig ist, das Teil zuerst zum Ursprung zu bewegen, um die Achse zu definieren. +

note: type: Plain text
en: _Rotation angles_ are in degrees, so for a rotary joint with a 0-1 scaling you would need to use an angle scale of 360.
de: Drehwinkel werden in Grad angegeben. Für ein Drehgelenk mit einer Skalierung von 0-1 müssten Sie also eine Winkelskala von 360 verwenden.

note: type: Title ==
en: Assembling the model
de: Zusammenbau des Modells

note: type: Plain text
en: For example to create a moving head milling machine with a rotating spindle and an animated draw bar you would:
de: Um beispielsweise eine Fräsmaschine mit beweglichem Kopf, einer rotierenden Spindel und einer animierten Zugstange zu erstellen, würden Sie dies tun:

note: type: Plain text
en: Create the head main body.
de: Erstellen Sie den Hauptteil des Kopfes.

note: type: Plain text
en: Create the spindle at the origin.
de: Erstellen Sie die Spindel im Ursprung.

note: type: Plain text
en: Define the rotation.
de: Definieren Sie die Drehung.

note: type: Plain text
en: Move the head to the spindle or spindle to the head.
de: Bewegen Sie den Kopf zur Spindel oder die Spindel zum Kopf.

note: type: Plain text
en: Assemble the three parts into a head assembly
de: Bauen Sie die drei Teile zu einer Kopfeinheit zusammen

note: type: Plain text
en: Define the motion of the head assembly.
de: Definieren Sie die Bewegung der Kopfeinheit.

note: type: Plain text
en: In this example the spindle rotation is indicated by rotation of a set of drive dogs:
de: In diesem Beispiel wird die Spindeldrehung durch die Drehung eines Satzes von Mitnehmern angezeigt:

note: type: Plain text
en: Finally a *single collection of all the machine parts, floor and work* (if any) needs to be created.
de: Schließlich muss eine *einzige Sammlung aller Maschinenteile, Böden und Arbeiten* (falls vorhanden) erstellt werden.

note: type: Plain text
en: For a _parallel machine_ there may be several "base" parts.
de: Bei einer _Parallelmaschine_ kann es mehrere "Basis"-Teile geben.

note: type: Plain text
en: Thus, for example, in `scaragui.py` link3 is added to link2, link2 to link1 and link1 to link0, so the final model is created by:
de: So wird zum Beispiel in `scaragui.py` link3 zu link2, link2 zu link1 und link1 zu link0 hinzugefügt, so dass das endgültige Modell wie folgt erstellt wird:

note: type: Plain text
en: Whereas a VMC model with separate parts moving on the base might have
de: Ein VMC-Modell mit separaten Teilen, die sich auf dem Sockel bewegen, könnte hingegen haben

note: type: Title ==
en: Other functions
de: Weitere Funktionen

note: type: Plain text
en: Sets the _display color of the part_.
    Note that unlike the other functions, the part definition comes second in this case. +
de: Setzt die _Anzeigefarbe des Teils_.
    Beachten Sie, dass im Gegensatz zu den anderen Funktionen, die Definition des Teils in diesem Fall an zweiter Stelle steht. +

note: type: Plain text
en: Three RGB values and opacity.
    For example [1,0,0,0.5] for a 50% opacity red.
de: Drei RGB-Werte und Deckkraft.
    Zum Beispiel [1,0,0,0.5] für ein Rot mit 50% Deckkraft.

note: type: Plain text
en: Creates a _heads-up display_ in the Vismach GUI to display items such as axis positions, titles, or messages.
de: Erzeugt ein _Heads-up-Display_ in der Vismach-GUI, um Elemente wie Achsenpositionen, Titel oder Meldungen anzuzeigen.

note: type: Plain text
en: This sets the current position in the model.
de: Damit wird die aktuelle Position im Modell festgelegt.

note: type: Plain text
en: This is the command that makes it all happen, creates the display etc. if invoked directly from Python.
    Usually this file is imported by QtVCP and the `window()` object is instantiated and embedded into another screen.
de: Dies ist der Befehl, der alles in Gang setzt, die Anzeige erstellt usw., wenn er direkt aus Python aufgerufen wird.
    Normalerweise wird diese Datei von QtVCP importiert und das `window()` Objekt wird instanziiert und in einen anderen Bildschirm eingebettet.

note: type: Labeled list
en: `_tooltip_` and `_work_`
de: '_tooltip_' und '_work_'

note: type: Plain text
en: Sets the extent of the volume visualized in the initial view.
    hud refers to a head-up display of axis positions.
de: Legt die Ausdehnung des Volumens fest, das in der Ausgangsansicht angezeigt wird.
    "hud" bezieht sich auf eine Head-up-Anzeige der Achsenpositionen.

note: type: Labeled list
en: `_rotation_vectors_` or `_lat, lon_`
de: "_rotation_vectors_" oder "_lat, lon_"

note: type: Title ==
en: Basic structure of a `QtVismach` script
de: Grundstruktur eines `QtVismach`-Skripts

note: type: delimited block -
en: # create HAL pins here if needed
    #c = hal.component("samplegui")
    #c.newpin("joint0", hal.HAL_FLOAT, hal.HAL_IN)
de: # hier HAL-Pins erstellen, falls erforderlich
    #c = hal.component("samplegui")
    #c.newpin("joint0", hal.HAL_FLOAT, hal.HAL_IN)

note: type: delimited block -
en: # create the floor, tool and work
    floor = Box(-50, -50, -3, 50, 50, 0)
    work = Capture()
    tooltip = Capture()
de: # Erstellen des Bodens, des Werkzeugs und des Werkstücks
    floor = Box(-50, -50, -3, 50, 50, 0)
    work = Capture()
    tooltip = Capture()

note: type: delimited block -
en: # Build and assemble the model
    part1 = Collection([Box(-6,-3,94,6,3,100)])
    part1 = Color([1,1,1,1],[part1])
    part1 = HalRotate([part1],None,"joint.0.pos-fb",360,0,0,1)
    part1 = Translate([dogs],-1,49,0)
de: # Das Modell aufbauen und zusammensetzen
    part1 = Collection([Box(-6,-3,94,6,3,100)])
    part1 = Color([1,1,1,1],[part1])
    part1 = HalRotate([part1],None,"joint.0.pos-fb",360,0,0,1)
    part1 = Translate([dogs],-1,49,0)

note: type: delimited block -
en: # create a top-level model
    model = Collection([base, saddle, head, carousel])
de: # ein Top-Level-Modell erstellen
    model = Collection([base, saddle, head, carousel])

note: type: delimited block -
en: # we want to either embed into qtvcp or display directly with PyQt5
    # so build a window to display the model
de: # wir wollen entweder in QtVCP einbetten oder direkt mit PyQt5 anzeigen
    # also ein Fenster bauen, um das Modell anzuzeigen

note: type: delimited block -
en:         # uncomment if there is a HUD
            # HUD needs to know where to draw
            #v.hud = myhud
            #v.hud.app = v
de:         # unkommentiert lassen, wenn es ein HUD gibt
            # HUD muss wissen, wo es zeichnen soll
            #v.hud = myhud
            #v.hud.app = v

note: type: delimited block -
en: # if you call this file directly from python3, it will display a PyQt5 window
    # good for confirming the parts of the assembly.
de: # Wenn Sie diese Datei direkt aus Python3 aufrufen, wird ein PyQt5-Fenster angezeigt.
    # das sich gut eignet, um die Teile der Baugruppe zu bestätigen.

note: type: Plain text
en: *`Qtscreen`* uses _QtVCP widgets_ for LinuxCNC integration.
de: *`Qtscreen`* verwendet _QtVCP Widgets_ für die LinuxCNC Integration.

note: type: Plain text
en: *Widget* is the general name for the _UI objects_ such as buttons and
    labels in PyQt.
de: *Widget* ist der allgemeine Name für die _UI-Objekte_ wie Buttons und
    Beschriftungen in PyQt.

note: type: Plain text
en: You are free to use any available *default widgets* in the _Qt Designer_ editor.
de: Es stehen Ihnen alle *Standard-Widgets* im _Qt Designer_ Editor zur Verfügung.

note: type: Plain text
en: There are also *special widgets* made for LinuxCNC that make integration easier. These are split in two, heading on the right side of the editor:
de: Es gibt auch *spezielle Widgets* für LinuxCNC, um die Integration zu erleichtern. Diese sind in zwei Teile geteilt, überschrieben wie folgt auf der rechten Seite des Editors:

note: type: Plain text
en: One is for *HAL only widgets*.
de: Einer ist für *nur HAL-Widgets*.

note: type: Plain text
en: The other is for *CNC control widgets*.
de: Das andere ist für *CNC-Steuerungs-Widgets*.

note: type: Plain text
en: This description of widget properties can easily be out of date due to further development and lack of people to write docs (a good way to give back to the project).  The definitive descriptions are found by looking in the https://github.com/LinuxCNC/linuxcnc/tree/master/lib/python/qtvcp/widgets[source code].
de: Diese Beschreibung der Widget-Eigenschaften kann aufgrund der weiteren Entwicklung und des Mangels an Personen, die Dokumentationen schreiben, leicht veraltet sein (eine gute Möglichkeit, dem Projekt etwas zurückzugeben).  Die endgültigen Beschreibungen finden Sie im https://github.com/LinuxCNC/linuxcnc/tree/master/lib/python/qtvcp/widgets[Quellcode].

note: type: Title ==
en: HAL Only Widgets
de: Nur HAL-Widgets

note: type: Plain text
en: These widgets usually have _HAL pins_ and *don't react to the machine controller*.
de: Diese Widgets haben normalerweise _HAL-Pins_ und *reagieren nicht auf die Maschinensteuerung*.

note: type: Title ===
en: `XEmbed` - Program Embedding Widget
de: `XEmbed` - Widget zum Einbetten von Programmen

note: type: Plain text
en: Allows one to *embed a program into the widget*.
de: Ermöglicht die *Einbettung eines Programms in das Widget*.

note: type: Plain text
en: Only programs that utilize the `xembed` protocol will work such as:
de: Es funktionieren nur Programme, die das `xembed`-Protokoll verwenden, wie z.B.:

note: type: Plain text
en: GladeVCP virtual control panels
de: GladeVCP Virtuelle Control Panels

note: type: Plain text
en: Onboard virtual keyboard
de: Integrierte virtuelle Tastatur

note: type: Plain text
en: mplayer video player
de: mplayer-Videoplayer

note: type: Title ===
en: `Slider` - HAL Pin Value Adjusting Widget
de: `Slider` - HAL-Pin-Wert-Anpassungs-Widget

note: type: Block title
en: QtVCP `LED`: LED Indicator Widget
de: QtVCP `LED`: LED-Anzeige-Widget

note: type: Plain text
en: Selects if the LED follows an input HAL pin or program state.
de: Wählt aus, ob die LED einem Eingangs-HAL-Pin oder einem Programmzustand folgt.

note: type: Plain text
en: Qt alignment hint.
de: Qt-Hinweis zur Ausrichtung.

note: type: Plain text
en: Turns flashing option on and off.
de: Schaltet die Blinkoption ein und aus.

note: type: Plain text
en: It is based on PyQt's _QCheckButton_.
de: Er basiert auf dem _QCheckButton_ von PyQt.

note: type: Title ===
en: `Gauge` - Round Dial Gauge Widget
de: `Gauge` - Rundes Messuhr-Widget

note: type: Plain text
en: Round Gauge can be used in a LinuxCNC GUI to *display an input parameter* on the dial face.
de: Round Gauge kann in einem LinuxCNC GUI verwendet werden, um *einen Eingabeparameter* auf dem Zifferblatt anzuzeigen.

note: type: Plain text
en: There are several properties that are user settable in order to customize the _appearance of the gauge_.
de: Es gibt mehrere Eigenschaften, die vom Benutzer eingestellt werden können, um das _Erscheinungsbild der Anzeige_ anzupassen.

note: type: Plain text
en: The following parameters can be set either programmatically or via the Qt Designer property editor.
de: Die folgenden Parameter können entweder programmatisch oder über den Eigenschaftseditor von Qt Designer eingestellt werden.

note: type: Plain text
en: Setting this to `True` will _create 2 HAL pins_:
de: Wenn Sie diese Option auf `True` setzen, werden _2 HAL-Pins_ erstellt:

note: type: Plain text
en: If this option is not set, then `value` and `setpoint` must be connected programmatically, ie., in the handler file.
de: Wenn diese Option nicht gesetzt ist, müssen `value` und `setpoint` programmatisch, dh in der Handler-Datei, verbunden werden.

note: type: Plain text
en: This is the _maximum expected value of the value input signal_.
    In other words, it is the full scale input.
de: Dies ist der _maximal zu erwartende Wert des Werteingangssignals_.
    Mit anderen Worten, es ist der Skalenendwert.

note: type: Plain text
en: This is the _number of ticks/gauge readings_ on the gauge face.
    It should be set to a number that ensures the text readings around the gauge face are readable.
    The minimum allowed value is 2.
de: Dies ist die _Anzahl der Ticks/Anzeigewerte_ auf der Anzeigefläche.
    Sie sollte auf eine Zahl eingestellt werden, die sicherstellt, dass die Textanzeigen auf der Anzeigefläche lesbar sind.
    Der minimal zulässige Wert ist 2.

note: type: Plain text
en: Zone1 extends _from the maximum reading to the threshold point_.
    It can be set to any RGB color.
de: Zone1 erstreckt sich _vom maximalen Messwert bis zum Schwellenwert_.
    Sie kann auf eine beliebige RGB-Farbe eingestellt werden.

note: type: Plain text
en: Zone2 extends _from the threshold point to the minimum reading_, which is 0.
    It can be set to any RGB color.
de: Zone2 erstreckt sich _vom Schwellenwert bis zum Mindestwert_, der 0 ist.
    Sie kann auf eine beliebige RGB-Farbe eingestellt werden.

note: type: Plain text
en: The threshold is the _transition point between the zones_.
    It should be set to a value between 0 and the maximum value.
    The maximum allowed value is set to the gauge's `max_value` and minimum value is 0.
de: Der Schwellenwert ist der _Übergangspunkt zwischen den Zonen_.
    Er sollte auf einen Wert zwischen 0 und dem Maximalwert gesetzt werden.
    Der höchstzulässige Wert wird auf den "Maximalwert" des Messgeräts gesetzt, der Mindestwert ist 0.

note: type: Plain text
en: This is the _text below the value readout_, near the bottom of the gauge.
    The function of the gauge is then easily visible.
de: Dies ist der _Text unter der Wertanzeige_, nahe dem unteren Rand des Messgeräts.
    Die Funktion des Messgeräts ist dann leicht erkennbar.

note: type: Plain text
en: There are 2 inputs that are not customizable. They can be set via HAL pins, programmatically or via signals from other widgets:
de: Es gibt 2 Eingänge, die nicht anpassbar sind. Sie können über HAL-Pins, programmatisch oder über Signale von anderen Widgets gesetzt werden:

note: type: Plain text
en: This is the _actual input value_ that will be displayed with the gauge needle and in the digital readout.
    It must be set to a value between 0 and `max_value` maximum value.
de: Dies ist der _eigentliche Eingangswert_, der mit der Nadel des Messgeräts und in der digitalen Anzeige angezeigt wird.
    Er muss auf einen Wert zwischen 0 und dem Maximalwert eingestellt werden.

note: type: Plain text
en: This widget looks and acts like a *5 buttons D-pad*, with an LED ring.
de: Dieses Widget sieht aus und funktioniert wie ein *5-Tasten-D-Pad*, mit einem LED-Ring.

note: type: Plain text
en: Each button has an selectable type (Bit, S32 or Float) output HAL pin.
de: Jede Taste hat einen wählbaren Typ (Bit, S32 oder Float) als HAL-Pin.

note: type: Plain text
en: The LED center ring has selectable colors for off and on and is controlled by a Bit HAL pin.
de: Der LED-Mittelring hat wählbare Farben für Aus und Ein und wird über einen Bit-HAL-Pin gesteuert.

note: type: Plain text
en: There are _enumerated constants_ used:
de: Es werden _numerierte Konstanten_ verwendet:

note: type: Plain text
en: To reference *indicator positions*:
de: Um *Indikatorpositionen* zu referenzieren:

note: type: Plain text
en: For *HAL pins type*:
de: Für *HAL-Pins Typ*:

note: type: Plain text
en: You use the widget name in Qt Designer plus the reference constant:
de: Sie verwenden den Namen des Widgets im Qt Designer plus die Referenzkonstante:

note: type: Plain text
en: Optional name to use for the _HAL pins basename_.
    If left blank, the Qt Designer widget name will be used.
de: Optionaler Name, der für den _HAL pins basename_ verwendet wird.
    Bleibt er leer, wird der Name des Qt Designer Widgets verwendet.

note: type: Plain text
en: Color selection for the center LED ring to be displayed when the `<BASENAME>.light.center` HAL pin is `True` or `False`.
de: Farbauswahl für den mittleren LED-Ring, der angezeigt werden soll, wenn der `BASENAME.light.center` HAL-Pin `True` oder `False` ist.

note: type: Plain text
en: Color selection for the button text.
de: Auswahl der Farbe für den Text des Buttons.

note: type: Plain text
en: Font selection for the button text.
de: Auswahl der Schriftart für den Text des Buttons.

note: type: Plain text
en: This widget allows a user to *set a HAL pin true or false* with the push of a button.
de: Mit diesem Widget kann der Benutzer einen *HAL-Pin per Tastendruck auf "true" oder "false" setzen*.

note: type: Plain text
en: It also has other options.
de: Es gibt auch andere Optionen.

note: type: Plain text
en: This widget places a *colored overlay over the screen*, usually while a dialog is showing.
de: Dieses Widget legt ein *farbiges Overlay über den Bildschirm*, normalerweise während ein Dialog angezeigt wird.

note: type: Block title
en: Focus overlay example for confirm close prompt
de: Beispiel für ein Fokus-Overlay zur Bestätigung der Abschlussaufforderung

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP focus overlay
de: QtVCP Fokus-Überlagerung

note: type: Plain text
en: Used to create a 'focused' feel and to draw attention to critical information.
de: Wird verwendet, um ein "konzentriertes" Gefühl zu erzeugen und die Aufmerksamkeit auf wichtige Informationen zu lenken.

note: type: Plain text
en: It can also show a translucent image.
    It can also display message text and buttons.
de: Es kann auch ein durchsichtiges Bild anzeigen.
    Es kann auch Nachrichtentext und Schaltflächen anzeigen.

note: type: Plain text
en: This widget _can be controlled with `STATUS` messages_.
de: Dieses Widget _kann mit `STATUS'-Meldungen gesteuert werden_.

note: type: Plain text
en: Values can be sent from:
de: Werte können gesendet werden von:

note: type: Plain text
en: _HAL pins_
    The input pin can be selected as Bit, S32, Float or no pin selected
de: _HAL-Pins_
    Der Eingangsstift kann als Bit, S32, Float oder kein Stift ausgewählt werden

note: type: Plain text
en: There is a `textTemplate` property to set the rich text and/or to format the text.
    Basic formatting might be:
de: Es gibt eine "textTemplate"-Eigenschaft, um den Rich-Text einzustellen und/oder den Text zu formatieren.
    Eine grundlegende Formatierung könnte sein:

note: type: Plain text
en: `%r` for booleans
de: `%r` für Boolesche Werte

note: type: Plain text
en: `%0.4f` for floats.
de: `%0.4f` für Floats.

note: type: Plain text
en: There are function calls to display values:
de: Es gibt Funktionsaufrufe zur Anzeige von Werten:

note: type: Plain text
en: It is based on PyQt's _QLabel_.
de: Es basiert auf PyQts _QLabel_.

note: type: Title ===
en: `LCDNumber` - LCD Style Number Readout Widget
de: `LCDNumber` - Widget zum Auslesen der LCD-Stilnummer

note: TODO MCDNumber widget capture type: Plain text
en: This widget _displays HAL float/s32/bit values in a LCD looking way_.
de: Dieses Widget _zeigt HAL-Float/S32/Bit-Werte in einer LCD-ähnlichen Form an_.

note: type: Plain text
en: It can display numbers in decimal, hexadecimal, binary and octal formats by setting the *`mode`* property.
de: Es kann Zahlen im Dezimal-, Hexadezimal-, Binär- und Oktalformat anzeigen, indem es die Eigenschaft *`Modus`* setzt.

note: type: Plain text
en: Option string to be used as the HAL pin name.
    If set to an empty string the widget name will be used.
de: Optionsstring, der als HAL-Pin-Name verwendet werden soll.
    Bei einem leeren String wird der Name des Widgets verwendet.

note: type: Plain text
en: It is based on PyQt's _QLCDNumber_.
de: Es basiert auf PyQts _QLCDNumber_.

note: type: Plain text
en: The `setInput` slot can be connected to a integer, or float signal.
de: Der `setInput`-Slot kann mit einem Integer- oder Float-Signal verbunden werden.

note: type: Plain text
en: This shows the `page 0` layout, and puts all other widgets back to where they were as initially built in Qt Designer.
de: Dies zeigt das "Seite 0"-Layout und stellt alle anderen Widgets wieder so ein, wie sie ursprünglich in Qt Designer erstellt wurden.

note: type: Plain text
en: Show next widget.
de: Nächstes Widget anzeigen.

note: type: Plain text
en: It is based on the _QStack_ widget.
de: Es basiert auf dem _QStack_-Widget.

note: type: Title ==
en: Machine Controller Widgets
de: Widgets für Maschinensteuerungen

note: type: Plain text
en: These widgets *interact with the Machine Controller state*.
de: Diese Widgets *interagieren mit dem Zustand der Maschinensteuerung*.

note: type: Title ===
en: `ActionButton` - Machine Controller Action Control Widget
de: `ActionButton` - Aktionssteuerungs-Widget der Maschinensteuerung

note: TODO ActionButton widget captures/examples type: Plain text
en: These buttons are used for *control actions on the machine controller*.
de: Diese Tasten werden für *Steuerungsaktionen an der Maschinensteuerung* verwendet.

note: type: Plain text
en: They are built on top of `IndicatedPushButton` so can have LEDs overlaid.
de: Sie sind auf `IndicatedPushButton` aufgebaut und können daher mit LEDs überlagert werden.

note: type: Plain text
en: If you left double click on this widget you can launch a dialog to set any of these actions.
    The dialogs will help to set the right related data to the selected action.
    You can also change these properties directly in the property editor.
de: Wenn Sie mit der linken Maustaste auf dieses Widget doppelklicken, können Sie einen Dialog zum Einstellen einer dieser Aktionen aufrufen.
    Die Dialoge helfen dabei, die richtigen Daten für die ausgewählte Aktion festzulegen.
    Sie können diese Eigenschaften auch direkt im Eigenschaftseditor ändern.

note: type: Plain text
en: Zeros the current user coordinate system offsets.
de: Nullt die aktuellen Offsets des Benutzerkoordinatensystems.

note: type: Plain text
en: Zeros the optional `G92` offsets.
de: Nullt die optionalen `G92`-Offsets.

note: type: Plain text
en: Set the joint number.
de: Legt die Gelenknummer fest.

note: type: Plain text
en: Selected with a different widget or `STATUS`.
de: Ausgewählt mit einem anderen Widget oder `STATUS`.

note: type: Plain text
en: Set the float/alt float number.
de: Festlegen Sie die float/alt-Gleitkommanummer.

note: type: Plain text
en: These set _attributes_ of the selected action (availability depends on the widget):
de: Diese setzen _Attribute_ der ausgewählten Aktion (Verfügbarkeit hängt vom Widget ab):

note: type: Plain text
en: Selects the joint/axis that the button controls.
de: Wählt das Gelenk/die Achse aus, das/die von der Schaltfläche gesteuert wird.

note: type: Plain text
en: Sets the imperial jog increment (set negative to ignore).
de: Legt das imperiale Jog-Inkrement fest (negativ setzen, um zu ignorieren).

note: type: Plain text
en: Sets the metric jog increment (set negative to ignore).
de: Legt die metrische Schrittweite fest (zum Ignorieren negativ setzen).

note: type: Plain text
en: Sets the angular jog increment (set negative to ignore).
de: Legt die Winkelschrittweite fest (zum Ignorieren negativ einstellen).

note: type: Plain text
en: Used for `jograte` and overrides.
de: Wird für `jograte` und overrides verwendet.

note: type: Plain text
en: For `jograte` and overrides that can toggle between two float numbers.
de: Für `jograte` und overrides, die zwischen zwei Fließkommazahlen wechseln können.

note: FIXME Space after comma or not ? type: Plain text
en: A reference to the _INI file_ `[MDI_COMMAND_LIST]` section.
    Set an integer of select one line under the INI`s `[MDI_COMMAND]` line starting at 0.
    Then in the INI file, under the heading `[MDI_COMMAND_LIST]` add appropriate lines.
    The commands are separated by the `;`.
    The `label` is set after the comma, and `\n` symbol adds a line break.
de: Ein Verweis auf den Abschnitt `[MDI_COMMAND_LIST]` der _INI-Datei.
    Setzen Sie einen Integer, der eine Zeile unter der INI-Zeile `[MDI_COMMAND]` auswählt, beginnend bei 0.
    Fügen Sie dann in der INI-Datei unter der Überschrift `[MDI_COMMAND_LIST]` entsprechende Zeilen hinzu.
    Die Befehle werden durch das `;` getrennt.
    Das `Label` wird nach dem Komma gesetzt, und das Symbol `\n` fügt einen Zeilenumbruch hinzu.

note: FIXME add link to Indicated_PushButton section type: Plain text
en: Action buttons are subclassed from <<sub:qtvcp:widgets:indicatedpushbutton>>[`IndicatedPushButton`].
    See the following sections for more informations about:
de: Aktionbuttons sind eine Unterklasse von <<sub:qtvcp:widgets:indicatedpushbutton>>[`IndicatedPushButton`].
    Siehe die folgenden Abschnitte für weitere Informationen über:

note: type: Plain text
en: <<sub:qtvcp:widgets:indicatedpushbutton:led,LED Indicator option>>
de: <<sub:qtvcp:widgets:indicatedpushbutton:led,LED Indikator Option>>

note: type: Plain text
en: It is based on PyQt's _QToolButton_.
de: Es basiert auf PyQts _QToolButton_.

note: type: Plain text
en: The recorded position will be remembered at shutdown if a preference file option is set up.
de: Die aufgezeichnete Position wird beim Herunterfahren gespeichert, wenn eine Einstellungsdateioption eingerichtet ist.

note: type: Plain text
en: Zero the axis
de: Nullen der Achse

note: type: Plain text
en: You select the axis by setting the joint number.
de: Sie wählen die Achse aus, indem Sie die Gelenknummer festlegen.

note: type: Plain text
en: You can select a `halpin` option that is set true when the axis is selected.
de: Sie können eine `halpin`-Option auswählen, die bei Auswahl der Achse auf true gesetzt wird.

note: type: Plain text
en: This is used to *align the work piece or zero part features using a webcam*.
de: Diese Funktion dient der *Ausrichtung des Werkstücks oder der Nullteilmerkmale mithilfe einer Webcam*.

note: type: Plain text
en: Joint number of offset to display (10 will specify rotational offset).
de: Gelenknummer des anzuzeigenden Offsets (10 gibt den Rotationsoffset an).

note: type: Plain text
en: Actual, relative or distance to go (0,1,2).
de: Tatsächlich, relativ oder noch zu fahrende Entfernung (0,1,2).

note: type: Plain text
en: Format of display ie `%10.3f`.
de: Format der Anzeige, z.B. `%10.3f`.

note: type: Plain text
en: format of display ie `%9.4f`.
de: Format der Anzeige, z.B. `%9,4f`.

note: type: Plain text
en: The `DROLabel` widget holds a property *`isHomed`* that can be used with a stylesheet to change the _color of the `DRO_Label` based on homing state of the joint_ number in LinuxCNC.
de: Das `DROLabel`-Widget enthält eine Eigenschaft *`isHomed`*, die mit einem Stylesheet verwendet werden kann, um die _Farbe des `DRO_Label` basierend auf dem Homing-Status der Gelenknummer in LinuxCNC zu ändern.

note: type: Plain text
en: This can also display:
de: Dies kann auch Folgendes anzeigen:

note: type: Plain text
en: *MDI history* when LinuxCNC is in `MDI` mode.
de: *MDI-Verlauf*, wenn sich LinuxCNC im 'MDI'-Modus befindet.

note: type: Plain text
en: *Log entries* when LinuxCNC is in `MANUAL` mode.
de: *Log-Einträge*, wenn sich LinuxCNC im 'MANUAL'-Modus befindet.

note: type: Plain text
en: *Preference file entries* if you enter `PREFERENCE` in capitals into the `MDILine` widget.
de: *Einträge in Präferenzdateien*, wenn Sie `PREFERENCE` in Großbuchstaben in das Widget `MDILine` eingeben.

note: type: Plain text
en: Set true to have the widget switch to MDI history when in MDI mode.
de: Setzen Sie true, damit das Widget im MDI-Modus in den MDI-Verlauf wechselt.

note: type: Plain text
en: Set true to have the widget switch to machine log when in Manual mode.
de: Setzen Sie true, damit das Widget im manuellen Modus auf das Maschinenprotokoll umschaltet.

note: type: Plain text
en: For `GcodeDisplay` widget's _default G-code lexer_:
de: Für den _Standard-G-Code-Lexer_ des Widgets `GcodeDisplay`:

note: FIXME Explain/explicit type: Plain text
en: _Font definitions_:
de: _Schriftdefinitionen_:

note: type: Plain text
en: It is based on PyQt's _QsciScintilla_.
de: Es basiert auf PyQts _QsciScintilla_.

note: type: Plain text
en: Sets the _default view orientation_ on GUI load.
    Valid choices for a lathe are p, y, y2. For other screens, valid choices are p, x, y, z, z2.
    The following shows an example of how to set this property:
de: Legt die _Standardausrichtung der Ansicht_ beim Laden der GUI fest.
    Gültige Auswahlmöglichkeiten für eine Drehmaschine sind p, y, y2. Für andere Bildschirme gelten die Optionen p, x, y, z, z2.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Determines whether or not to _show the DRO_.
    The following shows an example of how to set this property:
de: Legt fest, ob _die DRO_ angezeigt werden soll oder nicht.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Determine whether or not to _show the Distance To Go_.
    The following shows an example of how to set this property:
de: Legen Sie fest, ob die _Reststrecke angezeigt_ werden soll.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Determines whether or not to _show the units in metric by default_.
    The following shows an example of how to set this property:
de: Legt fest, ob die_ Einheiten standardmäßig_ in _metrischen_ Einheiten angezeigt werden sollen oder nicht.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Determines whether or not to _show the overlay by default_.
    The following shows an example of how to set this property:
de: Legt fest, ob das Overlay standardmäßig angezeigt werden soll oder nicht.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Determines whether or not to _show the offsets by default_.
    The following shows an example of how to set this property:
de: Legt fest, ob die _Offsets standardmäßig angezeigt_ werden sollen oder nicht.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Determines whether or not to _show the small origin by default_.
    The following shows an example of how to set this property:
de: Legt fest, ob _standardmäßig der kleine Ursprung angezeigt wird_.
    Das folgende Beispiel zeigt, wie diese Eigenschaft festgelegt wird:

note: type: Labeled list
en: *`overlay_color`* _(primary, secondary, or RGBA formatted color)_
de: *`overlay_color`* _(Primär-, Sekundär- oder RGBA-formatierte Farbe)_

note: type: Plain text
en: Sets the _default overlay color_.
    The following shows an example of how to set this property:
de: Legt die _Standard-Overlayfarbe_ fest.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Labeled list
en: *`background_color`* _(primary, secondary, or RGBA formatted color)_
de: *`background_color `* Hintergrundfarbe, _(Primär-, Sekundär- oder RGBA-formatierte Farbe)_

note: type: Plain text
en: Sets the _default background color_.
    The following shows an example of how to set this property:
de: Legt die _Standard-Hintergrundfarbe_ fest.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Determines whether or not _use a gradient background by default_.
    The following shows an example of how to set this property:
de: Legt fest, ob _Standardmäßig ein Hintergrund mit Farbverlauf verwendet wird_.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Sets the _default jog color_.
    The following shows an example of how to set this property:
de: Legt die _Standard-Jog-Farbe_ fest.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Sets the _default feed color_.
    The following shows an example of how to set this property:
de: Legt die _Standard-Farbe für den Vorschub_ fest.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Sets the _default rapid color_.
    The following shows an example of how to set this property:
de: Legt die _Standard-Farbe für den Eilgang_ fest.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Determines whether or not to _inhibit external controls by default_.
    The following shows an example of how to set this property:
de: Legt fest, ob _externe Steuerelemente standardmäßig gesperrt_ werden sollen oder nicht.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Changes the _mouse button behavior_ to rotate, move or zoom within the preview.
    The following shows an example of how to set this property:
de: Ändert das Verhalten der _Maustaste_ zum Drehen, Verschieben oder Zoomen innerhalb der Vorschau.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Table
en: *Rotate*
de: *Rotate* (engl. drehen)

note: type: Plain text
en: Determines wether or not to _invert the zoom direction_ when zooming with the mouse wheel.
    The following shows an example of how to set this property:
de: Legt fest, ob beim Zoomen mit dem Mausrad die _Zoomrichtung invertiert_ werden soll oder nicht.
    Im Folgenden wird ein Beispiel für die Einstellung dieser Eigenschaft gezeigt:

note: type: Plain text
en: Directly set the relative pan of view in x and y direction.
de: Legen Sie direkt den relativen Blickwinkel in x- und y-Richtung fest.

note: type: Plain text
en: Directly set the relative rotation of view in x and y direction.
de: Legen Sie direkt die relative Drehung der Ansicht in x- und y-Richtung fest.

note: type: Title ===
en: `StateLabel` - Controller Modes State Label Display Widget
de: 'StateLabel' - Controller-Modi Statusbeschriftungsanzeige-Widget

note: TODO StateLabel widget capture/example type: Plain text
en: This will *display a label based on the machine controller modes true/false states*.
de: Dadurch wird eine *Beschriftung basierend auf den Zuständen der Maschinensteuerung true/false* angezeigt.

note: type: Plain text
en: You can select between different texts based on true or false.
de: Sie können zwischen verschiedenen Texten wählen, die auf wahr oder falsch basieren.

note: type: Block title
en: States Selection Properties
de: Eigenschaften der Zustandsauswahl

note: type: Plain text
en: The states are selectable via these properties:
de: Die Zustände sind über diese Eigenschaften wählbar:

note: type: Plain text
en: `True` when machine is in `G96` _Constant Surface Speed Mode_.
de: 'True', wenn sich die Maschine in 'G96' befindet _Constant Surface Speed Mode_.

note: type: Plain text
en: `True` when machine is in `G7` _Lathe Diameter Mode_.
de: 'True', wenn sich die Maschine in 'G7' befindet _Drehmaschine Durchmesser Modus_.

note: type: Plain text
en: `True` when machine is in `G95` _Feed per revolution Mode_.
de: `True`, wenn die Maschine im `G95` _Vorschub je Umdrehung Modus_ (engl. Feed per Revolution Mode) ist.

note: type: Plain text
en: `True` when machine is in `G21` _Metric Mode_.
de: `True`, wenn sich die Maschine im `G21` _Metrischen Modus_ befindet.

note: type: Plain text
en: This will be the text set when the option is `True`.
    You can use _Qt rich text_ code for different fonts/colors etc.
    Typical template for metric mode in true state, might be: _Metric Mode_
de: Dies ist der Text, der gesetzt wird, wenn die Option `True` ist.
    Sie können _Qt rich text_ code für verschiedene Schriftarten/Farben usw. verwenden.
    Eine typische Vorlage für den metrischen Modus im wahren Zustand könnte sein: _Metrischer Modus_

note: type: Plain text
en: This will be the text set when the option is `False`.
    You can use _Qt rich text_ code for different fonts/colors etc.
    Typical template for metric mode in false state, might be: _Imperial Mode_.
de: Dies ist der Text, der gesetzt wird, wenn die Option `False` ist.
    Sie können _Qt rich text_ code für verschiedene Schriftarten/Farben usw. verwenden.
    Eine typische Vorlage für den metrischen Modus im falschen Zustand könnte sein: _Imperialer Modus_.

note: type: Title ===
en: `StatusLabel` - Controller Variables State Label Display Widget
de: `StatusLabel` - Anzeige-Widget für Controller-Variablen-Zustandsbeschriftung

note: TODO StatusLabel widget capture/example type: Plain text
en: This will *display a label based on variable status of the machine controller*.
de: Dadurch wird *ein Etikett basierend auf dem variablen Status der Maschinensteuerung* angezeigt.

note: type: Plain text
en: Used to display the actual spindle speed as _reported from the HAL pin_ `spindle.0.speed-i`.
    It's converted to _RPM_.
    A `textTemplate` of `%d` would typically be used.
de: Dient zur Anzeige der tatsächlichen Spindeldrehzahl, wie sie vom HAL-Pin "spindle.0.speed-i" gemeldet wird.
    Sie wird in _RPM_ umgewandelt.
    Normalerweise wird ein "textTemplate" von "%d" verwendet.

note: type: Plain text
en: Shows the last loaded file name.
de: Zeigt den Namen der zuletzt geladenen Datei an.

note: type: Plain text
en: Show the current selected G-code line.
de: Zeigt die aktuell ausgewählte G-Code-Zeile an.

note: type: Plain text
en: Shows the current spindle override setting in percent.
de: Zeigt die aktuelle Spindel-Override-Einstellung in Prozent an.

note: type: Plain text
en: Returns the comment text from the current loaded tool.
de: Gibt den Kommentartext des aktuell geladenen Werkzeugs zurück.

note: type: Plain text
en: Returns the diameter from the current loaded tool.
de: Gibt den Durchmesser des aktuell geladenen Werkzeugs zurück.

note: type: Plain text
en: Returns the tool number of the current loaded tool.
de: Gibt die Werkzeugnummer des aktuell geladenen Werkzeugs zurück.

note: type: Plain text
en: List of labels used for different machine states.
de: Liste der für die verschiedenen Maschinenzustände verwendeten Bezeichnungen.

note: type: Plain text
en: Toggles between _3 images_: `stop`, `fwd`, `revs`.
de: Wechselt zwischen _3 Bildern_: `stop`, `fwd`, `revs`.

note: type: Plain text
en: Would toggle between _2 images or one per joint_.
de: Würde zwischen _2 Bildern oder einem pro Gelenk_ umschalten.

note: type: Plain text
en: Right click the image name and you should see 'Copy path'
de: Klicken Sie mit der rechten Maustaste auf den Bildnamen und Sie sollten "Pfad kopieren" sehen.

note: type: Plain text
en: Click the 'New' button
de: Klicken Sie auf die Schaltfläche 'Neu'.

note: type: Plain text
en: You can _test the images display_ from the image list by changing the `image number`. In this case `0` is unhomed and `1` would be homed.
    This is for test display only and will be ignored outside of Qt Designer.
de: Sie können die _Anzeige der Bilder_ in der Bilderliste _testen_, indem Sie die `image number` (engl. für Bildnummer) ändern. In diesem Fall ist `0` unhomed und `1` würde homed sein.
    Dies ist nur für die Testanzeige und wird außerhalb von Qt Designer ignoriert.

note: TODO StatusStacked widget capture/example type: Plain text
en: This widget *displays one of three panels based on LinuxCNC's mode*.
de: Dieses Widget *zeigt eines von drei Panels an, je nach Modus von LinuxCNC*.

note: type: Plain text
en: It is based on PyQt's _ComboBox_.
de: Es basiert auf PyQts _ComboBox_.

note: type: Plain text
en: Color of transparent layer shown when quitting.
de: Farbe der transparenten Ebene, die beim Verlassen angezeigt wird.

note: type: Plain text
en: _Monitoring of the LinuxCNC error channel_.
    This also sends the message through `STATUS` to anything that registers.
de: _Überwachung des LinuxCNC-Fehlerkanals._
    Dies sendet auch die Nachricht über `STATUS` an alles, das sich registriert.

note: type: Plain text
en: Playing sounds using `beep`, `espeak` and the system sound.
de: Abspielen von Sounds mit `beep`, `espeak` und dem Systemsound.

note: type: Plain text
en: Setting up a _preferences file path_.
    Using the magic word `WORKINGFOLDER` in the preference file path will be replaced with the launched configuration path, ie. `WORKINFOLDER/my_preferences`.
de: Einrichten eines _Präferenzdateipfades_.
    Die Verwendung des magischen Wortes `WORKINGFOLDER` im Pfad der Einstellungsdatei wird durch den gestarteten Konfigurationspfad ersetzt, also `WORKINFOLDER/my_preferences`.

note: type: Plain text
en: Used to initiate _ZMQ based outgoing messages_.
de: Wird verwendet, um _ZMQ-basierte ausgehende Nachrichten_ zu initiieren.

note: type: Plain text
en: Embed programs defined in the _INI_.
de: In der _INI_ definierte Programme einbetten.

note: type: Plain text
en: Focus_overlay will put a transparent image or colored panel over the main screen to emphasize focus to an external event - typically a dialog.
de: Focus_overlay legt ein transparentes Bild oder ein farbiges Feld über den Hauptbildschirm, um den Fokus auf ein externes Ereignis zu betonen - normalerweise ein Dialog.

note: type: Plain text
en: Sets up the message dialog - used for general messages.
de: Richtet den Nachrichtendialog ein - wird für allgemeine Nachrichten verwendet.

note: type: Plain text
en: Color of transparent layer shown when the message dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der Nachrichtendialog eingeblendet wird.

note: type: Plain text
en: Sets up the standard close screen prompt dialog.
de: Richtet den Standarddialog zum Schließen des Bildschirms ein.

note: type: Plain text
en: Sets up the numerical entry dialog.
de: Richtet den numerischen Eingabedialog ein.

note: type: Plain text
en: Sets up a floating software keyboard when entry dialog is focused.
de: Richtet eine schwebende Softwaretastatur ein, wenn der Eingabedialog fokussiert ist.

note: type: Plain text
en: Color of transparent layer shown when the entry dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der Eingabedialog angezeigt wird.

note: type: Plain text
en: Sets up the manual tool change dialog, including HAL pin.
de: Richtet den manuellen Werkzeugwechsel-Dialog ein, inklusive HAL-Pin.

note: type: Plain text
en: Color of transparent layer shown when the tool dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der Werkzeugdialog angezeigt wird.

note: type: Plain text
en: Option to use desktop notify dialogs for manual tool change dialog.
de: Option zur Verwendung von Desktop-Benachrichtigungsdialogen für manuelle Werkzeugwechseldialoge.

note: type: Plain text
en: Frameless dialogs can not be easily moved by users.
de: Framesless-Dialoge können von Benutzern nicht einfach verschoben werden.

note: type: Plain text
en: Sets up the file choosing dialog.
de: Richtet den Dateiauswahldialog ein.

note: type: Plain text
en: Color of transparent layer shown when the file dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der Dateidialog angezeigt wird.

note: type: Labeled list
en: *`keyboardDialog_option`*
de: *'keyboardDialog_option'*

note: type: Plain text
en: Sets up a keyboard entry widget.
de: Richtet ein Tastatureingabe-Widget ein.

note: type: Plain text
en: Color of transparent layer shown when the keyboard dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der Tastaturdialog angezeigt wird.

note: type: Plain text
en: Sets up the Versa style probe dialog.
de: Richtet den Versa-Style-Probe-Dialog ein.

note: type: Plain text
en: Color of transparent layer shown when the `versaProbe` dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der Dialog `versaProbe` angezeigt wird.

note: type: Plain text
en: Sets up the macro selection dialog.
de: legt den Makro-Auswahldialog fest.

note: type: Plain text
en: Color of transparent layer shown when the `macroTab` dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der `macroTab`-Dialog angezeigt wird.

note: type: Plain text
en: Sets up the camera alignment dialog.
de: Richtet den Kameraausrichtungsdialog ein.

note: type: Plain text
en: Color of transparent layer shown when the `camView` dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der Dialog `camView` angezeigt wird.

note: type: Plain text
en: Color of transparent layer shown when the `toolOffset` dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der `toolOffset`-Dialog angezeigt wird.

note: type: Plain text
en: Sets up the origin display/editor dialog.
de: Richtet das Dialogfeld für die Anzeige/Editierung des Ursprungs ein.

note: type: Plain text
en: Color of transparent layer shown when the `originOffset` dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der `originOffset`-Dialog angezeigt wird.

note: type: Plain text
en: Color of transparent layer shown when the calculator dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn das Dialogfeld "Rechner" angezeigt wird.

note: type: Plain text
en: Sets up a dialog to display logs from the machine and QtVCP.
de: Richtet einen Dialog ein, um Protokolle von der Maschine und QtVCP anzuzeigen.

note: type: Plain text
en: Color of transparent layer shown when the `machineLog` dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der `machineLog`-Dialog angezeigt wird.

note: type: Plain text
en: Sets up a dialog to display starting options when starting machine execution from a arbitrary line.
de: Richtet einen Dialog ein, der die Startoptionen anzeigt, wenn die Maschinenausführung von einer beliebigen Zeile aus gestartet wird.

note: type: Plain text
en: Color of transparent layer shown when the `runFromLine` dialog is shown.
de: Farbe der transparenten Ebene, die angezeigt wird, wenn der `runFromLine`-Dialog angezeigt wird.

note: type: Plain text
en: The screen designer chooses the *default settings of the `screenOptions` widget*.
de: Der Screendesigner wählt die *Standardeinstellungen des Widgets `screenOptions` aus*.

note: type: Plain text
en: Once chosen, most won't ever need to be changed. But if needed, some can be changed in the handler file or in stylesheets.
de: Einmal ausgewählt, müssen die meisten nicht mehr geändert werden. Bei Bedarf können jedoch einige in der Handler-Datei oder in Stylesheets geändert werden.

note: type: Plain text
en: *In the handler file*: +
    Here we reference the widget by the Qt Designer user defined name:
de: *In der Handler-Datei*: +
    Hier referenzieren wir das Widget durch den benutzerdefinierten Namen des Qt-Designers:

note: type: Plain text
en: *In style sheets*: +
    Here we can reference the widget by Qt Designer user defined name
    or by widget class name.
de: *In Stylesheets*: +
    Hier können wir das Widget durch den benutzerdefinierten Namen von Qt Designer referenzieren
    oder nach Widget-Klassenname.

note: type: Plain text
en: *Some settings are only checked on startup* so will not cause changes
    after startup. In these cases you would need to _make the changes in Qt
    Designer only_.
de: *Einige Einstellungen werden nur beim Start geprüft* und führen daher nicht zu Änderungen
    nach dem Start. In diesen Fällen müssen Sie die Änderungen _nur_ im Qt
    Designer vornehmen_.

note: type: Block title
en: Preference File Entries
de: Einträge in der Einstellungsdatei

note: type: Plain text
en: If the _preference file option is selected_, `screenOption` widget will make an *INI based preference file*.
de: Wenn die Option _Voreinstellungsdatei_ ausgewählt ist, erstellt das Widget `screenOption` eine *INI-basierte Voreinstellungsdatei*.

note: type: Plain text
en: While _other QtVCP widgets will add to this list_, the `screenOptions` widget will add these entries under the following headings:
de: Während _andere QtVCP Widgets diese Liste ergänzen_, fügt das `screenOptions` Widget diese Einträge unter den folgenden Überschriften hinzu:

note: type: Plain text
en: Whether to display errors/messages in the system's notification
    mechanism.
de: Ob Fehler/Meldungen im
    Benachrichtigungsmechanismus des Systems angezeigt werden sollen.

note: type: Plain text
en: Number of displayed errors at one time.
de: Anzahl der angezeigten Fehler zu einem Zeitpunkt.

note: type: Plain text
en: Whether to pop a confirmation dialog.
de: Ob ein Bestätigungsdialog erscheinen soll.

note: type: Plain text
en: Turns all sounds on or off.
de: Schaltet alle Töne ein oder aus.

note: type: Plain text
en: To play alert sound when dialog pops.
de: Um Warntöne wiederzugeben, wenn ein Dialogfeld angezeigt wird.

note: type: Plain text
en: To use Espeak to speak error messages.
de: Verwendung von Espeak, um Fehlerbotschaften zu sprechen.

note: type: Plain text
en: To use Espeak to speak all other messages.
de: Espeak verwenden, um alle anderen Nachrichten zu sprechen.

note: type: Plain text
en: Sound to play when messages displayed. See notes below.
de: Ton, der abgespielt wird, wenn Nachrichten angezeigt werden. Siehe Hinweise unten.

note: type: Plain text
en: Sound to play when user messages displayed. See notes below.
de: Ton, der abgespielt wird, wenn Benutzermeldungen angezeigt werden. Siehe Hinweise unten.

note: type: Plain text
en: Short title string to display in dialog.
de: Kurzer Titelstring, der im Dialog angezeigt wird.

note: type: Plain text
en: Large text string to superimpose in focus layer.
de: Großer Text, der in die Fokusebene eingeblendet wird.

note: type: Plain text
en: Longer descriptive string to display in dialog
de: Längere beschreibende Zeichenfolge zur Anzeige im Dialog

note: type: Plain text
en: Whether to display a greeting dialog on start up.
de: Ob ein Begrüßungsdialog beim Starten angezeigt werden soll.

note: type: Plain text
en: Short Title string. +
    If the speak option is also selected it will be spoken with Espeak.
de: Kurzer Titelstring. +
    Wenn die Option "Sprechen" ebenfalls ausgewählt ist, wird der Titel mit Espeak gesprochen.

note: type: Plain text
en: Longer description string.
de: Längere Zeichenfolge zur Beschreibung.

note: type: Plain text
en: Time in seconds to display before closing.
de: Zeit in Sekunden bis zur Anzeige vor dem Schließen.

note: type: Block title
en: `*_sound_type` entries
de: `*_sound_type` Einträge

note: type: Plain text
en: These Sound options require `python3-gst1.0` installed.
de: Diese Sound-Optionen erfordern die Installation von `python3-gst1.0`.

note: type: Plain text
en: *Audio Files* +
    You can also specify a _file path to an arbitrary audio file_. +
    You can use `~` in path to substitute for the user home file path.
de: *Audiodateien* +
    Sie können auch einen _Dateipfad für eine beliebige Audiodatei_ angeben. +
    Sie können `~` im Pfad verwenden, um den Pfad der Benutzer-Home-Datei zu ersetzen.

note: type: Plain text
en: *Kernel Beeps* +
    If the `beep` _kernel module_ is installed and it is not disabled, these
    sound-type entries are available:
de: *Kernel-Pieptöne* +
    Wenn das _Kernel-Modul_ `beep` installiert und nicht deaktiviert ist, sind diese
    Sound-Einträge zur Verfügung:

note: type: Plain text
en: *Text-To-Speech* +
    If the _Espeak_ module (`python3-espeak`) is installed, you can use the
    `SPEAK` entry to pronounce text:
de: *Text-To-Speech* +
    Wenn das _Espeak_ Modul (`python3-espeak`) installiert ist, können Sie den
    Eintrag `SPEAK` verwenden, um Text vorlesen zu lassen:

note: type: Title ===
en: `StatusSlider` - Controller Setting Adjustment Slider Widget
de: `StatusSlider` - Controller-Einstellungs-Schieberegler-Widget

note: type: Plain text
en: The widget can adjust:
de: Die Kurzbeschreibung kann folgendes anpassen:

note: type: Plain text
en: Angular jog rate
de: Winkel-Jog-Rate

note: type: Plain text
en: Spindle override rate
de: Spindel-Override-Rate

note: type: Plain text
en: Rapid override rate
de: Eilgang Übersteuerungsrate (engl. rapid override rate)

note: type: Plain text
en: Selects a linear jograte slider.
de: Wählt einen linearen Jograte-Schieberegler aus.

note: type: Plain text
en: String to define style change: `read-only`, `under`, `over` and `normal`.
de: String zum Definieren der Stiländerung: `read-only` (enlg. nur lesen), `under` (engl. für unter), `over` (engl. für über) und `normal`.

note: type: Plain text
en: Sets the float value that signals the stylesheet for 'under' warning.
de: Legt den Float-Wert fest, der dem Stylesheet eine "Unter"-Warnung signalisiert.

note: type: Plain text
en: Sets the float value that signals the stylesheet for 'over' warning.
de: Legt den Gleitkommawert fest, der dem Stylesheet die Warnung "Über" signalisiert.

note: type: Plain text
en: These can be set in:
de: Diese können eingestellt werden in:

note: type: Plain text
en: Or (if appropriate) in stylesheets.
de: Oder (gegebenenfalls) in Stylesheets.

note: type: delimited block -
en: /* warning colors for overrides if out of normal range*/
    /* widget object name is slider_spindle_ovr */
de: /* Warnfarben für Übersteuerungen, wenn sie außerhalb des normalen Bereichs liegen*/
    /* Name des Widget-Objekts ist slider_spindle_ovr */

note: type: Title ===
en: `StateLED` - Controller State LED Widget
de: `StateLED` - Controller-Status-LED-Widget

note: type: Plain text
en: The state options are:
de: Die Statusoptionen sind:

note: type: Plain text
en: There are properties that can be changed:
de: Es gibt Eigenschaften, die geändert werden können:

note: type: Plain text
en: Adds an output pin that reflects selected state.
de: Fügt einen Ausgangspin hinzu, der den ausgewählten Zustand wiedergibt.

note: type: Plain text
en: Qt Alignment hint.
de: Qt-Hinweis zur Ausrichtung.

note: type: Plain text
en: Current state of LED (for testing in Qt Designer).
de: Aktueller Zustand der LED (zum Testen in Qt Designer).

note: type: Plain text
en: `name_of_led` would be the name defined in Qt Designer's editor.
de: `name_of_led` wäre der im Editor von Qt Designer definierte Name.

note: type: Title ===
en: `StatusAdjustmentBar` - Controller Value Setting Widget
de: `StatusAdjustmentBar` - Widget zum Einstellen von Controller-Werten

note: TODO StatusAdjustmentBar widget capture type: Plain text
en: This widget allows *setting values using buttons while displaying a bar*.
de: Dieses Widget ermöglicht die *Einstellung von Werten über Schaltflächen, während ein Balken angezeigt wird*.

note: type: Plain text
en: It also has an _optional hi/low toggle button_ that can be held down to set the *levels*.
de: Außerdem gibt es einen _optionalen Hoch/Tief-Knopf_, der gedrückt gehalten werden kann, um die *Stufen* einzustellen.

note: type: Title ===
en: `SystemToolButton` - User System Selection Widget
de: `SystemToolButton` - Widget zur Auswahl des Benutzersystems

note: TODO SystemToolButton widget capture/example FIXME what/which "user system" ? type: Plain text
en: This widget allows you to *manually select a user system by pressing and holding*.
de: Mit diesem Widget können Sie *manuell ein Benutzersystem auswählen, indem Sie es gedrückt halten*.

note: type: Plain text
en: If you don't set the button text it will automatically update to the current system.
de: Wenn Sie den Text der Schaltfläche nicht festlegen, wird sie automatisch auf das aktuelle System aktualisiert.

note: type: Title ===
en: `MacroTab` - Special Macros Widget
de: `MacroTab` - Spezielles Makro-Widget

note: type: Block title
en: QtVCP `MacroTab`: Special Macros Widget
de: QtVCP `MacroTab`: Spezielles Makro-Widget

note: type: Plain text
en: This widget allows a user to *select and adjust special macro programs* for doing small jobs.
de: Mit diesem Widget kann der Benutzer *spezielle Makroprogramme* für die Erledigung kleinerer Aufgaben auswählen und anpassen.

note: type: Plain text
en: It uses _images for visual representation_ of the macro and for an icon.
de: Es verwendet _Bilder zur visuellen Darstellung_ des Makros und für ein Symbol.

note: type: Plain text
en: It searches for special macros using the _INI definition_:
de: Es sucht nach speziellen Makros unter Verwendung der _INI-Definition_:

note: type: Plain text
en: The macros are *`O-word` subroutines with special comments* to work with the launcher.  The first three lines _must_ have the keywords below, the fourth is optional.
de: Die Makros sind *`O-Wort`-Unterprogramme mit speziellen Kommentaren* für die Zusammenarbeit mit dem Launcher.  Die ersten drei Zeilen _müssen_ die untenstehenden Schlüsselwörter enthalten, die vierte ist optional.

note: type: Plain text
en: Here is a sample for the first four lines in an _O-word file_:
de: Hier ist ein Beispiel für die ersten vier Zeilen einer _O-Word-Datei_:

note: type: Plain text
en: This is the _first line_ in the O-word file.
de: Dies ist die _erste Zeile_ in der O-Wort-Datei.

note: type: Plain text
en: It is a *comma separated list of text to display above an entry*.
    There will be *one for every variable required* in the O-word function.
de: Es handelt sich um eine *durch Kommata getrennte Liste von Text, der über einem Eintrag angezeigt werden soll*.
    Es gibt *eine für jede erforderliche Variable* in der O-Wort-Funktion.

note: type: Plain text
en: If the macro does not require variables, leave it empty:
de: Wenn das Makro keine Variablen benötigt, lassen Sie es leer:

note: type: Plain text
en: This must be the _second line_ in the O-word file.
de: Dies muss die _zweite Zeile_ in der O-Wort-Datei sein.

note: type: Plain text
en: It is a *comma separated list of the default values for each variable* in the O-word function.
de: Es handelt sich um eine *durch Kommata getrennte Liste der Standardwerte für jede Variable* in der O-Wort-Funktion.

note: type: Plain text
en: If you use the word `true` or `false` in the list, a `*checkbutton*` will be shown.
de: Wenn Sie das Wort "true" oder "false" in der Liste verwenden, wird ein "*checkbutton*" angezeigt.

note: type: Plain text
en: This must be the _third line_ in the O-word file.
de: Dies muss die _dritte Zeile_ in der O-Wort-Datei sein.

note: type: Plain text
en: *SVG Images* +
    If using SVG image files, they must end with the `.svg` extension. +
de: *SVG-Bilder* +
    Wenn Sie SVG-Bilddateien verwenden, müssen sie mit der Erweiterung „.svg“ enden. +

note: type: Plain text
en: The images must be added to _SVG layers_ which are used to define the different images for macro and icon.
de: Die Bilder müssen zu _SVG-Ebenen_ hinzugefügt werden, die zur Definition der verschiedenen Bilder für Makro und Symbol verwendet werden.

note: type: Plain text
en: Value is comma separated list of three ordered fields:
de: Wert ist eine durch Kommata getrennte Liste von drei geordneten Feldern:

note: type: Plain text
en: With:
de: Mit:

note: type: Labeled list
en: *`_filename_.svg`*
de: *`_dateiname_.svg`*

note: type: Plain text
en: SVG image file name as first field.
    It is assumed to be in the same folder as the O-word file.
de: Name der SVG-Bilddatei als erstes Feld.
    Es wird davon ausgegangen, dass sie sich im selben Ordner befindet wie die O-Wort-Datei.

note: type: Plain text
en: Macro image layer name as second field.
de: Name der Makrobildebene als zweites Feld.

note: type: Plain text
en: Icon image layer name as optional third field.  If the third entry is missing, the same image will be used for macro and icon.
de: Name der Ikonenebene als optionales drittes Feld.  Fehlt der dritte Eintrag, wird für Makro und Symbol das gleiche Bild verwendet.

note: type: Plain text
en: *PNG/JPG Images*: +
    Value remains a comma separated list:
de: *PNG/JPG-Bilder*: +
    Wert bleibt eine durch Komma getrennte Liste:

note: type: Plain text
en: Macro image file name as first field.
    It is assumed that the image file are in the same folder than the macro.
de: Name der Bilddatei des Makros als erstes Feld.
    Es wird davon ausgegangen, dass sich die Bilddatei im selben Ordner befindet wie das Makro.

note: type: Plain text
en: *Icon image file name* as optional second field. +
    If the second entry is missing the same image will be used for macro
    and image.
de: *Dateiname des Bildes* als optionales zweites Feld. +
    Fehlt der zweite Eintrag, wird für Makro und Bild das gleiche Bild verwendet
    und Bild verwendet.

note: type: Plain text
en: If the keyword is present but the entries are missing, no images will be used.
de: Wenn das Schlüsselwort vorhanden ist, aber die Einträge fehlen, werden keine Bilder verwendet.

note: type: Plain text
en: This _optional line must be the fourth_ line in the O-word file.
de: Diese _optionale Zeile muss die vierte_ Zeile in der O-Wort-Datei sein.

note: type: Plain text
en: It is a comma separated list of keyword and data:
de: Es handelt sich um eine durch Kommata getrennte Liste von Schlüsselwörtern und Daten:

note: type: Plain text
en: Shows a load button.
de: Zeigt einen Button zum Laden an.

note: type: Plain text
en: Shows a save button.
de: Zeigt einen Button zum Speichern an.

note: type: Title ===
en: `MDILine` - MDI Commands Line Entry Widget
de: `MDILine` - MDI-Befehlszeileneingabe-Widget

note: TODO MDILine widget capture type: Plain text
en: One can *enter MDI commands* here.
de: Hier kann man *MDI-Befehle* eingeben.

note: type: Plain text
en: A popup keyboard is available.
de: Eine Popup-Tastatur ist verfügbar.

note: type: Block title
en: Embedded Commands
de: Eingebettete Befehle

note: type: Plain text
en: There are also *embedded commands* available from this Widget.
de: Es gibt auch *eingebettete Befehle*, die über dieses Widget verfügbar sind.

note: type: Plain text
en: Enter any of these _case sensitive_ commands to load the respective program or access the feature:
de: Geben Sie einen dieser Befehle ein, um das entsprechende Programm zu laden oder die Funktion aufzurufen:

note: type: Plain text
en: Starts LinuxCNC link:../hal/tools.html#sec:halmeter[`halmeter`] utility.
de: Startet das LinuxCNC Link:../hal/tools.html#sec:halmeter[`halmeter`] Dienstprogramm.

note: type: Plain text
en: Starts LinuxCNC link:../hal/halshow.html#cha:halshow[`halshow`] utility.
de: Startet das LinuxCNC Link:../hal/halshow.html#cha:halshow[`halshow`] Dienstprogramm.

note: type: Plain text
en: Starts LinuxCNC link:../hal/tutorial.html#sec:tutorial-halscope[`halscope`] utility.
de: Startet das LinuxCNC Link:../hal/tutorial.html#sec:tutorial-halscope[`halscope`] Dienstprogramm.

note: type: Plain text
en: Starts LinuxCNC link:../man/man1/linuxcnctop.1.html[`status`] utility.
de: Startet das LinuxCNC Link:../man/man1/linuxcnctop.1.html[`status`] Dienstprogramm.

note: type: Plain text
en: Starts LinuxCNC link:../getting-started/updating-linuxcnc.html#_calibration_emccalib_tcl[calibration] utility.
de: Startet den LinuxCNC Link:../getting-started/updating-linuxcnc.html#_calibration_emccalib_tcl[calibration] utility.

note: type: Plain text
en: Starts the link:../ladder/classic-ladder.html[ClassicLadder GUI] if the _ClassicLadder realtime HAL component_ was loaded by the machine's config files.
de: Startet die Link:../ladder/classic-ladder.html[ClassicLadder GUI], wenn die _ClassicLadder realtime HAL component_ durch die Konfigurationsdateien des Rechners geladen wurde.

note: type: Plain text
en: _Loads the preference file_ into the `GcodeEditor`.
de: _Lädt die Einstellungsdatei_ in den `GcodeEditor`.

note: type: Plain text
en: _Clears the MDI History_.
de: _Löscht den MDI-Verlauf_.

note: type: Plain text
en: See link:../man/man1/halcmd.1.html#COMMANDS[`halcmd net` commands].
    An error will result if the command is unsuccessful.
de: Siehe Link:../man/man1/halcmd.1.html#COMMANDS[`halcmd net` commands].
    Wenn der Befehl nicht erfolgreich ist, wird ein Fehler ausgegeben.

note: type: Plain text
en: __Example__: `net plasmac:jog-inhibit motion.jog-stop`
de: __Beispiel__: `net plasmac:jog-inhibit motion.jog-stop`

note: type: Plain text
en: _Sets the value of a pin or a parameter_.
    Valid values depend on the object type of the pin or parameter.
    It results in an error if the data types do not match or the pin is connected to a signal.
de: _Sets den Wert eines Pins oder einer parameter_.
    Gültige Werte hängen vom Objekttyp des Pins oder Parameters ab.
    Dies führt zu einem Fehler, wenn die Datentypen nicht übereinstimmen oder der Pin mit einem Signal verbunden ist.

note: type: Plain text
en: _Syntax_: `setp <pin/parameter-name> <value>`
de: _Syntax_: `setp <Pin/Parameter-Name> <Wert>`

note: type: Plain text
en: _Example_: `setp plasmac.resolution 100`
de: _Beispiel_: `setp plasmac.resolution 100`

note: type: Plain text
en: _Disconnects a pin from a signal_.
    An error will result if the pin does not exist.
    Running LinuxCNC from terminal may help determine the root cause as error messages from `hal_lib.c` will be displayed there.
de: _Trennt einen Pin von einem Signal_.
    Ein Fehler tritt auf, wenn der Pin nicht vorhanden ist.
    Running LinuxCNC von Terminal kann helfen, die Ursache zu bestimmen, wie Fehlermeldungen von `hal_lib.c` wird dort angezeigt werden.

note: type: Plain text
en: _Syntax_: `unlinkp <pin name>`
de: _Syntax_: `unlinkp <Pin-Name>`

note: type: Plain text
en: __Example__: `unlinkp motion.jog-stop`
de: __Beispiel__: `unlinkp motion.jog-stop`

note: type: Plain text
en: The `MDILine` function *`spindle_inhibit`* can be used by a GUI's handler file to inhibit `M3`, `M4`, and `M5` spindle commands if necessary.
de: Die Funktion `MDILine` *`spindle_inhibit`* kann von der Handler-Datei einer grafischen Benutzeroberfläche verwendet werden, um die Spindelbefehle `M3`, `M4` und `M5` bei Bedarf zu sperren.

note: type: Plain text
en: It is based on PyQt's _QLineEdit_.
de: Es basiert auf PyQts _QLineEdit_.

note: type: Title ===
en: `MDIHistory` - MDI Commands History Widget
de: `MDIHistory` - MDI-Befehlsverlaufs-Widget

note: TODO MDIHistory widget capture TODO Merge MDILine and MDIHistory sections ? type: Plain text
en: Displays a *scrollable list of past MDI command*.
de: Zeigt eine *scrollbare Liste vergangener MDI-Befehle* an.

note: type: Plain text
en: An edit line is embedded for MDI commands.
de: Für MDI-Befehle ist eine Bearbeitungszeile eingebettet.

note: type: Plain text
en: The same MDILine embedded commands may be accessed from this widget.
de: Die gleichen eingebetteten MDILine-Befehle können über dieses Widget aufgerufen werden.

note: type: Plain text
en: The history is _recorded on a file defined in the INI_ under the heading `[DISPLAY]` (this shows the default):
de: Der Verlauf wird _in einer Datei aufgezeichnet, die in der INI_ unter der Überschrift `[DISPLAY]` definiert ist (dies ist die Standardeinstellung):

note: type: Title ===
en: `MDITouchy` - Touch Screen MDI Entry Widget
de: `MDITouchy` - Touchscreen-MDI-Eingabe-Widget

note: type: Block title
en: QtVCP `MDITouchy`: Touch Screen MDI Entry Widget
de: QtVCP `MDITouchy`: Touchscreen-MDI-Eingabe-Widget

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP MDITouchy: Touch Screen MDI Entry Widget
de: QtVCP MDITouchy: Touchscreen-MDI-Eingabe-Widget

note: type: Plain text
en: This widget displays *buttons and entry lines to use for entering MDI commands*.
de: Dieses Widget zeigt *Buttons und Eingabezeilen für die Eingabe von MDI-Befehlen* an.

note: type: Plain text
en: Based on LinuxCNC's Touchy screen's MDI entry process, its large buttons are most useful for touch screens.
de: Basierend auf LinuxCNC's Touchy Screen's MDI-Eingabe-Prozess, dessen großen Buttons sind sehr nützlich für Touchscreens.

note: type: Plain text
en: To use `MDITouchy`:
de: So verwenden Sie `MDITouchy`:

note: type: Plain text
en: First press one of the `G/XY`, `G/RO`, `M` or `T` button.  On the left will show the entry fields that can be filled out,
de: Drücken Sie zunächst eine der Tasten "G/XY", "G/RO", "M" oder "T".  Auf der linken Seite werden die Eingabefelder angezeigt, die ausgefüllt werden können,

note: type: Plain text
en: Then press `Next` and `Back` to navigate between fields.
de: Drücken Sie dann „Weiter“ und „Zurück“, um zwischen den Feldern zu navigieren.

note: type: Plain text
en: `Calc` will pop up a calculator dialog.
de: `Calc` öffnet einen Taschenrechnerdialog.

note: type: Plain text
en: `Clear` clears the ecurrent entry.
de: `Clear` löscht den aktuellen Eintrag.

note: type: Plain text
en: The widget _requires an explicit call to MDITouchy Python code to actually run the MDI command_:
de: Das Widget _erfordert einen expliziten Aufruf des MDITouchy-Python-Codes, um den MDI-Befehl tatsächlich auszuführen_:

note: type: Plain text
en: *For handler file code* +
    If the widget was named 'mditouchy' in Qt Designer, the command below
    would run the displayed MDI command:
de: *Für Handler-Datei-Code* +
    Wenn das Widget in Qt Designer 'mditouchy' genannt wurde, würde der folgende Befehl
    den angezeigten MDI-Befehl ausführen:

note: type: Plain text
en: *For action button use* +
    If the widget was named 'mditouchy' in Qt Designer, use the action
    button's 'Call Python commands' option and enter:
de: *Für die Verwendung von Aktionsschaltflächen* +
    Wenn das Widget in Qt Designer 'mditouchy' genannt wurde, verwenden Sie die Option 'Call Python commands' der Aktionsschaltfläche
    Schaltfläche die Option 'Python-Befehle aufrufen' und geben Sie ein:

note: type: Plain text
en: The macro button _cycles though macros defined in the INI [DISPLAY] heading_.
de: Die Makro-Schaltfläche _durchläuft die in der INI-Überschrift [ANZEIGE] definierten Makros_.

note: type: Plain text
en: Add one or more `MACRO` lines of the following format:
de: Fügen Sie eine oder mehrere `MACRO`-Zeilen im folgenden Format hinzu:

note: type: Plain text
en: In the example below, `increment` is the name of the macro, and it accepts two parameters, named `xinc` and `yinc`.
de: Im folgenden Beispiel ist `increment` der Name des Makros, und es akzeptiert zwei Parameter, die `xinc` und `yinc` heißen.

note: type: delimited block -
en: MACRO = incerment xinc yinc
de: MACRO = increment xinc yinc

note: type: Plain text
en: Now, place the macro in a file named `macro_name.ngc`, in the `PROGRAM_PREFIX` directory, or any directory in the `SUBROUTINE_PATH` specified in the INI file.
de: Legen Sie nun das Makro in einer Datei mit dem Namen `macro_name.ngc` im Verzeichnis `PROGRAM_PREFIX` oder in einem beliebigen Verzeichnis im `SUBROUTINE_PATH` ab, das in der INI-Datei angegeben ist.

note: type: Plain text
en: Keeping on with the example above, it would be named `increment.ngc` and its content could look like:
de: Um bei dem obigen Beispiel zu bleiben, würde es `increment.ngc` heißen und sein Inhalt könnte wie folgt aussehen:

note: type: Plain text
en: Notice the _name of the sub matches the file name and macro name exactly_, including case.
de: Beachten Sie, dass der _Name des Unterprogramms exakt mit dem Dateinamen und dem Makronamen übereinstimmt_, einschließlich Groß- und Kleinschreibung.

note: type: Plain text
en: When you invoke the macro by pressing the Macro button you can enter values for parameters (`xinc` and `yinc` in our example).
    These are passed to the macro as positional parameters: `#1`, `#2`... `#N` respectively.
    Parameters you leave empty are passed as value `0`.
de: Wenn Sie das Makro durch Drücken der Schaltfläche Makro aufrufen, können Sie Werte für Parameter eingeben (in unserem Beispiel "xinc" und "yinc").
    Diese werden als Positionsparameter an das Makro übergeben: `#1`, `#2`... `#N` jeweils.
    Parameter, die Sie leer lassen, werden als Wert `0` übergeben.

note: type: Plain text
en: If there are several different macros, press the Macro button repeatedly to cycle through them.
de: Wenn es mehrere verschiedene Makros gibt, drücken Sie wiederholt die Makrotaste, um sie zu durchlaufen.

note: type: Plain text
en: In this simple example, if you enter -1 for xinc and invoke the running of the MDI cycle, a rapid 'G0' move will be invoked, moving one unit to the left.
de: Wenn Sie in diesem einfachen Beispiel -1 für xinc eingeben und die Ausführung des MDI-Zyklus aufrufen, wird eine schnelle 'G0'-Bewegung ausgelöst, die eine Einheit nach links geht.

note: type: Plain text
en: This macro capability is useful for edge/hole probing and other setup tasks, as well as perhaps hole milling or other simple operations that can be done from the panel without requiring specially-written G-code programs.
de: Diese Makrofunktion ist nützlich für das Antasten von Kanten/Löchern und andere Einrichtungsaufgaben sowie vielleicht für das Fräsen von Löchern oder andere einfache Operationen, die vom Bedienfeld aus durchgeführt werden können, ohne dass speziell geschriebene G-Code-Programme erforderlich sind.

note: type: Title ===
en: `OriginOffsetView` - Origins View and Setting Widget
de: `OriginOffsetView` - Ursprungsansicht und Einstellungs-Widget

note: type: Block title
en: QtVCP `OriginOffsetsView`: Origins View and Setting Widget
de: QtVCP `OriginOffsetsView`: Origins-Ansicht und Einstellungs-Widget

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP OriginOffsetsView: Origins View and Setting Widget
de: QtVCP OriginOffsetsView: Origins-Ansicht und Einstellungs-Widget

note: type: Plain text
en: This widget allows one to *visualize and modify User System Origin offsets* directly.
de: Dieses Widget ermöglicht es, *Offsets von Benutzer-spezifizierten Ursprüngen* direkt zu *visualisieren und zu ändern*.

note: type: Plain text
en: It will _update LinuxCNC's Parameter file_ for changes made or found.
de: Es wird _die Parameterdatei von LinuxCNC_ für vorgenommene oder gefundene Änderungen aktualisieren.

note: type: Plain text
en: The settings can only be changed in LinuxCNC after homing and when the motion controller is idle.
de: Die Einstellungen können in LinuxCNC nur nach der Referenzfahrt und im Ruhezustand des Motion Controllers geändert werden.

note: type: Plain text
en: It is based on PyQt's _QTableView_, _QAbstractTableModel_, and _ItemEditorFactory_.
    Properties, functions and styles of the PyQt base objects are always available.
de: Es basiert auf PyQt's _QTableView_, _QAbstractTableModel_, und _ItemEditorFactory_.
    Eigenschaften, Funktionen und Stile der PyQt-Basisobjekte sind immer verfügbar.

note: TODO StatusImageSwitcher widget capture/example type: Plain text
en: This widget will *display images based on LinuxCNC status*.
de: Dieses Widget wird *Bilder basierend auf dem LinuxCNC-Status anzeigen*.

note: type: Plain text
en: It has a the ability to scroll the names with hardware such as a MPG.
de: Sie verfügt über die Möglichkeit, die Namen mit Hardware wie einem Handgerät (engl. MPG) zu kennzeichnen.

note: type: Plain text
en: `ToolOffsetView` has properties that can be set in Qt Designer, in Python handler code or (if appropriate) in stylesheets:
de: `ToolOffsetView` hat Eigenschaften, die im Qt Designer, im Python-Handler-Code oder (falls zutreffend) in Stylesheets eingestellt werden können:

note: type: Plain text
en: and in style sheets:
de: und in Stylesheets:

note: type: Plain text
en: `ToolOffsetView` has some functions useful for screen builders to add actions:
de: Die Funktion `ToolOffsetView` hat einige Funktionen, die für Screenbuilder nützlich sind, um Aktionen hinzuzufügen:

note: type: Plain text
en: Adds a blank dummy tool (99) that the user can edit to suit.
de: Fügt ein leeres Dummy-Werkzeug (99) hinzu, das der Benutzer nach Belieben bearbeiten kann.

note: type: Plain text
en: Deletes the currently checkbox selected tools.
de: Löscht die in der Checkbox ausgewählten Werkzeuge.

note: type: Plain text
en: Returns a list of tools selected by checkboxs.
de: Gibt eine Liste der durch Ankreuzfelder ausgewählten Werkzeuge zurück.

note: type: Plain text
en: Uncheck all selected tools.
de: Hebt die Markierung aller ausgewählten Werkzeuge auf.

note: type: Block title
en: Example for handler file executing aformentioned functions.
de: Beispiel für eine Handler-Datei, welche die oben genannten Funktionen ausführt.

note: type: Title ===
en: `BasicProbe` - Simple Mill Probing Widget
de: `BasicProbe` - Einfaches Fräs-Tast-Widget

note: type: Block title
en: QtVCP `BasicProbe`: Simple Mill Probing Widget
de: QtVCP 'BasicProbe': Einfaches Fräs-Tast-Widget

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP BasicProbe: Simple Mill Probing Widget
de: QtVCP BasicProbe: Einfaches Fräs-Tast-Widget

note: type: Plain text
en: Widget for *probing on a mill*.  Used by the _QtDragon_ screen.
de: Widget zum *Sondieren auf einer Fräse*. Wird vom _QtDragon_-Bildschirm verwendet.

note: type: Title ==
en: Dialog Widgets
de: Dialog-Widgets

note: type: Plain text
en: Dialogs are used to *present or request immediately required information* in a focused way.
de: Dialoge werden verwendet, um *unmittelbar benötigte Informationen* gezielt darzustellen oder abzufragen.

note: type: Plain text
en: The typical used dialogs can be loaded using the `ScreenOptions` _widget_.
de: Die typischerweise verwendeten Dialoge können mit dem _ScreenOptions_ _widget_ geladen werden.

note: type: Plain text
en: You can also add them directly to the _UI_ - but each dialog must have a unique launch name or you will see multiple dialogs displayed, one after another.
de: Sie können sie auch direkt zur _UI_ hinzufügen - allerdings muss jedes Dialogfeld einen eindeutigen Startnamen haben, sonst werden mehrere Dialogfelder nacheinander angezeigt.

note: type: Block title
en: Use dialogs from Python Code
de: Dialoge aus Python-Code verwenden

note: type: Plain text
en: You can show dialogs directly with _Python code_ but a safer way is to *use `STATUS` messages* to request the dialog to launch and to return the gathered information.
de: Sie können Dialoge direkt mit _Python-Code_ anzeigen, aber eine sicherere Methode ist die *Verwendung von `STATUS`-Nachrichten*, um den Dialog zu starten und die gesammelten Informationen zurückzugeben.

note: type: Plain text
en: *Register to `STATUS` channel*: +
    To set this up, first register to catch the `general` message from
    `STATUS`:
de: *Registrierung auf dem Kanal `STATUS`*: +
    Um dies einzurichten, registrieren Sie sich zuerst, um die `allgemeine` Nachricht von
    `STATUS` ZU EMPFANGEN:

note: type: Plain text
en: *Add a function to call a dialog*: +
    This function must _build a message `dict` to send to the dialog_. +
    This message will be passed back in the general message with the
    addition of the _`return` variable_. +
    It is possible to add _extra user information_ to the message. The
    dialog will ignore these and pass them back.
de: *Eine Funktion zum Aufrufen eines Dialogs hinzufügen*: +
    Diese Funktion muss _ein Nachrichten-Diktat erstellen, das an den Dialog gesendet wird_. +
    Diese Nachricht wird in der allgemeinen Nachricht zurückgegeben
    mit dem Zusatz der _`Return`-Variable_. +
    Es ist möglich, _zusätzliche Benutzerinformationen_ zu der Nachricht hinzuzufügen. Der
    Dialog ignoriert diese und gibt sie zurück.

note: type: Plain text
en: Launches code name of dialog to show.
de: Startet den Codenamen des anzuzeigenden Dialogs.

note: type: Plain text
en: A unique id so we process only a dialog that we requested.
de: Eine eindeutige ID, damit wir nur den angeforderten Dialog bearbeiten.

note: type: Plain text
en: The title to use on the dialog.
de: Der Titel, der für das Dialogfeld verwendet werden soll.

note: type: Plain text
en: *Add a callback function that processes the general message*: +
    Keep in mind this function will _get all general messages_ so the `dict` keynames are not guaranteed to be there.
    Using the `.get()` function and/or using `try`/`except` is advisable.
    This function should:
de: *Hinzufügen einer Callback-Funktion, um die allgemeine Nachricht zu verarbeiten*: +
    Beachten Sie, dass diese Funktion _alle allgemeinen Nachrichten_ abruft, so dass die `dict`-Keynamen sind nicht garantiert vorhanden sind.
    Es ist ratsam, die Funktion `.get()` zu benutzen und/oder `try`/`except` zu verwenden.
    Diese Funktion sollte:

note: type: Plain text
en: check the name and id is the same as we sent,
de: Prüfen Sie, ob der Name und die Kennung mit den Angaben übereinstimmen, die wir gesendet haben,

note: type: Plain text
en: then extract the return value and any user variables.
de: Extrahieren Sie dann den Rückgabewert und alle Benutzervariablen.

note: type: delimited block -
en: # process the STATUS return message
    def return_value(self, w, message):
        rtn = message.get('RETURN')
        code = bool(message.get('ID') == '__test1__')
        name = bool(message.get('NAME') == 'ENTRY')
        if code and name and not rtn is None:
            print('Entry return value from {} = {}'.format(code, rtn))
de: # Verarbeitung der STATUS return message
    def return_value(self, w, message):
        rtn = message.get('RETURN')
        code = bool(message.get('ID') == '__test1__')
        name = bool(message.get('NAME') == 'ENTRY')
        if code and name and not rtn is None:
            print('Entry return value from {} = {}'.format(code, rtn))

note: type: Title ===
en: `LcncDialog` - General Message Dialog Widget
de: `LcncDialog` - Allgemeines Nachrichtendialog-Widget

note: TODO LcncDialog widget capture type: Plain text
en: This is a *general message dialog widget*.
de: Dies ist ein *Allgemeines Nachrichten-Dialog-Widget*.

note: type: Plain text
en: If there is a Focus Overlay widget present, it can signal it to display.
de: Wenn ein Fokus-Overlay-Widget vorhanden ist, kann es signalisieren, dass es angezeigt werden soll.

note: type: Plain text
en: If the sound library is set up it can _play sounds_.
de: Wenn die Klangbibliothek eingerichtet ist, kann sie Klänge _abspielen_.

note: type: Plain text
en: There are _options_ that can be set when requesting a dialog, these would be added to the message `dict`.
de: Es gibt _Optionen_, die gesetzt werden können, wenn ein Dialog angefordert wird, diese würden der Nachricht `dict` hinzugefügt.

note: type: Plain text
en: Title of the dialog window.
de: Titel des Dialogfensters.

note: type: Plain text
en: Title message text in bold.
de: Titel Nachrichtentext in Fettdruck.

note: type: Plain text
en: Standard text under the heading.
de: Standardtext unter der Überschrift.

note: type: Plain text
en: Initial hidden text.
de: Ursprünglicher versteckter Text.

note: type: Plain text
en: Not implemented yet.
de: Noch nicht implementiert.

note: type: Plain text
en: Text to display if focus overlay is used.  Use `None` for no text.
de: Text, der angezeigt werden soll, wenn das Fokus-Overlay verwendet wird.  Verwenden Sie `None` für keinen Text.

note: type: Plain text
en: Color to use if focus overlay is used.
de: Farbe, die verwendet werden soll, wenn das Fokus-Overlay verwendet wird.

note: type: Plain text
en: Sound to play if sound is available, i.e., `SPEAK` _<spoken_message>_ .
de: Abzuspielender Ton, falls vorhanden, z.B. `SPEAK` _<Spoken_message>_ .

note: type: Plain text
en: When using `STATUS` 's `request-dialog` function, the _default launch name_ is *`MESSAGE`*.
de: Bei der Verwendung der Funktion "Abfrage-Dialog" von "STATUS" ist der "Standard-Startname" *`MESSAGE`*.

note: type: Plain text
en: It is based on PyQt's _QMessagebox_.
de: Sie basiert auf der _QMessagebox_ von PyQt.

note: type: Title ===
en: `ToolDialog` - Manual Tool Change Dialog Widget
de: `ToolDialog` - Dialog-Widget für den manuellen Werkzeugwechsel

note: type: Block title
en: QtVCP `ToolDialog`: Manual Tool Change Dialog
de: QtVCP `ToolDialog`: Dialog zum manuellen Werkzeugwechsel

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP ToolDialog: Manual Tool Change Dialog
de: QtVCP ToolDialog: Dialog zum manuellen Werkzeugwechsel

note: type: Plain text
en: This is used as a *manual tool change prompt*.
de: Dies wird als Aufforderung zum *manuellen Werkzeugwechsel* verwendet.

note: type: Plain text
en: It has _HAL pins to connect to the machine controller_.  The pins are named the same as the original AXIS manual tool prompt and works the same.
de: Es verfügt über _HAL Pins, die mit dem controller_ der Maschine verbunden werden können.  Die Pins haben den gleichen Namen wie die ursprüngliche AXIS manuelle Werkzeugeingabeaufforderung und funktionieren gleich.

note: type: Plain text
en: The tool change dialog _can only be launched by HAL pins_.
de: Der Werkzeugwechsel-Dialog kann _nur über HAL-Pins_ aufgerufen werden.

note: type: Plain text
en: If there is a Focus Overlay widget present, it will signal it to display.
de: Wenn ein Fokus-Overlay-Widget vorhanden ist, signalisiert es, dass es angezeigt werden soll.

note: type: Title ===
en: `FileDialog` - Load and Save File Chooser Dialog Widget
de: `FileDialog` - Dialog Widget zum Laden und Speichern von Dateien

note: type: Block title
en: QtVCP `FileDialog`: Load and Save File Chooser Widget
de: QtVCP `FileDialog`: Widget für das Laden und Speichern von Dateien

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP FileDialog: Load and Save File Chooser Widget
de: QtVCP FileDialog: Widget zum Laden und Speichern von Dateien

note: type: Plain text
en: This is used to *load G-code files*.
de: Dies wird zum *Laden von G-Code-Dateien* verwendet.

note: type: Plain text
en: When using `STATUS` 's `request-dialog` function, the default launch names are *`LOAD`* or *`SAVE`*.
de: Wenn Sie die `Request-Dialog`-Funktion von `STATUS` verwenden, lauten die Standard-Startnamen *`LOAD`* oder *`SAVE`*.

note: type: Plain text
en: There are _options_ that can be set when requesting a dialog, these would be added to the message dict:
de: Es gibt _options_, die beim Anfordern eines Dialogs gesetzt werden können, diese würden dem Meldungsdiktat hinzugefügt:

note: end definition list type: Plain text
en: An example Python call, for a _load dialog_:
de: Ein Beispiel für einen Python-Aufruf, für einen _Load-Dialog_:

note: type: Plain text
en: And for a _save dialog_
de: Und für einen _Speicherdialog_

note: type: Title ===
en: `OriginOffsetDialog` - Origin Offset Setting Dialog Widget
de: `OriginOffsetDialog` - Dialogfeld-Widget für die Einstellung des Ursprungsversatzes

note: type: Block title
en: QtVCP `OriginOffsetDialog`: Origin Offset Setting Widget
de: QtVCP `OriginOffsetDialog`: Widget zur Einstellung des Ursprungsversatzes

note: type: Plain text
en: This widget allows one to *modify User System origin offsets directly* in a dialog form.
de: Mit diesem Widget kann man *die Nullpunktverschiebung des Benutzersystems direkt* in einem Dialogformular ändern.

note: type: Plain text
en: If there is an Focus Overlay widget present, it will signal it to display.
de: Wenn ein Fokus-Overlay-Widget vorhanden ist, wird es angezeigt.

note: type: Plain text
en: When using `STATUS` 's `request-dialog` function, the default launch name is *`ORIGINOFFSET`*.
de: Bei Verwendung der `request-dialog`-Funktion von `STATUS` ist der standardmäßige Startname *`ORIGINOFFSET`*.

note: type: Plain text
en: It is based on PyQt's _QDialog_.
de: Es basiert auf PyQts _QDialog_.

note: type: Title ===
en: `ToolOffsetDialog` - Tool Offset Setting Dialog Widget
de: `ToolOffsetDialog` - Dialogfenster-Widget zur Einstellung des Werkzeugversatzes

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP `ToolOffsetDialog`: Tool Offset Setting Dialog Widget
de: QtVCP `ToolOffsetDialog`: Werkzeug-Offset-Einstellungsdialog-Widget

note: type: Plain text
en: This widget allows one to *modify Tool offsets directly* in a dialog form.
de: Mit diesem Widget kann man die *Werkzeugversätze direkt* in einem Dialogformular *ändern*.

note: type: Plain text
en: When using `STATUS` 's `request-dialog` function, the default launch name is *`TOOLOFFSET`*.
de: Bei Verwendung der `request-dialog`-Funktion von `STATUS` ist der standardmäßige Startname *`TOOLOFFSET`*.

note: type: Title ===
en: `MacroTabDialog` - Macro Launch Dialog Widget
de: `MacroTabDialog` - Dialog-Widget zum Starten von Makros

note: TODO MacroTab dialog capture type: Plain text
en: This is a dialog to *display the macrotab widget*.
de: Dies ist ein Dialog zum *Anzeigen des Makrotab-Widgets*.

note: type: Plain text
en: `MacroTab` displays a _choice of macro programs to run using icons_.
de: `MacroTab` zeigt eine _Auswahl von Makroprogrammen an, die mit Symbolen ausgeführt werden_.

note: type: Plain text
en: There are *enumerated constants used to reference indicator positions*.
    They are used in Qt Designer editor's property editor or in Python code.
de: Es gibt *aufgezählte Konstanten, die zur Referenzierung von Indikatorpositionen verwendet werden*.
    Sie werden im Eigenschaftseditor des Qt Designer-Editors oder im Python-Code verwendet.

note: type: Plain text
en: For Python handler code, you use the widget name in Qt Designer plus the reference constant:
de: Für Python-Handler-Code verwenden Sie den Widget-Namen in Qt Designer plus die Referenzkonstante:

note: type: Block title
en: Callable Functions
de: Aufrufbare Funktionen

note: type: Plain text
en: Clears the highlight indicator.
de: Löscht die Hervorhebungsanzeige.

note: FIXME Document "strings letters" type: Plain text
en: Set the highlight indicator in position `button` to state `state`. +
de: Setzen Sie den Hervorhebungsanzeiger an der Position `button` auf den Zustand `state`. +

note: type: Plain text
en: You can use _strings letters_ (`LRCTBXA`) or _position_ `ENUMS` for the button argument.
de: Sie können _Strings Buchstaben_ (`LRCTBXA`) oder _Position_ `ENUMS` für das Argument der Schaltfläche verwenden.

note: type: Plain text
en: Sets the buttons pop-up tooltip descriptive text.
de: Legt den beschreibenden Text für die Popup-Tooltip-Schaltflächen fest.

note: type: Plain text
en: Sets the highlight indicator to the `True` color or `False` color.
    The `set_highlight()` function must be used prior to set the indicator to use.
de: Setzt den Highlight-Indikator auf die Farbe `True` oder `False`.
    Die Funktion `set_highlight()` muss vorher verwendet werden, um den zu verwendenden Indikator zu setzen.

note: end definition list type: Plain text
en: They are based on PyQt's _Signal_ (`QtCore.pyqtSignal()`)
de: Sie basieren auf PyQt's _Signal_ (`QtCore.pyqtSignal()`)

note: type: Plain text
en: Slots can be connected to in Qt Designer editor or Python code:
de: Slots können im Qt Designer-Editor oder in Python-Code verbunden werden:

note: type: Labeled list
en: *`set_true_color(_str_)`*
de: *'set_true_color(_str_)'*

note: type: Plain text
en: These can be set in stylesheets or Python code:
de: Diese können in Stylesheets oder Python-Code festgelegt werden:

note: type: Plain text
en: Set the indicator position.
de: Position des Indikators festlegen.

note: type: Plain text
en: Select the color state of the indicator.
de: Den Farbzustand des Indikators auswählen.

note: type: Plain text
en: Color selection for the center LED ring to be displayed when the `BASENAME.light.center` _HAL pin_ is `True` or `False`.
de: Farbauswahl für den mittleren LED-Ring, der angezeigt werden soll, wenn der `BASENAME.light.center` _HAL-Pin_ `True` oder `False` ist.

note: type: Plain text
en: The above properties could be set in:
de: Die obigen Eigenschaften könnten gesetzt werden in:

note: type: Plain text
en: *Stylesheets*: +
    You would usually use the Qt Designer widget name with `#` _prefix_ to
    set individual widget properties, otherwise you would use the `JoyPad`
    _class name_ to set all `JoyPad` widgets the same:
de: *Stylesheets*: +
    Normalerweise würden Sie den Qt Designer Widget-Namen mit `#` _Präfix_ verwenden, um
    individuelle Widget-Eigenschaften zu setzen, andernfalls würden Sie den `JoyPad`
    _Klassenname_, um alle `JoyPad` Widgets gleich zu setzen:

note: type: Plain text
en: *In Python handler code*: +
de: *Im Python-Handler-Code*: +

note: type: Title ==
en: BaseClass/Mixin Widgets
de: BaseClass/Mixin-Widgets

note: type: Plain text
en: These widgets are used *combine different properties and behaviours into other widgets*.
de: Diese Widgets werden verwendet, um *verschiedene Eigenschaften und Verhaltensweisen in anderen Widgets zu kombinieren*.

note: type: Plain text
en: You will see them as a collapsible header in the Qt Designer properties column.
de: Sie werden als ausklappbare Kopfzeile in der Eigenschaftsspalte von Qt Designer angezeigt.

note: type: Plain text
en: This class *modifies `QPushButton` behaviour*.
de: Diese Klasse *verändert das Verhalten von `QPushButton`*.

note: type: Title ====
en: Indicator Option
de: LED-Anzeige Option

note: type: Plain text
en: *`indicator_option`* _puts a 'LED' on the top of the button_.
de: *`indicator_option`* _setzt eine 'LED' auf die Oberseite der Taste_.

note: type: Block title
en: QtVCP `PushButton`: Indicated Action Button, LED Indicator Option
de: QtVCP 'PushButton': Angezeigte Aktionstaste, LED-Anzeigeoption

note: type: Positional ($1) AttributeList argument for macro 'image'
en: QtVCP PushButton: Indicated Action Button, LED Indicator Option
de: QtVCP Drucktaste: Angezeigte Aktionstaste, LED-Anzeigeoption

note: FIXME Better document IndicatedPushButton https://github.com/LinuxCNC/linuxcnc/blob/master/lib/python/qtvcp/widgets/simple_widgets.py#L317 type: Plain text
en: It can be a _triangle_, _circle_, _top bar_, or _side bar_.
    The _size_ and _position_ can be adjusted.
de: Es kann ein _Dreieck_, _Kreis_, _obere Leiste_ oder _seitliche Leiste_ sein.
    Die _Größe_ und _Position_ können angepasst werden.

note: type: Plain text
en: It will indicate:
de: Es wird angezeigt:

note: type: Plain text
en: the *current state of the button*, or
de: den *aktuellen Zustand der Schaltfläche*, oder

note: type: Plain text
en: the *state of a HAL pin*, or
de: den *Zustand eines HAL-Pins*, oder

note: type: Plain text
en: *LinuxCNC status*.
de: *LinuxCNC-Status*.

note: type: Plain text
en: These properties are available to customize the indicator (not all are applicable to every LED shape):
de: Diese Eigenschaften sind verfügbar, um den Indikator anzupassen (nicht alle sind auf jede LED-Form anwendbar):

note: type: Plain text
en: The LED indicator color can be defined in a _stylesheet_ with the following code added to the `.qss` file:
de: Die Farbe der LED-Anzeige kann in einem _stylesheet_ definiert werden, indem der folgende Code zur `.qss`-Datei hinzugefügt wird:

note: type: Plain text
en: Or for a particular button:
de: Oder für einen bestimmten Button:

note: type: Plain text
en: `IndicatedPushButton` have *exclusive options*:
de: `IndicatedPushButton` hat *exklusive Optionen*:

note: type: Plain text
en: Adds a `halpin`, named `<buttonname>-led` that controls the button indicator state.
de: Fügt ein `halpin` namens `<buttonname>-led` hinzu, der den Status der Schaltflächenanzeige steuert.

note: type: Plain text
en: Makes the LED indicate the state of these selectable LinuxCNC status:
de: Lässt die LED den Status dieser wählbaren LinuxCNC-Status anzeigen:

note: type: Plain text
en: _Mist_
de: _Mist_ (engl. Nebel)

note: type: Plain text
en: _Optional Stop_
de: _Optionaler Stop_

note: type: Plain text
en: _Spindle Forward_
de: _Spindel vorwärts_

note: type: Plain text
en: _Spindle Reverse_
de: _Spindel rückwärts_

note: type: Plain text
en: Some `indicator_status_options` holds a property that can be used with a _stylesheet_ to change the color of the button based on the state of the property in LinuxCNC.
    Currently these status properties can be used to auto style buttons:
de: Einige `indicator_status_options` enthält eine Eigenschaft, die mit einem _stylesheet_ verwendet werden kann, um die Farbe der Schaltfläche basierend auf dem Zustand der Eigenschaft in LinuxCNC zu ändern.
    Derzeit sind diese Status-Eigenschaften können verwendet werden, um Auto-Stil Schaltflächen:

note: type: Plain text
en: `is_estopped_status` will toggle the `isEstop` property
de: `is_estopped_status` schaltet die Eigenschaft `isEstop` um

note: type: Plain text
en: `is_on_status` will toggle the `isStateOn` property
de: `is_on_status` schaltet die Eigenschaft `isStateOn` um

note: type: Plain text
en: `is_manual_status`, `is_mdi_status`, `is_auto_status` will toggle the `isManual`, `isMDI`, `isAuto` properties.
de: `is_manual_status`, `is_mdi_status`, `is_auto_status` schalten die Eigenschaften `isManual`, `isMDI`, und `isAuto` um.

note: type: Plain text
en: `is_homed_status` will toggle the 'isAllHomed' property
de: `is_homed_status` schaltet die Eigenschaft 'isAllHomed' um

note: type: Plain text
en: Here is a sample stylesheet entry setting the background of mode button widgets when LinuxCNC is in that mode:
de: Hier ist ein Beispiel-Stylesheet-Eintrag, der den Hintergrund von Mode-Button-Widgets festlegt, wenn sich LinuxCNC in diesem Modus befindet:

note: type: Plain text
en: Here is how you specify a particular widget by it's objectName in Qt Designer:
de: So geben Sie ein bestimmtes Widget anhand seines objectName in Qt Designer an:

note: type: Title ====
en: Enabled by LinuxCNC State
de: Aktiviert durch den LinuxCNC-Status

note: type: Plain text
en: Often, having the button disabled and enabled based on the state of LinuxCNC's motion controller is necessary.
de: Oft, mit der Schaltfläche deaktiviert und aktiviert auf der Grundlage der Zustand der LinuxCNC Motion Controller ist notwendig.

note: type: Plain text
en: There are several properties that can be selected to aid with this:
de: Es gibt mehrere Eigenschaften, die zur Unterstützung ausgewählt werden können:

note: type: Plain text
en: You can select multiple properties for combined requirements.
de: Sie können mehrere Eigenschaften für kombinierte Anforderungen auswählen.

note: FIXME What is a 'checkable' button ? A checkbox ? type: Plain text
en: Choosing the *`checked_state_text_option`* allows a 'checkable' button to _change the text based on it's checked state_.
de: Die Auswahl der Option *`checked_state_text_option`* erlaubt es einer 'checkbox', _den Text basierend auf ihrem 'checked state' zu ändern_.

note: type: Plain text
en: It uses the following properties to specify the text for each state:
de: Es verwendet die folgenden Eigenschaften, um den Text für jeden Zustand anzugeben:

note: type: Plain text
en: `\\n` will be converted to a newline.
de: `\\n` wird in einen Zeilenumbruch umgewandelt.

note: type: Plain text
en: You can set/change these in stylesheets:
de: Sie können diese in Stylesheets festlegen/ändern:

note: type: Plain text
en: The *`python_command_option`* allow small snippets of Python code to be run from the push of a button, without having to edit the handler file.  Though, it can call functions in the handler file.
de: Die *`python_command_option`* ermöglicht es, kleine Schnipsel von Python-Code auf Knopfdruck auszuführen, ohne die Handler-Datei bearbeiten zu müssen. Es kann jedoch Funktionen in der Handler-Datei aufrufen.

note: type: Plain text
en: When using the `command_string` properties.
de: Bei Verwendung der `command_string`-Eigenschaften.

note: type: Plain text
en: A Python command that will be called when the button is toggled `True`.
de: Ein Python-Befehl, der aufgerufen wird, wenn der Button auf `True` umgeschaltet wird.

note: type: Plain text
en: A Python command that will be called when the button is toggled `False`.
de: Ein Python-Befehl, der aufgerufen wird, wenn die Schaltfläche auf `False` umgeschaltet wird.

note: type: Plain text
en: _Special capitalized words_ will give access to the following:
de: _Besondere Wörter in Großbuchstaben_ geben Zugang zu den folgenden Informationen:

note: type: Plain text
en: Will give access to the widgets instances and handler functions.
    E.g., `INSTANCE.my_handler_function_call(True)`
de: Ermöglicht den Zugriff auf die Instanzen der Widgets und die Handler-Funktionen.
    Z.B.: `INSTANCE.my_handler_function_call(True)`

note: type: Plain text
en: Will give access to QtVCP's `ACTION` library.
    E.g., `ACTION.TOGGLE_FLOOD()`
de: Ermöglicht den Zugriff auf die `ACTION` Bibliothek von QtVCP.
    Z.B. `ACTION.TOGGLE_FLOOD()`

note: type: Plain text
en: Will give access to QtVCP's `PROGRAM_LOADER` library.
    E.g., `PROGRAM_LOADER.load_halshow()`
de: Ermöglicht den Zugriff auf die `PROGRAM_LOADER` Bibliothek von QtVCP.
    Z.B., `PROGRAM_LOADER.load_halshow()`

note: type: Plain text
en: Will give access to HAL's Python module.
    E.g., `HAL.set_p('motion.probe-input','1')`
de: Ermöglicht den Zugriff auf das Python-Modul von HAL.
    Z.B.: `HAL.set_p('motion.probe-input','1')`

note: type: Plain text
en: These widgets are usually the *base class widget for other QtVCP widgets*.
de: Diese Widgets sind normalerweise die *Basisklasse Widget für andere QtVCP-Widgets*.

note: type: Plain text
en: They are _not available directly from the Qt Designer editor_ but could be *imported and manually inserted*.
de: Sie sind _nicht direkt im Qt-Designer-Editor verfügbar_, können aber *importiert und manuell eingefügt* werden.

note: type: Plain text
en: They could also be *subclassed* to make a similar widget with new features.
de: Sie könnten auch *unterklassifiziert* werden, um ein ähnliches Widget mit neuen Funktionen zu erstellen.

note: type: Title ===
en: Auto Height
de: Automatische Höhe

note: type: Plain text
en: Widget for measuring two heights with a probe.
    For setup.
de: Widget zur Messung von zwei Höhen mit einer Sonde.
    Für die Einrichtung.

note: type: Title ===
en: G-code Utility
de: G-Code Dienstprogramm

note: type: Title ===
en: Hole Circle
de: Loch-Kreis (engl. hole circle)

note: type: Plain text
en: QtVCP's version of NGC subroutine selector.
de: QtVCP's Version des NGC Unterprogramm-Selektors.

note: type: Plain text
en: Allows adding loadable PDFs to a screen.
de: Ermöglicht das Hinzufügen von ladbaren PDFs zu einem Bildschirm.

note: type: Plain text
en: Use this to build/add OpenGl simulated machines.
de: Verwenden Sie dies, um OpenGl simulierte Maschinen zu erstellen/hinzuzufügen.

note: type: Plain text
en: TkLinuxCNC is one of the first graphical front-ends for LinuxCNC. It is written in Tcl and uses the Tk toolkit for the display. Being written in Tcl makes it very portable (it runs on a multitude of platforms). A separate backplot window can be displayed as shown.
de: TkLinuxCNC ist eines der ersten grafischen Front-Ends für LinuxCNC. Es ist in Tcl geschrieben und verwendet das Tk-Toolkit für die Anzeige. Es ist in Tcl geschrieben und daher sehr portabel (es läuft auf einer Vielzahl von Plattformen). Ein separates Backplot-Fenster kann wie abgebildet angezeigt werden.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: TkLinuxCNC Window
de: TkLinuxCNC-Fenster

note: type: Plain text
en: To select TkLinuxCNC as the front-end for LinuxCNC, edit the INI file.  In the section '[DISPLAY]' change the 'DISPLAY' line to read
de: Um TkLinuxCNC als Front-End für LinuxCNC wählen, bearbeiten Sie die INI-Datei.  Im Abschnitt '[DISPLAY]' ändern Sie die 'DISPLAY' Zeile zu lesen

note: type: Plain text
en: Then, start LinuxCNC and select that INI file. The sample configuration 'sim/tklinuxcnc/tklinuxcnc.ini' is already configured to use TkLinuxCNC as its front-end.
de: Dann starten Sie LinuxCNC und wählen Sie diese INI-Datei. Die Beispielkonfiguration 'sim/tklinuxcnc/tklinuxcnc.ini' ist bereits konfiguriert, um TkLinuxCNC als Front-End zu verwenden.

note: type: Plain text
en: When LinuxCNC is launched the <<cap:tklinuxcnc-display,TKLinuxCNC window>> is opened.
de: Nach dem Start von LinuxCNC wird das Fenster <<cap:tklinuxcnc-display,TKLinuxCNC>> geöffnet.

note: type: Title ===
en: A typical session with TkLinuxCNC
de: Eine typische Sitzung mit TkLinuxCNC

note: type: Plain text
en: Start LinuxCNC and select a configuration file.
de: Starten Sie LinuxCNC und wählen Sie eine Konfigurationsdatei.

note: type: Plain text
en: Clear the 'E-STOP' condition and turn the machine on (by pressing F1 then F2).
de: Beheben Sie den Notaus (engl. 'E-STOP')-Zustand und schalten Sie die Maschine ein (indem Sie F1 und dann F2 drücken).

note: type: Plain text
en: 'Home' each axis.
de: 'Referenzfahrt' jeder Achse.

note: type: Plain text
en: Load the file to be milled.
de: Laden Sie die zu fräsende Datei.

note: type: Plain text
en: Put the stock to be milled on the table.
de: Legen Sie das zu fräsende Material auf den Tisch.

note: type: Plain text
en: Set the proper offsets for each axis by jogging and either homing again or right-clicking an axis name and entering an offset value.  footnote:[For some of these actions it might be necessary to change the mode LinuxCNC is currently running in.]
de: Stellen Sie die richtigen Versätze für jede Achse ein, indem Sie joggen und entweder erneut referenzieren oder mit der rechten Maustaste auf einen Achsennamen klicken und einen Versatzwert eingeben. Fußnote:[Für einige dieser Aktionen kann es notwendig sein, den Modus zu ändern, in dem LinuxCNC gerade läuft.]

note: type: Plain text
en: To mill the same file again, return to step 6. To mill a different file, return to step 4. When you're done, exit LinuxCNC.
de: Um dieselbe Feile erneut zu fräsen, kehren Sie zu Schritt 6 zurück. Um eine andere Datei zu fräsen, kehren Sie zu Schritt 4 zurück. Wenn Sie fertig sind, beenden Sie LinuxCNC.

note: type: Title ==
en: Elements of the TkLinuxCNC window
de: Elemente des TkLinuxCNC-Fensters

note: type: Plain text
en: The TkLinuxCNC window contains the following elements:
de: Das TkLinuxCNC-Fenster enthält die folgenden Elemente:

note: type: Plain text
en: A menubar that allows you to perform various actions
de: Eine Menüleiste, über die Sie verschiedene Aktionen ausführen können.

note: type: Plain text
en: A set of buttons that allow you to change the current working mode, start/stop spindle and other relevant I/O
de: Eine Reihe von Tasten, mit denen Sie den aktuellen Arbeitsmodus, die Start-/Stoppspindel und andere relevante E / A ändern können

note: type: Plain text
en: Status bar for various offset related displays
de: Statusleiste für verschiedene Offset-bezogene Anzeigen

note: type: Plain text
en: Coordinate display area
de: Koordinatenanzeigebereich

note: type: Plain text
en: A set of sliders which control 'Jogging speed', 'Feed Override', and 'Spindle speed Override' which allow you to increase or decrease those settings
de: Eine Reihe von Schiebereglern zur Steuerung von 'Jogginggeschwindigkeit', 'Vorschub-Override' und 'Spindeldrehzahl-Override', mit denen Sie diese Einstellungen erhöhen oder verringern können

note: type: Plain text
en: Manual data input text box 'MDI'
de: Textfeld für die manuelle Dateneingabe 'MDI'

note: type: Plain text
en: Status bar display with active G-codes, M-codes, F- and S-words
de: Statusleiste mit aktiven G-Codes, M-Codes, F- und S-Wörtern

note: type: Plain text
en: Interpreter related buttons
de: Schaltflächen für Interpreter

note: type: Plain text
en: A text display area that shows the G-code source of the loaded file
de: Ein Textfeld, das die G-Code der geladenen Datei anzeigt

note: type: Title ===
en: Main buttons
de: Die wichtigsten Buttons

note: type: Plain text
en: From left to right, the buttons are:
de: Von links nach rechts lauten die Buttons:

note: type: Plain text
en: Machine enable: 'ESTOP' > 'ESTOP RESET' > 'ON'
de: Maschinenaktivierung: 'ESTOP' > 'ESTOP RESET' > 'ON'

note: type: Plain text
en: Toggle mist coolant
de: Kühlnebel ein-/ausschalten

note: type: Plain text
en: Decrease spindle speed
de: Spindeldrehzahl verringern

note: type: Plain text
en: Set spindle direction 'SPINDLE OFF' > 'SPINDLE FORWARD' . 'SPINDLE REVERSE'
de: Spindeldrehrichtung einstellen 'SPINDEL AUS' > 'SPINDEL VORWÄRTS' . 'SPINDEL RÜCKWÄRTS'

note: type: Plain text
en: Increase spindle speed
de: Spindeldrehzahl erhöhen

note: type: Plain text
en: then on the second line:
de: dann in der zweiten Zeile:

note: type: Plain text
en: Operation mode: 'MANUAL' > 'MDI' > 'AUTO'
de: Betriebsart: 'MANUAL' > 'MDI' > 'AUTO'

note: type: Plain text
en: Toggle flood coolant
de: Flutkühlmittel ein-/ausschalten

note: type: Plain text
en: Toggle spindle brake control
de: Spindelbremse ein-/ausschalten

note: type: Title ===
en: Offset display status bar
de: Statusleiste der Offset-Anzeige

note: type: Plain text
en: The Offset display status bar displays the currently selected tool (selected with Txx M6), the tool length offset (if active), and the work offsets (set by right-clicking the coordinates).
de: Die Statusleiste der Versatzanzeige zeigt das aktuell ausgewählte Werkzeug (ausgewählt mit Txx M6), den Werkzeuglängenversatz (falls aktiv) und die Arbeitsversätze (eingestellt durch Rechtsklick auf die Koordinaten) an.

note: type: Title ===
en: Coordinate Display Area
de: Koordinatenanzeigebereich

note: type: Plain text
en: The main part of the display shows the current position of the tool.  The color of the position readout depends on the state of the axis. If the axis is unhomed the axis will be displayed in yellow letters. Once homed it will be displayed in green letters. If there is an error with the current axis TkLinuxCNC will use red letter to show that. (for example if an hardware limit switch is tripped).
de: Der Hauptteil der Anzeige zeigt die aktuelle Position des Werkzeugs an.  Die Farbe der Positionsanzeige hängt vom Zustand der Achse ab. Wenn die Achse nicht referenziert ist, wird die Achse in gelber Schrift angezeigt. Sobald sie referenziert ist, wird sie in grüner Schrift angezeigt. Wenn es einen Fehler mit der aktuellen Achse TkLinuxCNC werden rote Buchstaben verwendet, um anzuzeigen, dass. (zum Beispiel, wenn eine Hardware-Endschalter ausgelöst wird).

note: type: Plain text
en: To properly interpret these numbers, refer to the radio boxes on the right. If the position is 'Machine', then the displayed number is in the machine coordinate system. If it is 'Relative', then the displayed number is in the offset coordinate system. Further down the choices can be 'actual' or 'commanded'. Actual refers to the feedback coming from encoders (if you have a servo machine), and the 'commanded' refers to the position command send out to the motors. These values can differ for several reasons: Following error, deadband, encoder resolution, or step size. For instance, if you command a movement to X 0.0033 on your mill, but one step of your stepper motor is 0.00125, then the 'Commanded' position will be 0.0033 but the 'Actual' position will be 0.0025 (2 steps) or 0.00375 (3 steps).
de: Um diese Zahlen richtig zu interpretieren, beachten Sie die Optionsfelder auf der rechten Seite. Ist die Position "Maschine", dann ist die angezeigte Zahl im Maschinenkoordinatensystem. Bei der Option "Relativ" wird die Zahl im Offset-Koordinatensystem angezeigt. Weiter unten können Sie zwischen "actual" und "commanded" wählen. Ist" bezieht sich auf die Rückmeldung von den Messgeräten (wenn Sie eine Servomaschine haben), und "Soll" bezieht sich auf den Positionsbefehl, der an die Motoren gesendet wird. Diese Werte können sich aus verschiedenen Gründen unterscheiden: Schleppfehler, Totzone, Encoderauflösung oder Schrittweite. Wenn Sie beispielsweise eine Bewegung mit X 0,0033 auf Ihrer Fräsmaschine befehlen, aber ein Schritt Ihres Schrittmotors 0,00125 beträgt, dann ist die 'befohlene' Position 0,0033, aber die 'tatsächliche' Position ist 0,0025 (2 Schritte) oder 0,00375 (3 Schritte).

note: type: Plain text
en: Another set of radio buttons allows you to choose between 'joint' and 'world' view. These make little sense on a normal type of machine (e.g.  trivial kinematics), but help on machines with non-trivial kinematics like robots or stewart platforms. (you can read more about kinematics in the Integrator Manual).
de: Mit einer weiteren Reihe von Optionsfeldern können Sie zwischen "Gelenk-" und "Weltansicht" wählen. Diese sind bei normalen Maschinen (z. B. triviale Kinematik) wenig sinnvoll, helfen aber bei Maschinen mit nicht-trivialer Kinematik wie Robotern oder Stewart-Plattformen. (Sie können mehr über Kinematik im Integrator-Handbuch lesen).

note: type: Plain text
en: When the machine moves, it leaves a trail called the backplot. You can start the backplot window by selecting View→Backplot.
de: Wenn sich die Maschine bewegt, hinterlässt sie eine Spur, den so genannten Backplot. Sie können das Backplot-Fenster starten, indem Sie Ansicht→Backplot wählen.

note: type: Title ===
en: TkLinuxCNC Interpreter / Automatic Program Control(((TkLinuxCNC Interpreter)))
de: TkLinuxCNC Interpreter / Automatische Programmsteuerung (((TkLinuxCNC Interpreter)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: TkLinuxCNC Interpreter / program control
de: TkLinuxCNC Interpreter / Programmsteuerung

note: type: Block title
en: Control Buttons
de: Bedientasten

note: type: Plain text
en: The buttons in the lower part of TkLinuxCNC are used to control the execution of a program:
de: Die Buttons im unteren Teil von TkLinuxCNC werden verwendet, um die Ausführung eines Programms zu steuern:

note: type: Plain text
en: 'Open' to load a program,
de: 'Öffnen' (engl. open), um ein Programm zu laden,

note: type: Plain text
en: 'Verify' to check it for errors,
de: 'Überprüfen' (engl. verify) um es auf Fehler zu überprüfen,

note: type: Plain text
en: 'Run' to start the actual cutting,
de: 'Ausführen' (engl. run), um den eigentlichen Schneidevorgang zu starten,

note: type: Plain text
en: 'Pause' to stop it while running,
de: 'Pause', um es während des Laufens anzuhalten,

note: type: Plain text
en: 'Resume' to resume an already paused program,
de: 'Fortsetzen' (engl. resume), um ein bereits angehaltenes Programm wieder aufzunehmen,

note: type: Plain text
en: 'Step' to advance one line in the program and
de: 'Schritt' (engl. step), um eine Zeile im Programm voranzubringen und

note: type: Plain text
en: 'Optional Stop' to toggle the optional stop switch (if the button is green the program execution will be stopped on any M1 encountered).
de: 'Optional Stop' zum Umschalten des optionalen Stop-Schalters (wenn die Schaltfläche grün ist, wird die Programmausführung bei jedem M1-Ereignis angehalten).

note: type: Block title
en: Text Program Display Area
de: Anzeigebereich des Textprogramms

note: type: Plain text
en: When the program is running, the line currently being executed is highlighted in white. The text display will automatically scroll to show the current line.
de: Wenn das Programm läuft, wird die Zeile, die gerade ausgeführt wird, weiß hervorgehoben. Die Textanzeige scrollt automatisch, um die aktuelle Zeile anzuzeigen.

note: type: Block title
en: Implicit keys
de: Steuerung mit der Tastatur

note: type: Plain text
en: TkLinuxCNC allows you to manually move the machine. This action is known as 'jogging'. First, select the axis to be moved by clicking it. Then, click and hold the '+' or '-' button depending on the desired direction of motion. The first four axes can also be moved by the keyboard arrow keys (X and Y), the PAGE UP and PAGE DOWN keys (Z) and the '[' and ']' keys (A/4th).
de: TkLinuxCNC ermöglicht es Ihnen, die Maschine manuell zu bewegen. Diese Aktion wird als "Jogging" bekannt. Wählen Sie zunächst die zu bewegende Achse aus, indem Sie sie anklicken. Klicken Sie dann auf die Schaltfläche "+" oder "-" und halten Sie sie gedrückt, je nach der gewünschten Bewegungsrichtung. Die ersten vier Achsen können auch mit den Pfeiltasten der Tastatur (X und Y), den Tasten PAGE UP und PAGE DOWN (Z) und den Tasten '[' und ']' (A/4) bewegt werden.

note: type: Plain text
en: If 'Continuous' is selected, the motion will continue as long as the button or key is pressed. If another value is selected, the machine will move exactly the displayed distance each time the button is clicked or the key is pressed. The available values are:
de: Wenn Sie 'Kontinuierlich' (kontinuierlich) auswählen, wird die Bewegung so lange fortgesetzt, wie die Schaltfläche oder Taste gedrückt wird. Wird ein anderer Wert gewählt, bewegt sich die Maschine jedes Mal, wenn die Schaltfläche angeklickt oder die Taste gedrückt wird, genau um die angezeigte Strecke. Die verfügbaren Werte sind:

note: type: Plain text
en: By pressing 'Home' or the HOME key, the selected axis will be homed.  Depending on your configuration, this may just set the axis value to be the absolute position 0.0, or it may make the machine move to a specific home location through use of 'home switches'. See the <<cha:homing-configuration,Homing Chapter>> for more information.
de: Durch Drücken von "Home" oder der HOME-Taste wird die gewählte Achse in die Grundstellung gebracht.  Abhängig von Ihrer Konfiguration kann dies nur den Achsenwert auf die absolute Position 0.0 setzen, oder die Maschine durch Verwendung von 'Home-Schaltern' zu einer bestimmten Home-Position fahren lassen. Siehe das Kapitel zur <<cha:homing-configuration,Referenzfahrt>> für weitere Informationen.

note: type: Plain text
en: By pressing 'Override Limits', the machine will temporarily be permitted to jog outside the limits defined in the INI file. (Note: if 'Override Limits' is active the button will be displayed using a red color).
de: Durch Drücken der Taste "Grenzen überschreiben" wird der Maschine vorübergehend erlaubt, außerhalb der in der INI-Datei definierten Grenzen zu verfahren. (Hinweis: Wenn "Grenzen überschreiten" aktiv ist, wird die Schaltfläche in roter Farbe angezeigt).

note: type: Block title
en: TkLinuxCNC Override Limits & Jogging increments example
de: Beispiel für TkLinuxCNC Override Limits & Jogging Increments

note: type: Positional ($1) AttributeList argument for macro 'image'
en: TkLinuxCNC Override Limits and Jogging increments example
de: Beispiel für TkLinuxCNC Override Limits und Jogging Increments

note: type: Plain text
en: The button on the first row selects the direction for the spindle to rotate: Counterclockwise, Stopped, Clockwise. The buttons next to it allow the user to increase or decrease the rotation speed. The button on the second row allows the spindle brake to be engaged or released.  Depending on your machine configuration, not all the items in this group may have an effect.
de: Mit der Taste in der ersten Reihe wird die Drehrichtung der Spindel ausgewählt: Gegen den Uhrzeigersinn, Angehalten, Im Uhrzeigersinn. Mit den Tasten daneben kann der Benutzer die Drehgeschwindigkeit erhöhen oder verringern. Mit der Taste in der zweiten Reihe kann die Spindelbremse aktiviert oder deaktiviert werden.  Je nach Maschinenkonfiguration haben möglicherweise nicht alle Elemente in dieser Gruppe eine Wirkung.

note: type: Block title
en: The Coolant group(((Coolant)))
de: Die Kühlmittelgruppe (((Kühlmittel)))

note: type: Plain text
en: The two buttons allow the 'Mist' and 'Flood' coolants to be turned on and off. Depending on your machine configuration, not all the items in this group may appear.
de: Mit den beiden Schaltflächen können die Kühlmittel "Nebel" und "Flut" ein- und ausgeschaltet werden. Je nach Konfiguration Ihres Geräts werden möglicherweise nicht alle Elemente in dieser Gruppe angezeigt.

note: type: Title ===
en: Code Entry
de: Code-Eingabe

note: type: Plain text
en: Manual Data Input (also called MDI), allows G-code programs to be entered manually, one line at a time. When the machine is not turned on, and not set to MDI mode, the code entry controls are unavailable.
de: Die manuelle Dateneingabe (auch MDI genannt) ermöglicht die manuelle Eingabe von G-Code-Programmen, eine Zeile nach der anderen. Wenn das Gerät nicht eingeschaltet und nicht auf den MDI-Modus eingestellt ist, sind die Steuerelemente für die Codeeingabe nicht verfügbar.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: The Code Entry tab
de: Die Registerkarte zur Codeeingabe

note: type: Plain text
en: This allows you to enter a G-code command to be executed. Execute the command by pressing Enter.
de: Hier können Sie einen G-Code-Befehl eingeben, der ausgeführt werden soll. Führen Sie den Befehl aus, indem Sie Enter drücken.

note: type: Block title
en: Active G-Codes
de: Aktive G-Codes

note: type: Plain text
en: By moving this slider, the speed of jogs can be modified. The numbers above refer to axis units / second. The text box with the number is clickable. Once clicked a popup window will appear, allowing for a number to be entered.
de: Durch Verschieben dieses Schiebereglers kann die Geschwindigkeit der Jogs geändert werden. Die Zahlen oben beziehen sich auf Achseneinheiten/Sekunde. Das Textfeld mit der Zahl ist anklickbar. Wenn Sie darauf klicken, erscheint ein Popup-Fenster, in das Sie die Zahl eingeben können.

note: type: Plain text
en: By moving this slider, the programmed feed rate can be modified. For instance, if a program requests 'F60' and the slider is set to 120%, then the resulting feed rate will be 72.  The text box with the number is clickable. Once clicked a popup window will appear, allowing for a number to be entered.
de: Durch Verschieben dieses Schiebereglers kann der programmierte Vorschub geändert werden. Wenn zum Beispiel ein Programm "F60" verlangt und der Schieberegler auf 120% eingestellt ist, dann ist der resultierende Vorschub 72.  Das Textfeld mit der Zahl ist anklickbar. Nach dem Anklicken erscheint ein Popup-Fenster, in das eine Zahl eingegeben werden kann.

note: type: Title ===
en: Spindle speed Override
de: Spindeldrehzahl Override

note: type: Plain text
en: The spindle speed override slider works exactly like the feed override slider, but it controls to the spindle speed. If a program requested S500 (spindle speed 500 RPM), and the slider is set to 80%, then the resulting spindle speed will be 400 RPM. This slider has a minimum and maximum value defined in the INI file. If those are missing the slider is stuck at 100%. The text box with the number is clickable. Once clicked a popup window will appear, allowing for a number to be entered.
de: Der Schieberegler für die Spindeldrehzahlübersteuerung funktioniert genau wie der Schieberegler für die Vorschubübersteuerung, steuert aber die Spindeldrehzahl. Wenn ein Programm S500 (Spindeldrehzahl 500 U/min) anfordert und der Schieberegler auf 80% eingestellt ist, beträgt die resultierende Spindeldrehzahl 400 U/min. Dieser Schieberegler hat einen Mindest- und einen Höchstwert, die in der INI-Datei definiert sind. Wenn diese fehlen, bleibt der Schieberegler bei 100% stehen. Das Textfeld mit der Zahl ist anklickbar. Sobald es angeklickt wird, erscheint ein Popup-Fenster, in das eine Zahl eingegeben werden kann.

note: type: Plain text
en: Almost all actions in TkLinuxCNC can be accomplished with the keyboard.  Many of the shortcuts are unavailable when in MDI mode.
de: Fast alle Aktionen in TkLinuxCNC können über die Tastatur ausgeführt werden.  Viele der Tastenkombinationen sind nicht verfügbar, wenn im MDI-Modus.

note: type: Plain text
en: The most frequently used keyboard shortcuts are shown in the following table.
de: Die am häufigsten verwendeten Tastaturkürzel sind in der folgenden Tabelle aufgeführt.

note: type: Block title
en: Most Common Keyboard Shortcuts(((TkLinuxCNC Common Keyboard Shortcuts)))
de: Häufigste Tastaturkürzel(((TkLinuxCNC Common Keyboard Shortcuts)))

note: type: Title =
en: Tool Edit GUI
de: GUI zur Werkzeug-Bearbeitung

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Tool Edit GUI - Overview
de: Tool Edit GUI - Überblick

note: type: Plain text
en: The 'tooledit' program can update the tool table file with edited changes by using the SaveFile button.  The SaveFile button updates the system file but a separate action is required to update the tool table data used by a running LinuxCNC instance.  With the AXIS GUI, both the file and the current tool table data used by LinuxCNC can be updated with the ReloadTable button.  This button is enabled only when the machine is ON and IDLE.
de: Das Programm 'tooledit' kann die Werkzeugtabellendatei mit bearbeiteten Änderungen aktualisieren, indem es die Schaltfläche SaveFile verwendet.  Die Schaltfläche SaveFile aktualisiert die Systemdatei, aber eine separate Aktion ist erforderlich, um die Werkzeugtabelle Daten von einem laufenden LinuxCNC Instanz verwendet aktualisieren.  Mit der AXIS GUI können sowohl die Datei als auch die aktuellen, von LinuxCNC verwendeten Werkzeugtabellendaten mit der Schaltfläche ReloadTable aktualisiert werden.  Diese Schaltfläche ist nur aktiviert, wenn die Maschine eingeschaltet und im Leerlauf ist.

note: type: Title ==
en: Column Sorting
de: Spaltensortierung

note: type: Plain text
en: The tool table display can be sorted on any column in ascending order by clicking on the column header.  A second click sorts in descending order.  Column sorting requires that the machine is configured with the default Tcl version >= 8.5.
de: Die Anzeige der Werkzeugtabelle kann nach jeder Spalte in aufsteigender Reihenfolge sortiert werden, indem Sie auf die Spaltenüberschrift klicken.  Ein zweiter Klick sortiert in absteigender Reihenfolge.  Die Spaltensortierung erfordert, dass die Maschine mit der Standard-Tcl-Version >= 8.5 konfiguriert ist.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Tool Edit GUI - Column Sorting
de: Tool Edit GUI - Spaltensortierung

note: type: Plain text
en: In Ubuntu Lucid 10.04 Tcl/Tk8.4 it is installed by default.  The installation is performed as follows:
de: In Ubuntu Lucid 10.04 ist Tcl/Tk8.4 standardmäßig installiert.  Die Installation wird wie folgt durchgeführt:

note: type: Plain text
en: Depending upon other applications installed on the system, it may be necessary to enable Tcl/Tk8.5 with the commands:
de: Je nachdem, welche anderen Anwendungen auf dem System installiert sind, kann es notwendig sein, Tcl/Tk8.5 mit den Befehlen zu aktivieren:

note: type: Title ==
en: Columns Selection
de: Spaltenauswahl

note: type: Plain text
en: By default, the 'tooledit' program will display all possible tool table parameter columns. Since few machines use all parameters, the columns displayed can be limited with the following INI file setting:
de: Standardmäßig zeigt das Programm 'tooledit' alle möglichen Spalten der Werkzeugtabelle an. Da nur wenige Maschinen alle Parameter verwenden, können die angezeigten Spalten mit der folgenden INI-Datei-Einstellung eingeschränkt werden:

note: type: Block title
en: Syntax of INI file
de: Syntax der INI-Datei

note: type: Block title
en: Example for Z and DIAM columns
de: Beispiel für Z- und DIAM-Spalten

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Tool Edit GUI - Columns Selection Example
de: Tool Edit GUI - Spaltenauswahl Beispiel

note: type: Title ==
en: Stand Alone Use
de: Eigenständige Verwendung

note: type: Plain text
en: The 'tooledit' program can also be invoked as a standalone program. For example, if the program is in the user PATH, typing 'tooledit' will show the usage syntax:
de: Das Programm "tooledit" kann auch als eigenständiges Programm aufgerufen werden. Wenn sich das Programm beispielsweise im Benutzerpfad befindet, zeigt die Eingabe von "tooledit" die Verwendungssyntax an:

note: type: delimited block -
en: Valid column names are: x y z a b c u v w diam front back orien
de: Gültige Spaltennamen sind: x y z a b c u v w diam front back orien

note: type: Plain text
en: To synchronize a standalone 'tooledit' with a running LinuxCNC application, the filename must resolve to the same [EMCIO]TOOL_TABLE filename specified in the LinuxCNC INI file.
de: Um eine eigenständige 'tooledit' mit einem laufenden LinuxCNC-Anwendung zu synchronisieren, muss der Dateiname auf die gleiche [EMCIO]TOOL_TABLE Dateiname in der LinuxCNC INI-Datei angegeben aufzulösen.

note: type: Plain text
en: When using the program 'tooledit' while LinuxCNC is running, G-code command execution or other programs may alter tool table data and the tool table file.  File changes are detected by 'tooledit' and a message is displayed:
de: Wenn Sie das Programm 'tooledit' verwenden, während LinuxCNC läuft, können die Ausführung von G-Code-Befehlen oder andere Programme die Werkzeugtabellendaten und die Werkzeugtabellendatei verändern.  Dateiänderungen werden von 'tooledit' erkannt und eine Meldung wird angezeigt:

note: type: delimited block -
en: Warning: File changed by another process
de: Warnung: Datei von einem anderen Prozess geändert (engl: File changed by another process)

note: type: Plain text
en: The 'tooledit' tool table display can be updated to read the modified file with the ReRead button.
de: Die Anzeige der Werkzeugtabelle 'tooledit' kann mit dem ReRead Button aktualisiert werden, um die geänderte Datei zu lesen.

note: type: Plain text
en: The tool table is specified in the INI file with an entry:
de: Die Werkzeugtabelle wird in der INI-Datei mit einem Eintrag angegeben:

note: type: Plain text
en: The tool table file can be edited with any simple text editor (not a word processor).
de: Die Werkzeugtabellendatei kann mit jedem einfachen Texteditor (nicht mit einem Textverarbeitungsprogramm) bearbeitet werden.

note: type: Plain text
en: The AXIS GUI can optionally use an INI file setting to specify the tool editor program:
de: Das AXIS GUI kann optional eine INI-Datei-Einstellung verwenden, um das Werkzeug-Editor-Programm festzulegen:

note: type: Plain text
en: By default, the program named 'tooledit' is used. This editor supports all tool table parameters, allows addition and deletion of tool entries, and performs a number of validity checks on parameter values.
de: Standardmäßig wird das Programm mit dem Namen "tooledit" verwendet. Dieser Editor unterstützt alle Parameter der Werkzeugtabelle, ermöglicht das Hinzufügen und Löschen von Werkzeugeinträgen und führt eine Reihe von Gültigkeitsprüfungen der Parameterwerte durch.

note: type: Title =
en: The Touchy Graphical User Interface(((touchygui)))
de: Die Touchy Grafische Benutzeroberfläche(((touchygui)))

note: type: Plain text
en: Touchy is a user interface for LinuxCNC meant for use on machine control panels, and therefore does not require keyboard or mouse.
de: Touchy ist eine Benutzeroberfläche für LinuxCNC, die für die Verwendung auf Maschinenbedienfeldern gedacht ist und daher keine Tastatur oder Maus benötigt.

note: type: Plain text
en: It is meant to be used with a touch screen, and works in combination with a wheel/MPG and a few buttons and switches.
de: Es ist für die Verwendung mit einem Touchscreen gedacht und funktioniert in Kombination mit einem Rad/MPG und einigen Tasten und Schaltern.

note: type: Plain text
en: The 'Handwheel' tab has radio buttons to select between 'Feed Override', 'Spindle Override', 'Maximum Velocity' and 'Jogging' functions for the wheel/MPG input. Radio buttons for axis selection and increment for jogging are also provided.
de: Die Registerkarte "Handrad" verfügt über Optionsfelder zur Auswahl zwischen den Funktionen "Vorschub-Override", "Spindel-Override", "Maximale Geschwindigkeit" und "Tippen" für den Rad/MPG-Eingang. Optionsfelder für die Achsenauswahl und die Schrittweite für den Tippbetrieb sind ebenfalls vorhanden.

note: type: Title ==
en: Panel Configuration
de: Panel-Konfiguration

note: type: Title ===
en: HAL connections
de: HAL-Verbindungen

note: type: Plain text
en: Touchy looks in the INI file, under the heading '[HAL]' for entries of 'POSTGUI_HALFILE=<filename>'.  Typically '<filename>' would be 'touchy_postgui.hal', but can be any legal filename.  These commands are executed after the screen is built, guaranteeing the widget HAL pins are available.  You can have multiple line of 'POSTGUI_HALFILE=<filename>' in the INI.  Each will be run one after the other in the order they appear in the INI file.
de: Touchy sucht in der INI-Datei unter der Überschrift '[HAL]' nach Einträgen von 'POSTGUI_HALFILE=<Dateiname>'.  Typischerweise ist '<Dateiname>' 'touchy_postgui.hal', kann aber ein beliebiger legaler Dateiname sein.  Diese Befehle werden nach der Erstellung des Bildschirms ausgeführt, um sicherzustellen, dass die HAL-Pins des Widgets verfügbar sind.  Sie können mehrere Zeilen von 'POSTGUI_HALFILE=<Dateiname>' in der INI haben.  Sie werden nacheinander in der Reihenfolge ausgeführt, in der sie in der INI-Datei erscheinen.

note: type: Plain text
en: Touchy used to require that you create a file named 'touchy.hal' in your configuration directory (the directory your INI file is in). For legacy reasons this will continue to work, but INI based postgui files are preferred.
de: Touchy verlangte bisher, dass Sie eine Datei namens "touchy.hal" in Ihrem Konfigurationsverzeichnis (dem Verzeichnis, in dem sich Ihre INI-Datei befindet) erstellen. Aus Legacy-Gründen wird dies auch weiterhin funktionieren, aber INI-basierte Postgui-Dateien sind vorzuziehen.

note: type: Plain text
en: For more information on HAL files and the net command see the <<cha:basic-hal-reference,HAL Basics>>.
de: Für weitere Informationen über HAL-Dateien und den net-Befehl siehe <<cha:basic-hal-reference,HAL Basics>>.

note: type: Plain text
en: Touchy has several output pins that are meant to be connected to the motion controller to control wheel jogging:
de: Touchy hat mehrere Ausgangspins, die mit dem Motion Controller verbunden werden sollen, um das Joggen der Räder zu steuern:

note: type: Plain text
en: 'touchy.jog.wheel.increment', which is to be connected to the 'axis._N_.jog-scale' pin of each axis _N_.
de: 'touchy.jog.wheel.increment', das mit dem Pin 'axis._N_.jog-scale' jeder Achse _N_ verbunden werden soll.

note: type: Plain text
en: 'touchy.jog.wheel._N_', which is to be connected to 'axis._N_.jog-enable' for each axis _N_.
de: 'touchy.jog.wheel._N_', das für jede Achse _N_ mit 'axis._N_.jog-enable' verbunden werden muss.

note: type: Plain text
en: 'N' represents the axis number 0-8.
de: 'N' steht für die Achsennummer 0-8.

note: type: Plain text
en: In addition to being connected to 'touchy.wheel-counts', the wheel counts should also be connected to 'axis._N_.jog-counts' for each axis _N_.  If you use HAL component 'ilowpass' to smooth wheel jogging, be sure to smooth only 'axis._N_.jog-counts' and not 'touchy.wheel-counts'.
de: Zusätzlich zur Verbindung mit 'touchy.wheel-counts' sollten die Radzählungen auch mit 'axis._N_.jog-counts' für jede Achse _N_ verbunden werden. Wenn Sie die HAL-Komponente 'ilowpass' zur Glättung der Radbewegung verwenden, stellen Sie sicher, dass Sie nur 'axis._N_.jog-counts' und nicht 'touchy.wheel-counts' glätten.

note: type: Block title
en: Required controls
de: Erforderliche Kontrollen

note: type: Plain text
en: Abort button (momentary contact) connected to the HAL pin 'touchy.abort'.
de: Abbruch-Button (Moment-Kontakt), angeschlossen an den HAL-Pin 'touchy.abort'.

note: type: Plain text
en: Cycle start button (momentary contact) connected to 'touchy.cycle-start'.
de: Button für Zyklusstart (Moment-Kontakt) angeschlossen an 'touchy.cycle-start'.

note: type: Plain text
en: Wheel/MPG, connected to 'touchy.wheel-counts' and motion pins as described above.
de: Rad/MPG, verbunden mit 'touchy.wheel-counts' und Motion Pins wie oben beschrieben.

note: type: Plain text
en: Single block (toggle switch) connected to 'touchy.single-block'.
de: Einzelner Block (Kippschalter), angeschlossen an 'touchy.single-block'.

note: type: Block title
en: Optional controls
de: Optionale Bedienelemente

note: type: Plain text
en: For continuous jog, one center-off bidirectional momentary toggle (or two momentary buttons) for each axis, hooked to 'touchy.jog.continuous.x.negative', 'touchy.jog.continuous.x.positive', etc.
de: Für kontinuierliches Joggen ein bidirektionaler Momentan-Schalter (oder zwei momentane Tasten) für jede Achse, eingehängt an 'touchy.jog.continuous.x.negative', 'touchy.jog.continuous.x.positive' usw.

note: type: Plain text
en: If a quill up button is wanted (to jog Z to the top of travel at top speed), a momentary button connected to 'touchy.quill-up'.
de: Wenn ein Quill-Up-Button gewünscht wird (um Z mit Höchstgeschwindigkeit an die Spitze der Reise zu joggen), ist eine momentane Taste mit 'touchy.quill-up' verbunden.

note: type: Block title
en: Optional panel lamps
de: Optionale Panel-Leuchten

note: type: Plain text
en: 'touchy.jog.active' shows when the panel jogging controls are live.
de: 'touchy.jog.active' zeigt an, wenn die Panel-Jogging-Steuerelemente live sind.

note: type: Plain text
en: 'touchy.status-indicator' is on when the machine is executing G-code, and flashes when the machine is executing but is in pause/feedhold.
de: touchy.status-indicator' leuchtet, wenn die Maschine G-Code ausführt, und blinkt, wenn die Maschine zwar ausgeführt wird, sich aber in Pause/Feedhold befindet.

note: type: Title ===
en: Recommended for any setup
de: Empfohlen für jede Einrichtung

note: type: Plain text
en: Estop button hardwired in the estop chain
de: Notaus-Button fest in der Notaus-Kette verdrahtet

note: type: Title ===
en: Enabling Touchy
de: Touchy aktivieren

note: type: Plain text
en: To use Touchy, in the '[DISPLAY]' section of your INI file change the display selector line to 'DISPLAY = touchy'.
de: Um Touchy zu verwenden, ändern Sie im Abschnitt '[DISPLAY]' Ihrer INI-Datei die Zeile für die Anzeigeauswahl in 'DISPLAY = touchy'.

note: type: Plain text
en: When you start Touchy the first time, check the Preferences tab.  If using a touchscreen, choose the option to hide the pointer for best results.
de: Wenn Sie Touchy zum ersten Mal starten, überprüfen Sie die Registerkarte "Einstellungen".  Wenn Sie einen Touchscreen verwenden, wählen Sie die Option zum Ausblenden des Zeigers, um optimale Ergebnisse zu erzielen.

note: type: Plain text
en: The Status Window is a fixed height, set by the size of a fixed font.  This can be affected by the Gnome DPI, configured in System / Preferences / Appearance / Fonts / Details. If the bottom of the screen is cut off, reduce the DPI setting.
de: Das Statusfenster hat eine feste Höhe, die durch die Größe einer festen Schriftart bestimmt wird.  Dies kann durch die Gnome-DPI beeinflusst werden, die unter System / Einstellungen / Aussehen / Schriftarten / Details eingestellt wird. Wenn der untere Teil des Bildschirms abgeschnitten ist, verringern Sie die DPI-Einstellung.

note: type: Plain text
en: All other font sizes can be changed on the Preferences tab.
de: Alle anderen Schriftgrößen können auf der Registerkarte Voreinstellungen geändert werden.

note: type: Title ===
en: Macros
de: Makros

note: type: Plain text
en: Touchy can invoke O-word macros using the MDI interface.  To configure this, in the '[TOUCHY]' section of the INI file, add one or more 'MACRO' lines.  Each should be of the following format:
de: Touchy kann O-Wort-Makros über die MDI-Schnittstelle aufrufen.  Um dies zu konfigurieren, fügen Sie im Abschnitt '[TOUCHY]' der INI-Datei eine oder mehrere 'MACRO'-Zeilen ein.  Jede Zeile sollte das folgende Format haben:

note: type: Plain text
en: In this example, increment is the name of the macro, and it accepts two parameters, named xinc and yinc.
de: In diesem Beispiel ist "increment" der Name des Makros, das zwei Parameter namens xinc und yinc akzeptiert.

note: type: Plain text
en: Now, place the macro in a file named 'increment.ngc', in the 'PROGRAM_PREFIX' directory or any directory in the 'SUBROUTINE_PATH'.
de: Legen Sie nun das Makro in einer Datei mit dem Namen "increment.ngc" im Verzeichnis "PROGRAM_PREFIX" oder einem beliebigen Verzeichnis im "SUBROUTINE_PATH" ab.

note: type: Plain text
en: It should look like:
de: Es sollte wie folgt aussehen:

note: type: Plain text
en: Notice the name of the sub matches the file name and macro name exactly, including case.
de: Beachten Sie, dass der Name des Unterprogramms exakt mit dem Dateinamen und dem Makronamen übereinstimmt, einschließlich Groß- und Kleinschreibung.

note: type: Plain text
en: When you invoke the macro by pressing the Macro button on the MDI tab in Touchy, you can enter values for xinc and yinc.  These are passed to the macro as '#1' and '#2' respectively.  Parameters you leave empty are passed as value 0.
de: Wenn Sie das Makro durch Drücken der Schaltfläche Makro auf der Registerkarte MDI in Touchy aufrufen, können Sie Werte für xinc und yinc eingeben.  Diese werden als '#1' bzw. '#2' an das Makro übergeben.  Parameter, die Sie leer lassen, werden als Wert 0 übergeben.

note: type: Plain text
en: In this simple example, if you enter -1 for xinc and press cycle start, a rapid 'G0' move will be invoked, moving one unit to the left.
de: Wenn Sie in diesem einfachen Beispiel -1 für xinc eingeben und den Zyklusstart drücken, wird eine schnelle 'G0'-Bewegung ausgelöst, die eine Einheit nach links geht.

note: type: Plain text
en: Vismach is a set of Python functions that can be used to create and animate models of machines. Vismach displays the model in a 3D viewport and the model parts are animated as the values of associated HAL pins change.
de: Vismach ist eine Reihe von Python-Funktionen, mit denen Modelle von Maschinen erstellt und animiert werden können. Vismach zeigt das Modell in einem 3D-Ansichtsfenster an und die Modellteile werden animiert, wenn sich die Werte der zugehörigen HAL-Pins ändern.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Vismach displays the model in a 3D viewport
de: Vismach zeigt das Modell in einem 3D-Viewport an

note: type: Plain text
en: The Vismach viewport view can be manipulated as follows:
de: Das Vismach Ansichtsfenster (engl. viewport view) kann wie folgt manipuliert werden:

note: type: Plain text
en: *zoom* by scroll wheel or right button drag,
de: *Zoom* durch Scrollrad oder Ziehen mit der rechten Taste,

note: type: Plain text
en: *pan* by left button drag,
de: *Schwenk* durch Ziehen der linken Taste,

note: type: Plain text
en: *rotate* by middle-button drag or shift-drag.
de: *Drehen* durch Ziehen mit der mittleren Taste oder durch Ziehen mit der Umschalttaste.

note: type: Plain text
en: A Vismach model takes the form of a Python script and can use standard Python syntax. This means that there is more than one way to lay out the script, but in the examples given in this document I will use the simplest and most basic of them.
de: Ein Vismach-Modell hat die Form eines Python-Skripts und kann die Standard-Python-Syntax verwenden. Das bedeutet, dass es mehr als eine Möglichkeit gibt, das Skript zu erstellen, aber in den Beispielen in diesem Dokument werde ich die einfachste und grundlegendste davon verwenden.

note: type: Plain text
en: The basic sequence in creating the Vismach model is
de: Die grundlegende Reihenfolge bei der Erstellung des Vismach-Modells ist

note: type: Plain text
en: Create the HAL pins that control the motion.
de: Erstellen von HAL-Pins zur Steuerung der Bewegung.

note: type: Plain text
en: Create the parts.
de: Erstellen der Werkstücke (engl. parts).

note: type: Plain text
en: Define how they move.
de: Definiere, wie sie sich bewegen.

note: type: Plain text
en: Assemble into movement groups.
de: In Bewegungsgruppen zusammenstellen.

note: type: Plain text
en: It is useful for testing to include the '#!/usr/bin/env python3' to allow the file to be run as a script. The first thing to do is to import the required libraries.
de: Zum Testen ist es nützlich, die '#!/usr/bin/env python3' anzugeben, damit die Datei als Skript ausgeführt werden kann. Als Erstes müssen die erforderlichen Bibliotheken importiert werden.

note: type: Title ==
en: Create the HAL pins.
de: Erstellen der HAL-Pins.

note: type: Plain text
en: HAL pins are created with the normal Python "hal" library, and are not specific to Vismach. Further details can be found in the <<cha:halmodule,Creating Userspace Components in Python>> section.  A component should be created with a name that matches the script file name and then the HAL pins are added to that component. They will be referenced by their component handle and short name when used to animate the Vismach model.
de: HAL-Pins werden mit der normalen Python-Bibliothek "hal" erstellt und sind nicht spezifisch für Vismach. Weitere Einzelheiten finden Sie im Abschnitt <<cha:halmodule,Erstellen von Userspace Komponenten in Python>>.  Es sollte eine Komponente mit einem Namen erstellt werden, der mit dem Namen der Skriptdatei übereinstimmt, und dann werden die HAL-Pins zu dieser Komponente hinzugefügt. Sie werden mit ihrem Komponenten-Handle und Kurznamen referenziert, wenn sie zur Animation des Vismach-Modells verwendet werden.

note: type: Plain text
en: Will create HAL pins 'samplegui.joint0' and 'samplegui.joint1'. When loading the Vismach model with 'loadusr -W samplegui' the 'c.ready()' function tells loadusr it's ready.
de: Erzeugt die HAL-Pins 'samplegui.joint0' und 'samplegui.joint1'. Beim Laden des Vismach-Modells mit 'loadusr -W samplegui' teilt die Funktion 'c.ready()' loadusr mit, dass es bereit ist.

note: type: Plain text
en: It is probably easiest to create geometry in a CAD package and *import* into the model script with the `AsciiSTL()` or `AsciiOBJ()` functions.  Both functions can take one of two named arguments, either a filename or raw data:
de: Am einfachsten ist es wahrscheinlich, die Geometrie in einem CAD-Paket zu erstellen und mit den Funktionen `AsciiSTL()` oder `AsciiOBJ()` in das Modellskript zu *importieren*.  Beide Funktionen können eines von zwei benannten Argumenten annehmen, entweder einen Dateinamen oder Rohdaten:

note: type: Plain text
en: `part = AsciiSTL(filename="path/to/file.stl")
    part = AsciiSTL(data="solid part1 facet normal ....")
    part = AsciiOBJ(filename="path/to/file.obj")
    part = AsciiOBJ(data="v 0.123 0.234 0.345 1.0 ...")`
    The parts will be created in the Vismach space in the same locations as they occupy in the STL or OBJ space. This means that it may be possible to assemble the model in the CAD package.
de: Teil = AsciiSTL(Dateiname="path/to/file.stl")
    Teil = AsciiSTL(data="solid part1 facet normal ....")
    Teil = AsciiOBJ(Dateiname="Pfad/Zu/Datei.obj")
    Teil = AsciiOBJ(data="v 0.123 0.234 0.345 1.0 ...")`
    Die Teile werden im Vismach-Raum an denselben Stellen erstellt, an denen sie sich im STL- oder OBJ-Raum befinden. Das bedeutet, dass es möglich sein kann, das Modell im CAD-Paket zusammenzusetzen.

note: type: Plain text
en: Alternatively parts can be created inside the model script from a range of *shape primitives*. Many shapes are created at the origin and need to be moved to the required location after creation:
de: Alternativ können Teile innerhalb des Modellskripts aus einer Reihe von *Form-Primitiven* erstellt werden. Viele Formen werden am Ursprung erstellt und müssen nach der Erstellung an die gewünschte Stelle verschoben werden:

note: type: Plain text
en: `cylinder = CylinderX(x1, r1, x2, r2)
    cylinder = CylinderY(y1, r1, y2, r2)
    cylinder = CylinderZ(z1, r1, z2, r2)`
    Creates a (optionally tapered) cylinder on the given axis with the given radii at the given points on the axis.
de: `cylinder = CylinderX(x1, r1, x2, r2)
    cylinder = CylinderY(y1, r1, y2, r2)
    cylinder = CylinderZ(z1, r1, z2, r2)`
    Erzeugt einen (optional verjüngten) Zylinder auf der angegebenen Achse mit den angegebenen Radien an den angegebenen Punkten auf der Achse.

note: type: Plain text
en: `sphere = Sphere(x, y, z, r)`
    Creates a sphere of radius r at (x,y,z)
de: sphere = Sphere(x, y, z, r)`
    Erzeugt eine Kugel mit Radius r bei (x,y,z)

note: type: Plain text
en: `triangle = TriangleXY(x1, y1, x2, y2, x3, y3, z1, z2)
    triangle = TriangleXZ(x1, z1, x2, z2, x3, z3, y1, y2)
    triangle = TriangleYZ(y1, z1, y2, z2, y3, z3, x1, x2)`
    Creates a triangular plate between planes defined by the last two values parallel to the specified plane, with vertices given by the three coordinate pairs.
de: `triangle = TriangleXY(x1, y1, x2, y2, x3, y3, z1, z2)
    triangle = TriangleXZ(x1, z1, x2, z2, x3, z3, y1, y2)
    triangle = TriangleYZ(y1, z1, y2, z2, y3, z3, x1, x2)`
    Erzeugt eine dreieckige Platte zwischen Ebenen, die durch die letzten beiden Werte parallel zur angegebenen Ebene definiert sind, wobei die Eckpunkte durch die drei Koordinatenpaare gegeben sind.

note: type: Plain text
en: `arc = ArcX(x1, x2, r1, r2, a1, a2)`
    Create an arc shape.
de: `Bogen = ArcX(x1, x2, r1, r2, a1, a2)`
    Erstellt eine Bogenform.

note: type: Plain text
en: `box = Box(x1, y1, z1, x2, y2, z2)`
    Creates a rectangular prism with opposite corners at the specified positions and edges parallel to the XYZ axes.
de: `box = Box(x1, y1, z1, x2, y2, z2)`
    Erzeugt ein rechteckiges Prisma mit gegenüberliegenden Ecken an den angegebenen Positionen und Kanten parallel zu den XYZ-Achsen.

note: type: Plain text
en: `box = BoxCentered(xw, yw, zw)`
    Creates an xw by yw by zw box centred on the origin.
de: `box = BoxCentered(xw, yw, zw)`
    Erzeugt eine xw mal yw mal zw Box, die auf den Ursprung zentriert ist.

note: type: Plain text
en: `box = BoxCenteredXY(xw, yw, z)`
    Creates a box of width xw / yw and height z.
de: `box = BoxCenteredXY(xw, yw, z)`
    Erzeugt eine Box mit der Breite xw / yw und der Höhe z.

note: type: Plain text
en: Composite parts may be created by *assembling* these primitives either at creation time or subsequently using `Collection()`:
de: Zusammengesetzte Teile können durch *Zusammensetzen* dieser Primitive entweder zur Erstellungszeit oder nachträglich mittels `Collection()` erstellt werden:

note: type: Title ==
en: Moving Parts
de: Bewegliche Teile

note: type: Plain text
en: Parts may need to be moved in the Vismach space to assemble the model.  They may also need to be moved to create the animation as the animation rotation axis is created at the origin (but moves with the Part):
de: Teile müssen möglicherweise im Vismach-Raum verschoben werden, um das Modell zusammenzusetzen.  Sie müssen möglicherweise auch verschoben werden, um die Animation zu erstellen, da die Rotationsachse der Animation am Ursprung erstellt wird (sich aber mit dem Teil bewegt):

note: type: Plain text
en: `part1 = Translate([part1], x, y, z)`
    Move part1 the specified distances in x, y and z.
de: `Teil1 = Translate([Teil1], x, y, z)`
    Verschiebe Teil1 um die angegebenen Abstände in x, y und z.

note: type: Plain text
en: `part1 = Rotate([part1], theta, x, y, z)`
    Rotate the part by angle theta about an axis between the origin and x, y, z.
de: Teil1 = Rotate([Teil1], theta, x, y, z)`
    Dreht das Teil um den Winkel theta um eine Achse zwischen dem Ursprung und x, y, z.

note: type: Plain text
en: To animate the model (controlled by the values of HAL pins) there are two functions 'HalTranslate' and 'HalRotate'. For parts to move inside an assembly they need to have their HAL motions defined before being assembled with the "Collection" command. The rotation axis and translation vector move with the part as it is moved by the vismach script during model assembly, or as it moves in response to the HAL pins as the model is animated:
de: Um das Modell zu animieren (gesteuert durch die Werte der HAL-Pins) gibt es die beiden Funktionen "HalTranslate" und "HalRotate". Damit sich Teile in einer Baugruppe bewegen können, müssen ihre HAL-Bewegungen definiert werden, bevor sie mit dem Befehl "Collection" zusammengesetzt werden. Die Rotationsachse und der Translationsvektor bewegen sich mit dem Teil, wenn es vom Vismach-Skript während des Zusammenbaus des Modells bewegt wird, oder wenn es sich als Reaktion auf die HAL-Pins bewegt, während das Modell animiert wird:

note: type: Plain text
en: `part = HalTranslate([part], comp, "hal_pin", xs, ys, zs)`
    The function arguments are:
de: `part = HalTranslate([part], comp, "hal_pin", xs, ys, zs)`
    Die Funktionsargumente sind:

note: type: Plain text
en: first a _collection/part_ which can be pre-created earlier in the script, or could be created at this point if preferred eg `part1 = HalTranslate([Box(....)], ...)`.
de: zuerst eine _Sammlung/ein Teil_, die vorher im Skript erstellt werden kann, oder an dieser Stelle erstellt werden kann, wenn dies bevorzugt wird, zB `part1 = HalTranslate([Box(....)], ...)`.

note: type: Plain text
en: The _HAL component_ is the next argument, ie the object returned by the `comp = hal.component(...)` command. After that is the name of the HAL in that will animate the motion, this needs to match an existing HAL pin that is part of the HAL component created earlier in the script.
de: Die _HAL-Komponente_ ist das nächste Argument, d.h. das Objekt, das durch den Befehl `comp = hal.component(...)` zurückgegeben wird. Danach folgt der Name der HAL-Komponente, welche die Bewegung animieren soll. Dieser muss mit einem bestehenden HAL-Pin übereinstimmen, der Teil der zuvor im Skript erstellten HAL-Komponente ist.

note: type: Plain text
en: Then follow the _X, Y, Z scales_.
    For a Cartesian machine created at 1:1 scale this would typically be 1,0,0 for a motion in the positive X direction.
    However if the STL file happened to be in cm and the machine was in inches, this could be fixed at this point by using 0.3937 (1cm /2.54in) as the scale.
de: Dann folgen Sie den _X, Y, Z-Skalen_.
    Bei einer kartesischen Maschine, die im Maßstab 1:1 erstellt wurde, wäre dies normalerweise 1,0,0 für eine Bewegung in positiver X-Richtung.
    Wenn die STL-Datei jedoch in cm und die Maschine in Zoll erstellt wurde, kann dies an dieser Stelle durch die Verwendung von 0,3937 (1cm /2.54in) als Maßstab korrigiert werden.

note: type: Plain text
en: `part = HalRotate([part], comp, "hal_pin", angle_scale, x, y, z)`
    This command is similar in its operation to HalTranslate except that it is typically necessary to move the part to the origin first to define the axis.
de: `part = HalRotate([part], comp, "hal_pin", angle_scale, x, y, z)`
    Dieser Befehl ähnelt in seiner Funktionsweise HalTranslate, außer dass es normalerweise notwendig ist, das Teil zuerst zum Ursprung zu bewegen, um die Achse zu definieren.

note: type: Plain text
en: The _axis of rotation_ is from the origin point to the point defined by (x,y,z).
    When the part is moved back away from the origin to its correct location the axis of rotation can be considered to remain "embedded" in the part.
de: Die _Drehachse_ verläuft vom Ursprungspunkt zu dem durch (x,y,z) definierten Punkt.
    Wenn das Teil vom Ursprung an seinen richtigen Ort zurückbewegt wird, kann man davon ausgehen, dass die Drehachse im Teil "eingebettet" bleibt.

note: type: Title ==
en: Assembling the model.
de: Zusammenbau des Modells.

note: type: Plain text
en: In order for parts to move together they need to be assembled with the Collection() command. It is important to assemble the parts and define their motions in the correct sequence. For example to create a moving head milling machine with a rotating spindle and an animated draw bar you would:
de: Damit sich die Teile gemeinsam bewegen können, müssen sie mit dem Befehl Collection() zusammengefügt werden. Es ist wichtig, die Teile zusammenzufügen und ihre Bewegungen in der richtigen Reihenfolge zu definieren. Um zum Beispiel eine Fräsmaschine mit beweglichem Kopf, einer rotierenden Spindel und einer animierten Zugstange zu erstellen, würden Sie dies tun:

note: type: Plain text
en: Assemble the three parts into a head assembly.
de: Bauen Sie die drei Teile zu einer Kopfeinheit zusammen.

note: type: Plain text
en: Finally a single collection of all the machine parts, floor and work (if any) needs to be created:
de: Schließlich muss eine einzige Sammlung aller Maschinenteile, Böden und Arbeiten (falls vorhanden) erstellt werden:

note: type: Plain text
en: Thus, for example, in scaragui.py link3 is added to link2, link2 to link1 and link1 to link0, so the final model is created by:
de: So wird zum Beispiel in scaragui.py link3 zu link2, link2 zu link1 und link1 zu link0 hinzugefügt, so dass das endgültige Modell wie folgt erstellt wird:

note: type: Plain text
en: Whereas a VMC model with separate parts moving on the base might have:
de: Bei einem VMC-Modell mit separaten Teilen, die sich auf dem Sockel bewegen, könnte dies der Fall sein:

note: type: Plain text
en: `part = Color([colorspec], [part])`
    Sets the display color of the part. Note that unlike the other functions the part definition comes second in this case.
    The colorspec consists of the three RGB values and an opacity. For example [1,0,0,0.5] for a 50% opacity red.
de: 'Teil = Farbe([Farbvorgabe], [Teil])`
    Legt die Anzeigefarbe des Teils fest. Beachten Sie, dass im Gegensatz zu den anderen Funktionen die Definition des Teils in diesem Fall an zweiter Stelle steht.
    Die Farbvorgabe besteht aus den drei RGB-Werten und einer Deckkraft. Zum Beispiel [1,0,0,0.5] für ein Rot mit 50% Deckkraft.

note: type: Plain text
en: `myhud = Hud()`
    Creates a heads-up display in the Vismach GUI to display such items as axis positions.
de: 'myhud = Hud()'
    Erstellt eine Heads-up-Anzeige in der Vismach-GUI, um Elemente wie Achsenpositionen anzuzeigen.

note: Need to play around with this to see how it works. type: Plain text
en: `part = Capture()`
    I have no idea what this does ! But it seems to be important for tool tip visualization...
de: `part = Capture()`
    Ich habe keine Ahnung, was das bewirkt! Aber es scheint wichtig für die Werkzeugspitzen-Visualisierung zu sein ...

note: type: Plain text
en: `main(model, tooltip, work, size=10, hud=0, rotation_vectors=None, lat=0, lon=0)`
    This is the command that makes it all happen, creates the display etc.
de: `main(model, tooltip, work, size=10, hud=0, rotation_vectors=None, lat=0, lon=0)`
    Dies ist der Befehl, der alles möglich macht, die Anzeige aufbaut usw.

note: type: Plain text
en: _model_ should be a collection that contains all the machine parts.
de: _model_ sollte eine Sammlung sein, die alle Maschinenteile enthält.

note: type: Plain text
en: _tooltip_ and _work_ need to be created by `Capture()` to visualize their motion in the back plot.
    See `scaragui.py` for an example of how to connect the tool tip to a tool and the tool to the model.
de: _tooltip_ und _work_ müssen durch `Capture()` erstellt werden, um ihre Bewegung im Backplot zu visualisieren.
    Siehe `scaragui.py` für ein Beispiel, wie man die Werkzeugspitze mit einem Werkzeug und das Werkzeug mit dem Modell verbindet.

note: type: Plain text
en: Either _rotation_vectors_ or _latitude/longitude_ can be used to set the original viewpoint and it is advisable to do as the default initial viewpoint is rather unhelpfully from immediately overhead.
de: Entweder _rotation_vectors_ oder _latitude/longitude_ können verwendet werden, um den ursprünglichen Blickwinkel zu bestimmen, und es ist ratsam, dies zu tun, da der standardmäßige anfängliche Blickwinkel eher wenig hilfreich ist, wenn man direkt über dem Kopf steht.

note: type: Plain text
en: _size_ sets the extent of the volume visualized in the initial view.
de: _size_ legt die Ausdehnung des in der Ausgangsansicht dargestellten Volumens fest.

note: type: Plain text
en: _hud_ refers to a head-up display of axis positions.
de: _hud_ bezieht sich auf eine Head-up-Anzeige der Achsenpositionen.

note: type: Title ==
en: Basic structure of a Vismach script.
de: Grundstruktur eines Vismach-Skripts.

note: type: delimited block -
en: #imports
    from vismach import *
    import hal
    #create the HAL component and pins
    comp = hal.component("compname")
    comp.newpin("pin_name", hal.HAL_FLOAT, hal.HAL_IN)
    ...
    #create the floor, tool and work
    floor = Box(-50, -50, -3, 50, 50, 0)
    work = Capture()
    tooltip = Capture()
    ...
    #Build and assemble the model
    part1 = Collection([Box(-6,-3,94,6,3,100)])
    part1 = Color([1,1,1,1],[part1])
    part1 = HalRotate([part1],comp,"pin_name",360,0,0,1)
    part1 = Translate([dogs],-1,49,0)
    ...
    #create a top-level model
    model = Collection([base, saddle, head, carousel])
    #Start the visualization
    main(model, tooltip, work, 100, lat=-75, lon=215)
de: #imports
    from vismach import *
    import hal
    # Erstellen der HAL Komponenten and Pins
    comp = hal.component("compname")
    comp.newpin("pin_name", hal.HAL_FLOAT, hal.HAL_IN)
    ...
    # Erstellen von floor, tool and work
    floor = Box(-50, -50, -3, 50, 50, 0)
    work = Capture()
    tooltip = Capture()
    ...
    # Build and assemble the model
    part1 = Collection([Box(-6,-3,94,6,3,100)])
    part1 = Color([1,1,1,1],[part1])
    part1 = HalRotate([part1],comp,"pin_name",360,0,0,1)
    part1 = Translate([dogs],-1,49,0)
    ...
    # Erstellen des übergeordneten (engl. top-level) Modells
    model = Collection([base, saddle, head, carousel])
    # Start der Visualisierung
    main(model, tooltip, work, 100, lat=-75, lon=215)

note: type: Title =
en: HAL Basics(((HAL Basics)))
de: HAL-Grundlagen(((HAL-Grundlagen)))

note: type: Plain text
en: This document provides a reference to the basics of HAL.
de: Dieses Dokument bietet einen Überblick über die Grundlagen von HAL.

note: type: Title ==
en: HAL Commands(((HAL Commands)))
de: HAL-Befehle(((HAL-Befehle)))

note: type: Plain text
en: More detailed information can be found in the man page for halcmd: run 'man halcmd' in a terminal window.
de: Ausführlichere Informationen finden Sie in der Manpage für halcmd: führen Sie 'man halcmd' in einem Terminalfenster aus.

note: type: Plain text
en: To see the HAL configuration and check the status of pins and parameters use the HAL Configuration window on the Machine menu in AXIS. To watch a pin status open the Watch tab and click on each pin you wish to watch and it will be added to the watch window.
de: Um die HAL-Konfiguration zu sehen und den Status von Pins und Parametern zu überprüfen, verwenden Sie das Fenster HAL-Konfiguration im Menü Maschine in AXIS. Um den Status eines Pins zu überwachen, öffnen Sie die Registerkarte "Überwachen" und klicken Sie auf jeden Pin, den Sie überwachen möchten; er wird dann zum Überwachungsfenster hinzugefügt.

note: type: Block title
en: HAL Configuration Window
de: HAL-Konfigurationsfenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: The HAL Configuration Window
de: Das HAL-Konfigurationsfenster

note: type: Plain text
en: The command 'loadrt' loads a real time HAL component. Real time component functions need to be added to a thread to be updated at the rate of the thread. You cannot load a user space component into the real time space.
de: Mit dem Befehl 'loadrt' wird eine Echtzeit-HAL-Komponente geladen. Echtzeit-Komponentenfunktionen müssen einem Thread hinzugefügt werden, um mit der Rate des Threads aktualisiert zu werden. Sie können keine Userspace-Komponente in den Echtzeitbereich laden.

note: type: Block title
en: loadrt Syntax and Example
de: loadrt Syntax und Beispiel

note: type: Plain text
en: The `addf` command adds a function to a real-time thread. If the StepConf wizard was used to create the configuration, two threads have been created (``base-thread`` and ``servo-thread``).
de: Der Befehl `addf` fügt eine Funktion zu einem Echtzeit-Thread hinzu. Wenn der StepConf-Assistent zur Erstellung der Konfiguration verwendet wurde, wurden zwei Threads erstellt (``base-thread`` und ``servo-thread``).

note: type: Plain text
en: `addf` adds function 'functname' to thread 'threadname'. Default is to add the function in the order they are in the file. If 'position' is specified, adds the function to that spot in the thread. Negative 'position' means position with respect to the end of the thread. For example '1' is start of thread, '-1' is the end of the thread, '-3' is third from the end.
de: `addf` fügt Funktion 'functname' zum Thread 'threadname' hinzu. Standardmäßig wird die Funktion in der Reihenfolge hinzugefügt, in der sie in der Datei steht. Wenn 'position' angegeben ist, wird die Funktion an dieser Stelle des Threads hinzugefügt. Eine negative 'position' bedeutet Position in Bezug auf das Ende des Threads. Beispiel: '1' ist der Anfang des Fadens, '-1' ist das Ende des Fadens, '-3' ist die drittletzte Position.

note: type: Plain text
en: For some functions it is important to load them in a certain order, like the parport read and write functions. The function name is usually the component name plus a number. In the following example the component 'or2' is loaded and 'show function' shows the name of the or2 function
de: Bei einigen Funktionen ist es wichtig, dass sie in einer bestimmten Reihenfolge geladen werden, wie z. B. die Parport-Lese- und Schreibfunktionen. Der Funktionsname ist normalerweise der Komponentenname plus eine Zahl. Im folgenden Beispiel wird die Komponente "or2" geladen und "show function" zeigt den Namen der or2-Funktion an

note: type: Plain text
en: You have to add a function from a HAL real time component to a thread to get the function to update at the rate of the thread.
de: Sie müssen eine Funktion aus einer HAL-Echtzeitkomponente zu einem Thread hinzufügen, damit die Funktion mit der Rate des Threads aktualisiert wird.

note: type: Plain text
en: Usually there are two threads as shown in this example. Some components use floating point math and must be added to a thread that supports floating point math. The 'FP' indicates if floating point math is supported in that thread.
de: Normalerweise gibt es zwei Threads, wie in diesem Beispiel gezeigt. Einige Komponenten verwenden Fließkomma-Mathematik und müssen zu einem Thread hinzugefügt werden, der Fließkomma-Mathematik unterstützt. Das 'FP' zeigt an, ob die Fließkomma-Mathematik in diesem Thread unterstützt wird.

note: type: Plain text
en: base-thread (the high-speed thread): this thread handles items that need a fast response, like making step pulses, and reading and writing the parallel port. Does not support floating point math.
de: Basis-Thread (der Hochgeschwindigkeits-Thread): Dieser Thread bearbeitet Aufgaben, die eine schnelle Reaktion erfordern, wie z. B. die Erzeugung von Schrittimpulsen und das Lesen und Schreiben der parallelen Schnittstelle. Er unterstützt keine Fließkomma-Mathematik.

note: type: Plain text
en: servo-thread (the slow-speed thread): this thread handles items that can tolerate a slower response, like the motion controller, ClassicLadder, and the motion command handler and supports floating point math.
de: Servo-Thread (der Slow-Speed-Thread): Dieser Thread verarbeitet Elemente, die eine langsamere Reaktion tolerieren können, wie den Motion-Controller, ClassicLadder und den Motion-Command-Handler, und unterstützt Fließkomma-Mathematik.

note: type: Block title
en: addf Syntax and Example
de: addf Syntax und Beispiel

note: type: Plain text
en: If the component requires a floating point thread that is usually the slower servo-thread.
de: Wenn die Komponente einen Fließkomma-Thread benötigt, ist dies normalerweise der langsamere Servo-Thread.

note: type: Plain text
en: The command 'loadusr' loads a user space HAL component. User space programs are their own separate processes, which optionally talk to other HAL components via pins and parameters. You cannot load real time components into user space.
de: Mit dem Befehl 'loadusr' wird eine User-Space-HAL-Komponente geladen. Userspace-Programme sind eigene Prozesse, die optional über Pins und Parameter mit anderen HAL-Komponenten kommunizieren. Sie können keine Echtzeitkomponenten in den Benutzerraum laden.

note: type: Plain text
en: Flags may be one or more of the following:
de: Flags können eine oder mehrere der folgenden sein:

note: type: Plain text
en: to wait for the component to become ready. The component is assumed to have the same name as the first argument of the command.
de: um auf die Bereitschaft der Komponente zu warten. Es wird davon ausgegangen, dass die Komponente denselben Namen hat wie das erste Argument des Befehls.

note: type: Labeled list
en: -Wn <name>
de: -Wn <Name>

note: type: Plain text
en: to wait for the component, which will have the given <name>.  This only applies if the component has a name option.
de: um auf die Komponente zu warten, die den angegebenen <Name> haben wird.  Dies gilt nur, wenn die Komponente eine Namensoption hat.

note: type: Plain text
en: to wait for the program to exit
de: um zu warten, bis das Programm beendet wird

note: type: Plain text
en: to ignore the program return value (with -w)
de: um den Rückgabewert des Programms zu ignorieren (mit -w)

note: type: Plain text
en: name a component when it is a valid option for that component.
de: Benennt eine Komponente, sofern dies eine zulässige Option für diese Komponente ist.

note: type: Block title
en: loadusr Syntax and Examples
de: loadusr Syntax und Beispiele

note: type: Plain text
en: In English it means 'loadusr wait for name spindle component gs2_vfd name spindle'.
de: Auf Deutsch bedeutet es 'loadusr wartet auf Name Spindel Komponente gs2_vfd mit Namen Spindel'.

note: type: Plain text
en: The command 'net' creates a 'connection' between a signal and one or more pins. If the signal does not exist net creates the new signal.  This replaces the need to use the command newsig. The optional direction arrows '<=', '=>' and '<=>' make it easier to follow the logic when reading a 'net' command line and are not used by the net command. The direction arrows must be separated by a space from the pin names.
de: Der Befehl 'net' erstellt eine 'Verbindung' zwischen einem Signal und einem oder mehreren Pins. Wenn das Signal nicht existiert, erzeugt net das neue Signal.  Dies ersetzt die Verwendung des Befehls newsig. Die optionalen Richtungspfeile '<=', '=>' und '<=>' erleichtern das Verfolgen der Logik beim Lesen einer 'net'-Befehlszeile und werden vom Befehl 'net' nicht verwendet. Die Richtungspfeile müssen durch ein Leerzeichen von den Pin-Namen getrennt werden.

note: type: Block title
en: net Syntax and Example
de: net Syntax und Beispiel

note: type: Plain text
en: In the above example 'home-x' is the signal name, 'joint.0.home-sw-in' is a 'Direction IN' pin, '<=' is the optional direction arrow, and 'parport.0.pin-11-in' is a 'Direction OUT' pin. This may seem confusing but the in and out labels for a parallel port pin indicates the physical way the pin works not how it is handled in HAL.
de: Im obigen Beispiel ist 'home-x' der Signalname, 'joint.0.home-sw-in' ist ein 'Direction IN'-Pin, '<=' ist der optionale Richtungspfeil, und 'parport.0.pin-11-in' ist ein 'Direction OUT'-Pin. Dies mag verwirrend erscheinen, aber die Bezeichnungen "in" und "out" für einen Parallelport-Pin geben die physikalische Funktionsweise des Pins an, nicht wie er in HAL gehandhabt wird.

note: type: Plain text
en: A pin can be connected to a signal if it obeys the following rules:
de: Ein Pin kann mit einem Signal verbunden werden, wenn er die folgenden Regeln beachtet:

note: type: Plain text
en: An IN pin can always be connected to a signal.
de: Ein IN-Pin kann immer mit einem Signal verbunden werden.

note: type: Plain text
en: An IO pin can be connected unless there's an OUT pin on the signal.
de: Ein IO-Pin kann angeschlossen werden, sofern kein ein OUT-Pin am Signal anliegt.

note: type: Plain text
en: An OUT pin can be connected only if there are no other OUT or IO pins on the signal.
de: Ein OUT-Pin kann nur angeschlossen werden, wenn es keine anderen OUT- oder IO-Pins am Signal gibt.

note: type: Plain text
en: The same 'signal-name' can be used in multiple net commands to connect additional pins, as long as the rules above are obeyed.
de: Derselbe 'Signal-Name' kann in mehreren Netzbefehlen verwendet werden, um zusätzliche Pins zu verbinden, solange die obigen Regeln beachtet werden.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Signal Direction
de: Signalrichtung (engl. signal direction)

note: type: Plain text
en: This example shows the signal xStep with the source being stepgen.0.out and with two readers, parport.0.pin-02-out and parport.0.pin-08-out. Basically the value of stepgen.0.out is sent to the signal xStep and that value is then sent to parport.0.pin-02-out and parport.0.pin-08-out.
de: Dieses Beispiel zeigt das Signal xStep mit der Quelle stepgen.0.out und mit zwei Lesern, parport.0.pin-02-out und parport.0.pin-08-out. Im Grunde genommen wird der Wert von stepgen.0.out an das Signal xStep gesendet und dieser Wert wird dann an parport.0.pin-02-out und parport.0.pin-08-out gesendet.

note: type: delimited block -
en: #   signal    source            destination          destination
    net xStep stepgen.0.out => parport.0.pin-02-out parport.0.pin-08-out
de: #   Signal    Ursprung           Destination          Destination
    net xStep stepgen.0.out => parport.0.pin-02-out parport.0.pin-08-out

note: type: Plain text
en: Since the signal xStep contains the value of stepgen.0.out (the source) you can use the same signal again to send the value to another reader. To do this just use the signal with the readers on another line.
de: Da das Signal xStep den Wert von stepgen.0.out (die Quelle/Ursprung (engl. source) ) enthält, können Sie dasselbe Signal erneut verwenden, um den Wert an einen anderen Leser zu senden. Verwenden Sie dazu einfach das Signal mit den Lesern in einer anderen Zeile.

note: type: delimited block -
en: #   signal       destination2
    net xStep => parport.0.pin-06-out
de: #   Signal       Destination2
    net xStep => parport.0.pin-06-out

note: type: Block title
en: I/O pins
de: E/A-Pins (engl. I/O Pins)

note: type: Plain text
en: An I/O pin like encoder.N.index-enable can be read or set as allowed by the component.
de: Ein E/A-Pin wie ein Encoder. N.index-enable kann gelesen oder so eingestellt werden, wie es die Komponente zulässt.

note: type: Plain text
en: The command 'setp' sets the value of a pin or parameter. The valid values will depend on the type of the pin or parameter. It is an error if the data types do not match.
de: Der Befehl 'setp' setzt den Wert eines Pins oder Parameters. Die gültigen Werte hängen vom Typ des Pins oder Parameters ab. Es ist ein Fehler, wenn die Datentypen nicht übereinstimmen.

note: type: Plain text
en: Some components have parameters that need to be set before use.  Parameters can be set before use or while running as needed. You cannot use setp on a pin that is connected to a signal.
de: Einige Komponenten haben Parameter, die vor der Verwendung eingestellt werden müssen.  Die Parameter können je nach Bedarf vor der Verwendung oder während der Ausführung gesetzt werden. Sie können setp nicht auf einen Pin anwenden, der mit einem Signal verbunden ist.

note: type: Block title
en: setp Syntax and Example
de: setp Syntax und Beispiel

note: type: Plain text
en: The command 'sets' sets the value of a signal.
de: Der Befehl 'sets' setzt den Wert eines Signals.

note: type: Block title
en: sets Syntax and Example:
de: setzt Syntax und Beispiel:

note: type: Plain text
en: The signal-name does not exist
de: Der Signal-Name existiert nicht

note: type: Plain text
en: If the signal already has a writer
de: Wenn das Signal bereits einen Schreiber (engl. writer) hat

note: type: Plain text
en: If value is not the correct type for the signal
de: Wenn Wert nicht der richtige Typ für das Signal ist

note: type: Plain text
en: The command 'unlinkp' unlinks a pin from the connected signal. If no signal was connected to the pin prior running the command, nothing happens. The 'unlinkp' command is useful for trouble shooting.
de: Der Befehl 'unlinkp' löst die Verknüpfung eines Pins vom angeschlossenen Signal. Wenn vor dem Ausführen des Befehls kein Signal mit dem Pin verbunden war, passiert nichts. Der Befehl 'unlinkp' ist nützlich für die Fehlerbehebung.

note: type: Block title
en: unlinkp syntax and Example
de: unlinkp Syntax und Beispiel

note: type: Title ===
en: Obsolete Commands
de: Veraltete Befehle

note: type: Plain text
en: The following commands are depreciated and may be removed from future versions. Any new configuration should use the <<sub:hal-net,'net'>> command.  These commands are included so older configurations will still work.
de: Die folgenden Befehle sind veraltet und werden möglicherweise aus zukünftigen Versionen entfernt. Jede neue Konfiguration sollte den Befehl <<sub:hal-net,'net'>> verwenden.  Diese Befehle sind enthalten, damit ältere Konfigurationen noch funktionieren.

note: type: Plain text
en: The command 'linksp' creates a 'connection' between a signal and one pin.
de: Der Befehl 'linksp' stellt eine 'Verbindung' (engl. connection) zwischen einem Signal und einem Pin her.

note: type: Block title
en: linksp Syntax and Example
de: linksp Syntax und Beispiel

note: type: Plain text
en: The 'linksp' command has been superseded by the 'net' command.
de: Der Befehl 'linksp' wurde durch den Befehl 'net' abgelöst.

note: type: Plain text
en: The command 'linkps' creates a 'connection' between one pin and one signal. It is the same as linksp but the arguments are reversed.
de: Der Befehl 'linkps' stellt eine 'Verbindung' zwischen einem Pin und einem Signal her. Er ist der gleiche wie linksp, aber die Argumente sind vertauscht.

note: type: Block title
en: linkps Syntax and Example
de: linkps Syntax und Beispiel

note: type: Plain text
en: The 'linkps' command has been superseded by the 'net' command.
de: Der Befehl 'linkps' wurde durch den Befehl 'net' abgelöst.

note: type: Plain text
en: the command 'newsig' creates a new HAL signal by the name <signame> and the data type of <type>. Type must be 'bit', 's32', 'u32' or 'float'. Error if <signame> all ready exists.
de: der Befehl 'newsig' erzeugt ein neues HAL-Signal mit dem Namen <signame> und dem Datentyp <type>. Der Typ muss 'bit', 's32', 'u32' oder 'float' sein. Fehler, wenn <signame> bereits existiert.

note: type: Block title
en: newsig Syntax and Example
de: newsig Syntax und Beispiel

note: type: Plain text
en: More information can be found in the HAL manual or the man pages for `halrun`.
de: Weitere Informationen finden Sie im HAL-Handbuch oder in den Man Pages für `halrun`.

note: type: Plain text
en: A bit value is an on or off.
de: Ein Bitwert ist ein Ein oder Aus.

note: type: Plain text
en: bit values = true or 1 and false or 0 (True, TRUE, true are all valid)
de: bit values = true oder 1 und false oder 0 (True, TRUE, oder true sind alles gültige Werte)

note: type: Plain text
en: A 'float' is a floating point number. In other words the decimal point can move as needed.
de: Ein "Float" ist eine Gleitkommazahl. Das heißt, der Dezimalpunkt kann nach Bedarf verschoben werden.

note: type: Plain text
en: float values = a 64 bit floating point value, with approximately 53 bits of resolution and over 2^10^ (~ 1000) bits of dynamic range.
de: Float-Werte = ein 64-Bit-Fließkommawert mit einer Auflösung von etwa 53 Bit und einem Dynamikbereich von über 2^10^ (etwa 1000) Bit.

note: type: Plain text
en: For more information on floating point numbers see:
de: Weitere Informationen über Gleitkommazahlen finden Sie unter:

note: type: Plain text
en: An 's32' number is a whole number that can have a negative or positive value.
de: Eine 's32'-Zahl ist eine ganze Zahl, die einen negativen oder positiven Wert haben kann.

note: type: Plain text
en: s32 values = integer numbers from -2147483648 to 2147483647
de: s32-Werte = ganzzahlige Werte von -2147483648 bis 2147483647

note: type: Plain text
en: A 'u32' number is a whole number that is positive only.
de: Eine "u32"-Zahl ist eine ganze Zahl, die nur positiv ist.

note: type: Plain text
en: u32 values = integer numbers from 0 to 4294967295
de: u32-Werte = Ganzzahlige Zahlen von 0 bis 4294967295

note: type: Plain text
en: If you used the Stepper Config Wizard to generate your config you will have up to three HAL files in your config directory.
de: Wenn Sie den Stepper Config Wizard verwendet haben, um Ihre Konfiguration zu erstellen, werden Sie bis zu drei HAL-Dateien in Ihrem Konfigurationsverzeichnis haben.

note: type: Plain text
en: 'my-mill.hal' (if your config is named 'my-mill') This file is loaded first and should not be changed if you used the Stepper Config Wizard.
de: 'my-mill.hal' (wenn Ihre Konfiguration 'my-mill' heißt) Diese Datei wird zuerst geladen und sollte nicht geändert werden, wenn Sie den Stepper-Konfigurationsassistenten verwendet haben.

note: type: Plain text
en: 'custom.hal' This file is loaded next and before the GUI loads. This is where you put your custom HAL commands that you want loaded before the GUI is loaded.
de: 'custom.hal' Diese Datei wird als nächstes und vor dem Laden der grafischen Benutzeroberfläche geladen. Hier legen Sie Ihre benutzerdefinierten HAL-Befehle ab, die vor dem Laden der grafischen Benutzeroberfläche geladen werden sollen.

note: type: Plain text
en: 'custom_postgui.hal' This file is loaded after the GUI loads. This is where you put your custom HAL commands that you want loaded after the GUI is loaded. Any HAL commands that use PyVCP widgets need to be placed here.
de: 'custom_postgui.hal' Diese Datei wird geladen, nachdem die grafische Benutzeroberfläche geladen wurde. Hier werden die benutzerdefinierten HAL-Befehle abgelegt, die nach dem Laden der grafischen Benutzeroberfläche geladen werden sollen. Alle HAL-Befehle, die PyVCP-Widgets verwenden, müssen hier abgelegt werden.

note: type: Plain text
en: Two parameters are automatically added to each HAL component when it is created. These parameters allow you to scope the execution time of a component.
de: Zwei Parameter werden automatisch zu jeder HAL-Komponente hinzugefügt, wenn sie erstellt wird. Mit diesen Parametern können Sie die Ausführungszeit einer Komponente festlegen.

note: type: Plain text
en: Time is the number of CPU cycles it took to execute the function.
de: Zeit ist die Anzahl der CPU-Zyklen, die für die Ausführung der Funktion benötigt wurden.

note: type: Plain text
en: Tmax is the maximum number of CPU cycles it took to execute the function.
de: Tmax ist die maximale Anzahl von CPU-Zyklen, die zur Ausführung der Funktion benötigt wurden.

note: type: Plain text
en: `tmax` is a read/write parameter so the user can set it to 0 to get rid of the first time initialization on the function's execution time.
de: tmax" ist ein Lese-/Schreibparameter, so dass der Benutzer ihn auf 0 setzen kann, um die erste Initialisierung der Ausführungszeit der Funktion loszuwerden.

note: type: Title ==
en: Basic Logic Components(((HAL Logic Components)))
de: Grundlegende logische Komponenten(((HAL Logic Components)))

note: type: Plain text
en: HAL contains several real time logic components. Logic components follow a 'Truth Table' that states what the output is for any given input. Typically these are bit manipulators and follow electrical logic gate truth tables.
de: HAL enthält mehrere Echtzeit-Logikkomponenten. Logikkomponenten folgen einer "Wahrheitstabelle", die angibt, was die Ausgabe für eine bestimmte Eingabe ist. In der Regel handelt es sich dabei um Bitmanipulatoren, die elektrischen Logikgatter-Wahrheitstabellen folgen.

note: type: Plain text
en: The 'and2' component is a two input 'and' gate. The truth table below shows the output based on each combination of input.
de: Die Komponente "and2" ist ein "und"-Gatter mit zwei Eingängen. Die folgende Wahrheitstabelle zeigt die Ausgabe für jede Kombination von Eingängen.

note: type: Block title
en: and2 Truth Table
de: und2 Wahrheitstabelle

note: type: Plain text
en: The 'not' component is a bit inverter.
de: Die Komponente "not" ist ein Bit-Inverter.

note: type: Block title
en: not Truth Table
de: not Wahrheitstabelle

note: type: Plain text
en: The 'or2' component is a two input OR gate.
de: Die 'or2'-Komponente ist ein ODER-Gatter mit zwei Eingängen.

note: type: Block title
en: or2 Truth Table
de: or2 Wahrheitstabelle

note: type: Plain text
en: The 'xor2' component is a two input XOR (exclusive OR) gate.
de: Die 'xor2'-Komponente ist ein XOR-Gatter (exklusives ODER) mit zwei Eingängen.

note: type: Block title
en: xor2 Truth Table
de: xor2-Wahrheitstabelle

note: type: Title ==
en: Logic Examples(((HAL Logic Examples)))
de: Logikbeispiele(((HAL-Logikbeispiele)))

note: type: Block title
en: `and2` example connecting two inputs to one output
de: 'and2'-Beispiel für das Anschließen von zwei Eingängen an einen Ausgang

note: type: Plain text
en: In the above example one copy of `and2` is loaded into real time space and added to the servo thread. Next `pin-11` of the parallel port is connected to the `in0` bit of the and gate. Next `pin-12` is connected to the `in1` bit of the and gate. Last we connect the `and2` out bit to the parallel port `pin-14`. So following the truth table for `and2` if pin 11 and pin 12 are on then the output pin 14 will be on.
de: In dem obigen Beispiel wird eine Kopie von "and2" in den Echtzeitbereich geladen und dem Servo-Thread hinzugefügt. Als nächstes wird `Pin-11` des parallelen Anschlusses mit dem `in0`-Bit des and-Gatters verbunden. Als nächstes wird `Pin-12` mit dem `in1`-Bit des and-Gatters verbunden. Zuletzt verbinden wir das Ausgangsbit "and2" mit dem parallelen Anschluss "Pin-14". Wenn also nach der Wahrheitstabelle für "and2" Pin 11 und Pin 12 eingeschaltet sind, dann ist der Ausgangs-Pin 14 eingeschaltet.

note: type: Title ==
en: Conversion Components(((HAL Conversion Components)))
de: Konvertierungskomponenten(((HAL-Konvertierungskomponenten)))

note: type: Plain text
en: The weighted sum converts a group of bits into an integer. The conversion is the sum of the 'weights' of the bits present plus any offset. It's similar to 'binary coded decimal' but with more options. The 'hold' bit interrupts the input processing, so that the 'sum' value no longer changes.
de: Die weighted_sum (engl. für gewichtete Summe) wandelt eine Gruppe von Bits in eine ganze Zahl um. Die Umwandlung ist die Summe der "Gewichte" der vorhandenen Bits plus eines eventuellen Offsets. Sie ähnelt der 'binär kodierten Dezimalzahl', hat aber mehr Möglichkeiten. Das 'Hold'-Bit unterbricht die Eingabeverarbeitung, so dass sich der 'Summen'-Wert nicht mehr ändert.

note: type: Block title
en: weighted_sum component loading syntax
de: Syntax für das Laden der Komponente weighted_sum

note: type: Plain text
en: Creates groups of `weighted_sum`s, each with the given number of input bits (size).
de: Erzeugt Gruppen von `weighted_sum`s, jede mit der angegebenen Anzahl von Eingabebits (Größe).

note: type: Plain text
en: To update the `weighted_sum`, the `process_wsums` must be attached to a thread.
de: Um die "weighted_sum" zu aktualisieren, muss der "process_wsums" an einen Thread angehängt werden.

note: type: Plain text
en: In the following example, a copy of the AXIS HAL configuration window, bits '0' and '2' are TRUE, they have no offset. The weight ('weight') of bit 0 is 1, that of bit 2 is 4, so the sum is 5.
de: Im folgenden Beispiel, einer Kopie des AXIS HAL Konfigurationsfensters, sind die Bits '0' und '2' TRUE, sie haben keinen Offset. Das Gewicht ("weight") von Bit 0 ist 1, das von Bit 2 ist 4, die Summe ist also 5.

note: type: Block title
en: `weighted_sum` Example
de: Beispiel zu `weighted_sum`

note: type: delimited block -
en: Component Pins:
    Owner   Type  Dir         Value  Name
        10  bit   In           TRUE  wsum.0.bit.0.in
        10  s32   I/O             1  wsum.0.bit.0.weight
        10  bit   In          FALSE  wsum.0.bit.1.in
        10  s32   I/O             2  wsum.0.bit.1.weight
        10  bit   In           TRUE  wsum.0.bit.2.in
        10  s32   I/O             4  wsum.0.bit.2.weight
        10  bit   In          FALSE  wsum.0.bit.3.in
        10  s32   I/O             8  wsum.0.bit.3.weight
        10  bit   In          FALSE  wsum.0.hold
        10  s32   I/O             0  wsum.0.offset
        10  s32   Out             5  wsum.0.sum
de: Komonenten-Pins:
    Owner   Typ   Richtung  Wert   Name
        10  bit   In           TRUE  wsum.0.bit.0.in
        10  s32   I/O             1  wsum.0.bit.0.weight
        10  bit   In          FALSE  wsum.0.bit.1.in
        10  s32   I/O             2  wsum.0.bit.1.weight
        10  bit   In           TRUE  wsum.0.bit.2.in
        10  s32   I/O             4  wsum.0.bit.2.weight
        10  bit   In          FALSE  wsum.0.bit.3.in
        10  s32   I/O             8  wsum.0.bit.3.weight
        10  bit   In          FALSE  wsum.0.hold
        10  s32   I/O             0  wsum.0.offset
        10  s32   Out             5  wsum.0.sum

note: type: Title =
en: Canonical Device Interfaces(((HAL Canonical Device Interfaces)))
de: Kanonische Geräteschnittstellen (engl. canonical device interfaces)(((HAL Canonical Device Interfaces, HAL Kanonische Geräteschnittstellen)))

note: type: Plain text
en: The following sections show the pins, parameters, and functions that are supplied by "canonical devices". All HAL device drivers should supply the same pins and parameters, and implement the same behavior.
de: Die folgenden Abschnitte zeigen die Pins, Parameter und Funktionen, die von "kanonischen Geräten" bereitgestellt werden. Alle HAL-Gerätetreiber sollten die gleichen Pins und Parameter bereitstellen und das gleiche Verhalten implementieren.

note: type: Plain text
en: Note that only the `<io-type>` and `<specific-name>` fields are defined for a canonical device. The `<device-name>`, `<device-num>`, and `<chan-num>` fields are set based on the characteristics of the real device.
de: Beachten Sie, dass nur die Felder `<io-type>` und `<specific-name>` für ein kanonisches Gerät definiert sind. Die Felder `<device-name>`, `<device-num>` und `<chan-num>` werden auf der Grundlage der Eigenschaften des realen Geräts festgelegt.

note: type: Title ==
en: Digital Input(((HAL Digital Input)))
de: Digitaler Eingang(((HAL Digitaler Eingang)))

note: type: Plain text
en: The canonical digital input (I/O type field: `digin`) is quite simple.
de: Der kanonische Digitaleingang (E/A-Typfeld: "digin") ist recht einfach.

note: type: Plain text
en: State of the hardware input.
de: Zustand des Hardware-Eingangs.

note: type: Plain text
en: Inverted state of the input.
de: Invertierter Zustand des Eingangs.

note: type: Title ===
en: Parameters(((HAL Digital Input Parameters)))
de: Parameter(((HAL Digital Input Parameter)))

note: type: Plain text
en: None
de: Keine

note: type: Title ===
en: Functions(((HAL Digital Input Functions)))
de: Funktionen(((HAL Digital Input Functionen)))

note: type: Plain text
en: Read hardware and set `in` and `in-not` HAL pins.
de: Lesen der Hardware und Setzen der HAL-Pins "in" und "in-not".

note: type: Title ==
en: Digital Output(((HAL Digital Output)))
de: Digitaler Ausgang(((HAL Digital Output)))

note: type: Plain text
en: The canonical digital output (I/O type field: `digout`) is also very simple.
de: Der kanonische digitale Ausgang (engl. output) (E/A-Typfeld: `digout`) ist ebenfalls sehr einfach.

note: type: Plain text
en: Value to be written (possibly inverted) to the hardware output.
de: Wert, der (eventuell invertiert) an den Hardware-Ausgang geschrieben werden soll.

note: type: Title ===
en: Parameters(((HAL Digital Output Parameters)))
de: Parameter(((HAL Digital Output Parameter))

note: type: Plain text
en: If TRUE, *out* is inverted before writing to the hardware.
de: Wenn TRUE, wird *out* vor dem Schreiben in die Hardware invertiert.

note: type: Title ===
en: Functions(((HAL Digital Output Functions)))
de: Funktionen(((HAL Digital Output Funktionen)))

note: type: Plain text
en: Read *out* and *invert*, and set hardware output accordingly.
de: Lesen Sie *out* und *invert* und stellen Sie die Hardwareausgabe entsprechend ein.

note: type: Title ==
en: Analog Input(((HAL Analog Input)))
de: Analoger Eingang(((HAL-Analogeingang)))

note: type: Plain text
en: The canonical analog input (I/O type: `adcin`). This is expected to be used for analog to digital converters, which convert e.g. voltage to a continuous range of values.
de: Der kanonische Analogeingang (E/A-Typ: "adcin"). Dieser wird voraussichtlich für Analog-Digital-Wandler verwendet, die z. B. Spannung in einen kontinuierlichen Wertebereich umwandeln.

note: type: Title ===
en: Pins(((HAL Analog Input Pins)))
de: Pins(((HAL Analog Eingabe (engl. input) Pins)))

note: type: Labeled list
en: (float) *value*
de: (float) *Wert*

note: type: Plain text
en: The hardware reading, scaled according to the *scale* and *offset* parameters.
    *value* = ((input reading, in hardware-dependent units) * *scale*) - *offset*
de: Der Hardware-Messwert, skaliert gemäß den Parametern *Skala* und *Offset*.
    *Wert* = ((Eingangsmesswert, in hardwareabhängigen Einheiten) * *Skala*) - *Offset*

note: type: Title ===
en: Parameters(((HAL Analog Input Parameters)))
de: Parameter(((HAL Analogeingangsparameter)))

note: type: Labeled list
en: (float) *scale*
de: (Float) *Skala* (engl. scale)

note: type: Plain text
en: The input voltage (or current) will be multiplied by *scale* before being output to *value*.
de: Die Eingangsspannung (oder der Strom) wird mit *Skala* multipliziert, bevor sie als *Wert* ausgegeben wird.

note: type: Labeled list
en: (float) *offset*
de: (float) *Offset*

note: type: Plain text
en: This will be subtracted from the hardware input voltage (or current) after the scale multiplier has been applied.
de: Dieser Wert wird nach Anwendung des Skalenmultiplikators von der Hardware-Eingangsspannung (oder dem Strom) subtrahiert.

note: type: Plain text
en: The value of one least significant bit (LSB).  This is effectively the granularity of the input reading.
de: Der Wert eines niederwertigen Bits (LSB).  Dies ist effektiv die Granularität des Eingangswertes.

note: type: Plain text
en: The value present on the input when 0 volts is applied to the input pin(s).
de: Der Wert, der am Eingang anliegt, wenn 0 Volt an den Eingangspin(s) angelegt wird.

note: type: Title ===
en: Functions(((HAL Analog Input Functions)))
de: Funktionen(((HAL Analog Input Functions)))

note: type: Plain text
en: Read the values of this analog input channel.  This may be used for individual channel reads, or it may cause all channels to be read
de: Lesen Sie die Werte dieses analogen Eingangskanals.  Dies kann zum Lesen einzelner Kanäle verwendet werden, oder es können alle Kanäle gelesen werden

note: type: Title ==
en: Analog Output(((HAL Analog Output)))
de: Analogausgang(((HAL Analogausgang)))

note: type: Plain text
en: The canonical analog output (I/O Type: *adcout*). This is intended for any kind of hardware that can output a more-or-less continuous range of values. Examples are digital to analog converters or PWM generators.
de: Der kanonische Analogausgang (E/A-Typ: *adcout*). Dieser ist für jede Art von Hardware gedacht, die einen mehr oder weniger kontinuierlichen Wertebereich ausgeben kann. Beispiele sind Digital-Analog-Wandler oder PWM-Generatoren.

note: type: Plain text
en: The value to be written. The actual value output to the hardware will depend on the scale and offset parameters.
de: Der zu schreibende Wert. Der tatsächliche Wert, der an die Hardware ausgegeben wird, hängt von den Parametern Skala und Offset ab.

note: type: Labeled list
en: (bit) *enable*
de: (bit) *aktivieren* (engl. enable)

note: type: Plain text
en: If false, then output 0 to the hardware, regardless of the *value* pin.
de: Wenn false, dann wird 0 an die Hardware ausgegeben, unabhängig vom *value* Pin.

note: type: Title ===
en: Parameters(((HAL Analog Output Parameters)))
de: Parameter(HAL Analog Output-Parameter)

note: type: Plain text
en: This will be added to the *value* before the hardware is updated.
de: Dies wird zu dem *Wert* (engl. value) hinzugefügt, bevor die Hardware aktualisiert wird.

note: type: Plain text
en: This should be set so that an input of 1 on the *value* pin will cause the analog output pin to read 1 volt.
de: Dies sollte so eingestellt werden, dass eine Eingabe von 1 am *value*-Pin dazu führt, dass der Analogausgangspin 1 Volt anzeigt.

note: type: Plain text
en: When calculating the value to output to the hardware, if *value* + *offset* is greater than *high_limit*, then *high_limit* will be used instead.
de: Wenn bei der Berechnung des an die Hardware auszugebenden Wertes *value* + *offset* größer ist als *high_limit*, wird stattdessen *high_limit* verwendet.

note: type: Plain text
en: When calculating the value to output to the hardware, if *value* + *offset* is less than *low_limit*, then *low_limit* will be used instead.
de: Wenn bei der Berechnung des an die Hardware auszugebenden Wertes *value* + *offset* kleiner als *low_limit* ist, wird stattdessen *low_limit* verwendet.

note: type: Plain text
en: The value of one least significant bit (LSB), in volts (or mA, for current outputs).
de: Der Wert des niedrigstwertigen Bits (LSB) in Volt (oder mA bei Stromausgängen).

note: type: Plain text
en: The actual voltage (or current)  that will be output if 0 is written to the hardware.
de: Die tatsächliche Spannung (oder Stromstärke), die ausgegeben wird, wenn 0 in die Hardware geschrieben wird.

note: type: Title ===
en: Functions(((HAL Analog Output Functions)))
de: Funktionen(((HAL Analog Output Funktionen)))

note: type: Plain text
en: This causes the calculated value to be output to the hardware. If enable is false, then the output will be 0, regardless of *value*, *scale*, and *offset*.  The meaning of "0" is dependent on the hardware. For example, a bipolar 12-bit A/D may need to write 0x1FF (mid scale) to the D/A get 0 volts from the hardware pin. If enable is true, read scale, offset and value and output to the adc (*scale* * *value*) + *offset*. If enable is false, then output 0.
de: Dies bewirkt, dass der berechnete Wert an die Hardware ausgegeben wird. Wenn enable false ist, wird 0 ausgegeben, unabhängig von *value*, *scale* und *offset*.  Die Bedeutung von "0" ist von der Hardware abhängig. Bei einem bipolaren 12-Bit-A/D kann es z. B. erforderlich sein, 0x1FF (mittlere Skala) an den D/A zu schreiben, um 0 Volt vom Hardware-Pin zu erhalten. Wenn enable true ist, werden Skala, Offset und Wert gelesen und an den ADC ausgegeben (*scale* (Skala) * *value* (Wert)) + *offset*. Wenn enable false ist, dann wird 0 ausgegeben.

note: type: Title =
en: HAL Component Generator(((HAL Component Generator)))
de: HAL-Komponentengenerator(((HAL-Komponentengenerator)))

note: type: Plain text
en: Writing a HAL component can be a tedious process, most of it in setup calls to 'rtapi_' and 'hal_' functions and associated error checking.  'halcompile' will write all this code for you, automatically.
de: Das Schreiben einer HAL-Komponente kann ein langwieriger Prozess sein, der zum größten Teil aus Aufrufen der Funktionen 'rtapi_' und 'hal_' und der damit verbundenen Fehlerprüfung besteht. 'halcompile' schreibt all diesen Code automatisch für Sie.

note: type: Plain text
en: Compiling a HAL component is also much easier when using 'halcompile', whether the component is part of the LinuxCNC source tree, or outside it.
de: Das Kompilieren einer HAL-Komponente ist auch viel einfacher, wenn man 'halcompile' benutzt, egal ob die Komponente Teil des LinuxCNC-Quellbaums ist oder nicht.

note: type: Plain text
en: For instance, when coded in C, a simple component such as "ddt" is around 80 lines of code. The equivalent component is very short when written using the 'halcompile' preprocessor:
de: Eine einfache Komponente wie "ddt", die in C kodiert ist, umfasst beispielsweise etwa 80 Zeilen Code. Die entsprechende Komponente ist sehr kurz, wenn sie mit dem Präprozessor "halcompile" geschrieben wird:

note: type: Block title
en: Simple Component Example
de: Beispiel für eine einfache Komponente

note: type: delimited block -
en: component ddt "Compute the derivative of the input function";
    pin in float in;
    pin out float out;
    variable double old;
    function _;
    license "GPL"; // indicates GPL v2 or later
    ;;
    float tmp = in;
    out = (tmp - old) / fperiod;
    old = tmp;
de: component ddt "Berechne die Ableitung der Eingangsfunktion";
    pin in float in;
    pin out float out;
    variable double old;
    function _;
    license "GPL"; // gibt GPL v2 oder höher an
    ;;
    float tmp = in;
    out = (tmp - old) / fperiod;
    old = tmp;

note: type: Plain text
en: To compile a component, if a packaged version of LinuxCNC is used, development packages have to be installed using either Synaptic from the main menu 'System -> Administration -> Synaptic package manager' or running one of the following commands in a terminal window:
de: Um eine Komponente zu kompilieren, wenn eine gepackte Version von LinuxCNC verwendet wird, müssen Entwicklungspakete installiert werden, indem man entweder Synaptic aus dem Hauptmenü 'System -> Administration -> Synaptic package manager' benutzt oder einen der folgenden Befehle in einem Terminalfenster ausführt:

note: type: Block title
en: Development packages installation
de: Installation von Entwicklungspaketen

note: type: delimited block -
en: sudo apt install linuxcnc-dev
    # or
    sudo apt install linuxcnc-uspace-dev
de: sudo apt install linuxcnc-dev
    # oder
    sudo apt install linuxcnc-uspace-dev

note: type: Plain text
en: Another method is using the Synaptic package manager, from the Applications menu, to install the `linuxcnc-dev` or `linuxcnc-uspace-dev` packages.
de: Eine andere Methode ist die Verwendung des Synaptic-Paketmanagers aus dem Anwendungsmenü, um die Pakete `linuxcnc-dev` oder `linuxcnc-uspace-dev` zu installieren.

note: type: Title ==
en: Using a Component
de: Verwendung einer Komponente

note: type: Plain text
en: Components need to be loaded and added to a thread before it can be used.
de: Komponenten müssen geladen und einem Thread hinzugefügt werden, bevor er verwendet werden kann.

note: type: Plain text
en: More information on 'loadrt' and 'addf' can be found in the <<cha:basic-hal-reference,HAL Basics>>.
de: More information on 'loadrt' and 'addf' can be found in the <<cha:basic-hal-reference,HAL Grundlagen>>.

note: type: Plain text
en: To test your component you can follow the examples in the <<cha:hal-tutorial,HAL Tutorial>>.
de: Um Ihre Komponente zu testen, können Sie den Beispielen im <<cha:hal-tutorial,HAL Tutorial>> folgen.

note: type: Title ==
en: Definitions
de: Definitionen

note: type: Plain text
en: 'component' - A component is a single real-time module, which is loaded with 'halcmd loadrt'. One '.comp' file specifies one component. The component name and file name must match.
de: 'component' - Eine Komponente ist ein einzelnes Echtzeitmodul, das mit 'halcmd loadrt' geladen wird. Eine '.comp'-Datei gibt eine Komponente an. Der Komponentenname und der Dateiname müssen übereinstimmen.

note: type: Plain text
en: 'instance' - A component can have zero or more instances. Each instance of a component is created equal (they all have the same pins, parameters, functions, and data) but behave independently when their pins, parameters, and data have different values.
de: 'instance' – Eine Komponente kann null oder mehr Instanzen haben. Jede Instanz einer Komponente wird gleich erstellt (sie haben alle dieselben Pins, Parameter, Funktionen und Daten), verhalten sich jedoch unabhängig, wenn ihre Pins, Parameter und Daten unterschiedliche Werte haben.

note: type: Plain text
en: 'singleton' - It is possible for a component to be a "singleton", in which case exactly one instance is created. It seldom makes sense to write a 'singleton' component, unless there can literally only be a single object of that kind in the system (for instance, a component whose purpose is to provide a pin with the current UNIX time, or a hardware driver for the internal PC speaker)
de: 'singleton' - Es ist möglich, dass eine Komponente ein "Singleton" ist, in diesem Fall wird genau eine Instanz erstellt. Es ist selten sinnvoll, eine "Singleton"-Komponente zu schreiben, es sei denn, es kann buchstäblich nur ein einziges Objekt dieser Art im System geben (z.B. eine Komponente, deren Zweck es ist, einen Pin mit der aktuellen UNIX-Zeit zu versehen, oder ein Hardware-Treiber für den internen PC-Lautsprecher)

note: type: Title ==
en: Instance creation
de: Erstellung einer Instanz

note: type: Plain text
en: For a singleton, the one instance is created when the component is loaded.
de: Bei einem Singleton wird eine Instanz erstellt, wenn die Komponente geladen wird.

note: type: Plain text
en: For a non-singleton, the 'count' module parameter determines how many numbered instances are created.  If 'count' is not specified, the 'names' module parameter determines how many named instances are created.  If neither 'count' nor 'names' is specified, a single numbered instance is created.
de: Bei einem Nicht-Singleton bestimmt der Modulparameter "count", wie viele nummerierte Instanzen erstellt werden.  Wenn 'count' nicht angegeben wird, bestimmt der Modulparameter 'names', wie viele benannte Instanzen erstellt werden.  Wenn weder 'count' noch 'names' angegeben werden, wird eine einzige nummerierte Instanz erstellt.

note: type: Title ==
en: Implicit Parameters
de: Implizite Parameter

note: type: Plain text
en: Functions are implicitly passed the 'period' parameter which is the time in nanoseconds of the last period to execute the component.  Functions which use floating-point can also refer to 'fperiod' which is the floating-point time in seconds, or (period*1e-9).  This can be useful in components that need the timing information.
de: Den Funktionen wird implizit der Parameter 'period' übergeben, der die Zeit in Nanosekunden der letzten Periode zur Ausführung der Komponente angibt.  Funktionen, die Fließkommazahlen verwenden, können sich auch auf den Parameter 'fperiod' beziehen, der die Fließkommazeit in Sekunden oder (period*1e-9) angibt.  Dies kann in Komponenten nützlich sein, die Zeitinformationen benötigen.

note: type: Plain text
en: A '.comp' file consists of a number of declarations, followed by ';;' on a line of its own, followed by C code implementing the module's functions.
de: Eine '.comp'-Datei besteht aus einer Reihe von Deklarationen, gefolgt von ';;' auf einer eigenen Zeile, gefolgt von C Code, der die Funktionen des Moduls implementiert.

note: type: Plain text
en: Declarations include:
de: Die Erklärungen umfassen:

note: type: Plain text
en: 'see_also DOC;'
de: see_also DOC;'

note: type: Plain text
en: Parentheses indicate optional items. A vertical bar indicates alternatives. Words in 'CAPITALS' indicate variable text, as follows:
de: Klammern kennzeichnen optionale Elemente. Ein senkrechter Strich kennzeichnet Alternativen. Wörter in "GROSSBUCHSTABEN" kennzeichnen variablen Text, wie folgt:

note: type: Plain text
en: 'NAME' - A standard C identifier
de: 'NAME' - Ein Standard-C-Bezeichner

note: type: Plain text
en: 'STARREDNAME' - A C identifier with zero or more * before it.  This syntax can be used to declare instance variables that are pointers.  Note that because of the grammar, there may not be whitespace between the * and the variable name.
de: STARREDNAME' - Ein C-Bezeichner mit null oder mehr * vor dem Namen.  Diese Syntax kann verwendet werden, um Instanzvariablen zu deklarieren, die Zeiger sind.  Beachten Sie, dass aufgrund der Grammatik kein Leerzeichen zwischen dem * und dem Variablennamen stehen darf.

note: type: Plain text
en: 'HALNAME' - An extended identifier.  When used to create a HAL identifier, any underscores are replaced with dashes, and any trailing dash or period is removed, so that "this_name_" will be turned into "this-name", and if the name is "_", then a trailing period is removed as well, so that "function _" gives a HAL function name like "component.<num>" instead of "component.<num>."
de: 'HALNAME' - Ein erweiterter Bezeichner.  Bei der Erstellung eines HAL-Bezeichners werden alle Unterstriche durch Bindestriche ersetzt, und alle nachgestellten Bindestriche oder Punkte werden entfernt, so dass "this_name_" in "dieser-Name" umgewandelt wird, und wenn der Name "_" ist, wird auch ein nachgestellter Punkt entfernt, so dass "function _" einen HAL-Funktionsnamen wie "component" ergibt. " <num>statt "Komponente. <num>."

note: type: Plain text
en: If present, the prefix 'hal_' is removed from the beginning of the component name when creating pins, parameters and functions.
de: Falls vorhanden, wird beim Erstellen von Pins, Parametern und Funktionen das Präfix 'hal_' am Anfang des Komponentennamens entfernt.

note: type: Plain text
en: In the HAL identifier for a pin or parameter, # denotes an array item, and must be used in conjunction with a '[SIZE]' declaration. The hash marks are replaced with a 0-padded number with the same length as the number of # characters.
de: Im HAL-Bezeichner für einen Pin oder Parameter kennzeichnet # ein Arrayelement und muss in Verbindung mit einer '[SIZE]'-Deklaration verwendet werden. Die Rautenzeichen werden durch eine 0-aufgefüllte Zahl ersetzt mit der gleichen Länge wie die Anzahl der #-Zeichen.

note: type: Plain text
en: When used to create a C identifier, the following changes are applied to the HALNAME:
de: Wenn Sie einen C-Bezeichner erstellen, werden die folgenden Änderungen am HALNAME vorgenommen:

note: type: Plain text
en: Any "#" characters, and any ".", "_" or "-" characters immediately before them, are removed.
de: Alle "#"-Zeichen und alle Zeichen ".", "_" oder "-", die unmittelbar davor stehen, werden entfernt.

note: type: Plain text
en: Any remaining "." and "-" characters are replaced with "_".
de: Alle verbleibenden "."- und "-"-Zeichen werden durch "_" ersetzt.

note: type: Plain text
en: Repeated "\_" characters are changed to a single "\_" character.
de: Wiederholte „\_“-Zeichen werden in ein einzelnes „\_“-Zeichen geändert.

note: type: Plain text
en: A trailing "_" is retained, so that HAL identifiers which would otherwise collide with reserved names or keywords (e.g., 'min') can be used.
de: Ein nachgestelltes "_" wird beibehalten, damit HAL-Kennungen, die sonst mit reservierten Namen oder Schlüsselwörtern (z. B. "min") kollidieren würden, verwendet werden können.

note: type: Table
en: C Identifier
de: C Bezeichner (engl. identifier)

note: type: Table
en: HAL Identifier
de: HAL-Bezeichner (engl. identifier)

note: type: Plain text
en: 'if CONDITION' - An expression involving the variable 'personality' which is nonzero when the pin or parameter should be created
de: 'if CONDITION' (engl. für Bedingung)- Ein Ausdruck mit der Variablen 'Persönlichkeit', die ungleich Null ist, wenn der Pin oder Parameter erstellt werden soll

note: type: Plain text
en: 'SIZE' - A number that gives the size of an array. The array items are numbered from 0 to 'SIZE'-1.
de: 'SIZE' - Eine Zahl, um die Größe eines Arrays anzugeben. Die Array-Elemente sind von 0 bis 'SIZE'-1 nummeriert.

note: type: Plain text
en: 'MAXSIZE : CONDSIZE' - A number that gives the maximum size of the array followed by an expression involving the variable 'personality' and which always evaluates to less than 'MAXSIZE'. When the array is created its size will be 'CONDSIZE'.
de: 'MAXSIZE : CONDSIZE' - Gibt die maximale Größe des Arrays an, gefolgt von einem Ausdruck, der die Variable 'personality' einbezieht und der immer weniger als 'MAXSIZE' ergibt. Wenn das Array erstellt wird, hat es die Größe 'CONDSIZE'.

note: type: Plain text
en: 'DOC' - A string that documents the item. String can be a C-style "double quoted" string, like:
de: 'DOC' - Eine Zeichenfolge, die das Element dokumentiert. Die Zeichenfolge kann eine "doppelt in Anführungszeichen" gesetzte Zeichenfolge im C-Stil sein, z. B.:

note: type: delimited block -
en: "Selects the desired edge: TRUE means falling, FALSE means rising"
de: "Wählt die gewünschte Flanke aus: TRUE bedeutet fallend, FALSE bedeutet steigend"

note: type: Plain text
en: or a Python-style "triple quoted" string, which may include embedded newlines and quote characters, such as:
de: oder eine "dreifach in Anführungszeichen" gesetzte Zeichenfolge im Python-Stil, die eingebettete Zeilenumbrüche und Anführungszeichen enthalten kann, z. B.:

note: type: delimited block -
en: """The effect of this parameter, also known as "the orb of zot",
    will require at least two paragraphs to explain.
de: """Die Wirkung dieses Parameters, auch bekannt als "der Orb von Zot",
    ist in mindestens zwei Absätzen zu erklären.

note: type: delimited block -
en: Hopefully these paragraphs have allowed you to understand "zot"
    better."""
de: Hoffentlich haben Ihnen diese Absätze geholfen, "zot" besser
    zu verstehen."""

note: type: Plain text
en: Or a string may be preceded by the literal character 'r', in which case the string is interpreted like a Python raw-string.
de: Einer Zeichenkette kann auch das Literalzeichen 'r' vorangestellt werden; in diesem Fall wird die Zeichenkette wie eine Python-Rohzeichenkette interpretiert.

note: type: Plain text
en: The documentation string is in "groff -man" format. For more information on this markup format, see 'groff_man(7)'. Remember that 'halcompile' interprets backslash escapes in strings, so for instance to set the italic font for the word 'example', write:
de: Die Dokumentationszeichenfolge hat das Format "groff -man". Für weitere Informationen über dieses Format siehe 'groff_man(7)'. Denken Sie daran, dass 'halcompile' Backslash-Escapes in Zeichenketten interpretiert, so dass Sie zum Beispiel die kursive Schriftart für das Wort 'Beispiel' einstellen können:

note: type: delimited block -
en: "\\fIexample\\fB"
de: "\\fIBeispiel\\fB"

note: type: Plain text
en: In this case, r-strings are particularly useful, because the backslashes in an r-string need not be doubled:
de: In diesem Fall sind r-Zeichenfolgen besonders nützlich, da die Backslashes in einer r-Zeichenfolge nicht verdoppelt werden müssen:

note: type: delimited block -
en: r"\fIexample\fB"
de: r"\fI-Beispiel\fB"

note: type: Plain text
en: 'TYPE' - One of the HAL types: 'bit', 'signed', 'unsigned', or 'float'. The old names 's32' and 'u32' may also be used, but 'signed' and 'unsigned' are preferred.
de: 'TYPE' - Einer der HAL-Typen: 'bit', 'signed', 'unsigned' oder 'float'. Die alten Namen "s32" und "u32" können ebenfalls verwendet werden, aber "signiert" und "unsigniert" werden bevorzugt.

note: type: Plain text
en: 'PINDIRECTION' - One of the following: 'in', 'out', or 'io'. A component sets a value for an 'out' pin, it reads a value from an 'in' pin, and it may read or set the value of an 'io' pin.
de: 'PINDIRECTION' - Eine der folgenden Optionen: 'in', 'out' oder 'io'. Eine Komponente legt einen Wert für einen Out-Pin fest, liest einen Wert von einem "In"-Pin und kann den Wert eines "io"-Pins lesen oder festlegen.

note: type: Plain text
en: 'PARAMDIRECTION' - One of the following: 'r' or 'rw'. A component sets a value for a 'r' parameter, and it may read or set the value of a 'rw' parameter.
de: 'PARAMDIRECTION' - Eine der folgenden: 'r' oder 'rw'. Eine Komponente legt einen Wert für einen 'r'-Parameter fest und kann den Wert eines 'rw'-Parameters lesen oder festlegen.

note: type: Plain text
en: 'STARTVALUE' - Specifies the initial value of a pin or parameter. If it is not specified, then the default is '0' or 'FALSE', depending on the type of the item.
de: 'STARTVALUE' - Gibt den Anfangswert eines Pins oder Parameters an. Wenn nicht anders angegeben, ist der Standardwert "0" oder "FALSE", abhängig vom Typ des Elements.

note: type: Plain text
en: 'HEADERFILE' - The name of a header file, either in double-quotes (`include "myfile.h";`) or in angle brackets (`include <systemfile.h>;`).  The header file will be included (using C's #include) at the top of the file, before pin and parameter declarations.
de: 'HEADERFILE' - Der Name einer Headerdatei, entweder in doppelten Anführungszeichen ('include "myfile.h";') oder in spitzen Klammern ('include <systemfile.h>;').  Die Header-Datei wird (unter Verwendung der #include von C) am Anfang der Datei vor Pin- und Parameterdeklarationen eingefügt.

note: type: Title ===
en: HAL functions
de: HAL-Funktionen

note: type: Plain text
en: 'fp' - Indicates that the function performs floating-point calculations.
de: 'fp' - Gibt an, dass die Funktion Gleitkommaberechnungen durchführt.

note: type: Plain text
en: 'nofp' - Indicates that it only performs integer calculations. If neither is specified, 'fp' is assumed. Neither 'halcompile' nor gcc can detect the use of floating-point calculations in functions that are tagged 'nofp', but use of such operations results in undefined behavior.
de: 'nofp' - Gibt an, dass nur Ganzzahlberechnungen durchgeführt werden. Wenn keines von beiden angegeben ist, wird 'fp' angenommen. Weder 'halcompile' noch gcc können die Verwendung von Fließkommaberechnungen in Funktionen, die mit 'nofp' gekennzeichnet sind, erkennen, aber die Verwendung solcher Operationen führt zu undefiniertem Verhalten.

note: type: Plain text
en: The currently defined options are:
de: Die derzeit definierten Optionen sind:

note: type: Plain text
en: 'option singleton yes' - (default: no)  Do not create a 'count' module parameter, and always create a single instance. With 'singleton', items are named 'component-name.item-name' and without 'singleton', items for numbered instances are named 'component-name.<num>.item-name'.
de: 'option singleton yes' - (Standardwert: no) Erzeugt keinen 'count'-Modulparameter und immer eine einzelne Instanz. Mit 'singleton' werden die Elemente 'Komponentenname.Elementname' genannt und ohne 'singleton' werden die Elemente für nummerierte Instanzen 'Komponentenname.<num>.Elementname' genannt.

note: type: Plain text
en: 'option default_count number' - (default: 1)  Normally, the module parameter 'count' defaults to 1. If specified, the 'count' will default to this value instead.
de: option default_count number' - (Standardwert: 1) Normalerweise ist der Modulparameter 'count' auf 1 voreingestellt. Ist er angegeben, so wird 'count' stattdessen auf diesen Wert gesetzt.

note: type: Plain text
en: 'option count_function yes' - (default: no)  Normally, the number of instances to create is specified in the module parameter 'count'; if 'count_function' is specified, the value returned by the function 'int get_count(void)' is used instead, and the 'count' module parameter is not defined.
de: 'option count_function yes' - (Voreinstellung: no) Normalerweise wird die Anzahl der zu erstellenden Instanzen im Modulparameter 'count' angegeben; wenn 'count_function' angegeben ist, wird stattdessen der von der Funktion 'int get_count(void)' zurückgegebene Wert verwendet, und der Modulparameter 'count' ist nicht definiert.

note: type: Plain text
en: 'option rtapi_app no' - (default: yes)  Normally, the functions `rtapi_app_main()` and `rtapi_app_exit()` are automatically defined. With 'option rtapi_app no', they are not, and must be provided in the C code.  Use the following prototypes:
de: 'option rtapi_app no' - (Voreinstellung: yes) Normalerweise werden die Funktionen `rtapi_app_main()` und `rtapi_app_exit()` automatisch definiert. Bei 'option rtapi_app no' sind sie es nicht und müssen im C-Code bereitgestellt werden. Verwenden Sie die folgenden Prototypen:

note: type: Plain text
en: When implementing your own `rtapi_app_main()`, call the function `int export(char *prefix, long extra_arg)` to register the pins, parameters, and functions for `prefix`.
de: Wenn Sie Ihre eigene `rtapi_app_main()` implementieren, rufen Sie die Funktion `int export(char *prefix, long extra_arg)` auf, um die Pins, Parameter und Funktionen für `prefix` zu registrieren.

note: type: Plain text
en: 'option data TYPE' - (default: none) *deprecated* If specified, each instance of the component will have an associated data block of type 'TYPE' (which can be a simple type like 'float' or the name of a type created with 'typedef').  In new components, 'variable' should be used instead.
de: 'option data TYPE' - (Voreinstellung: none) *veraltet* Wenn angegeben, hat jede Instanz der Komponente einen zugehörigen Datenblock des Typs 'TYPE' (der ein einfacher Typ wie 'float' oder der Name eines mit 'typedef' erstellten Typs sein kann).  In neuen Komponenten sollte stattdessen 'variable' verwendet werden.

note: type: Plain text
en: 'option extra_setup yes' - (default: no)  If specified, call the function defined by 'EXTRA_SETUP' for each instance. If using the automatically defined 'rtapi_app_main', 'extra_arg' is the number of this instance.
de: option extra_setup yes' - (Standard: no) Wenn angegeben, wird die durch 'EXTRA_SETUP' definierte Funktion für jede Instanz aufgerufen. Bei Verwendung der automatisch definierten 'rtapi_app_main' ist 'extra_arg' die Nummer dieser Instanz.

note: type: Plain text
en: 'option extra_cleanup yes' - (default: no)  If specified, call the function defined by 'EXTRA_CLEANUP' from the automatically defined 'rtapi_app_exit', or if an error is detected in the automatically defined 'rtapi_app_main'.
de: 'option extra_cleanup yes' - (Standard: nein) Falls angegeben, rufen Sie die durch 'EXTRA_CLEANUP' definierte Funktion aus dem automatisch definierten 'rtapi_app_exit' auf, oder wenn im automatisch definierten 'rtapi_app_main' ein Fehler erkannt wird.

note: type: Plain text
en: 'option userspace yes' - (default: no)  If specified, this file describes a userspace (i.e., non-realtime) component, rather than a regular (i.e., realtime) one. A userspace component may not have functions defined by the 'function' directive. Instead, after all the instances are constructed, the C function `void user_mainloop(void);` is called. When this function returns, the component exits.  Typically, 'user_mainloop()' will use 'FOR_ALL_INSTS()' to perform the update action for each instance, then sleep for a short time. Another common action in 'user_mainloop()' may be to call the event handler loop of a GUI toolkit.
de: 'option userspace yes' - (Voreinstellung: no) Wenn diese Datei angegeben wird, beschreibt sie eine Userspace-Komponente (d.h. eine Nicht-Echtzeit-Komponente) und keine reguläre Komponente (d.h. eine Echtzeit-Komponente). Eine Userspace-Komponente darf keine Funktionen haben, die durch die 'function'-Direktive definiert sind. Stattdessen wird, nachdem alle Instanzen konstruiert sind, die C-Funktion `void user_mainloop(void);` aufgerufen. Wenn diese Funktion zurückkehrt, wird die Komponente beendet.  Normalerweise verwendet 'user_mainloop()' 'FOR_ALL_INSTS()', um die Aktualisierungsaktion für jede Instanz durchzuführen, und schläft dann für eine kurze Zeit. Eine andere übliche Aktion in 'user_mainloop()' kann der Aufruf der Event-Handler-Schleife eines GUI-Toolkits sein.

note: type: Plain text
en: 'option userinit yes' - (default: no)  This option is ignored if the option 'userspace' (see above) is set to 'no'.  If 'userinit' is specified, the function 'userinit(argc,argv)' is called before 'rtapi_app_main()' (and thus before the call to 'hal_init()' ). This function may process the commandline arguments or take other actions. Its return type is 'void'; it may call 'exit()' if it wishes to terminate rather than create a HAL component (for instance, because the commandline arguments were invalid).
de: 'option userinit yes' - (Standard: no) Diese Option wird ignoriert, wenn die Option 'userspace' (siehe oben) auf 'no' gesetzt ist.  Wenn 'userinit' angegeben ist, wird die Funktion 'userinit(argc,argv)' vor 'rtapi_app_main()' (und damit vor dem Aufruf von 'hal_init()' ) aufgerufen. Diese Funktion kann die Kommandozeilenargumente verarbeiten oder andere Aktionen ausführen. Ihr Rückgabetyp ist 'void'; sie kann 'exit()' aufrufen, wenn sie beenden will, anstatt eine HAL-Komponente zu erstellen (z.B. weil die Kommandozeilenargumente ungültig waren).

note: type: Plain text
en: 'option extra_link_args "..."' - (default: "")  This option is ignored if the option 'userspace' (see above) is set to 'no'.  When linking a userspace component, the arguments given are inserted in the link line.  Note that because compilation takes place in a temporary directory, "-L." refers to the temporary directory and not the directory where the .comp source file resides.
de: 'option extra_link_args "..."' - (Standard: "") Diese Option wird ignoriert, wenn die Option 'userspace' (siehe oben) auf 'no' gesetzt ist.  Beim Linken einer Userspace-Komponente werden die angegebenen Argumente in die Linkzeile eingefügt.  Da die Kompilierung in einem temporären Verzeichnis stattfindet, bezieht sich "-L." auf das temporäre Verzeichnis und nicht auf das Verzeichnis, in dem sich die .comp-Quelldatei befindet.

note: type: Plain text
en: 'option extra_compile_args "..."' - (default: "")  This option is ignored if the option 'userspace' (see above) is set to 'no'.  When compiling a userspace component, the arguments given are inserted in the compiler command line.
de: 'option extra_compile_args "..."' - (Standard: "") Diese Option wird ignoriert, wenn die Option 'userspace' (siehe oben) auf 'no' gesetzt ist.  Beim Kompilieren einer Userspace-Komponente werden die angegebenen Argumente in die Befehlszeile des Compilers eingefügt.

note: type: Plain text
en: 'option homemod yes' - (default: no)  Module is a custom Homing module loaded using [EMCMOT]HOMEMOD=modulename
de: 'option homemod yes' - (Standard: no) Modul ist ein benutzerdefiniertes Homing-Modul, das mit [EMCMOT]HOMEMOD=modulename geladen wird

note: type: Plain text
en: 'option tpmod yes' - (default: no)  Module is a custom Trajectory Planning (tp) module loaded using [TRAJ]TPMOD=modulename
de: 'option tpmod yes' - (Standard: no) Modul ist ein benutzerdefiniertes Trajektorienplanungsmodul (tp), das mit [TRAJ]TPMOD=modulename geladen wird

note: type: Plain text
en: If an option's VALUE is not specified, then it is equivalent to specifying 'option … yes'.
    The result of assigning an inappropriate value to an option is undefined.
    The result of using any other option is undefined. +
de: Wenn der VALUE (engl. für Wert) einer Option nicht angegeben wird, ist dies gleichbedeutend mit der Angabe von 'option ... yes'.
    Das Ergebnis der Zuweisung eines unangemessenen Wertes zu einer Option ist undefiniert
    Das Ergebnis der Verwendung einer anderen Option ist undefiniert. +

note: type: Title ===
en: License and Authorship
de: Lizenz und Urheberschaft

note: type: Plain text
en: 'LICENSE' - Specify the license of the module for the documentation and for the MODULE_LICENSE() module declaration. For example, to specify that the module's license is GPL v2 or later:
de: LICENSE' - Geben Sie die Lizenz des Moduls für die Dokumentation und für die MODULE_LICENSE()-Moduldeklaration an. Zum Beispiel, um anzugeben, dass die Lizenz des Moduls GPL v2 oder höher ist:

note: type: Plain text
en: license "GPL"; // indicates GPL v2 or later
de: license "GPL"; // bedeutet GPL v2 oder höher

note: type: Plain text
en: For additional information on the meaning of MODULE_LICENSE() and additional license identifiers, see '<linux/module.h>' or the manual page 'rtapi_module_param(3)'.
de: Weitere Informationen über die Bedeutung von MODULE_LICENSE() und zusätzliche Lizenzbezeichner finden Sie in '<linux/module.h>' oder in der Handbuchseite zu 'rtapi_module_param(3)'.

note: type: Plain text
en: This declaration is *required*.
de: Diese Erklärung ist *erforderlich*.

note: type: Plain text
en: 'AUTHOR' - Specify the author of the module for the documentation.
de: 'AUTHOR' - Geben Sie den Autor des Moduls für die Dokumentation an.

note: type: Title ===
en: Per-instance data storage
de: Datenspeicherung pro Instanz

note: type: Plain text
en: Declare a per-instance variable 'STARREDNAME' of type 'CTYPE', optionally as an array of 'SIZE' items, and optionally with a default value 'DEFAULT'.
    Items with no 'DEFAULT' are initialized to all-bits-zero.
    'CTYPE' is a simple one-word C type, such as 'float', 'u32', 's32', int, etc.
    Access to array variables uses square brackets.
de: Deklarieren Sie eine Instanzvariable 'STARREDNAME' vom Typ 'CTYPE', optional als Array von 'SIZE'-Elementen und optional mit einem Standardwert 'DEFAULT'.
    Elemente ohne 'DEFAULT' werden auf alle Bits-Null initialisiert.
    CTYPE' ist ein einfacher Ein-Wort-C-Typ, wie 'float', 'u32', 's32', int, etc.
    Der Zugriff auf Array-Variablen erfolgt über eckige Klammern.

note: type: Plain text
en: If a variable is to be of a pointer type, there may not be any space between the "*" and the variable name.
    Therefore, the following is acceptable:
de: Wenn eine Variable ein Zeigertyp sein soll, darf zwischen dem "*" und dem Variablennamen kein Leerzeichen stehen.
    Daher ist das Folgende akzeptabel:

note: type: Plain text
en: But the following are not:
de: Aber die folgenden sind es nicht:

note: type: Plain text
en: C++-style one-line comments (`//...`) and C-style multi-line comments (`/* ... */`)  are both supported in the declaration section.
de: Einzeilige Kommentare im C++-Stil (`//...`) und mehrzeilige Kommentare im C-Stil (`/* ... */`) werden beide im Deklarationsabschnitt unterstützt.

note: type: Title ==
en: Restrictions
de: Einschränkungen

note: type: Plain text
en: Though HAL permits a pin, a parameter, and a function to have the same name, 'halcompile' does not.
de: Obwohl HAL erlaubt, dass ein Pin, ein Parameter und eine Funktion denselben Namen haben können, ist dies bei 'halcompile' nicht der Fall.

note: type: Plain text
en: Variable and function names that can not be used or are likely to cause problems include:
de: Zu den Variablen- und Funktionsnamen, die nicht verwendet werden können oder zu Problemen führen können, gehören:

note: type: Plain text
en: Anything beginning with '__comp_'.
de: Alles, was mit '__comp_' beginnt.

note: type: Title ==
en: Convenience Macros
de: Bequemlichkeits-Makros

note: type: Plain text
en: Based on the items in the declaration section, 'halcompile' creates a C structure called `struct __comp_state`. However, instead of referring to the members of this structure (e.g., `*(inst->name)`), they will generally be referred to using the macros below. The details of `struct __comp_state` and these macros may change from one version of 'halcompile' to the next.
de: Basierend auf den Elementen im Deklarationsabschnitt erzeugt 'halcompile' eine C-Struktur namens `struct __comp_state`. Anstatt jedoch auf die Mitglieder dieser Struktur zu verweisen (z.B. `*(inst->name)`), werden sie im Allgemeinen mit den untenstehenden Makros angesprochen. Die Details von `struct __comp_state` und diesen Makros können sich von einer Version von 'halcompile' zur nächsten ändern.

note: type: Plain text
en: 'FUNCTION(name)' - Use this macro to begin the definition of a realtime function which was previously declared with 'function NAME'. The function includes a parameter 'period' which is the integer number of nanoseconds between calls to the function.
de: FUNCTION(name)' - Verwenden Sie dieses Makro, um die Definition einer Echtzeitfunktion zu beginnen, die zuvor mit 'function NAME' deklariert wurde. Die Funktion enthält einen Parameter 'period', der die ganzzahlige Anzahl von Nanosekunden zwischen Aufrufen der Funktion angibt.

note: type: Plain text
en: 'EXTRA_SETUP()' - Use this macro to begin the definition of the function called to perform extra setup of this instance. Return a negative Unix 'errno' value to indicate failure (e.g., 'return -EBUSY' on failure to reserve an I/O port), or 0 to indicate success.
de: EXTRA_SETUP()' - Verwenden Sie dieses Makro, um die Definition der Funktion zu beginnen, die aufgerufen wird, um eine zusätzliche Einrichtung dieser Instanz durchzuführen. Geben Sie einen negativen Unix-'errno'-Wert zurück, um einen Fehler anzuzeigen (z.B. 'return -EBUSY', wenn die Reservierung eines I/O-Ports fehlgeschlagen ist), oder 0, um einen Erfolg anzuzeigen.

note: type: Plain text
en: 'EXTRA_CLEANUP()' - Use this macro to begin the definition of the function called to perform extra cleanup of the component. Note that this function must clean up all instances of the component, not just one. The "pin_name", "parameter_name", and "data" macros may not be used here.
de: EXTRA_CLEANUP()' - Verwenden Sie dieses Makro zu Beginn der Definition derjenigen Funktion, die eine Erweiterung des Aufräumen der Komponente implementiert. Beachten Sie, dass diese Funktion alle Instanzen der Komponente aufräumen muss, nicht nur eine. Die Makros "pin_name", "parameter_name" und "data" dürfen hier nicht verwendet werden.

note: type: Plain text
en: 'pin_name' or 'parameter_name' - For each pin 'pin_name' or param 'parameter_name' there is a macro which allows the name to be used on its own to refer to the pin or parameter.  When 'pin_name' or 'parameter_name' is an array, the macro is of the form 'pin_name(idx)' or 'param_name(idx)' where 'idx' is the index into the pin array. When the array is a variable-sized array, it is only legal to refer to items up to its 'condsize'.
de: 'pin_name' oder 'parameter_name' - Für jeden Pin 'pin_name' oder Parameter 'parameter_name' gibt es ein Makro, mit dem der Name allein verwendet werden kann, um auf den Pin oder Parameter zu verweisen.  Wenn 'pin_name' oder 'parameter_name' ein Array ist, hat das Makro die Form 'pin_name(idx)' oder 'param_name(idx)', wobei 'idx' der Index im Pin-Array ist. Handelt es sich bei dem Array um ein Array mit variabler Größe, ist es nur zulässig, um auf Elemente bis zu seiner 'condsize' zu verweisen.

note: type: Plain text
en: When the item is a conditional item, it is only legal to refer to it when its 'condition' evaluated to a nonzero value.
de: Wenn es sich um eine bedingte Position handelt, kann nur auf sie verwiesen werden, wenn ihre "Bedingung" einen Wert ungleich Null ergibt.

note: type: Plain text
en: 'variable_name' - For each variable 'variable_name' there is a macro which allows the name to be used on its own to refer to the variable. When 'variable_name' is an array, the normal C-style subscript is used: 'variable_name[idx]'.
de: 'variable_name' - Für jede Variable 'variable_name' gibt es ein Makro, das es erlaubt, den Namen allein zu verwenden, um auf die Variable zu verweisen. Wenn 'variable_name' ein Array ist, wird das normale C-Subskript verwendet: 'variable_name[idx]'.

note: type: Plain text
en: 'data' - If "option data" is specified, this macro allows access to the instance data.
de: 'data' - Wenn "option data" angegeben ist, ermöglicht dieses Makro den Zugriff auf die Instanzdaten.

note: type: Plain text
en: 'fperiod' - The floating-point number of seconds between calls to this realtime function.
de: 'fperiod' - Die Gleitkommazahl von Sekunden zwischen Aufrufen dieser Echtzeitfunktion.

note: type: Plain text
en: 'FOR_ALL_INSTS() {...}' - For userspace components. This macro iterates over all the defined instances. Inside the body of the loop, the 'pin_name', 'parameter_name', and 'data' macros work as they do in realtime functions.
de: 'FOR_ALL_INSTS() {...}' - Für Userspace-Komponenten. Dieses Makro iteriert über alle definierten Instanzen. Innerhalb des Schleifenkörpers arbeiten die Makros 'pin_name', 'parameter_name' und 'data' wie in Echtzeitfunktionen.

note: type: Title ==
en: Components with one function
de: Komponenten mit einer Funktion

note: type: Plain text
en: If a component has only one function and the string "FUNCTION" does not appear anywhere after ';;', then the portion after ';;' is all taken to be the body of the component's single function. See the <<code:simple-comp-example,Simple Comp>> for and example of this.
de: Wenn eine Komponente nur eine Funktion hat und die Zeichenkette "FUNCTION" nirgendwo nach ';;' auftaucht, dann wird der Teil nach ';;' als der Körper der einzigen Funktion der Komponente angesehen. Siehe <<code:simple-comp-example,Simple Comp>> für ein Beispiel hierfür.

note: type: Title ==
en: Component Personality
de: Komponenten-Persönlichkeit

note: type: Plain text
en: If a component has any pins or parameters with an "if condition" or "[maxsize : condsize]", it is called a component with 'personality'.  The 'personality' of each instance is specified when the module is loaded. 'Personality' can be used to create pins only when needed.  For instance, personality is used in the 'logic' component, to allow for a variable number of input pins to each logic gate and to allow for a selection of any of the basic boolean logic functions 'and', 'or', and 'xor'.
de: Wenn eine Komponente Pins oder Parameter mit einer "if-Bedingung" oder "[maxsize : condsize]" hat, wird sie als Komponente mit "Persönlichkeit" bezeichnet.  Die "Persönlichkeit" jeder Instanz wird beim Laden des Moduls festgelegt. Die "Persönlichkeit" kann verwendet werden, um Pins nur bei Bedarf zu erstellen.  So wird die "Persönlichkeit" beispielsweise in der Komponente 'logic' (engl. für Logik) verwendet, um eine variable Anzahl von Eingangspins für jedes Logikgatter und die Auswahl einer der grundlegenden booleschen Logikfunktionen 'und', 'oder' und 'xor' zu ermöglichen.

note: type: Plain text
en: The default number of allowed 'personality' items is a compile-time setting (64).  The default applies to numerous components included in the distribution that are built using halcompile.
de: Die Standardanzahl der erlaubten "personality"-Elemente ist eine Kompilierzeiteinstellung (64).  Die Vorgabe gilt für zahlreiche in der Distribution enthaltene Komponenten, die mit halcompile erstellt werden.

note: type: Plain text
en: To alter the allowed number of personality items for user-built components, use the '--personality' option with halcompile.  For example, to allow up to 128 personality times:
de: Um die zulässige Anzahl von Persönlichkeitselementen für benutzerdefinierte Komponenten zu ändern, verwenden Sie die Option '--personality' mit halcompile.  Zum Beispiel, um bis zu 128 Persönlichkeitszeiten zu erlauben:

note: type: Plain text
en: When using components with personality, normal usage is to specify a personality item for *each* specified component instance.  Example for 3 instances of the logic component:
de: Bei der Verwendung von Komponenten mit Persönlichkeit ist es üblich, ein Persönlichkeitselement für *jede* angegebene Komponenteninstanz anzugeben.  Beispiel für 3 Instanzen der Logikkomponente:

note: type: Plain text
en: If a loadrt line specifies more instances than personalities, the instances with unspecified personalities are assigned a personality of 0.  If the requested number of instances exceeds the number of allowed personalities, personalities are assigned by indexing modulo the number of allowed personalities.  A message is printed denoting such assignments.
de: Wenn eine loadrt-Zeile mehr Instanzen als Persönlichkeiten angibt, wird den Instanzen mit nicht angegebenen Persönlichkeiten eine Persönlichkeit von 0 zugewiesen. Wenn die angeforderte Anzahl von Instanzen die Anzahl der erlaubten Persönlichkeiten übersteigt, werden die Persönlichkeiten durch Indexierung modulo der Anzahl der erlaubten Persönlichkeiten zugewiesen.  Es wird eine Meldung über solche Zuweisungen ausgegeben.

note: type: Title ==
en: Compiling
de: Kompilieren

note: type: Plain text
en: Place the '.comp' file in the source directory 'linuxcnc/src/hal/components' and re-run 'make'.  'Comp' files are automatically detected by the build system.
de: Legen Sie die '.comp'-Datei in das Quellverzeichnis 'linuxcnc/src/hal/components' und führen Sie 'make' erneut aus. 'Comp'-Dateien werden vom Build-System automatisch erkannt.

note: type: Plain text
en: If a '.comp' file is a driver for hardware, it may be placed in 'linuxcnc/src/hal/drivers' and will be built unless LinuxCNC is configured as a userspace simulator.
de: Wenn eine '.comp'-Datei ein Treiber für Hardware ist, kann sie in 'linuxcnc/src/hal/drivers' abgelegt werden und wird gebaut, es sei denn, LinuxCNC ist als Userspace-Simulator konfiguriert.

note: type: Title ==
en: Compiling realtime components outside the source tree
de: Kompilieren von Echtzeitkomponenten außerhalb des Quellbaums

note: type: Plain text
en: 'halcompile' can process, compile, and install a realtime component in a single step, placing 'rtexample.ko' in the LinuxCNC realtime module directory:
de: 'halcompile' kann eine Echtzeitkomponente in einem einzigen Schritt verarbeiten, kompilieren und installieren, wobei 'rtexample.ko' im LinuxCNC-Echtzeitmodulverzeichnis platziert wird:

note: type: Plain text
en: sudo (for root permission) is needed when using LinuxCNC from a deb package install.  When using a Run-In-Place (RIP) build, root privileges should not be needed.
de: sudo (für Root-Rechte) wird benötigt, wenn Sie LinuxCNC aus einem Deb-Paket installieren.  Wenn Sie einen Run-In-Place (RIP) Build verwenden, sollten Root-Rechte nicht erforderlich sein.

note: type: Plain text
en: Or, it can process and compile in one step, leaving 'example.ko' (or 'example.so' for the simulator) in the current directory:
de: Oder es kann in einem Schritt verarbeitet und kompiliert werden, wobei 'example.ko' (oder 'example.so' für den Simulator) im aktuellen Verzeichnis verbleibt:

note: type: Plain text
en: Or it can simply process, leaving 'example.c' in the current directory:
de: Oder es kann einfach verarbeitet werden, wobei die Datei "example.c" im aktuellen Verzeichnis verbleibt:

note: type: Plain text
en: 'halcompile' can also compile and install a component written in C, using the '--install' and '--compile' options shown above:
de: 'halcompile' kann auch eine in C geschriebene Komponente kompilieren und installieren, indem es die oben gezeigten Optionen '--install' und '--compile' verwendet:

note: type: Plain text
en: man-format documentation can also be created from the information in the declaration section:
de: Die Dokumentation im man-Format kann auch aus den Informationen im Deklarationsabschnitt erstellt werden:

note: type: Plain text
en: The resulting manpage, 'example.9' can be viewed with
de: Die resultierende Manpage „example.9“ kann angezeigt werden mit

note: type: Plain text
en: or copied to a standard location for manual pages.
de: oder an einen Standardspeicherort für UNIX man pages kopiert.

note: type: Title ==
en: Compiling userspace components outside the source tree
de: Kompilieren von Userspace-Komponenten außerhalb des Quellbaums

note: type: Plain text
en: 'halcompile' can process, compile, install, and document userspace components:
de: halcompile' kann Userspace-Komponenten verarbeiten, kompilieren, installieren und dokumentieren:

note: type: Plain text
en: This only works for '.comp' files, not for '.c' files.
de: Dies funktioniert nur für '.comp'-Dateien, nicht für '.c'-Dateien.

note: type: Title ===
en: constant
de: Konstante

note: type: Plain text
en: Note that the declaration "function _" creates functions named "constant.0", etc.  The file name must match the component name.
de: Beachten Sie, dass die Deklaration "function _" Funktionen mit dem Namen "constant.0" usw. erzeugt.  Der Dateiname muss mit dem Komponentennamen übereinstimmen.

note: type: delimited block -
en: component constant;
    pin out float out;
    param r float value = 1.0;
    function _;
    license "GPL"; // indicates GPL v2 or later
    ;;
    FUNCTION(_) { out = value; }
de: component constant;
    pin out float out;
    param r float value = 1.0;
    function _;
    license "GPL"; // bedeutet GPL v2 oder höher
    ;;
    FUNCTION(_) { out = value; }

note: type: Plain text
en: This component computes the sine and cosine of an input angle in radians. It has different capabilities than the "sine" and "cosine" outputs of siggen, because the input is an angle, rather than running freely based on a "frequency" parameter.
de: Diese Komponente berechnet den Sinus und Kosinus eines Eingangswinkels im Bogenmaß. Sie hat andere Fähigkeiten als die "Sinus"- und "Kosinus"-Ausgänge von siggen, weil die Eingabe ein Winkel ist und nicht frei auf der Grundlage eines "Frequenz"-Parameters läuft.

note: type: Plain text
en: The pins are declared with the names 'sin_' and 'cos_' in the source code so that they do not interfere with the functions 'sin()' and 'cos()'. The HAL pins are still called 'sincos.<num>.sin'.
de: Die Pins werden im Quellcode mit den Namen 'sin_' und 'cos_' deklariert, damit sie nicht mit den Funktionen 'sin()' und 'cos()' interferieren. Die HAL-Pins heißen weiterhin 'sincos.<num>.sin'.

note: type: delimited block -
en: component sincos;
    pin out float sin_;
    pin out float cos_;
    pin in float theta;
    function _;
    license "GPL"; // indicates GPL v2 or later
    ;;
    #include <rtapi_math.h>
    FUNCTION(_) { sin_ = sin(theta); cos_ = cos(theta); }
de: component sincos;
    pin out float sin_;
    pin out float cos_;
    pin in float theta;
    function _;
    license "GPL"; // bedeutet GPL v2 oder höher
    ;;
    #include <rtapi_math.h>
    FUNCTION(_) { sin_ = sin(theta); cos_ = cos(theta); }

note: type: Plain text
en: This component is a driver for a 'fictional' card called "out8", which has 8 pins of digital output which are treated as a single 8-bit value. There can be a varying number of such cards in the system, and they can be at various addresses. The pin is called 'out_' because 'out' is an identifier used in '<asm/io.h>'. It illustrates the use of 'EXTRA_SETUP' and 'EXTRA_CLEANUP' to request an I/O region and then free it in case of error or when the module is unloaded.
de: Bei dieser Komponente handelt es sich um einen Treiber für eine "fiktive" Karte mit der Bezeichnung "out8", die über 8 Pins mit digitalen Ausgängen verfügt, die als ein einziger 8-Bit-Wert behandelt werden. Es kann eine unterschiedliche Anzahl solcher Karten im System geben, und sie können sich an verschiedenen Adressen befinden. Der Pin wird 'out_' genannt, weil 'out' ein in '<asm/io.h>' verwendeter Bezeichner ist. Er veranschaulicht die Verwendung von 'EXTRA_SETUP' und 'EXTRA_CLEANUP', um einen E/A-Bereich anzufordern und ihn dann im Fehlerfall oder beim Entladen des Moduls wieder freizugeben.

note: type: delimited block -
en: component out8;
    pin out unsigned out_ "Output value; only low 8 bits are used";
    param r unsigned ioaddr;
de: component out8;
    pin out unsigned out_ "Ausgabewert; es werden nur niedrige 8 Bit verwendet";
    param r unsigned ioaddr;

note: type: delimited block -
en: license "GPL"; // indicates GPL v2 or later
    ;;
    #include <asm/io.h>
de: license "GPL"; // bedeutet GPL v2 oder höher
    ;;
    #include <asm/io.h>

note: type: delimited block -
en: #define MAX 8
    int io[MAX] = {0,};
    RTAPI_MP_ARRAY_INT(io, MAX, "I/O addresses of out8 boards");
de: #define MAX 8
    int io[MAX] = {0,};
    RTAPI_MP_ARRAY_INT(io, MAX, "E/A-Adressen der out8-Karten");

note: type: delimited block -
en: int get_count(void) {
        int i = 0;
        for(i=0; i<MAX && io[i]; i++) { /* Nothing */ }
        return i;
    }
de: int get_count(void) {
        int i = 0;
        for(i=0; i<MAX && io[i]; i++) { /* Nichts */ }
        return i;
    }

note: type: delimited block -
en: EXTRA_SETUP() {
        if(!rtapi_request_region(io[extra_arg], 1, "out8")) {
            // set this I/O port to 0 so that EXTRA_CLEANUP does not release the IO
            // ports that were never requested.
            io[extra_arg] = 0;
            return -EBUSY;
        }
        ioaddr = io[extra_arg];
        return 0;
    }
de: EXTRA_SETUP() {
        if(!rtapi_request_region(io[extra_arg], 1, "out8")) {
            // Setze diesen I/O-Port auf 0, damit EXTRA_CLEANUP die IO-Ports nicht freigibt,
            // die nie angefordert wurden.
            io[extra_arg] = 0;
            return -EBUSY;
        }
        ioaddr = io[extra_arg];
        return 0;
    }

note: type: Plain text
en: This fragment of a component illustrates the use of the 'hal_' prefix in a component name. 'loop' is the name of a standard Linux kernel module, so a 'loop' component might not successfully load if the Linux 'loop' module was also present on the system.
de: Dieses Komponentenfragment veranschaulicht die Verwendung des Präfixes "hal_" in einem Komponentennamen. "loop" ist der Name eines Standard-Linux-Kernelmoduls, so dass eine "loop"-Komponente möglicherweise nicht erfolgreich geladen werden kann, wenn das Linux-Modul "loop" ebenfalls auf dem System vorhanden ist.

note: type: Plain text
en: When loaded, 'halcmd show comp' will show a component called 'hal_loop'. However, the pin shown by 'halcmd show pin' will be 'loop.0.example', not 'hal-loop.0.example'.
de: Nach dem Laden zeigt 'halcmd show comp' eine Komponente namens 'hal_loop' an. Der von "halcmd show pin" angezeigte Pin ist jedoch "loop.0.example" und nicht "hal-loop.0.example".

note: type: Plain text
en: This realtime component illustrates use of fixed-size arrays:
de: Diese Echtzeitkomponente veranschaulicht die Verwendung von Arrays fester Größe:

note: type: delimited block -
en: component arraydemo "4-bit Shift register";
    pin in bit in;
    pin out bit out-# [4];
    function _ nofp;
    license "GPL"; // indicates GPL v2 or later
    ;;
    int i;
    for(i=3; i>0; i--) out(i) = out(i-1);
    out(0) = in;
de: component arraydemo "4-Bit-Schieberegister";
    pin in bit in;
    pin out bit out-# [4];
    funktion _ nofp;
    licencse "GPL"; // bedeutet GPL v2 oder höher
    ;;
    int i;
    for(i=3; i>0; i--) out(i) = out(i-1);
    out(0) = in;

note: type: Plain text
en: This userspace component changes the value on its output pin to a new random value in the range (0,1) about once every 1ms.
de: Diese Userspace-Komponente ändert den Wert an ihrem Ausgangspin etwa alle 1 ms auf einen neuen Zufallswert im Bereich (0,1).

note: type: delimited block -
en: pin out float out;
    license "GPL"; // indicates GPL v2 or later
    ;;
    #include <unistd.h>
de: pin out float out;
    license "GPL"; // bedeutet GPL v2 oder höher
    ;;
    #include <unistd.h>

note: type: Plain text
en: This realtime component shows how to use "personality" to create variable-size arrays and optional pins.
de: Diese Echtzeitkomponente zeigt, wie man "Persönlichkeit" verwendet, um Arrays variabler Größe und optionale Pins zu erstellen.

note: type: delimited block -
en: component logic "LinuxCNC HAL component providing experimental logic functions";
    pin in bit in-##[16 : personality & 0xff];
    pin out bit and if personality & 0x100;
    pin out bit or if personality & 0x200;
    pin out bit xor if personality & 0x400;
    function _ nofp;
    description """
    Experimental general 'logic function' component.  Can perform 'and', 'or'
    and 'xor' of up to 16 inputs.  Determine the proper value for 'personality'
    by adding:
    .IP \\(bu 4
    The number of input pins, usually from 2 to 16
    .IP \\(bu
    256 (0x100)  if the 'and' output is desired
    .IP \\(bu
    512 (0x200)  if the 'or' output is desired
    .IP \\(bu
    1024 (0x400)  if the 'xor' (exclusive or) output is desired""";
    license "GPL"; // indicates GPL v2 or later
    ;;
    FUNCTION(_) {
        int i, a=1, o=0, x=0;
        for(i=0; i < (personality & 0xff); i++) {
            if(in(i)) { o = 1; x = !x; }
            else { a = 0; }
        }
        if(personality & 0x100) and = a;
        if(personality & 0x200) or = o;
        if(personality & 0x400) xor = x;
    }
de: component logic "LinuxCNC HAL Komponente mit experimentellen Logikfunktionen";
    pin in bit in-##[16 : personality & 0xff];
    pin out bit and if personality & 0x100;
    pin out bit or if personality & 0x200;
    pin out bit xor if personality & 0x400;
    function _ nofp;
    description """
    Experimentelle allgemeine 'Logikfunktion' Komponente. Kann 'und', 'oder' und 'xor' von bis zu 16 Eingängen durchführen. Bestimmen Sie den richtigen Wert für 'Persönlichkeit' durch Hinzufügen:
    .IP \\(bu 4 Die Anzahl der Eingangsstifte, in der Regel von 2 bis 16
    .IP \\(bu 256 (0x100), wenn der 'und'-Ausgang gewünscht ist
    .IP \\(bu 512 (0x200), wenn der 'oder'-Ausgang erwünscht ist 
    IP \\(bu 1024 (0x400), wenn die 'xor'-Ausgabe (exklusives oder) gewünscht ist""";
    license "GPL"; // bedeutet GPL v2 or höher
    ;;
    FUNCTION(_) {
        int i, a=1, o=0, x=0;
        for(i=0; i < (personality & 0xff); i++) {
            if(in(i)) { o = 1; x = !x; }
            else { a = 0; }
        }
        if(personality & 0x100) and = a;
        if(personality & 0x200) or = o;
        if(personality & 0x400) xor = x;
    }

note: type: Plain text
en: A typical load line for this component might be
de: Eine typische Zeile zur Belegung dieses Bauteil könnte lauten

note: type: Plain text
en: which creates the following pins:
de: wodurch die folgenden Pins erstellt werden:

note: type: Title ===
en: General Functions
de: Allgemeine Funktionen

note: type: Plain text
en: This example shows how to call functions from the main function.  It also shows how to pass reference of HAL pins to those functions.
de: Dieses Beispiel zeigt, wie man Funktionen von der Hauptfunktion aus aufruft.  Es zeigt auch, wie die Referenz von HAL-Pins an diese Funktionen übergeben werden kann.

note: type: delimited block -
en: // general pin set true function
    void set(hal_bit_t *p){
        *p = 1;
    }
de: // allgemeine Pin Set True Funktion
    void set(hal_bit_t *p){
        *p = 1;
    }

note: type: delimited block -
en: // general pin set false function
    void unset(hal_bit_t *p){
        *p = 0;
    }
de: // allgemeine Pin Set False Funktion
    void unset(hal_bit_t *p){
        *p = 0;
    }

note: type: delimited block -
en: //main function
    FUNCTION(_) {
        if (in < 0){
            set(&out1);
            unset(&out2);
        }else if (in >0){
            unset(&out2);
            set(&out2);
        }else{
            unset(&out1);
            unset(&out2);
        }
    }
de: //Haupt-Funktion (engl. main)
    FUNCTION(_) {
        if (in < 0){
            set(&out1);
            unset(&out2);
        }else if (in >0){
            unset(&out2);
            set(&out2);
        }else{
            unset(&out1);
            unset(&out2);
        }
    }

note: type: Plain text
en: This component uses two general function to manipulate a HAL bit pin referenced to it.
de: Diese Komponente verwendet zwei allgemeine Funktionen, um einen HAL-Bit-Pin zu manipulieren, auf den sie referenziert ist.

note: type: Title ==
en: Command Line Usage
de: Verwendung der Kommandozeile

note: type: Plain text
en: The halcompile man page gives details for invoking halcompile.
de: Die Manpage halcompile enthält Details zum Aufruf von halcompile.

note: type: Plain text
en: A brief summary of halcompile usage is given by:
de: Eine kurze Zusammenfassung der Verwendung von halcompile finden Sie hier:

note: < explanation of the difference between a real-time and a userspace component > type: Plain text
en: Most of the commands in the following list have man pages.  Some will have expanded descriptions, some will have limited descriptions.  From this list you know what components exist, and you can use 'man name' to get additional information.  To view the information in the man page, in a terminal window type:
de: Für die meisten der in der folgenden Liste aufgeführten Befehle gibt es Man Pages.  Für einige gibt es erweiterte Beschreibungen, für andere eingeschränkte Beschreibungen.  Anhand dieser Liste wissen Sie, welche Komponenten existieren, und Sie können "man name" verwenden, um zusätzliche Informationen zu erhalten.  Um die Informationen in der man-Seite zu sehen, geben Sie in einem Terminalfenster ein:

note: type: delimited block -
en: man axis (or perhaps 'man <n> axis' if your system requires it. n = 1 for userspace and 9 for realtime components)
de: man axis (oder vielleicht 'man <n> axis', wenn Ihr System dies erfordert. n = 1 für Userspace und 9 für Echtzeitkomponenten)

note: type: Plain text
en: See also the 'Man Pages' section of the link:../index.html[docs main page] or the link:../man/[directory listing].
de: Siehe auch den Abschnitt 'Man Pages' unter dem Link:../index.html[docs main page] oder den Link:../man/[directory listing].

note: type: Title ===
en: User Interfaces (Userspace)
de: Benutzerschnittstellen (Userspace)

note: type: Title ====
en: Machine Control
de: Maschinensteuerung

note: type: Table
en: AXIS LinuxCNC (The Enhanced Machine Controller) GUI
de: AXIS LinuxCNC (ehemals "Enhanced Machine Controller") GUI

note: type: Table
en: AXIS Remote Interface
de: AXIS Fernzugriff (engl. Remote Interface)

note: type: Table
en: Touchy LinuxCNC Graphical User Interface
de: Touchy LinuxCNC Grafische Benutzeroberfläche

note: type: Table
en: Observe HAL pins and command LinuxCNC through NML
de: Beobachten Sie die HAL-Pins und befehlen Sie LinuxCNC über NML

note: type: Table
en: manual only Digital Read Out (DRO)
de: nur manuell Digital Read Out (DRO)

note: type: Table
en: Framework for conversational G-code generation on the controller
de: Framework zur dialogorientierten G-Code-Generierung auf dem Controller

note: type: Table
en: Short description
de: Kurzbeschreibung

note: type: Table
en: Python implementation of NGCGUI
de: Python-Implementierung von NGCGUI

note: type: Table
en: AXIS - TOUCHY LinuxCNC Graphical User Interface
de: AXIS - TOUCHY LinuxCNC Grafische Benutzeroberfläche

note: type: Title ====
en: Virtual Control Panels (VCP)
de: Virtuelle Schalttafeln (VCP)

note: type: Table
en: Virtual Control Panel for LinuxCNC based on Glade, Gtk and HAL widgets
de: Virtuelles Bedienfeld für LinuxCNC basierend auf Glade, Gtk und HAL Widgets

note: type: Table
en: GladeVCP - used by sample configs to deonstrate Glade Virtual_demo
de: GladeVCP - verwendet von Beispielkonfigurationen zur Demonstration von Glade Virtual_demo

note: type: Table
en: G-code graphical preview
de: Grafische Vorschau des G-Codes

note: type: Table
en: GUI for the moveoff component
de: GUI für die Moveoff-Komponente

note: type: Table
en: Utility for panelui
de: Dienstprogramm für Panelui

note: type: Table
en: Virtual Control Panel for LinuxCNC
de: Virtuelles Bedienfeld für LinuxCNC

note: type: Table
en: Python Virtual Control Panel demonstration component
de: Python Virtual Control Panel Demonstrationskomponente

note: type: Table
en: Qt based virtual control panel
de: Qt-basiertes virtuelles Bedienfeld

note: type: Title ====
en: Vismach Virtual Machines
de: Virtuelle Vismach-Maschinen

note: type: Table
en: Vismach Virtual Machine GUI
de: Vismach Virtuelle Maschine GUI

note: type: Plain text
en: hexagui - Vismach Virtual Machine GUI
de: hexagui - Vismach Virtual Machine-GUI

note: type: Plain text
en: puma560agui - Vismach Virtual Machine GUI
de: puma560agui - GUI für virtuelle Maschinen von Vismach

note: type: Title ===
en: Motion (Userspace)
de: Bewegung (engl. motion) (Userspace)

note: type: Plain text
en: iocontrol - interacts with HAL or G-code in userspace
de: iocontrol - interagiert mit HAL oder G-Code im Userspace

note: type: Table
en: Interacts with HAL or G-code in userspace
de: Interagiert mit HAL oder G-Code im Userspace

note: type: Table
en: Send G-code commands from the terminal to the running LinuxCNC instance
de: Senden von G-Code-Befehlen vom Terminal an die laufende LinuxCNC-Instanz

note: type: Table
en: Userspace task controller for LinuxCNC
de: Userspace Task Controller für LinuxCNC

note: type: Table
en: Accepts NML motion commands, interacts with HAL in realtime
de: Akzeptiert NML-Bewegungsbefehle, interagiert mit HAL in Echtzeit

note: type: Title ====
en: VFD & Communication Interfaces (Userspace)
de: VFD & Kommunikationsschnittstellen (Userspace)

note: type: Table
en: Communicate with Mesa ethernet cards
de: Kommunikation mit Mesa-Ethernet-Karten

note: type: Table
en: HAL userspace component for Automation Direct GS2 VFDs
de: HAL Userspace Komponente für Automation Direct GS2 VFDs

note: type: Table
en: Realtime HAL component to communicate with one or more pc parallel ports
de: Echtzeit-HAL-Komponente zur Kommunikation mit einer oder mehreren parallelen PC-Ports

note: type: Table
en: HAL userspace component for Huanyang GT-series VFDs
de: HAL Userspace Komponente für Huanyang GT-Serien VFDs

note: type: Table
en: HAL userspace component for Huanyang VFDs
de: HAL Userspace Komponente für Huanyang VFDs

note: type: Table
en: MB2HAL is a generic userspace HAL component to communicate with one or more Modbus devices. Modbus RTU and Modbus TCP are supported.
de: MB2HAL ist eine generische Userspace-HAL-Komponente zur Kommunikation mit einem oder mehreren Modbus-Geräten. Modbus RTU und Modbus TCP werden unterstützt.

note: type: Table
en: HAL userspace component for Mitsubishi A500 F500 E500 A500 D700 E700 F700-series VFDs (others may work)
de: HAL Userspace-Komponente für Mitsubishi A500 F500 E500 A500 D700 E700 F700-Serien VFDs (andere können funktionieren)

note: type: Table
en: Monitors the XHC-HB04 pendant and warns of disconnection
de: Überwacht die XHC-HB04-Hängeleuchte und warnt vor einer Unterbrechung der Verbindung

note: type: Table
en: Powtran PI500 modbus driver
de: Powtran PI500 Modbus-Treiber

note: type: Table
en: Modbus communications with a Powermax Plasma Cutter
de: Modbus-Kommunikation mit einem Powermax-Plasmaschneidgerät

note: type: Table
en: Modbus communications testing with a Powermax Plasma Cutter
de: Testen der Modbus-Kommunikation mit einem Powermax-Plasmaschneidgerät

note: type: Table
en: control HAL pins with the ShuttleXpress, ShuttlePRO, and ShuttlePRO2 device made by Contour Design
de: Steuern Sie HAL-Pins mit den Geräten ShuttleXpress, ShuttlePRO und ShuttlePRO2 von Contour Design

note: type: Table
en: HAL userspace component for SVD-P(S) VFDs
de: HAL Userspace Komponente für SVD-P(S) VFDs

note: type: Table
en: HAL userspace component for Delta VFD-B Variable Frequency Drives
de: HAL-Userspace-Komponente für Delta VFD-B Frequenzumrichter

note: type: Table
en: HAL userspace component for Toshiba-Schneider VF-S11 Variable Frequency Drives
de: HAL-Userspace-Komponente für Toshiba-Schneider VF-S11 Frequenzumrichter

note: type: Table
en: Hitachi wj200 modbus driver
de: Hitachi WJ200 Modbus-Treiber

note: type: Table
en: User-space HAL component for the xhc-hb04 pendant
de: User-Space-HAL-Komponente für das xhc-hb04-Pendant

note: type: Title ===
en: Mesa and other I/O Cards (Realtime)
de: Mesa und andere I/O-Karten (Echtzeit)

note: type: Table
en: Pico Systems <<cha:pico-drivers,driver>> for analog servo, PWM and Stepper controller
de: Pico Systems <<cha:pico-drivers,Treiber>> für analoge Servo-, PWM- und Stepper-Controller

note: type: Table
en: Driver for beaglebone GPIO pins
de: Treiber für Beaglebone GPIO-Pins

note: type: Table
en: Mesa Electronics driver for the 7i43 EPP Anything IO board with HostMot2. (See the man page for more information)
de: Mesa Electronics-Treiber für das 7i43 EPP Anything IO Board mit HostMot2 (weitere Informationen finden Sie in der Manpage)

note: type: Table
en: LinuxCNC HAL driver for the Mesa Electronics 7i90 EPP Anything IO board with HostMot2 firmware
de: LinuxCNC HAL-Treiber für die Mesa Electronics 7i90 EPP Anything IO-Karte mit HostMot2-Firmware

note: type: Table
en: LinuxCNC HAL driver for the Mesa Electronics Ethernet Anything IO boards, with HostMot2 firmware
de: LinuxCNC HAL-Treiber für die Mesa Electronics Ethernet Anything IO-Karten, mit HostMot2-Firmware

note: type: Table
en: Mesa Electronics driver for the 5i20, 5i22, 5i23, 4i65, and 4i68 Anything I/O boards, with HostMot2 firmware. (See the man page for more information)
de: Mesa Electronics-Treiber für die 5i20-, 5i22-, 5i23-, 4i65- und 4i68 Anything I/O-Karten mit HostMot2-Firmware. (Siehe die Manpage für weitere Informationen)

note: type: Table
en: LinuxCNC HAL driver for the Mesa Electronics SPI Anything IO boards, with HostMot2 firmware
de: LinuxCNC HAL-Treiber für die Mesa Electronics SPI Anything IO Boards, mit HostMot2-Firmware

note: type: Table
en: Mesa Electronics <<cha:mesa-hostmot2-driver,driver>> for the HostMot2 firmware.
de: Mesa Electronics <<cha:mesa-hostmot2-driver,Treiber>> für die HostMot2-Firmware.

note: type: Table
en: Support for the MAX31855 Thermocouple-to-Digital converter using bitbanged SPI
de: Unterstützung für den MAX31855 Thermoelement-zu-Digital-Wandler mit Bitbanged SPI

note: type: Table
en: Mesa Electronics driver for the 7i65 eight-axis servo card. (See the man page for more information)
de: Mesa Electronics-Treiber für die 7i65 Acht-Achsen-Servokarte. (Siehe die Manpage für weitere Informationen)

note: type: Table
en: PktUART simple test with Microstrain 3DM-GX3-15 gyro
de: Einfacher PktUART-Test mit Microstrain 3DM-GX3-15 Kreisel

note: type: Table
en: Realtime driver for opto22 PCI-AC5 cards
de: Echtzeittreiber für opto22 PCI-AC5 Karten

note: type: Table
en: Pluto-P <<cha:pluto-p-driver,driver>> and firmware for the parallel port FPGA, for servos
de: Pluto-P <<cha:pluto-p-driver,Treiber>> und Firmware für den Parallelport FPGA, für Servos

note: type: Table
en: Pluto-P <<cha:pluto-p-driver,driver>> for the parallel port FPGA, for steppers
de: Pluto-P <<cha:pluto-p-driver,Treiber>> für den Parallelport FPGA, für Stepper

note: type: Table
en: Hardware driver for the digital I/O bits of the 8250 and 16550 serial port
de: Hardwaretreiber für die digitalen E/A-Bits der seriellen Schnittstelle des 8250 und 16550

note: type: Plain text
en: hostmot2 - Smart Serial LinuxCNC HAL driver for the Mesa Electronics HostMot2 Smart-Serial remote cards
de: hostmot2 - Smart Serial LinuxCNC HAL Treiber für die Mesa Electronics HostMot2 Smart-Serial Remote Karten

note: type: Table
en: Torch Height Control using a Mesa THC card or any analog to velocity input
de: Brennerhöhensteuerung mit einer Mesa THC-Karte oder einem beliebigen Analog-/Geschwindigkeitseingang

note: type: Title ===
en: Utilities (Userspace)
de: Dienstprogramme (Benutzerbereich)

note: type: Table
en: Plots the value of a HAL pin as a histogram
de: Plottet den Wert eines HAL-Pins als Histogramm

note: type: Table
en: Build, compile and install LinuxCNC HAL components
de: Erstellen, kompilieren und installieren von LinuxCNC HAL Komponenten

note: type: Table
en: Observe HAL pins, signals, and parameters
de: Beobachten von HAL-Pins, -Signale und -Parametern

note: type: Table
en: Manipulate the LinuxCNC HAL from the command line
de: Manipuliert des LinuxCNC HAL von der Kommandozeile

note: type: Table
en: Creates a report on the status of the HAL
de: Erzeugt einen Bericht über den Status des HAL

note: type: Table
en: Sample data from HAL in realtime
de: Probendaten von HAL in Echtzeit

note: type: Table
en: Software oscilloscope for viewing real time waveforms of HAL pins and signals
de: Software-Oszilloskop zur Anzeige von Echtzeit-Wellenformen von HAL-Pins und -Signalen

note: type: Table
en: Show HAL parameters, pins and signals
de: HAL-Parameter, Pins und Signale anzeigen

note: type: Table
en: Stream file data into HAL in real time
de: Streamen von Daten aus Dateien an HAL in Echtzeit

note: type: Table
en: Manipulates the LinuxCNC HAL from the command line using Tcl
de: Manipuliert die LinuxCNC HAL von der Kommandozeile aus mit Tcl

note: type: Table
en: Converts bitmap images to G-code
de: Konvertiert Bitmap-Bilder in G-Code

note: type: Table
en: Plots histogram of machine latency
de: Plottet Histogramm der Maschinenlatenz

note: type: Table
en: Another way to view latency numbers
de: Eine weitere Möglichkeit, Latenzzahlen anzuzeigen

note: type: Table
en: Tests the realtime system latency
de: Testen der Latenzzeit des Echtzeitsystems

note: type: Table
en: Configuration wizard for Mesa cards
de: Konfigurationsassistent für Mesa-Karten

note: type: Table
en: Utility for setting Smart Serial NVRAM parameters.
    NOTE: This rather clunky utility is no longer needed except for flashing new smart-serial remote firmware.
    Smart-serial remote parameters can now be set in the HAL file in the normal way.
de: Dienstprogramm zur Einstellung der Smart Serial NVRAM-Parameter.
    NOTE: Dieses recht klobige Dienstprogramm wird nicht mehr benötigt, außer zum Flashen neuer Smart-Serial-Remote-Firmware.
    Smart-Serial-Remote-Parameter können jetzt auf normale Weise in der HAL-Datei gesetzt werden.

note: type: Table
en: Configuration wizard for parallel-port based machines
de: Ein Konfigurationsassistent für Maschinen mit parallelen Anschlüssen

note: type: Title ===
en: Signal processing (Realtime)
de: Signalverarbeitung (Echtzeit)

note: type: Title ====
en: Logic and Bitwise
de: Logik und Bitwise

note: type: Table
en: Two-input AND gate. For out to be true both inputs must be true. (link:../man/man9/and2.9.html[and2])
de: UND-Gatter mit zwei Eingängen. Damit der Ausgang wahr ist, müssen beide Eingänge wahr sein. (Link:../man/man9/and2.9.html[and2])

note: type: Table
en: Computes various bitwise operations on the two input values
de: Berechnet verschiedene bitweise Operationen an den beiden Eingabewerten

note: type: Table
en: Filter noisy digital inputs link:../man/man9/dbounce.9.html[Details]
de: Filtert verrauschte digitale Eingänge: link:../man/man9/dbounce.9.html[Details]

note: type: Table
en: Filter noisy digital inputs link:../man/man9/debounce.9.html[Details] <<sec:debounce, Description>>
de: Filtert verrauschte digitale Eingänge: link:../man/man9/debounce.9.html[Details]. <<sec:debounce, Beschreibung>>

note: type: Table
en: Select one of several output pins by integer and/or or individual bits
de: Auswahl eines von mehreren Ausgangsstiften durch Ganzzahl und/oder oder einzelne Bits

note: type: Table
en: Edge detector
de: Kanten-Detektor

note: type: Table
en: E-stop latch
de: Notaus-Verriegelung

note: type: Table
en: D-type flip-flop
de: D-Typ Flip-Flop

note: type: Table
en: General logic function component
de: Allgemeine logische Funktionskomponente

note: type: Table
en: 5-input logic function based on a look-up table <<sec:lut5,Description>>
de: Logikfunktion mit 5 Eingängen, die auf einer Look-up-Tabelle basiert, siehe <<sec:lut5,Beschreibung>>

note: type: Table
en: 8-bit binary match detector
de: 8-Bit-Binär-Match-Detektor

note: type: Table
en: Single-, double-, triple-, and quadruple-click detector
de: Einzel-, Doppel-, Dreifach- und Vierfach-Klick-Detektor

note: type: Table
en: Toggles between a specified number of output bits
de: Schaltet zwischen einer bestimmten Anzahl von Ausgangsbits um

note: type: Table
en: One-shot pulse generator
de: One-Shot-Pulsgenerator

note: type: Table
en: Two-input OR gate
de: ODER-Gatter mit zwei Eingängen

note: type: Table
en: 8-bit binary match detector.
de: 8-Bit-Binär-Match-Detektor.

note: type: Table
en: IEC TOF timer - delay falling edge on a signal
de: IEC TOF Timer - Verzögerung der fallenden Flanke eines Signals

note: type: Table
en: Push-on, push-off from momentary pushbuttons
de: Push-on, push-off von Drucktastern mit kurzem Tastendruck

note: type: Table
en: Toggle button to nist logic
de: Button auf Nist-Logik umschalten

note: type: Table
en: IEC TON timer - delay rising edge on a signal
de: IEC TON Timer - Verzögerung der steigenden Flanke eines Signals

note: type: Table
en: Equivalent of a time-delay relay.
de: Äquivalent eines zeitverzögerten Relais.

note: type: Table
en: Places signal on an I/O pin only when enabled, similar to a tristate buffer in electronics
de: Legt ein Signal nur dann auf einen E/A-Pin, wenn es aktiviert ist, ähnlich wie ein Tristate-Puffer in der Elektronik

note: type: Table
en: Places signal on an I/O pin only when enabled, similar to a tristatebuffer in electronics
de: Legt ein Signal nur dann auf einen E/A-Pin, wenn es aktiviert ist, ähnlich wie ein Tristate-Puffer in der Elektronik

note: type: Table
en: Two-input XOR (exclusive OR) gate
de: XOR-Gatter mit zwei Eingängen (Exklusiv-ODER)

note: type: Title ====
en: Arithmetic and float
de: Arithmetisch und Fließkomma

note: type: Table
en: Computes the absolute value and sign of the input signal
de: Berechnet den Absolutwert und das Vorzeichen des Eingangssignals

note: type: Table
en: Biquad IIR filter
de: Biquad IIR-Filter

note: type: Table
en: Perform linear interpolation between two values
de: Lineare Interpolation zwischen zwei Werten durchführen

note: type: Table
en: Two input comparator with hysteresis
de: Komparator mit zwei Eingängen und Hysterese

note: type: Table
en: Uses parameter to set the value of a pin
de: Verwendet einen Parameter, um den Wert eines Pins festzulegen

note: type: Table
en: Counts input pulses (deprecated). Use the <<sec:encoder, encoder>> component.
de: Zählt Eingangsimpulse (veraltet). Verwenden Sie die Komponente <<sec:encoder, encoder>>.

note: type: Table
en: Computes the derivative of the input function.
de: Berechnet die Ableitung der Eingangsfunktion.

note: type: Table
en: Returns the center if within the threshold.
de: Gibt den Mittelpunkt zurück, wenn er sich innerhalb des Schwellenwerts befindet.

note: type: Table
en: Three-input hypotenuse (Euclidean distance) calculator.
de: Rechner für die Hypotenuse (euklidischer Abstand) mit drei Eingaben.

note: type: Table
en: Low-pass filter with integer inputs and outputs
de: Tiefpassfilter mit ganzzahligen Ein- und Ausgängen

note: type: Table
en: Computes the inverse of the input signal.
de: Berechnet die Umkehrung des Eingangssignals.

note: type: Table
en: Unidimensional Kalman filter, also known as linear quadratic estimation (LQE)
de: Eindimensionaler Kalman-Filter, auch bekannt als lineare quadratische Schätzung (LQE)

note: type: Table
en: Converts counts (probably from an encoder) to a float value.
de: Konvertiert die Anzahl (wahrscheinlich von einem Encoder) in einen Gleitkommawert.

note: type: Table
en: Low-pass filter
de: Tiefpassfilter

note: type: Table
en: Limits the output signal to fall between min and max. footnote:[When the input is a position, this means that the 'position' is limited.]
de: Begrenzt das Ausgangssignal auf einen Wert zwischen min und max. footnote:[Wenn der Eingang eine Position ist, bedeutet dies, dass die 'Position' begrenzt ist.]

note: type: Table
en: Limits the output signal to fall between min and max.  Limit its slew rate to less than maxv per second. 
    footnote:[When the input is a position, this means that 'position' and 'velocity' are limited.]
de: Begrenzt das Ausgangssignal auf den Bereich zwischen min und max.  Begrenzt seine Anstiegsgeschwindigkeit auf weniger als maxv pro Sekunde. 
    footnote:[Wenn der Eingang eine Position ist, bedeutet dies, dass "Position" und "Geschwindigkeit" begrenzt sind.]

note: type: Table
en: Limit the output signal to fall between min and max. 
    Limit its slew rate to less than maxv per second. Limit its second derivative to less than MaxA per second squared footnote:[When
    the input is a position, this means that the 'position', 'velocity', and 'acceleration' are limited.].
de: Begrenzen Sie das Ausgangssignal so, dass es zwischen min und max liegt. 
    Begrenzen Sie die Anstiegsrate auf weniger als maxv pro Sekunde. Begrenzung der zweiten Ableitung auf weniger als MaxA pro Sekunde zum Quadrat footnote:[Wenn
    die Eingabe eine Position ist, bedeutet dies, dass die "Position", "Geschwindigkeit" und "Beschleunigung" begrenzt sind].

note: type: Table
en: One-dimensional lookup table
de: Eindimensionale Nachschlagetabelle (engl. lookup table)

note: type: Table
en: Compute the majority of 3 inputs
de: Berechne die Mehrheit von 3 Eingaben

note: type: Table
en: Tracks the minimum and maximum values of the input to the outputs.
de: Verfolgt die minimalen und maximalen Werte der Eingabe für die Ausgänge.

note: type: Table
en: Product of two inputs.
de: Produkt aus zwei Eingaben.

note: type: Table
en: Select from one of 16 input values (multiplexer).
de: Wahl zwischen zwei Eingangswerten aus (multiplexer).

note: type: Table
en: Select from one of two input values (multiplexer).
de: Wahl zwischen zwei Eingangswerten aus (multiplexer).

note: type: Table
en: Select from one of four input values (multiplexer).
de: Wählt einen von vier Eingangswerten (multiplexer).

note: type: Table
en: Select from one of eight input values (multiplexer).
de: Wahl aus einem von acht Eingangswerten (multiplexer).

note: type: Table
en: Select one from several input values (multiplexer).
de: Auswahl aus einem von sechzehn Eingangswerten (multiplexer).

note: type: Table
en: Determine whether two values are roughly equal.
de: Bestimmt, ob zwei Werte annähernd gleich sind.

note: type: Table
en: Adds an offset to an input, and subtracts it from the feedback value.
de: Fügt einer Eingabe einen Offset hinzu und subtrahiert ihn vom Feedbackwert.

note: type: Table
en: Sample and Hold.
de: Probenahme und Halten.

note: type: Table
en: Applies a scale and offset to its input.
de: Wendet eine Skalierung und einen Offset auf seinen Eingang an.

note: type: Table
en: Sum of two inputs (each with a gain) and an offset.
de: Summe aus zwei Eingängen (jeweils mit einem Verstärkungsfaktor) und einem Offset.

note: type: Table
en: Component that measures thread scheduling timing behavior.
de: Komponente, die das Zeitverhalten bei der Thread-Planung misst.

note: type: Table
en: Counts up or down, with optional limits and wraparound behavior.
de: Zählt aufwärts oder abwärts, mit optionalen Grenzen und Wraparound-Verhalten.

note: type: Table
en: Window comparator.
de: Fenster-Komparator.

note: type: Table
en: Convert a group of bits to an integer.
de: Gewichtete Summe, konvertiert eine Gruppe von Bits in eine ganze Zahl.

note: type: Table
en: xhc-hb04 convenience utility
de: xhc-hb04 Komfort-Dienstprogramm

note: type: Title ====
en: Type conversion
de: Typumwandlung

note: type: Table
en: Converts a number to the gray-code representation
de: Konvertierung einer Zahl in die Gray-Code Repräsentation

note: type: Table
en: Converts an unsigned-32 input into individual bits
de: Konvertiert eine vorzeichenlose 32-Eingabe in einzelne Bits

note: type: Table
en: Converts from bit to float
de: Konvertiert von bit in float

note: type: Table
en: Converts from bit to s32
de: Konvertiert von bit nach s32

note: type: Table
en: Converts from bit to u32
de: Konvertiert von bit nach u32

note: type: Table
en: Converts from float to s32
de: Konvertiert von float nach s32

note: type: Table
en: Converts from float to u32
de: Konvertiert von float nach u32

note: type: Table
en: Converts from s32 to bit
de: Konvertiert von s32 in Bit

note: type: Table
en: Converts from s32 to float
de: Konvertiert von s32 in float

note: type: Table
en: Converts from s32 to u32
de: Konvertiert von s32 nach u32

note: type: Table
en: Converts from u32 to bit
de: Konvertiert von u32 in Bit

note: type: Table
en: Converts from u32 to float
de: Konvertiert von u32 in float

note: type: Table
en: Converts from u32 to s32
de: Konvertiert von u32 nach s32

note: type: Table
en: Converts gray-code input to binary
de: Konvertiert Gray-Code-Eingabe in Binärformat

note: type: Title ===
en: Kinematics (Realtime)
de: Kinematiken (Echtzeit)

note: type: Table
en: CoreXY kinematics
de: CoreXY-Kinematiken

note: type: Table
en: Kinematics for a differential transmission
de: Kinematik für ein Differentialgetriebe

note: type: Table
en: Kinematics module that maps one axis to multiple joints.
de: Kinematikmodul, das eine Achse auf mehrere Gelenke abbildet.

note: type: Table
en: Gives six degrees of freedom in position and orientation (XYZABC). The location of the motors is defined at compile time.
de: Ergibt sechs Freiheitsgrade in Position und Orientierung (XYZABC). Die Position der Motoren wird zur Kompilierzeit festgelegt.

note: type: Table
en: Kinematics that can model a general serial-link manipulator with up to 6 angular joints.
de: Kinematik, die einen allgemeinen Manipulator mit seriellen Gliedern und bis zu 6 Winkelgelenken modellieren kann.

note: type: Table
en: Kinematics definitions for LinuxCNC.
de: Kinematik Definitionen für LinuxCNC.

note: type: Table
en: Kinematics for a linear delta robot
de: Kinematik für pumaähnliche Roboter

note: type: Table
en: Kinematics for a tabletop 5 axis mill named 'max' with tilting head (B axis) and horizontal rotary mounted to the table (C axis). Provides UVW motion in the rotated coordinate system. The source file, maxkins.c, may be a useful starting point for other 5-axis systems.
de: Kinematik für eine 5-Achsen-Tischfräse namens 'max' mit schwenkbarem Kopf (B-Achse) und horizontaler Drehung auf dem Tisch (C-Achse). Ermöglicht UVW-Bewegung im gedrehten Koordinatensystem. Die Quelldatei, maxkins.c, kann ein nützlicher Ausgangspunkt für andere 5-Achsen-Systeme sein.

note: type: Table
en: Switchable kinematics for a mill-turn machine
de: Umschaltbare Kinematik für eine Fräs-Dreh-Maschine

note: type: Table
en: Kinematics for PUMA-style robots.
de: Kinematik für PUMA-ähnliche Roboter.

note: type: Table
en: Kinematics for a rose engine
de: Kinematik für einen Rosenmotor

note: type: Plain text
en: The X and Y axes are rotated 45 degrees compared to the joints 0 and 1.
de: Die X- und Y-Achsen sind um 45 Grad gegenüber den Gelenken 0 und 1 gedreht.

note: type: Table
en: Kinematics for SCARA-type robots.
de: Kinematik für SCARA-Roboter.

note: type: Table
en: The joints represent the distance of the controlled point from three predefined locations (the motors), giving three degrees of freedom in position (XYZ).
de: Die Gelenke stellen den Abstand des kontrollierten Punktes von drei vordefinierten Orten (den Motoren) dar, was drei Freiheitsgrade in der Position (XYZ) ergibt.

note: type: Table
en: 1:1 correspondence between joints and axes. Most standard milling machines and lathes use the trivial kinematics module.
de: 1:1-Entsprechung zwischen Gelenken und Achsen. Die meisten Standardfräs- und -drehmaschinen verwenden das triviale Kinematikmodul.

note: type: Table
en: Template for user-built kinematics
de: Vorlage für benutzerdefinierte Kinematiken

note: type: Title ===
en: Motor control (Realtime)
de: Motor control (Echtzeit)

note: type: Table
en: Proportional/integral/derivative controller with auto tuning.
de: Proportional-/Integral-/Ableitungsregler mit Selbstoptimierung.

note: type: Table
en: BLDC and AC-servo control component
de: BLDC- und AC-Servo-Regelkomponenten

note: type: Table
en: Two input version of Clarke transform
de: Zwei-Eingabe-Version der Clarke-Transformation

note: type: Table
en: Clarke (3 phase to cartesian) transform
de: Clarke-Transformation (3-Phasen nach kartesisch)

note: type: Table
en: Inverse Clarke transform
de: Inverse Clarke-Transformation

note: type: Table
en: Software counting of quadrature encoder signals, see <<sec:encoder,Description>>.
de: Software-Zählung von Quadratur-Encoder-Signalen, siehe <<sec:encoder,Description>>.

note: type: Table
en: Proportional/integral/derivative controller, <<sec:pid,Description>>.
de: Proportionaler/integraler/derivativer Regler, <<sec:pid,Beschreibung>>.

note: type: Table
en: Software PWM/PDM generation, see <<sec:pwmgen,Description>>.
de: Software-PWM/PDM-Erzeugung, siehe <<sec:pwmgen,Beschreibung>>.

note: type: Table
en: Software step pulse generation, see <<sec:stepgen,Description>>.
de: Software-Schrittimpulsgenerierung, siehe <<sec:stepgen,Beschreibung>>.

note: type: Title ===
en: Other (Realtime)
de: Sonstiges (Echtzeit)

note: type: Table
en: Build, compile and install LinuxCNC HAL components.
de: Erstellen, kompilieren und installieren Sie LinuxCNC HAL Komponenten.

note: type: Table
en: Realtime software PLC based on ladder logic. See <<cha:classicladder,ClassicLadder>> chapter for more information.
de: Echtzeit-Software-SPS (engl. PLC), die auf Kontaktplan-Logik basiert. Siehe Kapitel <<cha:classicladder,ClassicLadder>> für weitere Informationen.

note: type: Table
en: Creates hard realtime HAL threads.
de: Erzeugt harte Echtzeit-HAL-Threads.

note: type: Table
en: Creates a square-wave for the 'charge pump' input of some controller boards.
    The 'Charge Pump' should be added to the base thread function. When enabled the output is on for one period and off for one period. 
    To calculate the frequency of the output 1/(period time in seconds x 2) = Hz. For example if you have a base period of 100,000 ns that 
    is 0.0001 seconds and the formula would be 1/(0.0001 x 2) = 5,000 Hz or 5 kHz.
de: Erzeugt eine Rechteckwelle für den 'Charge Pump'-Eingang einiger Controller-Boards.
    Die Funktion "Charge Pump" sollte zur Basis-Thread-Funktion hinzugefügt werden. Wenn sie aktiviert ist, dann ist der Ausgang eine Periode lang an und eine Periode lang aus. 
    Zur Berechnung der Frequenz des Ausgangs wird 1/(Periodenzeit in Sekunden x 2) = Hz verwendet. Wenn Sie zum Beispiel eine Basisperiode von 100.000 ns haben, ist das 
    0,0001 Sekunden und die Formel wäre 1/(0,0001 x 2) = 5.000 Hz oder 5 kHz.

note: type: Table
en: Electronic gear to synchronize two axes.
de: Elektronisches Getriebe zur Synchronisierung zweier Achsen.

note: type: Table
en: Multiply the input by the ratio of current velocity to the feed rate.
de: Multipliziert die Eingabe mit dem Verhältnis von aktueller Geschwindigkeit und Vorschubgeschwindigkeit.

note: type: Table
en: link:../man/man9/gladevcp.9.html[gladevcp (Realtime)]
de: link:../man/man9/gladevcp.9.html[GladeVCP (Echtzeit)]

note: type: Table
en: displays Virtual control Panels built with GTK / GLADE
de: zeigt mit GTK/Glade erstellte virtuelle Kontrollfelder an

note: type: Table
en: Select from one of two speed ranges.
de: Wählt einen von zwei Geschwindigkeitsbereichen aus.

note: type: Table
en: Sets nonlinear joypad movements, deadbands and scales.
de: Setzt nichtlineare Joypad-Bewegungen, Deadbands und Skalen.

note: type: Table
en: Sample data from HAL in real time.
de: Probendaten von HAL in Echtzeit.

note: type: Table
en: Probe a pretend hemisphere.
de: Sondieren einer angenommenen Hemisphäre.

note: type: Table
en: Used by Stepconf to allow testing of acceleration and velocity values for an axis.
de: Wird von Stepconf verwendet, um das Testen von Beschleunigungs- und Geschwindigkeitswerten für eine Achse zu ermöglichen.

note: type: Table
en: Stream file data into HAL in real time.
de: Streamen von Daten aus Dateien an HAL in Echtzeit.

note: type: Table
en: Set output pins with values from parameters (deprecated).
de: Legen Sie Ausgabepins mit Werten aus Parametern fest (veraltet).

note: type: Table
en: Component for testing thread behavior.
de: Komponente zum Testen des Threadverhaltens.

note: type: Table
en: Accumulated run-time timer counts HH:MM:SS of 'active' input.
de: Kumulierte Laufzeit des Timers zählt HH:MM:SS des 'aktiven' Eingangs.

note: type: Table
en: Monitor one to thirty-two inputs for a 'heartbeat'.
de: Überwachen Sie einen bis zweiunddreißig Eingänge auf einen „Herzschlag“.

note: type: Title ==
en: HAL API calls
de: HAL-API-Aufrufe

note: type: Title ==
en: RTAPI calls
de: RTAPI-Aufrufe

note: type: Table
en: Convert integers to HAL pins. Optionally scan a matrix of IO ports
    to create those integers.
de: Konvertierung von Ganzzahlen in HAL-Pins. Optionales Scannen einer Matrix von IO-Ports
    um diese Ganzzahlen zu erzeugen.

note: type: Table
en: log motion commands sent from
    LinuxCNC's Task modul
de: log Bewegungsbefehle gesendet von
    Task-Modul von LinuxCNC

note: type: Title =
en: HAL General Reference(((HAL General Reference)))
de: HAL Allgemeine Referenz(((HAL Allgemeine Referenz)))

note: type: Title ==
en: HAL Entity Names(((HAL Entity Names)))
de: HAL-Entitätsnamen(((HAL-Entitätsnamen)))

note: type: Plain text
en: All HAL entities are accessible and manipulable by their names, so documenting the names of pins, signals, parameters, etc., is very important. Names in HAL have a maximum length of 41 characters (as defined by HAL_NAME_LEN in hal.h). Many names will be presented in the general form, with formatted text _<like-this>_ representing fields of various values.
de: Alle HAL-Entitäten sind über ihre Namen zugänglich und manipulierbar, daher ist die Dokumentation der Namen von Pins, Signalen, Parametern usw. sehr wichtig. Namen in HAL haben eine maximale Länge von 41 Zeichen (wie durch HAL_NAME_LEN in hal.h definiert). Viele Namen werden in der allgemeinen Form dargestellt, mit formatiertem Text _<wie-dies>_, der Felder mit verschiedenen Werten darstellt.

note: type: Plain text
en: When pins, signals, or parameters are described for the first time, their name will be preceded by their type in parentheses (_float_) and followed by a brief description. Typical pins definitions look like these examples:
de: Wenn Pins, Signale oder Parameter zum ersten Mal beschrieben werden, wird ihrem Namen der Typ in Klammern vorangestellt (_float_), gefolgt von einer kurzen Beschreibung. Typische Pin-Definitionen sehen wie diese Beispiele aus:

note: type: Plain text
en: The HAL pin associated with the physical input pin _<pinnum>_ of the db25 connector.
de: Der HAL-Pin, der mit dem physischen Eingangspin _<pinnum>_ des db25-Anschlusses verbunden ist.

note: type: Plain text
en: The PID loop output
de: Der PID-Regelkreis Ausgang

note: type: Plain text
en: Occasionally, an abbreviated version of the name may be used, for example the second pin above could be simply called with _.output_ when it can be done without causing confusion.
de: Gelegentlich kann eine abgekürzte Version des Namens verwendet werden, z. B. könnte der zweite Pin oben einfach mit _.output_ aufgerufen werden, wenn dies möglich ist, ohne dass es zu Verwechslungen kommt.

note: type: Title ==
en: HAL General Naming Conventions(((HAL General Naming Conventions)))
de: Allgemeine HAL-Namenskonventionen(((Allgemeine HAL-Namenskonventionen)))

note: type: Plain text
en: Consistent naming conventions would make HAL much easier to use. For example, if every encoder driver provided the same set of pins and named them the same way it would be easy to change from one type of encoder driver to another. Unfortunately, like many open-source projects, HAL is a combination of things that were designed, and things that simply evolved. As a result, there are many inconsistencies. This section attempts to address that problem by defining some conventions, but it will probably be a while before all the modules are converted to follow them.
de: Einheitliche Namenskonventionen würden die Verwendung von HAL wesentlich erleichtern. Wenn zum Beispiel jeder Encoder-Treiber den gleichen Satz von Pins zur Verfügung stellen und diese auch gleich benennen würde, wäre es einfach, von einem Encoder-Treiber zu einem anderen zu wechseln. Leider ist HAL, wie viele Open-Source-Projekte, eine Kombination aus Dingen, die entworfen wurden, und Dingen, die sich einfach entwickelt haben. Infolgedessen gibt es viele Inkonsistenzen. Dieser Abschnitt versucht, dieses Problem zu lösen, indem er einige Konventionen definiert, aber es wird wahrscheinlich noch eine Weile dauern, bis alle Module so konvertiert sind, dass sie ihnen folgen.

note: type: Plain text
en: Halcmd and other low-level HAL utilities treat HAL names as single entities, with no internal structure. However, most modules do have some implicit structure. For example, a board provides several functional blocks, each block might have several channels, and each channel has one or more pins. This results in a structure that resembles a directory tree. Even though halcmd doesn't recognize the tree structure, proper choice of naming conventions will let it group related items together (since it sorts the names). In addition, higher level tools can be designed to recognize such structure, if the names provide the necessary information. To do that, all HAL components should follow these rules:
de: Halcmd und andere Low-Level-HAL-Utilities behandeln HAL-Namen als einzelne Einheiten ohne interne Struktur. Die meisten Module haben jedoch eine implizite Struktur. Ein Board bietet beispielsweise mehrere Funktionsblöcke, jeder Block kann mehrere Kanäle haben, und jeder Kanal hat einen oder mehrere Pins. Dies führt zu einer Struktur, die einem Verzeichnisbaum ähnelt. Auch wenn halcmd die Baumstruktur nicht erkennt, kann es durch die richtige Wahl der Namenskonventionen verwandte Elemente zusammenfassen (da es die Namen sortiert). Darüber hinaus können Werkzeuge auf höherer Ebene so gestaltet werden, dass sie eine solche Struktur erkennen, wenn die Namen die notwendigen Informationen liefern. Um dies zu erreichen, sollten alle HAL-Komponenten diese Regeln befolgen:

note: type: Plain text
en: Dots (“.”) separate levels of the hierarchy.  This is analogous to the slash (“/”) in a filename.
de: Punkte (".") trennen die einzelnen Ebenen der Hierarchie.  Dies ist vergleichbar mit dem Schrägstrich ("/") in einem Dateinamen.

note: type: Plain text
en: Hyphens (“-”) separate words or fields in the same level of the hierarchy.
de: Bindestriche („-“) trennen Wörter oder Felder auf derselben Hierarchieebene.

note: type: Plain text
en: HAL components should not use underscores or “MixedCase”.  footnote:[Underlined characters have been removed, but there are still a few cases of broken mixture, for example _pid.0.Pgain_ in place of _pid.0.p-gain_.]
de: HAL-Komponenten sollten keine Unterstriche oder "MixedCase" verwenden. footnote:[Die unterstrichenen Zeichen wurden entfernt, aber es gibt immer noch einige Fälle, in denen die Mischung nicht stimmt, zum Beispiel _pid.0.Pgain_ anstelle von _pid.0.p-gain_.]

note: type: Plain text
en: Use only lowercase letters and numbers in names.
de: Verwenden Sie in Namen nur Kleinbuchstaben und Zahlen.

note: type: Title ==
en: Hardware Driver Naming Conventions(((HAL Hardware Driver Naming Conventions)))
de: Namenskonventionen für Hardwaretreiber(((HAL-Namenskonventionen für Hardwaretreiber)))

note: type: delimited block =
en: Most drivers do not follow these conventions in version 2.0.  This chapter is really a guide for future developments.
de: Die meisten Treiber folgen diesen Konventionen in Version 2.0 nicht.  Dieses Kapitel ist eher ein Leitfaden für zukünftige Entwicklungen.

note: type: Title ===
en: Pins/Parameters names(((HAL Hardware Driver Pins/Parameters Names)))
de: Pins/Parameter-Namen(((HAL Hardware-Treiber Pins/Parameter-Namen)))

note: type: Plain text
en: Hardware drivers should use five fields (on three levels) to make up a pin or parameter name, as follows:
de: Hardwaretreiber sollten fünf Felder (auf drei Ebenen) verwenden, um einen PIN- oder Parameternamen wie folgt zu bilden:

note: type: delimited block -
en: <device-name>.<device-num>.<io-type>.<chan-num>.<specific-name>
de: <Gerätename>.<Gerätenummer>.<E/A-Typ>.<Kanal-Nummer>.<Spezifischer Name>
    (engl. <device-name>.<device-num>.<io-type>.<chan-num>.<specific-name>)

note: type: Plain text
en: The individual fields are:
de: Die einzelnen Felder sind:

note: type: Labeled list
en: <device-name>
de: <Gerätename> (engl. device-name)

note: type: Plain text
en: The device that the driver is intended to work with. This is most often an interface board of some type, but there are other possibilities.
de: Das Gerät, mit dem der Treiber arbeiten soll. In den meisten Fällen handelt es sich dabei um eine Schnittstellenkarte, aber es gibt auch andere Möglichkeiten.

note: type: Labeled list
en: <device-num>
de: <Gerät-Nr.> (engl. device-num)

note: FIXME Has this indeed been fixed and footnote should be removed type: Plain text
en: It is possible to install more than one servo board, parallel port, or other hardware device in a computer. The device number identifies a specific device. Device numbers start at 0 and increment. footnote:[Some hardwares use jumpers or other devices to define a specific identification for each. Ideally, the driver provides a way for the user to say, the _device-num 0 is specific to the device that has ID XXX_, its subsets will all carry a number starting with 0. But at present, some drivers use the ID directly as the peripheral number. Which means it is possible to have a device number 2, without having any in number 0. This is a bug that should disappear in version 2.1.]
de: Es ist möglich, mehr als eine Servokarte, eine parallele Schnittstelle oder ein anderes Hardwaregerät in einem Computer zu installieren. Die Gerätenummer identifiziert ein bestimmtes Gerät. Die Gerätenummern beginnen bei 0 und werden inkrementell erhöht. footnote:[Einige Hardwares verwenden Jumper oder andere Geräte, um eine spezifische Identifikation für jedes Gerät zu definieren. Im Idealfall bietet der Treiber dem Benutzer die Möglichkeit zu sagen: _Gerätenummer 0 ist spezifisch für das Gerät mit der ID XXX_, seine Untergruppen tragen alle eine Nummer, die mit 0 beginnt. Zurzeit verwenden einige Treiber jedoch die ID direkt als Peripherienummer. Das bedeutet, dass es möglich ist, ein Gerät mit der Nummer 2 zu haben, ohne eines mit der Nummer 0. Dies ist ein Fehler, der in Version 2.1 verschwinden sollte.]

note: type: Labeled list
en: <io-type>
de: <E/A-Typ> (engl. io-type)

note: type: Plain text
en: Most devices provide more than one type of I/O. Even the simple parallel port has both digital inputs and digital outputs. More complex boards can have digital inputs and outputs, encoder counters, pwm or step pulse generators, analog-to-digital converters, digital-to-analog converters, or other unique capabilities. The I/O type is used to identify the kind of I/O that a pin or parameter is associated with.  Ideally, drivers that implement the same I/O type, even if for very different devices, should provide a consistent set of pins and parameters and identical behavior. For example, all digital inputs should behave the same when seen from inside the HAL, regardless of the device.
de: Die meisten Geräte bieten mehr als eine Art von E/A. Selbst der einfache Parallelport hat sowohl digitale Eingänge als auch digitale Ausgänge. Komplexere Karten können digitale Ein- und Ausgänge, Encoderzähler, PWM- oder Schrittimpulsgeneratoren, Analog-Digital-Wandler, Digital-Analog-Wandler oder andere einzigartige Funktionen haben. Der E/A-Typ wird verwendet, um die Art der E/A zu identifizieren, mit der ein Pin oder Parameter verbunden ist.  Idealerweise sollten Treiber, die denselben E/A-Typ implementieren, auch wenn sie für sehr unterschiedliche Geräte bestimmt sind, einen konsistenten Satz von Pins und Parametern und ein identisches Verhalten aufweisen. Beispielsweise sollten sich alle digitalen Eingänge von der HAL aus gesehen gleich verhalten, unabhängig vom Gerät.

note: type: Labeled list
en: <chan-num>
de: <Kanal-Nummer> (engl. channel-number, kurz chan-num)

note: type: Plain text
en: Virtually every I/O device has multiple channels, and the channel number identifies one of them. Like device numbers, channel numbers start at zero and increment.footnote:[One exception to the "channel numbers start at zero" rule is the parallel port. Its HAL pins are numbered with the corresponding pin number on the DB-25 connector. This is convenient for wiring, but inconsistent with other drivers. There is some debate over whether this is a bug or a feature.] If more than one device is installed, the channel numbers on additional devices start over at zero. If it is possible to have a channel number greater than 9, then channel numbers should be two digits, with a leading zero on numbers less than 10 to preserve sort ordering. Some modules have pins and/or parameters that affect more than one channel. For example a PWM generator might have four channels with four independent "duty-cycle" inputs, but one "frequency" parameter that controls all four channels (due to hardware limitations). The frequency parameter should use "0-3" as the channel number.
de: Praktisch jedes E/A-Gerät verfügt über mehrere Kanäle, und die Kanalnummer identifiziert einen dieser Kanäle. Wie die Gerätenummern beginnen auch die Kanalnummern bei Null und erhöhen sich. Fußnote:[Eine Ausnahme von der Regel "Kanalnummern beginnen bei Null" ist der Parallelport. Seine HAL-Pins sind mit der entsprechenden Pin-Nummer auf dem DB-25-Stecker nummeriert. Dies ist praktisch für die Verdrahtung, aber inkonsistent mit anderen Treibern. Es ist umstritten, ob dies ein Fehler oder eine Funktion ist]. Wenn mehr als ein Gerät installiert ist, beginnen die Kanalnummern auf zusätzlichen Geräten wieder bei Null. Wenn es möglich ist, eine Kanalnummer größer als 9 zu haben, dann sollten die Kanalnummern zweistellig sein, mit einer führenden Null bei Nummern kleiner als 10, um die Sortierreihenfolge zu erhalten. Einige Module haben Pins und/oder Parameter, die mehr als einen Kanal betreffen. Ein PWM-Generator kann z. B. vier Kanäle mit vier unabhängigen "Tastverhältnis"-Eingängen haben, aber einen "Frequenz"-Parameter, der alle vier Kanäle steuert (aufgrund von Hardwarebeschränkungen). Der Frequenzparameter sollte "0-3" als Kanalnummer verwenden.

note: type: Labeled list
en: <specific-name>
de: <Spezifischer-Name>

note: type: Plain text
en: An individual I/O channel might have just a single HAL pin associated with it, but most have more than one. For example, a digital input has two pins, one is the state of the physical pin, the other is the same thing inverted. That allows the configurator to choose between active high and active low inputs. For most io-types, there is a standard set of pins and parameters, (referred to as the "canonical interface") that the driver should implement. The canonical interfaces are described in the <<cha:hal-canonical-device-interfaces,Canonical Device Interfaces>> chapter.
de: Einem einzelnen E/A-Kanal kann nur ein einziger HAL-Pin zugeordnet sein, aber die meisten haben mehr als einen. Ein digitaler Eingang hat beispielsweise zwei Pins, von denen einer den Zustand des physischen Pins und der andere den gleichen Zustand invertiert darstellt. So kann der Konfigurator zwischen aktiven High und aktiven Low-Eingängen wählen. Für die meisten E/A-Typen gibt es einen Standardsatz von Pins und Parametern (die so genannte "kanonische Schnittstelle"), die der Treiber implementieren sollte. Die kanonischen Schnittstellen sind im Kapitel <<cha:hal-canonical-device-interfaces,Kanonische Geräte-Schnittstellen>> beschrieben.

note: type: Plain text
en: The position output of the third encoder channel on the first Motenc board.
de: Der Positionsausgang des dritten Encoderkanals auf der ersten Motenc-Platine.

note: type: Plain text
en: The state of the fourth digital input on the first Servo-to-Go board.
de: Der Zustand des vierten digitalen Eingangs auf der ersten Servo-to-Go-Karte.

note: type: Plain text
en: The carrier frequency used for PWM channels 0 through 3 on the first Pico Systems ppmc board.
de: Die für die PWM-Kanäle 0 bis 3 auf der ersten Pico Systems ppmc-Karte verwendete Trägerfrequenz.

note: type: Title ===
en: Function Names(((HAL Hardware Driver Function Names)))
de: Funktionsnamen(((HAL Hardware-Treiber Funktionsnamen)))

note: type: Plain text
en: Hardware drivers usually only have two kinds of HAL functions, ones that read the hardware and update HAL pins, and ones that write to the hardware using data from HAL pins. They should be named as follows:
de: Hardwaretreiber haben in der Regel nur zwei Arten von HAL-Funktionen: solche, die aus der Hardware lesen und HAL-Pins aktualisieren, und solche, die mit Daten von HAL-Pins in die Hardware schreiben. Sie sollten wie folgt benannt werden:

note: type: Plain text
en: The same as used for pins and parameters.
de: Das gleiche wie für Pins und Parameter.

note: type: Plain text
en: The specific device that the function will access.
de: Das spezifische Gerät, auf das die Funktion zugreift.

note: type: Plain text
en: Optional. A function may access all of the I/O on a board, or it may access only a certain type. For example, there may be independent functions for reading encoder counters and reading digital I/O. If such independent functions exist, the <io-type> field identifies the type of I/O they access. If a single function reads all I/O provided by the board, <io-type> is not used.  footnote:[Note to driver programmers: do NOT implement separate functions for different I/O types unless they are interruptible and can work in independent threads. If interrupting an encoder read, reading digital inputs, and then resuming the encoder read will cause problems, then implement a single function that does everything.]
de: Optional. Eine Funktion kann auf alle E/A auf einer Karte zugreifen oder nur auf einen bestimmten Typ. So kann es beispielsweise unabhängige Funktionen zum Lesen von Encoderzählern und zum Lesen von digitalen E/A geben. Für solche unabhängigen Funktionen gibt das Feld <io-type> die Art der E/A an, auf die sie zugreifen. Wenn eine einzige Funktion alle von der Karte bereitgestellten E/A liest, wird <io-type> nicht verwendet. footnote:[Hinweis für Treiberprogrammierer: Implementieren Sie KEINE separaten Funktionen für verschiedene E/A-Typen, es sei denn, sie sind unterbrechbar und können in unabhängigen Threads arbeiten. Wenn die Unterbrechung eines Encoder-Lesevorgangs, das Lesen digitaler Eingänge und die anschließende Wiederaufnahme des Encoder-Lesevorgangs zu Problemen führen, dann implementieren Sie eine einzige Funktion, die alles erledigt.]

note: type: Plain text
en: Optional. Used only if the <io-type> I/O is broken into groups and accessed by different functions.
de: Optional. Wird nur verwendet, wenn die <io-type> E/A in Gruppen unterteilt ist und verschiedene Funktionen darauf zugreifen.

note: type: Plain text
en: Indicates whether the function reads the hardware or writes to it.
de: Gibt an, ob die Funktion die Hardware liest (engl. read) oder in sie schreibt (engl. write).

note: type: Plain text
en: Reads all encoders on the first motenc board.
de: Liest alle Encoder auf der ersten Motenc-Platine aus.

note: type: Plain text
en: Reads the second 8 bit port on the first generic 8255 based digital I/O board.
de: Liest den zweiten 8-Bit-Port auf der ersten generischen 8255-basierten digitalen E/A-Karte.

note: type: Plain text
en: Writes all outputs (step generators, pwm, DACs, and digital) on the first Pico Systems ppmc board.
de: Schreibt alle Ausgänge (Schrittgeneratoren, PWM, DACs und Digital) auf die erste Pico Systems ppmc-Karte.

note: type: Title =
en: HAL Examples(((HAL Examples)))
de: HAL-Beispiele(((HAL-Beispiele)))

note: type: Plain text
en: All of these examples assume you are starting with a stepconf based configuration and have two threads 'base-thread' and 'servo-thread'. The stepconf wizard will create an empty custom.hal and a custom_postgui.hal file. The custom.hal file will be loaded after the configuration HAL file and the custom_postgui.hal file is loaded after the GUI has been loaded.
de: Bei all diesen Beispielen wird davon ausgegangen, dass Sie mit einer stepconf-basierten Konfiguration beginnen und zwei Threads 'base-thread' und 'servo-thread' haben. Der stepconf-Assistent erstellt eine leere Datei custom.hal und eine Datei custom_postgui.hal. Die Datei custom.hal wird nach der Konfigurations-HAL-Datei geladen und die Datei custom_postgui.hal wird geladen, nachdem die GUI geladen wurde.

note: type: Title ==
en: Connecting Two Outputs
de: Verbinden von zwei Ausgängen

note: type: Plain text
en: To connect two outputs to an input you can use the or2 component. The or2 works like this, if either input to or2 is on then the or2 output is on. If neither input to or2 is on the or2 output is off.
de: Um zwei Ausgänge mit einem Eingang zu verbinden, können Sie die Komponente or2 verwenden. Die or2-Komponente funktioniert folgendermaßen: Wenn einer der beiden Eingänge von or2 eingeschaltet ist, dann ist der or2-Ausgang eingeschaltet. Wenn keiner der beiden Eingänge von or2 eingeschaltet ist, dann ist der or2-Ausgang ausgeschaltet.

note: type: Plain text
en: For example to have two pyvcp buttons both connected to one led.
de: Zum Beispiel, um zwei pyvcp-Tasten zu haben, die beide an eine LED angeschlossen sind.

note: type: Block title
en: The .xml file
de: Die .xml-Datei

note: type: Plain text
en: When you run this example in an Axis simulator created with the Stepconf Wizard you can open a terminal and see the pins created with 'loadrt or2' by typing in 'halcmd show pin or2' in the terminal
de: Wenn Sie dieses Beispiel in einem mit dem Stepconf-Assistenten erstellten Axis-Simulator ausführen, können Sie ein Terminal öffnen und die mit 'loadrt or2' erstellten Pins sehen, indem Sie 'halcmd show pin or2' in das Terminal eingeben

note: type: Plain text
en: You can see from the HAL command 'show pin or2' that the 'button-1' pin is connected to the 'or2.0.in0' pin and from the direction arrow you can see that the button is and output and the 'or2.0.in0' is an input. The output from or2 goes to the input of the led.
de: Aus dem HAL-Befehl "show pin or2" geht hervor, dass der Pin "button-1" mit dem Pin "or2.0.in0" verbunden ist, und aus dem Richtungspfeil geht hervor, dass der Button ein Ausgang und der "or2.0.in0" ein Eingang ist. Der Ausgang von or2 geht an den Eingang der LED.

note: type: Title ==
en: Manual Toolchange
de: Manueller Werkzeugwechsel

note: type: Plain text
en: In this example it is assumed that you're 'rolling your own' configuration and wish to add the HAL Manual Toolchange window. The HAL Manual Toolchange is primarily useful if you have presettable tools and you store the offsets in the tool table. If you need to touch off for each tool change then it is best just to split up your G-code. To use the HAL Manual Toolchange window you basically have to load the hal_manualtoolchange component then send the iocontrol 'tool change' to the hal_manualtoolchange 'change' and send the hal_manualtoolchange 'changed' back to the iocontrol 'tool changed'. A pin is provided for an external input to indicate the tool change is complete.
de: In diesem Beispiel wird davon ausgegangen, dass Sie Ihre eigene Konfiguration erstellen und das Fenster HAL Manual Toolchange hinzufügen möchten. Der manuelle HAL-Werkzeugwechsel ist vor allem dann nützlich, wenn Sie voreinstellbare Werkzeuge haben und die Offsets in der Werkzeugtabelle speichern. Wenn Sie für jeden Werkzeugwechsel einen neuen Wert eingeben müssen, ist es am besten, wenn Sie Ihren G-Code aufteilen. Um das HAL Manual Toolchange-Fenster zu verwenden, müssen Sie grundsätzlich die hal_manualtoolchange-Komponente laden, dann die iocontrol-Komponente "tool change" an die hal_manualtoolchange-Komponente "change" senden und die hal_manualtoolchange-Komponente "changed" an die iocontrol-Komponente "tool changed" zurücksenden. Ein Pin ist für einen externen Eingang vorgesehen, um anzuzeigen, dass der Werkzeugwechsel abgeschlossen ist.

note: type: Plain text
en: This is an example of manual toolchange 'with' the HAL Manual Toolchange component:
de: Dies ist ein Beispiel für den manuellen Werkzeugwechsel 'mit' der Komponente HAL Manual Toolchange:

note: type: Plain text
en: This is an example of manual toolchange 'without' the HAL Manual Toolchange component:
de: Dies ist ein Beispiel für den manuellen Werkzeugwechsel 'ohne' die Komponente HAL Manual Toolchange:

note: type: Title ==
en: Compute Velocity
de: Geschwindigkeit berechnen

note: type: Plain text
en: This example uses 'ddt', 'mult2' and 'abs' to compute the velocity of a single axis. For more information on the real time components see the man pages or the HAL Components List (<<sec:hal-components>>).
de: Dieses Beispiel verwendet 'ddt', 'mult2' und 'abs', um die Geschwindigkeit einer einzelnen Achse zu berechnen. Weitere Informationen zu den Echtzeitkomponenten finden Sie in den Man Pages oder in der HAL Components List (<<sec:hal-components>>).

note: type: Plain text
en: The first thing is to check your configuration to make sure you are not using any of the real time components all ready. You can do this by opening up the HAL Configuration window and look for the components in the pin section. If you are then find the .hal file that they are being loaded in and increase the counts and adjust the instance to the correct value. Add the following to your custom.hal file.
de: Als Erstes sollten Sie Ihre Konfiguration überprüfen, um sicherzustellen, dass Sie keine der Echtzeitkomponenten bereits verwenden. Öffnen Sie dazu das HAL-Konfigurationsfenster und suchen Sie nach den Komponenten im Pin-Bereich. Wenn dies der Fall ist, suchen Sie die .hal-Datei, in die sie geladen werden, und erhöhen Sie die Anzahl und passen Sie die Instanz auf den richtigen Wert an. Fügen Sie Folgendes zu Ihrer custom.hal-Datei hinzu.

note: type: Plain text
en: Load the realtime components.
de: Laden der Echtzeitkomponenten.

note: type: Plain text
en: Add the functions to a thread so it will get updated.
de: Fügen Sie die Funktionen in einen Thread ein, damit dieser aktualisiert wird.

note: type: Plain text
en: Make the connections.
de: Herstellen der Verbindungen.

note: type: Plain text
en: In this last section we are setting the mult2.0.in1 to 60 to convert the inch per second to inch per minute that we get from the ddt.0.out.
de: In diesem letzten Abschnitt setzen wir mult2.0.in1 auf 60, um die Zoll pro Sekunde in Zoll pro Minute umzuwandeln, die wir von ddt.0.out erhalten.

note: type: Plain text
en: The xpos-cmd sends the commanded position to the ddt.0.in. The ddt computes the derivative of the change of the input.
de: Der xpos-cmd sendet die befohlene Position an den ddt.0.in. Der ddt berechnet die Ableitung der Änderung des Eingangs.

note: type: Plain text
en: The ddt2.0.out is multiplied by 60 to give IPM.
de: Der ddt2.0.out wird mit 60 multipliziert und ergibt die IPM (Zoll/min).

note: type: Plain text
en: The mult2.0.out is sent to the abs to get the absolute value.
de: Der mult2.0.out wird an den abs gesendet, um den absoluten Wert zu erhalten.

note: type: Plain text
en: The following figure shows the result when the X axis is moving at 15 IPM in the minus direction. Notice that we can get the absolute value from either the abs.0.out pin or the X-IPM signal.
de: Die folgende Abbildung zeigt das Ergebnis, wenn sich die X-Achse mit 15 IPM in die Minusrichtung bewegt. Beachten Sie, dass wir den absoluten Wert entweder vom abs.0.out-Pin oder dem X-IPM-Signal erhalten können.

note: type: Block title
en: HAL: Velocity Example(((HAL:Velocity example)))
de: HAL: Geschwindigkeitsbeispiel(((HAL:Geschwindigkeitsbeispiel)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: HAL: Velocity Example
de: HAL: Geschwindigkeitsbeispiel

note: type: Title ==
en: Soft Start Details
de: Details zum Softstart

note: type: Plain text
en: This example shows how the HAL components 'lowpass', 'limit2' or 'limit3' can be used to limit how fast a signal changes.
de: Dieses Beispiel zeigt, wie die HAL-Komponenten 'Tiefpass', 'limit2' oder 'limit3' verwendet werden können, um die Änderungsgeschwindigkeit eines Signals zu begrenzen.

note: type: Plain text
en: In this example we have a servo motor driving a lathe spindle. If we just used the commanded spindle speeds on the servo it will try to go from present speed to commanded speed as fast as it can. This could cause a problem or damage the drive. To slow the rate of change we can send the spindle.N.speed-out through a limiter before the PID, so that the PID command value changes to new settings more slowly.
de: In diesem Beispiel haben wir einen Servomotor, der eine Drehbankspindel antreibt. Wenn wir nur die befohlenen Spindeldrehzahlen für den Servomotor verwenden würden, würde er versuchen, so schnell wie möglich von der aktuellen Drehzahl auf die befohlene Drehzahl zu kommen. Dies könnte zu Problemen führen oder den Antrieb beschädigen. Um die Änderungsrate zu verlangsamen, können wir die Spindel.N.speed-out durch einen Begrenzer vor dem PID senden, so dass der PID-Befehlswert langsamer auf neue Einstellungen wechselt.

note: type: Plain text
en: Three built-in components that limit a signal are:
de: Die drei eingebauten Komponenten, die ein Signal begrenzen, sind:

note: type: Plain text
en: 'limit2' limits the range and first derivative of a signal.
de: 'limit2' begrenzt den Bereich und die erste Ableitung eines Signals.

note: type: Plain text
en: 'limit3' limits the range, first and second derivatives of a signal.
de: 'limit3' begrenzt den Bereich, die erste und zweite Ableitung eines Signals.

note: type: Plain text
en: 'lowpass' uses an exponentially-weighted moving average to track an input signal.
de: 'Tiefpass' verwendet einen exponentiell gewichteten gleitenden Durchschnitt, um ein Eingangssignal zu verfolgen.

note: type: Plain text
en: To find more information on these HAL components check the man pages.
de: Weitere Informationen über diese HAL-Komponenten finden Sie in den Man Pages.

note: type: Plain text
en: Place the following in a text file called softstart.hal. If you're not familiar with Linux place the file in your home directory.
de: Geben Sie das Folgende in eine Textdatei namens softstart.hal ein. Wenn Sie mit Linux nicht vertraut sind, legen Sie die Datei in Ihr Home-Verzeichnis.

note: type: Plain text
en: Open a terminal window and run the file with the following command.
de: Öffnen Sie ein Terminalfenster und führen Sie die Datei mit dem folgenden Befehl aus.

note: type: Plain text
en: When the HAL Oscilloscope first starts up click 'OK' to accept the default thread.
de: Wenn das HAL Oszilloskop zum ersten Mal startet, klicken Sie auf 'OK', um den Standardfaden zu akzeptieren.

note: type: Plain text
en: Next you have to add the signals to the channels. Click on channel 1 then select 'square' from the Signals tab. Repeat for channels 2-4 and add lowpass, limit2, and limit3.
de: Als nächstes müssen Sie die Signale zu den Kanälen hinzufügen. Klicken Sie auf Kanal 1 und wählen Sie dann 'Quadrat' auf der Registerkarte Signale. Wiederholen Sie dies für die Kanäle 2-4 und fügen Sie Tiefpass, Limit2 und Limit3 hinzu.

note: type: Plain text
en: Next to set up a trigger signal click on the Source None button and select square. The button will change to Source Chan 1.
de: Um ein Triggersignal einzurichten, klicken Sie auf die Schaltfläche Source None und wählen Sie Square. Die Schaltfläche ändert sich in Quelle Kanal 1.

note: type: Plain text
en: Next click on Single in the Run Mode radio buttons box. This will start a run and when it finishes you will see your traces.
de: Als nächstes klicken Sie im Optionsfeld Run Mode auf Single. Dadurch wird ein Lauf gestartet, und nach dessen Beendigung sehen Sie die Spuren (engl. traces).

note: type: Plain text
en: To separate the signals so you can see them better click on a channel then use the Pos slider in the Vertical box to set the positions.
de: Um die Signale zu trennen, damit Sie sie besser sehen können, klicken Sie auf einen Kanal und verwenden Sie dann den Pos-Schieberegler im vertikalen Feld, um die Positionen festzulegen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Softstart screenshot
de: Softstart-Screenshot

note: type: Plain text
en: To see the effect of changing the set point values of any of the components you can change them in the terminal window. To see what different gain settings do for lowpass just type the following in the terminal window and try different settings.
de: Um zu sehen, wie sich eine Änderung der Sollwerte der einzelnen Komponenten auswirkt, können Sie diese im Terminalfenster ändern. Um zu sehen, was verschiedene Verstärkungseinstellungen für den Tiefpass bewirken, geben Sie einfach Folgendes in das Terminalfenster ein und probieren Sie verschiedene Einstellungen aus.

note: type: Plain text
en: After changing a setting run the oscilloscope again to see the change.
de: Nachdem Sie eine Einstellung geändert haben, lassen Sie das Oszilloskop erneut laufen, um die Änderung zu sehen.

note: type: Plain text
en: When you're finished type 'exit' in the terminal window to shut down halrun and close the halscope. Don't close the terminal window with halrun running as it might leave some things in memory that could prevent LinuxCNC from loading.
de: Wenn Sie fertig sind, geben Sie 'exit' in das Terminalfenster ein, um halrun zu beenden und das halscope zu schließen. Schließen Sie das Terminal-Fenster nicht, während halrun läuft, da es einige Dinge im Speicher lassen könnte, die das Laden von LinuxCNC verhindern könnten.

note: type: Plain text
en: For more information on Halscope see the HAL manual and the tutorial.
de: Weitere Informationen zu Halscope finden Sie im HAL-Handbuch und im Tutorial.

note: type: Title ==
en: Stand Alone HAL
de: Stand-Alone HAL

note: type: Plain text
en: In some cases you might want to run a GladeVCP screen with just HAL. For example say you had a stepper driven device that all you need is to run a stepper motor. A simple 'Start/Stop' interface is all you need for your application so no need to load up and configure a full blown CNC application.
de: In manchen Fällen möchten Sie vielleicht einen GladeVCP-Bildschirm nur mit HAL betreiben. Nehmen wir an, Sie haben ein schrittmotorgesteuertes Gerät und alles was Sie benötigen ist diesen Schrittmotor zusteuern. Eine einfache 'Start/Stop' Schnittstelle ist alles, was Sie für Ihre Anwendung benötigen, so dass Sie keine vollständige CNC-Anwendung laden und konfigurieren müssen.

note: type: Plain text
en: In the following example we have created a simple GladeVCP panel with one stepper.
de: Im folgenden Beispiel haben wir ein einfaches GladeVCP-Panel mit einem Schrittmotor.

note: type: Block title
en: Basic Syntax
de: Grundlegende (engl. basic) Syntax

note: type: delimited block -
en: # load the winder.glade GUI and name it winder
    loadusr -Wn winder gladevcp -c winder -u handler.py winder.glade
de: # Lädt die GUI winder.glade und nennt diese winder
    loadusr -Wn winder gladevcp -c winder -u handler.py winder.glade

note: type: delimited block -
en: # load realtime components
    loadrt threads name1=fast period1=50000 fp1=0 name2=slow period2=1000000
    loadrt stepgen step_type=0 ctrl_type=v
    loadrt hal_parport cfg="0x378 out"
de: # load Echtzeit-Komponenten
    loadrt threads name1=fast period1=50000 fp1=0 name2=slow period2=1000000
    loadrt stepgen step_type=0 ctrl_type=v
    loadrt hal_parport cfg="0x378 out"

note: type: delimited block -
en: # add functions to threads
    addf stepgen.make-pulses fast
    addf stepgen.update-freq slow
    addf stepgen.capture-position slow
    addf parport.0.read fast
    addf parport.0.write fast
de: # fügt Funktionen den Threads hinzu
    addf stepgen.make-pulses fast
    addf stepgen.update-freq slow
    addf stepgen.capture-position slow
    addf parport.0.read fast
    addf parport.0.write fast

note: type: delimited block -
en: # make HAL connections
    net winder-step parport.0.pin-02-out <= stepgen.0.step
    net winder-dir parport.0.pin-03-out <= stepgen.0.dir
    net run-stepgen stepgen.0.enable <= winder.start_button
de: # Erstellt Verbindungen in HAL
    net winder-step parport.0.pin-02-out <= stepgen.0.step
    net winder-dir parport.0.pin-03-out <= stepgen.0.dir
    net run-stepgen stepgen.0.enable <= winder.start_button

note: type: delimited block -
en: # start the threads
    start
de: # Start der Threads
    start

note: type: delimited block -
en: # comment out the following lines while testing and use the interactive
    # option halrun -I -f start.hal to be able to show pins etc.
de: # kommentieren Sie die folgenden Zeilen beim Testen aus und verwenden Sie die interaktive
    # option halrun -I -f start.hal, um Pins etc. anzeigen zu können.

note: type: delimited block -
en: # wait until the GladeVCP GUI named winder terminates
    waitusr winder
de: # Warten, bis die GladeVCP-GUI namens winder beendet ist
    waitusr winder

note: type: delimited block -
en: # stop HAL threads
    stop
de: # Stop HAL threads
    stop

note: type: delimited block -
en: # unload HAL all components before exiting
    unloadrt all
de: # "unload" aller Komponenten in HAL vor dem Beenden
    unloadrt all

note: type: Title =
en: Creating Userspace Python Components(((Creating Userspace Python Components)))
de: Erstellen von Userspace-Python-Komponenten(((Erstellen von Userspace-Python-Komponenten)))

note: type: Title ==
en: Basic usage
de: Grundlegende Verwendung (engl. basic usage)

note: type: Plain text
en: A userspace component begins by creating its pins and parameters, then enters a loop which will periodically drive all the outputs from the inputs. The following component copies the value seen on its input pin ('passthrough.in') to its output pin ('passthrough.out') approximately once per second.
de: Eine Userspace-Komponente beginnt mit der Erstellung ihrer Pins und Parameter und tritt dann in eine Schleife ein, die periodisch alle Ausgänge von den Eingängen steuert. Die folgende Komponente kopiert den Wert an ihrem Eingangspin ('passthrough.in') etwa einmal pro Sekunde an ihren Ausgangspin ('passthrough.out').

note: type: Plain text
en: Copy the above listing into a file named "passthrough", make it executable ('chmod +x'), and place it on your '$PATH'. Then try it out:
de: Kopieren Sie das obige Listing in eine Datei mit dem Namen "passthrough", machen Sie es ausführbar ('chmod +x'), und legen Sie es in Ihren '$PATH'. Dann probieren Sie es aus:

note: type: delimited block -
en:     Component Pins:
        Owner Type  Dir     Value  Name
         03   float IN          0  passthrough.in
         03   float OUT         0  passthrough.out
de:     Komponenten-Pins:
        Owner Typ  Richtung     Wert  Name
         03   float IN          0  passthrough.in
         03   float OUT         0  passthrough.out

note: type: delimited block -
en:     Component Pins:
        Owner Type  Dir     Value  Name
         03   float IN       3.14  passthrough.in
         03   float OUT      3.14  passthrough.out
de:     Komponenten-Pins:
        Owner Typ   Richtung Wert  Name
         03   float IN       3.14  passthrough.in
         03   float OUT      3.14  passthrough.out

note: type: Title ==
en: Userspace components and delays
de: Userspace-Komponenten und Verzögerungen

note: type: Plain text
en: If you typed "show pin" quickly, you may see that 'passthrough.out' still had its old value of 0. This is because of the call to 'time.sleep(1)', which makes the assignment to the output pin occur at most once per second. Because this is a userspace component, the actual delay between assignments can be much longer if the memory used by the passthrough component is swapped to disk, the assignment could be delayed until that memory is swapped back in.
de: Wenn Sie "show pin" schnell eingegeben haben, sehen Sie vielleicht, dass 'passthrough.out' immer noch den alten Wert von 0 hat. Das liegt an dem Aufruf von 'time.sleep(1)', der dafür sorgt, dass die Zuweisung an den Ausgangspin höchstens einmal pro Sekunde erfolgt. Da es sich hier um eine Userspace-Komponente handelt, kann die tatsächliche Verzögerung zwischen den Zuweisungen viel länger sein, wenn der von der Passthrough-Komponente verwendete Speicher auf die Festplatte ausgelagert wird; die Zuweisung könnte verzögert werden, bis dieser Speicher wieder ausgelagert wird.

note: type: Plain text
en: Thus, userspace components are suitable for user-interactive elements such as control panels (delays in the range of milliseconds are not noticed, and longer delays are acceptable), but not for sending step pulses to a stepper driver board (delays must always be in the range of microseconds, no matter what).
de: So eignen sich Userspace-Komponenten für benutzerinteraktive Elemente wie Bedienfelder (Verzögerungen im Bereich von Millisekunden werden nicht bemerkt, und längere Verzögerungen sind akzeptabel), nicht aber für das Senden von Schrittimpulsen an eine Stepper-Treiberkarte (Verzögerungen müssen immer im Bereich von Mikrosekunden liegen, egal wie).

note: type: Title ==
en: Create pins and parameters
de: Pins und Parameter erstellen

note: type: Plain text
en: The component itself is created by a call to the constructor 'hal.component'.  The arguments are the HAL component name and (optionally) the prefix used for pin and parameter names. If the prefix is not specified, the component name is used.
de: Die Komponente selbst wird durch einen Aufruf des Konstruktors 'hal.component' erzeugt.  Die Argumente sind der HAL-Komponentenname und (optional) das für Pin- und Parameternamen verwendete Präfix. Wird das Präfix nicht angegeben, wird der Komponentenname verwendet.

note: type: Plain text
en: Then pins are created by calls to methods on the component object. The arguments are: pin name suffix, pin type, and pin direction. For parameters, the arguments are: parameter name suffix, parameter type, and parameter direction.
de: Dann werden Pins durch Aufrufe von Methoden auf dem Komponentenobjekt erstellt. Die Argumente sind: Suffix des Pin-Namens, Pin-Typ und Pin-Richtung. Bei Parametern lauten die Argumente: Parameternamenssuffix, Parametertyp und Parameterrichtung.

note: type: Block title
en: HAL Option Names
de: Namen der HAL-Optionen

note: type: Table
en: Pin and Parameter Types:
de: Pin- und Parametertypen:

note: type: Table
en: Pin Directions:
de: Pin-Richtungen:

note: type: Table
en: Parameter Directions:
de: Parameter-Richtungen:

note: type: Plain text
en: The full pin or parameter name is formed by joining the prefix and the suffix with a ".", so in the example the pin created is called 'passthrough.in'.
de: Der vollständige Pin- oder Parametername wird durch Verbinden des Präfixes und des Suffixes mit einem "." gebildet. Im Beispiel heißt der erstellte Pin also 'passthrough.in'.

note: type: Plain text
en: Once all the pins and parameters have been created, call the '.ready()' method.
de: Sobald alle Pins und Parameter erstellt wurden, rufen Sie die Methode '.ready()' auf.

note: type: Title ===
en: Changing the prefix
de: Ändern des Präfixes

note: type: Plain text
en: The prefix can be changed by calling the '.setprefix()' method. The current prefix can be retrieved by calling the '.getprefix()' method.
de: Das Präfix kann durch den Aufruf der Methode '.setprefix()' geändert werden. Das aktuelle Präfix kann durch den Aufruf der Methode '.getprefix()' abgefragt werden.

note: type: Title ==
en: Reading and writing pins and parameters
de: Lesen und Schreiben von Pins und Parametern

note: type: Plain text
en: For pins and parameters which are also proper Python identifiers, the value may be accessed or set using the attribute syntax:
de: Bei Pins und Parametern, die auch echte Python-Bezeichner sind, kann der Wert unter Verwendung der Attributsyntax aufgerufen oder gesetzt werden:

note: type: Plain text
en: For all pins, whether or not they are also proper Python identifiers, the value may be accessed or set using the subscript syntax:
de: Für alle Pins, unabhängig davon, ob sie auch echte Python-Bezeichner sind oder nicht, kann der Wert unter Verwendung der tiefgestellten Syntax aufgerufen oder gesetzt werden:

note: type: Plain text
en: To see all pins with their values, getpins returns all values in a dictionary of that component.
de: Um alle Pins mit ihren Werten zu sehen, gibt getpins alle Werte in einem Wörterbuch dieser Komponente zurück.

note: type: Title ===
en: Driving output (HAL_OUT) pins
de: Ansteuerung der Ausgangsstifte (HAL_OUT)

note: type: Plain text
en: Periodically, usually in response to a timer, all HAL_OUT pins should be "driven" by assigning them a new value. This should be done whether or not the value is different than the last one assigned. When a pin is connected to a signal, its old output value is not copied into the signal, so the proper value will only appear on the signal once the component assigns a new value.
de: In regelmäßigen Abständen, in der Regel als Reaktion auf einen Timer, sollten alle HAL_OUT-Pins "getrieben" werden, indem ihnen ein neuer Wert zugewiesen wird. Dies sollte unabhängig davon geschehen, ob sich der Wert von dem zuletzt zugewiesenen unterscheidet oder nicht. Beim Verbinden eines Pins mit einem Signal wird sein alter Ausgangswert nicht in das Signal kopiert, so dass der richtige Wert erst auf dem Signal erscheint, wenn die Komponente einen neuen Wert zuweist.

note: type: Title ===
en: Driving bidirectional (HAL_IO) pins
de: Ansteuerung von bidirektionalen (HAL_IO) Pins

note: type: Plain text
en: The above rule does not apply to bidirectional pins. Instead, a bidirectional pin should only be driven by the component when the component wishes to change the value. For instance, in the canonical encoder interface, the encoder component only sets the 'index-enable' pin to *FALSE* (when an index pulse is seen and the old value is *TRUE*), but never sets it to *TRUE*. Repeatedly driving the pin *FALSE* might cause the other connected component to act as though another index pulse had been seen.
de: Die obige Regel gilt nicht für bidirektionale Pins. Stattdessen sollte ein bidirektionaler Pin nur dann von der Komponente angesteuert werden, wenn die Komponente den Wert ändern möchte. In der kanonischen Encoder-Schnittstelle beispielsweise setzt die Encoder-Komponente den Pin 'index-enable' nur auf *FALSE* (wenn ein Indeximpuls gesehen wird und der alte Wert *TRUE* ist), aber niemals auf *TRUE*. Das wiederholte Setzen des Pins auf *FALSE* könnte dazu führen, dass die andere angeschlossene Komponente sich so verhält, als ob ein weiterer Indeximpuls gesehen worden wäre.

note: type: Title ==
en: Exiting
de: Beenden

note: type: Plain text
en: A 'halcmd unload' request for the component is delivered as a 'KeyboardInterrupt' exception. When an unload request arrives, the process should either exit in a short time, or call the '.exit()' method on the component if substantial work (such as reading or writing files) must be done to complete the shutdown process.
de: Eine 'halcmd unload' Anforderung für die Komponente wird als 'KeyboardInterrupt' Ausnahme geliefert. Wenn eine Entladeanforderung eintrifft, sollte der Prozess entweder in kurzer Zeit beendet werden oder die Methode '.exit()' für die Komponente aufrufen, wenn umfangreiche Arbeiten (wie das Lesen oder Schreiben von Dateien) durchgeführt werden müssen, um den Abschaltvorgang abzuschließen.

note: type: Title ==
en: Helpful Functions
de: Hilfreiche Funktionen

note: type: Title ===
en: ready
de: ready (engl. für bereit)

note: type: Plain text
en: Tells the HAL system the component is initialized. Locks out adding pins.
de: Sagt dem HAL-System, dass die Komponente initialisiert ist. Sperrt das Hinzufügen von Pins.

note: type: Title ===
en: unready
de: unready (engl. für nicht bereit)

note: type: Plain text
en: Allows a component to add pins after 'ready()' has been called.  One should call 'ready()' on the component after.
de: Ermöglicht es einer Komponente, Pins hinzuzufügen, nachdem 'ready()' aufgerufen wurde.  Man sollte 'ready()' auf der Komponente danach aufrufen.

note: type: Plain text
en: Does the specified component exist at this time.
de: Existiert die angegebene Komponente zu diesem Zeitpunkt.

note: type: Title ===
en: component_is_ready
de: component_is_ready (engl. für Komponente ist bereit)

note: type: Plain text
en: Is the specified component ready at this time.
de: Ist die angegebene Komponente zu diesem Zeitpunkt bereit.

note: type: Plain text
en: Get the current Realtime msg level.
de: Abfrage der aktuellen Echtzeit-Nachrichten (engl. kurz msg)-Stufe.

note: type: Plain text
en: Set the current Realtime msg level.  used for debugging information.
de: Legen Sie die aktuelle Echtzeit-MSG-Stufe fest.  Wird zum Debuggen von Informationen verwendet.

note: type: Title ===
en: connect
de: verbinden

note: type: Plain text
en: Connect a pin to a signal.
de: Verbinden Sie einen Pin mit einem Signal.

note: type: Title ===
en: disconnect
de: trennen

note: type: Plain text
en: Disconnect a pin from a signal.
de: Trennen Sie einen Pin von einem Signal.

note: type: delimited block -
en: hal.disconnect("pinname")
de: hal.disconnect("Pinname")

note: type: Plain text
en: Read a pin, param, or signal directly.
de: Lesen Sie einen Pin, einen Parameter oder ein Signal direkt.

note: type: Plain text
en: Returns a list of dicts of all system pins.
de: Gibt eine Liste von Dicts aller Systempins zurück.

note: type: Plain text
en: Returns a list of dicts of all system signals.
de: Gibt eine Liste von Dicts aller Systemsignale zurück.

note: type: Plain text
en: Returns a list of dicts of all system parameters.
de: Gibt eine Liste von Dicts mit allen Systemparametern zurück.

note: type: Plain text
en: Create a new signal of the type specified.
de: Erstellt ein neues Signal des angegebenen Typs.

note: type: Plain text
en: Does the specified pin have a driving pin connected.
    Returns True or False.
de: Ist der angegebene Pin mit einem treibenden Pin verbunden.
    Gibt True oder False zurück.

note: type: Plain text
en: Get the HAL object name.
    Return a string.
de: Ermittelt den Namen des HAL-Objekts.
    Rückgabe einer Zeichenkette.

note: type: Plain text
en: Get the HAL object's type.
    Returns an integer.
de: Ermittelt den Typ des HAL-Objekts'.
    Gibt eine ganze Zahl zurück.

note: type: Plain text
en: Get the HAL object direction type.
    Returns an integer.
de: Ermittelt den Richtungstyp des HAL-Objekts.
    Gibt eine ganze Zahl zurück.

note: type: Plain text
en: Get the HAL object value.
de: Ermittelt den Wert des HAL-Objekts.

note: type: Plain text
en: Set the HAL object value.
de: Setzt den Wert des HAL-Objekts.

note: type: Plain text
en: Is the object a pin or parameter?
    Returns True or False.
de: Ist das Objekt ein Pin oder Parameter?
    Gibt True oder False zurück.

note: type: Plain text
en: Set a pin value of any pin in the HAL system.
de: Einstellen eines Pin-Wertes eines beliebigen Pins im HAL-System.

note: type: Plain text
en: Use these to specify details rather then the value they hold.
de: Verwenden Sie diese, um Details zu spezifizieren, und nicht den Wert, den sie enthalten.

note: type: Title ==
en: System Information
de: System-Informationen

note: type: Plain text
en: Read these to acquire information about the realtime system.
de: Lesen Sie diese, um Informationen über das Echtzeitsystem zu erhalten.

note: type: Title ==
en: Use with hal_glib in GladeVCP Handler
de: Verwendung mit hal_glib in GladeVCP Handler

note: type: Plain text
en: GladeVCP uses the hal_glib library, which can be used to connect a "watcher" signal on a HAL input pin.
    This signal can be used to register a function to call when the HAL pin changes state. +
de: GladeVCP nutzt die hal_glib-Bibliothek, die dazu verwendet werden kann, ein "watcher" Signal an einen HAL-Eingangspin anzuschließen.
    Dieses Signal kann verwendet werden, um eine Funktion zu registrieren, die aufgerufen wird, wenn sich der Zustand des HAL-Pins ändert. +

note: type: Plain text
en: One must import the module and the hal module:
de: Man muss das glib-Modul und das HAL-Modul importieren:

note: type: Plain text
en: Then make a pin and connect a 'value-changed' (the watcher) signal to a function call:
de: Erstellen Sie dann einen Pin und verbinden Sie ein 'value-changed' Signal (den Watcher) mit einem Funktionsaufruf:

note: type: Plain text
en: And have a function to be called:
de: Und eine Funktion haben, die aufgerufen werden soll:

note: type: delimited block -
en:         # this can be called outside the function
            self.example_trigger.get()
de:         # dies kann außerhalb der Funktion aufgerufen werden
            self.example_trigger.get()

note: type: Title ==
en: Use with hal_glib in QtVCP Handler
de: Verwendung mit hal_glib in QtVCP Handler

note: type: Plain text
en: QtVCP uses the hal_glib library, which can be used to connect a "watcher" signal on a HAL input pin.
    This signal can be used to register a function to call when the HAL pin changes state. +
de: QtVCP nutzt die hal_glib Bibliothek, die verwendet werden kann, um ein "watcher" Signal an einen HAL-Eingangspin anzuschließen.
    Dieses Signal kann verwendet werden, um eine Funktion zu registrieren, die aufgerufen wird, wenn sich der Zustand des HAL-Pins ändert. +

note: type: Plain text
en: One must import the hal module:
de: Man muss das HAL Modul importieren:

note: type: Plain text
en: Then make a pin and connect a 'value_changed' (the watcher) signal to a function call:
de: Erstellen Sie dann einen Pin und verbinden Sie ein 'value_changed' (den Watcher) Signal mit einem Funktionsaufruf:

note: type: delimited block -
en:     ########################
        # **** INITIALIZE **** #
        ########################
        # widgets allows access to  widgets from the qtvcp files
        # at this point the widgets and HAL pins are not instantiated
        def __init__(self, halcomp,widgets,paths):
            self.hal = halcomp
            self.testPin = self.hal.newpin('test-pin', hal.HAL_BIT, hal.HAL_IN)
            self.testPin.value_changed.connect(lambda s: self.setTestPin(s))
de:     ########################
        **** INITIALIZE **** #
        ########################
        # widgets erlaubt den Zugriff auf Widgets aus den qtvcp-Dateien.
        # zu diesem Zeitpunkt sind die Widgets und HAL-Pins noch nicht instanziiert
        def __init__(self, halcomp,widgets,paths):
            self.hal = halcomp
            self.testPin = self.hal.newpin('test-pin', hal.HAL_BIT, hal.HAL_IN)
            self.testPin.value_changed.connect(lambda s: self.setTestPin(s))

note: type: Plain text
en: And have a function to be called.  This shows ways to get the pin value and information.
de: Und eine aufzurufende Funktion haben.  Dies zeigt, wie man den Pin-Wert und die Informationen erhält.

note: type: delimited block -
en:         # this can be called outside the function
            print(self.testPin.get())
de:         # dies kann außerhalb der Funktion aufgerufen werden
            print(self.testPin.get())

note: type: Title ==
en: Project ideas
de: Projektideen

note: type: Plain text
en: Create an external control panel with buttons, switches, and indicators. Connect everything to a microcontroller, and connect the microcontroller to the PC using a serial interface. Python has a very capable serial interface module called https://pyserial.readthedocs.io/en/latest/[pyserial] (Ubuntu package name "python3-serial", in the universe repository)
de: Erstellen Sie ein externes Bedienfeld mit Tasten, Schaltern und Anzeigen. Schließen Sie alles an einen Mikrocontroller an, und verbinden Sie den Mikrocontroller über eine serielle Schnittstelle mit dem PC. Python hat ein sehr leistungsfähiges serielles Schnittstellenmodul namens https://pyserial.readthedocs.io/en/latest/[pyserial] (Ubuntu-Paketname "python3-serial", im Universum-Repository)

note: type: Plain text
en: Attach a http://lcdproc.omnipotent.net/[LCDProc]-compatible LCD module and use it to display a digital readout with information of your choice (Ubuntu package name "lcdproc", in the universe repository)
de: Schließen Sie ein http://lcdproc.omnipotent.net/[LCDProc]-kompatibles LCD-Modul an und verwenden Sie es, um eine digitale Anzeige mit Informationen Ihrer Wahl anzuzeigen (Ubuntu-Paketname "lcdproc", im Universum-Repository)

note: type: Plain text
en: Create a virtual control panel using any GUI library supported by Python (gtk, Qt, wxWindows, etc.)
de: Erstellen eines virtuellen Bedienfelds mit einer beliebigen von Python unterstützten GUI-Bibliothek (Gtk, Qt, wxWindows usw.).

note: type: Plain text
en: The script halshow can help you find your way around a running HAL.  This is a very specialized system and it must connect to a working HAL.  It cannot run standalone because it relies on the ability of HAL to report what it knows of itself through the halcmd interface library. It is discovery based. Each time halshow runs with a different LinuxCNC configuration it will be different.
de: Das Skript halshow kann Ihnen helfen, sich in einem laufenden HAL zurechtzufinden.  Es ist ein sehr spezialisiertes System und muss sich mit einem funktionierenden HAL verbinden.  Es kann nicht eigenständig laufen, da es sich auf die Fähigkeit der HAL verlässt, über die Schnittstellenbibliothek halcmd zu berichten, was sie über sich selbst weiß. Es basiert auf Erkennung. Jedes Mal, wenn halshow mit einer anderen LinuxCNC-Konfiguration läuft, wird es anders sein.

note: type: Plain text
en: As we will soon see, this ability of HAL to document itself is one key to making an effective CNC system.
de: Wie wir gleich sehen werden, ist diese Fähigkeit von HAL, sich selbst zu dokumentieren, ein Schlüssel zum Aufbau eines effektiven CNC-Systems.

note: type: Title ==
en: Starting Halshow
de: Halshow starten

note: type: Plain text
en: Halshow is in the AXIS menu under Machine/Show HAL Configuration.
de: Halshow befindet sich im AXIS-Menü unter Maschine/HAL-Konfiguration anzeigen.

note: type: Plain text
en: Halshow is in the TkLinuxCNC menu under Scripts/HAL Show.
de: Halshow befindet sich im TkLinuxCNC-Menü unter Scripts/HAL Show.

note: type: Plain text
en: Halshow can be started from a terminal command line and specify formats for integer and float items (pins or signals) and identify a saved watchlist file to use:
de: Halshow kann von einer Terminal-Befehlszeile aus gestartet werden und Formate für Integer- und Float-Elemente (Pins oder Signale) angeben sowie eine zu verwendende gespeicherte Watchlist-Datei identifizieren:

note: type: delimited block -
en: Notes:
           Create watchfile in halshow using: 'File/Save Watch List'
           linuxcnc must be running for standalone usage
de: Hinweise:
           Erstellen Sie einen watchfile in halshow mit: 'File/Save Watch List'
           linuxcnc muss für die Standalone-Nutzung ausgeführt werden

note: type: Plain text
en: Example to limit number of decimal points for floats and use a file named my.halshow in the current directory:
de: Beispiel für die Begrenzung der Anzahl der Dezimalpunkte für Fließkommazahlen und die Verwendung einer Datei namens my.halshow im aktuellen Verzeichnis:

note: type: delimited block -
en: $ halshow  --fformat "%.5f" ./my.halshow
de: $ halshow --fformat "%.5f" ./my.halshow

note: type: Plain text
en: For more information regarding the format, please refer to https://www.tcl.tk/man/tcl/TclCmd/format.html
de: Weitere Informationen zum Format finden Sie unter https://www.tcl.tk/man/tcl/TclCmd/format.html.

note: type: Title ==
en: HAL Tree Area
de: HAL Baum-Darstellung (engl. Tree Area)

note: type: Plain text
en: At the left of its display as shown in figure is a tree view, somewhat like you might see with some file browsers. At the right is a tabbed notebook with tabs for show and watch.
de: Auf der linken Seite der Anzeige, wie in der Abbildung gezeigt, befindet sich eine Baumansicht, ähnlich wie bei einigen Dateibrowsern. Auf der rechten Seite befindet sich ein Notizbuch mit Registerkarten für Anzeigen und Überwachen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Halshow Layout
de: Halshow-Layout

note: type: Plain text
en: The tree shows all of the major parts of a HAL. In front of each is a small plus (+) or minus (-) sign in a box. Clicking the plus will expand that tree node to display what is under it. If that box shows a minus sign, clicking it will collapse that section of the tree.
de: Der Baum zeigt alle Hauptbestandteile eines HAL. Vor jedem Teil befindet sich ein kleines Plus- (+) oder Minuszeichen (-) in einem Kasten. Wenn Sie auf das Pluszeichen klicken, wird der Baumknoten erweitert, um die darunter liegenden Teile anzuzeigen. Wenn das Kästchen ein Minuszeichen enthält, wird der betreffende Teil des Baums durch Anklicken eingeklappt.

note: type: Plain text
en: You can also expand or collapse the tree display using the Tree View menu at the upper left edge of the display. Under Tree View you will find: Expand Tree, Collapse Tree; Expand Pins, Expand Parameters, Expand Signals; and Erase Watch. (Note that Erase Watch erases 'all' previously set watches, you cannot erase just one watch.)
de: Sie können die Baumansicht auch über das Menü "Baumansicht" am oberen linken Rand der Anzeige ein- und ausblenden. Unter Baumansicht finden Sie: Baum aufklappen (engl. expand tree), Baum zuklappen (engl. collapse tree); Pins erweitern (engl. expand pins), Parameter erweitern (engl. expand parameters), Signale erweitern (engl. expand signals); und Uhr zurückstellen (engl. erase watch). (Beachten Sie, dass "Watch löschen" alle zuvor eingestellten Watches löscht, Sie können nicht nur eine Watch löschen.)

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Halshow: Show Tab
de: Halshow: Show Tab (engl. für Registerkarte anzeigen)

note: type: Plain text
en: Clicking on the node name, the word "Components" for example, will show you (under the "Show" tab) all that HAL knows about the contents of that node. Figure <<cap:halshow-layout>> shows a list exactly like you will see if you click the "Components" name.  The information display is exactly like those shown in traditional text based HAL analysis tools. The advantage here is that we have mouse click access, access that can be as broad or as focused as you need.
de: Wenn Sie auf den Namen des Knotens klicken, zum Beispiel auf das Wort "Components", wird Ihnen (unter der Registerkarte "Show") alles angezeigt, was HAL über den Inhalt dieses Knotens weiß. Abbildung <<cap:halshow-layout>> zeigt eine Liste, die genau so aussieht, wie wenn Sie auf den Namen "Components" klicken.  Die Anzeige der Informationen entspricht genau derjenigen, die in traditionellen textbasierten HAL-Analysetools angezeigt wird. Der Vorteil hier ist, dass wir per Mausklick Zugriff haben, und zwar einen Zugriff, der je nach Bedarf so umfassend oder so gezielt sein kann.

note: type: Block title
en: [yellow-background]#New in 2.9#
de: [yellow-background]#Neu in 2.9#

note: type: Plain text
en: Selected text from the Show tab can be copied by right-click or CTRL-C.
de: Ausgewählter Text auf der Registerkarte Anzeigen kann mit der rechten Maustaste oder STRG-C kopiert werden.

note: type: Plain text
en: The command entry provides now a BASH-like history (only for the session) for executed commands.
de: Die Befehlseingabe bietet nun einen BASH-ähnlichen Verlauf (nur für die Sitzung) für ausgeführte Befehle.

note: type: Plain text
en: If we take a closer look at the tree display we can see that the six major parts of a HAL can all be expanded at least one level. As these levels are expanded you can get more focused with the reply when you click on the rightmost tree node. You will find that there are some HAL pins and parameters that show more than one reply. This is due to the nature of the search routines in halcmd itself. If you search one pin you may get two, like this:
de: Wenn wir uns die Baumdarstellung genauer ansehen, sehen wir, dass die sechs Hauptteile eines HAL alle um mindestens eine Ebene erweitert werden können. Wenn diese Ebenen erweitert werden, können Sie die Antwort genauer betrachten, wenn Sie auf den ganz rechten Baumknoten klicken. Sie werden feststellen, dass es einige HAL-Pins und Parameter gibt, die mehr als eine Antwort anzeigen. Dies liegt an der Art der Suchroutinen in halcmd selbst. Wenn Sie einen Pin suchen, erhalten Sie möglicherweise zwei Antworten, wie hier:

note: type: delimited block -
en: Component Pins:
    Owner  Type  Dir  Value  Name
    06     bit    -W   TRUE  parport.0.pin-10-in
    06     bit    -W  FALSE  parport.0.pin-10-in-not
de: Komponenten Pins:
    Owner  Type  Dir  Value  Name
    06     bit    -W   TRUE  parport.0.pin-10-in
    06     bit    -W  FALSE  parport.0.pin-10-in-not

note: type: Plain text
en: The second pin's name contains the complete name of the first.
de: Der Name des zweiten Pins enthält den vollständigen Namen des ersten.

note: type: Plain text
en: Below the show area on the right is a set of widgets that will allow you to play with the running HAL. The commands you enter here and the effect that they have on the running HAL are not saved. They will persist as long as LinuxCNC remains up but are gone as soon as LinuxCNC is.
de: Unterhalb des Anzeigebereichs auf der rechten Seite befindet sich eine Reihe von Widgets, mit denen Sie mit der laufenden HAL spielen können. Die Befehle, die Sie hier eingeben und die Wirkung, die sie auf die laufende HAL haben, werden nicht gespeichert. Sie bleiben bestehen, solange LinuxCNC bleibt, aber sind weg, sobald LinuxCNC weg ist.

note: type: Plain text
en: The entry box labeled "Test HAL Command:" will accept any of the commands listed for halcmd. These include:
de: Das Eingabefeld "Test HAL Command:" akzeptiert jeden der für halcmd aufgeführten Befehle. Dazu gehören:

note: type: Plain text
en: loadrt, unloadrt (load/unload real-time module)
de: loadrt, unloadrt (Laden/Entladen von Echtzeitmodulen)

note: type: Plain text
en: loadusr, unloadusr (load/unload user-space component)
de: loadusr, unloadusr (Laden/Entladen der Benutzerbereichskomponente)

note: type: Plain text
en: addf, delf (add/delete a function to/from a real-time thread)
de: addf, delf (Hinzufügen/Löschen einer Funktion zu/aus einem Echtzeit-Thread)

note: type: Plain text
en: net (create a connection between two or more items)
de: net (eine Verbindung zwischen zwei oder mehr Elementen herstellen)

note: type: Plain text
en: setp (set parameter (or pin) to a value)
de: setp (Parameter (oder Pin) auf einen Wert setzen)

note: type: Plain text
en: This little editor will enter a command any time you press <enter> or push the execute button. An error message from halcmd will show below this entry widget when these commands are not properly formed. If you are not certain how to set up a proper command you'll need to read again the documentation on halcmd and the specific modules that you are working with.
de: Dieser kleine Editor gibt jedes Mal einen Befehl ein, wenn Sie <Enter> drücken oder die Schaltfläche Ausführen betätigen. Eine Fehlermeldung von halcmd wird unter diesem Eingabe-Widget angezeigt, wenn diese Befehle nicht richtig gebildet sind. Wenn Sie nicht sicher sind, wie Sie einen korrekten Befehl eingeben, müssen Sie die Dokumentation zu halcmd und den spezifischen Modulen, mit denen Sie arbeiten, erneut lesen.

note: type: Plain text
en: Let's use this editor to add a differential module to a HAL and connect it to axis position so that we could see the rate of change in position, i.e., acceleration. We first need to load a HAL component named ddt, add it to the servo thread, then connect it to the position pin of a joint. Once that is done we can find the output of the differentiator in halscope. So let's go.
de: Lassen Sie uns diesen Editor verwenden, um ein Differenzierungs-Modul (engl. differential module) zu einem HAL hinzuzufügen und es mit der Achsenposition zu verbinden, damit wir die Änderungsrate der Position, d.h. die Beschleunigung, sehen können. Zunächst müssen wir eine HAL-Komponente mit dem Namen ddt laden, sie zum Servo-Thread hinzufügen und sie dann mit dem Positionsstift eines Gelenks verbinden. Danach können wir den Ausgang des Differenzierers in Halscope finden. Also los geht's.

note: type: Plain text
en: Now look at the components node and you should see ddt in there someplace.
de: Schauen Sie sich den Komponenten-Knoten an, und Sie sollten dort irgendwo ddt finden.

note: type: delimited block -
en: Loaded HAL Components:
    ID Type        Name
    10 User halcmd29800
    09 User halcmd29374
    08   RT         ddt
    06   RT hal_parport
    05   RT    scope_rt
    04   RT     stepgen
    03   RT      motmod
    02 User   iocontrol
de: Geladene HAL Komponenten:
    ID Type        Name
    10 User halcmd29800
    09 User halcmd29374
    08   RT         ddt
    06   RT hal_parport
    05   RT    scope_rt
    04   RT     stepgen
    03   RT      motmod
    02 User   iocontrol

note: type: Plain text
en: Sure enough there it is. Notice that its ID is 08. Next we need to find out what functions are available with it so we look at functions:
de: Und tatsächlich, da ist sie. Beachten Sie, dass seine ID 08 ist. Als Nächstes müssen wir herausfinden, welche Funktionen damit verfügbar sind, also schauen wir uns die Funktionen an:

note: type: delimited block -
en: Exported Functions:
    Owner  CodeAddr      Arg  FP Users Name
      08   E0B97630 E0DC7674 YES     0 ddt.0
      03   E0DEF83C 00000000 YES     1 motion-command-handler
      03   E0DF0BF3 00000000 YES     1 motion-controller
      06   E0B541FE E0DC75B8  NO     1 parport.0.read
      06   E0B54270 E0DC75B8  NO     1 parport.0.write
      06   E0B54309 E0DC75B8  NO     0 parport.read-all
      06   E0B5433A E0DC75B8  NO     0 parport.write-all
      05   E0AD712D 00000000  NO     0 scope.sample
      04   E0B618C1 E0DC7448 YES     1 stepgen.capture-position
      04   E0B612F5 E0DC7448  NO     1 stepgen.make-pulses
      04   E0B614AD E0DC7448 YES     1 stepgen.update-freq
de: Exportierte Funktionen:
    Owner  CodeAddr      Arg  FP Users Name
      08   E0B97630 E0DC7674 YES     0 ddt.0
      03   E0DEF83C 00000000 YES     1 motion-command-handler
      03   E0DF0BF3 00000000 YES     1 motion-controller
      06   E0B541FE E0DC75B8  NO     1 parport.0.read
      06   E0B54270 E0DC75B8  NO     1 parport.0.write
      06   E0B54309 E0DC75B8  NO     0 parport.read-all
      06   E0B5433A E0DC75B8  NO     0 parport.write-all
      05   E0AD712D 00000000  NO     0 scope.sample
      04   E0B618C1 E0DC7448 YES     1 stepgen.capture-position
      04   E0B612F5 E0DC7448  NO     1 stepgen.make-pulses
      04   E0B614AD E0DC7448 YES     1 stepgen.update-freq

note: type: Plain text
en: Here we look for owner #08 and see a function named ddt.0. We should be able to add ddt.0 to the servo thread and it will do its math each time the servo thread is updated. Once again we look up the addf command and find that it uses three arguments like this:
de: Hier suchen wir nach Eigentümer #08 und sehen eine Funktion namens ddt.0. Wir sollten in der Lage sein, ddt.0 zum Servo-Thread hinzuzufügen, und es wird seine Berechnungen jedes Mal durchführen, wenn der Servo-Thread aktualisiert wird. Noch einmal sehen wir uns den addf-Befehl an und stellen fest, dass er drei Argumente wie folgt verwendet:

note: type: delimited block -
en: addf <functname> <threadname> [<position>]
de: addf <Funktionsname> <Threadname> [<Position>]

note: type: Plain text
en: We already know the functname=ddt.0 so let's get the thread name right by expanding the thread node in the tree. Here we see two threads, servo-thread and base-thread. The position of ddt.0 in the thread is not critical. So we add the function ddt.0 to the servo-thread:
de: Wir wissen bereits, dass Funktionsname=ddt.0 ist, also müssen wir den Thread-Namen richtig eingeben, indem wir den Thread-Knoten im Baum erweitern. Hier sehen wir zwei Threads, den Servo-Thread und den Basis-Thread. Die Position von ddt.0 im Thread ist nicht entscheidend. Wir fügen also die Funktion ddt.0 zum Servo-Thread hinzu:

note: type: Plain text
en: This is just for viewing, so we leave position blank and get the last position in the thread. The following figure shows the state of halshow after this command has been issued.
de: Dies ist nur zur Ansicht, also lassen wir Position leer und erhalten die letzte Position im Thread. Die folgende Abbildung zeigt den Zustand von halshow, nachdem dieser Befehl erteilt wurde.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Addf command
de: Addf-Befehl

note: type: Plain text
en: Next we need to connect ddt to something. But how do we know what pins are available? The answer is to look under pins. There we find ddt and see this:
de: Als nächstes müssen wir ddt mit etwas verbinden. Aber woher wissen wir, welche Pins verfügbar sind? Die Antwort ist, dass wir unter Pins nachsehen. Dort finden wir ddt und sehen dies:

note: type: delimited block -
en: Component Pins:
    Owner Type  Dir Value       Name
    08    float R-  0.00000e+00 ddt.0.in
    08    float -W  0.00000e+00 ddt.0.out
de: Komponenten Pins:
    Owner Type  Dir Value       Name
    08    float R-  0.00000e+00 ddt.0.in
    08    float -W  0.00000e+00 ddt.0.out

note: type: Plain text
en: That looks easy enough to understand, but what signal or pin do we want to to connect to it? It could be an axis pin, a stepgen pin, or a signal.  We see this when we look at joint.0:
de: Das sieht einfach genug aus, um es zu verstehen, aber welches Signal oder welchen Pin wollen wir damit verbinden? Es könnte ein Achsen-Pin, ein Stepgen-Pin oder ein Signal sein.  Wir sehen dies, wenn wir uns joint.0 ansehen:

note: type: delimited block -
en: Component Pins:
    Owner Type  Dir Value       Name
    03    float -W  0.00000e+00 joint.0.motor-pos-cmd ==> Xpos-cmd
de: Komponenten Pins:
    Owner Type  Dir Value       Name
    03    float -W  0.00000e+00 joint.0.motor-pos-cmd ==> Xpos-cmd

note: type: Plain text
en: So it looks like Xpos-cmd should be a good signal to use.  Back to the editor where we enter the following command:
de: Es sieht also so aus, als ob Xpos-cmd ein gutes Signal sein sollte.  Zurück zum Editor, wo wir den folgenden Befehl eingeben:

note: type: Plain text
en: Now if we look at the Xpos-cmd signal using the tree node we'll see what we've done:
de: Wenn wir uns nun das Xpos-cmd-Signal mithilfe des Baumknotens ansehen, sehen wir, was wir getan haben:

note: type: delimited block -
en: Signals:
    Type Value Name
    float 0.00000e+00 Xpos-cmd
    <== joint.0.motor-pos-cmd
    ==> ddt.0.in
    ==> stepgen.0.position-cmd
de: Signale:
    Type Value Name
    float 0.00000e+00 Xpos-cmd
    <== joint.0.motor-pos-cmd
    ==> ddt.0.in
    ==> stepgen.0.position-cmd

note: type: Plain text
en: We see that this signal comes from joint.o.motor-pos-cmd and goes to both ddt.0.in and stepgen.0.position-cmd. By connecting our block to the signal we have avoided any complications with the normal flow of this motion command.
de: Wir sehen, dass dieses Signal von joint.o.motor-pos-cmd kommt und sowohl an ddt.0.in als auch an stepgen.0.position-cmd geht. Durch die Verbindung unseres Blocks mit dem Signal haben wir jegliche Komplikationen mit dem normalen Ablauf dieses Bewegungsbefehls vermieden.

note: type: Plain text
en: The HAL Show Area uses halcmd to discover what is happening in a running HAL. It gives you complete information about what it has discovered. It also updates as you issue commands from the little editor panel to modify that HAL. There are times when you want a different set of things displayed without all of the information available in this area. That is where the HAL Watch Area is of value.
de: Der HAL-Anzeigebereich (engl. show area) verwendet halcmd, um herauszufinden, was in einermlaufenden HAL passiert. Er gibt Ihnen vollständige Informationen darüber, was er entdeckt hat. Er wird auch aktualisiert, wenn Sie über das kleine Editor-Panel Befehle zur Änderung des HAL eingeben. Es kann vorkommen, dass Sie andere Dinge angezeigt haben möchten, ohne dass alle Informationen in diesem Bereich verfügbar sind. In diesem Fall ist der HAL-Überwachungsbereich von Nutzen.

note: type: Title ==
en: Watch Tab Area
de: Watch Area

note: type: Plain text
en: Buttons for pin/signal/parameter manipulation
de: Schaltflächen für Pin-/Signal-/Parametermanipulation

note: type: Plain text
en: Right-click menu to
de: Rechtsklick-Menü zum

note: type: Plain text
en: Copy name
de: Namen kopieren

note: type: Plain text
en: Set value
de: Wert einstellen

note: type: Plain text
en: Unlink pin
de: Pin-Verknüpfung aufheben

note: type: Plain text
en: Remove from view
de: Aus der Ansicht entfernen

note: type: Plain text
en: Menu entries for
de: Menüeinträge für

note: type: Plain text
en: Add signals/pins/parameters by name
de: Signale/Pins/Parameter nach Namen hinzuzufügen

note: type: Plain text
en: Set watch interval
de: Überwachungsintervall einzustellen

note: type: Plain text
en: Clicking the watch tab produces a blank canvas. You can add signals and pins to this canvas and watch their values.footnote:[The refresh rate of the watch display is much lower than Halmeter or Halscope. If you need good resolution of the timing of signals use these tools or set the interval in the Watch menu.] You can add signals or pins when the watch tab is displayed by clicking on the name of it in the tree view.  The following figure shows this canvas with several pins.  The pins and signals that are writable have buttons for manipulation on the right side. Pins that are linked to a signal have disabled buttons. To set these values, the corresponding pin has to be unlinked from the signal. That can be done by right-click on the signal name and select "Unlink pin", see <<cap:watch-tab-context-menu>>.
de: Wenn Sie auf die Registerkarte "Watch" klicken, wird eine leere Fläche angezeigt. Sie können Signale und Pins zu diesem Canvas hinzufügen und ihre Werte beobachten. Fußnote:[Die Aktualisierungsrate der Watch-Anzeige ist viel niedriger als bei Halmeter oder Halscope. Wenn Sie eine gute Auflösung für das Timing von Signalen benötigen, verwenden Sie diese Tools oder stellen Sie das Intervall im Menü Watch ein.] Sie können Signale oder Pins hinzufügen, wenn die Registerkarte Watch angezeigt wird, indem Sie auf den Namen in der Baumansicht klicken.  Die folgende Abbildung zeigt diesen Canvas mit mehreren Pins.  Die Pins und Signale, die beschreibbar sind, haben auf der rechten Seite Schaltflächen zur Manipulation. Pins, die mit einem Signal verknüpft sind, haben deaktivierte Schaltflächen. Um diese Werte zu setzen, muss der entsprechende Pin vom Signal entkoppelt werden. Dies kann durch Rechtsklick auf den Signalnamen und Auswahl von "Unlink pin" geschehen, siehe <<cap:watch-tab-context-menu>>.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Halshow: Watch Tab
de: Halshow: Watch-Tab

note: type: Plain text
en: Watch displays bit type (binary) values using colored circles representing LEDs. They show as dark red when a bit signal or pin is false, and as light yellow whenever that signal is true. If you select a pin or signal that is not a bit type (binary) signal, watch will show it as a numerical value.
de: Watch zeigt bitartige (binäre) Werte mit farbigen Kreisen an, die LEDs darstellen. Sie werden dunkelrot angezeigt, wenn ein Bitsignal oder ein Pin falsch ist, und hellgelb, wenn das Signal wahr ist. Wenn Sie einen Pin oder ein Signal auswählen, das nicht vom Bittyp (binär) ist, zeigt Watch es als numerischen Wert an.

note: type: Plain text
en: Watch will quickly allow you to test switches or see the effect of changes that you make to LinuxCNC while using the graphical interface.  Watch's refresh rate is a bit slow to see stepper pulses, but you can use it for these if you move an axis very slowly or in very small increments of distance. If you've used IO_Show in LinuxCNC, the watch page in halshow can be set up to watch a parport much as IO_Show did.
de: Watch ermöglicht es Ihnen, schnell Schalter zu testen oder die Auswirkungen von Änderungen zu sehen, die Sie an LinuxCNC vornehmen, während Sie die grafische Benutzeroberfläche verwenden.  Die Bildwiederholfrequenz von Watch ist etwas zu langsam, um Stepperimpulse zu sehen, aber Sie können sie für diese verwenden, wenn Sie eine Achse sehr langsam oder in sehr kleinen Entfernungsschritten bewegen. Wenn Sie IO_Show in LinuxCNC verwendet haben, kann die Überwachungsseite in Halshow derart eingerichtet werden, dass ein Parport sich ähnlich wie IO_Show beobachten lässt.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Halshow: Watch Tab Context Menu
de: Halshow: Kontextmenü der Registerkarte 'Watch'

note: type: Title =
en: HALTCL Files
de: HALTCL-Dateien

note: type: Plain text
en: The halcmd language excels in specifying components and connections but offers no computational capabilities.  As a result, INI files are limited in the clarity and brevity that is possible with higher level languages.
de: Die halcmd-Sprache eignet sich hervorragend für die Angabe von Komponenten und Verbindungen, bietet aber keine Berechnungsmöglichkeiten.  Infolgedessen sind INI-Dateien in der Klarheit und Kürze eingeschränkt, die mit höheren Sprachen möglich ist.

note: type: Plain text
en: The haltcl facility provides a means to use Tcl scripting and its features for computation, looping, branching, procedures, etc. in INI files.  To use this functionality, you use the Tcl language and the extension .tcl for HAL files.
de: Die haltcl-Funktionalität bietet die Möglichkeit, Tcl-Skripte und ihre Funktionen für Berechnungen, Schleifen, Verzweigungen, Prozeduren usw. in INI-Dateien zu verwenden.  Um diese Funktionalität zu nutzen, verwenden Sie die Tcl-Sprache und die Erweiterung .tcl für HAL-Dateien.

note: type: Plain text
en: The .tcl extension is understood by the main script (linuxcnc) that processes INI files.  Haltcl files are identified in the the HAL section of INI files (just like HAL files).
de: Die Erweiterung .tcl wird von dem Hauptskript (linuxcnc) verstanden, das INI-Dateien verarbeitet.  Haltcl-Dateien werden im HAL-Abschnitt von INI-Dateien identifiziert (genau wie HAL-Dateien).

note: type: Plain text
en: With appropriate care, HAL and Tcl files can be intermixed.
de: Bei entsprechender Sorgfalt können HAL- und Tcl-Dateien miteinander vermischt werden.

note: type: Title ==
en: Compatibility
de: Kompatibilität

note: type: Plain text
en: The halcmd language used in HAL files has a simple syntax that is actually a subset of the more powerful general-purpose Tcl scripting language.
de: Die in HAL-Dateien verwendete halcmd-Sprache hat eine einfache Syntax, die eigentlich eine Teilmenge der leistungsfähigeren Allzweck-Skriptsprache Tcl ist.

note: type: Title ==
en: Haltcl Commands
de: Haltcl-Befehle

note: type: Plain text
en: Haltcl files use the Tcl scripting language augmented with the specific commands of the LinuxCNC hardware abstraction layer (HAL).  The HAL-specific commands are:
de: Haltcl-Dateien verwenden die Tcl-Skriptsprache, die mit den spezifischen Befehlen der LinuxCNC-Hardware-Abstraktionsschicht (HAL) erweitert wird.  Die HAL-spezifischen Befehle sind:

note: type: Plain text
en: Two special cases occur for the 'gets' and 'list' commands due to conflicts with Tcl builtin commands.  For haltcl, these commands must be preceded with the keyword 'hal':
de: Für die Befehle 'gets' und 'list' gibt es zwei Sonderfälle aufgrund von Konflikten mit eingebauten Tcl-Befehlen.  Für haltcl muss diesen Befehlen das Schlüsselwort 'hal' vorangestellt werden:

note: type: Title ==
en: Haltcl INI-file variables
de: Haltcl INI-Datei-Variablen

note: type: Plain text
en: INI file variables are accessible by both halcmd and haltcl but with differing syntax.
de: Auf INI-Datei-Variablen kann sowohl mit halcmd als auch mit haltcl zugegriffen werden, allerdings mit unterschiedlicher Syntax.

note: type: Plain text
en: LinuxCNC INI files use SECTION and ITEM specifiers to identify configuration items:
de: LinuxCNC INI-Dateien verwenden SECTION und ITEM Spezifizierer, um Konfigurationselemente zu identifizieren:

note: type: Plain text
en: The INI file values are accessible by text substitution in HAL files using the form:
de: Die Werte der INI-Datei sind durch Textersetzung in HAL-Dateien in folgender Form zugänglich:

note: type: Plain text
en: The same INI file values are accessible in Tcl files using the form of a Tcl global array variable:
de: Die gleichen Werte der INI-Datei sind in Tcl-Dateien in Form einer globalen Tcl-Array-Variable zugänglich:

note: type: Plain text
en: For example, an INI file item like:
de: Zum Beispiel, ein INI-Datei Element wie:

note: type: Plain text
en: is expressed as   `[JOINT_0]MAX_VELOCITY`  in HAL files for halcmd +
    and as            `$::JOINT_0(MAX_VELOCITY)` in Tcl files for haltcl.
de: wird in HAL-Dateien für halcmd als '[JOINT_0]MAX_VELOCITY' ausgedrückt +
    und als '$::JOINT_0(MAX_VELOCITY)' in Tcl-Dateien für haltcl.

note: type: Plain text
en: Because INI files can repeat the same ITEM in the same SECTION multiple times, `$::SECTION(ITEM)` is actually a Tcl list of each individual value.
de: Da INI-Dateien das gleiche ITEM in der gleichen SECTION mehrfach wiederholen kann, ist $::SECTION(ITEM) eigentlich eine Tcl-Liste jedes einzelnen Wertes.

note: type: Plain text
en: When there is just one value and it is a simple value (all values that are just letters and numbers without whitespace are in this group), then it is possible to treat `$::SECTION(ITEM)` as though it is not a list.
de: Wenn es nur einen Wert gibt und dieser ein einfacher Wert ist (alle Werte, die nur aus Buchstaben und Zahlen ohne Leerzeichen bestehen, gehören zu dieser Gruppe), dann ist es möglich, `$::SECTION(ITEM)` so zu behandeln, als ob es keine Liste wäre.

note: type: Plain text
en: When the value could contain special characters--quote characters, curly-brace characters, embedded whitespace, and other characters that have special meaning in Tcl--it is necessary to distinguish between the list of values and the initial (and possibly only) value in the list.
de: Wenn der Wert Sonderzeichen enthalten könnte - Anführungszeichen, geschweifte Klammern, eingebettete Leerzeichen oder andere Zeichen, die in Tcl eine besondere Bedeutung haben - ist es notwendig, zwischen der Liste der Werte und dem ersten (und möglicherweise einzigen) Wert in der Liste zu unterscheiden.

note: type: Plain text
en: In Tcl, this is written `[lindex $::SECTION(ITEM) 0]`.
de: In Tcl wird dies als `[lindex $::SECTION(ITEM) 0]` geschrieben.

note: type: Plain text
en: For example: given the following INI values
de: Beispiel: Bei den folgenden INI-Werten

note: type: Plain text
en: And this loadrt command:
de: Und diesem loadrt-Befehl:

note: type: Plain text
en: Here is the actual command that is run:
de: Ist dieses der eigentliche Befehl, der ausgeführt wird:

note: type: Plain text
en: This fails because loadrt does not recognize the braces.
de: Dies schlägt fehl, weil loadrt die geschweiften Klammern nicht erkennt.

note: type: Plain text
en: So to get the values just as entered in the INI file, re-write the loadrt line like this:
de: Um die Werte so zu erhalten, wie sie in der INI-Datei eingegeben wurden, schreiben Sie die loadrt-Zeile wie folgt um:

note: type: Title ==
en: Converting HAL files to Tcl files
de: Konvertieren von HAL-Dateien in Tcl-Dateien

note: type: Plain text
en: Existing HAL files can be converted to Tcl files by hand editing to adapt to the differences mentioned above.  The process can be automated with scripts that convert using these substitutions.
de: Vorhandene HAL-Dateien können durch manuelle Bearbeitung in Tcl-Dateien konvertiert werden, um die oben genannten Unterschiede zu berücksichtigen.  Der Prozess kann mit Skripten automatisiert werden, die diese Substitutionen verwenden.

note: type: Title ==
en: Haltcl Notes
de: Haltcl Anmerkungen

note: type: Plain text
en: In haltcl, the value argument for the 'sets' and 'setp' commands is implicitly treated as an expression in the Tcl language.
de: In haltcl wird das Argument value für die Befehle 'sets' und 'setp' implizit als Ausdruck in der Tcl-Sprache behandelt.

note: type: delimited block -
en: # set gain to convert deg/sec to units/min for JOINT_0 radius
    setp scale.0.gain 6.28/360.0*$::JOINT_0(radius)*60.0
de: # Verstärkung für die Umrechnung von Grad/Sekunde in Einheiten/Minute für den JOINT_0-Radius festlegen
    setp scale.0.gain 6.28/360.0*$::JOINT_0(radius)*60.0

note: type: Plain text
en: Whitespace in the bare expression is not allowed, use quotes for that:
de: Leerzeichen im bloßen Ausdruck sind nicht erlaubt, verwenden Sie dafür Anführungszeichen:

note: type: Plain text
en: In other contexts, such as 'loadrt', you must explicitly use the Tcl expr command ([expr {}]) for computational expressions.
de: In anderen Zusammenhängen, wie z. B. bei 'loadrt', müssen Sie den Tcl "expr"-Befehl ([expr {}]) ausdrücklich für Berechnungsausdrücke verwenden.

note: type: Title ==
en: Haltcl Examples
de: Haltcl Beispiele

note: type: Plain text
en: Consider the topic of 'stepgen headroom'.  Software stepgen runs best with an acceleration constraint that is "a bit higher" than the one used by the motion planner.  So, when using halcmd files, we force INI files to have a manually calculated value.
de: Betrachten Sie das Thema "Stepgen Headroom".  Software-Stepgen läuft am besten mit einer Beschleunigungsbeschränkung, die "ein bisschen höher" ist als die vom Bewegungsplaner verwendete.  Bei der Verwendung von halcmd-Dateien erzwingen wir daher, dass INI-Dateien einen manuell berechneten Wert haben.

note: type: Plain text
en: With haltcl, you can use Tcl commands to do the computation and eliminate the STEPGEN_MAXACCEL INI file item altogether:
de: Mit haltcl können Sie Tcl-Befehle verwenden, um die Berechnungen durchzuführen, und das STEPGEN_MAXACCEL-Element in der INI-Datei ganz eliminieren:

note: type: Plain text
en: Another haltcl feature is looping and testing.  For example, many simulator configurations use "core_sim.hal" or "core_sim9.hal" HAL files.  These differ because of the requirement to connect more or fewer axes.  The following haltcl code would work for any combination of axes in a trivkins machine.
de: Eine weitere Funktion von haltcl ist die Schleifenbildung und das Testen.  Viele Simulatorkonfigurationen verwenden zum Beispiel die HAL-Dateien "core_sim.hal" oder "core_sim9.hal".  Diese unterscheiden sich durch die Anforderung, mehr oder weniger Achsen anzuschließen.  Der folgende haltcl-Code würde für jede Kombination von Achsen in einer trivkins-Maschine funktionieren.

note: type: delimited block -
en: # Create position, velocity and acceleration signals for each axis
    set ddt 0
    for {set jnum 0} {$jnum < $::KINS(JOINTS)} {incr jnum} {
      # 'list pin' returns an empty list if the pin doesn't exist
      if {[hal list pin joint.${jnum}.motor-pos-cmd] == {}} {
        continue
      }
      net ${jnum}pos joint.${jnum}.motor-pos-cmd => joint.$axno.motor-pos-fb \
                                                 => ddt.$ddt.in
      net ${axis}vel <= ddt.$ddt.out
      incr ddt
      net ${axis}vel => ddt.$ddt.in
      net ${axis}acc <= ddt.$ddt.out
      incr ddt
    }
    puts [show sig *vel]
    puts [show sig *acc]
de: # Anlegen von position, velocity (Geschwindigkeit) and acceleration (Beschleunigung) Signalen für jede Achse
    set ddt 0
    for {set jnum 0} {$jnum < $::KINS(JOINTS)} {incr jnum} {
      # 'list pin' gibt eine leere Liste zurück, wenn der Pin nicht existiert
      if {[hal list pin joint.${jnum}.motor-pos-cmd] == {}} {
        continue
      }
      net ${jnum}pos joint.${jnum}.motor-pos-cmd => joint.$axno.motor-pos-fb \
                                                 => ddt.$ddt.in
      net ${axis}vel <= ddt.$ddt.out
      incr ddt
      net ${axis}vel => ddt.$ddt.in
      net ${axis}acc <= ddt.$ddt.out
      incr ddt
    }
    puts [show sig *vel]
    puts [show sig *acc]

note: type: Title ==
en: Haltcl Interactive
de: Haltcl Interaktiv

note: type: Plain text
en: The halrun command recognizes haltcl files.  With the -T option, haltcl can be run interaactively as a Tcl interpreter.  This capability is useful for testing and for standalone HAL applications.
de: Der Befehl halrun erkennt haltcl-Dateien.  Mit der Option -T kann haltcl interaktiv als Tcl-Interpreter ausgeführt werden.  Diese Fähigkeit ist nützlich zum Testen und für eigenständige HAL-Anwendungen.

note: type: Title ==
en: Haltcl Distribution Examples (sim)
de: Haltcl-Verteilungsbeispiele (sim)

note: type: Plain text
en: The configs/sim/axis/simtcl directory includes an INI file that uses a .tcl file to demonstrate a haltcl configuration in conjunction with the usage of twopass processing.  The example shows the use of Tcl procedures, looping, the use of comments and output to the terminal.
de: Das Verzeichnis configs/sim/axis/simtcl enthält eine INI-Datei, die eine .tcl-Datei verwendet, um eine haltcl-Konfiguration in Verbindung mit der Verwendung der twopass-Verarbeitung zu demonstrieren.  Das Beispiel zeigt die Verwendung von Tcl-Prozeduren, Schleifen, die Verwendung von Kommentaren und die Ausgabe auf dem Terminal.

note: type: Title =
en: Halui Examples(((Halui Examples)))
de: Halui-Beispiele(((Halui-Beispiele)))

note: type: Plain text
en: For any Halui examples to work you need to add the following line to the [HAL] section of the ini file.
de: Damit alle Halui-Beispiele funktionieren, müssen Sie die folgende Zeile in den [HAL]-Abschnitt der INI-Datei einfügen.

note: type: Title ==
en: Remote Start
de: Ferngesteuerter Start

note: type: Plain text
en: To connect a remote program start button to LinuxCNC you use the `halui.program.run` pin and the `halui.mode.auto` pin.  You have to insure that it is OK to run first by using the `halui.mode.is-auto` pin. You do this with an `and2` component. The following figure shows how this is done.  When the Remote Run Button is pressed it is connected to both `halui.mode.auto` and `and2.0.in0`. If it is OK for auto mode the pin `halui.mode.is-auto` will be on.  If both the inputs to the `and2.0` component are on the `and2.0.out` will be on and this will start the program.
de: Um einen Fernstartknopf mit LinuxCNC zu verbinden, benutzen Sie den `halui.program.run` Pin und den `halui.mode.auto` Pin.  Sie müssen sicherstellen, dass es OK ist, zuerst zu laufen, indem Sie die `halui.mode.is-auto` Pin. Dies geschieht mit einer `and2` Komponente. Die folgende Abbildung zeigt, wie das gemacht wird.  Wenn der Fernbedienungsknopf gedrückt wird, ist er sowohl mit `halui.mode.auto` als auch mit `and2.0.in0` verbunden. Wenn der Automodus OK ist, wird der Pin `halui.mode.is-auto` eingeschaltet.  Wenn beide Eingänge an der Komponente `and2.0` eingeschaltet sind, wird `and2.0.out` eingeschaltet und das Programm gestartet.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Remote Start Example
de: Beispiel für Fernstart

note: type: Plain text
en: The hal commands needed to accomplish the above are:
de: Die für das Vorstehende erforderlichen HAL-Befehle sind:

note: type: Plain text
en: Notice on line one that there are two reader pins, this can also be split up to two lines like this:
de: Beachten Sie, dass es in der ersten Zeile zwei Leser-Pins gibt, die auch in zwei Zeilen aufgeteilt werden können:

note: type: Title ==
en: Pause & Resume
de: Pause & Fortsetzen

note: type: Plain text
en: This example was developed to allow LinuxCNC to move a rotary axis on a signal from an external machine.  The coordination between the two systems will be provided by two Halui components:
de: Dieses Beispiel wurde entwickelt, um LinuxCNC zu ermöglichen, eine Drehachse auf ein Signal von einer externen Maschine zu bewegen.  Die Koordination zwischen den beiden Systemen wird durch zwei Halui Komponenten bereitgestellt:

note: type: Plain text
en: In your customized hal file, add the following two lines that will be connected to your I/O to turn on the program pause or to resume when the external system wants LinuxCNC to continue.
de: In Ihrem benutzerdefinierten hal Datei, fügen Sie die folgenden zwei Zeilen, die mit Ihrem E / A verbunden werden, um auf das Programm Pause oder fortzusetzen, wenn das externe System will LinuxCNC fortzusetzen.

note: type: delimited block -
en: net ispaused halui.program.is paused => "your output pin"
    net resume halui.program.resume <= "your input pin"
de: net ispaused halui.program.is paused => "Dein output (Ausgabe) Pin"
    net resume halui.program.resume <= "your input (Eingabe) Pin"

note: type: Plain text
en: Your input and output pins are connected to the pins wired to the other controller. They may be parallel port pins or any other I/O pins that you have access to.
de: Ihre Eingangs- und Ausgangspins sind mit den Pins verbunden, die mit dem anderen Controller verdrahtet sind. Dabei kann es sich um Pins des Parallelports oder andere E/A-Pins handeln, auf die Sie Zugriff haben.

note: type: Plain text
en: This system works in the following way. When an M0 is encountered in your G-code, the `halui.program.is-paused` signal goes true. This turns on your output pin so that the external controller knows that LinuxCNC is paused.
de: Dieses System funktioniert auf folgende Weise. Wrid ein M0 in Ihrem G-Code erreicht, so wird das Signal "halui.program.is-paused" wahr. Dies schaltet auf Ihrem Ausgangspin, so dass die externe Steuerung weiß, dass LinuxCNC pausiert ist.

note: type: Plain text
en: To resume the LinuxCNC G-code program, when the external controller is ready it will make its output true. This will signal LinuxCNC that it should resume executing G-code.
de: Um die LinuxCNC G-Code-Programm fortzusetzen, wenn die externe Steuerung bereit ist, wird es seine Ausgabe wahr zu machen. Dies wird LinuxCNC signalisieren, dass es die Ausführung von G-Code fortsetzen sollte.

note: type: Plain text
en: Difficulties in timing
de: Schwierigkeiten beim Timing

note: type: Plain text
en: The "resume" input return signal should not be longer than the time required to get the G-code running again.
de: Das "Resume"-Eingangsrücksignal sollte nicht länger sein als die Zeit, die benötigt wird, um den G-Code wieder zum Laufen zu bringen.

note: type: Plain text
en: The "is-paused" output should no longer be active by the time the "resume" signal ends.
de: Der Ausgang "is-paused" sollte nicht mehr aktiv sein, wenn das "resume"-Signal endet.

note: type: Plain text
en: These timing problems could be avoided by using ClassicLadder to activate the "is-paused" output via a monostable timer to deliver one narrow output pulse.  The "resume" pulse could also be received via a monostable timer.
de: Diese Timing-Probleme könnten vermieden werden, indem ClassicLadder verwendet wird, um den "is-paused"-Ausgang über einen monostabilen Timer zu aktivieren und einen schmalen Ausgangsimpuls zu liefern.  Der "Resume"-Puls könnte ebenfalls über einen monostabilen Timer empfangen werden.

note: type: Title =
en: HAL Introduction(((HAL Introduction)))
de: HAL-Einführung(((HAL-Einführung)))

note: type: Plain text
en: HAL(((HAL))) stands for Hardware Abstraction Layer. At the highest level, it is simply a way to allow a number of 'building blocks' to be loaded and interconnected to assemble a complex system. The 'Hardware' part is because HAL was originally designed to make it easier to configure LinuxCNC for a wide variety of hardware devices. Many of the building blocks are drivers for hardware devices. However, HAL can do more than just configure hardware drivers.
de: HAL(((HAL))) steht für Hardware Abstraction Layer. Auf der höchsten Ebene ist es einfach eine Möglichkeit, eine Reihe von "Bausteinen" zu laden und miteinander zu verbinden, um ein komplexes System zusammenzustellen. Der "Hardware"-Teil kommt daher, dass HAL ursprünglich entwickelt wurde, um die Konfiguration von LinuxCNC für eine Vielzahl von Hardware-Geräten zu erleichtern. Viele der Bausteine sind Treiber für Hardware-Geräte. HAL kann jedoch mehr, als nur Hardware-Treiber zu konfigurieren.

note: type: Title ==
en: HAL System Design(((HAL System Design)))
de: HAL-Systementwurf(((HAL-Systementwurf)))

note: type: Plain text
en: HAL is based on traditional system design techniques.
de: HAL basiert auf traditionellen Systementwurfstechniken.

note: type: Plain text
en: HAL is based on the same principles that are used to design hardware circuits and systems, so it is useful to examine those principles first.
de: HAL basiert auf denselben Prinzipien, die auch für die Entwicklung von Hardware-Schaltungen und -Systemen verwendet werden, so dass es sinnvoll ist, zunächst diese Prinzipien zu untersuchen.

note: type: Plain text
en: Any system, including a CNC(((CNC))) machine, consists of interconnected components. For the CNC machine, those components might be the main controller, servo amps or stepper drives, motors, encoders, limit switches, pushbutton pendants, perhaps a VFD for the spindle drive, a PLC to run a toolchanger, etc. The machine builder must select, mount and wire these pieces together to make a complete system.
de: Jedes System, auch eine CNC(((CNC)))-Maschine, besteht aus miteinander verknüpften Komponenten. Bei einer CNC-Maschine könnten diese Komponenten die Hauptsteuerung, Servoverstärker oder Schrittmotoren, Motoren, Encoder, Endschalter, Drucktastenschalter, vielleicht ein VFD für den Spindelantrieb, eine SPS für den Betrieb eines Werkzeugwechslers usw. sein. Der Maschinenbauer muss diese Teile auswählen, montieren und miteinander verdrahten, um ein komplettes System zu erhalten.

note: type: Block title
en: HAL Concept - Connecting like electrical circuits.
de: HAL-Konzept - Verbinden wie elektrische Schaltkreise.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: HAL Circuit Concept
de: HAL-Schaltungskonzept

note: type: Plain text
en: Figure one would be written in HAL code like this:
de: Abbildung 1 würde wie folgt in HAL-Code geschrieben:

note: type: Title ===
en: Part Selection(((HAL Part selection)))
de: Teileauswahl(((HAL-Teileauswahl)))

note: type: Plain text
en: The machine builder does not need to worry about how each individual part works. He treats them as black boxes. During the design stage, he decides which parts he is going to use - steppers or servos, which brand of servo amp, what kind of limit switches and how many, etc. The integrator's decisions about which specific components to use is based on what that component does and the specifications supplied by the manufacturer of the device. The size of a motor and the load it must drive will affect the choice of amplifier needed to run it. The choice of amplifier may affect the kinds of feedback needed by the amp and the velocity or position signals that must be sent to the amp from a control.
de: Der Maschinenbauer muss sich nicht darum kümmern, wie jedes einzelne Teil funktioniert. Er behandelt sie als Blackboxen. In der Konstruktionsphase entscheidet er, welche Teile er verwenden will - Stepper oder Servos, welche Marke von Servoverstärker, welche Art von Endschaltern und wie viele, usw. Die Entscheidung des Integrators, welche Komponenten er verwendet, basiert auf der Funktion der jeweiligen Komponente und den vom Hersteller des Geräts angegebenen Spezifikationen. Die Größe eines Motors und die Last, die er antreiben muss, beeinflussen die Wahl des Verstärkers, der für den Betrieb benötigt wird. Die Wahl des Verstärkers kann sich auf die Art der Rückkopplung auswirken, die der Verstärker benötigt, sowie auf die Geschwindigkeits- oder Positionssignale, die von einer Steuerung an den Verstärker gesendet werden müssen.

note: type: Plain text
en: In the HAL world, the integrator must decide what HAL components are needed. Usually every interface card will require a driver. Additional components may be needed for software generation of step pulses, PLC functionality, and a wide variety of other tasks.
de: In der HAL-Welt muss der Integrator entscheiden, welche HAL-Komponenten benötigt werden. In der Regel wird für jede Schnittstellenkarte ein Treiber benötigt. Zusätzliche Komponenten können für die Software-Generierung von Schrittimpulsen, SPS-Funktionen und eine Vielzahl anderer Aufgaben erforderlich sein.

note: type: Title ===
en: Interconnection Design(((HAL: Interconnections Design)))
de: Verbindungsentwurf(((HAL: Verbindungsentwurf)))

note: type: Plain text
en: The designer of a hardware system not only selects the parts, he also decides how those parts will be interconnected. Each black box has terminals, perhaps only two for a simple switch, or dozens for a servo drive or PLC. They need to be wired together. The motors connect to the servo amps, the limit switches connect to the controller, and so on. As the machine builder works on the design, he creates a large wiring diagram that shows how all the parts should be interconnected.
de: Der Konstrukteur eines Hardwaresystems wählt nicht nur die Teile aus, er entscheidet auch, wie diese Teile miteinander verbunden werden. Jeder schwarze Kasten hat Anschlüsse, vielleicht nur zwei für einen einfachen Schalter oder Dutzende für einen Servoantrieb oder eine SPS. Sie müssen miteinander verdrahtet werden. Die Motoren werden mit den Servoverstärkern verbunden, die Endschalter mit der Steuerung und so weiter. Während der Maschinenbauer an der Konstruktion arbeitet, erstellt er einen großen Verdrahtungsplan, der zeigt, wie alle Teile miteinander verbunden werden sollen.

note: type: Plain text
en: When using HAL, components are interconnected by signals. The designer must decide which signals are needed, and what they should connect.
de: Bei der Verwendung von HAL werden die Komponenten durch Signale miteinander verbunden. Der Designer muss entscheiden, welche Signale benötigt werden und was sie verbinden sollen.

note: type: Title ===
en: Implementation(((HAL: Implementation)))
de: Implementierung(((HAL: Implementierung)))

note: type: Plain text
en: Once the wiring diagram is complete it is time to build the machine.  The pieces need to be acquired and mounted, and then they are interconnected according to the wiring diagram. In a physical system, each interconnection is a piece of wire that needs to be cut and connected to the appropriate terminals.
de: Sobald der Schaltplan fertig ist, kann die Maschine gebaut werden.  Die Teile müssen beschafft und montiert werden, und dann werden sie entsprechend dem Schaltplan miteinander verbunden. In einem physischen System besteht jede Verbindung aus einem Stück Draht, das abgeschnitten und an die entsprechenden Klemmen angeschlossen werden muss.

note: type: Plain text
en: HAL provides a number of tools to help 'build' a HAL system. Some of the tools allow you to 'connect' (or disconnect) a single 'wire'. Other tools allow you to save a complete list of all the parts, wires, and other information about the system, so that it can be 'rebuilt' with a single command.
de: HAL bietet eine Reihe von Werkzeugen, die beim "Aufbau" eines HAL-Systems helfen. Mit einigen dieser Werkzeuge können Sie einen einzelnen "Draht" anschließen (oder abziehen). Andere Werkzeuge ermöglichen es Ihnen, eine vollständige Liste aller Teile, Drähte und anderer Informationen über das System zu speichern, so dass es mit einem einzigen Befehl "neu aufgebaut" werden kann.

note: type: Title ===
en: Testing(((HAL: Testing)))
de: Testen(((HAL: Testen)))

note: type: Plain text
en: Very few machines work right the first time. While testing, the builder may use a meter to see whether a limit switch is working or to measure the DC voltage going to a servo motor. He may hook up an oscilloscope to check the tuning of a drive, or to look for electrical noise. He may find a problem that requires the wiring diagram to be changed; perhaps a part needs to be connected differently or replaced with something completely different.
de: Nur sehr wenige Maschinen funktionieren beim ersten Mal richtig. Bei der Prüfung kann der Konstrukteur ein Messgerät verwenden, um zu sehen, ob ein Endschalter funktioniert, oder um die Gleichspannung an einem Servomotor zu messen. Er kann ein Oszilloskop anschließen, um die Einstellung eines Antriebs zu überprüfen oder um nach elektrischen Störungen zu suchen. Vielleicht findet er ein Problem, das eine Änderung des Schaltplans erfordert; vielleicht muss ein Teil anders angeschlossen oder durch etwas völlig anderes ersetzt werden.

note: type: Plain text
en: HAL provides the software equivalents of a voltmeter, oscilloscope, signal generator, and other tools needed for testing and tuning a system. The same commands used to build the system can be used to make changes as needed.
de: HAL bietet die Software-Äquivalente eines Voltmeters, Oszilloskops, Signalgenerators und anderer Werkzeuge, die zum Testen und Abstimmen eines Systems benötigt werden. Mit denselben Befehlen, die zum Aufbau des Systems verwendet werden, können auch Änderungen vorgenommen werden.

note: type: Title ===
en: Summary(((HAL Basics Summary)))
de: Zusammenfassung(((HAL Basics Summary)))

note: type: Plain text
en: This document is aimed at people who already know how to do this kind of hardware system integration, but who do not know how to connect the hardware to LinuxCNC. See the <<sec:halui-remote-start,Remote Start Example>> section in the HAL UI Examples documentation.
de: Dieses Dokument richtet sich an Personen, die bereits wissen, wie man diese Art von Hardware-Systemintegration durchführt, die aber nicht wissen, wie man die Hardware mit LinuxCNC verbindet. Siehe den Abschnitt <<sec:halui-remote-start,Remote Start Example>> in der HAL UI Examples Dokumentation.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Remote Start Example (Schema)
de: Remote-Start-Beispiel (Schema)

note: type: Plain text
en: The traditional hardware design as described above ends at the edge of the main control. Outside the control are a bunch of relatively simple boxes, connected together to do whatever is needed. Inside, the control is a big mystery -- one huge black box that we hope works.
de: Das oben beschriebene traditionelle Hardware-Design endet am Rande der Hauptsteuerung. Außerhalb der Steuerung befinden sich eine Reihe relativ einfacher Kästen, die miteinander verbunden sind, um das zu tun, was erforderlich ist. Im Inneren ist die Steuerung ein großes Rätsel - eine riesige schwarze Box, von der wir hoffen, dass sie funktioniert.

note: type: Plain text
en: HAL extends this traditional hardware design method to the inside of the big black box. It makes device drivers and even some internal parts of the controller into smaller black boxes that can be interconnected and even replaced just like the external hardware. It allows the 'system wiring diagram' to show part of the internal controller, rather than just a big black box. And most importantly, it allows the integrator to test and modify the controller using the same methods he would use on the rest of the hardware.
de: HAL erweitert diese traditionelle Hardware-Design-Methode auf das Innere der großen Blackbox. Es macht Gerätetreiber und sogar einige interne Teile des Controllers zu kleineren Black Boxes, die miteinander verbunden und sogar ersetzt werden können, genau wie die externe Hardware. So kann der "Systemschaltplan" einen Teil des internen Steuergeräts zeigen und nicht nur eine große Blackbox. Und, was am wichtigsten ist, es ermöglicht dem Integrator, den Controller mit denselben Methoden zu testen und zu modifizieren, die er auch für den Rest der Hardware verwenden würde.

note: type: Plain text
en: Terms like motors, amps, and encoders are familiar to most machine integrators. When we talk about using extra flexible eight conductor shielded cable to connect an encoder to the servo input board in the computer, the reader immediately understands what it is and is led to the question, 'what kinds of connectors will I need to make up each end.' The same sort of thinking is essential for the HAL but the specific train of thought may take a bit to get on track. Using HAL words may seem a bit strange at first, but the concept of working from one connection to the next is the same.
de: Begriffe wie Motoren, Ampere und Encoder sind den meisten Maschinenintegratoren vertraut. Wenn wir über die Verwendung eines besonders flexiblen, achtadrigen, abgeschirmten Kabels sprechen, um einen Drehgeber mit der Servo-Eingangsplatine im Computer zu verbinden, versteht der Leser sofort, worum es sich handelt, und wird zu der Frage geführt, "welche Arten von Steckern ich für die beiden Enden benötige". Die gleiche Art von Denken ist für das HAL wesentlich, aber der spezifische Gedankengang braucht vielleicht ein bisschen, um auf den richtigen Weg zu kommen. Die Verwendung von HAL-Wörtern mag anfangs etwas seltsam erscheinen, aber das Konzept, von einer Verbindung zur nächsten zu arbeiten, ist dasselbe.

note: type: Plain text
en: This idea of extending the wiring diagram to the inside of the controller is what HAL is all about. If you are comfortable with the idea of interconnecting hardware black boxes, you will probably have little trouble using HAL to interconnect software black boxes.
de: Diese Idee, den Schaltplan auf das Innere des Controllers auszudehnen, ist das eigentliche Anliegen von HAL. Wenn Sie mit der Idee, Hardware-Blackboxen miteinander zu verbinden, vertraut sind, werden Sie wahrscheinlich wenig Probleme haben, HAL für die Verbindung von Software-Blackboxen zu verwenden.

note: type: Title ==
en: HAL Concepts(((HAL Concepts)))
de: HAL-Konzepte(((HAL-Konzepte)))

note: type: Plain text
en: This section is a glossary that defines key HAL terms but it is a bit different than a traditional glossary because these terms are not arranged in alphabetical order. They are arranged by their relationship or flow in the HAL way of things.
de: Dieser Abschnitt ist ein Glossar, in dem die wichtigsten HAL-Begriffe definiert werden. Er unterscheidet sich jedoch etwas von einem herkömmlichen Glossar, da die Begriffe nicht in alphabetischer Reihenfolge angeordnet sind. Sie sind nach ihrer Beziehung oder ihrem Fluss in der HAL-Welt geordnet.

note: type: Labeled list
en: Component
de: Komponente

note: type: Plain text
en: (((HAL Component)))  When we talked about hardware design, we referred to the individual pieces as 'parts', 'building blocks', 'black boxes', etc. The HAL equivalent is a 'component' or 'HAL component'. (This document uses 'HAL component' when there is likely to be confusion with other kinds of components, but normally just uses 'component'.) A HAL component is a piece of software with well-defined inputs, outputs, and behavior, that can be installed and interconnected as needed.
de: (((HAL-Komponente)))  Wenn wir über Hardware-Design sprechen, bezeichnen wir die einzelnen Teile als 'Teile', 'Bausteine', 'Black Boxes', usw. Das HAL-Äquivalent ist eine 'Komponente' oder 'HAL-Komponente' (in diesem Dokument wird 'HAL-Komponente' verwendet, wenn eine Verwechslung mit anderen Arten von Komponenten wahrscheinlich ist, aber normalerweise wird nur 'Komponente' verwendet). Eine HAL-Komponente ist ein Stück Software mit genau definierten Eingängen, Ausgängen und Verhaltensweisen, das installiert und nach Bedarf miteinander verbunden werden kann.

note: type: delimited block =
en: Many HAL Components model the behaviour of a tangible part of a machine, and a *pin* may indeed be meant to be connected to a *physical pin* on the device to communicate with it, hence the names. But most often this is not the case.  Imagine a retrofit of a manual lathe/mill. What LinuxCNC implements is how the machine presents itself to the outside world, and it is secondary if the implementation how to draw a circle is implemented on the machine already or provided from LinuxCNC. And it is common to add buttons to the imaginary retrofit that *signal* an action, like an emergency stop. LinuxCNC and the machine become one.  And that is through the HAL.
de: Viele HAL-Komponenten modellieren das Verhalten eines greifbaren Teils einer Maschine, und ein *Pin* kann tatsächlich mit einem *physischen Pin* des Geräts verbunden werden, um mit ihm zu kommunizieren, daher die Namen. In den meisten Fällen ist dies jedoch nicht der Fall.  Stellen Sie sich eine Nachrüstung einer manuellen Drehmaschine/Fräse vor. Was LinuxCNC implementiert, ist die Art und Weise, wie sich die Maschine der Außenwelt präsentiert, und es ist sekundär, ob die Implementierung, wie man einen Kreis zeichnet, bereits auf der Maschine implementiert ist oder von LinuxCNC bereitgestellt wird. Und es ist üblich, Knöpfe zur imaginären Nachrüstung hinzuzufügen, die eine Aktion *signalisieren*, wie einen Notstopp. LinuxCNC und die Maschine werden eins.  Und das ist durch den HAL.

note: type: Plain text
en: (((HAL Parameter)))  Many hardware components have adjustments that are not connected to any other components but still need to be accessed. For example, servo amps often have trim pots to allow for tuning adjustments, and test points where a meter or scope can be attached to view the tuning results. HAL components also can have such items, which are referred to as 'parameters'. There are two types of parameters: Input parameters are equivalent to trim pots - they are values that can be adjusted by the user, and remain fixed once they are set. Output parameters cannot be adjusted by the user - they are equivalent to test points that allow internal signals to be monitored.
de: (((HAL-Parameter)))  Viele Hardwarekomponenten verfügen über Einstellmöglichkeiten, die nicht mit anderen Komponenten verbunden sind, auf die aber dennoch zugegriffen werden muss. Zum Beispiel haben Servoverstärker oft Trimmpotis, mit denen sie eingestellt werden können, und Testpunkte, an denen ein Messgerät oder Oszilloskop angeschlossen werden kann, um die Ergebnisse der Einstellung zu überprüfen. Auch HAL-Komponenten können solche Elemente haben, die als "Parameter" bezeichnet werden. Es gibt zwei Arten von Parametern: Eingangsparameter entsprechen Trimmpotentiometern - es handelt sich um Werte, die vom Benutzer eingestellt werden können und nach der Einstellung fest bleiben. Ausgangsparameter können nicht vom Benutzer eingestellt werden - sie entsprechen Testpunkten, mit denen interne Signale überwacht werden können.

note: type: Plain text
en: (((HAL Pin)))  Hardware components have terminals which are used to interconnect them. The HAL equivalent is a 'pin' or 'HAL pin'. ('HAL pin' is used when needed to avoid confusion.) All HAL pins are named, and the pin names are used when interconnecting them. HAL pins are software entities that exist only inside the computer.
de: (((HAL Pin)))  Hardware-Komponenten haben Anschlüsse, über die sie miteinander verbunden werden. Das HAL-Äquivalent ist ein "Pin" oder "HAL-Pin". (Der Begriff "HAL-Pin" wird verwendet, wenn es nötig ist, um Verwechslungen zu vermeiden.) Alle HAL-Pins sind benannt, und die Pin-Namen werden verwendet, wenn sie miteinander verbunden werden. HAL-Pins sind Software-Entitäten, die nur innerhalb des Computers existieren.

note: type: Labeled list
en: Physical_Pin
de: Physikalischer Pin (engl. physical pin)

note: type: Plain text
en: (((HAL Physical Pin)))  Many I/O devices have real physical pins or terminals that connect to external hardware, for example the pins of a parallel port connector. To avoid confusion, these are referred to as 'physical pins'. These are the things that 'stick out' into the real world.
de: (((HAL Physical Pin)))  Viele E/A-Geräte haben echte physische Pins oder Anschlüsse, die mit externer Hardware verbunden sind, z. B. die Pins eines Parallelport-Anschlusses. Um Verwirrung zu vermeiden, werden diese als "physische Pins" bezeichnet. Dies sind die Dinge, die in die reale Welt 'hineinragen'.

note: type: delimited block =
en: You may be wondering what relationship there is between the HAL_pins, Physical_pins and external elements like encoders or a STG card: we are dealing here with interfaces of data translation/conversion type.
de: Sie werden sich vielleicht fragen, welche Beziehung zwischen den HAL_pins, Physical_pins und externen Elementen wie Encodern oder einer STG-Karte besteht: Wir haben es hier mit Schnittstellen vom Typ Datenübersetzung/-umwandlung zu tun.

note: type: Plain text
en: (((HAL Signal)))  In a physical machine, the terminals of real hardware components are interconnected by wires. The HAL equivalent of a wire is a 'signal' or 'HAL signal'. HAL signals connect HAL pins together as required by the machine builder. HAL signals can be disconnected and reconnected at will (even while the machine is running).
de: (((HAL Signal)))  In einer physischen Maschine sind die Anschlüsse der realen Hardwarekomponenten durch Drähte miteinander verbunden. Das HAL-Äquivalent eines Drahtes ist ein "Signal" oder "HAL-Signal". HAL-Signale verbinden HAL-Pins miteinander, wie vom Maschinenbauer gewünscht. HAL-Signale können nach Belieben abgetrennt und wieder angeschlossen werden (sogar während die Maschine läuft).

note: type: Plain text
en: (((HAL Type)))  When using real hardware, you would not connect a 24 volt relay output to the +/-10V analog input of a servo amp. HAL pins have the same restrictions, which are based upon their type. Both pins and signals have types, and signals can only be connected to pins of the same type. Currently there are 4 types, as follows:
de: (((HAL-Typ)))  Bei der Verwendung echter Hardware würden Sie einen 24-V-Relaisausgang nicht an den +/-10-V-Analogeingang eines Servoverstärkers anschließen. Für HAL-Pins gelten die gleichen Einschränkungen, die auf ihrem Typ basieren. Sowohl Pins als auch Signale haben Typen, und Signale können nur an Pins desselben Typs angeschlossen werden. Derzeit gibt es 4 Typen, wie folgt:

note: type: Plain text
en: bit - a single TRUE/FALSE or ON/OFF value
de: bit - ein einzelner TRUE/FALSE- oder ON/OFF-Wert

note: type: Plain text
en: float - a 64 bit floating point value, with approximately 53 bits of resolution and over 1000 bits of dynamic range.
de: float - eine 64-Bit-Fließkommazahl mit einer Auflösung von etwa 53 Bit und einem Dynamikbereich von über 1000 Bit.

note: type: Plain text
en: u32 - a 32 bit unsigned integer, legal values are 0 to 4,294,967,295
de: u32 - eine 32-Bit-Ganzzahl ohne Vorzeichen, zulässige Werte sind 0 bis 4.294.967.295

note: type: Plain text
en: s32 - a 32 bit signed integer, legal values are -2,147,483,647 to +2,147,483,647
de: s32 - eine 32-Bit-Ganzzahl mit Vorzeichen, zulässige Werte sind -2.147.483.647 bis +2.147.483.647

note: type: Table
en: Function
de: Funktion

note: type: Plain text
en: (((HAL:Function)))  Real hardware components tend to act immediately on their inputs. For example, if the input voltage to a servo amp changes, the output also changes automatically. However software components cannot act 'automatically'. Each component has specific code that must be executed to do whatever that component is supposed to do. In some cases, that code simply runs as part of the component. However in most cases, especially in realtime components, the code must run in a specific sequence and at specific intervals. For example, inputs should be read before calculations are performed on the input data, and outputs should not be written until the calculations are done. In these cases, the code is made available to the system in the form of one or more 'functions'. Each function is a block of code that performs a specific action. The system integrator can use 'threads' to schedule a series of functions to be executed in a particular order and at specific time intervals.
de: (((HAL:Funktion)))  Echte Hardwarekomponenten reagieren in der Regel sofort auf ihre Eingänge. Wenn sich beispielsweise die Eingangsspannung eines Servoverstärkers ändert, dann ändert sich automatisch auch der Ausgang. Softwarekomponenten können jedoch nicht "automatisch" handeln. Jede Komponente verfügt über einen spezifischen Code, der ausgeführt werden muss, um das zu tun, was die Komponente tun soll. In einigen Fällen wird dieser Code einfach als Teil der Komponente ausgeführt. In den meisten Fällen jedoch, insbesondere bei Echtzeitkomponenten, muss der Code in einer bestimmten Reihenfolge und in bestimmten Abständen ausgeführt werden. So sollten beispielsweise Eingaben gelesen werden, bevor Berechnungen mit den Eingabedaten durchgeführt werden, und Ausgaben sollten erst dann geschrieben werden, wenn die Berechnungen abgeschlossen sind. In diesen Fällen wird der Code dem System in Form von einer oder mehreren "Funktionen" zur Verfügung gestellt. Jede Funktion ist ein Codeblock, der eine bestimmte Aktion ausführt. Der Systemintegrator kann "Threads" verwenden, um eine Reihe von Funktionen zu planen, die in einer bestimmten Reihenfolge und in bestimmten Zeitabständen ausgeführt werden sollen.

note: type: Plain text
en: (((HAL:Thread)))  A 'thread' is a list of functions that runs at specific intervals as part of a realtime task. When a thread is first created, it has a specific time interval (period), but no functions. Functions can be added to the thread, and will be executed in order every time the thread runs.
de: (((HAL:Thread)))  Ein "Thread" ist eine Liste von Funktionen, die in bestimmten Zeitabständen als Teil einer Echtzeitaufgabe ausgeführt werden. Wenn ein Thread zum ersten Mal erstellt wird, hat er ein bestimmtes Zeitintervall (Periode), aber keine Funktionen.  Es können Funktionen dem Thread hinzugefügt werden, um diese bei jeder Ausführung des Threads der Reihe nach auch auszuführen.

note: type: Plain text
en: As an example, suppose we have a parport component named hal_parport.  That component defines one or more HAL pins for each physical pin. The pins are described in that component's doc section: their names, how each pin relates to the physical pin, are they inverted, can you change polarity, etc. But that alone doesn't get the data from the HAL pins to the physical pins. It takes code to do that, and that is where functions come into the picture. The parport component needs at least two functions: one to read the physical input pins and update the HAL pins, the other to take data from the HAL pins and write it to the physical output pins. Both of these functions are part of the parport driver.
de: Angenommen, wir haben eine Parport-Komponente mit dem Namen hal_parport.  Diese Komponente definiert einen oder mehrere HAL-Pins für jeden physischen Pin. Die Pins werden im Dokumentabschnitt dieser Komponente beschrieben: ihre Namen, wie sich jeder Pin auf den physischen Pin bezieht, ob sie invertiert sind, ob Sie die Polarität ändern können usw. Aber das allein bringt die Daten nicht von den HAL-Pins zu den physischen Pins. Es braucht Code, um das zu tun, und hier kommen Funktionen ins Spiel. Die Parport-Komponente benötigt mindestens zwei Funktionen: eine, um die physischen Eingangspins zu lesen und die HAL-Pins zu aktualisieren, die andere, um Daten von den HAL-Pins zu nehmen und sie auf die physischen Ausgangspins zu schreiben. Beide Funktionen sind Teil des parport-Treibers.

note: type: Title ==
en: HAL components(((HAL Components)))
de: HAL-Komponenten(((HAL-Komponenten)))

note: type: Plain text
en: Each HAL component is a piece of software with well-defined inputs, outputs, and behavior, that can be installed and interconnected as needed. The section <<sec:hal-components,HAL Components List>> lists all available components and a brief description of what each does.
de: Jede HAL-Komponente ist ein Stück Software mit genau definierten Eingängen, Ausgängen und Verhaltensweisen, das installiert und nach Bedarf miteinander verbunden werden kann. Der Abschnitt <<sec:hal-components,HAL Components List>> listet alle verfügbaren Komponenten und eine kurze Beschreibung ihrer Funktionen auf.

note: type: Title ==
en: Timing Issues In HAL(((HAL Timing Issues)))
de: Timing-Probleme in HAL(((HAL Timing-Probleme)))

note: type: Plain text
en: Unlike the physical wiring models between black boxes that we have said that HAL is based upon, simply connecting two pins with a hal-signal falls far short of the action of the physical case.
de: Im Gegensatz zu den physikalischen Verdrahtungsmodellen zwischen Black Boxes, auf denen HAL, wie wir gesagt haben, basiert, reicht das einfache Verbinden zweier Pins mit einem HAL-Signal bei weitem nicht aus, um die Wirkung des physikalischen Falles zu erreichen.

note: type: Plain text
en: True relay logic consists of relays connected together, and when a contact opens or closes, current flows (or stops) immediately. Other coils may change state, etc, and it all just 'happens'. But in PLC style ladder logic, it doesn't work that way. Usually in a single pass through the ladder, each rung is evaluated in the order in which it appears, and only once per pass. A perfect example is a single rung ladder, with a NC contact in series with a coil. The contact and coil belong to the same relay.
de: Echte Relaislogik besteht aus miteinander verbundenen Relais, und wenn sich ein Kontakt öffnet oder schließt, fließt (oder stoppt) sofort Strom. Andere Spulen können ihren Zustand ändern usw., und das alles "passiert". In der SPS-Kontaktplanlogik funktioniert das jedoch nicht so. In der Regel wird in einem einzigen Durchlauf durch den Kontaktplan jede Sprosse in der Reihenfolge ausgewertet, in der sie erscheint, und zwar nur einmal pro Durchlauf. Ein perfektes Beispiel ist ein Kontaktplan mit einem Öffnerkontakt in Reihe mit einer Spule. Der Kontakt und die Spule gehören zum selben Relais.

note: type: Plain text
en: If this were a conventional relay, as soon as the coil is energized, the contacts begin to open and de-energize it. That means the contacts close again, etc, etc. The relay becomes a buzzer.
de: Wäre dies ein herkömmliches Relais, würden sich die Kontakte öffnen, sobald die Spule erregt ist, und die Spule wieder abschalten. Das heißt, die Kontakte schließen sich wieder, usw. usw. Das Relais wird zu einem Summton.

note: type: Plain text
en: With a PLC, if the coil is OFF and the contact is closed when the PLC begins to evaluate the rung, then when it finishes that pass, the coil is ON. The fact that turning on the coil opens the contact feeding it is ignored until the next pass. On the next pass, the PLC sees that the contact is open, and de-energizes the coil. So the relay still switches rapidly between on and off, but at a rate determined by how often the PLC evaluates the rung.
de: Wenn bei einer SPS die Spule ausgeschaltet und der Kontakt geschlossen ist, wenn die SPS mit der Auswertung des Strompfads beginnt, dann ist die Spule eingeschaltet, wenn sie diesen Durchgang beendet hat. Die Tatsache, dass das Einschalten der Spule den Kontakt öffnet, der sie speist, wird bis zum nächsten Durchgang ignoriert. Beim nächsten Durchgang sieht die SPS, dass der Kontakt geöffnet ist, und schaltet die Spule ab. Das Relais schaltet also immer noch schnell zwischen Ein und Aus um, allerdings in einem Rhythmus, der davon abhängt, wie oft die SPS den Stromkreis auswertet.

note: type: Plain text
en: In HAL, the function is the code that evaluates the rung(s). In fact, the HAL-aware realtime version of ClassicLadder exports a function to do exactly that. Meanwhile, a thread is the thing that runs the function at specific time intervals. Just like you can choose to have a PLC evaluate all its rungs every 10 ms, or every second, you can define HAL threads with different periods.
de: In HAL ist die Funktion der Code, der die Sprosse(n) auswertet. In der Tat exportiert die HAL-fähige Echtzeitversion von ClassicLadder eine Funktion, die genau das tut. In der Zwischenzeit ist ein Thread derjenige, der die Funktion in bestimmten Zeitintervallen ausführt. Genauso wie Sie wählen können, ob eine SPS alle 10 ms oder jede Sekunde alle Sprossen auswerten soll, können Sie HAL-Threads mit unterschiedlichen Zeitabständen definieren.

note: type: Plain text
en: What distinguishes one thread from another is 'not' what the thread does - that is determined by which functions are connected to it. The real distinction is simply how often a thread runs.
de: Was einen Thread von einem anderen unterscheidet, ist "nicht" das, was der Thread tut - das wird dadurch bestimmt, welche Funktionen mit ihm verbunden sind. Der eigentliche Unterschied ist einfach, wie oft ein Thread läuft.

note: type: Plain text
en: The next step is to decide what each thread needs to do. Some of those decisions are the same in (nearly) any LinuxCNC system. For instance, motion-command-handler is always added to servo-thread.
de: Der nächste Schritt ist zu entscheiden, was jeder Thread zu tun hat. Einige dieser Entscheidungen sind die gleichen in (fast) jeder LinuxCNC-System. Zum Beispiel wird motion-command-handler immer Servo-thread hinzugefügt.

note: type: Plain text
en: Other connections would be made by the integrator. These might include hooking the STG driver's encoder read and DAC write functions to the servo thread, or hooking stepgen's function to the base-thread, along with the parport function(s) to write the steps to the port.
de: Andere Verbindungen werden vom Integrator hergestellt. Dazu könnte gehören, dass die Encoder-Lese- und DAC-Schreibfunktionen des STG-Treibers mit dem Servo-Thread verbunden werden, oder dass die Stepgen-Funktion mit dem Base-Thread verbunden wird, zusammen mit der/den Parport-Funktion(en), um die Steps in den Port zu schreiben.

note: type: Title =
en: Parallel Port Driver
de: Parallelport-Treiber

note: type: Plain text
en: The hal_parport component is a driver for the traditional PC parallel port.  The port has a total of 17 physical pins. The original parallel port divided those pins into three groups: data, control, and status. The data group consists of 8 output pins, the control group consists of 4 pins, and the status group consists of 5 input pins.
de: Die Komponente hal_parport ist ein Treiber für den traditionellen PC-Parallelport. Der Port hat insgesamt 17 physikalische Pins. Die ursprüngliche parallele Schnittstelle teilte diese Pins in drei Gruppen ein: Daten, Steuerung und Status. Die Datengruppe besteht aus 8 Ausgangspins, die Steuergruppe besteht aus 4 Pins und die Statusgruppe besteht aus 5 Eingangspins.

note: type: Plain text
en: In the early 1990's, the bidirectional parallel port was introduced, which allows the data group to be used for output or input. The HAL driver supports the bidirectional port, and allows the user to set the data group as either input or output. If configured as 'out', a port provides a total of 12 outputs and 5 inputs. If configured as 'in', it provides 4 outputs and 13 inputs.
de: In den frühen 1990er Jahren wurde die bidirektionale parallele Schnittstelle eingeführt, die es ermöglicht, die Datengruppe für die Ausgabe oder Eingabe zu verwenden. Der HAL-Treiber unterstützt den bidirektionalen Anschluss und ermöglicht es dem Benutzer, die Datengruppe entweder als Eingang oder als Ausgang einzustellen. Ist ein Port als Ausgang konfiguriert, bietet er insgesamt 12 Ausgänge und 5 Eingänge. Wenn er als "in" konfiguriert ist, bietet er 4 Ausgänge und 13 Eingänge.

note: type: Plain text
en: In some parallel ports, the control group pins are open collectors, which may also be driven low by an external gate. On a board with open collector control pins. If configured as 'x', it provides 8 outputs, and 9 inputs.
de: Bei einigen parallelen Anschlüssen sind die Pins der Steuergruppe offene Kollektoren, die auch durch ein externes Gate auf "low" gesetzt werden können. Auf einer Karte mit Open-Collector-Steuerpins. Bei einer Konfiguration als 'x' stehen 8 Ausgänge und 9 Eingänge zur Verfügung.

note: type: Plain text
en: In some parallel ports, the control group has push-pull drivers and cannot be used as an input.
de: Bei einigen parallelen Anschlüssen verfügt die Steuergruppe über Push-Pull-Treiber und kann nicht als Eingang verwendet werden.

note: type: Block title
en: HAL and Open Collectors
de: HAL und Open Collectors

note: type: delimited block =
en: HAL cannot automatically determine if the 'x' mode bidirectional pins are actually open collectors (OC). If they are not, they cannot be used as inputs, and attempting to drive them LOW from an external source can damage the hardware.
de: HAL kann nicht automatisch feststellen, ob die bidirektionalen 'x'-Modus-Pins tatsächlich offene Kollektoren (OC) sind. Wenn dies nicht der Fall ist, können sie nicht als Eingänge verwendet werden, und der Versuch, sie von einer externen Quelle auf LOW zu setzen, kann die Hardware beschädigen.

note: type: delimited block =
en: To determine whether your port has 'open collector' pins, load hal_parport in 'x' mode. With no device attached, HAL should read the pin as TRUE. Next, insert a 470 ohm resistor from one of the control pins to GND. If the resulting voltage on the control pin is close to 0V, and HAL now reads the pin as FALSE, then you have an OC port. If the resulting voltage is far from 0V, or HAL does not read the pin as FALSE, then your port cannot be used in 'x' mode.
de: Um festzustellen, ob Ihr Port 'open collector' Pins hat, laden Sie hal_parport im 'x' Modus. Wenn kein Gerät angeschlossen ist, sollte HAL den Pin als TRUE lesen. Legen Sie dann einen 470-Ohm-Widerstand von einem der Steuerpins nach GND. Wenn die resultierende Spannung am Steuerpin nahe bei 0 V liegt und HAL den Pin nun als FALSE liest, dann haben Sie einen OC-Port. Wenn die resultierende Spannung weit von 0V entfernt ist oder HAL den Pin nicht als FALSE liest, dann kann Ihr Port nicht im 'x'-Modus verwendet werden.

note: type: Plain text
en: The external hardware that drives the control pins should also use open collector gates (e.g., 74LS05).
de: Die externe Hardware, welche die Steuerpins ansteuert, sollte ebenfalls Open-Collector-Gates verwenden (z. B. 74LS05).

note: type: delimited block =
en: On some computers, BIOS settings may affect whether 'x' mode can be used. 'SPP' mode is most likely to work.
de: Bei einigen Computern können die BIOS-Einstellungen beeinflussen, ob der 'x'-Modus verwendet werden kann. Der 'SPP'-Modus funktioniert am ehesten.

note: type: Plain text
en: No other combinations are supported, and a port cannot be changed from input to output once the driver is installed.
de: Andere Kombinationen werden nicht unterstützt, und ein Anschluss kann nach der Installation des Treibers nicht mehr von Eingang auf Ausgang umgestellt werden.

note: type: Plain text
en: The parport driver can control up to 8 ports (defined by MAX_PORTS in hal_parport.c). The ports are numbered starting at zero.
de: Der parport-Treiber kann bis zu 8 Ports steuern (definiert durch MAX_PORTS in hal_parport.c). Die Ports werden bei Null beginnend nummeriert.

note: type: Title ==
en: Loading
de: Laden

note: type: Plain text
en: The hal_parport driver is a real time component so it must be loaded into the real time thread with 'loadrt'. The configuration string describes the parallel ports to be used, and (optionally) their types.  If the configuration string does not describe at least one port, it is an error.
de: Der hal_parport Treiber ist eine Echtzeitkomponente und muss daher mit 'loadrt' in den Echtzeit-Thread geladen werden. Der Konfigurationsstring beschreibt die zu verwendenden parallelen Ports und (optional) deren Typen.  Wenn der Konfigurationsstring nicht mindestens einen Port beschreibt, ist dies ein Fehler.

note: type: delimited block -
en: loadrt hal_parport cfg="port [type] [port [type] ...]"
de: loadrt hal_parport cfg="Anschluss [Typ] [Anschluss [Typ] ...]"

note: type: Block title
en: Specifying the Port
de: Angabe des Ports

note: type: Plain text
en: Numbers below 16 refer to parallel ports detected by the system. This is the simplest way to configure the `hal_parport` driver and cooperates with the Linux parport_pc driver if it is loaded. A port of 0 is the first parallel port detected on the system, 1 is the next and so on.
de: Zahlen unter 16 beziehen sich auf parallele Ports, die vom System erkannt werden. Dies ist der einfachste Weg, den `hal_parport`-Treiber zu konfigurieren und arbeitet mit dem Linux parport_pc-Treiber zusammen, wenn dieser geladen ist. Ein Port von 0 ist der erste vom System erkannte parallele Port, 1 ist der nächste und so weiter.

note: type: Block title
en: Basic configuration
de: Grundkonfiguration

note: type: Plain text
en: This will use the first parallel port Linux detects:
de: Dies wird den ersten parallelen Port verwenden, den Linux erkennt:

note: type: Block title
en: Using the Port Address
de: Verwenden der Portadresse

note: type: Plain text
en: Instead, the port address may be specified using the hex notation with the '0x' prefix.
de: Stattdessen kann die Anschlussadresse in Hexadezimalschreibweise mit dem Präfix "0x" angegeben werden.

note: type: Plain text
en: The config string represents the hexadecimal address of the port, optionally followed by a direction, all repeated for each port.  The directions are _in_, _out_, or _x_, and determine the direction of the physical pins 2 to 9 of the D-Sub 25 connector. If the direction is not specified, the data group will by default be configured as outputs. For example:
de: Die Konfigurationszeichenfolge stellt die hexadezimale Adresse des Anschlusses dar, optional gefolgt von einer Richtung, die für jeden Anschluss wiederholt wird.  Die Richtungen sind _in_, _out_ oder _x_ und bestimmen die Richtung der physischen Pins 2 bis 9 des D-Sub 25-Anschlusses. Ist die Richtung nicht angegeben, so wird die Datengruppe standardmäßig als Ausgang konfiguriert. Zum Beispiel:

note: type: Plain text
en: This example installs the drivers for a port 0x0278, with pins 2 to 9 as outputs (by default, since neither _in_ nor _out_ is specified), a port 0x0378, with pins 2 to 9 as inputs and a 0x20A0 port, with pins 2 to 9 explicitly specified as outputs. Note that you must know the base address of the parallel ports to configure the drivers correctly. For ISA bus ports, this is usually not a problem, since the ports are almost always at a well-known address, such as 0x278 or 0x378 which are typically configured in the BIOS. The addresses of PCI bus cards are usually found with `lspci -v` in an _I/O ports_ line, or in a kernel message after running `sudo modprobe -a parport_pc`.  There is no default address, so if `<config-string>` does not contain at least one address, it is an error.
de: Dieses Beispiel installiert die Treiber für einen Anschluss 0x0278, mit den Pins 2 bis 9 als Ausgänge (standardmäßig, da weder _in_ noch _out_ angegeben ist), einen Anschluss 0x0378, mit den Pins 2 bis 9 als Eingänge und einen Anschluss 0x20A0, mit den Pins 2 bis 9 explizit als Ausgänge angegeben. Beachten Sie, dass Sie die Basisadresse der parallelen Ports kennen müssen, um die Treiber korrekt zu konfigurieren. Bei ISA-Bus-Ports ist dies in der Regel kein Problem, da die Ports fast immer eine bekannte Adresse haben, wie z. B. 0x278 oder 0x378, die normalerweise im BIOS konfiguriert werden. Die Adressen von PCI-Bus-Karten werden normalerweise mit `lspci -v` in einer _I/O-Ports_-Zeile oder in einer Kernel-Meldung nach der Ausführung von `sudo modprobe -a parport_pc` gefunden.  Es gibt keine Standardadresse, wenn also `<config-string>` nicht mindestens eine Adresse enthält, ist das ein Fehler.

note: type: Block title
en: Parport block diagram(((Parport block diag)))
de: Parport-Blockdiagramm (((Parport-Blockdiagramm)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Parport block diagram
de: Parport-Blockdiagramm

note: type: Plain text
en: For each parallel port handled by the hal_parport driver, a 'type' can optionally be specified.  The type is one of 'in', 'out', 'epp', or 'x'.
de: Für jede parallele Schnittstelle, die vom hal_parport Treiber verwaltet wird, kann optional ein 'Typ' angegeben werden.  Der Typ ist einer von 'in', 'out', 'epp' oder 'x'.

note: type: Block title
en: Parallel Port Direction
de: Parallele Port-Richtung

note: type: Plain text
en: If the type is not specified, the default is 'out'.
de: Wenn der Typ nicht angegeben wird, ist der Standardwert "out".

note: type: Plain text
en: A type of 'epp' is the same as 'out', but the hal_parport driver requests that the port switch into EPP mode.  The hal_parport driver does *not* use the EPP bus protocol, but on some systems EPP mode changes the electrical characteristics of the port in a way that may make some marginal hardware work better.  The Gecko G540's charge pump is known to require this on some parallel ports.
de: Ein Typ 'epp' ist derselbe wie 'out', aber der hal_parport Treiber fordert den Port auf, in den EPP-Modus zu wechseln.  Der hal_parport-Treiber benutzt *nicht* das EPP-Busprotokoll, aber auf einigen Systemen ändert der EPP-Modus die elektrischen Eigenschaften des Ports auf eine Weise, die einige marginale Hardware besser funktionieren lässt.  Es ist bekannt, dass die Ladungspumpe des Gecko G540 dies bei einigen parallelen Anschlüssen erfordert.

note: type: Plain text
en: See the Note above about mode 'x'.
de: Siehe den obigen Hinweis zum Modus 'x'.

note: type: Block title
en: Example with two parallel ports
de: Beispiel mit zwei parallelen Anschlüssen

note: type: Plain text
en: This will enable two system-detected parallel ports, the first in output mode and the second in input mode:
de: Dadurch werden zwei vom System erkannte parallele Schnittstellen aktiviert, die erste im Ausgabemodus und die zweite im Eingabemodus:

note: type: Block title
en: Parport R/W Functions
de: Parallelport Lesen und Schreiben (engl. R/W-Functions)

note: type: Plain text
en: You must also direct LinuxCNC to run the 'read' and 'write' functions.
de: Sie müssen LinuxCNC auch anweisen, die Funktionen 'Lesen' und 'Schreiben' auszuführen.

note: type: Title ==
en: PCI Port Address
de: PCI-Port-Adresse

note: type: Plain text
en: One good PCI parport card is made with the Netmos 9815 chipset.  It has good +5V signals, and can come in a single or dual ports.
de: Eine gute PCI-Parport-Karte wird mit dem Netmos 9815-Chipsatz hergestellt.  Sie hat gute +5V-Signale und kann mit einem oder zwei Anschlüssen geliefert werden.

note: type: Plain text
en: To find the I/O addresses for PCI cards open a terminal window and use the list pci command:
de: Um die E/A-Adressen für PCI-Karten zu finden, öffnen Sie ein Terminalfenster und verwenden Sie den Befehl list pci:

note: type: Plain text
en: Look for the entry with "Netmos" in it. Example of a 2-port card:
de: Suchen Sie nach dem Eintrag mit "Netmos". Beispiel einer 2-Port-Karte:

note: type: Plain text
en: From experimentation, I've found the first port (the on-card port) uses the third address listed (c000), and the second port (the one that attaches with a ribbon cable) uses the first address listed (b800). The following example shows the onboard parallel port and a PCI parallel port using the default out direction.
de: Beim Experimentieren habe ich festgestellt, dass der erste Anschluss (der Anschluss auf der Karte) die dritte Adresse (c000) und der zweite Anschluss (derjenige, der mit einem Flachbandkabel angeschlossen wird) die erste Adresse (b800) verwendet. Das folgende Beispiel zeigt den Onboard-Parallelport und einen PCI-Parallelport, der die Standard-Ausgangsrichtung verwendet.

note: type: Plain text
en: Please note that your values will differ. The Netmos cards are Plug-N-Play, and might change their settings depending on which slot you put them into, so if you like to \'get under the hood' and re-arrange things, be sure to check these values before you start LinuxCNC.
de: Bitte beachten Sie, dass Ihre Werte abweichen können. Die Netmos-Karten sind Plug-N-Play, und könnte ihre Einstellungen ändern, je nachdem, welchen Steckplatz Sie sie in, so dass, wenn Sie \ "unter die Haube zu bekommen" und neu anordnen Dinge mögen, achten Sie darauf, diese Werte zu überprüfen, bevor Sie LinuxCNC starten.

note: type: Plain text
en: 'parport.<p>.pin-<n>-in' (bit) Tracks a physical input pin.
de: parport.<p>.pin-<n>-in' (Bit) Verfolgt einen physikalischen Eingangs-Pin.

note: type: Plain text
en: 'parport.<p>.pin-<n>-in-not' (bit) Tracks a physical input pin, but inverted.
de: parport.<p>.pin-<n>-in-not' (Bit) Verfolgt einen physischen Eingangs-Pin, aber invertiert.

note: type: Plain text
en: For each pin, '<p>' is the port number, and '<n>' is the physical pin number in the 25 pin D-shell connector.
de: Für jeden Pin ist '<p>' die Anschlussnummer und '<n>' die physische Pin-Nummer im 25-poligen D-Shell-Stecker.

note: type: Plain text
en: For each physical output pin, the driver creates a single HAL pin, for example: 'parport.0.pin-14-out'.
de: Für jeden physischen Ausgangspin legt der Treiber einen einzelnen HAL-Pin an, z. B.: 'parport.0.pin-14-out'.

note: type: Plain text
en: For each physical input pin, the driver creates two HAL pins, for example: 'parport.0.pin-12-in' and 'parport.0.pin-12-in-not'.
de: Für jeden physischen Eingangspin erstellt der Treiber zwei HAL-Pins, zum Beispiel: „parport.0.pin-12-in“ und „parport.0.pin-12-in-not“.

note: type: Plain text
en: The '-in' HAL pin is TRUE if the physical pin is high, and FALSE if the physical pin is low. The '-in-not' HAL pin is inverted and is FALSE if the physical pin is high.
de: Der HAL-Pin '-in' ist TRUE, wenn der physikalische Pin high ist, und FALSE, wenn der physikalische Pin low ist. Der '-in-not'-HAL-Pin ist invertiert und ist FALSE, wenn der physikalische Pin high ist.

note: type: Plain text
en: 'parport.<p>.pin-<n>-out-invert' (bit) Inverts an output pin.
de: 'parport.<p>.pin-<n>-out-invert' (Bit) Invertiert einen Ausgangspin.

note: type: Plain text
en: 'parport.<p>.pin-<n>-out-reset' (bit) (only for 'out' pins) TRUE if this pin should be reset when the '-reset' function is executed.
de: 'parport.<p>.pin-<n>-out-reset' (Bit) (nur für 'out'-Pins) TRUE, wenn dieser Pin zurückgesetzt werden soll, wenn die '-reset'-Funktion ausgeführt wird.

note: type: Plain text
en: parport.<p>.reset-time' (U32) The time (in nanoseconds)  between a pin is set by 'write' and reset by the 'reset' function if it is enabled.
de: parport.<p>.reset-time' (U32) Die Zeit (in Nanosekunden) zwischen dem Setzen eines Pins durch 'write' und dem Zurücksetzen durch die Funktion 'reset', wenn diese aktiviert ist.

note: type: Plain text
en: The '-invert' parameter determines whether an output pin is active high or active low. If '-invert' is FALSE, setting the HAL '-out' pin TRUE drives the physical pin high, and FALSE drives it low. If '-invert' is TRUE, then setting the HAL '-out' pin TRUE will drive the physical pin low.
de: Der Parameter '-invert' bestimmt, ob ein Ausgangspin aktiv high oder aktiv low ist. Wenn '-invert' FALSE ist, wird der physikalische Pin durch das Setzen des HAL '-out'-Pins auf TRUE aktiviert und durch FALSE deaktiviert. Wenn '-invert' TRUE ist, wird der physikalische Pin durch das Setzen des HAL '-out'-Pins TRUE auf low gesetzt.

note: type: Plain text
en: 'parport.<p>.read' (funct) Reads physical input pins of port '<portnum>' and updates HAL '-in' and '-in-not' pins.
de: 'parport.<p>.read' (funct) Liest die physikalischen Eingangspins von Port '<portnum>' und aktualisiert die HAL '-in' und '-in-not' Pins.

note: type: Plain text
en: 'parport.read-all' (funct) Reads physical input pins of all ports and updates HAL '-in' and '-in-not' pins.
de: 'parport.read-all' (funct) Liest die physischen Eingangspins aller Ports und aktualisiert die HAL '-in' und '-in-not' Pins.

note: type: Plain text
en: 'parport.<p>.write' (funct) Reads HAL '-out' pins of port '<p>' and updates that port's physical output pins.
de: 'parport.<p>.write' (funct) Liest die HAL '-out' Pins des Ports '<p>' und aktualisiert die physikalischen Ausgangspins dieses Ports.

note: type: Plain text
en: 'parport.write-all' (funct) Reads HAL '-out' pins of all ports and updates all physical output pins.
de: parport.write-all' (funct) Liest die HAL-'-out'-Pins aller Ports und aktualisiert alle physischen Ausgangspins.

note: type: Plain text
en: 'parport.<p>.reset' (funct) Waits until 'reset-time' has elapsed since the associated 'write', then resets pins to values indicated by '-out-invert' and '-out-invert' settings. 'reset' must be later in the same thread as 'write. 'If '-reset' is TRUE, then the 'reset' function will set the pin to the value of '-out-invert'. This can be used in conjunction with stepgen's 'doublefreq' to produce one step per period. The <<sec:stepgen,stepgen stepspace>> for that pin must be set to 0 to enable doublefreq.
de: 'parport.<p>.reset' (funct) Wartet, bis 'reset-time' seit dem zugehörigen 'write' verstrichen ist, und setzt dann die Pins auf die durch '-out-invert' und '-out-invert' angegebenen Werte zurück. Wenn '-reset' TRUE ist, dann setzt die 'reset'-Funktion den Pin auf den Wert von '-out-invert'. Dies kann in Verbindung mit 'doublefreq' von stepgen verwendet werden, um einen Schritt pro Periode zu erzeugen. Der <<sec:stepgen,Schrittgenerator StepSpace>> für diesen Pin muss auf 0 gesetzt werden, um doublefreq zu aktivieren.

note: type: Plain text
en: The individual functions are provided for situations where one port needs to be updated in a very fast thread, but other ports can be updated in a slower thread to save CPU time. It is probably not a good idea to use both an '-all' function and an individual function at the same time.
de: Die einzelnen Funktionen sind für Situationen vorgesehen, in denen ein Anschluss in einem sehr schnellen Thread aktualisiert werden muss, während andere Anschlüsse in einem langsameren Thread aktualisiert werden können, um CPU-Zeit zu sparen. Es ist wahrscheinlich keine gute Idee, gleichzeitig eine '-all'-Funktion und eine individuelle Funktion zu verwenden.

note: type: Title ==
en: Common problems
de: Häufige Probleme

note: type: Plain text
en: If loading the module reports
de: Wenn das Laden des Moduls berichtet

note: type: Plain text
en: then ensure that the standard kernel module 'parport_pc' is not loaded footnote:[In the LinuxCNC packages for Ubuntu, the file /etc/modprobe.d/emc2 generally prevents 'parport_pc' from being automatically loaded.] and that no other device in the system has claimed the I/O ports.
de: dann stellen Sie sicher, dass das Standard-Kernelmodul 'parport_pc' nicht geladen ist Fußnote:[In den LinuxCNC-Paketen für Ubuntu verhindert die Datei /etc/modprobe.d/emc2 im Allgemeinen, dass 'parport_pc' automatisch geladen wird.] und dass kein anderes Gerät im System die I/O-Ports beansprucht hat.

note: type: Plain text
en: If the module loads but does not appear to function, then the port address is incorrect.
de: Wenn das Modul geladen wird, aber nicht zu funktionieren scheint, ist die Anschlussadresse falsch.

note: type: Title ==
en: Using DoubleStep
de: DoubleStep verwenden

note: type: Plain text
en: To setup DoubleStep on the parallel port you must add the function parport.n.reset after parport.n.write and configure stepspace to 0 and the reset time wanted. So that step can be asserted on every period in HAL and then toggled off by parport after being asserted for time specified by parport.n.reset-time.
de: Um DoubleStep an der parallelen Schnittstelle einzurichten, müssen Sie die Funktion parport.n.reset nach parport.n.write hinzufügen und den Schrittabstand auf 0 und die gewünschte Rücksetzzeit einstellen. So kann der Schritt in jeder Periode im HAL aktiviert und dann von parport ausgeschaltet werden, nachdem er für die durch parport.n.reset-time festgelegte Zeit aktiviert wurde.

note: type: Plain text
en: For example:
de: Zum Beispiel:

note: type: Plain text
en: More information on DoubleStep can be found on the http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TweakingSoftwareStepGeneration[wiki].
de: Weitere Informationen zu DoubleStep finden Sie im http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TweakingSoftwareStepGeneration[wiki].

note: type: Plain text
en: In today's PCs, parallel ports may require a plug and play (PNP) configuration before they can be used. The kernel module _probe_parport_ configures all PNP ports present. It must be loaded before _hal_parport_. On machines without a PNP port, it can be loaded but will have no effect.
de: In heutigen PCs erfordern parallele Schnittstellen möglicherweise eine Plug-and-Play-Konfiguration (PNP), bevor sie verwendet werden können. Das Kernelmodul _probe_parport_ konfiguriert alle vorhandenen PNP-Ports. Es muss vor _hal_parport_ geladen werden. Auf Rechnern ohne PNP-Port kann es geladen werden, hat aber keine Wirkung.

note: type: Title ===
en: Installing probe_parport
de: Installation von probe_parport

note: type: Plain text
en: If, when `parport_pc` kernel module is loaded with command:
de: Wenn das Kernelmodul `parport_pc` mit dem Befehl geladen wird:

note: type: Plain text
en: Linux kernel outputs a message similar to:
de: Der Linux-Kernel gibt eine Meldung ähnlich der folgenden aus:

note: type: delimited block -
en: parport: PnPBIOS parport detected.
de: parport: PnPBIOS parport erkannt.

note: type: Plain text
en: Then use of this module will probably be necessary.
de: Dann wird die Verwendung dieses Moduls wahrscheinlich notwendig sein.

note: type: Plain text
en: Finally, HAL parport components should be loaded:
de: Schließlich sollten die HAL-Parport-Komponenten geladen werden:

note: type: Title =
en: HAL Component Descriptions
de: Beschreibungen der HAL-Komponenten

note: type: Plain text
en: This component provides software based generation of step pulses in response to position or velocity commands. In position mode, it has a built in pre-tuned position loop, so PID tuning is not required. In velocity mode, it drives a motor at the commanded speed, while obeying velocity and acceleration limits. It is a realtime component only, and depending on CPU speed, etc, is capable of maximum step rates of 10 kHz to perhaps 50 kHz. The step pulse generator block diagram shows three block diagrams, each is a single step pulse generator. The first diagram is for step type '0', (step and direction). The second is for step type '1' (up/down, or pseudo-PWM), and the third is for step types 2 through 14 (various stepping patterns). The first two diagrams show position mode control, and the third one shows velocity mode. Control mode and step type are set independently, and any combination can be selected.
de: Diese Komponente ermöglicht die softwarebasierte Erzeugung von Schrittimpulsen als Reaktion auf Positions- oder Geschwindigkeitsbefehle. Im Positionsmodus verfügt sie über eine integrierte, voreingestellte Positionsschleife, so dass eine PID-Einstellung nicht erforderlich ist. Im Geschwindigkeitsmodus treibt sie einen Motor mit der befohlenen Geschwindigkeit an, wobei Geschwindigkeits- und Beschleunigungsgrenzen eingehalten werden. Es handelt sich um eine reine Echtzeitkomponente, die je nach CPU-Geschwindigkeit usw. maximale Schrittfrequenzen von 10 kHz bis vielleicht 50 kHz erreichen kann. Das Blockdiagramm des Schrittimpulsgenerators zeigt drei Blockdiagramme, jedes davon ist ein einzelner Schrittimpulsgenerator. Das erste Diagramm ist für den Schritttyp '0' (Schritt und Richtung). Das zweite ist für den Schritttyp '1' (auf/ab oder Pseudo-PWM), und das dritte für die Schritttypen 2 bis 14 (verschiedene Schrittmuster). Die ersten beiden Diagramme zeigen den Positionsmodus, das dritte den Geschwindigkeitsmodus. Steuermodus und Schrittart werden unabhängig voneinander eingestellt, und es kann jede beliebige Kombination gewählt werden.

note: type: Block title
en: Step Pulse Generator Block Diagram position mode(((Stepgen Block Diagram)))
de: Schrittimpulsgenerator-Blockdiagramm Positionsmodus(((Stepgen-Blockdiagramm)))

note: type: Block title
en: Loading `stepgen` component
de: Laden der Komponente `stepgen`

note: type: Plain text
en: is a series of comma separated decimal integers. Each number causes a single step pulse generator to be loaded, the value of the number determines the stepping type.
de: ist eine Reihe von durch Kommata getrennten Dezimalzahlen. Jede Zahl bewirkt, dass ein Einzelschritt-Impulsgenerator geladen wird; der Wert der Zahl bestimmt die Schrittart.

note: type: Plain text
en: is a comma separated series of 'p' or 'v' characters, to specify position or velocity mode.
de: ist eine durch Komma getrennte Folge von 'p'- oder 'v'-Zeichen, um den Positions- oder Geschwindigkeitsmodus anzugeben.

note: type: Plain text
en: is optional, if omitted, all of the step generators will be position mode.
de: ist optional, wenn sie weggelassen wird, werden alle Schrittgeneratoren im Positionsmodus arbeiten.

note: type: Plain text
en: Will install three step generators. The first two use step type '0' (step and direction) and run in position mode. The last one uses step type '2' (quadrature) and runs in velocity mode. The default value for '<config-array>' is '0,0,0' which will install three type '0' (step/dir) generators. The maximum number of step generators is 8 (as defined by MAX_CHAN in stepgen.c).  Each generator is independent, but all are updated by the same function(s) at the same time. In the following descriptions, '<chan>' is the number of a specific generator. The first generator is number 0.
de: Es werden drei Schrittgeneratoren installiert. Die ersten beiden verwenden den Schritttyp '0' (Schritt und Richtung) und laufen im Positionsmodus. Der letzte verwendet den Schritttyp '2' (Quadratur) und läuft im Geschwindigkeitsmodus. Der Standardwert für '<config-array>' ist '0,0,0', wodurch drei Generatoren vom Typ '0' (Schritt/Richtung) installiert werden. Die maximale Anzahl von Schrittgeneratoren ist 8 (wie durch MAX_CHAN in stepgen.c definiert).  Jeder Generator ist unabhängig, aber alle werden durch dieselbe(n) Funktion(en) zur gleichen Zeit aktualisiert. In den folgenden Beschreibungen steht '<chan>' für die Nummer eines bestimmten Generators. Der erste Generator hat die Nummer 0.

note: type: Block title
en: Unloading `stepgen` component
de: Komponente "stepgen" entfernen (engl. unload)

note: type: Title ===
en: Pins(((HAL stepgen pins)))
de: Pins(((HAL stepgen Pins)))

note: type: Plain text
en: On the step type and control type selected.
de: Zur gewählten Schrift- und Steuerungsart.

note: type: Plain text
en: '(float) stepgen._<chan>_.position-cmd' - Desired motor position, in position units (position mode only).
de: '(float) stepgen._<chan>_.position-cmd' - Gewünschte Motorposition, in Positionseinheiten (nur Positionsmodus).

note: type: Plain text
en: '(float) stepgen._<chan>_.velocity-cmd' - Desired motor velocity, in position units per second (velocity mode only).
de: '(float) stepgen._<chan>_.velocity-cmd' - Gewünschte Motorgeschwindigkeit, in Positionseinheiten pro Sekunde (nur im Geschwindigkeitsmodus).

note: type: Plain text
en: '(float) stepgen._<chan>_.position-fb' - Feedback position in position units, updated by 'capture_position()'.
de: '(float) stepgen. _<chan>_.position-fb' - Feedback-Position in Positionseinheiten, aktualisiert durch 'capture_position()'.

note: type: Plain text
en: '(bit) stepgen._<chan>_.enable' - Enables output steps - when false, no steps are generated.
de: '(bit) stepgen._<chan>_.enable' - Aktiviert Ausgabeschritte - wenn false, werden keine Schritte erzeugt.

note: type: Plain text
en: '(bit) stepgen._<chan>_.step' - Step pulse output (step type 0 only).
de: '(bit) stepgen._<chan>_.step' - Schrittimpulsausgang (nur Schritttyp 0).

note: type: Plain text
en: '(bit) stepgen._<chan>_.dir' - Direction output (step type 0 only).
de: '(bit) stepgen._<chan>_.dir' - Richtungsausgabe (nur Schritttyp 0).

note: type: Plain text
en: '(bit) stepgen._<chan>_.up' - UP pseudo-PWM output (step type 1 only).
de: '(bit) stepgen._<chan>_.up' - UP Pseudo-PWM Ausgang (nur Schritttyp 1).

note: type: Plain text
en: '(bit) stepgen._<chan>_.down' - DOWN pseudo-PWM output (step type 1 only).
de: '(bit) stepgen._<chan>_.down' - DOWN Pseudo-PWM-Ausgang (nur Schritttyp 1).

note: type: Plain text
en: '(bit) stepgen._<chan>_.phase-A' - Phase A output (step types 2-14 only).
de: '(bit) stepgen._<chan>_.phase-A' - Ausgang Phase A (nur Schritttypen 2-14).

note: type: Plain text
en: '(bit) stepgen._<chan>_.phase-B' - Phase B output (step types 2-14 only).
de: '(bit) stepgen._<chan>_.phase-B' - Ausgang Phase B (nur Schritttypen 2-14).

note: type: Plain text
en: '(bit) stepgen._<chan>_.phase-C' - Phase C output (step types 3-14 only).
de: '(bit) stepgen._<chan>_.phase-C' - Phase-C-Ausgang (nur Schritttypen 3-14).

note: type: Plain text
en: '(bit) stepgen._<chan>_.phase-D' - Phase D output (step types 5-14 only).
de: '(bit) stepgen._<chan>_.phase-D' - Phase-D-Ausgang (nur Schritttypen 5-14).

note: type: Plain text
en: '(bit) stepgen._<chan>_.phase-E' - Phase E output (step types 11-14 only).
de: '(bit) stepgen._<chan>_.phase-E' - Phase-E-Ausgang (nur Schritttypen 11-14).

note: type: Title ===
en: Parameters(((HAL stepgen parameters)))
de: Parameter(((HAL stepgen Parameter)))

note: type: Plain text
en: '(float) stepgen.<chan>.position-scale' - Steps per position unit.  This parameter is used for both output and feedback.
de: '(float) stepgen.<chan>.position-scale' - Schritte pro Positionseinheit.  Dieser Parameter wird sowohl für die Ausgabe als auch für die Rückmeldung verwendet.

note: type: Plain text
en: '(float) stepgen.<chan>.maxvel' - Maximum velocity, in position units per second. If 0.0, has no effect.
de: '(float) stepgen.<chan>.maxvel' - Maximale Geschwindigkeit, in Positionseinheiten pro Sekunde. Wenn 0.0, hat keine Wirkung.

note: type: Plain text
en: '(float) stepgen.<chan>.maxaccel' - Maximum accel/decel rate, in positions units per second squared.  If 0.0, has no effect.
de: '(float) stepgen.<chan>.maxaccel' - Maximale Beschleunigungs-/Verzögerungsrate, in Positionseinheiten pro Sekunde zum Quadrat.  Wenn 0.0, hat keine Auswirkung.

note: type: Plain text
en: '(float) stepgen.<chan>.frequency' - The current step rate, in steps per second.
de: '(float) stepgen.<chan>.frequency' - Die aktuelle Schrittfrequenz in Schritten pro Sekunde.

note: type: Plain text
en: '(float) stepgen.<chan>.steplen' - Length of a step pulse (step type 0 and 1) or minimum time in a given state (step types 2-14), in nano-seconds.
de: '(float) stepgen.<chan>.steplen' - Länge eines Schrittimpulses (Schritttyp 0 und 1) oder Mindestzeit in einem bestimmten Zustand (Schritttypen 2-14), in Nanosekunden.

note: type: Plain text
en: '(float) stepgen.<chan>.stepspace' - Minimum spacing between two step pulses (step types 0 and 1 only), in nano-seconds. Set to 0 to enable the stepgen 'doublefreq' function. To use 'doublefreq' the <<sub:parport-functions,parport reset function>> must be enabled.
de: '(float) stepgen.<chan>.stepspace' - Mindestabstand zwischen zwei Schrittimpulsen (nur Schritttypen 0 und 1), in Nanosekunden. Wird auf 0 gesetzt, um die stepgen-Funktion 'doublefreq' zu aktivieren. Um 'doublefreq' zu verwenden, muss die <<sub:parport-functions,parport reset function>> aktiviert sein.

note: type: Plain text
en: '(float) stepgen.<chan>.dirsetup' - Minimum time from a direction change to the beginning of the next step pulse (step type 0 only), in nanoseconds.
de: '(float) stepgen.<chan>.dirsetup' - Mindestzeit zwischen einem Richtungswechsel und dem Beginn des nächsten Schrittimpulses (nur Schritttyp 0), in Nanosekunden.

note: type: Plain text
en: '(float) stepgen.<chan>.dirhold' - Minimum time from the end of a step pulse to a direction change (step type 0 only), in nanoseconds.
de: '(float) stepgen.<chan>.dirhold' - Mindestzeit vom Ende eines Schrittimpulses bis zu einem Richtungswechsel (nur Schritttyp 0), in Nanosekunden.

note: type: Plain text
en: '(float) stepgen.<chan>.dirdelay' - Minimum time any step to a step in the opposite direction (step types 1-14 only), in nano-seconds.
de: '(float) stepgen.<chan>.dirdelay' - Mindestzeit zwischen einem Schritt und einem Schritt in die entgegengesetzte Richtung (nur Schritttypen 1-14), in Nanosekunden.

note: type: Plain text
en: '(s32) stepgen.<chan>.rawcounts' - The raw feedback count, updated by 'make_pulses()'.
de: '(s32) stepgen.<chan>.rawcounts' - Die rohe Anzahl der Rückmeldungen, aktualisiert durch 'make_pulses()'.

note: type: Plain text
en: In position mode, the values of maxvel and maxaccel are used by the internal position loop to avoid generating step pulse trains that the motor cannot follow. When set to values that are appropriate for the motor, even a large instantaneous change in commanded position will result in a smooth trapezoidal move to the new location. The algorithm works by measuring both position error and velocity error, and calculating an acceleration that attempts to reduce both to zero at the same time. For more details, including the contents of the 'control equation' box, consult the code.
de: Im Positionsmodus werden die Werte von maxvel und maxaccel von der internen Positionsschleife verwendet, um Schrittimpulsfolgen zu vermeiden, denen der Motor nicht folgen kann. Wenn sie auf Werte eingestellt sind, die für den Motor geeignet sind, führt selbst eine große momentane Änderung der befohlenen Position zu einer sanften trapezförmigen Bewegung zur neuen Position. Der Algorithmus misst sowohl den Positions- als auch den Geschwindigkeitsfehler und berechnet eine Beschleunigung, die versucht, beide gleichzeitig auf Null zu reduzieren. Weitere Einzelheiten, einschließlich des Inhalts des Feldes "Kontrollgleichung" (engl. control equation), finden Sie im Code.

note: type: Plain text
en: In velocity mode, maxvel is a simple limit that is applied to the commanded velocity, and maxaccel is used to ramp the actual frequency if the commanded velocity changes abruptly. As in position mode, proper values for these parameters ensure that the motor can follow the generated pulse train.
de: Im Geschwindigkeitsmodus ist maxvel ein einfacher Grenzwert, der auf die befohlene Geschwindigkeit angewendet wird, und maxaccel wird verwendet, um die tatsächliche Frequenz zu rampen, wenn sich die befohlene Geschwindigkeit abrupt ändert. Wie im Positionsmodus sorgen die richtigen Werte für diese Parameter dafür, dass der Motor der erzeugten Impulsfolge folgen kann.

note: type: Title ===
en: Step Types(((HAL stepgen Step Types)))
de: Schritttypen(((HAL stepgen Schritttypen)))

note: type: Plain text
en: Step generator supports 15 different _step sequences_:
de: Der Schrittgenerator unterstützt 15 verschiedene _Schrittfolgen_:

note: type: Block title
en: Step Type 0
de: Schritttyp 0 (engl. step type 0)

note: type: Plain text
en: Step type 0 is the standard step and direction type. When configured for step type 0, there are four extra parameters that determine the exact timing of the step and direction signals. In the following figure the meaning of these parameters is shown. The parameters are in nanoseconds, but will be rounded up to an integer multiple of the thread period for the threaed that calls 'make_pulses()'. For example, if 'make_pulses()' is called every 16 µs, and steplen is 20000, then the step pulses will be 2 x 16 = 32 µs long. The default value for all four of the parameters is 1ns, but the automatic rounding takes effect the first time the code runs. Since one step requires 'steplen' ns high and 'stepspace' ns low, the maximum frequency is 1,000,000,000 divided by '(steplen+stepspace)'. If 'maxfreq' is set higher than that limit, it will be lowered automatically. If maxfreq is zero, it will remain zero, but the output frequency will still be limited.
de: Schritttyp 0 ist der Standard-Schritt- und Richtungstyp. Bei der Konfiguration für den Schritttyp 0 gibt es vier zusätzliche Parameter, die das genaue Timing der Schritt- und Richtungssignale bestimmen. In der folgenden Abbildung ist die Bedeutung dieser Parameter dargestellt. Die Parameter sind in Nanosekunden angegeben, werden aber auf ein ganzzahliges Vielfaches der Thread-Periode für den Thread aufgerundet, der 'make_pulses()' aufruft. Wenn zum Beispiel 'make_pulses()' alle 16 µs aufgerufen wird und steplen 20000 ist, dann sind die Schrittimpulse 2 x 16 = 32 µs lang. Der Standardwert für alle vier Parameter ist 1ns, aber die automatische Rundung wird bei der ersten Ausführung des Codes wirksam. Da für einen Schritt 'steplen' ns high und 'stepspace' ns low benötigt werden, ist die maximale Frequenz 1.000.000.000 geteilt durch '(steplen+stepspace)'. Wird 'maxfreq' höher als dieser Grenzwert eingestellt, wird er automatisch gesenkt. Ist 'maxfreq' gleich Null, bleibt er Null, aber die Ausgangsfrequenz wird trotzdem begrenzt.

note: type: Plain text
en: When using the parallel port driver the step frequency can be doubled using the <<sub:parport-functions,parport reset>> function together with stepgen's 'doublefreq' setting.
de: Bei Verwendung des Parallelport-Treibers kann die Schrittfrequenz mit der Funktion <<sub:parport-functions,parport reset>> in Verbindung mit der Einstellung 'doublefreq' von stepgen verdoppelt werden.

note: type: Block title
en: Step and Direction Timing
de: Schritt- und Richtungs-Timing (engl. step and direction timing)

note: type: Block title
en: Step Type 1
de: Schritt Typ 1 (step type 1)

note: type: Plain text
en: Step type 1 has two outputs, up and down. Pulses appear on one or the other, depending on the direction of travel. Each pulse is 'steplen' ns long, and the pulses are separated by at least 'stepspace' ns. The maximum frequency is the same as for step type 0. If 'maxfreq' is set higher than the limit it will be lowered. If 'maxfreq' is zero, it will remain zero but the output frequency will still be limited.
de: Der Schritttyp 1 hat zwei Ausgänge, aufwärts und abwärts. Die Impulse erscheinen je nach Fahrtrichtung an dem einen oder dem anderen Ausgang. Jeder Impuls ist 'steplen' ns lang, und die Impulse sind durch mindestens 'stepspace' ns getrennt. Die maximale Frequenz ist die gleiche wie bei Schritttyp 0. Wenn 'maxfreq' höher als der Grenzwert eingestellt ist, wird dieser gesenkt. Ist 'maxfreq' gleich Null, bleibt er Null, aber die Ausgangsfrequenz wird trotzdem begrenzt.

note: type: Plain text
en: Do not use the parport reset function with step types 2 - 14. Unexpected results can happen.
de: Verwenden Sie die Parport-Reset-Funktion nicht mit den Schritttypen 2 - 14. Unerwartete Ergebnisse können auftreten.

note: type: Block title
en: Step Type 2 - 14
de: Schritt Typen 2 - 14 (engl. step type 2-14)

note: type: Plain text
en: Step types 2 through 14 are state based, and have from two to five outputs. On each step, a state counter is incremented or decremented.  The Two-and-Three-Phase, Four-Phase, and Five-Phase show the output patterns as a function of the state counter. The maximum frequency is 1,000,000,000 divided by 'steplen', and as in the other modes, 'maxfreq' will be lowered if it is above the limit.
de: Die Schritttypen 2 bis 14 sind zustandsabhängig und haben zwei bis fünf Ausgänge. Bei jedem Schritt wird ein Zustandszähler inkrementiert oder dekrementiert.  Die Zwei-und-Drei-Phasen-, Vier-Phasen- und Fünf-Phasen-Schritte zeigen die Ausgangsmuster als Funktion des Zustandszählers. Die maximale Frequenz ist 1.000.000.000 geteilt durch 'steplen', und wie in den anderen Modi wird 'maxfreq' gesenkt, wenn es über dem Grenzwert liegt.

note: type: Block title
en: Two-and-Three-Phase Step Types(((Two and Three Phase)))
de: Zwei- und dreiphasige Schritttypen(((Zwei- und Dreiphasen)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Step Types: Two-and-Three-Phase
de: Schritttypen: Zwei-und-Drei-Phase

note: type: Block title
en: Four-Phase Step Types(((Four Phase)))
de: Vierphasige Schritttypen(((Vierphasig)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Step Types: Four-Phase
de: Schritttypen: Vierphasig

note: type: Block title
en: Five-Phase Step Types(((Five Phase)))
de: Fünf-Phasen-Schritttypen(((Fünf-Phasen)))

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Step Types: Five-Phase
de: Schritttypen: Fünfphasig

note: type: Title ===
en: Functions(((Hal stepgen Functions)))
de: Funktionen(((Hal stepgen Funktionen)))

note: type: Plain text
en: The component exports three functions. Each function acts on all of the step pulse generators - running different generators in different threads is not supported.
de: Die Komponente exportiert drei Funktionen. Jede Funktion wirkt auf alle Schrittimpulsgeneratoren - die Ausführung verschiedener Generatoren in verschiedenen Threads wird nicht unterstützt.

note: type: Plain text
en: '(funct) stepgen.make-pulses' - High speed function to generate and count pulses (no floating point).
de: '(funct) stepgen.make-pulses' - Hochgeschwindigkeitsfunktion zum Erzeugen und Zählen von Impulsen (kein Fließkomma).

note: type: Plain text
en: '(funct) stepgen.update-freq' - Low speed function does position to velocity conversion, scaling and limiting.
de: '(funct) stepgen.update-freq' - Die Funktion für niedrige Geschwindigkeiten wandelt Position in Geschwindigkeit um, skaliert und begrenzt.

note: type: Plain text
en: '(funct) stepgen.capture-position' - Low speed function for feedback, updates latches and scales position.
de: '(funct) stepgen.capture-position' - Funktion mit niedriger Geschwindigkeit für die Rückmeldung, aktualisiert die Zwischenspeicher und skaliert die Position.

note: type: Plain text
en: The high speed function 'stepgen.make-pulses' should be run in a very fast thread, from 10 to 50 µs depending on the capabilities of the computer. That thread's period determines the maximum step frequency, since 'steplen', 'stepspace', 'dirsetup', 'dirhold', and 'dirdelay' are all rounded up to a integer multiple of the thread periond in nanoseconds. The other two functions can be called at a much lower rate.
de: Die Hochgeschwindigkeitsfunktion 'stepgen.make-pulses' sollte in einem sehr schnellen Thread ausgeführt werden, je nach den Fähigkeiten des Computers zwischen 10 und 50 µs. Die Periode dieses Threads bestimmt die maximale Schrittfrequenz, da 'steplen', 'stepspace', 'dirsetup', 'dirhold' und 'dirdelay' alle auf ein ganzzahliges Vielfaches der Thread-Periode in Nanosekunden aufgerundet werden. Die beiden anderen Funktionen können mit einer viel geringeren Rate aufgerufen werden.

note: type: Plain text
en: This component provides software based generation of PWM (Pulse Width Modulation) and PDM (Pulse Density Modulation) waveforms. It is a realtime component only, and depending on CPU speed, etc, is capable of PWM frequencies from a few hundred Hertz at pretty good resolution, to perhaps 10 kHz with limited resolution.
de: Diese Komponente ermöglicht die softwarebasierte Erzeugung von PWM- (Pulse Width Modulation) und PDM- (Pulse Density Modulation) Wellenformen. Es handelt sich um eine reine Echtzeitkomponente, die je nach CPU-Geschwindigkeit usw. PWM-Frequenzen von einigen hundert Hertz bei ziemlich guter Auflösung bis zu vielleicht 10 kHz mit begrenzter Auflösung erzeugen kann.

note: type: Block title
en: Loading PWMgen
de: Laden von PWMgen

note: type: Plain text
en: The '<config-array>' is a series of comma separated decimal integers. Each number causes a single PWM generator to be loaded, the value of the number determines the output type. The following example will install three PWM generators. There is no default value, if '<config-array>' is not specified, no PWM generators will be installed. The maximum number of frequency generators is 8 (as defined by MAX_CHAN in pwmgen.c). Each generator is independent, but all are updated by the same function(s) at the same time. In the following descriptions, '<chan>' is the number of a specific generator. The first generator is number 0.
de: Das '<config-array>' ist eine Reihe von durch Komma getrennten Dezimalzahlen. Jede Zahl bewirkt, dass ein einzelner PWM-Generator geladen wird; der Wert der Zahl bestimmt den Ausgangstyp. Im folgenden Beispiel werden drei PWM-Generatoren installiert. Es gibt keinen Standardwert, wenn '<config-array>' nicht angegeben wird, werden keine PWM-Generatoren installiert. Die maximale Anzahl von Frequenzgeneratoren ist 8 (wie durch MAX_CHAN in pwmgen.c definiert). Jeder Generator ist unabhängig, aber alle werden durch dieselbe(n) Funktion(en) zur gleichen Zeit aktualisiert. In den folgenden Beschreibungen steht '<chan>' für die Nummer eines bestimmten Generators. Der erste Generator hat die Nummer 0.

note: type: Block title
en: Loading PWMgen Example
de: Beispiel für das Laden von PWMgen

note: type: Plain text
en: Will install three PWM generators. The first will use an output of type _0_ (PWM only), the next one will use a type 1 output (PWM and direction)  and the third will use a type 2 output (UP and DOWN). There is no default value, if _<config-array>_ is not not specified, no PWM generator will be installed. The maximum number of frequency generators is 8 (as defined by MAX_CHAN in pwmgen.c). Each generator is independent, but all are updated by the same function(s), at the same time. In the descriptions that follow, _<chan>_ is the number of specific generators. The numbering of PWM generators starts at 0.
de: Es werden drei PWM-Generatoren installiert. Der erste wird einen Ausgang des Typs _0_ (nur PWM) verwenden, der nächste einen Ausgang des Typs 1 (PWM und Richtung) und der dritte einen Ausgang des Typs 2 (AUF und AB). Es gibt keinen Standardwert, wenn _<config-array>_ nicht angegeben wird, wird kein PWM-Generator installiert. Die maximale Anzahl von Frequenzgeneratoren ist 8 (wie durch MAX_CHAN in pwmgen.c definiert). Jeder Generator ist unabhängig, aber alle werden durch dieselbe(n) Funktion(en) zur gleichen Zeit aktualisiert. In den folgenden Beschreibungen steht _<chan>_ für die Anzahl der einzelnen Generatoren. Die Nummerierung der PWM-Generatoren beginnt bei 0.

note: type: Block title
en: Unloading PWMgen
de: Entfernen (engl. hier unloading) von PWMgen

note: type: Title ===
en: Output Types
de: Ausgangstypen (engl. output types)

note: type: Plain text
en: The PWM generator supports three different 'output types'.
de: Der PWM-Generator unterstützt drei verschiedene "Ausgangstypen".

note: type: Plain text
en: 'Output type 0' - PWM output pin only. Only positive commands are accepted, negative values are treated as zero (and will be affected by the parameter 'min-dc' if it is non-zero).
de: 'Ausgangstyp 0' - Nur PWM-Ausgangspin. Nur positive Befehle werden akzeptiert, negative Werte werden als Null behandelt (und werden durch den Parameter 'min-dc' beeinflusst, wenn er ungleich Null ist).

note: type: Plain text
en: 'Output type 1' - PWM/PDM and direction pins. Positive and negative inputs will be output as positive and negative PWM. The direction pin is false for positive commands, and true for negative commands. If your control needs positive PWM for both CW and CCW use the link:../man/man9/abs.9.html[abs] component to convert your PWM signal to positive value when a negative input is input.
de: 'Ausgangstyp 1' - PWM/PDM und Richtungspins. Positive und negative Inputs werden als positive und negative PWM ausgegeben. Der Richtungspin ist false für positive Befehle und true für negative Befehle. Wenn Ihre Steuerung positive PWM sowohl für CW als auch für CCW benötigt, verwenden Sie den Link:.. /man/man9/abs.9.html[abs]-Komponente, um Ihr PWM-Signal in einen positiven Wert umzuwandeln, wenn ein negativer Eingang eingegeben wird.

note: type: Plain text
en: 'Output type 2' - UP and DOWN pins. For positive commands, the PWM signal appears on the up output, and the down output remains false. For negative commands, the PWM signal appears on the down output, and the up output remains false. Output type 2 is suitable for driving most H-bridges.
de: 'Ausgabetyp 2' - UP- und DOWN-Pins. Bei positiven Befehlen wird das PWM-Signal am Up-Ausgang angezeigt, und der Down-Ausgang bleibt false. Bei negativen Befehlen wird das PWM-Signal am Down-Ausgang angezeigt, und der Up-Ausgang bleibt false. Der Ausgangstyp 2 eignet sich für den Antrieb der meisten H-Brücken.

note: type: Plain text
en: Each PWM generator will have the following pins:
de: Jeder PWM-Generator hat die folgenden Pins:

note: type: Plain text
en: '(float) pwmgen.<chan>.value' - Command value, in arbitrary units.  Will be scaled by the 'scale' parameter (see below).
de: '(float) pwmgen.<chan>.value' - Befehlswert, in beliebigen Einheiten.  Wird durch den Parameter 'scale' skaliert (siehe unten).

note: type: Plain text
en: '(bit) pwmgen.<chan>.enable' - Enables or disables the PWM generator outputs.
de: '(bit) pwmgen.<chan>.enable' - Aktiviert oder deaktiviert die PWM-Generatorausgänge.

note: type: Plain text
en: Each PWM generator will also have some of these pins, depending on the output type selected:
de: Jeder PWM-Generator verfügt über einige dieser Pins, je nach gewähltem Ausgangstyp:

note: type: Plain text
en: '(bit) pwmgen.<chan>.pwm' - PWM (or PDM) output, (output types 0 and 1 only).
de: '(bit) pwmgen.<chan>.pwm' - PWM- (oder PDM-) Ausgang, (nur Ausgangstyp 0 und 1).

note: type: Plain text
en: '(bit) pwmgen.<chan>.dir' - Direction output (output type 1 only).
de: '(bit) pwmgen.<chan>.dir' - Richtungsausgabe (nur Ausgabetyp 1).

note: type: Plain text
en: '(bit) pwmgen.<chan>.up' - PWM/PDM output for positive input value (output type 2 only).
de: '(bit) pwmgen.<chan>.up' - PWM/PDM-Ausgang für positiven Eingangswert (nur Ausgangstyp 2).

note: type: Plain text
en: '(bit) pwmgen.<chan>.down' - PWM/PDM output for negative input value (output type 2 only).
de: '(bit) pwmgen.<chan>.down' - PWM/PDM-Ausgang für negativen Eingangswert (nur Ausgangstyp 2).

note: type: Plain text
en: '(float) pwmgen.<chan>.scale' - Scaling factor to convert 'value' from arbitrary units to duty cycle. For example if scale is set to 4000 and the input value passed to the pwmgen.<chan>.value is 4000 then it will be 100% duty-cycle (always on). If the value is 2000 then it will be a 50% 25 Hz square wave.
de: '(float) pwmgen.<chan>.scale' - Skalierungsfaktor zur Konvertierung von 'value' von beliebigen Einheiten in Duty Cycle. Wenn z.B. scale auf 4000 gesetzt ist und der Eingangswert, der an pwmgen.<chan>.value übergeben wird, 4000 ist, dann wird es 100% Duty-Cycle (immer an) sein. Beträgt der Wert 2000, so handelt es sich um eine 50%ige 25Hz-Rechteckwelle.

note: type: Plain text
en: '(float) pwmgen.<chan>.pwm-freq' - Desired PWM frequency, in Hz.  If 0.0, generates PDM instead of PWM. If set higher than internal limits, next call of 'update_freq()' will set it to the internal limit. If non-zero, and 'dither' is false, next call of 'update_freq()' will set it to the nearest integer multiple of the 'make_pulses()' function period.
de: '(float) pwmgen.<chan>.pwm-freq' - Gewünschte PWM-Frequenz, in Hz.  Wenn 0.0, wird PDM statt PWM erzeugt. Ist die Frequenz höher als die internen Grenzwerte, wird sie beim nächsten Aufruf von 'update_freq()' auf den internen Grenzwert gesetzt. Falls ungleich Null und 'dither' falsch, wird der nächste Aufruf von 'update_freq()' auf das nächste ganzzahlige Vielfache der Periode der Funktion 'make_pulses()' gesetzt.

note: type: Plain text
en: '(bit) pwmgen.<chan>.dither-pwm' - If true, enables dithering to achieve average PWM frequencies or duty cycles that are unobtainable with pure PWM. If false, both the PWM frequency and the duty cycle will be rounded to values that can be achieved exactly.
de: '(bit) pwmgen.<chan>.dither-pwm' - Bei true wird Dithering aktiviert, um durchschnittliche PWM-Frequenzen oder Tastverhältnisse zu erreichen, die mit reiner PWM nicht möglich sind. Bei false werden sowohl die PWM-Frequenz als auch das Tastverhältnis auf Werte gerundet, die genau erreicht werden können.

note: type: Plain text
en: '(float) pwmgen.<chan>.min-dc' - Minimum duty cycle, between 0.0 and 1.0 (duty cycle will go to zero when disabled, regardless of this setting).
de: '(float) pwmgen.<chan>.min-dc' - Minimales Tastverhältnis, zwischen 0,0 und 1,0 (das Tastverhältnis geht unabhängig von dieser Einstellung auf Null, wenn es deaktiviert wird).

note: type: Plain text
en: '(float) pwmgen.<chan>.max-dc' - Maximum duty cycle, between 0.0 and 1.0.
de: '(float) pwmgen.<chan>.max-dc' - Maximales Tastverhältnis, zwischen 0,0 und 1,0.

note: type: Plain text
en: '(float) pwmgen.<chan>.curr-dc' - Current duty cycle - after all limiting and rounding (read only).
de: '(float) pwmgen.<chan>.curr-dc' - Aktuelles Tastverhältnis - nach allen Begrenzungen und Rundungen (nur Lesen).

note: type: Plain text
en: The component exports two functions. Each function acts on all of the PWM generators - running different generators in different threads is not supported.
de: Die Komponente exportiert zwei Funktionen. Jede Funktion wirkt auf alle PWM-Generatoren - die Ausführung verschiedener Generatoren in verschiedenen Threads wird nicht unterstützt.

note: type: Plain text
en: '(funct) pwmgen.make-pulses' - High speed function to generate PWM waveforms (no floating point). The high speed function 'pwmgen.make-pulses' should be run in the base (fastest) thread, from 10 to 50 µs depending on the capabilities of the computer. That thread's period determines the maximum PWM carrier frequency, as well as the resolution of the PWM or PDM signals. If the base thread is 50,000nS then every 50uS the module decides if it is time to change the state of the output. At 50% duty cycle and 25 Hz PWM frequency this means that the output changes state every (1 / 25) seconds / 50uS * 50% = 400 iterations. This also means that you have a 800 possible duty cycle values (without dithering)
de: '(funct) pwmgen.make-pulses' - Hochgeschwindigkeitsfunktion zur Erzeugung von PWM-Wellenformen (keine Fließkommazahlen). Die Hochgeschwindigkeitsfunktion 'pwmgen.make-pulses' sollte im Basis-Thread (schnellster Thread) ausgeführt werden, je nach den Fähigkeiten des Computers zwischen 10 und 50 µs. Die Periode dieses Threads bestimmt die maximale PWM-Trägerfrequenz sowie die Auflösung der PWM- oder PDM-Signale. Wenn der Basis-Thread 50.000 ns beträgt, entscheidet das Modul alle 50 µs, ob es an der Zeit ist, den Zustand des Ausgangs zu ändern. Bei einem Tastverhältnis von 50 % und einer PWM-Frequenz von 25 Hz bedeutet dies, dass sich der Zustand des Ausgangs alle (1 / 25) Sekunden / 50 µs * 50 % = 400 Iterationen ändert. Das bedeutet auch, dass Sie 800 mögliche Tastverhältniswerte haben (ohne Dithering)

note: type: Plain text
en: '(funct) pwmgen.update' - Low speed function to scale and limit value and handle other parameters. This is the function of the module that does the more complicated mathematics to work out how many base-periods the output should be high for, and how many it should be low for.
de: '(funct) pwmgen.update' - Funktion mit geringer Geschwindigkeit zur Skalierung und Begrenzung des Werts und zur Handhabung anderer Parameter. Dies ist die Funktion des Moduls, welche die komplizierteren mathematischen Berechnungen implementiert, um herauszufinden, für wie viele Basisperioden der Ausgang hoch und für wie viele er niedrig sein sollte.

note: type: Title ==
en: Encoder(((encoder)))
de: Encoder(((Encoder)))

note: type: Plain text
en: This component provides software based counting of signals from quadrature (or single-pulse) encoders. It is a realtime component only, and depending on CPU speed, latency, etc, is capable of maximum count rates of 10 kHz to perhaps up to 50 kHz.
de: Diese Komponente ermöglicht die softwarebasierte Zählung von Signalen aus Quadratur- (oder Einzelimpuls-) Encodern. Es handelt sich um eine reine Echtzeitkomponente, die je nach CPU-Geschwindigkeit, Latenzzeit usw. maximale Zählraten von 10 kHz bis vielleicht 50 kHz erreichen kann.

note: type: Plain text
en: The base thread should be 1/2 count speed to allow for noise and timing variation. For example if you have a 100 pulse per revolution encoder on the spindle and your maximum RPM is 3000 the maximum base thread should be 25 µs.  A 100 pulse per revolution encoder will have 400 counts. The spindle speed of 3000 RPM = 50 RPS (revolutions per second). 400 * 50 = 20,000 counts per second or 50 µs between counts.
de: Das Basisgewinde sollte 1/2 Zählgeschwindigkeit betragen, um Geräusche und Zeitschwankungen zu berücksichtigen. Wenn Sie z. B. einen Drehgeber mit 100 Impulsen pro Umdrehung an der Spindel haben und Ihre maximale Drehzahl 3000 beträgt, sollte das maximale Basisgewinde 25 µs betragen.  Ein Drehgeber mit 100 Impulsen pro Umdrehung hat 400 Zählungen. Die Spindeldrehzahl von 3000 U/min (engl. RPM) = 50 U/s (engl. RPS, Umdrehungen pro Sekunde). 400 * 50 = 20.000 Zählungen pro Sekunde oder 50 µs zwischen den Zählungen.

note: type: Plain text
en: The Encoder Counter Block Diagram is a block diagram of one channel of an encoder counter.
de: Das Blockdiagramm des Encoderzählers ist ein Blockdiagramm eines Kanals eines Encoderzählers.

note: type: Block title
en: Encoder Counter Block Diagram(((Encoder Block Diagram)))
de: Encoderzähler-Blockdiagramm(((Encoder-Blockdiagramm)))

note: type: Block title
en: Loading Encoder
de: Laden des Encoders

note: type: Plain text
en: '<counters>' is the number of encoder counters that you want to install. If 'numchan' is not specified, three counters will be installed. The maximum number of counters is 8 (as defined by MAX_CHAN in encoder.c). Each counter is independent, but all are updated by the same function(s) at the same time. In the following descriptions, '<chan>' is the number of a specific counter. The first counter is number 0.
de: '<counters>' ist die Anzahl der Encoderzähler, die Sie installieren möchten. Wenn 'numchan' nicht angegeben ist, werden drei Zähler installiert. Die maximale Anzahl von Leistungsindikatoren beträgt 8 (wie durch MAX_CHAN in encoder.c definiert). Jeder Leistungsindikator ist unabhängig, aber alle werden gleichzeitig von den gleichen Funktionen aktualisiert. In den folgenden Beschreibungen ist '<chan>' die Nummer eines bestimmten Zählers. Der erste Zähler ist die Nummer 0.

note: type: Block title
en: Unloading Encoder
de: Encoder entfernen (engl. unload)

note: type: Plain text
en: 'encoder.<chan>.counter-mode' (bit, I/O) (default: FALSE) - Enables counter mode. When true, the counter counts each rising edge of the phase-A input, ignoring the value on phase-B. This is useful for counting the output of a single channel (non-quadrature) sensor. When false, it counts in quadrature mode.
de: 'encoder.<chan>.counter-mode' (Bit, I/O) (Voreinstellung: FALSE) - Aktiviert den Zählermodus. Bei true zählt der Zähler jede steigende Flanke des Phase-A-Eingangs und ignoriert den Wert an Phase-B. Dies ist nützlich, um den Ausgang eines einkanaligen (nicht-Quadratur-) Sensors zu zählen. Bei false zählt er im Quadraturmodus.

note: type: Plain text
en: 'encoder.<chan>.missing-teeth' (s32, In) (default: 0) - Enables the use of missing-tooth index. This allows a single IO pin to provide both position and index information. If the encoder wheel has 58 teeth with two missing, spaced as if there were 60(common for automotive crank sensors) then the position-scale should be set to 60 and missing-teeth to 2. To use this mode counter-mode should be set true. This mode will work for lathe threading but not for rigid tapping.
de: 'encoder.<chan>.missing-teeth' (s32, In) (Voreinstellung: 0) - Aktiviert die Verwendung des Fehlzahnindex. Dadurch kann ein einzelner IO-Pin sowohl Positions- als auch Indexinformationen liefern. Wenn das Geberrad 58 Zähne hat, von denen zwei fehlen, die so angeordnet sind, als wären es 60 (wie bei Kurbelwellensensoren in der Automobilindustrie üblich), dann sollte die Positionsskala auf 60 und die fehlenden Zähne auf 2 gesetzt werden. Um diesen Modus zu verwenden, sollte counter-mode auf true gesetzt werden. Dieser Modus eignet sich zum Gewindedrehen, aber nicht zum Gewindeschneiden.

note: type: Plain text
en: 'encoder.<chan>.counts' (s32, Out) - Position in encoder counts.
de: 'encoder.<chan>.counts' (s32, Out) - Position in encoder Zählungen (engl. counts).

note: type: Plain text
en: 'encoder.<chan>.counts-latched' (s32, Out) - Not used at this time.
de: 'encoder.<chan>.counts-latched' (s32, Out) - Zur Zeit nicht verwendet.

note: type: Plain text
en: 'encoder.<chan>.index-enable' (bit, I/O) - When True, 'counts' and 'position are' reset to zero on next rising edge of Phase Z.
    At the same time, 'index-enable' is reset to zero to indicate that the rising edge has occurred. The 'index-enable' pin is bi-directional. If 'index-enable' is False, the Phase Z channel of the encoder will be ignored, and the counter will count normally. The encoder driver will never set 'index-enable' True. However, some other component may do so.
de: 'encoder.<chan>.index-enable' (bit, I/O) - Wenn True, werden 'counts' und 'position' bei der nächsten steigenden Flanke von Phase Z auf Null zurückgesetzt.
    Gleichzeitig wird 'index-enable' auf Null zurückgesetzt, um anzuzeigen, dass die steigende Flanke aufgetreten ist. Der 'Index-Enable'-Pin ist bidirektional. Wenn „index-enable“ False ist, wird der Phase-Z-Kanal des Encoders ignoriert und der Zähler zählt normal. Der Encoder-Treiber wird „index-enable“ niemals auf True setzen. Einige andere Komponenten können dies jedoch tun.

note: type: Plain text
en: 'encoder.<chan>.latch-falling' (bit, In) (default: TRUE) - Not used at this time.
de: 'encoder.<chan>.latch-falling' (bit, In) (Standard: TRUE) - Derzeit nicht verwendet.

note: type: Plain text
en: 'encoder.<chan>.latch-input' (bit, In) (default: TRUE) - Not used at this time.
de: 'encoder.<chan>.latch-input' (bit, In) (Voreinstellung: TRUE) - Zur Zeit nicht verwendet.

note: type: Plain text
en: 'encoder.<chan>.latch-rising' (bit, In) - Not used at this time.
de: 'encoder.<chan>.latch-rising' (bit, In) - Derzeit nicht verwendet.

note: type: Plain text
en: 'encoder.<chan>.min-speed-estimate' (float, in) - Determine the minimum true velocity magnitude at which velocity will be estimated as nonzero and position-interpolated will be interpolated. The units of 'min-speed-estimate' are the same as the units of 'velocity' . Scale factor, in counts per length unit. Setting this parameter too low will cause it to take a long time for velocity to go to 0 after encoder pulses have stopped arriving.
de: 'encoder.<chan>.min-speed-estimate' (float, in) - Bestimmt die minimale wahre Geschwindigkeitsgröße, bei der die Geschwindigkeit als ungleich Null geschätzt und die Position interpoliert wird. Die Einheiten von 'min-speed-estimate' sind die gleichen wie die Einheiten von 'velocity' . Skalierungsfaktor, in Zählungen pro Längeneinheit. Wird dieser Parameter zu niedrig eingestellt, dauert es sehr lange, bis die Geschwindigkeit auf 0 zurückgeht, nachdem keine Geberimpulse mehr ankommen.

note: type: Plain text
en: 'encoder.<chan>.phase-Z' (bit, In) - Phase Z (index pulse) of the quadrature encoder signal.
de: encoder.<chan>.phase-Z' (Bit, In) - Phase Z (Indeximpuls) des Quadratur-Encodersignals.

note: type: Plain text
en: 'encoder.<chan>.position' (float, Out) - Position in scaled units (see 'position-scale').
de: 'encoder.<chan>.position' (float, Out) - Position in skalierten Einheiten (siehe 'position-scale').

note: type: Plain text
en: 'encoder.<chan>.position-interpolated' (float, Out) - Position in scaled units, interpolated between encoder counts.
    The 'position-interpolated' attempts to interpolate between encoder counts, based on the most recently measured velocity. Only valid when velocity is approximately constant and above 'min-speed-estimate'. Do not use for position control, since its value is incorrect at low speeds, during direction reversals, and during speed changes.
    However, it allows a low ppr encoder (including a one pulse per revolution 'encoder') to be used for lathe threading, and may have other uses as well.
de: 'encoder.<chan>.position-interpolated' (float, Out) - Position in skalierten Einheiten, interpoliert zwischen Encoder-Zählungen.
    Die 'position-interpolated' versucht, zwischen den Encoderzählungen zu interpolieren, basierend auf der zuletzt gemessenen Geschwindigkeit. Nur gültig, wenn die Geschwindigkeit annähernd konstant ist und über der 'min-speed-estimate' liegt. Nicht für die Lageregelung verwenden, da der Wert bei niedrigen Geschwindigkeiten, bei Richtungsumkehr und bei Geschwindigkeitsänderungen falsch ist.
    Er ermöglicht jedoch die Verwendung eines Encoders mit niedrigem Impuls pro Umdrehung (einschließlich eines 'Encoders' mit einem Impuls pro Umdrehung) für das Gewindeschneiden auf einer Drehmaschine und kann auch für andere Zwecke verwendet werden.

note: type: Plain text
en: 'encoder.<chan>.position-latched (float, Out)' - Not used at this time.
de: 'encoder. <chan>.position-latched (float, out)' - Wird derzeit nicht verwendet.

note: type: Plain text
en: 'encoder.<chan>.position-scale (float, I/O)' - Scale factor, in counts per length unit. For example, if position-scale is 500, then 1000 counts of the encoder will be reported as a position of 2.0 units.
de: 'encoder.<chan>.position-scale (float, I/O)' – Skalierungsfaktor, in Zählungen pro Längeneinheit. Wenn beispielsweise die Positionsskala 500 beträgt, werden 1000 Zählwerte des Encoders als Position von 2.0 Einheiten gemeldet.

note: type: Plain text
en: 'encoder.<chan>.rawcounts (s32, In)' - The raw count, as determined by update-counters. This value is updated more frequently than counts and position. It is also unaffected by reset or the index pulse.
de: 'encoder.<chan>.rawcounts (s32, In)' - Die rohe Anzahl, wie durch Update-Zähler bestimmt. Dieser Wert wird häufiger aktualisiert als Anzahl und Position. Es ist auch unbeeinflusst von Reset oder dem Indeximpuls.

note: type: Plain text
en: 'encoder.<chan>.reset' (bit, In) - When True, force 'counts' and 'position' to zero immediately.
de: 'encoder.<chan>.reset' (bit, In) - Wenn True, werden 'counts' und 'position' sofort auf Null gesetzt.

note: type: Plain text
en: 'encoder.<chan>.velocity' (float, Out) - Velocity in scaled units per second. 'encoder' uses an algorithm that greatly reduces quantization noise as compared to simply differentiating the 'position' output. When the magnitude of the true velocity is below min-speed-estimate, the velocity output is 0.
de: 'encoder.<chan>.velocity' (float, Out) - Geschwindigkeit in skalierten Einheiten pro Sekunde. 'encoder' verwendet einen Algorithmus, der das Quantisierungsrauschen im Vergleich zur einfachen Differenzierung des 'position'-Ausgangs stark reduziert. Wenn der Wert der tatsächlichen Geschwindigkeit unter der geschätzten Mindestgeschwindigkeit liegt, ist die Geschwindigkeitsausgabe 0.

note: type: Plain text
en: 'encoder.<chan>.x4-mode (bit, I/O) (default: TRUE)' - Enables times-4 mode. When true, the counter counts each edge of the quadrature waveform (four counts per full cycle). When false, it only counts once per full cycle. In counter-mode, this parameter is ignored. The 1x mode is useful for some jogwheels.
de: encoder.<__chan__>.x4-mode (bit, I/O) (Voreinstellung: TRUE)' - Aktiviert den Times-4-Modus. Bei true zählt der Zähler jede Flanke der Quadraturwellenform (vier Zählungen pro vollem Zyklus). Bei false zählt er nur einmal pro vollem Zyklus. Im Zählermodus wird dieser Parameter ignoriert. Der 1x-Modus ist für einige Jogwheels nützlich.

note: type: Plain text
en: The component exports two functions. Each function acts on all of the encoder counters - running different counters in different threads is not supported.
de: Die Komponente exportiert zwei Funktionen. Jede Funktion wirkt auf alle Zähler des Encoders - die Ausführung verschiedener Zähler in verschiedenen Threads wird nicht unterstützt.

note: type: Plain text
en: '(funct) encoder.update-counters' - High speed function to count pulses (no floating point).
de: '(funct) encoder.update-counters' - Hochgeschwindigkeitsfunktion zum Zählen von Impulsen (kein Gleitkomma).

note: type: Plain text
en: '(funct) encoder.capture-position' - Low speed function to update latches and scale position.
de: '(funct) encoder.capture-position' - Funktion mit niedriger Geschwindigkeit zur Aktualisierung von Latches und Skalenposition.

note: type: Plain text
en: This component provides Proportional/Integral/Derivative control loops. It is a realtime component only. For simplicity, this discussion assumes that we are talking about position loops, however this component can be used to implement other feedback loops such as speed, torch height, temperature, etc. The PID Loop Block Diagram is a block diagram of a single PID loop.
de: Diese Komponente bietet Proportional/Integral/Derivativ-Regelkreise. Es handelt sich um eine reine Echtzeitkomponente. Der Einfachheit halber wird in dieser Diskussion davon ausgegangen, dass es sich um Positionsregelkreise handelt. Diese Komponente kann jedoch auch zur Implementierung anderer Rückkopplungsschleifen wie Geschwindigkeit, Brennerhöhe, Temperatur usw. verwendet werden. Das Blockdiagramm der PID-Schleife ist ein Blockdiagramm einer einzelnen PID-Schleife.

note: type: Block title
en: PID Loop Block Diagram(((PID Block Diagram)))
de: PID-Regelkreis-Blockdiagramm(((PID-Blockdiagramm)))

note: type: Block title
en: Loading PID
de: PID laden

note: type: Plain text
en: '<loops>' is the number of PID loops that you want to install. If 'numchan' is not specified, one loop will be installed. The maximum number of loops is 16 (as defined by MAX_CHAN in pid.c). Each loop is completely independent. In the following descriptions, '<loopnum>' is the loop number of a specific loop. The first loop is number 0.
de: <Schleifen>' ist die Anzahl der PID-Schleifen, die Sie installieren möchten. Wird 'numchan' nicht angegeben, so wird eine Schleife installiert. Die maximale Anzahl von Schleifen ist 16 (wie durch MAX_CHAN in pid.c definiert). Jede Schleife ist völlig unabhängig. In den folgenden Beschreibungen ist '<Schleifennummer>' die Schleifennummer einer bestimmten Schleife. Die erste Schleife hat die Nummer 0.

note: type: Plain text
en: If 'debug=1' is specified, the component will export a few extra pins that may be useful during debugging and tuning. By default, the extra pins are not exported, to save shared memory space and avoid cluttering the pin list.
de: Wenn 'debug=1' angegeben ist, exportiert die Komponente einige zusätzliche Pins, die bei der Fehlersuche und beim Tuning nützlich sein können. Standardmäßig werden die zusätzlichen Pins nicht exportiert, um gemeinsamen Speicherplatz zu sparen und die Pin-Liste nicht zu überfrachten.

note: type: Block title
en: Unloading PID
de: PID entfernen (engl. unload)

note: type: Plain text
en: The three most important pins are
de: Die drei wichtigsten Pins sind

note: type: Plain text
en: '(float) pid.<loopnum>.command' - The desired position, as commanded by another system component.
de: '(float) pid.<Loopnum>.command' - Die gewünschte Position, wie sie von einer anderen Systemkomponente befohlen wurde.

note: type: Plain text
en: '(float) pid.<loopnum>.feedback' - The present position, as measured by a feedback device such as an encoder.
de: '(Float) pid.<Schleifennummer>.Rückmeldung' - Die aktuelle Position, wie sie von einem Rückmeldegerät wie einem Encoder gemessen wird.

note: type: Plain text
en: '(float) pid.<loopnum>.output' - A velocity command that attempts to move from the present position to the desired position.
de: '(float) pid.<loopnum>.output' - Ein Geschwindigkeitsbefehl, der versucht, von der aktuellen Position zur gewünschten Position zu gelangen.

note: type: Plain text
en: For a position loop, 'command' and 'feedback' are in position units.  For a linear axis, this could be inches, mm, meters, or whatever is relevant. Likewise, for an angular axis, it could be degrees, radians, etc. The units of the 'output' pin represent the change needed to make the feedback match the command. As such, for a position loop 'Output' is a velocity, in inches/sec, mm/sec, degrees/sec, etc. Time units are always seconds, and the velocity units match the position units. If command and feedback are in meters, then output is in meters per second.
de: Bei einer Positionsschleife sind "Befehl" und "Rückmeldung" in Positionseinheiten angegeben.  Bei einer linearen Achse können dies Zoll, mm, Meter oder andere relevante Einheiten sein. Bei einer Winkelachse kann es sich um Grad, Bogenmaß usw. handeln. Die Einheiten des Ausgangspins entsprechen der Änderung, die erforderlich ist, damit die Rückmeldung mit dem Befehl übereinstimmt. Bei einer Positionsschleife ist der "Ausgang" eine Geschwindigkeit in Zoll/Sekunde, mm/Sekunde, Grad/Sekunde usw. Zeiteinheiten sind immer Sekunden, und die Geschwindigkeitseinheiten entsprechen den Positionseinheiten. Wenn Befehl und Rückmeldung in Metern angegeben sind, erfolgt die Ausgabe in Metern pro Sekunde.

note: type: Plain text
en: Each loop has two pins which are used to monitor or control the general operation of the component.
de: Jede Schleife hat zwei Pins, die zur Überwachung oder Steuerung des allgemeinen Betriebs der Komponente dienen.

note: type: Plain text
en: '(float) pid._<loopnum>_.error' - Equals '.command' minus '.feedback'.
de: '(float) pid._<Schleifennummer>_.error' - Entspricht '.command' (gefordert) minus '.feedback (Rückmeldung zu ist-Zustand).

note: type: Plain text
en: '(bit) pid._<loopnum>_.enable' - A bit that enables the loop. If '.enable' is false, all integrators are reset, and the output is forced to zero. If '.enable' is true, the loop operates normally.
de: '(bit) pid._<loopnum>_.enable' - Ein Bit, das die Schleife aktiviert. Wenn '.enable' falsch ist, werden alle Integratoren zurückgesetzt und der Ausgang wird auf Null gezwungen. Wenn '.enable' wahr ist, arbeitet die Schleife normal.

note: type: Plain text
en: Pins used to report saturation. Saturation occurs when the output of the PID block is at its maximum or minimum limit.
de: Pins zur Meldung der Sättigung. Eine Sättigung ist gegeben, wenn der Ausgang des PID-Blocks an seinem maximalen oder minimalen Grenzwert liegt.

note: type: Plain text
en: '(bit) pid._<loopnum>_.saturated' - True when output is saturated.
de: '(Bit) pid. _<loopnum>_.gesättigt' - True, wenn die Ausgabe gesättigt ist.

note: type: Plain text
en: '(float) pid._<loopnum>_.saturated_s' - The time the output has been saturated.
de: '(float) pid._<loopnum>_.saturated_s' – Die Zeit, zu der die Ausgabe zuerst gesättigt war.

note: type: Plain text
en: '(s32) pid._<loopnum>_.saturated_count' - The time the output has been saturated.
de: '(s32) pid. _<loopnum>_.saturated_count' - Die Dauer, seit der die Ausgabe gesättigt ist.

note: type: Plain text
en: The PID gains, limits, and other 'tunable' features of the loop are available as pins so that they can be adjusted dynamically for more advanced tuning possibilities.
de: Die PID-Verstärkungen, Grenzwerte und andere "abstimmbare" Merkmale des Regelkreises sind als Pins verfügbar, so dass sie dynamisch für erweiterte Abstimmungsmöglichkeiten angepasst werden können.

note: type: Plain text
en: '(float) pid._<loopnum>_.Pgain' - Proportional gain
de: '(float) pid._<loopnum>_.Pgain' - Proportionale Verstärkung

note: type: Plain text
en: '(float) pid._<loopnum>_.Igain' - Integral gain
de: '(float) pid._<loopnum>_.Igain' - Integrale Verstärkung

note: type: Plain text
en: '(float) pid._<loopnum>_.Dgain' - Derivative gain
de: '(float) pid._<loopnum>_.Dgain' - Abgeleitete (engl. derivative) Verstärkung

note: type: Plain text
en: '(float) pid._<loopnum>_.bias' - Constant offset on output
de: '(float) pid._<loopnum>_.bias' - Konstanter Offset (engl. bias) am Ausgang

note: type: Plain text
en: '(float) pid._<loopnum>_.FF0' - Zeroth order feedforward - output proportional to command (position).
de: '(float) pid. _<loopnum>_. FF0' - Feedforward nullter Ordnung - Ausgabe proportional zum Befehl (Position).

note: type: Plain text
en: '(float) pid._<loopnum>_.FF1' - First order feedforward - output proportional to derivative of command (velocity).
de: '(float) pid. _<loopnum>_. FF1' - Feedforward erster Ordnung - Ausgabe proportional zur Ableitung des Befehls (Geschwindigkeit).

note: type: Plain text
en: '(float) pid._<loopnum>_.FF2' - Second order feedforward - output proportional to 2^nd^ derivative of command (acceleration).
de: '(float) pid. _<loopnum>_. FF2' - Feedforward zweiter Ordnung - Ausgabe proportional zur 2. Ableitung des Befehls (Beschleunigung).

note: type: Plain text
en: '(float) pid._<loopnum>_.deadband' - Amount of error that will be ignored
de: '(float) pid._<loopnum>_.deadband' - Betrag des Fehlers, der ignoriert wird

note: type: Plain text
en: '(float) pid._<loopnum>_.maxerror' - Limit on error
de: '(float) pid. _<loopnum>_.maxerror' - Fehlerbegrenzung

note: type: Plain text
en: '(float) pid._<loopnum>_.maxerrorI' - Limit on error integrator
de: '(float) pid. _<loopnum>_.maxerrorI' - Limit für Fehlerintegrator

note: type: Plain text
en: '(float) pid._<loopnum>_.maxerrorD' - Limit on error derivative
de: '(float) pid. _<loopnum>_.maxerrorD' - Limit für Fehlerableitung

note: type: Plain text
en: '(float) pid._<loopnum>_.maxcmdD' - Limit on command derivative
de: '(float) pid._<loopnum>_.maxcmdD' - Begrenzung der Befehlsableitung

note: type: Plain text
en: '(float) pid._<loopnum>_.maxcmdDD' - Limit on command 2^nd^ derivative
de: '(float) pid._<loopnum>_.maxcmdDD' - Begrenzung der 2. Ableitung des Befehls

note: type: Plain text
en: '(float) pid._<loopnum>_.maxoutput' - Limit on output value
de: '(float) pid. _<loopnum>_.maxoutput' - Grenzwert für Ausgangswert

note: type: Plain text
en: All _max*_ limits are implemented so that if the value of this parameter is zero, there is no limit.
de: Alle _max*_-Grenzwerte sind so implementiert, dass es keinen Grenzwert gibt, wenn der Wert dieses Parameters Null ist.

note: type: Plain text
en: If 'debug=1' was specified when the component was installed, four additional pins will be exported:
de: Wenn bei der Installation der Komponente 'debug=1' angegeben wurde, werden vier zusätzliche Pins exportiert:

note: type: Plain text
en: '(float) pid._<loopnum>_.errorI' - Integral of error.
de: '(float) pid._<loopnum>_.errorI' - Integral des Fehlers.

note: type: Plain text
en: '(float) pid._<loopnum>_.errorD' - Derivative of error.
de: '(float) pid._<loopnum>_.errorD' - Ableitung von error.

note: type: Plain text
en: '(float) pid._<loopnum>_.commandD' - Derivative of the command.
de: '(float) pid. _<loopnum>_.commandD' - Ableitung des Befehls.

note: type: Plain text
en: '(float) pid._<loopnum>_.commandDD' - 2^nd^ derivative of the command.
de: '(float) pid. _<loopnum>_.commandDD' - 2. Ableitung des Befehls.

note: type: Plain text
en: The component exports one function for each PID loop. This function performs all the calculations needed for the loop. Since each loop has its own function, individual loops can be included in different threads and execute at different rates.
de: Die Komponente exportiert eine Funktion für jede PID-Schleife. Diese Funktion führt alle für die Schleife erforderlichen Berechnungen durch. Da jede Schleife ihre eigene Funktion hat, können einzelne Schleifen in verschiedene Threads eingebunden werden und mit unterschiedlichen Geschwindigkeiten ausgeführt werden.

note: type: Plain text
en: '(funct) pid._<loopnum>_.do_pid_calcs' - Performs all calculations for a single PID loop.
de: '(funct) pid._<loopnum>_.do_pid_calcs' - Führt alle Berechnungen für eine einzelne PID-Schleife durch.

note: type: Plain text
en: If you want to understand the exact algorithm used to compute the output of the PID loop, refer to figure <<fig:pid-block-diag,PID Loop Block Diagram>>, the comments at the beginning of 'emc2/src/hal/components/pid.c' , and of course to the code itself. The loop calculations are in the C function 'calc_pid()'.
de: Wenn Sie den genauen Algorithmus zur Berechnung des Ausgangs der PID-Schleife verstehen wollen, lesen Sie die Abbildung <<fig:pid-block-diag,PID-Regelkreis Block Diagram>>, die Kommentare am Anfang von 'emc2/src/hal/components/pid.c' und natürlich den Code selbst. Die Schleifenberechnungen erfolgen in der C-Funktion 'calc_pid()'.

note: type: Title ==
en: Simulated Encoder(((Simulated Encoder)))
de: Simulierter Encoder(((Simulierter Encoder)))

note: type: Plain text
en: The simulated encoder is exactly that. It produces quadrature pulses with an index pulse, at a speed controlled by a HAL pin. Mostly useful for testing.
de: Der simulierte Encoder ist genau das. Er erzeugt Quadraturimpulse mit einem Indeximpuls, und zwar mit einer durch einen HAL-Pin gesteuerten Geschwindigkeit. Er ist vor allem für Tests nützlich.

note: type: Block title
en: Loading sim-encoder
de: Sim-Encoder laden

note: type: Plain text
en: '<number>' is the number of encoders that you want to simulate. If not specified, one encoder will be installed. The maximum number is 8 (as defined by MAX_CHAN in sim_encoder.c).
de: '<number>' ist die Anzahl der Encoder, die Sie simulieren möchten. Wenn nicht angegeben, wird ein Encoder installiert. Die maximale Anzahl ist 8 (wie durch MAX_CHAN in sim_encoder.c definiert).

note: type: Block title
en: Unloading sim-encoder
de: Abladen des sim-encoder

note: type: Plain text
en: '(float) sim-encoder._<chan-num>_.speed' - The speed command for the simulated shaft.
de: '(float) sim-encoder._<chan-num>_.speed' - Der Geschwindigkeitsbefehl für die simulierte Welle.

note: type: Plain text
en: '(bit) sim-encoder._<chan-num>_.phase-A' - Quadrature output.
de: '(bit) sim-encoder._<chan-num>_.phase-A' - Quadraturausgang.

note: type: Plain text
en: '(bit) sim-encoder._<chan-num>_.phase-B' - Quadrature output.
de: '(bit) sim-encoder._<chan-num>_.phase-B' - Quadraturausgang.

note: type: Plain text
en: '(bit) sim-encoder._<chan-num>_.phase-Z' - Index pulse output.
de: '(bit) sim-encoder. _<chan-num>_.phase-Z' - Index-Impulsausgang.

note: type: Plain text
en: When '.speed' is positive, '.phase-A' leads '.phase-B'.
de: Wenn '.speed' positiv ist, liegt '.phase-A' vor '.phase-B'.

note: type: Plain text
en: '(u32) sim-encoder._<chan-num>_.ppr' - Pulses Per Revolution.
de: '(u32) sim-encoder._<chan-num>_.ppr' - Impulse pro Umdrehung.

note: type: Plain text
en: '(float) sim-encoder._<chan-num>_.scale' - Scale Factor for 'speed'.  The default is 1.0, which means that 'speed' is in revolutions per second. Change to 60 for RPM, to 360 for degrees per second, 6.283185 for radians per seconed, etc.
de: '(float) sim-encoder._<chan-num>_.scale' - Skalierungsfaktor für 'speed'.  Der Standardwert ist 1.0, was bedeutet, dass die Geschwindigkeit in Umdrehungen pro Sekunde angegeben wird. Ändern Sie den Wert auf 60 für Umdrehungen pro Minute, auf 360 für Grad pro Sekunde, 6,283185 für Bogenmaß pro Sekunde usw.

note: type: Plain text
en: Note that pulses per revolution is not the same as counts per revolution. A pulse is a complete quadrature cycle. Most encoder counters will count four times during one complete cycle.
de: Beachten Sie, dass Impulse pro Umdrehung nicht dasselbe sind wie Zählungen pro Umdrehung. Ein Impuls ist ein vollständiger Quadraturzyklus. Die meisten Drehgeberzähler zählen viermal während eines vollständigen Zyklus.

note: type: Plain text
en: The component exports two functions. Each function affects all simulated encoders.
de: Die Komponente exportiert zwei Funktionen. Jede Funktion wirkt auf alle simulierten Geber.

note: type: Plain text
en: '(funct) sim-encoder.make-pulses' - High speed function to generate quadrature pulses (no floating point).
de: '(funct) sim-encoder.make-pulses' - Hochgeschwindigkeitsfunktion zur Erzeugung von Quadraturimpulsen (kein Fließkomma).

note: type: Plain text
en: '(funct) sim-encoder.update-speed' - Low speed function to read 'speed', do scaling, and set up 'make-pulses'.
de: '(funct) sim-encoder.update-speed' - Funktion für niedrige Geschwindigkeit zum Lesen von 'speed', Skalieren und Einrichten von 'make-pulses'.

note: type: Title ==
en: Debounce(((debounce)))
de: Entprellung (engl. debounce)(((Entprellung)))

note: type: Plain text
en: Debounce is a realtime component that can filter the glitches created by mechanical switch contacts. It may also be useful in other applications where short pulses are to be rejected.
de: Die Entprellung ist eine Echtzeitkomponente, zum Herausfiltern der durch mechanische Schaltkontakte verursachten Störungen. Sie kann auch in anderen Anwendungen nützlich sein, in denen kurze Impulse unterdrückt werden müssen.

note: type: Block title
en: Loading debounce
de: Debounce wird geladen

note: type: Labeled list
en: <config-string>
de: <Konfigurations-Zeichenfolge>

note: type: Plain text
en: Is a series of comma separated decimal integers.  Each number installs a group of identical debounce filters, the number determines how many filters are in the group.
de: Ist eine Reihe von durch Komma getrennten Dezimalzahlen.  Jede Zahl installiert eine Gruppe identischer Entprellungsfilter, wobei die Zahl angibt, wie viele Filter in der Gruppe enthalten sind.

note: type: Block title
en: Loading debounce Example
de: Beispiel zum Laden von Debounce

note: type: Plain text
en: will install three groups of filters. Group 0 contains one filter, group 1 contains four, and group 2 contains two filters. The default value for '<config-string>' is '"1"' which will install a single group containing a single filter. The maximum number of groups 8 (as defined by MAX_GROUPS in debounce.c).  The maximum number of filters in a group is limited only by shared memory space. Each group is completely independent. All filters in a single group are identical, and they are all updated by the same function at the same time. In the following descriptions, '<G>' is the group number and '<F>' is the filter number within the group. The first filter is group 0, filter 0.
de: werden drei Gruppen von Filtern installiert. Gruppe 0 enthält einen Filter, Gruppe 1 enthält vier Filter und Gruppe 2 enthält zwei Filter. Der Standardwert für '<config-string>' ist '"1"', wodurch eine einzige Gruppe mit einem einzigen Filter installiert wird. Die maximale Anzahl von Gruppen ist 8 (wie durch MAX_GROUPS in debounce.c definiert).  Die maximale Anzahl von Filtern in einer Gruppe ist nur durch den gemeinsamen Speicherplatz begrenzt. Jede Gruppe ist völlig unabhängig. Alle Filter in einer Gruppe sind identisch und werden alle von derselben Funktion gleichzeitig aktualisiert. In den folgenden Beschreibungen steht "<G>" für die Gruppennummer und "<F>" für die Filternummer innerhalb der Gruppe. Der erste Filter ist Gruppe 0, Filter 0.

note: type: Block title
en: Unloading debounce
de: Entladen der Entprellung

note: type: Plain text
en: Each individual filter has two pins.
de: Jeder einzelne Filter hat zwei Pins.

note: type: Plain text
en: '(bit) debounce._<G>_._<F>_.in' - Input of filter _<F>_ in group _<G>_.
de: '(bit) debounce._<G>_._<F>_.in' - Eingang von Filter _<F>_ in Gruppe _<G>_.

note: type: Plain text
en: '(bit) debounce._<G>_._<F>_.out' - Output of filter _<F>_ in group _<G>_.
de: '(bit) debounce._<G>_._<F>_.out' - Ausgang von Filter _<F>_ in Gruppe _<G>_.

note: type: Plain text
en: Each group of filters has one parameterfootnote:[Each individual filter also has an internal state variable. There is a compile time switch that can export that variable as a parameter. This is intended for testing, and simply wastes shared memory under normal circumstances.].
de: Jede Gruppe von Filtern hat einen ParameterFußnote:[Jeder einzelne Filter hat auch eine interne Statusvariable. Es gibt einen Kompilierzeitschalter, der diese Variable als Parameter exportieren kann. Dies ist für Tests gedacht und verschwendet unter normalen Umständen nur gemeinsamen Speicher.].

note: type: Plain text
en: '(s32) debounce._<G>_.delay' - Filter delay for all filters in group _<G>_.
de: '(s32) debounce._<G>_.delay' - Filterverzögerung für alle Filter in der Gruppe _<G>_.

note: type: Plain text
en: The filter delay is in units of thread periods. The minimum delay is zero. The output of a zero delay filter exactly follows its input - it doesn't filter anything. As 'delay' increases, longer and longer glitches are rejected. If 'delay' is 4, all glitches less than or equal to four thread periods will be rejected.
de: Die Filterverzögerung wird in Einheiten von Thread-Perioden angegeben. Die minimale Verzögerung ist Null. Der Ausgang eines Filters mit einer Verzögerung von Null folgt genau seinem Eingang - er filtert nichts. Mit zunehmender Verzögerung werden immer längere Störimpulse zurückgewiesen. Wenn 'delay' 4 ist, werden alle Störungen zurückgewiesen, die kleiner oder gleich vier Thread-Perioden sind.

note: type: Plain text
en: Each group of filters has one function, which updates all the filters in that group 'simultaneously'. Different groups of filters can be updated from different threads at different periods.
de: Jede Gruppe von Filtern hat eine Funktion, die alle Filter in dieser Gruppe "gleichzeitig" aktualisiert. Verschiedene Gruppen von Filtern können von verschiedenen Threads in verschiedenen Zeiträumen aktualisiert werden.

note: type: Plain text
en: '(funct) debounce._<G>_' - Updates all filters in group _<G>_.
de: '(funct) debounce._<G>_' - Aktualisiert alle Filter in der Gruppe _<G>_.

note: type: Plain text
en: Siggen is a realtime component that generates square, triangle, and sine waves. It is primarily used for testing.
de: Siggen ist eine Echtzeitkomponente, die Rechteck-, Dreieck- und Sinuswellen erzeugt. Sie wird hauptsächlich zum Testen verwendet.

note: type: Block title
en: Loading siggen
de: Laden von siggen

note: type: Plain text
en: is the number of signal generators that you want to install.  If 'numchan' is not specified, one signal generator will be installed.  The maximum number of generators is 16 (as defined by MAX_CHAN in siggen.c). Each generator is completely independent. In the following descriptions is
de: ist die Anzahl der Signalgeber, die Sie installieren möchten.  Wenn 'numchan' nicht angegeben wird, dann wird ein Signalgenerator installiert.  Die maximale Anzahl von Generatoren ist 16 (wie durch MAX_CHAN in siggen.c definiert). Jeder Generator ist völlig unabhängig. In den folgenden Beschreibungen ist

note: type: Plain text
en: the number of a specific signal generator (the numbers start at 0).
de: die Nummer eines bestimmten Signalgebers (die Nummern beginnen bei 0).

note: type: Block title
en: Unloading siggen
de: Entladen (engl. unload) von Siggen

note: type: Plain text
en: Each generator has five output pins.
de: Jeder Generator hat fünf Ausgangspins.

note: type: Plain text
en: '(float) siggen._<chan>_.sine' - Sine wave output.
de: '(float) siggen._<chan>_.sine' - Ausgabe einer Sinuswelle.

note: type: Plain text
en: '(float) siggen._<chan>_.cosine' - Cosine output.
de: '(float) siggen._<chan>_.cosine' - Ausgabe eines Kosinus.

note: type: Plain text
en: '(float) siggen._<chan>_.sawtooth' - Sawtooth output.
de: '(float) siggen. _<chan>_.sawtooth' - Sägezahn-Ausgang.

note: type: Plain text
en: '(float) siggen._<chan>_.triangle' - Triangle wave output.
de: '(float) siggen._<chan>_.triangle' - Ausgabe einer Dreieckswelle.

note: type: Plain text
en: '(float) siggen._<chan>_.square' - Square wave output.
de: '(float) siggen._<chan>_.square' - Ausgabe von Rechteckwellen.

note: type: Plain text
en: All five outputs have the same frequency, amplitude, and offset.
de: Alle fünf Ausgänge haben die gleiche Frequenz, Amplitude und Offset.

note: type: Plain text
en: In addition to the output pins, there are three control pins:
de: Zusätzlich zu den Ausgangspins gibt es drei Steuerpins:

note: type: Plain text
en: '(float) siggen._:<chan>_.frequency' - Sets the frequency in Hertz, default value is 1 Hz.
de: '(float) siggen._<chan>_.frequency' - Legt die Frequenz in Hertz fest, Standardwert ist 1 Hz.

note: type: Plain text
en: '(float) siggen._<chan>_.amplitude' - Sets the peak amplitude of the output waveforms, default is 1.
de: '(float) siggen._<chan>_.amplitude' - Legt die Spitzenamplitude der Ausgangswellenformen fest, Standardwert ist 1.

note: type: Plain text
en: '(float) siggen._<chan>_.offset' - Sets DC offset of the output waveforms, default is 0.
de: '(float) siggen. _<chan>_.offset' - Setzt den DC-Offset der Ausgangswellenformen, der Standardwert ist 0.

note: type: Plain text
en: For example, if 'siggen.0.amplitude' is 1.0 and 'siggen.0.offset' is 0.0, the outputs will swing from -1.0 to +1.0. If 'siggen.0.amplitude' is 2.5 and 'siggen.0.offset' is 10.0, then the outputs will swing from 7.5 to 12.5.
de: Wenn zum Beispiel "siggen.0.amplitude" 1,0 und "siggen.0.offset" 0,0 ist, schwanken die Ausgänge von -1,0 bis +1,0. Wenn "siggen.0.amplitude" 2,5 und "siggen.0.offset" 10,0 ist, schwanken die Ausgänge zwischen 7,5 und 12,5.

note: type: Plain text
en: None. footnote:[Prior to version 2.1, frequency, amplitude, and offset were parameters. They were changed to pins to allow control by other components.]
de: Keine. Fußnote:[Vor Version 2.1 waren Frequenz, Amplitude und Offset Parameter. Sie wurden in Pins geändert, um die Steuerung durch andere Komponenten zu ermöglichen.]

note: type: Plain text
en: '(funct) siggen._<chan>_.update' - Calculates new values for all five outputs.
de: '(funct) siggen._<chan>_.update' - Berechnet neue Werte für alle fünf Ausgaben.

note: type: Plain text
en: The lut5 component is a 5 input logic component based on a look up table.
de: Die Komponente lut5 ist eine Logikkomponente mit 5 Eingängen, die auf einer Look-up-Tabelle basiert.

note: type: Plain text
en: 'lut5' does not require a floating point thread.
de: lut5' benötigt keinen Fließkomma-Thread.

note: type: Block title
en: Loading lut5
de: Laden von lut5

note: type: Block title
en: Lut5 Computing Function
de: Lut5-Rechenfunktion

note: type: Plain text
en: To compute the hexadecimal number for the function starting from the top put a 1 or 0 to indicate if that row would be true or false. Next write down every number in the output column starting from the top and writing them from right to left. This will be the binary number. Using a calculator with a program view like the one in Ubuntu enter the binary number and then convert it to hexadecimal and that will be the value for function.
de: Um die hexadezimale Zahl für die Funktion zu berechnen, fangen Sie oben an und schreiben Sie eine 1 oder 0, um anzugeben, ob diese Zeile wahr oder falsch ist. Als Nächstes notieren Sie jede Zahl in der Ausgabespalte, beginnend von oben und von rechts nach links. Dies wird die Binärzahl sein. Mit einem Taschenrechner mit einer Programmansicht wie der in Ubuntu geben Sie die Binärzahl ein und konvertieren sie dann in Hexadezimal und das ist dann der Wert für die Funktion.

note: type: Table
en: Output
de: Ausgabe

note: type: Block title
en: Lut5 Two Inputs Example
de: Lut5 Zwei Eingänge Beispiel

note: type: Plain text
en: In the following table we have selected the output state for each line that we wish to be true.
de: In der folgenden Tabelle haben wir für jede Zeile den Ausgangszustand ausgewählt, den wir für wahr halten wollen.

note: type: Block title
en: Lut5 Two Inputs Example Look Up Table
de: Lut5 Zwei Eingänge Beispiel Look Up Table

note: type: Plain text
en: Looking at the output column of our example we want the output to be on when Bit 0 or Bit 0 and Bit1 is on and nothing else. The binary number is 'b1010' (rotate the output 90 degrees CW). Enter this number into the calculator then change the display to hexadecimal and the number needed for function is '0xa'. The hexadecimal prefix is '0x'.
de: In der Ausgangsspalte unseres Beispiels soll der Ausgang eingeschaltet sein, wenn Bit 0 oder Bit 0 und Bit1 eingeschaltet sind und sonst nichts. Die binäre Zahl ist 'b1010' (drehen Sie den Ausgang um 90 Grad nach rechts). Geben Sie diese Zahl in den Taschenrechner ein und stellen Sie die Anzeige auf hexadezimal um. Das hexadezimale Präfix ist '0x'.

note: type: Title =
en: HAL Tools(((HAL Tools)))
de: HAL-Werkzeuge(((HAL-Werkzeuge)))

note: type: Plain text
en: Halcmd is a command line tool for manipulating the HAL.  There is a rather complete man page for link:../man/man1/halcmd.1.html[halcmd], which will be installed if you have installed LinuxCNC from either source or a package.  The manpage provides usage info:
de: Halcmd ist ein Kommandozeilen-Tool für die Manipulation des HAL. Es gibt eine ziemlich vollständige Manpage für Link:../man/man1/halcmd.1.html[halcmd], die installiert wird, wenn Sie LinuxCNC entweder aus dem Quellcode oder einem Paket installiert haben. Die Manpage bietet Informationen zur Benutzung:

note: type: Plain text
en: If you have compiled LinuxCNC for "run-in-place", you must source the rip-environment script to make the man page available:
de: Wenn Sie LinuxCNC für "run-in-place" kompiliert haben, müssen Sie das rip-environment Skript als Quelle angeben, um die Manpage verfügbar zu machen:

note: type: Plain text
en: The <<cha:hal-tutorial,HAL Tutorial>> has a number of examples of halcmd usage, and is a good tutorial for `halcmd`.
de: Das <<cha:hal-tutorial,HAL Tutorial>> enthält eine Reihe von Beispielen für die Verwendung von halcmd und ist ein gutes Tutorial für `halcmd`.

note: type: Plain text
en: Refer to <<sec:tutorial-halmeter,Halmeter Tutorial>> section for more information.
de: Weitere Informationen finden Sie im Abschnitt <<sec:tutorial-halmeter,Halmeter Tutorial>>.

note: type: Plain text
en: See the man page for more options and the section <<sec:halmeter,Halmeter>>.
de: Siehe die Manpage für weitere Optionen und den Abschnitt <<sec:halmeter,Halmeter>>.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Halmeter selection window
de: Halmeter-Auswahlfenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Halmeter watch window
de: Halmeter-Watch Fenster

note: type: Plain text
en: Halshow (<<cha:halshow,complete usage description>>)  can be started from the command line to show details for selected components, pins, parameters, signals, functions, and threads of a running HAL.  The WATCH tab provides a continuous display of selected pin, parameters, and signal items.  The File menu provides buttons to save the watch items to a watch list and to load an existing watch list.  The watch list items can also be loaded automatically on startup.  For command line usage:
de: Halshow (<<cha:halshow,komplettee Beschreibung der Anwendung>>) kann von der Kommandozeile aus gestartet werden, um Details für ausgewählte Komponenten, Pins, Parameter, Signale, Funktionen und Threads einer laufenden HAL anzuzeigen.  Die Registerkarte WATCH bietet eine kontinuierliche Anzeige der ausgewählten Pins, Parameter und Signale.  Das Menü "Datei" enthält Schaltflächen zum Speichern der Watch-Elemente in einer Watch-Liste und zum Laden einer bestehenden Watch-Liste.  Die Elemente der Überwachungsliste können auch automatisch beim Starten geladen werden.  Für die Verwendung in der Befehlszeile:

note: type: delimited block -
en: Notes:
      Create watchfile in halshow using: 'File/Save Watch List'.
      LinuxCNC must be running for standalone usage.
de: Hinweise:
           Erstellen Sie einen watchfile in halshow mit: 'File/Save Watch List'.
           LinuxCNC muss für die Standalone-Nutzung ausgeführt werden.

note: type: Block title
en: Single Line Watchfile Example
de: Einzeiliges Watchfile-Beispiel

note: type: Plain text
en: A watchfile created using the 'File/Save Watch List (multiline)' menu item is formatted with separate lines for each item identified with token-name pairs as described above.
de: Eine Überwachungsdatei, die mit dem Menüpunkt 'Datei/Beobachtungsliste speichern (mehrzeilig)' erstellt wurde, wird mit separaten Zeilen für jedes Element formatiert, das wie oben beschrieben mit Token-Name-Paaren identifiziert wird.

note: type: Block title
en: Separated Lines Watchfile Example
de: Beispiel für eine Watchfile mit getrennten Zeilen

note: type: Plain text
en: When loading a watchfile with the 'File/Load Watch List' menu item, the token-name pairs may appear as single or multiple lines.  Blank lines and lines beginning with a # character are ignored.
de: Beim Laden einer Watchfile mit dem Menüpunkt 'File/Load Watch List' können die Token-Namen-Paare als einzelne oder mehrere Zeilen erscheinen.  Leerzeilen und Zeilen, die mit einem #-Zeichen beginnen, werden ignoriert.

note: type: Plain text
en: Configuration files may also be specified when starting halscope from the commandline.  Commandline help (-h) usage:
de: Konfigurationsdateien können auch beim Start von halscope über die Kommandozeile angegeben werden.  Verwendung der Kommandozeilenhilfe (-h):

note: type: Title ==
en: Sim Pin
de: Sim-Pin

note: type: Plain text
en: sim_pin is a command line utility to display and update any number of writable pins, parameters or signals.
de: sim_pin ist ein Kommandozeilenprogramm zur Anzeige und Aktualisierung einer beliebigen Anzahl von beschreibbaren Pins, Parametern oder Signalen.

note: type: Block title
en: `sim_pin` Usage
de: `sim_pin` Verwendung

note: type: delimited block -
en:          HAL item types bit, s32, u32, float are supported
de:          HAL-Elementtypen bit, s32, u32, float werden unterstützt

note: type: Plain text
en: For complete information, see the man page:
de: Vollständige Informationen finden Sie in der Manpage:

note: type: Block title
en: `sim_pin` Example (with LinuxCNC running)
de: 'sim_pin' Beispiel (mit laufendem LinuxCNC)

note: type: Block title
en: `sim_pin` Window
de: `sim_pin`-Fenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: sim_pin Window
de: sim_pin Fenster

note: type: Title ==
en: Simulate Probe
de: simulate_probe (Sonde simulieren)

note: type: Plain text
en: `simulate_probe` is a simple GUI to simulate activation of the pin motion.probe-input.  Usage:
de: `simulate_probe` ist ein einfaches GUI, um die Aktivierung des Pins motion.probe-input zu simulieren.  Verwendung:

note: type: Block title
en: `simulate_probe` Window
de: Fenster `simulieren_probe`

note: type: Positional ($1) AttributeList argument for macro 'image'
en: simulate_probe Window
de: simulieren_probe Fenster

note: type: Title ==
en: HAL Histogram
de: HAL Histogramm

note: type: Plain text
en: `hal-histogram` is a command line utility to display histograms for HAL pins.
de: `hal-histogram` ist ein Kommandozeilenprogramm zur Anzeige von Histogrammen für HAL-Pins.

note: type: Block title
en: `hal-histogram` Usage
de: `hal-histogram` Verwendung

note: type: Plain text
en: Usage:
de: Nutzung:

note: type: Plain text
en:    hal-histogram --help | -?
    or
       hal-histogram [Options] [pinname]
de:    hal-histogram --help | -?
    or
       hal-histogram [Optionen] [Pinname]

note: type: Table
en: minimum bin, default: 0
de: minimum bin, Voreinstellung: 0

note: type: Table
en: binsize, default: 100
de: binsize, Voreinstellung: 100

note: type: Table
en: number of bins, default: 50
de: Anzahl der Bins, Standard: 50

note: type: Plain text
en: y axis log scale, default: 1
de: y-Achse logarithmische Skala, Voreintellung: 1

note: type: Table
en: note
de: Hinweis

note: type: Table
en: text display, default: ""
de: Textanzeige, Standard: ""

note: type: Table
en: --show
de: -show

note: type: Table
en: show count of undisplayed nbins, default off
de: Anzahl der nicht angezeigten nbins anzeigen, Voreinstellung aus

note: type: Table
en: progress and debug, default off
de: Fortschritt und Fehlersuche, standardmäßig aus

note: type: Plain text
en: Notes:
de: Anmerkungen:

note: type: Plain text
en: LinuxCNC (or another HAL application) must be running.
de: LinuxCNC (oder eine andere HAL-Anwendung) muss laufen.

note: type: Plain text
en: This app may be opened for 5 pins.
de: Diese App kann für 5 Pins geöffnet werden.

note: type: Plain text
en: Pintypes float, s32, u32, bit are supported.
de: Unterstützt werden die Pintypen float, s32, u32, bit.

note: type: Plain text
en: The pin must be associated with a thread supporting floating point For a base thread, this may require using `loadrt motmod ... base_thread_fp=1` .
de: Der Pin muss mit einem Thread verbunden sein, der Fließkomma unterstützt. Für einen Basis-Thread kann dies die Verwendung von `loadrt motmod ... base_thread_fp=1` erfordern.

note: type: Block title
en: `hal-histogram` Window
de: `hal-histogram`-Fenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: hal-histogram Window
de: hal-histogram Fenster

note: type: Plain text
en: `halreport` is a command-line utility that generates a report about HAL connections for a running LinuxCNC (or other HAL) application.  The report shows all signal connections and flags potential problems.  Information included:
de: `halreport` ist ein Befehlszeilen-Dienstprogramm, das einen Bericht über HAL-Verbindungen für eine laufende LinuxCNC (oder andere HAL) Anwendung erzeugt.  Der Bericht zeigt alle Signalverbindungen an und weist auf mögliche Probleme hin.  Enthaltene Informationen:

note: type: Plain text
en: System description and kernel version.
de: Systembeschreibung und Kernelversion.

note: type: Plain text
en: Signals and all connected output, io, and input pins.
de: Signale und alle angeschlossenen Ausgangs-, E/A- und Eingangspins.

note: type: Plain text
en: Each pin's component_function, thread, and addf-order.
de: Eines jeden Pin component_function, thread und addf-Reihenfolge.

note: type: Plain text
en: Userspace component pins having non-ordered functions.
de: Pins von Userspace-Komponenten mit nicht geordneten Funktionen.

note: type: Plain text
en: Identification of unknown functions for unhandled components.
de: Identifizierung von unbekannten Funktionen für nicht behandelte Komponenten.

note: type: Plain text
en: Signals   with no output.
de: Signale ohne Ausgang.

note: type: Plain text
en: Signals   with no inputs.
de: Signale ohne Eingänge.

note: type: Plain text
en: Functions with no addf.
de: Funktionen ohne addf.

note: type: Plain text
en: Warning tags for components marked as deprecated/obsolete in docs.
de: Warnhinweise für Komponenten, die in der Dokumentation als veraltet/überflüssig gekennzeichnet sind.

note: type: Plain text
en: Real names for pins that use alias names.
de: Echte Namen für Pins, die Aliasnamen verwenden.

note: type: Plain text
en: The report can be generated from the command line and directed to an output file (or stdout if no outfilename is specified):
de: Der Bericht kann über die Befehlszeile erstellt und in eine Ausgabedatei (oder stdout, wenn kein Ausgabedateiname angegeben ist) geleitet werden:

note: type: Block title
en: `halreport` Usage
de: `halreport` Anwendung

note: type: Plain text
en: To generate the report for every LinuxCNC startup, include halreport and an output filename as an [APPLICATIONS]APP entry in the INI file.
de: Um den Bericht für jeden LinuxCNC-Start zu erzeugen, fügen Sie halreport und einen Ausgabedateinamen als [APPLICATIONS]APP-Eintrag in die INI-Datei ein.

note: type: Block title
en: `halreport` Example
de: `halreport` Beispiel

note: type: Plain text
en: The function addf-ordering can be important for servo loops where the sequence of the functions computed at each servo period is important.  Typically, the order is:
de: Die Reihenfolge, in der die Funktionen addiert werden, kann für Servoschleifen wichtig sein, bei denen die Reihenfolge der in jeder Servoperiode berechneten Funktionen wichtig ist.  Typischerweise ist die Reihenfolge:

note: type: Plain text
en: read input pins,
de: Eingangspins lesen,

note: type: Plain text
en: do the motion command-handler and motion-controller functions,
de: die Funktionen für die Bewegungssteuerung und die Bewegungssteuerung ausführen,

note: type: Plain text
en: perform pid calculations, and finally
de: PID-Berechnungen durchführen und schließlich

note: type: Plain text
en: write output pins.
de: Ausgabepins schreiben.

note: type: Plain text
en: For each signal in a critical path, the addf-order of the output pin should be numerically lower than the addf-order of the critical input pins that it connects to.
de: Für jedes Signal in einem kritischen Pfad sollte die addf-Ordnung des Ausgangspins numerisch niedriger sein als die addf-Ordnung der kritischen Eingangspins, mit denen es verbunden ist.

note: type: Plain text
en: For routine signal paths that handle switch inputs, user-space pins, etc., the addf-ordering is often not critical.  Moreover, the timing of user-space pin value changes cannot be controlled or guaranteed at the intervals typically employed for HAL threads.
de: Bei Routine-Signalpfaden, die Schalteingänge, User-Space-Pins usw. verarbeiten, ist die addf-Reihenfolge oft nicht kritisch.  Außerdem kann das Timing der Wertänderungen von User-Space-Pins nicht in den für HAL-Threads typischen Intervallen kontrolliert oder garantiert werden.

note: type: Plain text
en: Example report file excerpts showing a pid loop for a hostmot2 stepgen operated in velocity mode on a trivkins machine with joint.0 corresponding to the X axis coordinate:
de: Beispiel für eine PID-Schleife für einen hostmot2-Stepgen, der im Geschwindigkeitsmodus auf einer Trivkins-Maschine betrieben wird, wobei joint.0 der X-Achsenkoordinate entspricht:

note: type: Plain text
en: In the example above, the HALFILE uses halcmd aliases to simplify pin names for an hostmot2 FPGA board with commands like:
de: Im obigen Beispiel verwendet die HALFILE halcmd-Aliase, um die Pin-Namen für ein hostmot2-FPGA-Board mit Befehlen wie diesen zu vereinfachen:

note: type: delimited block =
en: Questionable component function detection may occur for
de: Eine fragwürdige Erkennung von Komponentenfunktionen kann auftreten bei

note: type: delimited block =
en: unsupported (deprecated) components,
de: nicht unterstützte (veraltete) Komponenten,

note: type: delimited block =
en: user-created components that use multiple functions or unconventional function naming, or
de: vom Benutzer erstellte Komponenten, die mehrere Funktionen oder unkonventionelle Funktionsbezeichnungen verwenden, oder

note: type: delimited block =
en: GUI-created userspace components that lack distinguishing characteristics such as a prefix based on the GUI program name.
de: GUI-erstellte Userspace-Komponenten, denen Unterscheidungsmerkmale wie ein Präfix auf Basis des GUI-Programmnamens fehlen.

note: type: delimited block =
en: Questionable functions are tagged with a question mark "?".
de: Fragwürdige Funktionen sind mit einem Fragezeichen "?" gekennzeichnet.

note: type: Plain text
en: Component pins that cannot be associated with a known thread function report the function as "Unknown".
de: Komponentenstifte, die nicht mit einer bekannten Gewindefunktion verbunden werden können, melden die Funktion als "Unbekannt".

note: type: Title =
en: HAL Tutorial(((HAL Tutorial)))
de: HAL-Tutorial(((HAL-Tutorial)))

note: type: Plain text
en: Configuration moves from theory to device -- HAL device that is.  For those who have had just a bit of computer programming, this section is the 'Hello World' of the HAL.
de: Die Konfiguration geht von der Theorie zum Gerät über - dem HAL-Gerät. Für diejenigen, die nur ein wenig Erfahrung mit Computerprogrammierung haben, ist dieser Abschnitt das "Hello World" des HAL.

note: type: Plain text
en: `halrun` can be used to create a working system.  It is a command line or text file tool for configuration and tuning.  The following examples illustrate its setup and operation.
de: `halrun` kann verwendet werden, um ein funktionierendes System zu erstellen. Es ist ein Kommandozeilen- oder Textdateiwerkzeug für Konfiguration und Tuning.

note: type: Plain text
en: `halcmd` is a command line tool for manipulating HAL. A more complete man page exists for halcmd and installed together with LinuxCNC, from source or from a package. If LinuxCNC has been compiled as _run-in-place_, the man page is not installed but is accessible in the LinuxCNC main directory with the following command:
de: `halcmd` ist ein Befehlszeilentool zum Manipulieren von HAL. Eine vollständigere Manpage existiert für halcmd und wird zusammen mit LinuxCNC installiert, aus dem Quellcode oder aus einem Paket. Wenn LinuxCNC als _run-in-place_ kompiliert wurde, wird die Manpage nicht installiert, ist aber im LinuxCNC-Hauptverzeichnis mit dem folgenden Befehl zugänglich:

note: type: delimited block -
en: me@computer:~linuxcnc$ halrun
    (will be shown like the following line)
    halrun
de: me@computer:~linuxcnc$ halrun
    (wird wie die folgende Zeile angezeigt)
    halrun

note: type: delimited block -
en: (the halcmd: prompt will be shown when running HAL)
    halcmd: loadrt counter
    halcmd: show pin
de: (die halcmd: Eingabeaufforderung wird beim Ausführen von HAL angezeigt)
    halcmd: loadrt Zähler
    halcmd: pin anzeigen

note: type: Block title
en: Tab-completion
de: Befehl-Vervollständigung durch Tabulator-Taste

note: type: Title ===
en: The RTAPI environment
de: Die RTAPI-Umgebung

note: type: Plain text
en: To address these differences, the LinuxCNC team came up with RTAPI, which provides a consistent way for programs to talk to the RTOS. If you are a programmer who wants to work on the internals of LinuxCNC, you may want to study 'linuxcnc/src/rtapi/rtapi.h' to understand the API.  But if you are a normal person, all you need to know about RTAPI is that it (and the RTOS) needs to be loaded into the memory of your computer before you do anything with HAL.
de: Um diese Unterschiede zu beseitigen, hat das LinuxCNC-Team die RTAPI entwickelt, die einen einheitlichen Weg für Programme bietet, um mit dem RTOS zu kommunizieren. Wenn Sie ein Programmierer sind, der an den Interna von LinuxCNC arbeiten will, sollten Sie vielleicht 'linuxcnc/src/rtapi/rtapi.h' studieren, um die API zu verstehen. Aber wenn Sie eine normale Person sind, ist alles, was Sie über RTAPI wissen müssen, dass es (und das RTOS) in den Speicher Ihres Computers geladen werden muss, bevor Sie etwas mit HAL machen.

note: type: Title ==
en: A Simple Example
de: Ein einfaches Beispiel

note: type: Title ===
en: Loading a component
de: Laden einer Komponente

note: type: Plain text
en: For this tutorial, we are going to assume that you have successfully installed the Live CD and, if using a RIP footnote:[Run In Place, when the source files have been downloaded to a user directory and are compiled and executed directly from there.], invoke the 'rip-environment' script to prepare your shell.  In that case, all you need to do is load the required RTOS and RTAPI modules into memory.  Just run the following command from a terminal window:
de: Für dieses Tutorial gehen wir davon aus, dass Sie die Live-CD erfolgreich installiert haben und, falls Sie eine RIP footnote: [Run In Place, wenn die Quelldateien in ein Benutzerverzeichnis heruntergeladen wurden und direkt von dort aus kompiliert und ausgeführt werden] Installation verwenden, das Skript "rip-environment" aufrufen, um Ihre Shell vorzubereiten.  In diesem Fall müssen Sie nur noch die erforderlichen RTOS- und RTAPI-Module in den Speicher laden.  Führen Sie einfach den folgenden Befehl in einem Terminalfenster aus:

note: FIXME: add link to rip-environment explanation type: Block title
en: Loading HAL
de: HAL laden

note: type: Plain text
en: With the realtime OS and RTAPI loaded, we can move into the first example. Notice that the prompt is now shown as 'halcmd:'.  This is because subsequent commands will be interpreted as HAL commands, not shell commands.
de: Nachdem das Echtzeitbetriebssystem und die RTAPI geladen sind, können wir mit dem ersten Beispiel beginnen. Beachten Sie, dass die Eingabeaufforderung jetzt als "halcmd:" angezeigt wird.  Das liegt daran, dass die nachfolgenden Befehle als HAL-Befehle und nicht als Shell-Befehle interpretiert werden.

note: type: Title ===
en: Examining the HAL
de: Untersuchung der HAL

note: type: Block title
en: Show Pins
de: Pins anzeigen

note: type: Plain text
en: The next step is to look at parameters:
de: Der nächste Schritt ist die Betrachtung der Parameter:

note: type: Block title
en: Show Parameters
de: Parameter anzeigen

note: type: Title ===
en: Making realtime code run
de: Echtzeitcode zum Laufen bringen

note: type: Plain text
en: Let's see if that worked:
de: Mal sehen, ob das funktioniert:

note: type: Block title
en: Show Threads
de: Threads anzeigen

note: type: Block title
en: Add Function
de: Funktion hinzufügen

note: type: Plain text
en: Now the signal generator is running. Let's look at its output pins:
de: Jetzt läuft der Signalgenerator. Schauen wir uns seine Ausgangspins an:

note: type: delimited block -
en: Component Pins:
    Owner   Type  Dir         Value  Name
         3  float IN              1  siggen.0.amplitude
         3  bit   OUT         FALSE  siggen.0.clock
         3  float OUT    -0.1640929  siggen.0.cosine
         3  float IN              1  siggen.0.frequency
         3  float IN              0  siggen.0.offset
         3  float OUT    -0.4475303  siggen.0.sawtooth
         3  float OUT     0.9864449  siggen.0.sine
         3  float OUT            -1  siggen.0.square
         3  float OUT    -0.1049393  siggen.0.triangle
de: Komponenten-Pins:
    Owner   Type  Dir         Value  Name
         3  float IN              1  siggen.0.amplitude
         3  bit   OUT         FALSE  siggen.0.clock
         3  float OUT    -0.1640929  siggen.0.cosine
         3  float IN              1  siggen.0.frequency
         3  float IN              0  siggen.0.offset
         3  float OUT    -0.4475303  siggen.0.sawtooth
         3  float OUT     0.9864449  siggen.0.sine
         3  float OUT            -1  siggen.0.square
         3  float OUT    -0.1049393  siggen.0.triangle

note: type: Plain text
en: And let's look again:
de: Und schauen wir noch einmal hin:

note: type: delimited block -
en: Component Pins:
    Owner   Type  Dir         Value  Name
         3  float IN              1  siggen.0.amplitude
         3  bit   OUT         FALSE  siggen.0.clock
         3  float OUT     0.0507619  siggen.0.cosine
         3  float IN              1  siggen.0.frequency
         3  float IN              0  siggen.0.offset
         3  float OUT     -0.516165  siggen.0.sawtooth
         3  float OUT     0.9987108  siggen.0.sine
         3  float OUT            -1  siggen.0.square
         3  float OUT    0.03232994  siggen.0.triangle
de: Komponenten Pins:
    Owner   Type  Dir         Value  Name
         3  float IN              1  siggen.0.amplitude
         3  bit   OUT         FALSE  siggen.0.clock
         3  float OUT     0.0507619  siggen.0.cosine
         3  float IN              1  siggen.0.frequency
         3  float IN              0  siggen.0.offset
         3  float OUT     -0.516165  siggen.0.sawtooth
         3  float OUT     0.9987108  siggen.0.sine
         3  float OUT            -1  siggen.0.square
         3  float OUT    0.03232994  siggen.0.triangle

note: type: Title ===
en: Changing Parameters
de: Ändern von Parametern

note: type: Block title
en: Set Pin
de: Pin einstellen (engl. set)

note: type: Block title
en: Check the parameters and pins again
de: Überprüfen Sie die Parameter und Pins erneut

note: type: delimited block -
en: Parameters:
    Owner   Type  Dir         Value  Name
         3  s32   RO           1754  siggen.0.update.time
         3  s32   RW          16997  siggen.0.update.tmax
de: Parameter:
    Owner   Type  Dir         Value  Name
         3  s32   RO           1754  siggen.0.update.time
         3  s32   RW          16997  siggen.0.update.tmax

note: type: delimited block -
en: Component Pins:
    Owner   Type  Dir         Value  Name
         3  float IN              5  siggen.0.amplitude
         3  bit   OUT         FALSE  siggen.0.clock
         3  float OUT     0.8515425  siggen.0.cosine
         3  float IN              1  siggen.0.frequency
         3  float IN              0  siggen.0.offset
         3  float OUT      2.772382  siggen.0.sawtooth
         3  float OUT     -4.926954  siggen.0.sine
         3  float OUT             5  siggen.0.square
         3  float OUT      0.544764  siggen.0.triangle
de: Komponenten-Pins:
    Owner   Type  Dir         Value  Name
         3  float IN              5  siggen.0.amplitude
         3  bit   OUT         FALSE  siggen.0.clock
         3  float OUT     0.8515425  siggen.0.cosine
         3  float IN              1  siggen.0.frequency
         3  float IN              0  siggen.0.offset
         3  float OUT      2.772382  siggen.0.sawtooth
         3  float OUT     -4.926954  siggen.0.sine
         3  float OUT             5  siggen.0.square
         3  float OUT      0.544764  siggen.0.triangle

note: type: Title ===
en: Saving the HAL configuration
de: Speichern der HAL-Konfiguration

note: type: Plain text
en: Most of what we have done with `halcmd` so far has simply been viewing things with the 'show' command.  However two of the commands actually changed things.  As we design more complex systems with HAL, we will use many commands to configure things just the way we want them.  HAL has the memory of an elephant, and will retain that configuration until we shut it down.  But what about next time? We don't want to manually enter a bunch of commands every time we want to use the system.
de: Das meiste, was wir bisher mit `halcmd` gemacht haben, war einfach das Anzeigen von Dingen mit dem 'show'-Befehl.  Zwei der Befehle haben jedoch tatsächlich Dinge verändert.  Wenn wir komplexere Systeme mit HAL entwerfen, werden wir viele Befehle verwenden, um die Dinge genau so zu konfigurieren, wie wir sie haben wollen.  HAL hat ein Gedächtnis wie ein Elefant und behält diese Konfiguration bei, bis wir es abschalten.  Aber was ist beim nächsten Mal? Wir wollen nicht jedes Mal, wenn wir das System benutzen wollen, eine Reihe von Befehlen manuell eingeben.

note: type: delimited block -
en: # components
    loadrt threads name1=test-thread period1=1000000
    loadrt siggen
    # pin aliases
    # signals
    # nets
    # parameter values
    setp siggen.0.update.tmax 14687
    # realtime thread/function links
    addf siggen.0.update test-thread
de: # Komponenten
    loadrt threads name1=test-thread period1=1000000
    loadrt siggen
    # Pin-Aliase
    # Signale
    # Netze
    # Parameterwerte
    setp siggen.0.update.tmax 14687
    # Echtzeit-Thread/Funktions-Verknüpfungen
    addf siggen.0.update test-thread

note: type: Title ===
en: Exiting halrun
de: Halrun beenden

note: type: Block title
en: Exit HAL
de: HAL beenden

note: type: Title ===
en: Restoring the HAL configuration
de: Wiederherstellung der HAL-Konfiguration

note: type: Block title
en: Run a Saved File
de: Ausführen einer gespeicherten Datei

note: type: Title ===
en: Removing HAL from memory
de: HAL aus dem Speicher entfernen

note: type: Plain text
en: If an unexpected shutdown of a HAL session occurs you might have to unload HAL before another session can begin.  To do this type the following command in a terminal window.
de: Wenn eine HAL-Sitzung unerwartet beendet wird, müssen Sie möglicherweise HAL entladen, bevor eine neue Sitzung beginnen kann. Geben Sie dazu den folgenden Befehl in ein Terminalfenster ein.

note: type: Plain text
en: You can build very complex HAL systems without ever using a graphical interface. However there is something satisfying about seeing the result of your work. The first and simplest GUI tool for the HAL is halmeter. It is a very simple program that is the HAL equivalent of the handy multimeter (or analog meter for the old timers).
de: Sie können sehr komplexe HAL-Systeme erstellen, ohne jemals eine grafische Oberfläche zu verwenden. Es hat jedoch etwas Befriedigendes, das Ergebnis seiner Arbeit zu sehen. Das erste und einfachste GUI-Werkzeug für HAL ist Halmeter. Es ist ein sehr einfaches Programm, das ein HAL-Äquivalent eines handlichen Multimeters darstellt.

note: FIXME Add halmeter screenshot(s) type: Plain text
en: Two windows will appear. The selection window is the largest and includes three tabs:
de: Es erscheinen zwei Fenster. Das Auswahlfenster ist das größte und enthält drei Registerkarten:

note: type: Plain text
en: One lists all the pins currently defined in HAL,
de: In der einen werden alle derzeit in HAL definierten Pins aufgelistet,

note: type: Plain text
en: one lists all the signals,
de: eine Liste aller Signale,

note: type: Plain text
en: one lists all the parameters.
de: eine listet alle Parameter auf,

note: type: Plain text
en: Click on a tab, then click on one of the items to select it. The small window will show the name and value of the selected item.  The display is updated approximately 10 times per second. To free screen space, the selection window can be closed with the _Close_ button.  On the little window, hidden under the selection window at program launch, the _Select_ button, re-opens the selection window and the _Exit_ button stops the program and closes both windows.
de: Klicken Sie auf eine Registerkarte und dann auf eines der Elemente, um es auszuwählen. In dem kleinen Fenster werden der Name und der Wert des ausgewählten Elements angezeigt.  Die Anzeige wird etwa 10 Mal pro Sekunde aktualisiert. Um Platz auf dem Bildschirm zu schaffen, kann das Auswahlfenster mit der Schaltfläche _Close_ geschlossen werden.  Im kleinen Fenster, das beim Programmstart unter dem Auswahlfenster verborgen ist, öffnet die Schaltfläche _Auswählen_ das Auswahlfenster erneut, und die Schaltfläche _Beenden_ beendet das Programm und schließt beide Fenster.

note: type: Plain text
en: It is possible to run several halmeters simultaneously, which makes it possible to visualize several items at the same time. To open a halmeter and release the console by running it in the background, run the following command:
de: Es ist möglich, mehrere Halmeter gleichzeitig laufen zu lassen, was die gleichzeitige Visualisierung mehrerer Elemente ermöglicht. Um ein Halmeter zu öffnen und die Konsole freizugeben, indem es im Hintergrund ausgeführt wird, führen Sie den folgenden Befehl aus:

note: type: Plain text
en: It is possible to launch halmeter and make it immediately display an item.  For this, add _pin|sig|par[am] name_ arguments on the command line. It will display the signal, pin, or parameter _name_ as soon as it will start. If the indicated item does not exist, it will start normally.
de: Es ist möglich, halmeter zu starten und sofort ein Element anzeigen zu lassen.  Fügen Sie dazu _pin|sig|par[am] name_ Argumente in die Befehlszeile ein. Es wird das Signal, den Pin oder den Parameter _name_ anzeigen, sobald es startet. Wenn das angegebene Element nicht vorhanden ist, wird es normal gestartet.

note: FIXME Add halmeter command example for direct item display type: Plain text
en: Finally, if an item is specified for display, it is possible add _-s_ in front of pin|sig|param to tell halmeter to use an even smaller window. The item name will be displayed in the title bar instead of below the value and there will be no button.  This is useful for displaying a lot of halmeters in a small space.
de: Wenn ein Element für die Anzeige angegeben wird, kann man _-s_ vor pin|sig|param hinzufügen, um Halmeter anzuweisen, ein noch kleineres Fenster zu verwenden. Der Name des Elements wird dann in der Titelleiste statt unter dem Wert angezeigt, und es gibt keine Schaltfläche.  Dies ist nützlich, wenn viele Halmeter auf kleinem Raum angezeigt werden sollen.

note: FIXME Add halmeter run with '-s' screenshot type: Plain text
en: We will use the siggen component again to check out halmeter. If you just finished the previous example, then you can load siggen using the saved file. If not, we can load it just like we did before:
de: Wir werden erneut die Komponente siggen verwenden, um halmeter zu überprüfen. Wenn Sie das vorherige Beispiel gerade beendet haben, können Sie siggen mit der gespeicherten Datei laden. Wenn nicht, können wir es genauso laden wie zuvor:

note: type: Block title
en: Starting Halmeter
de: Halmeter starten

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Halmeter Select Window
de: Halmeter Auswahlfenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Halmeter Window
de: Halmeter-Fenster

note: type: Plain text
en: You should see the value changing as siggen generates its cosine wave.  Halmeter refreshes its display about 5 times per second.
de: Sie sollten sehen, wie sich der Wert ändert, wenn siggen seine Kosinuswelle erzeugt.  Das Halmeter aktualisiert seine Anzeige etwa 5 Mal pro Sekunde.

note: type: Plain text
en: To shut down halmeter, just click the exit button.
de: Zum Beenden von Halmeter klicken Sie einfach auf die Schaltfläche Beenden.

note: type: Plain text
en: If you want to look at more than one pin, signal, or parameter at a time, you can just start more halmeters. The halmeter window was intentionally made very small so you could have a lot of them on the screen at once.
de: Wenn Sie mehr als einen Pin, ein Signal oder einen Parameter auf einmal betrachten wollen, können Sie einfach mehrere Halmeter starten. Das Halmeter-Fenster wurde absichtlich sehr klein gehalten, damit Sie viele davon gleichzeitig auf dem Bildschirm haben können.

note: type: Title ==
en: Stepgen Example(((stepgen Example)))
de: Stepgen Beispiel(((stepgen Beispiel)))

note: type: Plain text
en: Up till now we have only loaded one HAL component. But the whole idea behind the HAL is to allow you to load and connect a number of simple components to make up a complex system. The next example will use two components.
de: Bis jetzt haben wir nur eine HAL-Komponente geladen. Die Idee hinter HAL ist jedoch, dass Sie eine Reihe von einfachen Komponenten laden und verbinden können, um ein komplexes System zu bilden. Das nächste Beispiel wird zwei Komponenten verwenden.

note: type: Plain text
en: Before we can begin building this new example, we want to start with a clean slate. If you just finished one of the previous examples, we need to remove the all components and reload the RTAPI and HAL libraries.
de: Bevor wir mit der Erstellung dieses neuen Beispiels beginnen können, wollen wir einen Neuanfang machen. Wenn Sie gerade eines der vorherigen Beispiele beendet haben, müssen wir alle Komponenten entfernen und die RTAPI- und HAL-Bibliotheken neu laden.

note: type: Title ===
en: Installing the components
de: Installieren der Komponenten

note: type: Plain text
en: In this example we will use the _velocity_ control type from the `stepgen` component.
de: In diesem Beispiel wird der Kontrolltyp _velocity_ aus der Komponente `stepgen` verwendet.

note: type: Title ===
en: Connecting pins with signals
de: Verbinden von Pins mit Signalen

note: type: Plain text
en: What we have is two step pulse generators, and a signal generator. Now it is time to create some HAL signals to connect the two components. We are going to pretend that the two step pulse generators are driving the X and Y axis of a machine. We want to move the table in circles. To do this, we will send a cosine signal to the X axis, and a sine signal to the Y axis. The siggen module creates the sine and cosine, but we need 'wires' to connect the modules together. In the HAL, 'wires' are called signals. We need to create two of them. We can call them anything we want, for this example they will be 'X-vel' and 'Y-vel'. The signal 'X-vel' is intended to run from the cosine output of the signal generator to the velocity input of the first step pulse generator.  The first step is to connect the signal to the signal generator output.  To connect a signal to a pin we use the net command.
de: Wir haben also zwei Schrittimpulsgeneratoren und einen Signalgenerator. Nun ist es an der Zeit, einige HAL-Signale zu erzeugen, um die beiden Komponenten zu verbinden. Wir tun so, als ob die beiden Schrittimpulsgeneratoren die X- und Y-Achse einer Maschine antreiben würden. Wir wollen den Tisch im Kreis bewegen. Dazu senden wir ein Kosinussignal an die X-Achse und ein Sinussignal an die Y-Achse. Das siggen-Modul erzeugt den Sinus und den Cosinus, aber wir brauchen "Drähte", um die Module miteinander zu verbinden. Im HAL werden diese "Drähte" Signale genannt. Wir müssen zwei davon erstellen. Wir können sie nennen, wie wir wollen, in diesem Beispiel werden sie 'X-vel' und 'Y-vel' heißen. Das Signal "X-vel" soll vom Cosinus-Ausgang des Signalgenerators zum Geschwindigkeitseingang des ersten Schrittimpulsgenerators führen.  Der erste Schritt besteht darin, das Signal mit dem Ausgang des Signalgenerators zu verbinden.  Um ein Signal mit einem Pin zu verbinden, verwenden wir den Netzbefehl.

note: type: Block title
en: net command
de: net-Befehl

note: type: Plain text
en: Now let's take a final look at the signals and the pins connected to them.
de: Werfen wir nun einen letzten Blick auf die Signale und die mit ihnen verbundenen Pins.

note: type: Title ===
en: Setting up realtime execution - threads and functions
de: Einrichten der Echtzeitausführung - Threads und Funktionen

note: type: Plain text
en: The other three functions are related to the step pulse generators.
de: Die anderen drei Funktionen beziehen sich auf die Schrittimpulsgeneratoren.

note: type: Plain text
en: What this means for our example is that we want to run `siggen.0.update` at a moderate rate to calculate the sine and cosine values.  Immediately after we run `siggen.0.update`, we want to run `stepgen.update_freq` to load the new values into the step pulse generator.  Finally we need to run `stepgen.make_pulses` as fast as possible for smooth pulses.  Because we don't use position feedback, we don't need to run `stepgen.capture_position` at all.
de: Für unser Beispiel bedeutet dies, dass wir `siggen.0.update` mit einer moderaten Rate ausführen wollen, um die Sinus- und Kosinuswerte zu berechnen.  Unmittelbar nachdem wir `siggen.0.update` ausgeführt haben, wollen wir `stepgen.update_freq` ausführen, um die neuen Werte in den Schrittimpulsgenerator zu laden.  Schließlich müssen wir `stepgen.make_pulses` so schnell wie möglich ausführen, um gleichmäßige Impulse zu erhalten.  Da wir keine Positionsrückmeldung verwenden, brauchen wir `stepgen.capture_position` überhaupt nicht auszuführen.

note: type: Plain text
en: Now each thread is followed by the names of the functions, in the order in which the functions will run.
de: Nun folgen auf jeden Thread die Namen der Funktionen in der Reihenfolge, in der sie ausgeführt werden sollen.

note: type: Title ===
en: Setting parameters
de: Parameter einstellen

note: type: Title ===
en: Run it!
de: Ausführen!

note: type: Plain text
en: The previous example generates some very interesting signals. But much of what happens is far too fast to see with halmeter. To take a closer look at what is going on inside the HAL, we want an oscilloscope.  Fortunately HAL has one, called halscope.
de: Das vorherige Beispiel erzeugt einige sehr interessante Signale. Aber vieles von dem, was passiert, ist viel zu schnell, um es mit dem Halmeter zu sehen. Um einen genaueren Blick auf die Vorgänge im Inneren des HAL zu werfen, brauchen wir ein Oszilloskop.  Glücklicherweise verfügt HAL über ein solches, genannt halscope.

note: type: Plain text
en: Halscope has two parts - a realtime part that is loaded as a kernel module, and a user part that supplies the GUI and display. However, you don't need to worry about this, because the userspace portion will automatically request that the realtime part be loaded. With LinuxCNC running in a terminal you can start halscope with the following command.
de: Halscope besteht aus zwei Teilen - einem Echtzeitteil, der als Kernelmodul geladen wird, und einem Benutzerteil, der die grafische Benutzeroberfläche und die Anzeige bereitstellt. Sie müssen sich darüber jedoch keine Gedanken machen, da der Benutzerteil automatisch anfordert, dass der Echtzeitteil geladen wird. Wenn LinuxCNC in einem Terminal läuft, können Sie halscope mit dem folgenden Befehl starten.

note: type: Block title
en: Starting Halscope
de: Halscope starten

note: type: Plain text
en: If LinuxCNC is not running or the autosave.halscope file does not match the pins available in the current running LinuxCNC the scope GUI window will open, immediately followed by a 'Realtime function not linked' dialog that looks like the following figure. To change the sample rate left click on the samples box.
de: Wenn LinuxCNC nicht läuft oder die Datei autosave.halscope nicht mit den Pins übereinstimmt, die im aktuell laufenden LinuxCNC verfügbar sind, öffnet sich das Scope-GUI-Fenster, unmittelbar gefolgt von einem Dialog 'Realtime function not linked', der wie die folgende Abbildung aussieht. Um die Abtastrate zu ändern, klicken Sie mit der linken Maustaste auf das Feld Samples.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Realtime function not linked dialog
de: Dialog 'Echtzeitfunktion nicht verknüpft'

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Initial scope window
de: Fenster für den anfänglichen Geltungsbereich

note: type: Title ===
en: Hooking up the scope probes
de: Anschließen der Oszilloskop-Sonden

note: type: Plain text
en: At this point, Halscope is ready to use. We have already selected a sample rate and record length, so the next step is to decide what to look at. This is equivalent to hooking 'virtual scope probes' to the HAL. Halscope has 16 channels, but the number you can use at any one time depends on the record length - more channels means shorter records, since the memory available for the record is fixed at approximately 16,000 samples.
de: An diesem Punkt ist Halscope einsatzbereit. Wir haben bereits eine Abtastrate und eine Aufzeichnungslänge gewählt, so dass der nächste Schritt darin besteht, zu entscheiden, was wir uns ansehen wollen. Dies ist gleichbedeutend mit dem Anschließen von "virtuellen Oszilloskop-Sonden" an den HAL. Halscope verfügt über 16 Kanäle, aber die Anzahl, die Sie gleichzeitig verwenden können, hängt von der Aufzeichnungslänge ab - mehr Kanäle bedeuten kürzere Aufzeichnungen, da der für die Aufzeichnung verfügbare Speicher auf etwa 16.000 Samples festgelegt ist.

note: type: Plain text
en: The channel buttons run across the bottom of the halscope screen.  Click button '1', and you will see the 'Select Channel Source' dialog as shown in the following figure. This dialog is very similar to the one used by Halmeter. We would like to look at the signals we defined earlier, so we click on the 'Signals' tab, and the dialog displays all of the signals in the HAL (only two for this example).
de: Die Kanalschaltflächen befinden sich am unteren Rand des Halskop-Bildschirms.  Wenn Sie auf die Schaltfläche "1" klicken, wird das Dialogfeld "Select Channel Source" (Kanalquelle auswählen) angezeigt, wie in der folgenden Abbildung dargestellt. Dieser Dialog ist dem von Halmeter verwendeten Dialog sehr ähnlich. Wir möchten uns die Signale ansehen, die wir zuvor definiert haben, also klicken wir auf die Registerkarte "Signale", und der Dialog zeigt alle Signale im HAL an (in diesem Beispiel nur zwei).

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Select Channel Source
de: Kanalquelle auswählen

note: type: Plain text
en: To choose a signal, just click on it. In this case, we want channel 1 to display the signal 'X-vel'. Click on the Signals tab then click on 'X-vel' and the dialog closes and the channel is now selected.
de: Um ein Signal auszuwählen, klicken Sie es einfach an. In diesem Fall möchten wir, dass auf Kanal 1 das Signal "X-vel" angezeigt wird. Klicken Sie auf die Registerkarte "Signale" und dann auf "X-vel". Das Dialogfeld schließt sich und der Kanal ist nun ausgewählt.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Select Signal
de: Signal auswählen

note: type: Plain text
en: The channel 1 button is pressed in, and channel number 1 and the name 'X-vel' appear below the row of buttons. That display always indicates the selected channel - you can have many channels on the screen, but the selected one is highlighted, and the various controls like vertical position and scale always work on the selected one.
de: Die Taste für Kanal 1 wird gedrückt, und die Kanalnummer 1 und die Bezeichnung "X-vel" erscheinen unter der Tastenreihe. Diese Anzeige zeigt immer den ausgewählten Kanal an - Sie können mehrere Kanäle auf dem Bildschirm haben, aber der ausgewählte Kanal ist hervorgehoben, und die verschiedenen Steuerelemente wie vertikale Position und Skalierung funktionieren immer für den ausgewählten Kanal.

note: type: Title ===
en: Capturing our first waveforms
de: Erfassen unserer ersten Wellenformen

note: type: Plain text
en: Now that we have several probes hooked to the HAL, it's time to capture some waveforms. To start the scope, click the 'Normal' button in the 'Run Mode' section of the screen (upper right). Since we have a 4000 sample record length, and are acquiring 1000 samples per second, it will take halscope about 2 seconds to fill half of its buffer.  During that time a progress bar just above the main screen will show the buffer filling. Once the buffer is half full, the scope waits for a trigger. Since we haven't configured one yet, it will wait forever. To manually trigger it, click the 'Force' button in the 'Trigger' section at the top right. You should see the remainder of the buffer fill, then the screen will display the captured waveforms. The result will look something like the following figure.
de: Nachdem wir nun mehrere Sonden an den HAL angeschlossen haben, ist es an der Zeit, einige Wellenformen zu erfassen. Zum Starten des Oszilloskops klicken Sie auf die Schaltfläche "Normal" im Abschnitt "Run Mode" des Bildschirms (oben rechts). Da wir eine Aufzeichnungslänge von 4000 Samples haben und 1000 Samples pro Sekunde erfassen, wird halscope etwa 2 Sekunden brauchen, um die Hälfte seines Puffers zu füllen.  Während dieser Zeit zeigt ein Fortschrittsbalken direkt über dem Hauptbildschirm an, dass der Puffer gefüllt ist. Sobald der Puffer halb voll ist, wartet das Scope auf einen Trigger. Da wir noch keinen konfiguriert haben, wird es ewig warten. Um es manuell auszulösen, klicken Sie auf die Schaltfläche "Erzwingen" im Abschnitt "Auslöser" oben rechts. Sie sollten sehen, wie sich der Rest des Puffers füllt, und dann werden die erfassten Wellenformen auf dem Bildschirm angezeigt. Das Ergebnis sieht ungefähr so aus wie in der folgenden Abbildung.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Captured Waveforms
de: Erfasste Wellenformen

note: type: Title ===
en: Vertical Adjustments
de: Vertikale Anpassungen

note: type: Plain text
en: The traces are rather hard to distinguish since all four are on top of each other. To fix this, we use the 'Vertical' controls in the box to the right of the screen. These controls act on the currently selected channel. When adjusting the gain, notice that it covers a huge range - unlike a real scope, this one can display signals ranging from very tiny (pico-units) to very large (Tera-units). The position control moves the displayed trace up and down over the height of the screen only. For larger adjustments the offset button should be used.
de: Die Spuren sind nur schwer zu unterscheiden, da alle vier übereinander liegen. Um dies zu beheben, verwenden wir die "Vertikal"-Steuerungen in der Box auf der rechten Seite des Bildschirms. Diese Regler wirken sich auf den aktuell ausgewählten Kanal aus. Bei der Einstellung der Verstärkung ist zu beachten, dass sie einen riesigen Bereich abdeckt - im Gegensatz zu einem echten Oszilloskop kann dieses Gerät Signale von sehr kleinen (Pico-Einheiten) bis zu sehr großen (Tera-Einheiten) anzeigen. Mit dem Positionsregler wird die angezeigte Kurve nur über die Höhe des Bildschirms nach oben und unten bewegt. Für größere Einstellungen sollte die Offset-Taste verwendet werden.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Vertical Adjustment
de: Vertikale Einstellung

note: type: Plain text
en: The large _Selected Channel_ button at the bottom indicates that channel 1 is currently selected channel and that it matches the _X-vel_ signal.  Try clicking on the other channels to put their traces in evidence and to be able to move them with the _Pos_ cursor.
de: Die große Schaltfläche _Ausgewählter Kanal_ am unteren Rand zeigt an, dass Kanal 1 der aktuell ausgewählte Kanal ist und dass er mit dem _X-vel_-Signal übereinstimmt.  Versuchen Sie, auf die anderen Kanäle zu klicken, um ihre Spuren sichtbar zu machen und sie mit dem _Pos_-Cursor verschieben zu können.

note: type: Title ===
en: Triggering
de: Triggering (automatisches Auslösen)

note: type: Plain text
en: Using the 'Force' button is a rather unsatisfying way to trigger the scope. To set up real triggering, click on the 'Source' button at the bottom right. It will pop up the 'Trigger Source' dialog, which is simply a list of all the probes that are currently connected. Select a probe to use for triggering by clicking on it. For this example we will use channel 3, the triangle wave as shown in the following figure.
de: Die Verwendung des Button "Erzwingen" ist eine eher unbefriedigende Art, das Oszilloskop auszulösen. Um eine echte Triggerung einzurichten, klicken Sie auf die Schaltfläche "Quelle" unten rechts. Daraufhin wird das Dialogfeld "Trigger Source" (Triggerquelle) angezeigt, das einfach eine Liste aller derzeit angeschlossenen Sonden enthält. Wählen Sie eine Sonde für die Triggerung aus, indem Sie auf sie klicken. In diesem Beispiel verwenden wir Kanal 3, die Dreieckswelle, wie in der folgenden Abbildung dargestellt.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Trigger Source Dialog
de: Dialogfeld 'Triggerquelle' (engl. trigger source)

note: type: Plain text
en: After setting the trigger source, you can adjust the trigger level and trigger position using the sliders in the 'Trigger' box along the right edge. The level can be adjusted from the top to the bottom of the screen, and is displayed below the sliders. The position is the location of the trigger point within the overall record. With the slider all the way down, the trigger point is at the end of the record, and halscope displays what happened before the trigger point. When the slider is all the way up, the trigger point is at the beginning of the record, displaying what happened after it was triggered. The trigger point is visible as a vertical line in the progress box above the screen. The trigger polarity can be changed by clicking the button just below the trigger level display. It will then become _descendant_.  Note that changing the trigger position stops the scope once the position has been adjusted, you relaunch the scope by clicking on the _Normal_ button of _Run mode_ the group.
de: Nachdem Sie die Triggerquelle eingestellt haben, können Sie den Triggerpegel und die Triggerposition mit den Schiebereglern im Feld "Trigger" am rechten Rand einstellen. Der Pegel kann vom oberen bis zum unteren Rand des Bildschirms eingestellt werden und wird unter den Schiebereglern angezeigt. Die Position ist die Lage des Auslösepunkts innerhalb der gesamten Aufzeichnung. Ist der Schieberegler ganz unten, befindet sich der Auslösepunkt am Ende der Aufzeichnung, und halscope zeigt an, was vor dem Auslösepunkt passiert ist. Wenn der Schieberegler ganz nach oben geschoben ist, befindet sich der Auslösepunkt am Anfang des Datensatzes und es wird angezeigt, was nach dem Auslösen passiert ist. Der Triggerpunkt ist als vertikale Linie in der Fortschrittsanzeige über dem Bildschirm sichtbar. Die Triggerpolarität kann durch Klicken auf die Schaltfläche direkt unter der Triggerpegelanzeige geändert werden. Sie wird dann _absteigend_.  Beachten Sie, dass die Änderung der Triggerposition das Oszilloskop anhält, sobald die Position angepasst wurde, starten Sie das Oszilloskop erneut, indem Sie auf die Schaltfläche _Normal_ des _Run-Modus_ der Gruppe klicken.

note: type: Plain text
en: Now that we have adjusted the vertical controls and triggering, the scope display looks something like the following figure.
de: Nachdem wir nun die vertikalen Regler und die Triggerung eingestellt haben, sieht die Anzeige des Oszilloskops etwa wie in der folgenden Abbildung aus.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Waveforms with Triggering
de: Wellenformen mit Triggerung

note: type: Title ===
en: Horizontal Adjustments
de: Horizontale Anpassungen

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Sample Rate Dialog
de: Dialogfeld für Abtastrate

note: type: Title ===
en: More Channels
de: Weitere Kanäle

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Step Pulses
de: Schrittimpulse

note: type: Title ===
en: More samples
de: Weitere Samples

note: type: Plain text
en: If you want to record more samples at once, restart realtime and load halscope with a numeric argument which indicates the number of samples you want to capture.
de: Wenn Sie mehr Samples auf einmal aufnehmen wollen, starten Sie realtime neu und laden Sie halscope mit einem numerischen Argument, das die Anzahl der Samples angibt, die Sie aufnehmen wollen.

note: type: Plain text
en: If the 'scope_rt' component was not already loaded, halscope will load it and request 80000 total samples, so that when sampling 4 channels at a time there will be 20000 samples per channel.  (If 'scope_rt' was already loaded, the numeric argument to halscope will have no effect).
de: Wenn die Komponente 'scope_rt' noch nicht geladen war, lädt halscope sie und fordert 80000 Gesamtsamples an, so dass bei der Abtastung von 4 Kanälen gleichzeitig 20000 Samples pro Kanal zur Verfügung stehen.  (Wenn 'scope_rt' bereits geladen war, hat das numerische Argument für halscope keine Auswirkungen).

note: type: Plain text
en: LinuxCNC 2.5 supports TWOPASS processing of LinuxCNC configuration files that can help in the modularization and readability of LinuxCNC files.  (LinuxCNC files are specified in an LinuxCNC INI file in the LinuxCNC stanza as [LinuxCNC]HALFILE=filename).
de: LinuxCNC 2.5 unterstützt TWOPASS Verarbeitung von LinuxCNC Konfigurationsdateien, die in der Modularisierung und Lesbarkeit von LinuxCNC-Dateien helfen können.  (LinuxCNC-Dateien sind in einem LinuxCNC INI-Datei in der LinuxCNC Stanza als [LinuxCNC]HALFILE=filename angegeben).

note: type: Plain text
en: Normally, a set of one or more LinuxCNC configuration files must use a single, unique loadrt line to load a kernel module that may handle multiple instances of a component.  For example, if you use a two input AND gate component (and2) in three different places in your setup, you would need to have a single line somewhere to specify:
de: Normalerweise muss ein Satz von einer oder mehreren LinuxCNC-Konfigurationsdateien eine einzige, eindeutige loadrt-Zeile verwenden, um ein Kernel-Modul zu laden, das mehrere Instanzen einer Komponente behandeln kann.  Zum Beispiel, wenn Sie eine zwei Eingang UND-Gatter-Komponente (and2) in drei verschiedenen Orten in Ihrem Setup verwenden, müssten Sie eine einzige Zeile irgendwo zu spezifizieren:

note: type: Plain text
en: resulting in components and2.0, and2.1, and2.2.
de: was zu den Komponenten and2.0, and2.1 und 2.2 führt.

note: type: Plain text
en: Configurations are more readable if you specify with the names=option for components where it is supported, e.g.,:
de: Konfigurationen sind besser lesbar, wenn Sie die Option names= für Komponenten angeben, bei denen sie unterstützt wird, z. B.:

note: type: Plain text
en: resulting in components aa,ab,ac.
de: was zu den Komponenten aa,ab,ac führt.

note: type: Plain text
en: It can be a maintenance problem to keep track of the components and their names since when you add (or remove) a component, you must find and update the single loadrt directive applicable to the component.
de: Es kann ein Wartungsproblem sein, den Überblick über die Komponenten und ihre Namen zu behalten, denn wenn Sie eine Komponente hinzufügen (oder entfernen), müssen Sie die einzelne loadrt-Richtlinie für die Komponente finden und aktualisieren.

note: type: Plain text
en: TWOPASS processing is enabled by including an INI file parameter in the [HAL] section:
de: Die TWOPASS-Verarbeitung wird durch Einfügen eines INI-Datei-Parameters im Abschnitt [HAL] aktiviert:

note: type: Plain text
en: Where "anystring" can be any non-null string.  With this setting, you can have multiple specifications like:
de: Dabei kann "anystring" eine beliebige Zeichenfolge sein, die nicht null ist.  Mit dieser Einstellung können Sie mehrere Spezifikationen haben wie:

note: type: Plain text
en: These commands can appear in different HAL files. The HAL files are processed in the order of their appearance in the INI file, in multiple HALFILE assignments.
de: Diese Befehle können in verschiedenen HAL-Dateien vorkommen. Die HAL-Dateien werden in der Reihenfolge ihres Auftretens in der INI-Datei abgearbeitet, bei Mehrfachzuweisungen von HALFILE.

note: type: Plain text
en: The TWOPASS option can be specified with options to add output for debugging (verbose) and to prevent deletion of temporary files (nodelete).  The options are separated with commas.
de: Die Option TWOPASS kann mit Optionen angegeben werden, um Ausgaben für die Fehlersuche hinzuzufügen (verbose) und um das Löschen temporärer Dateien zu verhindern (nodelete).  Die Optionen werden durch Kommata getrennt.

note: type: Plain text
en: With TWOPASS processing, all [HAL]HALFILES are first read and multiple appearances of loadrt directives for each module are accumulated.  User components (loadusr) are loaded in order but no other LinuxCNC commands are executed in the initial pass.
de: Bei der TWOPASS-Verarbeitung werden zunächst alle [HAL]HALFILES gelesen und mehrfache Auftritte von loadrt-Anweisungen für jedes Modul kumuliert.  Die Benutzerkomponenten (loadusr) werden der Reihe nach geladen, aber keine anderen LinuxCNC-Befehle werden im ersten Durchgang ausgeführt.

note: type: Plain text
en: User components should use the wait (-W) option to ensure the component is ready before other commands are executed.
de: Benutzerkomponenten sollten die Option wait (-W) verwenden, um sicherzustellen, dass die Komponente bereit ist, bevor andere Befehle ausgeführt werden.

note: type: Plain text
en: After the initial pass, the realtime modules are loaded (loadrt)  automatically with a number equal to the total number when using the 'count=' option or with all of the individual names specified when using the 'names=' option.
de: Nach dem ersten Durchlauf werden die Echtzeitmodule automatisch geladen (loadrt), und zwar mit einer Anzahl, die der Gesamtzahl entspricht, wenn die Option 'count=' verwendet wird, oder mit allen angegebenen Einzelnamen, wenn die Option 'names=' verwendet wird.

note: type: Plain text
en: A second pass is then made to execute all of the other LinuxCNC instructions specified in the HALFILES.  The addf commands that associate a component's functions with thread execution are executed in the order of appearance with other commands during this second pass.
de: In einem zweiten Durchlauf werden dann alle anderen in den HALFILES angegebenen LinuxCNC-Befehle ausgeführt.  Die addf-Befehle verknüpfen die Funktionen einer Komponente mit der Thread-Ausführung und werden in diesem zweiten Durchgang in der Reihenfolge ihres Erscheinens zusammen mit anderen Befehlen ausgeführt.

note: type: Plain text
en: While you can use either the 'count=' or 'names=' options, they are mutually exclusive -- only one type can be specified for a given module.
de: Die Optionen "count=" und "names=" können zwar verwendet werden, schließen sich aber gegenseitig aus - für ein bestimmtes Modul kann nur ein Typ angegeben werden.

note: type: Plain text
en: TWOPASS processing is most effective when using the 'names=' option.  This option allows you to provide unique names that are mnemonic or otherwise relevant to the configuration.  For example, if you use a derivative component to estimate the velocities and accelerations on each (x,y,z) coordinate, using the 'count=' method will give arcane component names like ddt.0, ddt.1, ddt.2, etc.
de: Die TWOPASS-Verarbeitung ist am effektivsten, wenn die Option "names=" verwendet wird.  Mit dieser Option können Sie eindeutige Namen vergeben, die als Gedächtnisstütze dienen oder anderweitig für die Konfiguration relevant sind.  Wenn Sie z. B. eine Ableitungskomponente zur Schätzung der Geschwindigkeiten und Beschleunigungen an jeder (x,y,z)-Koordinate verwenden, führt die Verwendung der 'count='-Methode zu obskuren Komponentennamen wie ddt.0, ddt.1, ddt.2, usw.

note: type: Plain text
en: Alternatively, using the 'names=' option like:
de: Alternativ können Sie auch die Option 'names=' verwenden:

note: type: Plain text
en: results in components sensibly named xvel, yvel, zvel, xaccel, yaccel, zaccel.
de: führt zu Komponenten mit den sinnvollen Namen xvel, yvel, zvel, xaccel, yaccel, zaccel.

note: type: Plain text
en: Many comps supplied with the distribution are created with the halcompile utility and support the 'names=' option. These include the common logic components that are the glue of many LinuxCNC configurations.
de: Viele Comps, die mit der Distribution geliefert werden, wurden mit dem halcompile Dienstprogramm erstellt und unterstützen die Option 'names='. Dazu gehören die gemeinsamen Logik-Komponenten, die der Klebstoff von vielen LinuxCNC-Konfigurationen sind.

note: type: Plain text
en: User-created comps that use the halcompile utility automatically support the names= option as well.  In addition to comps generated with the halcompile utility, numerous other comps support the names=option.  Comps that support names= option include: at_pid, encoder, encoder_ratio, pid, siggen, and sim_encoder.
de: Vom Benutzer erstellte Kompilate, die das Dienstprogramm halcompile verwenden, unterstützen automatisch auch die Option names=.  Neben den mit dem Dienstprogramm halcompile erstellten Comps unterstützen auch zahlreiche andere Comps die Option names=.  Zu den Comps, welche die Option names= unterstützen, gehören: at_pid, encoder, encoder_ratio, pid, siggen und sim_encoder.

note: type: Plain text
en: Two-step processing occurs before the GUI is loaded. When using a [HAL]POSTGUI_HALFILE, it is convenient to place all the [HAL]POSTGUI_HALFILE loadrt declarations for the necessary components in a preloaded HAL file.
de: Die Verarbeitung erfolgt in zwei Schritten, bevor das GUI geladen wird. Bei Verwendung einer [HAL]POSTGUI_HALFILE ist es zweckmäßig, alle [HAL]POSTGUI_HALFILE-Loadrt-Deklarationen für die erforderlichen Komponenten in einer vorgeladenen HAL-Datei unterzubringen.

note: type: Block title
en: Example of a HAL section when using a POSTGUI_HALFILE
de: Beispiel für einen HAL-Abschnitt bei Verwendung einer POSTGUI_HALFILE

note: type: delimited block -
en: TWOPASS = on
    HALFILE = core_sim.hal
    HALFILE = sim_spindle_encoder.hal
    HALFILE = axis_manualtoolchange.hal
    HALFILE = simulated_home.hal
    HALFILE = load_for_postgui.hal <- loadrt lines for components in postgui.hal
de: TWOPASS = on
    HALFILE = core_sim.hal
    HALFILE = sim_spindle_encoder.hal
    HALFILE = axis_manualtoolchange.hal
    HALFILE = simulated_home.hal
    HALFILE = load_for_postgui.hal <- loadrt-Zeilen für Komponenten in postgui.hal

note: type: Title ==
en: Post GUI
de: Post GUI (lat. für nach dem GUI auszuführen)

note: type: Plain text
en: Some GUIs support HAL files that are processed after the GUI is started in order to connect LinuxCNC pins that are created by the GUI.  When using a postgui HAL file with TWOPASS processing, include all loadrt items for components added by postgui HAL files in a separate HAL file that is processed before the GUI.  The addf commands can also be included in the file.
de: Einige GUIs unterstützen HAL-Dateien, die verarbeitet werden, nachdem die GUI gestartet wurde, um LinuxCNC-Pins zu verbinden, die von der GUI erzeugt wurden.  Wenn Sie eine Postgui-HAL-Datei mit TWOPASS-Verarbeitung verwenden, fügen Sie alle loadrt-Elemente für Komponenten, die durch Postgui-HAL-Dateien hinzugefügt wurden, in ein separates HAL-Dateien ein, das vor der GUI verarbeitet wird.  Die addf-Befehle können ebenfalls in diese Datei aufgenommen werden.

note: type: Title ==
en: Excluding .hal files
de: Ausschließen von HAL-Dateien

note: type: Plain text
en: TWOPASS processing converts '.hal' files to equivalent '.tcl' files and uses haltcl to find loadrt and addf commands in order to accumulate and consolidate their usage.  Loadrt parameters that conform to the simple 'names=' (or 'count=') parameters accepted by the HAL Component Generator ('halcompile') are expected.  More complex parameter items included in specialized LinuxCNC components may not be handled properly.
de: Die TWOPASS-Verarbeitung konvertiert '.hal'-Dateien in äquivalente '.tcl'-Dateien und verwendet haltcl, um loadrt- und addf-Befehle zu finden, um ihre Nutzung zu akkumulieren und zu konsolidieren.  Loadrt-Parameter, die den einfachen Parametern 'names=' (oder 'count=') entsprechen, wie sie der HAL Component Generator ('halcompile') akzeptiert, werden erwartet.  Komplexere Parameterelemente, die in spezialisierten LinuxCNC-Komponenten enthalten sind, werden möglicherweise nicht ordnungsgemäß behandelt.

note: type: Plain text
en: A '.hal' file may be excluded from TWOPASS processing by including a magic
    comment line anywhere in the '.hal' file.   The magic comment line must begin
    with the string: '#NOTWOPASS'.  Files specified with this magic comment are
    sourced by halcmd using the '-k' (keep going if failure) and '-v' (verbose)
    options.
de: Eine HAL-Datei kann von der TWOPASS-Verarbeitung ausgeschlossen werden, indem man eine magische
    Kommentarzeile an beliebiger Stelle in die HAL-Datei einfügt.   Die magische Kommentarzeile muss beginnen
    mit der Zeichenfolge '#NOTWOPASS' beginnen.  Die mit diesem magischen Kommentar bedachten Dateien werden
    von halcmd unter Verwendung der Optionen '-k' (bei Fehlschlag weitermachen) und '-v' (verbose)
    gelesen.

note: type: Plain text
en: This exclusion provision can be used to isolate problems or for loading any special LinuxCNC component that does not require or benefit from TWOPASS processing.
de: Diese Ausschlussbestimmung kann verwendet werden, um Probleme zu isolieren oder um spezielle LinuxCNC-Komponenten zu laden, die keine TWOPASS-Verarbeitung benötigen oder davon profitieren.

note: type: Plain text
en: Ordinarily, the loadrt ordering of realtime components is not critical, but loadrt ordering for special components can be enforced by placing the such loadrt directives in an excluded file.
de: Normalerweise ist die loadrt-Reihenfolge von Echtzeit-Komponenten nicht kritisch, aber die loadrt-Reihenfolge für spezielle Komponenten kann erzwungen werden, indem man die entsprechenden loadrt-Direktiven in einer ausgeschlossenen Datei platziert.

note: type: Plain text
en: While the order of loadrt directives is not usually critical, ordering of addf directives is often very important for proper operation of servo loop components.
de: Während die Reihenfolge der loadrt-Direktiven in der Regel unkritisch ist, so ist die Reihenfolge der addf-Direktiven oft sehr wichtig für den ordnungsgemäßen Betrieb von Servo-Regelkreis-Komponenten.

note: type: Block title
en: Excluded '.hal' file example
de: Beispiel einer ausgeschlossenen HAL-Datei

note: type: delimited block -
en: $ cat twopass_excluded.hal
    # The following magic comment causes this file to
    # be excluded from twopass processing:
    # NOTWOPASS
de: $ cat twopass_excluded.hal
    # Der folgende magische Kommentar bewirkt, dass diese Datei
    # von der twopass-Verarbeitung ausgeschlossen wird:
    # NOTWOPASS

note: type: delimited block -
en: # debugging component with complex options:
    loadrt mycomponent parm1="abc def" parm2=ghi
    show pin mycomponent
de: # Komponente mit komplexen Optionen debuggen:
    loadrt mycomponent parm1="abc def" parm2=ghi
    show pin mycomponent

note: type: delimited block -
en: # ordering special components
    loadrt component_1
    loadrt component_2
de: # Ordnen spezieller Komponenten
    loadrt Bauteil_1
    loadrt Bauteil_2

note: type: Plain text
en: Case and whitespace within the magic comment are ignored.  The loading of components that use 'names=' or 'count=' parameters (typically built by halcompile) should not be used in excluded files as that would eliminate the benefits of TWOPASS processing.  The LinuxCNC commands that create signals (net) and commands that establish execution order (addf) should not be placed in excluded files.  This is especially true for addf commands since their ordering may be important.
de: Groß- und Kleinschreibung sowie Leerzeichen innerhalb des magischen Kommentars werden ignoriert.  Das Laden von Komponenten, die 'names=' oder 'count=' Parameter verwenden (typischerweise von halcompile erstellt) sollte nicht in ausgeschlossenen Dateien verwendet werden, da dies die Vorteile der TWOPASS-Verarbeitung eliminieren würde.  Die LinuxCNC-Befehle, die Signale erzeugen (net) und Befehle, welche die Ausführungsreihenfolge festlegen (addf), sollten nicht in ausgeschlossenen Dateien platziert werden.  Dies gilt insbesondere für addf-Befehle, da ihre Reihenfolge wichtig sein kann.

note: type: Plain text
en: Examples of TWOPASS usage for a simulator are included in the directories:
de: Beispiele für die Verwendung von TWOPASS für einen Simulator sind in den Verzeichnissen enthalten:

note: type: Title =
en: Latency Testing(((Latency Testing)))
de: Latenzprüfung(((Latenzprüfung)))

note: type: Plain text
en: Latency is far more important than CPU speed.  A lowly Pentium II that responds to interrupts within 10 microseconds each and every time can give better results than the latest and fastest P4 Hyperthreading beast.
de: Die Latenzzeit ist viel wichtiger als die CPU-Geschwindigkeit.  Ein bescheidener Pentium II, der auf Unterbrechungen jedes Mal innerhalb von 10 Mikrosekunden reagiert, kann bessere Ergebnisse liefern als das neueste und schnellste P4-Hyperthreading-Biest.

note: type: Plain text
en: Generating step pulses in software has one very big advantage - it's free.  Just about every PC has a parallel port that is capable of outputting step pulses that are generated by the software.  However, software step pulses also have some disadvantages:
de: Die Erzeugung von Schrittimpulsen in der Software hat einen sehr großen Vorteil - sie ist kostenlos.  So gut wie jeder PC verfügt über eine parallele Schnittstelle, die in der Lage ist, die von der Software erzeugten Schrittimpulse auszugeben.  Die Software-Schrittimpulse haben jedoch auch einige Nachteile:

note: type: Plain text
en: limited maximum step rate
de: begrenzte maximale Schrittfrequenz

note: type: Plain text
en: jitter in the generated pulses
de: Jitter (variierende zeitliche Abstände) in den erzeugten Impulsen

note: type: Plain text
en: loads the CPU
de: belastet die CPU

note: type: Plain text
en: Do not run LinuxCNC or Stepconf while the latency test is running.
de: Führen Sie LinuxCNC oder Stepconf nicht aus, während der Latenztest läuft.

note: type: Plain text
en: This will start the latency test with a base-thread period of 25uS and a servo-thread period of 1mS. The period times may be specified on the command line:
de: Damit wird der Latenztest mit einer Basis-Thread-Periode von 25&thinsp;µs und einer Servo-Thread-Periode von 1&thinsp;ms gestartet. Die Periodenzeiten können in der Befehlszeile angegeben werden:

note: type: Plain text
en: This will start the latency test with a base-thread period of 50uS and a servo-thread period of 1mS.
de: Damit wird der Latenztest mit einer Basis-Thread-Periode von 50&thinsp;µs und einer Servo-Thread-Periode von 1&thinsp;ms gestartet.

note: type: Plain text
en: For available options, on the command line enter:
de: Die verfügbaren Optionen können Sie in der Befehlszeile eingeben:

note: type: Positional ($1) AttributeList argument for macro 'image'
en: HAL Latency Test
de: HAL-Latenz-Test

note: type: Plain text
en: While the test is running, you should 'abuse' the computer.  Move windows around on the screen. Surf the web. Copy some large files around on the disk. Play some music.  Run an OpenGL program such as glxgears.  The idea is to put the PC through its paces while the latency test checks to see what the worst case numbers are.
de: Während der Test läuft, sollten Sie den Computer beschäftigen:  Bewegen Sie die Fenster auf dem Bildschirm. Surfen Sie im Internet. Kopieren Sie einige große Dateien auf der Festplatte. Spielen Sie etwas Musik ab.  Führen Sie ein OpenGL-Programm wie z. B. glxgears aus.  Die Idee ist, den PC auf Herz und Nieren zu prüfen, während der Latenztest den schlimmsten Fall ermittelt.

note: type: Plain text
en: The important number for software stepping is the 'max jitter' of the base thread.  In the example above, that is 6693 nanoseconds, or 6.693 microseconds.  Record this number, and enter it in Stepconf when it is requested.
de: Die wichtige Zahl für das Software-Stepping ist der "maximale Jitter" des Basis-Threads.  Im obigen Beispiel sind das 6693 Nanosekunden, oder 6,693 Mikrosekunden.  Notieren Sie diese Zahl und geben Sie sie in Stepconf ein, wenn sie angefordert wird.

note: type: Plain text
en: In the example above, latency-test only ran for a few seconds.  You should run the test for at least several minutes; sometimes the worst case latency doesn't happen very often, or only happens when you do some particular action. For instance, one Intel motherboard worked pretty well most of the time, but every 64 seconds it had a very bad 300 us latency. Fortunately that was fixable, see http://wiki.linuxcnc.org/cgi-bin/wiki.pl?FixingSMIIssues
de: Im obigen Beispiel lief der Latenztest nur einige Sekunden lang.  Sie sollten den Test mindestens mehrere Minuten lang durchführen; manchmal tritt die schlimmste Latenz nicht sehr oft auf oder nur, wenn Sie eine bestimmte Aktion durchführen. Eine Intel-Hauptplatine funktionierte beispielsweise die meiste Zeit recht gut, aber alle 64 Sekunden hatte sie eine sehr schlechte 300&thinsp;µs-Latenz. Glücklicherweise war das behebbar, siehe http://wiki.linuxcnc.org/cgi-bin/wiki.pl?FixingSMIIssues

note: type: Plain text
en: So, what do the results mean? If your Max Jitter number is less than about 15-20 microseconds (15000-20000 nanoseconds), the computer should give very nice results with software stepping. If the max latency is more like 30-50 microseconds, you can still get good results, but your maximum step rate might be a little disappointing, especially if you use microstepping or have very fine pitch leadscrews. If the numbers are 100 us or more (100,000 nanoseconds), then the PC is not a good candidate for software stepping. Numbers over 1 millisecond (1,000,000 nanoseconds) mean the PC is not a good candidate for LinuxCNC, regardless of whether you use software stepping or not.
de: Was bedeuten also die Ergebnisse? Wenn Ihre Max-Jitter-Zahl weniger als 15-20 Mikrosekunden (15000-20000 Nanosekunden) beträgt, sollte der Computer mit Software-Stepping sehr gute Ergebnisse liefern. Wenn die maximale Latenzzeit eher bei 30-50 Mikrosekunden liegt, können Sie immer noch gute Ergebnisse erzielen, aber Ihre maximale Schrittrate könnte etwas enttäuschend sein, insbesondere wenn Sie Mikroschrittverfahren verwenden oder sehr feine Spindelsteigungen haben. Wenn die Zahlen 100 us oder mehr (100.000 Nanosekunden) betragen, ist der PC kein guter Kandidat für Software-Stepping. Zahlen über 1 Millisekunde (1.000.000 Nanosekunden) bedeuten, dass der PC ist kein guter Kandidat für LinuxCNC, unabhängig davon, ob Sie Software-Stepping verwenden oder nicht.

note: type: Plain text
en: If you get high numbers, there may be ways to improve them. Another PC had very bad latency (several milliseconds) when using the onboard video. But a $5 used video card solved the problem.  LinuxCNC does not require bleeding edge hardware.
de: Wenn Sie hohe Zahlen erhalten, gibt es möglicherweise Möglichkeiten, sie zu verbessern. Ein anderer PC hatte eine sehr schlechte Latenz (mehrere Millisekunden) bei der Verwendung des Onboard-Videos. Aber eine $ 5 gebrauchte Grafikkarte löste das Problem.  LinuxCNC benötigt keine hochmoderne Hardware.

note: type: Plain text
en: For more information on stepper tuning see the <<cha:stepper-tuning,Stepper Tuning>> Chapter.
de: Weitere Informationen zum Stepper-Tuning finden Sie im Kapitel <<cha:stepper-tuning,Stepper Tuning>>.

note: type: Plain text
en: *Additional command line tools are available for examining latency
    when LinuxCNC is not running.*
de: *Zusätzliche Kommandozeilen-Tools sind für die Untersuchung der Latenz verfügbar
    wenn LinuxCNC nicht läuft.*

note: type: Plain text
en: latency-plot makes a strip chart recording for a base and a servo thread.  It may be useful to see spikes in latency when other applications are started or used. Usage:
de: latency-plot erstellt ein Streifendiagramm für einen Basis- und einen Servo-Thread.  Es kann nützlich sein, um Spitzen in der Latenz zu sehen, wenn andere Anwendungen gestartet oder verwendet werden. Verwendung:

note: type: Block title
en: `latency-plot` Window
de: `latency-plot`-Fenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: latency-plot Window
de: Latenz-Plot Fenster

note: type: Title ===
en: Latency Histogram
de: Latenz-Histogramm

note: type: Plain text
en: latency-histogram displays a histogram of latency (jitter) for a base and servo thread.
de: latency-histogram zeigt ein Histogramm der Latenz (Jitter) für einen Basis- und einen Servo-Thread an.

note: type: delimited block -
en: Options:
      --base      nS   (base  thread interval, default:   25000, min:  5000)
      --servo     nS   (servo thread interval, default: 1000000, min: 25000)
      --bbinsize  nS   (base  bin size,  default: 100
      --sbinsize  nS   (servo bin size, default: 100
      --bbins     n    (base  bins, default: 200
      --sbins     n    (servo bins, default: 200
      --logscale  0|1  (y axis log scale, default: 1)
      --text      note (additional note, default: "" )
      --show           (show count of undisplayed bins)
      --nobase         (servo thread only)
      --verbose        (progress and debug)
      --nox            (no gui, display elapsed,min,max,sdev for each thread)
de: Optionen:
      --base ns (Basisgewindeintervall, Voreinstellung: 25000, min: 5000)
      --servo ns (Servo-Thread-Intervall, Voreinstellung: 1000000, Mindestwert: 25000)
      --bbinsize ns (Basis-Bin-Größe, Voreinstellung: 100
      --sbinsize ns (Servo-Bin-Größe, Voreinstellung: 100)
      --bbins n (Basis-Bins, Voreinstellung: 200
      --sbins n (Servo-Bins, Voreinstellung: 200
      --logscale 0|1 (logarithmische Skala der y-Achse, Voreinstellung: 1)
      --text note (zusätzlicher Hinweis, Voreinstellung: "" )
      --show (zeigt die Anzahl der nicht angezeigten Bins)
      --nobase (nur Servo-Thread)
      --verbose (Fortschritt und Fehlersuche)
      --nox (keine Benutzeroberfläche, Anzeige von elapsed,min,max,sdev für jeden Thread)

note: type: delimited block -
en: Notes:
      Linuxcnc and Hal should not be running, stop with halrun -U.
      Large number of bins and/or small binsizes will slow updates.
      For single thread, specify --nobase (and options for servo thread).
      Measured latencies outside of the +/- bin range are reported
      with special end bars.  Use --show to show count for
      the off-chart [pos|neg] bin
de: Notes:
      LinuxCNC and HAL should not be running, stop with halrun -U.
      Large number of bins and/or small binsizes will slow updates.
      For single thread, specify --nobase (and options for servo thread).
      Measured latencies outside of the +/- bin range are reported
      with special end bars.  Use --show to show count for
      the off-chart [pos|neg] bin

note: type: Block title
en: `latency-histogram` Window
de: 'Latenz-Histogramm'-Fenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: latency-histogram Window
de: Latenz-Histogramm-Fenster

note: type: Title =
en: Stepper Information
de: Stepper-Informationen

note: type: Title ==
en: Stepper Motor Operation
de: Schrittmotorbetrieb

note: type: Plain text
en: Stepper motors operate by sequentially energising and de-energising several coils surrounding the rotor in such a way that the shaft is magnetically forced to rotate around in discrete steps. Steps of 0.9 - 1.8 degrees are quite common, giving 400 - 200 steps per full revolution of the shaft.
de: Schrittmotoren arbeiten durch sequentielles Ein- und Ausschalten mehrerer Spulen, die den Rotor umgeben, so dass die Welle magnetisch gezwungen wird, sich in diskreten Schritten zu drehen. Schritte von 0,9 bis 1,8 Grad sind durchaus üblich, was 400 bis 200 Schritte pro voller Umdrehung der Welle ergibt.

note: type: Plain text
en: As in real life, nothing can change from one state to another with absolutely no time delay. In the case of the stepper motor, the current passing through each coil, and thus the magnetic field that pulls the rotor around to each step of rotation takes some time to take effect. This is due to the coil having inductance (expressed in Henries, abbreviated to the letter H) which has a natural tendency to resist the flow of a rapidly changing current. More coil inductance results in a slower rate of current change and thus a slower rate of magnetic field expansion and contraction.
de: Wie im wirklichen Leben kann nichts ohne Zeitverzögerung von einem Zustand in einen anderen übergehen. Im Fall des Schrittmotors braucht der Strom, der durch die einzelnen Spulen fließt, und damit das Magnetfeld, das den Rotor zu jedem Drehschritt antreibt, eine gewisse Zeit, um wirksam zu werden. Das liegt daran, dass die Spule eine Induktivität hat (ausgedrückt in Henries, abgekürzt mit dem Buchstaben H), die eine natürliche Tendenz hat, dem Fluss eines sich schnell ändernden Stroms zu widerstehen. Eine größere Spuleninduktivität führt zu einer langsameren Stromänderung und somit zu einer langsameren Ausdehnung und Kontraktion des Magnetfelds.

note: type: Plain text
en: The maximum torque that the stepper motor can achieve is when the motor is stationary with one winding energised.  This figure may be quoted on a stepper motor datasheet as the 'holding torque'. As the rate at which each coil is energised and de-energised increases to induce rotation in the shaft, the time that each coil can exert its full magnetic attraction on the rotor reduces, thereby reducing the overall torque. This relationship between speed and torque is largely inversely proportional.
de: Das maximale Drehmoment, das ein Schrittmotor erreichen kann, liegt vor, wenn der Motor mit einer erregten Wicklung stillsteht.  Dieser Wert kann auf dem Datenblatt eines Schrittmotors als "Haltemoment" angegeben sein. Je schneller jede Spule ein- und ausgeschaltet wird, um die Welle in Drehung zu versetzen, desto kürzer ist die Zeit, in der jede Spule ihre volle magnetische Anziehungskraft auf den Rotor ausüben kann, wodurch sich das Gesamtdrehmoment verringert. Diese Beziehung zwischen Drehzahl und Drehmoment ist weitgehend umgekehrt proportional.

note: type: Plain text
en: In the below example, the charging time for three coils is shown when the applied voltage is stepped from 0V to 40V. While all three coils can easily reach the full current limit of 5 amps, the time taken varies for each coil. The 4 milli-Henry coil (blue trace) takes twice as long to reach full current than the 2mH coil (green trace), and the 8mH (red trace) coil takes twice as long again:
de: Im folgenden Beispiel ist die Ladezeit für drei Spulen dargestellt, wenn die angelegte Spannung von 0 V auf 40 V gestuft wird. Während alle drei Spulen problemlos die volle Stromstärke von 5 Ampere erreichen können, ist die benötigte Zeit für jede Spule unterschiedlich. Die 4-Milli-Henry-Spule (blaue Kurve) braucht doppelt so lange, um den vollen Strom zu erreichen, wie die 2-mH-Spule (grüne Kurve), und die 8-mH-Spule (rote Kurve) braucht wiederum doppelt so lange:

note: type: Plain text
en: If the rate at which step changes are applied to the coils is significantly shorter than the rise time, it's easy to see that the winding has less time to attain full magnetic attraction on the rotor, and thus maximum torque is curtailed. In the below example the 2mH coil can achieve the full 5A limit before the step voltage is removed, but the 4mH and 8mH coils cannot:
de: Wenn die Geschwindigkeit, mit der die Sprungspannung an die Spulen angelegt wird, deutlich kürzer ist als die Anstiegszeit, ist es leicht zu erkennen, dass die Wicklung weniger Zeit hat, die volle magnetische Anziehungskraft auf den Rotor zu erreichen, und somit wird das maximale Drehmoment eingeschränkt. Im folgenden Beispiel kann die 2mH-Spule die volle 5A-Grenze erreichen, bevor die Schrittspannung entfernt wird, aber die 4mH- und 8mH-Spulen können dies nicht:

note: type: Plain text
en: The accepted way of improving motor speed while maintaining torque is to increase the speed at which the magnetic field of the motor coils can expand and collapse. The easiest way to accomplish this is to increase the supply voltage to force the current in each winding to rise and fall much more rapidly. A quicker magnetising time equates to faster step rates while improving torque at higher speeds, both of which are obviously desirable in a CNC system.
de: Die gängige Methode zur Verbesserung der Motordrehzahl bei gleichbleibendem Drehmoment besteht darin, die Geschwindigkeit zu erhöhen, mit der sich das Magnetfeld der Motorspulen ausdehnen und zusammenziehen kann. Der einfachste Weg, dies zu erreichen, besteht darin, die Versorgungsspannung zu erhöhen, um den Strom in jeder Wicklung zu zwingen, viel schneller anzusteigen und abzufallen. Eine schnellere Magnetisierungszeit führt zu schnelleren Schrittgeschwindigkeiten und verbessert das Drehmoment bei höheren Geschwindigkeiten, was in einem CNC-System natürlich wünschenswert ist.

note: type: Plain text
en: Using the same example as above, but increasing the step voltage to 80V it can be seen that all three coils can now reach the 5A maximum quite easily:
de: Wenn man dasselbe Beispiel wie oben verwendet, aber die Schrittspannung auf 80 V erhöht, kann man sehen, dass alle drei Spulen jetzt ganz leicht den Höchstwert von 5 A erreichen können:

note: type: Plain text
en: However, careful management of a higher drive voltage is required, as a higher voltage will increase current flowing in each coil with a corresponding increase in temperature of the winding. Excessive temperature rise in the winding will lead to eventual overheating and failure of the motor.
de: Eine höhere Antriebsspannung muss jedoch sorgfältig gehandhabt werden, da eine höhere Spannung den Stromfluss in jeder Spule erhöht, was zu einem entsprechenden Temperaturanstieg der Wicklung führt. Ein übermäßiger Temperaturanstieg in der Wicklung führt schließlich zu einer Überhitzung und zum Ausfall des Motors.

note: type: Plain text
en: Nearly all modern stepper motor drivers on the market today are constant-current types. That is, the current being applied to each winding is fixed irrespective of how much voltage is being applied. Most drivers accomplish this by monitoring the current being drawn through the motor windings and rapidly switching the outputs on and off at a very high frequency to maintain this current. Depending on the drivers being used, it may even be possible to hear this high frequency whistling in the motors themselves when stationary. Because the voltage is rapidly switched on and off to maintain the winding current at an approximate fixed value, these types of drivers are also known as 'chopper drive'.
de: Fast alle modernen Schrittmotortreiber auf dem Markt sind heute Konstantstrom-Typen. Das heißt, der Strom, der an jede Wicklung angelegt wird, ist fest, unabhängig davon, wie viel Spannung angelegt wird. Die meisten Treiber erreichen dies, indem sie den Strom, der durch die Motorwicklungen fließt, überwachen und die Ausgänge mit einer sehr hohen Frequenz schnell ein- und ausschalten, um diesen Strom beizubehalten. Je nach den verwendeten Treibern kann es sogar möglich sein, dieses hochfrequente Pfeifen in den Motoren selbst zu hören, wenn diese stillstehen. Da die Spannung schnell ein- und ausgeschaltet wird, um den Wicklungsstrom auf einem annähernd festen Wert zu halten, werden diese Arten von Treibern auch als "Chopper-Drive" bezeichnet.

note: type: Title ==
en: Selecting a Stepper Power Supply
de: Auswahl einer Stepper-Stromversorgung

note: type: Title ==
en: Resonance
de: Resonanz

note: type: Plain text
en: Motor resonance occurs when the rate at which the steps are applied to the windings matches the natural frequency of the motor itself. Applying steps for a prolonged period of time at this rate results in the torque dropping dramatically, and the motor may stall or even rotate in random directions. Some stepper motor datasheets provide plots of the torque/speed relationship and show a dip in the graph where resonance is likely to occur. It should be noted that this resonant peak provided in the datasheet is only for the motor itself - as soon as the motor is coupled to other components (ie, installed in a CNC system) the resonant frequency may be altered, or even multiple new resonances introduced.
de: Motorresonanz tritt auf, wenn die Geschwindigkeit, mit der die Schritte an die Wicklungen angelegt werden, der Eigenfrequenz des Motors selbst entspricht. Wenn die Schritte über einen längeren Zeitraum mit dieser Rate angelegt werden, fällt das Drehmoment drastisch ab, und der Motor kann zum Stillstand kommen oder sich sogar in beliebige Richtungen drehen. Einige Schrittmotor-Datenblätter enthalten Diagramme des Verhältnisses zwischen Drehmoment und Drehzahl und zeigen eine Senke im Diagramm, in der wahrscheinlich eine Resonanz auftritt. Es ist zu beachten, dass diese im Datenblatt angegebene Resonanzspitze nur für den Motor selbst gilt - sobald der Motor mit anderen Komponenten gekoppelt ist (z. B. in einem CNC-System), kann sich die Resonanzfrequenz ändern oder es können sogar mehrere neue Resonanzen auftreten.

note: type: Plain text
en: Several methods exist to help control the effects of resonance, all with varying degrees of complexity, effectiveness and side effects:
de: Es gibt mehrere Methoden, um die Auswirkungen der Resonanz zu kontrollieren, alle mit unterschiedlichem Grad an Komplexität, Wirksamkeit und Nebenwirkungen:

note: type: Plain text
en: Ensuring the motor is never operated at a particular frequency for a sustained period is a very basic method of reducing resonance, always accelerating or decelerating through the resonant peak.
de: Eine sehr einfache Methode zur Verringerung der Resonanz ist es, den Motor nie über einen längeren Zeitraum mit einer bestimmten Frequenz zu betreiben, sondern immer über die Resonanzspitze zu beschleunigen oder abzubremsen.

note: type: Title ==
en: Microstepping
de: Mikroschritte (engl. microstepping)

note: type: Plain text
en: A stepper motor operating with each winding being fully energised in a sequential fashion is operating in full-step mode. That is, the maximum rotation resolution possible for that motor is the same as the number of whole steps that motor is manufactured to perform at (eg, 200 steps per revolution for a 1.8 degree/step motor).  As each winding is energised the rotor clocks around fully from one detent to the next.
de: Ein Schrittmotor, bei dem jede Wicklung sequentiell voll erregt wird, arbeitet im Vollschrittmodus. Das heißt, die maximal mögliche Drehungsauflösung für diesen Motor entspricht der Anzahl ganzer Schritte, für die der Motor hergestellt wurde (z. B. 200 Schritte pro Umdrehung für einen Motor mit 1,8 Grad/Schritt).  Wenn jede Wicklung erregt wird, taktet der Rotor vollständig von einer Raste zur nächsten.

note: type: Plain text
en: Additional rotational resolution from a stepper motor can be obtained by performing microstepping, whereby the current being driven into each winding can essentially be 'ramped' in discrete intermediate steps. This then causes the rotor to gradually straddle across each rotational detent rather than making the full jump from one step to the next.
de: Eine zusätzliche Rotationsauflösung eines Schrittmotors kann durch Mikroschrittbetrieb erreicht werden, wobei der in jede Wicklung fließende Strom im Wesentlichen in diskreten Zwischenschritten "gerafft" werden kann. Dies führt dann dazu, dass der Rotor allmählich jede Drehung überbrückt, anstatt den vollen Sprung von einem Schritt zum nächsten zu machen.

note: type: Plain text
en: Microstepping is commonly performed in multiples of 2 (4x, 8x, 16x, 32x etc). For example, a drive set to 4x microstepping will divide each step into four discrete current levels in the motor windings, thus affording an improvement in rotational resolution by a factor of four. This obviously means that for a typical step/direction control interface there will need to be four times as many step pulses generated to make the motor move the same amount had it been operating in full-step mode. To make the motor rotate at the same speed the rate at which pulses need to be applied to the drive also needs to be four times as fast.
de: Das Mikroschrittverfahren wird in der Regel in Vielfachen von 2 (4x, 8x, 16x, 32x usw.) durchgeführt. Ein Antrieb, der auf 4-fachen Mikroschrittbetrieb eingestellt ist, teilt beispielsweise jeden Schritt in vier diskrete Stromstufen in den Motorwicklungen auf, was eine Verbesserung der Rotationsauflösung um den Faktor vier bedeutet. Dies bedeutet natürlich, dass für eine typische Schritt-/Richtungssteuerungsschnittstelle viermal so viele Schrittimpulse erzeugt werden müssen, damit sich der Motor um denselben Betrag bewegt, wenn er im Vollschrittmodus betrieben wird. Damit sich der Motor mit der gleichen Geschwindigkeit dreht, muss auch die Rate, mit der die Impulse an den Antrieb angelegt werden, viermal so schnell sein.

note: type: Plain text
en: At low rotational speeds, microstepping actually results in slightly higher torque than when full stepping. This is due to the smaller changes in current between intermediate steps resulting in less energy being wasted exciting natural resonances in the motor. As RPM increases however, torque tends to fall off at a similar rate as full stepping.
de: Bei niedrigen Drehzahlen führt der Mikroschrittbetrieb sogar zu einem etwas höheren Drehmoment als der Vollschrittbetrieb. Dies ist auf die geringeren Stromänderungen zwischen den Zwischenschritten zurückzuführen, die dazu führen, dass weniger Energie zur Erregung von Eigenresonanzen im Motor verschwendet wird. Mit zunehmender Drehzahl nimmt das Drehmoment jedoch in ähnlicher Weise ab wie beim Vollschrittbetrieb.

note: type: Plain text
en: However, continuing to increase the degree of microstepping will eventually lead to some real-life limitations.  Step pulse generation, particularly when using the parallel port, is limited in frequency. This will inevitably limit the maximum speed at which the drive can be commanded to step at. With high degrees of microstepping this will result in unacceptably slow RPM of the motor.
de: Die weitere Erhöhung des Mikroschrittgrades führt jedoch irgendwann zu einigen Einschränkungen in der Praxis.  Die Erzeugung von Schrittimpulsen, insbesondere bei Verwendung des Parallelanschlusses, ist in ihrer Frequenz begrenzt. Dies führt zwangsläufig zu einer Begrenzung der Höchstgeschwindigkeit, mit der ein Frequenzumrichter gesteuert werden kann. Bei einem hohen Grad an Mikroschrittbetrieb führt dies zu einer unannehmbar langsamen Drehzahl des Motors.

note: type: Title ==
en: Open and Closed Loop
de: Offener und geschlossener Regelkreis (engl. open and closed loop)

note: type: Plain text
en: In the simplest CNC systems employing stepper motors, the host computer and/or stepper driver receives no feedback from the motor that it has achieved the desired outcome when commanded to begin stepping. The assumption by the software, driver and end user is that the motor operated correctly and the axis has moved to the expected new position. A system operating in this fashion is said to be running in 'open loop', where the device at the end of the signal chain (the stepper motor) does not provide any indication to the device at the start of the chain (the computer) that the target was reached.
de: In den einfachsten CNC-Systemen, die Schrittmotoren verwenden, erhält der Host-Computer und/oder der Schrittmotor-Treiber keine Rückmeldung vom Motor, dass er das gewünschte Ergebnis erreicht hat, wenn er den Befehl erhält, mit dem Schrittbetrieb zu beginnen. Die Software, der Treiber und der Endbenutzer gehen davon aus, dass der Motor korrekt arbeitet und die Achse die erwartete neue Position erreicht hat. Ein System, das auf diese Weise arbeitet, wird als "offener Regelkreis" bezeichnet, bei dem das Gerät am Ende der Signalkette (der Schrittmotor) dem Gerät am Anfang der Kette (dem Computer) nicht mitteilt, dass das Ziel erreicht wurde.

note: type: Plain text
en: A further enhancement to the basic stepper motor is to run the system in a 'closed loop'. This is achieved by equipping the stepper motor with a rotary encoder whose positional signal is returned back to a device higher up in the signal chain. In this way the motors' actual position can be compared to the expected position at all times, and the drive parameters adjusted in real time to ensure that the motor does not fall behind. This enables closed loop stepper systems to be able to achieve better speed and torque performance than open loop systems, due to the system constantly compensating for any deviation to the stepper's performance under varying loads.
de: Eine weitere Verbesserung des Schrittmotors besteht darin, das System in einem "geschlossenen Kreislauf" zu betreiben. Dies wird erreicht, indem der Schrittmotor mit einem Drehgeber ausgestattet wird, dessen Positionssignal an ein Gerät weiter oben in der Signalkette zurückgegeben wird. Auf diese Weise kann die tatsächliche Position des Motors jederzeit mit der erwarteten Position verglichen und die Antriebsparameter in Echtzeit angepasst werden, um sicherzustellen, dass der Motor nicht zurückbleibt. Auf diese Weise können Steppersysteme mit geschlossenem Regelkreis eine bessere Geschwindigkeits- und Drehmomentleistung erzielen als Systeme mit offenem Regelkreis, da das System jede Abweichung von der Leistung des Steppers bei wechselnden Lasten ständig ausgleicht.

note: type: Plain text
en: Basic systems operating in this fashion may only close the loop between the motor and the driver, leaving the software on the host computer out of the loop. The software issues step/direction pulses to the downstream driver as it would normally when running in open loop. In these situations the drivers usually include an alarm output which signals the software to halt when the load placed on the stepper becomes too great for the driver to compensate without losing steps.
de: Basissysteme, die auf diese Weise arbeiten, können nur die Schleife zwischen dem Motor und dem Treiber schließen und die Software auf dem Host-Computer aus der Schleife herauslassen. Die Software gibt Schritt-/Richtungsimpulse an den nachgeschalteten Treiber aus, wie sie es normalerweise bei einem Betrieb im offenen Regelkreis tun würde. In diesen Fällen verfügen die Treiber in der Regel über einen Alarmausgang der Software signalisieren, dass sie anhalten soll, wenn die auf den Schrittmotor ausgeübte Last zu groß wird, als dass der Treiber sie ohne Schrittverlust ausgleichen könnte.

note: type: Plain text
en: More advanced implementations of closed loop operation bring the encoder signal all the way back to the host computer, but require that a much higher hardware and software overhead be installed to manage the encoder feedback and calculation and delivery of drive compensation.
de: Fortschrittlichere Implementierungen des Closed-Loop-Betriebs bringen das Encodersignal den ganzen Weg zurück zum Host-Computer, erfordern aber einen viel höheren Hardware- und Software-Overhead, um das Encoder-Feedback und die Berechnung und Bereitstellung der Antriebskompensation zu verwalten.

note: type: Plain text
en: This page is for step and direction timing of stepper drives.
de: Diese Seite befasst sich mit der Schritt- und Richtungssteuerung von Schrittmotoren.

note: type: Plain text
en: Please add to this list using the stepconf wizard format and in nanoseconds so it will be uniform.
de: Bitte ergänzen Sie diese Liste im Format des Stepconf-Assistenten und in Nanosekunden, damit sie einheitlich ist.

note: type: Plain text
en: Some boards have know issues see the troubleshooting hardware page
de: Einige Boards haben bekannte Probleme, siehe die Seite Hardware-Fehlerbehebung

note: type: Plain text
en: If your unsure about your drive timing start high like 10000 for each and test.  remember that signal conditioning and opto-isolation can increase timing requirements. That's why you need to know the timings for a driver board, not just the step translator chip that is contains.
de: Wenn Sie sich unsicher sind, was Ihr Timing angeht, fangen Sie mit einem hohen Wert an, z. B. 10000 für jeden und testen Sie. Deshalb müssen Sie die Timings für eine Treiberplatine kennen, nicht nur den Schrittübersetzer-Chip, der enthalten ist.

note: type: Plain text
en: Also notice that some controllers step on the falling edge some on the rising edge. This matters as it will change the timing and will be hard to trace.  make sure LinuxCNC follows what the controller expects.
de: Beachten Sie auch, dass einige Controller auf die fallende Kante treten, einige auf die steigende Kante. Dies ist wichtig, da es das Timing ändert und schwer zu verfolgen sein wird.  Stellen Sie sicher, dass LinuxCNC dem entspricht, was der Controller erwartet.

note: type: Plain text
en: Note 1 if an asterisk precedes the name then the values are not confirmed. If you can confirm the values please do...
de: Hinweis 1: Steht ein Sternchen vor dem Namen, sind die Werte nicht bestätigt. Wenn Sie die Werte bestätigen können, tun Sie dies bitte...

note: type: Plain text
en: Times listed are in nanoseconds (ns). Multiply microseconds (us) by 1000 to get nanoseconds (ns)
de: Die Zeiten sind in Nanosekunden (ns) angegeben. Multiplizieren Sie Mikrosekunden (us) mit 1000, um Nanosekunden (ns) zu erhalten.

note: type: Table
en: Manufacturer
de: Hersteller

note: type: Table
en: Model
de: Modell

note: type: Table
en: Step Time
de: Schrittzeit

note: type: Table
en: Step Space
de: Schwittweite

note: type: Table
en: Direction Hold
de: Richtung Halten

note: type: Table
en: Direction Setup
de: Richtungseinstellung

note: type: Table
en: Spec Sheet
de: Datenblatt

note: type: Table
en: TB6560 CNC Stepper Motor Driver Controller Board
de: TB6560 CNC-Schrittmotor-Treiber Steuerplatine

note: type: Table
en: Falling Edge
de: Fallende Flanke

note: type: Table
en: Rising Edge
de: Steigende Flanke

note: type: Table
en: 2.5amp Stepper Driver
de: 2,5-Ampere-Schrittmachertreiber

note: type: Table
en: DG2S-08020
de: GD2S-08020

note: type: Table
en: Digital DM556 50V 5.6A
de: Digital DM556 50V 5,6A

note: type: Table
en: Digital DM856 80V 7.0A
de: Digital DM856 80V 7,0A

note: type: Table
en: Digital DM870 80V 7.0A
de: Digital DM870 80V 7,0A

note: type: Table
en: Digital DM1182 150VAC 8.2A
de: Digital DM1182 150VAC 8,2A

note: type: Table
en: Digital EM402 40V 2.2A
de: Digital EM402 40V 2,2A

note: type: Table
en: Digital EM503 50V 4.2A
de: Digital EM503 50V 4,2A

note: type: Table
en: Digital EM705 70V 7.0A
de: Digital EM705 70V 7,0A

note: type: Table
en: Digital EM806 80V 8.2A
de: Digital EM806 80V 8,2A

note: type: Table
en: Analog M415B 40V 1.5A
de: Analog M415B 40V 1,5A

note: type: Table
en: Analog M542 50V 4.2A
de: Analog M542 50V 4,2A

note: type: Table
en: Analog M752 75V 5.2A
de: Analog M752 75V 5,2A

note: type: Table
en: Analog M880A 80V 7.8A
de: Analog M880A 80V 7,8A

note: type: Table
en: Analog M860H 80VAC 7.2A
de: Analog M860H 80VAC 7,2A

note: type: Table
en: A4988 Stepper Motor Driver Carrier
de: A4988 Schrittmotor-Treiber Carrier (engl. Stepper Motor Driver Carrier)

note: type: Title =
en: Best Wiring Practices
de: Beste Verdrahtungspraktiken

note: type: Title ==
en: Electrical Noise
de: Elektrisches Rauschen

note: type: Plain text
en: Electrical noise in a system is caused by Electromagnetic Interference (EMI), where signals appearing in one electrical circuit interfere with an adjacent circuit, either through electromagnetic induction, electrostatic coupling or conduction. EMI can cause problems with the daily operation of a CNC machine, and can manifest itself in various ways such as false triggering of limit switches, prematurely interrupted tool probing operations, corruption of a serial data link to a VFD or erratic behaviour of the CNC control systems and software.
de: Elektrisches Rauschen in einem System wird durch elektromagnetische Interferenz (EMI) verursacht, bei der Signale, die in einem Stromkreis auftreten, einen benachbarten Stromkreis stören, entweder durch elektromagnetische Induktion, elektrostatische Kopplung oder Leitung. EMI kann Probleme beim täglichen Betrieb einer CNC-Maschine verursachen und sich auf verschiedene Weise äußern, z. B. durch falsches Auslösen von Endschaltern, vorzeitig unterbrochene Werkzeugantastungen, Beschädigung einer seriellen Datenverbindung zu einem VFD oder fehlerhaftes Verhalten der CNC-Steuerungssysteme und -Software.

note: type: Plain text
en: When current passes through a conductor a magnetic field is created. As the current increases the magnetic field gets stronger, and then collapses again when current ceases to flow. If this alternating magnetic field happens to cross another conductor it can induce an unwanted voltage into it, which presents itself as noise.
de: Wenn Strom durch einen Leiter fließt, wird ein Magnetfeld erzeugt. Wenn der Strom zunimmt, wird das Magnetfeld stärker und bricht wieder zusammen, wenn der Strom aufhört zu fließen. Wenn dieses magnetische Wechselfeld zufällig einen anderen Leiter kreuzt, kann es in diesem eine unerwünschte Spannung induzieren, die sich als Rauschen bemerkbar macht.

note: type: Plain text
en: There are several methods that can be employed to minimise the effects of EMI in any electrical system. The most effective of these is obviously to prevent the noise from occurring in the first place. In reality the method of controlling the effects of EMI is usually by applying measures to prevent noise from contaminating wanted signals in the CNC system.
de: Es gibt verschiedene Methoden, um die Auswirkungen von EMI in einem elektrischen System zu minimieren. Am wirksamsten ist es natürlich, das Auftreten von Störungen von vornherein zu verhindern. In der Praxis besteht die Methode zur Kontrolle der Auswirkungen von EMI in der Regel darin, Maßnahmen zu ergreifen, die verhindern, dass das Rauschen die gewünschten Signale im CNC-System verunreinigt.

note: type: Title ==
en: Ground, Earth and Common
de: Masse, Erde und "Common"

note: type: Plain text
en: Confusion can arise when using terms such as earth, ground and common. In some cases they may be used to describe the same thing; that being the point in an electrical system to which all voltages are referenced to. For the purpose of this article, the terms 'earth' and 'ground' refer to the point at which the incoming mains supply is earthed to, whereas 'common' is the return or negative terminal on a DC supply.  In some cases it is permissible to ground the common on a DC supply, thereby making the negative terminal on that supply the same potential as the incoming AC earth, but for the purposes of this discussion the terms 'earth' and 'common' must be made distinct from each other to avoid confusion.
de: Bei der Verwendung von Begriffen wie Erde und Masse kann es zu Verwechslungen kommen. In manchen Fällen bezeichnen sie dasselbe, nämlich den Punkt in einem elektrischen System, auf den sich alle Spannungen beziehen. Für die Zwecke dieses Artikels beziehen sich die Begriffe "Erde" und "Masse" auf den Punkt, an dem die eingehende Netzversorgung geerdet ist, während "common" der Rück- oder Minuspol einer Gleichstromversorgung ist.  In einigen Fällen ist es zulässig, die Masse einer Gleichstromversorgung zu erden, wodurch der Minuspol dieser Versorgung das gleiche Potenzial erhält wie die ankommende Wechselstrommasse, aber für die Zwecke dieser Diskussion müssen die Begriffe "Erde"/"Masse" von "common" getrennt werden, um Verwechslungen zu vermeiden.

note: type: Title ==
en: Wire Selection and Use
de: Auswahl und Verwendung von Drähten

note: type: Plain text
en: Wire comes in many types, sizes and configurations. Wading through all the wire available is a monumental task of its own, but for the purposes of this article it is only necessary to consider the types of wires typically used when wiring a CNC controller. Additionally, how the wire is to be used can have some effect on the overall system. What follows are some tips that may prove helpful.
de: Kabel gibt es in vielen Arten, Größen und Konfigurationen. Sich durch all die verfügbaren Kabel zu wühlen, ist eine monumentale Aufgabe für sich, aber für die Zwecke dieses Artikels ist es nur notwendig, die Arten von Kabeln zu betrachten, die typischerweise bei der Verdrahtung einer CNC-Steuerung verwendet werden. Darüber hinaus kann die Art und Weise, wie das Kabel verwendet wird, einen gewissen Einfluss auf das Gesamtsystem haben. Im Folgenden finden Sie einige Tipps, die sich als hilfreich erweisen könnten.

note: type: Title ===
en: Single Conductor Wire
de: Einzelleiter-Draht

note: type: Plain text
en: Wire comes in two forms: solid conductor and stranded. Solid core wire is generally cheaper than stranded, but more likely to break if used in applications where repeated bending is expected. Fortunately, the prevalence of stranded wire on the market means that its use should be encouraged wherever possible.
de: Drähte gibt es in zwei Formen: Volldraht und Litzendraht. Massivdraht ist im Allgemeinen billiger als Litze, kann aber bei Anwendungen, bei denen wiederholtes Biegen zu erwarten ist, eher brechen. Glücklicherweise bedeutet die weite Verbreitung von Litzen auf dem Markt, dass ihre Verwendung wo immer möglich gefördert werden sollte.

note: type: Plain text
en: Wires should be terminated such that all strands in the conductor are neatly and securely located into the mating receptacle. This may be accomplished by either twisting the strands together before inserting in the termination, or using a compression crimp such as a spade or bootlace terminal. Care should be made to ensure that no strands of wire end up outside the termination to prevent accidental shorting with adjacent terminations.
de: Drähte sollten so angeschlossen werden, dass alle Litzen des Leiters sauber und sicher in der passenden Buchse sitzen. Dies kann erreicht werden, indem die Litzen vor dem Einführen in den Anschluss zusammengedreht werden oder indem eine Pressklemme, wie z. B. ein Spaten oder ein Kabelschuh, verwendet wird. Es sollte darauf geachtet werden, dass keine Litzen außerhalb des Anschlusses enden, um einen versehentlichen Kurzschluss mit benachbarten Anschlüssen zu vermeiden.

note: type: Plain text
en: If using a compression crimp on the bare wire, avoid soldering the strands together before crimping. Crimping the lug onto a soldered wire can result in the lug working loose over time as the soldered strands lose their compressibility once the crimp has been applied. For this same reason, soldered wire should not be installed in a terminal block where the screw stud bites directly onto the wire when tightened.
de: Vermeiden Sie es, die Litzen vor dem Crimpen zusammenzulöten, wenn Sie den blanken Draht mit einem Kompressionscrimp versehen. Das Crimpen des Kabelschuhs auf einen gelöteten Draht kann dazu führen, dass sich der Kabelschuh mit der Zeit lockert, da die gelöteten Litzen nach dem Anbringen des Crimps ihre Kompressibilität verlieren. Aus demselben Grund sollte gelöteter Draht nicht in einer Anschlussleiste installiert werden, da dann der Schraubbolzen beim Anziehen direkt auf den Draht drückt.

note: type: Plain text
en: When stripping the wire ready for a termination, only remove the minimum amount required to keep the termination covered when complete. Stripping too much insulation off will expose some of the wire that something can short against.
de: Wenn Sie das Kabel für einen Anschluss abisolieren, entfernen Sie nur so viel, wie nötig ist, um den Anschluss nach Fertigstellung abzudecken. Wenn Sie zu viel Isolierung abisolieren, wird ein Teil des Kabels freigelegt, an dem ein Kurzschluss entstehen kann.

note: type: Plain text
en: The circuit that the wire is intended for should also be considered; the voltage the circuit operates at and the amount of current it carries have a bearing on the choice of wire to be used. The thin insulation on a piece of recycled CAT5 ethernet cable is insufficient to withstand the voltages that can appear at the output terminals of a Variable Frequency Drive, nor is the cross sectional area of the conductor sufficient to carry several amps of current without overheating and potentially causing a fire. Conversely, while it is perfectly permissible to wire a limit switch circuit using 2.5 sqmm cable, it creates needless bulk in the wiring loom. Consult any manufacturer's documentation and your local country's electrical wiring codes for minimum suggested wire gauges for power and control requirements.
de: Der Stromkreis, für den das Kabel bestimmt ist, sollte ebenfalls berücksichtigt werden; die Spannung im Stromkreis, und die Stromstärke, die er überträgt, haben einen Einfluss auf die Wahl des zu verwendenden Kabels. Die dünne Isolierung eines recycelten CAT5-Ethernetkabels reicht nicht aus, um den Spannungen standzuhalten, die an den Ausgangsklemmen eines Frequenzumrichters auftreten können, und auch der Querschnitt des Leiters reicht nicht aus, um mehrere Ampere Strom zu führen, ohne dass es zu einer Überhitzung und damit zu einem Brand kommen kann. Umgekehrt ist es zwar durchaus zulässig, einen Endschalterstromkreis mit einem 2,5-mm-Kabel zu verdrahten, doch führt dies zu einer unnötigen Verdichtung des Kabelbaums. In der Dokumentation des Herstellers und in den Vorschriften für die elektrische Verdrahtung Ihres Landes finden Sie die empfohlenen Mindestquerschnitte für die Leistungs- und Steueranforderungen.

note: type: Title ===
en: Shielded Wire
de: Abgeschirmtes Kabel

note: type: Plain text
en: There are two types of shielded wire. One has a bare wire braid that surrounds the wire inside, and the other has metal foil that surrounds the wire inside. The type of shielded wire selected will depend on the amount of noise you are trying to combat.
de: Es gibt zwei Arten von abgeschirmten Kabeln. Die eine hat ein blankes Drahtgeflecht, das den Draht im Inneren umgibt, und die andere hat eine Metallfolie, die den Draht im Inneren umgibt. Die Wahl des abgeschirmten Kabels hängt davon ab, wie stark das Rauschen ist, das Sie bekämpfen wollen.

note: type: Block title
en: Foil Shielded Wire
de: Foliengeschirmter Draht

note: type: Plain text
en: Foil shielded wire has a thin aluminum or copper foil that is usually bonded to a film of plastic that surrounds the wire. The enclosed wire is usually 100% covered. Attaching the foil to earth can be difficult, especially if the foil is constructed from aluminum or laminated to a plastic backing material. For this reason, it is usual to find a bare metal stranded wire enclosed inside the cable which is in contact with the foil for the full length of the cable. This is called the drain wire and is used to make the connection to earth with.
de: Foliengeschirmte Kabel bestehen aus einer dünnen Aluminium- oder Kupferfolie, die in der Regel mit einer Kunststofffolie verbunden ist, die das Kabel umgibt. Der umschlossene Draht ist in der Regel zu 100 % abgedeckt. Die Befestigung der Folie an der Erde kann schwierig sein, vor allem, wenn die Folie aus Aluminium besteht oder auf ein Kunststoffträgermaterial laminiert ist. Aus diesem Grund ist es üblich, dass im Kabel eine blanke Metalllitze eingeschlossen ist, die über die gesamte Länge des Kabels mit der Folie in Kontakt steht. Diese wird als Erdungsdraht bezeichnet und dient dazu, die Verbindung zur Erde herzustellen.

note: type: Block title
en: Braided Shielded Wire
de: Geflochtener abgeschirmter Draht

note: type: Plain text
en: Braided shielded wire has a woven copper braid that surrounds the wire. It is more bulky than foil and does not provide 100% coverage, but is more flexible than foil shielded types. Coverage is typically 70% to 95% depending on how tight the braid has been constructed. Despite the lower coverage of braided shield, the effectiveness is greater than foil shielding due to the increased bulk of the braid, and copper being a better conductor than aluminum.
de: Geflechtgeschirmte Kabel werden von einem geflochtenes Kupfergeflecht umgeben. Es ist sperriger als Folie und bietet keine 100%ige Abdeckung, ist aber flexibler als foliengeschirmte Typen. Der Abdeckungsgrad beträgt in der Regel 70 % bis 95 %, je nachdem, wie dicht das Geflecht konstruiert wurde. Trotz des geringeren Abdeckungsgrades ist die Effektivität einer Geflechtabschirmung größer als die einer Folienabschirmung, da das Geflecht mehr Volumen hat und Kupfer ein besserer Leiter als Aluminium ist.

note: type: Plain text
en: For very noisy environments, a further subset of the above two shielding methodologies may be employed, whereby both braid and foil shielding is used simultaneously. Individual wires in a multi-conductor cable may also be shielded along with an overall shield being applied to the entire cable jacket.
de: Für elektromagnetisch sehr verrauschte Umgebungen kann eine weitere Teilmenge der beiden oben genannten Abschirmmethoden verwendet werden, wobei sowohl Geflecht- als auch Folienabschirmung gleichzeitig verwendet werden. Einzelne Drähte in einem Mehrleiterkabel können ebenfalls abgeschirmt werden, wobei eine Gesamtabschirmung auf den gesamten Kabelmantel aufgebracht wird.

note: type: Title ==
en: AC Line Voltage
de: AC-Netzspannung

note: type: Plain text
en: The incoming mains AC that powers the CNC system can pick up and carry noise into the power supplies and other equipment. For example, if the incoming supply is also used to feed large motors, electrical noise may be generated on the line feeding the CNC components. Although most modern electronic devices feature built-in mains filtering to help minimise the susceptibility to mains-borne interference, the custom and modularised nature of a CNC system can mean that components used come from a wide variety of sources with differing degrees of inherent noise immunity.
de: Der eingehende Netzwechselstrom, der das CNC-System versorgt, kann Störungen aufnehmen und in die Stromversorgungen und andere Geräte übertragen. Wird das eingehende Netz beispielsweise auch für die Versorgung großer Motoren verwendet, kann auf der Leitung zur Versorgung der CNC-Komponenten elektrisches Rauschen erzeugt werden. Obwohl die meisten modernen elektronischen Geräte über eine eingebaute Netzfilterung verfügen, um die Anfälligkeit für netzbedingte Störungen zu minimieren, kann die kundenspezifische und modulare Beschaffenheit eines CNC-Systems bedeuten, dass die verwendeten Komponenten aus einer Vielzahl von Quellen mit unterschiedlichem Grad an inhärenter Störungsimmunität stammen.

note: type: Plain text
en: Inline filters may be installed on the incoming mains supply feeding the CNC control system to help reduce any induced noise. Running the CNC system from a different mains circuit to any large electrical sources of noise may also help minimise any potential sources of mains-borne interference.
de: Inline-Filter können in der eingehenden Netzversorgung des CNC-Steuerungssystems installiert werden, um induzierte Störungen zu reduzieren. Der Betrieb des CNC-Systems an einem anderen Netzstromkreis als alle größeren elektrischen Störquellen kann ebenfalls dazu beitragen, mögliche Quellen von Netzstörungen zu minimieren.

note: type: Plain text
en: Be aware that in many countries, the installation and alteration of mains circuits can only be carried out by licensed electricians.
de: Beachten Sie, dass in vielen Ländern die Installation und Änderung von Netzstromkreisen nur von lizenzierten Elektrikern durchgeführt werden darf.

note: type: Title ==
en: Power Supply Units
de: Netzteile

note: type: Title ===
en: AC Ground
de: AC-Erde

note: type: Plain text
en: A typical CNC machine may have several different Power Supply Units (PSUs) installed in the system. Any device powered from the incoming mains designed to be earthed must be properly and permanently terminated to mains earth.  Ideally this should be made to the same point in the system, which may be a threaded post or bolt, a copper/brass termination strip or a large metallic mounting plate within the control enclosure.
de: Eine typische CNC-Maschine kann mehrere verschiedene Stromversorgungseinheiten (PSUs) im System installiert haben. Jedes Gerät, das über das eingehende Netz mit Strom versorgt wird und geerdet werden soll, muss ordnungsgemäß und dauerhaft an die Netzerde angeschlossen werden.  Idealerweise sollte dies am gleichen Punkt im System erfolgen, z. B. an einem Gewindepfosten oder -bolzen, einem Kupfer-/Messing-Abschlussstreifen oder einer großen metallischen Montageplatte innerhalb des Steuergehäuses.

note: type: Plain text
en: The prevalence of high-frequency switchmode PSUs used in CNC systems increase the likelihood of RF noise being coupled from them to adjacent circuitry. Many of these PSUs have a metal case which, if connected to mains earth, will help screen the coupling of high frequency EMI into other electrical components.
de: Die in CNC-Systemen weit verbreiteten Hochfrequenz-Schaltnetzteile erhöhen die Wahrscheinlichkeit, dass HF-Störungen von ihnen in benachbarte Schaltkreise eingekoppelt werden. Viele dieser Netzteile haben ein Metallgehäuse, das, wenn es mit der Netzerde verbunden ist, dazu beiträgt, die Einkopplung von Hochfrequenz-EMI in andere elektrische Komponenten zu verhindern.

note: type: Plain text
en: From a safety standpoint, it is important that these mains earth connections also be mechanically strong and unlikely to break free, and the wire used has a cross-sectional area sufficient to carry the anticipated fault current should a short to earth occur. It is also imperative that mains earth is never used as a current-carrying conductor for other components in the system. Earth shall be used for one purpose only: safety earthing.
de: Aus Sicherheitsgründen ist es wichtig, dass diese Netzerdungsverbindungen auch mechanisch stabil sind und sich nicht lösen können, und dass der verwendete Draht einen ausreichenden Querschnitt hat, um im Falle eines Erdschlusses den zu erwartenden Fehlerstrom zu übertragen. Es ist auch zwingend erforderlich, dass die Netzerde niemals als stromführender Leiter für andere Komponenten im System verwendet wird. Die Erde darf nur für einen einzigen Zweck verwendet werden: die Sicherheitserdung.

note: type: Plain text
en: Note also that the colour of the jacket used to make a termination to earth may be prescribed by the wiring code for your country, and the conduction of other unrelated signals in that same wire colour may be prohibited.
de: Beachten Sie auch, dass die Farbe der Ummantelung, die für den Anschluss an die Erde verwendet wird, durch die Verdrahtungsvorschriften Ihres Landes vorgeschrieben sein kann, und dass die Leitung anderer, nicht verwandter Signale in der gleichen Kabelfarbe verboten sein kann.

note: type: Title ===
en: DC Common
de: Geteilter Gleichstrom

note: type: Plain text
en: Commoning of a DC PSU is somewhat dependent on the electrical operating requirements of the CNC system. For example, a stepper motor driver operating with a 24VDC motor supply and a 5V logic supply may have optically-isolated signal input lines which provide complete electrical separation of the driver's input and output circuitry for safety and noise immunity purposes. Tying the stepper motor and logic control supply commons together in this case may have a detrimental impact on the operation of the system.
de: Die gemeinsame Nutzung eines DC-Netzteils hängt in gewissem Maße von den elektrischen Betriebsanforderungen des CNC-Systems ab. Beispielsweise kann ein Schrittmotortreiber, der mit einer 24 VDC-Motorspeisung und einer 5 V-Logikspeisung arbeitet, über optisch isolierte Signaleingangsleitungen verfügen, die eine vollständige elektrische Trennung der Eingangs- und Ausgangsschaltungen des Treibers aus Sicherheits- und Störsicherheitsgründen gewährleisten. Die Verbindung von Schrittmotor und Logikversorgung kann sich in diesem Fall nachteilig auf den Betrieb des Systems auswirken.

note: type: Plain text
en: In general it makes most sense to keep the commons of the various DC PSUs used in the CNC system separate from each other, and separate from the AC mains earth unless there is a specific requirement to tie them together. In most cases the common points of the heavy-duty power sections of the CNC system (eg, stepper motor or servo motor drivers, spindle motors etc) will be segregated from common points of the electrically-sensitive sections of the CNC (control interface boards, limit switches, tool probe circuitry etc) to prevent cross-contamination of the two systems.
de: Im Allgemeinen ist es am sinnvollsten, die gemeinsamen Punkte der verschiedenen im CNC-System verwendeten Gleichstrom-Netzteile voneinander und von der Wechselstrom-Netzerde getrennt zu halten, es sei denn, es besteht eine besondere Anforderung, sie miteinander zu verbinden. In den meisten Fällen werden die gemeinsamen Punkte der Hochleistungs-Stromversorgungsabschnitte des CNC-Systems (z. B. Schrittmotor- oder Servomotortreiber, Spindelmotoren usw.) von den gemeinsamen Punkten der elektrisch empfindlichen Abschnitte der CNC (Steuerschnittstellenplatinen, Endschalter, Werkzeugtasterschaltungen usw.) getrennt, um eine gegenseitige Verschmutzung der beiden Systeme zu verhindern.

note: type: Plain text
en: Should it be necessary to connect several common points of different PSUs together, or to connect a common of a PSU to AC main earth, it should be done at a single point only and as close to the common terminal of the PSUs as possible.
de: Sollte es notwendig sein, mehrere gemeinsame Punkte verschiedener Netzteile miteinander zu verbinden oder einen gemeinsamen Punkt eines Netzteils mit der AC-Haupterde zu verbinden, so sollte dies nur an einem einzigen Punkt und so nahe wie möglich an der gemeinsamen Klemme der Netzteile geschehen.

note: type: Plain text
en: In CNC machines where the hardware drivers and interfacing circuitry are pre-assembled, the decision as to which DC commons are tied where is usually taken out of the hands of the end user.
de: Bei CNC-Maschinen, bei denen die Hardwaretreiber und Schnittstellenschaltungen bereits vormontiert sind, wird dem Endanwender die Entscheidung darüber, welche Gleichstromanschlüsse wo angeschlossen werden, in der Regel abgenommen.

note: type: Title ==
en: DC Supply Feeds
de: Gleichstrom (engl. DC)-Einspeisungen

note: type: Plain text
en: In situations where a DC circuit is run with the common point disconnected from the mains earth (ie, the supply is 'floating'), it can be helpful to run DC supplies using twisted pairs of wires, whereby each pair of wires in the circuit (eg, the positive and negative leads) is physically twisted together in a helix pattern. The twist in the wire allows both conductors to share the same 'real estate' as closely as possible. Any EMI that passes across them will therefore be largely canceled as both conductors will receive the same degree of EMI. For additional protection use twisted wire that is housed in a shielded jacket with the shield terminated to mains earth.
de: In Situationen, in denen ein Gleichstromkreis mit einem von der Netzerde getrennten gemeinsamen Punkt betrieben wird (d. h. die Versorgung ist "erdfrei"), kann es hilfreich sein, Gleichstromversorgungen mit verdrillten Leitungspaaren zu betreiben, wobei jedes Leitungspaar im Stromkreis (z. B. die Plus- und Minusleitungen) physisch in einem Helixmuster miteinander verdrillt ist. Durch die Verdrillung der Drähte teilen sich die beiden Leiter so eng wie möglich denselben "Grundbesitz". Jegliche EMI, die über sie hinweggeht, wird daher weitgehend ausgelöscht, da beide Leiter das gleiche Maß an EMI erhalten. Für zusätzlichen Schutz verwenden Sie verdrillte Kabel, die in einem abgeschirmten Mantel untergebracht sind und deren Abschirmung mit der Netzerde verbunden ist.

note: type: Plain text
en: Note however that twisted pairs of wires are less effective at combating the effects of EMI if one of the two wires is referenced to mains earth, as the conductor at earth potential is less able to be influenced by EMI than the un-earthed conductor. In these instances the twisting of the wires has less of an impact on the overall noise immunity, and shielded cable will be intrinsically more effective at reducing noise pickup.
de: Es ist jedoch zu beachten, dass verdrillte Adernpaare die Auswirkungen von EMI weniger wirksam bekämpfen, wenn eine der beiden Adern mit der Netzerde verbunden ist, da der Leiter auf Erdpotential weniger durch EMI beeinflusst werden kann als der ungeerdete Leiter. In diesen Fällen hat die Verdrillung der Drähte weniger Einfluss auf die gesamte Störfestigkeit, und abgeschirmte Kabel sind von Natur aus effektiver bei der Verringerung der Störaufnahme.

note: type: Title ==
en: Signal Wires and Control Lines
de: Signalleitungen und Steuerleitungen

note: type: Plain text
en: The wires that are used to transmit logic signals to and from various peripherals in the CNC (eg, stepper motor controller inputs, axis limit switches etc) are the most susceptible to noise interference. The reason for this is the low level voltages that are used to convey the information. When a limit or home switch is engaged, or a tool probe has made or broken contact, this signal is used to signify the event has taken place. Typically this is done by using input pins on the computer interface card or parallel port which, dependent on the application, may be signaled using as little as 3.3V. Evidently a 2V noise spike has the potential to corrupt the validity of a signal if the useful range is only 0-3.3V.
de: Die Drähte, die zur Übertragung von Logiksignalen zu und von verschiedenen Peripheriegeräten in der CNC verwendet werden (z. B. Eingänge der Schrittmotorsteuerung, Achsenendschalter usw.), sind am anfälligsten für Rauschstörungen. Der Grund dafür sind die niedrigen Spannungen, die zur Übertragung der Informationen verwendet werden. Wenn ein Endschalter oder ein Home-Schalter betätigt wird oder ein Werkzeugmesstaster einen Kontakt hergestellt oder unterbrochen hat, wird dieses Signal verwendet, um zu signalisieren, dass das Ereignis stattgefunden hat. In der Regel geschieht dies über Eingangsstifte an der Computerschnittstellenkarte oder am Parallelport, die je nach Anwendung mit nur 3,3 V signalisiert werden können. Offensichtlich kann eine 2-V-Rauschspitze die Gültigkeit eines Signals verfälschen, wenn der Nutzbereich nur 0-3,3 V beträgt.

note: type: Plain text
en: If possible, isolate the common point of the PSU supplying the logic peripherals from the rest of the system.  For example, keeping the common of the low voltage power supply isolated from the common of the stepper motor supply will reduce the chances of large currents flowing in the stepper motor return line contaminating the common of the low voltage supply.
de: Wenn möglich, isolieren Sie den gemeinsamen Punkt des Netzteils, das die logischen Peripheriegeräte versorgt, vom Rest des Systems.  Wenn z. B. der gemeinsame Punkt des Niederspannungsnetzteils vom gemeinsamen Punkt der Schrittmotorversorgung isoliert ist, verringert sich die Gefahr, dass große Ströme in der Rückleitung des Schrittmotors den gemeinsamen Punkt der Niederspannungsversorgung verunreinigen.

note: type: Plain text
en: If the controller uses differential signaling, use twisted pairs to carry the signal. Shielded cable is preferred when the control lines are single-ended, or if the distances traversed are long or through electrically hostile environments. When grounding the shield in the cable, terminate to the mains earth.
de: Verwendet das Steuergerät eine Differenzialsignalisierung, so sind verdrillte Kabelpaare für die Übertragung des Signals zu verwenden. Abgeschirmte Kabel sind zu bevorzugen, wenn die Steuerleitungen unsymmetrisch sind oder wenn die zu überbrückenden Entfernungen lang sind oder durch elektrisch ungünstige Umgebungen führen. Wenn Sie die Abschirmung im Kabel erden, schließen Sie es an die Netzerde an.

note: type: Plain text
en: If the controller and interfacing devices can withstand higher control signals, consider altering the wiring and power supply requirements to use a bigger voltage for signaling (eg, 12V or 24V). The same 2V EMI noise spike that could corrupt a 3.3V limit switch signal will be far less likely to cause issues with a limit switch operating with a 24V signal.
de: Wenn die Steuerung und die Schnittstellengeräte höheren Steuersignalen standhalten können, sollten Sie die Verdrahtung und die Anforderungen an die Stromversorgung ändern, um eine höhere Spannung für die Signalisierung zu verwenden (z. B. 12 V oder 24 V). Dieselbe 2-V-EMI-Störungsspitze, die ein 3,3-V-Endschaltersignal stören könnte, wird bei einem Endschalter, der mit einem 24-V-Signal arbeitet, weit weniger Probleme verursachen.

note: type: Title ==
en: Stepper or Servo Motor Drivers
de: Schritt- oder Servomotor-Treiber

note: type: Plain text
en: The metal housing of the driver should be connected to the local mains earth in the CNC system. Some driver enclosures will indicate a specific terminal as being the earthing point, in which case this point must be connected to earth via a dedicated wire.
de: Das Metallgehäuse des Treibers sollte mit der lokalen Netzerde des CNC-Systems verbunden werden. Bei einigen Treibergehäusen ist eine bestimmte Klemme als Erdungspunkt angegeben; in diesem Fall muss dieser Punkt über ein spezielles Kabel mit der Erde verbunden werden.

note: type: Plain text
en: Control and power wiring should be segregated as much as possible. Route signal input wires well away from power supply and motor drive output lines.
de: Steuer- und Leistungskabel sollten so weit wie möglich voneinander getrennt werden. Verlegen Sie die Signaleingangsleitungen weit entfernt von den Stromversorgungs- und Motorantriebsausgangsleitungen.

note: type: Plain text
en: It is recommended to run both driver input and motor output wiring in shielded cable with the shield terminated to mains earth. The shield on the input lines helps reduce the amount of interference they can receive, while the shield on the output lines reduces the amount of noise they can radiate.
de: Es wird empfohlen, sowohl die Treibereingangs- als auch die Motorausgangskabel in abgeschirmten Kabeln zu verlegen, wobei die Abschirmung mit der Netzerde verbunden sein sollte. Die Abschirmung der Eingangsleitungen trägt dazu bei, die Menge an Störungen zu reduzieren, die sie empfangen können, während die Abschirmung der Ausgangsleitungen die Menge an Störungen reduziert, die sie abstrahlen können.

note: type: Title ==
en: Variable Frequency Drives
de: Frequenzumrichter

note: type: Plain text
en: If at all possible the Variable Frequency Drive (VFD) should be mounted in a separate enclosure or cabinet to reduce the risk of it radiating noise into adjacent wiring. If the VFD enclosure is metallic it must be earthed as per any recommendations in the manufacturer's documentation.
de: Wenn möglich, sollte der Frequenzumrichter (VFD) in einem separaten Gehäuse oder Schrank montiert werden, um das Risiko zu verringern, dass er Geräusche in die angrenzende Verkabelung abstrahlt. Wenn das Gehäuse des Frequenzumrichters aus Metall ist, muss es gemäß den Empfehlungen in der Dokumentation des Herstellers geerdet werden.

note: type: Plain text
en: Because the VFD is a high power, high frequency electronic switching device, the output is notoriously prone to EMI radiation, and it is advisable to run the VFD output to the connected motor in a shielded cable, with the shield terminated to mains earth.
de: Da es sich beim VFD um ein elektronisches Schaltgerät mit hoher Leistung und hoher Frequenz handelt, ist der Ausgang bekanntermaßen anfällig für EMI-Strahlung, und es ist ratsam, den VFD-Ausgang mit einem abgeschirmten Kabel zum angeschlossenen Motor zu führen, wobei die Abschirmung mit der Netzerde verbunden sein muss.

note: type: Title ==
en: Routing Conductors
de: Verlegung von Leitern

note: type: Title ===
en: Routing Movable Wires
de: Verlegung beweglicher Drähte

note: type: Plain text
en: Any wire that will be moved about during normal operation of the CNC falls into this category. For example, wires running from stepper drivers through a cable management system (drag chains) and then to the stepper motors mounted on a movable gantry.  Cables and wires operating in these circumstances should be rated for extra flexibility. This precludes the use of solid-core wires and cables, as the constant flexing will lead to fatigue and eventual failure of the conductors.
de: Alle Kabel, die während des normalen Betriebs der CNC bewegt werden, fallen in diese Kategorie. Zum Beispiel Kabel, die von den Schrittmotorantrieben durch ein Kabelmanagementsystem (Schleppketten) und dann zu den Schrittmotoren an einem beweglichen Portal verlaufen.  Kabel und Drähte, die unter diesen Umständen eingesetzt werden, sollten für zusätzliche Flexibilität ausgelegt sein. Dies schließt die Verwendung von Vollkernkabeln und -leitungen aus, da die ständige Biegung zu einer Ermüdung und schließlich zum Ausfall der Leiter führt.

note: type: Plain text
en: If running cables in a cable track/carrier, tie them down at both ends of the cable track. If not, ratcheting can occur and fatigue the cable prematurely. Care should also be taken to ensure that mechanical rubbing of conductors against other parts of the machine is prevented.
de: Wenn Sie die Kabel in einer Kabelbahn/einem Kabelträger verlegen, binden Sie sie an beiden Enden der Kabelbahn fest. Andernfalls kann ein Ratschen auftreten und das Kabel vorzeitig ermüden. Es sollte auch darauf geachtet werden, dass ein mechanisches Reiben von Leitern an anderen Teilen der Maschine vermieden wird.

note: type: Plain text
en: In a cable track/carrier observe the neutral axis idea. Have the wire run as close to the neutral axis as possible. Make sure the wire is not in tension in the longest neutral axis situation.
de: Beachten Sie bei einer Kabeltrasse/einem Kabelträger die Idee der neutralen Achse. Verlegen Sie den Draht so nah wie möglich an der neutralen Achse. Achten Sie darauf, dass der Draht in der längsten Lage der neutralen Achse nicht unter Spannung steht.

note: type: Title ===
en: Routing Stationary Wires
de: Verlegung stationärer Drähte

note: type: Plain text
en: As discussed earlier, running different signal classes (high voltage and low voltage) in proximity to each other has the tendency to exacerbate EMI interference. Separate conductors by as much distance as possible. If two conductors must cross over each other make the crossing as close to a 90 degree angle as possible.
de: Wie bereits erwähnt, führt die Nähe verschiedener Signalklassen (Hoch- und Niederspannung) zu einer Verschärfung der EMI-Interferenz. Trennen Sie die Leiter so weit wie möglich voneinander. Wenn sich zwei Leiter kreuzen müssen, sollte der Kreuzungspunkt so nah wie möglich an einem 90-Grad-Winkel liegen.

note: type: Plain text
en: Avoid long loops of excess wire at any peripheral devices - they are great antennas for receiving or transmitting noise. Where possible, run wires in close proximity to large earthed structures. If the controller enclosure features a large metallic back plate that is earthed, secure all control wiring against this surface as much as possible while wiring between two points.
de: Vermeiden Sie lange Kabelschleifen an allen Peripheriegeräten - sie sind gute Antennen für den Empfang oder die Übertragung von Störungen. Verlegen Sie die Kabel nach Möglichkeit in der Nähe von großen geerdeten Strukturen. Wenn das Gehäuse des Steuergeräts über eine große geerdete Metallrückwand verfügt, sollten Sie die gesamte Steuerverdrahtung so weit wie möglich an dieser Fläche befestigen, während Sie die Kabel zwischen zwei Punkten verlegen.

note: type: Title ==
en: Mechanical Noise
de: Mechanisches Rauschen

note: type: Plain text
en: Very few mechanical switches (eg, an axis limit switch or tool probe input) will close or open perfectly when operated. More often than not the switch contacts will physically bounce against each other several times within a very short space of time when operated. This may be interpreted by the machine controller as multiple operations of the same signal when in reality only one clean state change was expected. Sometimes it doesn't matter, but in many circumstances it is desirable to ensure that any state change is as 'clean' as possible and does not interfere with the operation of the machine. This is accomplished by debouncing.
de: Nur sehr wenige mechanische Schalter (z. B. ein Achsendschalter oder ein Werkzeugtastereingang) schließen oder öffnen sich bei Betätigung perfekt. In den meisten Fällen prallen die Schaltkontakte bei der Betätigung innerhalb einer sehr kurzen Zeitspanne mehrmals gegeneinander. Dies kann von der Maschinensteuerung als mehrfache Betätigung desselben Signals interpretiert werden, obwohl in Wirklichkeit nur eine einzige saubere Zustandsänderung erwartet wurde. Manchmal spielt das keine Rolle, aber unter vielen Umständen ist es wünschenswert, sicherzustellen, dass jede Zustandsänderung so "sauber" wie möglich ist und den Betrieb der Maschine nicht stört. Dies wird durch Entprellung erreicht.

note: type: Plain text
en: Debouncing is achieved by permitting a state change on a mechanical switch to only register with the controller after a fixed period of time to allow any bouncing in the switch contacts to settle. Time delays of 5-15 milliseconds are usually sufficient. This can be done with the addition of some hardware to the signal circuit or in software within LinuxCNC.
de: Die Entprellung wird dadurch erreicht, dass eine Zustandsänderung an einem mechanischen Schalter erst nach einer festgelegten Zeitspanne in der Steuerung registriert wird, damit sich ein eventueller Rückprall in den Schaltkontakten ausgleichen kann. Zeitverzögerungen von 5-15 Millisekunden sind normalerweise ausreichend. Dies kann mit dem Zusatz von etwas Hardware, um die Signal-Schaltung oder in der Software innerhalb LinuxCNC getan werden.

note: type: Title ===
en: Hardware Debouncing
de: Hardware Entprellung (engl. debouncing)

note: type: Plain text
en: Several schemes exist to implement debouncing of switches and relay contacts with hardware, ranging from the addition of a single capacitor across the signal and common lines, to dedicated debouncing integrated circuits such as the MC14490 or MAX6818. Several hardware debouncing schemes can be found via the link below:
de: Es gibt mehrere Möglichkeiten, die Entprellung von Schaltern und Relaiskontakten mit Hardware zu implementieren, angefangen von der Hinzufügung eines einzelnen Kondensators über die Signal- und gemeinsamen Leitungen bis hin zu speziellen integrierten Entprellungsschaltungen wie dem MC14490 oder MAX6818. Mehrere Hardware-Entprellungsschemata finden Sie über den unten stehenden Link:

note: type: Title ===
en: Software Debouncing
de: Software-Debouncing

note: type: Plain text
en: The Hardware Abstraction Layer (HAL) of LinuxCNC includes a debounce component. This component has a single input pin and a single output pin. Its job is to monitor the input and to send an output after the input has activated for a programmed delay period. More information can be found for the debounce component by visiting the following page:
de: Die Hardware-Abstraktionsschicht (HAL) von LinuxCNC enthält eine Entprellungskomponente. Diese Komponente hat einen einzelnen Eingangspin und einen einzelnen Ausgangspin. Ihre Aufgabe ist es, den Eingang zu überwachen und einen Ausgang zu senden, nachdem der Eingang für eine programmierte Verzögerungszeit aktiviert wurde. Weitere Informationen über die Entprellungskomponente finden Sie auf der folgenden Seite:

note: type: Title ==
en: Documentation
de: Dokumentation

note: type: Plain text
en: The importance of documenting the installed wiring and components cannot be over-emphasised. Should the user want to modify the CNC system further down the track, or if trouble should arise that needs correcting, then complete and concise documentation of the wiring and equipment can save many hours of head scratching and frustration.
de: Die Bedeutung der Dokumentation der installierten Verdrahtung und Komponenten kann nicht hoch genug eingeschätzt werden. Sollte der Benutzer das CNC-System später ändern wollen oder sollten Probleme auftreten, die behoben werden müssen, kann eine vollständige und präzise Dokumentation der Verdrahtung und Ausrüstung viele Stunden des Kopfkratzens und der Frustration ersparen.

note: type: Title ===
en: Hardware Documentation
de: Hardware-Dokumentation

note: type: Plain text
en: At a minimum, make sure to save any documentation associated with the installed hardware in a safe place. Stepper controllers, break out boards, power supplies, VFDs, interfaces and controllers, servo and stepper drivers and any associated device settings are all critical components of the system and their documentation should be kept at hand for easy reference.
de: Stellen Sie zumindest sicher, dass Sie die Dokumentation der installierten Hardware an einem sicheren Ort aufbewahren. Schrittmotorsteuerungen, Break-Out-Boards, Stromversorgungen, VFDs, Schnittstellen und Steuerungen, Servo- und Schrittmotortreiber und alle zugehörigen Geräteeinstellungen sind allesamt kritische Komponenten des Systems, deren Dokumentation zum einfachen Nachschlagen bereitgehalten werden sollte.

note: type: Title ===
en: Wiring Schematics
de: Schaltpläne

note: type: Plain text
en: As the CNC machine is wired, make sure to draw up a schematic that can be referenced to later. The schematic does not have to be all that neat, but it should be understandable in such a way that it could be easily interpreted at a later date, ideally by anyone who may need to service the equipment. Include details such as wire colours used, pin numbers, part numbers and any other notes that will help explain particular details not immediately apparent from first glance at the schematic.
de: Wenn die CNC-Maschine verdrahtet ist, sollten Sie einen Schaltplan anfertigen, auf den Sie später Bezug nehmen können. Der Schaltplan muss nicht besonders übersichtlich sein, aber er sollte so verständlich sein, dass er später leicht interpretiert werden kann, idealerweise von jedem, der die Maschine warten muss. Fügen Sie Details wie die verwendeten Kabelfarben, Pin-Nummern, Teilenummern und andere Notizen hinzu, die helfen, bestimmte Details zu erklären, die nicht sofort auf den ersten Blick auf den Schaltplan ersichtlich sind.

note: type: Title ===
en: Wiring Identification
de: Identifizierung der Verdrahtung

note: type: Plain text
en: Take the time to identify each wire in the system. When a bundle of wires has been cable-tied in place it can be very difficult to look at them and know for sure which wire goes where. Label the motor wires with the joint or axis they are associated with, or identify each signal wire so that it is easy to identify what that signal does.  It will also help if this information is transferred to the wiring schematics.
de: Nehmen Sie sich die Zeit, jedes Kabel im System zu identifizieren. Wenn ein Bündel von Drähten mit Kabeln verbunden wurde, kann es sehr schwierig sein, sie zu betrachten und mit Sicherheit zu wissen, welcher Draht wohin gehört. Beschriften Sie die Motordrähte mit dem Gelenk oder der Achse, zu dem/der sie gehören, oder kennzeichnen Sie jeden Signaldraht, damit Sie leicht erkennen können, was das Signal bewirkt.  Es ist auch hilfreich, wenn diese Informationen auf die Schaltpläne übertragen werden.

note: type: Title =
en: ClassicLadder Programming(((ClassicLadder Programming,CL Programming)))
de: ClassicLadder / Kontaktplan Programmierung(((Kontaktplan-Programmierung,CL-Programmierung)))

note: type: Title ==
en: Ladder Concepts
de: SPS / Kontaktplan Konzepte

note: type: Plain text
en: ClassicLadder is a type of programming language originally implemented on industrial PLCs (it's called Ladder Programming). It is based on the concept of relay contacts and coils, and can be used to construct logic checks and functions in a manner that is familiar to many systems integrators. Ladder consists of rungs that may have branches and resembles an electrical circuit. It is important to know how ladder programs are evaluated when running.
de: ClassicLadder ist eine Art Programmiersprache, die ursprünglich auf industriellen SPS implementiert wurde (sie wird Kontaktplan Programmierung genannt, engl. der Ähnlichkeit zu Leitern halber 'ladder programming') . Sie basiert auf dem Konzept der Relaiskontakte und -spulen und kann verwendet werden, um logische Prüfungen und Funktionen auf eine Weise zu konstruieren, die vielen Systemintegratoren vertraut ist. Der Kontaktplan besteht aus Sprossen, die sich verzweigen können, und ähnelt einem elektrischen Schaltkreis. Es ist wichtig zu wissen, wie Kontaktplanprogramme bei der Ausführung ausgewertet werden.

note: type: Plain text
en: It seems natural that each line would be evaluated left to right, then the next line down, etc., but it doesn't work this way in ladder logic.  Ladder logic 'scans' the ladder rungs 3 times to change the state of the outputs.
de: Entsprechend unserer Gewohnheiten würden wir erwarten, dass jede Zeile von links nach rechts ausgewertet wird, dann die nächste Zeile nach unten usw., aber in der Kontaktplanlogik funktioniert das nicht so.  In der Kontaktplanlogik werden die Kontaktsprossen 3 Mal "gescannt", um den Zustand der Ausgänge zu ändern.

note: type: Plain text
en: the inputs are read and updated
de: die Eingänge werden gelesen und aktualisiert

note: type: Plain text
en: the logic is figured out
de: die Logik wird abgeleitet

note: type: Plain text
en: the outputs are set
de: die Ausgänge (engl. outputs) werden gesetzt

note: type: Plain text
en: This can be confusing at first if the output of one line is read by the input of a another rung. There will be one scan before the second input becomes true after the output is set.
de: Dies kann zunächst verwirrend sein, wenn der Ausgang einer Zeile durch den Eingang eines anderen Rings gelesen wird. Es wird eine Abfrage geben, bevor der zweite Eingang wahr wird, nachdem der Ausgang gesetzt wurde.

note: type: Plain text
en: Another gotcha with ladder programming is the "Last One Wins" rule. If you have the same output in different locations of your ladder the state of the last one will be what the output is set to.
de: Ein weiteres Problem bei der Kontaktplanprogrammierung ist die "Last One Wins"-Regel. Wenn Sie denselben Ausgang an verschiedenen Stellen Ihres Kontaktplans haben, wird der Zustand des letzten Ausgangs derjenige sein, auf den der Ausgang eingestellt ist.

note: type: Title ==
en: Languages
de: Sprachen

note: type: Plain text
en: The most common language used when working with ClassicLadder is 'ladder'. ClassicLadder also supports Sequential Function Chart (Grafcet).
de: Die gebräuchlichste Sprache bei der Arbeit mit ClassicLadder ist der "Kontaktplan" (engl. ladder). ClassicLadder unterstützt auch Ablaufpläne (Grafcet).

note: type: Plain text
en: There are two components to ClassicLadder.
de: ClassicLadder besteht aus zwei Komponenten.

note: type: Plain text
en: The real time module classicladder_rt
de: Das Echtzeitmodul classicladder_rt

note: type: Plain text
en: The user space module (including a GUI) classicladder
de: Das Benutzerraummodul (einschließlich einer grafischen Benutzeroberfläche) classicladder

note: type: Plain text
en: Typically ClassicLadder components are placed in the custom.hal file if your working from a Stepconf generated configuration. These must not be placed in the custom_postgui.hal file or the Ladder Editor menu will be grayed out.
de: Normalerweise werden klassische Kontaktplan-Komponenten in der Datei custom.hal platziert, wenn Sie mit einer von Stepconf generierten Konfiguration arbeiten. Diese dürfen nicht in der Datei custom_postgui.hal platziert werden, da sonst das Kontaktplan-Editor-Menü ausgegraut wird.

note: type: Plain text
en: Ladder files (.clp) must not contain any blank spaces in the name.
de: Kontaktplan-Dateien (.clp) dürfen keine Leerzeichen im Namen enthalten.

note: type: Title ===
en: Realtime Module
de: Echtzeit-Modul

note: type: Plain text
en: Loading the ClassicLadder real time module (classicladder_rt) is possible from a HAL file, or directly using a halcmd instruction. The first line loads real time the ClassicLadder module. The second line adds the function classicladder.0.refresh to the servo thread. This line makes ClassicLadder update at the servo thread rate.
de: Das Laden des ClassicLadder-Echtzeitmoduls (classicladder_rt) ist aus einer HAL-Datei oder direkt mit einem halcmd-Befehl möglich. Die erste Zeile lädt das ClassicLadder-Modul in Echtzeit. Die zweite Zeile fügt die Funktion classicladder.0.refresh in den Servo-Thread ein. Diese Zeile bewirkt, dass ClassicLadder mit der Rate des Servo-Threads aktualisiert wird.

note: type: Plain text
en: The speed of the thread that ClassicLadder is running in directly affects the responsiveness to inputs and outputs. If you can turn a switch on and off faster than ClassicLadder can notice it then you may need to speed up the thread. The fastest that ClassicLadder can update the rungs is one millisecond. You can put it in a faster thread but it will not update any faster. If you put it in a slower than one millisecond thread then ClassicLadder will update the rungs slower.  The current scan time will be displayed on the section display, it is rounded to microseconds. If the scan time is longer than one millisecond you may want to shorten the ladder or put it in a slower thread.
de: Die Geschwindigkeit des Threads, in dem ClassicLadder läuft, wirkt sich direkt auf die Reaktionsfähigkeit auf Eingaben und Ausgaben aus. Wenn Sie einen Schalter schneller ein- und ausschalten können, als ClassicLadder ihn wahrnehmen kann, müssen Sie den Thread möglicherweise beschleunigen. Die schnellste Zeit, in der ClassicLadder die Sprossen aktualisieren kann, ist eine Millisekunde. Sie können ihn in einen schnelleren Thread setzen, aber er wird nicht schneller aktualisieren. Wenn Sie einen langsameren Thread als eine Millisekunde verwenden, wird ClassicLadder die Sprossen langsamer aktualisieren.  Die aktuelle Abfragezeit wird in der Abschnittsanzeige angezeigt, sie wird auf Mikrosekunden gerundet. Wenn die Abfragezeit länger als eine Millisekunde ist, sollten Sie den Kontaktplan verkürzen oder in einen langsameren Thread einfügen.

note: type: Title ===
en: Variables
de: Variablen

note: type: Plain text
en: It is possible to configure the number of each type of ladder object while loading the ClassicLadder real time module. If you do not configure the number of ladder objects ClassicLadder will use the default values.
de: Es ist möglich, die Anzahl der einzelnen Arten von Kontaktplanobjekten beim Laden des ClassicLadder Echtzeitmoduls zu konfigurieren. Wenn Sie die Anzahl der Kontaktplanobjekte nicht konfigurieren, verwendet ClassicLadder die Standardwerte.

note: type: Block title
en: Default Variable Count
de: Standard-Variablenzahl

note: type: Table
en: Object Name
de: Objektname

note: type: Table
en: Variable Name
de: Variablenname

note: type: Table
en: Default Value
de: Standardwert

note: type: Table
en: Number of rungs
de: Anzahl der Sprossen

note: type: Table
en: Number of bits
de: Anzahl der Bits

note: type: Table
en: Number of word variables
de: Anzahl der Wortvariablen

note: type: Table
en: Number of timers
de: Anzahl der Timer

note: type: Table
en: Number of timers IEC
de: Anzahl der Timer IEC

note: type: Table
en: Number of monostables
de: Anzahl der Monostabilen

note: type: Table
en: Number of counters
de: Anzahl der Zähler

note: type: Table
en: Number of HAL inputs bit pins
de: Anzahl der Bitpins der HAL-Eingänge

note: type: Table
en: Number of HAL output bit pins
de: Anzahl der HAL-Ausgangsbit-Pins

note: type: Table
en: Number of arithmetic expressions
de: Anzahl der arithmetischen Ausdrücke

note: type: Table
en: Number of Sections
de: Anzahl der Abschnitte

note: type: Table
en: Number of Symbols
de: Anzahl der Symbole

note: type: Table
en: Number of S32 inputs
de: Anzahl der S32-Eingänge

note: type: Table
en: Number of S32 outputs
de: Anzahl der S32-Ausgänge

note: type: Table
en: Number of Float inputs
de: Anzahl der Float-Eingänge

note: type: Table
en: Number of Float outputs
de: Anzahl der Float-Ausgänge

note: type: Plain text
en: Objects of most interest are numPhysInputs, numPhysOutputs, numS32in, and numS32out.
de: Objekte von größtem Interesse sind numPhysInputs, numPhysOutputs, numS32in und numS32out.

note: type: Plain text
en: Changing these numbers will change the number of HAL bit pins available. numPhysInputs and numPhysOutputs control how many HAL bit (on/off) pins are available. numS32in and numS32out control how many HAL signed integers (+- integer range) pins are available.
de: Das Ändern dieser Zahlen ändert die Anzahl der verfügbaren HAL-Bit-Pins. numPhysInputs und numPhysOutputs steuern, wie viele HAL-Bit-Pins (ein/aus) verfügbar sind. numS32in und numS32out steuern, wie viele HAL-Pins für ganze Zahlen mit Vorzeichen (+- Ganzzahlbereich) verfügbar sind.

note: type: Plain text
en: For example (you don't need all of these to change just a few):
de: Zum Beispiel (Sie brauchen nicht alle, nur einige wenige zu ändern):

note: type: Plain text
en: To load the default number of objects:
de: Um die Standardanzahl von Objekten zu laden:

note: type: Title ==
en: Loading the ClassicLadder user module
de: Laden des ClassicLadder Benutzermoduls

note: type: Plain text
en: ClassicLadder HAL commands must executed before the GUI loads or the menu item Ladder Editor will not function. If you used the Stepper Config Wizard place any ClassicLadder HAL commands in the custom.hal file.
de: ClassicLadder-HAL-Befehle müssen ausgeführt werden, bevor die GUI geladen wird, sonst funktioniert der Menüpunkt Kontaktplan-Editor nicht. Wenn Sie den Stepper Config Wizard verwendet haben, platzieren Sie alle ClassicLadder-HAL-Befehle in der Datei custom.hal.

note: type: Plain text
en: To load the user module:
de: Zum Laden des Benutzermoduls:

note: type: Plain text
en: Only one .clp file can be loaded. If you need to divide your ladder then use sections.
de: Es kann nur eine .clp-Datei geladen werden. Wenn Sie Ihren Kontaktplan unterteilen müssen, dann verwenden Sie Abschnitte.

note: type: Plain text
en: To load a ladder file:
de: Um eine Kontaktplan-Datei zu laden:

note: type: Plain text
en: ClassicLadder Loading Options
de: ClassicLadder Lade-Optionen

note: type: Plain text
en: '--nogui' - (loads without the ladder editor) normally used after debugging is finished.
de: --nogui' - (lädt ohne den Kontaktplan-Editor) wird normalerweise verwendet, wenn die Fehlersuche beendet ist.

note: type: Plain text
en: '--modbus_port=port' - (loads the modbus port number)
de: '--modbus_port=port' - (lädt die Modbus-Portnummer)

note: type: Plain text
en: '--modmaster' - (initializes MODBUS master) should load the ladder program at the same time or the TCP is default port.
de: '--modmaster' - (initialisiert den MODBUS-Master) sollte das Kontaktplanprogramm zur gleichen Zeit laden oder der TCP-Port ist Standard.

note: type: Plain text
en: '--modslave' - (initializes MODBUS slave) only TCP
de: '--modslave' - (initialisiert MODBUS-Slave) nur TCP

note: type: Plain text
en: To use ClassicLadder with HAL without EMC:
de: Zur Verwendung von ClassicLadder mit HAL ohne EMC:

note: type: Plain text
en: The -w tells HAL not to close down the HAL environment until ClassicLadder is finished.
de: Die Option -w weist HAL an, die HAL-Umgebung nicht zu schließen, bevor Classic Ladder beendet ist.

note: type: Plain text
en: If you first load ladder program with the '--nogui' option then load ClassicLadder again with no options the GUI will display the last loaded ladder program.
de: Wenn Sie zuerst ein Kontaktplanprogramm mit der Option '--nogui' laden und dann ClassicLadder erneut ohne Optionen laden, zeigt die GUI das zuletzt geladene Kontaktplanprogramm an.

note: type: Plain text
en: In AXIS you can load the GUI from File/Ladder Editor...
de: In AXIS können Sie die GUI über Datei/Kontaktplan-Editor... laden.

note: type: Plain text
en: If you load ClassicLadder with the GUI it will display two windows: section display, and section manager.
de: Wenn Sie ClassicLadder mit der GUI laden, werden zwei Fenster angezeigt: Abschnittsanzeige und Abschnittsmanager.

note: type: Title ===
en: Sections Manager
de: Sektions-Manager

note: type: Plain text
en: When you first start up ClassicLadder you get an empty Sections Manager window.
de: Wenn Sie ClassicLadder zum ersten Mal starten, sehen Sie ein leeres Fenster des Abschnittsmanagers.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Sections Manager Default Window
de: Sections Manager Standardfenster

note: type: Plain text
en: This window allows you to name, create or delete sections and choose what language that section uses. This is also how you name a subroutine for call coils.
de: In diesem Fenster können Sie Abschnitte benennen, erstellen oder löschen und auswählen, welche Sprache der Abschnitt verwendet. Auf diese Weise benennen Sie auch ein Unterprogramm für Anrufspulen.

note: type: Title ===
en: Section Display
de: Abschnittsanzeige

note: type: Plain text
en: When you first start up ClassicLadder you get an empty Section Display window.  Displayed is one empty rung.
de: Wenn Sie ClassicLadder zum ersten Mal starten, sehen Sie ein leeres Abschnittsanzeigefenster. Es wird eine leere Sprosse angezeigt.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Section Display Default Window
de: Standardfenster der Abschnittsanzeige

note: type: Plain text
en: Most of the buttons are self explanatory:
de: Die meisten Buttons sind selbsterklärend:

note: type: Plain text
en: The Vars button is for looking at variables, toggle it to display one, the other, both, then none of the windows.
de: Die Button Vars dient zur Anzeige von Variablen. Sie können sie umschalten, um das eine, das andere, beide oder keines der Fenster anzuzeigen.

note: type: Plain text
en: The Config button is used for modbus and shows the max number of ladder elements that was loaded with the real time module.
de: Der Button Config wird für Modbus verwendet und zeigt die maximale Anzahl von Kontaktplanelementen an, die mit dem Echtzeitmodul geladen wurden.

note: type: Plain text
en: The Symbols button will display an editable list of symbols for the variables (hint you can name the inputs, outputs, coils etc).
de: Der Button Symbole zeigt eine editierbare Liste von Symbolen für die Variablen an (Hinweis: Sie können die Eingänge, Ausgänge, Spulen usw. benennen).

note: type: Plain text
en: The Quit button will shut down the user program meaning Modbus and the display. The real time ladder program will still run in the background.
de: Der Button Beenden (engl. quit) beendet das Benutzerprogramm, d. h. Modbus und das Display. Das Echtzeit-Kontaktplanprogramm läuft weiterhin im Hintergrund.

note: type: Plain text
en: The check box at the top right allows you to select whether variable names or symbol names are displayed
de: Über das Kontrollkästchen oben rechts können Sie auswählen, ob Variablennamen oder Symbolnamen angezeigt werden

note: type: Plain text
en: You might notice that there is a line under the ladder program display that reads "Project failed to load..." That is the status bar that gives you info about elements of the ladder program that you click on in the display window. This status line will now display HAL signal names for variables %I, %Q and the first %W (in an equation) You might see some funny labels, such as (103) in the rungs. This is displayed (on purpose) because of an old bug- when erasing elements older versions sometimes didn't erase the object with the right code. You might have noticed that the long horizontal connection button sometimes didn't work in the older versions. This was because it looked for the 'free' code but found something else. The number in the brackets is the unrecognized code. The ladder program will still work properly, to fix it erase the codes with the editor and save the program.
de: Vielleicht fällt Ihnen auf, dass unter der Anzeige des Kontaktplanprogramms eine Zeile mit der Aufschrift "Projekt konnte nicht geladen werden..." zu sehen ist. Das ist die Statusleiste, die Ihnen Informationen über Elemente des Kontaktplanprogramms gibt, auf die Sie im Anzeigefenster klicken. In dieser Statuszeile werden nun die HAL-Signalnamen für die Variablen %I, %Q und das erste %W (in einer Gleichung) angezeigt. Möglicherweise sehen Sie einige lustige Bezeichnungen, wie (103) in den Sprossen. Dies wird (absichtlich) aufgrund eines alten Fehlers angezeigt - beim Löschen von Elementen löschten ältere Versionen manchmal das Objekt nicht mit dem richtigen Code. Vielleicht haben Sie bemerkt, dass die lange horizontale Verbindungstaste in älteren Versionen manchmal nicht funktionierte. Das lag daran, dass das Programm nach dem 'freien' Code suchte, aber etwas anderes fand. Die Zahl in den Klammern ist der nicht erkannte Code. Das Kontaktplanprogramm funktioniert trotzdem, löschen Sie die Codes mit dem Editor und speichern Sie das Programm.

note: type: Title ===
en: The Variable Windows
de: Die Variablenfenster

note: type: Plain text
en: This are two variable windows: the Bit Status Window (boolean) and the Watch Window (signed integer). The Vars button is in the Section Display Window, toggle the Vars button to display one, the other, both, then none of the variable windows.
de: Dies sind zwei Variablenfenster: das Bitstatus-Fenster (boolesch) und das Watch-Fenster (vorzeichenbehaftete Ganzzahl). Die Schaltfläche "Variablen" befindet sich im Fenster "Abschnittsanzeige". Wechseln Sie mit dem Button "Variablen" die Anzeige, um das eine, das andere, beide oder keines der Variablenfenster anzuzeigen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Bit Status Window
de: Bit-Status-Fenster

note: type: Plain text
en: The Bit Status Window displays some of the boolean (on/off) variable data.  Notice all variables start with the % sign. The %I variables represent HAL input bit pins. The %Q represents the relay coil and HAL output bit pins. The %B represents an internal relay coil or internal contact. The three edit areas at the top allow you to select what 15 variables will be displayed in each column. For instance, if the %B Variable column were 15 entries high, and you entered 5 at the top of the column, variables %B5 to %B19 would be displayed. The check boxes allow you to set and unset %B variables manually as long as the ladder program isn't setting them as outputs.  Any Bits that are set as outputs by the program when ClassicLadder is running can not be changed and will be displayed as checked if on and unchecked if off.
de: Im Bitstatusfenster werden einige der booleschen Variablen (ein/aus) angezeigt.  Beachten Sie, dass alle Variablen mit dem %-Vorzeichen beginnen. Die %I-Variablen stellen HAL-Eingangsbit-Pins dar. Der %Q steht für die Relaisspule und die HAL-Ausgangsbitpins. Das %B steht für eine interne Relaisspule oder einen internen Kontakt. In den drei Bearbeitungsbereichen oben können Sie auswählen, welche 15 Variablen in jeder Spalte angezeigt werden. Wenn beispielsweise die Spalte %B Variable 15 Einträge hoch wäre und Sie oben in der Spalte 5 eingegeben haben, werden die Variablen %B5 bis %B19 angezeigt. Mit den Kontrollkästchen können Sie %B-Variablen manuell festlegen und deaktivieren, solange das Leiterprogramm sie nicht als Ausgaben festlegt.  Alle Bits, die vom Programm als Ausgaben festgelegt werden, wenn ClassicLadder ausgeführt wird, können nicht geändert werden und werden als aktiviert angezeigt, wenn sie aktiviert sind, und als deaktiviert, wenn sie deaktiviert sind.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Watch Window
de: Schaufenster

note: type: Plain text
en: The Watch Window displays variable status. The edit box beside it is the number stored in the variable and the drop-down box beside that allow you to choose whether the number to be displayed in hex, decimal or binary. If there are symbol names defined in the symbols window for the word variables showing and the 'display symbols' checkbox is checked in the section display window, symbol names will be displayed.  To change the variable displayed, type the variable number, e.g. %W2 (if the display symbols check box is not checked) or type the symbol name (if the display symbols checkbox is checked) over an existing variable number/name and press the Enter Key.
de: Das Watch Window zeigt den Status der Variablen an. Das Eingabefeld daneben zeigt die in der Variablen gespeicherte Zahl an, und in der Dropdown-Box daneben können Sie wählen, ob die Zahl in Hex, Dezimal oder Binär angezeigt werden soll. Wenn im Symbole-Fenster Symbolnamen für die angezeigten Wortvariablen definiert sind und das Kontrollkästchen "Symbole anzeigen" im Fenster "Abschnitt anzeigen" aktiviert ist, werden die Symbolnamen angezeigt.  Um die angezeigte Variable zu ändern, geben Sie die Variablennummer ein, z. B. %W2 (wenn das Kontrollkästchen "Symbole anzeigen" nicht aktiviert ist), oder geben Sie den Symbolnamen (wenn das Kontrollkästchen "Symbole anzeigen" aktiviert ist) über eine bestehende Variablennummer/einen bestehenden Variablennamen ein und drücken Sie die Eingabetaste.

note: type: Title ===
en: Symbol Window
de: Symbol-Fenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Symbol Names window
de: Fenster mit Symbolnamen

note: type: Plain text
en: This is a list of 'symbol' names to use instead of variable names to be displayed in the section window when the 'display symbols' check box is checked. You add the variable name (remember the '%' symbol and capital letters), symbol name . If the variable can have a HAL signal connected to it (%I, %Q, and %W-if you have loaded s32 pin with the real time module) then the comment section will show the current HAL signal name or lack thereof. Symbol names should be kept short to display better. Keep in mind that you can display the longer HAL signal names of %I, %Q and %W variable by clicking on them in the section window. Between the two, one should be able to keep track of what the ladder program is connected to!
de: Dies ist eine Liste von "Symbol"-Namen, die anstelle von Variablennamen im Schnittfenster angezeigt werden sollen, wenn das Kontrollkästchen "Symbole anzeigen" aktiviert ist. Sie fügen den Variablennamen (denken Sie an das '%'-Symbol und Großbuchstaben), den Symbolnamen . Wenn an die Variable ein HAL-Signal angeschlossen werden kann (%I, %Q und %W - wenn Sie den s32-Pin mit dem Echtzeitmodul geladen haben), wird im Kommentarbereich der Name des aktuellen HAL-Signals oder das Fehlen eines solchen angezeigt. Symbolnamen sollten zur besseren Darstellung kurz gehalten werden. Denken Sie daran, dass Sie die längeren HAL-Signalnamen der Variablen %I, %Q und %W anzeigen lassen können, indem Sie sie im Abschnittsfenster anklicken. Auf diese Weise sollte man in der Lage sein, den Überblick darüber zu behalten, womit das Kontaktplanprogramm verbunden ist!

note: type: Title ===
en: The Editor window
de: Das Editor-Fenster

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Editor Window
de: Editor-Fenster

note: type: Plain text
en: 'Add' - adds a rung after the selected rung
de: 'Hinzufügen' (engl. add) - fügt eine Sprosse nach der ausgewählten Sprosse hinzu

note: type: Plain text
en: 'Insert' - inserts a rung before the selected rung
de: 'Einfügen' (engl. insert) - fügt eine Sprosse vor der ausgewählten Sprosse ein

note: type: Plain text
en: 'Delete' - deletes the selected rung
de: 'Löschen' (engl. delete) - löscht die ausgewählte Sprosse

note: type: Plain text
en: 'Modify' - opens the selected rung for editing
de: 'Bearbeiten' (engl. modify) - öffnet die ausgewählte Sprosse zur Bearbeitung

note: type: Plain text
en: Starting from the top left image:
de: Beginnend mit dem Bild oben links:

note: type: Plain text
en: Object Selector, Eraser
de: Objektauswahl, Radiergummi

note: type: Plain text
en: N.O. Input, N.C. Input, Rising Edge Input , Falling Edge Input
de: N.O. (engl. kurz für 'normally open')-Eingang, N.C. (engl. für normally closed)-Eingang, Eingang mit steigender Flanke, Eingang mit fallender Flanke

note: type: Plain text
en: Horizontal Connection, Vertical Connection , Long Horizontal Connection
de: Horizontale Verbindung, Vertikale Verbindung, Lange Horizontale Verbindung

note: type: Plain text
en: Timer IEC Block, Counter Block, Compare Variable
de: Timer IEC-Block, Zähler (engl. counter-)block, Vergleichsvariable

note: type: Plain text
en: Old Timer Block, Old Monostable Block (These have been replaced by the IEC Timer)
de: Alter Timer-Block, alter monostabiler Block (diese wurden durch den IEC-Timer ersetzt)

note: type: Plain text
en: COILS - N.O. Output, N.C. Output, Set Output, Reset Output
de: SPULEN (engl. coils) - N.O. Ausgang, N.C. Ausgang, den Ausgang setzen, Ausgang zurücksetzen

note: type: Plain text
en: Jump Coil, Call Coil, Variable Assignment
de: Jump Coil, Call Coil, Variable Zuweisung

note: type: Plain text
en: A short description of each of the buttons:
de: Eine kurze Beschreibung der einzelnen Buttons:

note: type: Plain text
en: 'Selector' - allows you to select existing objects and modify the information.
de: 'Selector' - ermöglicht es Ihnen, vorhandene Objekte auszuwählen und die Informationen zu ändern.

note: type: Plain text
en: 'Eraser' - erases an object.
de: 'Radiergummi' (engl. eraser) - löscht ein Objekt.

note: type: Plain text
en: 'N.O. Contact' - creates a normally open contact. It can be an external HAL-pin (%I) input contact, an internal-bit coil (%B) contact or a external coil (%Q) contact. The HAL-pin input contact is closed when the HAL-pin is true. The coil contacts are closed when the corresponding coil is active (%Q2 contact closes when %Q2 coil is active).
de: 'N.O. Contact' - erzeugt einen normalerweise offenen Kontakt. Es kann sich um einen externen HAL-Pin (%I) Eingangskontakt, einen internen Bitspulenkontakt (%B) oder einen externen Spulenkontakt (%Q) handeln. Der HAL-Pin-Eingangskontakt wird geschlossen, wenn der HAL-Pin true ist. Die Spulenkontakte werden geschlossen, wenn die entsprechende Spule aktiv ist (%Q2-Kontakt schließt sich, wenn %Q2-Spule aktiv ist).

note: type: Plain text
en: 'N.C. Contact' - creates a normally closed contact. It is the same as the N.O. contact except that the contact is open when the HAL-pin is true or the coil is active.
de: 'N.C. Kontakt' - erstellt einen normalerweise geschlossenen Kontakt. Es ist das gleiche wie der N.O. Kontakt, außer dass der Kontakt offen ist, wenn der HAL-Pin wahr ist oder die Spule aktiv ist.

note: type: Plain text
en: 'Rising Edge Contact' - creates a contact that is closed when the HAL-pin goes from False to true, or the coil from not-active to active.
de: 'Rising Edge Contact' - erzeugt einen Kontakt, der geschlossen wird, wenn der HAL-Pin von False auf True oder die Spule von nicht-aktiv auf aktiv wechselt.

note: type: Plain text
en: 'Falling Edge Contact' - creates a contact that is closed when the HAL-pin goes from true to false or the coil from active to not.
de: 'Falling Edge Contact' - erzeugt einen Kontakt, der geschlossen wird, wenn der HAL-Pin von true nach false oder die Spule von aktiv zu not wechselt.

note: type: Plain text
en: 'Horizontal Connection' - creates a horizontal connection to objects.
de: 'Horizontale Verbindung' - erzeugt eine horizontale Verbindung zu Objekten.

note: type: Plain text
en: 'Vertical Connection' - creates a vertical connection to horizontal lines.
de: 'Vertikale Verbindung' - erzeugt eine vertikale Verbindung zu horizontalen Linien.

note: type: Plain text
en: 'Horizontal Running Connection' - creates a horizontal connection between two objects and is a quick way to connect objects that are more than one block apart.
de: 'Horizontal Running Connection' - erstellt eine horizontale Verbindung zwischen zwei Objekten und ist eine schnelle Möglichkeit, Objekte zu verbinden, die mehr als einen Block voneinander entfernt sind.

note: type: Plain text
en: 'IEC Timer' - creates a timer and replaces the 'Timer'.
de: 'IEC Timer' - erstellt einen Timer und ersetzt den 'Timer'.

note: type: Plain text
en: 'Timer' - creates a Timer Module (depreciated use IEC Timer instead).
de: 'Timer' - erstellt ein Timer-Modul (veraltet, verwenden Sie stattdessen IEC-Timer).

note: type: Plain text
en: 'Monostable' - creates a one-shot monostable module
de: 'Monostabil' - erstellt ein monostabiles One-Shot-Modul

note: type: Plain text
en: 'Counter' - creates a counter module.
de: 'Counter' - erstellt ein Zählermodul.

note: type: Plain text
en: 'Compare' - creates a compare block to compare variable to values or other variables. (eg %W1<=5 or %W1=%W2) Compare cannot be placed in the right most side of the section display.
de: 'Compare' - erstellt einen Vergleichsblock, um Variablen mit Werten oder anderen Variablen zu vergleichen. (z.B. %W1<=5 oder %W1=%W2) Der Vergleich kann nicht auf der rechten Seite der Abschnittsanzeige platziert werden.

note: type: Plain text
en: 'Variable Assignment' - creates an assignment block so you to assign values to variables. (eg %W2=7 or %W1=%W2) ASSIGNMENT functions can only be placed at the right most side of the section display.
de: 'Variable Assignment' - erstellt einen Zuordnungsblock, damit Sie Variablen Werte zuweisen können. (z.B. %W2=7 oder %W1=%W2) ASSIGNMENT-Funktionen können nur auf der rechten Seite der Abschnittsanzeige platziert werden.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Config Window
de: Konfigurationsfenster

note: type: Plain text
en: The config window shows the current project status and has the Modbus setup tabs.
de: Das Konfigurationsfenster zeigt den aktuellen Projektstatus und enthält die Registerkarten für die Modbus-Einrichtung.

note: type: Title ==
en: Ladder objects
de: SPS Objekte

note: type: Title ===
en: CONTACTS
de: KONTAKTE

note: type: Plain text
en: Represent switches or relay contacts. They are controlled by the variable letter and number assigned to them.
de: Stellen Schalter oder Relaiskontakte dar. Sie werden durch den ihnen zugewiesenen variablen Buchstaben und die Nummer gesteuert.

note: type: Plain text
en: 'N.O. Contact' - image:images/ladder_action_load.png["Normally Open Contact"] (Normally Open)  When the variable is false the switch is off.
de: N.O. Contact' - image:images/ladder_action_load.png["Normally Open Contact"] (Schließer) Ist die Variable mit false belegt, dann ist der Schalter aus.

note: type: Plain text
en: 'N.C. Contact' - image:images/ladder_action_loadbar.png["Normally Closed Contact"] (Normally Closed) When the variable is false the switch is on.
de: N.C. Contact' - image:images/ladder_action_loadbar.png["Normally Closed Contact"] (Normalerweise geschlossen) Ist die Variable auf false gesetzt, so ist der Schalter eingeschaltet.

note: type: Plain text
en: 'Rising Edge Contact' - When the variable changes from false to true, the switch is PULSED on.
de: 'Rising Edge Contact' - Wenn die Variable von false in true wechselt, wird der Schalter gepulst.

note: type: Plain text
en: 'Falling Edge Contact' - When the variable changes from true to false, the switch is PULSED on.
de: 'Falling Edge Contact' - Wenn die Variable von true zu false wechselt, wird der Schalter gepulst eingeschaltet.

note: type: Title ===
en: IEC TIMERS
de: IEC-TIMER

note: type: Plain text
en: Represent new count down timers. IEC Timers replace Timers and Monostables.
de: Stellt neue Countdown-Timer dar. IEC-Timer ersetzen Timer und Monoflops.

note: type: Plain text
en: IEC Timers have 2 contacts.
de: IEC Timer haben 2 Kontakte.

note: type: Plain text
en: 'I' - input contact
de: 'I' - Eingabekontakt

note: type: Plain text
en: 'Q' - output contact
de: 'Q' - Ausgangskontakt

note: type: Plain text
en: There are three modes - TON, TOF, TP.
de: Es gibt drei Modi - TON, TOF, TP.

note: type: Plain text
en: 'TON' - When timer input is true countdown begins and continues as long as input remains true. After countdown is done and as long as timer input is still true the output will be true.
de: 'TON' - Wenn die Timer-Eingabe wahr ist, beginnt der Countdown und wird fortgesetzt, solange die Eingabe wahr bleibt. Nachdem der Countdown abgeschlossen ist und solange die Timer-Eingabe noch wahr, ist die Ausgabe wahr.

note: type: Plain text
en: 'TOF' - When timer input is true, sets output true. When the input is false the timer counts down then sets output false.
de: 'TOF' - Wenn die Timereingabe true ist, wird die Ausgabe auf true gesetzt. Wenn die Eingabe false ist, zählt der Timer herunter und setzt die Ausgabe auf false.

note: type: Plain text
en: 'TP' - When timer input is pulsed true or held true timer sets output true till timer counts down. (one-shot)
de: 'TP' - Wenn der Timer-Eingang auf wahr gepulst oder wahr gehalten wird, setzt der Timer den Ausgang auf wahr, bis der Timer herunterzählt. (einmalig)

note: type: Plain text
en: The time intervals can be set in multiples of 100ms, seconds, or minutes.
de: Die Zeitintervalle können in Vielfachen von 100 ms, Sekunden oder Minuten eingestellt werden.

note: type: Plain text
en: There are also Variables for IEC timers that can be read and/or written to in compare or operate blocks.
de: Es gibt auch Variablen für IEC-Timer, die in Vergleichs- oder Betriebsblöcken gelesen und/oder beschrieben werden können.

note: type: Plain text
en: '%TMxxx.Q' - timer done (Boolean, read write)
de: '%TMxxx.Q' - Timer beendet (Boolesch, Lesen/Schreiben)

note: type: Plain text
en: '%TMxxx.P' - timer preset (read write)
de: '%TMxxx.P' - Timer-Voreinstellung (Lesen/Schreiben)

note: type: Plain text
en: '%TMxxx.V' - timer value (read write)
de: '%TMxxx.V' - Timer-Wert (lesender Schreibvorgang)

note: type: Title ===
en: TIMERS
de: ZEITGLIEDER (engl. timers)

note: type: Plain text
en: Represent count down timers. This is deprecated and replaced by IEC Timers.
de: Repräsentiert Countdown-Timer. Dies ist veraltet und wird durch IEC Timers ersetzt.

note: type: Plain text
en: Timers have 4 contacts.
de: Timer haben 4 Kontakte.

note: type: Plain text
en: 'E' - enable (input) starts timer when true, resets when goes false
de: 'E' - aktivieren (engl. enable) (Eingang) startet den Timer, wenn wahr, setzt zurück, wenn er falsch wird

note: type: Plain text
en: 'C' - control (input) must be on for the timer to run (usually connect to E)
de: 'C' - Steuerung (engl. control) (Eingang) muss eingeschaltet sein, damit der Timer läuft (normalerweise mit E verbinden)

note: type: Plain text
en: 'D' - done (output) true when timer times out and as long as E remains true
de: 'D' - fertig (engl. done) (Ausgang) wahr, wenn der Timer abläuft und solange E wahr bleibt

note: type: Plain text
en: 'R' - running (output) true when timer is running
de: 'R' - läuft (engl. running) (Ausgang) true, wenn Timer läuft

note: type: Plain text
en: The timer base can be multiples of milliseconds, seconds, or minutes.
de: Die Basis des Timers kann ein Vielfaches von Millisekunden, Sekunden oder Minuten sein.

note: type: Plain text
en: There are also Variables for timers that can be read and/or written to in compare or operate blocks.
de: Es gibt auch Variablen für Zeitgeber, die in Vergleichs- oder Operationsblöcken gelesen und/oder beschrieben werden können.

note: type: Plain text
en: '%Txx.R' - Timer xx running (Boolean, read only)
de: '%Txx.R' - Timer xx läuft (boolesch, nur Lesen)

note: type: Plain text
en: '%Txx.D' - Timer xx done (Boolean, read only)
de: '%Txx.D' - Timer xx fertig (Boolesch, nur lesbar)

note: type: Plain text
en: '%Txx.V' - Timer xx current value (integer, read only)
de: '%Txx.V' - Timer xx aktueller Wert (Ganzzahl, nur lesbar)

note: type: Plain text
en: '%Txx.P' - Timer xx preset (integer, read or write)
de: '%Txx.P' - Timer xx voreingestellt (Ganzzahl, lesen oder schreiben)

note: type: Title ===
en: MONOSTABLES
de: KIPPSTUFEN (engl. monostables)

note: type: Plain text
en: Represent the original one-shot timers. This is now deprecated and replaced by IEC Timers.
de: Repräsentieren die ursprünglichen One-Shot-Timer. Dies ist jetzt veraltet und wird durch IEC-Timer ersetzt.

note: type: Plain text
en: Monostables have 2 contacts, I and R.
de: Monostabile haben 2 Kontakte, I und R.

note: type: Plain text
en: 'I' - input (input) will start the mono timer running.
de: 'I' - Eingang (Eingang) startet den Mono-Timer.

note: type: Plain text
en: 'R' - running (output) will be true while timer is running.
de: 'R' - Running (Ausgang) ist wahr, während der Timer läuft.

note: type: Plain text
en: The I contact is rising edge sensitive meaning it starts the timer only when changing from false to true (or off to on). While the timer is running the I contact can change with no effect to the running timer. R will be true and stay true till the timer finishes counting to zero. The timer base can be multiples of milliseconds, seconds, or minutes.
de: Der I-Kontakt reagiert auf eine steigende Flanke, d.h. er startet den Timer nur, wenn er von false auf true (oder von off auf on) wechselt. Während der Timer läuft, kann sich der I-Kontakt ändern, ohne dass dies Auswirkungen auf den laufenden Timer hat. R wird wahr und bleibt wahr, bis der Timer auf Null gezählt hat. Die Basis des Timers kann ein Vielfaches von Millisekunden, Sekunden oder Minuten sein.

note: type: Plain text
en: There are also Variables for monostables that can be read and/or written to in compare or operate blocks.
de: Es gibt auch Variablen für Kippstufen, die in Vergleichs- oder Operationsblöcken gelesen und/oder beschrieben werden können.

note: type: Plain text
en: '%Mxx.R' - Monostable xx running (Boolean, read only)
de: '%Mxx.R' - Kippstufe xx läuft (boolesch, nur lesbar)

note: type: Plain text
en: '%Mxx.V' - Monostable xx current value (integer, read only)
de: '%Mxx.V' - Monostabiler xx aktueller Wert (ganze Zahl, schreibgeschützt)

note: type: Plain text
en: '%Mxx.P' - Monostable xx preset (integer, read or write)
de: '%Mxx.P' - Monostabile xx-Voreinstellung (Ganzzahl, Lesen oder Schreiben)

note: type: Title ===
en: COUNTERS
de: ZÄHLER (engl. counters)

note: type: Plain text
en: Represent up/down counters.
de: Aufwärts-/Abwärtszähler darstellen.

note: type: Plain text
en: There are 7 contacts:
de: Es gibt 7 Kontakte:

note: type: Plain text
en: 'R' - reset (input) will reset the count to 0.
de: 'R' - reset (Eingabe) setzt die Anzahl auf 0 zurück.

note: type: Plain text
en: 'P' - preset (input) will set the count to the preset number assigned from the edit menu.
de: 'P' - Voreinstellung (engl. preset) (Eingabe) setzt den Zähler auf die im Bearbeitungsmenü zugewiesene Voreinstellungsnummer.

note: type: Plain text
en: 'U' - up count (input) will add one to the count.
de: 'U' - Aufwärtszählung (Eingabe) fügt der Zählung eins hinzu.

note: type: Plain text
en: 'D' - down count (input) will subtract one from the count.
de: 'D' - Abwärtszählung (Eingang) subtrahiert eins von der Zählung.

note: type: Plain text
en: 'E' - under flow (output) will be true when the count rolls over from 0 to 9999.
de: 'E' - under flow (output) ist wahr, wenn die Zählung von 0 auf 9999 übertragen wird.

note: type: Plain text
en: 'D' - done (output) will be true when the count equals the preset.
de: 'D' - done (Ausgabe) ist wahr, wenn die Anzahl gleich der Voreinstellung ist.

note: type: Plain text
en: 'F' - overflow (output) will be true when the count rolls over from 9999 to 0.
de: 'F' - Überlauf (Ausgabe) ist wahr, wenn die Anzahl von 9999 auf 0 übertragen wird.

note: type: Plain text
en: The up and down count contacts are edge sensitive meaning they only count when the contact changes from false to true (or off to on if you prefer).
de: Die Aufwärts- und Abwärtszählkontakte sind flankenempfindlich, d. h. sie zählen nur, wenn der Kontakt von falsch auf wahr wechselt (oder von aus auf ein, wenn Sie das wünschen).

note: type: Plain text
en: The range is 0 to 9999.
de: Der Bereich reicht von 0 bis 9999.

note: type: Plain text
en: There are also Variables for counters that can be read and/or written to in compare or operate blocks.
de: Es gibt auch Variablen für Zähler, die in Vergleichs- oder Operationsblöcken gelesen und/oder beschrieben werden können.

note: type: Plain text
en: '%Cxx.D' - Counter xx done (Boolean, read only)
de: '%Cxx.D' - Zähler xx fertig (Boolesch, nur lesbar)

note: type: Plain text
en: '%Cxx.E' - Counter xx empty overflow (Boolean, read only)
de: '%Cxx.E' - Zähler xx leerer Überlauf (boolesch, schreibgeschützt)

note: type: Plain text
en: '%Cxx.F' - Counter xx full overflow (Boolean, read only)
de: '%Cxx.F' - Zähler xx voller Überlauf (boolesch, nur Lesen)

note: type: Plain text
en: '%Cxx.V' - Counter xx current value (integer, read or write)
de: '%Cxx.V' - Zähler xx aktueller Wert (Ganzzahl, Lesen oder Schreiben)

note: type: Plain text
en: '%Cxx.P' - Counter xx preset (integer, read or write)
de: '%Cxx.P' - Zähler xx voreingestellt (Ganzzahl, lesen oder schreiben)

note: type: Title ===
en: COMPARE
de: VERGLEICHEN

note: type: Plain text
en: For arithmetic comparison. Is variable %XXX = to this number (or evaluated number)
de: Für den arithmetischen Vergleich. Ist die Variable %XXX = zu dieser Zahl (oder der ausgewerteten Zahl)

note: type: Plain text
en: The compare block will be true when comparison is true. you can use most math symbols:
de: Der Vergleichsblock wird wahr, wenn der Vergleich wahr ist. Sie können die meisten mathematischen Symbole verwenden:

note: type: Plain text
en: +, - ,* , /, = (standard math symbols)
de: +, - ,* , /, = (mathematische Standardzeichen)

note: type: Plain text
en: < (less than), > (greater than), <= (less or equal), >= (greater or equal), <> (not equal)
de: < (kleiner als), > (größer als), <= (kleiner oder gleich), >= (größer oder gleich), <> (ungleich)

note: type: Plain text
en: (, ) separate into groups example %IF1=2,&%IF2<5 in pseudo code translates to if %IF1 is equal to 2 and %IF2 is less than 5 then the comparison is true.  Note the comma separating the two groups of comparisons.
de: (, ) trennen in Gruppen Beispiel %IF1=2,&%IF2<5 im Pseudocode bedeutet, wenn %IF1 gleich 2 ist und %IF2 kleiner als 5 ist, dann ist der Vergleich wahr.  Beachten Sie das Komma, das die beiden Gruppen von Vergleichen trennt.

note: type: Plain text
en: ^ (exponent),% (modulus),& (and),| (or),. -
de: ^ (Exponent),% (Modul),& (und),| (oder),. -

note: type: Plain text
en: ABS (absolute), MOY (French for average) ,AVG (average)
de: ABS (absolut), MOY (französisch für Durchschnitt) ,AVG (Durchschnitt)

note: type: Plain text
en: For example ABS(%W2)=1, MOY(%W1,%W2)<3.
de: Zum Beispiel ABS(%W2)=1, MOY(%W1,%W2)<3.

note: type: Plain text
en: No spaces are allowed in the comparison equation. For example %C0.V>%C0.P is a valid comparison expression while %C0.V > %CO.P is not a valid expression.
de: In der Vergleichsgleichung sind keine Leerzeichen erlaubt. Zum Beispiel ist %C0.V>%C0.P ein gültiger Vergleichsausdruck, während %C0.V > %CO.P kein gültiger Ausdruck ist.

note: type: Plain text
en: There is a list of Variables down the page that can be used for reading from and writing to ladder objects. When a new compare block is opened be sure and delete the # symbol when you enter a compare.
de: Unten auf der Seite befindet sich eine Liste von Variablen, die zum Lesen von und Schreiben in Kontaktplanobjekten verwendet werden können. Wenn ein neuer Vergleichsblock geöffnet wird, achten Sie darauf, das Symbol # zu löschen, wenn Sie einen Vergleich eingeben.

note: type: Plain text
en: To find out if word variable #1 is less than 2 times the current value of counter #0 the syntax would be:
de: Um herauszufinden, ob die Wortvariable Nr. 1 kleiner als das 2-fache des aktuellen Wertes von Zähler Nr. 0 ist, lautet die Syntax wie folgt:

note: type: Plain text
en: To find out if S32in bit 2 is equal to 10 the syntax would be:
de: Um herauszufinden, ob S32in Bit 2 gleich 10 ist, würde die Syntax lauten:

note: type: Plain text
en: Note: Compare uses the arithmetic equals not the double equals that programmers are used to.
de: Hinweis: Compare verwendet das arithmetische Gleichheitszeichen und nicht das doppelte Gleichheitszeichen, an das Programmierer gewöhnt sind.

note: type: Title ===
en: VARIABLE ASSIGNMENT
de: VARIABLENZUWEISUNG

note: type: Plain text
en: For variable assignment, e.g. assign this number (or evaluated number)  to this variable %xxx, there are two math functions MINI and MAXI that check a variable for maximum (0x80000000) and minimum values (0x07FFFFFFF) (think signed values) and keeps them from going beyond.
de: Für die Variablenzuweisung, z. B. Zuweisung dieser Zahl (oder einer ausgewerteten Zahl) an diese Variable %xxx, gibt es zwei mathematische Funktionen MINI und MAXI, die eine Variable auf Maximal- (0x80000000) und Minimalwerte (0x07FFFFFFF) prüfen (man denke an vorzeichenbehaftete Werte) und verhindern, dass diese überschritten werden.

note: type: Plain text
en: When a new variable assignment block is opened be sure to delete the # symbol when you enter an assignment.
de: Wenn ein neuer Variablenzuweisungsblock geöffnet wird, achten Sie darauf, das Symbol # zu löschen, wenn Sie eine Zuweisung eingeben.

note: type: Plain text
en: To assign a value of 10 to the timer preset of IEC Timer 0 the syntax would be:
de: Um der Timer-Voreinstellung von IEC Timer 0 den Wert 10 zuzuweisen, lautet die Syntax:

note: type: Plain text
en: To assign the value of 12 to s32out bit 3 the syntax would be:
de: Um den Wert von 12 auf s32out Bit 3 zuzuweisen, wäre folgendes:

note: type: Plain text
en: When you assign a value to a variable with the variable assignment block the value is retained until you assign a new value using the variable assignment block. The last value assigned will be restored when LinuxCNC is started.
de: Wenn Sie einer Variablen mit dem Variablenzuweisungsblock einen Wert zuweisen, bleibt der Wert erhalten, bis Sie mit dem Variablenzuweisungsblock einen neuen Wert zuweisen. Der zuletzt zugewiesene Wert wird wiederhergestellt, wenn LinuxCNC gestartet wird.

note: type: Plain text
en: The following figure shows an Assignment and a Comparison Example.  %QW0 is a S32out bit and %IW0 is a S32in bit. In this case the HAL pin classicladder.0.s32out-00 will be set to a value of 5 and when the HAL pin classicladder.0.s32in-00 is 0 the HAL pin classicladder.0.out-00 will be set to True.
de: Die folgende Abbildung zeigt ein Zuweisungs- und ein Vergleichsbeispiel.  %QW0 ist ein S32out-Bit und %IW0 ist ein S32in-Bit. In diesem Fall wird der HAL-Pin classicladder.0.s32out-00 auf einen Wert von 5 gesetzt, und wenn der HAL-Pin classicladder.0.s32in-00 0 ist, wird der HAL-Pin classicladder.0.out-00 auf True gesetzt.

note: type: Block title
en: Assign/Compare Ladder Example
de: Beispiel für Zuordnen/Vergleichen von mit SPS

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Assign/Compare Example
de: Beispiel für Zuordnen/Vergleichen

note: type: Block title
en: Assignment Expression Example
de: Beispiel für einen Zuweisungsausdruck

note: type: Block title
en: Comparison Expression Example
de: Beispiel für einen Vergleichsausdruck

note: type: Title ===
en: COILS
de: SPULEN (engl. coils)

note: type: Plain text
en: Coils represent relay coils. They are controlled by the variable letter and number assigned to them.
de: Spulen stellen Relaisspulen dar. Sie werden durch den ihnen zugewiesenen variablen Buchstaben und die Nummer gesteuert.

note: type: Plain text
en: 'N.O. COIL' - A relay coil: When coil is energized, then its contact that is normally open (short: N.O.) will be closed (turned on, true, etc.) and the current may pass.
de: N.O. COIL' - Eine Relaisspule: Wenn die Spule erregt ist, wird ihr Kontakt, der normalerweise offen ist (kurz: N.O.), geschlossen (eingeschaltet, wahr, etc.) und der Strom kann passieren.

note: type: Plain text
en: 'N.C. COIL' - A relay coil that inverses its contacts: When coil is energized, then its contact that is normally closed (short: N.C.) will be opened (turned off, false, etc) and the current flow is interrupted.
de: N.C. COIL' - Eine Relaisspule, die ihre Kontakte umkehrt: Wenn die Spule erregt wird, dann wird der normalerweise geschlossene Kontakt (engl. kurz: N.C.) geöffnet (ausgeschaltet, falsch, usw.) und der Stromfluss wird unterbrochen.

note: type: Plain text
en: 'SET COIL' - A relay coil with latching contacts: When coil is energized then its N.O. contact will be latched closed.
de: 'SET COIL' - Eine Relaisspule mit verriegelten Kontakten: Wenn die Spule erregt ist, wird der Kontakt geschlossen und bleibt dies.

note: type: Plain text
en: 'RESET COIL' - A relay coil with latching contacts: When coil is energized then its N.O. contact will be latched open.
de: 'RESET COIL' - (eine Relaisspule mit selbsthaltenden Kontakten) Wenn die Spule erregt ist, wird der N.0.-Kontakt offen gehalten.

note: type: Plain text
en: 'JUMP COIL' - A 'goto' coil: When coil is energized then the ladder program jumps to a rung (in the CURRENT section) - jump points are designated by a rung label. (Add rung labels in the section display, top left label box.)
de: 'JUMP COIL' - (eine 'goto' Spule), wenn die Spule erregt wird, springt das Kontaktplanprogramm zu einem Strompfad (im Abschnitt CURRENT) - die Sprungpunkte werden durch eine Strompfadbezeichnung gekennzeichnet. (Sprossenbeschriftungen in der Abschnittsanzeige, oben links, hinzufügen.)

note: type: Plain text
en: 'CALL COIL' - A 'gosub' coil: When coil is energized then the program jumps to a subroutine section designated by a subroutine number - subroutines are designated SR0 to SR9 (designate them in the section manager)
de: 'CALL COIL' - Eine 'gosub'-Spule: Wenn die Spule erregt wird, dann springt das Programm zu einem Unterprogrammabschnitt, der durch eine Unterprogrammnummer gekennzeichnet ist - Unterprogramme werden mit SR0 bis SR9 bezeichnet (bestimmen Sie sie im Abschnittsmanager)

note: type: Plain text
en: If you use a N.C. contact with a N.C. coil the logic will work (when the coil is energized the contact will be closed) but that is really hard to follow!
de: Wenn Sie einen NC-Kontakt mit einer NC-Spule verwenden, funktioniert die Logik (wenn die Spule erregt ist, wird der Kontakt geschlossen), aber das ist wirklich schwer zu verstehen!

note: type: Title ====
en: JUMP COIL
de: SPRUNGSPULE (engl. jump coil)

note: type: Plain text
en: A JUMP COIL is used to 'JUMP' to another section, like a goto in BASIC programming language.
de: Eine JUMP COIL wird verwendet, um zu einem anderen Abschnitt zu 'springen', wie ein goto in der Programmiersprache BASIC.

note: type: Plain text
en: If you look at the top left of the sections display window you will see a small label box and a longer comment box beside it. Now go to Editor→Modify then go back to the little box, type in a name.
de: Oben links im Fenster der Abschnittsanzeige sehen Sie ein kleines Beschriftungsfeld und ein längeres Kommentarfeld daneben. Gehen Sie nun auf Editor→Ändern und dann zurück zu dem kleinen Kästchen, um einen Namen einzugeben.

note: type: Plain text
en: Go ahead and add a comment in the comment section. This label name is the name of this rung only and is used by the JUMP COIL to identify where to go.
de: Fügen Sie einfach einen Kommentar im Kommentarbereich hinzu. Diese Bezeichnung ist nur der Name dieser Sprosse und wird von der JUMP COIL verwendet, um zu erkennen, wohin sie gehen soll.

note: type: Plain text
en: When placing a JUMP COIL, add it in the rightmost position and change the label to the rung you want to JUMP to.
de: Wenn Sie eine JUMP COIL platzieren, fügen Sie sie an der äußersten rechten Position ein und ändern die Beschriftung in die Sprosse, zu der Sie JUMPEN wollen.

note: type: Title ====
en: CALL COIL
de: RUFSPULE (engl. call coil)

note: type: Plain text
en: A CALL COIL is used to go to a subroutine section then return, like a gosub in BASIC programming language.
de: Eine CALL COIL wird verwendet, um zu einem Unterprogramm zu gelangen und dann zurückzukehren, wie ein gosub in der Programmiersprache BASIC.

note: type: Plain text
en: If you go to the sections manager window hit the add section button.  You can name this section, select what language it will use (ladder or sequential), and select what type (main or subroutine).
de: Gehen Sie zum Fenster Abschnittsmanager und klicken Sie auf die Schaltfläche Abschnitt hinzufügen.  Sie können diesen Abschnitt benennen, die Sprache (Kontaktplan oder sequentiell) und den Typ (Haupt- oder Unterprogramm) auswählen.

note: type: Plain text
en: Select a subroutine number (SR0 for example). An empty section will be displayed and you can build your subroutine.
de: Wählen Sie eine Unterprogrammnummer (z. B. SR0). Es wird ein leerer Abschnitt angezeigt und Sie können Ihr Unterprogramm erstellen.

note: type: Plain text
en: When you've done that, go back to the section manager and click on the your main section (default name prog1).
de: Wenn Sie das getan haben, gehen Sie zurück zum Abschnittsmanager und klicken Sie auf Ihren Hauptabschnitt (Standardname prog1).

note: type: Plain text
en: Now you can add a CALL COIL to your program. CALL COILs are to be placed at the rightmost position in the rung.
de: Jetzt können Sie eine CALL COIL in Ihr Programm einfügen. CALL COILs sind an der äußersten rechten Position im Strompfad zu platzieren.

note: type: Plain text
en: Remember to change the label to the subroutine number you chose before.
de: Vergessen Sie nicht, die Beschriftung in die Nummer des Unterprogramms zu ändern, die Sie zuvor gewählt haben.

note: type: Title ==
en: ClassicLadder Variables
de: ClassicLadder Variablen

note: type: Plain text
en: These Variables are used in COMPARE or OPERATE to get information about, or change specs of, ladder objects such as changing a counter preset, or seeing if a timer is done running.
de: Diese Variablen werden in COMPARE oder OPERATE verwendet, um Informationen über Kontaktplanobjekte zu erhalten oder deren Spezifikationen zu ändern, z. B. um einen Zähler zu ändern oder um zu sehen, ob ein Timer fertig ist.

note: type: Plain text
en: List of variables :
de: Liste der Variablen :

note: type: Plain text
en: '%Bxxx' - Bit memory xxx (Boolean)
de: '%Bxxx' - Bitspeicher xxx (boolesch)

note: type: Plain text
en: '%Wxxx' - Word memory xxx (32 bits signed integer)
de: '%Wxxx' - Word-Speicher xxx (32 Bit Vorzeichen)

note: type: Plain text
en: '%IWxxx' - Word memory xxx (S32 in pin)
de: '%IWxxx' - Wortspeicher xxx (S32 in Pin)

note: type: Plain text
en: '%QWxxx' - Word memory xxx (S32 out pin)
de: '%QWxxx' - Word-Speicher xxx (S32-Ausgangspin)

note: type: Plain text
en: '%IFxx' - Word memory xx (Float in pin) (*converted to S32 in ClassicLadder*)
de: '%IFxx' - Word-Speicher xx (Float in Pin) (*konvertiert in S32 in ClassicLadder*)

note: type: Plain text
en: '%QFxx' - Word memory xx (Float out pin) (*converted to S32 in ClassicLadder*)
de: '%QFxx' - Word-Speicher xx (Float-Out-Pin) (*konvertiert in S32 in ClassicLadder*)

note: type: Plain text
en: '%Txx.R' - Timer xx running (Boolean, user read only)
de: '%Txx.R' - Timer xx läuft (boolesch, schreibgeschützt für Benutzer)

note: type: Plain text
en: '%Txx.D' - Timer xx done (Boolean, user read only)
de: '%Txx.D' - Timer xx erledigt (Boolescher Wert, nur für Benutzer)

note: type: Plain text
en: '%Txx.V' - Timer xx current value (integer, user read only)
de: '%Txx.V' - Timer xx aktueller Wert (ganze Zahl, schreibgeschützt für Benutzer)

note: type: Plain text
en: '%Txx.P' - Timer xx preset (integer)
de: '%Txx.P' - Timer xx Voreinstellung (ganze Zahl)

note: type: Plain text
en: '%TMxxx.Q' - Timer xxx done (Boolean, read write)
de: '%TMxxx.Q' - Timer xxx fertig (Boolesch, lesen/schreiben)

note: type: Plain text
en: '%TMxxx.P' - Timer xxx preset (integer, read write)
de: '%TMxxx.P' - Timer xxx Voreinstellung (ganze Zahl, Schreiblese)

note: type: Plain text
en: '%TMxxx.V' - Timer xxx value (integer, read write)
de: '%TMxxx.V' - Timer xxx Wert (ganze Zahl, lesender Schreibzugriff)

note: type: Plain text
en: '%Mxx.R' - Monostable xx running (Boolean)
de: '%Mxx.R' - Monostabiles xx läuft (boolesch)

note: type: Plain text
en: '%Mxx.V' - Monostable xx current value (integer, user read only)
de: '%Mxx.V' - Monostabiler xx-Aktuellwert (Ganzzahl, nur vom Benutzer lesbar)

note: type: Plain text
en: '%Mxx.P' - Monostable xx preset (integer)
de: '%Mxx.P' - Monostabile xx-Voreinstellung (Ganzzahl)

note: type: Plain text
en: '%Cxx.D' - Counter xx done (Boolean, user read only)
de: '%Cxx.D' - Zähler xx fertig (Boolesch, Benutzer schreibgeschützt)

note: type: Plain text
en: '%Cxx.E' - Counter xx empty overflow (Boolean, user read only)
de: '%Cxx.E' - Zähler xx leerer Überlauf (Boolean, nur vom Benutzer gelesen)

note: type: Plain text
en: '%Cxx.F' - Counter xx full overflow (Boolean, user read only)
de: '%Cxx.F' - Zähler xx voller Überlauf (Boolean, schreibgeschützter Benutzer)

note: type: Plain text
en: '%Cxx.V' - Counter xx current value (integer)
de: '%Cxx.V' - Zähler xx aktueller Wert (Ganzzahl)

note: type: Plain text
en: '%Cxx.P' - Counter xx preset (integer)
de: '%Cxx.P' - Zähler xx Voreinstellung (ganze Zahl)

note: type: Plain text
en: '%Ixxx' - Physical input xxx (Boolean) (HAL input bit)
de: '%Ixxx' - Physikalischer Eingang xxx (Boolean) (HAL-Eingangsbit)

note: type: Plain text
en: '%Qxxx' - Physical output xxx (Boolean) (HAL output bit)
de: '%Qxxx' - Physikalische Ausgabe xxx (Boolesch) (HAL-Ausgangsbit)

note: type: Plain text
en: '%Xxxx' - Activity of step xxx (sequential language)
de: '%Xxxx' - Aktivität von Schritt xxx (sequentielle Sprache)

note: type: Plain text
en: '%Xxxx.V' - Time of activity in seconds of step xxx (sequential language)
de: '%Xxxx.V' - Zeit der Aktivität in Sekunden von Schritt xxx (sequenzielle Sprache)

note: type: Plain text
en: '%Exx' - Errors (Boolean, read write(will be overwritten))
de: '%Exx' - Fehler (Boolean, read write(wird überschrieben))

note: type: Title ==
en: GRAFCET (State Machine) Programming
de: GRAFCET (State Machine) Programmierung

note: type: Plain text
en: This is probably the least used and most poorly understood feature of ClassicLadder.  Sequential programming is used to make sure a series of ladder events always happen in a prescribed order. Sequential programs do not work alone. There is always a ladder program as well that controls the variables. Here are the basic rules governing sequential programs:
de: Dies ist wahrscheinlich die am wenigsten genutzte und am schlechtesten verstandene Funktion von ClassicLadder.  Die Ablaufprogrammierung wird verwendet, um sicherzustellen, dass eine Reihe von Kontaktplanereignissen immer in einer bestimmten Reihenfolge abläuft. Ablaufprogramme funktionieren nicht allein. Es gibt immer auch ein Kontaktplanprogramm, das die Variablen steuert. Hier sind die Grundregeln für Ablaufprogramme:

note: type: Plain text
en: Rule 1 : Initial situation - The initial situation is characterized by the initial steps which are by definition in the active state at the beginning of the operation.There shall be at least one initial step.
de: Regel 1: Ausgangssituation - Die Ausgangssituation wird durch die Anfangsschritte charakterisiert, die sich zu Beginn des Vorgangs per Definition im aktiven Zustand befinden; es muss mindestens einen Anfangsschritt geben.

note: type: Plain text
en: Rule 2 : R2, Clearing of a transition - A transition is either enabled or disabled. It is said to be enabled when all immediately preceding steps linked to its corresponding transition symbol are active, otherwise it is disabled. A transition cannot be cleared unless it is enabled, and its associated transition condition is true.
de: Regel 2 : R2, Löschung einer Transition - Eine Transition ist entweder aktiviert oder deaktiviert. Sie gilt als aktiviert, wenn alle unmittelbar vorangehenden Schritte, die mit dem entsprechenden Übergangssymbol verbunden sind, aktiv sind, ansonsten ist sie deaktiviert. Eine Transition kann nur gelöscht werden, wenn sie aktiviert ist und die zugehörige Transitionsbedingung wahr ist.

note: type: Plain text
en: Rule 3 : R3, Evolution of active steps - The clearing of a transition simultaneously leads to the active state of the immediately following step(s) and to the inactive state of the immediately preceding step(s).
de: Regel 3 : R3, Entwicklung aktiver Schritte - Die Löschung eines Übergangs führt gleichzeitig zum aktiven Zustand des/der unmittelbar folgenden Schrittes/Schritte und zum inaktiven Zustand des/der unmittelbar vorangehenden Schrittes/Schritte.

note: type: Plain text
en: Rule 4 : R4, Simultaneous clearing of transitions - All simultaneous cleared transitions are simultaneously cleared.
de: Regel 4 : R4, Gleichzeitige Löschung von Übergängen - Alle gleichzeitig gelöschten Übergänge werden gleichzeitig gelöscht.

note: type: Plain text
en: Rule 5 : R5, Simultaneous activation and deactivation of a step - If during operation, a step is simultaneously activated and deactivated, priority is given to the activation.
de: Regel 5 : R5, Gleichzeitiges Aktivieren und Deaktivieren eines Schrittes - Wenn während des Betriebs ein Schritt gleichzeitig aktiviert und deaktiviert wird, hat die Aktivierung Vorrang.

note: FIXME Convert CL sequential editor window description to table or add callouts on image type: Plain text
en: This is the SEQUENTIAL editor window. (Starting from the top left):
    Selector arrow , Eraser
    Ordinary step ,  Initial (Starting) step
    Transition ,  Step and Transition
    Transition Link-Downside ,  Transition Link-Upside
    Pass-through Link-Downside , Pass-through Link-Upside Jump
    Link, Comment Box +
de: Dies ist das Fenster des SEQUENTIAL-Editors. (Beginnend von oben links):
    Auswahlpfeil , Radiergummi
    Gewöhnlicher Schritt , Anfangsschritt (Start)
    Transition , Schritt und Transition
    Übergang Link-unten , Übergang Link-oben
    Durchgang Link-unten , Durchgang Link-oben Sprung
    Link, Kommentarfeld +

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Sequence Editor Window
de: Fenster des Sequenzeditors

note: type: Plain text
en: 'ORDINARY STEP' - has a unique number for each one
de: 'ORDINARY STEP' - hat für jeden eine eindeutige Nummer

note: type: Plain text
en: 'TRANSITION' - This shows the variable that must be true for control to pass through to the next step.
de: 'TRANSITION' - Dies zeigt die Variable an, die wahr sein muss, damit die Steuerung zum nächsten Schritt übergeht.

note: type: Plain text
en: 'STEP AND TRANSITION' - Combined for convenience
de: 'STEP AND TRANSITION' - der Einfachheit halber kombiniert

note: type: Plain text
en: 'TRANSITION LINK-DOWNSIDE' - splits the logic flow to one of two possible lines based on which of the next steps is true first (Think OR logic)
de: 'TRANSITION LINK-DOWNSIDE' - teilt den Logikfluss in eine von zwei möglichen Linien auf, je nachdem, welcher der nächsten Schritte zuerst wahr ist (denken Sie an die ODER-Logik)

note: type: Plain text
en: 'TRANSITION LINK=UPSIDE' - combines two (OR) logic lines back in to one
de: 'TRANSITION LINK=UPSIDE' - verbindet zwei (ODER) Logiklinien wieder zu einer

note: type: Plain text
en: 'PASS-THROUGH LINK-DOWNSIDE' - splits the logic flow to two lines that BOTH must be true to continue (Think AND logic)
de: 'PASS-THROUGH-LINK-DOWNSIDE' - teilt den Logikfluss in zwei Zeilen auf, dass BEIDE wahr sein müssen, um fortzufahren (Think AND logic)

note: type: Plain text
en: 'PASS-THROUGH LINK-UPSIDE' - combines two concurrent (AND logic) logic lines back together
de: 'PASS-THROUGH-LINK-UPSIDE' - kombiniert zwei gleichzeitige (UND logische) Logiklinien wieder zusammen

note: type: Plain text
en: 'JUMP LINK' - connects steps that are not underneath each other such as connecting the last step to the first
de: 'JUMP LINK' - verbindet Schritte, die nicht untereinander liegen, z. B. das Verbinden des letzten Schritts mit dem ersten

note: type: Plain text
en: 'COMMENT BOX' - used to add comments
de: 'COMMENT BOX' - wird verwendet, um Kommentare hinzuzufügen

note: type: Plain text
en: To use links, you must have steps already placed. Select the type of link, then select the two steps or transactions one at a time. It takes practice!
de: Um Verknüpfungen zu verwenden, müssen Sie bereits Schritte platziert haben. Wählen Sie die Art der Verknüpfung und dann die beiden Schritte oder Transaktionen nacheinander aus. Das erfordert Übung!

note: type: Plain text
en: With sequential programming: The variable %Xxxx (eg. %X5) is used to see if a step is active. The variable %Xxxx.V (eg. %X5.V) is used to see how long the step has been active. The %X and %X.v variables are use in LADDER logic. The variables assigned to the transitions (eg. %B)  control whether the logic will pass to the next step. After a step has become active the transition variable that caused it to become active has no control of it anymore. The last step has to JUMP LINK back only to the beginning step.
de: Bei sequentieller Programmierung: Die Variable %Xxxx (z. B. %X5) wird verwendet, um festzustellen, ob ein Schritt aktiv ist. Die Variable %Xxxx.V (z. B. %X5.V) wird verwendet, um festzustellen, wie lange der Schritt aktiv war. Die Variablen %X und %X.v werden in der LADDER-Logik verwendet. Die den Transitionen zugeordneten Variablen (z. B. %B) steuern, ob die Logik zum nächsten Schritt übergeht. Nachdem ein Schritt aktiv geworden ist, hat die Übergangsvariable, die ihn aktiv werden ließ, keine Kontrolle mehr über ihn. Der letzte Schritt muss nur noch zum Anfangsschritt zurückspringen (JUMP LINK).

note: type: Plain text
en: Things to consider:
de: Zu beachtende Punkte:

note: type: Plain text
en: Modbus is a userspace program so it might have latency issues on a heavily laden computer.
de: Da Modbus ein Userspace-Programm ist, kann es auf einem stark belasteten Computer zu Latenzproblemen kommen.

note: type: Plain text
en: Modbus is not really suited to hard real time events such as position control of motors or to control E-stop.
de: Modbus eignet sich nicht wirklich für harte Echtzeit-Ereignisse wie die Positionssteuerung von Motoren oder die Steuerung von Notausschaltern.

note: type: Plain text
en: The ClassicLadder GUI must be running for Modbus to be running.
de: Das ClassicLadder GUI muss ausgeführt werden, damit Modbus ausgeführt werden kann.

note: type: Plain text
en: Modbus is not fully finished so it does not do all modbus functions.
de: Modbus ist noch nicht ganz fertig, so dass nicht alle Modbus-Funktionen zur Verfügung stehen.

note: type: Plain text
en: To get MODBUS to initialize you must specify that when loading the ClassicLadder userspace program.
de: Um MODBUS zu initialisieren, müssen Sie dies beim Laden des ClassicLadder Userspace-Programms angeben.

note: type: Block title
en: Loading Modbus
de: Laden von Modbus

note: type: Plain text
en: The -w makes HAL wait until you close ClassicLadder before closing realtime session. ClassicLadder also loads a TCP modbus slave if you add '--modserver' on command line.
de: Das -w bewirkt, dass HAL wartet, bis Sie ClassicLadder schließen, bevor es die Echtzeit-Sitzung beendet. ClassicLadder lädt auch einen TCP-Modbus-Slave, wenn Sie '--modserver' auf der Kommandozeile hinzufügen.

note: type: Block title
en: Modbus Functions
de: Modbus-Funktionen

note: type: Plain text
en: '1' - read coils
de: '1' - Spulen lesen

note: type: Plain text
en: '2' - read inputs
de: '2' - Eingänge lesen

note: type: Plain text
en: '3' - read holding registers
de: '3' - Halteregister lesen

note: type: Plain text
en: '4' - read input registers
de: '4' - Eingaberegister lesen

note: type: Plain text
en: '5' - write single coils
de: '5' - einzelne Spulen schreiben

note: type: Plain text
en: '6' - write single register
de: '6' - Einzelnes Register schreiben

note: type: Plain text
en: '8' - echo test
de: '8' - Echo-Test

note: type: Plain text
en: '15' - write multiple coils
de: '15' - mehrere Spulen schreiben

note: type: Plain text
en: '16' - write multiple registers
de: '16' - mehrere Register schreiben

note: type: Plain text
en: If you do not specify a '-- modmaster' when loading the ClassicLadder user program this page will not be displayed.
de: Wenn Sie beim Laden des ClassicLadder Benutzerprogramms keinen '-- modmaster' angeben, wird diese Seite nicht angezeigt.

note: type: Block title
en: Modbus I/O Config
de: Modbus I/O-Konfiguration

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Config I/O
de: E/A (engl. I/O)-Konfiguration

note: type: Block title
en: Modbus Communication Config
de: Modbus-Kommunikationskonfiguration

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Config Coms
de: Konfig Coms

note: type: Plain text
en: 'SERIAL PORT' - For IP blank. For serial the location/name of serial driver eg.  /dev/ttyS0 ( or /dev/ttyUSB0 for a USB-to-serial converter).
de: 'SERIAL PORT' - Für IP leer. Für seriell der Ort/Name des seriellen Treibers z.B.  /dev/ttyS0 ( oder /dev/ttyUSB0 für einen USB-zu-Seriell-Konverter).

note: type: Plain text
en: 'SERIAL SPEED' - Should be set to speed the slave is set for - 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 are supported.
de: 'SERIAL SPEED' - Sollte auf Geschwindigkeit eingestellt sein, für die der Slave eingestellt ist - 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 werden unterstützt.

note: type: Plain text
en: 'PAUSE AFTER TRANSMIT' - Pause (milliseconds) after transmit and before receiving answer, some devices need more time (e.g., USB-to-serial converters).
de: 'PAUSE AFTER TRANSMIT' - Pause (Millisekunden) nach dem Senden und vor dem Empfang der Antwort, einige Geräte benötigen mehr Zeit (z. B. USB-zu-Seriell-Konverter).

note: type: Plain text
en: 'PAUSE INTER-FRAME' - Pause (milliseconds) after receiving answer from slave.  This sets the duty cycle of requests (it's a pause for EACH request).
de: 'PAUSE INTER-FRAME' - Pause (Millisekunden) nach Erhalt der Antwort vom Slave. Dadurch wird der Arbeitszyklus von Anforderungen festgelegt (es ist eine Pause für JEDE Anforderung).

note: type: Plain text
en: 'REQUEST TIMEOUT LENGTH' - Length (milliseconds) of time before we decide that the slave didn't answer.
de: 'REQUEST TIMEOUT LENGTH' - Länge (Millisekunden) der Zeit, bevor wir entscheiden, dass der Slave nicht geantwortet hat.

note: type: Plain text
en: 'MODBUS ELEMENT OFFSET' - used to offset the element numbers by 1 (for manufacturers numbering differences).
de: 'MODBUS ELEMENT OFFSET' - wird verwendet, um die Elementnummern um 1 zu kompensieren (für Hersteller, die Unterschiede nummerieren).

note: type: Plain text
en: 'DEBUG LEVEL' - Set this to 0-3 (0 to stop printing debug info besides no-response errors).
de: 'DEBUG LEVEL' - Setzen Sie dies auf 0-3 (0, um das Drucken von Debug-Informationen neben No-Response-Fehlern zu stoppen).

note: type: Plain text
en: 'READ COILS/INPUTS MAP TO' - Select what variables that read coils/inputs will update. (B or Q).
de: 'READ COILS/INPUTS MAP TO' - Wählen Sie, welche Variablen die gelesenen Spulen/Eingänge aktualisieren sollen. (B oder Q).

note: type: Plain text
en: 'WRITE COILS MAP TO' - Select what variables that write coils will updated from (B,Q,or I).
de: 'WRITE COILS MAP TO' - Wählen Sie aus, von welchen Variablen, von denen Schreibspulen aktualisiert werden sollen (B, Q oder I).

note: type: Plain text
en: 'READ REGISTERS/HOLDING' - Select what variables that read registers will update (W or QW).
de: 'READ REGISTERS/HOLDING' - Wählen Sie aus, welche Variablen durch das Lesen von Registern aktualisiert werden sollen (W oder QW).

note: type: Plain text
en: 'WRITE REGISTERS MAP TO' - Select what variables that read registers will updated from (W, QW, or IW).
de: 'WRITE REGISTERS MAP TO' - Wählen Sie aus, von welchen Variablen die Leseregister aktualisiert werden (W, QW oder IW).

note: type: Plain text
en: 'SLAVE ADDRESS' - For serial the slaves ID number usually settable on the slave device (usually 1-256) For IP the slave IP address plus optionally the port number.
de: 'SLAVE-ADRESSE' - Für serielle die Slave-ID-Nummer normalerweise auf dem Slave-Gerät einstellbar (normalerweise 1-256) Für IP die Slave-IP-Adresse plus optional die Portnummer.

note: type: Plain text
en: 'TYPE ACCESS' - This selects the MODBUS function code to send to the slave (eg what type of request).
de: 'TYPE ACCESS' - Dies wählt den MODBUS-Funktionscode aus, der an den Slave gesendet werden soll (z. B. welche Art von Anfrage).

note: type: Plain text
en: 'COILS / INPUTS' - Inputs and Coils (bits) are read from/written to I, B, or Q variables (user selects).
de: 'COILS / INPUTS' - Eingänge und Spulen (Bits) werden aus I-, B- oder Q-Variablen gelesen / geschrieben (Benutzerauswahl).

note: type: Plain text
en: 'REGISTERS (WORDS)' - Registers (Words/Numbers) map to IW, W, or QW variables (user selects).
de: 'REGISTERS (WORDS)' - Register (Wörter/Zahlen) werden IW-, W- oder QW-Variablen zugeordnet (Benutzerauswahl).

note: type: Plain text
en: '1st MODBUS ELEMENT' - The address (or register number) of the first element in a group (remember to set MODBUS ELEMENT OFFSET properly).
de: '1st MODBUS ELEMENT' - Die Adresse (oder Registernummer) des ersten Elements in einer Gruppe (Denken Sie daran, MODBUS ELEMENT OFFSET richtig einzustellen).

note: type: Plain text
en: 'NUMBER OF ELEMENTS' - The number of elements in this group.
de: 'ANZAHL DER ELEMENTE' - Die Anzahl der Elemente in dieser Gruppe.

note: type: Plain text
en: 'LOGIC' - You can invert the logic here.
de: 'LOGIC' - Sie können die Logik hier umkehren.

note: type: Plain text
en: '1st%I%Q IQ WQ MAPPED' - This is the starting number of %B, %I, %Q, %W, %IW, or %QW variables that are mapped onto/from the modbus element group (starting at the first modbus element number).
de: '1st%I%Q IQ WQ MAPPED' - Dies ist die Startnummer von %B, %I, %Q, %W, %IW oder %QW Variablen, die auf/von der Modbus-Elementgruppe zugeordnet werden (beginnend mit der ersten Modbus-Elementnummer).

note: type: Plain text
en: In the example above: Port number - for my computer /dev/ttyS0 was my serial port.
de: Im obigen Beispiel: Portnummer - für meinen Computer war /dev/ttyS0 meine serielle Schnittstelle.

note: type: Plain text
en: The serial speed is set to 9600 baud.
de: Die serielle Geschwindigkeit ist auf 9600 Baud eingestellt.

note: type: Plain text
en: Slave address is set to 12 (on my VFD I can set this from 1-31, meaning I can talk to 31 VFDs maximum on one system).
de: Die Slave-Adresse ist auf 12 gesetzt (auf meinem VFD kann ich dies von 1-31 einstellen, was bedeutet, dass ich auf einem System maximal mit 31 VFDs sprechen kann).

note: type: Plain text
en: The first line is set up for 8 input bits starting at the first register number (register 1). So register numbers 1-8 are mapped onto ClassicLadder's %B variables starting at %B1 and ending at %B8.
de: Die erste Zeile ist für 8 Eingangsbits eingerichtet, beginnend mit der ersten Registernummer (Register 1). Die Registernummern 1-8 werden also auf die %B-Variablen von ClassicLadder abgebildet, beginnend bei %B1 und endend bei %B8.

note: type: Plain text
en: The second line is set for 2 output bits starting at the ninth register number (register 9) so register numbers 9-10 are mapped onto ClassicLadder's %Q variables starting at %Q9 ending at %Q10.
de: Die zweite Zeile ist für 2 Ausgangsbits ab der neunten Registernummer (Register 9) eingestellt, so dass die Registernummern 9-10 auf die %Q-Variablen von ClassicLadder abgebildet werden, die bei %Q9 beginnen und bei %Q10 enden.

note: type: Plain text
en: The third line is set to write 2 registers (16 bits each) starting at the 0th register number (register 0) so register numbers 0-1 are mapped onto ClassicLadder's %W variables starting at %W0 ending at %W1.
de: Die dritte Zeile ist so eingestellt, dass 2 Register (je 16 Bit) geschrieben werden, beginnend mit der 0. Registernummer (Register 0), so dass die Registernummern 0-1 auf die %W-Variablen des ClassicLadder abgebildet werden, beginnend mit %W0 und endend mit %W1.

note: type: Plain text
en: It's easy to make an off-by-one error as sometimes the modbus elements are referenced starting at one rather then 0 (actually by the standard that is the way it's supposed to be!) You can use the modbus element offset radio button to help with this.
de: Es ist leicht, einen Off-by-One-Fehler zu machen, da die Modbus-Elemente manchmal bei 1 und nicht bei 0 referenziert werden (eigentlich ist das laut Standard so vorgesehen!) Sie können die Optionsschaltfläche für den Modbus-Element-Offset verwenden, um dies zu vermeiden.

note: type: Plain text
en: The documents for your modbus slave device will tell you how the registers are set up- there is no standard way.
de: In den Unterlagen zu Ihrem Modbus-Slave-Gerät finden Sie Informationen darüber, wie die Register aufgebaut sind - es gibt keine Standardmethode.

note: type: Plain text
en: The SERIAL PORT, PORT SPEED, PAUSE, and DEBUG level are editable for changes (when you close the config window values are applied, though Radio buttons apply immediately).
de: Die Parameter SERIAL PORT, PORT SPEED, PAUSE und DEBUG-Level können geändert werden (beim Schließen des Konfigurationsfensters werden die Werte übernommen, die Radio-Buttons gelten jedoch sofort).

note: type: Plain text
en: To use the echo function select the echo function and add the slave number you wish to test. You don't need to specify any variables.
de: Um die Echo-Funktion zu verwenden, wählen Sie die Echo-Funktion und fügen Sie die Slave-Nummer hinzu, die Sie testen möchten. Sie müssen keine Variablen angeben.

note: type: Plain text
en: The number 257 will be sent to the slave number you specified and the slave should send it back. you will need to have ClassicLadder running in a terminal to see the message.
de: Die Nummer 257 wird an die von Ihnen angegebene Slave-Nummer gesendet und der Slave sollte sie zurücksenden. Sie müssen ClassicLadder in einem Terminal laufen lassen, um die Nachricht zu sehen.

note: type: Title ==
en: MODBUS Settings
de: MODBUS-Einstellungen

note: type: Plain text
en: Serial:
de: Seriell:

note: type: Plain text
en: ClassicLadder uses RTU protocol (not ASCII).
de: ClassicLadder verwendet das RTU-Protokoll (nicht ASCII).

note: type: Plain text
en: 8 data bits, No parity is used, and 1 stop bit is also known as 8-N-1.
de: 8 Datenbits, keine Parität und 1 Stoppbit werden auch als 8-N-1 bezeichnet.

note: type: Plain text
en: Baud rate must be the same for slave and master. ClassicLadder can only have one baud rate so all the slaves must be set to the same rate.
de: Die Baudrate muss für Slave und Master gleich sein. ClassicLadder kann nur eine Baudrate haben, also müssen alle Slaves auf die gleiche Rate eingestellt werden.

note: type: Plain text
en: Pause inter frame is the time to pause after receiving an answer.
de: Das Pausenintervall ist die Zeitspanne, die nach dem Empfang einer Antwort pausiert wird.

note: type: Plain text
en: MODBUS_TIME_AFTER_TRANSMIT is the length of pause after sending a request and before receiving an answer (this apparently helps with USB converters which are slow).
de: MODBUS_TIME_AFTER_TRANSMIT ist die Länge der Pause nach dem Senden einer Anfrage und vor dem Empfang einer Antwort (dies hilft offenbar bei langsamen USB-Wandlern).

note: type: Title ===
en: MODBUS Info
de: MODBUS-Info

note: type: Plain text
en: ClassicLadder can use distributed inputs/outputs on modules using the modbus protocol ("master": polling slaves).
de: ClassicLadder kann verteilte Eingänge/Ausgänge auf Modulen verwenden, die das Modbus-Protokoll verwenden ("Master": abfragende Slaves).

note: type: Plain text
en: The slaves and theirs I/O can be configured in the config window.
de: Die Slaves und ihre I/O können im Konfigurationsfenster konfiguriert werden.

note: type: Plain text
en: 2 exclusive modes are available : ethernet using Modbus/TCP and serial using Modbus/RTU.
de: Es sind 2 exklusive Modi verfügbar: Ethernet mit Modbus/TCP und seriell mit Modbus/RTU.

note: type: Plain text
en: No parity is used.
de: Es wird keine Parität verwendet.

note: type: Plain text
en: If no port name for serial is set, TCP/IP mode will be used...
de: Wenn kein Portname für die serielle Schnittstelle eingestellt ist, wird der TCP/IP-Modus verwendet...

note: type: Plain text
en: The slave address is the slave address (Modbus/RTU) or the IP address.
de: Die Slave-Adresse ist die Slave-Adresse (Modbus/RTU) oder die IP-Adresse.

note: type: Plain text
en: The IP address can be followed per the port number to use (xx.xx.xx.xx:pppp) else the port 9502 will be used per default.
de: Die IP-Adresse kann durch die zu verwendende Portnummer ergänzt werden (xx.xx.xx.xx:pppp), andernfalls wird standardmäßig der Port 9502 verwendet.

note: type: Plain text
en: 2 products have been used for tests: a Modbus/TCP one (Adam-6051, http://www.advantech.com) and a serial Modbus/RTU one (http://www.ipac.ws).
de: Für die Tests wurden 2 Produkte verwendet: ein Modbus/TCP-Produkt (Adam-6051, http://www.advantech.com) und ein serielles Modbus/RTU-Produkt (http://www.ipac.ws).

note: type: Plain text
en: See examples: adam-6051 and modbus_rtu_serial.
de: Siehe Beispiele: adam-6051 und modbus_rtu_serial.

note: type: Plain text
en: Web links: http://www.modbus.org and this interesting one: http://www.iatips.com/modbus.html
de: Weblinks: http://www.modbus.org und dieser interessante Link: http://www.iatips.com/modbus.html

note: type: Plain text
en: MODBUS TCP SERVER INCLUDED
de: MODBUS TCP SERVER ENTHALTEN

note: type: Plain text
en: ClassicLadder has a Modbus/TCP server integrated. Default port is 9502.  (the previous standard 502 requires that the application must be launched with root privileges).
de: ClassicLadder hat einen Modbus/TCP-Server integriert. Der Standard-Port ist 9502.  (der vorherige Standard 502 erfordert, dass die Anwendung mit Root-Rechten gestartet werden muss).

note: type: Plain text
en: List of Modbus functions code supported are: 1, 2, 3, 4, 5, 6, 15 and 16.
de: Die Liste der unterstützten Modbus-Funktionscodes lautet: 1, 2, 3, 4, 5, 6, 15 und 16.

note: type: Plain text
en: Modbus bits and words correspondence table is actually not parametric and correspond directly to the %B and %W variables.
de: Die Korrespondenztabelle der Modbus-Bits und -Worte ist eigentlich nicht parametrisch und entspricht direkt den Variablen %B und %W.

note: type: Plain text
en: More information on modbus protocol is available on the internet.
de: Weitere Informationen zum Modbus-Protokoll finden Sie im Internet.

note: type: Title ===
en: Communication Errors
de: Kommunikationsfehler

note: type: Plain text
en: If there is a communication error, a warning window will pop up (if the GUI is running) and %E0 will be true. Modbus will continue to try to communicate. The %E0 could be used to make a decision based on the error. A timer could be used to stop the machine if timed out, etc.
de: Wenn ein Kommunikationsfehler auftritt, wird ein Warnfenster angezeigt (wenn die grafische Benutzeroberfläche läuft) und %E0 ist wahr. Modbus wird weiterhin versuchen, zu kommunizieren. Der %E0-Wert kann verwendet werden, um eine Entscheidung auf der Grundlage des Fehlers zu treffen. Ein Timer könnte verwendet werden, um die Maschine anzuhalten, wenn die Zeit abgelaufen ist, usw.

note: type: Title ==
en: Debugging modbus problems
de: Fehlersuche bei Modbus-Problemen

note: type: Plain text
en: A good reference for the protocol: http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf If you run linuxcnc/classocladder from a terminal, it will print the Modbus commands and slave responses.
de: Eine gute Referenz für das Protokoll: http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b.pdf Wenn Sie linuxcnc/classocladder von einem Terminal aus starten, werden die Modbus-Befehle und Slave-Antworten ausgedruckt.

note: type: Plain text
en: Here we set ClassicLadder to request slave 1, to read holding registers (function code 3) starting at address 8448 (0x2100).  We ask for 1 (2 byte wide) data element to be returned.  We map it to a ClassicLadder variable starting at 2.
de: Hier wird der ClassicLadder so eingestellt, dass er den Slave 1 auffordert, die Holding-Register (Funktionscode 3) ab Adresse 8448 (0x2100) zu lesen. Wir fordern die Rückgabe von 1 (2 Byte breiten) Datenelement an. Wir ordnen es einer ClassicLadder-Variablen zu, startend bei 2.

note: type: Block title
en: Modbus I/O Register Setup
de: Modbus I/O-Register-Setup

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Config I/O Register Setting
de: Config I/O Register Einstellung

note: type: Plain text
en: Note in this image we have set the debug level to 1 so modbus messages are printed to the terminal.  We have mapped our read and written holding registers to ClassicLadder's %W variables so our returned data will be in %W2 as in the other image we mapped the data starting at the 2nd element.
de: Hinweis in diesem Bild haben wir die Debug-Ebene auf 1 gesetzt, so dass Modbus-Nachrichten an das Terminal ausgegeben werden.  Wir haben unsere Lese- und Schreibregister den %W-Variablen von ClassicLadder zugeordnet, so dass unsere zurückgegebenen Daten in %W2 sind, wie in dem anderen Bild, in dem wir die Daten ab dem 2. Element zugeordnet haben.

note: type: Block title
en: Modbus Communication Setup
de: Einrichtung der Modbus-Kommunikation

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Communication Setting
de: Kommunikation Einstellung

note: type: Title ===
en: Request
de: Anfrage

note: type: Plain text
en: Lets look at an example of reading one hold register at 8448 Decimal (0x2100 Hex).
de: Betrachten wir ein Beispiel für das Lesen eines Hold-Registers bei 8448 Decimal (0x2100 Hex).

note: type: Plain text
en: Looking in the Modbus protocol reference:
de: Blick in die Modbus-Protokollreferenz:

note: type: Block title
en: Read holding register request
de: Halteregisteranforderung lesen

note: type: Table
en: number of bytes
de: Anzahl Bytes

note: type: Table
en: Value (hex)
de: Wert (hex)

note: type: Table
en: Function code
de: Funktionscode

note: type: Table
en: 3  (0x03)
de: 3 (0x03)

note: type: Table
en: Starting Address
de: Startadresse

note: type: Table
en: 0 - 65535 (0x0000 to 0xFFFF)
de: 0 - 65535 (0x0000 bis 0xFFFF)

note: type: Table
en: Number of Registers
de: Anzahl von Registern

note: type: Table
en: 1 to 125 (0x7D)
de: 1 bis 125 (0x7D)

note: type: Table
en: Checksum
de: Prüfsumme

note: type: Table
en: (2 bytes)
de: (2 Bytes)

note: type: Table
en: Calculated automatically
de: Automatisch berechnet

note: type: Plain text
en: Here is an example sent command as printed in the terminal (all Hex):
de: Hier ist ein Beispiel für einen gesendeten Befehl, wie er im Terminal ausgedruckt wird (alles in Hex):

note: type: Plain text
en: Meaning (Hex):
de: Bedeutung (Hex):

note: type: Plain text
en: Lgt = 8 = message is 8 bytes long including slave number and checksum number
de: Lgt = 8 = Nachricht ist 8 Bytes lang, einschließlich Slave-Nummer und Prüfsummen-Nummer

note: type: Plain text
en: Slave number = 1 (0x1) = Slave address 1
de: Slave-Nummer = 1 (0x1) = Slave-Adresse 1

note: type: Plain text
en: Function code = 3 (0x3) = read holding register
de: Funktionscode = 3 (0x3) = Halteregister lesen

note: type: Plain text
en: Start at address = highbyte 33 (0x21) lowbyte 0 (0x00) = combined address = 8448 (0x2100)
de: Start bei Adresse = Highbyte 33 (0x21) Lowbyte 0 (0x00) = kombinierte Adresse = 8448 (0x2100)

note: type: Plain text
en: Number of Registers = 1 (0x1) = return 1 2-byte register (holding and reading registers are always 2 bytes wide)
de: Anzahl der Register = 1 (0x1) = 1 2-Byte-Register zurückgeben (Halte- und Leseregister sind immer 2 Byte breit)

note: type: Plain text
en: Checksum = high byte 0x8E lowbyte 0x36 = (0x8E36)
de: Prüfsumme = Highbyte 0x8E Lowbyte 0x36 = (0x8E36)

note: type: Title ===
en: Error response
de: Fehlerreaktion

note: type: Plain text
en: If there is an error response, it sends the function code plus 0x80, an error code, and a checksum.  Getting an error response means the slave is seeing the request command but can not give valid data.  Looking in the Modbus protocol reference:
de: Bei einer Fehlerantwort sendet er den Funktionscode plus 0x80, einen Fehlercode und eine Prüfsumme.  Eine Fehlerantwort zu erhalten bedeutet, dass der Slave den Anforderungsbefehl sieht, aber keine gültigen Daten liefern kann.  Schauen Sie in der Modbus-Protokollreferenz nach:

note: type: Block title
en: Error returned for function code 3 (read holding register)
de: Fehler bei Funktionscode 3 (Lesen des Holdingregisters)

note: type: Table
en: Number of bytes
de: Anzahl Bytes

note: type: Table
en: Error code
de: Fehlercode

note: type: Table
en: Exception code
de: Ausnahmecode

note: type: Table
en: 1-4 (0x01 to 0x04)
de: 1-4 (0x01 bis 0x04)

note: type: Plain text
en: Exception code meaning:
de: Bedeutung des Ausnahmecodes:

note: type: Plain text
en: 1 - illegal Function
de: 1 - illegal Funktion

note: type: Plain text
en: 2 - illegal data address
de: 2 - unzulässige Datenadresse

note: type: Plain text
en: 3 - illegal data value
de: 3 - unzulässiger Datenwert

note: type: Plain text
en: 4 - slave device failure
de: 4 - Ausfall des Slave-Geräts

note: type: Plain text
en: Here is an example received command as printed in the terminal (all Hex):
de: Hier ist ein Beispiel für einen empfangenen Befehl, wie er im Terminal ausgedruckt wird (alles in Hex):

note: type: Plain text
en: Meaning (Hex): +
de: Bedeutung (Hex): +

note: type: Plain text
en: Function code = 131 (0x83) = error while reading holding register
de: Funktionscode = 131 (0x83) = Fehler beim Lesen des Holdingregisters

note: type: Plain text
en: Error code = 2 (0x2) = illegal data address requested
de: Fehlercode = 2 (0x2) = unzulässige Datenadresse angefordert

note: type: Plain text
en: Checksum = (0x8E36)
de: Prüfsumme = (0x8E36)

note: type: Title ===
en: Data response
de: Datenantwort

note: type: Plain text
en: Looking in the Modbus protocol reference for Response:
de: Blick auf das Protokoll über die Antwort:

note: type: Block title
en: Data response for function code 3 (read holding register)
de: Datenantwort für Funktionscode 3 (Lesen Holdingregister)

note: type: Table
en: Byte count
de: Anzahl der Bytes

note: type: Table
en: Register value
de: Wert des Registers

note: type: Table
en: returned value of requested address
de: Rückgabewert der angeforderten Adresse

note: type: Table
en: calculated automatically
de: automatisch berechnet

note: type: Plain text
en: *N = Number of registers
de: *N = Anzahl der Register

note: type: Plain text
en: meaning (Hex):
de: Bedeutung (Hex):

note: type: Plain text
en: Requested function code = 3 (0x3) = read holding register requested
de: Angeforderter Funktionscode = 3 (0x3) = Lesen des Holdingregisters angefordert

note: type: Plain text
en: count of byte registers = 2 (0x1) = return 2 bytes (each register value is 2 bytes wide)
de: Anzahl der Byte-Register = 2 (0x1) = Rückgabe von 2 Bytes (jeder Registerwert ist 2 Bytes breit)

note: type: Plain text
en: value of highbyte = 0 (0x0) = high byte value of address 8448 (0x2100)
de: Wert des Highbytes = 0 (0x0) = Highbyte-Wert der Adresse 8448 (0x2100)

note: type: Plain text
en: value of lowbyte = 0 (0x0) = high byte value of address 8448 (0x2100)
de: Wert des Lowbyte = 0 (0x0) = Wert des Highbyte der Adresse 8448 (0x2100)

note: type: Plain text
en: Checksum = (0xB844)
de: Prüfsumme = (0xB844)

note: type: Plain text
en: (high and low bytes are combined to create a 16 bit value and then transferred to ClassicLadder's variable.)  Read Registers can be mapped to %W or %QW (internal memory or HAL out pins).  Write registers can be mapped from %W, %QW or %IW (internal memory, HAL out pins or HAL in pins).  The variable number will start at the number entered in the modbus I/O registry setup page's column: 'First variable mapped'.  If multiple registers are requested in one read/write then the variable number are sequential after the first one.
de: (High- und Low-Bytes werden zu einem 16-Bit-Wert kombiniert und dann an die ClassicLadder-Variable übertragen). Leseregister können auf %W oder %QW (interner Speicher oder HAL-Out-Pins) abgebildet werden. Schreibregister können auf %W, %QW oder %IW (interner Speicher, HAL-Out-Pins oder HAL-In-Pins) abgebildet werden: Wenn mehrere Register in einem Lese-/Schreibvorgang angefordert werden, sind die Variablennummern nach der ersten fortlaufend.

note: type: Title ===
en: MODBUS Bugs
de: MODBUS-Fehler

note: type: Plain text
en: In compare blocks the function %W=ABS(%W1-%W2) is accepted but does not compute properly. only %W0=ABS(%W1) is currently legal.
de: In Vergleichsblöcken wird die Funktion %W=ABS(%W1-%W2) akzeptiert, aber nicht korrekt berechnet. Nur %W0=ABS(%W1) ist derzeit zulässig.

note: type: Plain text
en: When loading a ladder program it will load Modbus info but will not tell ClassicLadder to initialize Modbus. You must initialize Modbus when you first load the GUI by adding '--modmaster'.
de: Wenn Sie ein Kontaktplanprogramm laden, werden Modbus-Informationen geladen, aber ClassicLadder wird nicht angewiesen, Modbus zu initialisieren. Sie müssen Modbus initialisieren, wenn Sie die GUI zum ersten Mal laden, indem Sie '--modmaster' hinzufügen.

note: type: Plain text
en: If the section manager is placed on top of the section display, across the scroll bar and exit is clicked the user program crashes.
de: Wenn der Abschnittsmanager über der Abschnittsanzeige platziert wird, über die Bildlaufleiste hinweg, und auf Beenden geklickt wird, stürzt das Benutzerprogramm ab.

note: type: Plain text
en: When using '--modmaster' you must load the ladder program at the same time or else only TCP will work.
de: Wenn Sie '--modmaster' verwenden, müssen Sie gleichzeitig das Kontaktplanprogramm laden, sonst funktioniert nur TCP.

note: type: Plain text
en: reading/writing multiple registers in Modbus has checksum errors.
de: das Lesen/Schreiben mehrerer Register im Modbus weist Prüfsummenfehler auf.

note: type: Title ==
en: Setting up ClassicLadder
de: Einrichten von ClassicLadder

note: type: Plain text
en: In this section we will cover the steps needed to add ClassicLadder to a Stepconf Wizard generated config. On the advanced Configuration Options page of Stepconf Wizard check off "Include ClassicLadder PLC".
de: In diesem Abschnitt werden die Schritte beschrieben, die erforderlich sind, um ClassicLadder zu einer vom Stepconf Wizard generierten Konfiguration hinzuzufügen. Auf der Seite "Erweiterte Konfigurationsoptionen" des Stepconf-Assistenten aktivieren Sie "Classic Ladder PLC einbeziehen".

note: type: Title ===
en: Add the Modules
de: Hinzufügen der Module

note: type: Plain text
en: If you used the Stepconf Wizard to add ClassicLadder you can skip this step.
de: Wenn Sie den Stepconf-Assistenten zum Hinzufügen von ClassicLadder verwendet haben, können Sie diesen Schritt überspringen.

note: type: Plain text
en: To manually add ClassicLadder you must first add the modules. This is done by adding a couple of lines to the custom.hal file.
de: Um ClassicLadder manuell hinzuzufügen, müssen Sie zunächst die Module hinzufügen. Dazu fügen Sie der Datei custom.hal ein paar Zeilen hinzu.

note: type: Plain text
en: This line loads the real time module:
de: Diese Zeile lädt das Echtzeitmodul:

note: type: Plain text
en: This line adds the ClassicLadder function to the servo thread:
de: Diese Zeile fügt dem Servo-Thread die Funktion ClassicLadder hinzu:

note: type: Title ===
en: Adding Ladder Logic
de: Hinzufügen der Kontaktplanlogik

note: type: Plain text
en: Now start up your config and select "File/Ladder Editor" to open up the ClassicLadder GUI. You should see a blank Section Display and Sections Manager window as shown above. In the Section Display window open the Editor. In the Editor window select Modify. Now a Properties window pops up and the Section Display shows a grid. The grid is one rung of ladder. The rung can contain branches. A simple rung has one input, a connector line and one output. A rung can have up to six horizontal branches. While it is possible to have more than one circuit in a run the results are not predictable.
de: Starten Sie nun Ihre Konfiguration und wählen Sie "Datei/Kontaktplan-Editor", um die GUI des klassischen Kontaktplans zu öffnen. Sie sollten ein leeres Fenster für die Abschnittsanzeige und den Abschnittsmanager sehen, wie oben gezeigt. Im Fenster Abschnittsanzeige öffnen Sie den Editor. Wählen Sie im Editor-Fenster "Ändern". Jetzt erscheint ein Fenster Eigenschaften und die Abschnittsanzeige zeigt ein Raster an. Das Gitter ist eine Sprosse des Leiters. Die Sprosse kann Verzweigungen enthalten. Eine einfache Sprosse hat einen Eingang, eine Verbindungslinie und einen Ausgang. Eine Sprosse kann bis zu sechs horizontale Zweige haben. Es ist zwar möglich, mehr als einen Stromkreis in einer Sprosse zu haben, aber die Ergebnisse sind nicht vorhersehbar.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Section Display with Grid
de: Abschnitt Display mit Grid

note: type: Plain text
en: Now click on the N.O. Input in the Editor Window.
de: Klicken Sie nun auf den N.O.-Eingang im Editorfenster.

note: type: Plain text
en: Now click in the upper left grid to place the N.O. Input into the ladder.
de: Klicken Sie nun in das obere linke Raster, um den N.O.-Eingang in der Leiter zu platzieren.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Section Display with Input
de: Abschnitt Display mit Input

note: type: Plain text
en: Repeat the above steps to add a N.O. Output to the upper right grid and use the Horizontal Connection to connect the two. It should look like the following. If not, use the Eraser to remove unwanted sections.
de: Wiederholen Sie die obigen Schritte, um einen N.O.-Ausgang zum oberen rechten Gitter hinzuzufügen, und verwenden Sie die horizontale Verbindung, um die beiden zu verbinden. Es sollte wie folgt aussehen. Falls nicht, verwenden Sie den Radiergummi, um unerwünschte Abschnitte zu entfernen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Section Display with Rung
de: Abschnittsanzeige mit Sprosse

note: type: Plain text
en: Now click on the OK button in the Editor window.  Now your Section Display should look like this:
de: Klicken Sie nun im Editor-Fenster auf die Schaltfläche OK. Jetzt sollte Ihre Abschnittsanzeige wie folgt aussehen:

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Section Display Finished
de: Abschnitt Anzeige Beendet

note: type: Plain text
en: To save the new file select 'Save As' and give it a name. The .clp extension will be added automatically. It should default to the running config directory as the place to save it.
de: Um die neue Datei zu speichern, wählen Sie 'Speichern unter' und geben Sie ihr einen Namen. Die Erweiterung .clp wird automatisch hinzugefügt. Als Speicherort sollte standardmäßig das laufende Konfigurationsverzeichnis angegeben werden.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Save As Dialog
de: Speichern unter Dialog

note: type: Plain text
en: Again if you used the Stepconf Wizard to add ClassicLadder you can skip this step.
de: Wenn Sie den Stepconf-Assistenten zum Hinzufügen von ClassicLadder verwendet haben, können Sie auch diesen Schritt überspringen.

note: type: Plain text
en: To manually add a ladder you need to add add a line to your custom.hal file that will load your ladder file. Close your LinuxCNC session and add this line to your custom.hal file.
de: Um einen Leiter manuell hinzuzufügen, müssen Sie eine Zeile in Ihre custom.hal-Datei einfügen, die Ihre Leiterdatei lädt. Schließen Sie Ihre LinuxCNC-Sitzung und fügen Sie diese Zeile auf Ihre custom.hal Datei.

note: type: Plain text
en: Now if you start up your LinuxCNC config your ladder program will be running as well. If you select "File/Ladder Editor", the program you created will show up in the Section Display window.
de: Wenn Sie nun Ihre LinuxCNC-Konfiguration starten, wird auch Ihr Kontaktplanprogramm ausgeführt werden. Wenn Sie "Datei/Kontaktplan-Editor" wählen, wird das Programm, das Sie erstellt haben, im Fenster "Section Display" angezeigt.

note: type: Title =
en: ClassicLadder Examples
de: ClassicLadder Beispiele

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Wrapping Counter
de: Umlaufender (engl. wrapping) Zähler

note: type: Plain text
en: To have a counter that 'wraps around' you have to use the preset pin and the reset pin. When you create the counter set the preset at the number you wish to reach before wrapping around to 0. The logic is if the counter value is over the preset then reset the counter and if the underflow is on then set the counter value to the preset value. As you can see in the example when the counter value is greater than the counter preset the counter reset is triggered and the value is now 0.  The underflow output %Q2 will set the counter value at the preset when counting backwards.
de: Um einen Zähler zu haben, der "umspringt", müssen Sie den Preset-Pin und den Reset-Pin verwenden. Wenn Sie den Zähler erstellen, setzen Sie den Preset auf die Zahl, die Sie erreichen wollen, bevor Sie auf 0 umbrechen. Die Logik ist, wenn der Zählerwert über dem Preset liegt, dann setzen Sie den Zähler zurück und wenn der Unterlauf an ist, dann setzen Sie den Zählerwert auf den Preset-Wert. Wie Sie im Beispiel sehen können, wird der Zähler zurückgesetzt, wenn der Zählerwert größer als der Vorwahlwert ist, und der Wert ist jetzt 0. Der Unterlaufausgang %Q2 setzt den Zählerwert auf den Vorwahlwert, wenn rückwärts gezählt wird.

note: type: Title ==
en: Reject Extra Pulses
de: Extra-Impulse zurückweisen

note: type: Plain text
en: This example shows you how to reject extra pulses from an input.  Suppose the input pulse %I0 has an annoying habit of giving an extra pulse that spoils our logic. The TOF (Timer Off Delay) prevents the extra pulse from reaching our cleaned up output %Q0. How this works is when the timer gets an input the output of the timer is on for the duration of the time setting. Using a normally closed contact %TM0.Q the output of the timer blocks any further inputs from reaching our output until it times out.
de: Dieses Beispiel zeigt Ihnen, wie Sie zusätzliche Impulse von einem Eingang zurückweisen können.  Nehmen wir an, der Eingangsimpuls %I0 hat die lästige Angewohnheit, einen zusätzlichen Impuls abzugeben, der unsere Logik stört. Der TOF (Timer Off Delay) verhindert, dass der zusätzliche Impuls unseren bereinigten Ausgang %Q0 erreicht. Das funktioniert so: Wenn der Timer einen Eingang erhält, ist der Ausgang des Timers für die Dauer der eingestellten Zeit eingeschaltet. Mit Hilfe eines Öffnerkontakts %TM0.Q blockiert der Ausgang der Zeitschaltuhr alle weiteren Eingänge, die unseren Ausgang erreichen, bis die Zeit abgelaufen ist.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Reject Extra Pulse
de: Extra-Impuls ablehnen

note: type: Title ==
en: External E-Stop
de: Externer Notaus

note: type: Plain text
en: The External E-Stop example is in the /config/classicladder/cl-estop folder. It uses a PyVCP panel to simulate the external components.
de: Das Beispiel für den externen Notaus-Schalter befindet sich im Ordner /config/classicladder/cl-estop. Es verwendet ein PyVCP-Panel, um die externen Komponenten zu simulieren.

note: type: Plain text
en: To interface an external E-Stop to LinuxCNC and have the external E-Stop work together with the internal E-Stop requires a couple of connections through ClassicLadder.
de: Um eine externe Notaus-Schnittstelle zu LinuxCNC und haben die externen Notaus arbeiten zusammen mit dem internen Notaus erfordert ein paar Verbindungen durch ClassicLadder.

note: type: Plain text
en: First we have to open the E-Stop loop in the main HAL file by commenting out by adding the pound sign as shown or removing the following lines.
de: Zuerst müssen wir die Notaus-Schleife in der Haupt-HAL-Datei öffnen, indem wir die folgenden Zeilen auskommentieren, indem wir das Doppelkreuz-Zeichen wie gezeigt hinzufügen oder sie entfernen.

note: type: Plain text
en: Next we add ClassicLadder to our custom.hal file by adding these two lines:
de: Als Nächstes fügen wir ClassicLadder zu unserer Datei custom.hal hinzu, indem wir diese beiden Zeilen hinzufügen:

note: type: Plain text
en: Next we run our config and build the ladder as shown here.
de: Als Nächstes führen wir unsere Konfiguration aus und erstellen die Leiter wie hier gezeigt.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: E-Stop Section Display
de: Anzeige des Notaus-Bereichs

note: type: Plain text
en: After building the ladder select Save As and save the ladder as estop.clp
de: Nach dem Erstellen der Leiter wählen Sie Speichern unter und speichern die Leiter als estop.clp

note: type: Plain text
en: Now add the following line to your custom.hal file.
de: Fügen Sie nun die folgende Zeile in Ihre Datei custom.hal ein.

note: type: delimited block -
en: # Load the ladder
    loadusr classicladder --nogui estop.clp
de: # Laden der Ladder
    loadusr classicladder --nogui estop.clp

note: type: Plain text
en: I/O assignments
de: E/A-Zuweisungen

note: type: Plain text
en: %I0 = Input from the PyVCP panel simulated E-Stop (the checkbox)
de: %I0 = Eingabe aus dem PyVCP-Panel simulierten Notaus (die Checkbox)

note: type: Plain text
en: %I1 = Input from LinuxCNC's E-Stop
de: %I1 = Eingabe von LinuxCNC's Notaus

note: type: Plain text
en: %I2 = Input from LinuxCNC's E-Stop Reset Pulse
de: %I2 = Eingang von LinuxCNC's Notaus Reset Impuls

note: type: Plain text
en: %I3 = Input from the PyVCP panel reset button
de: %I3 = Eingang von der PyVCP-Panel-Reset-Taste

note: type: Plain text
en: %Q0 = Output to LinuxCNC to enable
de: %Q0 = Ausgabe an LinuxCNC zur Freigabe

note: type: Plain text
en: %Q1 = Output to external driver board enable pin (use a N/C output if your board had a disable pin)
de: %Q1 = Ausgang zum Freigabe-Pin der externen Treiberkarte (verwenden Sie einen N/C-Ausgang, wenn Ihre Karte einen Deaktivierungs-Pin hat)

note: type: Plain text
en: Next we add the following lines to the custom_postgui.hal file
de: Als nächstes fügen wir die folgenden Zeilen in die Datei custom_postgui.hal ein

note: type: delimited block -
en: # E-Stop example using PyVCP buttons to simulate external components
de: # Beispiel für einen Notaus-Schalter mit PyVCP-Tasten zur Simulation externer Komponenten

note: type: delimited block -
en: # The PyVCP checkbutton simulates a normally closed external E-Stop
    net ext-estop classicladder.0.in-00 <= pyvcp.py-estop
de: # Der PyVCP-Checkbutton simuliert einen normalerweise geschlossenen externen Notaus-Schalter.
    net ext-estop classicladder.0.in-00 <= pyvcp.py-estop

note: type: delimited block -
en: # Request E-Stop Enable from LinuxCNC
    net estop-all-ok iocontrol.0.emc-enable-in <= classicladder.0.out-00
de: # Anforderung der Notaus-Freigabe von LinuxCNC
    net estop-all-ok iocontrol.0.emc-enable-in <= classicladder.0.out-00

note: type: delimited block -
en: # Request E-Stop Enable from PyVCP or external source
    net ext-estop-reset classicladder.0.in-03 <= pyvcp.py-reset
de: # Anforderung der E-Stop-Freigabe von PyVCP oder einer externen Quelle
    net ext-estop-reset classicladder.0.in-03 <= pyvcp.py-reset

note: type: delimited block -
en: # This line resets the E-Stop from LinuxCNC
    net emc-reset-estop iocontrol.0.user-request-enable => classicladder.0.in-02
de: # Diese Zeile setzt den Notaus von LinuxCNC zurück.
    net emc-reset-estop iocontrol.0.user-request-enable => classicladder.0.in-02

note: type: delimited block -
en: # This line enables LinuxCNC to unlatch the E-Stop in ClassicLadder
    net emc-estop iocontrol.0.user-enable-out => classicladder.0.in-01
de: # Diese Zeile ermöglicht es LinuxCNC, den Notausschalter in ClassicLadder zu entriegeln.
    net emc-estop iocontrol.0.user-enable-out => classicladder.0.in-01

note: type: delimited block -
en: # This line turns on the green indicator when out of E-Stop
    net estop-all-ok => pyvcp.py-es-status
de: # Diese Zeile schaltet den grünen Indikator ein, wenn der E-Stop beendet ist.
    net estop-all-ok => pyvcp.py-es-status

note: type: Plain text
en: Next we add the following lines to the panel.xml file. Note you have to open it with the text editor not the default html viewer.
de: Als nächstes fügen wir die folgenden Zeilen in die Datei panel.xml ein. Beachten Sie, dass Sie die Datei mit einem Texteditor öffnen müssen, nicht mit dem Standard-HTML-Viewer.

note: type: delimited block -
en: <pyvcp>
    <vbox>
    <label><text>"E-Stop Demo"</text></label>
    <led>
    <halpin>"py-es-status"</halpin>
    <size>50</size>
    <on_color>"green"</on_color>
    <off_color>"red"</off_color>
    </led>
    <checkbutton>
    <halpin>"py-estop"</halpin>
    <text>"E-Stop"</text>
    </checkbutton>
    </vbox>
    <button>
    <halpin>"py-reset"</halpin>
    <text>"Reset"</text>
    </button>
    </pyvcp>
de: <pyvcp>
    <vbox>
    <label><text>"Notaus Demo"</text></label>
    <led>
    <halpin>"py-es-status"</halpin>
    <size>50</size>
    <on_color>"green"</on_color>
    <off_color>"red"</off_color>
    </led>
    <checkbutton>
    <halpin>"py-estop"</halpin>
    <text>"Notaus"</text>
    </checkbutton>
    </vbox>
    <button>
    <halpin>"py-reset"</halpin>
    <text>"Reset"</text>
    </button>
    </pyvcp>

note: type: Plain text
en: Now start up your config and it should look like this.
de: Starten Sie nun Ihre Konfiguration und sie sollte so aussehen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: AXIS E-Stop
de: AXIS Notaus

note: type: Plain text
en: Note that in this example like in real life you must clear the remote E-Stop (simulated by the checkbox) before the AXIS E-Stop or the external Reset will put you in OFF mode. If the E-Stop in the AXIS screen was pressed, you must press it again to clear it. You cannot reset from the external after you do an E-Stop in AXIS.
de: Beachten Sie, dass Sie in diesem Beispiel wie im wirklichen Leben den ferngesteuerten Notaus (simuliert durch das Kontrollkästchen) deaktivieren müssen, bevor der AXIS Notaus oder der externe Reset Sie in den AUS-Modus versetzt. Wenn der Not-Aus-Schalter auf dem AXIS-Bildschirm gedrückt wurde, müssen Sie ihn erneut drücken, um ihn zu deaktivieren. Nach einem Notaus in AXIS können Sie keinen externen Reset durchführen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Timer/Operate Example
de: Beispiel für Timer/Bedienung

note: type: Plain text
en: In this example we are using the Operate block to assign a value to the timer preset based on if an input is on or off.
de: In diesem Beispiel verwenden wir den Operate-Block, um der Timer-Voreinstellung einen Wert zuzuweisen, der davon abhängt, ob ein Eingang ein- oder ausgeschaltet ist.

note: type: Plain text
en: In this case %I0 is true so the timer preset value is 10. If %I0 was false the timer preset would be 5.
de: In diesem Fall ist %I0 wahr, so dass der voreingestellte Wert des Timers 10 ist. Wäre %I0 falsch, wäre der voreingestellte Zeitgeberwert 5.

note: type: Title =
en: ClassicLadder Introduction
de: ClassicLadder Einführung

note: type: Title ==
en: History
de: Geschichte

note: type: Plain text
en: ClassicLadder is a free implementation of a ladder interpreter, released under the LGPL. It was written by Marc Le Douarain.
de: ClassicLadder ist eine freie Implementierung eines Ladder/Kontaktplan-Interpreters, veröffentlicht unter der LGPL. Sie wurde von Marc Le Douarain geschrieben.

note: type: Plain text
en: He describes the beginning of the project on his website:
de: Er beschreibt den Beginn des Projekts auf seiner Website:

note: type: delimited block _
en: I decided to program a ladder language only for test purposes at the start, in February 2001. It was planned, that I would have to participate to a new product after leaving the enterprise in which I was working at that time. And I was thinking that to have a ladder language in those products could be a nice option to considerate. And so I started to code the first lines for calculating a rung with minimal elements and displaying dynamically it under Gtk, to see if my first idea to realize all this works.
de: Ich beschloss, anfangs, im Februar 2001, eine Kontaktplansprache nur zu Testzwecken zu programmieren. Es war geplant, dass ich nach meinem Ausscheiden aus dem Unternehmen, in dem ich damals tätig war, an einem neuen Produkt mitarbeiten würde. Und ich dachte, dass es eine gute Option wäre, eine Ladder Language in diesen Produkten zu haben. Und so begann ich, die ersten Zeilen zu programmieren, um eine Sprosse mit minimalen Elementen zu berechnen und dynamisch unter Gtk darzustellen, um zu sehen, ob meine erste Idee, das alles zu realisieren, funktioniert.

note: type: delimited block _
en: And as quickly I've found that it advanced quite well, I've continued with more complex elements: timer, multiples rungs, etc...
de: Und da ich schnell festgestellt habe, dass es recht gut vorankommt, habe ich mit komplexeren Elementen weitergemacht: Zeitschaltuhr, mehrere Sprossen usw...

note: type: delimited block _
en: Voila, here is this work... and more: I've continued to add features since then.
de: Voila, hier ist diese Arbeit... und mehr: Seitdem habe ich weitere Funktionen hinzugefügt.

note: type: delimited block _
en: Marc Le Douarain, from "Genesis" at the ClassicLadder website
de: Marc Le Douarain, aus "Genesis" auf der ClassicLadder Website

note: type: Plain text
en: ClassicLadder has been adapted to work with LinuxCNC's HAL, and is currently being distributed along with LinuxCNC. If there are issues/problems/bugs please report them to the LinuxCNC project.
de: ClassicLadder wurde angepasst, um mit LinuxCNC's HAL arbeiten, und ist derzeit zusammen mit LinuxCNC verteilt werden. Wenn es Fragen/Probleme/Bugs bitte melden Sie sie an das LinuxCNC Projekt.

note: type: Plain text
en: Ladder logic or the Ladder programming language is a method of drawing electrical logic schematics. It is now a graphical language very popular for programming Programmable Logic Controllers (PLCs). It was originally invented to describe logic made from relays. The name is based on the observation that programs in this language resemble ladders, with two vertical 'rails' and a series of horizontal 'rungs' between them. In Germany and elsewhere in Europe, the style is to draw the rails horizontally along the top and bottom of the page while the rungs are drawn vertically from left to right.
de: Ladder Logic oder die Ladder-Programmiersprache ist eine Methode zum Zeichnen von elektrischen Logikschaltplänen. Sie ist heute eine sehr beliebte grafische Sprache für die Programmierung speicherprogrammierbarer Steuerungen (SPS). Ursprünglich wurde sie erfunden, um eine Logik zu beschreiben, die aus Relais besteht. Der Name beruht auf der Beobachtung, dass Programme in dieser Sprache Leitern ähneln, mit zwei vertikalen "Schienen" und einer Reihe von horizontalen "Sprossen" dazwischen. In Deutschland und anderswo in Europa ist es üblich, die Sprossen waagerecht am oberen und unteren Rand der Seite zu zeichnen, während die Sprossen senkrecht von links nach rechts verlaufen.

note: type: Plain text
en: A program in ladder logic, also called a ladder diagram, is similar to a schematic for a set of relay circuits. Ladder logic is useful because a wide variety of engineers and technicians can understand and use it without much additional training because of the resemblance.
de: Ein Programm in Kontaktplanlogik, auch Kontaktplan genannt, ist einem Schaltplan für eine Reihe von Relaisschaltungen ähnlich. Die Kontaktplanlogik ist nützlich, weil eine Vielzahl von Ingenieuren und Technikern sie aufgrund der Ähnlichkeit ohne viel zusätzliche Schulung verstehen und verwenden kann.

note: type: Plain text
en: Ladder logic is widely used to program PLCs, where sequential control of a process or manufacturing operation is required. Ladder logic is useful for simple but critical control systems, or for reworking old hardwired relay circuits. As programmable logic controllers became more sophisticated it has also been used in very complex automation systems.
de: Die Kontaktplanlogik wird häufig zur Programmierung von SPS verwendet, wenn eine sequenzielle Steuerung eines Prozesses oder eines Fertigungsvorgangs erforderlich ist. Die Kontaktplanlogik ist nützlich für einfache, aber kritische Steuerungssysteme oder für die Überarbeitung alter festverdrahteter Relaisschaltungen. Da speicherprogrammierbare Steuerungen immer ausgereifter wurden, wurde sie auch in sehr komplexen Automatisierungssystemen eingesetzt.

note: type: Plain text
en: Ladder logic can be thought of as a rule-based language, rather than a procedural language. A 'rung' in the ladder represents a rule. When implemented with relays and other electromechanical devices, the various rules 'execute' simultaneously and immediately. When implemented in a programmable logic controller, the rules are typically executed sequentially by software, in a loop. By executing the loop fast enough, typically many times per second, the effect of simultaneous and immediate execution is obtained.
de: Die Kontaktplanlogik kann als regelbasierte Sprache und nicht als prozedurale Sprache betrachtet werden. Eine "Sprosse" im Kontaktplan stellt eine Regel dar. Bei der Verwendung von Relais und anderen elektromechanischen Geräten werden die verschiedenen Regeln gleichzeitig und sofort "ausgeführt". Bei der Implementierung in eine speicherprogrammierbare Steuerung werden die Regeln in der Regel sequentiell von der Software in einer Schleife ausgeführt. Wenn die Schleife schnell genug ausgeführt wird, in der Regel viele Male pro Sekunde, wird der Effekt der gleichzeitigen und unmittelbaren Ausführung erzielt.

note: type: Plain text
en: Ladder logic follows these general steps for operation.
de: Die Kontaktplanlogik folgt diesen allgemeinen Schritten für den Betrieb.

note: type: Plain text
en: Read Inputs
de: Eingänge lesen

note: type: Plain text
en: Solve Logic
de: Logik auflösen

note: type: Plain text
en: Update Outputs
de: Ausgaben aktualisieren

note: type: Plain text
en: The most common components of ladder are contacts (inputs), these usually are either NC (normally closed) or NO (normally open), and coils (outputs).
de: Die gebräuchlichsten Bestandteile von Leitern sind Kontakte (Eingänge), die in der Regel entweder Öffner (NC) oder Schließer (NO) sind, und Spulen (Ausgänge).

note: type: Plain text
en: the NO contact image:images/ladder_action_load.png[]
de: der Schließer image:images/ladder_action_load.png[]

note: type: Plain text
en: the NC contact image:images/ladder_action_loadbar.png[]
de: der Öffner image:images/ladder_action_loadbar.png[]

note: type: Plain text
en: the coil (output) image:images/ladder_action_out.png[]
de: die Spule (Ausgang) image:images/ladder_action_out.png[]

note: type: Plain text
en: Of course there are many more components to a full ladder language, but understanding these will help you grasp the overall concept.
de: Natürlich gibt es noch viele weitere Komponenten einer vollständigen Leitersprache, aber das Verständnis dieser Komponenten wird Ihnen helfen, das Gesamtkonzept zu begreifen.

note: type: Plain text
en: The ladder consists of one or more rungs. These rungs are horizontal traces (representing wires), with components on them (inputs, outputs and other), which get evaluated left to right.
de: Die Leiter eines Kontaktplans besteht aus einer oder mehreren Sprossen. Diese Sprossen sind horizontale Leiterbahnen (die Drähte darstellen), auf denen sich Komponenten befinden (Eingänge, Ausgänge und andere), die von links nach rechts ausgewertet werden.

note: type: Plain text
en: This example is the simplest rung:
de: Dieses Beispiel ist die einfachste Sprosse:

note: type: Plain text
en: The input on the left, B0, a normally open contact, is connected to the coil (output) on the right, Q0. Now imagine a voltage gets applied to the leftmost end, because the input B0 turns true (e.g. the input is activated, or the user pushed the NO contact). The voltage has a direct path to reach the coil (output) on the right, Q0.  As a consequence, the Q0 coil (output) will turn from 0/off/false to 1/on/true.  If the user releases B0, the Q0 output quickly returns to 0/off/false.
de: Der Eingang auf der linken Seite, B0, ein Schließer, ist mit der Spule (Ausgang) auf der rechten Seite, Q0, verbunden. Stellen Sie sich nun vor, dass am linken Ende eine Spannung angelegt wird, weil der Eingang B0 aktiv wird (z. B. weil der Eingang aktiviert ist oder der Benutzer den Schließer betätigt hat). Die Spannung hat einen direkten Weg zur Spule (Ausgang) rechts, Q0.  Infolgedessen schaltet die Spule Q0 (Ausgang) von 0/aus/falsch auf 1/an/wahr.  Wenn der Benutzer B0 loslässt, kehrt der Ausgang Q0 schnell zu 0/aus/falsch zurück.

note: type: Title ==
en: Basic Latching On-Off Circuit
de: Grundlegende selbsthaltende Ein-Aus-Schaltung

note: type: Plain text
en: Building on the above example, suppose we add a switch that closes whenever the coil Q0 is active. This would be the case in a relay, where the coil can activate the switch contacts; or in a contactor, where there are often several small auxiliary contacts in addition to the large 3-phase contacts that are the primary feature of the contactor.
de: Nehmen wir an, wir fügen dem obigen Beispiel einen Schalter hinzu, der immer dann schließt, wenn die Spule Q0 aktiv ist. Dies wäre der Fall bei einem Relais, bei dem die Spule die Schaltkontakte aktivieren kann, oder bei einem Schütz, bei dem es oft mehrere kleine Hilfskontakte zusätzlich zu den großen dreiphasigen Kontakten gibt, die das Hauptmerkmal des Schützes sind.

note: type: Plain text
en: Since this auxiliary switch is driven from coil Q0 in our earlier example, we will give it the same number as the coil that drives it.  This is the standard practice followed in all ladder programming, although it may seem strange at first to see a switch labeled the same as a coil. So let's call this auxiliary contact Q0 and connect it across the B0 'pushbutton' contact from our earlier example.
de: Da dieser Hilfsschalter in unserem früheren Beispiel von der Spule Q0 angesteuert wird, geben wir ihm die gleiche Nummer wie der Spule, die ihn ansteuert.  Dies ist die Standardpraxis in der Kontaktplanprogrammierung, auch wenn es zunächst seltsam erscheinen mag, dass ein Schalter mit der gleichen Nummer wie eine Spule bezeichnet wird. Nennen wir also diesen Hilfskontakt Q0 und verbinden ihn mit dem Tasterkontakt B0 aus unserem früheren Beispiel.

note: type: Plain text
en: Let's take a look at it:
de: Werfen wir einen Blick darauf:

note: type: Plain text
en: As before, when the user presses pushbutton B0, coil Q0 comes on.  And when coil Q0 comes on, switch Q0 comes on. Now the interesting part happens. When the user releases pushbutton B0, coil Q0 does not stop as it did before. This is because switch Q0 of this circuit is effectively holding the user's pushbutton pressed. So we see that switch Q0 is still holding coil Q0 on after the 'start' pushbutton has been released.
de: Wenn der Benutzer den Taster B0 drückt, schaltet sich wie zuvor die Spule Q0 ein.  Und wenn die Spule Q0 eingeschaltet wird, dann wird der Schalter Q0 eingeschaltet. Jetzt kommt der interessante Teil. Wenn der Benutzer den Druckknopf B0 loslässt, bleibt die Spule Q0 nicht wie zuvor stehen. Das liegt daran, dass der Schalter Q0 dieser Schaltung den Druckknopf des Benutzers tatsächlich gedrückt hält. Wir sehen also, dass der Schalter Q0 die Spule Q0 auch dann noch anhält, wenn der Starttaster losgelassen wurde.

note: type: Plain text
en: This type of contact on a coil or relay, used in this way, is often called a 'holding contact', because it 'holds on' the coil that it is associated with. It is also occasionally called a 'seal' contact, and when it is active it is said that the circuit is 'sealed'.
de: Diese Art von Kontakt an einer Spule oder einem Relais, auf diese Weise verwendet, wird oft als "Haltekontakt" bezeichnet, weil er die Spule, mit der er verbunden ist, "festhält". Gelegentlich wird er auch als "Siegelkontakt" (engl. seal contact) bezeichnet, und wenn er aktiv ist, sagt man, dass der Stromkreis "versiegelt" ist.

note: type: Plain text
en: Unfortunately, our circuit so far has little practical use, because, although we have an 'on' or 'start' button in the form of pushbutton B0, we have no way to shut this circuit off once it is started. But that's easy to fix. All we need is a way to interrupt the power to coil Q0. So let's add a normally-closed (NC) pushbutton just ahead of coil Q0.
de: Leider hat unsere Schaltung bisher wenig praktischen Nutzen, denn wir haben zwar einen Einschalt- oder Startknopf in Form des Tasters B0, aber wir haben keine Möglichkeit, diese Schaltung abzuschalten, wenn sie einmal gestartet ist. Aber das ist leicht zu beheben. Alles, was wir brauchen, ist eine Möglichkeit, die Stromzufuhr zur Spule Q0 zu unterbrechen. Fügen wir also einen Öffner-Taster direkt vor der Spule Q0 ein.

note: type: Plain text
en: Here's how that would look:
de: Das würde folgendermaßen aussehen:

note: type: Plain text
en: Now we have added 'off' or 'stop' pushbutton B1. If the user pushes it, contact from the rung to the coil is broken.  When coil Q0 loses power, it drops to 0/off/false. When coil Q0 goes off, so does switch Q0, so the 'holding contact' is broken, or the circuit is 'unsealed'. When the user releases the 'stop' pushbutton, contact is restored from the rung to coil Q0, but the rung has gone dead, so the coil doesn't come back on.
de: Jetzt haben wir den Taster B1 für "Aus" oder "Stopp" hinzugefügt. Wenn der Benutzer ihn drückt, wird der Kontakt zwischen der Sprosse und der Spule unterbrochen.  Wenn die Spule Q0 keinen Strom mehr hat, geht sie auf 0/aus/falsch. Wenn die Spule Q0 erlischt, dann erlischt auch der Schalter Q0, so dass der "Haltekontakt" unterbrochen oder der Stromkreis "entsiegelt" wird. Wenn der Benutzer die Stopptaste loslässt, wird der Kontakt von der Sprosse zur Spule Q0 wiederhergestellt, aber die Sprosse ist erloschen, so dass die Spule nicht wieder eingeschaltet wird.

note: type: Plain text
en: This circuit has been used for decades on virtually every machine that has a three-phase motor controlled by a contactor, so it was inevitable that it would be adopted by ladder/PLC programmers. It is also a very safe circuit, in that if 'start' and 'stop' are both pressed at the same time, the 'stop' function always wins.
de: Diese Schaltung wird seit Jahrzehnten in praktisch jeder Maschine verwendet, die einen durch ein Schütz gesteuerten Drehstrommotor hat, so dass es unvermeidlich war, dass sie von Kontaktplan-/SPS-Programmierern übernommen werden würde. Es handelt sich auch um eine sehr sichere Schaltung, denn wenn "Start" und "Stopp" gleichzeitig gedrückt werden, gewinnt immer die "Stopp"-Funktion.

note: type: Plain text
en: This is the basic building block of much of ladder programming, so if you are new to it, you would do well to make sure that you understand how this circuit operates.
de: Dies ist der Grundbaustein eines Großteils der Kontaktplanprogrammierung. Wenn Sie also neu in diesem Bereich sind, sollten Sie sicherstellen, dass Sie verstehen, wie diese Schaltung funktioniert.

note: type: Title =
en: Lathe User Information(((Lathe User Information)))
de: Drehbank-Benutzerinformationen(((Drehbank-Benutzerinformationen)))

note: type: Plain text
en: This chapter will provide information specific to lathes.
de: Dieses Kapitel enthält Informationen speziell für Drehmaschinen.

note: type: Title ==
en: Lathe Mode
de: Drehbank-Modus

note: type: Plain text
en: If your CNC machine is a lathe, there are some specific changes you will probably want to make to your INI file in order to get the best results from LinuxCNC.
de: Wenn Ihre CNC-Maschine eine Drehmaschine ist, gibt es einige spezifische Änderungen, die Sie wahrscheinlich an Ihrer INI-Datei vornehmen möchten, um die besten Ergebnisse von LinuxCNC zu erzielen.

note: type: Plain text
en: If you are using the AXIS display, have AXIS display your lathe tools properly.  See the <<cha:ini-configuration,INI Configuration>> section for more details.
de: Wenn Sie das AXIS-Display verwenden, müssen Sie dafür sorgen, dass AXIS Ihre Drehwerkzeuge richtig anzeigt.  Siehe den Abschnitt <<cha:ini-configuration,INI Konfiguration>> für weitere Details.

note: type: Plain text
en: To set up AXIS for Lathe Mode.
de: Erstellung von AXIS für Drehmaschinen-Modus.

note: type: delimited block -
en: # Tell the AXIS GUI our machine is a lathe.
    LATHE = TRUE
de: # Teilen Sie dem AXIS GUI mit, dass unsere Maschine eine Drehmaschine ist.
    LATHE = TRUE

note: type: Plain text
en: Lathe Mode in AXIS does not set your default plane to G18 (XZ). You must program that in the preamble of each G-code file or (better) add it to your INI file, like this:
de: Der Drehmaschinenmodus in AXIS setzt Ihre Standardebene nicht auf G18 (XZ). Sie müssen dies in der Präambel jeder G-Code-Datei programmieren oder (besser) in Ihre INI-Datei aufnehmen, etwa so:

note: type: delimited block -
en: # G-code modal codes (modes) that the interpreter is initialized with
    # on startup
    RS274NGC_STARTUP_CODE = G18 G20 G90
de: # G-Code Modalcodes (Modi), mit denen der Interpreter initialisiert wird
    # beim Starten
    RS274NGC_STARTUP_CODE = G18 G20 G90

note: type: Plain text
en: If your using GMOCCAPY then see the <<gmoccapy:lathe-section,the GMOCCAPY Lathe>> section.
de: Wenn Sie GMOCCAPY verwenden, lesen Sie den <<gmoccapy:lathe-Abschnitt, GMOCCAPY-Drehmaschine>>-Abschnitt.

note: type: Title ==
en: Lathe Tool Table(((Lathe Tool Table)))
de: Drehmaschinen-Werkzeugtabelle(((Drehmaschinen-Werkzeugtabelle)))

note: type: Plain text
en: The "Tool Table" is a text file that contains information about each tool.  The file is located in the same directory as your configuration and is called "tool.tbl" by default.  The tools might be in a tool changer or just changed manually.  The file can be edited with a text editor or be updated using G10 L1,L10,L11.  There is also a built-in tool table editor in the AXIS display.  The maximum number of entries in the tool table is 56.  The maximum tool and pocket number is 99999.
de: Die "Werkzeugtabelle" ist eine Textdatei, die Informationen über jedes Werkzeug enthält.  Die Datei befindet sich in demselben Verzeichnis wie Ihre Konfiguration und heißt standardmäßig "tool.tbl".  Die Werkzeuge können sich in einem Werkzeugwechsler befinden oder einfach manuell geändert werden.  Die Datei kann mit einem Texteditor bearbeitet oder mit G10 L1,L10,L11 aktualisiert werden.  Es gibt auch einen eingebauten Werkzeugtabelleneditor in dem AXIS GUI.  Die maximale Anzahl der Einträge in der Werkzeugtabelle beträgt 56.  Die maximale Anzahl von Werkzeugen und Plätzen beträgt 99999.

note: type: Plain text
en: Earlier versions of LinuxCNC had two different tool table formats for mills and lathes, but since the 2.4.x release, one tool table format is used for all machines. Just ignore the parts of the tool table that don't pertain to your machine, or which you don't need to use. For more information on the specifics of the tool table format, see the <<sec:tool-table,Tool Table>> Section.
de: Frühere Versionen von LinuxCNC hatten zwei verschiedene Werkzeugtabellenformate für Fräse n und Drehmaschinen, aber seit der Version 2.4.x wird ein Werkzeugtabellenformat für alle Maschinen verwendet. Ignorieren Sie einfach die Teile der Werkzeugtabelle, die nicht zu Ihrer Maschine gehören oder die Sie nicht benötigen. Weitere Informationen zu den Besonderheiten des Werkzeugtabellenformats finden Sie im Abschnitt <<sec:tool-table,Werkzeug-Table>>.

note: type: Title ==
en: Lathe Tool Orientation(((Lathe Tool Orientation)))
de: Drehwerkzeugausrichtung(((Drehwerkzeugausrichtung)))

note: type: Plain text
en: The following figure shows the lathe tool orientations with the center line angle of each orientation and info on FRONTANGLE and BACKANGLE.
de: Die folgende Abbildung zeigt die Ausrichtungen der Drehmeißel mit dem Winkel der Mittellinie jeder Ausrichtung und Informationen zu VORDERWINKEL und HINTERWINKEL.

note: type: Plain text
en: The FRONTANGLE and BACKANGLE are clockwise starting at a line parallel to Z+.
de: FRONTANGLE und BACKANGLE sind im Uhrzeigersinn beginnend an einer Linie parallel zu Z+.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Lathe Tool Orientations
de: Ausrichtung des Drehwerkzeugs

note: type: Plain text
en: In AXIS the following figures show what the Tool Positions look like, as entered in the tool table.
de: In AXIS zeigen die folgenden Abbildungen, wie die Werkzeugpositionen aussehen, wie sie in der Werkzeugtabelle eingegeben wurden.

note: type: Block title
en: Tool Positions 1, 2, 3 & 4(((Tool Positions 1, 2, 3 & 4)))
de: Werkzeugpositionen 1, 2, 3 & 4(((Werkzeugpositionen 1, 2, 3 & 4)))

note: type: Block title
en: Tool Positions 5, 6, 7 & 8(((Tool Positions 5, 6, 7 & 8)))
de: Werkzeugpositionen 5, 6, 7 & 8(((Werkzeugpositionen 5, 6, 7 & 8)))

note: type: Plain text
en: When running in lathe mode in AXIS you can set the X and Z in the tool table using the Touch Off window. If you have a tool turret you normally have 'Touch off to fixture' selected when setting up your turret. When setting the material Z zero you have 'Touch off to material' selected.  For more information on the G-codes used for tools see <<mcode:m6,M6>>, <<sec:select-tool,T__n__>>, and <<gcode:g43,G43>>.  For more information on tool touch off options in AXIS see <<sub:axis-machine-menu,Tool Touch Off>>.
de: Wenn Sie in AXIS im Drehmaschinenmodus arbeiten, können Sie die X- und Z-Werte in der Werkzeugtabelle mit Hilfe des Touch Off-Fensters einstellen. Wenn Sie über einen Werkzeugrevolver verfügen, haben Sie beim Einrichten des Revolvers normalerweise die Option "Anlegen an die Vorrichtung" ausgewählt. Beim Einstellen des Z-Nullpunkts für das Material ist die Option "Auf das Material aufsetzen" ausgewählt.  Weitere Informationen über die für Werkzeuge verwendeten G-Codes finden Sie unter <<mcode:m6,M6>>, <<sec:select-tool,T__n__>> und <<gcode:g43,G43>>.  Für weitere Informationen zu den Optionen für die Werkzeugberührung in AXIS siehe <<sub:axis-machine-menu,Tool Touch Off>>.

note: type: Plain text
en: The X axis offset for each tool is normally an offset from the center line of the spindle.
de: Der X-Achsen-Versatz für jedes Werkzeug ist normalerweise ein Versatz von der Mittellinie der Spindel.

note: type: Plain text
en: One method is to take your normal turning tool and turn down some stock to a known diameter. Using the Tool Touch Off window enter the measured diameter (or radius if in radius mode) for that tool. Then using some layout fluid or a marker to coat the part bring each tool up till it just touches the dye and set it's X offset to the diameter of the part used using the tool touch off. Make sure any tools in the corner quadrants have the nose radius set properly in the tool table so the control point is correct. Tool touch off automatically adds a G43 so the current tool is the current offset.
de: Eine Methode besteht darin, Ihr normales Drehwerkzeug zu nehmen und ein Rohteil mit einem bekannten Durchmesser abzudrehen. Geben Sie den gemessenen Durchmesser (oder den Radius, wenn Sie sich im Radiusmodus befinden) für dieses Werkzeug in das Fenster "Tool Touch Off" ein. Verwenden Sie dann etwas Layout-Fluid oder einen Marker, um das Teil zu beschichten, bringen Sie jedes Werkzeug nach oben, bis es die Farbe gerade berührt, und stellen Sie seinen X-Offset auf den Durchmesser des Teils ein, das Sie mit dem Werkzeug-Anlegefenster verwenden. Stellen Sie sicher, dass bei allen Werkzeugen in den Eckquadranten der Nasenradius in der Werkzeugtabelle richtig eingestellt ist, damit der Kontrollpunkt korrekt ist. Beim Ansetzen des Werkzeugs wird automatisch ein G43 hinzugefügt, so dass das aktuelle Werkzeug den aktuellen Versatz darstellt.

note: type: Plain text
en: A typical session might be:
de: Eine typische Sitzung könnte so aussehen:

note: type: Plain text
en: Home each axis if not homed.
de: Jede Achse referenzieren (engl. home), wenn sie nicht ausgerichtet ist.

note: type: Plain text
en: Set the current tool with 'T__n__ M6 G43' where _n_ is the tool number.
de: Setzen Sie das aktuelle Werkzeug mit 'T__n__ M6 G43', wobei _n_ die Werkzeugnummer ist.

note: type: Plain text
en: Select the X axis in the 'Manual Control window'.
de: Wählen Sie die X-Achse im Fenster "Manuelle Steuerung".

note: type: Plain text
en: Move the X to a known position or take a test cut and measure the diameter.
de: Bringen Sie das X in eine bekannte Position oder machen Sie einen Testschnitt und messen Sie den Durchmesser.

note: type: Plain text
en: Select Touch Off and pick Tool Table then enter the position or the diameter.
de: Wählen Sie Touch Off und wählen Sie Werkzeugtabelle, dann geben Sie die Position oder den Durchmesser ein.

note: type: Plain text
en: Follow the same sequence to correct the Z axis.
de: Gehen Sie in der gleichen Reihenfolge vor, um die Z-Achse zu korrigieren.

note: type: Plain text
en: Note: if you are in Radius Mode you must enter the radius, not the diameter.
de: Hinweis: Wenn Sie sich im Radiusmodus befinden, müssen Sie den Radius und nicht den Durchmesser eingeben.

note: type: Title ===
en: Z Touch Off
de: Z Touch-Off

note: type: Plain text
en: The Z axis offsets can be a bit confusing at first because there are two elements to the Z offset.  There is the tool table offset, and the machine coordinate offset.  First we will look at the tool table offsets.  One method is to use a fixed point on your lathe and set the Z offset for all tools from this point.  Some use the spindle nose or chuck face.  This gives you the ability to change to a new tool and set its Z offset without having to reset all the tools.
de: Die Versätze der Z-Achse können anfangs etwas verwirrend sein, da der Z-Versatz aus zwei Elementen besteht.  Es gibt den Werkzeugtischversatz und den Maschinenkoordinatenversatz.  Zunächst werden wir uns mit den Versätzen auf dem Werkzeugtisch befassen.  Eine Methode besteht darin, einen festen Punkt auf Ihrer Drehmaschine zu verwenden und den Z-Versatz für alle Werkzeuge von diesem Punkt aus einzustellen.  Manche verwenden die Spindelnase oder die Futterfläche.  Auf diese Weise können Sie zu einem neuen Werkzeug wechseln und dessen Z-Versatz einstellen, ohne alle Werkzeuge neu einstellen zu müssen.

note: type: Plain text
en: Make sure no offsets are in effect for the current coordinate system.
de: Vergewissern Sie sich, dass für das aktuelle Koordinatensystem keine Offsets gelten.

note: type: Plain text
en: Select the Z axis in the Manual Control window.
de: Wählen Sie die Z-Achse im Fenster Manuelle Steuerung.

note: type: Plain text
en: Bring the tool close to the control surface.
de: Bringen Sie das Werkzeug nahe an die Steuerfläche.

note: type: Plain text
en: Using a cylinder move the Z away from the control surface until the cylinder just passes between the tool and the control surface.
de: Bewegen Sie das Z mit einem Zylinder von der Steuerfläche weg, bis der Zylinder gerade zwischen dem Werkzeug und der Steuerfläche durchläuft.

note: type: Plain text
en: Select Touch Off and pick Tool Table and set the position to 0.0.
de: Wählen Sie Berühren (engl. touch off) und wählen Sie Werkzeugtabelle und setzen Sie die Position auf 0.0.

note: type: Plain text
en: Repeat for each tool using the same cylinder.
de: Wiederholen Sie diesen Vorgang für jedes Werkzeug mit demselben Zylinder.

note: type: Plain text
en: Now all the tools are offset the same distance from a standard position.  If you change a tool like a drill bit you repeat the above and it is now in sync with the rest of the tools for Z offset.  Some tools might require a bit of cyphering to determine the control point from the touch off point.  For example, if you have a 0.125" wide parting tool and you touch the left side off but want the right to be Z0, then enter 0.125" in the touch off window.
de: Jetzt sind alle Werkzeuge um den gleichen Abstand von einer Standardposition versetzt.  Wenn Sie ein Werkzeug, z. B. eine Bohrkrone, wechseln, wiederholen Sie die obigen Schritte und das Werkzeug ist nun mit den anderen Werkzeugen für den Z-Versatz synchronisiert.  Bei einigen Werkzeugen ist es erforderlich, den Kontrollpunkt vom Aufsetzpunkt aus zu bestimmen.  Wenn Sie z. B. ein 0,125 Zoll breites Abstechwerkzeug haben und die linke Seite abtasten, die rechte Seite aber Z0 sein soll, dann geben Sie 0.125 Zoll in das Absetzfenster ein.

note: type: Title ===
en: The Z Machine Offset
de: Der Z-Maschinenversatz (engl. machine offset)

note: type: Plain text
en: Once all the tools have the Z offset entered into the tool table, you can use any tool to set the machine offset using the machine coordinate system.
de: Sobald für alle Werkzeuge die Z-Korrektur in die Werkzeugtabelle eingegeben wurde, können Sie mit jedem Werkzeug die Maschinen-Korrektur über das Maschinenkoordinatensystem einstellen.

note: type: Plain text
en: Set the current tool with 'T__n__ M6' where _n_ is the tool number.
de: Stellen Sie das aktuelle Werkzeug mit 'T__n__ M6' ein, wobei _n_ die Werkzeugnummer ist.

note: type: Plain text
en: Issue a G43 so the current tool offset is in effect.
de: Geben Sie ein G43 aus, damit die aktuelle Werkzeugkorrektur wirksam wird.

note: type: Plain text
en: Bring the tool to the work piece and set the machine Z offset.
de: Führen Sie das Werkzeug an das Werkstück heran und stellen Sie den Z-Offset der Maschine ein.

note: type: Plain text
en: If you forget to set the G43 for the current tool when you set the machine coordinate system offset, you will not get what you expect, as the tool offset will be added to the current offset when the tool is used in your program.
de: Wenn Sie vergessen, den G43 für das aktuelle Werkzeug einzustellen, wenn Sie den Versatz des Maschinenkoordinatensystems festlegen, erhalten Sie nicht das, was Sie erwarten, da der Werkzeugversatz zum aktuellen Versatz addiert wird, wenn das Werkzeug in Ihrem Programm verwendet wird.

note: type: Plain text
en: Spindle synchronized motion requires a quadrature encoder connected to the spindle with one index pulse per revolution. See the motion man page and the <<cha:spindle-control,Spindle Control Example>> for more information.
de: Die spindel-synchronisierte Bewegung erfordert einen an die Spindel angeschlossenen Quadratur-Encoder mit einem Indeximpuls pro Umdrehung. Weitere Informationen finden Sie in der Motion-Manpage und im <<cha:spindle-control,Spindel Steuerungs-Beispiel>>.

note: type: Plain text
en: The G76 threading cycle is used for both internal and external threads.  For more information see the <<gcode:g76,G76>> Section.
de: Der Gewindeschneidzyklus G76 wird sowohl für Innen- als auch für Außengewinde verwendet.  Weitere Informationen finden Sie im Abschnitt <<gcode:g76,G76>>.

note: type: Block title
en: Constant Surface Speed
de: Konstante Oberflächengeschwindigkeit

note: type: Plain text
en: CSS or Constant Surface Speed uses the machine X origin modified by the tool X offset to compute the spindle speed in RPM. CSS will track changes in tool offsets. The X <<sec:machine-coordinate-system,machine origin>> should be when the reference tool (the one with zero offset) is at the center of rotation.  For more information see the <<gcode:g96-g97,G96>> Section.
de: Konstante Oberflächenberechnung (engl. kurz CSS für Constant Surface Speed) verwendet den X-Ursprung der Maschine, modifiziert durch den X-Versatz des Werkzeugs, um die Spindeldrehzahl in U/min zu berechnen. CSS verfolgt Änderungen der Werkzeugkorrekturen. Der X-Ursprung << sec:machine-coordinate-system,Maschinenursprung>> sollte sein, wenn sich das Referenzwerkzeug (das mit dem Nullversatz) im Drehzentrum befindet.  Weitere Informationen finden Sie im Abschnitt <<gcode:g96-g97,G96>>.

note: type: Block title
en: Feed per Revolution
de: Vorschub pro Umdrehung

note: type: Plain text
en: Feed per revolution will move the Z axis by the F amount per revolution.  This is not for threading, use G76 for threading.  For more information see the <<gcode:g93-g94-g95,G95>> Section.
de: Vorschub pro Umdrehung (engl. feed per revolution, oder kurz FPR) bewegt die Z-Achse um den Betrag F pro Umdrehung.  Dies ist nicht für das Gewindeschneiden, verwenden Sie G76 für das Gewindeschneiden.  Weitere Informationen finden Sie im Abschnitt <<gcode:g93-g94-g95,G95>>.

note: type: Title ==
en: Arcs
de: Bögen

note: type: Plain text
en: Calculating arcs can be mind challenging enough without considering radius and diameter mode on lathes as well as machine coordinate system orientation. The following applies to center format arcs. On a lathe you should include G18 in your preamble as the default is G17 even if you're in lathe mode, in the user interface AXIS. Arcs in G18 XZ plane use I (X axis) and K (Z axis) offsets.
de: Die Berechnung von Kreisbögen kann schon schwierig genug sein, ohne den Radius- und Durchmessermodus auf Drehmaschinen sowie die Ausrichtung des Maschinenkoordinatensystems zu berücksichtigen. Das Folgende gilt für Bögen im Mittelformat. Auf einer Drehmaschine sollten Sie G18 in Ihre Präambel aufnehmen, da die Voreinstellung G17 ist, auch wenn Sie sich im Drehmaschinenmodus befinden, in der Benutzeroberfläche AXIS. Bögen in der G18 XZ-Ebene verwenden I- (X-Achse) und K- (Z-Achse) Offsets.

note: type: Title ===
en: Arcs and Lathe Design
de: Bögen und Drehmaschinendesign

note: type: Plain text
en: The typical lathe has the spindle on the left of the operator and the tools on the operator side of the spindle center line. This is typically set up with the imaginary Y axis (+) pointing at the floor.
de: Bei einer typischen Drehmaschine befindet sich die Spindel auf der linken Seite des Bedieners und die Werkzeuge auf der Bedienerseite der Spindelmittellinie. Die imaginäre Y-Achse (+) zeigt dabei in der Regel auf den Boden.

note: type: Plain text
en: The following will be true on this type of setup:
de: Für diese Art von Einrichtung gilt Folgendes:

note: type: Plain text
en: The Z axis (+) points to the right, away from the spindle.
de: Die Z-Achse (+) zeigt nach rechts, weg von der Spindel.

note: type: Plain text
en: The X axis (+) points toward the operator, and when on the operator side of the spindle the X values are positive.
de: Die X-Achse (+) zeigt in Richtung des Bedieners, und wenn sie sich auf der Bedienerseite der Spindel befindet, sind die X-Werte positiv.

note: type: Plain text
en: Some lathes with tools on the back side have the imaginary Y axis (+)  pointing up.
de: Bei einigen Drehbänken mit Werkzeugen auf der Rückseite zeigt die imaginäre Y-Achse (+) nach oben.

note: type: Plain text
en: G2/G3 Arc directions are based on the axis they rotate around. In the case of lathes, it is the imaginary Y axis. If the Y axis (+) points toward the floor, you have to look up for the arc to appear to go in the correct direction. So looking from above you reverse the G2/G3 for the arc to appear to go in the correct direction.
de: G2/G3 Die Richtungen der Bogen basieren auf der Achse, um die sie sich drehen. Bei Drehbänken ist das die imaginäre Y-Achse. Wenn die Y-Achse (+) auf den Boden zeigt, müssen Sie nach oben schauen, damit der Bogen in die richtige Richtung zu gehen scheint. Wenn Sie also von oben schauen, kehren Sie die G2/G3 um, damit der Bogen in die richtige Richtung zu gehen scheint.

note: type: Title ===
en: Radius & Diameter Mode
de: Radius & Durchmesser-Modus

note: type: Plain text
en: When calculating arcs in radius mode you only have to remember the direction of rotation as it applies to your lathe.
de: Bei der Berechnung von Bögen im Radiusmodus müssen Sie sich nur die Drehrichtung merken, die für Ihre Drehmaschine gilt.

note: type: Plain text
en: When calculating arcs in diameter mode X is diameter and the X offset (I)  is radius even if you're in G7 diameter mode.
de: Bei der Berechnung von Bögen im Durchmessermodus ist X der Durchmesser und der X-Offset (I) der Radius, selbst wenn Sie sich im G7-Durchmessermodus befinden.

note: type: Title ==
en: Tool Path
de: Werkzeugpfad

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Control point
de: Kontrollpunkt

note: type: Plain text
en: The control point for the tool follows the programmed path. The control point is the intersection of a line parallel to the X and Z axis and tangent to the tool tip diameter, as defined when you touch off the X and Z axes for that tool. When turning or facing straight sided parts the cutting path and the tool edge follow the same path.  When turning radius and angles the edge of the tool tip will not follow the programmed path unless cutter comp is in effect. In the following figures you can see how the control point does not follow the tool edge as you might assume.
de: Der Kontrollpunkt für das Werkzeug folgt der programmierten Bahn. Der Kontrollpunkt ist der Schnittpunkt einer Linie, die parallel zur X- und Z-Achse verläuft und den Durchmesser der Werkzeugspitze tangiert, wie er beim Antasten der X- und Z-Achse für dieses Werkzeug definiert wurde. Beim Drehen oder Plandrehen von Teilen mit geraden Seiten folgen die Schneidbahn und die Werkzeugschneide demselben Weg.  Beim Drehen von Radien und Winkeln folgt die Kante der Werkzeugspitze nicht der programmierten Bahn, es sei denn, die Fräskompensation ist aktiviert. In den folgenden Abbildungen können Sie sehen, dass der Kontrollpunkt nicht der Werkzeugkante folgt, wie Sie vielleicht annehmen.

note: type: Title ===
en: Cutting Angles without Cutter Comp
de: Schneidwinkel ohne Fräser Compensation

note: type: Plain text
en: Now imagine we program a ramp without cutter comp. The programmed path is shown in the following figure. As you can see in the figure the programmed path and the desired cut path are one and the same as long as we are moving in an X or Z direction only.
de: Stellen Sie sich nun vor, wir programmieren eine Rampe ohne Schneidwerkzeugs-Kompensation (engl. kurz cutter comp). Die programmierte Bahn ist in der folgenden Abbildung dargestellt. Wie Sie in der Abbildung sehen können, sind die programmierte Bahn und die gewünschte Schnittbahn ein und dasselbe, solange wir uns nur in X- oder Z-Richtung bewegen.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Ramp Entry
de: Rampe Eingang

note: type: Plain text
en: Now as the control point progresses along the programmed path the actual cutter edge does not follow the programmed path as shown in the following figure. There are two ways to solve this, cutter comp and adjusting your programmed path to compensate for tip radius.
de: Wenn sich nun der Kontrollpunkt entlang der programmierten Bahn bewegt, folgt die tatsächliche Fräskante nicht der programmierten Bahn, wie in der folgenden Abbildung dargestellt. Es gibt zwei Möglichkeiten, dieses Problem zu lösen: die Kompensation der Schneide und die Anpassung der programmierten Bahn, um den Spitzenradius zu kompensieren.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Ramp Path
de: Rampenpfad

note: type: Plain text
en: In the above example it is a simple exercise to adjust the programmed path to give the desired actual path by moving the programmed path for the ramp to the left the radius of the tool tip.
de: Im obigen Beispiel ist es eine einfache Übung, die programmierte Bahn so anzupassen, dass sie die gewünschte tatsächliche Bahn ergibt, indem die programmierte Bahn für die Rampe um den Radius der Werkzeugspitze nach links verschoben wird.

note: type: Title ===
en: Cutting a Radius
de: Schneiden eines Radius

note: type: Plain text
en: In this example we will examine what happens during a radius cut without cutter comp. In the next figure you see the tool turning the OD of the part. The control point of the tool is following the programmed path and the tool is touching the OD of the part.
de: In diesem Beispiel werden wir untersuchen, was bei einem Radiusschnitt ohne Fräserabgleich passiert. In der nächsten Abbildung sehen Sie, wie das Werkzeug den Außendurchmesser des Werkstücks dreht. Der Kontrollpunkt des Werkzeugs folgt der programmierten Bahn und das Werkzeug berührt den Außendurchmesser des Werkstücks.

note: type: Plain text
en: In this next figure you can see as the tool approaches the end of the part the control point still follows the path but the tool tip has left the part and is cutting air. You can also see that even though a radius has been programmed the part will actually end up with a square corner.
de: In der nächsten Abbildung sehen Sie, wie sich das Werkzeug dem Ende des Teils nähert, der Kontrollpunkt folgt immer noch der Bahn, aber die Werkzeugspitze hat das Teil verlassen und schneidet Luft. Sie können auch sehen, dass das Teil, obwohl ein Radius programmiert wurde, tatsächlich mit einer quadratischen Ecke endet.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Radius Cut
de: Radiusschnitt

note: type: Plain text
en: Now you can see as the control point follows the radius programmed the tool tip has left the part and is now cutting air.
de: Jetzt können Sie sehen, wie der Kontrollpunkt dem programmierten Radius folgt, die Werkzeugspitze hat das Teil verlassen und schneidet nun Luft.

note: type: Plain text
en: In the final figure we can see the tool tip will finish cutting the face but leave a square corner instead of a nice radius. Notice also that if you program the cut to end at the center of the part a small amount of material will be left from the radius of the tool. To finish a face cut to the center of a part you have to program the tool to go past center at least the nose radius of the tool.
de: In der letzten Abbildung sehen Sie, dass die Werkzeugspitze den Schnitt an der Fläche beendet, aber eine quadratische Ecke anstelle eines schönen Radius hinterlässt. Beachten Sie auch, dass, wenn Sie den Schnitt so programmieren, dass er in der Mitte des Teils endet, eine kleine Menge Material vom Radius des Werkzeugs übrig bleibt. Um einen Flächenschnitt in der Mitte des Werkstücks zu beenden, müssen Sie das Werkzeug so programmieren, dass es über die Mitte hinausgeht und mindestens den Radius der Werkzeugspitze hat.

note: type: Title ===
en: Using Cutter Comp
de: Verwenden der Fräser (engl. cutter)-Kompensation

note: type: Plain text
en: When using cutter comp on a lathe think of the tool tip radius as the radius of a round cutter.
de: Bei der Verwendung von Cutter Comp auf einer Drehmaschine stellen Sie sich den Radius der Werkzeugspitze als den Radius eines runden Fräsers vor.

note: type: Plain text
en: When using cutter comp the path must be large enough for a round tool that will not gouge into the next line.
de: Bei der Verwendung von Cutter Comp muss der Weg für ein rundes Werkzeug groß genug sein, damit es sich nicht in die nächste Linie fräst.

note: type: Plain text
en: When cutting straight lines on the lathe you might not want to use cutter comp.  For example boring a hole with a tight fitting boring bar you may not have enough room to do the exit move.
de: Wenn Sie auf der Drehmaschine gerade Linien schneiden, möchten Sie vielleicht nicht den Cutter Comp verwenden.  Wenn Sie zum Beispiel ein Loch mit einer eng anliegenden Bohrstange bohren, haben Sie möglicherweise nicht genug Platz, um die Ausfahrbewegung durchzuführen.

note: type: Plain text
en: The entry move into a cutter comp arc is important to get the correct results.
de: Die Eintrittsbewegung in einen Cutter-Comp-Bogen ist wichtig, um die richtigen Ergebnisse zu erzielen.

note: type: Plain text
en: halstreamer - stream file data into HAL in real-time
de: halstreamer - Streaming von Daten aus Dateien zu HAL in Echtzeit

note: type: Plain text
en: *halstreamer* [_options_]
de: *halstreamer* [_Optionen_]

note: type: SH
en: DESCRIPTION
de: BESCHREIBUNG

note: type: Plain text
en: *streamer*(9) and *halstreamer* are used together to stream data
    from a file into the HAL in real-time.  *streamer* is a real-time HAL
    component that exports HAL pins and creates a FIFO in shared memory.
    *hal_streamer* is a user space program that copies data from stdin into
    the FIFO, so that *streamer* can write it to the HAL pins.
de: *streamer*(9) und *halstreamer* werden zusammen verwendet, um Daten
    aus einer Datei in die HAL in Echtzeit zu streamen.  *streamer* ist eine Echtzeit-HAL
    Komponente, die HAL-Pins exportiert und ein FIFO im gemeinsamen Speicher erstellt.
    *hal_streamer* ist ein User-Space-Programm, das Daten von stdin in den
    in den FIFO kopiert, so dass *streamer* sie an die HAL-Pins schreiben kann.

note: type: SH
en: OPTIONS
de: OPTIONEN

note: type: Plain text
en: Instructs *halstreamer* to write to FIFO _CHAN_.  FIFOs are numbered from zero, and the default value is zero, so this option is not needed unless multiple FIFOs have been created.
de: Weist *halstreamer* an, in den FIFO _CHAN_ zu schreiben.  FIFOs werden von Null an nummeriert, und der Standardwert ist Null, so dass diese Option nicht benötigt wird, es sei denn, es wurden mehrere FIFOs erstellt.

note: type: Plain text
en: Instructs *halsampler* to read from _FILENAME_ instead of from stdin.
de: Weist *halsampler* an, von _FILENAME_ statt von stdin zu lesen.

note: type: SH
en: USAGE
de: VERWENDUNG

note: type: Plain text
en: A FIFO must first be created by loading *streamer*(9) with *halcmd loadrt* or a *loadrt* command in a HAL file.  Then *halstreamer* can be invoked to begin writing data into the FIFO.
de: Ein FIFO muss zunächst durch Laden von *streamer*(9) mit *halcmd loadrt* oder einem *loadrt*-Befehl in einer HAL-Datei erstellt werden.  Dann kann *halstreamer* aufgerufen werden, um mit dem Schreiben von Daten in den FIFO zu beginnen.

note: type: Plain text
en: Data is read from stdin, and is almost always either redirected from a file or piped from some other program, since keyboard input would be unable to keep up with even slow streaming rates.
de: Die Daten werden von stdin gelesen und fast immer entweder aus einer Datei umgeleitet oder von einem anderen Programm über eine Pipeline übertragen, da die Tastatureingabe selbst mit langsamen Übertragungsraten nicht mithalten kann.

note: type: Plain text
en: Each line of input must match the pins that are attached to the FIFO, for example, if the *streamer* config string was "ffbs" then each line of input must consist of two floats, a bit, and a signed integer, in that order and separated by whitespace.  Floats must be formatted as required by *strtod*(3), signed and unsigned integers must be formatted as required by *strtol*(3) and *strtoul*(3), and bits must be either '0' or '1'.
de: Jede Eingabezeile muss mit den an den FIFO angeschlossenen Pins übereinstimmen, z. B. wenn der *Streamer*-Konfigurationsstring "ffbs" lautet, muss jede Eingabezeile aus zwei Fließkommazahlen, einem Bit und einer Ganzzahl mit Vorzeichen bestehen, und zwar in dieser Reihenfolge und durch Leerzeichen getrennt.  Fließkommazahlen müssen gemäß *strtod*(3) formatiert werden, Ganzzahlen mit und ohne Vorzeichen müssen gemäß *strtol*(3) und *strtoul*(3) formatiert werden, und Bits müssen entweder '0' oder '1' sein.

note: type: Plain text
en: Input lines that begin with '#' will be treated as comments and silently skipped.
de: Eingabezeilen, die mit '#' beginnen, werden als Kommentare behandelt und stillschweigend übersprungen.

note: type: Plain text
en: *halstreamer* transfers data to the FIFO as fast as possible until the
    FIFO is full, then it retries at regular intervals, until it is either
    killed or reads EOF from stdin.  Data can be redirected from a file or
    piped from some other program.
de: Der *Halstreamer* überträgt Daten so schnell wie möglich in den FIFO, bis dieser voll ist.
    FIFO voll ist, dann versucht er es in regelmäßigen Abständen erneut, bis er entweder
    beendet wird oder EOF von stdin liest.  Die Daten können aus einer Datei umgeleitet werden oder
    von einem anderen Programm weitergeleitet werden.

note: type: Plain text
en: The FIFO size should be chosen to ride through any momentary disruptions in the flow of data, such as disk seeks.  If the FIFO is big enough, *halstreamer* can be restarted with the same or a new file before the FIFO empties, resulting in a continuous stream of data.
de: Die Größe des FIFO sollte so gewählt werden, dass kurzzeitige Unterbrechungen des Datenflusses, wie z. B. Suchvorgänge auf der Festplatte, überbrückt werden können.  Wenn der FIFO groß genug ist, kann *halstreamer* mit der gleichen oder einer neuen Datei neu gestartet werden, bevor der FIFO leer ist, was zu einem kontinuierlichen Datenstrom führt.

note: type: Plain text
en: The data format for *halstreamer* input is the same as for *halsampler*(1)  output, so 'waveforms' captured with *halsampler* can be replayed using *halstreamer*.
de: Das Datenformat für die *Halstreamer*-Eingabe ist das gleiche wie für die *Halsampler*(1)-Ausgabe, so dass mit *Halsampler* aufgenommene "Wellenformen" mit *Halstreamer* wiedergegeben werden können.

note: type: Plain text
en: If a problem is encountered during initialization, *halstreamer* prints a message to stderr and returns failure.
de: Wenn während der Initialisierung ein Problem auftritt, gibt *halstreamer* eine Nachricht an stderr aus und gibt einen Fehler zurück.

note: type: Plain text
en: If a badly formatted line is encountered while writing to the FIFO, it prints a message to stderr, skips the line, and continues (this behavior may be revised in the future).
de: Wenn beim Schreiben in den FIFO eine schlecht formatierte Zeile gefunden wird, gibt es eine Nachricht an stderr aus, überspringt die Zeile und fährt fort (dieses Verhalten kann in Zukunft überarbeitet werden).

note: type: Plain text
en: Upon reading EOF from the input, it returns success.  If it is terminated before the input ends, it returns failure.
de: Wenn EOF aus der Eingabe gelesen wird, gibt es Erfolg zurück.  Wird es vor dem Ende der Eingabe beendet, gibt es einen Fehler zurück.

note: type: SH
en: SEE ALSO
de: SIEHE AUCH

note: type: SH
en: AUTHOR
de: AUTOR

note: type: Plain text
en: Original version by John Kasunich, as part of the LinuxCNC project.  Improvements by several other members of the LinuxCNC development team.
de: Originalversion von John Kasunich, als Teil des LinuxCNC-Projekts.  Verbesserungen durch mehrere andere Mitglieder des LinuxCNC Entwicklungsteams.

note: type: SH
en: REPORTING BUGS
de: MELDEN VON FEHLERN

note: type: Plain text
en: Report bugs to jmkasunich AT users DOT sourceforge DOT net
de: Fehler melden an jmkasunich AT users DOT sourceforge DOT net

note: type: Plain text
en: Copyright © 2006 John Kasunich.  This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
de: Urheberrecht © 2006 John Kasunich.  Dies ist freie Software; die Kopierbedingungen sind in der Quelle angegeben.  Es gibt KEINE Garantie; nicht einmal für die MARKTREIFE oder die EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.

note: type: Plain text
en: hy_gt_vfd - HAL userspace component for Huanyang GT-series VFDs
de: hy_gt_vfd - HAL Userspace Komponente für Huanyang GT-Serien VFDs

note: type: Plain text
en: *hy_gt_vfd* [_OPTIONS_]
de: *hy_gt_vfd* [_OPTIONEN_]

note: type: Plain text
en: The hy_gt_vfd component interfaces a Huanyang GT-series VFD to the LinuxCNC HAL.  The VFD is connected via RS-485 serial to the LinuxCNC computer.
de: Die hy_gt_vfd Komponente Schnittstellen ein Huanyang GT-Serie VFD an die LinuxCNC HAL.  Der VFD ist über RS-485 seriell mit dem LinuxCNC Computer verbunden.

note: type: Title ==
en: Hardware setup
de: Hardware-Einrichtung

note: type: Plain text
en: At least some Huanyang GT VFDs must be physically modified to enable Modbus communication.
de: Zumindest einige Huanyang GT VFDs müssen physisch modifiziert werden, um Modbus-Kommunikation zu ermöglichen.

note: type: Plain text
en: The circuit board location marked "SW1" is identified in the manual as "Switch of terminal resistor for RS485 communication".  On the only VFD I have experience with, the circuit board contained no switch at that location, instead holding a pair of crossed jumper wires (top-left pad connected to bottom-right pad, top-right to bottom-left).  In this configuration, no Modbus communication is possible.  We had to desolder the two crossed jumper wires and re-solder them parallel to each other (top-left to bottom-left, top-right to bottom-right).
de: Die mit "SW1" gekennzeichnete Stelle auf der Platine wird im Handbuch als "Schalter des Abschlusswiderstands für die RS485-Kommunikation" bezeichnet.  Bei dem einzigen VFD, mit dem ich Erfahrung habe, enthielt die Platine an dieser Stelle keinen Schalter, sondern ein Paar gekreuzter Überbrückungsdrähte (oberes linkes Pad mit unterem rechten Pad verbunden, oberes rechtes mit unterem linken).  In dieser Konfiguration ist keine Modbus-Kommunikation möglich.  Wir mussten die beiden gekreuzten Jumperdrähte ablöten und sie parallel zueinander neu anlöten (oben links an unten links, oben rechts an unten rechts).

note: type: Title ==
en: Firmware setup
de: Firmware-Setup

note: type: Plain text
en: The Huanyang GT VFD must be configure via the faceplate to talk Modbus with LinuxCNC.  Consult the Operation section of the Huanyang GT-series Inverter Manual for details.  Set the following parameters:
de: Der Huanyang GT VFD muss über die Frontplatte konfiguriert werden, um Modbus mit LinuxCNC zu sprechen.  Lesen Sie den Abschnitt "Betrieb" im Handbuch des Huanyang GT-Umrichters für Details.  Stellen Sie die folgenden Parameter ein:

note: type: Plain text
en: Set Run Command Source to Modbus serial port.
de: Legen Sie Run Command Source auf Modbus serielle Schnittstelle fest.

note: type: Plain text
en: Set Maximum Frequency to the maximum frequency you want the VFD to output, in Hz.
de: Stellen Sie Maximale Frequenz auf die maximale Frequenz, die der VFD ausgeben soll, in Hz ein.

note: type: Plain text
en: Set Upper Frequency Limit to the maximum frequency you want the VFD to output, in Hz.  This should be the same as the value in P0.03.
de: Setzen Sie die obere Frequenzgrenze auf die maximale Frequenz, die der VFD ausgeben soll, in Hz.  Dieser Wert sollte mit dem Wert in P0.03 übereinstimmen.

note: type: Plain text
en: Set Lower Frequency Limit to the minimum frequency you want the VFD to output, in Hz.
de: Setzen Sie die untere Frequenzgrenze auf die Mindestfrequenz, die der VFD ausgeben soll, in Hz.

note: type: Plain text
en: Set Frequency A Command Source to Modbus serial port.
de: Stellen Sie die Befehlsquelle für Frequenz A auf den seriellen Modbus-Anschluss ein.

note: type: Plain text
en: Set Motor Rated Power to the motor's power rating in kW.
de: Setzen Sie die Motornennleistung auf die Nennleistung des Motors in kW.

note: type: Plain text
en: Set Motor Rated Frequency to the motor's max frequency in Hz.
de: Stellen Sie die Motornennfrequenz auf die maximale Frequenz des Motors in Hz ein.

note: type: Plain text
en: Set Motor Rated Speed to the motor's speed in RPM at its rated maximum frequency.
de: Stellen Sie die Motornenndrehzahl auf die Motordrehzahl in U/min bei seiner maximalen Nennfrequenz ein.

note: type: Plain text
en: Set Motor Rated Voltage to the motor's maximum voltage, in Volts.
de: Stellen Sie die Motornennspannung auf die maximale Spannung des Motors in Volt ein.

note: type: Plain text
en: Set Motor Rated Current to the motor's maximum current, in Amps.
de: Stellen Sie den Motornennstrom auf den maximalen Strom des Motors in Ampere ein.

note: type: Plain text
en: Set Local Address to 1.  This matches the default in the hy_gt_vfd driver, change this if your setup has special needs.
de: Setzen Sie Local Address auf 1. Dies entspricht der Vorgabe im hy_gt_vfd-Treiber, ändern Sie dies, wenn Ihr Setup spezielle Anforderungen hat.

note: type: Plain text
en: Set Baud Rate Selection to 5 (38400 bps).  This matches the default in the hy_gt_vfd driver, change this if your setup has special needs.
de: Setzen Sie die Baudratenauswahl auf 5 (38400 bps).  Dies entspricht dem Standardwert im hy_gt_vfd-Treiber. Ändern Sie diesen Wert, wenn Ihre Einrichtung spezielle Anforderungen hat.

note: type: Plain text
en: Set Data Format (8n1 RTU).  This matches the default in the hy_gt_vfd driver, change this if your setup has special needs.
de: Datenformat festlegen (8n1 RTU).  Dies entspricht dem Standardwert im hy_gt_vfd Treiber, ändern Sie dies, wenn Ihr Setup spezielle Anforderungen hat.

note: type: Plain text
en: (default 8) For Modbus communication.  Set number of data bits to _N_.  _N_ must be between 5 and 8 inclusive.
de: (Standard 8) Für Modbus-Kommunikation.  Stellen Sie die Anzahl der Datenbits auf _N_.  _N_ muss zwischen 5 und 8 einschließlich liegen.

note: type: Plain text
en:       (default None) For Modbus communication.  Set serial parity to Even,
          Odd, or None.
de:       (Standardwert Keine) Für Modbus-Kommunikation.  Stellen Sie die serielle Parität auf Gerade,
          Ungerade, oder Keine.

note: type: Plain text
en: (default 38400) For Modbus communication.  Set baud rate to _N_.  It is an error if the rate is not one of the following: 1200, 2400, 4800, 9600, 19200, 38400
de: (Standard 38400) Für Modbus-Kommunikation.  Stellen Sie die Baudrate auf _N_.  Es ist ein Fehler, wenn die Rate nicht eine der folgenden ist: 1200, 2400, 4800, 9600, 19200, 38400

note: type: Plain text
en: (default 1) For Modbus communication.  Set serial stop bits to 1 or 2.
de: (Standard 1) Für Modbus-Kommunikation.  Setzen Sie die seriellen Stoppbits auf 1 oder 2.

note: type: Plain text
en: (default 1) For Modbus communication.  Set Modbus target (slave)  number.  This must match the device number you set on the Huanyang GT VFD.
de: (Standard 1) Für Modbus-Kommunikation.  Stellen Sie die Modbus-Zielnummer (Slave) ein.  Diese muss mit der Gerätenummer übereinstimmen, die Sie am Huanyang GT VFD eingestellt haben.

note: type: Plain text
en: (default /dev/ttyS0) For Modbus communication.  Set the name of the serial device node to use.
de: (Standard /dev/ttyS0) Für Modbus-Kommunikation.  Legen Sie den Namen des zu verwendenden seriellen Geräteknotens fest.

note: type: Plain text
en: Turn on verbose mode.
de: Schalten Sie den ausführlichen Modus ein.

note: type: Plain text
en: The motor's max speed in RPM.  This must match the motor speed value configured in VFD register P2.03.
de: Die maximale Motordrehzahl in RPM.  Diese muss mit dem in VFD-Register P2.03 konfigurierten Motordrehzahlwert übereinstimmen.

note: type: Plain text
en: This is the maximum output frequency of the VFD in Hz.  It should correspond to the motor's rated max frequency, and to the maximum and upper limit output frequency configured in VFD register P0.03 and P0.04.
de: Dies ist die maximale Ausgangsfrequenz des VFDs in Hz.  Sie sollte der maximalen Nennfrequenz des Motors sowie der in den VFD-Registern P0.03 und P0.04 konfigurierten maximalen und oberen Grenzausgangsfrequenz entsprechen.

note: type: Plain text
en: This is the minimum output frequency of the VFD in Hz.  It should correspond to the minimum output frequency configured in VFD register P0.05.
de: Dies ist die minimale Ausgangsfrequenz des VFDs in Hz.  Sie sollte der in VFD-Register P0.05 konfigurierten Mindestausgangsfrequenz entsprechen.

note: type: Plain text
en: The period for the driver's update cycle, in seconds. This is how frequently the driver will wake up, check its HAL pins, and communicate with the VFD.  Must be between 0.001 and 2.000 seconds.  Default: 0.1 seconds.
de: Die Zeitspanne für den Aktualisierungszyklus des Treibers, in Sekunden. Während dieser Zeitspanne wacht der Treiber auf, überprüft seine HAL-Pins und kommuniziert mit dem VFD.  Diese muss zwischen 0,001 und 2,000 Sekunden liegen.  Voreinstellung: 0,1 Sekunden.

note: type: Plain text
en: The requested motor speed, in RPM.
de: Die angeforderte Motordrehzahl in U/min.

note: type: Plain text
en: The motor's current speed, in RPM, reported by the VFD.
de: Die aktuelle Drehzahl des Motors in U/min, die vom VFD gemeldet wird.

note: type: Plain text
en: True when the drive is on and at the commanded speed (within 2%), False otherwise.
de: Wahr, wenn der Antrieb eingeschaltet ist und die vorgegebene Geschwindigkeit erreicht (innerhalb von 2 %), sonst Falsch.

note: type: Plain text
en: The requested output frequency, in Hz.  This is set from the .speed-cmd value, and is just shown for debugging purposes.
de: Die gewünschte Ausgangsfrequenz in Hz.  Dieser Wert wird über den Wert .speed-cmd festgelegt und wird nur zu Debugging-Zwecken angezeigt.

note: type: Plain text
en: The current output frequency of the VFD, in Hz.  This is reported from the VFD to the driver.
de: Die aktuelle Ausgangsfrequenz des VFD, in Hz.  Diese wird vom VFD an den Treiber gemeldet.

note: type: Plain text
en: Set this pin True to command the spindle on, at the speed requested on the .speed-cmd pin.  Set this pin False to command the spindle off.
de: Setzen Sie diesen Pin auf True, um die Spindel mit der über den Pin .speed-cmd angeforderten Geschwindigkeit einzuschalten.  Setzen Sie diesen Pin auf False, um die Spindel auszuschalten.

note: type: Plain text
en: The voltage that the VFD is current providing to the motor, in Volts.
de: Die Spannung, die der VFD an den Motor liefert, in Volt.

note: type: Plain text
en: The current that the motor is currently drawing from the VFD, in Amperes.
de: Der Strom, den der Motor derzeit vom VFD bezieht, in Ampere.

note: type: Plain text
en: The power that the motor is currently drawing from the VFD, in Watts.
de: Die Leistung, die der Motor derzeit vom VFD bezieht, in Watt.

note: type: Plain text
en: A count of the number of modbus communication errors between the driver and the VFD.  The driver is resilient against communication errors, but a large or growing number here indicates a problem that should be investigated.
de: Zählung der Anzahl der Modbus-Kommunikationsfehler zwischen dem Treiber und dem VFD.  Der Treiber ist widerstandsfähig gegen Kommunikationsfehler, aber eine große oder wachsende Zahl hier deutet auf ein Problem hin, das untersucht werden sollte.

note: type: Plain text
en: The VFD's input terminal register.
de: Das Register der Eingangsklemmen des VFD.

note: type: Plain text
en: The VFD's output terminal register.
de: Das Register der Ausgangsklemmen des VFD.

note: type: Plain text
en: The VFD's AI1 register.
de: Das AI1-Register des VFD.

note: type: Plain text
en: The VFD's AI2 register.
de: Das AI2-Register des VFD.

note: type: Plain text
en: The VFD's HDI-frequency register.
de: Das HDI-Frequenzregister des VFD.

note: type: Plain text
en: The VFD's external counter register.
de: Das externe Zählerregister des VFD.

note: type: Plain text
en: The VFD's fault info register.
de: Das Fehlerinformationsregister des VFD.

note: type: Plain text
en: The VFD produces the output frequency that it sends to the motor by adding a manually specified offset to the frequency command it gets over modbus.
de: Der VFD erzeugt die Ausgangsfrequenz, die er an den Motor sendet, indem er einen manuell festgelegten Offset zum Frequenzbefehl addiert, den er über Modbus erhält.

note: type: Plain text
en: The manual offset is controlled by pressing the Up/Down arrows on the faceplate while the VFD is turning the motor.
de: Der manuelle Offset wird durch Drücken der Auf/Ab-Pfeile auf der Frontplatte gesteuert, während der VFD den Motor dreht.

note: type: Plain text
en: If you command a speed on the .speed-cmd pin and get a different speed reported on the .speed-fb pin, first verify that the VFD registers listed in the FIRMWARE SETUP section above and the driver's command-line arguments all agree with the info on the motor's name plate.  If you still aren't getting the speed you expect, zero the VFD's frequency offset by starting the motor running, then pressing the Up/Down buttons to zero the offset.
de: Wenn Sie eine Geschwindigkeit auf dem .speed-cmd-Pin befehlen und eine andere Geschwindigkeit auf dem .speed-fb-Pin gemeldet bekommen, überprüfen Sie zuerst, ob die VFD-Register, die im Abschnitt FIRMWARE SETUP oben aufgeführt sind, und die Befehlszeilenargumente des Treibers mit den Angaben auf dem Typenschild des Motors übereinstimmen.  Wenn Sie immer noch nicht die erwartete Geschwindigkeit erhalten, setzen Sie den Frequenz-Offset des VFD auf Null, indem Sie den Motor laufen lassen und dann die Auf/Ab-Tasten drücken, um den Offset auf Null zu setzen.

note: type: Plain text
en: sendkeys - send input events based on pins or scancodes from HAL
de: sendkeys - sendet Eingangsereignisse basierend auf Pins oder Scancodes von HAL

note: type: Plain text
en: This component is intended as a partner component to matrix_kb or the hostmot2 7i73 driver. It accepts the key-up and key-down event codes from either of these and converts them to keystrokes sent from a virtual keyboard.
de: Diese Komponente ist als Partnerkomponente für matrix_kb oder den hostmot2 7i73-Treiber gedacht. Sie akzeptiert die Ereigniscodes für das Hoch- und Runterdrücken der Tasten von einem dieser beiden Treiber und wandelt sie in Tastenanschläge um, die von einer virtuellen Tastatur gesendet werden.

note: type: Plain text
en: It also allows for keystrokes to be generated by individual HAL pins.
de: Es ermöglicht auch die Erzeugung von Tastendrücken durch einzelne HAL-Pins.

note: type: Plain text
en: The *config* parameter to the *loadusr* HAL command defines how many
    scancodes will be supported and how many individual pins are created.
      *config=s16* would support the 16 scancodes of a 4x4 matrix.
      *config=t10* would create 10 individual HAL pin triggers.
      *config=s16t10* would create one instance with both the above.
de: Der Parameter *config* des HAL-Befehls *loadusr* legt fest, wie viele
    Scancodes unterstützt werden und wie viele einzelne Pins erstellt werden.
      *config=s16* würde die 16 Scancodes einer 4x4-Matrix unterstützen.
      *config=t10* würde 10 einzelne HAL-Pin-Trigger erzeugen.
      *config=s16t10* würde eine Instanz mit beiden oben genannten erstellen.

note: type: Plain text
en: Multiple configs separated by commas will create multiple instances of the component. The accepted codes can be seen in the extract from the linux headers here: <http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Scancodes>
de: Mehrere durch Kommata getrennte Configs erzeugen mehrere Instanzen der Komponente. Die akzeptierten Codes können in dem Auszug aus den Linux-Headern hier eingesehen werden: <http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Scancodes>

note: type: Plain text
en: The component requires the user to have write permissions to /dev/uinput which is not available by default. To give access:
de: Die Komponente erfordert, dass der Benutzer Schreibrechte auf /dev/uinput hat, was standardmäßig nicht der Fall ist. Um Zugang zu gewähren:

note: type: Plain text
en: Create the uinput group and add the LinuxCNC user to it:
de: Erstellen Sie die Gruppe uinput und fügen Sie den LinuxCNC-Benutzer zu ihr hinzu:

note: type: Plain text
en: Create a new entry in .B/etc/udev/rules.d/99-input.rules
de: Erstellen Sie einen neuen Eintrag in .B/etc/udev/rules.d/99-input.rules

note: type: Plain text
en: Then reboot the machine. You can test that is has worked:
de: Starten Sie dann den Rechner neu. Sie können testen, ob es funktioniert hat:

note: type: Plain text
en: It is possible to link the 7i73 codes to both the matrix_kb comp and this comp, so that some codes operate HAL pins and some send keystrokes. Where the option exists it is _MUCH_ better to use HAL pins for things like jogging and machine control. This component should really be used only for text entry and GUI operations.
de: Es ist möglich, die 7i73-Codes sowohl mit dem matrix_kb comp als auch mit diesem comp zu verknüpfen, so dass einige Codes HAL-Pins betreiben und einige Tastenanschläge senden. Ist die Option gegeben, so ist es _VIEL_ besser, HAL-Pins für Dinge wie Joggen und Maschinensteuerung zu verwenden. Diese Komponente sollte eigentlich nur für die Texteingabe und GUI-Operationen verwendet werden.

note: type: Plain text
en: Each key on the matrix is allocated a scan code. The simplest way to configure the component is to load the component and open a halmeter showing sendkeys.0.current-event. Note the code for each physical key.  (If keys do not give consistent results then you probably need to toggle the value of the matrix_kb.0.negative-logic pin and/or invert io pins).
de: Jeder Taste auf der Matrix ist ein Scan-Code zugeordnet. Der einfachste Weg, die Komponente zu konfigurieren, besteht darin, die Komponente zu laden und ein Halmeter zu öffnen, das sendkeys.0.current-event anzeigt. Notieren Sie den Code für jede physische Taste.  (Wenn die Tasten keine konsistenten Ergebnisse liefern, müssen Sie wahrscheinlich den Wert des Pins matrix_kb.0.negative-logic umschalten und/oder die io-Pins invertieren).

note: type: Plain text
en: Then edit the HAL file to assign a key event to each scancode. For example:
de: Bearbeiten Sie dann die HAL-Datei, um jedem Scancode ein Schlüsselereignis zuzuordnen. Zum Beispiel:

note: type: Plain text
en: To set a button to type the letter "G" The key events related to each physical key need to be set up prior to the component activating, but after the component is loaded.
de: Um eine Taste so einzustellen, dass sie den Buchstaben "G" tippt, müssen die Tastenereignisse für jede physische Taste eingerichtet werden, bevor die Komponente aktiviert wird, aber nachdem die Komponente geladen wurde.

note: type: Plain text
en: To achieve this there is a pin *sendkeys*./N/.*init* which should be set to "true" once the events to be sent for each scancode and pin have been set up.
de: Um dies zu erreichen, gibt es einen Pin *sendkeys*./N/.*init*, der auf "true" gesetzt werden sollte, sobald die zu sendenden Ereignisse für jeden Scancode und Pin eingerichtet wurden.

note: type: Plain text
en: To generate keystrokes from other sources note that a keydown is simply 0xC0 & keycode and keyup is 0x80 & keycode.
de: Um Tastenanschläge aus anderen Quellen zu generieren, beachten Sie bitte, dass ein keydown einfach 0xC0 & keycode und keyup 0x80 & keycode ist.

note: type: Plain text
en: *sendkeys.N.keycode* u32 in
        Connect to scancode generator.
de: *sendkeys.N.keycode* u32 in
        Verbindung zum Scancode-Generator herstellen.

note: type: Plain text
en: *sendkeys.N.current-event* s32 out
        shows the current scancode without keyup / keydown markers.
de: *sendkeys.N.current-event* s32 out
        zeigt den aktuellen Scancode ohne Keyup / Keydown-Markierungen.

note: type: Plain text
en: *sendkeys.N.init* bit in
        set this pin TRUE once all the event parameters have been set.
de: *sendkeys.N.init* bit in
        Setzen Sie diesen Pin auf TRUE, sobald alle Ereignisparameter gesetzt sind.

note: type: SH
en: PARAMETERS
de: PARAMETER

note: type: Plain text
en: *sendkeys.N.scan-event-MM* u32 in
        assign the uinput event codes associated with each scancode.
de: *sendkeys.N.scan-event-MM* u32 in
        weisen die uinput-Ereigniscodes zu, die mit jedem Scancode verbunden sind.

note: type: Plain text
en: *sendkeys.N.pin-event-MM* u32 in
        assign the uinput codes associated with each HAL bit pin.
de: *sendkeys.N.pin-event-MM* u32 in
        die mit jedem HAL-Bit-Pin verbundenen uinput-Codes zuweisen.

note: type: SH
en: EXAMPLE
de: BEISPIEL

note: type: delimited block .
en: #Send Ctl + Space from one trigger
    net clear-errors parport.0.pin.00.in sendkeys.0.trigger-00 sendkeys.0.trigger-01
de: #Ctl + Leertaste von einem Trigger senden
    net clear-errors parport.0.pin.00.in sendkeys.0.trigger-00 sendkeys.0.trigger-01

note: type: SH
en: LICENSE
de: LIZENZ

note: type: Plain text
en: svd-ps_vfd - HAL userspace component for SVD-P(S) VFDs
de: svd-ps_vfd - HAL Userspace Komponente für SVD-P(S) VFDs

note: type: Plain text
en: The svd-ps_vfd component interfaces a Soyan Power SVD-P(S) VFD to the LinuxCNC HAL.  The VFD is connected via RS-485 to the LinuxCNC computer.
de: Die Komponente svd-ps_vfd verbindet einen Soyan Power SVD-P(S) VFD mit dem LinuxCNC HAL.  Der VFD ist über RS-485 mit dem LinuxCNC Computer verbunden.

note: type: Plain text
en: The SVD-P(S) VFDs are also sold under the LAPOND brand.
de: Die SVD-P(S) VFDs werden auch unter der Marke LAPOND verkauft.

note: type: Plain text
en: The SVD-P(S) VFDs do not come with a Modbus daughterboard by default, it needs to be purchased separately.
de: Die SVD-P(S) VFDs werden standardmäßig nicht mit einer Modbus-Zusatzplatine geliefert, diese muss separat erworben werden.

note: type: Plain text
en: The sad-ps_vfd component uses standard Modbus protocol communication which requires that one parameter be changed from the default settings:
de: Die Komponente sad-ps_vfd verwendet die Standardkommunikation über das Modbus-Protokoll, was eine Änderung eines Parameters gegenüber den Standardeinstellungen erfordert:

note: type: Plain text
en: PD-05 = 1 (Standard Modbus protocol)
de: PD-05 = 1 (Standard Modbus Protokoll)

note: type: Plain text
en: The following settings have been tested successfully and are the default per Soyans documentation:
de: Die folgenden Einstellungen wurden erfolgreich getestet und sind die Standardeinstellungen gemäß der Soyans-Dokumentation:

note: type: Plain text
en: PD-02 = 1 (Slave address)
de: PD-02 = 1 (Slave-Adresse)

note: type: Plain text
en: PD-03 = 2 (Response delay)
de: PD-03 = 2 (Antwortverzögerung)

note: type: Plain text
en: PD-04 = 0 (Communication timeout)
de: PD-04 = 0 (Kommunikations-Timeout)

note: type: Plain text
en: PD-06 = 0 (Current resolution)
de: PD-06 = 0 (Aktuelle Auflösung)

note: type: Plain text
en: (default 9600) For Modbus communication.  Set baud rate to _N_.  It is an error if the rate is not one of the following: 1200, 2400, 4800, 9600, 19200, 38400
de: (Standardwert 9600) Für Modbus-Kommunikation.  Stellen Sie die Baudrate auf _N_.  Es ist ein Fehler, wenn die Rate nicht eine der folgenden ist: 1200, 2400, 4800, 9600, 19200, 38400

note: type: Plain text
en: (default 2) For Modbus communication.  Set serial stop bits to 1 or 2.
de: (Voreinstellung 2) Für Modbus-Kommunikation.  Setzen Sie die seriellen Stoppbits auf 1 oder 2.

note: type: Plain text
en: The motor's max speed in RPM.
de: Die maximale Drehzahl des Motors in U/min.

note: type: Plain text
en: This is the maximum output frequency of the VFD in Hz.
de: Dies ist die maximale Ausgangsfrequenz des VFD in Hz.

note: type: Plain text
en: This is the minimum output frequency of the VFD in Hz.
de: Dies ist die minimale Ausgangsfrequenz des VFD in Hz.

note: type: Plain text
en: xhc-whb04b-6 - Userspace jog dial HAL component for the wireless XHC WHB04B-6 USB device.
de: xhc-whb04b-6 - Userspace jog dial HAL Komponente für das drahtlose XHC WHB04B-6 USB Gerät.

note: type: Plain text
en: xhc-whb04b-6 [-h] | [-H] [OPTIONS]
de: xhc-whb04b-6 [-h] | [-H] [OPTIONEN]

note: type: Plain text
en: The xhc-whb04b-6 HAL component supports the XHC WHB04B-6, a 6-axis wireless USB pendant.  It provides a number of push-buttons, a jogwheel, two rotary buttons for axis and speed / step selection and an ordinary LCD display.
de: Die HAL-Komponente xhc-whb04b-6 unterstützt das XHC WHB04B-6, ein kabelloses 6-Achsen-USB-Pendant.  Es bietet eine Reihe von Drucktasten, ein Jogwheel, zwei Drehknöpfe für die Achsen- und Geschwindigkeits-/Schrittauswahl und ein gewöhnliches LCD-Display.

note: type: Plain text
en: The LCD display, having a very simple firmware interface, indicates the following listed information only.  No other information, such as custom data, can be printed.
de: Die LCD-Anzeige, die über eine sehr einfache Firmware-Schnittstelle verfügt, zeigt nur die nachfolgend aufgeführten Informationen an.  Andere Informationen, wie z. B. benutzerdefinierte Daten, können nicht gedruckt werden.

note: type: Plain text
en: Activated axis (X, Y, Z, A, B or C).
    Current axis position of X, Y, Z and separately of A, B, C.
    Whether machine (X, Y, Z, A, B or C) or relative (X1, Y1, Z1, A1, B1 or C1) coordinates are displayed.
    Step size or velocity depending on the operating mode (MPG or Step or Continuous).
    Feedrate override Spindle Feedrate override Machine state such as reset.
    Battery level
    Wireless signal strength
de: Aktivierte Achse (X, Y, Z, A, B oder C).
    Aktuelle Achsenposition von X, Y, Z und separat von A, B, C.
    Ob Maschinen- (X, Y, Z, A, B oder C) oder relative (X1, Y1, Z1, A1, B1 oder C1) Koordinaten angezeigt werden.
    Schrittweite oder Geschwindigkeit je nach Betriebsart (MPG oder Schritt oder Kontinuierlich).
    Vorschubüberbrückung Spindelvorschubüberbrückung Maschinenzustand wie z.B. Reset.
    Batteriestand
    Drahtlose Signalstärke

note: type: Plain text
en: *-h, --help*
    Prints the synopsis and the most commonly used commands.
de: *-h, --help*
    Gibt die Zusammenfassung und die am häufigsten verwendeten Befehle aus.

note: type: Plain text
en: *-H*
    Run xhc-whb04b-6 in HAL-mode instead of interactive mode.
    When in HAL mode commands from device will be exposed to HAL's shred memory.
    Interactive mode is useful for testing device connectivity and debugging.
de: *-H*
    Führt xhc-whb04b-6 im HAL-Modus statt im interaktiven Modus aus.
    Im HAL-Modus werden die Befehle des Geräts in den Shred-Speicher des HAL übertragen.
    Der interaktive Modus ist nützlich zum Testen der Gerätekonnektivität und zur Fehlersuche.

note: type: Plain text
en: *-s*
    Lead + jogwheel changes the spindle override speed.
    Each tick will increase/decrease the spindle override.
de: *-s*
    Blei + Jogwheel ändert die Spindel-Override-Drehzahl.
    Jeder Tick erhöht/verringert den Spindel-Override.

note: type: Plain text
en: *-f*
    MPG + jogwheel changes the feed override.
    Each tick will increment/decrement the feed override.
de: *-f*
    MPG + Jogwheel ändert den Vorschub-Override.
    Mit jedem Häkchen wird der Vorschub-Override erhöht/verringert.

note: type: Plain text
en: *-t*
    Wait with timeout for USB device then proceed, exit otherwise.
    Without -t the timeout is implicitly infinite.
de: *-t*
    Mit Timeout auf USB-Gerät warten und dann fortfahren, sonst beenden.
    Ohne -t ist die Zeitüberschreitung implizit unendlich.

note: type: Plain text
en: *-u, -U*
    Show received data from device.
    With -U received and transmitted data will be printed. Output is prefixed with "usb".
de: *-u, -U*
    Zeigt die vom Gerät empfangenen Daten an.
    Mit -U werden empfangene und gesendete Daten gedruckt. Die Ausgabe wird mit dem Präfix "usb" versehen.

note: type: Plain text
en: *-p*
    Show HAL pins and HAL related messages. Output is prefixed with "hal".
de: *-p*
    Zeigt HAL-Pins und HAL-bezogene Meldungen an. Der Ausgabe ist ein "hal" vorangestellt.

note: type: Plain text
en: *-e*
    Show captured events such as button pressed/released, jog dial, axis rotary button, and feed rotary button event.
    Output is prefixed with "event".
de: *-e*
    Zeigt erfasste Ereignisse an, z. B. Taste gedrückt/freigegeben, Jog-Dial, Achsendrehknopf und Vorschubdrehknopf-Ereignis.
    Der Ausgabe wird ein "event" vorangestellt.

note: type: Plain text
en: *-a*
    Enable all logging facilities without explicitly specifying each.
de: *-a*
    Aktiviert alle Protokollierungsmöglichkeiten, ohne sie explizit anzugeben.

note: type: Plain text
en: *-c*
    Enable checksum output which is necessary for debugging the checksum generator function.
    Do not rely on this feature since it will be removed once the generator is implemented.
de: *-c*
    Aktiviert die Ausgabe von Prüfsummen, die für die Fehlersuche in der Funktion des Prüfsummengenerators erforderlich ist.
    Verlassen Sie sich nicht auf diese Funktion, da sie entfernt wird, sobald der Generator implementiert ist.

note: type: Plain text
en: *-n*
    Force being silent and not printing any output except of errors.
    This will also inhibit messages prefixed with "init".
de: *-n*
    Erzwingt Stillschweigen und gibt außer bei Fehlern keine Ausgaben aus.
    Dadurch werden auch Meldungen mit dem Präfix "init" verhindert.

note: type: Plain text
en: The xhc-whb04b-6 executable needs permission for reading the pendant's USB device. There may be the need for additional udev rules. If so, this file
    `/etc/udev/rules.d/99-xhc-whb04b-6.rules`
    should be created with the single line
    `ATTR{idProduct}=="eb93", ATTR{idVendor}=="10ce", MODE="0666", OWNER="root", GROUP="plugdev"`.
de: Die ausführbare Datei xhc-whb04b-6 benötigt die Berechtigung zum Lesen des USB-Geräts des Pendants. Möglicherweise sind zusätzliche udev-Regeln erforderlich. Wenn dies der Fall ist, muss diese Datei
    `/etc/udev/rules.d/99-xhc-whb04b-6.rules`
    sollte mit einer einzigen Zeile erstellt werden
    `ATTR{idProduct}=="eb93", ATTR{idVendor}=="10ce", MODE="0666", OWNER="root", GROUP="plugdev"`.

note: type: Plain text
en: The xhc-whb04b-6 program can be run from the command line without LinuxCNC to test a pendant.  This standalone mode is used to identify the button codes produced for each button press and debug transmitted USB data.
de: Die xhc-whb04b-6 Programm kann von der Kommandozeile ohne LinuxCNC ausgeführt werden, um ein Pendant zu testen.  Dieser Standalone-Modus wird verwendet, um die Taste Codes für jede Taste drücken und Debug übertragen USB-Daten erzeugt zu identifizieren.

note: type: SH
en: EXAMPLES
de: BEISPIELE

note: type: Plain text
en: Start in userspace mode (simulation) and prints incoming USB data transfer and generated key pressed/released events.
de: Startet im Userspace-Modus (Simulation) und druckt eingehende USB-Datenübertragungen und generierte Tastendruck-/Freigabe-Ereignisse.

note: type: Plain text
en: Start in userspace mode (simulation) and prints HAL pin names and events distributed to HAL memory.
de: Start im Userspace-Modus (Simulation) und Ausgabe von HAL-Pin-Namen und Ereignissen, die auf den HAL-Speicher verteilt werden.

note: type: Plain text
en: Start in HAL mode (Normal mode for real machine use).
de: Starten Sie im HAL-Modus (Normaler Modus für den realen Einsatz der Maschine).

note: type: Title ==
en: Hal Usage
de: HAL Verwendung

note: type: Plain text
en: Use the -H option to specify HAL mode and other options as required:
    *loadusr -W xhc-whb04b-6 -HsfB*
de: Verwenden Sie die Option -H, um den HAL-Modus und andere Optionen nach Bedarf anzugeben:
    *loadusr -W xhc-whb04b-6 -HsfB*

note: type: Title ===
en: Input/Output Signals
de: Eingangs-/Ausgangssignale

note: type: Plain text
en: *Note:* For each button an output pin is provided even if no functionality is realized with that signal.
    For example, to stop a running program the Stop button pin may be directly connected to halui.program.stop.
    However, to start/pause/resume a program, the corresponding button toggles besides whb.button.start-pause
    also the whb.halui.program.{run,pause,resume} signals accordingly. +
    *Note:* The Spindle+/Spindle- buttons do manipulate the spindle override.
    The spindle speed is set with the respective combos Fn + Spindle- and FN + Spindle+.
de: *Hinweis:* Für jede Schaltfläche ist ein Ausgangspin vorgesehen, auch wenn keine Funktionalität mit diesem Signal realisiert wird.
    Um beispielsweise ein laufendes Programm anzuhalten, kann der Pin der Stop-Taste direkt mit halui.program.stop verbunden werden.
    Um jedoch ein Programm zu starten/pausieren/fortsetzen, schaltet der entsprechende Button neben whb.button.start-pause
    auch die Signale whb.halui.program.{run,pause,resume} entsprechend. +
    *Hinweis:* Die Tasten Spindel+/Spindel- beeinflussen den Spindel-Override.
    Die Spindeldrehzahl wird mit den entsprechenden Kombinationen Fn + Spindel- und FN + Spindel+ eingestellt.

note: type: Plain text
en: The following tables list all in-/output pins and state which signals they are meant to be connected to. +
de: In den folgenden Tabellen sind alle Ein-/Ausgangsstifte aufgeführt und es wird angegeben, mit welchen Signalen sie verbunden werden sollen. +

note: type: Title ====
en: Axis and Stepgen
de: Achse und Stepgen

note: type: Plain text
en: Signals utilized for moving axis.
de: Signale, die für die Bewegung der Achse verwendet werden.

note: type: Plain text
en: *_<N>_*  ... denotes the axis number, which is of {x, y, z, a, b, c}
de: *_<N>_* ... bezeichnet die Nummer der Achse, die aus {x, y, z, a, b, c} besteht.

note: type: Plain text
en: connect to *halui.home-all*, driven by M-Home Pin for requesting all axis to home. See also *whb.button.m-home*.
de: Verbindung zu *halui.home-all*, gesteuert durch den M-Home Pin, um alle Achsen in die Ausgangsstellung zu bringen. Siehe auch *whb.button.m-home*.

note: type: Plain text
en: connect to *halui.axis._<N>_.select* Pin to select axis.
de: Verbindung zu *halui.axis._<N>_.select* Pin zur Auswahl der Achse.

note: type: Plain text
en: connect to *axis._<N>_.jog-counts* The count pin of the jogwheel.
de: verbinden mit *axis._<N>_.jog-counts* Der Zähl-Pin des Jogwheels.

note: type: Plain text
en: connect to *axis._<N>_.jog-enable* If true (and in manual mode), any change to "jog-counts" will result in motion. If false, "jog-counts" is ignored.
de: connect to *axis._<N>_.jog-enable* Wenn true (und im manuellen Modus), führt jede Änderung der "jog-counts" zu einer Bewegung. Wenn false, wird "jog-counts" ignoriert.

note: type: Plain text
en: connect to *axis._<N>_.jog-scale* The distance to move for each count on "jog-counts", in machine units.
de: connect to *axis._<N>_.jog-scale* Die Strecke, die für jede Zählung bei "jog-counts" zurückgelegt wird, in Maschineneinheiten.

note: type: Plain text
en: connect to *axis._<N>_.jog-jog-vel-mode* If false the jogwheel operates in position mode. The axis will move exactly jog-scale units for each count, regardless of how long that might take. If true, the jogwheel operates in velocity mode - motion stops when the wheel stops, even if that means the commanded motion is not completed.
de: connect to *axis._<N>_.jog-jog-vel-mode* Bei false arbeitet das Jogwheel im Positionsmodus. Die Achse bewegt sich bei jeder Zählung genau um die Jog-Scale-Einheiten, unabhängig davon, wie lange das dauern könnte. Wenn true, arbeitet das Jogwheel im Geschwindigkeitsmodus - die Bewegung stoppt, wenn das Rad anhält, auch wenn das bedeutet, dass die befohlene Bewegung nicht abgeschlossen ist.

note: type: Plain text
en: connect to *halui.max-velocity.value* The maximum allowable velocity, in units per second (_<N>_ is two digit '0'-padded).
de: connect to *halui.max-velocity.value* Die maximal zulässige Geschwindigkeit in Einheiten pro Sekunde (_<N>_ ist zweistellig mit '0' aufgefüllt).

note: type: Plain text
en: connect to *halui.feed-override.scale* The scaling for feed override value.
de: zu verbinden mit to *halui.feed-override.scale* Die Skalierung für den Vorschub-Override-Wert.

note: type: Plain text
en: connect to *halui.axis._<N>_.pos-feedback* Feedback axis position in machine coordinates to be displayed.
de: verbinden mit *halui.axis._<N>_.pos-feedback* Rückmeldung der Achsenposition in Maschinenkoordinaten, die angezeigt werden sollen.

note: type: Plain text
en: connect to *halui.axis._<N>_.pos-relative* Commanded axis position in relative coordinates to be displayed.
de: zu verbinden mit *halui.axis._<N>_.pos-relative* Angegebene Achsenposition in relativen Koordinaten, die angezeigt werden soll.

note: type: Plain text
en: Signals utilized for toggling machine status.
de: Signale, die zum Umschalten des Maschinenstatus verwendet werden.

note: type: Plain text
en: connect to *halui.machine.on* Pin for requesting machine on.
de: zu verbinden mit *halui.machine.on* Pin für die Abfrage von machine on.

note: type: Plain text
en: connect to *halui.machine.is-on* Pin that indicates machine is on.
de: zu verbinden mit *halui.machine.is-on* Pin, der anzeigt, dass die Maschine eingeschaltet ist.

note: type: Plain text
en: connect to *halui.machine.off* Pin for requesting machine off.
de: zu verbinden mit *halui.machine.off* Pin for requesting machine off.

note: type: Plain text
en: Signals utilized for operating a spindle.
de: Signale, die zum Betreiben einer Spindel verwendet werden.

note: type: Plain text
en: connect to *halui.spindle.0.start* Pin to start the spindle.
de: zu verbinden mit dem Pin *halui.spindle.0.start*, um die Spindel zu starten.

note: type: Plain text
en: connect to *halui.spindle.0.on* Pin to indicate spindle is on (either direction).
de: an *halui.spindle.0.on* Pin anschließen, um anzuzeigen, dass die Spindel eingeschaltet ist (in beide Richtungen).

note: type: Plain text
en: connect to *halui.spindle.0.stop* Pin to stop the spindle.
de: mit dem Pin *halui.spindle.0.stop* verbinden, um die Spindel anzuhalten.

note: type: Plain text
en: connect to *halui.spindle.0.forward* Pin to make the spindle go forward.
de: mit dem Pin *halui.spindle.0.forward* verbinden, damit die Spindel vorwärts fährt.

note: type: Plain text
en: connect to *halui.spindle.0.reverse* Pin to make the spindle go reverse.
de: mit dem Pin *halui.spindle.0.reverse* verbinden, um die Spindel rückwärts laufen zu lassen.

note: type: Plain text
en: connect to *halui.spindle.0.decrease* Pin to decrease the spindle speed.
de: mit dem Pin *halui.spindle.0.decrease* verbinden, um die Spindeldrehzahl zu verringern.

note: type: Plain text
en: connect to *halui.spindle.0.increase* Pin to increase the spindle speed.
de: mit dem Pin *halui.spindle.0.increase* verbinden, um die Spindeldrehzahl zu erhöhen.

note: type: Plain text
en: connect to *halui.spindle.0.override.increase* Pin for increasing the spindle override by the amount of scale.
de: connect to *halui.spindle.0.override.increase* Pin zur Erhöhung des Spindel-Overrides um den Betrag der Skala.

note: type: Plain text
en: connect to *halui.spindle.0.override.decrease* Pin for decreasing the spindle override by the amount of scale.
de: verbinden mit *halui.spindle.0.override.decrease* Pin zum Verringern des Spindel-Overrides um den Betrag der Skala.

note: type: Plain text
en: connect to *halui.spindle.0.override.value* The current spindle override value.
de: zu verbinden mit *halui.spindle.0.override.value* Der aktuelle Spindelüberschreibungswert.

note: type: Plain text
en: connect to *halui.spindle.0.override.scale* The current spindle scaling override value.
de: zu verbinden mit *halui.spindle.0.override.scale*. Der aktuelle Override-Wert der Spindelskalierung.

note: type: Plain text
en: True on Fn button down, false otherwise.
de: True bei gedrückter F__n__ Funktions-Taste , false sonst.

note: type: Plain text
en: connect to *halui.mdi-command-*<M> True on Probe-Z button down, false otherwise.Requests MDI mode before button pin is set. See also *whb.halui.mode.mdi*.
de: Verbinden mit *halui.mdi-command-*<M> True on Probe-Z button down, andernfalls false. Fordert den MDI-Modus an, bevor der Tastenpin festgelegt wird. Siehe auch *whb.halui.mode.mdi*.

note: type: Plain text
en: connect to *halui.mdi-command-*<M> True on Macro-1 button (Fn + Feed+)  down, false otherwise.
de: connect to *halui.mdi-command-*<M> True bei Makro-1 Taste (Fn + Feed+) unten, false sonst.

note: type: Plain text
en: connect to *halui.mdi-command-*<M> True on Macro-2 button (Fn + Feed-)  down, false otherwise.
de: Verbinden mit *halui.mdi-command-*<M> True on Macro-2 button (Fn + Feed-) down, andernfalls false.

note: type: Plain text
en: see *whb.halui.spindle.increase* True on Macro-3 button (Fn + Spindle+)  down, false otherwise. This button is meant to manipulate the spindle speed. For decreasing the spindle speed use whb.halui.spindle.increase.
de: siehe *whb.halui.spindle.increase* True bei Makro-3-Taste (Fn + Spindel+) unten, false sonst. Mit dieser Taste kann die Spindeldrehzahl verändert werden. Um die Spindeldrehzahl zu verringern, verwenden Sie whb.halui.spindle.increase.

note: type: Plain text
en: connect to *halui.mdi-command-*<M> True on Macro-5 button down (Fn + M-HOME), false otherwise.
de: Verbunden mit *halui.mdi-command-*<M> True bei Macro-5 button down (Fn + M-HOME), andernfalls false.

note: type: Plain text
en: connect to *halui.mdi-command-*<M> True on Macro-6 button down (Fn + Safe-Z), false otherwise.
de: Verbunden mit *halui.mdi-command-*<M> True bei Macro-6 button down (Fn + Safe-Z), andernfalls false.

note: type: Plain text
en: connect to *halui.mdi-command-*<M> True on Macro-7 button down (Fn + W-HOME), false otherwise.
de: Verbunden mit *halui.mdi-command-*<M> True bei Macro-7 button down (Fn + W-HOME), andernfalls false.

note: type: Plain text
en: reserved for Spindle Direction True on Macro-8 button down (Fn + S-ON/OFF), false otherwise.
de: reserviert für Spindeldrehrichtung True bei gedrückter Makro-8-Taste (Fn + S-ON/OFF), false sonst.

note: type: Plain text
en: connect to *halui.mdi-command-*<M> True on Macro-9 button down (Fn + Probe-Z), false otherwise.
de: Verbunden mit *halui.mdi-command-*<M> True bei Macro-9 button down (Fn + Probe-Z), andernfalls false.

note: type: Plain text
en: reserved for toggle DRO Abs/rel. True on Macro-10 button down, false otherwise. Switches the display coordinates to relative coordinates.On display the axis are denoted then as X1, Y1, Z1, A1, B1 and C1.  See also *whb.halui.axis._<N>_.pos-relative*.
de: reserviert für toggle DRO Abs/rel. True auf Macro-10 Button down, sonst false. Schaltet die Anzeigekoordinaten in relative Koordinaten um. Auf dem Display wird die Achse dann als X1, Y1, Z1, A1, B1 und C1 bezeichnet.  Siehe auch *whb.halui.axis._<N>_.pos-relative*.

note: type: Plain text
en: connect to *halui.mdi-command-*<M> True on Macro-11 button down (Fn + RESET), false otherwise.
de: Verbunden mit *halui.mdi-command-*<M> True bei Macro-11 button down (Fn + RESET), andernfalls false.

note: type: Plain text
en: connect to *halui.mdi-command-*<M> True on Macro-12 button (Fn + Stop) down, false otherwise.
de: Verbunden mit *halui.mdi-command-*<M> True bei Macro-12 button (Fn + Stop) down, andernfalls false.

note: type: Plain text
en: True on Continuous mode button down, false otherwise.
de: True, wenn die Taste für den Dauermodus gedrückt wird, sonst false.

note: type: Plain text
en: True on Step mode button down, false otherwise.
de: True, wenn die Taste für den Schrittmodus gedrückt wird, sonst false.

note: type: Plain text
en: True as long pendant is in sleep mode (usually a few seconds after turned off), false otherwise.
de: True, solange sich das Pendant im Schlafmodus befindet (normalerweise einige Sekunden nach dem Ausschalten), ansonsten false.

note: type: Title ==
en: HAL Configuration Example
de: Beispiel für eine HAL-Konfiguration

note: type: Plain text
en: Exercise caution if using copy and paste of this example code from the online web docs. Certain characters are incompatibly encoded by the web site (minus becomes em-dash). It is safer to copy and paste from https://raw.githubusercontent.com/LinuxCNC/linuxcnc/2.8/src/hal/user_comps/xhc-whb04b-6/example-configuration.md[].
de: Seien Sie vorsichtig, wenn Sie diesen Beispielcode aus den Online-Webdokumenten kopieren und einfügen. Bestimmte Zeichen werden von der Website inkompatibel kodiert (Minus wird zu em-dash). Sicherer ist es, den Code von https://raw.githubusercontent.com/LinuxCNC/linuxcnc/2.8/src/hal/user_comps/xhc-whb04b-6/example-configuration.md[] zu kopieren und einzufügen.

note: type: delimited block -
en: #
    ### Hal File xhc_whb04b_6.hal Example
    #
    # ######################################################################
    # load pendant components
    # ######################################################################
de: #
    ### Hal-Datei xhc_whb04b_6.hal Beispiel
    #
    # ######################################################################
    # Pendelkomponenten laden
    # ######################################################################

note: type: delimited block -
en: # ######################################################################
    # pendant signal configuration
    # ######################################################################
de: # ######################################################################
    # Konfiguration des Hängesignals
    # ######################################################################

note: type: delimited block -
en: # On/Off signals
    net machine.is-on                         halui.machine.is-on                   whb.halui.machine.is-on
    net pdnt.machine.on                       whb.halui.machine.on                  halui.machine.on
    net pdnt.machine.off                      whb.halui.machine.off                 halui.machine.off
de: # On/Off Signale
    net machine.is-on                         halui.machine.is-on                   whb.halui.machine.is-on
    net pdnt.machine.on                       whb.halui.machine.on                  halui.machine.on
    net pdnt.machine.off                      whb.halui.machine.off                 halui.machine.off

note: type: Plain text
en: https://github.com/linuxcnc/linuxcnc/tree/master/src/hal/user_comps/xhc-whb04b-6/[xhc-whb04b-6 developer documentation on GitHub]
de: https://github.com/linuxcnc/linuxcnc/tree/master/src/hal/user_comps/xhc-whb04b-6/[xhc-whb04b-6 Entwicklerdokumentation auf GitHub]

note: type: SH
en: NOTES
de: ANMERKUNGEN

note: type: Plain text
en: The CRC code function is not disclosed by the manufacturer.  Thus the CRC value transmitted with each package is not checked yet.  Feel free to help us enhance the component.
de: Die CRC-Code-Funktion wird vom Hersteller nicht offengelegt.  Daher wird der mit jedem Paket übertragene CRC-Wert noch nicht überprüft.  Sie können uns gerne helfen, die Komponente zu verbessern.

note: type: Title ==
en: AUTHORS
de: AUTOREN

note: type: Plain text
en: This component was started by Raoul Rubien based on predecessor device component xhc-hb04.cc.  https://github.com/machinekit/machinekit/graphs/contributors gives you a more complete list of contributors.
de: Diese Komponente wurde von Raoul Rubien auf der Grundlage der Vorgängerkomponente xhc-hb04.cc entwickelt. Unter https://github.com/machinekit/machinekit/graphs/contributors finden Sie eine vollständige Liste der Mitwirkenden.

note: type: SH
en: HISTORY
de: GESCHICHTE

note: type: Plain text
en: The component was developed accidentally as leisure project.  The development started with the xhc-whb04 (4-axis wireless pendant) implementation as reference.  73 & many thanks to the developers who delivered provided an excellent preparatory work!
de: Die Komponente wurde zufällig als Freizeitprojekt entwickelt.  Die Entwicklung begann mit der xhc-whb04 (4-Achsen-Funkpendel) Implementierung als Referenz.  73 & vielen Dank an die Entwickler, die eine hervorragende Vorarbeit geleistet haben!

note: type: Plain text
en: Copyright (C) 2018 Raoul Rubien (github.com/rubienr) Updated for Linuxcnc 2020 by alkabal_free.fr.  This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
de: Copyright (C) 2018 Raoul Rubien (github.com/rubienr) Aktualisiert für Linuxcnc 2020 von alkabal_free.fr.  Dies ist freie Software; siehe die Quelle für die Kopierbedingungen. Es gibt KEINE Garantie; auch nicht für die MARKTGÄNGIGKEIT oder die EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.

note: type: Plain text
en: streamer - stream file data into HAL in real time
de: Streamer - Streaming von Dateidaten zum HAL in Echtzeit

note: type: Plain text
en: *streamer* and *halstreamer(1)* are used together to stream data
    from a file into the HAL in real time.  *streamer* is a realtime HAL
    component that exports HAL pins and creates a FIFO in shared memory.
    *hal_streamer* is a user space program that copies data from stdin into
    the FIFO, so that *streamer* can write it to the HAL pins.
de: *streamer* und *halstreamer(1)* werden zusammen verwendet, um Daten
    aus einer Datei in die HAL in Echtzeit zu streamen.  *streamer* ist eine Echtzeit-HAL
    Komponente, die HAL-Pins exportiert und ein FIFO im gemeinsamen Speicher erstellt.
    *hal_streamer* ist ein User-Space-Programm, das Daten von stdin in den FIFO kopiert
    in den FIFO kopiert, so dass *streamer* sie an die HAL-Pins schreiben kann.

note: type: Plain text
en: Sets the depth of the user->realtime FIFO that *streamer* creates to receive data from *hal-streamer*.  Multiple values of _depth_ (separated by commas) can be specified if you need more than one FIFO (for example if you want to stream data from two different realtime threads).
de: Legt die Tiefe des Benutzer->Echtzeit-FIFOs fest, das *streamer* erstellt, um Daten von *hal-streamer* zu empfangen.  Mehrere Werte für _depth_ (durch Kommata getrennt) können angegeben werden, wenn Sie mehr als einen FIFO benötigen (z.B. wenn Sie Daten von zwei verschiedenen Echtzeit-Threads streamen wollen).

note: type: Plain text
en: Defines the set of HAL pins that *streamer* exports and later writes data to.  One _string_ must be supplied for each FIFO, separated by commas.  *streamer* exports one pin for each character in _string_.  Legal characters are:
de: Definiert den Satz von HAL-Pins, an die *Streamer* Daten exportiert und später schreibt.  Für jeden FIFO muss ein _string_ angegeben werden, getrennt durch Kommas.  *streamer* exportiert einen Pin für jedes Zeichen in _string_.  Zulässige Zeichen sind:

note: type: Plain text
en: One function is created per FIFO, numbered from zero.
de: Pro FIFO wird eine Funktion erstellt, die von Null an nummeriert ist.

note: type: Plain text
en: Data from column _M_ of the data in FIFO _N_ appears on this pin.  The pin type depends on the config string.
de: Daten aus Spalte _M_ der Daten im FIFO _N_ erscheinen auf diesem Pin.  Der Pintyp hängt vom Konfigurationsstring ab.

note: type: Plain text
en: Current number of samples in the FIFO.  When this reaches zero, new data will no longer be written to the pins.
de: Aktuelle Anzahl der Samples im FIFO.  Wenn dieser Wert Null erreicht, werden keine neuen Daten mehr an die Pins geschrieben.

note: type: Plain text
en: The number of times that *sampler* has tried to write data to the HAL pins but found no fresh data in the FIFO.  It increments whenever *empty* is true, and can be reset by the *setp* command.
de: Die Anzahl der Male, die *sampler* versucht hat, Daten an die HAL-Pins zu schreiben, aber keine neuen Daten im FIFO gefunden hat.  Sie wird immer dann erhöht, wenn *empty* wahr ist, und kann mit dem Befehl *setp* zurückgesetzt werden.

note: type: Plain text
en: Clock for data as specified by the clock-mode pin
de: Takt für Daten, wie durch den Clock-Mode-Pin festgelegt

note: type: Plain text
en: Defines behavior of clock pin:
de: Definiert das Verhalten des Clock-Pins:

note: type: Plain text
en: 0 (*default*) free run at every iteration
de: 0 (*Standard*) freie Ausführung bei jeder Iteration

note: type: Plain text
en: 1 clock on falling edge of clock pin
de: 1 Takt bei fallender Flanke des Taktpins

note: type: Plain text
en: 2 clock on rising edge of clock pin
de: 2 Takt bei steigender Flanke des Taktpins

note: type: Plain text
en: 3 clock on any edge of clock pin
de: 3 Takt an einer beliebigen Flanke des Taktpins

note: type: Plain text
en: Should an enable HAL pin be added, to allow streaming to be turned on and off?
de: Sollte ein Enable-HAL-Pin hinzugefügt werden, damit das Streaming ein- und ausgeschaltet werden kann?

note: use image:: for equation png files -- no latexmath type: Title =
en: 5-Axis Kinematics(((5-Axis Kinematics)))
de: 5-Achsen-Kinematik(((5-Achsen-Kinematik)))

note: type: Plain text
en: Coordinated multi-axis CNC machine tools controlled with LinuxCNC, require a special kinematics component for each type of machine. This chapter describes some of the most popular 5-axis machine configurations and then develops the forward (from work to joint coordinates) and inverse (from joint to work) transformations in a general mathematical process for two types of machine.
de: Koordinierte mehrachsige CNC-Werkzeugmaschinen, die mit LinuxCNC gesteuert werden, erfordern eine spezielle Kinematikkomponente für jede Art von Maschine. Dieses Kapitel beschreibt einige der gängigsten 5-Achsen-Maschinenkonfigurationen und entwickelt dann die Vorwärts- (von Arbeits- zu Gelenkkoordinaten) und Rückwärtstransformationen (von Gelenk zu Arbeit) in einem allgemeinen mathematischen Prozess für zwei Maschinentypen.

note: type: Plain text
en: The kinematics components are given as well as vismach simulation models to demonstrate their behaviour on a computer screen. Examples of HAL file data are also given.
de: Die kinematischen Komponenten werden ebenso dargestellt wie Vismach-Simulationsmodelle, um ihr Verhalten auf dem Computerbildschirm zu demonstrieren. Es werden auch Beispiele für HAL-Dateien gegeben.

note: type: Title ==
en: 5-Axis Machine Tool Configurations
de: 5-Achsen-Werkzeugmaschinen-Konfigurationen

note: type: Plain text
en: In this section we deal with the typical 5-axis milling or router machines with five joints or degrees-of-freedom which are controlled in coordinated moves.
de: In diesem Abschnitt befassen wir uns mit den typischen 5-Achsen-Fräs- oder Oberfräsmaschinen mit fünf Gelenken oder Freiheitsgraden, die in koordinierten Bewegungen gesteuert werden.

note: type: Plain text
en: 3-axis machine tools cannot change the tool orientation, so 5-axis machine tools use two extra axes to set the cutting tool in an appropriate orientation for efficient machining of freeform surfaces.
de: 3-Achsen-Werkzeugmaschinen können die Werkzeugausrichtung nicht ändern, daher verwenden 5-Achsen-Werkzeugmaschinen zwei zusätzliche Achsen, um das Schneidwerkzeug in eine geeignete Ausrichtung für die effiziente Bearbeitung von Freiformflächen zu bringen.

note: type: Plain text
en: Typical 5-axis machine tool configurations are shown in Figs. 3, 5, 7 and 9-11 [1,2] in section Figures.
de: Typische Konfigurationen von 5-Achsen-Werkzeugmaschinen sind in den Abbildungen 3, 5, 7 und 9-11 [1,2] im Abschnitt Abbildungen dargestellt.

note: type: Plain text
en: The kinematics of 5-axes machine tools are much simpler than that of 6-axis serial arm robots, since 3 of the axes are normally linear axes and only two are rotational axes.
de: Die Kinematik von 5-Achsen-Werkzeugmaschinen ist viel einfacher als die von 6-Achsen-Serienarmrobotern, da 3 der Achsen normalerweise lineare Achsen und nur zwei rotierende Achsen sind.

note: type: Title ==
en: Tool Orientation and Location
de: Werkzeugausrichtung und -position

note: type: Plain text
en: CAD/CAM systems are typically used to generate the 3D CAD models of the workpiece as well as the CAM data for input to the CNC 5-axis machine. The tool or cutter location (CL) data, is composed of the cutter tip position and the cutter orientation relative to the workpiece coordinate system. Two vectors, as generated by most CAM systems and shown in Fig. 1, contain this information:
de: CAD/CAM-Systeme werden in der Regel verwendet, um die 3D-CAD-Modelle des Werkstücks sowie die CAM-Daten für die Eingabe in die CNC-5-Achsen-Maschine zu erzeugen. Die Daten zur Werkzeug- oder Fräserposition (CL) setzen sich aus der Position der Fräserspitze und der Ausrichtung des Fräsers relativ zum Werkstückkoordinatensystem zusammen. Zwei Vektoren, wie sie von den meisten CAM-Systemen erzeugt werden und in Abb. 1 dargestellt sind, enthalten diese Informationen:

note: type: Plain text
en: The K vector is equivalent to the 3rd vector from the pose matrix E~6~ that was used in the 6-axis robot kinematics [3] and the Q vector is equivalent to the 4th vector of E~6~. In MASTERCAM for example this information is contained in the intermediate output ".nci" file.
de: Der K-Vektor entspricht dem dritten Vektor der Pose-Matrix E~6~, die in der 6-Achsen-Roboterkinematik [3] verwendet wurde, und der Q-Vektor entspricht dem vierten Vektor von E~6~. Vektor von E~6~. In MASTERCAM zum Beispiel sind diese Informationen in der Zwischenausgabedatei ".nci" enthalten.

note: type: Block title
en: Cutter location data
de: Standortdaten des Fräsers

note: type: Title ==
en: Translation and Rotation Matrices
de: Translations- und Rotationsmatrizen

note: type: Plain text
en: Homogeneous transformations provide a simple way to describe the mathematics of multi-axis machine kinematics. A transformation of the space H is a 4x4 matrix and can represent translation and rotation transformations. Given a point x,y,x described by a vector u = {x,y,z,1}^T^, then its transformation v is represented by the matrix product
de: Homogene Transformationen bieten eine einfache Möglichkeit, die Mathematik der Mehrachsenkinematik von Maschinen zu beschreiben. Eine Transformation des Raums H ist eine 4x4-Matrix und kann Translations- und Rotationstransformationen darstellen. Wird ein Punkt x,y,x durch einen Vektor u = {x,y,z,1}^T^ beschrieben, so wird seine Transformation v durch das Matrixprodukt

note: type: Plain text
en: There are four fundamental transformation matrices on which 5-axis kinematics can be based:
de: Es gibt vier grundlegende Transformationsmatrizen, auf die sich die 5-Achsen-Kinematik stützen kann:

note: type: Plain text
en: The matrix T(a,b,c) implies a translation in the X, Y, Z coordinate directions by the amounts a, b, c respectively. The R matrices imply rotations of the angle theta about the X, Y and Z coordinate axes respectively. The 'C' and 'S' symbols refer to cosine and sine functions respectively.
de: Die Matrix T(a,b,c) impliziert eine Verschiebung in den Koordinatenrichtungen X, Y und Z um die Beträge a, b bzw. c. Die R-Matrizen implizieren Rotationen des Winkels theta um die X-, Y- bzw. Z-Koordinatenachse. Die Symbole "C" und "S" beziehen sich auf die Kosinus- bzw. Sinusfunktionen.

note: type: Title ==
en: Table Rotary/Tilting 5-Axis Configurations
de: Tisch Dreh-/Schwenkkonfigurationen mit 5 Achsen (engl. Table Rotary/Tilting 5-Axis Configurations)

note: type: Plain text
en: In these machine tools the two rotational axes mount on the work table of the machine. Two forms are typically used:
de: Bei diesen Werkzeugmaschinen sind die beiden Rotationsachsen auf dem Arbeitstisch der Maschine montiert. Typischerweise werden zwei Formen verwendet:

note: type: Plain text
en: A rotary table which rotates about the vertical Z-axes (C-rotation, secondary) mounted on a tilting table which rotates about the X- or Y-axis (A- or B-rotation, primary). The workpiece is mounted on the rotary table.
de: Ein Drehtisch, der sich um die vertikale Z-Achse dreht (C-Drehung, sekundär), ist auf einem Kipptisch montiert, der sich um die X- oder Y-Achse dreht (A- oder B-Drehung, primär). Das Werkstück ist auf dem Drehtisch montiert.

note: type: Plain text
en: A tilting table which rotates about the X- or Y-axis (A- or B-rotation, secondary) is mounted on a rotary table which rotates about the Z-axis (C-rotation, primary), with the workpiece on the tilting table.
de: Ein Kipptisch, der sich um die X- oder Y-Achse dreht (A- oder B-Drehung, sekundär), ist auf einem Drehtisch montiert, der sich um die Z-Achse dreht (C-Drehung, primär), wobei das Werkstück auf dem Kipptisch liegt.

note: type: Block title
en: General configuration and coordinate systems
de: Allgemeine Konfiguration und Koordinatensysteme

note: type: Plain text
en: A multi-axis machine can be considered to consist of a series of links connected by joints. By embedding a coordinate frame in each link of the machine and using homogeneous transformations, we can describe the relative position and orientation between these coordinate frames
de: Eine mehrachsige Maschine kann als eine Reihe von Gliedern betrachtet werden, die durch Gelenke verbunden sind. Durch die Einbettung eines Koordinatenrahmens in jedes Glied der Maschine und die Verwendung homogener Transformationen können wir die relative Position und Orientierung zwischen diesen Koordinatenrahmen beschreiben

note: type: Plain text
en: We need to describe a relationship between the workpiece coordinate system and the tool coordinate system. This can be defined by a transformation matrix '^w^A~t~', which can be found by subsequent transformations between the different structural elements or links of the machine, each with its own defined coordinate system. In general such a transformation may look as follows:
de: Wir müssen eine Beziehung zwischen dem Werkstückkoordinatensystem und dem Werkzeugkoordinatensystem beschreiben. Dies kann durch eine Transformationsmatrix "^w^A~t~" definiert werden, die durch nachfolgende Transformationen zwischen den verschiedenen Strukturelementen oder Gliedern der Maschine, die jeweils ihr eigenes definiertes Koordinatensystem haben, gefunden werden kann. Im Allgemeinen kann eine solche Transformation wie folgt aussehen:

note: type: Plain text
en: where each matrix '^i-1^A~j~' is a translation matrix 'T' or a rotation matrix 'R' of the form (2,3).
de: wobei jede Matrix '^i-1^A~j~' eine Translationsmatrix 'T' oder eine Rotationsmatrix 'R' der Form (2,3) ist.

note: type: Plain text
en: Matrix multiplication is a simple process in which the elements of each row of the lefthand matrix A is multiplied by the elements of each column of the righthand matrix B and summed to obtain an element in the result matrix C, ie.
de: Die Matrixmultiplikation ist ein einfacher Vorgang, bei dem die Elemente jeder Zeile der linken Matrix A mit den Elementen jeder Spalte der rechten Matrix B multipliziert und summiert werden, um ein Element der Ergebnismatrix C zu erhalten.

note: type: Plain text
en: In Fig. 2 a generic configuration with coordinate systems is shown [4]. It includes table rotary/tilting axes as well as spindle rotary/tilting axes. Only two of the rotary axes are actually used in a machine tool.
de: In Abb. 2 ist eine generische Konfiguration mit Koordinatensystemen dargestellt [4]. Sie umfasst sowohl Tischdreh-/Schwenkachsen als auch Spindel-Dreh-/Schwenkachsen. Nur zwei der Drehachsen werden tatsächlich in einer Werkzeugmaschine verwendet.

note: type: Plain text
en: First we will develop the transformations for the first type of configuration mentioned above, ie. a table tilting/rotary (trt) type with no rotating axis offsets. We may give it the name xyzac-trt configuration.
de: Zunächst werden wir die Transformationen für die erste der oben erwähnten Konfigurationen entwickeln, d. h. einen Tisch vom Typ Kippen/Drehen (trt) ohne Drehachsenversatz. Wir können ihr den Namen xyzac-trt-Konfiguration geben.

note: type: Plain text
en: We also develop the transformations for the same type (xyzac-trt), but with rotating axis offsets.
de: Wir entwickeln auch die Transformationen für den gleichen Typ (xyzac-trt), aber mit rotierenden Achsenversätzen.

note: type: Plain text
en: Then we develop the transformations for a xyzbc-trt configuration with rotating axis offsets.
de: Dann entwickeln wir die Transformationen für eine xyzbc-trt-Konfiguration mit Rotationsachsen-Offsets.

note: type: Title ===
en: Transformations for a xyzac-trt machine tool with work offsets
de: Transformationen für eine xyzac-trt-Werkzeugmaschine mit Werkstückversatz

note: type: Block title
en: vismach model of xyzac-trt with coincident rotation axes
de: vismach-Modell von xyzac-trt mit übereinstimmenden Drehachsen

note: type: Plain text
en: We deal here with a simplified configuration in which the tilting axis and rotary axis intersects at a point called the pivot point as shown in Fig. 4. therefore the two coordinate systems 'O~ws~' and 'O~wp~' of Fig. 2 are coincident.
de: Wir befassen uns hier mit einer vereinfachten Konfiguration, bei der sich die Kippachse und die Drehachse in einem Punkt schneiden, der als Drehpunkt bezeichnet wird, wie in Abb. 4 dargestellt.

note: type: Block title
en: Table tilting/rotary configuration
de: Kipp-/Drehkonfiguration des Tisches

note: type: Title ===
en: Forward transformation
de: Vorwärts-Transformation

note: type: Plain text
en: The transformation can be defined by the sequential multiplication of the matrices:
de: Die Transformation kann durch die sequentielle Multiplikation der Matrizen definiert werden:

note: type: Plain text
en: with the matrices built up as follows:
de: wobei die Matrizen wie folgt aufgebaut sind:

note: type: Plain text
en: In these equations L~x~, L~y~, L~z~ defines the offsets of the pivot point of the two rotary axes A and C relative to the workpiece coordinate system origin. Furthermore, P~x~, P~y~, P~z~ are the relative distances of the pivot point to the cutter tip position, which can also be called the "joint coordinates" of the pivot point. The pivot point is at the intersection of the two rotary axes. The signs of the S~A~ and S~C~ terms are different to those in [2,3] since there the table rotations are negative relative to the workpiece coordinate axes (note that sin(-theta) = -sin(theta), cos(-theta) = cos(theta)).
de: In diesen Gleichungen definieren L~x~, L~y~, L~z~ die Verschiebungen des Drehpunktes der beiden Drehachsen A und C relativ zum Ursprung des Werkstückkoordinatensystems. Außerdem sind P~x~, P~y~, P~z~ die relativen Abstände des Drehpunkts zur Position der Fräserspitze, die auch als "Gelenkkoordinaten" des Drehpunkts bezeichnet werden können. Der Drehpunkt liegt im Schnittpunkt der beiden Drehachsen. Die Vorzeichen der Terme S~A~ und S~C~ unterscheiden sich von denen in [2,3], da dort die Tischdrehungen relativ zu den Werkstückkoordinatenachsen negativ sind (beachten Sie, dass sin(-theta) = -sin(theta), cos(-theta) = cos(theta)).

note: type: Plain text
en: When multiplied in accordance with (5), we obtain:
de: Multipliziert mit (5) ergibt sich das Ergebnis:

note: type: Plain text
en: We can now equate the third column of this matrix with our given tool orientation vector K, ie.:
de: Wir können nun die dritte Spalte dieser Matrix mit unserem gegebenen Werkzeugorientierungsvektor K gleichsetzen, d. h.:

note: type: Plain text
en: From these equations we can solve for the rotation angles theta~A~, theta~C~. From the third row we find:
de: Aus diesen Gleichungen lassen sich die Drehwinkel theta~A~, theta~C~ ermitteln. Aus der dritten Zeile finden wir:

note: type: Plain text
en: and by dividing the first row by the second row we find:
de: und durch Division der ersten Zeile durch die zweite Zeile ergibt sich:

note: type: Plain text
en: These relationships are typically used in the CAM post-processor to convert the tool orientation vectors to rotation angles.
de: Diese Beziehungen werden normalerweise im CAM-Postprozessor verwendet, um die Vektoren der Werkzeugausrichtung in Drehwinkel umzuwandeln.

note: type: Plain text
en: Equating the last column of (8) with the tool position vector Q, we can write:
de: Indem wir die letzte Spalte von (8) mit dem Werkzeugpositionsvektor Q gleichsetzen, können wir schreiben:

note: type: Plain text
en: The vector on the right hand side can also be written as the product of a matrix and a vector resulting in:
de: Der Vektor auf der rechten Seite kann auch als das Produkt einer Matrix und eines Vektors geschrieben werden, was folgendes ergibt:

note: type: Plain text
en: This can be expanded to give
de: Dies kann wie folgt erweitert werden

note: type: Plain text
en: which is the 'forward transformation' of the kinematics.
de: was die Vorwärtstransformation der Kinematik darstellt.

note: type: Plain text
en: We can solve for P from equation (13) as 'P = (^Q^A~P~)^-1^ * Q'. Noting that the square matrix is a homogeneous 4x4 matrix containing a rotation matrix R and translation vector q, for which the inverse can be written as:
de: Wir können P aus Gleichung (13) als "P = (^Q^A~P~)^-1^ * Q" berechnen. Die quadratische Matrix ist eine homogene 4x4-Matrix, die eine Rotationsmatrix R und einen Translationsvektor q enthält, deren Umkehrung wie folgt geschrieben werden kann:

note: type: Plain text
en: where R^T is the transpose of R (rows and columns swappped). We therefore obtain:
de: wobei R^T die Transponierung von R ist (Zeilen und Spalten vertauscht). Wir erhalten also:

note: type: Plain text
en: The desired equations for the 'inverse transformation' of the kinematics thus can be written as:
de: Die gewünschten Gleichungen für die 'inverse Transformation' der Kinematik können somit wie folgt geschrieben werden:

note: type: Title ===
en: Transformations for a xyzac-trt machine  with rotary axis offsets
de: Transformationen für eine xyzac-trt-Maschine mit Drehachsenverschiebungen

note: type: Block title
en: vismach model of xyzac-trt with rotational axis offsets (positive)
de: Vismach-Modell von xyzac-trt mit Rotationsachsenversatz (positiv)

note: type: Plain text
en: We deal here with a extended configuration in which the tilting axis and rotary axis do not intersect at a point but have an offset D~y~.  Furthermore, there is also an z-offset between the two coordinate systems 'O~ws~' and 'O~wp~' of Fig. 2, called D~z~.  A vismach model is shown in Fig. 5 and the offsets are shown in Fig. 6 (positive offsets in this example).  To simplify the configuration, the offsets L~x~, L~y~, L~z~ of the previous case are not included.  They are probably not necessary if one uses the G54 offsets in LinuxCNC by means of the "touch of" facility.
de: Wir haben es hier mit einer erweiterten Konfiguration zu tun, bei der sich die Kippachse und die Drehachse nicht in einem Punkt schneiden, sondern einen Versatz D~y~ aufweisen.  Außerdem gibt es zwischen den beiden Koordinatensystemen 'O~ws~' und 'O~wp~' aus Abb. 2 einen z-Versatz, der D~z~ genannt wird.  Ein Vismach-Modell ist in Abb. 5 dargestellt, und die Offsets sind in Abb. 6 gezeigt (positive Offsets in diesem Beispiel).  Um die Konfiguration zu vereinfachen, werden die Versätze L~x~, L~y~, L~z~ des vorherigen Falls nicht berücksichtigt.  Sie sind wahrscheinlich nicht notwendig, wenn man die G54 Offsets in LinuxCNC mit Hilfe der "touch of"-Funktion verwendet.

note: type: Block title
en: Table tilting/rotary xyzac-trt configuration, with axis offsets
de: Kipp-/Drehkonfiguration des Tisches xyzac-trt, mit Achsenversatz

note: type: Title ====
en: Forward Transformation
de: Vorwärts-Transformation

note: type: Plain text
en: In these equations D~y~, D~z~ defines the offsets of the pivot point of the rotary axes A relative to the workpiece coordinate system origin. Furthermore, P~x~, P~y~, P~z~ are the relative distances of the pivot point to the cutter tip position, which can also be called the "joint coordinates" of the pivot point. The pivot point is on the A rotary axis.
de: In diesen Gleichungen definieren D~y~, D~z~ die Verschiebungen des Drehpunktes der Drehachsen A relativ zum Ursprung des Werkstückkoordinatensystems. Außerdem sind P~x~, P~y~, P~z~ die relativen Abstände des Drehpunkts zur Position der Schneidenspitze, die auch als "Gelenkkoordinaten" des Drehpunkts bezeichnet werden können. Der Drehpunkt liegt auf der Drehachse A.

note: type: Plain text
en: When multiplied in accordance with (18), we obtain:
de: Bei Multiplikation gemäß (18) erhalten wir:

note: type: Plain text
en: and by dividing the second row by the first row we find:
de: und durch Division der zweiten Zeile durch die erste Zeile ergibt sich:

note: type: Plain text
en: Equating the last column of (21) with the tool position vector Q, we can write:
de: Wenn wir die letzte Spalte von (21) mit dem Werkzeugpositionsvektor Q gleichsetzen, können wir schreiben:

note: type: Plain text
en: We can solve for P from equation (25) as 'P = (^Q^A~P~)^-1^ * Q' using (15) as before.  We thereby obtain:
de: Wir können P aus Gleichung (25) als "P = (^Q^A~P~)^-1^ * Q" lösen, indem wir wie zuvor (15) verwenden.  Wir erhalten somit:

note: type: Title ===
en: Transformations for a xyzbc-trt machine  with rotary axis offsets
de: Transformationen für eine xyzbc-trt-Maschine mit Drehachsenverschiebungen

note: type: Block title
en: vismach model of xyzbc-trt with rotational axis offsets (negative)
de: Vismach-Modell von xyzbc-trt mit Rotationsachsenversatz (negativ)

note: type: Plain text
en: We deal here again with a extended configuration in which the tilting axis (about the y-axis) and rotary axis do not intersect at a point but have an offset D~x~.  Furthermore, there is also an z-offset between the two coordinate systems 'O~ws~' and 'O~wp~' of Fig. 2, called D~z~.  A vismach model is shown in Fig. 7 (negative offsets in this example) and the positive offsets are shown in Fig. 8.
de: Wir haben es hier wieder mit einer erweiterten Konfiguration zu tun, bei der sich die Kippachse (um die y-Achse) und die Drehachse nicht in einem Punkt schneiden, sondern einen Versatz D~x~ haben. Außerdem gibt es zwischen den beiden Koordinatensystemen 'O~ws~' und 'O~wp~' aus Abb. 2 einen z-Versatz, der D~z~ genannt wird. Ein Vismach-Modell ist in Abb. 7 dargestellt (negative Versätze in diesem Beispiel), und die positiven Versätze sind in Abb. 8 dargestellt.

note: type: Block title
en: Table tilting/rotary xyzbc-trt configuration, with axis offsets
de: Kipp-/Drehkonfiguration des Tisches xyzbc-trt, mit Achsenversatz

note: type: Plain text
en: In these equations D~x~, D~z~ defines the offsets of the pivot point of the rotary axes B relative to the workpiece coordinate system origin.  Furthermore, P~x~, P~y~, P~z~ are the relative distances of the pivot point to the cutter tip position, which can also be called the "joint coordinates" of the pivot point.  The pivot point is on the B rotary axis.
de: In diesen Gleichungen definieren D~x~, D~z~ die Verschiebungen des Drehpunkts der Drehachsen B relativ zum Ursprung des Werkstückkoordinatensystems. Außerdem sind P~x~, P~y~, P~z~ die relativen Abstände des Drehpunkts zur Position der Schneidenspitze, die auch als "Gelenkkoordinaten" des Drehpunkts bezeichnet werden können. Der Drehpunkt liegt auf der B-Drehachse.

note: type: Plain text
en: When multiplied in accordance with (29), we obtain:
de: Bei Multiplikation gemäß (29) erhalten wir:

note: type: Plain text
en: We can now equate the third column of this matrix with our given tool orientation vector K, i.e.:
de: Wir können nun die dritte Spalte dieser Matrix mit unserem gegebenen Werkzeugorientierungsvektor K gleichsetzen, d. h.:

note: type: Plain text
en: From these equations we can solve for the rotation angles theta~B~, theta~C~. From the third row we find:
de: Aus diesen Gleichungen lassen sich die Drehwinkel theta~B~, theta~C~ ermitteln. Aus der dritten Zeile finden wir:

note: type: Plain text
en: Equating the last column of (32) with the tool position vector Q, we can write:
de: Wenn wir die letzte Spalte von (32) mit dem Werkzeugpositionsvektor Q gleichsetzen, können wir schreiben:

note: type: Plain text
en: We can solve for P from equation (37) as 'P = (^Q^A~P~)^-1^ * Q'.
de: Wir können P aus Gleichung (37) als "P = (^Q^A~P~)^-1^ * Q" lösen.

note: type: Plain text
en: With the same approach as before, we obtain:
de: Mit dem gleichen Ansatz wie zuvor, erhalten wir:

note: type: Title ==
en: Table Rotary/Tilting Examples
de: Beispiele für Dreh-/Kipptische

note: type: Plain text
en: LinuxCNC includes kinematics modules for the 'xyzac-trt' and 'xyzbc-trt' topologies described in the mathematics detailed above.  For interested users, the source code is available in the git tree in the 'src/emc/kinematics/' directory.
de: LinuxCNC enthält Kinematik-Module für die "xyzac-trt" und "xyzbc-trt" Topologien in der Mathematik oben beschrieben.  Für interessierte Benutzer ist der Quellcode im Git-Baum im Verzeichnis "src/emc/kinematics/" verfügbar.

note: type: Plain text
en: Example xyzac-trt and xyzbc-trt simulation configurations are located in the Sample Configurations ('configs/sim/axis/vismach/5axis/table-rotary-tilting/')  directory.
de: Beispielkonfigurationen für xyzac-trt und xyzbc-trt befinden sich im Verzeichnis Beispielkonfigurationen ('configs/sim/axis/vismach/5axis/table-rotary-tilting/').

note: type: Title ===
en: Vismach Simulation Models
de: Vismach Simulationsmodelle

note: type: Plain text
en: and connections are made using HAL commands like:
de: und Verbindungen werden mit HAL-Befehlen hergestellt wie:

note: type: Title ===
en: Tool-Length Compensation
de: Werkzeuglängenkompensation

note: type: Plain text
en: In order to use tools from a tool table sequentially with tool-length compensation applied automatically, a further Z-offset is required. For a tool that is longer than the "master" tool, which typically has a tool length of zero, LinuxCNC has a variable called "motion.tooloffset.z". If this variable is passed on to the kinematic component (and vismach python script), then the necessary additional Z-offset for a new tool can be accounted for by adding the component statement, for example:
de: Um Werkzeuge aus einer Werkzeugtabelle sequentiell mit Werkzeuglängenkompensation automatisch angewendet zu verwenden, ist ein weiterer Z-Offset erforderlich. Für ein Werkzeug, das länger ist als die "Master"-Werkzeug, das typischerweise eine Werkzeuglänge von Null zugewiesen wurde, hat LinuxCNC eine Variable namens "motion.tooloffset.z". Wenn diese Variable auf die kinematische Komponente (und vismach Python-Skript) übergeben wird, dann kann die notwendige zusätzliche Z-Offset für ein neues Werkzeug berücksichtigt werden, indem Sie die Komponente Anweisung, zum Beispiel:

note: type: Plain text
en: The required HAL connection (for xyzac-trt) is:
de: Die erforderliche HAL-Verbindung (für xyzac-trt) ist:

note: type: Plain text
en: where:
de: wo:

note: type: delimited block -
en: :tool-offset ---------------- signal name
    motion.tooloffset.z --------- output HAL pin from LinuxCNC motion module
    xyzac-trt-kins.tool-offset -- input  HAL pin to xyzac-trt-kins
de: :tool-offset ---------------- Signalname
    motion.tooloffset.z --------- Ausgang HAL-Pin von LinuxCNC Bewegungsmodul
    xyzac-trt-kins.tool-offset -- Eingang HAL-Pin zu xyzac-trt-kins

note: type: Title ==
en: Custom Kinematics Components
de: Kundenspezifische Kinematik-Komponenten

note: type: Plain text
en: LinuxCNC implements kinematics using a HAL component that is loaded at startup of LinuxCNC.  The most common kinematics module, 'trivkins', implements identity (trivial) kinematics where there is a one-to-one correspondence between an axis coordinate letter and a motor joint.  Additional kinematics modules for more complex systems (including 'xyzac-trt' and 'xyzbc-trt' described above) are available.
de: LinuxCNC implementiert Kinematik mit einer HAL-Komponente, die beim Starten von LinuxCNC geladen wird.  Die häufigste Kinematik-Modul, 'trivkins', implementiert Identität (trivial) Kinematik, wo es eine eins-zu-eins-Korrespondenz zwischen einer Achse Koordinate Buchstaben und einem Motor Gelenk.  Zusätzliche Kinematik-Module für komplexere Systeme (einschließlich "xyzac-trt" und "xyzbc-trt" oben beschrieben) sind verfügbar.

note: type: Plain text
en: See the kins manpage (*\$ man kins*) for brief descriptions of the available kinematics modules.
de: Kurze Beschreibungen der verfügbaren Kinematikmodule finden Sie in der kins-Manpage (*\$ man kins*).

note: type: Plain text
en: The kinematics modules provided by LinuxCNC are typically written in the C-language.  Since a standard structure is used, creation of a custom kinematics module is facilitated by copying an existing source file to a user file with a new name, modifying it, and then installing.
de: Die Kinematik-Module von LinuxCNC vorgesehen sind in der Regel in der C-Sprache geschrieben.  Durch die Verwendung einer Standardstruktur wird die Erstellung eines benutzerdefinierten Kinematik-Moduls erleichter durch das Kopieren einer vorhandenen Quelldatei in eine Benutzerdatei mit einem neuen Namen, ändern Sie den und dann installieren.

note: type: Plain text
en: Installation is done using halcompile:
de: Die Installation erfolgt mit halcompile:

note: type: Plain text
en: where "kinsname" is the name you give to your component. The sudo prefix is required to install it and you will be asked for your root password.  See the halcompile man page for more information (*\$ man halcompile*)
de: wobei "kinsname" der Name ist, den Sie Ihrer Komponente geben. Das sudo-Präfix ist für die Installation erforderlich und Sie werden nach Ihrem root-Passwort gefragt.  Weitere Informationen finden Sie in der Manpage von halcompile (*\$ man halcompile*)

note: type: Plain text
en: is replaced by
de: wird ersetzt durch

note: type: Plain text
en: where "kinsname" is the name of your kins program.  Additional HAL pins may be created by the module for variable configuration items such as the D~x~, D~y~, D~z~, tool-offset used in the xyzac-trt kinematics module.  These pins can be connected to a signal for dynamic control or set once with HAL connections like:
de: wobei "kinsname" der Name Ihres kins-Programms ist.  Zusätzliche HAL-Pins können vom Modul für variable Konfigurationselemente wie D~x~, D~y~, D~z~, Werkzeug-Offset, die im xyzac-trt-Kinematikmodul verwendet werden, erstellt werden.  Diese Pins können mit einem Signal zur dynamischen Steuerung verbunden werden oder einmalig mit HAL-Verbindungen wie:

note: type: delimited block -
en: # set offset parameters
    net :tool-offset motion.tooloffset.z xyzac-trt-kins.tool-offset
    setp xyzac-trt-kins.y-offset 0
    setp xyzac-trt-kins.z-offset 20
de: # Offset-Parameter einstellen
    net :tool-offset motion.tooloffset.z xyzac-trt-kins.tool-offset
    setp xyzac-trt-kins.y-versatz 0
    setp xyzac-trt-kins.z-versatz 20

note: type: Title ==
en: Figures
de: Abbildungen

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Table tilting/rotating configuration
de: Kipp-/Drehkonfiguration des Tisches

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Spindle/table tilting configuration
de: Spindel-/Tischkippkonfiguration

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Spindle tilting/rotary configuration
de: Kipp-/Drehkonfiguration der Spindel

note: == References  nope nope nope pdf nope type: Title ==
en: REFERENCES
de: VERWEISE

note: type: Title =
en: Setting up "modified" Denavit-Hartenberg (DH) parameters for 'genserkins'(((DH parameters Examples)))
de: Einrichten "modifizierter" Denavit-Hartenberg (DH)-Parameter für "genserkins"(((DH-Parameter Beispiele)))

note: type: Title ==
en: Prelude
de: Vorspiel

note: type: Plain text
en: LinuxCNC supports a number of kinematics modules including one that supports a generalized set of serial kinematics commonly specified via Denavit-Hartenberg parameters.
de: LinuxCNC unterstützt eine Reihe von Kinematik-Module, einschließlich einer, die eine verallgemeinerte Reihe von seriellen Kinematik allgemein über Denavit-Hartenberg Parameter angegeben unterstützt.

note: type: Plain text
en: This document illustrates a method to set up the DH-parameters for a Mitsubishi RV-6SDL in LinuxCNC using 'genserkins' kinematics.
de: Dieses Dokument veranschaulicht eine Methode, um die DH-Parameter für eine Mitsubishi RV-6SDL in LinuxCNC mit 'genserkins' Kinematik eingerichtet.

note: type: Plain text
en: This document does not cover the creation of a 'vismach' model which, while certainly very useful, requires just as much careful modeling if it is to match the 'genserkins' model derived in this document.
de: Dieses Dokument befasst sich nicht mit der Erstellung eines "Vismach"-Modells, das zwar sehr nützlich ist, aber eine ebenso sorgfältige Modellierung erfordert, wenn es dem in diesem Dokument abgeleiteten "Genserkins"-Modell entsprechen soll.

note: type: Plain text
en: There may be errors and/or shortcomings -- use at your own risk!
de: Es kann Fehler und/oder Mängel geben - Nutzung auf eigene Gefahr!

note: type: Plain text
en: With the proliferation of industrial robots comes an increased interest to control used robots with LinuxCNC.  A common type of robot used in industry and manufacturing is the "serial manipulator" designed as a series of motorized joints connected by rigid links.  Serial robots often have six joints as required for the six degrees of freedom needed to both position (XYZ) and orient (ABC or pitch, roll, yaw) an object in space.  Often these robots have an arm structure that extends from a base to an end-effector.
de: Mit der zunehmenden Verbreitung von Industrierobotern steigt auch das Interesse, die verwendeten Roboter mit LinuxCNC zu steuern.  Eine häufige Art von Roboter in der Industrie und Fertigung verwendet wird, ist die "serielle Manipulator" als eine Reihe von motorisierten Gelenke durch starre Verbindungen verbunden konzipiert.  Serienroboter haben oft sechs Gelenke, die für die sechs Freiheitsgrade erforderlich sind, um ein Objekt im Raum zu positionieren (XYZ) und zu orientieren (ABC oder Nick, Roll, Gier).  Oft haben diese Roboter eine Armstruktur, die sich von einer Basis bis zu einem Endeffektor erstreckt.

note: type: Plain text
en: Control of such a serial robot requires the calculation of the end-effector's position and orientation in relation to a reference coordinate system when the joint angles are known (*forward kinematics*)  and also the more complex reverse calculation of the required joint angles for a given end-effector position and orientation in relation to the reference coordinate system (*inverse kinematics*).  The standard mathematical tools used for these calculations are matrices which are basically tables of parameters and formulas that make it easier to handle the rotations and translations involved in forward and inverse kinematics calculations.
de: Die Steuerung eines solchen Serienroboters erfordert die Berechnung der Position und Ausrichtung des Endeffektors in Bezug auf ein Referenzkoordinatensystem, wenn die Gelenkwinkel bekannt sind (*vorwärtsgerichtete Kinematik*), sowie die komplexere umgekehrte Berechnung der erforderlichen Gelenkwinkel für eine bestimmte Position und Ausrichtung des Endeffektors in Bezug auf das Referenzkoordinatensystem (*inverse Kinematik*).  Die mathematischen Standardwerkzeuge, die für diese Berechnungen verwendet werden, sind Matrizen, d. h. Tabellen mit Parametern und Formeln, die den Umgang mit den Rotationen und Translationen erleichtern, die bei der Berechnung der Vorwärts- und Rückwärtskinematik erforderlich sind.

note: type: Plain text
en: Detailed familiarity with the math is not required for a serial robot since LinuxCNC provides a kinematics module that implements an algorithm called 'genserkins' to calculate the forward and inverse kinematics for a generic serial robot.  In order to control a specific serial robot, 'genserkins' must be provided with data so that it can build a mathematical model of the robot's mechanical structure and thus do the math.
de: Detaillierte Kenntnisse der Mathematik sind für einen Serienroboter nicht erforderlich, da LinuxCNC ein Kinematikmodul bereitstellt, das einen Algorithmus namens "genserkins" implementiert, um die Vorwärts- und Rückwärtskinematik für einen generischen Serienroboter zu berechnen.  Um einen bestimmten Serienroboter zu steuern, muss 'genserkins' mit Daten versorgt werden, so dass es ein mathematisches Modell der mechanischen Struktur des Roboters aufbauen und damit die Mathematik tun kann.

note: type: Plain text
en: The required data needs to be in a standardized form that has been introduced by Jacques Denavit and Richard Hartenberg back in the fifties and are called the DH-Parameters.  Denavit and Hartenberg used four parameters to describe how one joint is linked to the next.  These parameters describe basically two rotations ('alpha' and 'theta') and two translations ('a' and 'd').
de: Die erforderlichen Daten müssen in einer standardisierten Form vorliegen, die von Jacques Denavit und Richard Hartenberg bereits in den fünfziger Jahren eingeführt wurde und als DH-Parameter bezeichnet wird.  Denavit und Hartenberg verwendeten vier Parameter, um zu beschreiben, wie ein Gelenk mit dem nächsten verbunden ist.  Diese Parameter beschreiben im Wesentlichen zwei Rotationen ('alpha' und 'theta') und zwei Translationen ('a' und 'd').

note: type: Title ==
en: Modified DH-Parameters
de: Modifizierte DH-Parameter

note: type: Plain text
en: As is often the case, this "standard" has been modified by other authors who have introduced "modified DH-parameters" and one must be very careful because 'genserkins' uses "modified DH-parameters" as described in the publication "Introduction to Robotics, Mechanics and Control" by John J. Craig.  Beware there is a lot of information to be found on 'DH-parameters' but rarely does the author define which convention is actually used.  In addition, some people have found it necessary to change the parameter named 'a' to 'r' and have thus added to the confusion.  This document adheres to the convention in the above mentioned publication by Craig with the difference that joint and parameter enumeration begins with the number '0' in order to be consistent with 'genserkins' and its HAL pins.
de: Wie so oft wurde dieser "Standard" von anderen Autoren modifiziert, die "modifizierte DH-Parameter" eingeführt haben, und man muss sehr vorsichtig sein, denn "genserkins" verwendet "modifizierte DH-Parameter", wie sie in der Veröffentlichung "Introduction to Robotics, Mechanics and Control" von John J. Craig beschrieben sind.  Vorsicht, es gibt viele Informationen zu "DH-Parametern", aber selten definiert der Autor, welche Konvention tatsächlich verwendet wird.  Darüber hinaus haben einige Leute es für nötig befunden, den Parameter mit der Bezeichnung "a" in "r" zu ändern und damit zur Verwirrung beigetragen.  Dieses Dokument hält sich an die Konvention in der oben erwähnten Veröffentlichung von Craig, mit dem Unterschied, dass die Aufzählung der Fugen und Parameter mit der Zahl '0' beginnt, um mit 'genserkins' und seinen HAL-Pins konsistent zu sein.

note: type: Plain text
en: Standard and Modified DH-Parameters consist of four numeric values for each joint ('a', 'd', 'alpha' and 'theta') that describe how the coordinate system (CS) sitting in one joint has to be moved and rotated to be aligned with the next joint.  Aligned means that the Z-axis of our CS coincides with the axis of rotation of the joint and points in the positive direction such that, using the right hand rule with the thumb pointing in the positive direction of the Z-axis, the fingers point in the positive direction of rotation of the joint.  It becomes clear that in order to do this, one must decide on the positive directions of all joints before starting to derive the parameters!
de: Standard- und modifizierte DH-Parameter bestehen aus vier numerischen Werten für jedes Gelenk ("a", "d", "alpha" und "theta"), die beschreiben, wie das Koordinatensystem (CS), das in einem Gelenk sitzt, bewegt und gedreht werden muss, um mit dem nächsten Gelenk ausgerichtet zu werden.  Ausgerichtet bedeutet, dass die Z-Achse unseres Koordinatensystems mit der Rotationsachse des Gelenks zusammenfällt und in die positive Richtung zeigt, so dass die Finger in die positive Drehrichtung des Gelenks zeigen, wenn man die Regel der rechten Hand anwendet und der Daumen in die positive Richtung der Z-Achse zeigt.  Es wird deutlich, dass man dazu die positiven Richtungen aller Gelenke festlegen muss, bevor man mit der Ableitung der Parameter beginnt!

note: type: Plain text
en: The difference between "standard" and "modified" notations is in how the parameters are allocated to the links.  Using the "standard" DH-Parameters in 'genserkins' will *not* give the correct mathematical model.
de: Der Unterschied zwischen der "Standard"- und der "modifizierten" Notation besteht darin, wie die Parameter den Verbindungen zugewiesen werden.  Die Verwendung der "Standard" DH-Parameter in "genserkins" ergibt *nicht* das korrekte mathematische Modell.

note: type: Title ==
en: Modified DH-Parameters as used in 'genserkins'
de: Modifizierte DH-Parameter, wie sie in 'Genserkins' verwendet werden

note: type: Plain text
en: Note that 'genserkins' does not handle offsets to theta-values -- theta is the joint variable that is *controlled* by LinuxCNC.  With the CS aligned with the joint, a rotation around its Z-Axis is identical to the rotation commanded to that joint by LinuxCNC. This makes it impossible to define the 0° position of our robots joints arbitrarily.
de: Beachten Sie, dass 'genserkins' keine Offsets auf Theta-Werte behandelt -- Theta ist die Gelenkvariable, die von LinuxCNC *kontrolliert* wird.  Mit dem CS mit dem Gelenk ausgerichtet, ist eine Drehung um seine Z-Achse identisch mit der Drehung befohlen, dass das Gelenk von LinuxCNC. Dies macht es unmöglich, die 0° Position unserer Roboter Gelenke willkürlich zu definieren.

note: type: Plain text
en: The three configurable parameters are:
de: Die drei konfigurierbaren Parameter sind:

note: type: Plain text
en: *alpha* : positive or negative rotation (in radians) around the X-axis
    of the "current coordinate system"
de: *alpha* : positive oder negative Drehung (in Radiant) um die X-Achse
    des "aktuellen Koordinatensystems"

note: type: Plain text
en: *d* : positive or negative length along Z (also in 'machine units')
de: *d* : positive oder negative Länge entlang Z (auch in 'Maschineneinheiten')

note: type: Plain text
en: The parameter sets are always derived in the same order and a set is completed by setting the d-parameter.  This does not leave the Z-axis of our CS aligned with the next joint! This may seem confusing but sticking to this rule will yield a working set of parameters.  Once the *d*-parameter is set, the X-axis of our-CS needs to point to the axis of the next joint.
de: Die Parametersätze werden immer in der gleichen Reihenfolge abgeleitet und ein Satz wird durch das Setzen des d-Parameters abgeschlossen.  Dadurch bleibt die Z-Achse unseres CS nicht auf das nächste Gelenk ausgerichtet! Dies mag verwirrend erscheinen, aber wenn man sich an diese Regel hält, erhält man einen funktionierenden Satz von Parametern.  Sobald der *d*-Parameter gesetzt ist, muss die X-Achse unseres CS auf die Achse des nächsten Gelenks zeigen.

note: type: Title ==
en: Numbering of joints and parameters
de: Nummerierung der Verbindungen und Parameter

note: type: Plain text
en: The first joint in LinuxCNC is joint-0 (because in software counting starts with 0) while most publications start with the number '1'.  That goes for all the parameters as well.  That is, numbering starts with a-0, alpha-0, d-0 and ends with a-5, alpha-5 and d-5.  Keep this in mind when following a publication to set up 'genserkins' parameters.
de: Das erste Gelenk in LinuxCNC ist Gelenk-0 (weil in der Software Zählung beginnt mit 0), während die meisten Publikationen beginnen mit der Nummer "1".  Das gilt auch für alle Parameter.  Das heißt, die Nummerierung beginnt mit a-0, alpha-0, d-0 und endet mit a-5, alpha-5 und d-5.  Behalten Sie dies im Hinterkopf, wenn Sie einer Veröffentlichung folgen, um "genserkins"-Parameter einzurichten.

note: type: Title ==
en: How to start
de: Wie fange ich an?

note: type: Plain text
en: Convention is to start by placing the reference-CS in the base of the robot with it's Z-axis coinciding with the axis of the first joint and its X-axis pointing toward the next joint's axis.
de: Üblicherweise wird das Referenz-CS zunächst in der Basis des Roboters platziert, wobei seine Z-Achse mit der Achse des ersten Gelenks übereinstimmt und seine X-Achse auf die Achse des nächsten Gelenks zeigt.

note: type: Plain text
en: This will also result in the DRO values in LinuxCNC being referenced to that point.  Having done so sets a-0 and alpha-0 to 0.  The above mentioned publication (Craig) also sets d-0 to 0, which is confusing when a displacement offset is needed in order to have the reference-CS at the bottom of the base.  Setting d-0 = to the displacement gives correct results.  In this manner, the first set of parameters are alpha-0 = 0, a-0 = 0, d0 = displacement, and the X-axis of the CS points to the axis of the next joint (joint-1).
de: Dies wird auch dazu führen, dass die DRO-Werte in LinuxCNC zu diesem Punkt referenziert werden.  Nachdem dies getan setzt a-0 und alpha-0 auf 0. Die oben genannten Veröffentlichung (Craig) setzt auch d-0 auf 0, die verwirrend ist, wenn eine Verschiebung Offset benötigt wird, um die Referenz-CS an der Unterseite der Basis haben.  Die Einstellung von d-0 = auf die Verschiebung führt zu korrekten Ergebnissen.  Auf diese Weise ist der erste Satz von Parametern alpha-0 = 0, a-0 = 0, d0 = Verschiebung, und die X-Achse des CS zeigt auf die Achse des nächsten Gelenks (Gelenk-1).

note: type: Plain text
en: Derivation of the net set (alpha-1, a-1, d-1) follows -- always using the same sequence all the way to the sixth set (alpha-5, a-5, d-5).
de: Es folgt die Ableitung der Netzmenge (alpha-1, a-1, d-1) - immer in der gleichen Reihenfolge bis hin zur sechsten Menge (alpha-5, a-5, d-5).

note: type: Plain text
en: And thus, the TCP-CS of the end-effector is sitting in the center of the hand flange.
de: Und so sitzt der TCP-CS des Endeffektors in der Mitte des Handflansches.

note: type: Title ==
en: Special cases
de: Sonderfälle

note: type: Plain text
en: If the next joint-axis is parallel to the last then one could arbitrarily choose a value for the d-parameter but there is no point in setting it other than 0.
de: Wenn die nächste Gelenkachse parallel zur letzten ist, kann man den Wert für den d-Parameter beliebig wählen, aber es hat keinen Sinn, ihn anders als 0 zu setzen.

note: type: Title ==
en: Detailed Example (RV-6SL)
de: Detailliertes Beispiel (RV-6SL)

note: type: Plain text
en: Described below is a method to derive the required "modified DH-parameters" for a Mitsubishi RV-6SDL and how to set the parameters in the HAL file to be used with the 'genserkins' kinematics in LinuxCNC.  The necessary dimensions are best taken from a dimensional drawing provided by the manufacturer of the robot.
de: Im Folgenden wird eine Methode beschrieben, wie man die erforderlichen "modifizierten DH-Parameter" für einen Mitsubishi RV-6SDL ableitet und wie man die Parameter in der HAL-Datei einstellt, um sie mit der "genserkins"-Kinematik in LinuxCNC zu verwenden.  Die erforderlichen Abmessungen werden am besten aus einer vom Hersteller des Roboters zur Verfügung gestellten Maßzeichnung entnommen.

note: type: Title ==
en: Credits
de: Danksagungen

note: type: Plain text
en: Thanks to user Aciera for all text and the graphics for the RV-6SL robot!
de: Vielen Dank an den Benutzer Aciera für den gesamten Text und die Grafiken für den RV-6SL-Roboter!

note: type: Title =
en: External Axis Offsets(((externaloffsets)))
de: Offsets der externen Achse(((externaloffsets)))

note: type: Plain text
en: For each axis letter (*L* in xyzabcuvw):
de: Für jeden Buchstaben der Achse (*L* in xyzabcuvw):

note: type: delimited block -
en: [AXIS_L]OFFSET_AV_RATIO = value (controls accel/vel for external offsets)
de: [AXIS_L]OFFSET_AV_RATIO = Wert (steuert Beschleunigung/Drehung für externe Offsets)

note: type: Plain text
en: Allowed values: 0 <= value <= 0.9
de: Erlaubte Werte: 0 <= Wert <= 0.9

note: type: Plain text
en: Disallowed values are replaced with 0.1 with message to stdout
de: Nicht zulässige Werte werden durch 0.1 mit der Meldung an stdout ersetzt

note: type: Plain text
en: Default value:  0 (disables external offset).
    Consequence: omitted [AXIS_L]OFFSET_AV_RATIO disables external offset for the axis.
de: Standardwert: 0 (deaktiviert den externen Offset).
    Folge: Weglassen von [AXIS_L]OFFSET_AV_RATIO deaktiviert den externen Offset für die Achse.

note: type: Plain text
en: If nonzero, the OFFSET_AV_RATIO (*r*), adjusts the conventional (planning) max velocity and acceleration to preserve [AXIS_L] constraints:
de: Wenn der Wert nicht Null ist, passt das OFFSET_AV_RATIO (*r*) die konventionelle (Planungs-) Höchstgeschwindigkeit und -beschleunigung an, um die [AXIS_L]-Einschränkungen einzuhalten:

note: type: delimited block -
en: planning max velocity        = (1-r) * MAX_VELOCITY
    external offset velocity     = (  r) * MAX_VELOCITY
de: maximale Planungsgeschwindigkeit = (1-r) * MAX_VELOCITY
    externe Offset-Geschwindigkeit = ( r) * MAX_VELOCITY

note: type: delimited block -
en: planning max acceleration    = (1-r) * MAX_ACCELERATIOIN
    external offset acceleration = (  r) * MAX_ACCELERATION
de: Planung maximale Beschleunigung = (1-r) * MAX_ACCELERATIOIN
    externe Offset-Beschleunigung = ( r) * MAX_ACCELERATION

note: type: Plain text
en: For each axis letter (*L* in xyzabcuvw)
de: Für jeden Achsenbuchstaben (*L* in xyzabcuvw)

note: type: Plain text
en: *axis.L.eoffset-enable*  Input(bit): enable
de: *axis. L.eoffset-enable* Eingang (Bit): Aktivieren

note: type: Plain text
en: *axis.L.eoffset-scale*   Input(float): scale factor
de: *axis. L.eoffset-scale* Input(float): Skalierungsfaktor

note: type: Plain text
en: *axis.L.eoffset-counts*  Input(s32): input to counts register
de: *axis.L.eoffset-counts* Input(s32): Eingabe in das Zählregister

note: type: Plain text
en: *axis.L.eoffset-clear*   Input(bit): clear requested offset
de: *axis.L.eoffset-clear* Input(bit): angeforderten Offset löschen

note: type: Plain text
en: *axis.L.eoffset*         Output(float): current external offset
de: *axis. L.eoffset* Output(float): aktueller externer Offset

note: type: Plain text
en: *axis.L.eoffset-request* Output(float): requested external offset
de: *axis.L.eoffset-request* Output(float): angeforderter externer Offset

note: type: Plain text
en: *motion.eoffset-active*   Output(bit): non-zero external offsets applied
de: *motion.eoffset-active* Output(Bit): Externe Offsets ungleich Null angewendet

note: type: Plain text
en: *motion.eoffset-limited*  Output(bit): motion inhibited due to soft limit
de: *motion.eoffset-limited* Output(bit): Bewegung gesperrt durch Softlimit

note: type: Title ===
en: Offset Computation
de: Offset-Berechnung

note: type: Plain text
en: For many applications, the 'axis.L.eoffset-scale' pin is constant and the net 'axis.L.eoffset-request' response to 'axis.L.eoffset-counts' is equivalent to the product of the accumulated value of 'axis.L.eoffset-counts' and the (constant)  'axis.L.eoffset-scale' pin values.
de: Bei vielen Anwendungen ist der 'axis.L.eoffset-scale'-Pin konstant und die Netto-'axis.L.eoffset-request'-Antwort auf 'axis.L.eoffset-counts' entspricht dem Produkt aus dem kumulierten Wert von 'axis.L.eoffset-counts' und den (konstanten) 'axis.L.eoffset-scale'-Pin-Werten.

note: type: Title ===
en: Machine-off/Machine-on
de: Maschine aus/Maschine ein

note: type: Plain text
en: When the machine is turned off, the *current position with external offsets is maintained* so that there is no unexpected motion at turn off or turn on.
de: Wird die Maschine ausgeschaltet, so wird die *aktuelle Position mit externen Offsets beibehalten*, damit es keine unerwarteten Bewegungen beim Aus- oder Einschalten gibt.

note: type: Plain text
en: In other words, external offsets are *defined as ZERO at each startup* (machine-on) regardless of the value of the 'axis.L.eoffset-counts' pins. To avoid confusion, it is recommended that all 'axis.L.eoffset-counts' pins are set to zero when the machine is off.
de: Mit anderen Worten: Externe Offsets werden *bei jedem Start* (Maschine ein) als NULL definiert, unabhängig vom Wert der 'axis.L.eoffset-counts'-Pins. Um Verwirrung zu vermeiden, wird empfohlen, dass alle 'axis.L.eoffset-counts'-Pins auf Null gesetzt werden, wenn die Maschine ausgeschaltet ist.

note: type: Plain text
en: External axis offset movements are independently planned with velocity and acceleration settings specified by the '[AXIS_L]OFFSET_AV_RATIO'. The offsetting motion is not coordinated with teleop jogs nor with coordinated (G-code)  motion. During teleop jogging and coordinated (G-code) motion, axis soft limits ('[AXIS_L]MIN_LIMIT,MAX_LIMIT') restrict movement of the axis.
de: Externe Achsen-Offset-Bewegungen werden unabhängig mit den durch '[AXIS_L]OFFSET_AV_RATIO' festgelegten Geschwindigkeits- und Beschleunigungseinstellungen geplant. Die Offset-Bewegung wird weder mit dem Teleop-Jogging noch mit der koordinierten (G-Code-) Bewegung koordiniert. Während des Teleop-Jogging und der koordinierten (G-Code-)Bewegung schränken weiche Achsengrenzen ('[AXIS_L]MIN_LIMIT,MAX_LIMIT') die Bewegung der Achse ein.

note: type: Plain text
en: When external offsets are applied and motion reaches a soft limit (by external offset increases or teleop jogging or coordinated motion), the HAL pin 'motion.eoffset-limited' is asserted and the axis value is held nominally to the soft limit.  This HAL pin can be used by associated HAL logic to truncate additional eoffset counts or to stop the machine (connect to 'halui.machine.off' for instance). If the axis is moved within the soft limit, the 'motion.eoffset-limited' pin is reset.
de: Wenn externe Offsets angewendet werden und die Bewegung eine weiche Grenze erreicht (durch externe Offset-Erhöhungen oder Teleop-Jogging oder koordinierte Bewegung), wird der HAL-Pin 'motion.eoffset-limited' aktiviert und der Achsenwert nominal auf der weichen Grenze gehalten.  Dieser HAL-Pin kann von der zugehörigen HAL-Logik verwendet werden, um weitere E-Offset-Zählungen abzuschneiden oder die Maschine anzuhalten (z. B. durch Anschluss an 'halui.machine.off'). Wird die Achse innerhalb des Softlimits bewegt, so wird der 'motion.eoffset-limited'-Pin zurückgesetzt.

note: type: Plain text
en: When operating at a soft limit during coordinated motion that continues to change the planned axis value, the HAL output pin 'axis.L.eoffset' will indicate the current offset -- the distance needed to reach the limit instead of the computed offset request. This indicated value will change as the planned axis value changes.
de: Beim Betrieb an einer weichen Grenze während einer koordinierten Bewegung, die den geplanten Achsenwert weiter verändert, zeigt der HAL-Ausgangspin 'axis.L.eoffset' den aktuellen Offset an - die Distanz, die benötigt wird, um die Grenze zu erreichen, anstatt der berechneten Offset-Anforderung. Dieser angezeigte Wert ändert sich, wenn sich der geplante Achsenwert ändert.

note: type: Plain text
en: The HAL pin 'axis.L.eoffset-request' indicates the current requested offset that is the product of the internal counts register and the eoffset-scale. In general, the 'axis.L.eoffset' pin value lags the 'axis.L.eoffset-request' value since the external offset is subject to an acceleration limit.  When operating at a soft limit, additional updates to the 'axis.L.eoffset-counts' will continue to affect the requested external offset as reflected in the 'axis.L.eoffset-request' HAL pin.
de: Der HAL-Pin 'axis.L.eoffset-request' zeigt den aktuellen angeforderten Offset an, der das Produkt aus dem internen Zählregister und der eoffset-Skala ist. Im Allgemeinen hinkt der Wert des Pins 'axis.L.eoffset' dem Wert von 'axis.L.eoffset-request' hinterher, da der externe Offset einer Beschleunigungsgrenze unterliegt.  Beim Betrieb an einer weichen Grenze wirken sich zusätzliche Aktualisierungen der 'axis.L.eoffset-counts' weiterhin auf den angeforderten externen Offset aus, wie er im 'axis.L.eoffset-request'-HAL-Pin reflektiert wird.

note: type: Plain text
en: When teleop jogging with external offsets enabled *and* non-zero values applied, encountering a soft limit will stop motion in the offending axis *without a deacceleration interval*.  Similarly, during coordinated motion with external offsets enabled, reaching a soft limit will stop motion with no deacceleration phase. For this case, it does not matter if the offsets are zero.
de: Beim Teleop-Jogging mit aktivierten externen Offsets *und* angewandten Werten ungleich Null wird bei Erreichen eines Soft-Limits die Bewegung in der betreffenden Achse *ohne Verzögerungsintervall* angehalten.  In ähnlicher Weise wird bei einer koordinierten Bewegung mit aktivierten externen Offsets das Erreichen eines Soft-Limits zum Anhalten der Bewegung ohne Verzögerungsphase führen. In diesem Fall spielt es keine Rolle, ob die Offsets Null sind.

note: type: Plain text
en: When motion is stopped with no deacceleration phase, system *acceleration limits may be violated* and lead to: 1) a following error (and/or a thump) for a servo motor system, 2) a loss of steps for a stepper motor system.  In general, it is recommended that external offsets are applied in a manner to avoid approaching soft limits.
de: Wenn die Bewegung ohne Verzögerungsphase gestoppt wird, können die *Beschleunigungsgrenzen des Systems verletzt werden*, was zu Folgefehlern führt: 1) einem Schleppfehler (und/oder einem Klopfen) bei einem Servomotor-System, 2) einem Verlust von Schritten bei einem Schrittmotor-System.  Im Allgemeinen wird empfohlen, externe Offsets so zu verwenden, dass eine Annäherung an die weichen Grenzen vermieden wird.

note: type: Plain text
en: External offsets apply to axis coordinate letters (xyzabcuvw).  All joints must be homed before external axis offsets are honored.
de: Externe Versätze gelten für Achsenkoordinatenbuchstaben (xyzabcuvw).  Alle Gelenke müssen referenziert werden, bevor externe Achsenversätze berücksichtigt werden.

note: type: Plain text
en: If an 'axis.L.eoffset-enable' HAL pin is reset when its offset is non-zero, the offset is maintained.  The offset may be cleared by:
de: Wird ein 'axis.L.eoffset-enable'-HAL-Pin zurückgesetzt, wenn sein Offset ungleich Null ist, wird der Offset beibehalten.  Der Offset kann gelöscht werden durch:

note: type: Plain text
en: a 'Machine-off/Machine on' toggle
de: ein Umschalter "Maschine aus/Maschine an"

note: type: Plain text
en: reactivating the enable pin and incrementing/decrementing the 'axis.L.eoffset-counts' HAL pin to return the offset to zero.
de: Reaktivierung des Freigabe-Pins und Inkrementierung/Dekrementierung des HAL-Pins 'axis.L.eoffset-counts', um den Offset auf Null zu setzen.

note: type: Plain text
en: pulsing the 'axis.L.eoffset-clear' HAL pin
de: Pulsieren des HAL-Pins 'axis.L.eoffset-clear'

note: type: Plain text
en: External-offsets are intended for use with 'small' offsets that are applied within the soft-limit bounds.
de: Externe Offsets sind für die Verwendung mit "kleinen" Offsets vorgesehen, die innerhalb der Soft-Limit-Grenzen angewendet werden.

note: type: Plain text
en: Soft limits are respected for both teleop jogging and coordinated motion when external offsets are applied.  However, when a soft limit is reached during coordinated motion, reducing the offending external offset *may not move away* from the soft limit *if planned motion continues in the same direction*.  This circumstance can occur since the rate of correcting offset removal (as set by '[AXIS_L]OFFSET_AV_RATIO') may be less than the opposing planned rate of motion.  In such cases, *pausing* (or stopping) the planned, coordinated motion will allow movement away from the soft limit when correcting changes are made in the offending external offset.
de: Softlimits werden sowohl beim Teleop-Jogging als auch bei der koordinierten Bewegung beachtet, wenn externe Offsets angewendet werden.  Wenn jedoch während einer koordinierten Bewegung eine weiche Grenze erreicht wird, kann sich die Verringerung des externen Offsets *nicht von der weichen Grenze entfernen*, *wenn die geplante Bewegung in dieselbe Richtung fortgesetzt wird*.  Dieser Umstand kann auftreten, da die Geschwindigkeit der Korrektur des Offsets (wie mit '[AXIS_L]OFFSET_AV_RATIO' eingestellt) geringer sein kann als die geplante Gegenbewegung.  In solchen Fällen wird die geplante koordinierte Bewegung *angehalten* (oder gestoppt), um eine Bewegung weg von der weichen Grenze zu ermöglichen, wenn korrigierende Änderungen am externen Offset vorgenommen werden.

note: type: Title ===
en: Warning
de: Warnung

note: type: Plain text
en: Component to compute an external offset from a function based on a measured angle (rotary coordinate or spindle).  See the man page for details (*$ man eoffset_per_angle*).
de: Komponente zur Berechnung eines externen Offsets aus einer Funktion auf der Grundlage eines gemessenen Winkels (Drehkoordinate oder Spindel).  Siehe die Manpage für Details (*$ man eoffset_per_angle*).

note: type: Plain text
en: The external axis offset capability is enabled by adding an '[AXIS_L]' setting for each candidate axis.  For example:
de: Der externe Achsenversatz wird durch Hinzufügen einer '[AXIS_L]'-Einstellung für jede Kandidatenachse aktiviert.  Zum Beispiel:

note: type: Plain text
en: In the absence of a custom display, *halshow* can be started as an auxiliary application with a custom watch list.
de: Wenn keine benutzerdefinierte Anzeige vorhanden ist, kann *halshow* als Hilfsanwendung mit einer benutzerdefinierten Überwachungsliste gestartet werden.

note: type: Plain text
en: Where the file z.halshow (in the configuration directory) is:
de: Wo sich die Datei z.halshow (im Konfigurationsverzeichnis) befindet:

note: type: Plain text
en: Provided simulation configurations demonstrate the use of external offsets in order to provide a starting point for user customization for real hardware.
de: Die bereitgestellten Simulationskonfigurationen demonstrieren die Verwendung externer Offsets, um einen Ausgangspunkt für die Anpassung an die reale Hardware zu bieten.

note: type: Plain text
en: The sim configurations utilize the INI setting '[HAL]HALFILE =
    LIB:basic_sim.tcl' to configure all routine HAL connections for
    the axes specified in the INI file '[TRAJ]COORDINATES=' setting.
    The HAL logic needed to demonstrate external offset functionality
    and the GUI HAL pin connections for a PyVCP panel are made in
    separate HAL files.   A non-simulation configuration should
    replace the 'LIB:basic_sim.tcl' item HALFILEs appropriate to the
    machine.  The provided PyVCP files (.hal and .xml) could be a
    starting point for application-specific GUI interfaces.
de: Die Sim-Konfigurationen verwenden die INI-Einstellung '[HAL]HALFILE =
    LIB:basic_sim.tcl', um alle Routine-HAL-Verbindungen für
    die in der INI-Datei '[TRAJ]COORDINATES=' angegebenen Achsen.
    Die HAL-Logik, die zur Demonstration der externen Offset-Funktionalität benötigt wird
    und die GUI HAL Pin Verbindungen für ein PyVCP Panel sind in
    getrennten HAL Dateien.   Eine Nicht-Simulations-Konfiguration sollte
    den Eintrag 'LIB:basic_sim.tcl' für den
    Maschine in den HALFILEs ersetzen.   Die mitgelieferten PyVCP-Dateien (.hal und .xml) können ein
    Ausgangspunkt für anwendungsspezifische Benutzeroberflächen sein.

note: type: Plain text
en: The sim config 'sim/configs/axis/external_offsets/eoffsets.ini' demonstrates a cartesian XYZ machine with controls to enable external offsets on any axis.
de: Die Sim-Konfiguration 'sim/configs/axis/external_offsets/eoffsets.ini' demonstriert eine kartesische XYZ-Maschine mit Steuerelementen zur Aktivierung externer Offsets auf jeder Achse.

note: type: Plain text
en: Displays are provided to show all important position and offset values.
de: Alle wichtigen Positions- und Offsetwerte werden angezeigt.

note: type: Plain text
en: A sim_pin GUI provides controls for the axis offset pins: eoffset-scale & eoffset-counts (via signal e:<L>counts), eoffset-clear (via signal e:clearall)
de: Ein sim_pin GUI bietet Steuerelemente für die Achsen-Offset-Pins: eoffset-scale & eoffset-counts (über Signal e:<L>counts), eoffset-clear (über Signal e:clearall)

note: type: Plain text
en: A script (eoffsets_monitor.tcl) is used to set 'axis.L.counts' pins to zero at Machine-off.
de: Ein Skript (eoffsets_monitor.tcl) wird verwendet, um die 'axis.L.counts'-Pins beim Ausschalten der Maschine auf Null zu setzen.

note: type: Plain text
en: The sim config 'sim/configs/axis/external_offsets/jwp_z.ini' demonstrates a jog-while-pause capability for a single (Z) coordinate:
de: Die Sim-Konfiguration 'sim/configs/axis/external_offsets/jwp_z.ini' demonstriert eine Jog-While-Pause-Funktion für eine einzelne (Z-)Koordinate:

note: type: Plain text
en: Panel LEDs are provided to show important status items.
de: Die LEDs auf dem Bedienfeld dienen zur Anzeige wichtiger Statusinformationen.

note: type: Plain text
en: Controls are provided to set the eoffset scale factor and to increment/decrement/clear the eoffset counts.
de: Es gibt Steuerelemente zum Einstellen des Skalierungsfaktors für den Eoffset und zum Erhöhen/Verringern/Löschen der Eoffset-Zähler.

note: type: Title ===
en: dynamic_offsets.ini
de: dynamische_offsets.ini

note: type: Plain text
en: This sim config 'sim/configs/axis/external_offsets/dynamic_offsets.ini' demonstrates dynamically applied offsets by connecting a sinusoidal waveform to the z coordinate external offset inputs.
de: Diese Sim-Konfiguration 'sim/configs/axis/external_offsets/dynamic_offsets.ini' demonstriert dynamisch angewandte Offsets durch Anschluss einer Sinuswellenform an die externen Offset-Eingänge für die Z-Koordinate.

note: type: Plain text
en: Controls are provided to alter INI file settings for the Z axis max velocity and max acceleration.
de: Es gibt Steuerelemente zur Änderung der INI-Datei-Einstellungen für die maximale Geschwindigkeit und Beschleunigung der Z-Achse.

note: type: Plain text
en: Controls are provided to set the waveform generator parameters.
de: Die Parameter des Wellenformgenerators lassen sich mit Hilfe von Reglern einstellen.

note: type: Plain text
en: A halscope app is started to show the applied waveform, the offset response, and the motor cmd response.
de: Eine Halscope-App wird gestartet, um die angelegte Wellenform, die Offset-Antwort und die Motor-CMD-Antwort anzuzeigen.

note: type: Plain text
en: changes to the z coordinate max-acceleration and max-velocity are not acknowledged while a program is running.
de: Änderungen an der z-Koordinate max-acceleration und max-velocity werden während der Ausführung eines Programms nicht bestätigt.

note: type: Plain text
en: Functions are provided for inside and outside polygons (nsides >= 3), sine waves and square waves.  The functions can be multiplied in frequency using the fmul pin and modified in amplitude using the rfrac pin (fraction of reference radius).
de: Es werden Funktionen für Innen- und Außenpolygone (nsides >= 3), Sinuswellen und Rechteckwellen bereitgestellt.  Die Funktionen können mit dem Stift fmul in der Frequenz multipliziert und mit dem Stift rfrac in der Amplitude verändert werden (Bruchteil des Referenzradius).

note: type: Plain text
en: Controls are provided to start/stop offset waveforms and to set the function type and its parameters.
de: Es gibt Bedienelemente zum Starten/Stoppen von Offset-Wellenformen und zum Einstellen des Funktionstyps und seiner Parameter.

note: type: Title =
en: Kinematics(((kinematics)))
de: Kinematiken(((Kinematiken)))

note: type: Plain text
en: When we talk about CNC machines, we usually think about machines that are commanded to move to certain locations and perform various tasks.  In order to have an unified view of the machine space, and to make it fit the human point of view over 3D space, most of the machines (if not all) use a common coordinate system called the Cartesian Coordinate System.
de: Wenn wir über CNC-Maschinen sprechen, denken wir in der Regel an Maschinen, die angewiesen werden, sich an bestimmte Orte zu bewegen und verschiedene Aufgaben auszuführen.  Um eine einheitliche Sicht auf den Maschinenraum zu haben und ihn an die menschliche Sichtweise im 3D-Raum anzupassen, verwenden die meisten Maschinen (wenn nicht alle) ein gemeinsames Koordinatensystem, das kartesische Koordinatensystem.

note: type: Plain text
en: The Cartesian Coordinate system is composed of three axes (X, Y, Z) each perpendicular to the other two footnote:[The word "axes" is also commonly (and wrongly) used when talking about CNC machines, and referring to the moving directions of the machine.].
de: Das kartesische Koordinatensystem besteht aus drei Achsen (X, Y, Z), die jeweils senkrecht zueinander stehen. footnote: [Das Wort "Achsen" wird auch häufig (und fälschlicherweise) verwendet, wenn von CNC-Maschinen die Rede ist, und bezieht sich auf die Bewegungsrichtungen der Maschine.].

note: type: Plain text
en: When we talk about a G-code program (RS274/NGC) we talk about a number of commands (G0, G1, etc.) which have positions as parameters (X- Y- Z-). These positions refer exactly to Cartesian positions. Part of the LinuxCNC motion controller is responsible for translating those positions into positions which correspond to the machine (((kinematics)))kinematics footnote:[Kinematics: a two way function to transform from Cartesian space to joint space.].
de: Wenn wir über ein G-Code-Programm (RS274/NGC) sprechen, dann meist über eine Reihe von Befehlen (G0, G1 usw.), die Positionen als Parameter haben (X- Y- Z-). Diese Positionen beziehen sich genau auf kartesische Positionen. Ein Teil der LinuxCNC Motion Controller ist verantwortlich für die Übersetzung dieser Positionen in Maschinen-Positionen und deren Kinematik(((Kinematik))) entsprechen footnote:[Kinematik: eine Zwei-Wege-Funktion, um aus dem kartesischen Raum in den Gelenkraum zu transformieren.].

note: type: Title ===
en: Joints vs Axes
de: Gelenke(engl. joints) vs. Achsen (engl. axes)

note: type: Plain text
en: A joint of a CNC machine is a one of the physical degrees of freedom of the machine. This might be linear (leadscrews) or rotary (rotary tables, robot arm joints). There can be any number of joints on a given machine. For example, one popular robot has 6 joints, and a typical simple milling machine has only 3.
de: Ein Gelenk einer CNC-Maschine ist einer der physikalischen Freiheitsgrade der Maschine. Dies kann linear (Spindeln) oder rotierend (Drehtische, Roboterarmgelenke) sein. Es kann eine beliebige Anzahl von Gelenken an einer bestimmten Maschine geben. Ein beliebter Roboter hat beispielsweise 6 Gelenke, während eine typische einfache Fräsmaschine nur 3 hat.

note: type: Plain text
en: There are certain machines where the joints are laid out to match kinematics axes (joint 0 along axis X, joint 1 along axis Y, joint 2 along axis Z), and these machines are called (((Cartesian machines)))  Cartesian machines (or machines with (((Trivial Kinematics)))Trivial Kinematics).  These are the most common machines used in milling, but are not very common in other domains of machine control (e.g. welding: puma-typed robots).
de: Es gibt bestimmte Maschinen, bei denen die Gelenke so angeordnet sind, dass sie mit den kinematischen Achsen übereinstimmen (Gelenk 0 entlang der X-Achse, Gelenk 1 entlang der Y-Achse, Gelenk 2 entlang der Z-Achse); diese Maschinen nennt man (((kartesische Maschinen)))  Kartesische Maschinen (oder Maschinen mit (((Trivialkinematik)))Trivialkinematik).  Diese Maschinen werden am häufigsten beim Fräsen verwendet, sind aber in anderen Bereichen der Maschinensteuerung (z. B. Schweißen: puma-typische Roboter) nicht sehr verbreitet.

note: type: Plain text
en: LinuxCNC supports axes with names: X Y Z A B C U V W.  The X Y Z axes typically refer to the usual Cartesian coordinates. The A B C axes refer to rotational coordinates about the X Y Z axes respectively.  The U V W axes refer to additional coordinates that are commonly made colinear to the X Y Z axes respectively.
de: LinuxCNC unterstützt Achsen mit Namen: X Y Z A B C U V W. Die X Y Z-Achsen beziehen sich normalerweise auf die üblichen kartesischen Koordinaten. Die A B C Achsen beziehen sich auf Rotationskoordinaten um die X Y Z Achsen.  Die Achsen U V W beziehen sich auf zusätzliche Koordinaten, die üblicherweise kolinear zu den X-Y-Z-Achsen angeordnet sind.

note: type: Title ==
en: Trivial Kinematics
de: Triviale Kinematik

note: type: Plain text
en: The simplest machines are those in which which each joint is placed along one of the Cartesian axes. On these machines the mapping from Cartesian space (the G-code program) to the joint space (the actual actuators of the machine) is trivial. It is a simple 1:1 mapping:
de: Die einfachsten Maschinen sind solche, bei denen jedes Gelenk entlang einer der kartesischen Achsen angeordnet ist. Bei diesen Maschinen ist die Abbildung vom kartesischen Raum (das G-Code-Programm) auf den Gelenkraum (die tatsächlichen Aktoren der Maschine) trivial. Es handelt sich um eine einfache 1:1-Abbildung:

note: type: Plain text
en: In the above code snippet one can see how the mapping is done: the X position is identical with the joint 0, the Y position with joint 1, etc. The above refers to the direct kinematics (one direction of the transformation).  The next code snippet refers to the inverse kinematics (or the inverse direction of the transformation):
de: Im obigen Codeschnipsel kann man sehen, wie die Zuordnung erfolgt: die X-Position ist identisch mit dem Gelenk 0, die Y-Position mit dem Gelenk 1 usw. Die obige Darstellung bezieht sich auf die direkte Kinematik (eine Richtung der Transformation).  Der nächste Codeschnipsel bezieht sich auf die inverse Kinematik (oder die umgekehrte Richtung der Transformation):

note: type: Plain text
en: In LinuxCNC, the identity kinematics are implemented with the 'trivkins' kinematics module and extended to 9 axes.  The default relationships between axis coordinates and joint numbers are: footnote:[If the machine (for example a lathe) is mounted with only the X, Z and A axes and the INI file of LinuxCNC contains only the definition of these 3 joints, then the previous assertion is false.  Because we currently have (joint0=X, joint1=Z, joint2=A) which assumes that joint1=Y.  To make this work in LinuxCNC just define all the axes (XYZA), LinuxCNC will then use a simple loop in HAL for unused Y axis.] footnote:[Another way to make it work is to change the corresponding code and recompile the software.]
de: In LinuxCNC wird die Identitätskinematik mit dem Kinematikmodul "trivkins" implementiert und auf 9 Achsen erweitert.  Die Standardbeziehungen zwischen Achsenkoordinaten und Gelenknummern sind: footnote:[Wenn die Maschine (z. B. eine Drehmaschine) nur mit den X-, Z- und A-Achsen gemountet ist und die INI-Datei von LinuxCNC nur die Definition dieser 3 Verbindungen enthält, ist die vorherige Behauptung falsch.  Weil wir derzeit haben (Gelenk0 = X, Gelenk 1 = Z, Gelenk 2 = A), die davon ausgeht, dass Gelenk 1 = Y.  Um dies in LinuxCNC zum Laufen zu bringen, definieren Sie einfach alle Achsen (XYZA), LinuxCNC verwendet dann eine einfache Schleife in HAL für nicht verwendete Y-Achse.] Fußnote:[Eine andere Möglichkeit, es zum Laufen zu bringen, besteht darin, den entsprechenden Code zu ändern und die Software neu zu kompilieren.]

note: type: Plain text
en: Similarly, the default relationships for inverse kinematics for trivkins are:
de: Ähnlich sind die Standardbeziehungen für die inverse Kinematik für trivkins:

note: type: Plain text
en: It is straightforward to do the transformation for a trivial "kins" ('trivkins' kinematics) or Cartesian machine provided that there are no omissions in the axis letters used.
de: Die Umwandlung für eine triviale "kins"-Kinematik oder eine kartesische Maschine ist einfach zu bewerkstelligen, sofern die verwendeten Achsenbuchstaben keine Lücken aufweisen.

note: type: Plain text
en: It gets a bit more complicated if the machine is missing one or more of the axis letters.  The problems of omitted axis letters is addressed by using the 'coordinates=' module parameter with the trivkins module. Joint numbers are assigned consecutively to each coordinate specified.  A lathe can be described with 'coordinates=xz' The joint assignments will then be:
de: Etwas komplizierter wird es, wenn der Maschine ein oder mehrere Achsenbuchstaben fehlen.  Das Problem der fehlenden Achsenbuchstaben wird durch die Verwendung des Modulparameters 'coordinates=' mit dem Modul trivkins gelöst. Jeder angegebenen Koordinate werden fortlaufend Gelenknummern zugewiesen.  Eine Drehmaschine kann mit 'coordinates=xz' beschrieben werden. Die Gelenkzuweisungen lauten dann:

note: type: Plain text
en: Use of the 'coordinates=' parameter is recommended for configurations that omit axis letters. footnote:[ Historically, the trivkins module did not support the 'coordinates=' parameter so lathe configs were often configured as XYZ machines.  The unused Y axis was configured to 1) home immediately, 2) use a simple loopback to connect its position command HAL pin to its position feedback HAL pin, and 3) hidden in gui displays. Numerous sim configs use these methods in order to share common HAL files.]
de: Die Verwendung des Parameters 'coordinates=' wird für Konfigurationen empfohlen, bei denen die Achsenbuchstaben weggelassen werden. Fußnote:[ In der Vergangenheit unterstützte das Modul trivkins den Parameter 'coordinates=' nicht, so dass Drehmaschinen-Konfigurationen oft als XYZ-Maschinen konfiguriert wurden.  Die unbenutzte Y-Achse wurde so konfiguriert, dass sie 1) sofort in die Ausgangsposition fährt, 2) einen einfachen Loopback verwendet, um ihren Positionsbefehls-HAL-Pin mit ihrem Positionsrückmeldungs-HAL-Pin zu verbinden, und 3) in der Benutzeroberfläche nicht angezeigt wird. Zahlreiche Sim-Konfigurationen verwenden diese Methoden, um gemeinsame HAL-Dateien zu nutzen.]

note: type: Plain text
en: The 'trivkins' kinematics module also allows the same coordinate to be specified for more than one joint.  This feature can be useful on machines like a gantry having two independent motors for the y coordinate.  Such a machine could use 'coordinates=xyyz' resulting in joint assignments:
de: Das Kinematikmodul 'trivkins' erlaubt es auch, dieselbe Koordinate für mehr als ein Gelenk anzugeben.  Diese Funktion kann bei Maschinen wie einem Portal mit zwei unabhängigen Motoren für die y-Koordinate nützlich sein.  Eine solche Maschine könnte 'coordinates=xyyz' verwenden, was zu Gelenkzuweisungen führt:

note: type: Plain text
en: See the trivkins man pages for more information.
de: Weitere Informationen finden Sie auf den Manpages von trivkins.

note: type: Title ==
en: Non-trivial kinematics
de: Nicht-triviale Kinematik

note: type: Plain text
en: To illustrate the above, we will analyze a simple kinematics called bipod (a simplified version of the tripod, which is a simplified version of the hexapod).
de: Zur Veranschaulichung der obigen Ausführungen werden wir eine einfache Kinematik namens Zweibein (eine vereinfachte Version des Dreibeins, das eine vereinfachte Version des Hexapods ist) analysieren.

note: type: Positional ($1) AttributeList argument for macro 'image'
en: Bipod setup
de: Zweibein-Einrichtung

note: type: Plain text
en: The Bipod we are talking about is a device that consists of 2 motors placed on a wall, from which a device is hung using some wire. The joints in this case are the distances from the motors to the device (named AD and BD in the figure).
de: Das Zweibein (engl. bipod), um das es hier geht, besteht aus zwei Motoren, die an einer Wand angebracht sind und an denen ein Gerät mit einem Draht aufgehängt ist. Die Gelenke sind in diesem Fall die Abstände zwischen den Motoren und dem Gerät (in der Abbildung mit AD und BD bezeichnet).

note: type: Plain text
en: The position of the motors is fixed by convention. Motor A is in (0,0), which means that its X coordinate is 0, and its Y coordinate is also 0. Motor B is placed in (Bx, 0), which means that its X coordinate is Bx.
de: Die Position der Motoren ist per Konvention festgelegt. Motor A befindet sich in (0,0), was bedeutet, dass seine X-Koordinate 0 und seine Y-Koordinate ebenfalls 0 ist. Motor B befindet sich in (Bx, 0), was bedeutet, dass seine X-Koordinate Bx ist.

note: type: Plain text
en: Our tooltip will be in point D which gets defined by the distances AD and BD, and by the Cartesian coordinates Dx, Dy.
de: Unser Tooltip befindet sich im Punkt D, der durch die Abstände AD und BD und die kartesischen Koordinaten Dx, Dy definiert wird.

note: type: Plain text
en: The job of the kinematics is to transform from joint lengths (AD, BD)  to Cartesian coordinates (Dx, Dy) and vice-versa.
de: Die Aufgabe der Kinematik besteht darin, die Gelenklängen (AD, BD) in kartesische Koordinaten (Dx, Dy) und umgekehrt zu transformieren.

note: type: Plain text
en: To transform from joint space into Cartesian space we will use some trigonometry rules (the right triangles determined by the points (0,0), (Dx,0), (Dx,Dy) and the triangle (Dx,0), (Bx,0) and (Dx,Dy)).
de: Um vom gemeinsamen Raum in den kartesischen Raum zu transformieren, werden wir einige trigonometrische Regeln anwenden (die rechtwinkligen Dreiecke, die durch die Punkte (0,0), (Dx,0), (Dx,Dy) und das Dreieck (Dx,0), (Bx,0) und (Dx,Dy) bestimmt werden).

note: type: Plain text
en: We can easily see that:
de: Wir können leicht erkennen, dass:

note: type: Plain text
en: likewise:
de: ebenso:

note: type: Plain text
en: If we subtract one from the other we will get:
de: Wenn wir das eine von dem anderen abziehen, erhalten wir:

note: type: Plain text
en: and therefore:
de: und deshalb:

note: type: Plain text
en: From there we calculate:
de: Daraus berechnen wir:

note: we can easily see that latexmath:[$AD^{2}=x^{2}+y^{2}$], likewise latexmath:[$BD^{2}=(Bx-x)^{2}+y^{2}$]. If we subtract one from the other we will get: latexmath::[\[AD^{2}-BD^{2}=x^{2}+y^{2}-x^{2}+2*x*Bx-Bx^{2}-y^{2}\]] and therefore: latexmath::[\[x=\frac{AD^{2}-BD^{2}+Bx^{2}}{2*Bx}\]] From there 
en: Note that the calculation for y involves the square root of a difference, which may not result in a real number. If there is no single Cartesian coordinate for this joint position, then the position is said to be a singularity. In this case, the forward kinematics return -1.
de: Beachten Sie, dass die Berechnung von y die Quadratwurzel aus einer Differenz beinhaltet, was nicht unbedingt eine reelle Zahl ergibt. Wenn es keine einzige kartesische Koordinate für diese Gelenkposition gibt, dann wird die Position als Singularität bezeichnet. In diesem Fall liefert die Vorwärtskinematik den Wert -1.

note: type: Plain text
en: Translated to actual code:
de: Übersetzt in den tatsächlichen Code:

note: type: Title ===
en: Inverse transformation
de: Inverse Transformation

note: type: Plain text
en: The inverse kinematics is much easier in our example, as we can write it directly:
de: Die inverse Kinematik ist in unserem Beispiel viel einfacher, da wir sie direkt schreiben können:

note: latexmath::[\[AD=\sqrt{x^{2}+y^{2}}\]] latexmath::[\[BD=\sqrt{(Bx-x)^{2}+y^{2}}\]] type: Plain text
en: or translated to actual code:
de: oder in tatsächlichen Code übersetzt:

note: type: Title ==
en: Implementation details
de: Details zur Implementierung

note: type: Plain text
en: A kinematics module is implemented as a HAL component, and is permitted to export pins and parameters. It consists of several "C" functions (as opposed to HAL functions):
de: Ein Kinematikmodul ist als HAL-Komponente implementiert und darf Pins und Parameter exportieren. Es besteht aus mehreren "C"-Funktionen (im Gegensatz zu HAL-Funktionen):

note: type: Plain text
en: Implements the <<sec:Forward-transformation,forward kinematics function>>.
de: Implementiert die <<sec:Forward-transformation,forward kinematics function>>.

note: type: Plain text
en: Implements the inverse kinematics function.
de: Implementiert die Funktion der inversen Kinematik.

note: type: Plain text
en: Returns the kinematics type identifier, típicamente 'KINEMATICS_BOTH':
de: Gibt die Kennung des Kinematik-Typs zurück, typischerweise 'KINEMATICS_BOTH':

note: type: Plain text
en: KINEMATICS_IDENTITY (each joint number corresponds to an axis letter)
de: KINEMATICS_IDENTITY (jede Gelenknummer entspricht einem Achsenbuchstaben)

note: type: Plain text
en: KINEMATICS_BOTH      (forward and inverse kinematics functions are provided)
de: KINEMATICS_BOTH (Vorwärts- und Rückwärtskinematikfunktionen werden bereitgestellt)

note: type: Plain text
en: GUIs may interpret KINEMATICS_IDENTITY to hide the distinctions between joint numbers and axis letters when in joint mode (typically prior to homing).
de: GUIs können KINEMATICS_IDENTITY so interpretieren, dass die Unterscheidung zwischen Gelenknummern und Achsenbuchstaben im Gelenkmodus (typischerweise vor der Referenzfahrt) ausgeblendet wird.

note: type: Plain text
en: The function kinematicsSwitchable() returns 1 if multiple kinematics types are supported.  The function kinematicsSwitch()  selects the kinematics type.  See <<cha:switchable-kinematics,Switchable Kinematitcs>>.
de: Die Funktion kinematicsSwitchable() gibt 1 zurück, wenn mehrere Kinematiktypen unterstützt werden.  Die Funktion kinematicsSwitch() wählt den Kinematik-Typ aus.  Siehe <<cha:switchable-kinematics,Switchable Kinematitcs>>.

note: type: Plain text
en: The majority of provided kinematics modules support a single kinematics type and use the directive "*KINS_NOT_SWITCHABLE*" to supply defaults for the required kinematicsSwitchable() and kinematicsSwitch() functions.
de: Die meisten Kinematikmodule unterstützen einen einzigen Kinematiktyp und verwenden die Direktive "*KINS_NOT_SWITCHABLE*", um Standardwerte für die erforderlichen Funktionen kinematicsSwitchable() und kinematicsSwitch() zu liefern.

note: type: Plain text
en: The home kinematics function sets all its arguments to their proper values at the known home position. When called, these should be set, when known, to initial values, e.g., from an INI file. If the home kinematics can accept arbitrary starting points, these initial values should be used.
de: Die Funktion home kinematics setzt alle ihre Argumente auf ihre richtigen Werte an der bekannten Ausgangsposition. Beim Aufruf sollten diese, sofern bekannt, auf Anfangswerte, z.B. aus einer INI-Datei, gesetzt werden. Wenn die Home-Kinematik beliebige Startpunkte akzeptieren kann, sollten diese Anfangswerte verwendet werden.

note: type: Plain text
en: These are the standard setup and tear-down functions of RTAPI modules.
de: Dies sind die Standardfunktionen zum Auf- und Abbauen von RTAPI-Modulen.

note: type: Plain text
en: When they are contained in a single source file, kinematics modules may be compiled and installed by 'halcompile'. See the 'halcompile(1)' manpage or the HAL manual for more information.
de: Wenn sie in einer einzigen Quelldatei enthalten sind, können Kinematikmodule mit 'halcompile' kompiliert und installiert werden. Weitere Informationen finden Sie in der Manpage 'halcompile(1)' oder im HAL-Handbuch.

note: type: Title ===
en: Kinematics module using the userkins.comp template
de: Kinematikmodul unter Verwendung der Vorlage userkins.comp

note: type: Plain text
en: Another way to create a custom kinematics module is to adapt the HAL component 'userkins'. This template component can be modified locally by a user and can be built using halcompile.
de: Eine weitere Möglichkeit, ein benutzerdefiniertes Kinematikmodul zu erstellen, ist die Anpassung der HAL Komponente 'userkins'. Diese Vorlagenkomponente kann von einem Benutzer lokal geändert und mit halcompile erstellt werden.

note: type: Plain text
en: See the userkins man pages for more information.
de: Weitere Informationen finden Sie in den Man Pages von userkins.

note: type: Plain text
en: Note that to create switchable kinematic modules the required modifications are somewhat more complicated.
de: Beachten Sie, dass zur Erstellung von schaltbaren kinematischen Modulen die erforderlichen Änderungen etwas komplizierter sind.

note: type: Plain text
en: See 'millturn.comp' as an example of a switchable kinematic module that was created using the 'userkins.comp' template.
de: Siehe 'millturn.comp' als Beispiel für ein umschaltbares kinematisches Modul, das mit der Vorlage 'userkins.comp' erstellt wurde.

note: type: Title =
en: PID Tuning(((PID Tuning)))
de: PID-Abstimmung (engl. tuning)(((PID-Abstimmung,PID-Tuning)))

note: type: Title ==
en: PID Controller
de: PID-Regler (engl. PID controller)

note: type: Plain text
en: A proportional-integral-derivative controller (PID controller) is a common feedback loop component in industrial control systems. footnote:[This Subsection is taken from an much more extensive article found at http://en.wikipedia.org/wiki/PID_controller]
de: Ein Proportional-Integral-Derivativ-Regler (PID-Regler) ist eine gängige Rückkopplungskomponente in industriellen Steuerungssystemen. footnote:[Dieser Unterabschnitt ist einem viel umfangreicheren Artikel entnommen, der unter http://en.wikipedia.org/wiki/PID_controller zu finden ist.]

note: type: Plain text
en: The Controller compares a measured value from a process (typically an industrial process) with a reference set point value. The difference (or 'error' signal) is then used to calculate a new value for a manipulable input to the process that brings the process measured value back to its desired set point.
de: Der Regler vergleicht einen Messwert aus einem Prozess (in der Regel ein industrieller Prozess) mit einem Referenzsollwert. Die Differenz (oder das "Fehlersignal") wird dann verwendet, um einen neuen Wert für einen manipulierbaren Eingang in den Prozess zu berechnen, der den Prozessmesswert wieder auf den gewünschten Sollwert bringt.

note: type: Plain text
en: Unlike simpler control algorithms, the PID controller can adjust process outputs based on the history and rate of change of the error signal, which gives more accurate and stable control. (It can be shown mathematically that a PID loop will produce accurate, stable control in cases where a simple proportional control would either have a steady-state error or would cause the process to oscillate).
de: Im Gegensatz zu einfacheren Regelalgorithmen kann der PID-Regler die Prozessausgänge auf der Grundlage des Verlaufs und der Änderungsrate des Fehlersignals anpassen, was eine genauere und stabilere Regelung ermöglicht. (Es lässt sich mathematisch nachweisen, dass eine PID-Regelschleife in Fällen, in denen eine einfache proportionale Regelung entweder einen stationären Fehler aufweisen oder den Prozess zum Schwingen bringen würde, eine genaue, stabile Regelung ergibt).

note: type: Title ===
en: Control loop basics
de: Grundlagen des Regelkreises

note: type: Plain text
en: Intuitively, the PID loop tries to automate what an intelligent operator with a gauge and a control knob would do. The operator would read a gauge showing the output measurement of a process, and use the knob to adjust the input of the process (the 'action') until the process's output measurement stabilizes at the desired value on the gauge.
de: Intuitiv versucht die PID-Schleife das zu automatisieren, was ein intelligenter Bediener mit einem Messgerät und einem Regelknopf tun würde. Der Bediener würde ein Messgerät ablesen, das den Ausgangsmesswert eines Prozesses anzeigt, und den Drehknopf verwenden, um den Eingang des Prozesses (die "Aktion") anzupassen, bis sich der Ausgangsmesswert des Prozesses auf dem gewünschten Wert auf dem Messgerät stabilisiert.

note: type: Plain text
en: In older control literature this adjustment process is called a 'reset' action. The position of the needle on the gauge is a 'measurement', 'process value' or 'process variable'. The desired value on the gauge is called a 'set point' (also called 'set value'). The difference between the gauge's needle and the set point is the 'error'.
de: In der älteren Steuerungsliteratur wird dieser Einstellvorgang als "Rückstellung" bezeichnet. Die Position der Nadel auf dem Messgerät ist eine "Messung", ein "Prozesswert" oder eine "Prozessvariable". Der gewünschte Wert auf dem Messgerät wird als "Sollwert" bezeichnet (auch "Einstellwert" genannt). Die Differenz zwischen der Nadel des Messgeräts und dem Sollwert ist der "Fehler".

note: type: Plain text
en: A control loop consists of three parts:
de: Ein Regelkreis besteht aus drei Teilen:

note: type: Plain text
en: Measurement by a sensor connected to the process (e.g. encoder),
de: Messung durch einen an den Prozess angeschlossenen Sensor (z. B. Encoder),

note: type: Plain text
en: Decision in a controller element,
de: Entscheidung in einem Steuerungselement,

note: type: Plain text
en: Action through an output device such as an motor.
de: Aktion durch ein Ausgabegerät wie z. B. einen Motor.

note: type: Plain text
en: As the controller reads a sensor, it subtracts this measurement from the 'set point' to determine the 'error'. It then uses the error to calculate a correction to the process's input variable (the 'action')  so that this correction will remove the error from the process's output measurement.
de: Wenn der Regler einen Sensor abliest, subtrahiert er diese Messung vom "Sollwert", um den "Fehler" zu ermitteln. Anhand des Fehlers berechnet er dann eine Korrektur der Eingangsvariablen des Prozesses (die "Aktion"), so dass diese Korrektur den Fehler aus der Ausgangsmessung des Prozesses entfernt.

note: type: Plain text
en: In a PID loop, correction is calculated from the error in three ways: cancel out the current error directly (Proportional), the amount of time the error has continued uncorrected (Integral), and anticipate the future error from the rate of change of the error over time (Derivative).
de: In einer PID-Schleife wird die Korrektur auf drei Arten aus dem Fehler berechnet: Der aktuelle Fehler wird direkt ausgeglichen (Proportional), die Zeit, in der ein Fehler unkorrigiert geblieben ist (Integral), und der zukünftige Fehler wird aus der Änderungsrate des Fehlers über die Zeit vorweggenommen (Derivativ).

note: type: Plain text
en: A PID controller can be used to control any measurable variable which can be affected by manipulating some other process variable. For example, it can be used to control temperature, pressure, flow rate, chemical composition, speed, or other variables. Automobile cruise control is an example of a process outside of industry which utilizes crude PID control.
de: Ein PID-Regler kann zur Regelung jeder messbaren Größe verwendet werden, die durch die Beeinflussung einer anderen Prozessgröße beeinflusst werden kann. Er kann zum Beispiel zur Regelung von Temperatur, Druck, Durchfluss, chemischer Zusammensetzung, Geschwindigkeit oder anderen Variablen eingesetzt werden. Ein Beispiel für einen Prozess außerhalb der Industrie, bei dem eine grobe PID-Regelung zum Einsatz kommt, ist die Geschwindigkeitsregelung von Autos.

note: type: Plain text
en: Some control systems arrange PID controllers in cascades or networks.  That is, a 'master' control produces signals used by 'slave' controllers. One common situation is motor controls: one often wants the motor to have a controlled speed, with the 'slave' controller (often built into a variable frequency drive) directly managing the speed based on a proportional input. This 'slave' input is fed by the 'master' controller's output, which is controlling based upon a related variable.
de: Einige Regelsysteme ordnen PID-Regler in Kaskaden oder Netzwerken an.  Das heißt, ein "Master"-Regler erzeugt Signale, die von "Slave"-Reglern verwendet werden. Eine häufige Situation sind Motorsteuerungen: Oft soll der Motor eine geregelte Drehzahl haben, wobei der "Slave"-Regler (oft in einen Frequenzumrichter eingebaut) die Drehzahl direkt auf der Grundlage eines proportionalen Eingangs steuert. Dieser 'Slave'-Eingang wird vom Ausgang des 'Master'-Reglers gespeist, der auf der Grundlage einer verwandten Variablen regelt.

note: type: Title ===
en: Theory
de: Theorie

note: type: Plain text
en: 'PID' is named after its three correcting calculations, which all add to and adjust the controlled quantity. These additions are actually 'subtractions' of error, because the proportions are usually negative:
de: 'PID' ist nach seinen drei korrigierenden Berechnungen benannt, die alle die kontrollierte Menge ergänzen und anpassen. Diese Additionen sind eigentlich "Subtraktionen" von Fehlern, da die Proportionen normalerweise negativ sind:

note: type: Plain text
en: To handle the present, the error is multiplied by a (negative)  constant P (for 'proportional'), and added to (subtracting error from)  the controlled quantity. P is only valid in the band over which a controller's output is proportional to the error of the system. Note that when the error is zero, a proportional controller's output is zero.
de: Dazu wird die Regelabweichung mit einer (negativen) Konstante P (für "proportional") multipliziert und zur Regelgröße addiert (und die Regelabweichung davon subtrahiert). P ist nur in dem Bereich gültig, in dem der Ausgang eines Reglers proportional zur Regelabweichung des Systems ist. Ist die Regelabweichung gleich Null, dann ist der Ausgang eines Proportionalreglers gleich Null.

note: type: Plain text
en: To learn from the past, the error is integrated (added up) over a period of time, and then multiplied by a (negative) constant I (making an average), and added to (subtracting error from) the controlled quantity. I averages the measured error to find the process output's average error from the set point. A simple proportional system either oscillates, moving back and forth around the set point because there's nothing to remove the error when it overshoots, or oscillates and/or stabilizes at a too low or too high value. By adding a negative proportion of (i.e. subtracting part of) the average error from the process input, the average difference between the process output and the set point is always being reduced. Therefore, eventually, a well-tuned PID loop's process output will settle down at the set point.
de: Um aus der Vergangenheit zu lernen, wird die Abweichung über einen bestimmten Zeitraum integriert (aufaddiert), dann mit einer (negativen) Konstante I multipliziert (ein Mittelwert gebildet) und zur Regelgröße addiert (die Abweichung wird von ihr subtrahiert). I mittelt die gemessene Abweichung, um die durchschnittliche Abweichung des Prozessausgangs vom Sollwert zu ermitteln. Ein einfaches proportionales System schwingt entweder hin und her um den Sollwert, weil es nichts gibt, um die Abweichung zu beseitigen, wenn es über den Sollwert hinausgeht, oder es schwingt und/oder stabilisiert sich bei einem zu niedrigen oder zu hohen Wert. Indem ein negativer Anteil des durchschnittlichen Fehlers zum Prozesseingang addiert (d. h. ein Teil davon abgezogen) wird, verringert sich immer weiter die durchschnittliche Differenz zwischen dem Prozessausgang und dem Sollwert. Daher wird sich der Prozessausgang einer gut abgestimmten PID-Schleife schließlich auf den Sollwert einpendeln.

note: type: Block title
en: Derivative
de: Ableitung

note: type: Plain text
en: To handle the future, the first derivative (the slope of the error)  over time is calculated, and multiplied by another (negative) constant D, and also added to (subtracting error from) the controlled quantity.  The derivative term controls the response to a change in the system.  The larger the derivative term, the more rapidly the controller responds to changes in the process's output.
de: Für die Zukunft wird die erste Ableitung (die Steigung der Regelabweichung) nach der Zeit berechnet und mit einer anderen (negativen) Konstante D multipliziert und ebenfalls zur Regelgröße addiert (und die Regelabweichung davon abgezogen).  Der Ableitungsterm steuert die Reaktion auf eine Änderung im System.  Je größer der Ableitungsterm ist, desto schneller reagiert der Regler auf Änderungen im Ausgang des Prozesses.

note: type: Plain text
en: More technically, a PID loop can be characterized as a filter applied to a complex frequency-domain system. This is useful in order to calculate whether it will actually reach a stable value. If the values are chosen incorrectly, the controlled process input can oscillate, and the process output may never stay at the set point.
de: Technisch gesehen kann eine PID-Schleife als ein Filter charakterisiert werden, der auf ein komplexes System im Frequenzbereich angewendet wird. Dies ist nützlich, um zu berechnen, ob tatsächlich ein stabiler Wert erreicht wird. Werden die Werte falsch gewählt, kann der Eingang des geregelten Prozesses schwanken und der Ausgang des Prozesses bleibt möglicherweise nie auf dem Sollwert.

note: type: Title ===
en: Loop Tuning
de: Schleifenabstimmung (engl. loop tuning)

note: type: Plain text
en: 'Tuning' a control loop is the adjustment of its control parameters (gain/proportional band, integral gain/reset, derivative gain/rate) to the optimum values for the desired control response. The optimum behavior on a process change or set point change varies depending on the application. Some processes must not allow an overshoot of the process variable from the set point. Other processes must minimize the energy expended in reaching a new set point. Generally stability of response is required and the process must not oscillate for any combination of process conditions and set points.
de: Das 'Tuning' eines Regelkreises ist die Anpassung seiner Regelparameter (Verstärkung/Proportionalbereich, Integralverstärkung/Rückstellung, Ableitungsverstärkung/Rate) an die optimalen Werte für das gewünschte Regelverhalten. Das optimale Verhalten bei einer Prozess- oder Sollwertänderung hängt von der jeweiligen Anwendung ab. Bei einigen Prozessen darf die Prozessvariable nicht über den Sollwert hinausschießen. Bei anderen Prozessen muss der Energieaufwand für das Erreichen eines neuen Sollwerts minimiert werden. Im Allgemeinen ist eine stabile Reaktion erforderlich, und der Prozess darf bei keiner Kombination von Prozessbedingungen und Sollwerten schwanken.

note: type: Plain text
en: Tuning of loops is made more complicated by the response time of the process; it may take minutes or hours for a set point change to produce a stable effect. Some processes have a degree of non-linearity and so parameters that work well at full-load conditions don't work when the process is starting up from no-load. This section describes some traditional manual methods for loop tuning.
de: Die Abstimmung von Regelkreisen wird durch die Reaktionszeit des Prozesses erschwert; es kann Minuten oder Stunden dauern, bis eine Sollwertänderung eine stabile Wirkung zeigt. Einige Prozesse weisen einen gewissen Grad an Nichtlinearität auf, so dass Parameter, die unter Volllastbedingungen gut funktionieren, beim Anfahren des Prozesses im Leerlauf nicht funktionieren. In diesem Abschnitt werden einige herkömmliche manuelle Methoden zur Regelkreisabstimmung beschrieben.

note: type: Plain text
en: There are several methods for tuning a PID loop. The choice of method will depend largely on whether or not the loop can be taken 'offline' for tuning, and the response speed of the system. If the system can be taken offline, the best tuning method often involves subjecting the system to a step change in input, measuring the output as a function of time, and using this response to determine the control parameters.
de: Es gibt mehrere Methoden zur Abstimmung einer PID-Schleife. Die Wahl der Methode hängt weitgehend davon ab, ob die Schleife für die Abstimmung "offline" genommen werden kann oder nicht, sowie von der Reaktionsgeschwindigkeit des Systems. Wenn das System offline geschaltet werden kann, besteht die beste Abstimmungsmethode oft darin, das System einer sprunghaften Änderung des Eingangs zu unterziehen, den Ausgang als Funktion der Zeit zu messen und diese Reaktion zur Bestimmung der Regelparameter zu verwenden.

note: type: Block title
en: Simple method
de: Einfache Methode

note: type: Plain text
en: If the system must remain on line, one tuning method is to first set the I and D values to zero. Increase the P until the output of the loop oscillates. Then increase I until oscillation stops. Finally, increase D until the loop is acceptably quick to reach its reference. A fast PID loop tuning usually overshoots slightly to reach the set point more quickly; however, some systems cannot accept overshoot.
de: Wenn das System am Netz bleiben muss, besteht eine Abstimmungsmethode darin, zunächst die Werte für I und D auf Null zu setzen. Erhöhen Sie den P-Wert, bis der Ausgang der Schleife schwingt. Dann erhöhen Sie I, bis die Oszillation aufhört. Schließlich erhöhen Sie D, bis die Schleife ihren Sollwert akzeptabel schnell erreicht. Bei einer schnellen PID-Schleifenabstimmung kommt es in der Regel zu einem leichten Überschwingen, um den Sollwert schneller zu erreichen; einige Systeme können jedoch kein Überschwingen akzeptieren.

note: type: Table
en: Rise Time
de: Anstiegszeit (engl. rise time)

note: type: Table
en: Overshoot
de: Überschwingen

note: type: Table
en: Settling Time
de: Eingewöhnungszeit (engl. settling time)

note: type: Table
en: Steady State Error
de: Fehler im eingeschwungenen Zustand

note: type: Table
en: Decrease
de: Verringerung

note: type: Table
en: Increase
de: Erhöhung

note: type: Table
en: Small Change
de: Kleine Veränderung

note: type: Table
en: Eliminate
de: Eliminieren

note: type: Plain text
en: Effects of increasing parameters
de: Auswirkungen steigender Parameter

note: type: Block title
en: Ziegler-Nichols method
de: Ziegler-Nichols-Verfahren

note: type: Plain text
en: Another tuning method is formally known as the 'Ziegler-Nichols method', introduced by John G. Ziegler and Nathaniel B. Nichols footnote:[Introduced in the 1942 paper Optimum Settings for Automatic Controllers, link:https://doi.org/10.1115/1.2899060[DOI 10.1115/1.2899060] also link:https://web.archive.org/web/20170918055307/http://staff.guilan.ac.ir/staff/users/chaibakhsh/fckeditor_repo/file/documents/Optimum%20Settings%20for%20Automatic%20Controllers%20(Ziegler%20and%20Nichols,%201942).pdf[available from The Internet Archive].]. It starts in the same way as the method described before: first set the I and D gains to zero and then increase the P gain and expose the loop to external interference for example knocking the motor axis to cause it to move out of equilibrium in order to determine critical gain and period of oscillation until the output of the loop starts to oscillate.  Write down the critical gain (K~c~) and the oscillation period of the output (P~c~). Then adjust the P, I and D controls as the table shows:
de: Eine weitere Abstimmungsmethode ist formal als "Ziegler-Nichols-Methode" bekannt, die von John G. Ziegler und Nathaniel B. Nichols eingeführt wurde. footnote:[Eingeführt in dem 1942 veröffentlichten Papier Optimum Settings for Automatic Controllers, link:https://doi.org/10.1115/1.2899060[DOI 10.1115/1.2899060] sowie link:https://web.archive.org/web/20170918055307/http://staff.guilan.ac.ir/staff/users/chaibakhsh/fckeditor_repo/file/documents/Optimum%20Settings%20for%20Automatic%20Controllers%20(Ziegler%20und%20Nichols,%201942).pdf[verfügbar im Internet Archive]. Sie beginnt auf die gleiche Weise wie die zuvor beschriebene Methode: Setzen Sie zunächst die I- und D-Verstärkungen auf Null, erhöhen Sie dann die P-Verstärkung und setzen Sie die Schleife externen Störeinflüssen aus, z. B. durch Stöße auf die Motorachse, um sie aus dem Gleichgewicht zu bringen.  Notieren Sie die kritische Verstärkung (K~c~) und die Schwingungsdauer des Ausgangs (P~c~). Stellen Sie dann die Regler P, I und D wie in der Tabelle angegeben ein:

note: type: Table
en: Control type
de: Steuerungstyp

note: type: Block title
en: Final Steps
de: Letzte Schritte

note: type: Plain text
en: After tuning the axis check the following error with Halscope to make sure it is within your machine requirements. More information on Halscope is in the HAL User manual.
de: Nach der Einstellung der Achse überprüfen Sie den folgenden Fehler mit Halscope, um sicherzustellen, dass er den Anforderungen Ihrer Maschine entspricht. Weitere Informationen zu Halscope finden Sie in der HAL-Bedienungsanleitung.

note: type: Title =
en: Switchable Kinematics (switchkins)
de: Schaltbare Kinematik (switchkins)

note: type: Plain text
en: A number of kinematics modules support the switching of kinematics calculations. These modules support a default kinematics method (type0), a second built-in method (type1), and (optionally) a user-provided kinematics method (type2).  Identity kinematics are typically used for the type1 method.
de: Eine Reihe von Kinematikmodulen unterstützt die Umschaltung von Kinematikberechnungen. Diese Module unterstützen eine Standard-Kinematikmethode (Typ0), eine zweite eingebaute Methode (Typ1) und (optional) eine vom Benutzer bereitgestellte Kinematikmethode (Typ2).  Für die Typ1-Methode wird in der Regel die Identitätskinematik verwendet.

note: type: Plain text
en: The switchkins functionality can be used for machines where post-homing joint control is needed during setup or to avoid movement near singularities from G-code. Such machines use specific kinematics calculations for most operations but can be switched to identity kinematics for control of individual joints after homing.
de: Die Switchkins-Funktionalität kann für Maschinen verwendet werden, bei denen eine Steuerung der Gelenke nach der Referenzfahrt während des Einrichtens erforderlich ist oder um Bewegungen in der Nähe von Singularitäten aus dem G-Code zu vermeiden. Solche Maschinen verwenden für die meisten Vorgänge spezifische Kinematikberechnungen, können aber für die Steuerung einzelner Gelenke nach der Referenzfahrt auf Identitätskinematik umgestellt werden.

note: type: Plain text
en: The kinematics type is selected by a motion module HAL pin that can be updated from a G-code program or by interactive MDI commands. The halui provisions for activating MDI commands can be used to allow buttons to select the kinematics type using hardware controls or a virtual panel (PyVCP, GladeVCP, etc.).
de: Die Auswahl des Kinematik-Typs erfolgt über einen Motion-Modul-HAL-Pin, der über ein G-Code-Programm oder über interaktive MDI-Befehle aktualisiert werden kann. Die halui-Bestimmungen für die Aktivierung von MDI-Befehlen können verwendet werden, um die Auswahl des Kinematik-Typs über Hardware-Steuerungen oder ein virtuelles Panel (PyVCP, GladeVCP, etc.) zu ermöglichen.

note: type: Plain text
en: When a kinematics type is changed, the G-code must also issue commands to *force synchronization* of the interpreter and motion parts of LinuxCNC. Typically, a HAL pin 'read' command (M66 E0 L0) is used immediately after altering the controlling HAL pin to force synchronization.
de: Wenn eine Kinematik Typ geändert wird, muss der G-Code auch Befehle zu *zwingen Synchronisation* des Interpreters und Bewegung Teile von LinuxCNC. Typischerweise wird ein HAL-Pin 'read' Befehl (M66 E0 L0) unmittelbar nach der Änderung des steuernden HAL-Pins verwendet, um die Synchronisation zu erzwingen.

note: type: Title ==
en: Switchable Kinematic Modules
de: Schaltbare Kinematik-Module

note: type: Plain text
en: The following kinematics modules support switchable kinematics:
de: Die folgenden Kinematikmodule unterstützen umschaltbare Kinematiken:

note: type: Title ===
en: Identity letter assignments
de: Identitätsbrief-Zuweisungen

note: type: Plain text
en: When using an *identity* kinematics type, the module parameter 'coordinates' can be used to assign letters to joints in arbitrary order from the set of allowed coordinate letters.  Examples:
de: Bei Verwendung eines *identischen* Kinematiktyps kann der Modulparameter 'Koordinaten' verwendet werden, um den Gelenken Buchstaben in beliebiger Reihenfolge aus der Menge der zulässigen Koordinatenbuchstaben zuzuweisen.  Beispiele:

note: type: delimited block -
en: # conventional identity ordering: joint0==x, joint1==y, ...
    KINEMATICS = genhexkins coordinates=xyzabc
de: # konventionelle Identitätsanordnung: joint0==x, joint1==y, ...
    KINEMATICS = genhexkins coordinates=xyzabc

note: type: delimited block -
en: # custom identity ordering: joint0==c, joint1==b, ...
    # KINEMATICS = genhexkins coordinates=cbazyx
de: # custom identity ordering: joint0==c, joint1==b, ...
    KINEMATICS = genhexkins coordinates=cbazyx

note: type: Plain text
en: If the coordinates= parameter is omitted, the default joint-letter identity assignments are joint0==x,joint1=y,...
de: Wenn der Parameter coordinates= weggelassen wird, lauten die Standard-Zuordnungen der Gelenkbuchstaben joint0==x,joint1=y,....

note: type: Plain text
en: The joint assignments provided for *identity* kinematics when using the coordinates parameter are identical to those provided for the trivkins module.  However, duplication of axis letters to assign multiple joints for a coordinate letter is not generally applicable for serial or parallel kinematics (like genserkins, pumakins, genhexkins, etc.)  where there is no simple relationship between joints and coordinates.
de: Die Gelenkzuweisungen für *Identitäts*-Kinematiken bei Verwendung des Koordinatenparameters sind identisch mit denen für das Modul trivkins.  Die Duplizierung von Achsenbuchstaben zur Zuweisung mehrerer Gelenke für einen Koordinatenbuchstaben ist jedoch im Allgemeinen nicht für serielle oder parallele Kinematiken (wie genserkins, pumakins, genhexkins usw.) geeignet, bei denen es keine einfache Beziehung zwischen Gelenken und Koordinaten gibt.

note: type: Plain text
en: Duplication of axis coordinate letters is supported in the kinematics modules xyzac-trt-kins, xyzbc-trt-kins, and 5axiskins (bridgemill).  Typical applications for duplicate coordinates are gantry machines where two motors (joints)  are used for the transverse axis.
de: Die Duplizierung von Achskoordinatenbuchstaben wird in den Kinematikmodulen xyzac-trt-kins, xyzbc-trt-kins und 5axiskins (bridgemill) unterstützt.  Typische Anwendungen für doppelte Koordinaten sind Gantry-Maschinen, bei denen zwei Motoren (Gelenke) für die Querachse verwendet werden.

note: type: Title ===
en: Backwards compatibility
de: Rückwärtskompatibilität

note: type: Plain text
en: Switchable kinematics initialize with motion.switchkins-type==0 implementing their eponymous kinematics method.  If the the motion.switchkins-type pin is not connected -- as in legacy configurations -- only the default kinematics type is available.
de: Schaltbare Kinematiken werden mit motion.switchkins-type==0 initialisiert und implementieren ihre gleichnamige Kinematikmethode.  Wenn der motion.switchkins-type-Pin nicht angeschlossen ist - wie in Legacy-Konfigurationen - ist nur der Standard-Kinematik-Typ verfügbar.

note: type: Plain text
en: Switchkins functionality is enabled by the pin *motion.switchkins-type*.  Typically, this pin is sourced by an analog output pin like motion.analog-out-03 so that it can be set by M68 commands.  Example:
de: Die Switchkins-Funktionalität wird durch den Pin *motion.switchkins-type* aktiviert.  Normalerweise wird dieser Pin von einem analogen Ausgangspin wie motion.analog-out-03 gespeist, so dass er durch M68-Befehle gesetzt werden kann.  Beispiel:

note: type: Title ===
en: G-/M-code commands
de: G-/M-Code-Befehle

note: type: Plain text
en: Kinstype selection is managed using G-code sequences like:
de: Die Auswahl des Kinstype wird verwaltet über G-Code-Sequenzen wie:

note: type: delimited block -
en: ...
    M68 E3 Q1 ;update analog-out-03 to select kinstype 1
    M66 E0 L0 ;sync interp-motion
    ...
    ...       ;user G-code
    ...
    M68 E3 Q0 ;update analog-out-03 to select kinstype 0
    M66 E0 L0 ;sync interp-motion
    ...
de: ...
    M68 E3 Q1 ;analog-out-03 aktualisieren, um Kinstype 1 auszuwählen
    M66 E0 L0 ;Sync Interp-Bewegung
    ...
    ... ;Benutzer G-Code
    ...
    M68 E3 Q0 ;analog-out-03 aktualisieren, um Kinstype 0 zu wählen
    M66 E0 L0 ;Sync Interp-Bewegung
    ...

note: type: Plain text
en: An M66 'wait-on-input' command updates the #5399 variable.  If the current value of this variable is needed for subsequent purposes, it should be copied to an additional variable before invoking M66.
de: Ein M66-Befehl 'wait-on-input' aktualisiert die Variable #5399.  Wenn der aktuelle Wert dieser Variablen für spätere Zwecke benötigt wird, sollte er vor dem Aufruf von M66 in eine zusätzliche Variable kopiert werden.

note: type: Plain text
en: Suggested codes (as used in sim configs) are:
de: Vorgeschlagene Codes (wie in den Sim-Konfigurationen verwendet) sind:

note: type: Plain text
en: M128 Select kinstype 0 (startup default kinematics)
de: M128 Kintyp 0 auswählen (Standardkinematik beim Start)

note: type: Plain text
en: M129 Select kinstype 1 (typically identity kinematics)
de: M129 Kintyp 1 auswählen (typischerweise Identitätskinematik)

note: type: Plain text
en: M130 Select kinstype 2 (user-provided kinematics)
de: M130 Kinstype 2 auswählen (benutzerdefinierte Kinematik)

note: type: Plain text
en: M428 Select kinstype 0 (startup default kinematics)
de: M428 Kintyp 0 auswählen (Standardkinematik beim Start)

note: type: Plain text
en: M429 Select kinstype 1 (typically identity kinematics)
de: M429 Kinstype 1 auswählen (typischerweise Identitätskinematik)

note: type: Plain text
en: M430 Select kinstype 2 (user-provided kinematics)
de: M430 Kinstype 2 auswählen (benutzerdefinierte Kinematik)

note: type: Plain text
en: LinuxCNC trajectory planning uses limits for position (min,max), velocity, and acceleration for each applicable coordinate letter specified in the configuration INI file.  Example for letter L (in the set 'XYZABCUVW'):
de: LinuxCNC Bahnplanung verwendet Grenzen für die Position (min, max), Geschwindigkeit und Beschleunigung für jede anwendbare Koordinaten-Buchstaben in der Konfiguration INI-Datei angegeben.  Beispiel für den Buchstaben L (im Satz 'XYZABCUVW'):

note: type: Plain text
en: The INI file limits specified apply to the type 0 default kinematics type that is activated at startup.  These limits may *not* be applicable when switching to alternative kinematics.  However, since an interpreter-motion synchronization is required when switching kinematics, INI-HAL pins can be used to setup limits for a pending kinematics type.
de: Die angegebenen INI-Datei-Grenzwerte gelten für die Standardkinematik vom Typ 0, die beim Start aktiviert wird.  Beim Umschalten auf eine andere Kinematik sind diese Grenzen möglicherweise *nicht* anwendbar.  Da jedoch beim Umschalten der Kinematik eine Synchronisierung zwischen Interpreter und Bewegung erforderlich ist, können INI-HAL-Pins verwendet werden, um Grenzwerte für einen anstehenden Kinematik-Typ festzulegen.

note: type: Plain text
en: INI-HAL pins are typically not recognized during a G-code program unless a synchronization (queue-buster) command is issued.  See the milltask manpage for more information ($ man milltask)
de: INI-HAL-Pins werden während eines G-Code-Programms normalerweise nicht erkannt, es sei denn, es wird ein Synchronisationsbefehl (Queue-Buster) ausgegeben.  Weitere Informationen finden Sie in der milltask-Manpage ($ man milltask)

note: type: Plain text
en: The relevant INI-HAL pins for a joint number (N) are:
de: Die für eine gemeinsame Nummer (N) relevanten INI-HAL-Pins sind:

note: type: Plain text
en: In general, there are no fixed mappings between joint numbers and axis coordinate letters.  There may be specific mappings for some kinematics modules especially those that implement identity kinematics (trivkins).  See the kins man page for more information ($ man kins)
de: Im Allgemeinen gibt es keine festen Zuordnungen zwischen Gelenknummern und Achsenkoordinatenbuchstaben.  Für einige Kinematikmodule, insbesondere solche, die Identitätskinematik implementieren (trivkins), kann es spezifische Zuordnungen geben.  Weitere Informationen finden Sie in der kins man page ($ man kins)

note: type: Plain text
en: A user-provided M-code can alter any or all of the axis coordinate limits prior to changing the motion.switchkins-type pin and synchronizing the interpreter and motionparts of LinuxCNC.  As an example, a bash script invoking halcmd can be 'hardcoded' to set any number of HAL pins:
de: Ein vom Benutzer bereitgestellter M-code kann eine oder alle der Achsenkoordinaten Grenzen vor der Änderung der motion.switchkins-type Pin und die Synchronisierung der Interpreter und Motion-Teile von LinuxCNC ändern.  Als Beispiel kann ein Bash-Skript, das halcmd aufruft, "hardcoded" werden, um eine beliebige Anzahl von HAL-Pins zu setzen:

note: type: Plain text
en: Scripts like this can be invoked as a user M-code and used *prior* to the kins switching M-code that updates the motion.switchkins-type HAL pin and forces an interp-motion sync.  Typically, separate scripts would be used for each kinstype (0,1,2).
de: Skripte wie dieses können als Benutzer-M-Code aufgerufen und *vor* dem Kinstype-Switching-Mcode verwendet werden, der den motion.switchkins-type HAL Pin aktualisiert und einen Interp-Motion-Sync erzwingt.  Normalerweise würden für jeden Kinstype (0,1,2) separate Skripte verwendet werden.

note: type: Plain text
en: When identity kinematics are provided as a means to control individual joints, it may be convenient to set or restore limits as specified in the system INI file.  For example, a robot starts with a complex (non-identity) kinematics (type0) after homing.  The system is configured so that it can be switched to identity kinematics (type1) in order to manipulate individual joints using the conventional letters from the set 'XYZABCUVW'.  The INI file settings ([AXIS_L]) are *not* applicable when operating with identity (type1) kinematics.  To address this use case, the user M-code scripts can be designed as follows:
de: Wenn Identitätskinematiken als Mittel zur Steuerung einzelner Gelenke vorgesehen sind, kann es sinnvoll sein, die in der System-INI-Datei angegebenen Grenzwerte festzulegen oder wiederherzustellen.  Ein Beispiel: Ein Roboter startet nach der Referenzfahrt mit einer komplexen (nicht identischen) Kinematik (Typ 0).  Das System ist so konfiguriert, dass es auf eine Identitätskinematik (Typ1) umgeschaltet werden kann, um einzelne Gelenke mit den herkömmlichen Buchstaben aus dem Satz 'XYZABCUVW' zu manipulieren.  Die Einstellungen in der INI-Datei ([AXIS_L]) sind beim Betrieb mit Identitätskinematik (Typ1) *nicht* anwendbar.  Um diesem Anwendungsfall gerecht zu werden, können die Benutzer-M-code-Skripte wie folgt gestaltet werden:

note: type: Plain text
en: *M129* (Switch to identity type1)
de: *M129* (Umschalten auf Identitätstyp1)

note: type: Plain text
en: read and parse INI file
de: INI-Datei lesen und auswerten ("parsen")

note: type: Plain text
en: HAL: setp the INI-HAL limit pins for each axis letter ([AXIS_L])  according to the 'identity-referenced' joint number INI file setting ([JOINT_N])
de: hal: setzt die INI-HAL Grenzstifte für jeden Achsenbuchstaben ([AXIS_L]) entsprechend der 'identitätsbezogenen' Gelenknummer INI-Datei ([JOINT_N])

note: type: Plain text
en: MDI: execute a syncing G-code (M66E0L0)
de: MDI: Ausführen eines Synchronisations-G-Codes (M66E0L0)

note: type: Plain text
en: *M128* (restore robot default kinematics type 0)
de: *M128* (Wiederherstellung der Standardkinematik des Roboters, Typ 0)

note: type: Plain text
en: HAL: setp the INI-HAL limit pins for each axis letter ([AXIS_L])  according to the appropriate INI file setting ([AXIS_L])
de: HAl: Setzen der INI-HAL Limit Pins für jeden Achsenbuchstaben ([AXIS_L]) entsprechend der entsprechenden INI-Datei Einstellung ([AXIS_L])

note: type: Plain text
en: The vismach simulation configurations for a puma robot demonstrate M-code scripts (M128,M129,M130) for this example use case.
de: Die Vismach-Simulationskonfigurationen für einen Puma-Roboter demonstrieren die M-Code-Skripte (M128, M129, M130) für diesen Beispielanwendungsfall.

note: type: Title ===
en: Offset considerations
de: Überlegungen zum Offset

note: type: Plain text
en: Like INI file limit settings, coordinate system offsets (G92, G10L2, G10L20, G43, etc) are generally applicable only for the type 0 default startup kinematics type.  When switching kinematics types, it may be *important* to either reset all offsets prior to switching or update offsets based on system-specific requirements.
de: Wie die Limit Einstellungen in der INI-Datei gelten auch die Koordinatensystem-Offsets (G92, G10L2, G10L20, G43 usw.) im Allgemeinen nur für die Standard-Startkinematik vom Typ 0.  Beim Wechsel des Kinematik-Typs kann es *wichtig* sein, entweder alle Offsets vor dem Wechsel zurückzusetzen oder die Offsets entsprechend den systemspezifischen Anforderungen zu aktualisieren.

note: type: Title ==
en: Simulation configs
de: Simulationskonfigurationen

note: type: Plain text
en: Simulation configs (requiring no hardware) are provided with illustrative vismach displays in subdirectories of configs/sim/axis/vismach/ .
de: Simulationskonfigurationen (die keine Hardware erfordern) werden mit illustrativen Vismach-Anzeigen in Unterverzeichnissen von configs/sim/axis/vismach/ bereitgestellt.

note: type: Title ==
en: User kinematics provisions
de: Kinematische Bestimmungen des Benutzers

note: type: Plain text
en: Custom kinematics can be coded and tested on Run-In-Place ('RIP')  builds.  A template file src/emc/kinematics/userkfuncs.c is provided in the distribution.  This file can be copied/renamed to a user directory and edited to supply custom kinematics with kinstype==2.
de: Benutzerdefinierte Kinematiken können auf Run-In-Place ("RIP") Builds kodiert und getestet werden.  Eine Vorlagendatei src/emc/kinematics/userkfuncs.c ist in der Distribution enthalten.  Diese Datei kann in ein Benutzerverzeichnis kopiert/umbenannt und bearbeitet werden, um benutzerdefinierte Kinematik mit kinstype==2 bereitzustellen.

note: type: Plain text
en: The user custom kinematics file can be compiled from out-of-tree source locations for rt-preempt implementations or by replacing the in-tree template file (src/emc/kinematics/userkfuncs.c) for rtai systems.
de: Die benutzerdefinierte Kinematikdatei kann bei rt-preempt-Implementierungen aus den Out-of-Tree-Quellen kompiliert werden oder bei rtai-Systemen durch Ersetzen der In-Tree-Vorlagendatei (src/emc/kinematics/userkfuncs.c).

note: type: Plain text
en: Preempt-rt make example:
de: Preempt-rt make Beispiel:

note: type: Title ==
en: Warnings
de: Warnungen

note: type: Plain text
en: Unexpected behavior can result if a G-code program is inadvertently started with an incompatible kinematics type.  Unwanted behavior can be circumvented in G-code programs by:
de: Unerwartetes Verhalten kann auftreten, wenn ein G-Code-Programm versehentlich mit einem inkompatiblen Kinematik-Typ gestartet wird.  Unerwünschtes Verhalten kann in G-Code-Programmen umgangen werden, indem:

note: type: Plain text
en: Connecting appropriate kinstype.is.N HAL pins to digital input pins (like motion.digital-in-0m).
de: Anschluss geeigneter kinstype.is.N HAL-Pins an digitale Eingangspins (wie motion.digital-in-0m).

note: type: Plain text
en: Reading the digital input pin (M66 E0 Pm) at the start of the G-code program
de: Auslesen des digitalen Eingangspins (M66 E0 Pm) beim Start des G-Code-Programms

note: type: Plain text
en: Aborting (M2) the G-code program with a message (DEBUG, problem_message)  if the kinstype is not suitable.
de: Abbruch (M2) des G-Code-Programms mit einer Meldung (DEBUG, problem_message), wenn der Kintyp nicht geeignet ist.

note: type: Plain text
en: When using jogging facilities or MDI commands interactively, operator caution is required.  Guis should include indicators to display the current kinematics type.
de: Bei der interaktiven Verwendung von Jogging-Einrichtungen oder MDI-Befehlen ist Vorsicht geboten.  Leitfäden sollten Anzeigen enthalten, die den aktuellen Kinematik-Typ anzeigen.

note: type: Plain text
en: Switching kinematics can cause substantial operational changes requiring careful design, testing, and training for deployment.  The management of coordinate offsets, tool compensation, and INI file limits may require complicated and non-standard operating protocols.
de: Die Umstellung auf eine andere Kinematik kann erhebliche betriebliche Veränderungen mit sich bringen, die eine sorgfältige Planung, Prüfung und Schulung für den Einsatz erfordern.  Die Verwaltung von Koordinatenversatz, Werkzeugkompensation und INI-Datei Limits kann komplizierte und nicht standardisierte Betriebsprotokolle erfordern.

note: type: Plain text
en: Kinematic modules providing switchkins functionality are linked to the switchkins.o object (switchkins.c) that provides the module 'main' program (rtapi_app_main()) and related functions.  This 'main' program reads (optional) module command-line parameters (coordinates, sparm) and passes them to the module-provided function switchkinsSetup().
de: Kinematikmodule, die switchkins-Funktionen bereitstellen, sind mit dem Objekt switchkins.o (switchkins.c) verknüpft, welches das Hauptprogramm des Moduls (rtapi_app_main()) und zugehörige Funktionen bereitstellt.  Dieses Hauptprogramm liest die (optionalen) Kommandozeilenparameter des Moduls (Koordinaten, sparm) und übergibt sie an die vom Modul bereitgestellte Funktion switchkinsSetup().

note: type: Plain text
en: The switchkinsSetup() function identifies kinstype-specific setup routines and the functions for forward an inverse calculation for each kinstype (0,1,2) and sets a number of configuration settings.
de: Die Funktion switchkinsSetup() identifiziert die kinstype-spezifischen Setup-Routinen und die Funktionen für die Vorwärts- und Rückwärtsberechnung für jeden Kinstype (0,1,2) und setzt eine Reihe von Konfigurationseinstellungen.

note: type: Plain text
en: After calling switchkinsSetup(), rtapi_app_main() checks the supplied parameters, creates a HAL component, and then invokes the setup routine identified for each kinstype (0,1,2).
de: Nach dem Aufruf von switchkinsSetup() prüft rtapi_app_main() die übergebenen Parameter, erstellt eine HAL Komponente und ruft dann die für jeden Kinstype (0,1,2) identifizierte Setup-Routine auf.

note: type: Plain text
en: Each kinstype (0,1,2) setup routine can (optionally) create HAL pins and set them to default values.  When all setup routines finish, rtapi_app_main() issues hal_ready() for the component to complete creation of the module.
de: Jede Kinstype (0,1,2) Setup-Routine kann (optional) HAL Pins erzeugen und auf Standardwerte setzen.  Wenn alle Setup-Routinen abgeschlossen sind, gibt rtapi_app_main() hal_ready() für die Komponente aus, um die Erstellung des Moduls abzuschließen.

note: type: Title =
en: Stepper Tuning
de: Stepper-Abstimmung

note: type: Title ==
en: Getting the most out of Software Stepping
de: Das Beste aus Software Stepping herausholen

note: type: Plain text
en: Generating step pulses in software has one very big advantage - it's free. Just about every PC has a parallel port that is capable of outputting step pulses that are generated by the software. However, software step pulses also have some disadvantages:
de: Die Erzeugung von Schrittimpulsen in der Software hat einen sehr großen Vorteil - sie ist kostenlos. Nahezu jeder PC verfügt über eine parallele Schnittstelle, die in der Lage ist, die von der Software erzeugten Schrittimpulse auszugeben. Die Software-Schrittimpulse haben jedoch auch einige Nachteile:

note: type: Plain text
en: This chapter has some steps that can help you get the best results from software generated steps.
de: In diesem Kapitel finden Sie einige Schritte, die Ihnen dabei helfen können, die besten Ergebnisse aus softwaregenerierten Schritten zu erzielen.

note: type: Title ===
en: Run a Latency Test
de: Führen Sie einen Latenztest durch

note: type: Plain text
en: The CPU is not the only factor determining latency. Motherboards, graphics cards, USB ports and many other things can degrade it. The best way to know what to expect from a PC is to run the RT latency tests.
de: Die CPU ist nicht der einzige Faktor, der die Latenzzeit bestimmt. Motherboards, Grafikkarten, USB-Anschlüsse und viele andere Dinge können die Latenz beeinträchtigen. Der beste Weg, um zu wissen, was man von einem PC erwarten kann, ist, die RT-Latenztests durchzuführen.

note: type: Plain text
en: Run the latency test as described in the <<sec:latency-test,Latency Test>> chapter.
de: Führen Sie den Latenztest wie im Kapitel <<sec:latency-test,Latenz-Test>> beschrieben durch.

note: type: Plain text
en: While the test is running, you should 'abuse' the computer. Move windows around on the screen. Surf the web. Copy some large files around on the disk. Play some music. Run an OpenGL program such as glxgears. The idea is to put the PC through its paces while the latency test checks to see what the worst case numbers are.
de: Während der Test läuft, sollten Sie den Computer "missbrauchen". Bewegen Sie die Fenster auf dem Bildschirm. Surfen Sie im Internet. Kopieren Sie einige große Dateien auf der Festplatte. Spielen Sie etwas Musik ab. Führen Sie ein OpenGL-Programm wie z. B. glxgears aus. Die Idee ist, den PC auf Herz und Nieren zu prüfen, während der Latenztest den schlimmsten Fall ermittelt.

note: type: Plain text
en: The last number in the column labeled 'Max Jitter' is the most important.  Write it down - you will need it later. It contains the worst latency measurement during the entire run of the test. In the example above, that is 6693 nano-seconds, or 6,69 micro-seconds, which is excellent.  However the example only ran for a few seconds (it prints one line every second). You should run the test for at least several minutes; sometimes the worst case latency doesn't happen very often, or only happens when you do some particular action. I had one Intel motherboard that worked pretty well most of the time, but every 64 seconds it had a very bad 300 µs latency.  Fortunately that is fixable, see http://wiki.linuxcnc.org/cgi-bin/wiki.pl?FixingSMIIssues[Fixing SMI issues on the LinuxCNC Wiki]
de: Die letzte Zahl in der Spalte "Max Jitter" ist die wichtigste.  Schreiben Sie sie auf - Sie werden sie später brauchen. Sie enthält die schlechteste Latenzmessung während des gesamten Testlaufs. Im obigen Beispiel sind das 6693 Nanosekunden, also 6,69 Mikrosekunden, was hervorragend ist.  Allerdings lief das Beispiel nur einige Sekunden lang (es wird jede Sekunde eine Zeile gedruckt). Sie sollten den Test mindestens mehrere Minuten lang durchführen; manchmal tritt die Latenz im schlimmsten Fall nicht sehr oft auf oder nur, wenn Sie eine bestimmte Aktion durchführen. Ich hatte eine Intel-Hauptplatine, welche die meiste Zeit recht gut funktionierte, aber alle 64 Sekunden eine sehr schlechte Latenz von 300 us hatte.  Glücklicherweise ist das behebbar, siehe http://wiki.linuxcnc.org/cgi-bin/wiki.pl?FixingSMIIssues[Fixing SMI issues on the LinuxCNC Wiki]

note: type: Plain text
en: So, what do the results mean? If your 'Max Jitter' number is less than about 15-20 microseconds (15000-20000 nanoseconds), the computer should give very nice results with software stepping. If the max latency is more like 30-50 microseconds, you can still get good results, but your maximum step rate might be a little disappointing, especially if you use microstepping or have very fine pitch leadscrews. If the numbers are 100 µs or more (100,000 nanoseconds), then the PC is not a good candidate for software stepping. Numbers over 1 millisecond (1,000,000 nanoseconds) mean the PC is not a good candidate for LinuxCNC, regardless of whether you use software stepping or not.
de: Was bedeuten also die Ergebnisse? Wenn Ihre "Max Jitter"-Zahl weniger als 15-20 Mikrosekunden (15000-20000 Nanosekunden) beträgt, sollte der Computer mit Software-Stepping sehr gute Ergebnisse liefern. Wenn die maximale Latenzzeit eher bei 30-50 Mikrosekunden liegt, können Sie immer noch gute Ergebnisse erzielen, aber Ihre maximale Schrittrate könnte etwas enttäuschend sein, insbesondere wenn Sie Mikroschrittverfahren verwenden oder sehr feine Spindelsteigungen haben. Wenn die Zahlen 100 µs oder mehr (100.000 Nanosekunden) betragen, ist der PC kein guter Kandidat für Software-Stepping. Zahlen über 1 Millisekunde (1.000.000 Nanosekunden) bedeuten, dass der PC ist kein guter Kandidat für LinuxCNC, unabhängig davon, ob Sie Software-Stepping verwenden oder nicht.

note: type: Plain text
en: Note that if you get high numbers, there may be ways to improve them.  For example, one PC had very bad latency (several milliseconds) when using the onboard video. But a $5 used video card solved the problem - LinuxCNC does not require bleeding edge hardware.
de: Beachten Sie, dass, wenn Sie hohe Zahlen erhalten, es Möglichkeiten geben kann, sie zu verbessern.  Zum Beispiel hatte ein PC eine sehr schlechte Latenz (mehrere Millisekunden), wenn er das Onboard-Video verwendete. Aber eine $ 5 gebrauchte Grafikkarte löste das Problem - LinuxCNC benötigt keine modernste Hardware.

note: type: Title ===
en: Figure out what your drives expect
de: Finden Sie heraus, was Ihre Antriebe erwarten

note: type: Plain text
en: Different brands of stepper drives have different timing requirements on their step and direction inputs. So you need to dig out (or Google for) the data sheet that has your drive's specs.
de: Verschiedene Marken von Schrittmotorantrieben haben unterschiedliche Zeitanforderungen an ihre Schritt- und Richtungseingänge. Sie müssen also das Datenblatt mit den technischen Daten Ihres Antriebs heraussuchen (oder danach googeln).

note: type: Plain text
en: From the Gecko G202 manual:
de: Aus dem Handbuch des Gecko G202:

note: type: delimited block .
en: Step Frequency: 0 to 200 kHz
    Step Pulse "0" Time: 0.5 µs min (Step on falling edge)
    Step Pulse "1" Time: 4.5 µs min
    Direction Setup: 1 µs min (20 µs min hold time after Step edge)
de: Schrittfrequenz: 0 bis 200 kHz
    Schrittimpuls "0" Zeit: 0.5µs min (Schritt bei fallender Flanke)
    Schrittimpuls "1" Zeit: 4.5 µs min
    Richtung Setup: 1 µs min (20 µs min Haltezeit nach Schrittflanke)

note: type: Plain text
en: From the Gecko G203V manual:
de: Aus dem Gecko G203V Handbuch:

note: type: delimited block .
en: Step Frequency: 0 to 333 kHz
    Step Pulse "0" Time: 2.0 µs min (Step on rising edge)
    Step Pulse "1" Time: 1.0 µs min
de: Schrittfrequenz: 0 bis 333 kHz
    Schrittimpuls "0" Zeit: 2.0 µs min (Schritt bei steigender Flanke)
    Schrittimpuls "1" Zeit: 1.0 µs min

note: type: Plain text
en: From the Xylotex datasheet:
de: Aus dem Xylotex-Datenblatt:

note: type: delimited block .
en: Minimum DIR setup time before rising edge of STEP Pulse 200 ns Minimum
    DIR hold time after rising edge of STEP pulse 200 ns
    Minimum STEP pulse high time 2.0 µs
    Minimum STEP pulse low time 1.0 µs
    Step happens on rising edge
de: Minimale DIR-Setup-Zeit vor steigender Flanke des STEP-Impulses 200 ns Minimale
    DIR-Haltezeit nach steigender Flanke des STEP-Pulses 200 ns
    Minimale STEP-Impuls-Hochzeit 2,0 µs
    Minimale STEP-Impuls-Low-Zeit 1,0 µs
    Schritt erfolgt bei steigender Flanke

note: type: Plain text
en: Once you find the numbers, write them down too - you need them in the next step.
de: Wenn Sie die Zahlen gefunden haben, notieren Sie sie ebenfalls - Sie brauchen sie im nächsten Schritt.

note: type: Title ===
en: Choose your BASE_PERIOD
de: Wählen Sie Ihren BASE_PERIOD

note: type: Plain text
en: BASE_PERIOD is the 'heartbeat' of your LinuxCNC computer. Every period, the software step generator decides if it is time for another step pulse. A shorter period will allow you to generate more pulses per second, within limits. But if you go too short, your computer will spend so much time generating step pulses that everything else will slow to a crawl, or maybe even lock up. Latency and stepper drive requirements affect the shortest period you can use, as we will see in a minute.
de: BASE_PERIOD ist der 'Herzschlag' Ihres LinuxCNC Computers. Jede Periode, die Software-Schritt-Generator entscheidet, ob es Zeit für einen weiteren Schritt Impuls ist. Eine kürzere Periode ermöglicht es Ihnen, mehr Impulse pro Sekunde, innerhalb von Grenzen zu erzeugen. Aber wenn Sie zu kurz gehen, wird Ihr Computer so viel Zeit damit verbringen, Schrittimpulse zu erzeugen, dass alles andere zu einem Kriechgang verlangsamen wird, oder vielleicht sogar sperren. Die Latenzzeit und die Anforderungen an die Schrittmotorsteuerung beeinflussen die kürzeste Periode, die Sie verwenden können, wie wir gleich sehen werden.

note: type: Plain text
en: Let's look at the Gecko example first. The G202 can handle step pulses that go low for 0.5 µs and high for 4.5 µs, it needs the direction pin to be stable 1 µs before the falling edge, and remain stable for 20 µs after the falling edge. The longest timing requirement is the 20 µs hold time.  A simple approach would be to set the period at 20 µs. That means that all changes on the STEP and DIR lines are separated by 20 µs. All is good, right?
de: Schauen wir uns zuerst das Gecko-Beispiel an. Der G202 kann Schrittimpulse verarbeiten, die 0,5 µs lang auf low und 4,5 µs lang auf high gehen. Der Richtungs-Pin muss 1 µs vor der fallenden Flanke stabil sein und nach der fallenden Flanke 20 µs lang stabil bleiben. Die längste Zeitanforderung ist die Haltezeit von 20 µs.  Ein einfacher Ansatz wäre, die Periode auf 20 µs zu setzen. Das bedeutet, dass alle Änderungen an den STEP- und DIR-Leitungen durch 20 µs getrennt sind. Alles ist gut, oder?

note: type: Plain text
en: Wrong! If there was ZERO latency, then all edges would be separated by 20 µs, and everything would be fine. But all computers have some latency. Latency means lateness. If the computer has 11 µs of latency, that means sometimes the software runs as much as 11 µs later than it was supposed to. If one run of the software is 11 µs late, and the next one is on time, the delay from the first to the second is only 9 µs. If the first one generated a step pulse, and the second one changed the direction bit, you just violated the 20 µs G202 hold time requirement.  That means your drive might have taken a step in the wrong direction, and your part will be the wrong size.
de: Falsch! Wenn es NULL Latenz gäbe, dann wären alle Kanten durch 20 µs getrennt, und alles wäre in Ordnung. Aber alle Computer haben eine gewisse Latenz, d.h. mit Verzögerung. Wenn der Computer eine Latenz von 11 µs hat, bedeutet das, dass die Software manchmal 11 µs später läuft, als sie eigentlich sollte. Wenn ein Durchlauf der Software 11 µs zu spät ist und der nächste pünktlich erfolgt, beträgt die Verzögerung vom ersten zum zweiten Durchlauf nur 9 µs. Wenn der erste Durchlauf einen Schrittimpuls erzeugte und der zweite das Richtungsbit änderte, haben Sie gerade die G202-Haltezeitanforderung von 20 µs verletzt.  Das bedeutet, dass Ihr Antrieb möglicherweise einen Schritt in die falsche Richtung gemacht hat, und Ihr Teil hat die falsche Größe.

note: type: Plain text
en: The really nasty part about this problem is that it can be very very rare. Worst case latencies might only happen a few times a minute, and the odds of bad latency happening just as the motor is changing direction are low. So you get very rare errors that ruin a part every once in a while and are impossible to troubleshoot.
de: Das wirklich Unangenehme an diesem Problem ist, dass es sehr selten auftreten kann. Im schlimmsten Fall treten Latenzen nur ein paar Mal pro Minute auf, und die Wahrscheinlichkeit, dass eine schlechte Latenz genau dann auftritt, wenn der Motor die Richtung ändert, ist gering. So kommt es zu sehr seltenen Fehlern, die hin und wieder ein Werkstück ruinieren und eine Fehlerbehebung unmöglich machen.

note: type: Plain text
en: The simplest way to avoid this problem is to choose a BASE_PERIOD that is the sum of the longest timing requirement of your drive, and the worst case latency of your computer. If you are running a Gecko with a 20 µs hold time requirement, and your latency test said you have a maximum latency of 11 µs, then if you set the BASE_PERIOD to 20+11 = 31 µs (31000 nano-seconds in the ini file), you are guaranteed to meet the drive's timing requirements.
de: Der einfachste Weg, dieses Problem zu vermeiden, besteht darin, eine BASE_PERIOD zu wählen, die der Summe aus der längsten Zeitanforderung Ihres Laufwerks und der schlimmsten Latenz Ihres Computers entspricht. Wenn Sie einen Gecko mit einer Haltezeitanforderung von 20 µs betreiben und Ihr Latenztest eine maximale Latenz von 11 µs ergab, dann können Sie, wenn Sie die BASE_PERIOD auf 20+11 = 31 µs (31000 Nanosekunden in der INI-Datei) setzen, die Timing-Anforderungen des Laufwerks garantiert erfüllen.

note: type: Plain text
en: But there is a tradeoff. Making a step pulse requires at least two periods. One to start the pulse, and one to end it. Since the period is 31 µs, it takes 2x31 = 62 µs to create a step pulse. That means the maximum step rate is only 16,129 steps per second. Not so good. (But don't give up yet, we still have some tweaking to do in the next section.)
de: Aber es gibt einen Kompromiss. Für einen Stufenimpuls sind mindestens zwei Perioden erforderlich. Eine, um den Impuls zu starten, und eine, um ihn zu beenden. Da die Periode 31 µs beträgt, dauert es 2x31 = 62 µs, um einen Schrittimpuls zu erzeugen. Das bedeutet, dass die maximale Schrittfrequenz nur 16.129 Schritte pro Sekunde beträgt. Das ist nicht so gut. (Aber geben Sie noch nicht auf, wir müssen im nächsten Abschnitt noch einige Optimierungen vornehmen.)

note: type: Plain text
en: For the Xylotex, the setup and hold times are very short, 200 ns each (0.2 µs). The longest time is the 2 µs high time. If you have 11 µs latency, then you can set the BASE_PERIOD as low as 11+2=13 µs. Getting rid of the long 20 µs hold time really helps! With a period of 13 µs, a complete step takes 2x13 = 26 µs, and the maximum step rate is 38,461 steps per second!
de: Beim Xylotex sind die Setup- und Haltezeiten mit jeweils 200 ns (0,2 µs) sehr kurz. Die längste Zeit ist die 2-µs-High-Zeit. Wenn Sie eine Latenzzeit von 11 µs haben, dann können Sie die BASE_PERIOD auf 11+2=13 µs einstellen. Die lange Haltezeit von 20 µs entfällt, was sehr hilfreich ist! Bei einer Periode von 13 µs dauert ein kompletter Schritt 2x13 = 26 µs, und die maximale Schrittrate beträgt 38.461 Schritte pro Sekunde!

note: type: Plain text
en: But you can't start celebrating yet. Note that 13 µs is a very short period. If you try to run the step generator every 13 µs, there might not be enough time left to run anything else, and your computer will lock up. If you are aiming for periods of less than 25 µs, you should start at 25 µs or more, run LinuxCNC, and see how things respond. If all is well, you can gradually decrease the period. If the mouse pointer starts getting sluggish, and everything else on the PC slows down, your period is a little too short. Go back to the previous value that let the computer run smoothly.
de: Aber Sie können noch nicht mit dem Feiern anfangen. Beachten Sie, dass 13 µs ein sehr kurzer Zeitraum ist. Wenn Sie versuchen, die Schritt-Generator alle 13 µs laufen, könnte es nicht genug Zeit übrig, um etwas anderes laufen, und Ihr Computer wird einfrieren. Wenn Sie für Zeiträume von weniger als 25 µs anstreben, sollten Sie bei 25 µs oder mehr beginnen, führen Sie LinuxCNC, und sehen, wie die Dinge reagieren. Wenn alles gut ist, können Sie allmählich den Zeitraum zu verringern. Wenn der Mauszeiger beginnt immer träge, und alles andere auf dem PC verlangsamt, ist Ihr Zeitraum ein wenig zu kurz. Gehen Sie zurück zu dem vorherigen Wert, der den Computer reibungslos laufen lässt.

note: type: Plain text
en: In this case, suppose you started at 25 µs, trying to get to 13 µs, but you find that around 16 µs is the limit - any less and the computer doesn't respond very well. So you use 16 µs. With a 16 µs period and 11 µs latency, the shortest output time will be 16-11 = 5 µs. The drive only needs 2 µs, so you have some margin. Margin is good - you don't want to lose steps because you cut the timing too close.
de: Nehmen wir an, Sie haben mit 25 µs begonnen und versuchen, auf 13 µs zu kommen, aber Sie stellen fest, dass 16 µs die Grenze sind - bei weniger reagiert der Computer nicht sehr gut. Sie verwenden also 16 µs. Bei einer Periode von 16 µs und einer Latenzzeit von 11 µs ist die kürzeste Ausgabezeit 16-11 = 5 µs. Das Laufwerk braucht nur 2 µs, also haben Sie etwas Spielraum. Ein gewisser Spielraum ist gut, denn Sie wollen keine Schritte verlieren, weil Sie das Timing zu knapp gewählt haben.

note: type: Plain text
en: What is the maximum step rate? Remember, two periods to make a step.  You settled on 16 µs for the period, so a step takes 32 µs. That works out to a not bad 31,250 steps per second.
de: Was ist die maximale Schrittgeschwindigkeit? Denken Sie daran, zwei Perioden für einen Schritt.  Sie haben sich auf 16 µs für die Periode geeinigt, also dauert ein Schritt 32 µs. Das ergibt nicht schlechte 31.250 Schritte pro Sekunde.

note: type: Title ===
en: Use steplen, stepspace, dirsetup, and/or dirhold
de: Verwenden Sie steplen, stepspace, dirsetup und/oder dirhold

note: type: Plain text
en: In the last section, we got the Xylotex drive to a 16 µs period and a 31,250 step per second maximum speed. But the Gecko was stuck at 31 µs and a not-so-nice 16,129 steps per second. The Xylotex example is as good as we can make it. But the Gecko can be improved.
de: Im letzten Abschnitt haben wir das Xylotex-Laufwerk auf eine Zeitspanne von 16 µs und eine maximale Geschwindigkeit von 31.250 Schritten pro Sekunde gebracht. Aber der Gecko blieb bei 31 µs und nicht ganz so schönen 16.129 Schritten pro Sekunde stecken. Das Xylotex-Beispiel ist so gut, wie wir es machen können. Aber der Gecko kann noch verbessert werden.

note: type: Plain text
en: The problem with the G202 is the 20 µs hold time requirement. That plus the 11 µs latency is what forces us to use a slow 31 µs period. But the LinuxCNC software step generator has some parameters that let you increase the various time from one period to several. For example, if steplen is changed from 1 to 2, then it there will be two periods between the beginning and end of the step pulse. Likewise, if dirhold is changed from 1 to 3, there will be at least three periods between the step pulse and a change of the direction pin.
de: Das Problem mit dem G202 ist die erforderliche Haltezeit von 20 µs. Das plus die 11 µs Latenzzeit ist das, was uns zwingt, eine langsame 31 µs Periode zu verwenden. Aber die LinuxCNC Software-Schritt-Generator hat einige Parameter, mit denen Sie die verschiedenen Zeit von einer Periode auf mehrere zu erhöhen. Zum Beispiel, wenn steplen von 1 auf 2 geändert wird, dann wird es zwei Perioden zwischen dem Beginn und dem Ende des Schrittimpulses sein. Wenn dirhold von 1 auf 3 geändert wird, liegen mindestens drei Perioden zwischen dem Schrittimpuls und einem Wechsel des Richtungspins.

note: type: Plain text
en: If we can use dirhold to meet the 20 µs hold time requirement, then the next longest time is the 4.5 µs high time. Add the 11 µs latency to the 4.5 µs high time, and you get a minimum period of 15.5 µs. When you try 15.5 µs, you find that the computer is sluggish, so you settle on 16 µs.  If we leave dirhold at 1 (the default), then the minimum time between step and direction is the 16 µs period minus the 11 µs latency = 5 µs, which is not enough. We need another 15 µs. Since the period is 16 µs, we need one more period. So we change dirhold from 1 to 2. Now the minimum time from the end of the step pulse to the changing direction pin is 5+16=21 µs, and we don't have to worry about the Gecko stepping the wrong direction because of latency.
de: Wenn wir dirhold verwenden können, um die Anforderung von 20 µs Haltezeit zu erfüllen, dann ist die nächstlängere Zeit die 4,5 µs "high time". Addiert man die Latenzzeit von 11 µs zu der "high-time" von 4,5 µs, so erhält man eine Mindestzeit von 15,5 µs. Wenn Sie 15,5 µs ausprobieren, stellen Sie fest, dass der Computer zu träge ist, also entscheiden Sie sich für 16 µs.  Wenn wir dirhold auf 1 belassen (die Voreinstellung), dann ist die Mindestzeit zwischen Schritt und Richtung die 16 µs Periode minus die 11 µs Latenzzeit = 5 µs, was nicht ausreicht. Wir brauchen weitere 15 µs. Da die Periode 16 µs beträgt, brauchen wir eine weitere Periode. Also ändern wir dirhold von 1 auf 2. Jetzt beträgt die Mindestzeit vom Ende des Schrittimpulses bis zum Richtungswechsel 5+16=21 µs, und wir müssen uns keine Sorgen mehr machen, dass der Gecko wegen der Latenz die falsche Richtung einschlägt.

note: type: Plain text
en: If the computer has a latency of 11 µs, then a combination of a 16 µs base period, and a dirhold value of 2 ensures that we will always meet the timing requirements of the Gecko. For normal stepping (no direction change), the increased dirhold value has no effect. It takes two periods totalling 32 µs to make each step, and we have the same 31,250 step per second rate that we got with the Xylotex.
de: Wenn der Computer eine Latenzzeit von 11 µs hat, dann stellt eine Kombination aus einer Basisperiode von 16 µs und einem Dirhold-Wert von 2 sicher, dass wir die Timing-Anforderungen des Gecko immer erfüllen. Bei normalem Steppen (ohne Richtungswechsel) hat der erhöhte dirhold-Wert keine Auswirkung. Es werden zwei Perioden von insgesamt 32 µs für jeden Schritt benötigt, und wir haben die gleiche Schrittrate von 31.250 Schritten pro Sekunde wie beim Xylotex.

note: type: Plain text
en: The 11 µs latency number used in this example is very good. If you work through these examples with larger latency, like 20 or 25 µs, the top step rate for both the Xylotex and the Gecko will be lower. But the same formulas apply for calculating the optimum BASE_PERIOD, and for tweaking dirhold or other step generator parameters.
de: Die in diesem Beispiel verwendete Latenzzeit von 11 µs ist sehr gut. Wenn Sie diese Beispiele mit einer größeren Latenzzeit, z. B. 20 oder 25 µs, durcharbeiten, wird die Spitzenschrittrate sowohl für den Xylotex als auch für den Gecko niedriger sein. Es gelten jedoch dieselben Formeln für die Berechnung der optimalen BASE_PERIOD und für die Anpassung der Dirhold- oder anderer Schrittgeneratorparameter.

note: type: Title ===
en: No Guessing!
de: Nicht raten!

note: type: Plain text
en: For a fast AND reliable software based stepper system, you cannot just guess at periods and other configuration parameters. You need to make measurements on your computer, and do the math to ensure that your drives get the signals they need.
de: Um ein schnelles UND zuverlässiges softwarebasiertes Steppersystem zu erhalten, können Sie die Perioden und andere Konfigurationsparameter nicht einfach erraten. Sie müssen auf Ihrem Computer Messungen vornehmen und die Berechnungen durchführen, um sicherzustellen, dass Ihre Antriebe die benötigten Signale erhalten.

note: type: Plain text
en: To make the math easier, I've created an Open Office spreadsheet http://wiki.linuxcnc.org/uploads/StepTimingCalculator.ods[Step Timing Calculator].  You enter your latency test result and your stepper drive timing requirements and the spreadsheet calculates the optimum BASE_PERIOD.  Next, you test the period to make sure it won't slow down or lock up your PC. Finally, you enter the actual period, and the spreadsheet will tell you the stepgen parameter settings that are needed to meet your drive's timing requirements. It also calculates the maximum step rate that you will be able to generate.
de: Um die Berechnungen zu vereinfachen, habe ich eine Open Office-Tabelle http://wiki.linuxcnc.org/uploads/StepTimingCalculator.ods[Step Timing Calculator] erstellt.  Sie geben das Ergebnis Ihres Latenztests und die Anforderungen an die Schrittmotorsteuerung ein, und die Kalkulationstabelle berechnet die optimale BASE_PERIOD.  Anschließend testen Sie die Periode, um sicherzustellen, dass sie Ihren PC nicht verlangsamt oder blockiert. Schließlich geben Sie die tatsächliche Periode ein, und die Kalkulationstabelle zeigt Ihnen die Stepgen-Parametereinstellungen an, die erforderlich sind, um die Timing-Anforderungen Ihres Antriebs zu erfüllen. Es berechnet auch die maximale Schrittrate, die Sie erzeugen können.

note: type: Plain text
en: I've added a few things to the spreadsheet to calculate max speed and stepper electrical calculations.
de: Ich habe der Tabelle ein paar Dinge hinzugefügt, um die maximale Geschwindigkeit und die elektrischen Berechnungen der Stepper zu berechnen.

note: type: Title =
en: Plasma Cutting Primer for LinuxCNC Users(((Plasma Cutting Primer)))
de: Plasmaschneiden Primer für LinuxCNC Benutzer(((Plasma Cutting Primer)))

note: type: Title ==
en: What Is Plasma?
de: Was ist Plasma?

note: type: Plain text
en: In a Plasma Cutting Torch a cool gas enters Zone B, where a pilot arc between the electrode and the torch tip heats and ionises the gas. The main cutting arc then transfers to the workpiece through the column of plasma gas in Zone C. By forcing the plasma gas and electric arc through a small orifice, the torch delivers a high concentration of heat to a small area. The stiff, constricted plasma arc is shown in Zone C. Direct current (DC) straight polarity is used for plasma cutting, as shown in the illustration. Zone A channels a secondary gas that cools the torch. This gas also assists the high velocity plasma gas in blowing the molten metal out of the cut allowing for a fast, slag - free cut.
de: In einem Plasmaschneidbrenner tritt ein kühles Gas in Zone B ein, wo ein Pilotlichtbogen zwischen der Elektrode und der Brennerspitze das Gas erhitzt und ionisiert. Der Hauptschneidlichtbogen wird dann durch die Plasmagassäule in Zone C auf das Werkstück übertragen. Indem das Plasmagas und der Lichtbogen durch eine kleine Öffnung gepresst werden, liefert der Brenner eine hohe Wärmekonzentration auf einer kleinen Fläche. Der steife, eingeschnürte Plasmalichtbogen ist in Zone C zu sehen. Beim Plasmaschneiden wird Gleichstrom (DC) mit gerader Polarität verwendet, wie in der Abbildung dargestellt. Zone A leitet ein Sekundärgas, das den Brenner kühlt. Dieses Gas unterstützt auch das Hochgeschwindigkeitsplasmagas beim Herausblasen des geschmolzenen Metalls aus dem Schnitt, wodurch ein schneller, schlackenfreier Schnitt ermöglicht wird.

note: type: Title ==
en: Arc Initialisation
de: Bogen-Initialisierung

note: type: Plain text
en: There are two main methods for arc initialisation for plasma cutters that are designed for CNC operation. Whilst other methods are used on some machines (such as scratch start where physical contact with the material is required), they are unsuited for CNC applications..
de: Es gibt zwei Hauptmethoden für die Lichtbogeninitialisierung bei Plasmaschneidanlagen, die für den CNC-Betrieb ausgelegt sind. Während andere Methoden auf einigen Maschinen verwendet werden (z. B. Scratch-Start, wo physischer Kontakt mit dem Material erforderlich ist), sind sie für CNC-Anwendungen ungeeignet...

note: type: Title ===
en: High Frequency Start
de: Hochfrequenzstart

note: type: Plain text
en: This start type is widely employed, and has been around the longest. Although it is older technology, it works well, and starts quickly. But, because of the high frequency high voltage power that is required generated to ionise the air, it has some drawbacks. It often interferes with surrounding electronic circuitry, and can even damage components. Also a special circuit is needed to create a Pilot arc. Inexpensive models will not have a pilot arc, and require touching the consumable to the work to start. Employing a HF circuit also can increase maintenance issues, as there are usually adjustable points that must be cleaned and readjusted from time to time.
de: Dieser Starttyp ist weit verbreitet und am längsten im Einsatz. Obwohl es sich um eine ältere Technologie handelt, funktioniert sie gut und startet schnell. Aufgrund der Hochfrequenz-Hochspannung, die zur Ionisierung der Luft erforderlich ist, hat sie jedoch einige Nachteile. Sie stört oft die umliegenden elektronischen Schaltkreise und kann sogar Bauteile beschädigen. Außerdem ist ein spezieller Schaltkreis erforderlich, um einen Pilotbogen zu erzeugen. Preiswerte Modelle verfügen nicht über einen Pilotlichtbogen und erfordern eine Berührung des Verbrauchsmaterials mit dem Werkstück, um es zu starten. Die Verwendung eines HF-Schaltkreises kann auch den Wartungsaufwand erhöhen, da es in der Regel einstellbare Punkte gibt, die von Zeit zu Zeit gereinigt und neu eingestellt werden müssen.

note: type: Plain text
en: This start type uses air pressure supplied to the cutter to force a small piston or cartridge inside the torch head back to create a small spark between the inside surface of the consumable, ionising the air, and creating a small plasma flame. This also creates a "pilot arc" that provides a plasma flame that stays on, whether in contact with the metal or not. This is a very good start type that is now used by several manufacturers. It's advantage is that it requires somewhat less circuitry, is a fairly reliable and generates far less electrical noise.
de: Bei diesem Starttyp wird ein kleiner Kolben oder eine Kartusche im Brennerkopf durch den Luftdruck, der dem Schneidgerät zugeführt wird, zurückgedrückt, um einen kleinen Funken zwischen der Innenfläche des Verschleißteils zu erzeugen, der die Luft ionisiert und eine kleine Plasmaflamme erzeugt. Dadurch wird auch ein "Pilotlichtbogen" erzeugt, der für eine Plasmaflamme sorgt, die brennt, egal ob sie mit dem Metall in Kontakt ist oder nicht. Dies ist ein sehr guter Starttyp, der inzwischen von mehreren Herstellern verwendet wird. Ihr Vorteil ist, dass sie etwas weniger Schaltkreise benötigt, recht zuverlässig ist und weitaus weniger elektrisches Rauschen erzeugt.

note: type: Plain text
en: For entry level air plasma CNC systems, the blowback style is much preferred to minimise electrical interference with electronics and standard PCs but the High frequency start still rules supreme in larger machines from 200 amps and up. These require industrial level PC's and electronics and even commercial manufacturers have had issues with faults because they have failed to account for electrical noise in their designs.
de: Bei CNC-Luftplasmasystemen der Einstiegsklasse wird der Blowback-Stil bevorzugt, um elektrische Interferenzen mit der Elektronik und Standard-PCs zu minimieren, aber bei größeren Maschinen ab 200 Ampere ist der Hochfrequenzstart immer noch die Regel. Diese erfordern PCs und Elektronik auf Industrieniveau, und selbst kommerzielle Hersteller hatten Probleme mit Fehlern, weil sie es versäumt haben, das elektrische Rauschen in ihren Konstruktionen zu berücksichtigen.

note: type: Title ==
en: CNC Plasma
de: CNC-Plasma

note: type: Plain text
en: A plasma Arc is oval in shape and the cutting height needs to be controlled to minimise bevelled edges. If the torch is too high or too low then the edges can become excessively bevelled. It is also critical that the torch is held perpendicular to the surface.
de: Ein Plasmalichtbogen hat eine ovale Form, und die Schnitthöhe muss kontrolliert werden, um abgeschrägte Kanten zu minimieren. Wenn der Brenner zu hoch oder zu niedrig ist, können die Kanten übermäßig abgeschrägt werden. Es ist auch wichtig, dass der Brenner senkrecht zur Oberfläche gehalten wird.

note: type: Plain text
en: *Torch to work distance can impact edge bevel*
de: *Der Abstand zwischen Brenner und Werkstück kann die Kantenfase beeinflussen*.

note: type: Plain text
en: *Negative cut angle:* torch too low, increase torch to work distance.
de: *Negativer Schnittwinkel:* Brenner zu niedrig, Abstand zwischen Brenner und Werkstück vergrößern.

note: type: Plain text
en: *Positive cut angle:* torch too high, decrease torch to work distance.
de: *Positiver Schnittwinkel:* Brenner zu hoch, Abstand zwischen Brenner und Werkstück verringern.

note: type: Plain text
en: A slight variation in cut angles may be normal, as long as it is within tolerance.
de: Eine leichte Abweichung der Schnittwinkel kann normal sein, solange sie innerhalb der Toleranz liegt.

note: type: Plain text
en: The ability to precisely control the cutting height in such a hostile and ever changing environment is a very difficult challenge. Fortunately there is a very linear relationship between Torch height (Arc length) and arc voltage as this graph shows.
de: Die Fähigkeit, die Schnitthöhe in einer solch feindlichen und sich ständig verändernden Umgebung präzise zu steuern, ist eine sehr schwierige Herausforderung. Glücklicherweise gibt es eine sehr lineare Beziehung zwischen der Brennerhöhe (Lichtbogenlänge) und der Lichtbogenspannung, wie diese Grafik zeigt.

note: type: Title ==
en: Choosing a Plasma Machine for CNC operations
de: Auswahl einer Plasmamaschine für CNC-Bearbeitungen

note: type: Plain text
en: There are a plethora of plasma machines available on the market today and not all of them are suited for CNC use. CNC Plasma cutting is a complex operation and it is recommended that integrators choose a suitable plasma machine. Failure to do this is likely to cause hours and hours of fruitless trouble shooting trying to work around the lack of what many would consider to be mandatory features.
de: Auf dem Markt gibt es heute eine Vielzahl von Plasmamaschinen, von denen nicht alle für den CNC-Einsatz geeignet sind. CNC-Plasmaschneiden ist ein komplexer Vorgang, und es wird empfohlen, dass Integratoren eine geeignete Plasmamaschine auswählen. Andernfalls kann es zu stundenlanger, erfolgloser Fehlersuche kommen, wenn man versucht, das Fehlen von Funktionen zu umgehen, die viele als obligatorisch ansehen würden.

note: type: Plain text
en: Whilst rules are made to be broken if you fully understand the reasons the rule apply, we consider a new plasma table builder should select a machine with the following features:
de: Obwohl Regeln dazu da sind, gebrochen zu werden, wenn man die Gründe für die Anwendung der Regel versteht, sind wir der Meinung, dass ein neuer Hersteller von Plasmatischen eine Maschine mit den folgenden Merkmalen auswählen sollte:

note: type: Plain text
en: Blowback start to minimise electrical noise to simplify construction
de: Blowback-Start zur Minimierung der elektrischen Geräusche und zur Vereinfachung der Konstruktion

note: type: Plain text
en: A Machine torch is preferred but many have used hand torches.
de: Ein Maschinenbrenner wird bevorzugt, aber viele haben auch Handbrenner verwendet.

note: type: Plain text
en: A fully shielded torch tip to allow ohmic sensing
de: Eine vollständig abgeschirmte Brennerspitze, die eine ohmsche Abtastung ermöglicht

note: type: Plain text
en: If you have the budget, a higher end machines will supply:
de: Wenn Sie über das nötige Budget verfügen, können Sie sich für ein höherwertiges Gerät entscheiden:

note: type: Plain text
en: Manufacturer provided cut charts which will save many hours and material waste calibrating cut parameters
de: Vom Hersteller bereitgestellte Schneidtabellen, die viele Stunden und Materialabfälle bei der Kalibrierung der Schneidparameter sparen

note: type: Plain text
en: Higher duty cycles
de: Höhere Einschaltzyklen

note: type: Plain text
en: In recent times, another class of machine which includes some of these features has become available at around USD $550. One example is the Herocut55i available on Amazon but there is yet no feedback from users. This Machine features a blowback torch, ArcOK output, torch start contacts and raw arc voltage.
de: In jüngster Zeit ist eine andere Maschinenklasse, die einige dieser Funktionen enthält, für rund 550 US-Dollar erhältlich geworden. Ein Beispiel ist der Herocut55i, der bei Amazon erhältlich ist, aber es gibt noch kein Feedback von Benutzern. Diese Maschine verfügt über einen Blasbrenner, ArcOK-Ausgang, Brennerstartkontakte und rohe Lichtbogenspannung.

note: type: Title ==
en: Types Of Torch Height Control
de: Arten der Brennerhöhensteuerung

note: type: Plain text
en: Jim Colt of Hypertherm is on record saying that the best THC controllers were fully integrated into the CNC controller itself. Of course he was referring to high end systems manufactured by Hypertherm, Esab, Thermal Dynamics and others such as Advanced Robotic Technology in Australia, little dreaming that open source could produce systems using this approach that rival high end systems.
de: Jim Colt von Hypertherm hat zu Protokoll gegeben, dass die besten THC-Controller vollständig in die CNC-Steuerung selbst integriert wurden. Natürlich bezog er sich auf High-End-Systeme, die von Hypertherm, Esab, Thermal Dynamics und anderen wie Advanced Robotic Technology in Australien hergestellt wurden, und träumte nicht davon, dass Open Source mit diesem Ansatz Systeme produzieren könnte, die mit High-End-Systemen konkurrieren.

note: type: Title ==
en: Arc OK Signal
de: Lichtbogen-OK-Signal

note: type: Plain text
en: Plasma machines that have a CNC interface contain a set of dry contacts (eg a relay) that close when a valid arc is established and each side of these contacts are bought out onto pins on the CNC interface. A plasma table builder should connect one side of these pins to field power and the other to an input pin. This then allows the CNC controller to know when a valid arc is established and also when an arc is lost unexpectedly. There is a potential trap here when the input is a high impedance circuit such as a Mesa card. If the dry contacts are a simple relay, there is a high probability that the current passing through the relay is less than the minimum current specification. Under these conditions, the relay contacts can suffer from a buildup of oxide which over time can result in intermittent contact operation. To prevent this from happening, a pull down resistor should be installed on the controller input pin. Care should be taken to ensure that this resistor is selected to ensure the minimum current passes through the relay and is of sufficient wattage to handle the power in the circuit. Finally, the resistor should be mounted in such a way that the generated heat does not damage anything whilst in operation.
de: Plasmageräte mit einer CNC-Schnittstelle enthalten eine Reihe von Trockenkontakten (z. B. ein Relais), die sich schließen, wenn ein verlässlicher Lichtbogen entsteht, und jede Seite dieser Kontakte ist mit Stiften an der CNC-Schnittstelle verbunden. Der Erbauer eines Plasmatisches sollte eine Seite dieser Stifte mit der Feldspannung und die andere mit einem Eingangsstift verbinden. Auf diese Weise kann die CNC-Steuerung erkennen, wann ein gültiger Lichtbogen entstanden ist und wann er unerwartet verloren geht. Hier gibt es eine potenzielle Falle, wenn es sich bei dem Eingang um eine Schaltung mit hoher Impedanz handelt, wie z. B. eine Mesa-Karte. Handelt es sich bei den potentialfreien Kontakten um ein einfaches Relais, ist die Wahrscheinlichkeit groß, dass der durch das Relais fließende Strom unter der Mindeststromspezifikation liegt. Unter diesen Bedingungen kann es bei den Relaiskontakten zu einer Oxidbildung kommen, die mit der Zeit zu einem intermittierenden Betrieb der Kontakte führen kann. Um dies zu verhindern, sollte ein Pull-Down-Widerstand am Eingangsstift des Reglers installiert werden. Es sollte darauf geachtet werden, dass dieser Widerstand so gewählt wird, dass der Mindeststrom durch das Relais fließt und er eine ausreichende Wattzahl hat, um die Leistung im Schaltkreis zu bewältigen. Schließlich sollte der Widerstand so montiert werden, dass die entstehende Wärme während des Betriebs keine Schäden verursacht.

note: type: Plain text
en: If you have an ArcOK signal, it is recommended it is used over and above any synthesised signal to eliminate potential build issues. A synthesised signal available from an external THC or QtPlasmaC's Mode 0 can't fully replace the ArcOK circuitry in a plasma inverter. Some build issues have been observed where misconfiguration or incompatibility with the plasma inverter has occurred from a synthesised ArcOK signal. By and large however, a correctly configured synthesised ArcOK signal is fine.
de: Wenn Sie ein ArcOK-Signal haben, wird empfohlen, es über jedes synthetisierte Signal hinaus zu verwenden, um potenzielle Build-Probleme zu beseitigen. Ein synthetisiertes Signal, das von einem externen THC- oder QtPlasmaC-Modus 0 verfügbar ist, kann die ArcOK-Schaltung in einem Plasmawechselrichter nicht vollständig ersetzen. Einige Build-Probleme wurden beobachtet, bei denen eine Fehlkonfiguration oder Inkompatibilität mit dem Plasma-Wechselrichter durch ein synthetisiertes ArcOK-Signal aufgetreten ist. Im Großen und Ganzen ist jedoch ein korrekt konfiguriertes synthetisiertes ArcOK-Signal in Ordnung.

note: type: Title ==
en: Initial Height Sensing
de: Erfassung der Anfangshöhe

note: type: Plain text
en: Because the cutting height is such a critical system parameter and the material surface is inherently uneven, a Z axis mechanism needs a method to sense the material surface. There are three methods this can be achieved; Current sensing to detect increased motor torque, a “float" switch and an electrical or “ohmic" sensing circuit that is closed when the torch shield contacts the material. Current sensing is not a viable technique for DIY tables but float switches and ohmic sensing are discussed below:
de: Da die Schnitthöhe ein so kritischer Systemparameter ist und die Materialoberfläche von Natur aus uneben ist, benötigt ein Z-Achsen-Mechanismus eine Methode, um die Materialoberfläche zu erfassen. Es gibt drei Methoden, die erreicht werden können; Strommessung zur Erkennung eines erhöhten Motordrehmoments, eines "Schwimmer"-Schalters und einer elektrischen oder "ohmischen" Sensorschaltung, die geschlossen wird, wenn die Brennerabschirmung das Material berührt. Die Stromerfassung ist keine praktikable Technik für DIY-Tische, aber Schwimmerschalter und ohmsche Erfassung werden im Folgenden diskutiert:

note: type: Title ===
en: Float Switches
de: Gleitende Schalter (engl. float switches)

note: type: Plain text
en: Regardless of the probing method used, it is strongly recommended that float switch is implemented so that there is a fallback or secondary signal to avoid damage to the torch from a crash.
de: Unabhängig von der verwendeten Sondierungsmethode wird dringend empfohlen, einen gleitenden Schalter einzubauen, damit ein Ausweich- oder Sekundärsignal vorhanden ist, um eine Beschädigung des Brenners bei einem Absturz zu vermeiden.

note: type: Title ===
en: Ohmic Sensing
de: Ohmsche Erfassung

note: type: Plain text
en: Ohmic sensing relies on contact between the torch and the material acting as a switch to activate an electrical signal that is sensed by the CNC controller. Provided the material is clean, this can be a much more accurate method of sensing the material than a float switch which can cause deflection of the material surface. This ohmic sensing circuit is operating in an extremely hostile environment so a number of failsafes need to be implemented to ensure safety of both the CNC electronics and the operator. In plasma cutting, the earth clamp attached to the material is positive and the torch is negative. It is recommended that:
de: Die ohmsche Abtastung beruht auf dem Kontakt zwischen dem Brenner und dem Material, der wie ein Schalter wirkt, um ein elektrisches Signal zu aktivieren, das von der CNC-Steuerung erfasst wird. Unter der Voraussetzung, dass das Material sauber ist, kann dies eine viel genauere Methode zur Abtastung des Materials sein als ein Schwimmerschalter, der eine Ablenkung der Materialoberfläche verursachen kann. Dieser ohmsche Abtastkreis arbeitet in einer extrem feindlichen Umgebung, so dass eine Reihe von Ausfallsicherungen implementiert werden müssen, um die Sicherheit sowohl der CNC-Elektronik als auch des Bedieners zu gewährleisten. Beim Plasmaschneiden ist die am Material befestigte Erdungsklemme positiv und der Brenner ist negativ. Es wird empfohlen, dass:

note: type: Plain text
en: Ohmic sensing only be implemented where the torch has a shield that is isolated from the torch tip that conveys the cutting arc.
de: Die ohmsche Abtastung kann nur dann eingesetzt werden, wenn der Brenner eine Abschirmung hat, die von der Brennerspitze isoliert ist, die den Schneidlichtbogen leitet.

note: type: Plain text
en: The ohmic circuit uses a totally separate isolated power supply that activates an opto-isolated relay to enable the probing signal to be transmitted to the CNC controller.
de: Der ohmsche Schaltkreis verwendet eine völlig getrennte, isolierte Stromversorgung, die ein optoisoliertes Relais aktiviert, damit das Abtastsignal an die CNC-Steuerung übertragen werden kann.

note: type: Plain text
en: The positive side of the circuit should be at the torch
de: Die positive Seite des Stromkreises sollte am Brenner liegen.

note: type: Plain text
en: Both sides of the circuit needs to be isolated by opto-isolated relays until probing is being undertaken
de: Beide Seiten des Stromkreises müssen durch optoisolierte Relais isoliert werden, bis die Messung durchgeführt wird.

note: type: Plain text
en: Blocking diodes be used to prevent arc voltage entering the ohmic sensing circuit.
de: Es müssen Sperrdioden verwendet werden, um zu verhindern, dass Lichtbogenspannung in den ohmschen Messkreis gelangt.

note: type: Plain text
en: A more sophisticated method of material sensing that eliminates the relays and diodes is to use another THCAD-5 to monitor the material sensing circuit voltage from an isolated power supply. The advantage this has is the THCAD is designed for the hostile plasma electrical environment and totally and safely isolates the logic side from the high voltage side.
de: Eine ausgefeiltere Methode der Materialerkennung, bei der die Relais und Dioden entfallen, ist die Verwendung eines weiteren THCAD-5 zur Überwachung der Spannung des Materialerkennungsschaltkreises über eine isolierte Stromversorgung. Dies hat den Vorteil, dass das THCAD für die feindliche elektrische Umgebung des Plasmas ausgelegt ist und die Logikseite vollständig und sicher von der Hochspannungsseite isoliert.

note: type: Plain text
en: To implement this method, a second encoder input is required.
de: Um diese Methode zu implementieren, ist ein zweiter Encodereingang erforderlich.

note: type: Plain text
en: If using a mesa card, different firmware is available to provide 2 additional Encoder A inputs on the Encoder B and Encoder Index pins. This firmware is available for download for the 7i76e and 7i96 boards from the Mesa web site on the product pages.
de: Bei Verwendung einer Mesa-Karte ist eine andere Firmware verfügbar, die 2 zusätzliche Encoder A-Eingänge an den Pins Encoder B und Encoder Index bereitstellt. Diese Firmware kann für die Karten 7i76e und 7i96 von der Mesa-Website auf den Produktseiten heruntergeladen werden.

note: type: Plain text
en: The following circuit diagram shows how to implement a hypersensing circuit.
de: Der folgende Schaltplan zeigt, wie eine Hypersensing-Schaltung realisiert werden kann.

note: type: Title ===
en: Example HAL Code for Hypersensing
de: Beispiel HAL-Code für Hypersensing

note: type: Plain text
en: The following HAL code can be pasted into your QtPlasmaC's custom.hal to enable Ohmic sensing on Encoder 2 of a 7i76e. Install the correct bit file and connect the THCAD to IDX+ and IDX-. Be sure to change the calibration settings to agree with your THCAD-5.
de: Der folgende HAL-Code kann in die custom.hal von QtPlasmaC eingefügt werden, um die ohmsche Abtastung am Encoder 2 eines 7i76e zu aktivieren. Installieren Sie die richtige Bit-Datei und schließen Sie den THCAD an IDX+ und IDX- an. Stellen Sie sicher, dass die Kalibrierungseinstellungen mit denen Ihres THCAD-5 übereinstimmen.

note: type: Title ==
en: THC Delay
de: THC-Verzögerung

note: type: Plain text
en: When an arc is established, arc voltage peaks significantly and then settles back to a stable voltage at cut height. As shown by the green line in the image below.
de: Wenn ein Lichtbogen entsteht, steigt die Lichtbogenspannung deutlich an und pendelt sich dann wieder auf eine stabile Spannung auf Höhe des Schnittes ein. Wie die grüne Linie in der Abbildung unten zeigt.

note: type: Plain text
en: If the cut velocity is not near the desired cut speed at the end of this delay, the controller should wait until this is achieved before enabling the THC.
de: Liegt die Schnittgeschwindigkeit am Ende dieser Verzögerung noch nicht in der Nähe der gewünschten Schnittgeschwindigkeit, sollte die Steuerung warten, bis diese erreicht ist, bevor sie die THC aktiviert.

note: type: Title ==
en: Torch Voltage Sampling
de: Abtastung der Brennerspannung

note: type: Plain text
en: Rather than relying on the manufacturer's cut charts to set the desired torch voltage, many people (the writer included) prefer to sample the voltage as the THC is enabled and use that as a set point.
de: Anstatt sich auf die Schneidtabellen des Herstellers zu verlassen, um die gewünschte Brennerspannung einzustellen, ziehen es viele Leute (einschließlich des Verfassers) vor, die Spannung zu messen, wenn die THC aktiviert ist, und diese als Sollwert zu verwenden.

note: type: Title ==
en: Torch Breakaway
de: Brenner Behinderung (engl. torch breakaway)

note: type: Plain text
en: It is recommended that a mechanism is provided to allow the torch to “break away" or fall off in the case of impact with the material or a cut part that has tipped up. A sensor should be installed to allow the CNC controller to detect if this has occurred and pause the running program. Usually a break away is implemented using magnets to secure the torch to the Z axis stage.
de: Es wird empfohlen, einen Mechanismus vorzusehen, der es dem Brenner ermöglicht, im Falle eines Aufpralls auf das Material oder eines hochgekippten Schneidteils "abzukommen" oder abzufallen. Es sollte ein Sensor installiert werden, damit die CNC-Steuerung erkennen kann, ob dies geschehen ist, und das laufende Programm anhalten kann. Normalerweise wird eine Abreißsicherung mit Magneten realisiert, um den Brenner am Z-Achsentisch zu befestigen.

note: type: Title ===
en: Torch On (output)
de: Brenner an (Ausgang)

note: type: Plain text
en: Triggers a relay to close the torch on switch in the inverter
de: Löst ein Relais aus, um den Brenner-Einschalter im Inverter zu schließen

note: type: Plain text
en: Connect the torch on terminals on the inverter to the relay output terminals
de: Verbinden Sie die Brennerklemmen am Inverter mit den Relaisausgangsklemmen

note: type: Plain text
en: Connect one side of the coil to the output pin
de: Verbinden einer Seite der Spule mit dem Ausgangspin

note: type: Plain text
en: Connect the other side of the coil to Field Power ground.
de: Verbinden Sie die andere Seite der Spule mit der Masse der Feldversorgung.

note: type: Plain text
en: If a Solid State Relay is used, polarity may need to be observed on the outputs
de: Bei Verwendung eines Solid State Relais muss ggf. die Polarität an den Ausgängen beachtet werden

note: type: Plain text
en: In some circumstances, the onboard spindle relay on a Mesa card can be used instead of an external relay.
de: Unter bestimmten Umständen kann das integrierte Spindelrelais auf einer Mesa-Karte anstelle eines externen Relais verwendet werden.

note: type: Plain text
en: It is strongly recommended that the torch cannot be enabled while this pin is false otherwise the torch will not be extinguished when estop is pressed;
de: Es wird dringend empfohlen, dass der Brenner nicht aktiviert werden kann, während dieser Pin falsch ist, da der Brenner sonst nicht gelöscht wird, wenn der Notaus (engl. estop) gedrückt wird;

note: type: Title ===
en: Float switch (input)
de: Gleitender Schalter (engl. float switch) (input)

note: type: Plain text
en: Used for surface probing. A sensor or switch that is activated if the torch slides up when it hits the material.
de: Wird für die Oberflächensondierung verwendet. Ein Sensor oder Schalter, der aktiviert wird, wenn der Brenner nach oben gleitet, wenn er auf das Material trifft.

note: type: Plain text
en: Connect Proximity sensor output to chosen input pin. If mechanical switches are used. Connect one side of the switch to field power and the other side of the switch to input.
de: Schließen Sie den Ausgang des Näherungssensors an den ausgewählten Eingangspin an. Wenn mechanische Schalter verwendet werden. Schließen Sie eine Seite des Schalters an die Feldleistung und die andere Seite des Schalters an den Eingang an.

note: type: Title ===
en: Ohmic Sensor enable (output)
de: Ohmscher Sensor aktivieren (Ausgang)

note: type: Plain text
en: See the <<ohmic-sensing,ohmic sensing>> schematic.
de: Siehe den Schaltplan <<ohmic-sensing,ohmic sensing>>.

note: type: Plain text
en: Connect output pin to one side of the isolation relays and the other side to field power ground.
de: Verbinden Sie den Ausgangspin mit einer Seite des Trennrelais und die andere Seite mit der Masse der Feldversorgung.

note: type: Title ===
en: Ohmic Sensing (input)
de: Ohmsche Sensorik (engl. ohmic sensing) (Eingang)

note: type: Plain text
en: Take care to follow the <<ohmic-sensing,ohmic sensing>> schematic shown previously.
de: Beachten Sie das zuvor gezeigte Schema zu <<Ohmic-sensing,ohmic sensing>>.

note: type: Plain text
en: An isolated power supply triggers a relay when the torch shield contacts the material.
de: Eine isolierte Stromversorgung löst ein Relais aus, wenn der Brennerschild das Material berührt.

note: type: Plain text
en: Connect field power to one output terminal and the other to the input.
de: Schließen Sie die Feldspannung an eine Ausgangsklemme und die andere an den Eingang an.

note: type: Plain text
en: Take care to observe relay polarity if opto-coupled solid State relays are used.
de: Achten Sie auf die Polarität der Relais, wenn optoentkoppelte Halbleiterrelais verwendet werden.

note: type: Plain text
en: As can be seen, plasma tables are pin intensive and we have already consumed about 15 inputs before the normal estops are added. Others have other views but it is the writer's opinion that the Mesa 7i76e is preferred over the cheaper 7i96 to allow for MPG's, scale and axis selection switch and other features you may wish to add over time. If your table uses servos, there are a number of alternatives. Whilst there are other suppliers, designing your machine around the Mesa ecosystem will simplify use of their THCAD board to read arc voltage.
de: Wie man sieht, sind Plasma-Tische sehr Pin-intensiv, und wir haben bereits etwa 15 Eingänge verbraucht, bevor der normale Notaus-Schalter hinzugefügt wird. Andere haben andere Ansichten, aber der Autor ist der Meinung, dass der Mesa 7i76e dem billigeren 7i96 vorzuziehen ist, um MPGs, Skalen- und Achsenwahlschalter und andere Funktionen zu ermöglichen, die Sie vielleicht im Laufe der Zeit hinzufügen möchten. Wenn Ihr Tisch Servos verwendet, gibt es eine Reihe von Alternativen. Es gibt zwar auch andere Anbieter, aber wenn Sie Ihre Maschine um das Mesa-Ökosystem herum konstruieren, wird die Verwendung ihrer THCAD-Platine zum Lesen der Lichtbogenspannung vereinfacht.

note: type: Title ===
en: Torch Breakaway Sensor
de: Brenner-Abreißsensor (engl. torch breakaway sensor)

note: type: Title ===
en: Select Material Settings In QtPlasmaC And Use The Feedrate For That Material:
de: Wählen Sie die Materialeinstellungen in QtPlasmaC und verwenden Sie die Vorschubgeschwindigkeit für dieses Material:

note: type: Title ===
en: Enable/Disable THC Operation:
de: Aktivieren/Deaktivieren des THC-Betriebs:

note: type: Title ===
en: Reduce Cutting Speeds: (eg for hole cutting)
de: Schnittgeschwindigkeiten reduzieren: (z.B. zum Lochschneiden)

note: type: delimited block -
en: M67 E3 Q0 would set the velocity to 100% of requested~speed
    M67 E3 Q40 would set the velocity to 40% of requested~speed
    M67 E3 Q60 would set the velocity to 60% of requested~speed
    M67 E3 Q100 would set the velocity to 100% of requested~speed
de: M67 E3 Q0 würde die Geschwindigkeit auf 100% der angeforderten~Geschwindigkeit setzen
    M67 E3 Q40 würde die Geschwindigkeit auf 40% der angeforderten~Geschwindigkeit setzen
    M67 E3 Q60 würde die Geschwindigkeit auf 60% der angeforderten~Geschwindigkeit setzen
    M67 E3 Q100 würde die Geschwindigkeit auf 100% der angeforderten~Geschwindigkeit setzen

note: type: Title ===
en: Cutter Compensation:
de: Fräserkompensation:

note: type: delimited block -
en: G41.1 D#<_hal[plasmac_run.kerf-width-f]> ; for left of programmed path
    G42.1 D#<_hal[plasmac_run.kerf-width-f]> for right of programmed path
    G40 to turn compensation off
de: G41.1 D#<_hal[plasmac_run.kerf-width-f]> ; für links von der programmierten Bahn
    G42.1 D#<_hal[plasmac_run.kerf-width-f]> für rechts von der programmierten Bahn
    G40 zum Ausschalten der Kompensation

note: type: Plain text
en: External Offsets were introduced to LinuxCNC with version 2.8. By external, it means that we can apply an offset external to the G-code that the trajectory planner knows nothing about. It easiest to explain with an example. Picture a lathe with an external offset being applied by a mathematical formula to machine a lobe on a cam. So the lathe is blindly spinning around with the cut diameter set to a fixed diameter and the external offset moves the tool in and out to machine the cam lobe via an applied external offset. To configure our lathe to machine this cam, we need to allocate some portion of the axis velocity and acceleration to external offsets or the tool can't move. This is where the ini variable OFFSET_AV_RATIO comes in. Say we decide we need to allocate 20% of the velocity and acceleration to the external offset to the Z axis. We set this equal to 0.2. The consequence of this is that your maximum velocity and acceleration for the Lathe's Z axis is only 80% of what it could be.
de: Externe Offsets wurden in LinuxCNC mit Version 2.8 eingeführt. Durch externe, bedeutet es, dass wir einen Offset außerhalb des G-Codes, dass die Flugbahn Planer weiß nichts über anwenden können. Es ist am einfachsten, mit einem Beispiel zu erklären. Stellen Sie sich eine Drehmaschine mit einem externen Offset vor, der durch eine mathematische Formel angewendet wird, um eine Nocke auf einer Kurve zu bearbeiten. Die Drehmaschine dreht sich also blind herum, wobei der Schnittdurchmesser auf einen festen Durchmesser eingestellt ist, und die externe Verschiebung bewegt das Werkzeug nach innen und außen, um die Nocke über eine angewandte externe Verschiebung zu bearbeiten. Um unsere Drehmaschine so zu konfigurieren, dass sie diese Nocke bearbeitet, müssen wir einen Teil der Achsengeschwindigkeit und -beschleunigung den externen Offsets zuweisen, sonst kann sich das Werkzeug nicht bewegen. An dieser Stelle kommt die Ini-Variable OFFSET_AV_RATIO ins Spiel. Angenommen, wir entscheiden, dass wir 20 % der Geschwindigkeit und Beschleunigung dem externen Offset der Z-Achse zuweisen müssen. Wir setzen diesen Wert auf 0,2. Dies hat zur Folge, dass die maximale Geschwindigkeit und Beschleunigung für die Z-Achse der Drehmaschine nur 80 % des möglichen Wertes beträgt.

note: type: Plain text
en: The preferred method for installing LinuxCNC is via an ISO image as described below.
de: Die bevorzugte Methode zur Installation von LinuxCNC ist über ein ISO-Image, wie unten beschrieben.

note: type: Plain text
en: It is possible to install and run LinuxCNC on a variety of Linux distributions however that is beyond the scope of this User Guide. If the user wishes to install a Linux distribution other than those recommended, they will first need to install their preferred Linux distribution and then install LinuxCNC v2.9 or later along with any required dependencies.
de: Es ist möglich, LinuxCNC auf einer Vielzahl von Linux-Distributionen zu installieren und auszuführen, was jedoch den Rahmen dieses Benutzerhandbuchs sprengen würde. Wenn der Benutzer möchte eine Linux-Distribution andere als die empfohlenen zu installieren, müssen sie zunächst ihre bevorzugte Linux-Distribution zu installieren und dann installieren LinuxCNC v2.9 oder höher zusammen mit allen erforderlichen Abhängigkeiten.

note: type: Title ===
en: If The User Does Not Have Linux Installed
de: Wenn der Benutzer kein Linux installiert hat

note: type: Plain text
en: Installation instructions are available at: link:../getting-started/getting-linuxcnc.html
de: Installationsanweisungen finden Sie unter: link:../getting-started/getting-linuxcnc.html

note: type: Plain text
en: Following these instructions will yield a machine with the current stable branch (v2.8) of LinuxCNC on Debian Buster.
de: Die Befolgung dieser Anweisungen wird eine Maschine mit dem aktuellen stabilen Zweig (v2.8) von LinuxCNC auf Debian Buster ergeben.

note: type: Title ===
en: Package Installation (Buildbot) If The User Has Linux with LinuxCNC v2.8
de: Paket-Installation (Buildbot) Wenn der Benutzer hat Linux mit LinuxCNC v2.8

note: type: Plain text
en: A package installation (Buildbot) uses prebuilt packages from the LinuxCNC Buildbot, instructions for upgrading from 2.8 to 2.9 are available at: http://buildbot.linuxcnc.org
de: Eine Paketinstallation (Buildbot) verwendet vorgefertigte Pakete aus dem LinuxCNC Buildbot, Anweisungen für ein Upgrade von 2.8 auf 2.9 sind verfügbar unter: http://buildbot.linuxcnc.org

note: type: Plain text
en: Following these instructions by using the below stanzas will upgrade the machine to the last LinuxCNC Buildbot build master branch (v2.9) of LinuxCNC. This may not always be the latest version of master branch (v2.9) as from time to time the LinuxCNC Buildbot may stop due to errors.
de: Befolgen Sie diese Anweisungen unter Verwendung der folgenden Zeilen, um die Maschine auf den letzten LinuxCNC Buildbot-Build-Master-Zweig (v2.9) von LinuxCNC zu aktualisieren. Dies ist möglicherweise nicht immer die neueste Version von Master Branch (v2.9), da der LinuxCNC Buildbot von Zeit zu Zeit aufgrund von Fehlern anhalten kann.

note: type: Title ===
en: Run In Place Installation If The User Has Linux with LinuxCNC v2.8
de: Run In Place Installation, wenn der Benutzer bereits Linux hat mit LinuxCNC v2.8

note: type: Plain text
en: A run in place installation runs LinuxCNC from a locally compiled version usually located at ~/linuxcnc-dev, instructions for building a run in place installation are available at: link:../code/building-linuxcnc.html
de: Ein Run-in-Place-Installation läuft LinuxCNC aus einer lokal kompilierten Version in der Regel unter ~/linuxcnc-dev, Anweisungen für den Aufbau einer Run-in-Place-Installation sind verfügbar unter: link:../code/building-linuxcnc.html

note: type: Plain text
en: Following these instructions will install the latest master branch (v2.9) of LinuxCNC.
de: Wenn Sie diese Anweisungen befolgen, installieren Sie den neuesten Master-Zweig (v2.9) von LinuxCNC.

note: type: Title ==
en: Creating A QtPlasmaC Configuration
de: Erstellen einer QtPlasmaC Konfiguration

note: type: Plain text
en: Prior to creating a QtPlasmaC configuration, it is important that the user has a firm understanding of the operating modes available, as well as the I/O's that are required for successful plasma operation.
de: Vor der Erstellung einer QtPlasmaC-Konfiguration ist es wichtig, dass der Benutzer die verfügbaren Betriebsmodi sowie die für einen erfolgreichen Plasmabetrieb erforderlichen E/As genau kennt.

note: type: Table
en: Modes
de: Modi

note: type: Plain text
en: QtPlasmaC requires the selection of one of following three operating modes:
de: QtPlasmaC erfordert die Auswahl eines der folgenden drei Betriebsmodi:

note: type: Table
en: *Description*
de: *Beschreibung*

note: type: Table
en: Uses an external arc voltage input to calculate both Arc Voltage (for Torch Height Control) and Arc OK.
de: Verwendet einen externen Lichtbogenspannungseingang, um sowohl die Lichtbogenspannung (für die Brennerhöhensteuerung) als auch den Lichtbogen-OK zu berechnen.

note: type: Table
en: Uses an external arc voltage input to calculate Arc Voltage (for Torch Height Control). +
       Uses an external Arc OK input for Arc OK.
de: Verwendet einen externen Lichtbogenspannungseingang zur Berechnung der Lichtbogenspannung (für die Brennerhöhensteuerung). +
       Verwendet einen externen Lichtbogen-OK-Eingang für Lichtbogen-OK.

note: type: Table
en: Uses an external Arc OK input for Arc OK. +
       Use external up/down signals for Torch Height Control.
de: Verwendet einen externen Arc OK-Eingang für Arc OK. +
       Verwendet externe Auf-/Ab-Signale für die Brennerhöhensteuerung.

note: type: Plain text
en: If the plasma power source has an Arc OK (Transfer) output then it is recommended to use that for Arc OK rather than the soft (calculated) Arc OK provided by mode 0.  It may also be possible to use a <<qt_reed-arc-ok,reed relay>> as an alternative method to establish an Arc OK signal when the power source does not provide one.
de: Wenn die Plasmastromquelle über einen Arc OK (Transfer)-Ausgang verfügt, wird empfohlen, diesen für Arc OK anstelle des weichen (berechneten) Arc OK zu verwenden, der von Modus 0 bereitgestellt wird.  Es kann auch möglich sein, ein <<qt_reed-Arc-OK,Reed-Relais>> als alternative Methode zu verwenden, um ein Arc OK-Signal herzustellen, wenn die Stromquelle keines liefert.

note: type: Plain text
en: For fine tuning of Mode 0 Ark OK see <<mode0-arcok,Tuning Mode 0 Arc OK>> in the Advanced Topics section of the manual.
de: Für die Feinabstimmung von Mode 0 Ark OK siehe <<mode0-arcok,Tuning Mode 0 Arc OK>> im Abschnitt Erweiterte Themen des Handbuchs.

note: type: Title ===
en: Available I/Os
de: Verfügbare I/Os

note: type: Plain text
en: This section only touches on the hardware I/O's required for QtPlasmaC.  Base machine requirements such as limit switches, home switches, etc. are in addition to these.
de: Dieser Abschnitt befasst sich nur mit den für QtPlasmaC erforderlichen Hardware-E/As.  Die Anforderungen an die Basismaschine, wie Endschalter, Home-Schalter usw., kommen noch hinzu.

note: type: Table
en: Arc OK
de: Bogen OK

note: type: Table
en: Torch On
de: Brenner ein (engl. torch on)

note: type: Plain text
en: If using a Pico Systems board:
    https://forum.linuxcnc.org/27-driver-boards/14977-pico-systems-faq[This LinuxCNC forum thread] may be helpful.
de: Wenn Sie ein Pico Systems-Board verwenden:
    https://forum.linuxcnc.org/27-driver-boards/14977-pico-systems-faq[Dieser LinuxCNC-Forumsthread] könnte hilfreich sein.

note: type: Plain text
en: The machine specific settings are not described here, refer to the documentation for the particular configuration wizard that is being used.
de: Die gerätespezifischen Einstellungen werden hier nicht beschrieben, sondern sind in der Dokumentation des jeweiligen Konfigurationsassistenten nachzulesen, der verwendet wird.

note: type: Plain text
en: Fill in the required entries to suit the machine wiring/breakout board configuration.
de: Füllen Sie die erforderlichen Einträge entsprechend der Konfiguration der Maschinenverdrahtung/Breakout-Platine aus.

note: type: Plain text
en: QtPlasmaC adds two pages to the LinuxCNC configuration wizards for QtPlasmaC specific parameters, the two pages are QtPlasmaC options and <<qt_custom-user-buttons,User Buttons>>. Complete each of the wizards QtPlasmaC page to suit the machine that is being configured and the user button requirements.
de: QtPlasmaC fügt den LinuxCNC-Konfigurationsassistenten zwei Seiten für QtPlasmaC-spezifische Parameter hinzu, die beiden Seiten sind QtPlasmaC-Optionen und <<qt_custom-user-buttons,User Buttons>>. Füllen Sie jede der Assistenten QtPlasmaC Seite, um die Maschine, die konfiguriert wird und die Benutzer-Button-Anforderungen anzupassen.

note: type: Plain text
en: Note that PnCconf options allow user selection of Feed Override, Linear Velocity, and Jog Increments whereas in StepConf these are automatically calculated and set.
de: Beachten Sie, dass die PnCconf-Optionen die Auswahl von Vorschub-Override, Lineargeschwindigkeit und Jog-Inkrementen durch den Benutzer erlauben, während diese in StepConf automatisch berechnet und eingestellt werden.

note: type: Plain text
en: *PnCconf QtPlasmaC Options:*
de: *PnCconf QtPlasmaC Optionen:*

note: type: Plain text
en: *StepConf QtPlasmaC Options:*
de: *StepConf QtPlasmaC-Optionen:*

note: type: Plain text
en: *QtPlasmaC User Buttons:*
de: *QtPlasmaC Benutzer-Buttons:*

note: type: Plain text
en: The THCAD screen will only appear if a Plasma Encoder is selected in the card screen.
de: Der THCAD-Bildschirm wird nur angezeigt, wenn im Kartenbildschirm ein Plasma-Encoder ausgewählt wurde.

note: type: Plain text
en: More information on <<qt_mesa-thcad,Mesa THCAD>>.
de: Weitere Informationen unter <<qt_mesa-thcad,Mesa THCAD>>.

note: type: Plain text
en: The newly created QtPlasmaC configuration can be run by entering the following command into a terminal window (*change "<machine_name>" to the machine name entered into the configuration wizard*):
de: Die neu erstellte QtPlasmaC-Konfiguration kann durch Eingabe des folgenden Befehls in einem Terminalfenster ausgeführt werden (*ändern Sie "<Maschinenname>" in den im Konfigurationsassistenten eingegebenen Maschinennamen*):

note: type: Plain text
en: For a package installation (Buildbot):
de: Für eine Paketinstallation (Buildbot):

note: type: Plain text
en: For a run in place installation:
de: Für eine Installation an Ort und Stelle (engl. run-in-place):

note: type: delimited block -
en: ~/linuxcnc-dev/scripts/linuxcnc ~/linuxcnc/configs/<machine_name>/_<machine_name>_.ini
de: ~/linuxcnc-dev/scripts/linuxcnc ~/linuxcnc/configs/<Maschinenname>/_<Maschinenname>_.ini

note: type: Plain text
en: After running the above command LinuxCNC should be running with the QtPlasmaC GUI visible.
de: Nach dem Ausführen des obigen Befehls sollte LinuxCNC mit der QtPlasmaC GUI sichtbar sein.

note: type: Plain text
en: BEFORE PROCEEDING, THE USER SHOULD BE ABLE TO HOME THE MACHINE, ZERO EACH AXIS, JOG ALL AXES TO SOFT LIMITS WITHOUT CRASHING, AND RUN TEST G-CODE PROGRAMS WITHOUT ANY ERRORS.
de: BEVOR DER BENUTZER FORTFÄHRT, SOLLTE ER IN DER LAGE SEIN, DIE MASCHINE IN DIE AUSGANGSPOSITION ZU BRINGEN, JEDE ACHSE AUF NULL ZU STELLEN, ALLE ACHSEN BIS ZU DEN WEICHEN GRENZWERTEN ZU VERFAHREN, OHNE DASS ES ZU EINEM ABSTURZ KOMMT, UND G-CODE-TESTPROGRAMME OHNE FEHLER AUSZUFÜHREN.

note: type: Plain text
en: ONLY WHEN this criteria is met should the user proceed with the QtPlasmaC initial setup.
de: NUR WENN diese Kriterien erfüllt sind, sollte der Benutzer mit der Ersteinrichtung von QtPlasmaC fortfahren.

note: type: Plain text
en: It is possible to create a sim configuration using StepConf but it is not possible to have tandem joints in the sim configuration.
de: Es ist möglich, eine Simulationskonfiguration mit StepConf zu erstellen, aber es ist nicht möglich, Tandemgelenke in der Simulationskonfiguration zu haben.

note: type: Title ===
en: Qt Dependency Errors
de: Qt-Abhängigkeitsfehler

note: type: Plain text
en: If any Qt dependency errors are encountered while attempting to run the QtPlasmaC configuration, the user may need to run the QtVCP installation script to resolve these issues.
de: Wenn beim Versuch, die QtPlasmaC-Konfiguration auszuführen, Fehler in Bezug auf Qt-Abhängigkeiten auftreten, muss der Benutzer möglicherweise das QtVCP-Installationsskript ausführen, um diese Probleme zu beheben.

note: type: Plain text
en: For a package installation (Buildbot) enter the following command in a terminal window:
de: Geben Sie für eine Paketinstallation (Buildbot) den folgenden Befehl in einem Terminalfenster ein:

note: type: Plain text
en: For a run in place installation enter the following command in a terminal window:
de: Geben Sie für eine "run in place"-Installation den folgenden Befehl in ein Terminalfenster ein:

note: type: Title ===
en: Initial Setup
de: Erstmalige Einrichtung

note: type: Plain text
en: The following heights diagram will help the user visualize the different heights involved in plasma cutting and how they are measured:
de: Das folgende Höhendiagramm soll dem Benutzer helfen, die verschiedenen Höhen beim Plasmaschneiden und deren Messung zu veranschaulichen:

note: type: Plain text
en: Click on the <<qt_parameters-tab,Parameters Tab>> to view the *CONFIGURATION* section which shows the user settable parameters. It is necessary to ensure every one of these settings is tailored to the machine.
de: Klicken Sie auf die Registerkarte <<qt_parameters, Registerkarte Parameter>> um den Abschnitt *CONFIGURATION* anzuzeigen, in dem die vom Benutzer einstellbaren Parameter angezeigt werden. Es muss sichergestellt werden, dass jede dieser Einstellungen auf die Maschine zugeschnitten ist.

note: type: Plain text
en: To set the Z axis DRO relative to the Z axis MINIMUM_LIMIT, the user should perform the following steps. It is important to understand that in QtPlasmaC, touching off the Z axis DRO has no effect on the Z axis position while running a G-code program. These steps simply allow the user to more easily set the probe height as after performing the steps, the displayed Z axis DRO value will be relative to Z axis MINIMUM_LIMIT.
de: Um die Z-Achsen-DRO relativ zur Z-Achse MINIMUM_LIMIT einzustellen, sollte der Benutzer die folgenden Schritte durchführen. Es ist wichtig zu verstehen, dass in QtPlasmaC die Berührung der Z-Achsen-DRO keinen Einfluss auf die Z-Achsen-Position hat, während ein G-Code-Programm läuft. Diese Schritte ermöglichen dem Benutzer lediglich eine einfachere Einstellung der Sondenhöhe, da nach Durchführung der Schritte der angezeigte Z-Achsen-DRO-Wert relativ zur Z-Achse MINIMUM_LIMIT ist.

note: type: Plain text
en: The user should be familiar with the recommended <<qt_z-settings, Z Axis Settings>>.
de: Der Benutzer sollte mit den empfohlenen <<qt_z-settings, Z-Achsen Einstellungen>> vertraut sein.

note: type: Plain text
en: Home the Z axis.
de: Referenzierung der Z-Achse.

note: type: Plain text
en: Ensure there is nothing below the torch then jog the Z axis down until it stops at the Z axis MINIMUM_LIMIT then click the 0 next to the Z axis DRO to *Touch Off* with the Z axis selected to set the Z axis at zero offset. This step only serves to allow the user to more easily visualize and adjust *Probe Height* this value is measured from the Z axis MINIMUM_LIMIT up.
de: Vergewissern Sie sich, dass sich nichts unter dem Brenner befindet, dann bewegen Sie die Z-Achse nach unten, bis sie am MINIMUM_LIMIT der Z-Achse anhält, und klicken Sie dann auf die 0 neben der Z-Achsen-Anzeige, um die Z-Achse mit der ausgewählten Z-Achse auf Nullpunktverschiebung zu setzen. Dieser Schritt dient nur dazu, dem Benutzer eine einfachere Visualisierung und Einstellung der *Sondenhöhe* zu ermöglichen - dieser Wert wird vom MINIMUM_LIMIT der Z-Achse aufwärts gemessen.

note: type: Plain text
en: Home the Z axis again.
de: Erneute Referenzierfahrt der Z-Achse.

note: type: Plain text
en: If the machine is equipped with a float switch then the user will need to set the offset in the *CONFIGURATION* section of the *PARAMETERS* tab. This will be done by running a "Probe Test" cycle.
de: Wenn das Gerät mit einem Schwimmerschalter ausgestattet ist, muss der Benutzer den Offset im Abschnitt *KONFIGURATION* auf der Registerkarte *PARAMETER* einstellen. Dies geschieht durch Ausführen eines "Probe Test"-Zyklus.

note: type: Plain text
en: Check that the Probe Speed and the Probe Height in the *CONFIGURATION* section of the *PARAMETERS* tab are correct. QtPlasmaC can probe at the full Z axis velocity so long as the machine has enough movement in the float switch to absorb any overrun. If the machine is suitable, the user could set the Probe Height to a value near the Z axis minimum and do all probing at full speed.
de: Überprüfen Sie, ob die Sondengeschwindigkeit und die Sondenhöhe im Abschnitt *CONFIGURATION* auf der Registerkarte *PARAMETERS* korrekt sind. QtPlasmaC kann mit der vollen Geschwindigkeit der Z-Achse tasten, solange die Maschine genügend Bewegung im Schwimmerschalter hat, um einen eventuellen Überlauf aufzufangen. Wenn die Maschine dafür geeignet ist, kann der Benutzer die Sondenhöhe auf einen Wert in der Nähe des Z-Achsen-Minimums einstellen und die gesamte Abtastung mit voller Geschwindigkeit durchführen.

note: type: Plain text
en: If the machine is not already homed and in the home position, home the machine.
de: Wenn die Maschine noch keine Referenzierfahrt durchführt und nicht in der Ausgangsposition ist, dann führen Sie die Referenzierfahrt durch.

note: type: Plain text
en: Place some material on the slats under the torch.
de: Legen Sie etwas Material auf die Latten unter den Brenner.

note: type: Plain text
en: Press the *PROBE TEST* button.
de: Drücken Sie die Taste *PROBE TEST*.

note: type: Table
en: INI FILE IN EXISTING PLASMAC CONFIG
de: INI-DATEI IN VORHANDENER PLASMAC-KONFIGURATION

note: type: Table
en: MONITOR ASPECT RATIO
de: BILDSCHIRM-SEITENVERHÄLTNIS

note: type: Table
en: This is the <<qt_formats, aspect ratio format>> for the GUI.
de: Dies ist das <<qt_formats, Seitenverhältnisformat>> für die GUI.

note: type: Plain text
en: ESTOP
de: ESTOP (engl. für Notaus)

note: type: Table
en: Selects the required Estop type based on the following criteria: +
        0 - Estop is an indicator only. +
        1 - Estop indicator is hidden. +
        2 - Estop is a button.
de: Wählt den gewünschten Estop-Typ anhand der folgenden Kriterien aus: +
        0 - Estop ist nur ein Indikator. +
        1 - Estop-Indikator ist ausgeblendet. +
        2 - Estop ist eine Taste.

note: type: Plain text
en: *Optional Setting*
de: *Optionale Einstellung*

note: type: Plain text
en: Leave this blank if it is not used/required.
de: Lassen Sie dieses Feld leer, wenn es nicht verwendet/erforderlich ist.

note: type: Table
en: Laser On HAL Pin
de: Laser On HAL-Pins

note: type: Table
en: Power on a laser crosshair for sheet alignment.
de: Schalten Sie ein Laserfadenkreuz für die Bogenausrichtung ein.

note: type: Table
en: *Parallel Port Example:* parport.0.pin-16-out +
        *Mesa 7i96 Example:* hm2_7i96.0.ssr.00.out-00
de: *Parallel Port Beispiel:* parport.0.pin-16-out +
        *Mesa 7i96 Beispiel:* hm2_7i96.0.ssr.00.out-00

note: type: Plain text
en: After filling in the appropriate entries, press *CONVERT*.
de: Nachdem Sie die entsprechenden Eingaben gemacht haben, drücken Sie *CONVERT*.

note: type: Plain text
en: This method will not change any existing debounce components to the new dbounce component. If the user wishes to change to the new dbounce component then the New Base Config method should be used for migration.
de: Mit dieser Methode werden keine bestehenden Debounce-Komponenten auf die neue dbounce-Komponente umgestellt. Wenn der Benutzer auf die neue dbounce-Komponente wechseln möchte, sollte die Methode New Base Config für die Migration verwendet werden.

note: type: Title ===
en: New Base Config Method
de: Neue Basis-Konfigurationsmethode

note: type: Plain text
en: This method requires that the user take note of all HAL pins used in the existing config so they can be entered into the configuration wizard. Any custom HAL commands will also need to be noted and added manually to either the custom.hal file or the custom_postgui.hal file which will be created by the configuration wizard.
de: Bei dieser Methode muss der Benutzer alle HAL-Pins notieren, die in der vorhandenen Konfiguration verwendet werden, damit sie in den Konfigurationsassistenten eingegeben werden können. Alle benutzerdefinierten HAL-Befehle müssen ebenfalls notiert und entweder der Datei custom.hal oder der Datei custom_postgui.hal, die vom Konfigurationsassistenten erstellt wird, manuell hinzugefügt werden.

note: type: Plain text
en: After using the wizard, the user can then run a conversion program (cfg2prefs) to convert the parameters, settings, and materials from the previous PlasmaC configuration to the new QtPlasmaC configuration. This tool should be used immediately after the user has created a new QtPlasmaC configuration.
de: Nach der Verwendung des Assistenten kann der Benutzer dann ein Konvertierungsprogramm (cfg2prefs) ausführen, um die Parameter, Einstellungen und Materialien der vorherigen PlasmaC-Konfiguration in die neue QtPlasmaC-Konfiguration zu konvertieren. Dieses Werkzeug sollte unmittelbar nach der Erstellung einer neuen QtPlasmaC-Konfiguration verwendet werden.

note: type: Plain text
en: Prior to running this conversion program, it is mandatory that the user have both an existing PlasmaC configuration and a new QtPlasmaC configuration. This program WILL overwrite the existing QtPlasmaC preferences and materials files, and should be used with caution if it is not being run on a new QtPlasmaC configuration.
de: Vor dem Ausführen dieses Konvertierungsprogramms ist es zwingend erforderlich, dass der Benutzer sowohl eine bestehende PlasmaC-Konfiguration als auch eine neue QtPlasmaC-Konfiguration besitzt. Dieses Programm überschreibt die vorhandenen QtPlasmaC-Voreinstellungen und Materialdateien und sollte mit Vorsicht verwendet werden, wenn es nicht auf einer neuen QtPlasmaC-Konfiguration ausgeführt wird.

note: type: Plain text
en: The program will create a time stamped backup of the original preferences file and the existing materials file (if it exists).
de: Das Programm erstellt eine mit einem Zeitstempel versehene Sicherungskopie der ursprünglichen Einstellungsdatei und der vorhandenen Materialdatei (falls vorhanden).

note: type: Plain text
en: To run the cfg2prefs conversion program, use the following instructions:
de: Um das Konvertierungsprogramm cfg2prefs auszuführen, folgen Sie den folgenden Anweisungen:

note: type: Plain text
en: R = calculated resistance
de: R = berechneter Widerstand

note: type: Plain text
en: P = power
de: P = Leistung

note: type: Title ===
en: Desktop Launcher
de: Desktop-Starthilfe

note: type: Plain text
en: If a link to the launch the configuration was not created when creating the config, the user could create a desktop launcher to the config by right clicking on the desktop and selecting Create Launcher or similar. This will bring up a dialog box to create a launcher. Give the icon a nice short name, enter anything for the command and click OK.
de: Wenn bei der Erstellung der Konfiguration kein Link zum Starten der Konfiguration erstellt wurde, kann der Benutzer einen Desktop-Launcher für die Konfiguration erstellen, indem er mit der rechten Maustaste auf den Desktop klickt und Launcher erstellen o.ä. wählt. Daraufhin wird ein Dialogfeld zum Erstellen eines Launchers angezeigt. Geben Sie dem Symbol einen schönen kurzen Namen, geben Sie etwas für den Befehl ein und klicken Sie auf OK.

note: type: Plain text
en: After the launcher appears on the desktop, right click on it and then edit it with the user's editor of choice. Edit the file so it looks similar to:
de: Nachdem der Launcher auf dem Desktop erscheint, klicken Sie mit der rechten Maustaste darauf und bearbeiten Sie ihn mit dem Editor Ihrer Wahl. Bearbeiten Sie die Datei so, dass sie ungefähr so aussieht:

note: type: Plain text
en: If the user would like a terminal window to open behind the GUI window then change the Terminal line to:
de: Wenn der Benutzer ein Terminalfenster hinter dem GUI-Fenster öffnen möchte, ändern Sie die Terminal-Zeile in:

note: type: Plain text
en: Displaying a terminal can be handy for error and information messages.
de: Die Anzeige eines Terminals kann für Fehler- und Informationsmeldungen nützlich sein.

note: type: Title ===
en: QtPlasmaC Files
de: QtPlasmaC Dateien

note: type: Plain text
en: After a successful QtPlasmaC installation, the following files are created in the configuration directory:
de: Nach einer erfolgreichen QtPlasmaC-Installation werden die folgenden Dateien im Konfigurationsverzeichnis angelegt:

note: type: Table
en: A HAL file which is run during the shutdown sequence.
de: Eine HAL-Datei, die während der Abschaltsequenz ausgeführt wird.

note: type: Plain text
en: *[AXIS_Y]* Section
de: *[AXIS_Y]* Abschnitt

note: type: Plain text
en: *[AXIS_Z]* Section
de: *[AXIS_Z]* Abschnitt

note: type: delimited block -
en: MIN_LIMIT        = just below the top of the table's slats
    MAX_VELOCITY     = double the value in the corresponding joint
    MAX_ACCELERATION = double the value in the corresponding joint
    OFFSET_AV_RATIO  = 0.5
de: MIN_LIMIT = knapp unterhalb der Oberkante der Tischlatten
    MAX_VELOCITY = das Doppelte des Wertes des entsprechenden Gelenks
    MAX_ACCELERATION = das Doppelte des Wertes des entsprechenden Gelenks
    OFFSET_AV_RATIO = 0,5

note: type: Plain text
en: QtPlasmaC uses the LinuxCNC External Offsets feature for all Z axis motion, and for moving the X and/or Y axis for a consumable change while paused.  For more information on this feature, please read <<cha:external-offsets,External Axis Offsets>> in the LinuxCNC documentation.
de: QtPlasmaC verwendet das LinuxCNC-Feature "Externe Offsets" für alle Z-Achsen-Bewegungen und für das Bewegen der X- und/oder Y-Achse für einen Verschleißteilwechsel im Pausenzustand.  Für weitere Informationen über diese Funktion lesen Sie bitte <<cha:external-offsets,External Axis Offsets>> in der LinuxCNC Dokumentation.

note: type: Title ==
en: QtPlasmaC GUI Overview
de: QtPlasmaC GUI Überblick

note: type: Plain text
en: The following sections will give a general overview of the QtPlasmaC layout.
de: Die folgenden Abschnitte geben einen allgemeinen Überblick über das Layout von QtPlasmaC.

note: type: Title ===
en: Exiting QtPlasmaC
de: Beenden von QtPlasmaC

note: type: Plain text
en: Exiting or shutting down QtPlasmaC is done by either:
de: Das Beenden oder Herunterfahren von QtPlasmaC erfolgt entweder durch:

note: type: Plain text
en: Click the window shutdown button on the window title bar
de: Klicken Sie auf die Schaltfläche zum Herunterfahren des Fensters in der Titelleiste des Fensters

note: type: Plain text
en: Long press the *POWER* button on the MAIN Tab.
de: Drücken Sie lange auf die Taste *POWER* auf der Haupt-Registerkarte (engl. main).

note: type: Plain text
en: A shutdown warning can be displayed on every shutdown by checking the *Exit Warning* checkbox on the <<qt_settings-tab, SETTINGS Tab>>.
de: Eine Warnung beim Herunterfahren kann bei jedem Herunterfahren angezeigt werden, indem Sie das Kontrollkästchen *Beenden-Warnung* auf der Registerkarte <<qt_settings-tab, SETTINGS Tab>> aktivieren.

note: type: Title ===
en: MAIN Tab
de: HAUPT (engl. main)-Registerkarte (engl. tab)

note: type: Plain text
en: Screenshot example of the QtPlasmaC <<qt_main-tab,MAIN Tab>> in *16:9* aspect ratio:
de: Screenshot-Beispiel des QtPlasmaC <<qt_main-tab,MAIN Tab>> im Seitenverhältnis *16:9*:

note: type: Plain text
en: Some functions/features are only used for particular modes and are not displayed if they are not required by the chosen QtPlasmaC mode.
de: Einige Funktionen/Merkmale werden nur für bestimmte Modi verwendet und werden nicht angezeigt, wenn sie für den gewählten QtPlasmaC-Modus nicht erforderlich sind.

note: type: Plain text
en: [underline]*PREVIEW WINDOW*
de: [underline]*VORSCHAU-FENSTER*

note: type: Table
en: The top header is clickable in this area to reveal a drop down menu. It is used to manually select the current material cut parameters. If there are no materials in the material file then only the default material will be displayed.
de: In diesem Bereich kann die obere Kopfzeile angeklickt werden, um ein Dropdown-Menü zu öffnen. Es wird verwendet, um die aktuellen Materialschnittparameter manuell auszuwählen. Wenn in der Materialdatei keine Materialien vorhanden sind, wird nur das Standardmaterial angezeigt.

note: type: Table
en: VEL:
de: Geschw.:

note: type: Table
en: This displays the actual cut feed rate the table is moving at.
de: Hier wird der tatsächliche Schnittvorschub angezeigt, mit dem sich der Tisch bewegt.

note: type: Table
en: This button changes the <<sub:qt-preview-views,preview>> to a top down full table view.
de: Diese Schaltfläche ändert die <<sub:qt-preview-views,preview>> in eine vollständige Tabellenansicht von oben nach unten.

note: type: Table
en: This button changes the <<sub:qt-preview-views,preview>> to an isometric view.
de: Diese Schaltfläche ändert die <<sub:qt-preview-views,preview>> in eine isometrische Ansicht.

note: type: Table
en: This button changes the <<sub:qt-preview-views,preview>> to a top down view.
de: Diese Schaltfläche ändert die <<sub:qt-preview-views,preview>> in eine Ansicht von oben nach unten.

note: type: Table
en: This button pans the <<sub:qt-preview-views,preview>> right.
de: Diese Schaltfläche verschiebt die <<sub:qt-preview-views,Voransicht>> (engl. preview) nach rechts.

note: type: Table
en: This button pans the <<sub:qt-preview-views,preview>> left.
de: Diese Schaltfläche schwenkt die <<sub:qt-preview-views,Voransicht>> nach links.

note: type: Table
en: This button pans the <<sub:qt-preview-views,preview>> up.
de: Diese Schaltfläche schwenkt die <<sub:qt-preview-views,Voransicht>> nach oben.

note: type: Table
en: This button pans the <<sub:qt-preview-views,preview>> down.
de: Diese Schaltfläche schwenkt die <<sub:qt-preview-views,Voransicht>> nach unten.

note: type: Table
en: This button zooms the <<sub:qt-preview-views,preview>>.
de: Diese Schaltfläche vergrößert die <<sub:qt-preview-views,Voransicht>>.

note: type: Table
en: This button clears the live plot.
de: Diese Schaltfläche löscht die Live-Darstellung.

note: type: Plain text
en: [underline]*MACHINE*
de: [underline]*MASCHINE*

note: type: Table
en: POWER
de: POWER (engl. für Leistung oder Strom)

note: type: Table
en: This button turns the GUI on and allows QtPlasmaC/LinuxCNC to control the hardware. +
    Pressing and holding the *POWER* button for longer than two seconds will bring up a dialog to exit the QtPlasmaC application.
de: Diese Schaltfläche schaltet die GUI ein und erlaubt QtPlasmaC/LinuxCNC die Steuerung der Hardware. +
    Wenn Sie die *POWER*-Taste länger als zwei Sekunden gedrückt halten, wird ein Dialog zum Beenden der QtPlasmaC-Anwendung angezeigt.

note: type: Table
en: CYCLE START
de: ZYKLUSSTART

note: type: Table
en: This button starts the cycle for any loaded G-code file.
de: Mit dieser Button startet den Zyklus für jede geladene G-Code-Datei.

note: type: Table
en: CYCLE PAUSE
de: ZYKLUSPAUSE

note: type: Table
en: This button pauses the cycle for any loaded G-code file. +
    If a cycle is paused, this button will display *CYCLE RESUME* and flash. +
    Pressing *CYCLE RESUME* will resume the cycle.
de: Mit diesem Button wird der Zyklus für jede geladene G-Code-Datei angehalten. +
    Wenn ein Zyklus pausiert wird, zeigt dieser Button "ZYKLUS FORTSETZEN (engl. CYCLE RESUME) an und blinkt. +
    Durch Drücken von *ZYKLUS FORTSETZEN* wird der Zyklus fortgesetzt.

note: type: Table
en: CYCLE STOP
de: ZYKLUS STOP (engl. cycle stop)

note: type: Table
en: This box will enable or disable <<qt_mesh-mode,Mesh Mode>> for the cutting of expanded metal. This check box may be enabled or disabled at any time during normal cutting. +
    Mesh mode: +
    - Will require an Arc OK signal to start machine motion. +
    - Will disable the THC. +
    - Will not stop machine motion if the Arc OK signal is lost. +
    - Will automatically select CPA mode if PowerMax communications are being used. +
    For more information see <<qt_mesh-mode,Mesh Mode (expanded metal)>>.
de: Dieses Kästchen aktiviert oder deaktiviert <<qt_mesh-mode,Mesh Mode>> für das Schneiden von Streckmetall. Dieses Kontrollkästchen kann während des normalen Schneidens jederzeit aktiviert oder deaktiviert werden. +
    Mesh-Modus: +
    - Erfordert ein Lichtbogen-OK-Signal, um die Maschinenbewegung zu starten. +
    - Deaktiviert die THC. +
    - Stoppt die Maschinenbewegung nicht, wenn das Lichtbogen-OK-Signal verloren geht. +
    - Wählt automatisch den CPA-Modus, wenn die PowerMax-Kommunikation verwendet wird. +
    Für weitere Informationen siehe <<qt_mesh-mode,Mesh Mode (Streckmetall)>>.

note: type: Table
en: This box will enable or disable <<qt_thc,Auto Volts>>.
de: Mit diesem Feld wird <<qt_thc,Auto Volts>> aktiviert oder deaktiviert.

note: type: Table
en: This box will determine if QtPlasmaC ignores the Arc OK signal.
    This check box may be enabled or disabled at any time during normal cutting.
    Additionally this mode may be enabled or disabled via proper M codes in a running program. +
    Ignore Arc OK mode: +
    - Will not require an Arc OK signal be received before starting machine motion after the "Torch On" signal is given. +
    - Will disable the THC. +
    - Will not stop machine motion if the Arc OK signal is lost. +
    For more information see <<qt_ignore-ok,Ignore Arc Ok>>.
de: Dieses Kontrollkästchen bestimmt, ob QtPlasmaC das Signal Arc OK ignoriert.
    Dieses Kontrollkästchen kann während des normalen Schneidens jederzeit aktiviert oder deaktiviert werden.
    Zusätzlich kann dieser Modus durch entsprechende M-Codes in einem laufenden Programm aktiviert oder deaktiviert werden. +
    Lichtbogen-OK-Modus ignorieren: +
    - Erfordert nicht, dass ein Lichtbogen-OK-Signal empfangen wird, bevor die Maschinenbewegung nach dem Signal "Brenner ein" gestartet wird. +
    - Deaktiviert die THC. +
    - Stoppt die Maschinenbewegung nicht, wenn das Lichtbogen-OK-Signal verloren geht. +
    Für weitere Informationen siehe <<qt_ignore-ok,Ignore Arc Ok>>.

note: type: Table
en: This box enables or disables the ohmic probe input. +
    If the Ohmic Probe input is disabled, the Ohmic Probe LED will still show the status of the probe input, but the Ohmic Probe results will be ignored.
de: Dieses Feld aktiviert oder deaktiviert den Eingang der ohmschen Sonde. +
    Wenn der Eingang der ohmschen Sonde deaktiviert ist, zeigt die LED der ohmschen Sonde weiterhin den Status des Sondeneingangs an, aber die Ergebnisse der ohmschen Sonde werden ignoriert.

note: type: Table
en: This box will enable or disable the communications to a PowerMax.
    This button is only visible if a PM_PORT is configured in the `[POWERMAX]` section of the _<machine_name>_.prefs file.
de: Mit diesem Feld wird die Kommunikation mit einem PowerMax aktiviert oder deaktiviert.
    Diese Schaltfläche ist nur sichtbar, wenn im Abschnitt [POWERMAX] der Datei _<machine_name>_.prefs ein PM_PORT konfiguriert ist.

note: type: Table
en: This button will open a FILE OPEN panel over the PREVIEW WINDOW.
de: Diese Schaltfläche öffnet ein DATEI-ÖFFNEN-Panel über dem VORSCHAU-FENSTER.

note: type: Table
en: RELOAD
de: NEU LADEN

note: type: Table
en: This button will reload the currently loaded G-code File.
de: Diese Schaltfläche lädt die aktuell geladene G-Code-Datei neu.

note: type: Table
en: Max Starts
de: Max. Starts

note: type: Table
en: Probe Speed
de: Sonden-Geschwindigkeit

note: type: Table
en: Max. Speed
de: Max. Geschwindigkeit

note: type: Plain text
en: This tab is used to display GUI configuration parameters, button text, and shutdown text that are modified infrequently as well as some utility buttons.
de: Diese Registerkarte wird verwendet, um GUI-Konfigurationsparameter, Schaltflächentext und Herunterfahrtext anzuzeigen, die selten geändert werden, sowie einige Dienstprogrammschaltflächen.

note: type: Table
en: This radio button allows the user to enable or disable whether a warning will always be displayed during shutdown. +
    It is possible to add a custom message to the warning by editing the <<qt_exit-warning,EXIT WARNING MESSAGE>> in the *[GUI_OPTIONS]* section of the _<machine_name>_.prefs file. +
    The custom message can be made multi-line by adding a "\" between lines.
de: Mit diesem Optionsfeld kann der Benutzer festlegen, ob beim Herunterfahren immer eine Warnung angezeigt werden soll oder nicht. +
    Es ist möglich, der Warnung eine benutzerdefinierte Nachricht hinzuzufügen, indem man die <<qt_exit-warning,EXIT WARNING MESSAGE>> im *[GUI_OPTIONS]* Abschnitt der Datei _<machine_name>_.prefs bearbeitet. +
    Die benutzerdefinierte Nachricht kann durch Hinzufügen eines "\" zwischen den Zeilen mehrzeilig gemacht werden.

note: type: Plain text
en: This section shows the text that appears on the shutdown dialog if the *Exit Warning* is enabled .
de: Dieser Abschnitt zeigt den Text, der im Dialogfeld zum Herunterfahren angezeigt wird, wenn die Option *Exit-Warnung* aktiviert ist.

note: type: Plain text
en: [underline]*UTILITIES*
de: [unterstreichen]*DIENSTPROGRAMME*

note: type: Plain text
en: The **SET OFFSETS** button is used if the table has a laser or camera for sheet alignment, a scribe, or uses offset probing. The required offsets for these peripherals need to be applied by following the procedure described in <<peripheral-offsets,Peripheral Offsets>>.
de: Die Schaltfläche **OFFSETS SETZEN** wird verwendet, wenn der Tisch mit einem Laser oder einer Kamera zur Bogenausrichtung (engl. sheet alignment), einem Ritzgerät (engl. scribe) oder einem Offset-Taster ausgestattet ist. Die erforderlichen Offsets für diese Peripheriegeräte müssen nach dem unter << peripheral-offsets, Peripherie-Offsets>> beschriebenen Verfahren angewendet werden.

note: type: Plain text
en: QtPlasmaC will automatically add a line of G-code to move the Z axis to the correct height at the beginning of every G-code program.
de: QtPlasmaC fügt am Anfang jedes G-Code-Programms automatisch eine Zeile G-Code ein, um die Z-Achse auf die richtige Höhe zu bringen.

note: type: Plain text
en: *Version Information* - QtPlasmaC will display versioning information in the title of the main window. The information will be displayed as followed "QtPlasmaC vN.XXX.YYY - powered by QtVCP on LinuxCNC vZ.Z.Z" where N is the version of QtPlasmaC, XXX is the version of the HAL component (PlasmaC.comp), YYY is the GUI version, and Z.Z.Z is the version of LinuxCNC.
de: *Versionsinformationen* - QtPlasmaC zeigt im Titel des Hauptfensters Informationen zur Versionierung an. Die Informationen werden wie folgt angezeigt "QtPlasmaC vN.XXX.YYY - powered by QtVCP on LinuxCNC vZ.Z.Z", wobei N die Version von QtPlasmaC, XXX die Version der HAL-Komponente (PlasmaC.comp), YYY die GUI-Version und Z.Z.Z die Version von LinuxCNC ist.

note: type: Title ===
en: Units Systems
de: Einheitensysteme

note: type: Plain text
en: If the user is attempting to run a G-code file that is in the "other" units system then all parameters including the material file parameters are still required to be in the native machines units. Any further conversions necessary to run the G-code file will be handled automatically by the G-code filter program.
de: Wenn der Benutzer versucht, eine G-Code-Datei auszuführen, die sich im „anderen“ Einheitensystem befindet, müssen alle Parameter, einschließlich der Materialdateiparameter, immer noch in den nativen Maschineneinheiten vorliegen. Alle weiteren Konvertierungen, die zum Ausführen der G-Code-Datei erforderlich sind, werden automatisch vom G-Code-Filterprogramm durchgeführt.

note: type: Plain text
en: For example: if a user had a metric machine and wished to run a G-code file that was set up to cut 1/4" thick material using imperial units (inch - G20) then the user with the metric machine would need to ensure that either the material number in the G-code file was set to the corresponding metric material to be cut, or that a new material is created with the correct metric parameters for the metric material to be cut. If the metric user wanted to cut the G-code file using imperial material, then the new material parameters would need to be converted from imperial units to metric when they are entered.
de: Beispiel: Wenn ein Benutzer eine metrische Maschine hat und eine G-Code-Datei ausführen möchte, die für das Schneiden von 1/4" dickem Material in zölligen Einheiten (Zoll - G20) eingerichtet ist, dann muss der Benutzer mit der metrischen Maschine sicherstellen, dass entweder die Materialnummer in der G-Code-Datei auf das entsprechende zu schneidende metrische Material eingestellt ist oder dass ein neues Material mit den richtigen metrischen Parametern für das zu schneidende metrische Material erstellt wird. Wenn der metrische Benutzer die G-Code-Datei mit zölligem Material schneiden wollte, müssten die neuen Materialparameter bei ihrer Eingabe von zölligen Einheiten in metrische umgewandelt werden.

note: type: Title ===
en: Preamble and Postamble Codes
de: Präambel und Postambel Codes

note: type: Plain text
en: Metric:
de: Metrisch:

note: type: Plain text
en: A detailed explanation of each G-code can be found in the docs link:../gcode/g-code.html[here].
de: Eine ausführliche Erläuterung der einzelnen G-Codes finden Sie unter dem Link docs:../gcode/g-code.html[hier].

note: type: Plain text
en: Note that throughout this user guide there are several additional recommendations for codes that are prudent to add to both the preamble and postamble depending on the features the user wishes to utilize.
de: Beachten Sie, dass in diesem Benutzerhandbuch mehrere zusätzliche Empfehlungen für Codes gegeben werden, die je nach den vom Benutzer gewünschten Funktionen sowohl in der Präambel als auch in der Postambel hinzugefügt werden sollten.

note: type: Title ===
en: Mandatory Codes
de: Obligatorische Codes

note: type: Plain text
en: Aside from the preamble code, postamble code, and X/Y motion code, the only mandatory G-code syntax for QtPlasmaC to run a G-code program using a torch for cutting is *M3 $0 S1* to begin a cut and *M5 $0* to end a cut.
de: Abgesehen vom Präambelcode, Postambelcode und X/Y-Bewegungscode ist die einzige obligatorische G-Code-Syntax für QtPlasmaC zur Ausführung eines G-Code-Programms mit einem Brenner zum Schneiden *M3 $0 S1*, um einen Schnitt zu beginnen, und *M5 $0*, um einen Schnitt zu beenden.

note: type: Plain text
en: For backwards compatibility it is permissible to use *M3 S1* in lieu of *M3 $0 S1* to begin a cutting job and *M5* in lieu of *M5 $0* to end a cutting job. Note that this applies to cutting jobs only, for scribe and spotting jobs the *$_n_* tool identifier is mandatory.
de: Aus Gründen der Abwärtskompatibilität ist es zulässig, *M3 S1* anstelle von *M3 $0 S1* zu verwenden, um einen Schneidauftrag zu beginnen, und *M5* anstelle von *M5 $0*, um einen Schneidauftrag zu beenden. Beachten Sie, dass dies nur für Schneideaufträge gilt, für Ritz- und Tuschieraufträge ist die Werkzeugkennung *$_n_* obligatorisch.

note: type: Title ===
en: Coordinates
de: Koordinaten

note: type: Plain text
en: See <<qt_z-settings,recommended Z axis>> settings.
de: Siehe <<qt_z-settings,empfohlene Z-Achse>> Einstellungen.

note: type: Plain text
en: If the machine has home switches then it will move to the specified home coordinates when the Joints are homed.
de: Wenn die Maschine mit Referenzfahrtschaltern ausgestattet ist, fährt sie zu den angegebenen Referenzpunktkoordinaten, wenn die Gelenke referenziert werden.

note: type: Plain text
en: Depending on the machine's configuration there will either be a *Home All* button or each axis will need to be homed individually. Use the appropriate button/buttons to home the machine.
de: Je nach Konfiguration der Maschine gibt es entweder eine Schaltfläche *Home All* oder jede Achse muss einzeln referenziert werden. Benutzen Sie die entsprechende(n) Taste(n), um die Maschine zu referenzieren.

note: type: Plain text
en: As mentioned in the <<qt_initial-setup,Initial Setup>> section, it is recommended that the first time QtPlasmaC is used that the user ensure there is nothing below the torch then jog the Z axis down until it stops at the Z axis MINIMUM_LIMIT then click the 0 next to the Z axis DRO to *Touch Off* with the Z axis selected to set the Z axis at zero offset. This should not need to be done again.
de: Wie im Abschnitt <<qt_initial-Setup, Ersteinrichtung>> erwähnt, wird empfohlen, dass der Benutzer bei der ersten Verwendung von QtPlasmaC sicherstellt, dass sich unter der Taschenlampe nichts befindet, und dann die Z-Achse nach unten zieht, bis sie an der Z-Achse anhält, MINIMUM_LIMIT dann auf die 0 neben der Z-Achsen-DRO klicken, um *Touch Off* mit der Z-Achse auszuwählen, um die Z-Achse auf Null zu setzen. Dies sollte nicht erneut getan werden müssen.

note: type: Plain text
en: If the user intends to place the material randomly on the table then the user must *Touch Off* the X and Y axes at the appropriate position before starting the program.
de: Wenn der Benutzer beabsichtigt, das Material willkürlich auf dem Tisch zu platzieren, muss er die X- und Y-Achse an der entsprechenden Position *abtasten*, bevor er das Programm startet.

note: type: Plain text
en: QtPlasmaC is able to read a material file to load all the required cut parameters. To enable to G-code file to use the cut feed rate setting from the cut parameters use the following code in the G-code file:
de: QtPlasmaC ist in der Lage, eine Materialdatei zu lesen, um alle erforderlichen Schnittparameter zu laden. Damit die G-Code-Datei die Schnittvorschubeinstellung aus den Schnittparametern verwenden kann, verwenden Sie den folgenden Code in der G-Code-Datei:

note: type: Plain text
en: It is possible to use the standard G-code *F* word to set the cut feed rate as follows:
de: Es ist möglich, den Standard-G-Code *F* zu verwenden, um die Schnittvorschubgeschwindigkeit wie folgt einzustellen:

note: type: Plain text
en: If the *F* word is used and the *F* word value does not match the cut feed rate of the selected material then a warning dialog will indicate this during loading of the G-code file.
de: Wenn das *F*-Wort verwendet wird und der Wert des *F*-Wortes nicht mit dem Schnittvorschub des ausgewählten Materials übereinstimmt, wird beim Laden der G-Code-Datei ein Warndialog angezeigt.

note: type: Title ===
en: Material File
de: Material-Datei

note: type: Plain text
en: Material handling uses a material file that was created for the machine configuration when the configuration wizard was ran and allows the user to conveniently store known material settings for easy recall either manually or automatically via G-code. The resulting <<qt_material-file, material file>> is named *<machine_name>_material.cfg*.
de: Die Materialverwaltung verwendet eine Materialdatei, die für die Maschinenkonfiguration erstellt wurde, als der Konfigurationsassistent ausgeführt wurde, und ermöglicht es dem Benutzer, bekannte Materialeinstellungen bequem zu speichern, um sie entweder manuell oder automatisch über G-Code abzurufen. Die resultierende <<qt_material-file, material file>> trägt den Namen *<Maschinen_name>_material.cfg*.

note: type: Plain text
en: QtPlasmaC does not require the use of a material file. Instead, the user could change the cut parameters manually from the MATERIAL section of the <<qt_parameters-tab,PARAMETERS Tab>>.  It is also not required to use the automatic material changes.  If the user does not wish to use this feature they can simply omit the material change codes from the G-code file.
de: QtPlasmaC erfordert nicht die Verwendung einer Materialdatei. Stattdessen kann der Benutzer die Schnittparameter manuell im Abschnitt MATERIAL des <<qt_parameters-tab,PARAMETERS Tab>> ändern.  Es ist auch nicht erforderlich, die automatischen Materialänderungen zu verwenden.  Wenn der Benutzer diese Funktion nicht nutzen möchte, kann er die Materialänderungscodes in der G-Code-Datei einfach weglassen.

note: type: Plain text
en: It is also possible to not use the material file and <<qt_magic-comments,automatically load materials>> from within the G-code file.
de: Es ist auch möglich, die Materialdatei nicht zu verwenden und <<qt_magic-comments,material automatisch laden>> aus der G-Code-Datei zu verwenden.

note: type: Plain text
en: Material numbers in the materials file do not need to be consecutive nor do they need to be in numerical order.
de: Die Materialnummern in der Materialdatei müssen nicht fortlaufend sein und auch nicht in numerischer Reihenfolge stehen.

note: type: Plain text
en: The following variables are mandatory and an error message will appear if any are not found when the material file is loaded.
de: Die folgenden Variablen sind obligatorisch und eine Fehlermeldung wird angezeigt, wenn sie beim Laden der Materialdatei nicht gefunden werden.

note: type: Plain text
en: The following variables are optional. If they are not detected or have no value assigned, they will be assigned a value of 0 and no error message will appear.
de: Die folgenden Variablen sind optional. Werden sie nicht erkannt oder ist ihnen kein Wert zugewiesen, wird ihnen der Wert 0 zugewiesen und es erscheint keine Fehlermeldung.

note: type: Plain text
en: Material numbers 1000000 and above are reserved for temporary materials.
de: Die Materialnummern 1000000 und höher sind für temporäre Materialien reserviert.

note: type: Plain text
en: It is the responsibility of the operator to ensure that the variables are included if they are a requirement for the G-code to be run.
de: Es liegt in der Verantwortung des Anwenders, dafür zu sorgen, dass die Variablen einbezogen werden, wenn sie eine Voraussetzung für die Ausführung des G-Codes sind.

note: type: Plain text
en: The material file uses the following format:
de: Die Materialdatei hat das folgende Format:

note: type: Plain text
en: It is possible to add new material, delete material, or edit existing material from the <<qt_parameters-tab,PARAMETERS tab.>> It is also possible to achieve this by using <<qt_magic-comments,magic comments>> in a g-Code file.
de: Es ist möglich, neues Material hinzuzufügen, Material zu löschen oder vorhandenes Material auf der Registerkarte <<qt_parameters-tab,PARAMETERS>> zu bearbeiten. Es ist auch möglich, dies durch die Verwendung von <<qt_magic-comments,magic comments>> in einer G-Code-Datei zu erreichen.

note: type: Plain text
en: The material file may be edited with a text editor while LinuxCNC is running. After any changes have been saved, press *Reload* in the MATERIAL section of the <<qt_parameters-tab, PARAMETERS Tab>> to reload the material file.
de: Die Materialdatei kann mit einem Texteditor bearbeitet werden, während LinuxCNC läuft. Nachdem alle Änderungen gespeichert wurden, drücken Sie *Reload* im Abschnitt MATERIAL der <<qt_parameters-tab, PARAMETERS Tab>>, um die Materialdatei neu zu laden.

note: type: Title ===
en: Manual Material Handling
de: Manuelles Materialhandling

note: type: Plain text
en: For manual material handling, the user would manually select the material from the materials list in the MATERIAL section of the <<qt_parameters-tab,PARAMETERS Tab>> before starting the G-code program.  In addition to selecting materials with materials list in the MATERIAL section of the <<qt_parameters-tab, PARAMETERS Tab>>, the user could use the MDI to change materials with the following command:
de: Bei der manuellen Materialhandhabung würde der Benutzer das Material manuell aus der Materialliste im Abschnitt MATERIAL des <<qt_parameters-tab,PARAMETERS Tab>> auswählen, bevor er das G-Code-Programm startet.  Zusätzlich zur Auswahl von Materialien aus der Materialliste im Abschnitt MATERIAL des <<qt_parameters-tab, PARAMETERS Tab>> kann der Benutzer die MDI verwenden, um Materialien mit dem folgenden Befehl zu ändern:

note: type: Plain text
en: The following code is the minimum code necessary to have a successful cut using the manual material selection method:
de: Der folgende Code ist der Mindestcode, der für einen erfolgreichen Schnitt mit der manuellen Materialauswahlmethode erforderlich ist:

note: type: Plain text
en: Manual material handling will restrict the user to only one material for the entire job.
de: Bei der manuellen Materialhandhabung kann der Benutzer nur ein Material für die gesamte Arbeit verwenden.

note: type: Title ===
en: Automatic Material Handling
de: Automatisches Materialhandling

note: type: Plain text
en: For automatic material handling, the user would add commands to their G-code file which will enable QtPlasmaC to change the material automatically.
de: Für die automatische Materialhandhabung fügt der Benutzer seiner G-Code-Datei Befehle hinzu, die es QtPlasmaC ermöglichen, das Material automatisch zu ändern.

note: type: Plain text
en: The following codes may be used to allow QtPlasmaC to automatically change materials:
de: Die folgenden Codes können verwendet werden, um QtPlasmaC einen automatischen Materialwechsel zu ermöglichen:

note: type: Plain text
en: *M190 P__n__* - Changes the currently displayed material to material number _n_.
de: *M190 P__n__* - Ändert das aktuell angezeigte Material auf die Materialnummer _n_.

note: type: Plain text
en: *M66 P3 L3 Q1* - Adds a small delay (1 second in this example) to wait for QtPlasmaC to confirm that it successfully changed materials.
de: *M66 P3 L3 Q1* - Fügt eine kleine Verzögerung hinzu (1 Sekunde in diesem Beispiel), um zu warten, bis QtPlasmaC bestätigt, dass es erfolgreich Materialien gewechselt hat.

note: type: Plain text
en: *F#<_hal[plasmac.cut-feed-rate]>* - Sets the cut feed rate to the feed rate shown in the MATERIAL section of the <<qt_parameters-tab,PARAMETERS Tab>>.
de: *F#<_hal[plasmac.cut-feed-rate]>* - Setzt den Schnittvorschub auf den Vorschub, der im Abschnitt MATERIAL der <<qt_parameters-tab,PARAMETERS Tab>> angegeben ist.

note: type: Plain text
en: For automatic material handling, the codes MUST be applied in the order shown.  If a G-code program is loaded which contains one or more material change commands then the first material will be displayed in the top header of the PREVIEW WINDOW on the <<qt_main-tab,MAIN Tab>> as the program is loading. The following code is the minimum code necessary to have a successful cut using the automatic material selection method:
de: Für die automatische Materialverarbeitung MÜSSEN die Codes in der angegebenen Reihenfolge angewendet werden.  Wenn ein G-Code-Programm geladen wird, das einen oder mehrere Materialwechselbefehle enthält, wird das erste Material in der oberen Kopfzeile des VORSCHAU-FENSTERS auf der <<qt_main-tab,MAIN Tab>> angezeigt, während das Programm geladen wird. Der folgende Code ist der Mindestcode, der für einen erfolgreichen Schnitt mit der automatischen Materialauswahlmethode erforderlich ist:

note: type: Title ===
en: Material Addition Via Magic Comments In G-code
de: Material hinzufügen Via Magic Kommentare in G-Code

note: type: Plain text
en: By using "magic comments" in a G-code file it is possible to do the following:
de: Durch die Verwendung von "magischen Kommentaren" in einer G-Code-Datei ist es möglich, das Folgende zu tun:

note: type: Plain text
en: Use one or more temporary materials.
de: Verwendung eines oder mehrerer vorübergehender Materialien.

note: type: Plain text
en: Temporary materials are numbered automatically by QtPlasmaC and the material change will also be done by QtPlasmaC and should not be added to the G-code file by CAM software or otherwise.  The material numbers begin at 1000000 and are incremented for each temporary material.  It is not possible to save a temporary material, however the user could create a new material while a temporary material is displayed and it will use the settings from the temporary material as the defaults.
de: Temporäre Materialien werden von QtPlasmaC automatisch nummeriert und der Materialwechsel wird ebenfalls von QtPlasmaC durchgeführt und sollte nicht durch CAM-Software oder anderweitig zur G-Code-Datei hinzugefügt werden.  Die Materialnummern beginnen bei 1000000 und werden für jedes temporäre Material hochgezählt.  Es ist nicht möglich, ein temporäres Material zu speichern. Der Benutzer kann jedoch ein neues Material erstellen, während ein temporäres Material angezeigt wird, und es wird die Einstellungen des temporären Materials als Standardwerte verwenden.

note: type: Plain text
en: The entire comment must be in parentheses.
de: Der gesamte Kommentar muss in Klammern gesetzt werden.

note: type: Plain text
en: The equals sign must immediately follow each parameter with no space.
de: Das Gleichheitszeichen muss unmittelbar nach jedem Parameter stehen, ohne Leerzeichen.

note: type: Plain text
en: The mandatory parameters must be in the magic comment (for option 0, *na* is optional and *nu* is not used).
de: Die obligatorischen Parameter müssen im magischen Kommentar enthalten sein (für Option 0 ist *na* optional und *nu* wird nicht verwendet).

note: type: Plain text
en: There can be any number and type of magic comments in a G-code file.
de: Eine G-Code-Datei kann eine beliebige Anzahl und Art von magischen Kommentaren enthalten.

note: type: Plain text
en: If option 0 is to be used in addition to option 1 and/or option 2 then all option 0 must appear after all option 1 or all option 2 in the G-code file.
de: Wenn die Option 0 zusätzlich zu Option 1 und/oder Option 2 verwendet werden soll, müssen alle Optionen 0 nach allen Optionen 1 oder allen Optionen 2 in der G-Code-Datei erscheinen.

note: type: Plain text
en: The options are:
de: Die Optionen sind:

note: type: Table
en: Creates a temporary default material. +
    Material information added with this option will be discarded by a LinuxCNC restart or materials reload.
    They may also be overwritten by a new G-code file that has temporary materials.
de: Erzeugt ein temporäres Standardmaterial. +
    Die mit dieser Option hinzugefügten Materialinformationen werden durch einen LinuxCNC-Neustart oder ein Neuladen der Materialien verworfen.
    Sie können auch durch eine neue G-Code-Datei überschrieben werden, die temporäre Materialien enthält.

note: type: Table
en: Adds a new material if the number specified does not exist.
de: Fügt ein neues Material hinzu, wenn die angegebene Nummer nicht vorhanden ist.

note: type: Table
en: Overwrites an existing material if the number specified exists. +
    Adds a new material if the number specified does not exist.
de: Überschreibt ein vorhandenes Material, wenn die angegebene Nummer existiert. +
    Fügt ein neues Material hinzu, wenn die angegebene Nummer nicht vorhanden ist.

note: type: Plain text
en: Mandatory parameters are:
de: Obligatorische Parameter sind:

note: type: Table
en: Selects the option to be used.
de: Wählt die zu verwendende Option aus.

note: type: Table
en: Sets the material number (not used for option 0).
de: Legt die Materialnummer fest (wird bei Option 0 nicht verwendet).

note: type: Table
en: Sets the material name (optional for option 0).
de: Legt den Materialnamen fest (optional für Option 0).

note: type: Table
en: Sets the pierce height.
de: Legt die Höhe des Durchstichs fest.

note: type: Table
en: Sets the pierce delay.
de: Legt die Durchdringungsverzögerung fest.

note: type: Table
en: Sets the cut height.
de: Legt die Schnitthöhe fest.

note: type: Table
en: Sets the feed rate.
de: Legt die Vorschubgeschwindigkeit fest.

note: type: Plain text
en: Optional parameters are:
de: Optionale Parameter sind:

note: type: Table
en: Sets the kerf width.
de: Legt die Schnittspaltbreite (engl. kerf width) fest.

note: type: Table
en: Sets the THC status (0=disabled, 1=enabled).
de: Legt den THC-Status fest (0=deaktiviert, 1=aktiviert).

note: type: Table
en: Sets the cut amps.
de: Legt die Stromstärke für das Schneiden fest (engl. cut amps) fest.

note: type: Table
en: Sets the cut voltage.
de: Setzt die Spannung für das Schneiden (engl. cut voltage).

note: type: Table
en: Sets the pause at end delay.
de: Legt die Verzögerung für die Pause am Ende fest.

note: type: Table
en: Sets the gas pressure (PowerMax).
de: Stellt den Gasdruck ein (PowerMax).

note: type: Table
en: Sets the cut mode (PowerMax).
de: Legt den Schneid-Modus (engl. cut mode) fest (PowerMax).

note: type: Plain text
en: A complete example:
de: Ein vollständiges Beispiel:

note: type: delimited block -
en: (o=0, nu=2, na=5mm Mild Steel 40A, ph=3.1, pd=0.1, ch=0.75, fr=3000, kw=0.5, th=1, ca=45, cv=110, pe=0.1, gp=5, cm=1, jh=0, jd=0)
de: (o=0, nu=2, na=5mm Baustahl (engl. mild steel) 40A, ph=3.1, pd=0.1, ch=0.75, fr=3000, kw=0.5, th=1, ca=45, cv=110, pe=0.1, gp=5, cm=1, jh=0, jd=0)

note: type: Plain text
en: If a temporary material has been specified in a G-code file then the material change line (M190...) and wait for change line (M66...) will be added by the G-code filter and are not required in the G-code file.
de: Wenn in einer G-Code-Datei ein temporäres Material angegeben wurde, werden die Zeilen für Materialwechsel (M190...) und Warten auf Wechsel (M66...) vom G-Code-Filter hinzugefügt und sind in der G-Code-Datei nicht erforderlich.

note: type: Title ===
en: Material Converter
de: Material Konverter

note: type: Plain text
en: This application is used to convert existing tool tables into QtPlasmaC material files. It can also create a material file from manual user input to entry fields.
de: Diese Anwendung dient der Konvertierung bestehender Werkzeugtabellen in QtPlasmaC Materialdateien. Sie kann auch eine Materialdatei aus manuellen Benutzereingaben in Eingabefeldern erstellen.

note: type: Plain text
en: At this stage the only conversions available are for tool tables exported from either SheetCam or Fusion 360.
de: In diesem Stadium sind nur Konvertierungen für Werkzeugtabellen verfügbar, die aus SheetCam oder Fusion 360 exportiert wurden.

note: type: Plain text
en: If the user has a format from a different CAM software they would like converted, create a *New Topic* in the https://forum.linuxcnc.org/plasmac[PlasmaC forum] section of the https://forum.linuxcnc.org/[LinuxCNC forum] to request this addition.
de: Wenn der Benutzer ein Format aus einer anderen CAM-Software hat, das er konvertiert haben möchte, erstellen Sie ein *Neues Thema* im Abschnitt https://forum.linuxcnc.org/plasmac[PlasmaC-Forum] des https://forum.linuxcnc.org/[LinuxCNC-Forum], um diese Ergänzung zu beantragen.

note: type: Plain text
en: Material Converter may be run from a terminal using one of the two following methods.
de: Der Materialkonverter kann mit einer der beiden folgenden Methoden von einem Terminal aus gestartet werden.

note: type: Plain text
en: For a run in place installation enter the following two commands in a terminal window:
de: Geben Sie für eine "run in place"-Installation die folgenden beiden Befehle in ein Terminalfenster ein:

note: type: Plain text
en: This will bring up the Material Converter Main dialog box with Manual selected as the default.
de: Daraufhin wird das Hauptdialogfeld Materialkonverter mit der Standardeinstellung Manuell angezeigt.

note: type: Plain text
en: Select one of:
de: Wählen Sie eines aus:

note: type: Plain text
en: *Manual* - to manually create a new material file.
de: *Manuell* - um manuell eine neue Materialdatei zu erstellen.

note: type: Plain text
en: *SheetCam* - to convert a SheetCam tool file.
de: *SheetCam* - um eine SheetCam-Werkzeugdatei zu konvertieren.

note: type: Plain text
en: For SheetCam only, select whether the user requires a metric or imperial output file.
de: Wählen Sie nur für SheetCam, ob der Benutzer eine metrische oder imperiale Ausgabedatei benötigt.

note: type: Plain text
en: *Fusion 360* - to convert a Fusion 360 tool file.
de: *Fusion 360* - zum Konvertieren einer Fusion 360 Werkzeugdatei.

note: type: Plain text
en: To convert:
de: Um zu konvertieren:

note: type: Plain text
en: Select the Input File to be converted, press *INPUT* to bring up a file selector or directly enter the file in the entry box.
de: Wählen Sie die zu konvertierende Eingabedatei, drücken Sie *INPUT*, um eine Dateiauswahl aufzurufen, oder geben Sie die Datei direkt in das Eingabefeld ein.

note: type: Plain text
en: Select the Output File to write to, press *OUTPUT* to bring up a file selector or directly enter the file in the entry box.  This would normally be ~/linuxcnc/configs/<machine_name>_material.cfg.  If necessary, the user could select a different file and hand edit the <machine_name>_material.cfg file.
de: Wählen Sie die Ausgabedatei, in die geschrieben werden soll, drücken Sie *OUTPUT*, um eine Dateiauswahl aufzurufen, oder geben Sie die Datei direkt in das Eingabefeld ein. Normalerweise ist dies ~/linuxcnc/configs/<Maschinenname>_material.cfg. Falls erforderlich, kann der Benutzer eine andere Datei auswählen und die Datei <Maschinenname>_material.cfg manuell bearbeiten.

note: type: Plain text
en: Click *CREATE/CONVERT* and the new material file will be created.
de: Klicken Sie auf *CREATE/CONVERT* und die neue Materialdatei wird erstellt.

note: type: Plain text
en: For both a Manual creation or a Fusion 360 conversion, a dialog box will show with all available parameters displayed for input.  Any entry marked with pass:[***] is mandatory and all other entries are optional depending on the user's configuration needs.
de: Sowohl bei einer manuellen Erstellung als auch bei einer Fusion 360-Konvertierung wird ein Dialogfeld mit allen verfügbaren Parametern angezeigt, die eingegeben werden können. Jeder mit pass:[***] markierte Eintrag ist obligatorisch, alle anderen Einträge sind je nach den Konfigurationsanforderungen des Benutzers optional.

note: type: Plain text
en: If the user selects ~/linuxcnc/configs/<machine_name>_material.cfg and the file already exists, it will be overwritten.
de: Wenn der Benutzer ~/linuxcnc/configs/<Maschinenname>_material.cfg auswählt und die Datei bereits existiert, wird sie überschrieben.

note: type: Plain text
en: QtPlasmaC has the ability to use a USB camera to set the origin with or without rotation compensation. The CAMERA button will be enabled after the machine is homed.
de: QtPlasmaC hat die Möglichkeit, eine USB-Kamera zu verwenden, um den Ursprung mit oder ohne Rotationskompensation festzulegen. Die Schaltfläche CAMERA wird aktiviert, nachdem das Gerät referenziert wurde.

note: type: Plain text
en: To use this feature, the user must set the camera's offset from the torch center by following the procedure described in <<peripheral-offsets,Peripheral Offsets>>.
de: Um diese Funktion zu nutzen, muss der Benutzer den Versatz der Kamera von der Brennermitte einstellen, indem er das unter <<peripheral-offsets,Peripherie-Offsets>> beschriebene Verfahren befolgt.

note: type: Plain text
en: where _n.n_ is distance from the center line of the torch to the camera's cross hairs.
de: wobei _n.n_ der Abstand von der Mittellinie des Brenners zum Fadenkreuz der Kamera ist.

note: type: Plain text
en: *To set the origin with zero rotation:*
de: *Ursprung mit Null-Drehung festlegen:*

note: type: Plain text
en: Jog until the cross hairs are on top of the desired origin point.
de: Bewegen Sie die Maus, bis sich das Fadenkreuz über dem gewünschten Ursprungspunkt befindet.

note: type: Plain text
en: Press *MARK EDGE*. The *MARK EDGE* button label will change to *SET ORIGIN* and the *GOTO ORIGIN* button will be disabled.
de: Drücken Sie *MARK EDGE*. Die Beschriftung der Schaltfläche *MARK EDGE* ändert sich in *SET ORIGIN* und die Schaltfläche *GOTO ORIGIN* wird deaktiviert.

note: type: Plain text
en: Press *SET ORIGIN*. The *SET ORIGIN* button label will change to *MARK EDGE* and the *GOTO ORIGIN* button will be enabled.
de: Drücken Sie *Ursprung festlegen*. Die Beschriftung der Schaltfläche *Herkunft festlegen* ändert sich in *KANTE MARKIEREN* und die Schaltfläche *Herkunft gehen* wird aktiviert.

note: type: Plain text
en: The torch will now move to the X0 Y0 position.
de: Der Brenner fährt nun in die Position X0 Y0.

note: type: Plain text
en: The offset is now successful set.
de: Der Offset ist nun erfolgreich gesetzt.

note: type: Plain text
en: *To set the origin with rotation:*
de: *Ursprung mit Drehung festlegen:*

note: type: Plain text
en: Jog until the cross hairs are at the edge of the material a suitable distance away from the desired origin point.
de: Bewegen Sie das Fadenkreuz, bis es sich am Rand des Materials in einem angemessenen Abstand zum gewünschten Ursprungspunkt befindet.

note: type: Plain text
en: Jog until the cross hairs are at the origin point of the material.
de: Bewegen Sie die Maus, bis sich das Fadenkreuz am Ausgangspunkt des Materials befindet.

note: type: Plain text
en: The offset is now successfully set.
de: Der Offset ist nun erfolgreich eingestellt.

note: type: Plain text
en: In the CAMVIEW panel, the mouse can affect the cross hairs and the zoom level as follows:
de: Im CAMVIEW-Bedienfeld kann die Maus das Fadenkreuz und die Zoomstufe wie folgt beeinflussen:

note: type: Plain text
en: Mouse Wheel Scroll - Change cross hair diameter.
de: Mausrad scrollen - Durchmesser des Fadenkreuzes ändern.

note: type: Plain text
en: Mouse Wheel Button Double Click - Restores cross hair diameter to default.
de: Doppelklick mit der Mausradtaste - Stellt den Fadenkreuzdurchmesser auf den Standardwert zurück.

note: type: Plain text
en: Mouse Left Button Clicked + Wheel Scroll - Changes camera zoom level.
de: Linke Maustaste gedrückt + Scrollrad - Ändert die Zoomstufe der Kamera.

note: type: Plain text
en: Mouse Left Button Clicked + Wheel Button Double Click - Restores default camera zoom level.
de: Klicken mit der linken Maustaste + Doppelklick mit der Radtaste - Stellt die Standard-Zoomstufe der Kamera wieder her.

note: type: Plain text
en: QtPlasmaC has the ability to use a laser to set the origin with or without rotation compensation. The LASER button will be enabled after the machine is homed.
de: QtPlasmaC hat die Möglichkeit, einen Laser zum Setzen des Ursprungs mit oder ohne Rotationskompensation zu verwenden. Die LASER-Schaltfläche wird aktiviert, nachdem die Maschine referenziert wurde.

note: type: Plain text
en: To use this feature, the user must set the laser's offset from the torch center by following the procedure described in <<peripheral-offsets,Peripheral Offsets>>.
de: Um diese Funktion zu nutzen, muss der Benutzer den Versatz des Lasers von der Brennermitte einstellen, indem er das unter <<peripheral-offsets,Peripherie-Offsets>> beschriebene Verfahren befolgt.

note: type: Plain text
en: Additionally, the laser can be tied to any available output to turn the laser on and off via a HAL pin with the following name:
de: Zusätzlich kann der Laser über einen HAL-Pin mit folgendem Namen an einen beliebigen Ausgang angeschlossen werden, um den Laser ein- und auszuschalten:

note: type: Plain text
en: Click the *LASER* button.
de: Klicken Sie auf die Schaltfläche *LASER*.

note: type: Plain text
en: *LASER* button label will change to *MARK EDGE* and the HAL pin named qtplasmac.laser_on will be turned on.
de: Die Beschriftung des Buttons *LASER* ändert sich zu *MARK EDGE* und der HAL-Pin namens qtplasmac.laser_on wird eingeschaltet.

note: type: Plain text
en: Jog until the laser cross hairs are on top of the desired origin point.
de: Bewegen Sie sich, bis sich das Fadenkreuz des Lasers über dem gewünschten Ursprungspunkt befindet.

note: type: Plain text
en: Press *MARK EDGE*. The *MARK EDGE* button label will change to *SET ORIGIN*.
de: Drücken Sie *MARK EDGE*. Die Beschriftung der Taste *MARK EDGE* ändert sich in *SET ORIGIN*.

note: type: Plain text
en: Press *SET ORIGIN*. The *SET ORIGIN* button label will change to *MARK EDGE* and the HAL pin named qtplasmac.laser_on will be turned off.
de: Drücken Sie *SET ORIGIN* (engl. für Ursprung festlegen). Die Beschriftung der Taste *SET ORIGIN* ändert sich in *MARK EDGE* und der HAL-Pin mit dem Namen qtplasmac.laser_on wird deaktiviert.

note: type: Plain text
en: The torch will now move to the X0 Y0 position.
de: Der Brenner fährt nun in die Position X0 Y0.

note: type: Plain text
en: The offset is now successful set.
de: Der Offset ist nun erfolgreich eingestellt.

note: type: Plain text
en: Jog until the laser cross hairs are at the edge of the material a suitable distance away from the desired origin point.
de: Rütteln Sie so lange, bis sich das Fadenkreuz des Lasers an der Kante des Materials in einem angemessenen Abstand zum gewünschten Ursprungspunkt befindet.

note: type: Plain text
en: Jog until the laser cross hairs are at the origin point of the material.
de: Bewegen Sie sich, bis sich das Fadenkreuz des Lasers am Ursprungspunkt des Materials befindet.

note: type: Plain text
en: The offset is now successfully set.
de: Der Offset ist nun erfolgreich eingestellt.

note: type: Plain text
en: *To turn the laser off and cancel an alignment:*
de: *Um den Laser auszuschalten und eine Ausrichtung abzubrechen:*

note: type: Plain text
en: Press the *LASER* button and hold for longer than 750 mSec.
de: Drücken Sie die Taste *LASER* und halten Sie sie länger als 750 mSek. gedrückt.

note: type: Plain text
en: *LASER* button label will change to *LASER* and the HAL pin named qtplasmac.laser_on will be turned off.
de: Die Beschriftung der Schaltfläche *LASER* ändert sich in *LASER* und der HAL-Pin mit dem Namen qtplasmac.laser_on wird ausgeschaltet.

note: type: Plain text
en: Release the *LASER* button.
de: Lassen Sie die Taste *LASER* los.

note: type: Plain text
en: If an alignment laser has been set up then it is possible to use the laser during <<qt_cut-recovery,CUT RECOVERY>> for accurate positioning of the new start coordinates.
de: Wenn ein Ausrichtungslaser eingerichtet wurde, ist es möglich, den Laser während <<qt_cut-recovery,CUT RECOVERY>> zur genauen Positionierung der neuen Startkoordinaten zu verwenden.

note: type: Title ===
en: Path Tolerance
de: Pfadtoleranz

note: type: Plain text
en: Path tolerance is set with a G64 command and a following P value. The P value corresponds to the amount that the actual cut path followed by the machine may deviate from the programmed cut path.
de: Die Pfad-/Bahntoleranz wird mit einem G64-Befehl und einem nachfolgenden P-Wert eingestellt. Der P-Wert entspricht dem Betrag, um den die tatsächliche Schnittbahn, der die Maschine folgt, von der programmierten Schnittbahn abweichen darf.

note: type: Plain text
en: The default LinuxCNC path tolerance is set for maximum speed which will severely round corners when used with normal plasma cutting speeds.
de: Die Standard-LinuxCNC Bahntoleranz ist für die maximale Geschwindigkeit, die stark runden Ecken, wenn sie mit normalen Plasma-Schneidgeschwindigkeiten verwendet wird eingestellt.

note: type: Plain text
en: It is recommended that the path tolerance is set by placing the appropriate G64 command and P value in the header of each G-code file.
de: Es wird empfohlen, die Pfad-Toleranz durch Einfügen des entsprechenden G64-Befehls und des P-Werts in den Kopf jeder G-Code-Datei festzulegen.

note: type: Block title
en: For Metric:
de: Für metrisch:

note: type: Block title
en: For Imperial:
de: Für imperial:

note: type: Title ===
en: Paused Motion
de: Angehaltene Bewegung

note: type: Plain text
en: QtPlasmaC has the ability to allow the repositioning of the X and Y axes along the current cut path while the G-code program is paused.
de: QtPlasmaC ermöglicht die Neupositionierung der X- und Y-Achse entlang des aktuellen Schnittpfades, während das G-Code-Programm pausiert.

note: type: Plain text
en: In order to use this feature, LinuxCNC's Adaptive Feed Control (M52) must be turned on (P1).
de: Um diese Funktion nutzen zu können, muss die adaptive Vorschubsteuerung (M52) von LinuxCNC eingeschaltet sein (P1).

note: type: Plain text
en: To enable *Paused Motion* The preamble of the G-code must contain the following line:
de: Um *Paused Motion* zu aktivieren, muss die Präambel des G-Codes die folgende Zeile enthalten:

note: type: Plain text
en: To turn off *Paused Motion* at any point, use the following command:
de: Um *Paused Motion* an einem beliebigen Punkt zu deaktivieren, verwenden Sie den folgenden Befehl:

note: type: Title ===
en: Pause At End Of Cut
de: Pause am Ende von Cut

note: type: Plain text
en: Using this feature will cause all motion to pause at the end of the cut while the torch is still on.  After the dwell time (in seconds) set by the *Pause At End* parameter in the MATERIAL section of the <<qt_parameters-tab,PARAMETERS Tab>> has expired, QtPlasmaC will proceed with the M5 command to turn off and raise the torch.
de: Die Verwendung dieser Funktion bewirkt, dass alle Bewegungen am Ende des Schnitts angehalten werden, während der Brenner noch eingeschaltet ist.  Nach Ablauf der Verweilzeit (in Sekunden), die mit dem Parameter *Pause At End* im Abschnitt MATERIAL der Registerkarte <<qt_parameters-tab,PARAMETERS>> eingestellt wurde, fährt QtPlasmaC mit dem Befehl M5 fort, um den Brenner auszuschalten und anzuheben.

note: type: Title ===
en: Multiple Tools
de: Mehrere Werkzeuge

note: type: Plain text
en: QtPlasmaC has the ability to allow the use of more than one type of plasma tool by utilizing LinuxCNC spindles as a plasma tool when running a G-code program.
de: QtPlasmaC hat die Fähigkeit, die Verwendung von mehr als einer Art von Plasma-Werkzeug durch die Verwendung von LinuxCNC Spindeln als Plasma-Werkzeug bei der Ausführung eines G-Code-Programm zu ermöglichen.

note: type: Plain text
en: Valid plasma tools for use are:
de: Gültige Plasmageräte für den Einsatz sind:

note: type: Table
en: TOOL #
de: Werkzeug #

note: type: Table
en: Plasma Torch
de: Plasma-Brenner

note: type: Table
en: Used for normal Plasma cutting.
de: Wird für normales Plasmaschneiden verwendet.

note: type: Table
en: Used for material engraving.
de: Wird für die Materialgravur verwendet.

note: type: Table
en: Used for spotting (creating dimples to aid in drilling).
de: Wird zum Tupfen (Erzeugen von Vertiefungen zur Unterstützung des Bohrens) verwendet.

note: type: Plain text
en: A LinuxCNC spindle number (designated by $_n_) is required to be in the starting command and also the end command to be able to start and stop the correct plasma tool.  Examples:
de: Eine LinuxCNC Spindelnummer (bezeichnet durch $_n_) ist erforderlich, um in den Start-Befehl und auch die Ende-Befehl, um in der Lage zu starten und stoppen Sie die richtige Plasma-Werkzeug sein.  Beispiele:

note: type: Plain text
en: *M3 $0 S1* will select and start the plasma cutting tool.
de: Mit *M3 $0 S1* wird das Plasmaschneidwerkzeug ausgewählt und gestartet.

note: type: Plain text
en: *M3 $1 S1* will select and start the scribe.
de: Mit *M3 $1 S1* wird der Schreiber (engl. scribe) ausgewählt und gestartet.

note: type: Plain text
en: *M3 $2 S1* will select and start the plasma spotting tool.
de: Mit *M3 $2 S1* wird das Plasmapunktiergerät ausgewählt und gestartet.

note: type: Plain text
en: *M5 $0* will stop the plasma cutting tool.
de: Mit *M5 $0* wird das Plasmaschneidwerkzeug angehalten.

note: type: Plain text
en: *M5 $1* will stop the scribe.
de: Mit *M5 $1* wird der Schreiber gestoppt.

note: type: Plain text
en: *M5 $2* will stop the plasma spotting tool.
de: Mit *M5 $2* wird das Plasmapunktiergerät gestoppt.

note: type: Plain text
en: It is permissible to use *M5 $-1* in lieu of the M5 $_n_ codes above to stop all tools.
de: Es ist zulässig, *M5 $-1* anstelle der obigen M5 $_n_-Codes zu verwenden, um alle Werkzeuge anzuhalten.

note: type: Plain text
en: In order to use a scribe, it is necessary for the user to add the X and Y axis offsets to the LinuxCNC tool table.  Tool 0 is assigned to the Plasma Torch and Tool 1 is assigned to the scribe. Tools are selected with a *T__n__ M6* command, and then a *G43 H0* command is required to apply the offsets for the selected tool.  It is important to note that the LinuxCNC tool table and tool commands only come into play if the user is using a <<qt_scribe,scribe>> in addition to a plasma torch.  For more information, see <<qt_scribe,scribe>>.
de: Um einen Ritz zu verwenden, ist es notwendig für den Benutzer, um die X-und Y-Achse Offsets auf die LinuxCNC Werkzeugtabelle hinzuzufügen.  Werkzeug 0 ist dem Plasmabrenner und Werkzeug 1 ist dem Ritzer zugewiesen. Werkzeuge werden mit einem *T__n__ M6* Befehl ausgewählt, und dann ein *G43 H0* Befehl ist erforderlich, um die Offsets für das ausgewählte Werkzeug anzuwenden.  Es ist wichtig zu beachten, dass die LinuxCNC-Werkzeugtabelle und die Werkzeugbefehle nur dann ins Spiel kommen, wenn der Benutzer zusätzlich zu einem Plasmabrenner einen <<qt_scribe,scribe>> verwendet.  Für weitere Informationen, siehe <<qt_scribe,scribe>>.

note: type: Title ===
en: Velocity Reduction
de: Geschwindigkeitsreduzierung

note: type: Plain text
en: There is a HAL pin available named *motion.analog-out-03* that can be changed in G-code with the *M67 (Synchronized with Motion)/M68 (Immediate)* commands.  This pin will reduce the velocity to the percentage specified in the command.
de: Es gibt einen HAL-Pin mit der Bezeichnung *motion.analog-out-03*, der im G-Code mit den Befehlen *M67 (Synchronisiert mit Bewegung)/M68 (Sofort)* geändert werden kann.  Mit diesem Pin wird die Geschwindigkeit auf den im Befehl angegebenen Prozentsatz reduziert.

note: type: Plain text
en: It is important to thoroughly understand the difference between *Synchronized with Motion* and *Immediate*:
de: Es ist wichtig, den Unterschied zwischen *Synchronisiert mit Bewegung* und *Sofort* gründlich zu verstehen:

note: type: Plain text
en: *M67* (Synchronized with Motion) - The actual change of the specified output (P2 (THC) for example) will happen at the beginning of the next motion command. If there is no subsequent motion command, the output changes will not occur. It is best practice to program a motion code (G0 or G1 for example) right after a M67.
de: *M67* (Synchronisiert mit Bewegung) - Die tatsächliche Änderung des angegebenen Ausgangs (z. B. P2 (THC)) erfolgt zu Beginn des nächsten Bewegungsbefehls. Wenn es keinen nachfolgenden Bewegungsbefehl gibt, werden die Ausgangsänderungen nicht durchgeführt. Es empfiehlt sich, einen Bewegungscode (z. B. G0 oder G1) direkt nach einem M67 zu programmieren.

note: type: Plain text
en: *M68* (Immediate) - These commands happen immediately as they are received by the motion controller. Since these are not synchronized with motion, they will break blending. This means if these codes are used in the middle of active motion codes, the motion will pause to activate these commands.
de: *M68* (Immediate) - Diese Befehle werden sofort ausgeführt, wenn sie vom Motion Controller empfangen werden. Da sie nicht mit der Bewegung synchronisiert sind, unterbrechen sie das Blending. Das heißt, wenn diese Codes inmitten von aktiven Bewegungscodes verwendet werden, wird die Bewegung angehalten, um diese Befehle zu aktivieren.

note: type: Plain text
en: *M67 E3 Q0* would set the velocity to 100% of *CutFeedRate*.
de: Mit *M67 E3 Q0* würde die Geschwindigkeit auf 100% von *CutFeedRate* gesetzt.

note: type: Plain text
en: *M67 E3 Q40* would set the velocity to 40% of *CutFeedRate*.
de: Mit *M67 E3 Q40* würde die Geschwindigkeit auf 40% von *CutFeedRate* gesetzt.

note: type: Plain text
en: *M67 E3 Q60* would set the velocity to 60% of *CutFeedRate*.
de: Mit *M67 E3 Q60* würde die Geschwindigkeit auf 60% von *CutFeedRate* gesetzt.

note: type: Plain text
en: *M67 E3 Q100* would set the velocity to 100% of *CutFeedRate*.
de: Mit *M67 E3 Q100* würde die Geschwindigkeit auf 100% von *CutFeedRate* gesetzt.

note: type: Plain text
en: The minimum percentage allowed is 10%, values below this will be set to 10%.
de: Der zulässige Mindestprozentsatz beträgt 10 %, darunter liegende Werte werden auf 10 % gesetzt.

note: type: Plain text
en: The maximum percentage allowed is 100%, values above this will be set to 100%.
de: Der maximal zulässige Prozentsatz beträgt 100%, darüber liegende Werte werden auf 100% gesetzt.

note: type: Plain text
en: If the user intends to use this feature it would be prudent to add *M68 E3 Q0* to both the preamble and postamble of the G-code program so the machine starts and ends in a known state.
de: Wenn der Benutzer diese Funktion nutzen möchte, wäre es ratsam, *M68 E3 Q0* sowohl in die Präambel als auch in die Postambel des G-Code-Programms einzufügen, damit die Maschine in einem bekannten Zustand startet und endet.

note: type: Plain text
en: *G-CODE THC* AND *VELOCITY BASED THC* ARE NOT ABLE TO BE USED IF *CUTTER COMPENSATION* IS IN EFFECT; AN ERROR MESSAGE WILL BE DISPLAYED.
de: *G-CODE THC* UND *VELOCITY BASED THC* KÖNNEN NICHT VERWENDET WERDEN, WENN *CUTTER COMPENSATION* IN KRAFT IST; ES WIRD EINE FEHLERMELDUNG ANGEZEIGT.

note: type: Plain text
en: If Cut Feed Rate in the MATERIAL section of the <<qt_parameters-tab,PARAMETERS Tab>> is set to Zero then QtPlasmaC will use *motion.requested-velocity* (as set by a standard Feedrate call in the G-code) for the THC calculations. This is not recommended as it is not a reliable way of implementing velocity based THC.
de: Wenn Cut Feed Rate im Abschnitt MATERIAL des <<qt_parameters-tab,PARAMETERS Tab>> auf Null gesetzt ist, dann verwendet QtPlasmaC *motion.requested-velocity* (wie durch einen Standard Feedrate-Aufruf im G-Code eingestellt) für die THC-Berechnungen. Dies wird nicht empfohlen, da es kein zuverlässiger Weg ist, geschwindigkeitsbasierte THC zu implementieren.

note: type: Plain text
en: All references to CutFeedRate refer to the *Cut Feed Rate* value displayed in the MATERIAL section of the <<qt_parameters-tab,PARAMETERS Tab>>.
de: Alle Verweise auf CutFeedRate beziehen sich auf den Wert *Cut Feed Rate*, der im Abschnitt MATERIAL zum <<qt_parameters-tab,PARAMETER Tab>> angezeigt wird.

note: type: Title ===
en: THC (Torch Height Controller)
de: THC (Brennerhöhensteuerung, engl. torch height controller)

note: type: Plain text
en: The THC can be enabled or disabled from the THC frame of the <<qt_main-tab,MAIN Tab>>.
de: Die THC kann über den THC-Rahmen des <<qt_main-tab,Haupt-Registrierkarte>> (engl. main tab) aktiviert oder deaktiviert werden.

note: type: Plain text
en: The THC can also be enabled or disabled directly from the G-code program.
de: Die THC kann auch direkt über das G-Code-Programm aktiviert oder deaktiviert werden.

note: type: Plain text
en: The THC does not become active until the velocity reaches 99.9% of the *CutFeedRate* and then the THC *Delay* time if any in the THC section of the <<qt_parameters-tab,PARAMETERS Tab>> has timed out. This is to allow the arc voltage to stabilize.
de: Die THC wird erst dann aktiv, wenn die Geschwindigkeit 99,9 % der *CutFeedRate* erreicht hat und die THC *Delay*-Zeit (falls vorhanden) im THC-Abschnitt der <<qt_parameters-tab,PARAMETER-Registrierkarte>> abgelaufen ist. Dies dient dazu, dass sich die Lichtbogenspannung stabilisieren kann.

note: type: Plain text
en: QtPlasmaC uses a control voltage which is dependent on the state of the *AUTO VOLTS* checkbox on the <<qt_main-tab,MAIN Tab>>:
de: QtPlasmaC verwendet eine Steuerspannung, die vom Zustand der Checkbox *AUTO VOLTS* auf dem <<qt_main-tab,MAIN Tab>> abhängig ist:

note: type: Plain text
en: If *Use Auto Volts* is checked then the actual cut voltage is sampled at the end of the THC *Delay* time and this is used as the target voltage to adjust the height of the torch.
de: Wenn *Use Auto Volts* aktiviert ist, wird die tatsächliche Abschaltspannung am Ende der THC *Delay*-Zeit abgetastet und als Zielspannung für die Einstellung der Brennerhöhe verwendet.

note: type: Plain text
en: If *Use Auto Volts* is not checked then the voltage displayed as Cut Volts in the MATERIAL section of the <<qt_parameters-tab,PARAMETERS Tab>> is used as the target voltage to adjust the height of the torch.
de: Wenn *Use Auto Volts* nicht aktiviert ist, wird die Spannung, die als Cut Volts im Abschnitt MATERIAL der <<qt_parameters-tab,PARAMETERS Tab>> angezeigt wird, als Zielspannung zur Einstellung der Brennerhöhe verwendet.

note: type: Plain text
en: [underline]*G-code THC*
de: [Unterstrich]*G-Code THC*

note: type: Plain text
en: THC may be disabled and enabled directly from G-code, provided the THC is not disabled in the THC Section of the <<qt_main-tab,MAIN Tab>>, by setting or resetting the *motion.digital-out-02* pin with the M-Codes M62-M65:
de: THC kann direkt vom G-Code aus deaktiviert und aktiviert werden, sofern die THC nicht in der THC-Sektion des <<qt_main-tab,MAIN Tab>> deaktiviert ist, indem der *motion.digital-out-02* Pin mit den M-Codes M62-M65 gesetzt oder zurückgesetzt wird:

note: type: Plain text
en: *M62 P2* will disable THC (Synchronized with Motion)
de: *M62 P2* deaktiviert THC (synchronisiert mit Bewegung)

note: type: Plain text
en: *M63 P2* will enable THC (Synchronized with Motion)
de: *M63 P2* aktiviert THC (synchronisiert mit Bewegung)

note: type: Plain text
en: *M64 P2* will disable THC (Immediately)
de: *M64 P2* schaltet THC (sofort) aus.

note: type: Plain text
en: *M65 P2* will enable THC (Immediately)
de: *M65 P2* aktiviert THC (sofort)

note: type: Plain text
en: *M62 and M63* (Synchronized with Motion) - The actual change of the specified output (P2 (THC) for example) will happen at the beginning of the next motion command. If there is no subsequent motion command, the output changes will not occur. It is best practice to program a motion code (G0 or G1 for example) right after a M62 or M63.
de: *M62 und M63* (Synchronisiert mit Bewegung) - Die tatsächliche Änderung des angegebenen Ausgangs (z. B. P2 (THC)) erfolgt zu Beginn des nächsten Bewegungsbefehls. Wenn es keinen nachfolgenden Bewegungsbefehl gibt, werden die Ausgangsänderungen nicht ausgeführt. Es empfiehlt sich, einen Bewegungscode (z. B. G0 oder G1) direkt nach einem M62 oder M63 zu programmieren.

note: type: Plain text
en: *M64 and M65* (Immediate) - These commands happen immediately as they are received by the motion controller. Since these are not synchronized with motion, they will break blending. This means if these codes are used in the middle of active motion codes, the motion will pause to activate these commands.
de: *M64 und M65* (Sofort) - Diese Befehle werden sofort nach ihrem Empfang durch den Motion Controller ausgeführt. Da sie nicht mit der Bewegung synchronisiert sind, unterbrechen sie das Blending. Das heißt, wenn diese Codes inmitten von aktiven Bewegungscodes verwendet werden, wird die Bewegung angehalten, um diese Befehle zu aktivieren.

note: type: Plain text
en: [underline]*Velocity Based THC*
de: [underline]*Geschwindigkeitsbasiertes THC*

note: type: Plain text
en: If the cut velocity falls below a percentage of *CutFeedRate* (as defined by the VAD Threshold % value in the THC frame of the CONFIGURATION section of the <<qt_parameters-tab,PARAMETERS Tab>>) the THC will be locked until the cut velocity returns to at least 99.9% of *CutFeedRate*.  This will be made apparent by the *VELOCITY ANTI DIVE* indicator illuminating in the <<qt_control-panel,CONTROL Panel>> on the <<qt_main-tab,MAIN Tab>>.
de: Wenn die Schnittgeschwindigkeit unter einen bestimmten Prozentsatz von *CutFeedRate* fällt (wie durch den Wert VAD Threshold % im THC-Rahmen des Abschnitts CONFIGURATION auf der Registerkarte <<qt_parameters-tab,PARAMETERS>> definiert), wird die THC gesperrt, bis die Schnittgeschwindigkeit wieder mindestens 99,9 % von *CutFeedRate* beträgt.  Dies wird durch das Aufleuchten der Anzeige *VELOCITY ANTI DIVE* im <<qt_control-panel,CONTROL Panel>> auf der <<qt_main-tab,MAIN Tab>> angezeigt.

note: type: Plain text
en: Velocity based THC prevents the torch height being changed when velocity is reduced for a sharp corner or a small hole.
de: Die geschwindigkeitsabhängige THC verhindert, dass die Brennerhöhe verändert wird, wenn die Geschwindigkeit für eine scharfe Ecke oder ein kleines Loch reduziert wird.

note: type: Plain text
en: It is important to note that <<qt_velocity-reduction,Velocity Reduction>> affects the Velocity Based THC in the following ways:
de: Es ist wichtig zu beachten, dass <<qt_velocity-reduction,Velocity Reduction>> die geschwindigkeitsbasierte THC auf folgende Weise beeinflusst:

note: type: Plain text
en: If Velocity Reduction is invoked in the middle of the cut, the THC will be locked.
de: Wenn die Geschwindigkeitsreduzierung in der Mitte des Schnitts aufgerufen wird, dann wird die THC gesperrt.

note: type: Plain text
en: There are three methods available for improving the quality of small holes:
de: Es gibt drei Methoden zur Verbesserung der Qualität von kleinen Löchern:

note: type: Plain text
en: *Arc Dwell (<<qt_pause-at-end, Pause At End>>)* - Keeping the torch on for a short time at the end of the hole while motion is stopped to allow the arc to catch up.
de: *Arc Dwell (<<qt_pause-at-end, Pause At End>>)* - Der Brenner wird am Ende der Bohrung für kurze Zeit eingeschaltet, während die Bewegung angehalten wird, damit der Lichtbogen aufholen kann.

note: type: Plain text
en: *Over cut* - Turning the torch off at the end of the hole then continue along the path.
de: *Overcut* - Schalten Sie den Brenner am Ende des Lochs aus und gehen Sie dann weiter den Weg entlang.

note: type: Plain text
en: If both *Arc Dwell* and *Over cut* are active at the same time then *Over cut* will take precedence.
de: Wenn sowohl *Arc Dwell* als auch *Over Cut* gleichzeitig aktiv sind, hat *Over Cut* Vorrang.

note: type: Plain text
en: *OVER CUT* IS NOT ABLE TO BE USED IF CUTTER COMPENSATION IS IN EFFECT; AN ERROR MESSAGE WILL BE DISPLAYED.
de: DIE FUNKTION *OVER CUT* KANN NICHT VERWENDET WERDEN, WENN DIE SCHNEIDEKOMPENSATION AKTIVIERT IST; ES WIRD EINE FEHLERMELDUNG ANGEZEIGT.

note: type: Title ===
en: Hole Cutting
de: Löcher schneiden

note: type: Plain text
en: G-code commands can be set up by either by a CAM Post Processor (PP) or by hand coding.
de: G-Code-Befehle können entweder von einem CAM-Postprozessor (PP) oder durch Handcodierung erstellt werden.

note: type: Plain text
en: *M62 and M63* (Synchronized with Motion) - The actual change of the specified output (P2 (THC) for example) will happen at the beginning of the next motion command.
    If there is no subsequent motion command, the output changes will not occur. It is best practice to program a motion code (G0 or G1 for example) right after a M62 or M63.
de: *M62 und M63* (Synchronized with Motion) – Die tatsächliche Änderung des angegebenen Ausgangs (z. B. P2 (THC)) erfolgt zu Beginn des nächsten Bewegungsbefehls.
    Wenn kein nachfolgender Bewegungsbefehl vorhanden ist, werden die Ausgangsänderungen nicht ausgeführt. Es empfiehlt sich, einen Bewegungscode (z. B. G0 oder G1) direkt nach einem M62 oder M63 zu programmieren.

note: type: Plain text
en: *M64 and M65* (Immediate) - These commands happen immediately as they are received by the motion controller. Since these are not synchronized with motion, they will break blending.
    This means if these codes are used in the middle of active motion codes, the motion will pause to activate these commands.
de: *M64 und M65* (unmittelbar) - Diese Befehle erfolgen sofort, wenn sie vom Motion Controller empfangen werden. Da diese nicht mit der Bewegung synchronisiert sind, unterbrechen sie die Mischung.
    Das heißt, wenn diese Codes in der Mitte aktiver Bewegungscodes verwendet werden, wird die Bewegung angehalten, um diese Befehle zu aktivieren.

note: type: Plain text
en: QtPlasmaC Hole Sensing is disabled by default. It can be enabled/disabled by using the following G-code parameters to select the desired hole sensing mode:
de: QtPlasmaC Loch-Erkennung (engl. hole sensing) ist standardmäßig deaktiviert. Sie kann mit den folgenden G-Code-Parametern aktiviert/deaktiviert werden, um den gewünschten Lochabtastungsmodus auszuwählen:

note: type: Plain text
en: *#<holes> = 0* - Causes QtPlasmaC to disable hole sensing if it was previously enabled.
de: *#<holes> = 0* - Veranlasst QtPlasmaC, die Locherkennung zu deaktivieren, wenn sie zuvor aktiviert war.

note: type: Plain text
en: *#<holes> = 2* - Causes QtPlasmaC to <<qt_overcut,Over cut>> the hole in addition to the velocity changes in setting 1.
de: *#<holes> = 2* - Bewirkt, dass QtPlasmaC <<qt_overcut,Überschnitt>> das Loch zusätzlich zu den Geschwindigkeitsänderungen in Einstellung 1 ändert.

note: type: Plain text
en: *#<holes> = 4* - Causes QtPlasmaC to <<qt_overcut,Over cut>> the hole in addition to the velocity change in setting 3.
de: *#<holes> = 4* - Bewirkt, dass QtPlasmaC <<qt_overcut,Over cut>> das Loch zusätzlich zur Geschwindigkeitsänderung in Einstellung 3.

note: type: Plain text
en: *#<h_diameter> = nn* - To set a diameter (nn) in the same units system as the rest of the G-code file.
de: *#<h_diameter> = _nn_* - Um einen Durchmesser (_nn_) im gleichen Einheitensystem wie für den Rest der G-Code-Datei festzulegen.

note: type: Plain text
en: The default velocity for QtPlasmaC small holes is 60% of the current feed rate. It is possible to change this value with the following command in a G-code file:
de: Die Standardgeschwindigkeit für kleine Löcher in QtPlasmaC beträgt 60% der aktuellen Vorschubgeschwindigkeit. Es ist möglich, diesen Wert mit dem folgenden Befehl in einer G-Code-Datei zu ändern:

note: type: Plain text
en: When the cut is complete stop the spindle.
de: Wenn der Schnitt beendet ist, stoppen Sie die Spindel.

note: type: Plain text
en: Pressing *CANCEL MOVE* will cause the torch to move back to where it was positioned before the direction keys were used to offset the torch. It will not reset any *REV* or *FWD* motion.
de: Durch Drücken von *CANCEL MOVE* bewegt sich die Taschenlampe wieder dorthin, wo sie positioniert war, bevor die Richtungstasten verwendet wurden, um den Brenner zu versetzen. Es wird keine *REV* oder *FWD* Bewegung zurückgesetzt.

note: type: Plain text
en: Clicking *RELOAD* in the G-code window header - this method will cancel the Run From Line process if LOAD was clicked on the Run From Line dialog box and "rfl.ngc" is displayed as the loaded file name in the G-code window header. This will return the user to the originally loaded file.
de: Klicken auf *RELOAD* in der Kopfzeile des G-Code-Fensters - diese Methode bricht den Prozess "Run From Line" ab, wenn im Dialogfeld "Run From Line" auf LOAD geklickt wurde und "rfl.ngc" als geladener Dateiname in der Kopfzeile des G-Code-Fensters angezeigt wird. Dadurch kehrt der Benutzer zur ursprünglich geladenen Datei zurück.

note: type: Plain text
en: A scribe may be operated by QtPlasmaC in addition to the plasma torch.
de: Zusätzlich zum Plasmabrenner kann mit QtPlasmaC ein Ritzgerät betrieben werden.

note: type: Plain text
en: Using a scribe requires the use of the LinuxCNC tool table. Tool 0 is assigned to the plasma torch and Tool 1 is assigned to the scribe. The scribe X and Y axes offsets from the plasma torch need to be entered into the LinuxCNC tool table. This is done by editing the tool table via the main GUI, or by editing the *tool.tbl* file in the *<machine_name>* configuration directory. This will be done after the scribe can move to the work piece to help determine the appropriate offset.
de: Die Verwendung eines Ritzers erfordert die Verwendung der LinuxCNC-Werkzeugtabelle. Tool 0 ist der Plasmabrenner und Tool 1 ist der Ritz zugewiesen. Die Ritz X-und Y-Achsen Offsets aus dem Plasmabrenner müssen in die LinuxCNC Werkzeugtabelle eingegeben werden. Dies geschieht durch Editieren der Werkzeugtabelle über die Haupt-GUI oder durch Editieren der *tool.tbl* Datei im *<Maschinen_name>* Konfigurationsverzeichnis. Dies wird getan, nachdem der Ritzer kann auf das Werkstück zu bewegen, um den entsprechenden Offset zu bestimmen.

note: type: Plain text
en: To stop the scribe, use the G-code command *M5 $1*.
de: Um den Ritzvorgang zu stoppen, verwenden Sie den G-Code-Befehl *M5 $1*.

note: type: Plain text
en: For more information on multiple tools, see <<qt_multi-tool,multiple tools>>.
de: Für weitere Informationen zu mehreren Werkzeuge siehe den <<qt_multi-tool,gleichnamigen Abschnitt>>.

note: type: Plain text
en: LinuxCNC (QtPlasmaC) requires some motion between any *M3* and *M5* commands. For this reason, a minimal movement at a high speed is required to be programmed.
de: LinuxCNC (QtPlasmaC) erfordert eine gewisse Bewegung zwischen den Befehlen *M3* und *M5*. Aus diesem Grund ist eine minimale Bewegung bei hoher Geschwindigkeit erforderlich, um programmiert zu werden.

note: type: Plain text
en: The *high feed rate* of 99999 is to ensure that the motion is at the machine's highest feed rate.
de: Die *hohe Vorschubgeschwindigkeit* von 99999 soll sicherstellen, dass die Bewegung bei der höchsten Vorschubgeschwindigkeit der Maschine erfolgt.

note: type: Plain text
en: SOME PLASMA CUTTERS WILL NOT BE SUITABLE FOR THIS FEATURE.
    IT IS RECOMMENDED THAT THE USER CARRY OUT SOME TEST SPOTTING TO ENSURE THAT THE PLASMA CUTTER IS CAPABLE OF UTILIZING THIS FEATURE.
de: EINIGE PLASMA-CUTTER SIND FÜR DIESE FUNKTION NICHT GEEIGNET.
    ES WIRD EMPFOHLEN, DASS DER BENUTZER EINIGE TESTFLECKEN DURCHFÜHRT, UM SICHERZUSTELLEN, DASS DER PLASMA-CUTTER DIESE FUNKTION NUTZEN KANN.

note: type: Title ===
en: Virtual Keyboard Custom Layouts
de: Benutzerdefinierte Layouts für virtuelle Tastaturen

note: type: Plain text
en: Virtual keyboard support is available for only the "onboard" onscreen keyboard. If it is not already on the system it may be installed by typing the following in a terminal:
de: Virtuelle Tastaturunterstützung ist nur für die "integrierte" Bildschirmtastatur verfügbar. Wenn es sich noch nicht auf dem System befindet, kann es installiert werden, indem Sie Folgendes in ein Terminal eingeben:

note: type: Plain text
en: The following two custom layouts are used for soft key support:
de: Die folgenden beiden benutzerdefinierten Layouts werden für die Softkey-Unterstützung verwendet:

note: type: Title ===
en: Keyboard Shortcuts
de: Tastatürkürzel

note: type: Plain text
en: Below is a list of all available keyboard shortcuts in QtPlasmaC.
de: Nachfolgend finden Sie eine Liste aller verfügbaren Tastaturkürzel in QtPlasmaC.

note: type: Plain text
en: All keyboard shortcuts are disabled by default.
de: Alle Tastaturkürzel sind standardmäßig deaktiviert.

note: type: Table
en: Jogs the Z axis negative.
de: Joggt die Z-Achse negativ.

note: type: Table
en: Jogs the A axis positive.
de: Joggt die A-Achse positiv.

note: type: Table
en: Jogs the A axis negative.
de: Joggt die A-Achse negativ.

note: type: Table
en: Jogs the B axis positive.
de: Joggt die B-Achse positiv.

note: type: Table
en: Jogs the B axis negative.
de: Joggt die B-Achse negativ.

note: type: Table
en: SHIFT (+ Jog Key)
de: SHIFT (+ Jog-Taste)

note: type: Table
en: The shift key is used with any jog key to invoke a rapid jog.
de: Die "Umschalttaste" (auch "Hochtaste", engl. shift key) wird zusammen mit einer beliebigen Jog-Taste verwendet, um ein schnelles Joggen auszulösen.

note: type: Table
en: + (+Jog Key)
de: + (+Jog Taste)

note: type: Table
en: The plus key can be used with any jog key to invoke a rapid jog (behaves the same as SHIFT).
de: Die Plus-Taste kann mit jeder Jog-Taste verwendet werden, um einen schnellen Jog aufzurufen (verhält sich wie SHIFT).

note: type: Table
en: - (+Jog Key)
de: - (+Jog Taste)

note: type: Table
en: The minus key can be used with any jog key to invoke a slow jog (10% of the displayed jog speed) +
    If SLOW jogging is already active, the axis will jog at the displayed jog speed.
de: Die Minustaste kann mit einer beliebigen Tipptaste verwendet werden, um einen langsamen Tippbetrieb (10% der angezeigten Tippgeschwindigkeit) aufzurufen.
    Wenn der langsame Tippbetrieb bereits aktiv ist, wird die Achse mit der angezeigten Jog-Geschwindigkeit verfahren.

note: type: Plain text
en: In addition to the typical G and M codes that are allowed by LinuxCNC in MDI mode, the MDI in QtPlasmaC can be used to access several other handy features.  The following link outlines the features and their use: <<sub:qtvcp:widgets:mdiline>>[MDILine Widget]
de: Zusätzlich zu den typischen G- und M-Codes, die von LinuxCNC im MDI-Modus erlaubt sind, kann die MDI in QtPlasmaC verwendet werden, um auf mehrere andere praktische Funktionen zuzugreifen.  Der folgende Link umreißt die Funktionen und ihre Verwendung: <<sub:qtvcp:widgets:mdiline>>[MDILine Widget]

note: type: Plain text
en: M3, M4, and M5 are not allowed in the QtPlasmaC MDI.
de: M3, M4 und M5 sind in der QtPlasmaC MDI nicht erlaubt.

note: type: Plain text
en: *In addition, pressing RETURN (or ENTER) with no entry in the MDI will close the MDI window.*
de: *Außerdem wird das MDI-Fenster geschlossen, wenn Sie RETURN (oder ENTER) drücken, ohne dass ein Eintrag in der MDI erfolgt.

note: type: Plain text
en: Blank entries in the shape input boxes will use the current setting at the time the G-code was generated. For example, if *X start* was left blank then the current X axis position would be used.
de: Bei leeren Einträgen in den Form-Eingabefeldern wird die aktuelle Einstellung zum Zeitpunkt der Erstellung des G-Codes verwendet. Wenn z.B. *X Start* leer gelassen wurde, wird die aktuelle Position der X-Achse verwendet.

note: type: Plain text
en: All leadins and leadouts are arcs except for *Circles* and *Stars*:
de: Alle An- und Ableitungen (engl. leadins und leadouts) sind Bögen, mit Ausnahme von *Kreisen* und *Sternen*:

note: type: Plain text
en: *Circles:*
de: *Kreise* (engl. circles):

note: type: Plain text
en: If the circle is external then any leadin or leadout will be an arc.
de: Wenn der Kreis extern ist, dann ist jede Hin- oder Rückführung (leadin or leadout) ein Bogen.

note: type: Plain text
en: If the circle is internal and a *small hole* then any leadin will be perpendicular and there will be no lead out.
de: Wenn der Kreis innenliegend ist und ein *kleines Loch* hat, dann ist jeder leadin senkrecht und es gibt keinen Auslauf.

note: type: Plain text
en: If the circle is internal and not a *small hole* then any leadin and leadout will be an arc.  If the leadin has a length greater than half the radius then the leadin will revert to perpendicular and there will be no leadout.  If the leadout has a length greater than half the radius then there will be no leadout.
de: Wenn der Kreis intern und kein *kleines Loch* ist, dann ist jeder Leadin und Leadout ein Bogen.  Wenn der Leadin eine Länge von mehr als der Hälfte des Radius hat, wird der Leadin senkrecht zurückgesetzt und es gibt keinen Leadout.  Wenn der Leadout eine Länge von mehr als der Hälfte des Radius hat, gibt es keinen Leadout.

note: type: Plain text
en: *Stars:*
de: *Sterne* (engl. stars):

note: type: Plain text
en: The leadin is at the same angle as the first cut and the leadout is at the same angle as the last cut.
de: Der Leadin befindet sich im gleichen Winkel wie der erste Schnitt und der Leadout im gleichen Winkel wie der letzte Schnitt.

note: type: Plain text
en: A *small hole* is a circle that is smaller than the SMALL HOLE DIAMETER specified in the CONVERSATIONAL SETTINGS page.
de: Ein *kleines Loch* ist ein Kreis, der kleiner ist als der auf der Seite KONVERSATIONSEINSTELLUNGEN (engl. conversational settings) angegebene KLEINE LOCHDURCHMESSER.

note: type: Plain text
en: *The cut order will occur in the same order as the shape was built.*
de: *Die Schnittreihenfolge entspricht der Reihenfolge, in der die Form gebaut wurde.

note: type: Plain text
en: Pressing *Return* on the keyboard while editing parameters will automatically show the preview of the shape if there are enough parameters entered to create the shape.  Clicking any of the available check boxes will do the same.
de: Wenn Sie während der Bearbeitung der Parameter *Return* auf der Tastatur drücken, wird automatisch die Vorschau der Form angezeigt, wenn genügend Parameter eingegeben wurden, um die Form zu erstellen.  Ein Klick auf eines der verfügbaren Kontrollkästchen bewirkt dasselbe.

note: type: Plain text
en: The general functions are as follows:
de: Die allgemeinen Funktionen sind wie folgt:

note: type: Table
en: Material Drop Down
de: Material-Dropdown

note: type: Plain text
en: If *NEW* is pressed to remove an added shape that is unsaved or unsent then a warning dialog will be displayed.
de: Wenn *NEU* gedrückt wird, um eine hinzugefügte Form zu entfernen, die nicht gespeichert oder gesendet wurde, wird ein Warndialog angezeigt.

note: type: Plain text
en: All distances are in machine units relative to the current User Coordinate System and all angles are in degrees.
de: Alle Entfernungen sind in Maschineneinheiten relativ zum aktuellen Benutzerkoordinatensystem und alle Winkel sind in Grad angegeben.

note: type: Title ===
en: Conversational Settings
de: Konversationseinstellungen

note: type: Plain text
en: Global settings for the shape library can be set by pressing the *SETTINGS* button in the <<qt_conversational-tab,CONVERSATIONAL Tab>>.  This will display all of the available settings parameters that are used for G-code program creation. These include:
de: Globale Einstellungen für die Formbibliothek können durch Drücken der Schaltfläche *EINSTELLUNGEN* in der <<qt_conversational-tab,CONVERSATIONAL Tab>> vorgenommen werden.  Dadurch werden alle verfügbaren Einstellungsparameter angezeigt, die für die Erstellung von G-Code-Programmen verwendet werden. Dazu gehören:

note: type: Plain text
en: *Preamble*
de: *Präambel*

note: type: Plain text
en: *Postamble*
de: *Postambel*

note: type: Plain text
en: *Origin (Center or Bottom Left)*
de: *Ursprung (engl. origin) (Mitte (center) oder unten links (bottom left) )*

note: type: Plain text
en: *Small hole diameter*
de: * Kleiner Lochdurchmesser*

note: type: Plain text
en: *Small hole speed*
de: *Kleines Loch Geschwindigkeit*

note: type: Plain text
en: *Preview Window Grid Size*
de: *Vorschaufenster Rastergröße*

note: type: Plain text
en: Any internal circle that has a diameter less than *Small hole diameter* is classified as a small hole and will have a straight leadin with a length that is the lesser of either the radius of the hole or the specified leadin length. It will also have its feed rate set to *Small hole speed*.
de: Jeder Innenkreis mit einem Durchmesser kleiner als *Kleiner Lochdurchmesser* wird als kleine Bohrung klassifiziert und hat einen geraden Einstich mit einer Länge, die kleiner ist als entweder der Radius der Bohrung oder die angegebene Einstichlänge. Außerdem wird die Vorschubgeschwindigkeit auf *Kleine Bohrungsgeschwindigkeit* eingestellt.

note: type: Plain text
en: Preamble and Postamble may be entered as a string of G-Codes and M-Codes separate by spaces.  If the user wishes for the generated G-code to have each code on an individual line then this is made possible by separating the codes with *\n*.
de: Präambel und Postambel können als eine durch Leerzeichen getrennte Folge von G-Codes und M-Codes eingegeben werden.  Wenn der Benutzer möchte, dass der generierte G-Code jeden Code in einer eigenen Zeile enthält, kann er dies durch Trennen der Codes mit `\n` erreichen.

note: type: Plain text
en: This will place all codes on the same line:
de: Dadurch werden alle Codes in dieselbe Zeile gesetzt:

note: type: Plain text
en: This will place each code on its own line:
de: Dadurch wird jeder Code in eine eigene Zeile gesetzt:

note: type: Plain text
en: Pressing the *RELOAD* button will discard any changed but unsaved settings.
de: Wenn Sie die Taste *RELOAD* drücken, werden alle geänderten, aber nicht gespeicherten Einstellungen verworfen.

note: type: Plain text
en: Pressing the *SAVE* button will save all the settings as displayed.
de: Durch Drücken der Taste *SAVE* werden alle Einstellungen wie angezeigt gespeichert.

note: type: Plain text
en: Pressing the *EXIT* button will close the setting panel and return to the previous shape.
de: Wenn Sie die Taste *EXIT* drücken, wird das Einstellungsfeld geschlossen und Sie kehren zur vorherigen Form zurück.

note: type: Title ===
en: Conversational Lines And Arcs
de: Konversationslinien und Bögen

note: type: Plain text
en: Lines and arcs have an additional option in that they may be strung together to create a complex shape.
de: Linien und Bögen haben eine zusätzliche Option, indem sie aneinandergereiht werden können, um eine komplexe Form zu schaffen.

note: type: Plain text
en: There are two line types and three arc types available:
de: Es stehen zwei Linienarten und drei Bogenarten zur Verfügung:

note: type: Plain text
en: *Line* given a start point and an end point.
de: *Linie* mit einem Start- und einem Endpunkt.

note: type: Plain text
en: *Line* given a start point, length, and angle.
de: *Linie* mit einem Startpunkt, einer Länge und einem Winkel.

note: type: Plain text
en: *Arc* given a start point, way point, and end point.
de: *Bogen* (engl. arc) bei gegebenem Startpunkt, Wegpunkt und Endpunkt.

note: type: Plain text
en: *Arc* given a start point, end point, and radius.
de: *Arc* mit einem Startpunkt, einem Endpunkt und einem Radius.

note: type: Plain text
en: *Arc* given a start point, length, angle, and radius.
de: *Arc* mit einem Startpunkt, einer Länge, einem Winkel und einem Radius.

note: type: Plain text
en: To use lines and arcs:
de: Nutzung von Linien und Bögen:

note: type: Plain text
en: Select the *Lines and Arcs* icon.
de: Wählen Sie das Symbol *Linien und Bögen* aus.

note: type: Plain text
en: Select the type of line or arc to create.
de: Wählen Sie den Typ der zu erstellenden Linie oder des Bogens.

note: type: Plain text
en: Enter the desired parameters.
de: Geben Sie die gewünschten Parameter ein.

note: type: Plain text
en: Press *PREVIEW* to see the shape.
de: Drücken Sie *PREVIEW*, um die Form zu sehen.

note: type: Plain text
en: If satisfied with the shape press *CONTINUE*.
de: Wenn Sie mit der Form zufrieden sind, drücken Sie *CONTINUE*.

note: type: Plain text
en: Change the line or arc type if needed and continue this procedure until the shape is complete.
de: Ändern Sie bei Bedarf den Linien- oder Bogentyp und fahren Sie mit diesem Verfahren fort, bis die Form vollständig ist.

note: type: Plain text
en: Press *SEND* to send the G-code file to LinuxCNC (QtPlasmaC) for cutting.
de: Drücken Sie *SEND*, um die G-Code-Datei zum Schneiden an LinuxCNC (QtPlasmaC) zu senden.

note: type: Plain text
en: If the user wishes to create a closed shape, they will need to create any required leadin as the first segment of the shape. If a leadout is required it will need to be the last segment of the shape.
de: Wenn der Benutzer eine geschlossene Form erstellen möchte, muss er alle erforderlichen Anfänge als das erste Segment der Form erstellen. Wenn ein Auslauf erforderlich ist, muss dieser das letzte Segment der Form sein.

note: type: Plain text
en: At this stage there is no automatic option for a leadin/leadout creation if the shape is closed.
de: In diesem Stadium gibt es keine automatische Option für die Erstellung eines Leadin/Leadout, wenn die Form geschlossen ist.

note: type: Plain text
en: The following shapes are available for creation:
de: Die folgenden Formen sind für die Erstellung verfügbar:

note: type: Plain text
en: To create a shape:
de: So erstellen Sie eine Form:

note: type: Plain text
en: Enter the appropriate values and press *PREVIEW* to display the shape.
de: Geben Sie die entsprechenden Werte ein und drücken Sie *PREVIEW*, um die Form anzuzeigen.

note: type: Plain text
en: If the shape is not correct, edit the values and press *PREVIEW* and the new shape will be displayed. Repeat until satisfied with the shape.
de: Wenn die Form nicht korrekt ist, ändern Sie die Werte und drücken Sie *VORSCHAU* (engl. preview), damit die neue Form angezeigt wird. Wiederholen Sie den Vorgang, bis Sie mit der Form zufrieden sind.

note: type: Plain text
en: Press *ADD* to add the shape to the G-code file.
de: Drücken Sie *ADD*, um die Form zur G-Code-Datei hinzuzufügen.

note: type: Plain text
en: Press *ADD* and the shape will be added to the group.
de: Drücken Sie *ADD* und die Form wird der Gruppe hinzugefügt.

note: type: Plain text
en: If the user wishes to add another version of the same shape then edit the required parameters and press *ADD* when satisfied with the shape.
de: Wenn der Benutzer eine weitere Version der gleichen Form hinzufügen möchte, bearbeiten Sie die erforderlichen Parameter und drücken Sie *ADD*, wenn Sie mit der Form zufrieden sind.

note: type: Plain text
en: If the user wishes to add a different shape, select that shape and create it as in *Single Shape*.
de: Wenn der Benutzer eine andere Form hinzufügen möchte, wählen Sie diese Form aus und erstellen Sie sie wie bei einer *Einzelnen Form*.

note: type: Plain text
en: Repeat until all the required shapes to complete the group have been added.
de: Wiederholen Sie diesen Vorgang, bis alle erforderlichen Formen zur Vervollständigung der Gruppe hinzugefügt wurden.

note: type: Plain text
en: The Conversational Block feature allows block operations to be performed on the current shape or group of shapes displayed in the <<qt_conversational-tab,CONVERSATIONAL Tab>>.  This can include a G-code file not created using the Conversational Shape Library that has been previously loaded from the <<qt_main-tab,MAIN Tab>>.
de: Die Funktion "Conversational Block" ermöglicht die Durchführung von Blockoperationen mit der aktuellen Form oder einer Gruppe von Formen, die im <<qt_conversational-tab,CONVERSATIONAL Registrierkarte>> angezeigt werden.  Dies kann eine G-Code-Datei einschließen, die nicht mit der Conversational Shape Library erstellt wurde, die zuvor von der <<qt_main-tab,Haupt-Registrierkarte>> geladen wurde.

note: type: Plain text
en: A previously saved Block G-code file may also be loaded from the <<qt_main-tab,MAIN Tab>> and then have any of its operations edited using the Conversational Block feature.
de: Eine zuvor gespeicherte Block-G-Code-Datei kann auch über die <<qt_main-tab,Haupt-Registerkarte>> geladen und dann mit der Funktion "Conversational Block" bearbeitet werden.

note: type: Plain text
en: Block operations:
de: Blockoperationen:

note: type: Plain text
en: Mirror
de: Mirror (engl. für Spiegel)

note: type: Plain text
en: Flip
de: Flip (engl. für umdrehen)

note: type: Plain text
en: To create a block:
de: Um einen Block zu anzulegen:

note: type: Plain text
en: Create a shape, a group, or use a previously loaded G-code file.
de: Erstellen Sie eine Form oder eine Gruppe, oder verwenden Sie eine zuvor geladene G-Code-Datei.

note: type: Plain text
en: Click the *Block* icon to open the Block tab.
de: Klicken Sie auf das Blocksymbol, um die Block-Tabelle zu öffnen.

note: type: Plain text
en: Enter the appropriate values in the Block tab and press *PREVIEW* to display the resulting changes.
de: Geben Sie die entsprechenden Werte auf der Registerkarte Block ein und drücken Sie *VORSCHAU*, um die resultierenden Änderungen anzuzeigen.

note: type: Plain text
en: If the result is not correct, edit the values and press *PREVIEW* and the new result will be shown. Repeat until satisfied with the result.
de: Wenn das Ergebnis nicht korrekt ist, ändern Sie die Werte und drücken Sie *VORSCHAU* und das neue Ergebnis wird angezeigt. Wiederholen Sie den Vorgang, bis Sie mit dem Ergebnis zufrieden sind.

note: type: Plain text
en: Press *ADD* to complete the procedure.
de: Drücken Sie *ADD* (engl. für hinzufügen), um den Vorgang abzuschließen.

note: type: Plain text
en: Press *SEND* to send the G-code file to LinuxCNC (QtPlasmaC) for cutting, or *SAVE* to save the G-code file.
de: Drücken Sie *SEND*, um die G-Code-Datei an LinuxCNC (QtPlasmaC) zum Schneiden zu senden, oder *SAVE*, um die G-Code-Datei zu speichern.

note: type: Plain text
en: If the result is an array of shapes then the cut order of the result is from the left column to the right column, starting at the bottom row and ending at the top row.
de: Wenn das Ergebnis ein Array von Formen ist, dann ist die Schnittreihenfolge des Ergebnisses von der linken Spalte zur rechten Spalte, beginnend mit der untersten Zeile und endend mit der obersten Zeile.

note: type: Plain text
en: The current job displayed in the Preview Panel may be saved at any time by using the bottom *SAVE* button.  If the G-code has been sent to LinuxCNC (QtPlasmaC) and the user has left the <<qt_conversational-tab,CONVERSATIONAL Tab>>, the user may still save the G-code file from the GUI.  Alternatively, the user could click the <<qt_conversational-tab,CONVERSATIONAL Tab>> which will reload the job, at which time they can press the *SAVE* button.
de: Der aktuelle Job, der im Preview Panel angezeigt wird, kann jederzeit mit dem unteren *SAVE* Button gespeichert werden.  Wenn der G-Code an LinuxCNC (QtPlasmaC) gesendet wurde und der Benutzer die <<qt_conversational-tab,CONVERSATIONAL Tab>> verlassen hat, kann der Benutzer die G-Code Datei immer noch von der GUI aus speichern.  Alternativ kann der Benutzer auf den <<qt_conversational-tab,CONVERSATIONAL Tab>> klicken, wodurch der Job neu geladen wird, woraufhin er die Schaltfläche *SAVE* drücken kann.

note: type: Title ===
en: Error Logging
de: Fehlerprotokollierung

note: type: Plain text
en: All errors are logged into the machine log which is able to be viewed in the <<qt_statistics-tab,STATISTICS Tab>>.  The log file is saved into the configuration directory when QtPlasmaC is shutdown.  The five last logfiles are kept, after which the oldest logfile is deleted each time a new log file is created.  These saved log files may be viewed with any text editor.
de: Alle Fehler werden im Maschinenlog protokolliert, das im <<qt_statistics-tab,STATISTICS Tab>> eingesehen werden kann.  Die Logdatei wird in das Konfigurationsverzeichnis gespeichert, wenn QtPlasmaC heruntergefahren wird.  Die letzten fünf Logfiles werden aufbewahrt, danach wird das älteste Logfile bei jeder Erstellung eines neuen Logfiles gelöscht.  Diese gespeicherten Logdateien können mit einem beliebigen Texteditor eingesehen werden.

note: type: Plain text
en: *ohmic probe activated program is paused*
de: *aktiviertes Ohmic Probe Programm ist angehalten*

note: type: Plain text
en: These errors indicate the corresponding sensor was activated before probing commenced:
de: Diese Fehler deuten darauf hin, dass der entsprechende Sensor aktiviert wurde, bevor die Sondierung begann:

note: type: Plain text
en: *ohmic probe detected before probing program is paused*
de: *ohmische Sonde erkannt, bevor das Sondenprogramm pausiert wird*

note: type: Plain text
en: *breakaway switch detected before probing program is paused*
de: *Ausbruchsschalter erkannt, bevor das Antastprogramm unterbrochen wird*.

note: type: Plain text
en: The Arc OK signal was lost during cutting motion, before the *M5* command was reached:
de: Das Lichtbogen-OK-Signal ging während der Schneidbewegung verloren, bevor der Befehl *M5* erreicht wurde:

note: type: Plain text
en: *valid arc lost program is paused*
de: *gültiger Lichtbogen verloren Programm wird angehalten*

note: type: Plain text
en: The Z axis reached the bottom limit before the work piece was detected:
de: Die Z-Achse erreichte die untere Grenze, bevor das Werkstück erkannt wurde:

note: type: Plain text
en: *bottom limit reached while probing down program is paused*
de: *Untere Grenze erreicht, während das Sondierungsprogramm pausiert wird*.

note: type: Plain text
en: *material too high for safe traverse program is paused*
de: *Material zu hoch für sicheres Verfahren, Programm wird pausiert*.

note: type: Plain text
en: One of these values in MATERIAL section of the <<qt_parameters-tab,PARAMETERS Tab>> is invalid (For example: if they are set to zero):
de: Einer dieser Werte im Abschnitt MATERIAL der Registerkarte <<qt_parameters-tab,PARAMETERS>> ist ungültig (z.B. wenn sie auf Null gesetzt sind):

note: type: Plain text
en: No arc has been detected after attempting to start the number of times indicated by *Max Starts* in the ARC frame of the CONFIGURATION section of the <<qt_parameters-tab,PARAMETERS Tab>>:
de: Es wurde kein Lichtbogen erkannt, nachdem versucht wurde, so oft zu starten, wie in *Max Starts* im ARC-Rahmen des CONFIGURATION-Abschnitts der <<qt_parameters-tab,PARAMETERS Tab>> angegeben:

note: type: Plain text
en: *no arc detected after __<n>__d start attempts program is paused*
de: *kein Lichtbogen erkannt nach __<n>__d Startversuchen Programm ist pausiert*

note: type: Plain text
en: *no arc detected after __<n>__d start attempts manual cut is stopped*
de: *kein Lichtbogen erkannt nach __<n>__d Startversuchen Manueller Schnitt wird gestoppt*

note: type: Plain text
en: THC has caused the bottom limit to be reached while cutting:
de: THC hat dazu geführt, dass die Untergrenze beim Schneiden erreicht wurde:

note: type: Plain text
en: *bottom limit reached while THC moving down program is paused*
de: *Untere Grenze erreicht, während das THC-Abwärtsprogramm pausiert*.

note: type: Plain text
en: THC has caused the top limit to be reached while cutting:
de: THC hat dazu geführt, dass die Obergrenze beim Schneiden erreicht wird:

note: type: Plain text
en: This indicates that the safe height has been reduced due to THC raising the Z axis during cutting:
de: Dies zeigt an, dass die sichere Höhe reduziert wurde, weil THC die Z-Achse während des Schneidens anhebt:

note: type: Plain text
en: *safe traverse height has been reduced*
de: *sichere Verfahrhöhe wurde reduziert*.

note: type: Table
en: background of G-code display active line
de: Hintergrund der aktiven Zeile der G-Code-Anzeige

note: type: Table
en: foreground of disabled buttons
de: Vordergrund der deaktivierten Buttons

note: type: Title ===
en: Returning To The Default Styling
de: Rückkehr zum Standardstil

note: type: Plain text
en: The user may return to the default styling at any time by following the following steps:
de: Der Benutzer kann jederzeit zum Standard-Styling zurückkehren, indem er die folgenden Schritte ausführt:

note: type: Plain text
en: Close QtPlasmaC if open.
de: Schließen von QtPlasmaC, falls geöffnet.

note: type: Plain text
en: Delete qtplasmac.qss from the machine config directory.
de: Löschen Sie qtplasmac.qss aus dem Maschinen-Konfigurationsverzeichnis.

note: type: Plain text
en: Delete qtplasmac_custom.qss from the machine config directory (if it exists).
de: Löschen von qtplasmac_custom.qss aus dem Maschinen-Konfigurationsverzeichnis (falls vorhanden).

note: type: Plain text
en: The next time QtPlasmaC is loaded all custom styling will be removed and the default styling will return.
de: Beim nächsten Laden von QtPlasmaC wird das gesamte benutzerdefinierte Styling entfernt und das Standard-Styling wird wiederhergestellt.

note: type: Title ==
en: QtPlasmaC Advanced Topics
de: QtPlasmaC Fortgeschrittene Themen

note: type: Title ===
en: Custom User Buttons
de: Benutzerdefinierte Buttons

note: type: Plain text
en: The number of user buttons varies by display type and resolution as follows:
de: Die Anzahl der Benutzertasten variiert je nach Anzeigetyp und Auflösung wie folgt:

note: type: Plain text
en: 16:9 and 4:3 - Minimum 8, Maximum 20
de: 16:9 und 4:3 - Minimum 8, Maximum 20

note: type: Plain text
en: The user will need to run QtPlasmaC at the desired screen size to determine how many user buttons are available for use.
de: Der Benutzer muss QtPlasmaC bei der gewünschten Bildschirmgröße ausführen, um festzustellen, wie viele Benutzertasten zur Verfügung stehen.

note: type: Block title
en: Button Names
de: Button-Namen

note: type: Plain text
en: The text that appears on the button is set the following way:
de: Der Text, der auf einem Button erscheint, wird auf folgende Weise festgelegt:

note: type: Plain text
en: If an ampersand is required to be displayed as text then two consecutive ampersands are required:
de: Wenn ein Ampersand als Text angezeigt werden soll, sind zwei aufeinander folgende Ampersands erforderlich:

note: type: Plain text
en: Buttons can run the following:
de: Die Schaltflächen können folgende Funktionen ausführen:

note: type: Plain text
en: <<qt_button-cmds,External commands>>
de: <<qt_button-cmds,Externe Befehle>>

note: type: Plain text
en: <<qt_button-code,G-code commands>>
de: <<qt_button-code,G-code Befehle>>

note: type: Plain text
en: <<qt_button-toggle,Toggle a HAL pin>>
de: <<qt_button-toggle,Umschalten eines HAL-Pins>>

note: type: Plain text
en: <<qt_button-load,Load a G-code program>>
de: <<qt_button-load,Ein G-Code-Programm laden>>

note: type: Plain text
en: <<qt_button-offsets,Display/Hide an offsets viewer>>
de: <<qt_buttonon-offsets,Anzeige/Verstecken eines Offsets-Viewers>>

note: type: Table
en: Probe Test
de: Sonden-Test

note: type: Table
en: Ohmic Test
de: Ohmscher Test

note: type: Table
en: Change Consumables
de: Verbrauchsmaterialien wechseln

note: type: Table
en: Torch Pulse
de: Brenner-Puls

note: type: Plain text
en: The machine must be homed and idle before proceeding.
de: Die Maschine muss referenziert und im Leerlauf sein, bevor Sie fortfahren.

note: type: Title ===
en: External HAL Pins
de: Externe HAL-Pins

note: type: Plain text
en: QtPlasmaC creates some HAL pins that may be used to connect a momentary external button or pendant etc.
de: QtPlasmaC erstellt einige HAL-Pins, die für den Anschluss eines externen Tasters oder einer Fernbedienung usw. verwendet werden können.

note: type: Plain text
en: The following HAL bit pins are always created. The HAL pin has the identical behaviour of the related QtPlasmaC GUI button.
de: Die folgenden HAL-Bit-Pins werden immer erzeugt. Der HAL-Pin hat das gleiche Verhalten wie der zugehörige QtPlasmaC GUI-Button.

note: type: Table
en: Toggle machine power
de: Maschinenleistung umschalten

note: type: Table
en: Torch height override reset
de: Brennerhöhen-Override zurückgesetzt

note: type: Table
en: Torch height override scale
de: Übersteuerungsskala für die Brennerhöhe

note: type: Table
en: N/A
de: k.A.

note: type: Table
en: Toggle jogging speed between fast and slow
de: Umschalten der Jogginggeschwindigkeit zwischen schnell und langsam

note: type: Table
en: JOGGING FAST/SLOW
de: SCHNELL/LANGSAM JOGGEN

note: type: Table
en: Toggle THC enable
de: THC ein-/ausschalten

note: type: Table
en: THC ENABLE
de: THC AKTIVIEREN

note: type: Table
en: Toggle torch enable
de: Brenner ein-/ausschalten

note: type: Table
en: TORCH ENABLE
de: BRENNER AKTIVIEREN

note: type: Table
en: Toggle corner Lock enable
de: Umschalten Ecke Sperre aktivieren

note: type: Table
en: Toggle voidlock enable
de: Voidlock-Freigabe umschalten

note: type: Table
en: Toggle use auto volts
de: Wechsel auto-Volts ein/aus

note: type: Table
en: Toggle ohmic probe enable
de: Ohmsche Sonde ein-/ausschalten

note: type: Table
en: OHMIC ENABLE
de: OHMISCH AKTIVIEREN

note: type: Table
en: Forward along the programmed path
de: Vorwärts entlang des programmierten Pfades

note: type: Table
en: Reverse along the programmed path
de: Rückwärts entlang des programmierten Pfads

note: type: Plain text
en: The following HAL pins which allow the use of an MPG to control height override are always created.
de: Die folgenden HAL-Stifte ermöglichen die Verwendung eines MPG zur Steuerung der Höhenüberwindung und werden immer erstellt.

note: type: Table
en: Enable MPG height control
de: MPG-Höhenkontrolle einschalten

note: type: Table
en: MPG height change
de: MPG Höhe ändern

note: type: Plain text
en: The following HAL bit pins are only created if the function is specified in a <<qt_custom-user-buttons,custom user button>>.  The HAL pin has the identical behaviour of the related custom user button.
de: Die folgenden HAL-Bitpins werden nur erstellt, wenn die Funktion in einem <<qt_custom-user-buttons,Benutzer-definierter Button>> angegeben ist.  Der HAL-Pin hat das gleiche Verhalten wie die zugehörige benutzerdefinierte Button.

note: type: Plain text
en: The following HAL bit output pins are always created and can be used by either the <<qt_button-toggle,Toggle HAL Pin>> or <<qt_button-pulse,Pulse HAL Pin>> custom user buttons to change the state of an output.
de: Die folgenden HAL-Bit-Ausgangspins werden immer erstellt und können entweder von den benutzerdefinierten Tasten <<qt_button-toggle,Toggle HAL Pin>> oder <<qt_button-pulse,Pulse HAL Pin>> verwendet werden, um den Zustand eines Ausgangs zu ändern.

note: type: Title ===
en: Hide Program Buttons
de: Programm-Buttons ausblenden

note: type: Title ===
en: Tuning Mode 0 Arc OK
de: Tuning-Modus 0 Arc OK

note: type: Plain text
en: Mode 0 Arc OK relies on the arc voltage to set the Arc OK signal.  This is accomplished by sampling the arc voltage every servo thread cycle.  There needs to be a specified number of consecutive samples, all within a specified threshold for the Arc OK signal to be set.  These voltages are also required to be within a specified range.
de: Modus 0 Arc OK basiert auf der Lichtbogenspannung, um das Arc OK-Signal zu setzen.  Dies wird durch Abtasten der Lichtbogenspannung in jedem Servogewindezyklus erreicht.  Damit das Lichtbogen-OK-Signal gesetzt wird, muss eine bestimmte Anzahl aufeinander folgender Abtastungen vorliegen, die alle innerhalb eines bestimmten Schwellenwerts liegen.  Diese Spannungen müssen auch innerhalb eines bestimmten Bereichs liegen.

note: type: delimited block -
en: Override jog inhibit via Z+
de: Aufhebung der Jog-Sperre über Z+

note: type: Plain text
en: The gas pressure units display (psi or bar) is determined by the data received during initial setup of the communication link and is then shown next to the Gas Pressure setting in the MATERIAL section of the <<qt_parameters-tab,PARAMETERS Tab>>.
de: Die Anzeige der Gasdruckeinheiten (psi oder bar) wird durch die bei der Ersteinrichtung der Kommunikationsverbindung empfangenen Daten bestimmt und wird dann neben der Einstellung für den Gasdruck im Abschnitt MATERIAL auf der <<qt_parameters-tab,PARAMETERS Registerkarte>> angezeigt.

note: type: Plain text
en: The PowerMax machine will go into remote mode after communications have been established and may only be controlled remotely (via the QtPlasmaC GUI) at this point.  The connection can be validated by observing the PowerMax display.
de: Die PowerMax-Maschine wechselt nach dem Aufbau der Kommunikation in den Remote-Modus und kann zu diesem Zeitpunkt nur ferngesteuert werden (über die QtPlasmaC-GUI).  Die Verbindung kann durch Beobachtung des PowerMax-Displays validiert werden.

note: type: Plain text
en: To switch the PowerMax back to local mode the user can either:
de: Um den PowerMax wieder in den lokalen Modus zu schalten, kann der Benutzer entweder:

note: type: Plain text
en: Disable PowerMax Comms from the <<qt_main-tab, MAIN Tab>>
de: PowerMax Comms auf der Registerkarte <<qt_main-tab, MAIN>> deaktivieren

note: type: Plain text
en: Close LinuxCNC which will put the PowerMax into local mode during shutdown.
de: LinuxCNC Schließen, wodurch der PowerMax während des Herunterfahrens in den lokalen Modus versetzt wird.

note: type: Plain text
en: Turn the PowerMax off for 30 seconds and then power it back on.
de: Den PowerMax für 30 Sekunden aus- und dann wieder einschalten.

note: type: Plain text
en: If PowerMax communications is active then selecting <<qt_mesh-mode,Mesh Mode>> will automatically select CPA mode on the PowerMax unit.
de: Wenn die PowerMax-Kommunikation aktiv ist, wird durch Auswahl von <<qt_mesh-mode,Mesh Mode>> automatisch der CPA-Modus auf dem PowerMax-Gerät ausgewählt.

note: type: Plain text
en: To use the PowerMax communications feature it is necessary to have the python pyserial module installed.
    If pyserial is not installed an error message will be displayed.
de: Um die PowerMax-Kommunikationsfunktion zu nutzen, muss das Python-Modul pyserial installiert sein.
    Wenn pyserial nicht installiert ist, wird eine Fehlermeldung angezeigt.

note: type: Plain text
en: To install pyserial, enter the following command into a terminal window:
de: Um pyserial zu installieren, geben Sie den folgenden Befehl in ein Terminalfenster ein:

note: type: Plain text
en: A typical <<qt_rs485_connections,connection diagram>> is shown in the appendix of this document as well as confirmed working interfaces.
de: Ein typischer <<qt_rs485_connections,Anschlussplan>> ist im Anhang dieses Dokuments sowie bestätigte Arbeitsschnittstellen dargestellt.

note: type: Title ==
en: Internationalisation
de: Internationalisierung

note: type: Plain text
en: It is possible to create translation files for QtPlasmaC to display in the language of the current locale.
de: Es ist möglich, Übersetzungsdateien für QtPlasmaC zu erstellen, um sie in der Sprache des aktuellen Gebietsschemas anzuzeigen.

note: type: Plain text
en: To create and or edit a translation file requires that LinuxCNC has been installed as run in place.
de: Um eine Übersetzungsdatei zu erstellen und oder zu bearbeiten, muss LinuxCNC installiert sein und vor Ort ausgeführt werden.

note: type: Plain text
en: The following assumes that the linuxcnc git directory is ~/linuxcnc-dev.
de: Im Folgenden wird davon ausgegangen, dass das LinuxCNC git-Verzeichnis ~/linuxcnc-dev ist.

note: type: Plain text
en: The *$* indicates a terminal prompt.
de: Das *$* zeigt eine Terminal-Eingabeaufforderung an.

note: type: Plain text
en: All language files are kept in ~/linuxcnc-dev/share/screens/qtplasmac/languages.
de: Alle Sprachdateien werden in ~/linuxcnc-dev/share/screens/qtplasmac/languages gespeichert.

note: type: Plain text
en: The qtplasmac.py file is a python version of the GUI file used for translation purposes.
de: Die Datei qtplasmac.py ist eine Python-Version der GUI-Datei, die für Übersetzungszwecke verwendet wird.

note: type: Plain text
en: The .ts files are the translation source files for the translations.  These are the files that require creating/editing for each language.
de: Die .ts-Dateien sind die Quelldateien für die Übersetzungen.  Dies sind die Dateien, die für jede Sprache erstellt/bearbeitet werden müssen.

note: type: Plain text
en: The .qm files are the compiled translation files used by pyqt.
de: Die .qm-Dateien sind die kompilierten Übersetzungsdateien, die von pyqt verwendet werden.

note: type: Plain text
en: The language is determined by an underscore plus the first two letters of the locale, for example if an Italian translation was being done then it would be "\_it".  It will be referred to as "_xx" in this document, so "qtplasmac_xx.ts" in this document would actually be "qtplasmac_it.ts" for an Italian translation.
de: Die Sprache wird durch einen Unterstrich plus die ersten beiden Buchstaben des Gebietsschemas bestimmt, z. B. bei einer italienischen Übersetzung wäre dies "\_it".  In diesem Dokument wird sie mit "_xx" bezeichnet, so dass "qtplasmac_xx.ts" in diesem Dokument für eine italienische Übersetzung eigentlich "qtplasmac_it.ts" wäre.

note: type: Plain text
en: The default locale for QtPlasmaC is "_en" which means that any translation files created as "qtplasmac_en.*" will not be used for translations.
de: Das Standardgebietsschema für QtPlasmaC ist "_en", was bedeutet, dass Übersetzungsdateien, die als "qtplasmac_en.*" erstellt wurden, nicht für Übersetzungen verwendet werden.

note: type: Plain text
en: If any of the required utilities (pyuic5, pylupdate5, linguist) are not installed then the user will need to install pyqt5-dev-tools:
de: Wenn eines der erforderlichen Dienstprogramme (pyuic5, pylupdate5, linguist) nicht installiert ist, muss der Benutzer pyqt5-dev-tools installieren:

note: type: Plain text
en: Change to the languages directory:
de: Wechseln Sie in das Sprachenverzeichnis:

note: type: Plain text
en: If any text changes have been made to the GUI then run the following to update the GUI python file:
de: Wenn Textänderungen an der grafischen Benutzeroberfläche vorgenommen wurden, führen Sie den folgenden Befehl aus, um die GUI-Python-Datei zu aktualisieren:

note: type: Plain text
en: The user can either create a new translation source file for a non-existing language translation or modify an existing translation source file due to changes being made to some text in a QtPlasmaC source file.  If modifying an existing translation that has had no source file changes then this step is not required.
de: Der Benutzer kann entweder eine neue Übersetzungsquelldatei für eine nicht existierende Sprachübersetzung erstellen oder eine existierende Übersetzungsquelldatei modifizieren, wenn ein Text in einer QtPlasmaC-Quelldatei geändert wurde.  Wenn Sie eine bestehende Übersetzung modifizieren, die keine Änderungen in der Quelldatei erfahren hat, ist dieser Schritt nicht erforderlich.

note: type: Plain text
en: Create or edit a .ts file:
de: Erstellen oder bearbeiten Sie eine .ts-Datei:

note: type: Plain text
en: this command is a script which runs the following: $ pylupdate5 *.py ../*.py ../../../../../lib/python/qtvcp/lib/qtplasmac/*.py -ts qtplasmac_xx.ts
de: Dieser Befehl ist ein Skript, das Folgendes ausführt: $ pylupdate5 *.py ../*.py ../../../../../lib/python/qtvcp/lib/qtplasmac/*.py -ts qtplasmac_xx.ts

note: type: Plain text
en: The editing of the translation is done with the linguist application:
de: Die Bearbeitung der Übersetzung erfolgt mit der Anwendung Linguist:

note: type: Plain text
en: Then open the required translation file.
de: Öffnen Sie dann die gewünschte Übersetzungsdatei.

note: type: Plain text
en: It is not necessary to provide a translation for every text string, if no translation is specified for a string then the original string will be used in the application.  The user needs to be careful with the length of strings that appear on widgets as space is limited. If possible try to make the translation no longer than the original.
de: Es ist nicht notwendig, für jede Textzeichenfolge eine Übersetzung bereitzustellen. Wenn für eine Zeichenfolge keine Übersetzung angegeben ist, wird die ursprüngliche Zeichenfolge in der Anwendung verwendet.  Der Benutzer muss auf die Länge der Zeichenketten achten, die in den Widgets erscheinen, da der Platz begrenzt ist. Wenn möglich, sollte die Übersetzung nicht länger als das Original sein.

note: type: Plain text
en: When editing is complete save the file:
de: Wenn die Bearbeitung abgeschlossen ist, speichern Sie die Datei:

note: type: delimited block -
en: File > Save
de: Datei > Speichern

note: type: Plain text
en: Then create the .qm file:
de: Erstellen Sie dann die .qm-Datei:

note: type: delimited block -
en: File > Release
de: Datei > Release

note: type: Plain text
en: Then create links to the compiled .qm file for the other QtPlasmaC GUIs.
de: Dann erstellen Sie Links zu der kompilierten .qm Datei für die anderen QtPlasmaC GUIs.

note: type: Plain text
en: QtPlasmaC will be translated to the language of the current locale on the next start so long as a .qm file exists in that language.
de: QtPlasmaC wird beim nächsten Start in die Sprache des aktuellen Gebietsschemas übersetzt, solange eine .qm Datei in dieser Sprache existiert.

note: type: Title ==
en: Appendix
de: Anhang

note: type: Plain text
en: There are example configuration files which use the QtPlasmaC GUI to simulate plasma cutting machines.
de: Es gibt Beispielkonfigurationsdateien, um mit der QtPlasmaC-GUI Plasmaschneidmaschinen zu simulieren.

note: type: Plain text
en: They can be found in the LinuxCNC chooser under: Sample Configurations -> by_machine -> qtplasmac
de: Sie sind in der LinuxCNC-Auswahl unter: Sample Configurations -> by_machine -> qtplasmac zu finden

note: type: Plain text
en: Three versions are available in both metric and imperial units:
de: Drei Versionen sind sowohl in metrischen als auch in imperialen Einheiten erhältlich:

note: type: Plain text
en: qtplasmac_l - 16:9 format, minimum resolution 1366x768
de: qtplasmac_l - 16:9-Format, Mindestauflösung 1366x768

note: type: Plain text
en: qtplasmac_p - 9:16 format, minimum resolution 786x1366
de: qtplasmac_p - 9:16-Format, Mindestauflösung 786x1366

note: type: Plain text
en: qtplasmac_s - 4:3 format, minimum resolution 1024x768
de: qtplasmac_s - 4:3-Format, Mindestauflösung 1024x768

note: type: Plain text
en: Each sample configuration includes a popup control panel to simulate various inputs to the GUI such as:
de: Jede Beispielkonfiguration enthält ein Popup-Bedienfeld, mit dem verschiedene Eingaben in die grafische Benutzeroberfläche simuliert werden können, z. B:

note: type: Plain text
en: ARC VOLTAGE
de: LICHTBOGENSPANNUNG (engl. arc voltage)

note: type: Title ===
en: NGC Samples
de: NGC Beispiele

note: type: Plain text
en: There are some sample G-code files in the ~/linuxcnc/nc_files/examples/plasmac directory.
de: Im Verzeichnis ~/linuxcnc/nc_files/examples/plasmac befinden sich einige Beispiel-G-Code-Dateien.

note: type: Title ===
en: QtPlasmaC Specific G-codes
de: QtPlasmaC-spezifische G-Codes

note: type: Table
en: End all the above
de: Alle oben genannten Punkte beenden

note: type: Table
en: Select a <<qt_material-handling,material>>
de: Festlegung des <<qt_material-handling,Materials>>

note: type: Table
en: M190 P__n__ +
    _n_ denotes the material number.
de: M190 P__n__ +
    _n_ steht für die Werkstoffnummer.

note: type: Table
en: Wait for <<qt_material-handling,material>> change confirmation
de: Warten auf <<qt_material-handling,Material>> Änderungsbestätigung

note: type: Table
en: M66 P3 L3 Qn +
    _n_ is delay time (in seconds). +
    This value may need to be increased for very large material files.
de: M66 P3 L3 Qn +
    _n_ ist die Verzögerungszeit (in Sekunden). +
    Bei sehr großen Materialdateien muss dieser Wert möglicherweise erhöht werden.

note: type: Table
en: Set feed rate from <<qt_material-handling,material>>
de: Vorschubgeschwindigkeit von <<qt_material-handling,material>> ableiten

note: type: Table
en: Enable <<qt_ignore-ok,Ignore Arc OK>>
de: Aktivieren <<qt_ignore-ok,Ignore Arc OK>>

note: type: Table
en: M62 P1 (synchronized with motion) +
        M64 P1 (immediate)
de: M62 P1 (synchronisiert mit der Bewegung) +
        M64 P1 (sofort)

note: type: Table
en: Disable <<qt_ignore-ok,Ignore Arc OK>>
de: Deaktivieren <<qt_ignore-ok,Ignore Arc OK>>

note: type: Table
en: M63 P1 (synchronized with motion) +
        M65 P1 (immediate)
de: M63 P1 (synchronisiert mit der Bewegung) +
        M65 P1 (sofort)

note: type: Table
en: Disable <<qt_thc,THC>>
de: Deaktivieren <<qt_thc,THC>>

note: type: Table
en: M62 P2 (synchronized with motion) +
        M64 P2 (immediate)
de: M62 P2 (synchronisiert mit der Bewegung) +
        M64 P2 (sofort)

note: type: Table
en: Enable <<qt_thc,THC>>
de: Aktivieren <<qt_thc,THC>>

note: type: Table
en: M63 P2 (synchronized with motion) +
        M65 P2 (immediate)
de: M63 P2 (synchronisiert mit der Bewegung) +
        M65 P2 (sofort)

note: type: Table
en: Disable <<qt_overcut,Torch>>
de: Deaktivieren <<qt_overcut,Torch>>

note: type: Table
en: M62 P3 (synchronized with motion) +
        M64 P3 (immediate)
de: M62 P3 (synchronisiert mit der Bewegung) +
        M64 P3 (sofort)

note: type: Table
en: Enable <<qt_overcut,Torch>>
de: Aktivieren <<qt_overcut,Brenner>> (engl. torch)

note: type: Table
en: M63 P3 (synchronized with motion) +
        M65 P3 (immediate)
de: M63 P3 (synchronisiert mit der Bewegung) +
        M65 P3 (sofort)

note: type: Table
en: Set <<qt_velocity_thc,velocity>> to a percentage of feed rate
de: Setzen der <<qt_velocity_thc,Geschwindigkeit>> auf einen Prozentsatz der Vorschubgeschwindigkeit

note: type: Table
en: M67 E3 Qn (synchronized with motion) +
    M68 E3 Qn (immediate) +
    _n_ is the percentage to set +
    10 is the minimum, below this will be set to 100% +
    100 is the maximum, above this will be set to 100% +
    *It is recommended to have M68 E3 Q0 in both the preamble and postamble*
de: M67 E3 Qn (synchronisiert mit der Bewegung) +
    M68 E3 Qn (sofort) +
    _n_ ist der einzustellende Prozentsatz +
    10 ist das Minimum, darunter wird auf 100% gesetzt +
    100 ist das Maximum, darüber wird auf 100% gesetzt +
    *Es wird empfohlen, M68 E3 Q0 sowohl in der Präambel als auch in der Postambel zu verwenden.*

note: type: Table
en: Cutter <<qt_cutter-compensation,compensation>> - left of path
de: Schneidegerät <<qt_cutter-compensation,compensation>> - links vom Pfad

note: type: Table
en: Cutter <<qt_cutter-compensation,compensation>> - right of path
de: Cutter <<qt_cutter-compensation,compensation>> - rechts vom Pfad

note: type: Table
en: Cutter <<qt_cutter-compensation,compensation>> off
de: Cutter <<qt_cutter-compensation,compensation>> aus

note: type: Table
en: G40 +
    *Note that M62 through M68 are invalid while cutter compensation is on*
de: G40 +
    *Beachten Sie, dass M62 bis M68 ungültig sind, wenn die Schneidwerkzeugkompensation aktiviert ist*

note: type: Table
en: Cut <<qt_hole-cutting,holes>> at 60% feed rate
de: Schneiden <<qt_hole-cutting,holes>> mit 60% Vorschub

note: type: Table
en: Cut <<qt_hole-cutting,holes>> at 60% feed rate, turn torch off at hole end, continue hole path for over cut
de: Schneiden Sie <<qt_hole-cutting,holes>> mit 60% Vorschub, schalten Sie den Brenner am Ende der Bohrung aus, fahren Sie mit der Bohrung für den Überschnitt fort

note: type: Table
en: Cut <<qt_hole-cutting,holes>> and arcs at 60% feed rate
de: Schneiden von <<qt_hole-cutting,holes>> und Bögen mit 60% Vorschub

note: type: Table
en: Cut <<qt_hole-cutting,holes>> and arcs at 60% feed rate, turn torch off at hole end, continue hole path for over cut
de: Schneiden Sie <<qt_hole-cutting,Löcher>> (engl. holes) und Bögen mit 60% Vorschub, schalten Sie den Brenner am Ende der Bohrung aus, setzen Sie den Bohrungsweg für den Überschnitt fort

note: type: Table
en: Specify <<qt_hole-cutting,hole>> diameter for +
     #<holes> = 1-4
de: Geben Sie den <<qt_hole-cutting,hole>> Durchmesser an für + 
     #<holes> = 1-4

note: type: Table
en: #<h_diameter> = _n_ +
    (_n_ is the diameter, use the same units system as the rest of the G-code file)
de: #<h_diameter> = _n_ +
    (_n_ ist der Durchmesser, verwenden Sie das gleiche Einheitensystem wie der Rest der G-Code-Datei)

note: type: Table
en: Specify <<qt_hole-cutting,hole>> velocity for +
     #<holes>=1-4
de: Spezifizieren der Geschwindigkeit für <<qt_hole-cutting,Löcher>> +
     #<holes>=1-4

note: type: Table
en: #<h_velocity> = _n_ +
    (_n_ is the percentage, set the percentage of the current feed rate)
de: #<h_velocity> = _n_ +
    (_n_ ist der Prozentsatz, stellen Sie den Prozentsatz der aktuellen Vorschubgeschwindigkeit)

note: type: Table
en: Specify <<qt_overcut,over cut>> length
de: Angabe der Länge des <<qt_overcut, Überschnitts>> (engl. over cut)

note: type: Table
en: #<oclength> = _n_ +
        (_n_ is the length, use the same units system as the rest of the G-code file)
de: #<oclength> = _n_ +
        (_n_ ist die Länge, verwenden Sie das gleiche Einheitensystem wie der Rest der G-Code-Datei)

note: type: Table
en: #<pierce-only> = _n_ +
    (_n_ is the mode, 0=normal cut mode, 1=pierce only mode)
de: #<pierce-only> = _n_ +
    (_n_ ist der Modus, 0=normaler Schnittmodus, 1=nur Durchstichmodus)

note: type: Table
en: Create or edit materials. +
     options: +
     0 - Create temporary default +
     1 - Add if not existing +
     2 - Overwrite if existing else add new
de: Materialien erstellen oder bearbeiten. +
     Optionen: +
     0 - Temporäre Vorgabe erstellen +
     1 - Hinzufügen, wenn nicht vorhanden +
     2 - Überschreiben, wenn vorhanden, sonst neu hinzufügen

note: type: Table
en: mandatory parameters: +
    (o=<option>, nu=<nn>, na=<ll>, ph=<nn>, pd=<nn>, ch=<nn>, fr=<nn>) +
    optional parameters: +
    (kw=<nn>, th=<nn>, ca=<nn>, cv=<nn>, pe=<nn>, gp=<nn>, cm=<nn>, jh=<nn>, jd=<nn>)
de: obligatorische Parameter: +
    (o=<option>, nu=<nn>, na=<ll>, ph=<nn>, pd=<nn>, ch=<nn>, fr=<nn>) +
    optionale Parameter: +
    (kw=<nn>, th=<nn>, ca=<nn>, cv=<nn>, pe=<nn>, gp=<nn>, cm=<nn>, jh=<nn>, jd=<nn>)

note: type: Table
en: Set velocity to 40% of CutFeedRate
de: Geschwindigkeit auf 40% der CutFeedRate setzen

note: type: Table
en: Cut a hole with 60% reduced speed using velocity setting
de: Schneiden Sie ein Loch mit 60% reduzierter Geschwindigkeit mit der Geschwindigkeitseinstellung

note: type: Table
en: Cut a hole with 60% reduced speed using the #<holes> command
de: Schneiden Sie ein Loch mit 60% reduzierter Geschwindigkeit mit dem Befehl #<holes>

note: type: Table
en: Cut a hole with over cut using torch disable
de: Schneiden Sie ein Loch mit Überschnitt mit Brenner deaktivieren

note: type: Table
en: Cut a hole with over cut using the #<holes> command
de: Schneiden Sie ein Loch mit Überschnitt mit dem Befehl #<holes>

note: type: Table
en: Cut a hole with 6.5mm over cut using the #<holes> command
de: Schneiden Sie ein Loch mit 6,5 mm Überschnitt mit dem Befehl #<holes>

note: type: Table
en: Select scribe and select torch at end of scribing
de: Wählen Sie Ritzer/Schreiber (engl. scribe) und wählen Sie den Brenner am Ende des Ritzens

note: type: Table
en: (Requires a small motion command or nothing happens) +
    G21 (metric) +
    F99999 (high feed rate) +
    G0 X10 Y10 +
    M3 $2 S1 (spotting on) +
    G91 (relative distance mode) +
    G1 X0.000001 +
    G90 (absolute distance mode) +
    M5 $2 (spotting off) +
    G0 X0 Y0 +
    G90 +
    M2
de: (Erfordert einen kleinen Bewegungsbefehl, sonst passiert nichts) +
    G21 (metrisch) +
    F99999 (hohe Vorschubgeschwindigkeit) +
    G0 X10 Y10 +
    M3 $2 S1 (spotting ein) +
    G91 (relativer Abstandsmodus) +
    G1 X0.000001 +
    G90 (absoluter Abstandsmodus) +
    M5 $2 (spotting aus) +
    G0 X0 Y0 +
    G90 +
    M2

note: type: Table
en: Edit material, if not existing create a new one
de: Material bearbeiten, falls nicht vorhanden, ein neues Material anlegen

note: type: Plain text
en: The Mesa THCAD is a common way of obtaining the arc voltage from a plasma cutter and is also useful for ohmic sensing of the material during probing.  The THCAD may be used for parallel port configurations as well as configurations using Mesa Electronics hardware.  The THCAD is available in three different models, THCAD-5, THCAD-10, and THCAD-300.
de: Das Mesa THCAD ist eine gängige Methode, um die Lichtbogenspannung von einem Plasmaschneider zu erhalten, und ist auch für die ohmsche Messung des Materials während des Abtastens nützlich.  Das THCAD kann sowohl für Konfigurationen mit parallelen Anschlüssen als auch für Konfigurationen mit Mesa Electronics-Hardware verwendet werden.  Das THCAD ist in drei verschiedenen Modellen erhältlich: THCAD-5, THCAD-10 und THCAD-300.

note: type: Plain text
en: There is a mode jumper on each THCAD card which should be set to *UNIPOLAR*
de: Auf jeder THCAD-Karte befindet sich ein Mode-Jumper, der auf *UNIPOLAR* gesetzt werden sollte.

note: type: Plain text
en: There is a frequency divider jumper on each THCAD card which should be set according to the hardware type:
de: Auf jeder THCAD-Karte befindet sich ein Frequenzteiler-Jumper, der je nach Hardware-Typ gesetzt werden sollte:

note: type: Table
en: Parallel Port with very low latency
de: Parallele Schnittstelle mit sehr geringer Latenzzeit

note: type: Table
en: Parallel Port recommended starting point
de: Parallele Schnittstelle empfohlener Startpunkt

note: type: Table
en: Parallel Port with higher latency, or when cutting thick material
de: Paralleler Anschluss mit höherer Latenzzeit oder beim Schneiden von dickem Material

note: type: Plain text
en: If using a parallel port it may be necessary for the user to adjust the jumper setting and the subsequent scaling values on the <<qt_parameters-tab,Parameters Tab>> to achieve optimal results.  Symptoms may include random torch raises or dives during otherwise stable cutting. Halscope plots may be useful in diagnosing these issues.
de: Bei Verwendung einer parallelen Schnittstelle kann es erforderlich sein, dass der Benutzer die Jumper-Einstellung und die nachfolgenden Skalierungswerte auf der Registerkarte <<qt_parameters-tab,Parameters Tab>> anpasst, um optimale Ergebnisse zu erzielen.  Zu den Symptomen gehören zufällige Brenneranstiege oder -absenkungen während des ansonsten stabilen Schneidens. Halscope-Diagramme können bei der Diagnose dieser Probleme hilfreich sein.

note: type: Plain text
en: Located on the rear of the THCAD is a calibration sticker showing:
de: Auf der Rückseite des THCADs befindet sich ein Kalibrierungsaufkleber:

note: type: Plain text
en: _r_ = divider ratio (see below).
de: _r_ = Teilerverhältnis (siehe unten).

note: type: Plain text
en: _f_ = full scale value from calibration sticker.
de: _f_ = Skalenendwert vom Kalibrierungsaufkleber.

note: type: Plain text
en: _d_ = value from jumper above.
de: _d_ = Wert von Jumper oben.

note: type: Block title
en: Divider Ratio
de: Teiler-Verhältnis

note: type: Plain text
en: _THCAD-5 or THCAD-10_
de: _THCAD-5 oder THCAD-10_

note: type: Plain text
en: IF THE USER IS USING A HF START PLASMA POWER SUPPLY THEN EACH OF THESE RESISTANCES SHOULD BE MADE UP OF SEVERAL HIGH VOLTAGE RESISTORS.
de: WENN DER BENUTZER EINE HF-STARTPLASMA-STROMVERSORGUNG VERWENDET, SOLLTE JEDER DIESER WIDERSTÄNDE AUS MEHREREN HOCHSPANNUNGSWIDERSTÄNDEN BESTEHEN.

note: type: Plain text
en: IF THE USER IS USING A HF START PLASMA POWER SUPPLY THEN OHMIC SENSING IS NOT RECOMMENDED.
de: WENN DER BENUTZER EINE HF-STARTPLASMA-STROMVERSORGUNG VERWENDET, WIRD EINE OHMSCHE ABTASTUNG NICHT EMPFOHLEN.

note: type: Plain text
en: These values can be calculated by using https://jscalc.io/calc/NTr5QDX6WgMThBVb[this online calculator].
de: Diese Werte können mit https://jscalc.io/calc/NTr5QDX6WgMThBVb[diesem Online-Rechner] berechnet werden.

note: type: Title ===
en: RS485 Connections
de: RS485-Verbindungen

note: type: Plain text
en: Hypertherm RS485 Wiring Diagram (wire colors inside the Hypertherm in parentheses):
de: Hypertherm RS485 Verdrahtungsplan (Drahtfarben innerhalb des Hypertherm in Klammern):

note: type: Table
en: *1* - Tx+ (Red)
de: *1* - Tx+ (Rot)

note: type: Table
en: *2* - Tx- (Black)
de: *2* - Tx- (schwarz)

note: type: Table
en: *3* - Rx+ (Brown)
de: *3* - Rx+ (braun)

note: type: Table
en: *4* - Rx- (White)
de: *4* - Rx- (weiß)

note: type: Table
en: *5* - GND (Green)
de: *5* - GND (grün)

note: type: Plain text
en: RS485 interfaces that are known to work:
de: RS485-Schnittstellen, von denen bekannt ist, dass sie funktionieren:

note: type: Plain text
en: DTECH DT-5019 USB to RS-485 converter adapter:
de: DTECH DT-5019 USB zu RS-485 Konverter Adapter:

note: type: Plain text
en: The following is necessary to convert a motherboard Serial connection or Serial card (RS232) to RS485:
de: Um eine serielle Verbindung der Hauptplatine oder eine serielle Karte (RS232) in RS485 umzuwandeln, sind folgende Schritte erforderlich:

note: type: Plain text
en: DTECH RS-232 to RS-485 converter:
de: DTECH RS-232 zu RS-485 Konverter:

note: type: Plain text
en: Serial card example (Sunnix SER5037A PCI Card shown with Breakout Board):
de: Beispiel einer seriellen Karte (Sunnix SER5037A PCI-Karte mit Breakout Board):

note: type: Title ===
en: Arc OK With A Reed Relay
de: Lichtbogen OK mit einem Reed-Relais

note: type: Plain text
en: An effective and very reliable method of obtaining an Arc OK signal from a plasma power supply without a CNC port is to mount a reed relay inside a non-conductive tube and wrap and secure three turns of the work lead around the tube.
de: Eine effektive und sehr zuverlässige Methode, um ein Lichtbogen-OK-Signal von einer Plasmaversorgung ohne CNC-Anschluss zu erhalten, besteht darin, ein Reed-Relais in einer nicht leitenden Röhre zu montieren und drei Windungen des Arbeitskabels um die Röhre zu wickeln und zu sichern.

note: type: Plain text
en: This assembly will now act as a relay that will switch on when current is flowing through the work lead which only occurs when a cutting arc has been established.
de: Diese Baugruppe fungiert nun als Relais, das sich einschaltet, wenn Strom durch die Arbeitsleitung fließt, was nur dann der Fall ist, wenn sich ein Lichtbogen gebildet hat.

note: type: Plain text
en: This will require that QtPlasmaC be operated in Mode 1 rather than Mode 0. See the <<qt_mode,QtPlasmaC Modes>> sections for more information.
de: Dies erfordert, dass QtPlasmaC im Modus 1 und nicht im Modus 0 betrieben wird. Siehe die <<qt_mode,QtPlasmaC Modes>> Abschnitte für weitere Informationen.

note: type: Title ===
en: Contact Load Schematics
de: Schematische Darstellung der Kontaktbelastung

note: type: Title ===
en: Keyboard Jogging
de: Tastatur-Jogging

note: type: Plain text
en: There is a known issue with some combinations of hardware and keyboards that may affect the autorepeat feature of the keyboard and will then affect keyboard jogging by intermittent stopping and starting during jogging.  This issue can be prevented by disabling the Operating System's autorepeat feature for all keys.  QtPlasmaC uses this disabling feature by default for all keys only when the <<qt_main-tab,MAIN Tab>> is visible, with the following exceptions when autorepeat is allowed with the <<qt_main-tab,MAIN Tab>> visible: G-code editor is active, MDI is active. When QtPlasmaC is shut down, the Operating System's autorepeat feature will be enabled for all keys.
de: Es gibt ein bekanntes Problem mit einigen Kombinationen von Hardware und Tastaturen, das die Autorepeat-Funktion der Tastatur beeinträchtigen kann und sich dann auf das Joggen der Tastatur auswirkt, indem es während des Joggens zeitweise stoppt und startet.  Dieses Problem kann verhindert werden, indem die Autorepeat-Funktion des Betriebssystems für alle Tasten deaktiviert wird.  QtPlasmaC verwendet diese Deaktivierung standardmäßig für alle Tasten nur, wenn das <<qt_main-tab,MAIN Tab>> sichtbar ist, mit den folgenden Ausnahmen, wenn Autorepeat bei sichtbarem <<qt_main-tab,MAIN Tab>> erlaubt ist: G-Code-Editor ist aktiv, MDI ist aktiv. Wenn QtPlasmaC heruntergefahren wird, dann wird die Autorepeat-Funktion des Betriebssystems für alle Tasten aktiviert.

note: type: Plain text
en: This issue does not affect any jogging using the GUI jog buttons.
de: Dieses Problem betrifft nicht das Joggen mit den GUI-Jog-Tasten.

note: type: Plain text
en: Disconnecting and reconnecting a keyboard during an active QtPlasmaC session will cause the autorepeat feature to re-enable itself automatically which may cause intermittent stopping and starting during jogging.  The user must restart QtPlasmaC to disable the autorepeat feature again.
de: Das Trennen und erneute Anschließen einer Tastatur während einer aktiven QtPlasmaC-Sitzung führt dazu, dass sich die Autorepeat-Funktion automatisch wieder aktiviert, was zu einem unregelmäßigen Anhalten und Starten während des Joggens führen kann.  Der Benutzer muss QtPlasmaC neu starten, um die Autorepeat-Funktion wieder zu deaktivieren.

note: type: Title ==
en: Support
de: Unterstützung

note: type: Plain text
en: Online help and support is available from the https://forum.linuxcnc.org/plasmac[PlasmaC section] of the https://forum.linuxcnc.org/[LinuxCNC Forum].
de: Online-Hilfe und -Unterstützung finden Sie unter https://forum.linuxcnc.org/plasmac[PlasmaC section] des https://forum.linuxcnc.org/[LinuxCNC Forum].

note: type: Plain text
en: The user can create a compressed file containing the complete machine configuration to aid in fault diagnosis by pressing following the directions in the <<qt_backup,backup>> section.  The resulting file is suitable for attaching to a post on the LinuxCNC Forum to help the community diagnose specific issues.
de: Der Benutzer kann eine komprimierte Datei erstellen, welche die komplette Maschinenkonfiguration enthält, um die Fehlerdiagnose zu unterstützen, indem er den Anweisungen im Abschnitt <<qt_backup,backup>> folgt.  Die resultierende Datei eignet sich zum Anhängen an einen Beitrag auf dem LinuxCNC Forum, um der Gemeinschaft zu helfen, bestimmte Probleme zu diagnostizieren.

note: type: Title =
en: Remap Extending G-code
de: Neuzuordnung (engl. remap) für das Erweitern von G-Code

note: type: Title ==
en: Introduction: Extending the RS274NGC Interpreter by Remapping Codes
de: Einführung: Erweiterung des RS274NGC-Interpreters durch Remapping von Codes

note: type: Title ===
en: A Definition: Remapping Codes
de: Eine Definition: Neuzuordnung von Codes

note: type: Plain text
en: By 'remapping codes' we mean one of the following:
de: Mit "Neuzuordnung" (engl. Remapping) von Codes meinen wir eine der folgenden Optionen:

note: type: Plain text
en: Define the semantics of new - that is, currently unallocated - M- or G-codes
de: Definition der Semantik neuer - d.h. derzeit nicht zugewiesener - M- oder G-Codes

note: type: Plain text
en: Redefine the semantics of a - currently limited - set of existing codes.
de: Definieren Sie die Semantik eines - derzeit begrenzten - Satzes bestehender Codes neu.

note: type: Title ===
en: Why would you want to extend the RS274NGC Interpreter?
de: Warum sollten Sie den RS274NGC Interpreter erweitern?

note: type: Plain text
en: The set of codes (M,G,T,S,F) currently understood by the RS274NGC interpreter is fixed and cannot be extended by configuration options.
de: Der Satz von Codes (M,G,T,S,F), die derzeit vom RS274NGC-Interpreter verstanden werden, ist festgelegt und kann nicht durch Konfigurationsoptionen erweitert werden.

note: type: Plain text
en: In particular, some of these codes implement a fixed sequence of steps to be executed. While some of these, like M6, can be moderately configured by activating or skipping some of these steps through INI file options, overall the behavior is fairly rigid. So - if your are happy with this situation, then this manual section is not for you.
de: Insbesondere implementieren einige dieser Codes eine feste Abfolge von Schritten, die ausgeführt werden müssen. Während einige dieser Codes, wie M6, durch die Aktivierung oder das Überspringen einiger dieser Schritte über INI-Dateioptionen einigermaßen konfiguriert werden können, ist das Verhalten insgesamt ziemlich starr. Wenn Sie also mit dieser Situation zufrieden sind, dann ist dieser Abschnitt des Handbuchs nichts für Sie.

note: type: Plain text
en: In many cases, this means that supporting a non 'out of the box' configuration or machine is either cumbersome or impossible, or requires resorting to changes at the 'C/C\+\+' language level. The latter is unpopular for good reasons - changing internals requires in-depth understanding of interpreter internals, and moreover brings its own set of support issues. While it is conceivable that certain patches might make their way into the main LinuxCNC distribution, the result of this approach is a hodge-podge of special-case solutions.
de: In vielen Fällen bedeutet dies, dass die Unterstützung von Konfigurationen oder Maschinen, die nicht "out of the box" sind, entweder umständlich oder unmöglich ist, oder dass Änderungen auf der Ebene der Sprache "C/C\+\+" vorgenommen werden müssen. Letzteres ist aus guten Gründen unpopulär - die Änderung von Interna erfordert ein tiefes Verständnis der Interpreter-Interna und bringt darüber hinaus eine Reihe von Support-Problemen mit sich. Obwohl es denkbar ist, dass bestimmte Patches ihren Weg in die Hauptdistribution von LinuxCNC finden, ist das Ergebnis dieses Ansatzes ein Sammelsurium von Speziallösungen.

note: type: Plain text
en: A good example for this deficiency is tool change support in LinuxCNC: While random tool changers are well supported, it is next to impossible to reasonably define a configuration for a manual-tool change machine with, for example, an automatic tool length offset switch being visited after a tool change, and offsets set accordingly. Also, while a patch for a very specific rack tool changer exists, it has not found its way back into the main code base.
de: Ein gutes Beispiel für diesen Mangel ist die Werkzeugwechselunterstützung in LinuxCNC: Während zufällige Werkzeugwechsler gut unterstützt werden, ist es nahezu unmöglich, eine Konfiguration für eine manuelle Werkzeugwechselmaschine vernünftig zu definieren, wobei beispielsweise ein automatischer Werkzeuglängen-Offset-Schalter nach einem Werkzeugwechsel besucht und entsprechende Offsets gesetzt werden. Auch wenn ein Patch für einen sehr spezifischen Rack-Werkzeugwechsler existiert, hat er nicht seinen Weg zurück in das primäre Quellcode Repository gefunden.

note: type: Plain text
en: However, many of these things may be fixed by using an O-word procedure instead of a built in code - whenever the - insufficient - built in code is to be executed, call the O-word procedure instead. While possible, it is cumbersome - it requires source-editing of NGC programs, replacing all calls to the deficient code by a an O-word procedure call.
de: Viele dieser Probleme können jedoch durch die Verwendung einer O-Wort-Prozedur anstelle eines eingebauten Codes behoben werden - wann immer der - unzureichende - eingebaute Code ausgeführt werden soll, rufen Sie stattdessen die O-Wort-Prozedur auf. Dies ist zwar möglich, aber umständlich - es erfordert eine Quelltextbearbeitung der NGC-Programme, wobei alle Aufrufe des mangelhaften Codes durch einen Aufruf einer O-Wort-Prozedur ersetzt werden müssen.

note: type: Plain text
en: In its simplest form, a remapped code isn't much more than a spontaneous call to an O-word procedure. This happens behind the scenes - the procedure is visible at the configuration level, but not at the NGC program level.
de: In seiner einfachsten Form ist ein remapped Code nicht viel mehr als ein spontaner Aufruf einer O-Wort-Prozedur. Dies geschieht hinter den Kulissen - die Prozedur ist auf der Konfigurationsebene sichtbar, aber nicht auf der NGC-Programmebene.

note: type: Plain text
en: Generally, the behavior of a remapped code may be defined in the following ways:
de: Im Allgemeinen kann das Verhalten eines umgewandelten Codes wie folgt definiert werden:

note: type: Plain text
en: You define a O-word subroutine which implements the desired behavior
de: Sie definieren eine O-Wort-Unterroutine, die das gewünschte Verhalten implementiert

note: type: Plain text
en: Alternatively, you may employ a Python function which extends the interpreter's behavior.
de: Alternativ können Sie auch eine Python-Funktion verwenden, die das Verhalten des Interpreters erweitert.

note: type: Block title
en: How to glue things together
de: Wie man Dinge zusammenbringt

note: type: Plain text
en: M- and G-codes, and O-words subroutine calls have some fairly different syntax.
de: M- und G-Codes und O-Wörter Unterprogrammaufrufe haben eine recht unterschiedliche Syntax.

note: type: Plain text
en: O-word procedures, for example, take positional parameters with a specific syntax like so:
de: O-Wort-Prozeduren zum Beispiel nehmen Positionsparameter mit einer bestimmten Syntax wie folgt:

note: type: Plain text
en: whereas M- or G-codes typically take required or optional 'word' parameters. For instance, G76 (threading) requires the P,Z,I,J and K words, and optionally takes the R,Q,H, E and L words.
de: während M- oder G-Codes in der Regel erforderliche oder optionale "Wort"-Parameter enthalten. Für G76 (Einfädeln) sind beispielsweise die Wörter P, Z, I, J und K erforderlich, und optional sind die Wörter R, Q, H, E und L erforderlich.

note: type: Plain text
en: So it isn't simply enough to say 'whenever you encounter code X, please call procedure Y' - at least some checking and conversion of parameters needs to happen. This calls for some 'glue code' between the new code, and its corresponding NGC procedure to execute before passing control to the NGC procedure.
de: Es reicht also nicht aus, einfach zu sagen: "Wann immer Sie auf Code X stoßen, rufen Sie bitte Prozedur Y auf" - es muss zumindest eine Überprüfung und Konvertierung der Parameter stattfinden. Dies erfordert einen "Glue Code" zwischen dem neuen Code und der entsprechenden NGC-Prozedur, der ausgeführt werden muss, bevor die Kontrolle an die NGC-Prozedur übergeben wird.

note: type: Plain text
en: This glue code is impossible to write as an O-word procedure itself since the RS274NGC language lacks the introspective capabilities and access into interpreter internal data structures to achieve the required effect. Doing the glue code in - again - 'C/C\+\+' would be an inflexible and therefore unsatisfactory solution.
de: Dieser "Glue"-Code kann nicht als O-Wort-Prozedur geschrieben werden, da der RS274NGC-Sprache die introspektiven Fähigkeiten und der Zugriff auf interne Datenstrukturen des Interpreters fehlen, um den gewünschten Effekt zu erzielen. Den Glue-Code in - wiederum - 'C/C\+\+' zu schreiben, wäre eine unflexible und daher unbefriedigende Lösung.

note: type: Block title
en: How Embedded Python fits in
de: Wie sich Embedded Python einfügt

note: type: Plain text
en: To make a simple situation easy and a complex situation solvable, the glue issue is addressed as follows:
de: Um eine einfache Situation einfach und eine komplexe Situation lösbar zu machen, wird das Problem des Glue Codes als Zwischenebene wie folgt angegangen:

note: type: Plain text
en: for simple situations, a built-in glue procedure (`argspec`) covers most common parameter passing requirements
de: für einfache Situationen gibt es eine eingebaute Glue-Prozedur (`argspec`), welche die häufigsten Anforderungen an die Parameterübergabe abdeckt

note: type: Plain text
en: for remapping T,M6,M61,S,F there is some standard Python glue which should cover most situations, see <<remap:standard-glue,Standard Glue>>
de: Für die Neuzuordnung von T,M6,M61,S,F gibt es einen Standard-Python-Glue (engl. für Kleber), der die meisten Situationen abdecken sollte, siehe <<remap:standard-glue,Standard Glue>>.

note: type: Plain text
en: for more complex situations, one can write your own Python glue to implement new behavior.
de: Für komplexere Situationen kann man einen eigenen Python-Glue schreiben, um neues Verhalten zu implementieren.

note: type: Plain text
en: Embedded Python functions in the Interpreter started out as glue code, but turned out very useful well beyond that. Users familiar with Python will likely find it easier to write remapped codes, glue, O-word procedures, etc. in pure Python, without resorting to the somewhat cumbersome RS274NGC language at all.
de: Die eingebetteten Python-Funktionen im Interpreter waren ursprünglich als Glue-Code gedacht, erwiesen sich aber weit darüber hinaus als sehr nützlich. Benutzer, die mit Python vertraut sind, werden es wahrscheinlich einfacher finden, remapped Codes, Glue, O-Wort-Prozeduren usw. in reinem Python zu schreiben, ohne auf die etwas schwerfällige RS274NGC-Sprache zurückgreifen zu müssen.

note: type: Block title
en: A Word on Embedded Python
de: Ein Wort zu eingebettetem Python

note: type: Plain text
en: Many people are familiar with 'extending' the Python interpreter by 'C/C\+\+' modules, and this is heavily used in LinuxCNC to access Task, HAL and Interpreter internals from Python scripts. 'Extending Python' basically means: your Python script executes as 'it is in the driver seat', and may access non-Python code by importing and using extension modules written in 'C/C\+\+'. Examples for this are the LinuxCNC `hal`, `gcode` and `emc` modules.
de: Viele Menschen sind mit der 'Erweiterung' des Python-Interpreters durch 'C/C\+\+'-Module vertraut, und dies wird in LinuxCNC stark genutzt, um von Python-Skripten aus auf Task-, HAL- und Interpreter-Interna zuzugreifen. 'Python erweitern' bedeutet im Grunde: Ihr Python-Skript wird so ausgeführt, als 'wäre es der Bestimmer' und kann auf Nicht-Python-Code zugreifen, indem es Erweiterungsmodule importiert und verwendet, die in 'C/C\+\+' geschrieben sind. Beispiele hierfür sind die LinuxCNC-Module `hal`, `gcode` und `emc`.

note: type: Plain text
en: Embedded Python is a bit different and less commonly known: The main program is written in C/C++ and may use Python like a subroutine. This is powerful extension mechanism and the basis for the 'scripting extensions' found in many successful software packages. Embedded Python code may access 'C/C\+\+' variables and functions through a similar extension module method.
de: Eingebettetes Python ist ein wenig anders und weniger bekannt: Das Hauptprogramm ist in C/C++ geschrieben und kann Python wie ein Unterprogramm verwenden. Dies ist ein leistungsfähiger Erweiterungsmechanismus und die Grundlage für die "Skripterweiterungen", die in vielen erfolgreichen Softwarepaketen zu finden sind. Eingebetteter Python-Code kann auf "C/C++"-Variablen und -Funktionen über eine ähnliche Erweiterungsmodulmethode zugreifen.

note: type: Title ==
en: Getting started
de: Erste Schritte

note: type: Plain text
en: Defining a code involves the following steps:
de: Die Definition eines Codes umfasst die folgenden Schritte:

note: type: Plain text
en: Pick a code - either use an unallocated code, or redefine an existing code.
de: Wählen Sie einen Code - verwenden Sie entweder einen nicht zugewiesenen Code oder definieren Sie einen vorhandenen Code neu.

note: type: Plain text
en: Decide how parameters are handled.
de: Entscheiden Sie, wie Parameter gehandhabt werden.

note: type: Plain text
en: Decide if and how results are handled.
de: Entscheiden Sie, ob und wie die Ergebnisse behandelt werden.

note: type: Plain text
en: Decide about the execution sequence.
de: Entscheiden Sie über die Reihenfolge der Ausführung.

note: type: Title ===
en: Builtin Remaps
de: Integrierte Neuzuordnungen

note: type: Plain text
en: Please note that currently only some existing codes can be redefined, while there are many 'free' codes that may be available for remapping. When developing redefined existing code, it is a good idea to start with an unassigned G- or M- code, so that you can use both an existing behavior as well as a new one. When you're done, redefine the existing code to use your remapping configuration.
de: Bitte beachten Sie, dass derzeit nur einige bestehende Codes umdefiniert werden können, während es viele "freie" Codes gibt, die für eine Neuzuordnung zur Verfügung stehen. Bei der Entwicklung eines umdefinierten bestehenden Codes ist es eine gute Idee, mit einem nicht zugewiesenen G- oder M-Code zu beginnen, damit Sie sowohl ein bestehendes als auch ein neues Verhalten verwenden können. Wenn Sie fertig sind, definieren Sie den vorhandenen Code so um, dass er Ihre Konfiguration für die Neuzuordnung verwendet.

note: type: Plain text
en: The current set of unused M-codes, available for user definition, can be found in the <<remap:unallocated-m-codes,unallocated M-codes section>>,
de: Der aktuelle Satz unbenutzter M-Codes, die für die Definition durch den Benutzer zur Verfügung stehen, ist in dem <<Karte:unallocated-m-codes,unbelegte M-codes>> Abschnitt zu finden.

note: type: Plain text
en: For G-codes, see the <<remap:unallocated-g-codes,unallocated G-codes list>>.
de: Informationen zu unbelegten G-Codes finden Sie <<remap:unallocated-g-codes,hier>>.

note: type: Plain text
en: Existing codes that can be reassigned are listed in the <<remap:remappable-codes,remappable codes section>>.
de: Vorhandene Codes, die neu zugewiesen werden können, sind im Abschnitt <<remap:remappable-codes, neu zuweisbare Codes>> aufgeführt.

note: type: Plain text
en: There are currently two complete Python-only remaps that are available in stdglue.py:
de: Derzeit gibt es zwei vollständige, nur in Python verfügbare Remaps, die in stdglue.py verfügbar sind:

note: type: Plain text
en: These are meant for use with lathe.  Lathes don't use M6 to index the tools, they use the T command.
de: Diese sind für die Verwendung mit Drehmaschinen gedacht.  Drehbänke verwenden nicht M6, um die Werkzeuge zu indexieren, sondern den Befehl T.

note: type: Plain text
en: This remap also adds wear offsets to the tool offset, ie. T201 would index to tool 2 (with tool 2's tool offset) and adds wear offset 1.  In the tool table, tools numbers above 10000 are wear offsets, ie in the tool table, tool 10001 would be wear offset 1.
de: Diese Neuzuordnung fügt auch Verschleißkorrekturen zur Werkzeugkorrektur hinzu, d.h. T201 würde auf Werkzeug 2 indexiert (mit der Werkzeugkorrektur von Werkzeug 2) und fügt die Verschleißkorrektur 1 hinzu.  In der Werkzeugtabelle sind die Werkzeugnummern über 10000 Verschleißkorrekturen, d.h. in der Werkzeugtabelle wäre das Werkzeug 10001 die Verschleißkorrektur 1.

note: type: Plain text
en: Here is what you need in the INI to use them:
de: Hier ist, was Sie in der INI brauchen, um sie zu verwenden:

note: type: delimited block -
en: # code specific for this configuration
    PATH_PREPEND=./
de: # Code spezifisch für diese Konfiguration
    PATH_PREPEND=./

note: type: delimited block -
en: # generic support code - make sure this actually points to Python-stdglue
    PATH_APPEND=../../nc_files/remap_lib/python-stdglue/
de: # generischer Support-Code - stellen Sie sicher, dass dieser tatsächlich auf Python-stdglue zeigt
    PATH_APPEND=../../nc_files/remap_lib/python-stdglue/

note: type: delimited block -
en: # import the following Python module
    TOPLEVEL=toplevel.py
de: # importieren Sie das folgende Python-Modul
    TOPLEVEL=toplevel.py

note: type: delimited block -
en: # the higher the more verbose tracing of the Python plugin
    LOG_LEVEL = 0
de: # je höher, desto ausführlicher die Aufzeichnung des Python-Plugins
    LOG_LEVEL = 0

note: type: Plain text
en: <<remap:upgrading-an-existing,Upgrade an existing configuration>>
de: <<remap:upgrading-an-existing,Upgrade einer bestehenden Konfiguration>>

note: type: Title ===
en: Picking a code
de: Auswahl eines Codes

note: type: Plain text
en: Note that currently only a few existing codes may be redefined, whereas there are many 'free' codes which might be made available by remapping. When developing a redefined existing code, it might be a good idea to start with an unallocated G- or M-code so both the existing and new behavior can be exercised. When done, redefine the existing code to use your remapping setup.
de: Beachten Sie, dass derzeit nur einige wenige bestehende Codes umdefiniert werden können, während es viele "freie" Codes gibt, die durch eine Neuzuordnung verfügbar gemacht werden könnten. Bei der Entwicklung eines umdefinierten bestehenden Codes ist es sinnvoll, mit einem nicht zugewiesenen G- oder M-Code zu beginnen, damit sowohl das bestehende als auch das neue Verhalten geübt werden kann. Wenn Sie fertig sind, definieren Sie den bestehenden Code neu, um Ihre Remapping-Einstellung zu verwenden.

note: type: Plain text
en: the current set of unused M-codes open to user definition can be found <<remap:unallocated-m-codes,here>>,
de: Die aktuelle Menge der nicht verwendeten M-Codes, die vom Benutzer definiert werden können, finden Sie <<remap:unallocated-m-codes,here>>,

note: type: Plain text
en: unallocated G-codes are listed <<remap:unallocated-g-codes,here>>.
de: Nicht zugeordnete G-Codes werden <<remap:unallocated-g-codes,hier>> aufgelistet.

note: type: Plain text
en: Existing codes which may be remapped are listed <<remap:remappable-codes,here>>.
de: Vorhandene Codes, die neu zugeordnet werden können, sind <<remap:remappable-codes,in dieser Liste>> aufgeführt.

note: type: Title ===
en: Parameter handling
de: Handhabung der Parameter

note: type: Plain text
en: Let's assume the new code will be defined by an NGC procedure, and needs some parameters, some of which might be required, others might be optional. We have the following options to feed values to the procedure:
de: Nehmen wir an, der neue Code wird durch eine NGC-Prozedur definiert und benötigt einige Parameter, von denen einige erforderlich und andere optional sein können. Wir haben die folgenden Optionen, um der Prozedur Werte zuzuführen:

note: . <<remap:extracting-words,extracting words from the current block>> type: Plain text
en: extracting words from the current block and pass them to the procedure as parameters (like `X22.34` or `P47`)
de: Extraktion von Wörtern aus dem aktuellen Block und Übergabe an die Prozedur als Parameter (z.B. `X22.34` oder `P47`)

note: type: Plain text
en: referring to <<gcode:ini-hal-params,INI file variables>>
de: unter Bezugnahme auf <<gcode:ini-hal-params,INI-Datei-Variablen>>

note: type: Plain text
en: referring to global variables (like `#2200 = 47.11` or `#<_global_param> = 315.2`)
de: Bezugnahme auf globale Variablen (wie `#2200 = 47.11` oder `#<_global_param> = 315.2`)

note: type: Plain text
en: The first method is preferred for parameters of dynamic nature, like positions. You need to define which words on the current block have any meaning for your new code, and specify how that is passed to the NGC procedure. Any easy way is to use the <<sub:argspec-parameter,argspec statement>>. A custom prolog might provide better error messages.
de: Die erste Methode wird für dynamische Parameter wie Positionen bevorzugt. Sie müssen definieren, welche Wörter des aktuellen Blocks eine Bedeutung für Ihren neuen Code haben, und angeben, wie diese an die NGC-Prozedur übergeben werden. Ein einfacher Weg ist die Verwendung der <<sub:argspec-parameter,argspec-Anweisung>>. Ein eigener Prolog könnte bessere Fehlermeldungen liefern.

note: type: Plain text
en: Using to INI file variables is most useful for referring to setup information for your machine, for instance a fixed position like a tool-length sensor position. The advantage of this method is that the parameters are fixed for your configuration regardless which NGC file you're currently executing.
de: Die Verwendung von INI-Datei-Variablen ist besonders nützlich, wenn Sie sich auf Einrichtungsinformationen für Ihre Maschine beziehen, z. B. auf eine feste Position wie die Position eines Werkzeuglängensensors. Der Vorteil dieser Methode ist, dass die Parameter für Ihre Konfiguration festgelegt sind, unabhängig davon, welche NGC-Datei Sie gerade ausführen.

note: type: Plain text
en: Referring to global variables is always possible, but they are easily overlooked.
de: Es ist immer möglich, auf globale Variablen zu verweisen, aber sie werden leicht übersehen.

note: type: Plain text
en: Note there's a limited supply of words which may be used as parameters, so one might need to fall back to the second and third methods if many parameters are needed.
de: Beachten Sie, dass es nur eine begrenzte Anzahl von Wörtern gibt, die als Parameter verwendet werden können, so dass man möglicherweise auf die zweite und dritte Methode zurückgreifen muss, wenn viele Parameter benötigt werden.

note: type: Title ===
en: Handling results
de: Handhabung der Ergebnisse

note: type: Plain text
en: Your new code might succeed or fail, for instance if passed an invalid parameter combination. Or you might choose to 'just execute' the procedure and disregard results, in which case there isn't much work to do.
de: Ihr neuer Code kann erfolgreich sein oder scheitern, z. B. wenn eine ungültige Parameterkombination übergeben wird. Oder Sie entscheiden sich dafür, die Prozedur "einfach auszuführen" und die Ergebnisse zu ignorieren, in diesem Fall gibt es nicht viel Arbeit zu tun.

note: type: Plain text
en: Epilog handlers help in processing results of remap procedures - see the reference section.
de: Epilog-Handler helfen bei der Verarbeitung der Ergebnisse von Remap-Prozeduren - siehe den Referenzabschnitt.

note: type: Title ===
en: Execution sequencing
de: Ausführungsreihenfolge

note: type: Plain text
en: Executable G-code words are classified into <<gcode:modal-groups,modal groups>>, which also defines their relative execution behavior.
de: Ausführbare G-Code-Wörter werden in <<gcode:modal-groups,Modalgruppen>> eingeteilt, was auch ihr relatives Ausführungsverhalten definiert.

note: type: Plain text
en: If a G-code block contains several executable words on a line, these words are executed in a predefined <<gcode:order-of-execution,order of execution>>, not in the order they appear in block.
de: Wenn ein G-Code-Block mehrere ausführbare Wörter in einer Zeile enthält, werden diese Wörter in einer vordefinierten <<gcode:order-of-execution,Ausführungsreihenfolge>> ausgeführt, nicht in der Reihenfolge, in der sie im Block erscheinen.

note: type: Plain text
en: When you define a new executable code, the interpreter does not yet know where your code fits into this scheme. For this reason, you need to choose an appropriate modal group for your code to execute in.
de: Wenn Sie einen neuen ausführbaren Code definieren, weiß der Interpreter noch nicht, wo Ihr Code in dieses Schema passt. Aus diesem Grund müssen Sie eine geeignete Modalgruppe wählen, in der Ihr Code ausgeführt werden soll.

note: type: Title ===
en: An minimal example remapped code
de: Ein minimales Beispiel für neu zugeordneten Code

note: type: Plain text
en: To give you an idea how the pieces fit together, let's explore a fairly minimal but complete remapped code definition. We choose an unallocated M-code and add the following option to the INI file:
de: Damit Sie sich ein Bild davon machen können, wie die einzelnen Teile zusammenpassen, wollen wir eine ziemlich minimale, aber vollständige Definition von neu zugeordnetem Code untersuchen. Wir wählen einen nicht zugewiesenen M-Code und fügen die folgende Option zur INI-Datei hinzu:

note: type: Plain text
en: In a nutshell, this means:
de: Zusammengefasst bedeutet dies:

note: type: Plain text
en: The `M400` code takes a required parameter `P` and an optional parameter `Q`. Other words in the current block are ignored with respect to the `M400` code. If the `P` word is not present, fail execution with an error.
de: Der `M400`-Code hat einen erforderlichen Parameter `P` und einen optionalen Parameter `Q`. Andere Wörter im aktuellen Block werden in Bezug auf den `M400`-Code ignoriert. Wenn das Wort `P` nicht vorhanden ist, schlägt die Ausführung mit einem Fehler fehl.

note: type: Plain text
en: when an `M400` code is encountered, execute `myprocedure.ngc` along the other <<gcode:modal-groups,modal group>> 10 M-codes as per <<gcode:order-of-execution,order of execution>>.
de: wenn ein `M400`-Code auftritt, wird `myprocedure.ngc` zusammen mit den anderen <<gcode:modal-groups,modal group>> 10 M-Codes gemäß der <<gcode:order-of-execution,Ausführungsreihenfolge>> ausgeführt.

note: type: Plain text
en: the value of `P`, and `Q` are available in the procedure as local named parameters. The may be referred to as `#<P>` and `#<Q>`. The procedure may test whether the `Q` word was present with the <<gcode:functions,`EXISTS`>> built in function.
de: Der Wert von "P" und "Q" sind in der Prozedur als lokale benannte Parameter verfügbar. Sie können als `#<P>` und `#<Q>` bezeichnet werden. Die Prozedur kann testen, ob das Wort `Q` mit der eingebauten Funktion <<gcode:functions,`EXISTS`>> vorhanden war.

note: type: Plain text
en: The file `myprocedure.ngc` is expected to exists in the `[DISPLAY]NC_FILES` or `[RS274NGC]SUBROUTINE_PATH` directory.
de: Es wird erwartet, dass die Datei `myprocedure.ngc` im Verzeichnis `[DISPLAY]NC_FILES` oder `[RS274NGC]SUBROUTINE_PATH` existiert.

note: type: Plain text
en: A detailed discussion of REMAP parameters is found in the reference section below.
de: Eine ausführliche Erläuterung der REMAP (engl. für Neuzuordnung)-Parameter finden Sie im folgenden Referenzteil.

note: type: Title ==
en: Configuring Remapping
de: Neuzuordnung konfigurieren

note: type: Title ===
en: The REMAP statement
de: Die REMAP-Anweisung

note: type: Plain text
en: To remap a code, define it using the `REMAP` option in `RS274NG` section of your INI file. Use one `REMAP` line per remapped code.
de: Um einen Code neu zuzuordnen, definieren Sie ihn mit der Option `REMAP` im Abschnitt `RS274NG` Ihrer INI-Datei. Verwenden Sie eine `REMAP`-Zeile pro neu zugeordnetem Code.

note: type: Plain text
en: The syntax of the `REMAP` is:
de: Die Syntax von 'REMAP' lautet:

note: type: Plain text
en: where '<code>' may be one of `T`,`M6`,`M61`,`S`,`F` (existing codes) or any of the unallocated <<remap:unallocated-m-codes,M-codes>> or <<remap:unallocated-g-codes,G-codes>>.
de: wobei '<code>' einer der Codes `T`, `M6`, `M61`, `S`, `F` (bestehende Codes) oder einer der nicht zugewiesenen <<remap:unallocated-m-codes,M-codes>> oder <<remap:unallocated-g-codes,G-codes>> sein kann.

note: type: Plain text
en: It is an error to omit the '<code>' parameter.
de: Es ist ein Fehler, den Parameter '<code>' wegzulassen.

note: type: Plain text
en: The options of the REMAP statement are separated by whitespace. The options are keyword-value pairs and currently are:
de: Die Optionen der REMAP-Anweisung werden durch Leerzeichen getrennt. Die Optionen sind Schlüsselwort-Wert-Paare und lauten derzeit:

note: type: Plain text
en: the only currently supported modal group is 1, which is also the default value if no group is given. Group 1 means 'execute alongside other G-codes'.
de: Die einzige derzeit unterstützte modale Gruppe ist 1, die auch der Standardwert ist, wenn keine Gruppe angegeben wird. Gruppe 1 bedeutet "neben anderen G-Codes ausführen".

note: type: Plain text
en: currently supported modal groups are: 5,6,7,8,9,10. If no modalgroup is give, it defaults to 10 ('execute after all other words in the block').
de: Die derzeit unterstützten Modalgruppen sind: 5,6,7,8,9,10. Wird keine Modalgruppe angegeben, wird standardmäßig 10 ("nach allen anderen Wörtern des Blocks ausführen") verwendet.

note: type: Plain text
en: for these the modal group is fixed and any `modalgroup=` option is ignored.
de: für diese ist die modale Gruppe festgelegt und die Option `modalgroup=` wird ignoriert.

note: type: Plain text
en: You'll notice the gradual introduction of the embedded Python environment - see <<remap:programming-embedded-python,here>> for details.  Note that with Python remapping functions, it make no sense to have Python prolog or epilog functions since it's executing a Python function in the first place.
de: Sie werden die schrittweise Einführung der eingebetteten Python-Umgebung bemerken - siehe <<remap:programming-embedded-python,hier>> für Details.  Beachten Sie, dass es bei Python-Remapping-Funktionen keinen Sinn macht, Python-Prolog- oder Epilog-Funktionen zu haben, da es sich in erster Linie um die Ausführung einer Python-Funktion handelt.

note: type: Block title
en: Advanced example: Remapped codes in pure Python
de: Erweitertes Beispiel: Neu zugeordnete Codes in reinem Python

note: type: Plain text
en: The `interpreter` and `emccanon` modules expose most of the Interpreter and some Canon internals, so many things which so far required coding in 'C/C\+\+' can be now be done in Python.
de: Die Module `interpreter` und `emccanon` legen den größten Teil des Interpreters und einige Canon-Interna offen, so dass viele Dinge, die bisher in 'C/C\+\+' programmiert werden mussten, nun in Python erledigt werden können.

note: type: Plain text
en: Assuming a definition like so (NB: this does not use argspec):
de: Angenommen, die Definition lautet wie folgt (Anmerkung: Hier wird argspec nicht verwendet):

note: type: delimited block -
en: def involute(self, **words):
        """ remap function with raw access to Interpreter internals """
de: def involute(self, **words):
        """ remap-Funktion mit Rohzugriff auf Interpreter-Interna """

note: type: delimited block -
en:     # inspect controlling block for relevant words
        c = self.blocks[self.remap_level]
        x0 = c.x_number if c.x_flag else 0
        y0 = c.y_number if c.y_flag else 0
        a  = c.p_number if c.p_flag else 10
        old_z = self.current_z
de:     # Kontrollblock auf relevante Wörter untersuchen
        c = self.blocks[self.remap_level]
        x0 = c.x_number if c.x_flag else 0
        y0 = c.y_number if c.y_flag else 0
        a  = c.p_number if c.p_flag else 10
        old_z = self.current_z

note: type: Plain text
en: The examples described so far can be found in 'configs/sim/axis/remap/getting-started' with complete working configurations.
de: Die bisher beschriebenen Beispiele finden Sie in "configs/sim/axis/remap/getting-started" mit vollständigen Arbeitskonfigurationen.

note: type: Title ==
en: Upgrading an existing configuration for remapping
de: Aktualisieren einer bestehenden Konfiguration für die Neuzuordnung

note: type: Plain text
en: The minimal prerequisites for using `REMAP` statements are as follows:
de: Die Mindestvoraussetzungen für die Verwendung von "REMAP"-Anweisungen sind wie folgt:

note: type: Plain text
en: the Python plug in must be activated by specifying a `[PYTHON]TOPLEVEL=<path-to-toplevel-script>` in the INI file.
de: das Python-Plugin muss durch Angabe eines `[PYTHON]TOPLEVEL=<path-to-toplevel-script>` in der INI-Datei aktiviert werden.

note: type: Plain text
en: the toplevel script needs to import the `remap` module, which can be initially empty, but the import needs to be in place.
de: Das Toplevel-Skript muss das Modul `remap` importieren, das anfangs leer sein kann, aber der Import muss vorhanden sein.

note: type: Plain text
en: The Python interpreter needs to find the remap.py module above, so the path to the directory where your Python modules live needs to be added with `[PYTHON]PATH_APPEND=<path-to-your-local-Python-directory>`
de: Der Python-Interpreter muss das obige remap.py-Modul finden, daher muss der Pfad zu dem Verzeichnis, in dem sich Ihre Python-Module befinden, mit `[PYTHON]PATH_APPEND=<Pfad-zu-Ihrem-Lokalen-Python-Verzeichnis>` hinzugefügt werden

note: type: Plain text
en: Recommended: import the `stdglue` handlers in the `remap` module. In this case Python also needs to find `stdglue.py` - we just copy it from the distribution so you can make local changes as needed. Depending on your installation the path to `stdglue.py` might vary.
de: Empfohlen: Importieren Sie die `stdglue` Handler im `remap` Modul. In diesem Fall muss Python auch `stdglue.py` finden - wir kopieren es einfach aus der Distribution, damit Sie bei Bedarf lokale Änderungen vornehmen können. Abhängig von Ihrer Installation kann der Pfad zu `stdglue.py` variieren.

note: type: Plain text
en: Assuming your configuration lives under `/home/user/xxx` and the INI file is `/home/user/xxx/xxx.ini`, execute the following commands.
de: Angenommen, Ihre Konfiguration befindet sich unter `/home/user/xxx` und die INI-Datei lautet `/home/user/xxx/xxx.ini`, führen Sie die folgenden Befehle aus.

note: type: Plain text
en: Now edit `/home/user/xxx/xxx.ini` and add the following:
de: Bearbeiten Sie nun `/home/user/xxx/xxx.ini` und fügen Sie Folgendes hinzu:

note: type: Plain text
en: Now verify that LinuxCNC comes up with no error messages - from a terminal window execute:
de: Überprüfen Sie nun, dass LinuxCNC ohne Fehlermeldungen hochkommt - führen Sie es in einem Terminalfenster aus:

note: type: Title ==
en: Remapping tool change-related codes: T, M6, M61
de: Codes für den Wechsel des Remapping-Werkzeugs: T, M6, M61

note: type: Plain text
en: If you are unfamiliar with LinuxCNC internals, first read the <<remap:how-tool-change-currently-works,How tool change currently works>> section (dire but necessary).
de: Wenn Sie mit den Interna von LinuxCNC nicht vertraut sind, lesen Sie zuerst den Abschnitt <<remap:how-tool-change-currently-works,How tool change currently works>> (dire but necessary).

note: type: Plain text
en: Note than when remapping an existing code, we completely disable <<remap:interpreter-action-on-m6,this codes' built in functionality>> of the interpreter.
de: Beachten Sie, dass wir bei der Neuzuordnung eines bestehenden Codes die <<remap:interpreter-action-on-m6,this codes' built in functionality>> des Interpreters vollständig deaktivieren.

note: type: Plain text
en: So our remapped code will need to do a bit more than just generating some commands to move the machine as we like - it will also need to replicate those steps from this sequence which are needed to keep the interpreter and `task` happy.
de: Unser remapped Code muss also etwas mehr tun, als nur einige Befehle zu generieren, um die Maschine so zu bewegen, wie wir es wollen - er muss auch die Schritte aus dieser Sequenz wiederholen, die nötig sind, um den Interpreter und die `Task` bei Laune zu halten.

note: type: Plain text
en: However, this does *not* affect the processing of tool change-related commands in `task` and `iocontrol`. This means when we execute <<remap:send-tool-load-msg,step 6b>> this will still cause <<remap:iocontrol-action-on-load,iocontrol to do its thing>>.
de: Dies hat jedoch *keine* Auswirkungen auf die Verarbeitung von Befehlen, die sich auf Werkzeugwechsel in `task` und `iocontrol` beziehen. Das heißt, wenn wir <<remap:send-tool-load-msg,step 6b>> ausführen, wird dies immer noch <<remap:iocontrol-action-on-load,iocontrol>> auslösen.

note: type: Plain text
en: Do we want to use an O-word procedure or do it all in Python code?
de: Möchten wir eine O-Wort-Prozedur verwenden oder alles in Python-Code tun?

note: type: Plain text
en: Is the `iocontrol` HAL sequence (tool-prepare/tool-prepared and tool-change/tool-changed pins) good enough or do we need a different kind of HAL interaction for our tool changer (for example: more HAL pins involved with a different interaction sequence)?
de: Ist die "iocontrol"-HAL-Sequenz (tool-prepare/tool-prepared und tool-change/tool-changed Pins) gut genug oder brauchen wir eine andere Art von HAL-Interaktion für unseren Werkzeugwechsler (z.B.: mehr beteiligte HAL-Pins mit einer anderen Interaktionssequenz)?

note: type: Plain text
en: Depending on the answer, we have four different scenarios:
de: Je nach Antwort ergeben sich vier verschiedene Szenarien:

note: type: Plain text
en: So the overall approach for our first example will be:
de: Der Gesamtansatz für unser erstes Beispiel lautet also:

note: type: Title ===
en: Understanding the role of `iocontrol` with remapped tool change codes
de: Verstehen der Rolle von "iocontrol" mit neu zugeordneten Werkzeugwechselcodes

note: type: Plain text
en: `iocontrol` provides two HAL interaction sequences we might or might not use:
de: `iocontrol` bietet zwei HAL-Interaktionssequenzen, die wir verwenden oder nicht verwenden können:

note: type: Title ===
en: Error handling: dealing with abort
de: Fehlerbehandlung: Umgang mit Abbrüchen

note: type: Plain text
en: The reasons are defined in nml_intf/emc.hh
de: Die Gründe sind in nml_intf/emc.hh definiert

note: type: Plain text
en: The suggested on_abort procedure would look like so (adapt to your needs):
de: Die vorgeschlagene on_abort-Prozedur würde folgendermaßen aussehen (passen Sie sie an Ihre Bedürfnisse an):

note: type: delimited block -
en: G54 (origin offsets are set to the default)
    G17 (select XY plane)
    G90 (absolute)
    G94 (feed mode: units/minute)
    M48 (set feed and speed overrides)
    G40 (cutter compensation off)
    M5  (spindle off)
    G80 (cancel modal motion)
    M9  (mist and coolant off)
de: G54 (Nullpunktverschiebungen werden auf den Standardwert gesetzt)
    G17 (XY-Ebene auswählen)
    G90 (absolut)
    G94 (Vorschubmodus: Einheiten/Minute)
    M48 (Vorschub- und Geschwindigkeits-Override einstellen)
    G40 (Fräserausgleich aus)
    M5 (Spindel aus)
    G80 (modale Bewegung aufheben)
    M9 (Nebel und Kühlmittel aus)

note: type: Plain text
en: Never use an `M2` in a O-word subroutine, including this one. It will cause hard-to-find errors. For instance, using an `M2` in a subroutine will not end the subroutine properly and will leave the subroutine NGC file open, not your main program.
de: Verwenden Sie niemals ein `M2` in einem O-Wort-Unterprogramm, auch nicht in diesem. Es wird schwer zu findende Fehler verursachen. Wenn Sie zum Beispiel ein "M2" in einem Unterprogramm verwenden, wird das Unterprogramm nicht ordnungsgemäß beendet und die NGC-Datei des Unterprogramms bleibt offen, nicht Ihr Hauptprogramm.

note: type: Plain text
en: Make sure `on_abort.ngc` is along the interpreter search path (recommended location: `SUBROUTINE_PATH` so as not to clutter your `NC_FILES` directory with internal procedures).
de: Stellen Sie sicher, dass sich `on_abort.ngc` im Suchpfad des Interpreters befindet (empfohlener Ort: `SUBROUTINE_PATH`, um Ihr `NC_FILES`-Verzeichnis nicht mit internen Prozeduren zu überladen).

note: type: Plain text
en: Statements in that procedure typically would assure that post-abort any state has been cleaned up, like HAL pins properly reset. For an example, see `configs/sim/axis/remap/rack-toolchange`.
de: Die Anweisungen in dieser Prozedur stellen in der Regel sicher, dass alle Zustände nach dem Abbruch bereinigt wurden, wie z.B. das ordnungsgemäße Zurücksetzen der HAL-Pins. Ein Beispiel finden Sie unter `configs/sim/axis/remap/rack-toolchange`.

note: type: Plain text
en: Note that terminating a remapped code by returning INTERP_ERROR from the epilog (see previous section) will also cause the `on_abort` procedure to be called.
de: Beachten Sie, dass das Beenden eines remapped Codes durch Rückgabe von INTERP_ERROR aus dem Epilog (siehe vorheriger Abschnitt) auch den Aufruf der Prozedur `on_abort` bewirkt.

note: type: Title ===
en: Error handling: failing a remapped code NGC procedure
de: Fehlerbehandlung: Fehlschlagen einer NGC-Prozedur mit neu zugeordnetem Code

note: type: Plain text
en: If you determine in your handler procedure that some error condition occurred, do not use `M2` to end your handler - see above:
de: Wenn Sie in Ihrer Handler-Prozedur feststellen, dass eine Fehlerbedingung aufgetreten ist, verwenden Sie nicht `M2`, um Ihren Handler zu beenden - siehe oben:

note: type: Plain text
en: INI and HAL variable expansion is optional and can be disabled in the <<sub:ini:sec:rs274ngc,INI file>>
de: Die Erweiterung der INI- und HAL-Variablen ist optional und kann in der Datei <<sub:ini:sec:rs274ngc,INI>> deaktiviert werden.

note: type: Plain text
en: If more fine grained recovery action is needed, use the idiom laid out in the previous example:
de: Wenn eine feiner abgestufte Wiederherstellungsmaßnahme erforderlich ist, verwenden Sie die im vorherigen Beispiel beschriebene Redewendung:

note: type: Plain text
en: This error message will be displayed in the UI, and returning INTERP_ERROR will cause this error handled like any other runtime error.
de: Diese Fehlermeldung wird in der Benutzeroberfläche angezeigt, und wenn INTERP_ERROR zurückgegeben wird, dann wird dieser Fehler wie jeder andere Laufzeitfehler behandelt.

note: type: Title ==
en: Remapping other existing codes: S, M0, M1, M60
de: Umschlüsselung anderer bestehender Codes: S, M0, M1, M60

note: type: Title ===
en: Adjusting the behavior of M0, M1, M60
de: Anpassen des Verhaltens von M0, M1, M60

note: type: Plain text
en: Executing the following lines:
de: Ausführen der folgenden Zeilen:

note: type: Plain text
en: causes the following (note 'R' is sticky, and 'Z' is sticky since the plane is 'XY'):
de: bewirkt Folgendes (beachten Sie, dass "R" klebrig ist und "Z" klebrig ist, da die Ebene "XY" ist):

note: type: Plain text
en: `g843.ngc` is called with words x=1, y=2, z=3, r=1
de: `g843.ngc` wird mit den Worten x=1, y=2, z=3, r=1 aufgerufen

note: type: Plain text
en: `g843.ngc` is called with words x=3, y=4, z=3, p=2, r=1
de: `g843.ngc` wird mit den Worten x=3, y=4, z=3, p=2, r=1 aufgerufen

note: type: Plain text
en: `g843.ngc` is called with words x=6, y=7, z=3, r=1
de: `g843.ngc` wird mit den Worten x=6, y=7, z=3, r=1 aufgerufen

note: type: Plain text
en: The `G84.3` cycle is canceled.
de: Der `G84.3`-Zyklus wird abgebrochen.

note: type: Title ==
en: Configuring  Embedded Python
de: Embedded Python konfigurieren

note: type: Plain text
en: The Python plugin serves both the interpreter, and `task` if so configured, and hence has its own section `PYTHON` in the INI file.
de: Das Python-Plugin dient sowohl als Interpreter als auch als `Task`, wenn es so konfiguriert ist, und hat daher seinen eigenen Abschnitt `PYTHON` in der INI-Datei.

note: type: Plain text
en: Filename of the initial Python script to execute on startup.
    This script is responsible for setting up the package name structure, see below.
de: Dateiname des anfänglichen Python-Skripts, das beim Starten ausgeführt wird.
    Dieses Skript ist für die Einrichtung der Paketnamensstruktur verantwortlich, siehe unten.

note: type: Plain text
en: Prepend this directory to `PYTHON_PATH`. A repeating group.
de: Dieses Verzeichnis dem `PYTHON_PATH` voranstellen. Eine sich wiederholende Gruppe.

note: type: Plain text
en: Append this directory to `PYTHON_PATH`. A repeating group.
de: Dieses Verzeichnis an `PYTHON_PATH` anhängen. Eine sich wiederholende Gruppe.

note: type: Plain text
en: Task-related callables are expected here.
de: Hier werden aufgabenbezogene Abrufe erwartet.

note: type: Title ===
en: The Interpreter as seen from Python
de: Der Interpreter aus der Sicht von Python

note: type: Title ===
en: The Interpreter `__init__` and `__delete__` functions
de: Die Interpreterfunktionen `__init__` und `__delete__`

note: type: Plain text
en: If the `TOPLEVEL` module defines a function `__delete__`, it will be called once before the interpreter is shutdown and after the persistent parameters have been saved to the `PARAMETER_FILE`.
de: Wenn das Modul `TOPLEVEL` eine Funktion `__delete__` definiert, wird sie einmal aufgerufen, bevor der Interpreter heruntergefahren wird und nachdem die persistenten Parameter in der `PARAMETER_FILE` gespeichert worden sind.

note: type: Plain text
en: See also `tests/interp/value-returned` for an example.
de: Siehe auch `tests/interp/value-returned` für ein Beispiel.

note: type: Block title
en: Calling conventions for 'prolog=' and 'epilog=' subroutines
de: Aufrufkonventionen für 'prolog='- und 'epilog='-Unterroutinen

note: type: Plain text
en: Arguments are:
de: Argumente sind:

note: type: Plain text
en: Example call:
de: Beispielaufruf:

note: type: Plain text
en: Return values:
de: Rückgabewerte:

note: type: Labeled list
en: `"a message text"`
de: `"ein Nachrichtentext"`

note: type: Block title
en: Calling conventions for 'python=' subroutines
de: Aufrufkonventionen für 'python='-Unterroutinen

note: type: Plain text
en: The minimum `python=` function example:
de: Das minimale 'python='-Funktionsbeispiel:

note: type: Plain text
en: If the handler needs to execute a 'queuebuster operation' (tool change, probe, HAL pin reading) it is supposed to suspend execution with the following statement:
de: Wenn der Handler eine "Queuebuster-Operation" (Werkzeugwechsel, Messtaster, HAL-Pin-Lesen) ausführen muss, soll er die Ausführung mit der folgenden Anweisung unterbrechen:

note: type: Block title
en: Dealing with queue-buster: Probe, Tool change and waiting for a HAL pin
de: Umgang mit Queue-Buster: Sonde, Werkzeugwechsel und Warten auf einen HAL-Pin

note: type: Plain text
en: Queue busters interrupt a procedure at the point where such an operation is called, hence the procedure needs to be restarted after the interpreter synch(). When this happens the procedure needs to know if it is restarted, and where to continue. The Python generator method is used to deal with procedure restart.
de: Queue-Buster unterbrechen eine Prozedur an dem Punkt, an dem eine solche Operation aufgerufen wird, so dass die Prozedur nach dem Interpreter synch() neu gestartet werden muss. Wenn dies geschieht, muss die Prozedur wissen, ob sie neu gestartet wurde und wo sie fortfahren soll. Die Python-Generator-Methode wird verwendet, um den Neustart einer Prozedur zu bewältigen.

note: type: Plain text
en: This demonstrates call continuation with a single point-of-restart:
de: Dies zeigt die Fortsetzung des Anrufs mit einem einzigen Ausgangspunkt:

note: type: delimited block -
en: def read_pin(self,*args):
        # wait 5secs for digital-input 00 to go high
        emccanon.WAIT(0,1,2,5.0)
        # cede control after executing the queue buster:
        yield INTERP_EXECUTE_FINISH
        # post-sync() execution resumes here:
        pin_status = emccanon.GET_EXTERNAL_DIGITAL_INPUT(0,0);
        print("pin status=",pin_status)
de: def read_pin(self,*args):
        # 5 Sekunden warten, bis Digital-Eingang 00 auf High geht
        emccanon.WAIT(0,1,2,5.0)
        # übergebe die Kontrolle nach der Ausführung des Queue Busters:
        yield INTERP_EXECUTE_FINISH
        # Post-sync()-Ausführung wird hier fortgesetzt:
        pin_status = emccanon.GET_EXTERNAL_DIGITAL_INPUT(0,0);
        print("pin status=",pin_status)

note: type: Plain text
en: Python code executing a 'yield INTERP_EXECUTE_FINISH' must be part of a remap procedure. Yield does not work in a Python oword procedure.
de: Python-Code, der ein 'yield INTERP_EXECUTE_FINISH' ausführt, muss Teil einer Remap-Prozedur sein. Yield funktioniert nicht in einer Python-O-word-Prozedur.

note: type: Plain text
en: A Python remap subroutine containing 'yield INTERP_EXECUTE_FINISH' statement may not return a value, as with normal Python yield statements.
de: Eine Python-Remap-Subroutine, welche die Anweisung 'yield INTERP_EXECUTE_FINISH' enthält, darf keinen Wert zurückgeben, wie dies bei normalen Python-Yield-Anweisungen der Fall ist.

note: type: Plain text
en: Code following a yield may not recursively call the interpreter, like with self.execute("<mdi command>"). This is an architectural restriction of the interpreter and is not fixable without a major redesign.
de: Code, der einem Yield folgt, darf den Interpreter nicht rekursiv aufrufen, wie bei self.execute("<mdi command>"). Dies ist eine architektonische Einschränkung des Interpreters und kann nicht ohne ein größeres Redesign behoben werden.

note: type: Title ===
en: Calling conventions: Python to NGC
de: Aufrufkonventionen: Python zu NGC

note: type: Plain text
en: NGC code is executed from Python when
de: NGC-Code wird von Python ausgeführt, wenn

note: type: Plain text
en: the method `self.execute(<NGC code>[,<line number>])` is executed, or
de: die Methode `self.execute(<NGC-Code>[,<Zeilennummer>])` ausgeführt wird, oder

note: type: delimited block =
en: passing of local named parameters is not needed.
de: Die Übergabe von lokalen benannten Parametern ist nicht erforderlich.

note: type: Labeled list
en: `line_number`
de: `Zeilennummer`

note: type: Plain text
en: where the error occurred
de: wo der Fehler aufgetreten ist

note: type: Labeled list
en: `line_text`
de: `zeilen_text`

note: type: Plain text
en: the NGC statement causing the error
de: die NGC-Anweisung, die den Fehler verursacht

note: type: Labeled list
en: `error_message`
de: `Fehlermeldung`

note: type: Plain text
en: the interpreter's error message
de: die Fehlermeldung des Interpreters

note: type: Plain text
en: Errors can be trapped in the following Pythonic way:
de: Fehler können auf die folgende Python-Weise abgefangen werden:

note: type: delimited block -
en:    except InterpreterException,e:
            msg = "%d: '%s' - %s" % (e.line_number,e.line_text, e.error_message)
            return msg  # replace builtin error message
de:    except InterpreterException,e:
            msg = "%d: '%s' - %s" % (e.line_number,e.line_text, e.error_message)
            return msg  # ersetzt regulär ausgegebene Fehlermeldung

note: type: Title ===
en: Built in modules
de: Eingebaute Module

note: type: Plain text
en: The following modules are built in:
de: Die folgenden Module sind bereits integriert:

note: type: Title ==
en: Adding Predefined Named Parameters
de: Hinzufügen vordefinierter benannter Parameter

note: type: Plain text
en: To add or redefine a named parameter:
de: Um einen benannten Parameter hinzuzufügen oder neu zu definieren:

note: type: delimited block -
en: #<circumference> = [2 * #<radius> * #<_pi>]
de: #<Umfang> = [2 * #<Radius> * #<_pi>]

note: type: Plain text
en: Ònly functions with a leading underscore are added as parameters, since this is the RS274NGC convention for globals.
de: Es werden nur Funktionen mit führendem Unterstrich als Parameter hinzugefügt, da dies die RS274NGC-Konvention für Globals ist.

note: type: Title ==
en: Standard Glue routines
de: Standardmäßige Glue (Programmierer-Slang für verbindende)-Routinen

note: type: Block title
en: Actions of +prepare_prolog+
de: Aktionen von +prepare_prolog+

note: type: Plain text
en: The following parameters are made visible to the NGC procedure:
de: Die folgenden Parameter werden für das NGC-Verfahren sichtbar gemacht:

note: type: Plain text
en: `#<tool>` - the parameter of the `T` word
de: `#<tool>` - der Parameter des `T`-Wortes

note: type: Plain text
en: `#<pocket>` - the corresponding pocket
de: `#<pocket>` - die entsprechende Tasche

note: type: Plain text
en: If tool number zero is requested (meaning Tool unload), the corresponding pocket is passed as -1.
de: Wenn die Werkzeugnummer Null angefordert wird (d.h. Werkzeug entladen), wird die entsprechende Tasche als -1 übergeben.

note: type: Plain text
en: no tool number is given as T parameter
de: keine Werkzeugnummer als T-Parameter angegeben ist

note: type: Plain text
en: the tool cannot be found in the tool table.
de: das Werkzeug nicht in der Werkzeugtabelle gefunden werden kann.

note: type: Plain text
en: then, the Canon command `SELECT_TOOL(#<tool>)` is executed.
de: dann wird der Canon-Befehl `SELECT_TOOL(#<tool>)` ausgeführt.

note: type: Plain text
en: These wrap a NGC procedure for M6 Tool Change.
de: Diese schließen ein NGC-Verfahren für den M6-Werkzeugwechsel ein.

note: type: Plain text
en: The following three steps are applicable only if the `iocontrol-v2` component is used:
de: Die folgenden drei Schritte sind nur anwendbar, wenn die Komponente "iocontrol-v2" verwendet wird:

note: type: Plain text
en: If parameter 5600 (fault indicator) is greater than zero, this indicates a Toolchanger fault, which is handled as follows:
de: Wenn der Parameter 5600 (Fehleranzeige) größer als Null ist, deutet dies auf einen Fehler des Werkzeugwechslers hin, der wie folgt behandelt wird:

note: type: Plain text
en: if parameter 5601 (error code) is negative, this indicates a hard fault and the prolog aborts with an error message.
de: Wenn der Parameter 5601 (Fehlercode) negativ ist, deutet dies auf einen schwerwiegenden Fehler hin und der Prolog bricht mit einer Fehlermeldung ab.

note: type: Plain text
en: If there was no preceding T command which caused a pocket to be selected, the prolog aborts with an error message.
de: Wenn es keinen vorhergehenden T-Befehl gab, der die Auswahl einer Tasche zur Folge hatte, bricht der Prolog mit einer Fehlermeldung ab.

note: type: Plain text
en: If cutter radius compensation is on, the prolog aborts with an error message.
de: Wenn die Fräserradiuskompensation eingeschaltet ist, bricht der Prolog mit einer Fehlermeldung ab.

note: type: Plain text
en: Then, the following parameters are exported to the NGC procedure:
de: Anschließend werden die folgenden Parameter in das NGC-Verfahren exportiert:

note: type: Plain text
en: `#<tool_in_spindle>` : the tool number of the currently loaded tool
de: `#<tool_in_spindle>` : die Werkzeugnummer des aktuell geladenen Werkzeugs

note: type: Plain text
en: `#<selected_tool>` : the tool number selected
de: `#<selected_tool>` : die Nummer des ausgewählten Werkzeugs

note: type: Plain text
en: `#<selected_pocket>` : the selected tool's tooldata index
de: `#<selected_pocket>` : der Index der Werkzeugdaten des ausgewählten Werkzeugs

note: type: Plain text
en: If parameter 5600 (fault indicator) is greater than zero, this indicates a Toolchanger fault, which is handled as follows (`iocontrol-v2`-only):
de: Ist der Parameter 5600 (Fehlerindikator) größer als Null, deutet dies auf einen Werkzeugwechslerfehler hin, der wie folgt behandelt wird (nur "iocontrol-v2"):

note: type: Plain text
en: The new tool parameters (offsets, diameter etc) are set.
de: Die neuen Werkzeugparameter (Versatz, Durchmesser usw.) werden eingestellt.

note: type: Title ===
en: G-code Cycles: +cycle_prolog+ and +cycle_epilog+
de: G-Code-Zyklen: +cycle_prolog+ und +cycle_epilog+

note: type: Plain text
en: The suggested argspec is as follows:
de: Der Vorschlag für argspec lautet wie folgt:

note: type: Plain text
en: Determine whether the words passed in from the current block fulfill the conditions outlined under <<gcode:canned-cycle-errors,Canned Cycle Errors>>.
de: Ermitteln Sie, ob die vom aktuellen Block übergebenen Wörter die unter <<gcode:canned-cycle-errors,Canned Cycle Errors>> genannten Bedingungen erfüllen.

note: type: Plain text
en: Determine whether this is the first invocation of a cycle G-code, if so:
de: Feststellen, ob dies der erste Aufruf eines Zyklus-G-Codes ist, falls ja:

note: type: Plain text
en: Export the set of sticky parameters to the NGC procedure.
de: Exportieren Sie den Satz der Sticky-Parameter in das NGC-Verfahren.

note: type: Title ===
en: Debugging flags
de: Debugging-Flags

note: type: Plain text
en: The following flags are relevant for remapping and Python - related execution:
de: Die folgenden Flags sind für das Mapping und die Ausführung in Python relevant:

note: type: Title ===
en: Debugging Embedded Python code
de: Fehlersuche in eingebettetem Python-Code

note: type: Plain text
en: To use this approach:
de: Um diesen Ansatz zu verwenden:

note: type: Plain text
en: Install Eclipse via the the 'Ubuntu Software Center' (choose first selection).
de: Installieren Sie Eclipse über das 'Ubuntu Software Center' (wählen Sie die erste Option).

note: type: Plain text
en: Install the PyDev plug in from the http://pydev.org/updates[Pydev Update Site].
de: Installieren Sie das PyDev-Plug-in von der http://pydev.org/updates[Pydev Update Site].

note: type: Block title
en: Table of Allocated G-codes 30-39
de: Tabelle der zugewiesenen G-Codes 50-59

note: type: Block title
en: Table of Allocated G-codes 40-49
de: Tabelle der zugewiesenen G-Codes 50-59

note: type: Block title
en: Table of Allocated G-codes 50-59
de: Tabelle der zugewiesenen G-Codes 50-59

note: type: Block title
en: Table of Allocated G-codes 60-69
de: Tabelle der zugewiesenen G-Codes 60-69

note: type: Block title
en: Table of Allocated G-codes 70-79
de: Tabelle der zugewiesenen G-Codes 70-79

note: type: Block title
en: Table of Allocated G-codes 80-89
de: Tabelle der zugewiesenen G-Codes 80-89

note: type: Block title
en: Table of Allocated G-codes 90-99
de: Tabelle der zugewiesenen G-Codes 90-99

note: type: Title ===
en: Currently unallocated M-codes:
de: Derzeit nicht zugewiesene M-Codes:

note: type: Plain text
en: These M-codes are currently undefined in the current implementation of LinuxCNC and may be used to define new M-codes. (Developers who define new M-codes in LinuxCNC are encouraged to remove them from this table.)
de: Diese M-Codes sind derzeit undefiniert in der aktuellen Implementierung von LinuxCNC und können verwendet werden, um neue M-Codes zu definieren. (Entwickler, die neue M-Codes in LinuxCNC definieren, werden aufgefordert, sie aus dieser Tabelle zu entfernen.)

note: type: Block title
en: Table of Unallocated M-codes 00-99
de: Tabelle der nicht zugeordneten M-Codes 00-99

note: type: Plain text
en: All M-codes from `M100` to `M199` are user-defined M-codes already, and should not be remapped.
de: Alle M-Codes von `M100` bis `M199` sind bereits benutzerdefinierte M-Codes, die nicht neu zugeordnet werden sollten.

note: type: Plain text
en: All M-codes from `M200` to `M999` are available for remapping.
de: Alle M-Codes von `M200` bis `M999` sind für die Neuzuordnung verfügbar.

note: type: Title ===
en: readahead time and execution time
de: Vorauslesezeit und Ausführungszeit

note: type: Plain text
en: FIXME Write missing information
de: FIXME Füge fehlende Informationen hinzu

note: type: Title ===
en: plugin/pickle hack
de: Plugin/Pickle-Hack

note: type: Title ===
en: Module, methods, classes, etc reference
de: Modul, Methoden, Klassen, usw. Referenz

note: type: Title ==
en: Introduction: Extending Task Execution
de: Einführung: Erweiterung der Task-Ausführung

note: type: Title ===
en: Why would you want to change Task Execution?
de: Warum sollten Sie die Task-Ausführung ändern wollen?

note: type: Title ===
en: A diagram: `task`, `interp`, `iocontrol`, `UI` (??)
de: Ein Diagramm: `task`, `interp`, `iocontrol`, `UI` (??)

note: type: Title ==
en: Models of Task execution
de: Modelle der Aufgaben (engl. task) -Ausführung

note: type: Title ===
en: Traditional `iocontrol`/`iocontrolv2` execution
de: Traditionelle Ausführung von `iocontrol`/`iocontrolv2`

note: type: Title ===
en: Redefining IO procedures
de: IO-Verfahren neu definieren

note: type: Title ===
en: Execution-time Python procedures
de: Python-Prozeduren zur Ausführungszeit

note: setup examples type: Title ==
en: A short survey of LinuxCNC program execution
de: Eine kurze Übersicht über die LinuxCNC-Programmausführung

note: type: Plain text
en: To understand remapping of codes it might be helpful to survey the execution of `task` and interpreter as far as it relates to remapping.
de: Um die Neuzuordnung von Codes zu verstehen, könnte es hilfreich sein, sich einen Überblick über die Ausführung von `task` und Interpreter zu verschaffen, soweit sie mit der Neuzuordnung zusammenhängt.

note: type: Title ===
en: Interpreter state
de: Zustand des Interpreters

note: type: Plain text
en: Conceptually, the interpreter's state consist of variables which fall into the following categories:
de: Konzeptionell besteht der Zustand des Interpreters aus Variablen, die in die folgenden Kategorien fallen:

note: type: Plain text
en: _Configuration information_ (typically from INI file)
de: _Konfigurations-Informationen_ (typischerweise aus der INI-Datei)

note: type: Plain text
en: _The 'World model'_ - a representation of actual machine state
de: _Das "Weltmodell"_ - eine Darstellung des aktuellen Maschinenzustands

note: type: Plain text
en: One or several 'words' may be present on an NGC 'block' if they are compatible (some are mutually exclusive and must be on different lines).  The execution model however prescribes a strict ordering of execution of codes, regardless of their appearance on the source line (<<gcode:order-of-execution,G-code Order of Execution>>).
de: Ein oder mehrere "Wörter" können in einem NGC-"Block" vorhanden sein, wenn sie kompatibel sind (einige schließen sich gegenseitig aus und müssen in verschiedenen Zeilen stehen).  Das Ausführungsmodell schreibt jedoch eine strenge Reihenfolge der Ausführung von Codes vor, unabhängig von ihrem Auftreten in der Quellzeile (<<gcode:order-of-execution,G-code Ausführungs-Reihenfolge>>).

note: type: Title ===
en: Parsing
de: Parsen (engl. parsing, für die Interpretation des Quellcodes)

note: type: Title ===
en: Execution
de: Ausführung

note: type: Plain text
en: After successful parsing the block is executed by execute_block(), and here the different items are handled according to execution order.
de: Nach erfolgreichem Parsen wird der Block mit execute_block() ausgeführt, wobei die verschiedenen Elemente in der Reihenfolge ihrer Ausführung behandelt werden.

note: type: Plain text
en: If a "queue buster" is found, a corresponding flag is set in the interpreter state (toolchange_flag, input_flag, probe_flag) and the interpreter returns an INTERP_EXECUTE_FINISH return value, signaling 'stop readahead for now, and resynch' to the caller ('`task`').  If no queue busters are found after all items are executed, INTERP_OK is returned, signalling that read-ahead may continue.
de: Wird ein "Queue Buster" gefunden, wird ein entsprechendes Flag im Interpreterstatus gesetzt (toolchange_flag, input_flag, probe_flag), und der Interpreter gibt einen INTERP_EXECUTE_FINISH-Rückgabewert zurück, der dem Aufrufer (`task`) signalisiert, dass die Vorauslesung vorerst gestoppt und neu synchronisiert wird.  Werden nach der Ausführung aller Elemente keine Queue-Buster gefunden, wird INTERP_OK zurückgegeben, was bedeutet, dass die Vorauslesung fortgesetzt werden kann.

note: type: Plain text
en: When read ahead continues after the synch, `task` starts executing interpreter read() operations again.  During the next read operation, the above mentioned flags are checked and corresponding variables are set (because the a synch() was just executed, the values are now current). This means that the next command already executes in the properly set variable context.
de: Wenn das Lesen nach der Synchronisierung (via der Funktion synch() ) fortgesetzt wird, beginnt `task` wieder mit der Ausführung von read()-Operationen des Interpreters.  Beim nächsten Lesevorgang werden die oben genannten Flags überprüft und die entsprechenden Variablen gesetzt (da gerade eine Synchronisation ausgeführt wurde, sind die Werte jetzt aktuell). Das bedeutet, dass der nächste Befehl bereits in dem richtig gesetzten Variablenkontext ausgeführt wird.

note: type: Title ===
en: Procedure execution
de: Prozedurausführung

note: type: Title ===
en: How tool change currently works
de: Wie der Werkzeugwechsel derzeit funktioniert

note: type: Plain text
en: The actions happening in LinuxCNC are a bit involved, but it's necessary to get the overall idea what currently happens before you set out to adapt those workings to your own needs.
de: Die Aktionen, die in LinuxCNC passieren, sind ein bisschen kompliziert, aber es ist notwendig, um die allgemeine Idee zu bekommen, was derzeit passiert, bevor Sie sich auf den Weg machen, um diese Abläufe an Ihre eigenen Bedürfnisse anzupassen.

note: type: Block title
en: How tool information is communicated
de: Wie die Informationen über das Werkzeug übermittelt werden

note: type: Plain text
en: Several processes are 'interested' in tool information: `task` and its interpreter, as well as the user interface. Also, the 'halui' process.
de: Mehrere Prozesse sind an Werkzeuginformationen "interessiert": `task` und sein Interpreter, sowie die Benutzeroberfläche. Außerdem der 'halui'-Prozess.

note: type: Plain text
en: The authoritative source and only process actually 'setting' tool information in this structure is the 'iocontrol' process. All others processes just consult this structure. The interpreter holds actually a local copy of the tool table.
de: Die maßgebliche Quelle und der einzige Prozess, der tatsächlich Werkzeuginformationen in dieser Struktur "festlegt", ist der Prozess "iocontrol". Alle anderen Prozesse konsultieren diese Struktur lediglich. Der Interpreter besitzt eine lokale Kopie der Werkzeugtabelle.

note: type: Plain text
en: For the curious, the current emcStatus structure can be accessed by <<remap:executing-python-statements,Python statements>>. The interpreter's perception of the tool currently loaded for instance is accessed by:
de: Wer neugierig ist, kann die aktuelle emcStatus-Struktur mit <<remap:executing-python-statements,Python statements>> abrufen. Die Wahrnehmung des Interpreters über das aktuell geladene Werkzeug wird beispielsweise aufgerufen durch:

note: type: Plain text
en: To see fields in the global emcStatus structure, try this:
de: Um Felder in der globalen emcStatus-Struktur zu sehen, versuchen Sie dies:

note: type: Plain text
en: You need to have LinuxCNC started from a terminal window to see the results.
de: Sie müssen LinuxCNC von einem Terminal-Fenster aus gestartet haben, um die Ergebnisse zu sehen.

note: type: Title ===
en: How Tx (Prepare Tool) works
de: So funktioniert Tx (Prepare Tool)

note: type: Block title
en: Interpreter action on a Tx command
de: Aktion des Interpreters bei einem Tx-Befehl

note: type: Plain text
en: All the interpreter does is evaluate the toolnumber parameter, looks up its corresponding tooldata index, remembers it in the `selected_pocket` variable for later, and queues a canon command (SELECT_TOOL).  See 'Interp::convert_tool_select' in 'src/emc/rs274/interp_execute.cc'.
de: Der Interpreter wertet lediglich den Parameter toolnumber aus, sucht den entsprechenden tooldata-Index, speichert ihn für später in der Variablen `selected_pocket` und stellt einen Kanon-Befehl (SELECT_TOOL) in die Warteschlange. Siehe 'Interp::convert_tool_select' in 'src/emc/rs274/interp_execute.cc'.

note: type: Block title
en: Task action on SELECT_TOOL
de: Task-Aktion auf SELECT_TOOL

note: type: Plain text
en: When `task` gets around to handle a SELECT_TOOL, it sends a EMC_TOOL_PREPARE message to the `iocontrol` process, which handles most tool-related actions in LinuxCNC.
de: Wenn `task` dazu kommt, ein SELECT_TOOL zu bearbeiten, sendet es eine EMC_TOOL_PREPARE Nachricht an den `iocontrol` Prozess, der die meisten werkzeugbezogenen Aktionen in LinuxCNC bearbeitet.

note: type: Plain text
en: In the current implementation, `task` actually waits for `iocontrol` to complete the changer positioning operation, which is not necessary IMO since it defeats the idea that changer preparation and code execution can proceed in parallel.
de: In der derzeitigen Implementierung wartet `task` tatsächlich darauf, dass `iocontrol` die Positionierung des Wechslers abschließt, was m.E. nicht notwendig ist, da es die Idee zunichte macht, dass die Vorbereitung des Wechslers und die Ausführung des Codes parallel laufen können.

note: type: Block title
en: Iocontrol action on EMC_TOOL_PREPARE
de: Iocontrol-Aktion auf EMC_TOOL_PREPARE

note: type: Plain text
en: When `iocontrol` sees the select pocket command, it does the related HAL pin wiggling - it sets the "tool-prep-number" pin to indicate which tool is next, raises the "tool-prepare" pin, and waits for the "tool-prepared" pin to go high.
de: Wenn `iocontrol` den Befehl "Select Pocket" sieht, führt es das entsprechende HAL-Pin-Wackeln aus - es setzt den "tool-prep-number"-Pin, um anzuzeigen, welches Werkzeug als nächstes an der Reihe ist, hebt den "tool-prepare"-Pin an und wartet darauf, dass der "tool-prepared"-Pin auf High geht.

note: type: Block title
en: Building the prolog and epilog for Tx
de: Erstellung des Prologs und Epilogs für Tx

note: type: Plain text
en: Even if you are not familiar with C, I suggest you look at the 'Interp::convert_tool_change' code in 'src/emc/rs274/interp_convert.cc'.
de: Auch wenn Sie mit C nicht vertraut sind, empfehle ich Ihnen, sich den Code von "Interp::convert_tool_change" in "src/emc/rs274/interp_convert.cc" anzusehen.

note: type: Block title
en: Interpreter action on a M6 command
de: Interpreteraktion bei einem M6-Befehl

note: type: Plain text
en: When the interpreter sees an M6, it:
de: Wenn der Interpreter ein M6 sieht, wird er:

note: type: Plain text
en: checks whether a T command has already been executed (test 'settings->selected_pocket' to be >= 0) and fail with 'Need tool prepared -Txx- for toolchange' message if not.
de: prüfen, ob ein T-Befehl bereits ausgeführt wurde (testet, ob 'settings->selected_pocket' >= 0 ist) und schlägt andernfalls mit der Meldung 'Need tool prepared -Txx- for tool change' fehl.

note: type: Plain text
en: check for cutter compensation being active, and fail with 'Cannot change tools with cutter radius compensation on' if so.
de: prüfen, ob die Fräserradiuskompensation aktiv ist, und meldet in diesem Fall "Werkzeugwechsel mit eingeschalteter Fräserradiuskompensation nicht möglich".

note: type: Plain text
en: stop the spindle except if the "TOOL_CHANGE_WITH_SPINDLE_ON" INI option is set.
de: die Spindel anhalten, außer wenn die INI-Option "TOOL_CHANGE_WITH_SPINDLE_ON" gesetzt ist.

note: type: Plain text
en: generate a rapid 'Z up' move if if the "TOOL_CHANGE_QUILL_UP" INI option is set.
de: eine schnelle Z-Aufwärtsbewegung erzeugen, wenn die INI-Option "TOOL_CHANGE_QUILL_UP" gesetzt ist.

note: type: Plain text
en: move the A, B and C indexers if applicable
de: Indexer A, B und C verschieben wenn durchführbar

note: type: Plain text
en: generate rapid move to the G30 position
de: eine schnelle Bewegung zur G30-Position erzeugen

note: type: Plain text
en: generate a rapid move to TOOL_CHANGE_POSITION if so set in INI
de: eine schnelle Bewegung zur TOOL_CHANGE_POSITION erzeugen, wenn dies in der INI eingestellt ist

note: type: Plain text
en: enqueue an EMC_TOOL_LOAD NML message to `task`.
de: eine EMC_TOOL_LOAD-NML-Nachricht in die Warteschlange für `task` stellen.

note: type: Block title
en: What `task` does when it sees a CHANGE_TOOL command
de: Was `task` tut, wenn es einen CHANGE_TOOL-Befehl sieht

note: type: Plain text
en: Again, not much more than passing the buck to `iocontrol` by sending it an EMC_TOOL_LOAD message, and waiting until `iocontrol` has done its thing.
de: Auch hier nicht viel mehr, als die Kontrolle an `iocontrol` zu übergeben, indem man ihm eine EMC_TOOL_LOAD Nachricht sendet und zu warten, bis `iocontrol` sein Ding gemacht hat.

note: type: Block title
en: Iocontrol action on EMC_TOOL_LOAD
de: Iocontrol-Aktion auf EMC_TOOL_LOAD

note: type: Plain text
en: it asserts the "tool-change" pin
de: Es bestätigt den "Tool-Change"-Pin

note: type: Plain text
en: it waits for the "tool-changed" pin to become active
de: Es wartet, bis der "Tool-changed"-Pin aktiv wird

note: type: Plain text
en: when that has happened:
de: wenn dies geschehen ist:

note: type: Plain text
en: deassert "tool-change"
de: deassert "Werkzeugwechsel"

note: type: Plain text
en: set "tool-prep-number" and "tool-prep-pocket" pins to zero
de: Setzen der Pins `tool-prep-number` und `tool-prep-pocket` auf Null

note: type: Plain text
en: execute the 'load_tool()' function with the pocket as parameter.
de: die Funktion 'load_tool()' mit der Tasche als Parameter ausführen.

note: type: Plain text
en: The last step actually sets the tooltable entries in the 'emcStatus' structure.  The actual action taken depends on whether the RANDOM_TOOLCHANGER INI option was set, but at the end of the process 'toolTable[0]' reflects the tool currently in the spindle.
de: Im letzten Schritt werden die Tooltable-Einträge in der 'emcStatus'-Struktur gesetzt.  Die tatsächlich durchgeführte Aktion hängt davon ab, ob die INI-Option RANDOM_TOOLCHANGER gesetzt wurde, aber am Ende des Prozesses spiegelt 'toolTable[0]' das aktuell in der Spindel befindliche Werkzeug wider.

note: type: Plain text
en: When that has happened:
de: wenn dies geschehen ist:

note: type: Plain text
en: `iocontrol` signals `task` to go ahead.
de: `iocontrol` signalisiert `task` fortzufahren.

note: type: Plain text
en: `task` tells the interpreter to execute a 'synch()' operation, to see what has changed.
de: `task` weist den Interpreter an, eine 'synch()'-Operation auszuführen, um zu sehen, was sich geändert hat.

note: type: Plain text
en: The interpreter 'synch()' pulls all information from the world model needed, among it the changed tool table.
de: Der Interpreter 'synch()' zieht alle benötigten Informationen aus dem Weltmodell, darunter auch die geänderte Werkzeugtabelle.

note: type: Plain text
en: From there on, the interpreter has complete knowledge of the world model and continues with read ahead.
de: Von da an hat der Interpreter die vollständige Kenntnis des Weltmodells und liest weiter.

note: type: Block title
en: Building the prolog and epilog for M6
de: Erstellung des Prologs und Epilogs für M6

note: type: Plain text
en: See the Python functions `change_prolog` and `change_epilog` in `configs/sim/axis/remap/toolchange/python/toolchange.py`.
de: Siehe die Python-Funktionen `change_prolog` und `change_epilog` in `configs/sim/axis/remap/toolchange/python/toolchange.py`.

note: type: Plain text
en: INI file settings enable the (optional) operation of a user-provided tool database program:
de: Die Einstellungen in der INI-Datei ermöglichen den (optionalen) Betrieb eines vom Benutzer bereitgestellten Werkzeugdatenbankprogramms:

note: type: Plain text
en: INI file settings for [EMCIO]TOOL_TABLE are ignored when a *db_program* is specified.
de: INI-Datei-Einstellungen für [EMCIO]TOOL_TABLE werden ignoriert, wenn ein *db_program* angegeben ist.

note: type: Plain text
en: When a *db_progam* is specified, operation is as follows:
de: Wenn ein *db_progam* angegeben ist, wird wie folgt vorgegangen:

note: type: Plain text
en: At startup, LinuxCNC starts the *db_program* and connects to its stdin and stdout.
de: Beim Starten startet LinuxCNC das *db_program* und verbindet sich mit dessen stdin und stdout.

note: type: Plain text
en: Upon a successful acknowledgement, LinuxCNC issues a 'g' (*get*)  command to request all tools.  The *db_program* must respond with a sequence of replies to identify each available tool.  The textual reply format is identical to the text line format used in conventional tool table files.  A final response of "FINI" terminates the reply.
de: Nach einer erfolgreichen Bestätigung, gibt LinuxCNC einen 'g' (*get*) Befehl aus, um alle Werkzeuge anzufordern.  Das *db_program* muss mit einer Folge von Antworten antworten, um jedes verfügbare Werkzeug zu identifizieren.  Das Textformat der Antworten ist identisch mit dem Format der Textzeilen, die in konventionellen Werkzeugtabellen verwendet werden.  Eine abschließende Antwort von "FINI" beendet die Antwort.

note: type: Plain text
en: The *db_program* then enters an event wait loop to receive commands that indicate that tool data has been changed by LinuxCNC.  Tool data changes include:
de: Das *db_program* tritt dann in eine Ereignis-Warteschleife ein, um Befehle zu empfangen, die anzeigen, dass Werkzeugdaten von LinuxCNC geändert wurden.  Werkzeugdaten Änderungen umfassen:

note: type: Plain text
en: a) spindle loading(T__n__ M6)/unloading(T0 M6)
de: a) Laden der Spindel(T__n__ M6)/Entladen(T0 M6)

note: type: Plain text
en: b) tool parameter changes (G10L1P__n__ for example)
de: b) Änderung der Werkzeugparameter (z. B. G10L1P__n__)

note: type: Plain text
en: c) tool substitutions (M61Q__n__).
de: c) Werkzeugauswechslungen (M61Q__n__).

note: type: Plain text
en: When a tool data change occurs, LinuxCNC sends a command to the *db_program* consisting of an identifying command letter followed by a full or abbreviated tool data line.  The *db_program* must respond with a reply to confirm receipt.  If the reply includes the text "'NAK'", a message is printed to stdout but execution continues.  The "'NAK'" message signifies a lack of synchronization between the *db_program* and LinuxCNC -- accompanying text should give an indication for the cause of the fault.
de: Wenn eine Werkzeugdatenänderung auftritt, sendet LinuxCNC einen Befehl an das *db_program*, bestehend aus einem identifizierenden Befehlsbuchstaben, gefolgt von einer vollständigen oder abgekürzten Werkzeugdatenzeile.  Das *db_program* muss mit einer Antwort antworten, um den Empfang zu bestätigen.  Enthält die Antwort den Text "'NAK'", wird eine Meldung auf stdout ausgegeben, aber die Ausführung wird fortgesetzt.  Die "'NAK'"-Meldung bedeutet einen Mangel an Synchronisation zwischen dem *db_program* und LinuxCNC -- der begleitende Text sollte einen Hinweis auf die Ursache des Fehlers geben.

note: type: Plain text
en: The commands issued for tool data changes are:
de: Die Befehle für die Änderung von Werkzeugdaten lauten:

note: type: Plain text
en: When a NON_RANDOM tool changer is specified using [EMCIO]RANDOM_TOOL_CHANGER=0 (the default), the spindle_load command issued for T__n__M6 (or M61Q__n__) is: 'l T__n__ P0' (pocket 0 is the spindle).  The spindle_unload command issued for T0M6 is 'u T0 P0'.
de: Wenn ein NON_RANDOM-Werkzeugwechsler mit [EMCIO]RANDOM_TOOL_CHANGER=0 (Standardeinstellung) angegeben wird, lautet der Befehl spindle_load für T__n__M6 (oder M61Q__n__): 'l T__n__ P0' (Platz 0 ist die Spindel).  Der Befehl spindle_unload für T0M6 lautet: 'u T0 P0'.

note: type: Plain text
en: Removal of a tool number should only be done if the tool number is not currently loaded in spindle.
de: Das Entfernen einer Werkzeugnummer sollte nur dann erfolgen, wenn die Werkzeugnummer derzeit nicht in der Spindel geladen ist.

note: type: Plain text
en: updates of tool parameters
de: Aktualisierung der Werkzeugparameter

note: type: Plain text
en: Trajectory planning, in general, is the means by which LinuxCNC follows the path specified by your G-code program, while still operating within the limits of your machinery.
de: Trajektorie Planung, im Allgemeinen, ist das Mittel, mit dem LinuxCNC folgt dem Pfad von Ihrem G-Code-Programm angegeben, während immer noch innerhalb der Grenzen Ihrer Maschine.

note: type: Plain text
en: A G-code program can never be fully obeyed. For example, imagine you specify as a single-line program the following move:
de: Ein G-Code-Programm kann nie vollständig befolgt werden. Stellen Sie sich zum Beispiel vor, Sie geben als einzeiliges Programm den folgenden Zug an:

note: type: delimited block -
en: G1 X1 F10 (G1 is linear move, X1 is the destination, F10 is the speed)
de: G1 X1 F10 (G1 ist die lineare Bewegung, X1 ist das Ziel, F10 ist die Geschwindigkeit)

note: type: Plain text
en: The basic acceleration and deceleration described above is not complex and there is no compromise to be made. In the INI file the specified machine constraints such as maximum axis velocity and axis acceleration must be obeyed by the trajectory planner.
de: Die oben beschriebene grundlegende Beschleunigung und Verzögerung ist nicht komplex und es müssen keine Kompromisse eingegangen werden. Die in der INI-Datei angegebenen Maschinenbeschränkungen wie maximale Achsengeschwindigkeit und Achsenbeschleunigung müssen vom Trajektorienplaner eingehalten werden.

note: type: Plain text
en: For more information on the Trajectory Planner INI options see the <<sub:ini:sec:traj,Trajectory Section>> in the INI chapter.
de: Für weitere Informationen zu den Trajektorie-Panner INI-Optionen siehe den <<sub:ini:sec:traj,Abschnitt zu Trajektorien>> im INI Kapitel.

note: type: Title ===
en: Path Following(((Trajectory Planning:Path Following)))
de: Bahnverfolgung(((Flugbahnplanung:Bahnverfolgung)))

note: type: Plain text
en: A less straightforward problem is that of path following. When you program a corner in G-code, the trajectory planner can do several things, all of which are right in some cases:
de: Ein weniger einfaches Problem ist das der Bahnverfolgung. Wenn Sie eine Ecke in G-Code programmieren, kann der Bahnplaner mehrere Dinge tun, die alle in einigen Fällen richtig sind:

note: type: Plain text
en: It can decelerate to a stop exactly at the coordinates of the corner, and then accelerate in the new direction.
de: Es kann genau an den Koordinaten der Kurve bis zum Stillstand abbremsen und dann in die neue Richtung beschleunigen.

note: type: Plain text
en: It can also do what is called blending, which is to keep the feed rate up while going through the corner, making it necessary to round the corner off in order to obey machine constraints.
de: Sie kann auch das so genannte Blending durchführen, d. h. die Vorschubgeschwindigkeit beim Durchfahren der Ecke aufrechterhalten, so dass die Ecke abgerundet werden muss, um die Maschinenvorgaben einzuhalten.

note: type: Plain text
en: You can see that there is a trade off here: you can slow down to get better path following, or keep the speed up and have worse path following. Depending on the particular cut, the material, the tooling, etc., the programmer may want to compromise differently.
de: Sie sehen, dass es hier einen Kompromiss gibt: Sie können die Geschwindigkeit verringern, um eine bessere Bahnverfolgung zu erhalten, oder die Geschwindigkeit beibehalten und eine schlechtere Bahnverfolgung haben. Je nach Art des Schnitts, des Materials, des Werkzeugs usw. kann der Programmierer unterschiedliche Kompromisse eingehen.

note: type: Plain text
en: Rapid moves also obey the current trajectory control. With moves long enough to reach maximum velocity on a machine with low acceleration and no path tolerance specified, you can get a fairly round corner.
de: Auch bei schnellen Bewegungen wird die aktuelle Bahnsteuerung beachtet. Mit Bewegungen, die lang genug sind, um die maximale Geschwindigkeit auf einer Maschine mit geringer Beschleunigung und ohne vorgegebene Bahntoleranz zu erreichen, kann man eine ziemlich runde Ecke erhalten.

note: type: Title ===
en: Programming the Planner(((Trajectory Planning:Programming the Planner)))
de: Programmieren des Planers(((Trajektorienplanung:Programmieren des Planers)))

note: type: Plain text
en: The trajectory control commands are as follows:
de: Die Befehle zur Steuerung der Trajektorie lauten wie folgt:

note: type: TP
en: Use B<axis-remote --help> for further information.
de: Verwenden Sie B<axis-remote --help> für weitere Informationen.

note: type: Plain text
en: Check whether AXIS is running.
de: Prüfen Sie, ob AXIS läuft.

note: type: Plain text
en: Make AXIS reload the currently loaded file.
de: Lassen Sie AXIS die aktuell geladene Datei neu laden.

note: type: Plain text
en: Make AXIS clear the backplot.
de: Lassen Sie AXIS den Backplot löschen.

note: type: Plain text
en: Make AXIS quit.
de: Beenden Sie AXIS.

note: type: Plain text
en: Display a list of valid parameters for B<axis-remote>.
de: Zeigt eine Liste der gültigen Parameter für B<axis-remote> an.

note: type: Plain text
en: Run the MDI command B<COMMAND>.
de: Führen Sie den MDI-Befehl B<COMMAND> aus.

note: type: TP
en: B<FILENAME>
de: B<DATEINAME>

note: type: Plain text
en: Load the G-code file B<FILENAME>.
de: Laden Sie die G-Code-Datei B<DATEINAME>.

note: type: Plain text
en: Much more information about LinuxCNC and HAL is available in the LinuxCNC and HAL User Manuals, found at /usr/share/doc/linuxcnc/.
de: Viele weitere Informationen über LinuxCNC und HAL finden Sie in den LinuxCNC- und HAL-Benutzerhandbüchern in /usr/share/doc/linuxcnc.

note: type: Plain text
en: debuglevel - sets the debug level for the userspace part of LinuxCNC
de: debuglevel - setzt den Debuglevel für den Userspace-Teil von LinuxCNC

note: type: Plain text
en: B<debuglevel> displays a checkbox gui to select the current debug level of some parts of LinuxCNC.
de: B<debuglevel> zeigt eine Checkbox an, um den aktuellen Debuglevel einiger Teile von LinuxCNC auszuwählen.

note: type: Plain text
en: halcmd(1) - debug subcommand B<LinuxCNC(1)>
de: halcmd(1) - Debug-Unterbefehl B<LinuxCNC(1)>

note: type: Plain text
en: elbpcom - Communicate with Mesa ethernet cards
de: elbpcom - Kommunikation mit Mesa-Ethernet-Karten

note: type: Plain text
en: Common options:
de: Gemeinsame Optionen:

note: type: Plain text
en: Reading data:
de: Daten auslesen:

note: type: Plain text
en: Writing data:
de: Daten schreiben:

note: type: Plain text
en: Sending arbitrary packets:
de: Übermittlung beliebiger Pakete:

note: type: Plain text
en: Read or write data from a Mesa ethernet card that uses the LBP16 protocol, such as the 7i80.  This can be useful for performing certain low-level tasks.
de: Lesen oder Schreiben von Daten von einer Mesa-Ethernet-Karte, die das LBP16-Protokoll verwendet, wie z. B. die 7I80.  Dies kann für die Durchführung bestimmter Aufgaben auf niedriger Ebene nützlich sein.

note: type: Plain text
en: For more information about the meaning of each address space, see the card documentation.  Incorrect use of this utility can have negative effects such as changing the board's IP address or even corrupting the FPGA bitfile in the eeprom.  For some tasks, such as updating FPGA bitfiles and setting IP addresses, B<mesaflash>(1)  is a more appropriate tool.
de: Weitere Informationen über die Bedeutung der einzelnen Adressräume finden Sie in der Dokumentation der Karte.  Die falsche Verwendung dieses Dienstprogramms kann negative Auswirkungen haben, wie z. B. die Änderung der IP-Adresse der Karte oder sogar die Beschädigung der FPGA-Bitdatei im Eeprom.  Für einige Aufgaben, wie das Aktualisieren von FPGA-Bitfiles und das Setzen von IP-Adressen, ist B<mesaflash>(1) ein geeigneteres Werkzeug.

note: type: Plain text
en: If not specified, the default values are
de: Wenn nicht angegeben, sind die Standardwerte

note: type: Plain text
en: This example demonstrates reading the HOSTMOT2 identifying string from the IDROM in space 0:
de: Dieses Beispiel demonstriert das Lesen des HOSTMOT2-Identifizierungsstrings von der IDROM im Speicherplatz 0:

note: type: Plain text
en: First the request is shown in hex.  Then the response (if any) is shown in hex.  Finally, the response is shown in ASCII, with "." replacing any non-ASCII characters.  This is similar to the following invocations of mesaflash:
de: Zuerst wird die Anfrage in Hexadezimal dargestellt.  Dann wird die Antwort (falls vorhanden) in Hex dargestellt.  Schließlich wird die Antwort in ASCII angezeigt, wobei "." alle Nicht-ASCII-Zeichen ersetzt.  Dies ist ähnlich wie bei den folgenden Aufrufen von mesaflash:

note: type: Plain text
en: but notice its different treatment of byte order.
de: Beachten Sie jedoch die unterschiedliche Behandlung der Bytereihenfolge.

note: type: Plain text
en: GladeVCP - Virtual Control Panel for LinuxCNC based on Glade, Gtk and HAL widgets
de: GladeVCP - Virtuelles Control Panel für LinuxCNC basierend auf Glade, Gtk und HAL Widgets

note: type: Plain text
en: This sets the initial geometry of the root window.  Use 'WxH' for just size, '+X+Y' for just position, or 'WxH+X+Y' for both.  Size / position use pixel units. Position is referenced from top left.
de: Hiermit wird die anfängliche Geometrie des Stammfensters festgelegt.  Verwenden Sie 'WxH' für nur Größe, '+X+Y' für nur Position oder 'WxH+X+Y' für beides.  Größe/Position verwenden Pixel-Einheiten. Die Position wird von links oben referenziert.

note: type: TP
en: B<-c> I<component-name>
de: B<-c> I<Komponentenname>

note: type: Plain text
en: Use I<component-name> as the HAL component name.  If the component name is not specified, the basename of the ui file is used.
de: Verwenden Sie I<Komponentenname> als Namen der HAL-Komponente.  Wenn der Komponentenname nicht angegeben wird, dann wird der Basisname der UI-Datei verwendet.

note: type: Plain text
en: Instructs GladeVCP to inspect the Python script I<handler> for event handlers, and connect them to signals in the ui file.
de: Weist GladeVCP an, das Python-Skript I<handler> nach Event-Handlern zu untersuchen und diese mit Signalen in der UI-Datei zu verbinden.

note: type: Plain text
en: GladeVCP collects all I<useroption> strings and passes them to the handler init()  method as a list of strings without further inspection.
de: GladeVCP sammelt alle I<useroption>-Strings und übergibt sie ohne weitere Prüfung als Liste von Strings an die Methode init() des Handlers.

note: type: Plain text
en: Reparent GladeVCP into an existing window I<XID> instead of creating a new top level window.
de: GladeVCP in ein bestehendes Fenster XID einbinden, anstatt ein neues Fensters der obersten Ebene zu erzeugen.

note: type: TP
en: B<-H> I<halfile>
de: B<-H> I<HAL-file>

note: type: Plain text
en: GladeVCP runs I<halfile> - a list of HAL commands - by executing I<halcmd -c halfile> after the HAL component is finalized.
de: GladeVCP führt I<halfile> - eine Liste von HAL-Befehlen - aus, indem es I<halcmd -c halfile> ausführt, nachdem die HAL-Komponente fertiggestellt wurde.

note: type: Plain text
en: enable debug output.
de: Debug-Ausgabe aktivieren.

note: type: Plain text
en: explicitly load a gtkrc file.
de: explizit eine gtkrc-Datei laden.

note: type: Plain text
en: explicitly deactivate workaround for a GTK bug which makes matches of widget and widget_class matches in GTK theme and gtkrc files fail. Normally not needed.
de: Deaktiviert explizit den Workaround für einen GTK-Bug, der dazu führt, dass Übereinstimmungen von widget und widget_class in GTK-Theme- und gtkrc-Dateien fehlschlagen. Normalerweise nicht erforderlich.

note: type: Plain text
en: I<GladeVCP> in the LinuxCNC documentation for a description of GladeVCP's capabilities and the associated HAL widget set, along with examples.
de: I<GladeVCP> in der LinuxCNC-Dokumentation für eine Beschreibung der Fähigkeiten von GladeVCP und des zugehörigen HAL-Widget-Sets, zusammen mit Beispielen.

note: type: Plain text
en: gladevcp - used by sample configs to deonstrate Glade Virtual_demo
de: gladevcp – Wird von Beispielkonfigurationen verwendet, um Glade Virtual_demo zu demonstrieren

note: type: Plain text
en: B<gladevcp_demo> Control Panels
de: B<gladevcp_demo> Bedienfelder (engl. control panels)

note: type: Plain text
en: B<gladevcp_demo> is a sample GladeVCP handler
de: B<gladevcp_demo> ist ein Beispiel für einen GladeVCP-Handler

note: type: Plain text
en: gmoccapy - TOUCHY LinuxCNC Graphical User Interface
de: gmoccapy - TOUCHY LinuxCNC Grafische Benutzeroberfläche

note: type: TP
en: B<INI file>
de: B<INI-Datei>

note: type: Plain text
en: The I<INI file> is the main piece of an LinuxCNC configuration. It is not the entire configuration; there are various other files that go with it (NML files, HAL files, TBL files, VAR files). It is, however, the most important one, because it is the file that holds the configuration together. It can adjust a lot of parameters itself, but it also tells B<LinuxCNC> which other files to load and use.
de: Die I<INI-Datei> ist der Hauptbestandteil einer LinuxCNC-Konfiguration. Es ist nicht die gesamte Konfiguration; es gibt verschiedene andere Dateien, die mit ihr gehen (NML-Dateien, HAL-Dateien, TBL-Dateien, VAR-Dateien). Sie ist jedoch die wichtigste, weil sie die Datei ist, über welche die Konfiguration zusammengehalten wird. Sie kann viele Parameter selbst einstellen, aber sie sagt B<LinuxCNC> auch, welche anderen Dateien zu laden und zu verwenden sind.

note: type: Plain text
en: gremlin_view - G-code graphical preview
de: gremlin_view - Grafische G-Code-Vorschau

note: type: Plain text
en: B<gremlin_view> is a Python wrapper for the gremlin G-code graphical preview
de: B<gremlin_view> ist ein Python-Wrapper für die grafische Gremlin G-Code-Vorschau

note: type: Plain text
en: PGremlinView for gremlin with buttons for simpler embedding
    Standalone functionality if linuxcnc running
    A default ui file (gremlin_view.ui) is provided for a default
    button arrangement but a user may provide their own by supplying
    the glade_file argument.
    The following objects are mandatory:
      'gremlin_view_window'      toplevel window
      'gremlin_view_hal_gremlin' hal_gremlin
      'gremlin_view_box'         HBox or VBox' containing hal_gremlin
    Optional radiobutton group names:
      'select_p_view'
      'select_x_view'
      'select_y_view'
      'select_z_view'
      'select_z2_view'
    Optional checkbuttons names:
      'enable_dro'
      'show_machine_speed
      'show_distance_to_go'
      'show_limits'
      'show_extents'
      'show_tool'
      'show_metric'
    Callbacks are provided for the following button actions
      on_clear_live_plotter_clicked
      on_enable_dro_clicked
      on_zoomin_pressed
      on_zoomout_pressed
      on_pan_x_minus_pressed
      on_pan_x_plus_pressed
      on_pan_y_minus_pressed
      on_pan_y_plus_pressed
      on_show_tool_clicked
      on_show_metric_clicked
      on_show_extents_clicked
      on_select_p_view_clicked
      on_select_x_view_clicked
      on_select_y_view_clicked
      on_select_z_view_clicked
      on_select_z2_view_clicked
      on_show_distance_to_go_clicked
      on_show_machine_speed_clicked
      on_show_limits_clicked
de: PGremlinView für Gremlin mit Schaltflächen zum einfacheren Einbetten Eigenständige Funktionalität, wenn LinuxCNC läuft Als Standard wird eine Standard-UI-Datei (gremlin_view.ui) bereitgestellt Schaltflächenanordnung, aber ein Benutzer kann seine eigene bereitstellen, indem er sie bereitstellt das Glade_file-Argument. Die folgenden Objekte sind obligatorisch:
      'gremlin_view_window'      toplevel window
      'gremlin_view_hal_gremlin' hal_gremlin
      'gremlin_view_box'         HBox or VBox' containing hal_gremlin
    Optional radiobutton group names:
      'select_p_view'
      'select_x_view'
      'select_y_view'
      'select_z_view'
      'select_z2_view'
    Optional checkbuttons names:
      'enable_dro'
      'show_machine_speed
      'show_distance_to_go'
      'show_limits'
      'show_extents'
      'show_tool'
      'show_metric'
    Callbacks are provided for the following button actions
      on_clear_live_plotter_clicked
      on_enable_dro_clicked
      on_zoomin_pressed
      on_zoomout_pressed
      on_pan_x_minus_pressed
      on_pan_x_plus_pressed
      on_pan_y_minus_pressed
      on_pan_y_plus_pressed
      on_show_tool_clicked
      on_show_metric_clicked
      on_show_extents_clicked
      on_select_p_view_clicked
      on_select_x_view_clicked
      on_select_y_view_clicked
      on_select_z_view_clicked
      on_select_z2_view_clicked
      on_show_distance_to_go_clicked
      on_show_machine_speed_clicked
      on_show_limits_clicked

note: type: TH
en: January 1, 2009
de: 1. Januar 2009

note: type: Plain text
en: B<gs2_vfd> - HAL userspace component for Automation Direct GS2 VFD's
de: B<gs2_vfd> – HAL-Userspace-Komponente für Automation Direct GS2 VFDs

note: type: Plain text
en: B<gs2_vfd> [OPTIONS]
de: B<gs2_vfd> [OPTIONEN]

note: type: Plain text
en: This manual page explains the B<gs2_vfd> component. This component reads and writes to the GS2 via a modbus connection.
de: Diese Handbuchseite erklärt die Komponente B<gs2_vfd>. Diese Komponente liest und schreibt in den GS2 über eine Modbus-Verbindung.

note: type: Plain text
en: B<gs2_vfd> is for use with LinuxCNC
de: B<gs2_vfd> ist für die Verwendung mit LinuxCNC

note: type: Plain text
en: (default 8) Set number of data bits to E<lt>nE<gt>, where n must be from 5 to 8 inclusive
de: (Standard 8) Anzahl der Datenbits auf E<lt>nE<gt> setzen, wobei n von 5 bis einschließlich 8 reichen muss

note: type: Plain text
en: Turn on debug messages. Note that if there are serial errors, this may become annoying.  Debug mode will cause all modbus messages to be printed in hex on the terminal.
de: Aktivieren der Debugmeldungen. Beachten Sie, dass dies bei reihenweise auftretenden Fehlern lästig werden kann.  Der Debug-Modus bewirkt, dass alle Modbus-Nachrichten in Hex auf dem Terminal gedruckt werden.

note: type: Plain text
en: (default gs2_vfd) Set the name of the HAL module.  The HAL comp name will be set to E<lt>stringE<gt>, and all pin and parameter names will begin with E<lt>stringE<gt>.
de: (Standardwert gs2_vfd) Setzt den Namen des HAL-Moduls.  Der HAL-Comp-Name wird auf E<lt>stringE<gt> gesetzt, und alle Pin- und Parameternamen beginnen mit E<lt>stringE<gt>.

note: type: Plain text
en: (default odd) Set serial parity to even, odd, or none.
de: (Standardwert ungerade) Setzt die serielle Parität auf gerade, ungerade oder keine.

note: type: Plain text
en: (default 38400) Set baud rate to E<lt>nE<gt>. It is an error if the rate is not one of the following: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
de: (Standard 38400) Baudrate auf E<lt>nE<gt> einstellen. Es ist ein Fehler, wenn die Rate nicht eine der folgenden ist: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200

note: type: Plain text
en: (default 1) Set serial stop bits to 1 or 2
de: (Standard 1) Serielle Stoppbits auf 1 oder 2 setzen

note: type: Plain text
en: (default 1) Set MODBUS target (slave) number. This must match the device number you set on the GS2.
de: (Standard 1) MODBUS-Zielnummer (Slave) einstellen. Diese muss mit der Gerätenummer übereinstimmen, die Sie am GS2 eingestellt haben.

note: type: Plain text
en: (default 10.0) Seconds to accelerate the spindle from 0 to Max RPM.
de: (Standardwert 10,0) Sekunden für die Beschleunigung der Spindel von 0 auf Max RPM.

note: type: Plain text
en: (default 0.0) Seconds to decelerate the spindle from Max RPM to 0.  If set to 0.0 the spindle will be allowed to coast to a stop without controlled deceleration.
de: (Standardwert 0,0) Sekunden, um die Spindel von Max RPM auf 0 abzubremsen. Bei einer Einstellung von 0,0 kann die Spindel ohne kontrollierte Abbremsung bis zum Stillstand ausrollen.

note: type: Plain text
en: from the VFD
de: vom VFD

note: type: Plain text
en: when drive is at commanded speed
de: wenn der Antrieb die Sollgeschwindigkeit erreicht

note: type: Plain text
en: reset errors sent to VFD
de: Zurücksetzen der an den VFD gesendeten Fehler

note: type: Plain text
en: when the VFD reports 0 Hz output
de: wenn der VFD einen Ausgang von 0 Hz meldet

note: type: Plain text
en: speed sent to VFD in RPM It is an error to send a speed faster than the Motor Max RPM as set in the VFD
de: An den VFD gesendete Drehzahl in RPM Es ist ein Fehler, eine höhere Drehzahl als die im VFD eingestellte Motor Max RPM zu senden.

note: type: Plain text
en: 1 for FWD and 0 for REV sent to VFD
de: 1 für FWD und 0 für REV wird an den VFD gesendet

note: type: Plain text
en: 1 for ON and 0 for OFF sent to VFD, only on when running
de: 1 für ON und 0 für OFF an den VFD gesendet, nur bei Betrieb eingeschaltet

note: type: Plain text
en: 1 for ON and 0 for OFF, only on when running
de: 1 für ON und 0 für OFF, nur bei Betrieb eingeschaltet

note: type: Plain text
en: Drive Status of the VFD (see the GS2 manual)
de: Antriebsstatus des VFD (siehe GS2-Handbuch)

note: type: Plain text
en: Drive Status of the VFD (see the GS2 manual) Note that the value is a sum of all the bits that are on. So a 163 which means the drive is in the run mode is the sum of 3 (run) + 32 (freq set by serial) + 128 (operation set by serial).
de: Antriebsstatus des VFD (siehe GS2-Handbuch) Beachten Sie, dass der Wert die Summe aller Bits ist, die eingeschaltet sind. So ist eine 163, die bedeutet, dass sich der Frequenzumrichter im Betriebsmodus befindet, die Summe aus 3 (Betrieb) + 32 (über die serielle Schnittstelle eingestellte Frequenz) + 128 (über die serielle Schnittstelle eingestellter Betrieb).

note: type: Plain text
en: how often the modbus is polled (default 0.1)
de: wie oft der Modbus abgefragt wird (Standardwert 0.1)

note: type: Plain text
en: Nameplate Hz of motor (default 60)
de: Typenschild Hz des Motors (Standard 60)

note: type: Plain text
en: Nameplate RPM of motor (default 1730)
de: Nenndrehzahl des Motors (Standardwert 1730)

note: type: Plain text
en: the return value of an error in HAL
de: der Rückgabewert bei einem Fehler in HAL

note: type: Plain text
en:  speed tolerance (default 0.01)
de:  Geschwindigkeitstoleranz (Standardwert 0.01)

note: type: Plain text
en:  number of read/write cycles before checking at-speed (default 2)
de:  Anzahl der Lese-/Schreibzyklen vor der Überprüfung der Geschwindigkeit (Standardwert 2)

note: type: Plain text
en: I<GS2 Driver> in the LinuxCNC documentation for a full description of the B<GS2> syntax
de: I<GS2 Driver> in der LinuxCNC Dokumentation für eine vollständige Beschreibung der B<GS2> Syntax

note: type: Plain text
en: I<GS2 Examples> in the LinuxCNC documentation for examples using the B<GS2> component
de: I<GS2 Beispiele> in der LinuxCNC Dokumentation für Beispiele mit der B<GS2> Komponente

note: type: Plain text
en: gscreen - TOUCHY LinuxCNC Graphical User Interface
de: gscreen - TOUCHY LinuxCNC Grafische Benutzeroberfläche

note: type: Plain text
en: B<gscreen> is one of the Graphical User Interfaces (GUI) for LinuxCNC It gets run by the runscript usually.
de: B<gscreen> ist eine der grafischen Benutzeroberflächen (GUI) für LinuxCNC Es wird normalerweise vom Runscript ausgeführt.

note: type: TH
en: HAL User's Manual
de: HAL-Benutzerhandbuch

note: type: Plain text
en: halcmd - manipulate the LinuxCNC HAL from the command line
de: halcmd - manipuliert die LinuxCNC HAL von der Kommandozeile aus

note: type: Plain text
en: B<halcmd> is used to manipulate the HAL (Hardware Abstraction Layer) from the command line.  B<halcmd> can optionally read commands from a file, allowing complex HAL configurations to be set up with a single command.
de: B<halcmd> wird verwendet, um die HAL (Hardware Abstraction Layer) über die Befehlszeile zu bearbeiten.  B<halcmd> kann optional Befehle aus einer Datei lesen, sodass komplexe HAL-Konfigurationen mit einem einzigen Befehl eingerichtet werden können.

note: type: Plain text
en: If the B<readline> library is available when LinuxCNC is compiled, then B<halcmd> offers commandline editing and completion when running interactively.  Use the up arrow to recall previous commands, and press tab to complete the names of items such as pins and signals.
de: Wenn die Bibliothek B<readline> verfügbar ist, wenn LinuxCNC kompiliert wird, dann bietet B<halcmd> die Bearbeitung und Vervollständigung von Befehlszeilen, wenn es interaktiv ausgeführt wird.  Verwenden Sie den Pfeil nach oben, um vorherige Befehle aufzurufen, und drücken Sie Tab, um die Namen von Elementen wie Pins und Signale zu vervollständigen.

note: type: Plain text
en: Before tearing down the realtime environment, run an interactive halcmd.  B<halrun> only.  If B<-I> is used, it must precede all other commandline arguments.
de: Bevor Sie die Echtzeitumgebung abbauen, führen Sie einen interaktiven halcmd aus.  Nur B<halrun>.  Wenn B<-I> verwendet wird, muss es vor allen anderen Befehlszeilenargumenten stehen.

note: type: Plain text
en: Ignore commands on command line, take input from I<file> instead.  If I<file> is not specified, take input from I<stdin>.
de: Ignoriert Befehle auf der Kommandozeile, nimmt stattdessen Eingaben aus I<Datei>.  Wenn I<Datei> nicht angegeben ist, wird die Eingabe von I<stdin> übernommen.

note: type: Plain text
en: Use variables from the specified I<INI file> for substitutions.  See B<SUBSTITUTION> below.
de: Verwendet Variablen aus der angegebenen I<INI-Datei> für Ersetzungen.  Siehe B<SUBSTITUTION> unten.

note: type: Plain text
en: Keep going after failed command(s).  The default is to stop and return failure if any command fails.
de: Nach fehlgeschlagenem(n) Befehl(en) weitermachen.  Standardmäßig wird bei einem fehlgeschlagenen Befehl angehalten und ein Fehler zurückgegeben.

note: type: Plain text
en: display errors only (default)
de: nur Fehler anzeigen (Standard)

note: type: Plain text
en: display nothing, execute commands silently
de: nichts anzeigen, Befehle lautlos ausführen

note: type: Plain text
en: Script-friendly mode.  In this mode, I<show> will not output titles for the items shown.  Also, module names will be printed instead of ID codes in pin, param, and funct listings.  Threads are printed on a single line, with the thread period, FP usage and name first, followed by all of the functions in the thread, in execution order.  Signals are printed on a single line, with the type, value, and signal name first, followed by a list of pins connected to the signal, showing both the direction and the pin name.
de: Skript-freundlicher Modus.  In diesem Modus gibt I<show> keine Titel für die angezeigten Elemente aus.  Außerdem werden Modulnamen anstelle von ID-Codes in Pin-, Param- und Funktionsauflistungen gedruckt.  Threads werden auf einer einzigen Zeile gedruckt, mit der Thread-Periode, der FP-Verwendung und dem Thread-Namen an erster Stelle, gefolgt von allen Funktionen des Threads in der Reihenfolge ihrer Ausführung.  Signale werden in einer einzigen Zeile gedruckt, mit Typ, Wert und Signalname zuerst, gefolgt von einer Liste der mit dem Signal verbundenen Pins, die sowohl die Richtung als auch den Pin-Namen anzeigen.

note: type: Plain text
en: Release the HAL mutex.  This is useful for recovering when a HAL component has crashed while holding the HAL mutex.
de: Freigabe des HAL-Mutex.  Dies ist nützlich für die Wiederherstellung, wenn eine HAL-Komponente abgestürzt ist, während sie den HAL-Mutex hielt.

note: type: Plain text
en: display results of each command
de: Anzeige der Ergebnisse der einzelnen Befehle

note: type: Plain text
en: display lots of debugging junk
de: zeigt eine Menge zunächst unnütz erscheinender Information zur Fehlerfindung

note: type: Plain text
en: display a help screen and exit, displays extended help on I<command> if specified
de: einen Hilfebildschirm anzeigen und beenden, zeigt die erweiterte Hilfe zu I<Befehl> an, falls angegeben

note: type: SH
en: COMMANDS
de: KOMMANDOS

note: type: Plain text
en: Commands tell B<halcmd> what to do.  Normally B<halcmd> reads a single command from the command line and executes it.  If the 'B<-f>' option is used to read commands from a file, B<halcmd> reads each line of the file as a new command.  Anything following 'B<#>' on a line is a comment.
de: Anweisungen (engl. commands) sagen B<halcmd>, was zu tun ist.  Normalerweise liest B<halcmd> eine einzelne Anweisung aus der Befehlszeile und führt ihn aus.  Wenn die Option 'B<-f>' verwendet wird, um Befehle aus einer Datei zu lesen, liest B<halcmd> jede Zeile der Datei als einen neuen Befehl.  Alles, was auf 'B<#>' in einer Zeile folgt, ist ein Kommentar.

note: type: Plain text
en: (I<load> I<r>ealI<t>ime module)  Loads a realtime HAL module called I<modname>.  B<halcmd> looks for the module in a directory specified at compile time.
de: (I<load> I<r>ealI<t>ime module) Lädt ein Echtzeit-HAL-Modul namens I<modname>.  B<halcmd> sucht das Modul in einem zur Kompilierzeit angegebenen Verzeichnis.

note: type: Plain text
en: In systems with realtime, B<halcmd> calls the B<linuxcnc_module_helper> to load realtime modules.  B<linuxcnc_module_helper> is a setuid program and is compiled with a whitelist of modules it is allowed to load.  This is currently just a list of B<LinuxCNC>-related modules.  The B<linuxcnc_module_helper> execs insmod, so return codes and error messages are those from insmod.  Administrators who wish to restrict which users can load these B<LinuxCNC>-related kernel modules can do this by setting the permissions and group on B<linuxcnc_module_helper> appropriately.
de: In Systemen mit Echtzeit-Unterstützung ruft B<halcmd> den B<linuxcnc_module_helper> auf, um Echtzeitmodule zu laden.  B<linuxcnc_module_helper> ist ein setuid-Programm und wird mit einer Liste von Modulen kompiliert, die es laden darf.  Dies ist derzeit nur eine Liste von B<LinuxCNC>-bezogenen Modulen.  Der B<linuxcnc_module_helper> führt insmod aus, daher sind die Rückgabewerte und Fehlermeldungen die von insmod.  Administratoren, die einschränken möchten, welche Benutzer diese B<LinuxCNC>-bezogenen Kernelmodule laden dürfen, können dies tun, indem sie die Rechte und die Gruppe auf B<linuxcnc_module_helper> entsprechend einstellen.

note: type: Plain text
en: In systems without realtime B<halcmd> calls the B<rtapi_app> which creates the simulated realtime environment if it did not yet exist, and then loads the requested component with a call to B<dlopen(3)>.
de: In Systemen ohne Echtzeit-Unterstützung ruft B<halcmd> das B<rtapi_app> auf, das die simulierte Echtzeitumgebung erstellt, falls sie noch nicht existiert, und dann die angeforderte Komponente mit einem Aufruf von B<dlopen(3)> lädt.

note: type: Plain text
en: (I<unload> I<r>ealI<t>ime module)  Unloads a realtime HAL module called I<modname>.  If I<modname> is "all", it will unload all currently loaded realtime HAL modules.  B<unloadrt> also works by execing B<linuxcnc_module_helper> or B<rtapi_app>, just like B<loadrt>.
de: (I<unload> I<r>ealI<t>ime module) Entlädt ein Echtzeit-HAL-Modul namens I<modname>.  Wenn I<modname> "all" ist, werden alle derzeit geladenen Echtzeit-HAL-Module entladen.  B<unloadrt> funktioniert auch durch Ausführung von B<linuxcnc_module_helper> oder B<rtapi_app>, genau wie B<loadrt>.

note: type: Plain text
en: (I<load> I<Us>eI<r>space component) Executes the given I<unix-command>, usually to load a userspace component.  I<[flags]> may be one or more of:
de: (I<load> I<Us>eI<r>space component) Führt das angegebene I<unix-command> aus, normalerweise um eine Userspace-Komponente zu laden.  I<[flags]> kann eines oder mehrere der folgenden sein:

note: type: Plain text
en: B<-Wn name> to wait for the component, which will have the given name.
de: B<-Wn name> um auf die Komponente zu warten, die den angegebenen Name haben wird.

note: type: Plain text
en: (I<unload> I<Us>eI<r>space component)  Unloads a userspace component called I<compname>.  If I<compname> is "all", it will unload all userspace components.  B<unloadusr> works by sending SIGTERM to all userspace components.
de: (I<unload> I<Us>eI<r>space component) Entlädt eine Userspace-Komponente namens I<compname>.  Wenn I<compname> "all" ist, werden alle Userspace-Komponenten entladen.  B<unloadusr> arbeitet, indem es SIGTERM an alle Userspace-Komponenten sendet.

note: type: Plain text
en: Unloads a userspace component or realtime module.  If I<compname> is "all", it will unload all userspace components and realtime modules.
de: Entlädt eine Userspace-Komponente oder ein Echtzeitmodul.  Wenn I<compname> "all" ist, werden alle Userspace-Komponenten und Echtzeitmodule entladen.

note: type: Plain text
en: (OBSOLETE - use B<net> instead) (I<new> I<sig>nal)  Creates a new HAL signal called I<signame> that may later be used to connect two or more HAL component pins.  I<type> is the data type of the new signal, and must be one of "B<bit>", "B<s32>", "B<u32>", or "B<float>".  Fails if a signal of the same name already exists.
de: (OBSOLETE - stattdessen B<net> verwenden) (I<new> I<sig>nal) Erzeugt ein neues HAL-Signal namens I<signame>, das später zur Verbindung von zwei oder mehr HAL-Komponentenpins verwendet werden kann.  I<type> ist der Datentyp des neuen Signals und muss einer von "B<bit>", "B<s32>", "B<u32>" oder "B<float>" sein.  Schlägt fehl, wenn ein Signal mit demselben Namen bereits existiert.

note: type: Plain text
en: (I<del>ete I<sig>nal)  Deletes HAL signal I<signame>.  Any pins currently linked to the signal will be unlinked.  Fails if I<signame> does not exist.
de: (I<del>ete I<sig>nal) Löscht das HAL-Signal I<signame>.  Alle Pins, die derzeit mit dem Signal verknüpft sind, werden entkoppelt.  Schlägt fehl, wenn I<signame> nicht existiert.

note: type: Plain text
en: (I<set> I<s>ignal)  Sets the value of signal I<signame> to I<value>.  Fails if I<signame> does not exist, if it already has a writer, or if I<value> is not a legal value.  Legal values depend on the signals's type.
de: (I<set> I<s>ignal) Setzt den Wert des Signals I<signname> auf I<value>. Schlägt fehl, wenn I<signname> nicht existiert, wenn es bereits einen Writer hat oder wenn I<value> kein gültiger Wert ist. Zulässige Werte hängen vom Signaltyp ab.

note: type: Plain text
en: (I<s>ignal type)  Gets the type of signal I<name>.  Fails if I<name> does not exist as a signal.
de: (I<s>Signaltyp) Ermittelt den Typ des Signals I<name>.  Schlägt fehl, wenn I<name> nicht als Signal existiert.

note: type: Plain text
en: (I<get> I<s>ignal)  Gets the value of signal I<signame>.  Fails if I<signame> does not exist.
de: (I<get> I<s>signal) Ermittelt den Wert des Signals I<signame>.  Schlägt fehl, wenn I<signame> nicht existiert.

note: type: Plain text
en: (OBSOLETE - use B<net> instead) (I<link> I<p>in to I<s>ignal)  Establishes a link between a HAL component pin I<pinname> and a HAL signal I<signame>.  Any previous link to I<pinname> will be broken.  I<arrow> can be "B<=E<gt>>", "B<E<lt>=>", "B<E<lt>=E<gt>>", or omitted.  B<halcmd> ignores arrows, but they can be useful in command files to document the direction of data flow.  Arrows should not be used on the command line since the shell might try to interpret them.  Fails if either I<pinname> or I<signame> does not exist, or if they are not the same type type.
de: (VERALTET - verwenden Sie stattdessen B<net>) (I<link> I<p>in to I<s>ignal) Stellt eine Verbindung zwischen einem HAL-Komponentenpin I<Pin-name> und einem HAL-Signal I<signame> her.  Jeder vorherige Link zu I<Pin-name> wird unterbrochen.   I<arrow> kann "B<=E<gt>>", "B<E<lt>=>", "B<E<lt>=E<gt>>" sein oder weggelassen werden.  B<halcmd> ignoriert Pfeile, aber sie können in Befehlsdateien nützlich sein, um die Richtung des Datenflusses zu dokumentieren.  Pfeile sollten nicht in der Befehlszeile verwendet werden, da die Shell versuchen könnte, sie zu interpretieren.  Fehler wenn I<Pin-name> oder I<Sig-name> nicht vorhanden sind oder wenn es sich nicht um denselben Typtyp handelt.

note: type: Plain text
en: (OBSOLETE - use B<net> instead) (I<link> I<s>ignal to I<p>in)  Works like B<linkps> but reverses the order of the arguments.  B<halcmd> treats both link commands exactly the same.  Use whichever you prefer.
de: (VERALTET - verwenden Sie stattdessen B<net>) (I<link> I<s>ignal to I<p>in) Funktioniert wie B<linkps>, kehrt aber die Reihenfolge der Argumente um. B<halcmd> behandelt beide Link-Befehle genau gleich. Verwenden Sie, was Sie bevorzugen.

note: type: Plain text
en: (OBSOLETE - use B<net> instead) (I<link> I<p>in to I<p>in)
    Shortcut for B<linkps> that creates the signal (named like the
    first pin), then links them both to that signal.  B<halcmd> treats
    this just as if it were:
       B<halcmd> B<newsig> pinname1
       B<halcmd> B<linksp> pinname1 pinname1
       B<halcmd> B<linksp> pinname1 pinname2
de: (VERALTET - stattdessen B<net> verwenden) (I<link> I<p>in to I<p>in)
    Abkürzung für B<linkps>, was das Signal erzeugt (benannt wie die
    ersten Pin), verbindet sie dann beide mit diesem Signal. B<halcmd> behandelt
    dies so, als wäre es:
       B<halcmd> B<newsig> pinname1
       B<halcmd> B<linksp> Pinname1 Pinname1
       B<halcmd> B<linksp> Pinname1 Pinname2

note: type: Plain text
en: Create I<signname> to match the type of I<pinname> if it does not yet exist.  Then, link I<signame> to each I<pinname> in turn.  Arrows may be used as in B<linkps>. When linking a pin to a signal for the first time, the signal value will inherit the pin's default value.
de: Erstelle I<Zeichen>, das dem Typ von I<Pinname> entspricht, falls er noch nicht existiert.  Verknüpfen Sie dann I<Zeichenname> mit jedem I<Pinname> der Reihe nach.  Pfeile können wie in B<linkps> verwendet werden. Wenn ein Pin zum ersten Mal mit einem Signal verknüpft wird, erbt der Signalwert den Standardwert des Pins.

note: type: Plain text
en: (I<unlink> I<p>in)  Breaks any previous link to I<pinname>.  Fails if I<pinname> does not exist. An unlinked pin will retain the last value of the signal it was linked to.
de: (I<unlink> I<p>in) Unterbricht jede vorherige Verbindung zu I<pinname>.  Schlägt fehl, wenn I<pinname> nicht vorhanden ist. Ein nicht verknüpfter Pin behält den letzten Wert des Signals, mit dem er verknüpft war.

note: type: Plain text
en: (I<set> I<p>arameter or I<p>in)  Sets the value of parameter or pin I<name> to I<value>.  Fails if I<name> does not exist as a pin or parameter, if it is a parameter that is not writable, if it is a pin that is an output, if it is a pin that is already attached to a signal, or if I<value> is not a legal value.  Legal values depend on the type of the pin or parameter.  If a pin and a parameter both exist with the given name, the parameter is acted on.
de: (I<set> I<p>Parameter oder I<p>in) Setzt den Wert von Parameter oder Pin I<name> auf I<wert>.  Schlägt fehl, wenn I<name> nicht als Pin oder Parameter existiert, wenn es sich um einen Parameter handelt, der nicht beschreibbar ist, wenn es ein Pin ist, der ein Ausgang ist, wenn es ein Pin ist, der bereits mit einem Signal verbunden ist, oder wenn I<wert> kein zulässiger Wert ist.  Die zulässigen Werte hängen vom Typ des Pins oder Parameters ab.  Existieren sowohl ein Pin als auch ein Parameter mit dem angegebenen Namen, so wird auf den Parameter zugegriffen.

note: type: Plain text
en: Identical to B<setp>.  This alternate form of the command may be more convenient and readable when used in a file.
de: Identisch mit B<setp>.  Diese alternative Form des Befehls kann bei Verwendung in einer Datei bequemer und lesbarer sein.

note: type: Plain text
en: (I<p>arameter or I<p>in I<type>)  Gets the type of parameter or pin I<name>.  Fails if I<name> does not exist as a pin or parameter.  If a pin and a parameter both exist with the given name, the parameter is acted on.
de: (I<p>Parameter oder I<p>in I<Typ>) Liefert den Typ von Parameter oder Pin I<name>.  Schlägt fehl, wenn I<name> nicht als Pin oder Parameter vorhanden ist.  Existieren sowohl ein Pin als auch ein Parameter mit dem angegebenen Namen, wird der Parameter berücksichtigt.

note: type: Plain text
en: (I<get> I<p>arameter or I<p>in)  Gets the value of parameter or pin I<name>.  Fails if I<name> does not exist as a pin or parameter.  If a pin and a parameter both exist with the given name, the parameter is acted on.
de: (I<p>Parameter oder I<p>in I<Typ>) Liefert den Typ von Parameter oder Pin I<name>.  Schlägt fehl, wenn I<name> nicht als Pin oder Parameter vorhanden ist.  Existieren sowohl ein Pin als auch ein Parameter mit dem angegebenen Namen, wird der Parameter berücksichtigt.

note: type: Plain text
en: (I<add> I<f>unction)  Adds function I<functname> to realtime thread I<threadname>.  I<functname> will run after any functions that were previously added to the thread.  Fails if either I<functname> or I<threadname> does not exist, or if they are incompatible.
de: (I<add> I<f>Funktion) Fügt die Funktion I<Funktionsname> zum Echtzeit-Thread I<threadname> hinzu.  I<Funktionsname> wird nach allen Funktionen ausgeführt, die zuvor zum Thread hinzugefügt wurden.  Schlägt fehl, wenn entweder I<Funktionsname> oder I<Threadname> nicht existiert, oder wenn sie nicht kompatibel sind.

note: type: Plain text
en: (I<del>ete I<f>unction)  Removes function I<functname> from realtime thread I<threadname>.  Fails if either I<functname> or I<threadname> does not exist, or if I<functname> is not currently part of I<threadname>.
de: (I<del>ete I<f>Funktion) Entfernt die Funktion I<functname> aus dem Echtzeit-Thread I<threadname>.  Schlägt fehl, wenn entweder I<Funktionsname> oder I<Threadname> nicht existiert, oder wenn I<Funktionsname> derzeit nicht Teil von I<Threadname> ist.

note: type: Plain text
en: Starts execution of realtime threads.  Each thread periodically calls all of the functions that were added to it with the B<addf> command, in the order in which they were added.
de: Startet die Ausführung von Echtzeit-Threads.  Jeder Thread ruft periodisch alle Funktionen auf, die ihm mit dem Befehl B<addf> hinzugefügt wurden, und zwar in der Reihenfolge, in der sie hinzugefügt wurden.

note: type: Plain text
en: Stops execution of realtime threads.  The threads will no longer call their functions.
de: Stoppt die Ausführung von Echtzeit-Threads.  Die Threads werden ihre Funktionen nicht mehr aufrufen.

note: type: TP
en: B<show> [I<item>]
de: B<show> [I<element>]

note: type: Plain text
en: Prints HAL items to I<stdout> in human readable format.  I<item> can be one of "B<comp>" (components), "B<pin>", "B<sig>" (signals), "B<param>" (parameters), "B<funct>" (functions), "B<thread>", or "B<alias>".  The type "B<all>" can be used to show matching items of all the preceding types.  If I<item> is omitted, B<show> will print everything.
de: Druckt HAL-Elemente (engl. items) in menschenlesbarem Format auf I<stdout>.  I<element> kann eines von "B<comp>" (Komponenten), "B<pin>", "B<sig>" (Signale), "B<param>" (Parameter), "B<funct>" (Funktionen), "B<thread>", oder "B<alias>".  Der Typ "B<all>" kann verwendet werden, um übereinstimmende Elemente aller vorangegangenen Typen anzuzeigen.  Wenn I<element> weggelassen wird, dann gibt B<show> alles aus.

note: type: TP
en: B<save> [I<item>]
de: B<save> [I<element>]

note: type: Plain text
en: Prints HAL items to I<stdout> in the form of HAL commands.  These commands can be redirected to a file and later executed using B<halcmd -f> to restore the saved configuration.  I<item> can be one of the following:
de: Gibt HAL-Elemente in Form von HAL-Befehlen auf I<stdout> aus.  Diese Befehle können in eine Datei umgeleitet und später mit B<halcmd -f> ausgeführt werden, um die gespeicherte Konfiguration wiederherzustellen.  I<element> kann einer der folgenden Werte sein:

note: type: Plain text
en: "B<comp>" generates a B<loadrt> command for realtime component.
de: "B<comp>" erzeugt einen B<loadrt>-Befehl für die Echtzeitkomponente.

note: type: Plain text
en: "B<alias>" generates an B<alias> command for each pin or parameter alias pairing
de: "B<alias>" erzeugt einen B<alias>-Befehl für jede Pin- oder Parameter-Alias-Paarung

note: type: Plain text
en: "B<sig>" (or "B<signal>")  generates a B<newsig> command for each signal, and "B<sigu>" generates a B<newsig> command for each unlinked signal (for use with B<netl> and B<netla>).
de: "B<sig>" (oder "B<signal>") erzeugt einen B<newsig>-Befehl für jedes Signal, und "B<sigu>" erzeugt einen B<newsig>-Befehl für jedes unverknüpfte Signal (zur Verwendung mit B<netl> und B<netla>).

note: type: Plain text
en: "B<link>" and "B<linka>" both generate B<linkps> commands for each link. (B<linka> includes arrows, while B<link> does not.)
de: "B<link>" und "B<linka>" erzeugen beide B<linkps>-Befehle für jede Verbindung. (B<linka> enthält Pfeile, B<link> dagegen nicht.)

note: type: Plain text
en:  "B<net>" and "B<neta>" both generate one B<newsig> command for
    each signal, followed by B<linksp> commands for each pin linked to that
    signal.  (B<neta> includes arrows.)
de:  "B<net>" und "B<neta>" erzeugen jeweils einen B<newsig>-Befehl für
    jedes Signal, gefolgt von B<linksp>-Befehlen für jeden Pin, der mit diesem
    Signal verbunden ist.  (B<neta> enthält Pfeile.)

note: type: Plain text
en: "B<netl>" generates one B<net> command for each linked signal, and "B<netla>" (or "B<netal>")  generates a similar command using arrows.
de: "B<netl>" erzeugt einen B<net>-Befehl für jedes verknüpfte Signal, und "B<netla>" (oder "B<netal>") erzeugt einen ähnlichen Befehl mit Pfeilen.

note: type: Plain text
en: "B<param>" (or "B<parameter>) "generates one B<setp> command for each parameter.
de: "B<param>" (oder "B<parameter>) "erzeugt einen B<setp>-Befehl für jeden Parameter.

note: type: Plain text
en: "B<thread>" generates one B<addf> command for each function in each realtime thread.
de: "B<thread>" erzeugt einen B<addf>-Befehl für jede Funktion in jedem Echtzeit-Thread.

note: type: Plain text
en: If I<item> is B<allu>), B<save> does the equivalent of B<comp>, B<alias>, B<sigu>, B<netla>, B<param>, B<thread>, and B<unconnectedinpins>.
de: Wenn I<item> B<allu>) ist, tut B<save> das Äquivalent von B<comp>, B<alias>, B<sigu>, B<netla>, B<param>, B<thread> und B<unconnectedinpins>.

note: type: Plain text
en: If I<item> is omitted (or B<all>), B<save> does the equivalent of B<comp>, B<alias>, B<sigu>, B<netla>, B<param>, and B<thread>.
de: Wenn I<item> weggelassen wird (oder B<all>), tut B<save> das Äquivalent von B<comp>, B<alias>, B<sigu>, B<netla>, B<param> und B<thread>.

note: type: Plain text
en: Execute the commands from I<filename.hal>.
de: Führen Sie die Befehle in I<Dateiname.hal> aus.

note: type: Plain text
en: Assigns "B<alias>" as a second name for the pin or parameter
    "name".  For most operations, an alias provides a second
    name that can be used to refer to a pin or parameter, both the
    original name and the alias will work.
       "type" must be B<pin> or B<param>.
       "name" must be an existing name or B<alias> of the specified type.
    Note that the "show" command will only show the aliased name, but the
    original name is still valid to use in HAL. The original names can still
    be seen with "show all" or "show alias"
    Existing nets will be preserved when a pin name is aliased.
de: Weist "B<alias>" als zweiten Namen für den Pin oder Parameter zu
    "Name".  Für die meisten Operationen bietet ein Alias einen zweiten
    einen zweiten Namen, der verwendet werden kann, um auf einen Pin oder Parameter zu verweisen, sowohl
    Originalname und der Alias funktionieren.
       "type" muss B<pin> oder B<param> sein.
       "name" muss ein bestehender Name oder B<alias> des angegebenen Typs sein.
    Beachten Sie, dass der Befehl "show" nur den Aliasnamen anzeigt, aber der
    Der ursprüngliche Name ist weiterhin gültig und kann in HAL verwendet werden. Die ursprünglichen Namen können weiterhin
    mit "show all" oder "show alias" angezeigt werden.
    Bestehende Netze bleiben erhalten, wenn ein Pin-Name aliasiert wird.

note: type: Plain text
en: Removes any alias from the pin or parameter alias.
      "type" must be B<pin> or B<param>
      "alias" must be an existing name or B<alias> of the specified type.
de: Entfernt jeden Alias aus dem Pin- oder Parameter-Alias.
      "Typ" muss B<Pin> oder B<Param> sein
      "alias" muss ein vorhandener Name oder B<alias> des angegebenen Typs sein.

note: type: Plain text
en:   Prints the names of HAL items of the specified type.
      'type' is 'B<comp>', 'B<pin>', 'B<sig>', 'B<param>', 'B<funct>', or
      'B<thread>'.  If 'pattern' is specified it prints only
      those names that match the pattern, which may be a
      'shell glob'.
      For 'B<sig>', 'B<pin>' and 'B<param>', the first pattern may be
      -tB<datatype> where datatype is the data type (e.g., 'float')
      in this case, the listed pins, signals, or parameters
      are restricted to the given data type
      Names are printed on a single line, space separated.
de:   Gibt die Namen von HAL-Elementen des angegebenen Typs aus.
      'type' ist 'B<comp>', 'B<pin>', 'B<sig>', 'B<param>', 'B<funct>', oder
      'B<thread>'. Wenn 'Muster' angegeben ist, wird nur gedruckt
      die Namen, die mit dem Muster übereinstimmen, z. B. a
      'Muschelkugel'.
      Für 'B<sig>', 'B<pin>' und 'B<param>' kann das erste Muster sein
      -tB<Datentyp> wobei Datentyp der Datentyp ist (z. B. „float“)
      in diesem Fall die aufgelisteten Pins, Signale oder Parameter
      sind auf den angegebenen Datentyp beschränkt
      Namen werden auf einer einzelnen Zeile gedruckt, Leerzeichen getrennt.

note: type: Plain text
en:   Prints the filename, linenumber and an optional message.
      wrap the message in quotes if it has spaces.
de:   Druckt den Dateinamen, die Leinennummer und eine optionale Nachricht.
      Die Nachricht wird in Anführungszeichen eingeschlossen, wenn sie Leerzeichen enthält.

note: type: Plain text
en:   Locks HAL to some degree.
      none - no locking done.
      tune - some tuning is possible (B<setp> & such).
      all  - HAL completely locked.
de:   Sperrt HAL bis zu einem gewissen Grad.
      none - keine Sperre.
      tune - einige Einstellungen sind möglich (B<setp> & so).
      all - HAL vollständig gesperrt.

note: type: Plain text
en:   Unlocks HAL to some degree.
      tune - some tuning is possible (B<setp> & such).
      all  - HAL completely unlocked.
de:   Schaltet HAL bis zu einem gewissen Grad frei.
      tune - einige Einstellungen sind möglich (B<setp> & so).
      all - HAL komplett freigeschaltet.

note: type: Plain text
en:   Prints status info about HAL.
      'type' is 'B<lock>', 'B<mem>', or 'B<all>'.
      If 'type' is omitted, it assumes 'B<all>'.
de:   Druckt Statusinformationen über HAL.
      Typ' ist 'B<lock>', 'B<mem>', oder 'B<all>'.
      Wenn 'type' weggelassen wird, dann wird 'B<all>' angenommen.

note: type: Plain text
en: After a command is read but before it is executed, several types of variable substitution take place.
de: Nach dem Lesen eines Befehls, aber vor seiner Ausführung, finden mehrere Arten der Variablensubstitution statt.

note: type: Plain text
en: Environment variables have the following formats:
de: Umgebungsvariablen haben die folgenden Formate:

note: type: Plain text
en: B<$ENVVAR> followed by end-of-line or whitespace
de: B<$ENVVAR> gefolgt von einem Zeilenende oder Leerzeichen

note: type: Plain text
en: B<[SECTION]VAR> followed by end-of-line or whitespace
de: B<[SECTION]VAR> gefolgt von einem Zeilenende oder Leerzeichen

note: type: Plain text
en: B<[SECTION](VAR)>
de: B<[ABSCHNITT](VAR)>

note: type: SH
en: LINE CONTINUATION
de: ZEILENFORTSETZUNG

note: type: Plain text
en: The backslash character (B<\e>) may be used to indicate the line is extended to the next line.  The backslash character must be the last character before the newline.
de: Das Backslash-Zeichen (B<\e>) kann verwendet werden, um anzuzeigen, dass die Zeile bis zur nächsten Zeile verlängert wird.  Das Backslash-Zeichen muss das letzte Zeichen vor dem Zeilenumbruch sein.

note: type: Plain text
en: Original version by John Kasunich, as part of the LinuxCNC project.  Now includes major contributions by several members of the project.
de: Originalversion von John Kasunich, als Teil des LinuxCNC-Projekts.  Jetzt enthält wichtige Beiträge von mehreren Mitgliedern des Projekts.

note: type: Plain text
en: Report bugs to the E<.URL http://sf.net/p/emc/bugs/ "LinuxCNC bug tracker" .>
de: Melden Sie Fehler an den E<.URL http://sf.net/p/emc/bugs/ "LinuxCNC bug tracker" .>

note: type: Plain text
en: halcmd_twopass - short description
de: halcmd_twopass - kurze Beschreibung

note: type: Plain text
en: B<{name}>
de: B<{Name}>

note: type: Plain text
en: B<halcmd_twopass> is a utility script used when parsing HAL files.  It is of little relevance to normal users and is used internally by the system.
de: B<halcmd_twopass> ist ein Hilfsskript, das beim Parsen von HAL-Dateien verwendet wird.  Es ist für normale Benutzer von geringer Bedeutung und wird intern vom System verwendet.

note: type: Plain text
en: halcompile - Build, compile and install LinuxCNC HAL components
de: halcompile - Erstellen, kompilieren und installieren von LinuxCNC HAL Komponenten

note: type: Plain text
en: By default, the maximum number of personalities is 64.  To alter this
    limit, use the B<--personalities=> option with halcompile.  For example,
    to set the maximum of  personality items to 4:
       [sudo] B<halcompile --personalities=4> --install ...
de: Standardmäßig beträgt die maximale Anzahl von Persönlichkeiten 64.  Um diese Grenze zu ändern
    Grenze zu ändern, verwenden Sie die Option B<--personalities=> mit halcompile.  Zum Beispiel,
    um die maximale Anzahl der Persönlichkeitselemente auf 4 zu setzen:
       [sudo] B<halcompile --personalities=4> --install ...

note: type: Plain text
en: B<halcompile> performs many different functions:
de: B<halcompile> erfüllt viele verschiedene Funktionen:

note: type: Plain text
en: Compile B<.comp> and B<.c> files into B<.so> or B<.ko> HAL realtime components (the B<--compile> flag)
de: Kompilieren von B<.comp>- und B<.c>-Dateien in B<.so>- oder B<.ko>-HAL-Echtzeitkomponenten (Flag B<--compile>)

note: type: Plain text
en: Compile B<.comp> and B<.c> files into HAL userspace components (the B<--compile --userspace> flag)
de: Kompilieren von B<.comp>- und B<.c>-Dateien in HAL-Benutzerspace-Komponenten (das Flag B<--compile --userspace>)

note: type: Plain text
en: Preprocess B<.comp> files into B<.c> files (the B<--preprocess> flag)
de: B<.comp>-Dateien in B<.c>-Dateien vorverarbeiten (das B<--preprocess>-Flag)

note: type: Plain text
en: Extract documentation from B<.comp> files into B<.9> manpage files (the B<--document> flag)
de: Dokumentation aus B<.comp>-Dateien in B<.9>-Manpage-Dateien extrahieren (das B<--document>-Flag)

note: type: Plain text
en: Display documentation from B<.comp> files onscreen (the B<--view-doc> flag)
de: Anzeige der Dokumentation von B<.comp>-Dateien auf dem Bildschirm (das Flag B<--view-doc>)

note: type: Plain text
en: Compile and install B<.comp> and B<.c> files into the proper directory for HAL realtime components (the B<--install> flag), which may require I<sudo> to write to system directories.
de: Kompilieren und installieren Sie die Dateien B<.comp> und B<.c> in das richtige Verzeichnis für die HAL-Echtzeitkomponenten (das Flag B<--install>), was möglicherweise I<sudo> zum Schreiben in Systemverzeichnisse erfordert.

note: type: Plain text
en: Install B<.c> and B<.py> files into the proper directory for HAL userspace components (the B<--install --userspace> flag), which may require I<sudo> to write to system directories.
de: Installieren Sie die Dateien B<.c> und B<.py> in das richtige Verzeichnis für HAL-Benutzerspace-Komponenten (das Flag B<--install --userspace>), was möglicherweise I<sudo> zum Schreiben in Systemverzeichnisse erfordert.

note: type: Plain text
en: Extract documentation from B<.comp> files into B<.9> manpage files in the proper system directory (the B<--install> flag), which may require I<sudo> to write to system directories.
de: Extrahieren der Dokumentation aus B<.comp>-Dateien in B<.9>-Manpage-Dateien im richtigen Systemverzeichnis (das B<--install>-Flag), was I<sudo> zum Schreiben in Systemverzeichnisse erfordern kann.

note: type: Plain text
en: I<Halcompile HAL Component Generator> in the LinuxCNC documentation for a full description of the B<.comp> syntax, along with examples
de: I<Halcompile HAL Component Generator> in der LinuxCNC Dokumentation für eine vollständige Beschreibung der B<.comp> Syntax, zusammen mit Beispielen

note: type: Plain text
en: hal-histogram - plots the value of a HAL pin as a histogram
de: hal-histogram - stellt den Wert eines HAL-Pins als Histogramm dar

note: type: Plain text
en: hal_input - control HAL pins with any Linux input device, including USB HID devices
de: hal_input - steuert HAL-Pins mit jedem Linux-Eingabegerät, einschließlich USB-HID-Geräten

note: type: Plain text
en: hal_input is an interface between HAL and any Linux input device, including USB HID devices.  For each device named, B<hal_input> creates pins corresponding to its keys, absolute axes, and LEDs.  At a fixed rate of approximately 10ms, it synchronizes the device and the HAL pins.
de: hal_input ist eine Schnittstelle zwischen HAL und jedem Linux-Eingabegerät, einschließlich USB-HID-Geräten.  Für jedes benannte Gerät erzeugt B<hal_input> Pins, die seinen Tasten, absoluten Achsen und LEDs entsprechen.  Mit einer festen Rate von ca. 10ms synchronisiert es das Gerät und die HAL-Pins.

note: type: SH
en: INPUT SPECIFICATION
de: EINGANGSSPEZIFIKATION

note: type: Plain text
en: The I<inputspec> may be in one of several forms:
de: I<inputspec> kann in einer von mehreren Formen vorliegen:

note: type: TP
en: A string I<S>
de: Eine Zeichenkette I<S>

note: type: Plain text
en: A substring or shell-style pattern match will be tested against the "name" of the device, the "phys" (which gives information about how it is connected), and the "id", which is a string of the form "Bus=... Vendor=... Product=...  Version=...".  You can view the name, phys, and id of attached devices by executing B<less /proc/bus/input/devices>.  Examples:
de: Ein Teilstring oder eine Shell-ähnliche Musterübereinstimmung wird auf den "Namen" des Geräts, die "phys" (die Informationen über den Anschluss des Geräts enthält) und die "id", eine Zeichenfolge der Form "Bus=.... Hersteller=... Produkt=...  Version=...".  Sie können den Namen, phys und id der angeschlossenen Geräte anzeigen, indem Sie B<less /proc/bus/input/devices> ausführen.  Beispiele:

note: type: TP
en: A number I<N>
de: Eine Zahl I<N>

note: type: Plain text
en: This opens B</dev/input/event>I<N>.  Except for devices that are always attached to the system, this number may change over reboots or when the device is removed.  For this reason, using an integer is not recommended.
de: Dadurch wird B</dev/input/event>I<N> geöffnet.  Außer bei Geräten, die immer an das System angeschlossen sind, kann sich diese Zahl bei einem Neustart oder beim Entfernen des Geräts ändern.  Aus diesem Grund wird die Verwendung einer Ganzzahl nicht empfohlen.

note: type: Plain text
en: When several devices are identified by the same string, add "B<:>I<N>" where I<N> is the index of the desired device.  For example, if B<Mouse> matches B<input3> and B<input10>, then B<Mouse> and B<Mouse:0> select B<input3>.  Specifying B<mouse:1> selects input10.
de: Wenn mehrere Geräte durch dieselbe Zeichenfolge identifiziert werden, fügen Sie "B<:>I<N>" hinzu, wobei I<N> der Index des gewünschten Geräts ist.  Wenn zum Beispiel B<Maus> mit B<Eingang3> und B<Eingang10> übereinstimmt, dann wählen B<Maus> und B<Maus:0> B<Eingang3> aus.  Die Angabe von B<Maus:1> wählt Eingang10 aus.

note: type: Plain text
en: For devices that appear as multiple entries in /dev/input, these indices are likely to stay the same every time.  For multiple identical devices, these indices are likely to depend on the insertion order, but stay the same across reboots as long as the devices are not moved to different ports or unplugged while the machine is booted.
de: Bei Geräten, die als mehrere Einträge in /dev/input erscheinen, bleiben diese Indizes wahrscheinlich jedes Mal gleich.  Bei mehreren identischen Geräten hängen diese Indizes wahrscheinlich von der Reihenfolge des Einfügens ab, bleiben aber bei jedem Neustart gleich, solange die Geräte nicht an andere Ports verschoben oder während des Hochfahrens des Rechners ausgesteckt werden.

note: type: Plain text
en: If the first character of the I<inputspec> is a "+", then B<hal_input> requests exclusive access to the device.  The first device matching an I<inputspec> is used.  Any number of I<inputspec>s may be used.
de: Wenn das erste Zeichen von I<inputspec> ein "+" ist, fordert B<hal_input> exklusiven Zugriff auf das Gerät an.  Das erste Gerät, das einem I<inputspec> entspricht, wird verwendet.  Es können beliebig viele I<inputspec>s verwendet werden.

note: type: Plain text
en: A I<subset option may precede each inputspec>.  The subset option begins with a dash.  Each letter in the subset option specifies a device feature to B<include>.  Features that are not specified are excluded.  For instance, to export keyboard LEDs to HAL without exporting keys, use
de: Jeder Eingabespezifikation kann eine I<Teilmengenoption> vorangestellt werden.  Die Subset-Option beginnt mit einem Bindestrich.  Jeder Buchstabe in der Teilmengenoption gibt ein Gerätemerkmal an, das B<einzubeziehen> ist.  Merkmale, die nicht angegeben sind, werden ausgeschlossen.  Um zum Beispiel Tastatur-LEDs nach HAL zu exportieren, ohne Tasten zu exportieren, verwenden Sie

note: type: Plain text
en: hal_input -L I<keyboard> ...
de: hal_input -L I<Tastatur> ...

note: type: SH
en: DEVICE FEATURES SUPPORTED
de: UNTERSTÜTZTE GERÄTEFUNKTIONEN

note: type: Plain text
en: EV_KEY (buttons and keys).  Subset -K
de: EV_KEY (Buttons und Tasten).  Teilmenge (engl. subset) -K

note: type: Plain text
en: EV_ABS (absolute analog inputs).  Subset -A
de: EV_ABS (absolute analoge Eingänge).  Teilmenge -A

note: type: Plain text
en: EV_REL (relative analog inputs).  Subset -R
de: EV_REL (relative analoge Eingänge).  Teilmenge -R

note: type: Plain text
en: EV_LED (LED outputs).  Subset -L
de: EV_LED (LED-Ausgänge).  Teilmenge -L

note: type: SH
en: HAL PINS AND PARAMETERS
de: HAL PINS UND PARAMETER

note: type: Plain text
en: Created for each button on the device.
de: Erstellt für jede Taste auf dem Gerät.

note: type: SS
en: For keys
de: Für Tasten

note: type: Plain text
en: Created for each key on the device.
de: Wird für jede Taste des Geräts erstellt.

note: type: SS
en: For absolute axes
de: Für absolute Achsen

note: type: Plain text
en: Created for each absolute axis on the device.  Device positions closer than B<flat> to B<offset> are reported as B<offset> in B<counts>, and B<counts> does not change until the device position changes by at least B<fuzz>.  The position is computed as B<position> = (B<counts> - B<offset>) / B<scale>.  The default value of B<scale> and B<offset> map the range of the axis reported by the operating system to [-1,1].  The default values of B<fuzz> and B<flat> are those reported by the operating system.  The values of B<min> and B<max> are those reported by the operating system.
de: Wird für jede absolute Achse des Geräts erstellt.  Gerätepositionen, die näher als B<flat> an B<offset> liegen, werden als B<offset> in B<counts> gemeldet, und B<counts> ändert sich erst, wenn sich die Geräteposition um mindestens B<fuzz> ändert.  Die Position wird berechnet als B<position> = (B<counts> - B<offset>) / B<scale>.  Die Standardwerte von B<scale> und B<offset> bilden den vom Betriebssystem gemeldeten Bereich der Achse auf [-1,1] ab.  Die Standardwerte für B<fuzz> und B<flat> sind die vom Betriebssystem gemeldeten Werte.  Die Werte von B<min> und B<max> sind die vom Betriebssystem gemeldeten Werte.

note: type: Plain text
en: Created for each relative axis on the device.  As long as B<reset> is true, B<counts> is reset to zero regardless of any past or current axis movement.  Otherwise, B<counts> increases or decreases according to the motion of the axis.  B<counts> is divided by position-scale to give B<position>.  The default value of B<position> is 1.  There are some devices, notably scroll wheels, which return signed values with less resolution than 32 bits.  The default value of B<precision> is 32.  B<precision> can be set to 8 for a device that returns signed 8 bit values, or any other value from 1 to 32.  B<absolute>, when set true, ignores duplicate events with the same value.  This allows for devices that repeat events without any user action to work correctly.  B<last> shows the most recent count value returned by the device, and is used in the implementation of B<absolute>.
de: Wird für jede relative Achse des Geräts erstellt.  Solange B<reset> wahr ist, wird B<counts> auf Null zurückgesetzt, unabhängig von jeder vergangenen oder aktuellen Achsenbewegung.  Andernfalls erhöht oder verringert sich B<counts> entsprechend der Bewegung der Achse.  B<counts> wird durch die Positionsskala geteilt, um B<position> zu erhalten.  Der Standardwert von B<Position> ist 1. Es gibt einige Geräte, vor allem Scrollräder, die vorzeichenbehaftete Werte mit einer geringeren Auflösung als 32 Bit zurückgeben.  Der Standardwert für B<Präzision> ist 32.  B<Präzision> kann für ein Gerät, das vorzeichenbehaftete 8-Bit-Werte liefert, auf 8 oder einen beliebigen anderen Wert zwischen 1 und 32 gesetzt werden.  B<absolute>, wenn auf true gesetzt, ignoriert doppelte Ereignisse mit demselben Wert.  Dadurch können Geräte, die Ereignisse ohne jegliche Benutzeraktion wiederholen, korrekt funktionieren.  B<last> zeigt den letzten vom Gerät zurückgegebenen Zählwert an und wird bei der Implementierung von B<absolute> verwendet.

note: type: SS
en: For LEDs
de: Für LEDs

note: type: Plain text
en: Created for each LED on the device.
de: Wird für jede LED des Geräts erstellt.

note: type: SH
en: PERMISSIONS AND UDEV
de: BERECHTIGUNGEN UND UDEV

note: type: Plain text
en: By default, the input devices may not be accessible to regular users--B<hal_input> requires read-write access, even if the device has no outputs.
de: Standardmäßig dürfen die Eingabegeräte für normale Benutzer nicht zugänglich sein - B<hal_input> erfordert Lese- und Schreibzugriff, auch wenn das Gerät keine Ausgänge hat.

note: type: Plain text
en: Different versions of udev have slightly different, incompatible syntaxes.  For this reason, it is not possible for this manual page to give an accurate example.  The B<udev(7)> manual page documents the syntax used on your Linux distribution.  To view it in a terminal, the command is B<man 7 udev>.
de: Verschiedene Versionen von udev haben leicht unterschiedliche, inkompatible Syntaxen.  Aus diesem Grund ist es für diese Handbuchseite nicht möglich, ein genaues Beispiel zu geben.  Die Handbuchseite B<udev(7)> dokumentiert die in Ihrer Linux-Distribution verwendete Syntax.  Um sie in einem Terminal anzuzeigen, lautet der Befehl B<man 7 udev>.

note: type: Plain text
en: The initial state of keys, buttons, and absolute axes are erroneously reported as FALSE or 0 until an event is received for that key, button, or axis.
de: Der Anfangszustand von Tasten, Schaltflächen und absoluten Achsen wird fälschlicherweise als FALSE oder 0 gemeldet, bis ein Ereignis für diese Taste, Schaltfläche oder Achse empfangen wird.

note: type: TH
en: HAL Userspace Component
de: HAL-Userspace-Komponente

note: type: Plain text
en: hal_manualtoolchange - HAL userspace component to enable manual tool changes.
de: hal_manualtoolchange - HAL Userspace-Komponente, um manuelle Werkzeugwechsel zu ermöglichen.

note: type: Plain text
en: hal_manualtoolchange is a LinuxCNC userspace component that allows users with machines lacking automatic tool changers to make manual tool changes.  In use when a M6 tool change is encountered, the motion component will stop the spindle and pause the program.  The hal_manualtoolchange component will then receive a signal from the motion component causing it to display a tool change window prompting the user which tool number to load based on the last T- number programmed.  The dialog will stay active until the "continue" button is pressed.  When the "continue" button is pressed, hal_manualtoolchange will then signal the motion component that the tool change is complete thus allowing motion to turn the spindle back on and resume program execution.
de: hal_manualtoolchange ist ein LinuxCNC Userspace-Komponente, die Benutzer mit Maschinen ohne automatische Werkzeugwechsler, um manuelle Werkzeugwechsel machen können. Wird im Einsatz ein M6-Werkzeugwechsel vorgenommen, dann wird die Bewegungskomponente die Spindel stoppen und das Programm pausieren.  Die Komponente hal_manualtoolchange empfängt dann ein Signal von der Bewegungskomponente und zeigt ein Werkzeugwechsel-Fenster an, das den Benutzer auffordert, die Werkzeugnummer zu laden, die auf der zuletzt programmierten T-Nummer basiert.  Der Dialog bleibt aktiv, bis die Schaltfläche "Weiter" gedrückt wird.  Wenn die Schaltfläche "Weiter" gedrückt wird, signalisiert hal_manualtoolchange der Motion-Komponente, dass der Werkzeugwechsel abgeschlossen ist, so dass die Motion-Komponente die Spindel wieder einschalten und die Programmausführung fortsetzen kann.

note: type: Plain text
en: Additionally, the hal_manualtoolchange component includes a hal pin for a button that can be connected to a physical button to complete the tool change and remove the window prompt (hal_manualtoolchange.change_button).
de: Außerdem enthält die Komponente hal_manualtoolchange einen hal-Pin für eine Taste, die mit einer physischen Taste verbunden werden kann, um den Werkzeugwechsel abzuschließen und die Fensteraufforderung zu entfernen (hal_manualtoolchange.change_button).

note: type: Plain text
en: Receives last programmed T- number.
de: Empfängt die zuletzt programmierte T- Nummer.

note: type: Plain text
en: Receives signal to do tool change.
de: Empfängt das Signal zum Werkzeugwechsel.

note: type: Plain text
en: Signifies that the tool change is complete.
de: Zeigt an, dass der Werkzeugwechsel abgeschlossen ist.

note: type: Plain text
en: Pin to allow an external switch to signify that the tool change is complete.
de: Pin, damit ein externer Schalter signalisieren kann, dass der Werkzeugwechsel abgeschlossen ist.

note: type: Plain text
en: Normal usage is to load the component in your HAL file and net the appropriate pins from theI< motion> andI< io> components.  The following lines are typical in a HAL file when using the hal_manualtoolchange userspace component.
de: Normalerweise laden Sie die Komponente in Ihre HAL-Datei und verbinden die entsprechenden Pins der KomponentenI< motion> undI< io>.  Die folgenden Zeilen sind typisch für eine HAL-Datei bei Verwendung der User-Space-Komponente hal_manualtoolchange.

note: type: Plain text
en: This will load the hal_manualtoolchange userspace component waiting for the component to be ready before continuing.
de: Dies lädt die Benutzerraumkomponente hal_manualtoolchange und wartet, bis die Komponente fertig ist, bevor es weitergeht.

note: type: Plain text
en: When an M6 code is run, motion sets I< iocontrol.0.tool-change > to high indicating a tool change.  This pin should be netted to I< hal_manualtoolchange.change>.  This causes the Tool change dialog to be displayed on screen and wait for the user to either click the continue button on the dialog or press an externally connected button.
de: Wenn ein M6-Code ausgeführt wird, setzt Motion I< iocontrol.0.tool-change > auf High und zeigt damit einen Werkzeugwechsel an.  Dieser Pin sollte mit I< hal_manualtoolchange.change> verbunden werden.  Dies bewirkt, dass der Werkzeugwechsel-Dialog auf dem Bildschirm angezeigt wird und der Benutzer darauf wartet, dass er entweder auf die Schaltfläche "Weiter" im Dialog klickt oder eine extern angeschlossene Taste drückt.

note: type: Plain text
en: When the Tool change dialog's continue button is pressed, it will set the I<hal_manualtoolchange.changed> pin to high, this should be netted to the I<iocontrol.0.tool-changed> pin, indicating to the motion controller that the tool change has been completed and can continue with the execution of the G-code program.
de: Wenn die Schaltfläche "Weiter" im Dialogfeld "Werkzeugwechsel" gedrückt wird, dann wird der Pin I<hal_manualtoolchange.changed> auf High gesetzt. Dieser Pin sollte mit dem Pin I<iocontrol.0.tool-changed> verbunden werden, um der Bewegungssteuerung zu signalisieren, dass der Werkzeugwechsel abgeschlossen ist und mit der Ausführung des G-Code-Programms fortgesetzt werden kann.

note: type: Plain text
en: When a T- command is executed in a G-code program, the tool number will held in the I<iocontrol.0.tool-prep-number>.  This pin should be netted to I<hal_manualtoolchange.number>.  The value of this pin, the tool number is displayed in the tool change dialog to let the user know which tool should be loaded.
de: Wenn ein T-Befehl in einem G-Code-Programm ausgeführt wird, dann wird die Werkzeugnummer in I<iocontrol.0.tool-prep-number> gehalten.  Dieser Pin sollte mit I<hal_manualtoolchange.number> verknüpft werden.  Der Wert dieses Pins, die Werkzeugnummer, wird im Werkzeugwechsel-Dialog angezeigt, damit der Benutzer weiß, welches Werkzeug geladen werden soll.

note: type: Plain text
en: The I< iocontrol.0.tool-prepare > pin will go true when a TI<n> tool prepare is requested.  Since there is not automated tool changer this pin should be netted to I< iocontrol.0.tool-prepared > to indocate that the tool has been prepared.
de: Der Pin I< iocontrol.0.tool-prepare > wird auf true gesetzt, wenn eine TI<n>-Werkzeugvorbereitung angefordert wird.  Da es keinen automatischen Werkzeugwechsler gibt, sollte dieser Pin auf I< iocontrol.0.tool-prepared > gesetzt werden, um zu signalisieren, dass das Werkzeug vorbereitet wurde.

note: type: Plain text
en: If you wish to use an external button to signal the hal_manualtoolchange component that the tool change is complete simply bring the button into HAL (via a parport input pin or a hostmot2 gpio input or similar), and wire it directly to the I< hal_manualtoolchange.change_button > pin.  For Example:
de: Wenn Sie einen externen Taster verwenden möchten, um der Komponente hal_manualtoolchange zu signalisieren, dass der Werkzeugwechsel abgeschlossen ist, bringen Sie den Taster einfach in HAL ein (über einen Parport-Eingangspin oder einen Hostmot2-Gpio-Eingang o.ä.) und verdrahten ihn direkt mit dem I< hal_manualtoolchange.change_button > Pin.  Zum Beispiel:

note: type: Plain text
en: halmeter - observe HAL pins, signals, and parameters
de: halmeter - HAL-Pins, Signale und Parameter beobachten

note: type: Plain text
en: B<halmeter> is used to observe HAL (Hardware Abstraction Layer) pins, signals, or parameters.  It serves the same purpose as a multimeter does when working on physical systems.
de: B<halmeter> wird verwendet, um HAL (Hardware Abstraction Layer) Pins, Signale oder Parameter zu beobachten.  Es dient demselben Zweck wie ein Multimeter bei der Arbeit an physischen Systemen.

note: type: Plain text
en: Display the HAL pin I<name>.
de: Den HAL-Pin I<Name> anzeigen.

note: type: Plain text
en: Display the HAL signal I<name>.
de: Das HAL-Signal I<Name> anzeigen.

note: type: Plain text
en: Display the HAL parameter I<name>.
de: Den HAL-Parameter I<Name> anzeigen.

note: type: TP
en: If neither B<pin>, B<sig>, or B<param> are specified, the window starts out blank and the user must select an item to observe.
de: Wenn weder B<pin>, B<sig> noch B<param> angegeben sind, ist das Fenster zunächst leer und der Benutzer muss ein Element zur Beobachtung auswählen.

note: type: Plain text
en: Small window.  Non-interactive, must be used with B<pin>, B<sig>, or B<param> to select the item to display.  The item name is displayed in the title bar instead of the window, and there are no "Select" or "Exit" buttons.  Handy when you want a lot of meters in a small space.
de: Kleines Fenster.  Nicht interaktiv, muss mit B<pin>, B<sig> oder B<param> verwendet werden, um das anzuzeigende Element auszuwählen.  Der Name des Elements wird in der Titelleiste anstelle des Fensters angezeigt, und es gibt keine Schaltflächen "Auswählen" oder "Beenden".  Praktisch, wenn Sie viele Zähler auf kleinem Raum benötigen.

note: type: Plain text
en: Geometry position.  Allows one to specify the initial starting position and optionally the width of the meter. Referenced from top left of screen in pixel units.  Handy when you want to load a lot of meters in a script with out them displaying on top of each other.
de: Geometrieposition. Ermöglicht die Angabe der anfänglichen Startposition und optional der Breite des Meters. Referenziert von links oben auf dem Bildschirm in Pixel-Einheiten.  Praktisch, wenn Sie viele Zähler in ein Skript laden wollen, ohne dass sie übereinander angezeigt werden.

note: type: Plain text
en: Unless B<\e-s> is specified, there are two buttons, "Select" and "Exit".  "Select" opens a dialog box to select the item (pin, signal, or parameter)  to be observed.  "Exit" does what you expect.
de: Wenn nicht B<\e-s> angegeben ist, gibt es zwei Schaltflächen, "Auswählen" und "Beenden". "Auswählen" öffnet ein Dialogfeld zur Auswahl des zu beobachtenden Elements (Pin, Signal oder Parameter). "Beenden" tut das, was Sie erwarten.

note: type: Plain text
en: The selection dialog has "OK", "Apply", and "Cancel" buttons.  OK displays the selected item and closes the dialog.  "Apply" displays the selected item but keeps the selection dialog open.  "Cancel" closes the dialog without changing the displayed item.
de: Der Auswahldialog verfügt über die Schaltflächen "OK", "Übernehmen" und "Abbrechen".  Mit "OK" wird das ausgewählte Element angezeigt und der Dialog geschlossen. Mit "Anwenden" wird das ausgewählte Element angezeigt, der Auswahldialog bleibt jedoch geöffnet. Mit "Abbrechen" wird der Dialog geschlossen, ohne das angezeigte Element zu ändern.

note: type: Plain text
en: Opens a meter window, with nothing initially displayed.  Use the "Select" button to choose an item to observe.  Does not return until the window is closed.
de: Öffnet ein Messfenster, in dem zunächst nichts angezeigt wird.  Verwenden Sie die Schaltfläche "Auswählen", um ein Element zur Beobachtung auszuwählen.  Kehrt nicht zurück, bis das Fenster geschlossen wird.

note: type: Plain text
en: Open a meter window, with nothing initially displayed.  Use the "Select" button to choose an item.  Runs in the background leaving the shell free for other commands.
de: Öffnet ein Messfenster, in dem zunächst nichts angezeigt wird.  Verwenden Sie die Schaltfläche "Auswählen", um ein Element auszuwählen.  Läuft im Hintergrund und lässt die Shell frei für andere Befehle.

note: type: Plain text
en: Open a meter window, initially displaying HAL pin I<parport.0.pin-03-out>.  The "Select" button can be used to display other items.  Runs in background.
de: Öffnet ein Messfenster, das zunächst den HAL-Pin I<parport.0.pin-03-out> anzeigt.  Mit der Schaltfläche "Auswählen" können andere Elemente angezeigt werden.  Läuft im Hintergrund.

note: type: Plain text
en: Open a small meter window, displaying HAL pin I<parport.0.pin-03-out>.  The displayed item cannot be changed.  Runs in background.
de: Öffnet ein kleines Messfenster, das den HAL-Pin I<parport.0.pin-03-out> anzeigt.  Das angezeigte Element kann nicht geändert werden.  Läuft im Hintergrund.

note: type: Plain text
en: Open a small meter window, displaying HAL pin I<parport.0.pin-03-out>.  places it 100 pixels to the left and 500 pixels down from top of screen.  The displayed item cannot be changed.  Runs in background.
de: Öffnet ein kleines Messfenster, das den HAL-Pin I<parport.0.pin-03-out> anzeigt. Platzieren Sie es 100 Pixel links und 500 Pixel unterhalb des oberen Bildschirmrandes.  Das angezeigte Element kann nicht geändert werden.  Läuft im Hintergrund.

note: type: Plain text
en: Open a small meter window, displaying HAL pin I<parport.0.pin-03-out>.  places it 100 pixels to the left and 500 pixels down from top of screen.  The width will be 400 pixels (270 is default)  The displayed item cannot be changed.  Runs in background.
de: Öffnet ein kleines Messfenster, das den HAL-Pin I<parport.0.pin-03-out> anzeigt. Platzieren Sie es 100 Pixel links und 500 Pixel unterhalb des oberen Bildschirmrandes.  Die Breite beträgt 400 Pixel (270 ist Standard). Das angezeigte Element kann nicht geändert werden.  Läuft im Hintergrund.

note: type: TH
en: HAL Realtime Component
de: HAL-Echtzeit-Komponente

note: type: Plain text
en: hal_parport - Realtime HAL component to communicate with one or more pc parallel ports.
de: hal_parport - Echtzeit-HAL-Komponente zur Kommunikation mit einer oder mehreren parallelen PC-Ports.

note: type: Plain text
en: The hal_parport component is a realtime component that provides connections from HAL via halpins to the physical pins of one or more parallel ports.  It provides a read and write function to send and receive data to the attached parallel port(s).
de: Die Komponente hal_parport ist eine Echtzeitkomponente, die Verbindungen von HAL über halpins zu den physikalischen Pins einer oder mehrerer paralleler Schnittstellen herstellt.  Sie bietet eine Lese- und Schreibfunktion zum Senden und Empfangen von Daten an die angeschlossene(n) parallele(n) Schnittstelle(n).

note: type: Plain text
en: The hal_parport component supports up to B<8 >physical parallel ports.
de: Die hal_parport Komponente unterstützt bis zu B<8 >physikalische parallele Ports.

note: type: Plain text
en: The cfg string tells hal_parport the address(es) of the parallel port(s) and whether the port(s) is/are used as an input or output port(s).  Up to eight parallel ports are supported by the component.
de: Die cfg-Zeichenkette teilt hal_parport die Adresse(n) der parallelen Schnittstelle(n) mit und gibt an, ob die Schnittstelle(n) als Eingabe- oder Ausgabe-Schnittstelle(n) verwendet wird/werden.  Bis zu acht parallele Ports werden von der Komponente unterstützt.

note: type: Plain text
en: The B<port_addr >parameter of the configuration string may be either the physical base address of a parallel port or specified as the detected parallel port via Linux parport_pc driver.  In which case, a B<port_addr >of I<0 >is the first parallel port detected on the system, I<1 >is the next, and so on.
de: Der B<port_addr >Parameter des Konfigurationsstrings kann entweder die physikalische Basisadresse einer parallelen Schnittstelle sein oder als die erkannte parallele Schnittstelle über den Linux parport_pc-Treiber angegeben werden.  In diesem Fall ist ein B<port_addr >von I<0 >der erste auf dem System erkannte parallele Anschluss, I<1 >der nächste und so weiter.

note: type: Plain text
en: The B<type >parameter of the configuration string determines how the I/O bits of the port are used.  There are four possible options and if none is specified will default to out.
de: Der B<Typ >Parameter des Konfigurationsstrings bestimmt, wie die I/O-Bits des Ports verwendet werden.  Es gibt vier mögliche Optionen, und wenn keine angegeben wird, ist der Standardwert out.

note: type: Plain text
en: I<in >- Sets the 8 bits of the data port to input.  In this mode the parallel port has a total of 13 input pins and 4 output pins.
de: I<in >- Setzt die 8 Bits des Datenports auf Eingang.  In diesem Modus hat der Parallelport insgesamt 13 Eingangsstifte und 4 Ausgangsstifte.

note: type: Plain text
en: I<out >- Sets the 8 bits of the data port to output.  In this mode the parallel port has a total of 5 input pins and 12 output pins.
de: I<out >- Setzt die 8 Bits des Datenports auf Ausgabe.  In diesem Modus hat der Parallelport insgesamt 5 Eingangsstifte und 12 Ausgangsstifte.

note: type: Plain text
en: I<epp >- This option is the same as setting to out, but can cause the computer to change the electrical characteristics of the port, see USAGE below.
de: I<epp >- Diese Option entspricht der Einstellung out, kann aber dazu führen, dass der Computer die elektrischen Eigenschaften des Anschlusses verändert, siehe USAGE/BENUTZUNG unten.

note: type: Plain text
en: I<x >- The option allows ports with open collectorts on the control group pins to be configured as inputs resulting in 8 output pins and 9 input pins, see USAGE below.
de: I<x >- Mit dieser Option können Anschlüsse mit offenen Collectors an den Steuergruppenpins als Eingänge konfiguriert werden, was zu 8 Ausgangsstiften und 9 Eingangsstiften führt, siehe USAGE unten.

note: type: TP
en: The pins created by the hal_parport component depends on how it is configured in the B<cfg="" >string passed to it, see OPTIONS.
de: Die von der Komponente hal_parport erzeugten Pins hängen davon ab, wie sie in der übergebenen B<cfg="" >String konfiguriert ist, siehe OPTIONS.

note: type: Plain text
en: B<parport.E<lt>pE<gt>.pin-E<lt>nE<gt>-out (bit) >Drives a physical output pin.
de: B<parport.E<lt>pE<gt>.pin-E<lt>nE<gt>-out (bit) >Treibt einen physikalischen Ausgangspin.

note: type: Plain text
en: B<parport.E<lt>pE<gt>.pin-E<lt>nE<gt>-in (bit) >Tracks a physical input pin.
de: B<parport.E<lt>pE<gt>.pin-E<lt>nE<gt>-in (bit) >Verfolgt einen physikalischen Eingangsstift.

note: type: Plain text
en: B<parport.E<lt>pE<gt>.pin-E<lt>nE<gt>-in-not (bit) >Tracks a physical input pin, but inverted.
de: B<parport.E<lt>pE<gt>.pin-E<lt>nE<gt>-in-not (bit) >Verfolgt einen physikalischen Eingangspin, aber invertiert.

note: type: Plain text
en: For each pin created, B<E<lt>pE<gt> >is the port number, and B<E<lt>nE<gt> >is the physical pin number in the 25 pin D-shell connector.
de: Für jeden erstellten Pin ist B<E<lt>pE<gt> >die Nummer des Anschlusses und B<E<lt>nE<gt> >die Nummer des physischen Pins im 25-poligen D-Shell-Stecker.

note: type: Plain text
en: For each physical output pin, the driver creates a single HAL pin, for example: B<parport.0.pin-14-out>.
de: Für jeden physischen Ausgangspin erstellt der Treiber einen einzelnen HAL-Pin, zum Beispiel: B<parport.0.pin-14-out>.

note: type: Plain text
en: For each physical input pin, the driver creates two HAL pins, for example: B<parport.0.pin-12-in >and B<parport.0.pin-12-in-not>.
de: Für jeden physischen Eingangspin erstellt der Treiber zwei HAL-Pins, zum Beispiel: B<parport.0.pin-12-in >und B<parport.0.pin-12-in-not>.

note: type: Plain text
en: The B<-in >HAL pin is TRUE if the physical pin is high, and FALSE if the physical pin is low. The B<-in-not >HAL pin is inverted and is FALSE if the physical pin is high.
de: Der Pin B<-in >HAL ist TRUE, wenn der physikalische Pin high ist, und FALSE, wenn der physikalische Pin low ist. Der B<-in-nicht >HAL-Pin ist invertiert und ist FALSE, wenn der physikalische Pin high ist.

note: type: Plain text
en: The following lists the input and output pins by the type setting used in the cfg="" string.
de: Im Folgenden werden die Eingangs- und Ausgangsstifte nach der in der Zeichenkette cfg="" verwendeten Typeinstellung aufgeführt.

note: type: Plain text
en: B<in>: Pins 2,3,4,5,6,7,8,9,10,11,12,13,15 are input pins and pins 1,14,16 and 17 are output pins.
de: B<in>: Die Pins 2,3,4,5,6,7,8,9,10,11,12,13,15 sind Eingangsstifte und die Pins 1,14,16 und 17 sind Ausgangsstifte.

note: type: Plain text
en: B<out/epp>: Pins 10,11,12,13 and 15 are input pins and pins 1,2,3,4,5,6,7,8,9,14,16 and 17 are output pins.
de: B<out/epp>: Die Pins 10,11,12,13 und 15 sind Eingangspins und die Pins 1,2,3,4,5,6,7,8,9,14,16 und 17 sind Ausgangspins.

note: type: Plain text
en: B<x>: Pins 1,10,11,12,13,14,15,16 and 17 are input pins and pins 2,3,4,5,6,7,8,9 are output pins. (I<See USAGE section>.)
de: B<x>: Die Pins 1,10,11,12,13,14,15,16 und 17 sind Eingangspins und die Pins 2,3,4,5,6,7,8,9 sind Ausgangspins. (I<Siehe Abschnitt USAGE>.)

note: type: Plain text
en: Inverts an output pin.
de: Invertiert einen Ausgangspin.

note: type: Plain text
en: (only for out pins) TRUE if this pin should be reset when the .reset function is executed.
de: (nur für Out-Pins) TRUE, wenn dieser Pin beim Ausführen der Funktion .reset zurückgesetzt werden soll.

note: type: Plain text
en: The time (in nanoseconds) between a pin is set by write and reset by the reset function if it is enabled.
de: Die Zeit (in Nanosekunden) zwischen dem Setzen eines Pins durch Schreiben und dem Zurücksetzen durch die Reset-Funktion, wenn diese aktiviert ist.

note: type: Plain text
en: Reads physical input pins of port E<lt>portnumE<gt> and updates HAL -in and -in-not pins.
de: Liest die physikalischen Eingangspins von Port E<lt>portnumE<gt> und aktualisiert die HAL -in und -in-not Pins.

note: type: Plain text
en: Reads physical input pins of all ports and updates HAL -in and -in-not pins.
de: Liest die physischen Eingangspins aller Ports und aktualisiert die HAL -in und -in-not Pins.

note: type: Plain text
en: Reads HAL -out pins of port E<lt>pE<gt> and updates that port's physical output pins.
de: Liest HAL-out-Pins von Port E<lt>pE<gt> und aktualisiert die physischen Ausgangspins dieses Ports.

note: type: Plain text
en: Reads HAL -out pins of all ports and updates all physical output pins.
de: Liest HAL-Out-Pins aller Ports und aktualisiert alle physischen Ausgangspins.

note: type: Plain text
en: Waits until I<reset-time >has elapsed since the associated write, then resets pins to values indicated by I<-out-reset >and I<-out-invert >settings.  Reset must be later in the same thread as write. 'If 'I<-out-reset >is TRUE, then the reset function will set the pin to the value of I<-out-invert>.  This can be used in conjunction with stepgen's doublefreq to produce one step per period.  The stepgen stepspace for that pin must be set to 0 to enable doublefreq.
de: Wartet, bis I<reset-time >seit dem zugehörigen Schreibvorgang verstrichen ist, und setzt dann die Pins auf die durch I<-out-reset >und I<-out-invert >Einstellungen angegebenen Werte zurück.  Wenn 'I<-out-reset >TRUE ist, dann setzt die Reset-Funktion den Pin auf den Wert von I<-out-invert>.  Dies kann in Verbindung mit der doublefreq-Funktion von stepgen verwendet werden, um einen Schritt pro Periode zu erzeugen.  Der stepgen-Schrittbereich für diesen Pin muss auf 0 gesetzt werden, um doublefreq zu aktivieren.

note: type: Plain text
en: The hal_parport component is a driver for the traditional PC parallel port.  The port has a total of 25 physical pins of which 17 are used for signals.  The original parallel port divided those pins into three groups: data, control, and status.  The data group consists of 8 output pins, the control group consists of 4 output pins, and the status group consists of 5 input pins.
de: Die Komponente hal_parport ist ein Treiber für den traditionellen PC-Parallelport.  Die Schnittstelle hat insgesamt 25 physikalische Pins, von denen 17 für Signale verwendet werden.  Die ursprüngliche parallele Schnittstelle unterteilte diese Pins in drei Gruppen: Daten, Steuerung und Status.  Die Datengruppe besteht aus 8 Ausgangspins, die Steuergruppe aus 4 Ausgangspins und die Statusgruppe aus 5 Eingangspins.

note: type: Plain text
en: In the early 1990's, the bidirectional parallel port was introduced, which allows the data group to be used for output or input.  The HAL driver supports the bidirectional port, and allows the user to set the data group as either input or output.  If configured as I<out>, a port provides a total of 12 outputs and 5 inputs.  If configured as I<in>, it provides 4 outputs and 13 inputs.
de: In den frühen 1990er Jahren wurde die bidirektionale parallele Schnittstelle eingeführt, die es ermöglicht, die Datengruppe für die Ausgabe oder Eingabe zu verwenden. Der HAL-Treiber unterstützt den bidirektionalen Anschluss und ermöglicht es dem Benutzer, die Datengruppe entweder als Eingang oder als Ausgang einzustellen. Ist sie als I<out> konfiguriert, so bietet der Port insgesamt 12 Ausgänge und 5 Eingänge. Wenn sie als I<in> konfiguriert ist, bietet er 4 Ausgänge und 13 Eingänge.

note: type: Plain text
en: In some parallel ports, the control group pins are open collectors, which may also be driven low by an external gate.  On a board with open collector control pins, if configured as I<x>, it provides 8 outputs, and 9 inputs.
de: Bei einigen parallelen Anschlüssen sind die Pins der Steuergruppe offene Kollektoren, die auch durch ein externes Gate auf Low geschaltet werden können.  Auf einer Platine mit Open-Collector-Steuerpins stehen, wenn sie als I<x> konfiguriert ist, 8 Ausgänge und 9 Eingänge zur Verfügung.

note: type: TP
en: B<Note: HAL and Open Collectors>
de: B<Hinweis: HAL und offene Kollektoren>

note: type: Plain text
en: HAL cannot automatically determine if the x mode bidirectional pins are actually open collectors (OC).  If they are not, they cannot be used as inputs, and attempting to drive them LOW from an external source can damage the hardware.
de: HAL kann nicht automatisch feststellen, ob die bidirektionalen x-Modus-Pins tatsächlich offene Kollektoren (OC) sind. Wenn dies nicht der Fall ist, können sie nicht als Eingänge verwendet werden, und der Versuch, sie von einer externen Quelle auf LOW zu setzen, kann die Hardware beschädigen.

note: type: Plain text
en: On some computers, BIOS settings may affect whether x mode can be used. SPP mode is most likely to work.
de: Bei einigen Computern können die BIOS-Einstellungen beeinflussen, ob der x-Modus verwendet werden kann. Am ehesten funktioniert der SPP-Modus.

note: type: Plain text
en: The parport driver can control up to 8 ports (defined by MAX_PORTS in hal_parport.c).  The ports are numbered starting at zero.
de: Der parport-Treiber kann bis zu 8 Ports steuern (definiert durch MAX_PORTS in hal_parport.c). Die Ports werden bei Null beginnend nummeriert.

note: type: TP
en: B<Loading the hal_parport component>
de: B<Laden der hal_parport Komponente>

note: type: Plain text
en: The hal_parport driver is a real time component so it must be loaded into the real time thread with loadrt.  The configuration string describes the parallel ports to be used, and (optionally) their types.  If the configuration string does not describe at least one port, it is an error.
de: Der hal_parport Treiber ist eine Echtzeitkomponente und muss daher mit 'loadrt' in den Echtzeit-Thread geladen werden. Der Konfigurationsstring beschreibt die zu verwendenden parallelen Ports und (optional) deren Typen.  Wenn der Konfigurationsstring nicht mindestens einen Port beschreibt, ist dies ein Fehler.

note: type: TP
en: B<Specifying the Port>
de: B<Festlegen des Ports>

note: type: Plain text
en: Numbers below 16 refer to parallel ports detected by the system.  This is the simplest way to configure the hal_parport driver, and cooperates with the Linux parport_pc driver if it is loaded.  A port of 0 is the first parallel port detected on the system, 1 is the next, and so on.
de: Zahlen unter 16 beziehen sich auf parallele Ports, die vom System erkannt werden.  Dies ist die einfachste Art, den hal_parport-Treiber zu konfigurieren, und arbeitet mit dem Linux-Treiber parport_pc zusammen, falls dieser geladen ist.  Ein Port von 0 ist der erste vom System erkannte parallele Port, 1 ist der nächste, und so weiter.

note: type: TP
en: B<Basic configuration>
de: B<Basiskonfiguration>

note: type: TP
en: B<Using the Port Address>
de: B<Verwenden der Portadresse>

note: type: Plain text
en: Instead, the port address may be specified using the hex notation 0x then the address.
de: Stattdessen kann die Portadresse mit der hexadezimalen Schreibweise 0x und dann die Adresse angegeben werden.

note: type: TP
en: B<Specifying a port Type>
de: B<Angeben eines Porttyps>

note: type: Plain text
en: For each parallel port handled by the hal_parport driver, a type can optionally be specified. The type is one of in, out, epp, or x.
de: Für jede parallele Schnittstelle, die vom hal_parport Treiber behandelt wird, kann optional ein Typ angegeben werden. Der Typ ist einer von in, out, epp oder x.

note: type: Plain text
en: If the type is not specified, the default is out.
de: Wird der Typ nicht angegeben, ist der Standardwert out.

note: type: Plain text
en: A type of epp is the same as out, but the hal_parport driver requests that the port switch into EPP mode.  The hal_parport driver does not use the EPP bus protocol, but on some systems EPP mode changes the electrical characteristics of the port in a way that may make some marginal hardware work better.  The Gecko G540's charge pump is known to require this on some parallel ports.
de: Ein epp-Typ ist derselbe wie out, aber der hal_parport-Treiber fordert den Anschluss auf, in den EPP-Modus zu wechseln.  Der hal_parport-Treiber verwendet nicht das EPP-Busprotokoll, aber auf einigen Systemen ändert der EPP-Modus die elektrischen Eigenschaften des Anschlusses in einer Weise, die einige marginale Hardware besser funktionieren lassen kann.  Es ist bekannt, dass die Ladungspumpe des Gecko G540 dies bei einigen parallelen Anschlüssen erfordert.

note: type: Plain text
en: See the Note above about mode x.
de: Siehe Anmerkung oben zu Modus x.

note: type: TP
en: B<Example with two parallel ports>
de: B<Beispiel mit zwei parallelen Anschlüssen>

note: type: TP
en: B<Functions single port>
de: B<Funktionen mit einem Port>

note: type: Plain text
en: You must also direct LinuxCNC to run the read and write functions.
de: Sie müssen LinuxCNC auch anweisen, die Lese- und Schreibfunktionen auszuführen.

note: type: TP
en: B<Functions multiple ports>
de: B<Funktionen mehrerer Anschlüsse>

note: type: Plain text
en: The individual functions are provided for situations where one port needs to be updated in a very fast thread, but other ports can be updated in a slower thread to save CPU time.  It is probably not a good idea to use both an -all function and an individual function at the same time.
de: Die einzelnen Funktionen sind für Situationen vorgesehen, in denen ein Anschluss in einem sehr schnellen Thread aktualisiert werden muss, während andere Anschlüsse in einem langsameren Thread aktualisiert werden können, um CPU-Zeit zu sparen. Es ist wahrscheinlich keine gute Idee, gleichzeitig eine -all Funktion und eine individuelle Funktion zu verwenden.

note: type: Plain text
en: Parallel Port Driver (Hardware Drivers Section of LinuxCNC Docs), B<PCI>ParallelB<Port>ExampleB<(Hardware>ExamplesB<Section>ofB<LinuxCNC>Docs)
de: Parallel-Port-Treiber (Hardware-Treiber Abschnitt von LinuxCNC Docs), B<PCI>ParallelB<Port>B<(Hardware>BeispieleB<Section>ofB<LinuxCNC>Docs)

note: type: Plain text
en: This man page written by Joe Hildreth as part of the LinuxCNC project.  Most of this information was taken from the parallel-port docs located in the Hardware Drivers section of the documentation.  To the best of my knowledge that documentation was written by Sebastian Kuzminsky and Chris Radek.
de: Diese Manpage wurde von Joe Hildreth als Teil des LinuxCNC-Projekts geschrieben.  Die meisten dieser Informationen wurden aus der parallel-port docs in der Hardware-Treiber-Abschnitt der Dokumentation befindet sich genommen.  Nach meinem besten Wissen wurde diese Dokumentation von Sebastian Kuzminsky und Chris Radek geschrieben.

note: type: Plain text
en: halreport - creates a report on the status of the HAL
de: halreport - erstellt einen Bericht über den Status des HAL

note: type: Plain text
en:  1) supports components made by halcompile and numerous
        legacy components
     2) Known unhandled components:
        at_pid   -- naming conflicts with pid, seldom used
        boss_plc -- no manpage or docs (any users?)
        watchdog -- seldom used (no users in-tree)
     3) deprecated/obsolete components
        counter
        supply
de:  1) unterstützt Komponenten von halcompile und zahlreiche
        Legacy-Komponenten
     2) Bekannte unbehandelte Komponenten:
        at_pid -- Benennungskonflikte mit pid, selten benutzt
        boss_plc -- keine Manpage oder Dokumentation (irgendwelche Benutzer?)
        watchdog -- wird selten benutzt (keine Benutzer im Baum)
     3) veraltete/abgekündigte Komponenten
        Zähler
        Versorgung

note: type: Plain text
en:  Identificaion of functions used according to pin name.
     Default handling works for components that:
     1) use names=|count= (.comp components created with halcompile)
     2) have a *single* function
de:  Identifizierung der verwendeten Funktionen anhand des Pinnamens.
     Die Standardbehandlung funktioniert für Komponenten, die:
     1) names=|count= verwenden (.comp-Komponenten, die mit halcompile erstellt wurden)
     2) eine *einzige* Funktion haben

note: type: Plain text
en: Full docs:
de: Vollständige Dokumentation:

note: type: Plain text
en: B<halrmt> supports six commands of which the commands I<set> and I<get> contain HAL specific sub-commands based on the commands supported by I<halcmd>. Commands and most parameters are not case sensitive. The exceptions are passwords, file paths and text strings.
de: B<halrmt> unterstützt sechs Befehle, von denen die Befehle I<set> und I<get> HAL-spezifische Unterbefehle enthalten, die auf den von I<halcmd> unterstützten Befehlen basieren. Bei den Befehlen und den meisten Parametern wird nicht zwischen Groß- und Kleinschreibung unterschieden. Die Ausnahmen sind Passwörter, Dateipfade und Textstrings.

note: type: Plain text
en: The supported commands are as follows:
de: Die folgenden Befehle werden unterstützt:

note: type: Plain text
en: If a valid password was entered the server will respond with
de: Wenn ein gültiges Passwort eingegeben wurde, antwortet der Server mit

note: type: Plain text
en: The get command includes one of the HAL sub-commands, described below and zero or more additional parameters.
de: Der Befehl get enthält einen der unten beschriebenen HAL-Unterbefehle und null oder mehr zusätzliche Parameter.

note: type: Plain text
en: The set command inclides one of the HAL sub-commands, described below and one or more additional parameters.
de: Der Befehl set umfasst einen der unten beschriebenen HAL-Unterbefehle und einen oder mehrere zusätzliche Parameter.

note: type: Plain text
en: The quit command disconnects the associated socket connection.
de: Der Befehl quit trennt die zugehörige Socket-Verbindung.

note: type: Plain text
en: The shutdown command tells LinuxCNC to shut down before quitting the connection. This command may only be issued if the Hello has been successfully negotiated and the connection has control of the CNC (see enable sub-command below). This command has no parameters.
de: Der Befehl shutdown weist LinuxCNC an, sich vor dem Beenden der Verbindung abzuschalten. Dieser Befehl darf nur dann gegeben werden, wenn die Verbindung erfolgreich ausgehandelt wurde und die Verbindung die Kontrolle über die CNC hat (siehe Unterbefehl enable unten). Dieser Befehl hat keine Parameter.

note: type: Plain text
en:   echo on | off
    With get will return the current echo state, with set, sets the echo
    state. When echo is on, all commands will be echoed upon receipt. This
    state is local to each connection.
de:   echo ein | aus
    Mit get wird der aktuelle Echostatus zurückgegeben, mit set wird der Echostatus
    Zustand. Wenn echo on ist, werden alle Befehle beim Empfang geechot. Dieser
    Zustand ist für jede Verbindung lokal.

note: type: Plain text
en:   verbose on | off
    With get will return the current verbose state, with set, sets the
    verbose state. When in verbose mode is on, all set commands return
    positive acknowledgement in the form SET E<lt>COMMANDE<gt> ACK. In addition,
    text error messages will be issued when in verbose mode. This state
    is local to each connection.
de:   verbose ein | aus
    Mit get wird der aktuelle Verbose-Status zurückgegeben, mit set wird der
    verbose-Status. Wenn der Ausführlichkeitsmodus eingeschaltet ist, geben alle Set-Befehle
    positive Quittung in der Form SET E<lt>COMMANDE<gt> ACK. Darüber hinaus,
    werden im Ausführlichkeitsmodus Textfehlermeldungen ausgegeben. Dieser Zustand
    ist für jede Verbindung lokal.

note: type: Plain text
en:   enable E<lt>pwdE<gt> | off
    With get will return On or Off to indicate whether the current connection
    is enabled to perform control functions. With set and a valid password,
    the current connection is enabled for control functions. "OFF" may not
    be used as a password and disables control functions for this connection.
de:   enable E<lt>pwdE<gt> | off
    Mit get wird On oder Off zurückgegeben, um anzuzeigen, ob die aktuelle Verbindung
    freigegeben ist, um Kontrollfunktionen auszuführen. Mit set und einem gültigen Passwort,
    ist die aktuelle Verbindung für Kontrollfunktionen freigegeben. "OFF" darf nicht
    als Passwort verwendet werden und deaktiviert die Kontrollfunktionen für diese Verbindung.

note: type: Plain text
en:   comm_mode ascii | binary
    With get, will return the current communications mode. With set, will
    set the communications mode to the specified mode. The binary protocol 
    is TBD.
de:   comm_mode ascii | binär
    Mit get wird der aktuelle Kommunikationsmodus zurückgegeben. Mit set, wird der
    setzt den Kommunikationsmodus auf den angegebenen Modus. Das binäre Protokoll 
    ist TBD.

note: type: Plain text
en:   comm_prot E<lt>version noE<gt>
    With get, returns the current protocol version used by the server,
    with set, sets the server to use the specified protocol version,
    provided it is lower than or equal to the highest version number
    supported by the server implementation.
de:   comm_prot E<lt>version noE<gt>
    Gibt mit get die aktuelle Protokollversion zurück, die vom Server verwendet wird,
    mit set wird der Server so eingestellt, dass er die angegebene Protokollversion verwendet,
    vorausgesetzt, sie ist kleiner oder gleich der höchsten Versionsnummer
    die von der Server-Implementierung unterstützt wird.

note: type: Plain text
en: Get only, returns all components beginning with the specified substring.  If no substring is specified then it returns all components.
de: Nur abrufen, gibt alle Komponenten zurück, die mit der angegebenen Teilzeichenfolge beginnen. Wenn keine Teilzeichenfolge angegeben ist, werden alle Komponenten zurückgegeben.

note: type: Plain text
en: Get only, returns all information about all pins beginning with the specified substring. If no substring is specified then it returns all pins.
de: Nur abrufen, gibt alle Informationen zu allen Pins zurück, die mit der angegebenen Teilzeichenfolge beginnen. Wenn keine Teilzeichenfolge angegeben wird, werden alle Pins zurückgegeben.

note: type: Plain text
en: Get only, returns only value information about all pins beginning with the specified substring. If no substring is specified then it returns all pins.
de: Nur abrufen, gibt nur Wertinformationen zu allen Pins zurück, die mit der angegebenen Teilzeichenfolge beginnen. Wenn keine Teilzeichenfolge angegeben wird, werden alle Pins zurückgegeben.

note: type: Plain text
en: Get only, returns all information about all signals beginning with the specified substring. If no substring is specified then it returns all signals.
de: Nur abrufen, gibt alle Informationen zu allen Signalen zurück, die mit der angegebenen Teilzeichenfolge beginnen. Wenn keine Teilzeichenfolge angegeben ist, werden alle Signale zurückgegeben.

note: type: Plain text
en: Get only, returns only value information about all signals beginning with the specified substring. If no substring is specified then it returns all pins.
de: Nur abrufen, gibt nur Wertinformationen zu allen Signalen zurück, die mit der angegebenen Teilzeichenfolge beginnen. Wenn keine Teilzeichenfolge angegeben wird, werden alle Pins zurückgegeben.

note: type: Plain text
en: Get only, returns all information about all parameters beginning with the specified substring. If no substring is specified then it returns all parameters.
de: Nur abrufen, gibt alle Informationen zu allen Parametern zurück, die mit der angegebenen Teilzeichenfolge beginnen. Wenn keine Teilzeichenfolge angegeben wird, werden alle Parameter zurückgegeben.

note: type: Plain text
en: Get only, returns only value information about all parameters beginning with the specified substring. If no substring is specified then it returns all pins parameters.
de: Nur abrufen, gibt nur Wertinformationen zu allen Parametern zurück, die mit der angegebenen Teilzeichenfolge beginnen. Wenn keine Teilzeichenfolge angegeben wird, werden alle Pin-Parameter zurückgegeben.

note: type: Plain text
en: Get only, returns all information about all functions beginning with the specified substring. If no substring is specified then it returns all functions.
de: Nur abrufen, gibt alle Informationen zu allen Funktionen zurück, die mit der angegebenen Teilzeichenfolge beginnen. Wenn keine Teilzeichenfolge angegeben wird, werden alle Funktionen zurückgegeben.

note: type: Plain text
en: Get only, returns the component matching the specified name.
de: Nur abrufen, gibt die Komponente zurück, die dem angegebenen Namen entspricht.

note: type: Plain text
en: Get only, returns the value of the pin matching the specified name.
de: Nur abrufen, gibt den Wert des Pins zurück, der dem angegebenen Namen entspricht.

note: type: Plain text
en: Get only, returns just the value of the signal matching the specified name.
de: Nur abrufen, gibt nur den Wert des Signals zurück, der dem angegebenen Namen entspricht.

note: type: Plain text
en: Get only, returns all information about the parameter matching the specified name.
de: Nur abrufen, gibt alle Informationen über den Parameter zurück, der dem angegebenen Namen entspricht.

note: type: Plain text
en: Get only, returns just the value of the parameter matching the specified name.
de: Nur abrufen, gibt nur den Wert des Parameters zurück, der dem angegebenen Namen entspricht.

note: type: Plain text
en: Set only, loads the real time executable specified by name.
de: Nur festlegen, lädt die namentlich angegebene ausführbare Echtzeitdatei.

note: type: Plain text
en: Set only, unloads the executable specified by name.
de: Nur festlegen (engl. set), entlädt die namentlich angegebene ausführbare Datei.

note: type: Plain text
en: Set only, loads the user executable specified by name.
de: Nur zuweisen (engl. set), lädt die durch den Namen angegebene ausführbare Benutzerdatei.

note: type: Plain text
en: Set only, links the specified pin to the specified signal.
de: Nur zuweisen, verbindet den angegebenen Pin mit dem angegebenen Signal.

note: type: Plain text
en: Set only, links the specified signal to the specified pin.
de: Nur zuweisen, verknüpft das angegebene Signal mit dem angegebenen Pin.

note: type: Plain text
en: Set only, links the pin specified by pin 1 with the pin specified by pin 2.
de: Nur zuweisen, verbindet den durch Pin 1 spezifizierten Pin mit dem durch Pin 2 spezifizierten Pin.

note: type: Plain text
en: Set only, nets the specified net list.
de: Nur zuweisen, vernetzt die angegebene Netzliste.

note: type: Plain text
en: Set only, unlinks the specified pins
de: Nur zuweisen, hebt die Verknüpfung der angegebenen Pins auf

note: type: Plain text
en: Set only, creates the signal specified by name and of type specified by type.
de: Nur zuweisen, erzeugt das durch den Namen angegebene Signal und den Typ, der durch den Typ angegeben wird.

note: type: Plain text
en: Set only, deletes the signal specified by name.
de: Nur zuweisen, löscht das namentlich angegebene Signal.

note: type: Plain text
en: Set only, sets the parameter specified by name to the value specified by value.
de: Nur zuweisen, setzt den durch name angegebenen Parameter auf den durch value angegebenen Wert.

note: type: Plain text
en: Set only, sets the signal specified by name to the value specified by value.
de: Nur zuweisen, setzt das durch name angegebene Signal auf den durch value angegebenen Wert.

note: type: Plain text
en: Set only, adds the function specified by name, to the thread specified by thread, with the optional parameters specified by parameters.
de: Nur zuweisen, fügt die durch name angegebene Funktion dem durch thread angegebenen Thread hinzu, mit den durch parameters angegebenen optionalen Parametern.

note: type: Plain text
en: Set only, deletes the function specified by name.
de: Nur zuweisen, löscht die durch den Namen angegebene Funktion.

note: type: Plain text
en: halrun - manipulate the LinuxCNC HAL from the command line
de: halrun - manipuliert die LinuxCNC HAL von der Kommandozeile aus

note: type: Plain text
en: B<halrun> is a convenience script used to manipulate the HAL (Hardware Abstraction Layer) from the command line.  When invoked, B<halrun>:
de: B<halrun> ist ein praktisches Skript, das verwendet wird, um die HAL (Hardware Abstraction Layer) über die Befehlszeile zu bearbeiten.  Beim Aufruf von B<halrun>:

note: type: Plain text
en:     Sets up the realtime environment.
        Executes a command interpreter (B<halcmd> or B<haltcl>).
        (Optionally) runs an interactive session.
        Tears down the realtime environment.
de:     Richtet die Echtzeitumgebung ein.
        Führt einen Befehlsinterpreter (B<halcmd> oder B<haltcl>) aus.
        Führt (optional) eine interaktive Sitzung aus.
        Baut die Echtzeitumgebung ab.

note: type: Plain text
en:     If no filename is specified, an interactive session is started.
        The session will use B<halcmd>(1) unless -T is specified in
        which case B<haltcl>(1) will be used.
de:     Wenn kein Dateiname angegeben wird, dann wird eine interaktive Sitzung gestartet.
        Die Sitzung verwendet B<halcmd>(1), es sei denn, es wird -T angegeben.
        In diesem Fall wird B<haltcl>(1) verwendet.

note: type: Plain text
en:     If a filename is specified and neither the -I nor the -T option
        is included, the filename will be processed by the command
        interpreter corresponding to the filename extension (B<halcmd>
        or B<haltcl>).  After processing, the realtime environment
        will be torn down.
de:     Wenn ein Dateiname angegeben wird und weder die Option -I noch die Option -T
        enthalten ist, wird der Dateiname von dem Befehlsinterpreter verarbeitet, welcher
        der Dateinamenerweiterung entspricht (B<halcmd>
        oder B<haltcl>).  Nach der Verarbeitung wird die Echtzeitumgebung
        abgebaut.

note: type: Plain text
en:     If a filename is specified and the -I or -T option is included,
        the file is processed by the appropriate command interpreter and
        then an interactive session is started for B<halcmd> or
        B<haltcl> according to the -I or -T option.
de:     Wenn ein Dateiname angegeben wird und die Option -I oder -T enthalten ist,
        wird die Datei von dem entsprechenden Befehlsinterpreter verarbeitet und
        dann wird eine interaktive Sitzung für B<halcmd> oder
        B<haltcl> entsprechend der Option -I oder -T gestartet.

note: type: Plain text
en: When a .hal file is specified, the B<halcmd_opts> are
    passed to B<halcmd>.  See the man page for B<halcmd>(1).
    When a .tcl file is specified, the only valid options are:
        -i E<lt>INI fileE<gt>
        -f E<lt>filename[.tcl|.hal]E<gt>  (alternate means of specifying a file)
de: Wenn eine .hal-Datei angegeben wird, werden die B<halcmd_opts>
    an B<halcmd> übergeben.  Siehe die Manpage für B<halcmd>(1).
    Wenn eine .tcl-Datei angegeben wird, sind die einzigen gültigen Optionen:
        -i E<lt>INI-DateiE<gt>
        -f E<lt>Dateiname[.tcl|.hal]E<gt> (alternative Möglichkeit zur Angabe einer Datei)

note: type: Plain text
en: Run an interactive B<halcmd> session
de: Eine interaktive B<halcmd>-Sitzung starten

note: type: Plain text
en: Run an interactive B<haltcl> session.
de: Starten Sie eine interaktive B<haltcl>-Sitzung.

note: type: Plain text
en: Forcibly cause the realtime environment to exit.  It releases the HAL mutex, requests that all HAL components unload, and stops the realtime system.  B<-U> must be the only commandline argument.
de: Erzwingt das Beenden der Echtzeitumgebung.  Es gibt den HAL-Mutex frei, fordert alle HAL-Komponenten auf, sich zu entladen, und stoppt das Echtzeitsystem.  B<-U> muss das einzige Kommandozeilenargument sein.

note: type: Plain text
en: B<halscope> Software oscilloscope for LinuxCNC/HAL
de: B<halscope> Software-Oszilloskop für LinuxCNC/HAL

note: type: Plain text
en: Digital oscilloscope for viewing real time waveforms of HAL pins and signals
de: Digitales Oszilloskop zur Anzeige von Echtzeit-Wellenformen von HAL-Pins und -Signalen

note: type: Plain text
en: halshow - Show HAL parameters, pins and signals
de: halshow - HAL-Parameter, Pins und Signale anzeigen

note: type: Plain text
en: B<halshow [Options] [watchfile]>
de: B<halshow [Optionen] [watchfile]>

note: type: Plain text
en:            --help    (help)
               --fformat format_string_for_float
               --iformat format_string_for_int
de:            --help (Hilfe)
               --fformat format_string_für_float
               --iformat format_string_für_int

note: type: Plain text
en: For format see E<.UR https://www.tcl.tk/man/tcl8.6.11/TclCmd/format.html> E<.UE>
de: Zum Format siehe E<.UR https://www.tcl.tk/man/tcl8.6.11/TclCmd/format.html> E<.UE>

note: type: Plain text
en: Example: "%.5f" displays a float with 5 digits right of the decimal point
de: Beispiel: "%.5f" zeigt eine Gleitkommazahl mit 5 Stellen rechts vom Dezimalpunkt an

note: type: Plain text
en: B<halshow> creates a GUI interface to view and interact with a running HAL session.  It is documented in the PDF and HTML docs much more completely than is possible in a manpage: E<.UR http://linuxcnc.org/docs/html/hal/halshow.html> E<.UE>
de: B<halshow> erzeugt eine GUI-Schnittstelle, um eine laufende HAL-Sitzung anzuzeigen und mit ihr zu interagieren.  Sie ist in den PDF- und HTML-Dokumenten viel ausführlicher dokumentiert, als es in einer Manpage möglich ist: E<.UR http://linuxcnc.org/docs/html/hal/halshow.html> E<.UE>

note: type: Plain text
en: - Added buttons for pin/parameter/signal manipulation
de: - Zusä#tzliche Buttons für Pin/Parameter/Signalmanipulation

note: type: Plain text
en: - Added menu entries for setting update interval, adding manually
de: - Zusätzliche Menüeinträge zum Einstellen des Aktualisierungsintervalls, manuell hinzugefügt

note: type: Plain text
en: - Added right-click menu for copy, set, unlink pin and remove from view
de: - Rechtsklickmenü zum Kopieren, Setzen, Aufheben der Verknüpfung und Entfernen aus der Ansicht hinzugefügt

note: type: Plain text
en: haltcl - manipulate the LinuxCNC HAL from the command line using a Tcl interpreter.
de: haltcl - manipulieren Sie die LinuxCNC HAL von der Kommandozeile mit einem Tcl-Interpreter.

note: type: Plain text
en: B<haltcl> is used to manipulate the HAL (Hardware Abstraction Layer) from the command line using a Tcl interpreter.  B<haltcl> can optionally read commands from a file (filename), allowing complex HAL configurations to be set up with a single command.
de: B<haltcl> wird verwendet, um den HAL (Hardware Abstraction Layer) von der Kommandozeile aus mit Hilfe eines Tcl-Interpreters zu manipulieren.  B<haltcl> kann optional Befehle aus einer Datei (Dateiname) lesen, so dass komplexe HAL-Konfigurationen mit einem einzigen Befehl eingerichtet werden können.

note: type: Plain text
en: If specified, the INI file is read and used to create Tcl global variable arrays.  An array is created for each SECTION of the INI file with elements for each ITEM in the section.
de: Falls angegeben, wird die INI-Datei gelesen und verwendet, um Tcl-Arrays für globale Variablen zu erstellen.  Für jede SECTION der INI-Datei wird ein Array mit Elementen für jedes ITEM in der Section erstellt.

note: type: Plain text
en:        For example, if the INI file contains:
           [SECTION_A]ITEM_1 =  1
           [SECTION_A]ITEM_2 =  2
           [SECTION_B]ITEM_1 = 10
de:        Wenn die INI-Datei zum Beispiel Folgendes enthält:
           [SECTION_A]ITEM_1 = 1
           [SECTION_A]ITEM_2 = 2
           [SECTION_B]PUNKT_1 = 10

note: type: Plain text
en:        The corresponding Tcl variables are:
           SECTION_A(ITEM_1) =  1
           SECTION_A(ITEM_2) =  2
           SECTION_B(ITEM_1) = 10
de:        Die entsprechenden Tcl-Variablen sind:
           SECTION_A(ITEM_1) = 1
           ABSCHNITT_A(ARTIKEL_2) = 2
           ABSCHNITT_B(PUNKT_1) = 10

note: type: TP
en: B<-ini> I<E<lt>INI fileE<gt>> -- declining usage, use B<-i> I<E<lt>INI fileE<gt>>
de: B<-ini> I<E<lt>INI fDateiE<gt>> -- abgelehnte Nutzung, B<-i> I<E<lt>INI DateiE<gt>> verwenden

note: type: Plain text
en: If specified, the Tcl commands of B<filename> are executed.  If no filename is specified, haltcl opens an interactive session.
de: Falls angegeben, werden die Tcl-Befehle von B<Dateiname> ausgeführt.  Wenn kein Dateiname angegeben wird, öffnet haltcl eine interaktive Sitzung.

note: type: Plain text
en: B<haltcl> includes the commands of a Tcl interpreter augmented with commands for the hal language as described for B<halcmd>(1).  The augmented commands can be listed with the command:
de: B<haltcl> enthält die Befehle eines Tcl-Interpreters, die um Befehle für die Sprache hal erweitert wurden, wie für B<halcmd>(1) beschrieben.  Die erweiterten Befehle können mit dem Befehl aufgelistet werden:

note: type: Plain text
en: Two of the augmented commands, 'list' and 'gets', require special treatment to avoid conflict with Tcl built-in commands having the same names.  To use these commands, precede them with the keyword 'hal':
de: Zwei der erweiterten Befehle, 'list' und 'gets', erfordern eine besondere Behandlung, um Konflikte mit eingebauten Tcl-Befehlen gleichen Namens zu vermeiden.  Um diese Befehle zu verwenden, stellen Sie ihnen das Schlüsselwort 'hal' voran:

note: type: Plain text
en: halui - observe HAL pins and command LinuxCNC through NML
de: halui - beobachten HAL-Pins und Befehl LinuxCNC durch NML

note: type: Plain text
en: B<halui> is used to build a User Interface using hardware knobs and switches. It exports a big number of pins, and acts accordingly when these change.
de: B<halui> wird verwendet, um eine Benutzeroberfläche mit Hardware-Knöpfen und Schaltern zu erstellen. Es exportiert eine große Anzahl von Pins und reagiert entsprechend, wenn sich diese ändern.

note: type: Plain text
en: When run, B<halui> will export a large number of pins. A user can connect those to his physical knobs & switches & leds, and when a change is noticed halui triggers an appropriate event.
de: Wenn es ausgeführt wird, exportiert B<halui> eine große Anzahl von Pins. Ein Benutzer kann diese mit seinen physischen Knöpfen, Schaltern und Leds verbinden, und wenn eine Änderung festgestellt wird, löst Halui ein entsprechendes Ereignis aus.

note: type: Plain text
en: B<halui> expects the signals to be debounced, so if needed (bad knob contact) connect the physical button to a HAL debounce filter first.
de: B<halui> erwartet, dass die Signale entprellt werden, also schließen Sie bei Bedarf (schlechter Knopfkontakt) den physischen Taster zuerst an einen HAL-Entprellfilter an.

note: type: SS
en: abort
de: abbrechen

note: type: Plain text
en: pin for clearing most errors
de: Pin zum Bereinigen der meisten Fehler

note: type: SS
en: tool
de: Werkzeug

note: type: Plain text
en: current applied tool length offset for the A axis
de: aktuell angewandter Werkzeuglängenversatz für die A-Achse

note: type: Plain text
en: current applied tool length offset for the B axis
de: aktuell angewandter Werkzeuglängenversatz für die B-Achse

note: type: Plain text
en: current applied tool length offset for the C axis
de: aktuell angewandter Werkzeuglängenversatz für die C-Achse

note: type: Plain text
en: current applied tool length offset for the U axis
de: aktuell angewandter Werkzeuglängenversatz für die U-Achse

note: type: Plain text
en: current applied tool length offset for the V axis
de: aktuell angewandter Werkzeuglängenversatz für die V-Achse

note: type: Plain text
en: current applied tool length offset for the W axis
de: aktuell angewandter Werkzeuglängenversatz für die W-Achse

note: type: Plain text
en: current applied tool length offset for the X axis
de: aktuell angewandter Werkzeuglängenversatz für die X-Achse

note: type: Plain text
en: current applied tool length offset for the Y axis
de: aktuell angewandter Werkzeuglängenversatz für die Y-Achse

note: type: Plain text
en: current applied tool length offset for the Z axis
de: aktuell angewandter Werkzeuglängenversatz für die Z-Achse

note: type: Plain text
en: Current tool diameter, or 0 if no tool is loaded.
de: Aktueller Werkzeugdurchmesser, oder 0, wenn kein Werkzeug geladen ist.

note: type: Plain text
en: current selected tool
de: aktuell ausgewähltes Werkzeug

note: type: SS
en: spindle
de: Spindel

note: type: Plain text
en: status pin that tells us if brake is on
de: Status-Pin, der uns sagt, ob die Bremse eingeschaltet ist

note: type: Plain text
en: pin for deactivating the spindle brake
de: Pin zum Deaktivieren der Spindelbremse

note: type: Plain text
en: pin for activating the spindle brake
de: Stift zum Aktivieren der Spindelbremse

note: type: Plain text
en: a rising edge on this pin decreases the current spindle speed by 100
de: eine steigende Flanke an diesem Pin verringert die aktuelle Spindeldrehzahl um 100

note: type: Plain text
en: a rising edge on this pin makes the spindle go forward
de: eine steigende Flanke an diesem Stift lässt die Spindel vorwärts laufen

note: type: Plain text
en: a rising edge on this pin increases the current spindle speed by 100
de: eine steigende Flanke an diesem Pin erhöht die aktuelle Spindeldrehzahl um 100

note: type: Plain text
en: status pin telling if the spindle is on
de: Status-Pin, der anzeigt, ob die Spindel eingeschaltet ist

note: type: Plain text
en: a rising edge on this pin makes the spindle go reverse
de: eine steigende Flanke an diesem Pin lässt die Spindel rückwärts laufen

note: type: Plain text
en: status pin telling if the spindle is running backward
de: Status-Pin, der anzeigt, ob die Spindel rückwärts läuft

note: type: Plain text
en: status pin telling if the spindle is running forward
de: Status-Pin, der anzeigt, ob die Spindel vorwärts läuft

note: type: Plain text
en: a rising edge on this pin starts the spindle
de: eine steigende Flanke an diesem Pin startet die Spindel

note: type: Plain text
en: a rising edge on this pin stops the spindle
de: eine steigende Flanke an diesem Pin stoppt die Spindel

note: type: SS
en: spindle override
de: Spindel-Override

note: type: TP
en: (SO = Spindle Override. FO = Feed Override)
de: (SO = Spindel-Neufestsetzung (engl. Override). FO = Vorschub (engl. feed)-Override)

note: type: TP
en: B<halui.spindle.N.override.count-enable> bit in  (default: B<TRUE>)
de: B<halui.spindle.N.override.count-enable> bit in (Standard: B<TRUE>)

note: type: Plain text
en: When TRUE, modify spindle override when counts changes.
de: Wenn TRUE, wird der Spindel-Override geändert, wenn sich die Zählerstände ändern.

note: type: Plain text
en: counts X scale = spindle override percentage
de: counts X scale = Spindel Override Prozentsatz

note: type: Plain text
en: pin for decreasing the SO (-=scale)
de: Pin zum Verringern der SO (-=Skala)

note: type: Plain text
en: pin to enable direct spindle override value input
de: Pin zur Aktivierung der direkten Spindel-Override-Werteingabe

note: type: Plain text
en: pin for increasing the SO (+=scale)
de: Pin zum Erhöhen der SO (+=Skala)

note: type: Plain text
en: pin for resetting the scale SO value (scale=1.0)
de: Pin zum Zurücksetzen der Skala SO (Skala=1.0)

note: type: Plain text
en: pin for setting the scale of counts for SO
de: Pin zum Einstellen der Zählskala für SO

note: type: Plain text
en: current FO value
de: aktueller FO-Wert

note: type: SS
en: program
de: Programm

note: type: Plain text
en: status pin telling that block delete is on
de: Status-Pin, der anzeigt, dass die Blocklöschung aktiviert ist

note: type: Plain text
en: pin for requesting that block delete is off
de: Pin für die Anforderung, dass die Blocklöschung ausgeschaltet ist

note: type: Plain text
en: pin for requesting that block delete is on
de: Pin für die Aufforderung, den Block zu löschen, ist eingeschaltet

note: type: Plain text
en: status pin telling that no program is running
de: Status-Pin, der anzeigt, dass kein Programm läuft

note: type: Plain text
en: status pin telling that a program is paused
de: Status-Pin, der anzeigt, dass ein Programm pausiert ist

note: type: Plain text
en: status pin telling that a program is running
de: Status-Pin, der anzeigt, dass ein Programm läuft

note: type: Plain text
en: status pin telling that the optional stop is on
de: Status-Pin, der anzeigt, dass der optionale Stopp eingeschaltet ist

note: type: Plain text
en: pin requesting that the optional stop is off
de: Pin, der anfordert, dass der optionale Stopp ausgeschaltet ist

note: type: Plain text
en: pin requesting that the optional stop is on
de: Stift, der anfordert, dass der optionale Stopp eingeschaltet ist

note: type: Plain text
en: pin for pausing a program
de: Pin zum Anhalten eines Programms

note: type: Plain text
en: pin for resuming a program
de: Pin zum Fortsetzen eines Programms

note: type: Plain text
en: pin for running a program
de: Pin zum Ausführen eines Programms

note: type: Plain text
en: pin for stepping in a program
de: Pin zum Steppen (Einzelschritte) durch ein Programm

note: type: Plain text
en: pin for stopping a program (note: this pin does the same thing as halui.abort)
de: Pin zum Stoppen eines Programms (Hinweis: dieser Pin hat die gleiche Funktion wie halui.abort)

note: type: SS
en: mode
de: Modus

note: type: Plain text
en: pin for requesting auto mode
de: Pin zum Anfordern des Automodus

note: type: Plain text
en: pin for auto mode is on
de: Pin für Auto-Modus ist eingeschaltet

note: type: Plain text
en: pin showing joint by joint jog mode is on
de: Pin, der anzeigt, dass der Gelenk-Jogging-Modus eingeschaltet ist

note: type: Plain text
en: pin for manual mode is on
de: Pin für manuellen Modus ist eingeschaltet

note: type: Plain text
en: pin for MDI mode is on
de: Pin für MDI-Modus ist eingeschaltet

note: type: Plain text
en: pin showing coordinated jog mode is on
de: Pin, der anzeigt, dass der koordinierte Jogging-Modus eingeschaltet ist

note: type: Plain text
en: pin for requesting joint by joint jog mode
de: Pin für die Abfrage des Joint-by-Joint-Jog-Modus

note: type: Plain text
en: pin for requesting manual mode
de: Pin zur Abfrage des manuellen Modus

note: type: Plain text
en: pin for requesting MDI mode
de: Pin zum Anfordern des MDI-Modus

note: type: Plain text
en: pin for requesting coordinated jog mode
de: PIN zum Anfordern eines koordinierten Jog-Modus

note: type: Plain text
en: B<halui> looks for INI variables named [HALUI]MDI_COMMAND, and exports a pin for each command it finds.  When the pin is driven TRUE, B<halui> runs the specified MDI command.  XX is a two digit number starting at 00.  If no [HALUI]MDI_COMMAND variables are set in the INI file, no halui.mdi-command-XX pins will be exported by halui.
de: B<halui> sucht nach INI-Variablen mit dem Namen [HALUI]MDI_COMMAND und exportiert für jeden gefundenen Befehl einen Pin.  Wenn der Pin auf TRUE gesetzt wird, führt B<halui> den angegebenen MDI-Befehl aus.  XX ist eine zweistellige Zahl, die mit 00 beginnt.  Wenn keine [HALUI]MDI_COMMAND-Variablen in der INI-Datei gesetzt sind, werden keine halui.mdi-command-XX-Pins von halui exportiert.

note: type: SS
en: mist
de: Nebel

note: type: Plain text
en: pin for mist is on
de: Pin für Nebel ist eingeschaltet

note: type: Plain text
en: pin for stopping mist
de: Pin zum Stoppen von Nebel

note: type: Plain text
en: pin for starting mist
de: Pin für Start von Nebel

note: type: SS
en: max-velocity
de: Max-Geschwindigkeit

note: type: TP
en: B<halui.max-velocity.count-enable> bit in  (default: B<TRUE>)
de: B<halui.max-velocity.count-enable> bit in (Standard: B<TRUE>)

note: type: Plain text
en: When True, modify max velocity when halui.max-velocity.counts changes.
de: Wenn True, wird die maximale Geschwindigkeit geändert, wenn sich halui.max-velocity.counts ändert.

note: type: Plain text
en: When .count-enable is True, halui changes the max velocity in response to changes to this pin.  It's usually connected to an MPG encoder on an operator's panel or jog pendant.  When .count-enable is False, halui ignores this pin.
de: Wenn .count-enable True ist, ändert Halui die maximale Geschwindigkeit als Reaktion auf Änderungen an diesem Pin.  Er ist normalerweise mit einem MPG-Encoder auf einem Bedienfeld oder einem Jog-Pendant verbunden.  Wenn .count-enable auf False steht, ignoriert Halui diesen Pin.

note: type: Plain text
en: When this pin is True, halui commands the max velocity directly to (.counts * .scale).  When this pin is False, halui commands the max velocity in a relative way: change max velocity by an amount equal to (change in .counts * .scale).
de: Wenn dieser Pin auf True gesetzt ist, setzt Halui die maximale Geschwindigkeit direkt auf (.counts * .scale).  Wenn dieser Pin auf False steht, wird die maximale Geschwindigkeit relativ gesteuert: Die maximale Geschwindigkeit wird um den Betrag geändert, welcher der Änderung von .counts * .scale entspricht.

note: type: Plain text
en: A positive edge (a False to True transition) on this pin increases the max velocity by the value of the .scale pin.  (Note that halui always responds to this pin, independent of the .count-enable pin.)
de: Eine positive Flanke (ein Übergang von False zu True) an diesem Pin erhöht die maximale Geschwindigkeit um den Wert des .scale-Pins.  (Beachten Sie, dass halui immer auf diesen Pin reagiert, unabhängig vom .count-enable Pin.)

note: type: Plain text
en: A positive edge (a False to True transition) on this pin decreases the max velocity by the value of the .scale pin.  (Note that halui always responds to this pin, independent of the .count-enable pin.)
de: Eine positive Flanke (ein Übergang von False zu True) an diesem Pin verringert die maximale Geschwindigkeit um den Wert des .scale-Pins.  (Beachten Sie, dass halui immer auf diesen Pin reagiert, unabhängig vom .count-enable Pin.)

note: type: Plain text
en: This pin controls the scale of changes to the max velocity.  Each unit change in .counts, and each positive edge on .increase and .decrease, changes the max velocity by .scale.  The units of the .scale pin are machine-units per second.
de: Dieser Pin steuert die Skalierung der Änderungen an der maximalen Geschwindigkeit.  Jede Einheitsänderung in .counts und jede positive Flanke an .increase und .decrease ändert die maximale Geschwindigkeit um .scale.  Die Einheiten des Pins .scale sind Maschineneinheiten pro Sekunde.

note: type: Plain text
en: Current value for maximum velocity, in machine-units per second.
de: Aktueller Wert für die maximale Geschwindigkeit, in Maschineneinheiten pro Sekunde.

note: type: SS
en: machine
de: Maschine

note: type: Plain text
en: pin for machine units-per-mm (inch:1/25.4, mm:1)  according to INI file setting: [TRAJ]LINEAR_UNITS
de: Pin für Maschineneinheiten-pro-mm (inch:1/25.4, mm:1) entsprechend der INI-Datei-Einstellung: [TRAJ]LINEAR_UNITS

note: type: Plain text
en: pin for machine is On/Off
de: Pin für Maschine ist Ein/Aus

note: type: Plain text
en: pin for setting machine Off
de: Pin für Ausschalten der Maschine

note: type: Plain text
en: pin for setting machine On
de: Pin zum Einschalten der Maschine

note: type: SS
en: lube
de: Schmiermittel

note: type: Plain text
en: pin for lube is on
de: Pin für Schmiermittel ist eingeschaltet

note: type: Plain text
en: pin for stopping lube
de: Pin zum Stoppen der Schmierung

note: type: Plain text
en: pin for starting lube
de: Pin zum Starten der Schmierung

note: type: SS
en: joint R<(>NR< = joint number (0 ... num_joints-1))>
de: Gelenk R<(>NR< = Gelenk-Nummer (0 ... anzahl_gelenke-1))>

note: type: Plain text
en: pin for selecting joint I<N>
de: Pin zur Auswahl von Gelenk I<N>

note: type: Plain text
en: status pin that joint I<N> is selected
de: Status-Pin, dass das Gelenk I<N> ausgewählt ist

note: type: Plain text
en: status pin telling that joint I<N> has a fault
de: Status-Pin, der anzeigt, dass das Gelenk I<N> einen Fehler hat

note: type: Plain text
en: pin for homing joint I<N>
de: Pin für Referenzfahrt von Gelenk I<N>

note: type: Plain text
en: status pin telling that joint I<N> is homed
de: Status-Pin, der angibt, dass Gelenk I<N> referenziert ist

note: type: Plain text
en: status pin telling that joint I<N> is on the positive hardware limit
de: Status-Pin, der anzeigt, dass Gelenk I<N> am positiven Hardware-Limit liegt

note: type: Plain text
en: status pin telling that joint I<N> is on the negative hardware limit
de: Status-Pin, der anzeigt, dass sich Gelenk I<N> am negativen Hardware-Limit befindet

note: type: Plain text
en: status pin telling that joint I<N> is on the positive software limit
de: Status-Pin, der anzeigt, dass Gelenk I<N> am positiven Hardware-Limit liegt

note: type: Plain text
en: status pin telling that joint I<N> is on the negative software limit
de: Status-Pin, der anzeigt, dass sich Gelenk I<N> an der negativen Softwaregrenze befindet

note: type: Plain text
en: status pin telling that joint I<N>'s limits are temporarily overridden
de: Status-Pin, der angibt, dass die Grenzen von Gelenk I<N> vorübergehend außer Kraft gesetzt werden

note: type: Plain text
en: pin for unhoming joint I<N>
de: Pin für Unhoming-Gelenk I<N>

note: type: Plain text
en: pin for jogging the joint I<N> using an float value (e.g. joystick).  The value, typically set between 0.0 and \(+-1.0, is used as a jog-speed multiplier.
de: Pin zum Joggen des Gelenks I<N> mit einem Float-Wert (z.B. Joystick).  Der Wert, der normalerweise zwischen 0,0 und ±1,0 festgelegt ist, wird als Jog-Speed-Multiplikator verwendet.

note: type: Plain text
en: pin for setting the jog increment for joint I<N> when using increment-plus/minus
de: Pin zum Einstellen des Jog-Inkrements für Gelenk I<N> bei Verwendung von increment-plus/minus

note: type: Plain text
en: a rising edge will will make joint I<N> jog in the negative direction by the increment amount
de: eine steigende Kante lässt das Gelenk I<N> um den Inkrementbetrag in die negative Richtung joggen

note: type: Plain text
en: a rising edge will will make joint I<N> jog in the positive direction by the increment amount
de: eine steigende Kante lässt das Gelenk I<N> um den Inkrementbetrag in die positive Richtung joggen

note: type: Plain text
en: pin for jogging joint I<N> in negative direction at the halui.joint.jog-speed velocity
de: Pin für Jogging des Gelenks I<N> in negativer Richtung bei der halui.joint.jog-Geschwindigkeitsgeschwindigkeit

note: type: Plain text
en: pin for jogging joint I<N> in positive direction at the halui.joint.jog-speed velocity
de: Stift für das Joggen des Gelenks I<N> in positiver Richtung mit der Geschwindigkeit halui.joint.jog-speed

note: type: Plain text
en: pin for setting the jog increment for the selected joint when using increment-plus/minus
de: Pin zum Einstellen des Jog-Inkrements für das ausgewählte Gelenk bei Verwendung von Inkrement-Plus/Minus

note: type: Plain text
en: a rising edge will will make the selected joint jog in the negative direction by the increment amount
de: eine steigende Flanke bewirkt, dass das ausgewählte Gelenk um den Inkrementbetrag in die negative Richtung wandert

note: type: Plain text
en: a rising edge will will make the selected joint jog in the positive direction by the increment amount
de: eine steigende Flanke bewirkt, dass das ausgewählte Gelenk um den Inkrementbetrag in die positive Richtung wandert

note: type: Plain text
en: pin for jogging the selected joint in negative direction at the halui.joint.jog-speed velocity
de: Pin zum Joggen des ausgewählten Gelenks in negativer Richtung bei der halui.joint.jog-speed Geschwindigkeit

note: type: Plain text
en: pin for jogging the selected joint bit in in positive direction at the halui.joint.jog-speed velocity
de: Pin zum Joggen des ausgewählten Gelenkmeißels in positive Richtung bei der halui.joint.jog-speed Geschwindigkeit

note: type: SS
en: axis (LR< = axis letter (xyzabcuvw)>
de: Achse (LR< = Achsenbuchstabe (xyzabcuvw)>

note: type: Plain text
en: pin for selecting axis by letter
de: Pin zur Auswahl von Achse nach Buchstabe

note: type: Plain text
en: status pin that axis I<L> is selected
de: Status-Pin, dass Achse I<L> ausgewählt ist

note: type: Plain text
en: Commanded axis position in machine coordinates
de: Position der befohlenen Achse in Maschinenkoordinaten

note: type: Plain text
en: Feedback axis position in machine coordinates
de: Rückmeldung der Achsenposition in Maschinenkoordinaten

note: type: Plain text
en: Commanded axis position in relative coordinates
de: Position der befohlenen Achse in relativen Koordinaten

note: type: SS
en: axis jogging R<(>LR< = axis letter (xyzabcuvw)>
de: Achse joggen R<(>LR< = Achsbuchstabe (xyzabcuvw)>

note: type: Plain text
en: pin for setting jog analog deadband (jog analog inputs smaller/slower than this (in absolute value) are ignored)
de: Pin zum Einstellen der Jog-Analog-Totzone (Jog-Analogeingänge, die kleiner/langsamer als dieser (im Absolutwert) sind, werden ignoriert)

note: type: Plain text
en: pin for jogging the axis L using an float value (e.g. joystick).  The value, typically set between 0.0 and \(+-1.0, is used as a jog-speed multiplier.
de: Pin zum Tippen der Achse L mit Hilfe eines float-Wertes (z.B. Joystick).  Der Wert, der typischerweise zwischen 0,0 und \(+-1,0) liegt, wird als Multiplikator für die Tippgeschwindigkeit verwendet.

note: type: Plain text
en: pin for setting the jog increment for axis L when using increment-plus/minus
de: Pin zum Einstellen des Jog-Inkrements für die Achse L bei Verwendung von Inkrement-Plus/Minus

note: type: Plain text
en: a rising edge will will make axis I<L> jog in the negative direction by the increment amount
de: eine steigende Flanke führt dazu, dass die Achse I<L> um den Inkrementbetrag in die negative Richtung wandert

note: type: Plain text
en: a rising edge will will make axis I<L> jog in the positive direction by the increment amount
de: eine steigende Flanke bewirkt, dass die Achse I<L> um den Inkrementbetrag in die positive Richtung wandert

note: type: Plain text
en: pin for jogging axis I<L> in negative direction at the halui.axis.jog-speed velocity
de: Pin für das Joggen der Achse I<L> in negativer Richtung mit der Geschwindigkeit halui.axis.jog-speed

note: type: Plain text
en: pin for jogging axis I<L> in positive direction at the halui.axis.jog-speed velocity
de: Pin zum Joggen der Achse I<L> in positiver Richtung mit der Geschwindigkeit halui.axis.jog-speed

note: type: Plain text
en: selected axis (by index: 0:x 1:y 2:z 3:a 4:b 5:cr 6:u 7:v 8:w)
de: ausgewählte Achse (nach Index: 0:x 1:y 2:z 3:a 4:b 5:cr 6:u 7:v 8:w)

note: type: Plain text
en: pin for setting the jog increment for the selected axis when using increment-plus/minus
de: Pin zum Einstellen des Jog-Inkrement für die ausgewählte Achse bei Verwendung von Inkrement-Plus/Minus

note: type: Plain text
en: a rising edge will will make the selected axis jog in the negative direction by the increment amount
de: eine steigende Flanke bewirkt, dass die gewählte Achse um den Inkrementbetrag in die negative Richtung wandert

note: type: Plain text
en: a rising edge will will make the selected axis jog in the positive direction by the increment amount
de: eine steigende Flanke bewirkt, dass die gewählte Achse um den Inkrementbetrag in die positive Richtung wandert

note: type: Plain text
en: pin for jogging the selected axis in negative direction at the halui.axis.jog-speed velocity
de: Pin zum Tippen der ausgewählten Achse in negativer Richtung mit der Geschwindigkeit halui.axis.jog-speed

note: type: Plain text
en: pin for jogging the selected axis bit in in positive direction at the halui.axis.jog-speed velocity
de: Pin zum Tippen des ausgewählten Achsenbits in positiver Richtung mit der Geschwindigkeit halui.axis.jog-speed

note: type: SS
en: flood
de: Flut

note: type: Plain text
en: pin for flood is on
de: Pin für Flut-Kühlmittel ist an

note: type: Plain text
en: pin for stopping flood
de: Pin zum Stoppen der Flut

note: type: Plain text
en: pin for starting flood
de: Pin zum Starten der Flut

note: type: SS
en: feed override
de: Vorschub überschreiben (engl. override)

note: type: TP
en: B<halui.feed-override.count-enable> bit in  (default: B<TRUE>)
de: B<halui.feed-override.count-enable> bit in (Standard: B<TRUE>)

note: type: Plain text
en: When TRUE, modify feed override when counts changes.
de: Wenn TRUE, wird die Vorschubüberschreibung bei Änderungen der Zählerstände geändert.

note: type: Plain text
en: counts X scale = feed override percentage
de: Zählungen X Skala = Vorschubüberschreitung in Prozent

note: type: Plain text
en: pin for decreasing the FO (-=scale)
de: Pin zum Verringern des FO (-=Skala)

note: type: Plain text
en: pin for increasing the FO (+=scale)
de: Stift zur Erhöhung des FO (+=Skala)

note: type: Plain text
en: pin for resetting the FO (scale=1.0)
de: Pin zum Zurücksetzen des FO (scale=1.0)

note: type: Plain text
en: pin for setting the scale on changing the FO
de: Pin zum Einstellen der Skala beim Wechsel des FO

note: type: Plain text
en: current Feed Override value
de: aktueller Wert für Feed Override

note: type: TP
en: B<halui.rapid-override.count-enable> bit in  (default: B<TRUE>)
de: B<halui.rapid-override.count-enable> bit in (Standard: B<TRUE>)

note: type: Plain text
en: counts X scale = Rapid Override percentage
de: Zählungen X Skala = Prozentsatz für Rapid Override

note: type: Plain text
en: pin for decreasing the Rapid Override (-=scale)
de: Pin zum Verringern der Rapid Override (-=Skalierung)

note: type: Plain text
en: pin to enable direct value Rapid Override input
de: Pin zur Aktivierung des direkten Wertes Rapid Override Eingang

note: type: Plain text
en: pin for increasing the Rapid Override (+=scale)
de: Pin zum Erhöhen der Rapid Override (+=Skalierung)

note: type: Plain text
en: pin for resetting the Rapid Override (scale=1.0)
de: Pin zum Zurücksetzen des Rapid Override (scale=1.0)

note: type: Plain text
en: pin for setting the scale on changing the Rapid Override
de: Pin zum Einstellen der Skala beim Ändern der Rapid Override

note: type: Plain text
en: current Rapid Override value
de: aktueller Rapid-Override-Wert

note: type: SS
en: estop
de: Notaus

note: type: Plain text
en: pin for setting Estop (LinuxCNC internal) On
de: Pin zum Setzen des Notaus (engl. E-stop) (LinuxCNC intern) Ein

note: type: Plain text
en: pin for displaying Estop state (LinuxCNC internal) On/Off
de: Pin für die Anzeige des Notaus-Zustandes (LinuxCNC intern) On/Off

note: type: Plain text
en: pin for resetting Estop (LinuxCNC internal) Off
de: Pin zum Zurücksetzen des Notaus (engl. E-stop) (LinuxCNC intern) Aus

note: type: Plain text
en: pin for requesting home-all (only available when a valid homing sequence is specified)
de: Pin zur Anforderung der Referenzfahrt (nur verfügbar, wenn eine gültige Referenzfahrtsequenz angegeben ist)

note: type: Plain text
en: Written by Alex Joni, as part of the LinuxCNC project. Updated by John Thornton
de: Geschrieben von Alex Joni, als Teil des LinuxCNC Projekts. Aktualisiert von John Thornton

note: type: Plain text
en: hbmgui - Vismach Virtual Machine GUI
de: hbmgui - Vismach Virtuelle Maschine GUI

note: type: Plain text
en: B<hbmgui> is one of the sample B<Vismach> GUIs for LinuxCNC, simulating a Horizontal Boring Machine.
de: B<hbmgui> ist eine der B<Vismach> GUIs für LinuxCNC, die ein Horizontal-Bohrwerk simuliert.

note: type: Plain text
en: B<hexagui> is one of the sample B<Vismach> GUIs for LinuxCNC, simulating a Horizontal Boring Machine.
de: B<hexagui> ist eine der B<Vismach>-GUIs für LinuxCNC, die ein Horizontal-Bohrwerk simuliert.

note: type: Plain text
en: B<hy_vfd> - HAL userspace component for Huanyang VFDs
de: B<hy_vfd> - HAL Userspace Komponente für Huanyang VFDs

note: type: Plain text
en: B<hy_vfd> [OPTIONS]
de: B<hy_vfd> [OPTIONEN]

note: type: Plain text
en: This component connects the Huanyang VFD to the LinuxCNC HAL via a serial (RS-485) connection.
de: Diese Komponente verbindet den Huanyang VFD mit dem LinuxCNC HAL über eine serielle (RS-485) Verbindung.

note: type: Plain text
en: The Huanyang VFD must be configured via the face plate user interface to accept serial communications:
de: Der Huanyang VFD muss über die Benutzeroberfläche konfiguriert werden, um serielle Kommunikation zu akzeptieren:

note: type: Plain text
en: Set register PD001 (source of run commands) to 2 (communication port).
de: Setzen Sie das Register PD001 (Quelle der Fahrbefehle) auf 2 (Kommunikationsanschluss).

note: type: Plain text
en: Set register PD002 (source of operating frequency) to 2 (communication port).
de: Setzen Sie das Register PD002 (Quelle der Betriebsfrequenz) auf 2 (Kommunikationsanschluss).

note: type: Plain text
en: Set register PD004 (Base Frequency) according to motor specs.  This is the rated frequency of the motor from the motor's name plate, in Hz.
de: Stellen Sie das Register PD004 (Basisfrequenz) entsprechend den Motordaten ein.  Dies ist die Nennfrequenz des Motors, die auf dem Typenschild des Motors angegeben ist, in Hz.

note: type: Plain text
en: Set register PD005 (max frequency) according to motor specs.  This is the maximum frequency of the motor's power supply, in Hz.
de: Stellen Sie das Register PD005 (max. Frequenz) entsprechend den Motordaten ein.  Dies ist die maximale Frequenz der Stromversorgung des Motors in Hz.

note: type: Plain text
en: Set register PD011 (min frequency) according to motor specs.  This is the minimum frequency of the motor's power supply, in Hz.
de: Stellen Sie das Register PD011 (Mindestfrequenz) entsprechend den Motordaten ein.  Dies ist die Mindestfrequenz der Stromversorgung des Motors in Hz.

note: type: Plain text
en: Set register PD141 (rated motor voltage) according to motor name plate.  This is the motor's maximum voltage, in Volts.
de: Stellen Sie das Register PD141 (Motornennspannung) entsprechend dem Motortypenschild ein.  Dies ist die maximale Spannung des Motors in Volt.

note: type: Plain text
en: Set register PD142 (rated motor current) according to motor name plate.  This is the motor's maximum current, in Ampere.
de: Stellen Sie das Register PD142 (Motornennstrom) entsprechend dem Motortypenschild ein.  Dies ist der maximale Strom des Motors in Ampere.

note: type: Plain text
en: Set register PD143 (Number of Motor Poles) according to motor name plate.
de: Register PD143 (Anzahl der Motorpole) entsprechend dem Motortypenschild einstellen.

note: type: Plain text
en: Set register PD144 (rated motor revolutions) according to motor name plate.  This is the motor's speed in RPM at 50 Hz.  Note: This is not the motor's max speed (unless the max motor frequency happens to be 50 Hz)!
de: Stellen Sie das Register PD144 (Motornenndrehzahl) entsprechend dem Motortypenschild ein.  Dies ist die Drehzahl des Motors in RPM bei 50 Hz.  Hinweis: Dies ist nicht die maximale Drehzahl des Motors (es sei denn, die maximale Motorfrequenz beträgt 50 Hz)!

note: type: Plain text
en: Set register PD163 (communication address) to 1.  This matches the default in the hy_vfd driver, change this if your setup has special needs.
de: Setzen Sie das Register PD163 (Kommunikationsadresse) auf 1. Dies entspricht der Voreinstellung im hy_vfd-Treiber, ändern Sie dies, wenn Ihr Setup spezielle Anforderungen hat.

note: type: Plain text
en: Set register PD164 (baud rate) to 2 (19200 bps).  This matches the default in the hy_vfd driver, change this if your setup has special needs.
de: Setzen Sie das Register PD164 (Baudrate) auf 2 (19200 bps).  Dies entspricht der Voreinstellung im hy_vfd-Treiber. Ändern Sie dies, wenn Ihre Einrichtung spezielle Anforderungen hat.

note: type: Plain text
en: Set register PD165 (communication data method) to 3 (8n1 RTU).  This matches the default in the hy_vfd driver, change this if your setup has special needs.  Note that the hy_vfd driver only supports RTU communication, not ASCII.
de: Setzen Sie das Register PD165 (Kommunikationsdatenmethode) auf 3 (8n1 RTU).  Dies entspricht der Voreinstellung des hy_vfd-Treibers. Ändern Sie dies, wenn Ihre Einrichtung spezielle Anforderungen hat.  Beachten Sie, dass der hy_vfd-Treiber nur RTU-Kommunikation unterstützt, nicht ASCII.

note: type: Plain text
en: Consult the Huanyang instruction manual for details on using the face plate to program the VFDs registers, and alternative values for the above registers.
de: In der Huanyang-Bedienungsanleitung finden Sie Einzelheiten zur Verwendung der Frontplatte zur Programmierung der VFD-Register und alternative Werte für die oben genannten Register.

note: type: Plain text
en: Access to devices such as /dev/ttyUSB0 is restricted to members of the "dialout" group. If you see error messages such as
de: Der Zugriff auf Geräte wie /dev/ttyUSB0 ist auf Mitglieder der Gruppe "dialout" beschränkt. Wenn Sie Fehlermeldungen erhalten wie

note: type: Plain text
en: Check your groups membership with the command
de: Überprüfen Sie die Mitgliedschaft in Ihren Gruppen mit dem Befehl

note: type: Plain text
en: Then add your user to the dialout group with
de: Dann fügen Sie Ihren Benutzer der Dialout-Gruppe hinzu mit

note: type: Plain text
en: You will need to log out and back in again for this to take effect.
de: Sie müssen sich ab- und wieder anmelden, damit die Änderungen wirksam werden.

note: type: Plain text
en: (default /dev/ttyS0) Set the name of the serial device node to use.
de: (Standard /dev/ttyS0) Legt den Pfad zur Datei-Repräsentation der zu nutzenden seriellen Schnittstelle fest.

note: type: Plain text
en: Turn on debug messages. Note that if there are serial errors, this may become annoying.  Debug mode will cause all serial communication messages to be printed in hex on the terminal.
de: Schalten Sie Debug-Meldungen ein. Beachten Sie, dass dies bei seriellen Fehlern lästig werden kann.  Im Debug-Modus werden alle seriellen Kommunikationsmeldungen in Hexadezimalschrift auf dem Terminal ausgegeben.

note: type: Plain text
en: Print the current value of all registers as soon as the VFD is enabled.
de: Drucken Sie den aktuellen Wert aller Register, sobald der VFD aktiviert ist.

note: type: Plain text
en: (default hy_vfd) Set the name of the HAL module. The HAL comp name will be set to E<lt>stringE<gt>, and all pin and parameter names will begin with E<lt>stringE<gt>.
de: (Standardwert hy_vfd) Setzt den Namen des HAL-Moduls. Der HAL-Comp-Name wird auf E<lt>stringE<gt> gesetzt, und alle Pin- und Parameternamen beginnen mit E<lt>stringE<gt>.

note: type: Plain text
en: (default 8) Set number of data bits to E<lt>nE<gt>, where n must be from 5 to 8 inclusive.  This must match the setting in register PD165 of the Huanyang VFD.
de: (Standard 8) Anzahl der Datenbits auf E<lt>nE<gt> einstellen, wobei n von 5 bis einschließlich 8 sein muss.  Dies muss mit der Einstellung im Register PD165 des Huanyang VFD übereinstimmen.

note: type: Plain text
en: (default odd) Set serial parity to even, odd, or none.  This must match the setting in register PD165 of the Huanyang VFD.
de: (Standardwert odd) Setzt die serielle Parität auf even (engl. für gerade), odd (ungerade) oder none (keine).  Dies muss mit der Einstellung im Register PD165 des Huanyang VFD übereinstimmen.

note: type: Plain text
en: (default 38400) Set baud rate to E<lt>nE<gt>. It is an error if the rate is not one of the following: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.  This must match the setting in register PD164 of the Huanyang VFD.
de: (Standard 38400) Baudrate auf E<lt>nE<gt> einstellen. Es ist ein Fehler, wenn die Rate nicht eine der folgenden ist: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.  Dies muss mit der Einstellung im Register PD164 des Huanyang VFD übereinstimmen.

note: type: Plain text
en: (default 1) Set serial stop bits to 1 or 2.  This must match the setting in register PD165 of the HuanyangVFD.
de: (Standardwert 1) Setzen Sie die seriellen Stoppbits auf 1 oder 2.  Dies muss mit der Einstellung im Register PD165 des HuanyangVFD übereinstimmen.

note: type: Plain text
en: (default 1) Set HYCOMM target (slave) number. This must match the device number you set on the Hyanyang VFD in register PD163.
de: (Voreinstellung 1) Einstellung der HYCOMM-Zielnummer (Slave). Diese muss mit der Gerätenummer übereinstimmen, die Sie am Hyanyang VFD im Register PD163 eingestellt haben.

note: type: Plain text
en: (default: read from VFD) If specified, program register PD005 of the VFD with the specified max frequency of E<lt>nE<gt> Hz (and use the same max frequency in the hy_vfd driver).  If not specified, read the max frequency to use from register PD005 of the VFD.
de: (Standard: vom VFD lesen) Wenn angegeben, wird das Register PD005 des VFD mit der angegebenen Maximalfrequenz von E<lt>nE<gt> Hz programmiert (und die gleiche Maximalfrequenz im hy_vfd-Treiber verwendet).  Wenn nicht angegeben, wird die zu verwendende Maximalfrequenz aus dem Register PD005 des VFD gelesen.

note: type: Plain text
en: (default: read from VFD) If specified, program register PD011 of the VFD with the specified minimum frequency of E<lt>nE<gt> Hz (and use the same minimum frequency in the hy_vfd driver).  If not specified, read the minimum frequency to use from register PD011 of the VFD.
de: (Standard: vom VFD lesen) Wenn angegeben, programmieren Sie das Register PD011 des VFD mit der angegebenen Mindestfrequenz von E<lt>nE<gt> Hz (und verwenden die gleiche Mindestfrequenz im hy_vfd-Treiber).  Falls nicht angegeben, ist die zu verwendende Mindestfrequenz aus dem Register PD011 des VFD zu lesen.

note: type: Plain text
en: (default: read from VFD) If specified, program register PD141 of the VFD with the specified max motor voltage of E<lt>nE<gt> Volts.  If not specified, read the max motor voltage from register PD141 of the VFD.
de: (Standard: vom VFD lesen) Wenn angegeben, programmieren Sie Register PD141 des VFD mit der angegebenen maximalen Motorspannung von E<lt>nE<gt> Volt.  Wenn nicht angegeben, wird die maximale Motorspannung aus dem Register PD141 des VFD gelesen.

note: type: Plain text
en: (default: read from VFD) If specified, program register PD142 of the VFD with the specified max motor current of E<lt>nE<gt> Amps.  If not specified, read the max motor current from register PD142 of the VFD.
de: (Standard: Lesen vom VFD) Wenn angegeben, programmieren Sie Register PD142 des VFD mit dem angegebenen maximalen Motorstrom von E<lt>nE<gt> Ampere.  Wenn nicht angegeben, wird der maximale Motorstrom aus dem Register PD142 des VFD gelesen.

note: type: Plain text
en: (default: compute from value read from VFD P144) This command-line argument is the motor's max speed.  If specified, compute the motor's speed at 50 Hz from this argument and from the motor's max frequency (from the --max-frequency argument or from P011 if --max-frequency is not specified) and program register PD144 of the VFD.  If not specified, read the motor's speed at 50 Hz from register P144 of the VFD, and use that and the max frequency to compute the motor's max speed.
de: (Standard: Berechnung anhand des vom VFD P144 gelesenen Wertes) Dieses Befehlszeilenargument ist die maximale Drehzahl des Motors.  Falls angegeben, wird die Motordrehzahl bei 50 Hz aus diesem Argument und der maximalen Motorfrequenz (aus dem Argument --max-frequency oder aus P011, falls --max-frequency nicht angegeben ist) und dem Programmregister PD144 des VFD berechnet.  Falls nicht angegeben, lesen Sie die Motordrehzahl bei 50 Hz aus dem Register P144 des VFD und verwenden Sie diese und die Maximalfrequenz, um die Höchstdrehzahl des Motors zu berechnen.

note: type: Plain text
en: (default: read value from VFD P143) This command-line argument is the number of poles in the motor.  If specified, this value is sent to the VFD's register PD143.  If not specified, the value is read from PD143 and reported on the corresponding HAL pin.
de: (Standard: Wert aus VFD P143 lesen) Dieses Befehlszeilenargument ist die Anzahl der Pole im Motor.  Falls angegeben, wird dieser Wert an das Register PD143 des VFD gesendet.  Wenn nicht angegeben, wird der Wert aus PD143 gelesen und an den entsprechenden HAL-Pin gemeldet.

note: type: Plain text
en: Set a specific register to a new value. Can be used to set up to 10 registers. Parameters will "stick" (but only after hy_vfd.enable has been set true) so to set more than ten parameters it is possible to repeatedly load the driver with a set of registers to set then enable (setp hy_vfd.enable 1) and unload (unload hy_vfd) the driver at a halrun(1) prompt.  For example:
de: Setzt ein bestimmtes Register auf einen neuen Wert. Kann zum Setzen von bis zu 10 Registern verwendet werden. Um also mehr als zehn Parameter zu setzen, ist es möglich, den Treiber wiederholt mit einer Reihe von Registern zu laden und dann zu aktivieren (setp hy_vfd.enable 1) und zu entladen (unload hy_vfd), wenn eine halrun(1)-Eingabeaufforderung erfolgt.  Zum Beispiel:

note: type: Plain text
en: Will set both ramp1 times to 3 seconds. The values should be scaled according to the manual data. The example above uses values with a resolution of 0.1 seconds, so the numbers are 10x larger than the required value.
de: Setzt beide Rampen1-Zeiten auf 3 Sekunden. Die Werte sollten entsprechend den manuellen Daten skaliert werden. Im obigen Beispiel werden Werte mit einer Auflösung von 0,1 Sekunden verwendet, so dass die Zahlen 10x größer als der erforderliche Wert sind.

note: type: Plain text
en: (bit, in) Enable communication from the hy_vfd driver to the VFD.
de: (bit, in) Freigabe der Kommunikation zwischen dem hy_vfd-Treiber und dem VFD.

note: type: Plain text
en: (float, out) Current spindle speed as reported by Huanyang VFD.
de: (float, out) Aktuelle Spindeldrehzahl, wie vom Huanyang VFD gemeldet.

note: type: Plain text
en: (float, in) Spindle speed error tolerance.  If the actual spindle speed is within .spindle-at-speed-tolerance of the commanded speed, then the .spindle-at-speed pin will go True.  The default .spindle-at-speed-tolerance is 0.02, which means the actual speed must be within 2% of the commanded spindle speed.
de: (float, in) Fehlertoleranz bei der Spindeldrehzahl.  Wenn die tatsächliche Spindeldrehzahl innerhalb der .spindle-at-speed-Toleranz der befohlenen Geschwindigkeit liegt, wird der .spindle-at-speed-Pin auf True gesetzt.  Die Standard-.spindle-at-speed-tolerance ist 0,02, was bedeutet, dass die tatsächliche Geschwindigkeit innerhalb von 2% der angegebenen Spindelgeschwindigkeit liegen muss.

note: type: Plain text
en: (bit, out) True when the current spindle speed is within .spindle-at-speed-tolerance of the commanded speed.
de: (bit, out) Wahr, wenn die aktuelle Spindeldrehzahl innerhalb der .spindle-at-speed-Toleranz der befohlenen Drehzahl liegt.

note: type: Plain text
en: image-to-gcode - converts bitmap images to G-code
de: image-to-gcode - konvertiert Bitmap-Bilder in G-Code

note: type: Plain text
en: B<image-to-gcode> converts a bitmap image to G-code inteerpreting the brightness of each pixel as a Z-height.
de: B<image-to-gcode> konvertiert ein Bitmap-Bild in G-Code und stellt die Helligkeit jedes Pixels als Z-Höhe dar.

note: type: Plain text
en: Detailed docs: http://linuxcnc.org/docs/2.4/html/gui_image-to-gcode.html
de: Ausführliche Dokumente: http://linuxcnc.org/docs/2.4/html/gui_image-to-gcode.html

note: type: Plain text
en: inivar - Query an INI file
de: inivar - Abfragen einer INI-Datei

note: type: Plain text
en: B<inivar> does stuff for LinuxCNC
de: B<inivar> macht Sachen für LinuxCNC

note: type: Plain text
en: Prints to stdout the INI file result of a variable-in-section search, useful for scripts that want to pick things out of INI files.
de: Gibt das Ergebnis einer Variablen-Suche in einer INI-Datei auf stdout aus. Dies ist nützlich für Skripte, die Dinge aus INI-Dateien heraussuchen wollen.

note: type: Plain text
en: syntax: inivar -var E<lt>variableE<gt> {-sec E<lt>sectionE<gt>} {-ini I<E<lt>INI fileE<gt>>}
de: Syntax: inivar -var E<lt>VariableE<gt> {-sec E<lt>AbschnittE<gt>} {-ini I<E<lt>INI DateiE<gt>>}

note: type: Plain text
en: Uses emc.ini as default. E<lt>variableE<gt> needs to be supplied. If E<lt>sectionE<gt> is omitted, first instance of E<lt>variableE<gt> will be looked for in any section. Otherwise only a match of the variable in E<lt>sectionE<gt> will be returned.
de: Verwendet emc.ini als Standard. E<lt>VariableE<gt> muss angegeben werden. Wenn E<lt>sectionE<gt> weggelassen wird, dann wird die erste Instanz von E<lt>variableE<gt> in jedem Abschnitt gesucht. Andernfalls wird nur eine Übereinstimmung mit der Variablen in E<lt>sectionE<gt> zurückgegeben.

note: type: TH
en: HAL Component
de: HAL-Komponente

note: type: Plain text
en: I/O control handles I/O tasks like coolant, toolchange, E-stop and lube.  The signals are turned on and off in userspace with G-code or in the case of E-stop in HAL.
de: Die E/A-Steuerung übernimmt E/A-Aufgaben wie Kühlmittel, Werkzeugwechsel, Notaus (engl. E-stop) und Schmiermittel. Die Signale werden im Userspace mit G-Code ein- und ausgeschaltet oder im Falle des Notaus in HAL.

note: type: Plain text
en: The following pins are created by the userspace IO controller, usually found in $LINUXCNC_HOME/bin/io
de: Die folgenden Pins werden vom User-Space IO-Controller erstellt, der normalerweise in $LINUXCNC_HOME/bin/io zu finden ist

note: type: Plain text
en: iocontrol is a userspace process - if you have strict timing requirements or simply need more I/O, consider using the realtime synchronized I/oO provided by B<motion>(9) instead.
de: iocontrol ist ein Userspace-Prozess - wenn Sie strenge Timing-Anforderungen haben oder einfach mehr E/A benötigen, sollten Sie stattdessen die von B<motion>(9) bereitgestellte echtzeitsynchronisierte E/A verwenden.

note: type: Plain text
en: The INI file is searched for in the directory from which halcmd was run, unless an absolute path is specified.
de: Die INI-Datei wird in dem Verzeichnis gesucht, von dem aus halcmd gestartet wurde, es sei denn, es wird ein absoluter Pfad angegeben.

note: type: Plain text
en: (Bit, Out) TRUE when flood coolant is requested.
de: (Bit, Out) TRUE, wenn Kühlmittelflut angefordert wird.

note: type: Plain text
en: (Bit, Out) TRUE when mist coolant is requested.
de: (Bit, raus) TRUE, wenn Nebelkühlmittel angefordert wird.

note: type: Plain text
en: (Bit, In) Should be driven FALSE when an external E-stop condition exists.
de: (Bit, in) Sollte FALSE sein, wenn eine externe Notaus-Bedingung vorliegt.

note: type: Plain text
en: (Bit, Out) TRUE when lube is requested.  This pin gets driven True when the controller comes out of E-stop, and when the "Lube On" command gets sent to the controller.  It gets driven False when the controller goes into E-stop, and when the "Lube Off" command gets sent to the controller.
de: (Bit, Out) TRUE wenn Schmiermittel angefordert wird. Dieser Pin wird mit TRUE angesteuert, wenn die Steuerung aus dem Not-Aus-Zustand kommt und der Befehl "Lube On" an die Steuerung gesendet wird. Er wird mit FALSE angesteuert, wenn der Regler in den Not-Aus-Zustand geht und wenn der Befehl "Lube Off" an den Regler gesendet wird.

note: type: TP
en: B<iocontrol.0.lube_level >
de: B<iocontrol.0.lube_level>

note: type: Plain text
en: (Bit, In) Should be driven FALSE when lubrication tank is empty.
de: (Bit, In) Sollte auf FALSE gesetzt werden, wenn der Schmierstofftank leer ist.

note: type: Plain text
en: (Bit, Out) TRUE when a tool change is requested.
de: (Bit, Out) TRUE, wenn ein Werkzeugwechsel angefordert wird.

note: type: Plain text
en: (Bit, In) Should be driven TRUE when a tool change is completed.
de: (Bit, In) Sollte auf TRUE gesetzt werden, wenn ein Werkzeugwechsel abgeschlossen ist.

note: type: Plain text
en: (s32, Out) Current tool number.
de: (s32, Out) Aktuelle Werkzeugnummer.

note: type: Plain text
en: (s32, Out) The number of the next tool, from the RS274NGC T-word.
de: (s32, Out) Die Nummer des nächsten Werkzeugs, aus dem RS274NGC T-Wort.

note: type: Plain text
en: (s32, Out) This is the pocket number (location in the tool storage mechanism) of the tool requested by the most recent T-word.
de: (s32, Out) Dies ist die Platznummer (Speicherplatz im Werkzeugspeicher) des Werkzeugs, das durch das letzte T-Wort angefordert wurde.

note: type: Plain text
en: (Bit, Out) TRUE when a TI<n> tool prepare is requested.
de: (Bit, Out) TRUE, wenn eine TI<n>-Werkzeugvorbereitung angefordert wird.

note: type: Plain text
en: (Bit, In) Should be driven TRUE when a tool prepare is completed.
de: (Bit, In) Sollte auf TRUE gesetzt werden, wenn eine Werkzeugvorbereitung abgeschlossen ist.

note: type: Plain text
en: (Bit, Out) FALSE when an internal E-stop condition exists.
de: (Bit, Out) FALSE, wenn eine interne Notaus-Bedingung vorliegt.

note: type: Plain text
en: (Bit, Out) TRUE when the user has requested that E-stop be cleared.
de: (Bit, Out) TRUE, wenn der Benutzer die Freigabe des Notausschalters angefordert hat.

note: type: Plain text
en: (s32, Out) IO's internal array index of the prepped tool requested by the most recent T-word.  0 if no tool is prepped.  On Random toolchanger machines this is the tool's pocket number (ie, the same as the tool-prep-pocket pin), on Non-random toolchanger machines this is a small integer corresponding to the tool's location in the internal representation of the tool table.  This parameter returns to 0 after a successful tool change (M6).
de: (s32, Aus) IOs interner Array-Index des vorbereiteten Tools, das vom neuesten T-Word angefordert wurde.  0, wenn kein Werkzeug vorbereitet ist.  Auf zufälligen Werkzeugwechslern ist dies die Taschennummer des Werkzeugs (dh die gleiche wie der Werkzeugvorbereitungs-Taschenstift), auf Nicht-zufälligen Werkzeugwechslermaschinen ist dies eine kleine ganze Zahl, die der Position des Werkzeugs in der internen Darstellung der Werkzeugtabelle entspricht.  Dieser Parameter kehrt nach einem erfolgreichen Werkzeugwechsel (M6) auf 0 zurück.

note: type: Plain text
en: Report bugs at E<.UR https://github.com/LinuxCNC/linuxcnc/issues> E<.UE>
de: Fehler melden unter E<.UR https://github.com/LinuxCNC/linuxcnc/issues> E<.UE>

note: type: Plain text
en: Derived from a work by Fred Proctor & Will Shackleford.
de: Abgeleitet von einem Werk von Fred Proctor & Will Shackleford.

note: type: Plain text
en: Copyright \(co 2004 the LinuxCNC project.
de: Copyright \(co 2004 das LinuxCNC Projekt.

note: type: Plain text
en: I/O Control V2 (iov2) adds more toolchager support for communication with the toolchanger.
de: I/O Control V2 (iov2) bietet mehr Unterstützung für die Kommunikation mit dem Werkzeugwechsler.

note: type: Plain text
en: Whether B<io> or B<iov2> is used can be chosen in the [EMCIO] section of the INI file.
de: Ob B<io> oder B<iov2> verwendet wird, kann im Abschnitt [EMCIO] der INI-Datei festgelegt werden.

note: type: Plain text
en: See also E<.UR http://linuxcnc.org/docs/html/config/iov2.html> E<.UE>
de: Siehe auch E<.UR http://linuxcnc.org/docs/html/config/iov2.html> E<.UE>

note: type: Plain text
en: iov2 - interacts with HAL or G-code in userspace
de: iov2 - interagiert mit HAL oder G-Code im Userspace

note: type: Plain text
en: I/O control handles I/O tasks like coolant, toolchange, E-stop and lube. The signals are turned on and off in userspace with G-code or in the case of E-stop in HAL.
de: Die E/A-Steuerung übernimmt E/A-Aufgaben wie Kühlmittel, Werkzeugwechsel, Notaus (engl. E-stop) und Schmiermittel. Die Signale werden im Userspace mit G-Code ein- und ausgeschaltet oder im Falle des Notaus in HAL.

note: type: SS
en: Basic pins
de: Grundlegende Pins

note: type: Plain text
en: (Bit, In) Should be driven FALSE when an external estop condition exists.
de: (Bit, in) Sollte FALSE sein, wenn eine externe Notaus-Bedingung vorliegt.

note: type: Plain text
en: (Bit, Out) FALSE when an internal estop condition exists.
de: (Bit, Out) FALSE, wenn eine interne Notaus-Bedingung vorliegt.

note: type: Plain text
en: (Bit, Out) TRUE when the user has requested that estop be cleared.
de: (Bit, Out) TRUE, wenn der Benutzer die Aufhebung der Sperre beantragt hat.

note: type: SS
en: Additional IO v2 pins
de: Zusätzliche IO v2 Pins

note: type: Plain text
en: B<iocontrol.0.emc-abort (BIT,OUT) Signals emc-originated abort to toolchanger.>
de: B<iocontrol.0.emc-abort (BIT,OUT) Signalisiert emc-verursachten Abbruch an Toolchanger.>

note: type: Plain text
en: (BIT,IN) Acknowledge line from toolchanger for previous signal, or jumpered to abort-tool-change if not used in toolchanger.  NB: after signaling an emc-abort, iov2 will block until emc-abort-ack is raised.
de: (Bit, In) Bestätigung vom Werkzeugwechsler für das vorherige Signal, oder gejumpert auf abort-tool-change, wenn nicht im Werkzeugwechsler verwendet. Hinweis: Nach der Signalisierung eines emc-abort blockiert iov2 bis emc-abort-ack ausgelöst wird.

note: type: Plain text
en: (S32,OUT) Convey cause for EMC-originated abort to toolchanger.  Usage: UI informational. Valid during emc-abort True.
de: (S32, Out) Übermittelt die Ursache für den EMC-verursachten Abbruch an den Werkzeugwechsler. Verwendung: UI informational. Gültig während emc-abort TRUE.

note: type: Plain text
en: (BIT,OUT) Asserted at the very beginning of an M6 operation, before any spindle-off, quill-up, or move-to-toolchange-position oeprations are executed.
de: (Bit, Out) wird zu Beginn einer M6-Operation ausgelöst, bevor eine Spindel-Aus-, Quill-Up- oder Move-to-toolchange-Position-Operation ausgeführt wird.

note: type: Plain text
en: (BIT,IN) Acknowledgment line for start-change.
de: (Bit, In) Quittungsleitung (engl. acknowledgement line) für start-change.

note: type: Plain text
en: (BIT,IN) Toolchanger signals fault.  This line is contionuously monitored.  A fault toggles a flag in iocontrol which is reflected in the toolchanger-faulted pin.
de: (Bit, In) Werkzeugwechsler meldet Störung. Diese Leitung wird laufend überwacht. Ein Fehler schaltet ein Flag in iocontrol um, das sich in dem fehlerhaften Pin des Werkzeugwechslers widerspiegelt.

note: type: Plain text
en: (BIT,OUT) Handshake line for above signal.  Will be set by iov2 after above fault line True is recognized and deasserted when toolchanger-fault drops.  Toolchanger is free to interpret the ack; reading the -ack lines assures fault has been received and acted upon.
de: (Bit, Out) Handshake-Leitung für obiges Signal. wird von iov2 gesetzt, nachdem die obige Fehlerleitung TRUE erkannt wurde und deassert, wenn toolchanger-fault fällt. Es steht dem Werkzeugwechsler frei, das Ack zu interpretieren; das Lesen der -ack-Leitungen stellt sicher, dass der Fehler empfangen wurde und darauf reagiert wird.

note: type: Plain text
en: (S32,IN) Convey reason code for toolchanger-originated fault to iov2. Usage
de: (S32,IN) Übermittlung des Grundcodes für den vom Werkzeugwechsler verursachten Fehler an iov2. Verwendung

note: type: Plain text
en: (BIT,OUT) Signals toolchanger-notify line has toggled and toolchanger-reason-code was in the fault range.  Next M6 will abort.
de: (Bit, Out) signalisiert, dass die toolchanger-notify-Leitung umgeschaltet hat und der toolchanger-reason-code im Fehlerbereich lag. Der nächste M6 bricht ab.

note: type: Plain text
en: (BIT,IN) Resets TC fault condition. Deasserts toolchanger-faulted if toolchanger-notify is line False.  Usage: UI - e.g. clear fault condition button.
de: (Bit, In) setzt TC-Fehlerzustand zurück. Setzt toolchanger-faulted zurück, wenn toolchanger-notify auf FALSE steht. Verwendung: UI - z.B. Schaltfläche Fehlerzustand löschen.

note: type: Plain text
en: (S32,OUT) Debugging pin reflecting internal state.
de: (S32,OUT) Debugging-Pin, der den internen Zustand wiedergibt.

note: type: Plain text
en: See E<.UR http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ToolchangerProtocolProposal > E<.UE> for additional information.
de: Siehe E<.UR http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ToolchangerProtocolProposal > E<.UE> für weitere Informationen.

note: type: Plain text
en: Rework & adding v2 protocol support by Michael Haberler.
de: Überarbeitung und Hinzufügen von v2-Protokollunterstützung durch Michael Haberler.

note: type: TH
en: LATENCY-HISTOGRAM
de: LATENZ-HISTOGRAMM

note: type: Plain text
en: latency-histogram - plot a histogram of machine latency
de: latency-histogram - stellt ein Histogramm der Maschinenlatenz dar

note: type: Plain text
en: The latency test is important when configuring a LinuxCNC system.  An adjunct to the standard latency-test latency-histogram plots the distribution of latency. This can be useful to get a feel for how frequent the high latency excursions are.
de: Der Latenztest ist wichtig, wenn ein LinuxCNC-System konfiguriert wird.  Eine Ergänzung zu den Standard-Latenz-Test Latenz-Histogramm Plots die Verteilung der Latenz. Dies kann nützlich sein, um ein Gefühl dafür, wie häufig die hohe Latenz Ausflüge sind zu bekommen.

note: type: Plain text
en: LinuxCNC and HAL should not be running, stop with I<halrun -U>.  Large number of bins and/or small binsizes will slow updates.  For single thread, specify B<--nobase> (and options for servo thread).  Measured latencies outside of the +/- bin range are reported with special end bars.  Use B<--show> to show count for the off-chart [pos|neg] bin
de: LinuxCNC und HAL sollten nicht ausgeführt werden, stoppen Sie mit I<halrun -U>.  Eine große Anzahl von Bins und/oder kleine Binsizes verlangsamen die Aktualisierung.  Für einen einzelnen Thread geben Sie B<--nobase> (und Optionen für den Servo-Thread) an.  Gemessene Latenzen außerhalb des +/- Bin-Bereichs werden mit speziellen Endbalken angezeigt.  Verwenden Sie B<--show>, um die Zählung für den Off-Chart [pos|neg] bin anzuzeigen.

note: type: Plain text
en: More details: \%https://linuxcnc.org/docs/html/install/latency-test.html
de: Weitere Einzelheiten: \%https://linuxcnc.org/docs/html/install/latency-test.html

note: type: Plain text
en: Show options and exit.
de: Optionen anzeigen und beenden.

note: type: Plain text
en: base thread interval, default: 25000, min: 5000
de: Basis-Thread-Intervall, Standardwert: 25000, Mindestwert: 5000

note: type: Plain text
en: servo thread interval, default: 1000000, min: 25000
de: Servo-Thread-Intervall, Standard: 1000000, min: 25000

note: type: Plain text
en: base bin size, default: 100
de: Basis-Bin-Größe, Standard: 100

note: type: Plain text
en: servo bin size, default: 100
de: Servo-Bin-Größe, Voreinstellung: 100

note: type: Plain text
en: base bins, default: 200
de: Basis-Bins, Standard: 200

note: type: Plain text
en: servo bins, default: 200
de: Servo-Bins, Standard: 200

note: type: Plain text
en: additional note, default: ""
de: zusätzlicher Hinweis, Standardwert: ""

note: type: Plain text
en: show count of undisplayed bins
de: Anzahl der nicht angezeigten Bins anzeigen

note: type: Plain text
en: servo thread only
de: nur servo thread

note: type: Plain text
en: progress and debug
de: Fortschritt und Debuggen

note: type: Plain text
en: no GUI, display elapsed, min, max, sdev for each thread
de: kein GUI, Anzeige von elapsed, min, max, sdev für jeden Thread

note: type: Plain text
en: Much more information about LinuxCNC and HAL is available in the LinuxCNC and HAL User Manuals, found at I</usr/share/doc/linuxcnc/>.
de: Viele weitere Informationen über LinuxCNC und HAL finden Sie in den LinuxCNC- und HAL-Benutzerhandbüchern, die Sie unter I</usr/share/doc/linuxcnc/> finden.

note: type: Plain text
en: Report bugs at \%https://github.com/LinuxCNC/linuxcnc/issues
de: Fehler melden unter \%https://github.com/LinuxCNC/linuxcnc/issues

note: type: Plain text
en: latency-plot - another way to view latency numbers
de: Latenzplot - eine weitere Möglichkeit, Latenzzahlen zu betrachten

note: type: Plain text
en: B<latency-plot> makes a strip chart recording for a base and a servo thread. It may be useful to see spikes in latency when other applications are started or used.  Mainly superseded by latency-histogram.
de: B<latency-plot> erstellt ein Streifendiagramm für einen Basis- und einen Servo-Thread. Es kann nützlich sein, um Spitzen in der Latenz zu sehen, wenn andere Anwendungen gestartet oder benutzt werden.  Hauptsächlich ersetzt durch latency-histogram.

note: type: Plain text
en: LinuxCNC and HAL should not be running, stop with I<halrun -U>.
de: LinuxCNC und HAL sollten nicht laufen, stoppen Sie mit I<halrun -U>.

note: type: Plain text
en: base thread interval, default: 25000
de: Basis-Thread-Intervall, Standardwert: 25000

note: type: Plain text
en: servo thread interval, default: 1000000
de: Servo-Thread-Intervall, Standard: 1000000

note: type: Plain text
en: report interval, default: 1000, min: 100, max: 10000
de: Berichtsintervall, Standard: 1000, min: 100, max: 10000

note: type: Plain text
en: actual clock time
de: tatsächliche Uhrzeit

note: type: Plain text
en: latency-test - test the realtime system latency
de: latency-test - testet die Latenz des Systems in Echtzeit

note: type: Plain text
en: B<latency-test> runs a simple latency test http://linuxcnc.org/docs/html/install/latency-test.html
de: B<latency-test> führt einen einfachen Latenztest durch http://linuxcnc.org/docs/html/install/latency-test.html

note: type: Plain text
en: B<latency-test --help> for a description of available options.
de: B<latency-test --help> für eine Beschreibung der verfügbaren Optionen.

note: type: Plain text
en: lineardelta - Vismach Virtual Machine GUI
de: lineardelta - Vismach Virtuelle Maschine GUI

note: type: Plain text
en: B<lineardelta> is one of the sample B<Vismach> GUIs for LinuxCNC, simulating a delta robot with linear actuators
de: B<lineardelta> ist eine der B<Vismach>-GUIs für LinuxCNC, die einen Delta-Roboter mit Linearantrieben simuliert.

note: type: Plain text
en: See the main LinuxCNC documentation for more details.  http://linuxcnc.org/docs/html/gui/vismach.html
de: Siehe die Hauptdokumentation zu LinuxCNC für weitere Details. http://linuxcnc.org/docs/html/gui/vismach.html

note: type: Plain text
en: linuxcnc_info - short description
de: linuxcnc_info - kurze Beschreibung

note: type: Plain text
en: B<linuxcnc_info> supplies information about the LinuxCNC version and system info. It creates a text file and opens it in the default text editor.
de: B<linuxcnc_info> liefert Informationen über die LinuxCNC-Version und Systeminformationen. Es erstellt eine Textdatei und öffnet sie im Standard-Texteditor.

note: type: Plain text
en: It appears to hang until the text editor is closed.
de: Er scheint zu hängen, bis der Texteditor geschlossen wird.

note: type: Plain text
en: linuxcnclcd - LinuxCNC Graphical User Interface for LCD character display
de: linuxcnclcd - LinuxCNC Grafische Benutzeroberfläche für LCD-Zeichenanzeige

note: type: Plain text
en: B<linuxcnclcd> is one of the Graphical User Interfaces (GUI) for LinuxCNC It gets run by the runscript usually. Linuxcnclcd is designed to run on a 4 x 20 LCD character display. It is not clear if it has ever worked.
de: B<linuxcnclcd> ist eine der grafischen Benutzeroberflächen (GUI) für LinuxCNC Es wird durch die Runscript in der Regel ausgeführt. Linuxcnclcd ist entworfen, um auf einem 4 x 20 LCD-Zeichen-Display laufen. Es ist nicht klar, ob es jemals gearbeitet hat.

note: type: Plain text
en: linuxcnc_module_helper - short description
de: linuxcnc_module_helper - kurze Beschreibung

note: type: Plain text
en: B<linuxcnc_module_helper> This module exists to give root access to system hardware for LinuxCNC It is not directly useful to users.
de: B<linuxcnc_module_helper> Dieses Modul existiert, um Root-Zugriff auf die System-Hardware für LinuxCNC zu geben. Es ist nicht direkt nützlich für Benutzer.

note: type: TH
en: May 31, 2011
de: 31. Mai 2011

note: type: Plain text
en: linuxcncrsh - text-mode interface for commanding LinuxCNC over the network
de: linuxcncrsh - Text-Mode-Schnittstelle für die Steuerung von LinuxCNC über das Netzwerk

note: type: Plain text
en: All features of LinuxCNC are available via the B<linuxcncrsh> interface.
de: Alle Funktionen von LinuxCNC sind über die Schnittstelle B<linuxcncrsh> verfügbar.

note: type: Plain text
en: Specify the port for linuxcncrsh to listen on.  Defaults to 5007 if omitted.
de: Spezifizieren Sie den Port, an dem linuxcncrsh lauschen soll.  Der Standardwert ist 5007, falls nicht angegeben.

note: type: Plain text
en: Sets the server name that linuxcncrsh will use to identify itself during handshaking with a new client.  Defaults to EMCNETSVR if omitted.
de: Legt den Servernamen fest, den linuxcncrsh verwendet, um sich beim Handshaking mit einem neuen Client zu identifizieren.  Der Standardwert ist EMCNETSVR, falls nicht angegeben.

note: type: Plain text
en: Specify the connection password to use during handshaking with a new client.  Note that the password is sent in the clear, so it can be read by anyone who can read packets on the network between the server and the client.  Defaults to EMC if omitted.
de: Geben Sie das Verbindungskennwort an, das beim Handshaking mit einem neuen Client verwendet werden soll.  Beachten Sie, dass das Passwort im Klartext gesendet wird und daher von jedem gelesen werden kann, der Pakete im Netzwerk zwischen Server und Client lesen kann.  Der Standardwert ist EMC, wenn er nicht angegeben wird.

note: type: Plain text
en: Specify the password required to enable LinuxCNC via linuxcncrsh.  Note that the password is sent in the clear, so it can be read by anyone who can read packets on the network between the server and the client.  Defaults to EMCTOO if omitted.
de: Geben Sie das Passwort an, das erforderlich ist, um LinuxCNC über linuxcncrsh zu aktivieren.  Beachten Sie, dass das Passwort im Klartext gesendet wird, so dass es von jedem gelesen werden kann, der Pakete im Netzwerk zwischen dem Server und dem Client lesen kann.  Der Standardwert ist EMCTOO, falls nicht angegeben.

note: type: Plain text
en: Specify the maximum number of simultaneous connections.  Defaults to -1 (no limit) if not specified.
de: Geben Sie die maximale Anzahl der gleichzeitigen Verbindungen an.  Der Standardwert ist -1 (kein Limit), wenn nichts angegeben wird.

note: type: Plain text
en: In addition to the options listed above, linuxcncrsh accepts an optional special LINUXCNC_OPTION at the end:
de: Zusätzlich zu den oben aufgeführten Optionen akzeptiert linuxcncrsh eine optionale spezielle LINUXCNC_OPTION am Ende:

note: type: Plain text
en: LinuxCNC INI file to use.  The -ini option B<must> be preceded by two dashes: "--".  Defaults to emc.ini if omitted.
de: LinuxCNC INI-Datei zu verwenden.  Die Option -ini B<muss> mit zwei Bindestrichen vorangestellt werden: "--".  Standardmäßig wird emc.ini verwendet, wenn sie weggelassen wird.

note: type: SH
en: Starting linuxcncrsh
de: Starten von linuxcncrsh

note: type: Plain text
en: To use linuxcncrsh instead of a normal LinuxCNC GUI like AXIS or Touchy, specify it in your INI file like this:
de: Um linuxcncrsh anstelle einer normalen LinuxCNC-GUI wie AXIS oder Touchy zu verwenden, geben Sie es in Ihrer INI-Datei wie folgt an:

note: type: Plain text
en: To use linuxcncrsh in addition to a normal GUI, you can either start it at the end of your HAL file, or run it by hand in a terminal window.
de: Um linuxcncrsh zusätzlich zu einer normalen GUI zu verwenden, können Sie es entweder am Ende Ihrer HAL-Datei starten oder es von Hand in einem Terminalfenster ausführen.

note: type: Plain text
en: To start it from hal, add a line like this to the end of your HAL file:
de: Um es von HAL zu starten, fügen Sie eine Zeile wie diese am Ende Ihrer HAL-Datei ein:

note: type: Plain text
en: To start it from the terminal, run linuxcncrsh manually like this:
de: Um es vom Terminal aus zu starten, führen Sie linuxcncrsh manuell wie folgt aus:

note: type: SH
en: Connecting
de: Verbindend

note: type: Plain text
en: Once LinuxCNC is up and linuxcncrsh is running, you can connect to it using B<telnet> or B<nc> or similar:
de: Sobald LinuxCNC läuft und linuxcncrsh läuft, können Sie sich mit B<telnet> oder B<nc> oder ähnlichem mit ihm verbinden:

note: type: Plain text
en: HOST is the hostname or IP address of the computer running linuxcncrsh, and PORT is the port it's listening on (5007 if you did not give linuxcncrsh the --port option).
de: HOST ist der Hostname oder die IP-Adresse des Computers, auf dem linuxcncrsh läuft, und PORT ist der Port, an dem es lauscht (5007, wenn Sie linuxcncrsh nicht die Option --port gegeben haben).

note: type: SH
en: Network protocol
de: Netzwerk-Protokoll

note: type: Plain text
en: linuxcncrsh accepts TCP connections on the port specified by the --port option, or 5007 if not specified.
de: linuxcncrsh akzeptiert TCP-Verbindungen an dem mit der Option --port angegebenen Port, oder 5007, falls nicht angegeben.

note: type: Plain text
en: The client sends requests, and the linuxcncrsh server returns replies.  Requests consist of a command word followed by optional command-specific parameters.  Requests and most request parameters are case insensitive. The exceptions are passwords, file paths and text strings.
de: Der Client sendet Anfragen, und der linuxcncrsh-Server gibt Antworten zurück.  Anfragen bestehen aus einem Befehlswort, gefolgt von optionalen befehlsspezifischen Parametern.  Bei den Anfragen und den meisten Anfrageparametern wird die Groß- und Kleinschreibung nicht beachtet. Ausnahmen sind Passwörter, Dateipfade und Textstrings.

note: type: Plain text
en: Requests to linuxcncrsh are terminated with line endings, any combination of one or more '\er' and '\en' characters.  Replies from linuxcncrsh are terminated with the sequence '\er\en'.
de: Anfragen an linuxcncrsh werden mit Zeilenenden, einer beliebigen Kombination aus einem oder mehreren '\er' und '\en' Zeichen, abgeschlossen.  Antworten von linuxcncrsh werden mit der Sequenz '\er\en' abgeschlossen.

note: type: Plain text
en: E<lt>passwordE<gt> must match linuxcncrsh's connect password, or "EMC" if no --connectpw was supplied.  The three arguments may not contain whitespace.  If a valid password was entered the server will respond with:
de: E<lt>passwordE<gt> muss mit dem Verbindungspasswort von linuxcncrsh übereinstimmen, oder mit "EMC", wenn kein --connectpw angegeben wurde.  Die drei Argumente dürfen keine Leerzeichen enthalten.  Wenn ein gültiges Passwort eingegeben wurde, antwortet der Server mit:

note: type: Plain text
en: If an invalid password or any other syntax error occurs then the server responds with:
de: Wenn ein ungültiges Passwort oder ein anderer Syntaxfehler auftritt, antwortet der Server mit:

note: type: Plain text
en: The shutdown command tells LinuxCNC to shutdown and disconnect the session. This command may only be issued if the Hello has been successfully negotiated and the connection has control of the CNC (see B<enable> subcommand in the B<LinuxCNC Subcommands> section, below).
de: Der Befehl shutdown weist LinuxCNC an, die Sitzung herunterzufahren und zu trennen. Dieser Befehl darf nur ausgegeben werden, wenn die Verbindung erfolgreich ausgehandelt wurde und die Verbindung die Kontrolle über die CNC hat (siehe Unterbefehl B<enable> im Abschnitt B<LinuxCNC Subcommands>, unten).

note: type: Plain text
en: The help command will return help information in text format over the connection. If no parameters are specified, it will itemize the available commands.  If a command is specified, it will provide usage information for the specified command. Help will respond regardless of whether a "Hello" has been successfully negotiated.
de: Der Befehl help gibt über die Verbindung Hilfeinformationen im Textformat zurück. Werden keine Parameter angegeben, dann werden die verfügbaren Befehle aufgelistet.  Wenn ein Befehl angegeben ist, werden Informationen zur Verwendung des angegebenen Befehls geliefert. Help antwortet unabhängig davon, ob ein "Hello" erfolgreich ausgehandelt wurde.

note: type: SH
en: LinuxCNC Subcommands
de: LinuxCNC Unterbefehle

note: type: Plain text
en: Subcommands for B<get> and B<set> are:
de: Unterbefehle für B<get> und B<set> sind:

note: type: Plain text
en: With get, any on/off parameter is ignored and the current echo state is returned.  With set, sets the echo state as specified.  Echo defaults to on when the connection is first established.  When echo is on, all commands will be echoed upon receipt.  This state is local to each connection.
de: Mit get wird jeder On/Off-Parameter ignoriert und der aktuelle Echo-Status zurückgegeben.  Mit set wird der Echo-Status wie angegeben eingestellt.  Echo ist standardmäßig auf on eingestellt, wenn die Verbindung zum ersten Mal aufgebaut wird.  Wenn Echo eingeschaltet ist, werden alle Befehle beim Empfang geechot.  Dieser Zustand ist für jede Verbindung lokal.

note: type: Plain text
en: With get, any on/off parameter is ignored and the current verbose state is returned.  With set, sets the verbose state as specified.  When verbose mode is on, all set commands return positive acknowledgement in the form SET E<lt>COMMANDE<gt> ACK, and text error messages will be issued (FIXME: I don't know what this means).  The verbose state is local to each connection, and starts out OFF on new connections.
de: Mit get wird jeder On/Off-Parameter ignoriert und der aktuelle Verbose-Status zurückgegeben.  Mit set wird der Ausführlichkeitsstatus wie angegeben gesetzt.  Wenn der ausführliche Modus eingeschaltet ist, geben alle set-Befehle eine positive Bestätigung in der Form SET E<lt>COMMANDE<gt> ACK zurück, und es werden Textfehlermeldungen ausgegeben (FIXME: Ich weiß nicht, was das bedeutet).  Der ausführliche Status ist für jede Verbindung lokal und wird bei neuen Verbindungen zunächst ausgeschaltet.

note: type: Plain text
en: The session's enable state indicates whether the current connection is enabled to perform control functions.  With get, any parameter is ignored, and the current enable state is returned.  With set and a valid password matching linuxcncrsh's --enablepw (EMCTOO if not specified), the current connection is enabled for control functions.  "OFF" may not be used as a password and disables control functions for this connection.
de: Der Freigabezustand der Sitzung gibt an, ob die aktuelle Verbindung zur Ausführung von Kontrollfunktionen freigegeben ist.  Bei get wird jeder Parameter ignoriert und der aktuelle Freigabestatus zurückgegeben.  Mit set und einem gültigen Passwort, das dem --enablepw von linuxcncrsh entspricht (EMCTOO, falls nicht angegeben), wird die aktuelle Verbindung für Kontrollfunktionen freigegeben. "OFF" darf nicht als Passwort verwendet werden und deaktiviert Kontrollfunktionen für diese Verbindung.

note: type: Plain text
en: Unused, ignore for now.
de: Unbenutzt, vorerst ignorieren.

note: type: Plain text
en: With get, any parameter is ignored and the current communications mode is returned.  With set, will set the communications mode to the specified mode.  The ascii mode is the text request/reply mode, the binary protocol is not currently designed or implemented.
de: Mit get werden alle Parameter ignoriert und der aktuelle Kommunikationsmodus wird zurückgegeben.  Mit set wird der Kommunikationsmodus auf den angegebenen Modus gesetzt.  Der ascii-Modus ist der Text-Anfrage/Antwort-Modus, das Binärprotokoll ist derzeit weder entworfen noch implementiert.

note: type: Plain text
en: With get, any parameter is ignored and the current protocol version used by the server is returned.  With set, sets the server to use the specified protocol version, provided it is lower than or equal to the highest version number supported by the server implementation.
de: Bei get wird jeder Parameter ignoriert und die aktuelle, vom Server verwendete Protokollversion zurückgegeben.  Mit set wird der Server so eingestellt, dass er die angegebene Protokollversion verwendet, sofern diese kleiner oder gleich der höchsten von der Serverimplementierung unterstützten Versionsnummer ist.

note: type: Plain text
en: Not currently implemented! With get, returns the string "emc.ini".  Should return the full path and file name of the current configuration inifile.  Setting this does nothing.
de: Derzeit nicht implementiert! Gibt bei get die Zeichenkette "emc.ini" zurück.  Sollte den vollständigen Pfad und Dateinamen der aktuellen Konfigurationsdatei zurückgeben.  Diese Einstellung bewirkt nichts.

note: type: Plain text
en: With get, returns the string "Linux".
de: Mit get wird die Zeichenkette "Linux" zurückgegeben.

note: type: Plain text
en: Not currently implemented, do not use! Should return the string value of E<lt>varE<gt> in section E<lt>sectionE<gt> of the INI file.
de: Derzeit nicht implementiert, nicht verwenden! Sollte den String-Wert von E<lt>varE<gt> in Abschnitt E<lt>sectionE<gt> der INI-Datei zurückgeben.

note: type: Plain text
en: With get, any parameter is ignored and the current integer value of EMC_DEBUG is returned.  Note that the value of EMC_DEBUG returned is the from the UI's ini file, which may be different than emc's ini file.  With set, sends a command to the EMC to set the new debug level, and sets the EMC_DEBUG global here to the same value. This will make the two values the same, since they really ought to be the same.
de: Bei get wird jeder Parameter ignoriert und der aktuelle Integer-Wert von EMC_DEBUG zurückgegeben.  Beachten Sie, dass der zurückgegebene Wert von EMC_DEBUG der aus der Ini-Datei der Benutzeroberfläche ist, die sich von der Ini-Datei von emc unterscheiden kann.  Mit set wird ein Befehl an die EMC gesendet, um den neuen Debug-Level einzustellen, und der globale Wert EMC_DEBUG wird auf denselben Wert gesetzt. Dadurch werden die beiden Werte gleich, da sie eigentlich gleich sein sollten.

note: type: Plain text
en: The set_wait setting controls the wait after receiving a command.  It can be "received" (after the command was sent and received) or "done" (after the command was done).  With get, any parameter is ignored and the current set_wait setting is returned.  With set, set the set_wait setting to the specified value.
de: Die Einstellung set_wait steuert die Wartezeit nach dem Empfang eines Befehls.  Sie kann "received" (nachdem der Befehl gesendet und empfangen wurde) oder "done" (nachdem der Befehl ausgeführt wurde) sein.  Bei get wird jeder Parameter ignoriert und die aktuelle set_wait-Einstellung zurückgegeben.  Mit set wird die set_wait-Einstellung auf den angegebenen Wert gesetzt.

note: type: Plain text
en: With set, force a wait for the previous command to be received, or done.
de: Mit set erzwingen Sie ein Warten auf den Empfang des vorherigen Befehls, oder done.

note: type: Plain text
en: With set, set the timeout for commands to return to E<lt>timeoutE<gt> seconds. Timeout is a real number. If it's E<lt>= 0.0, it means wait forever.  Default is 0.0, wait forever.
de: Mit set setzen Sie die Zeitspanne für die Rückkehr von Befehlen auf E<lt>timeoutE<gt> Sekunden. Timeout ist eine reale Zahl. Wenn es E<lt>= 0.0 ist, bedeutet es, für immer zu warten.  Standard ist 0.0, warte für immer.

note: type: Plain text
en: The update mode controls whether to return fresh or stale values for "get" requests.  When the update mode is "none" it returns stale values, when it's "auto" it returns fresh values.  Defaults to "auto" for new connections.  Set this to "none" if you like to be confused.
de: Der Aktualisierungsmodus steuert, ob bei "get"-Anfragen frische oder veraltete Werte zurückgegeben werden sollen.  Wenn der Aktualisierungsmodus "none" ist, werden veraltete Werte zurückgegeben, wenn er "auto" ist, werden frische Werte zurückgegeben.  Die Voreinstellung für neue Verbindungen ist "auto".  Setzen Sie dies auf "none", wenn Sie verwirrt sein wollen.

note: type: Plain text
en: With get, returns the current error string, or "ok" if no error.
de: Mit get wird der aktuelle Fehlerstring zurückgegeben, oder "ok", wenn kein Fehler vorliegt.

note: type: Plain text
en: With get, returns the current operator display string, or "ok" if none.
de: Gibt mit get den aktuellen Operator-Display-String zurück, oder "ok", wenn es keinen gibt.

note: type: Plain text
en: With get, returns the current operator text string, or "ok" if none.
de: Mit get wird der aktuelle Operatortext zurückgegeben, oder "ok", wenn es keinen gibt.

note: type: Plain text
en: With get, returns the time, in seconds, from the start of the epoch. This starting time depends on the platform.
de: Mit get wird die Zeit in Sekunden seit dem Beginn der Epoche zurückgegeben. Diese Startzeit hängt von der Plattform ab.

note: type: Plain text
en: With get, ignores any parameters and returns the current estop setting as "on" or "off".  With set, sets the estop as specified.  E-stop "on" means the machine is in the estop state and won't run.
de: Mit get werden alle Parameter ignoriert und die aktuelle Notaus-Einstellung als "on" oder "off" zurückgegeben.  Mit set wird der Notaus wie angegeben eingestellt.  Notaus "on" bedeutet, dass sich die Maschine im Notaus-Zustand befindet und nicht läuft.

note: type: Plain text
en: With get, ignores any parameters and returns the current machine power setting as "on" or "off".  With set, sets the machine on or off as specified.
de: Mit get werden alle Parameter ignoriert und die aktuelle Leistungseinstellung der Maschine als "on" oder "off" zurückgegeben.  Mit set wird die Maschine wie angegeben ein- oder ausgeschaltet.

note: type: Plain text
en: With get, ignores any parameters and returns the current machine mode.  With set, sets the machine mode as specified.
de: Mit get werden alle Parameter ignoriert und der aktuelle Maschinenmodus zurückgegeben.  Mit set wird der Maschinenmodus wie angegeben eingestellt.

note: type: Plain text
en: With get, ignores any parameters and returns the current mist coolant setting.  With set, sets the mist setting as specified.
de: Mit get werden alle Parameter ignoriert und die aktuelle Einstellung des Nebelkühlmittels zurückgegeben.  Mit set wird die Nebeleinstellung wie angegeben eingestellt.

note: type: Plain text
en: With get, ignores any parameters and returns the current flood coolant setting.  With set, sets the flood setting as specified.
de: Mit get werden alle Parameter ignoriert und die aktuelle Flutkühlmitteleinstellung zurückgegeben.  Mit set wird die Flutmitteleinstellung wie angegeben eingestellt.

note: type: Plain text
en: With get, ignores any parameters and returns the current lube pump setting.  With set, sets the lube pump setting as specified.
de: Mit get werden alle Parameter ignoriert und die aktuelle Einstellung der Schmiermittelpumpe zurückgegeben.  Mit set wird die Einstellung der Schmiermittelpumpe wie angegeben festgelegt.

note: type: Plain text
en: With get, returns the lubricant level sensor reading as "ok" or "low".  With set, mocks you for wishful thinking.
de: Mit get wird der Messwert des Schmiermittelstandssensors als "ok" oder "niedrig" zurückgegeben.  Mit set werden Sie für Ihr Wunschdenken verspottet.

note: type: Plain text
en: With get, returns "inch", "mm", "cm", or "deg", "rad", "grad", or "custom", for the corresponding native units of the specified joint (or for all joints if none is specified).  The type of the axis (linear or angular) is used to resolve which type of units are returned. The units are obtained heuristically, based on the EMC_AXIS_STAT::units numerical value of user units per mm or deg.  For linear joints, something close to 0.03937 is deemed "inch", 1.000 is "mm", 0.1 is "cm", otherwise it's "custom".  For angular joints, something close to 1.000 is deemed "deg", PI/180 is "rad", 100/90 is "grad", otherwise it's "custom".
de: Mit get wird "inch", "mm", "cm" oder "deg", "rad", "grad" oder "custom" für die entsprechenden nativen Einheiten des angegebenen Gelenks zurückgegeben (oder für alle Gelenke, wenn keines angegeben ist).  Der Typ der Achse (linear oder winklig) wird verwendet, um zu entscheiden, welche Art von Einheiten zurückgegeben wird. Die Einheiten werden heuristisch auf der Grundlage des numerischen Werts EMC_AXIS_STAT::units der Benutzereinheiten pro mm oder Grad ermittelt.  Bei linearen Gelenken gilt etwas nahe 0,03937 als "Zoll", 1,000 als "mm", 0,1 als "cm", ansonsten als "benutzerdefiniert".  Für Winkelgelenke gilt ein Wert nahe 1.000 als "deg", PI/180 ist "rad", 100/90 ist "grad", ansonsten ist es "custom".

note: type: Plain text
en: Synonym for program_linear_units.
de: Synonym für program_linear_units.

note: type: Plain text
en: With get, returns "inch", "mm", "cm", or "none", for the corresponding linear units that are active in the program interpreter.
de: Mit get wird "inch", "mm", "cm" oder "none" für die entsprechenden linearen Einheiten zurückgegeben, die im Programminterpreter aktiv sind.

note: type: Plain text
en: With get, returns "deg", "rad", "grad", or "none" for the corresponding angular units that are active in the program interpreter.
de: Mit get wird "deg", "rad", "grad" oder "none" für die entsprechenden Winkeleinheiten zurückgegeben, die im Programminterpreter aktiv sind.

note: type: Plain text
en: With get, returns "inch", "mm", "cm", or "custom", for the corresponding native user linear units of the LinuxCNC trajectory level. This is obtained heuristically, based on the EMC_TRAJ_STAT::linearUnits numerical value of user units per mm.  Something close to 0.03937 is deemed "inch", 1.000 is "mm", 0.1 is "cm", otherwise it's "custom".
de: Mit get wird "inch", "mm", "cm" oder "custom" für die entsprechenden linearen Einheiten des nativen Benutzers der LinuxCNC-Trajektorienebene zurückgegeben. Dies wird heuristisch ermittelt, basierend auf dem numerischen Wert von EMC_TRAJ_STAT::linearUnits in Benutzereinheiten pro mm. Etwas in der Nähe von 0,03937 gilt als "Zoll", 1,000 ist "mm", 0,1 ist "cm", andernfalls ist es "benutzerdefiniert".

note: type: Plain text
en: Returns "deg", "rad", "grad", or "custom" for the corresponding native user angular units of the LinuxCNC trajectory level. Like with linear units, this is obtained heuristically.
de: Gibt "deg", "rad", "grad" oder "custom" für die entsprechenden nativen Benutzerwinkeleinheiten der LinuxCNC-Trajektorienebene zurück. Wie bei linearen Einheiten wird dies heuristisch ermittelt.

note: type: Plain text
en: With get, returns "inch", "mm", "cm", or "custom", for the linear units that are active in the display.  This is effectively the value of linearUnitConversion.
de: Mit get wird "inch", "mm", "cm" oder "custom" für die linearen Einheiten zurückgegeben, die in der Anzeige aktiv sind.  Dies ist praktisch der Wert von linearUnitConversion.

note: type: Plain text
en: With get, returns "deg", "rad", "grad", or "custom", for the angular units that are active in the display.  This is effectively the value of angularUnitConversion.
de: Mit get wird "deg", "rad", "grad" oder "custom" für die in der Anzeige aktiven Winkeleinheiten zurückgegeben.  Dies ist praktisch der Wert von angularUnitConversion.

note: type: Plain text
en: With get, any parameter is ignored and the active unit conversion is returned.  With set, sets the unit to be displayed.  If it's "auto", the units to be displayed match the program units.
de: Mit get wird jeder Parameter ignoriert und die Umrechnung der aktiven Einheit zurückgegeben.  Mit set legt die anzuzeigende Einheit fest.  Wenn es "auto" ist, stimmen die anzuzeigenden Einheiten mit den Programmeinheiten überein.

note: type: Plain text
en: With get, any parameter is ignored and the active unit conversion is returned.  With set, sets the units to be displayed. If it's "auto", the units to be displayed match the program units.
de: Mit get wird jeder Parameter ignoriert und die Umrechnung der aktiven Einheit zurückgegeben.  Mit set legt die anzuzeigenden Einheiten fest. Wenn es "auto" ist, stimmen die anzuzeigenden Einheiten mit den Programmeinheiten überein.

note: type: Plain text
en: With set, clear the probe tripped flag.
de: Mit set wird die Auslöse-flag der Sonde gelöscht.

note: type: Plain text
en: With get, return the probe state - has the probe tripped since the last clear?
de: Mit get wird der Zustand der Sonde zurückgegeben - hat die Sonde seit dem letzten Löschen ausgelöst?

note: type: Plain text
en: With get, return the current value of the probe signal.
de: Mit get wird der aktuelle Wert des Sondensignals zurückgegeben.

note: type: Plain text
en: With set, move toward a certain location. If the probe is tripped on the way stop motion, record the position and raise the probe tripped flag.
de: Mit set geht es um einen bestimmten Standort. Kommt die Untersuchung auf dem Weg zum Stillstand, nimmt die Position auf und löst die Sonden-flag aus.

note: type: Plain text
en: With get, any parameter is ignored and the current teleop mode is returned.  With set, sets the teleop mode as specified.
de: Mit get wird jeder Parameter ignoriert und der aktuelle Teleop-Modus zurückgegeben.  Mit set wird der Teleop-Modus wie angegeben eingestellt.

note: type: Plain text
en: With get, returns the type of kinematics functions used (identity=1, serial=2, parallel=3, custom=4).
de: Mit get wird der Typ der verwendeten Kinematikfunktionen zurückgegeben (identity=1, serial=2, parallel=3, custom=4).

note: type: Plain text
en: With get, any parameter is ignored and the override_limits setting is returned.  With set, the override_limits parameter is set as specified.  If override_limits is on, disables end of travel hardware limits to allow jogging off of a limit. If parameters is off, then hardware limits are enabled.
de: Bei get wird jeder Parameter ignoriert und die Einstellung override_limits zurückgegeben.  Mit set wird der Parameter override_limits wie angegeben gesetzt.  Wenn override_limits auf on steht, werden die Hardware-Grenzwerte am Ende des Verfahrwegs deaktiviert, um das Überschreiten eines Grenzwerts zu ermöglichen. Wenn parameters off ist, sind die Hardware-Grenzwerte aktiviert.

note: type: Plain text
en: With get, any parameter is ignored and the current "optional stop on M1" setting is returned.  With set, the setting is set as specified.
de: Mit get werden alle Parameter ignoriert und die aktuelle Einstellung "optionaler Stopp auf M1" zurückgegeben.  Mit set wird die Einstellung wie angegeben festgelegt.

note: type: SH
en: Example Session
de: Beispielsitzung

note: type: Plain text
en: This section shows an example session to the local machine (B<localhost>).  Bold items are typed by you, non-bold is machine output.  Default values are shown for --port PORT_NUMBER (B<5007>), --conectpw PASSWORD (B<EMC>), and --enablepw PASSWORD (B<EMCTOO>).
de: Dieser Abschnitt zeigt eine Beispielsitzung auf dem lokalen Rechner (B<localhost>).  Fett gedruckte Elemente werden von Ihnen eingegeben, nicht fett gedruckte sind die Ausgaben des Rechners.  Standardwerte werden für --port PORT_NUMBER (B<5007>), --conectpw PASSWORD (B<EMC>) und --enablepw PASSWORD (B<EMCTOO>) angezeigt.

note: type: Plain text
en: The user connects to linuxcncrsh, handshakes with the server (hello), enables machine commanding from this session (set enable), brings the machine out of E-stop (set estop off) and turns it on (set machine on), homes all the axes, switches the machine to mdi mode, sends an MDI G-code command, then disconnects and shuts down LinuxCNC.
de: Der Benutzer verbindet sich mit linuxcncrsh, führt ein Handshake mit dem Server durch (hallo), ermöglicht die Maschine Befehle aus dieser Sitzung (set enable), bringt die Maschine aus Notaus (engl. E-stop, durch set estop off) und schaltet sie ein (set machine on), fürht Referenzfahrten aller Achsen durch, schaltet die Maschine in den MDI Modus, sendet einen MDI G-Code-Befehl, dann wird die Verbindung getrennt und LinuxCNC heruntergefahren.

note: type: Plain text
en: Available commands:
      Hello E<lt>passwordE<gt> E<lt>client nameE<gt> E<lt>protocol versionE<gt>
      Get E<lt>emc commandE<gt>
      Set E<lt>emc commandE<gt>
      Shutdown
      Help E<lt>commandE<gt>
de: Verfügbare Befehle:
      Hello E<lt>passwordE<gt> E<lt>client nameE<gt> E<lt>protocol versionE<gt>
      Get E<lt>emc commandE<gt>
      Set E<lt>emc commandE<gt>
      Shutdown
      Help E<lt>commandE<gt>

note: type: Plain text
en: Usage:
    Get E<lt>emc commandE<gt>
      Get commands require that a hello has been successfully negotiated.
      Emc command may be one of:
        Abs_act_pos
        Abs_cmd_pos
de: Verwendung:
    Get E<lt>emc commandE<gt>
      Get-Befehle setzen voraus, dass ein "Hallo" erfolgreich ausgehandelt worden ist.
      Der Befehl Emc kann einer der folgenden sein:
        Abs_act_pos
        Abs_cmd_pos

note: type: Plain text
en: Connection closed by foreign host.
de: Verbindung durch fremden Host geschlossen.

note: type: Plain text
en: linuxcncsvr - Allows network access to LinuxCNC internals via NML
de: linuxcncsvr - Ermöglicht den Netzwerkzugriff auf LinuxCNC Interna über NML

note: type: Plain text
en: B<linuxcnctop> displays much of the LinuxCNC state in a live format similar to the Linux "top" command.
de: B<linuxcnctop> zeigt einen Großteil des LinuxCNC-Status in einem Live-Format an, ähnlich wie der Linux-Befehl "top".

note: type: Plain text
en: It is more fully documented in the AXIS GUI documentation but can be run standalone or with other GUIs.  http://linuxcnc.org/docs/html/gui/axis.html
de: Es ist in der AXIS-GUI-Dokumentation ausführlicher dokumentiert, kann aber eigenständig oder mit anderen GUIs ausgeführt werden. http://linuxcnc.org/docs/html/gui/axis.html

note: type: Plain text
en: linuxcnc_var - retrieves LinuxCNC variables
de: linuxcnc_var - ruft LinuxCNC-Variablen ab

note: type: Plain text
en: Option 'all' returns varname=value for all supported varnames
de: Die Option 'all' liefert varname=value für alle unterstützten varnames

note: type: Plain text
en: Varnames supported:
        LINUXCNCVERSION
        LINUXCNC_AUX_GLADEVCP
        LINUXCNC_AUX_EXAMPLES
        REALTIME
        RTS
        HALLIB_DIR
de: Unterstützte Varnamen:
        LINUXCNCVERSION
        LINUXCNC_AUX_GLADEVCP
        LINUXCNC_AUX_EXAMPLES
        REALTIME
        RTS
        HALLIB_DIR

note: type: Plain text
en: B<maho600gui> is one of the sample B<Vismach> GUIs for LinuxCNC, simulating a Maho 600 CNC Milling Machine.
de: B<maho600gui> ist eine der B<Vismach> GUIs für LinuxCNC, die eine Maho 600 CNC-Fräsmaschine simuliert.

note: type: Plain text
en: B<max5gui> is one of the sample B<Vismach> GUIs for LinuxCNC, simulating a 5 axis CNC Milling Machine.
de: B<max5gui> ist eine der Beispiel-B<Vismach>-GUIs für LinuxCNC, die eine 5-Achsen-CNC-Fräsmaschine simuliert.

note: type: TH
en: Modbus to HAL
de: Modbus zu HAL

note: type: Plain text
en: B<mb2hal> - HAL userspace component for Modbus
de: B<mb2hal> - HAL-Benutzerspace-Komponente für Modbus

note: type: TP
en: Default component name:
de: Standard-Komponentenname:

note: type: TP
en: Custom component name:
de: Benutzerdefinierter Komponentenname:

note: type: Plain text
en: MB2HAL is a generic userspace HAL component to communicate with one or more Modbus devices. It supoorts Modbus RTU and Modbus TCP.
de: MB2HAL ist eine generische Userspace-HAL-Komponente zur Kommunikation mit einem oder mehreren Modbus-Geräten. Sie unterstützt Modbus RTU und Modbus TCP.

note: type: Plain text
en: See E<.UR http://linuxcnc.org/docs/html/drivers/mb2hal.html > E<.UE> for more information.
de: Siehe E<.UR http://linuxcnc.org/docs/html/drivers/mb2hal.html > E<.UE> für weitere Informationen.

note: type: Plain text
en:  NELEMENTS needs to be 1 or PIN_NAMES must contain just one name.
de:  NELEMENTS muss 1 sein oder PIN_NAMES darf nur einen Namen enthalten.

note: type: Plain text
en: NELEMENTS needs to be 1 or PIN_NAMES must contain just one name.  Both pin values are added and limited to 65535 (UINT16_MAX). Use one and let the other open (read as 0).
de: NELEMENTS muss 1 sein oder PIN_NAMES darf nur einen Namen enthalten.  Beide Pin-Werte werden hinzugefügt und auf 65535 (UINT16_MAX) begrenzt. Verwenden Sie einen und lassen Sie den anderen öffnen (lesen Sie als 0).

note: type: SS
en: Each transaction
de: Jede Transaktion

note: type: Plain text
en: Error counter
de: Fehlerzähler

note: type: Plain text
en: m = HAL_TX_NAME or transaction number if not set, n = element number (NELEMENTS)
de: m = HAL_TX_NAME oder Transaktionsnummer, falls nicht festgelegt, n = Elementnummer (NELEMENTS)

note: type: Plain text
en: mdi - Send G-code commands from the terminal to the running LinuxCNC instance
de: mdi - Sendet G-Code-Befehle vom Terminal an die laufende LinuxCNC-Instanz

note: type: Plain text
en: B<mdi> sends G-code commands to LinuxCNC.  The command starts an envirmonemt in which G-code commands are sent to the interpreter and machine feedback is displayed.
de: B<mdi> sendet G-Code Befehle an LinuxCNC.  Der Befehl startet eine Umgebung, in der G-Code-Befehle an den Interpreter gesendet werden und eine Maschinenrückmeldung angezeigt wird.

note: type: Plain text
en:  send a single command and exit
     mdi m2 s1400
de:  einen einzigen Befehl senden und beenden
     mdi m2 s1400

note: type: Plain text
en:  interactive session
     $mdi
     MDIE<gt> m3 s1000
     MDIE<gt> G0 X100
     MDIE<gt> ^Z
     $stopped
de:  interaktive Sitzung
     $mdi
     MDIE<gt> m3 s1000
     MDIE<gt> G0 X100
     MDIE<gt> ^Z
     $stopped

note: type: TH
en: September 30, 2014
de: 30. September 2014

note: type: Plain text
en: B<milltask> - Userspace task controller for LinuxCNC
de: B<milltask> - Userspace-Task-Controller für LinuxCNC

note: type: Plain text
en: B<milltask> is an internal process of LinuxCNC.  It is generally not invoked directly but by an INI file setting: B<[TASK]TASK=milltask>.  The B<milltask> process creates the B<ini.*> HAL pins listed below and owned by the B<inihal> user component.  These pins may be modified while LinuxCnC is running to alter values that are typically specified in an INI file.
de: B<milltask> ist ein interner Prozess von LinuxCNC.  Er wird in der Regel nicht direkt aufgerufen, sondern durch eine INI-Datei-Einstellung: B<[TASK]TASK=milltask>.  Der Prozess B<milltask> erzeugt die unten aufgeführten HAL-Pins B<ini.*>, die der Benutzerkomponente B<inihal> gehören.  Diese Pins können während der Ausführung von LinuxCNC geändert werden, um Werte zu ändern, die normalerweise in einer INI-Datei angegeben werden.

note: type: Plain text
en: The B<inihal> pins are sampled in every task cycle, however, commands affected by their values typically use the value present at the time when the command is processed.  Such commands include all codes handled by the interpreter (B<G-code> programs and B<MDI> commands) and NML B<jogging> commands issued by a GUI (including B<halui>).  B<Wheel jogging> is implemented in the realtime motion module so B<inihal> pin changes (e.g., ini.*.max_velocity, ini.*.max_acceleration) may be honored as soon as altered values are propagated to the motion module.
de: Die B<inihal>-Pins werden in jedem Task-Zyklus abgetastet, aber Befehle, die von ihren Werten betroffen sind, verwenden normalerweise den Wert, der zum Zeitpunkt der Verarbeitung des Befehls vorliegt.  Zu diesen Befehlen gehören alle Codes, die vom Interpreter verarbeitet werden (B<G-code>-Programme und B<MDI>-Befehle), sowie NML-B<Jogging>-Befehle, die von einer grafischen Benutzeroberfläche ausgegeben werden (einschließlich B<halui>).  B<Wheel jogging> ist im Echtzeit-Bewegungsmodul implementiert, so dass B<inihal>-Pin-Änderungen (z. B. ini.*.max_velocity, ini.*.max_acceleration) beachtet werden können, sobald die geänderten Werte an das Bewegungsmodul weitergegeben werden.

note: type: Plain text
en: Allows adjustment of B<[JOINT_>I<N>B<]BACKLASH>
de: Ermöglicht die Anpassung von B<[JOINT_>I<N>B<]BACKLASH>

note: type: Plain text
en: Allows adjustment of B<[JOINT_>I<N>B<]FERROR>
de: Ermöglicht die Anpassung von B<[JOINT_>I<N>B<]FERROR>

note: type: Plain text
en: Allows adjustment of B<[JOINT_>I<N>B<]MIN_FERROR>
de: Ermöglicht die Einstellung von B<[JOINT_>I<N>B<]MIN_FERROR>

note: type: Plain text
en: Allows adjustment of B<[JOINT_>I<N>B<]MIN_LIMIT>
de: Ermöglicht die Anpassung von B<[JOINT_>I<N>B<]MIN_LIMIT>

note: type: Plain text
en: Allows adjustment of B<[JOINT_>I<N>B<]MAX_LIMIT>
de: Ermöglicht die Anpassung von B<[JOINT_>I<N>B<]MAX_LIMIT>

note: type: Plain text
en: Allows adjustment of B<[JOINT_>I<N>B<]MAX_VELOCITY>
de: Ermöglicht die Anpassung von B<[JOINT_>I<N>B<]MAX_VELOCITY>

note: type: Plain text
en: Allows adjustment of B<[JOINT_>I<N>B<]MAX_ACCELERATION>
de: Ermöglicht die Einstellung von B<[JOINT_>I<N>B<]MAX_ACCELERATION>

note: type: Plain text
en: Allows adjustment of B<[JOINT_>I<N>B<]HOME>
de: Ermöglicht die Einstellung von B<[JOINT_>I<N>B<]HOME>

note: type: Plain text
en: Allows adjustment of B<[JOINT_>I<N>B<]HOME_OFFSET>
de: Ermöglicht die Einstellung von B<[JOINT_>I<N>B<]HOME_OFFSET>

note: type: Plain text
en: Allows adjustment of B<[JOINT_>I<N>B<]HOME_SEQUENCE>
de: Ermöglicht die Anpassung von B<[JOINT_>I<N>B<]HOME_SEQUENCE>

note: type: SS
en: Per-axis pins (L == axis letter)
de: Pins pro Achse (L == Achsenbuchstabe)

note: type: Plain text
en: Allows adjustment of B<[AXIS_>I<L>B<]MIN_LIMIT>
de: Ermöglicht die Einstellung von B<[AXIS_>I<L>B<]MIN_LIMIT>

note: type: Plain text
en: Allows adjustment of B<[AXIS_>I<L>B<]MAX_LIMIT>
de: Ermöglicht die Einstellung von B<[AXIS_>I<L>B<]MAX_LIMIT>

note: type: Plain text
en: Allows adjustment of B<[AXIS_>I<L>B<]MAX_VELOCITY>
de: Ermöglicht die Einstellung von B<[AXIS_>I<L>B<]MAX_VELOCITY>.

note: type: Plain text
en: Allows adjustment of B<[AXIS_>I<L>B<]MAX_ACCELERATION>
de: Ermöglicht die Einstellung von B<[AXIS_>I<L>B<]MAX_ACCELERATION>

note: type: SS
en: Global pins
de: Globale Pins

note: type: Plain text
en: Allows adjustment of B<[TRAJ]DEFAULT_ACCELERATION>
de: Ermöglicht die Einstellung von B<[TRAJ]DEFAULT_ACCELERATION>.

note: type: Plain text
en: Allows adjustment of B<[TRAJ]DEFAULT_VELOCITY>
de: Ermöglicht die Einstellung von B<[TRAJ]DEFAULT_VELOCITY>.

note: type: Plain text
en: Allows adjustment of B<[TRAJ]MAX_ACCELERATION>
de: Ermöglicht die Einstellung von B<[TRAJ]MAX_ACCELERATION>.

note: type: Plain text
en: Allows adjustment of B<[TRAJ]MAX_VELOCITY>
de: Ermöglicht die Anpassung von B<[TRAJ]MAX_VELOCITY>.

note: type: SS
en: Global pins (arc_blend trajectory planner)
de: Globale Pins (arc_blend Trajektorienplaner)

note: type: Plain text
en: Allows adjustment of B<[TRAJ]ARC_BLEND_ENABLE>
de: Ermöglicht die Anpassung von B<[TRAJ]ARC_BLEND_ENABLE>

note: type: Plain text
en: Allows adjustment of B<[TRAJ]ARC_BLEND_FALLBACK_ENABLE>
de: Ermöglicht die Einstellung von B<[TRAJ]ARC_BLEND_FALLBACK_ENABLE>

note: type: Plain text
en: Allows adjustment of B<[TRAJ]ARC_OPTIMIZATION_DEPTH>
de: Ermöglicht die Anpassung von B<[TRAJ]ARC_OPTIMIZATION_DEPTH>

note: type: Plain text
en: Allows adjustment of B<[TRAJ]ARC_BLEND_GAP_CYCLES>
de: Ermöglicht die Anpassung von B<[TRAJ]ARC_BLEND_GAP_CYCLES>

note: type: Plain text
en: Allows adjustment of B<[TRAJ]ARC_BLEND_RAMP_FREQ>
de: Ermöglicht die Anpassung von B<[TRAJ]ARC_BLEND_RAMP_FREQ>

note: type: Plain text
en: The B<inihal> pins cannot be linked or set in a HAL file that is specified by an INI file B<[HAL]HALFILE> item because they are not created until B<milltask> is started.  The B<inihal> pin values can be altered by independent halcmd programs specified by B<[APPLICATION]APP> items or by GUIs that support a B<[HAL]POSTGUI_HALFILE>.
de: Die B<inihal>-Pins können nicht in ein B<[HAL]HALFILE>-Element einer HAL-Datei verknüpft oder gesetzt werden, die wiederum durch eine INI-Datei festgelegt wurde, da sie erst beim Start von B<milltask> erstellt werden.  Die Werte der B<inihal>-Pins können von unabhängigen halcmd-Programmen, die durch B<[APPLICATION]APP>-Elemente spezifiziert sind, oder von GUIs, die ein B<[HAL]POSTGUI_HALFILE> unterstützen, geändert werden.

note: type: Plain text
en: The INI file is not automatically updated with values altered by B<inihal> pin settings but can be updated using the calibration program (emccalib.tcl) when using a B<[HAL]POSTGUI_HALFILE>.
de: Die INI-Datei wird nicht automatisch mit den durch B<inihal>-Pin-Einstellungen geänderten Werten aktualisiert, sondern kann mit dem Kalibrierungsprogramm (emccalib.tcl) aktualisiert werden, wenn ein B<[HAL]POSTGUI_HALFILE> verwendet wird.

note: type: Plain text
en: mitsub_vfd - HAL userspace component for Mitsubishi A500 F500 E500 A500 D700 E700 F700-series VFDs (others may work)  This uses the COMPUTER LINK protocol _not_ MODBUS.  The connection is made through the PU connector.
de: mitsub_vfd - HAL Userspace Komponente für Mitsubishi A500 F500 E500 A500 D700 E700 F700-series VFDs (andere können auch funktionieren) Diese verwendet das COMPUTER LINK Protokoll _nicht_ MODBUS.  Die Verbindung wird über den PU-Anschluss hergestellt.

note: type: Plain text
en: B<name1> is user selectable (usually a description of the controlled device).
de: B<name1> ist vom Benutzer wählbar (normalerweise eine Beschreibung des gesteuerten Geräts).

note: type: Plain text
en: B<number1> is the slave number that was set on the VFD.  must be two digits (Parameter 117)
de: B<number1> ist die Slave-Nummer, die auf dem VFD festgelegt wurde.  muss zweistellig sein (Parameter 117)

note: type: Plain text
en: B<name=number> can be repeated for multiple VFD's connected together
de: B<name=Nummer> kann für mehrere miteinander verbundene VFDs wiederholt werden

note: type: Plain text
en: B<--baud> is optional as it defaults to 9600
      all networked vfds must be set to the same baudrate
de: B<--baud> ist optional, da es standardmäßig auf 9600 eingestellt ist.
      alle vernetzten VFDs müssen auf dieselbe Baudrate eingestellt sein

note: type: Plain text
en: B<--port> is optional as it defaults to ttyS0
de: B<--port> ist optional, da es standardmäßig auf ttyS0 eingestellt ist.

note: type: Plain text
en: You must set set the monitor pin to false.
de: Sie müssen den Monitor-Pin auf false setzen.

note: type: Plain text
en: In this case pins such as up-to-speed, amps, alarm and status bits are not useful.
de: In diesem Fall sind Pins wie Up-to-Speed, Ampere, Alarm- und Statusbits nicht sinnvoll.

note: type: Plain text
en: B<[VFD NAME].debug> (bit, in)::
          set debug mode pin
de: B<[VFD-NAME].debug> (bit, in)::
          Debug-Modus-Pin setzen

note: type: Plain text
en:       This will print many messages to the terminal
de:       Dadurch werden viele Meldungen auf dem Terminal ausgegeben

note: type: Plain text
en: B<[VFD NAME].monitor> (bit, in)::
          set monitor mode pin
          If false request-status command will not be sent to VFD.
          Status, amps, power, motor-feedback, and alarm would then not 
            be useful.
de: B<[VFD-NAME].monitor> (bit, in)::
          Monitormodus-Pin setzen
          Wenn falsch, wird der Abfrage-Status-Befehl nicht an den VFD gesendet.
          Status, Ampere, Leistung, Motor-Feedback und Alarm wären dann
            nicht nützlich sein.

note: type: Plain text
en: B<[VFD NAME].estop> (bit, in)::
          set E-stop mode pin
de: B<[VFD-NAME].estop> (bit, in)::
          Pin für Not-Aus-Modus setzen

note: type: Plain text
en: B<[VFD NAME].fwd> (bit, out)::
          up-to-speed status pin
          Motor is at requested speed within VFD's settings tolerance.
de: B<[VFD-NAME].fwd> (bit, out)::
          Up-to-Speed-Status-Pin
          Der Motor hat die gewünschte Drehzahl innerhalb der VFD-Einstellungstoleranz erreicht.

note: type: Plain text
en: B<[VFD NAME].alarm> (bit, out)::
          alarm status pin
de: B<[VFD-NAME].alarm> (bit, out)::
          Alarmstatus-Pin

note: type: Plain text
en: B<[VFD NAME].motor-cmd> (float, in)::
          The requested motor speed, is Hertz
de: B<[VFD-NAME].motor-cmd> (float, in)::
          Die angeforderte Motordrehzahl, in Hertz

note: type: Plain text
en: B<[VFD NAME].motor-fb> (float, out)::
          The motor feedback speed (from VFD) in Hertz (Hz)
de: B<[VFD-NAME].motor-fb> (float, out)::
          Die rück-gemeldete Motor-Geschwindigkeit (vom VFD) in Hertz (Hz)

note: type: Plain text
en: B<[VFD NAME].motor-amps> (float, out)::
          The motor current, in amps
de: B<[VFD NAME].motor-amps> (float, out)::
          Der Motorstrom, in Ampere

note: type: Plain text
en: B<[VFD NAME].motor-power> (float, out)::
          The motor power
de: B<[VFD-NAME].motor-power> (float, out)::
          Die Motorleistung

note: type: Plain text
en: B<[VFD NAME].scale-cmd> (float, in)::
          Motor command's scale setting defaults to 1
de: B<[VFD-NAME].scale-cmd> (float, in)::
          Die Skalierung des Motorbefehls ist standardmäßig auf 1 eingestellt.

note: type: Plain text
en: B<[VFD NAME].stat-bit-0> (bit, out)::
          raw status bit
de: B<[VFD-NAME].stat-bit-0> (bit, out)::
          rohes Statusbit

note: type: Plain text
en: B<[VFD NAME].stat-bit-1> (bit, out)::
          raw status bit
de: B<[VFD-NAME].stat-bit-1> (bit, out)::
          rohes Statusbit

note: type: Plain text
en: B<[VFD NAME].stat-bit-2> (bit, out)::
          raw status bit
de: B<[VFD-NAME].stat-bit-2> (bit, out)::
          rohes Statusbit

note: type: Plain text
en: B<[VFD NAME].stat-bit-3> (bit, out)::
          raw status bit
          set the VFD so this is motor-at-speed status
de: B<[VFD-NAME].stat-bit-3> (bit, out)::
          rohes Statusbit
          den VFD so einstellen, dass dies der Status des Motors bei Drehzahl ist

note: type: Plain text
en: B<[VFD NAME].stat-bit-4> (bit, out)::
          raw status bit
de: B<[VFD-NAME].stat-bit-4> (bit, out)::
          rohes Statusbit

note: type: Plain text
en: B<[VFD NAME].stat-bit-5> (bit, out)::
          raw status bit
de: B<[VFD-NAME].stat-bit-5> (bit, out)::
          rohes Statusbit

note: type: Plain text
en: B<[VFD NAME].stat-bit-6> (bit, out)::
          raw status bit
de: B<[VFD-NAME].stat-bit-6> (bit, out)::
          rohes Statusbit

note: type: Plain text
en: B<[VFD NAME].stat-bit-7> (bit, out)::
          raw status bit
          Set the VFD so this in the alarm bit
de: B<[VFD-NAME].stat-bit-7> (bit, out)::
          raw status bit
          Setzt den VFD so, dass dies das Alarmbit ist

note: type: Plain text
en: # **************** Spindle VFD setup slave 2 ****************
de: # **************** Spindel VFD Setup Slave 2 ****************

note: type: Plain text
en: # cmd scaled to RPM (belt/gearbox driven)
de: # cmd skaliert auf RPM (Riemen-/Getriebeantrieb)

note: type: Plain text
en: setp spindle.scale-cmd .135
de: setp spindel.scale-cmd .135

note: type: Plain text
en: # feedback is in rpm (recipicale of command)
de: # Feedback ist in U / min (Befehlsempfänger)

note: type: Plain text
en: # turn on monitoring so feedback works
de: # Überwachung einschalten, damit das Feedback funktioniert

note: type: Plain text
en: # cmd and feedback scaled to hertz
de: # cmd und Feedback auf Hertz skaliert

note: type: Plain text
en: # command full speed
de: # Befehl volle Geschwindigkeit

note: type: Plain text
en: # allows us to see status
de: # erlaubt uns, den Status zu sehen

note: type: Plain text
en: some models (eg E500) cannot monitor status, so set the monitor pin to false. In this case, pins such as up-to-speed, amps, alarm and status bits are not useful.
de: einige Modelle (z.B. E500) können den Status nicht überwachen, setzen Sie also den Monitor-Pin auf false. In diesem Fall sind Pins wie Up-to-Speed, Ampere, Alarm und Statusbits nicht nützlich.

note: type: Plain text
en: monitor-xhc-hb04 - monitors the XHC-HB04 pendant and warns of disconnection
de: monitor-xhc-hb04 - überwacht das XHC-HB04-Pendant und warnt bei Unterbrechung der Verbindung

note: type: Plain text
en: B<monitor-xhc-hb04> is included to monitor disconnects and reconnects of the pendant.  This script runs in the background and will pop up a message when the pendant is disconnected or reconnected.
de: B<monitor-xhc-hb04> ist enthalten, um das Trennen und Wiederverbinden des Pendants zu überwachen.  Dieses Skript läuft im Hintergrund und zeigt eine Meldung an, wenn der Anhänger abgetrennt oder wieder angeschlossen wird.

note: type: Plain text
en: motion-logger - log motion commands sent from LinuxCNC's Task module
de: motion-logger - log motion Befehle von LinuxCNC's Task-Modul gesendet

note: type: Plain text
en: B<motion-logger> is a test program to log motion commands sent from LinuxCNC's Task module to the Motion module
de: B<motion-logger> ist ein Testprogramm, um Bewegungsbefehle zu protokollieren, die von LinuxCNCs Task-Modul an das Motion-Modul gesendet werden.

note: type: Plain text
en: It is largely used by the regression tests and is poorly documented.
de: Es wird weitgehend von den Regressionstests verwendet und ist schlecht dokumentiert.

note: type: Plain text
en: moveoff_gui - a GUI for the moveoff component
de: moveoff_gui - ein GUI für die moveoff-Komponente

note: type: Plain text
en: Moveoff_gui is a sample graphical user interface (GUI) for controlling a HAL moveoff component to implement HAL-only offsets.  See the manpage (man moveoff) for B<IMPORTANT limitations and warnings>.
de: Moveoff_gui ist ein Beispiel für eine grafische Benutzeroberfläche (GUI) zur Steuerung einer HAL moveoff Komponente, um HAL-only Offsets zu implementieren.  Siehe die Manpage (man moveoff) für B<WICHTIGE Einschränkungen und Warnungen>.

note: type: Plain text
en: Supported configurations must use a known kinematics module with
    B<KINEMATICS_TYPE = KINEMATICS_IDENTITY>.  The modules currently
    supported are:
       B<trivkins>
de: Unterstützte Konfigurationen müssen ein bekanntes Kinematikmodul mit
    B<KINEMATICS_TYPE = KINEMATICS_IDENTITY>.  Die derzeit unterstützten Module
    unterstützt sind:
       B<trivkins>

note: type: Plain text
en: Show options and exit
de: Optionen anzeigen und beenden

note: type: Plain text
en: always: show GUI to control offsets always
de: always (engl. für immer): GUI zur Kontrolle der Offsets immer anzeigen

note: type: Plain text
en: Default: B<onpause>
de: Standard: B<onpause>

note: type: Plain text
en: Letters from set of {x y z a b c u v w}
de: Buchstaben aus der Menge von {x y z a b c u v w}

note: type: Plain text
en: Examples: -axes x, -axes xyz, -axes xz (no spaces)
de: Beispiele: -axes x, -axes xyz, -axes xz (no spaces)

note: type: Plain text
en: Default: B<xyz>
de: Standard: B<xyz>

note: type: Plain text
en: Specify one increment value per -inc (up to 4)
de: Geben Sie einen Inkrementwert pro -inc an (bis zu 4)

note: type: Plain text
en: Defaults: B< 0.001 0.01 0.10 1.0>
de: Standardwerte: B< 0.001 0.01 0.10 1.0>

note: type: Plain text
en: Overall gui size is based on font size, typically 8 - 20
de: Die Gesamtgröße der GUI basiert auf der Schriftgröße, normalerweise 8 - 20

note: type: Plain text
en: Default: B<14>
de: Standard: B<14>

note: type: Plain text
en: Initial location on screen
de: Ausgangsposition auf dem Bildschirm

note: type: Plain text
en: Examples: -loc center, -loc +20+100
de: Beispiele: -loc center, -loc +20+100

note: type: Plain text
en: Default: B<center>
de: Standard: B<center>

note: type: Plain text
en: Resume program when move-enable deasserted
de: Programm fortsetzen, wenn Move-Enable deaktiviert ist

note: type: Plain text
en: Default: notused
de: Standard: notused

note: type: Plain text
en: Delay for autoresume (allow time to restore spindle speed etc)  Default: B<5>
de: Verzögerung für die automatische Wiederaufnahme (Zeit für die Wiederherstellung der Spindeldrehzahl usw.) Standard: B<5>

note: type: SH
en: OTHER OPTIONS
de: ANDERE OPTIONEN

note: type: Plain text
en: These options are available for special cases:
de: Diese Optionen sind für besondere Fälle verfügbar:

note: type: Plain text
en: Disables creation of entry widgets
de: Deaktiviert die Erstellung von Einstiegswidgets

note: type: Plain text
en: Disable use of resume-inhibit to controlling gui
de: Verwendung von Resume-Inhibit zur Steuerung der Benutzeroberfläche deaktivieren

note: type: Plain text
en: Disable check for halui.program.is-paused
de: Prüfung für halui.program.is-paused deaktivieren

note: type: Plain text
en: Useful for retracting offsets with simple external controls
de: Nützlich für das Einfahren von Offsets mit einfachen externen Kontrollen

note: type: Plain text
en: Use when both external controls and external displays are in use
de: Verwendung, wenn sowohl externe Steuerungen als auch externe Anzeigen verwendet werden

note: type: Plain text
en: LinuxCNC must be running.
de: LinuxCNC muss laufen.

note: type: Plain text
en: Halui must be loaded, typical INI file setting:
        B<[HAL]HALUI = halui>.
de: Halui muss geladen sein, typische INI-Datei-Einstellung:
        B<[HAL]HALUI = halui>.

note: type: Plain text
en: The moveoff component must be loaded with the name 'mv' as:
de: Die Moveoff-Komponente muss mit dem Namen 'mv' geladen werden als:

note: type: Plain text
en: If the pin mv.motion-enable is B<not> connected when moveoff_gui is started, B<controls will be provided> to enable offsets and set offset values.  If the pin B<is> connected, B<only a display> of offsets is shown and control must be made by B<external> HAL connections.
de: Wenn der Pin mv.motion-enable beim Start von moveoff_gui B<nicht> angeschlossen ist, werden B<Steuerungen zum Aktivieren von Offsets und zum Setzen von Offset-Werten bereitgestellt>.  Wenn der Pin B<verbunden> ist, wird B<nur eine Anzeige> der Offsets angezeigt und die Steuerung muss über B<externe> HAL-Verbindungen erfolgen.

note: type: Plain text
en: If a pin named *.resume-inhibit exists and is not connected, it will be set while offsets are applied.  This pin may be provided by the controlling LinuxCNC GUI in use.  Use of the pin may be disabled with the option -no_resume_inhibit.
de: Wenn ein Pin mit dem Namen *.resume-inhibit existiert und nicht angeschlossen ist, wird er gesetzt, während Offsets angewendet werden.  Dieser Pin kann von der steuernden LinuxCNC-GUI zur Verfügung gestellt werden.  Die Verwendung des Pins kann mit der Option -no_resume_inhibit deaktiviert werden.

note: type: Plain text
en: The -autoresume option uses halui.program.resume to automatically resume program execution when the move-enable pin is deactivated and all offsets are removed.  The resume pin is not activated until an additional interval (-delay delay_secs) elapses.  This delay interval may be useful for restarting related equipment (a spindle motor for example)  While timing the delay, a popup is offered to cancel the automatic program resumption.
de: Die Option -autoresume verwendet halui.program.resume, um die Programmausführung automatisch fortzusetzen, wenn der move-enable Pin deaktiviert ist und alle Offsets entfernt wurden.  Der Resume-Pin wird erst nach Ablauf eines zusätzlichen Intervalls (-delay delay_secs) aktiviert.  Dieses Verzögerungsintervall kann für den Neustart zugehöriger Geräte (z. B. eines Spindelmotors) nützlich sein. Während der Zeitmessung der Verzögerung wird ein Popup angeboten, um die automatische Programmfortsetzung abzubrechen.

note: type: Plain text
en: The INI file in the configuration directory must provide HALFILEs to loadrt the moveoff component, connect its pins, and addf its read and write functions in the proper order.  These steps can be done at runtime using an existing configuration INI file and specifying a system library HALFILE B<hookup_moveoff.tcl> as illustrated below:
de: Die INI-Datei im Konfigurationsverzeichnis muss HALFILEs bereitstellen, um die moveoff-Komponente zu laden, ihre Pins anzuschließen und ihre Lese- und Schreibfunktionen in der richtigen Reihenfolge hinzuzufügen.  Diese Schritte können zur Laufzeit durchgeführt werden, indem eine bestehende INI-Konfigurationsdatei verwendet und eine HALFILE der Systembibliothek B<hookup_moveoff.tcl> angegeben wird, wie unten dargestellt:

note: type: Plain text
en: HALFILE = user_halfile_1
de: HALFILE = benutzer_halfile_1

note: type: Plain text
en: etc ...
de: usw. ...

note: type: Plain text
en: HALFILE = user_halfile_n
de: HALFILE = benutzer_halfile_n

note: type: Plain text
en: The B<hookup_moveoff.tcl> will use INI file settings for the moveoff per-axis limits:
de: Die Datei B<hookup_moveoff.tcl> verwendet die Einstellungen der INI-Datei für die Grenzen der Verschiebung pro Achse:

note: type: Plain text
en: The moveoff_gui program should be specified in the APPLICATIONS stanza of the INI file, for example:
de: Das Programm moveoff_gui sollte z.B. in der Stanza APPLICATIONS der INI-Datei angegeben werden:

note: type: Plain text
en: B<[APPLICATIONS]>
de: B[APPLICATIONS]

note: type: Plain text
en: DELAY = delay_in_secs_to_allow_hal_connections
de: DELAY = verzögerung_in_sekunden_um_HAL_verbindungen_zu_ermöglichen

note: type: Plain text
en: Simulation configurations that demonstrate the moveoff_gui and the moveoff component are located in:
de: Simulationskonfigurationen, die das moveoff_gui und die moveoff-Komponente demonstrieren, befinden sich in:

note: type: Plain text
en: See also B<moveoff>(9) for details on the component.
de: Siehe auch B<moveoff>(9) für Einzelheiten zu dieser Komponente.

note: type: Plain text
en: ngcgui - a framework for conversational G-code generation on the controller
de: ngcgui - ein Rahmenwerk für konversationelle G-Code-Generierung auf dem Controller

note: type: Plain text
en: B<ngcgui> details: http://linuxcnc.org/docs/html/gui/ngcgui.html
de: B<ngcgui> Details: http://linuxcnc.org/docs/html/gui/ngcgui.html

note: type: Plain text
en: panelui - interface buttons to LinuxCNC or HAL
de: panelui - Buttons als Schnittstelle zu LinuxCNC oder HAL

note: type: Plain text
en: B<panelui> is a userspace component to interface buttons to LinuxCNC or HAL.  It decodes MESA 7I73 style key-scan codes and calls the appropriate routine.  It gets input from a realtime component - sampler.  Sampler gets it's input from either the MESA 7i73 or sim_matrix_kb component.  Panelui is configurable using an INI style text file to define button types, HAL pin types, and/or commands.
de: B<panelui> ist eine Userspace-Komponente zur Anbindung von Tasten an LinuxCNC oder HAL.  Sie dekodiert Tastencodes im Stil von MESA 7I73 und ruft die entsprechende Routine auf.  Sie erhält Input von einer Echtzeitkomponente - Sampler.  Der Sampler erhält seine Eingaben entweder von der MESA 7I73- oder der sim_matrix_kb-Komponente.  Panelui ist über eine Textdatei im INI-Stil konfigurierbar, um Tastentypen, HAL-Pin-Typen und/oder Befehle zu definieren.

note: type: Plain text
en: Full documentation can be found in the HTML or PDF docs: http://linuxcnc.org/docs/html/gui/panelui.html
de: Die vollständige Dokumentation finden Sie in den HTML- oder PDF-Dokumenten: http://linuxcnc.org/docs/html/gui/panelui.html

note: type: Plain text
en: Frequency of vfd
de: Häufigkeit des VFD

note: type: Plain text
en: 1 to enable the vfd. 0 will remote trip the vfd, thereby disabling it.
de: 1, um den VFD zu aktivieren. 0 schaltet den VFD per Fernsteuerung aus und deaktiviert ihn damit.

note: type: Plain text
en: 1 when running
de: 1 im Betrieb

note: type: Plain text
en: 1 when running at assigned frequency
de: 1 bei Betrieb mit zugewiesener Frequenz

note: type: Plain text
en: 1 when vfd is ready to run
de: 1 wenn VFD betriebsbereit ist

note: type: Plain text
en: 1 when vfd alarm is set
de: 1 wenn VFD-Alarm eingestellt ist

note: type: Plain text
en: Output current in amps
de: Ausgangsstrom in Ampere

note: type: Plain text
en: Temperature of drive heatsink
de: Temperatur des Laufwerkskühlkörpers

note: type: Plain text
en: Alternates between 1 and 0 after every update cycle. Feed into a watchdog component to ensure vfd driver is communicating with the vfd properly.
de: Wechselt nach jedem Aktualisierungszyklus zwischen 1 und 0. Wird in eine Watchdog-Komponente eingespeist, um sicherzustellen, dass der VFD-Treiber ordnungsgemäß mit dem VFD kommuniziert.

note: type: Plain text
en: Modbus slave address
de: Modbus-Slave-Adresse

note: type: Plain text
en: GPLv2 or greater
de: GPLv2 oder später

note: type: TH
en: Feb 1 2020
de: Februar 2020

note: type: TH
en: Powermax Modbus Communications
de: Powermax Modbus-Kommunikation

note: type: Plain text
en: B<pmx485> - Modbus communications with a Powermax Plasma Cutter.
de: B<pmx485> - Modbus-Kommunikation mit einem Powermax-Plasmaschneidgerät.

note: type: Plain text
en: pmx485 is a userspace HAL component to communicate with a Hypertherm Powermax plasma cutter using the Modbus ASCII protocol over RS485.
de: pmx485 ist eine Userspace-HAL-Komponente zur Kommunikation mit einem Hypertherm Powermax-Plasmaschneider unter Verwendung des Modbus-ASCII-Protokolls über RS485.

note: type: Plain text
en: See the Drivers section of the LinuxCNC Documentation for more information on pmx485.
de: Weitere Informationen zu pmx485 finden Sie im Abschnitt Treiber in der LinuxCNC-Dokumentation.

note: type: Plain text
en: Phillip Carter
de: Philipp Carter

note: type: TH
en: Oct 28 2021
de: 28. Oktober 2021

note: type: TH
en: Powermax Modbus Communications Testing
de: Powermax Modbus-Kommunikationstest

note: type: Plain text
en: B<pmx485-test> - Modbus communications testing with a Powermax Plasma Cutter
de: B<pmx485-test> - Testen der Modbus-Kommunikation mit einem Powermax-Plasmaschneidgerät

note: type: Plain text
en: pmx485 is a python script for testing communications with a Hypertherm Powermax plasma cutter using the Modbus ASCII protocol over RS485.
de: pmx485 ist ein Python-Skript zum Testen der Kommunikation mit einem Hypertherm Powermax-Plasmaschneider unter Verwendung des Modbus-ASCII-Protokolls über RS485.

note: type: Plain text
en: Select the correct port from the list of available ports.
de: Wählen Sie den richtigen Anschluss aus der Liste der verfügbaren Anschlüsse aus.

note: type: Plain text
en: Check RS485 to establish communications.
de: Prüfen Sie RS485, um die Kommunikation herzustellen.

note: type: Plain text
en: Changing MODE, CURRENT, or PRESSURE will change the corresponding value on the
     Powermax and the new value will be reported back to the test panel.
de: Wenn Sie MODE, CURRENT oder PRESSURE ändern, wird der entsprechende Wert auf dem
     Powermax, und der neue Wert wird an die Prüftafel zurückgemeldet.

note: type: Plain text
en: Check PANEL to end communication.
de: Prüfen Sie PANEL, um die Kommunikation zu beenden.

note: type: Plain text
en: pncconf - configuration wizard for Mesa cards
de: pncconf - Konfigurationsassistent für Mesa-Karten

note: type: Plain text
en: B<pncconf> is used to configure systems that use Mesa cards.
de: B<pncconf> wird verwendet, um Systeme zu konfigurieren, die Mesa-Karten verwenden.

note: type: Plain text
en: B<puma560gui> is one of the sample B<Vismach> GUIs for LinuxCNC, simulating a Puma 560 robot arm.
de: B<puma560gui> ist eine der B<Vismach> GUIs für LinuxCNC, die einen Puma 560 Roboterarm simuliert.

note: type: Plain text
en: pumagui - Vismach Virtual Machine GUI
de: pumagui - Vismach Virtuelle Maschine GUI

note: type: Plain text
en: B<pumagui> is one of the sample B<Vismach> GUIs for LinuxCNC, simulating a generic Puma style robot arm.
de: B<pumagui> ist eine der B<Vismach> GUIs für LinuxCNC, die einen generischen Puma-Roboterarm simuliert.

note: type: Plain text
en: pyui - utility for panelui
de: pyui - Dienstprogramm für Panelui

note: type: Plain text
en: B<pyui> Validates panelui.ini files
de: B<pyui> Validiert panelui.ini-Dateien

note: type: Plain text
en: pyvcp - Virtual Control Panel for LinuxCNC
de: pyvcp - Virtuelles Bedienfeld für LinuxCNC

note: type: Plain text
en: Use I<component-name> as the HAL component name.  If the component name is not specified, the basename of the xml file is used.
de: Verwenden Sie I<Komponentenname> als Namen der HAL-Komponente.  Wenn der Komponentenname nicht angegeben wird, dann wird der Basisname der XML-Datei verwendet.

note: type: Plain text
en: I<Python Virtual Control Panel> in the LinuxCNC documentation for a description of the xml syntax, along with examples
de: I<Python Virtual Control Panel> in der LinuxCNC Dokumentation für eine Beschreibung der XML Syntax, zusammen mit Beispielen.

note: type: Plain text
en: pyvcp_demo - Python Virtual Control Panel demonstration component
de: pyvcp_demo - Python Virtual Control Panel Demonstrationskomponente

note: type: Plain text
en: B<pyvcp_demo> is mainly used by sample configurations.
de: B<pyvcp_demo> wird hauptsächlich von Beispielkonfigurationen verwendet.

note: type: Plain text
en:  If not provided, use compname == pyvcp
de:  Wenn nicht angegeben, verwenden Sie compname == pyvcp

note: type: TH
en: QtPlasmaC Parameters Assistant
de: QtPlasmaC Parameter-Assistent

note: type: Plain text
en: qtplasmac-cfg2prefs is a Python script for converting parameters from a PlasmaC configuration to a QtPlasmaC configuration.
de: qtplasmac-cfg2prefs ist ein Python-Skript zur Konvertierung von Parametern aus einer PlasmaC-Konfiguration in eine QtPlasmaC-Konfiguration.

note: type: Plain text
en: See the QtPlasmaC section of the LinuxCNC Documentation for more information.
de: Weitere Informationen finden Sie im Abschnitt QtPlasmaC in der LinuxCNC Dokumentation.

note: type: TH
en: qtplasmac-materials
de: qtplasmac-Materialien

note: type: TH
en: QtPlasmaC Materials Assistant
de: QtPlasmaC Werkstoff-Assistent

note: type: Plain text
en: B<qtplasmac-materials> - Create a plasma materials file.
de: B<qtplasmac-materials> - Erstellt eine Datei mit Plasmamaterialien.

note: type: Plain text
en: The file can be created by text entry or by importing text from a CAM tool file.
de: Die Datei kann durch Texteingabe oder durch Importieren von Text aus einer CAM-Tool-Datei erstellt werden.

note: type: TH
en: QtPlasmaC Migration Assistant
de: QtPlasmaC-Migrationsassistent

note: type: Plain text
en: qtplasmac-plasmac2qt is a Python script for migrating from PlasmaC to QtPlasmac.
de: qtplasmac-plasmac2qt ist ein Python-Skript für die Migration von PlasmaC zu QtPlasmac.

note: type: Plain text
en: B<qtplasmac-setup> - Switch a QtPlasmaC installation type.
de: B<qtplasmac-setup> - Wechselt einen QtPlasmaC Installationstyp.

note: type: Plain text
en: qtplasmac-setup is a Python script for switching a QtPlasmac configuration from package to run in place and vice-versa.
de: qtplasmac-setup ist ein Python-Skript, mit dem man eine QtPlasmac-Konfiguration von einem Paket zu einem laufenden Programm machen kann und umgekehrt.

note: type: Plain text
en: qtvcp - Qt-based virtual control panels
de: qtvcp - Qt-basierte virtuelle Bedienfelder

note: type: Plain text
en: B<qtvcp> is a system for creating user interfaces for LinuxCNC.
de: B<qtvcp> ist ein System zum Erstellen von Benutzeroberflächen für LinuxCNC.

note: type: Plain text
en: Full documentation at http://linuxcnc.org/docs/html/gui/qtvcp.html
de: Vollständige Dokumentation unter http://linuxcnc.org/docs/html/gui/qtvcp.html

note: type: Plain text
en: rotarydelta - Vismach Virtual Machine GUI
de: rotarydelta - Vismach Virtuelle Maschine GUI

note: type: Plain text
en: B<rtapi_app> Creates a simulated real time environment.
de: B<rtapi_app> Erzeugt eine simulierte Echtzeitumgebung.

note: type: Plain text
en: Used for loading real time modules on systems without real time (for simulation).
de: Dient zum Laden von Echtzeitmodulen auf Systemen ohne Echtzeit (zur Simulation).

note: type: Plain text
en: scaragui - Vismach Virtual Machine GUI
de: scaragui - Vismach Virtuelle Maschine GUI

note: type: Plain text
en: B<scaragui> is one of the sample B<Vismach> GUIs for LinuxCNC, simulating a SCARA style robot arm.
de: B<scaragui> ist eine der Beispiel-B<Vismach>-GUIs für LinuxCNC, die einen SCARA-Roboterarm simuliert.

note: type: Plain text
en: schedrmt - telnet based scheduler for LinuxCNC
de: schedrmt - Telnet-basierte Scheduler für LinuxCNC

note: type: Plain text
en:   With -- --port Waits for socket connections (Telnet) on specified socket, without port
                uses default port 5007.
      With -- --name E<lt>server nameE<gt> Sets the server name to specified name for Hello.
      With -- --connectpw E<lt>passwordE<gt> Sets the connection password to 'password'. Default EMC
      With -- --enablepw E<lt>passwordE<gt> Sets the enable password to 'password'. Default EMCTOO
      With -- --sessions E<lt>max sessionsE<gt> Sets the maximum number of simultaneous connextions
                to max sessions. Default is no limit (-1).
      With -- --path Sets the base path to program (G-Code) files, default is "../../nc_files/".
                Make sure to include the final slash (/).
      With -- -ini I<E<lt>INI fileE<gt>>, uses specified I<INI file> instead of default emc.ini.
de:   Mit -- --port Wartet auf Socket-Verbindungen (Telnet) auf dem angegebenen Socket, ohne Port
                verwendet den Standard-Port 5007.
      Mit -- --name E<lt>ServernameE<gt> Setzt den Servernamen auf den angegebenen Namen für Hello.
      Mit -- --connectpw E<lt>PasswortE<gt> Setzt das Verbindungspasswort auf 'Passwort'. Standard EMC
      Mit -- --enablepw E<lt>PasswortE<gt> Setzt das Aktivierungskennwort auf 'Passwort'. Voreinstellung EMCTOO
      Mit -- --sessions E<lt>max sessionsE<gt> Setzt die maximale Anzahl der gleichzeitigen Verbindungen
                auf max sessions. Voreinstellung ist kein Limit (-1).
      Mit -- --path Setzt den Basispfad zu den Programmdateien (G-Code), Standard ist "../../nc_files/".
                Achten Sie darauf, dass der letzte Schrägstrich (/) enthalten ist.
      Mit -- -ini I<E<lt>INI DateinameE<gt>>, verwendet die angegebene I<INI Dateiname> anstelle des Standards 'emc.ini'.

note: type: Plain text
en:   There are six commands supported, Where the commands set and get contain
      LinuxCNC-specific sub-commands based on the commands supported by emcsh, but where the "emc_"
      prefix is omitted. Commands and most parameters are not case-sensitive.
      The exceptions are passwords, file paths and text strings.
de:   Es werden sechs Befehle unterstützt, wobei die Befehle set und get folgendes enthalten
      LinuxCNC-spezifische Unterbefehle enthalten, die auf den von emcsh unterstützten Befehlen basieren, wobei jedoch das Präfix "emc_"
      Präfix weggelassen wird. Bei den Befehlen und den meisten Parametern wird nicht zwischen Groß- und Kleinschreibung unterschieden.
      Die Ausnahmen sind Passwörter, Dateipfade und Textstrings.

note: type: Plain text
en:   The get command includes one of the emc sub-commands, described below and
      zero or more additional parameters.
de:   Der Befehl get enthält einen der unten beschriebenen emc-Unterbefehle und
      null oder mehr zusätzliche Parameter.

note: type: Plain text
en:   The set command inclides one of the emc sub-commands, described below and
      one or more additional parameters.
de:   Der Befehl set umfasst einen der unten beschriebenen emc-Unterbefehle und
      einen oder mehrere zusätzliche Parameter.

note: type: Plain text
en:   The shutdown command tells EMC to shutdown before quitting the connection. This
      command may only be issued if the Hello has been successfully negotiated and the
      connection has control of the CNC (see enable sub-command below). This command
      has no parameters.
de:   Der Befehl shutdown weist EMC an, sich vor dem Beenden der Verbindung herunterzufahren. Dieser
      Befehl darf nur gegeben werden, wenn die Hallo-Verbindung erfolgreich ausgehandelt wurde und die
      Verbindung die Kontrolle über die CNC hat (siehe Unterbefehl enable unten). Dieser Befehl
      hat keine Parameter.

note: type: Plain text
en:   EMC sub-commands:
de:   EMC-Unterbefehle:

note: type: Plain text
en:   INIFILE
      Returns the path and file name of the current configuration INI file.
de:   INIFILE
      Gibt den Pfad und Dateinamen der aktuellen INI-Konfigurationsdatei zurück.

note: type: Plain text
en:   plat
      Returns the platform for which this was compiled, e.g., linux_2_0_36
de:   plat
      Gibt die Plattform zurück, für die dies kompiliert wurde, z. B. linux_2_0_36

note: type: Plain text
en:   ini E<lt>varE<gt> E<lt>sectionE<gt>
      Returns the string value of E<lt>varE<gt> in section E<lt>sectionE<gt>, in EMC_INIFILE
de:   ini E<lt>varE<gt> E<lt>sectionE<gt>
      Liefert den String-Wert von E<lt>varE<gt> im Abschnitt E<lt>sectionE<gt>, in EMC_INIFILE

note: type: Plain text
en:   debug {E<lt>new valueE<gt>}
      With get, returns the integer value of EMC_DEBUG, in the EMC. Note that
      it may not be true that the local EMC_DEBUG variable here (in emcsh and
      the GUIs that use it) is the same as the EMC_DEBUG value in the EMC. This
      can happen if the EMC is started from one INI file, and the GUI is started
      with another that has a different value for DEBUG.
      With set, sends a command to the EMC to set the new debug level,
      and sets the EMC_DEBUG global here to the same value. This will make
      the two values the same, since they really ought to be the same.
de:   debug {E<lt>neuer WertE<gt>}
      Gibt mit get den Integer-Wert von EMC_DEBUG in der EMC zurück. Beachten Sie, dass
      nicht unbedingt die lokale EMC_DEBUG-Variable hier (in emcsh und
      den GUIs, die sie verwenden) mit dem EMC_DEBUG-Wert in der EMC identisch ist. Dies
      kann passieren, wenn die EMC aus einer INI-Datei gestartet wird und die GUI mit einer anderen
      mit einer anderen gestartet wird, die einen anderen Wert für DEBUG hat.
      Mit set wird ein Befehl an die EMC gesendet, um den neuen Debug-Level zu setzen,
      und setzt den globalen Wert EMC_DEBUG hier auf denselben Wert. Dadurch werden
      die beiden Werte gleich, da sie eigentlich gleich sein sollten.

note: type: Plain text
en:   QMode E<lt>modeE<gt>
      stop | run | pause | resume (Set only) | error (Get only)
      With no arg, returns the program queue status as "stop", "run", "pause" or "error". Otherwise,
      sends a command to set the current mode to "stop", "run" or "pause".
de:   QMode E<lt>modeE<gt>
      stop | run | pause | resume (nur Set) | error (nur Get)
      Gibt ohne Argument den Status der Programmwarteschlange als "stop", "run", "pause" oder "error" zurück. Andernfalls,
      sendet es einen Befehl, um den aktuellen Modus auf "stop", "run" oder "pause" zu setzen.

note: type: Plain text
en:   QStatus E<lt>Queue SizeE<gt> E<lt>First Tag IdE<gt> E<lt>Last Tag IdE<gt> E<lt>Queue CRCE<gt>
      Get only, returns then number of programs in queue (Queue Size), the Tag id of the first 
      program in the queue, the Tag id of the last program in the queue, and the CRC of all
      of the Tag Ids in the queue. The actual calculation of the CRC is not important, the
      purpose is to be able to compare the current CRC with the previous CRC. If they
      differ, then there has been a change to the size or order of the programs in queue.
de:   QStatus E<lt>Queue SizeE<gt> E<lt>First Tag IdE<gt> E<lt>Last Tag IdE<gt> E<lt>Queue CRCE<gt>
      Get only, liefert die Anzahl der Programme in der Warteschlange (Queue Size), die Tag Id des ersten 
      Programms in der Warteschlange, die Tag Id des letzten Programms in der Warteschlange und die CRC aller
      der Tag-IDs in der Warteschlange. Die eigentliche Berechnung des CRC ist nicht wichtig, der
      Zweck ist es, die aktuelle CRC mit der vorherigen CRC vergleichen zu können. Wenn sie
      unterscheiden, hat sich die Größe oder Reihenfolge der Programme in der Warteschlange geändert.

note: type: Plain text
en:   AutoTagId E<lt>Start IdE<gt>
      With get, returns the next autoincremented unique tag id to associate with a queue record.
      With set, resets auto tag generation to begin at the specified value.
de:   AutoTagId E<lt>Start-IdE<gt>
      Gibt mit get die nächste automatisch inkrementierte eindeutige Tag-ID zurück, die einem Warteschlangendatensatz zugeordnet werden soll.
      Mit set wird die automatische Tag-Generierung zurückgesetzt, sodass sie beim angegebenen Wert beginnt.

note: type: Plain text
en:   PgmAdd E<lt>priorityE<gt> E<lt>tag idE<gt> E<lt>xE<gt> E<lt>yE<gt> E<lt>zE<gt> E<lt>zoneE<gt> E<lt>file nameE<gt> E<lt>feed overrideE<gt> E<lt>spindle overrideE<gt> E<lt>toolE<gt>
      With set, adds a program to the queue with priority of the program, a unique tag identifying the 
      program, the x, y and z offsets or zone for the origin of the program, the path + file name, the
      feed and spindle overrides to apply, and the default tool to use. If tag id is zero, the tag id
      will be generated automatically. If zone is zero, then the x, y, and z offsets will be used, 
      otherwise zones 1 to 9 correspond to G54 to G59.3 respectively.
de:   PgmAdd E<lt>PrioritätE<gt> E<lt>KennzeichenE<gt> E<lt>xE<gt> E<lt>yE<gt> E<lt>zE<gt> E<lt>ZoneE<gt> E<lt>DateinameE<gt> E<lt>Vorschub-OverrideE<gt> E<lt>Spindel-OverrideE<gt> E<lt>WerkzeugE<gt>
      Mit set wird ein Programm zur Warteschlange hinzugefügt, mit der Priorität des Programms, einem eindeutigen Tag zur Identifizierung des 
      Programm, den x-, y- und z-Offsets oder der Zone für den Ursprung des Programms, dem Pfad + Dateinamen, den
      Vorschub- und Spindel-Overrides und das zu verwendende Standardwerkzeug. Wenn die Tag-ID Null ist, wird die Tag-ID
      automatisch generiert. Wenn Zone gleich Null ist, werden die x-, y- und z-Offsets verwendet, 
      Andernfalls entsprechen die Zonen 1 bis 9 jeweils G54 bis G59.3.

note: type: Plain text
en:   PgmByIndex E<lt>indexE<gt>
      [priority] [tag id] [x] [y] [z] [zone] [file name] [feed override] [spindle override] [tool]
      With get, returns the queue entry matching the specified index into the queue, including the priority,
      tag id, x, y, and z coordinates, the zone, file name, feed and spindle overrides and the default
      tool.
de:   PgmByIndex E<lt>indexE<gt>
      [priority] [tag id] [x] [y] [z] [zone] [file name] [feed override] [spindle override] [tool]
      Mit get wird der Eintrag in der Warteschlange zurückgegeben, der dem angegebenen Index in der Warteschlange entspricht, einschließlich der Priorität,
      Tag-ID, x-, y- und z-Koordinaten, Zone, Dateiname, Vorschub- und Spindel-Override und das Standardwerkzeug
      Werkzeug.

note: type: Plain text
en:   PgmAll
      With get, performs effectively a PgmByIndex for every entry in the queue. Each result will be
      returned in the form: "PGMBYINDEX ..." with cr lf at the end of each record.
de:   PgmAll
      Führt mit get effektiv ein PgmByIndex für jeden Eintrag in der Warteschlange durch. Jedes Ergebnis wird
      in der Form: "PGMBYINDEX ..." mit cr lf am Ende jedes Datensatzes zurückgegeben.

note: type: Plain text
en:   PriorityById E<lt>tag idE<gt> E<lt>priorityE<gt>
      With get, returns the priority of the queue entry matching the specified tag. With set, changes the 
      priority of the queue entry to the specified priority.
de:   PriorityById E<lt>tag idE<gt> E<lt>priorityE<gt>
      Gibt mit get die Priorität des Warteschlangeneintrags zurück, der dem angegebenen Tag entspricht. Mit set ändert sich die 
      Priorität des Warteschlangeneintrags auf die angegebene Priorität.

note: type: Plain text
en:   PriorityByIndex E<lt>tag idE<gt> E<lt>priorityE<gt>
      With get, returns the priority of the queue entry matching the specified index into the queue. With 
      set, changes the priority of the queue entry to the specified priority.
de:   PriorityByIndex E<lt>tag idE<gt> E<lt>priorityE<gt>
      Gibt mit get die Priorität des Warteschlangeneintrags zurück, der dem angegebenen Index in der Warteschlange entspricht. Mit 
      set wird die Priorität des Warteschlangeneintrags auf die angegebene Priorität geändert.

note: type: Plain text
en:   DeleteById E<lt>tag idE<gt>
      With set, deletes the queue entry matching the specified tag id.
de:   DeleteById E<lt>tag idE<gt>
      Mit set wird der Eintrag in der Warteschlange gelöscht, welcher der angegebenen Tag-ID entspricht.

note: type: Plain text
en:   DeleteByIndex E<lt>indexE<gt>
      With set, deletes the queue entry matching the specified index into the queue.
de:   DeleteByIndex E<lt>indexE<gt>
      Mit set wird der Eintrag in der Warteschlange gelöscht, der dem angegebenen Index in der Warteschlange entspricht.

note: type: Plain text
en:   PollRate E<lt>rateE<gt>
      With set, sets the rate at which the scheduler polls for information. The default is 1.0 or one
      second. With get, returns the current poll rate.
de:   PollRate E<lt>rateE<gt>
      Mit set wird die Rate festgelegt, mit welcher der Scheduler Informationen abfragt. Der Standardwert ist 1.0 oder eine
      Sekunde. Mit get wird die aktuelle Abfragerate zurückgegeben.

note: type: Plain text
en: scorbot-er-3 - to link the Intellitek Scorbot educational robot to LinuxCNC
de: scorbot-er-3 - um den Lernroboter Intellitek Scorbot mit LinuxCNC zu verbinden

note: type: Plain text
en: B<scorbot-er-3> is a userspace, non-realtime component that interfaces the control box of a Scorbot ER-3 robot arm to the LinuxCNC HAL.
de: B<scorbot-er-3> ist eine Userspace-, Nicht-Echtzeit-Komponente, welche die Steuerbox eines Scorbot ER-3 Roboterarms mit der LinuxCNC HAL verbindet.

note: type: Plain text
en: shuttle - control HAL pins with the ShuttleXpress, ShuttlePRO, and ShuttlePRO2 device made by Contour Design
de: shuttle - Steuerung von HAL-Pins mit den Geräten ShuttleXpress, ShuttlePRO und ShuttlePRO2 von Contour Design

note: type: Plain text
en: shuttle is a non-realtime HAL component that interfaces Contour Design's ShuttleXpress, ShuttlePRO, and ShuttlePRO2 devices with LinuxCNC's HAL.
de: shuttle ist eine Nicht-Echtzeit-HAL-Komponente, die Schnittstellen Contour Design's ShuttleXpress, ShuttlePRO und ShuttlePRO2 Geräte mit LinuxCNC's HAL.

note: type: Plain text
en: If the driver is started without command-line arguments, it will probe all /dev/hidraw* device files for Shuttle devices, and use all devices found.  If it is started with command-line arguments, it will only probe the devices specified.
de: Wenn der Treiber ohne Befehlszeilenargumente gestartet wird, sucht er in allen /dev/hidraw*-Gerätedateien nach Shuttle-Geräten und verwendet alle gefundenen Geräte.  Wenn er mit Befehlszeilenargumenten gestartet wird, prüft er nur die angegebenen Geräte.

note: type: Plain text
en: The shuttle driver needs read permission to the Shuttle devices' /dev/hidraw* device files.  This can be accomplished by adding a file B</etc/udev/rules.d/99-shuttle.rules>, with the following contents:
de: Der Shuttle-Treiber benötigt Leserechte für die Gerätedateien /dev/hidraw* der Shuttle-Geräte.  Dies kann durch Hinzufügen einer Datei B</etc/udev/rules.d/99-shuttle.rules> mit dem folgenden Inhalt erreicht werden:

note: type: Plain text
en: The LinuxCNC Debian package installs an appropriate udev file automatically, but if you are building LinuxCNC from source and are not using the Debian packaging, you'll need to install this file by hand.  If you install the file by hand you'll need to tell udev to reload its rules files by running `udevadm control --reload-rules`.
de: Das LinuxCNC Debian-Paket installiert eine entsprechende udev-Datei automatisch, aber wenn Sie LinuxCNC aus dem Quellcode bauen und nicht das Debian-Paket verwenden, müssen Sie diese Datei von Hand installieren.  Wenn Sie die Datei von Hand installieren, müssen Sie udev anweisen, seine Regeldateien neu zu laden, indem Sie `udevadm control --reload-rules` ausführen.

note: type: SH
en: A warning about the Jog Wheel
de: Eine Warnung vor dem Jog Wheel

note: type: Plain text
en: The Shuttle devices have an internal 8-bit counter for the current jog-wheel position.  The shuttle driver can not know this value until the Shuttle device sends its first event.  When the first event comes into the driver, the driver uses the device's reported jog-wheel position to initialize counts to 0.
de: Die Shuttle-Geräte verfügen über einen internen 8-Bit-Zähler für die aktuelle Jog-Wheel-Position.  Der Shuttle-Treiber kann diesen Wert nicht kennen, bis das Shuttle-Gerät sein erstes Ereignis sendet.  Wenn das erste Ereignis beim Treiber eingeht, verwendet der Treiber die vom Gerät gemeldete Jogwheel-Position, um den Zähler auf 0 zu initialisieren.

note: type: Plain text
en: Any user interaction with the Shuttle device will generate an event, informing the driver of the jog-wheel position.  So if you (for example)  push one of the buttons at startup, the jog-wheel will work fine and notice the first click.
de: Jede Benutzerinteraktion mit dem Shuttle-Gerät erzeugt ein Ereignis, das den Fahrer über die Position des Jogwheels informiert.  Wenn Sie also (zum Beispiel) beim Start eine der Tasten drücken, funktioniert das Jog-Wheel einwandfrei und bemerkt den ersten Klick.

note: type: Plain text
en:     The momentary buttons.  "(number)" identifies which button corresponds
        to the HAL pin.  The "button-(number)" pins are True when the button
        is pushed, the "button-(number)-not" pins are True when the button
        is not pushed.
de:     Die momentanen (engl. momentary) Tasten.  "(Zahl)" gibt an, welche Schaltfläche entspricht
        zum HAL-Pin.  Die "button-(number)" Pins sind True, wenn die Taste
        gedrückt (engl. pushed) wird, sind die "button-(number)-not"-Pins True, wenn die Taste
        wird nicht gedrückt ist.

note: type: Plain text
en:     Accumulated counts from the jog wheel (the inner wheel).
de:     Kumulierte Zählungen des Jogwheels (das innere Rad).

note: type: Plain text
en:     The current deflection of the spring-wheel (the outer wheel).
        It's 0 at rest, and ranges from -7 at the counter-clockwise
        extreme to +7 at the clockwise extreme.
de:     Die aktuelle Auslenkung des Federrades (des äußeren Rades).
        Es ist 0 im Ruhezustand und reicht von -7 gegen den Uhrzeigersinn
        extrem bis +7 im Uhrzeigersinn.

note: type: Plain text
en: B<sim_pin> - GUI for displaying and setting one or more HAL inputs
de: B<sim_pin> - GUI zur Anzeige und Einstellung von einem oder mehreren HAL-Eingängen

note: type: Plain text
en: I<Options>:
      B<--help> (shows help text)
      B<--title title_string>
de: I<Optionen>:
      B<--help> (zeigt den Hilfetext an)
      B<--titel überschrift_string>

note: type: Plain text
en: For bit items, the name may include a /mode= specifier:
        I<namei>B</mode=>[B<pulse> | B<toggle> | B<hold>]
        (default is toggle)
de: Bei Bit-Elementen kann der Name einen /mode=-Bezeichner enthalten:
        I<namei>B</mode=>[B<pulse> | B<umschalten> | B<halten>]
        (Standard ist Umschalten)

note: type: Plain text
en: HAL boolean items (bit) and numerical items (u32, s32, float) are supported.
de: HAL boolesche Elemente (Bit) und numerische Elemente (u32, s32, float) werden unterstützt.

note: type: Plain text
en: If the named input is a numerical type, the GUI displays:
de: Handelt es sich bei der benannten Eingabe um einen numerischen Typ, wird die GUI angezeigt:

note: type: Plain text
en:    B<Entry>  Entry widget for value or a valid Tcl expression.
de:    B<Entry> Eingabe-Widget für Wert oder einen gültigen Tcl-Ausdruck.

note: type: Plain text
en:    B<Set>    Pushbutton to set new value from Entry (or use E<lt>RETURNE<gt>)
de:    B<Set> Drucktaste zum Einstellen eines neuen Wertes aus der Eingabe (oder mit E<lt>RETURNE<gt>)

note: type: Plain text
en:    B<Reset>  Pushbutton to reset to the value present on initiation
de:    B<Reset> Drucktaste zum Zurücksetzen auf den Wert, der beim Einschalten vorhanden war

note: type: Plain text
en: If the input is a B<bit> type, the GUI shows a single pushbutton that is controlled by radio-button selectors:
de: Handelt es sich bei dem Eingang um einen B<bit>-Typ, zeigt die GUI eine einzelne Drucktaste an, die über Auswahlknöpfe gesteuert wird:

note: type: Plain text
en:    mode=B<pulse>   Pulse input to 1 for each pushbutton press
de:    mode=B<pulse> Impulseingang auf 1 für jeden Tastendruck

note: type: Plain text
en:    mode=B<toggle>  Toggle input for each pushbutton press
de:    mode=B<toggle> Umschalten des Eingangs bei jedem Tastendruck

note: type: Plain text
en:    mode=B<hold>    Set input to 1 while pushbutton pressed
de:    mode=B<hold> Eingang auf 1 setzen, solange der Taster gedrückt ist

note: type: Plain text
en: If the bit item mode begins with an uppercase letter, the radio buttons for selecting other modes are not shown
de: Wenn der Bitelementmodus mit einem Großbuchstaben beginnt, werden die Optionsschaltflächen zur Auswahl anderer Modi nicht angezeigt

note: type: Plain text
en: LinuxCNC or a standalone HAL application must be running
de: LinuxCNC oder eine eigenständige HAL-Anwendung muss ausgeführt werden

note: type: Plain text
en: A named item can specify a B<pin>, B<param>, or B<signal>.  The named item must be writable:
de: Ein benanntes Element kann einen B<pin>, B<param> oder B<signal> angeben.  Das benannte Element muss beschreibbar sein:

note: type: Plain text
en:   B<pin    IN or I/O> (and not connected to a signal with a writer)
de:   B<Pin IN oder I/O> (und nicht an ein Signal mit einem Writer verbunden)

note: type: Plain text
en:   B<signal connected to a writable pin>
de:   B<Signal, das mit einem beschreibbaren Pin verbunden ist>

note: type: Plain text
en: B<sim_pin> can be used interactively from a shell command line or started automatically from a configuration INI file.
de: B<sim_pin> kann interaktiv über eine Shell-Befehlszeile verwendet oder automatisch über eine INI-Konfigurationsdatei gestartet werden.

note: type: Plain text
en: Example for INI file usage:
de: Beispiel für die Verwendung einer INI-Datei:

note: type: Plain text
en: simulate_probe - simulate a probe input
de: simulate_probe - simuliert eine Sondeneingabe

note: type: Plain text
en: B<simulate_probe> Creates an on-screen GUI button to simulate touch probe input. Typically used in sim configs or debugging.
de: B<simulate_probe> Erzeugt eine GUI-Schaltfläche auf dem Bildschirm, um die Eingabe durch einen Taster zu simulieren. Wird typischerweise in Simulationskonfigurationen oder bei der Fehlersuche verwendet.

note: type: Plain text
en: stepconf - A configuration wizard for parallel-port based machines.
de: stepconf - Ein Konfigurationsassistent für Maschinen mit parallelen Anschlüssen.

note: type: Plain text
en: thermistor - compute temperature indicated by a thermistor
de: Thermistor - Berechnung der von einem Thermistor angezeigten Temperatur

note: type: Plain text
en: This component computes the temperature indicated by a thermistor in a voltage-divider ladder.  It uses the Beta-parameter variant of the Steinhart-Hart equation, described here:
de: Diese Komponente berechnet die von einem Thermistor in einem Spannungsteiler angezeigte Temperatur.  Sie verwendet die Beta-Parameter-Variante der Steinhart-Hart-Gleichung, die hier beschrieben wird:

note: type: Plain text
en: Reference temperature of the thermistor, in degrees Celsius (typically 25 C).  This must be set before the component can compute the thermistor temperature.  The reference temperature information is supplied by the thermistor manufacturer.
de: Referenztemperatur des Thermistors, in Grad Celsius (typischerweise 25 C).  Diese muss eingestellt werden, bevor die Komponente die Temperatur des Thermistors berechnen kann.  Die Angaben zur Referenztemperatur werden vom Hersteller des Thermistors geliefert.

note: type: Plain text
en: Resistance of the thermistor at the reference temperature.  This must be set before the component can compute the thermistor temperature.  The reference resistance information is supplied by the thermistor manufacturer.
de: Widerstand des Thermistors bei der Referenztemperatur.  Dieser muss eingestellt werden, bevor die Komponente die Temperatur des Thermistors berechnen kann.  Die Informationen zum Referenzwiderstand werden vom Hersteller des Thermistors geliefert.

note: type: Plain text
en: Beta parameter of the thermistor (sometimes just called B).  This must be set before the component can compute the thermistor temperature.  The Beta parameter is supplied by the thermistor manufacturer.
de: Beta-Parameter des Thermistors (manchmal einfach B genannt).  Dieser muss eingestellt werden, bevor die Komponente die Thermistortemperatur berechnen kann.  Der Beta-Parameter wird vom Hersteller des Thermistors bereitgestellt.

note: type: Plain text
en: Resistance of the other resistor in the voltage-divider ladder.  This must be set before the component can compute the thermistor temperature.
de: Widerstand des anderen Widerstands in der Spannungsteiler-Leiter.  Dieser muss eingestellt werden, bevor die Komponente die Thermistortemperatur berechnen kann.

note: type: Plain text
en: Supply voltage of the voltage-divider ladder.
de: Versorgungsspannung der Spannungsteilerleiter.

note: type: Plain text
en: take configuration from this section in the INI file. Defaults to 'VFD-B'.
de: übernimmt die Konfiguration aus diesem Abschnitt in der INI-Datei. Standardmäßig ist 'VFD-B' eingestellt.

note: type: Plain text
en: How often the Modbus is polled (default interval 0.1 seconds).
de: Wie oft der Modbus abgefragt wird (Standardintervall 0,1 Sekunden).

note: type: Plain text
en: Nameplate Hz of motor (default 50). Used to calculate target frequency (together with I<nameplate-RPM> ) for a target RPM value as given by speed-command.
de: Nennfrequenz des Motors (Standard 50). Dient zur Berechnung der Sollfrequenz (zusammen mit I<Namensschild-Drehzahl>) für einen durch den Drehzahlbefehl vorgegebenen Soll-Drehzahlwert.

note: type: Plain text
en: Nameplate RPM of motor (default 1410)
de: Nenndrehzahl des Motors (Standardwert 1410)

note: type: Plain text
en: Do-not-exceed soft limit for motor RPM (defaults to I<nameplate-RPM> ).
de: Weicher Grenzwert für die Motordrehzahl, der nicht überschritten werden darf (Standardwert ist I<Namensschild-Drehzahl> ).

note: type: Plain text
en: Speed tolerance (default 0.01) for determining whether spindle is at speed (0.01 meaning: output frequency is within 1% of target frequency).
de: Drehzahltoleranz (Standardwert 0,01) zur Bestimmung, ob die Spindel auf Drehzahl ist (0,01 bedeutet: Ausgangsfrequenz liegt innerhalb von 1% der Sollfrequenz).

note: type: Plain text
en: The vfdb_vfd driver takes precedence over panel control while it is enabled (see I<.enable> pin), effectively disabling the panel. Clearing the I<.enable> pin re-enables the panel. Pins and parameters can still be set, but will not be written to the VFD untile the .enable pin is set. Operating parameters are still read while bus control is disabled.
de: Der vfdb_vfd-Treiber hat Vorrang vor der Steuerung des Panels, solange es aktiviert ist (siehe I<.enable>-Pin), wodurch das Panel effektiv deaktiviert wird. Durch Löschen des I<.enable>-Pins wird das Panel wieder aktiviert. Pins und Parameter lassen sich weiterhin eingestellen, werden aber nicht in den VFD geschrieben, solange der .enable-Pin nicht gesetzt ist. Betriebsparameter werden weiterhin gelesen, während die Bussteuerung deaktiviert ist.

note: type: Plain text
en: Exiting the vfdb_vfd driver in a controlled way will release the VFD from the bus and restore panel control.
de: Durch kontrolliertes Beenden des vfdb_vfd-Treibers wird der VFD vom Bus getrennt und die Steuerung durch das Bedienfeld wiederhergestellt.

note: type: Plain text
en: See the LinuxCNC Integrators Manual for more information. For a detailed register description of the Delta VFD-B, see the VFD manual.
de: Weitere Informationen finden Sie im LinuxCNC Integrators Manual. Für eine detaillierte Registerbeschreibung des Delta VFD-B, siehe das VFD-Handbuch.

note: type: Plain text
en: Yishin Li; based on vfd11_vfd by Michael Haberler.
de: Yishin Li; basierend auf vfd11_vfd von Michael Haberler.

note: type: Plain text
en: B<vfs11_vfd> - HAL userspace component for Toshiba-Schneider VF-S11 Variable Frequency Drives
de: B<vfs11_vfd> - HAL Userspace Komponente für Toshiba-Schneider VF-S11 Frequenzumrichter

note: type: Plain text
en: This manual page explains the B<vfs11_vfd> component. This component reads and writes to the vfs11 via a Modbus connection.
de: Diese Handbuchseite erklärt die Komponente B<vfs11_vfd>. Diese Komponente liest und schreibt in den vfs11 über eine Modbus-Verbindung.

note: type: Plain text
en: B<vfs11_vfd> is for use with LinuxCNC.
de: B<vfs11_vfd> ist für die Verwendung mit LinuxCNC.

note: type: Plain text
en: Turn on debugging messages. Also toggled by sending a USR1 signal to the vfs11_vfd process.
de: Schaltet Debugging-Meldungen ein. Wird auch durch Senden eines USR1-Signals an den Prozess vfs11_vfd eingeschaltet.

note: type: Plain text
en: Turn on Modbus debugging messages. This will cause all Modbus messages to be printed in hex on the terminal.  Also toggled by sending a USR2 signal to the vfs11_vfd process.
de: Schalten Sie die Modbus-Debugging-Meldungen ein. Dies bewirkt, dass alle Modbus-Meldungen in Hexadezimalschrift auf dem Terminal ausgegeben werden.  Wird auch durch Senden eines USR2-Signals an den Prozess vfs11_vfd umgeschaltet.

note: type: Plain text
en: takes configuration from this INI file.  Defaults to environment variable INI_FILE_NAME.
de: übernimmt die Konfiguration aus dieser INI-Datei.  Standardmäßig wird die Umgebungsvariable INI_FILE_NAME verwendet.

note: type: Plain text
en: take configuration from this section in the INI file. Defaults to 'VFS11'.
de: übernimmt die Konfiguration aus diesem Abschnitt in der INI-Datei. Der Standardwert ist 'VFS11'.

note: type: IP
en: B<E<lt>nameE<gt>.acceleration-pattern\ (bit,\ in)>
de: B<E<lt>NameE<gt>.acceleration-pattern\ (bit,\ in)>

note: type: Plain text
en: when true, set acceleration and deceleration times as defined in registers F500 and F501 respectively.  Used in PID loops to choose shorter ramp times to avoid oscillation.
de: Wenn wahr, werden die in den Registern F500 und F501 definierten Beschleunigungs- und Verzögerungszeiten eingestellt.  Wird in PID-Schleifen verwendet, um kürzere Rampenzeiten zu wählen, um Schwingungen zu vermeiden.

note: type: IP
en: B<E<lt>nameE<gt>.alarm-code\ (s32,\ out)>
de: B<E<lt>NameE<gt>.alarm-code\ (s32,\ out)>

note: type: Plain text
en: non-zero if drive is in alarmed state. Bitmap describing alarm information (see register FC91 description).  Use I<err-reset> (see below) to clear the alarm.
de: ungleich Null, wenn sich der Antrieb im Alarmzustand befindet. Bitmap zur Beschreibung der Alarminformationen (siehe Beschreibung des Registers FC91).  Verwenden Sie I<err-reset> (siehe unten), um den Alarm zu löschen.

note: type: Plain text
en: when drive is at commanded speed (see I<speed-tolerance> below)
de: wenn der Antrieb die Solldrehzahl erreicht (siehe I<Drehzahltoleranz> unten)

note: type: IP
en: B<E<lt>nameE<gt>.current-load-percentage\ (float,\ out)>
de: B<E<lt>NameE<gt>.current-load-percentage\ (float,\ out)>

note: type: Plain text
en: reported from the VFD
de: von der VFD gemeldet

note: type: IP
en: B<E<lt>nameE<gt>.dc-brake\ \ (bit,\ in)>
de: B<E<lt>NameE<gt>.dc-brake\ \ (bit,\ in)>

note: type: Plain text
en: engage the DC brake. Also turns off spindle-on.
de: die Gleichstrombremse einschalten. Schaltet auch die Spindel ein.

note: type: Plain text
en: enable the VFD.  If false, all operating parameters are still read but control is released and panel control is enabled (subject to VFD setup).
de: den VFD aktivieren.  Bei "false" werden weiterhin alle Betriebsparameter gelesen, aber die Steuerung wird freigegeben und die Bedienfeldsteuerung ist aktiviert (abhängig von der VFD-Einstellung).

note: type: Plain text
en: reset errors (alarms a.k.a Trip and e-stop status).  Resetting the VFD may cause a 2-second delay until it's rebooted and Modbus is up again.
de: Rücksetzen von Fehlern (Alarme, z. B. Auslösung und Not-Aus-Status).  Das Zurücksetzen des VFD kann eine 2-Sekunden-Verzögerung verursachen, bis der VFD neu gebootet und der Modbus wieder aktiv ist.

note: type: IP
en: B<E<lt>nameE<gt>.estop\ (bit,\ in)>
de: B<E<lt>NameE<gt>.estop\ (bit,\ in)>

note: type: Plain text
en: put the VFD into emergency-stopped status. No operation possible until cleared with I<err-reset> or powercycling.
de: versetzt den VFD in den Not-Aus-Status. Kein Betrieb möglich, bis er mit I<err-reset> oder Powercycling gelöscht wird.

note: type: Plain text
en: current target frequency in Hz as set through speed-command (which is in RPM), from the VFD
de: die aktuelle Sollfrequenz in Hz, wie sie durch den Drehzahlsollwert (in RPM) vom VFD vorgegeben wird

note: type: Plain text
en: current output frequency of the VFD
de: aktuelle Ausgangsfrequenz des VFD

note: type: Plain text
en: current load report from VFD
de: Stromlastbericht vom VFD

note: type: Plain text
en: the VFD is in emergency stop status (blinking "E" on panel).  Use I<err-reset> to reboot the VFD and clear the e-stop status.
de: der VFD befindet sich im Not-Aus-Status (blinkendes "E" auf dem Bedienfeld).  Verwenden Sie I<err-reset>, um den VFD neu zu starten und den Notstopp-Status zu löschen.

note: type: Plain text
en: true when the VFD reports 0 Hz output
de: true, wenn der VFD 0 Hz Ausgang meldet

note: type: Plain text
en: 1 for ON and 0 for OFF, enables the VF-S11 'jog mode'.  Speed control is disabled, and the output frequency is determined by register F262 (preset to 5 Hz).  This might be useful for spindle orientation.
de: 1 für ON und 0 für OFF, aktiviert den VF-S11 "Tippbetrieb".  Die Drehzahlregelung ist deaktiviert, und die Ausgangsfrequenz wird durch das Register F262 bestimmt (voreingestellt auf 5 Hz).  Dies kann für die Spindelausrichtung nützlich sein.

note: type: IP
en: B<E<lt>nameE<gt>.max-rpm\ (float,\ R)>
de: B<E<lt>NameE<gt>.max-rpm\ (float,\ R)>

note: type: Plain text
en: actual RPM limit based on maximum frequency the VFD may generate, and the motors nameplate values.  For instance, if I<nameplate-HZ> is 50, and I<nameplate-RPM_> is 1410, but the VFD may generate up to 80Hz, then I<max-rpm> would read as 2256 (80*1410/50). The frequency limit is read from the VFD at startup.  To increase the upper frequency limit, the UL and FH parameters must be changed on the panel.  See the VF-S11 manual for instructions how to set the maximum frequency.
de: tatsächliche Drehzahlgrenze auf der Grundlage der maximalen Frequenz, die der VFD erzeugen kann, und der Werte auf dem Typenschild des Motors.  Wenn z.B. I<Namensschild-HZ> 50 und I<Namensschild-Drehzahl_> 1410 ist, der VFD aber bis zu 80 Hz erzeugen kann, dann wird I<max-rpm> als 2256 (80*1410/50) angezeigt. Die Frequenzgrenze wird beim Einschalten vom VFD abgelesen.  Um die obere Frequenzgrenze zu erhöhen, müssen die Parameter UL und FH am Bedienfeld geändert werden.  Anweisungen zum Einstellen der Höchstfrequenz finden Sie im Handbuch des VF-S11.

note: type: Plain text
en: true when the Modbus session is successfully established and the last 10 transactions returned without error.
de: true, wenn die Modbus-Sitzung erfolgreich aufgebaut ist und die letzten 10 Transaktionen ohne Fehler zurückgegeben wurden.

note: type: Plain text
en: estimated current RPM value, from the VFD
de: geschätzter aktueller Drehzahlwert, vom VFD

note: type: IP
en: B<E<lt>nameE<gt>.output-current-percentage\ (float,\ out)>
de: B<E<lt>NameE<gt>.output-current-percentage\ (float,\ out)>

note: type: IP
en: B<E<lt>nameE<gt>.output-voltage-percentage\ (float,\ out)>
de: B<E<lt>NameE<gt>.output-voltage-percentage\ (float,\ out)>

note: type: Plain text
en: speed sent to VFD in RPM.  It is an error to send a speed faster than the Motor Max RPM as set in the VFD
de: Die an den VFD gesendete Drehzahl in RPM.  Es ist ein Fehler, eine Drehzahl zu senden, die höher ist als die im VFD eingestellte maximale Motordrehzahl.

note: type: Plain text
en: 1 for FWD and 0 for REV, sent to VFD
de: 1 für FWD und 0 für REV, gesendet an VFD

note: type: Plain text
en: 1 for ON and 0 for OFF, only on when running B<\&\&>
de: 1 für EIN und 0 für AUS, nur im Betrieb B<\&\&>

note: type: IP
en: E<lt>nameE<gt>.max-speed\ (bit,\ in)
de: E<lt>NameE<gt>.max-speed\ (bit,\ in)

note: type: Plain text
en: ignore the loop-time parameter and run Modbus at maximum speed, at the expense of higher CPU usage.  Suggested use during spindle positioning.
de: ignoriert den Schleifenzeit (engl. loop-time)-Parameter und lässt Modbus mit maximaler Geschwindigkeit laufen, auf Kosten einer höheren CPU-Auslastung. Empfohlene Verwendung während der Spindelpositionierung.

note: type: Plain text
en: Drive Status of the VFD (see the TOSVERT VF-S11 Communications Function Instruction Manual, register FD01). A bitmap.
de: Antriebsstatus des VFD (siehe TOSVERT VF-S11 Communications Function Instruction Manual, Register FD01). Eine Bitmap.

note: type: Plain text
en: total number of transactions returning a Modbus error B<\&\&>
de: Gesamtzahl der Transaktionen, die einen Modbus-Fehler zurückgeben B<\&\&>

note: type: Plain text
en: upper limit read from VFD setup.
de: oberer Grenzwert aus der VFD-Einstellung.

note: type: Plain text
en: how often the Modbus is polled (default interval 0.1 seconds)
de: wie oft der Modbus abgefragt wird (Standardintervall 0,1 Sekunden)

note: type: Plain text
en: Nameplate Hz of motor (default 50).  Used to calculate target frequency (together with I<nameplate-RPM> ) for a target RPM value as given by speed-command.
de: Nennfrequenz des Motors (Standard 50).  Dient zur Berechnung der Sollfrequenz (zusammen mit I<Namensschild-Drehzahl>) für einen durch den Drehzahlbefehl vorgegebenen Soll-Drehzahlwert.

note: type: Plain text
en: do-not-exceed soft limit for motor RPM (defaults to I<nameplate-RPM> ).
de: weicher Grenzwert für die Motordrehzahl, der nicht überschritten werden darf (Standardwert ist I<Namensschild-Drehzahl> ).

note: type: Plain text
en: speed tolerance (default 0.01) for determining whether spindle is at speed (0.01 meaning: output frequency is within 1% of target frequency)
de: Drehzahltoleranz (Standardwert 0,01) zur Bestimmung, ob die Spindel auf Drehzahl ist (0,01 bedeutet: Ausgangsfrequenz liegt innerhalb von 1% der Sollfrequenz)

note: type: Plain text
en: The vfs11_vfd driver takes precedence over panel control while it is enabled (see I<.enable> pin), effectively disabling the panel. Clearing the I<.enable> pin re-enableds the panel. Pins and parameters can still be set, but will not be written to the VFD untile the .enable pin is set. Operating parameters are still read while bus control is disabled.
de: Der vfs11_vfd-Treiber hat Vorrang vor der Steuerung des Panels, solange es aktiviert ist (siehe I<.enable>-Pin), wodurch das Panel effektiv deaktiviert wird. Durch Löschen des I<.enable>-Pins wird das Panel wieder aktiviert. Pins und Parameter können weiterhin eingestellt werden, aber werden nicht in den VFD geschrieben, solange der .enable-Pin nicht gesetzt ist. Betriebsparameter werden weiterhin gelesen, während die Bussteuerung deaktiviert ist.

note: type: Plain text
en: Exiting the vfs11_vfd driver in a controlled will release the VFD from the bus and restore panel control.
de: Durch das Beenden des vfs11_vfd-Treibers in einem kontrollierten Zustand wird der VFD vom Bus getrennt und die Steuerung durch das Bedienfeld wiederhergestellt.

note: type: Plain text
en: See the LinuxCNC Integrators Manual for more information. For a detailed register description of the Toshiba VFD's, see the "TOSVERT VF-S11 Communications Function Instruction Manual" (Toshiba document number E6581222)  and the "TOSVERT VF-S11 Instruction manual" (Toshiba document number E6581158).
de: Weitere Informationen finden Sie im LinuxCNC Integrators Manual. Eine detaillierte Registerbeschreibung der Toshiba VFDs finden Sie im "TOSVERT VF-S11 Communications Function Instruction Manual" (Toshiba Dokumentnummer E6581222) und im "TOSVERT VF-S11 Instruction manual" (Toshiba Dokumentnummer E6581158).

note: type: Plain text
en: Michael Haberler; based on gs2_vfd by Steve Padnos and John Thornton.
de: Michael Haberler; basierend auf gs2_vfd von Steve Padnos und John Thornton.

note: type: Plain text
en: wj200_vfd - Hitachi wj200 modbus driver
de: wj200_vfd - Hitachi wj200 Modbus-Treiber

note: type: Plain text
en: 1 when reverse 0 when forward
de: 1 wenn rückwärts 0 wenn vorwärts

note: type: Plain text
en: There are at least two hardware versions -- one with 16 buttons and a more common one with 18 buttons.  The information herein is based on the 18 button device with a USB Vendor:Product code of 10CE:EB70.
de: Es gibt mindestens zwei Hardware-Versionen - eine mit 16 Tasten und eine häufigere mit 18 Tasten.  Die Informationen hier basieren auf dem Gerät mit 18 Tasten und dem USB-Hersteller:Produktcode 10CE:EB70.

note: type: Plain text
en: B</etc/udev/rules.d/99-xhc-hb04.rules> with the single line:
de: B</etc/udev/rules.d/99-xhc-hb04.rules> mit der einzelnen Zeile:

note: type: TP
en: (s32 out) I<xhc-hb04.jog.counts-neg> The value of the
de: (s32 out) I<xhc-hb04.jog.counts-neg> Der Wert des

note: type: Plain text
en: xhc-hb04.jog.counts multiplied by -1.
de: xhc-hb04.jog.counts multipliziert mit -1.

note: type: TP
en: (float out) I<xhc-hb04.jog.scale>  Value is the current stepsize
de: (float out) I<xhc-hb04.jog.scale> Wert ist die aktuelle Schrittweite

note: type: Plain text
en: multiplied by 0.001 (typically connect to axis.N.jog-scale).
de: multipliziert mit 0,001 (typischerweise mit axis.N.jog-scale verbinden).

note: type: SH
en: Experimental: Pins for halui plus/minus jogging
de: Experimentell: Pins für Halui plus/minus Jogging

note: type: Plain text
en: These pins provide some support for non-trivkins, world mode jogging.
de: Diese Pins bieten eine gewisse Unterstützung für Nicht-Trivkins, Weltmodus-Jogging.

note: type: TP
en: (float in) I<xhc-hb04.jog.max-velocity> Connect to halui.max-velocity.value
de: (float in) I<xhc-hb04.jog.max-velocity> Verbinden mit halui.max-velocity.value

note: type: TP
en: (float out) I<xhc-hb04.jog.velocity> Connect to halui.jog-speed
de: (float out) I<xhc-hb04.jog.velocity> Verbinden mit halui.jog-speed

note: type: TP
en: (bit out) I<xhc-hb04.jog.plus-[xyza]> Connect to halui.jog.N.plus
de: (bit out) I<xhc-hb04.jog.plus-[xyza]> Verbindung mit halui.jog.N.plus

note: type: TP
en: (float out) I<xhc-hb04.jog.increment> Debug pin -- abs(delta_pos)
de: (float out) I<xhc-hb04.jog.increment> Debug-Pin -- abs(delta_pos)

note: type: Plain text
en: The output bit type pins are TRUE when the button is pressed.
de: Die Pins vom Typ Ausgabebit sind TRUE, wenn die Taste gedrückt wird.

note: type: Plain text
en: The desired location within the thread.  This determines when the function will run, in relation to other functions in the thread.  A positive number indicates the desired location as measured from the beginning of the thread, and a negative is measured from the end.  So +1 means this function will become the first one to run, +5 means it will be the fifth one to run, -2 means it will be next to last, and -1 means it will be last.  Zero is illegal.
de: Die gewünschte Position innerhalb des Threads.  Damit wird festgelegt, wann die Funktion im Verhältnis zu anderen Funktionen im Thread ausgeführt wird.  Eine positive Zahl gibt die gewünschte Position an, gemessen vom Anfang des Threads, eine negative Zahl wird vom Ende aus gemessen.  So bedeutet +1, dass diese Funktion als erste ausgeführt wird, +5 bedeutet, dass sie als fünfte ausgeführt wird, -2 bedeutet, dass sie als vorletzte ausgeführt wird, und -1 bedeutet, dass sie als letzte ausgeführt wird.  Null ist illegal.

note: type: Plain text
en: B<hal_add_funct_to_thread> adds a function exported by a realtime HAL component to a realtime thread.  This determines how often and in what order functions are executed.
de: B<hal_add_funct_to_thread> fügt eine von einer Echtzeit-HAL-Komponente exportierte Funktion zu einem Echtzeit-Thread hinzu.  Damit wird festgelegt, wie oft und in welcher Reihenfolge die Funktionen ausgeführt werden.

note: type: Plain text
en: B<hal_del_funct_from_thread> removes a function from a thread.
de: B<hal_del_funct_from_thread> entfernt eine Funktion aus einem Thread.

note: type: Plain text
en: Returns a HAL status code.
de: Gibt einen HAL-Statuscode zurück.

note: type: Plain text
en: Call only from realtime init code, not from user space or realtime code.
de: Aufruf nur aus dem Echtzeit-Init-Code, nicht aus dem User-Space- oder Echtzeit-Code.

note: type: Plain text
en: hal_create_thread - Create a HAL thread
de: hal_create_thread - Erzeugt einen HAL-Thread

note: type: Plain text
en: The interval, in nanoseconds, between iterations of the thread
de: Das Intervall, in Nanosekunden, zwischen den Iterationen des Threads

note: type: Plain text
en: Must be nonzero if a function which uses floating-point will be attached to this thread.
de: Muss ungleich Null sein, wenn eine Funktion, die Fließkommazahlen verwendet, an diesen Thread angehängt wird.

note: type: Plain text
en: B<hal_create_thread> establishes a realtime thread that will execute one or more HAL functions periodically.
de: B<hal_create_thread> richtet einen Echtzeit-Thread ein, der eine oder mehrere HAL-Funktionen periodisch ausführt.

note: type: Plain text
en: All thread periods are rounded to integer multiples of the hardware timer period, and the timer period is based on the first thread created.  Threads must be created in order, from the fastest to the slowest.  HAL assigns decreasing priorities to threads that are created later, so creating them from fastest to slowest results in rate monotonic priority scheduling.
de: Alle Thread-Perioden werden auf ganzzahlige Vielfache der Hardware-Timer-Periode gerundet, und die Timer-Periode basiert auf dem ersten erstellten Thread.  Die Threads müssen in der Reihenfolge vom schnellsten zum langsamsten erstellt werden.  HAL weist Threads, die später erstellt werden, abnehmende Prioritäten zu, so dass die Erstellung der Threads vom schnellsten zum langsamsten zu einer monotonen Prioritätsplanung führt.

note: type: Plain text
en: B<hal_delete_thread> deletes a previously created thread.
de: B<hal_delete_thread> löscht einen zuvor erstellten Thread.

note: type: Plain text
en: hal_exit - Shut down HAL
de: hal_exit - HAL beenden

note: type: Plain text
en: A HAL component identifier returned by an earlier call to B<hal_init>.
de: Eine HAL-Komponenten-Kennung, die durch einen früheren Aufruf von B<hal_init> zurückgegeben wurde.

note: type: Plain text
en: B<hal_exit> shuts down and cleans up HAL and RTAPI.  It must be called prior to exit by any module that called B<hal_init>.
de: B<hal_exit> fährt HAL und RTAPI herunter und bereinigt sie.  Es muß vor dem Beenden von jedem Modul aufgerufen werden, das B<hal_init> aufgerufen hat.

note: type: Plain text
en: Call only from within user or init/cleanup code, not from realtime tasks.
de: Aufruf nur aus dem Benutzer- oder Init/Cleanup-Code, nicht aus Echtzeit-Tasks.

note: type: Plain text
en: hal_export_funct - create a realtime function callable from a thread
de: hal_export_funct - erzeugt eine Echtzeitfunktion, die von einem Thread aus aufgerufen werden kann

note: type: Plain text
en: The name of the function.
de: Der Name der Funktion.

note: type: Plain text
en: The pointer to the function
de: Der Zeiger auf die Funktion

note: type: Plain text
en: The argument to be passed as the first parameter of I<funct>
de: Das Argument, das als erster Parameter von I<funct> übergeben wird

note: type: Plain text
en: Nonzero if the function uses floating-point operations, including assignment of floating point values with "=".
de: Nicht null, wenn die Funktion Gleitkommaoperationen verwendet, einschließlich der Zuweisung von Gleitkommawerten mit "=".

note: type: Plain text
en: If reentrant is non-zero, the function may be preempted and called again before the first call completes.  Otherwise, it may only be added to one thread.
de: Wenn reentrant ungleich Null ist, kann die Funktion vorzeitig beendet und erneut aufgerufen werden, bevor der erste Aufruf abgeschlossen ist.  Andernfalls darf sie nur zu einem Thread hinzugefügt werden.

note: type: Plain text
en: B<hal_export_funct> makes a realtime function provided by a component available to the system.  A subsequent call to B<hal_add_funct_to_thread> can be used to schedule the execution of the function as needed by the system.
de: B<hal_export_funct> macht eine Echtzeitfunktion, die von einer Komponente bereitgestellt wird, für das System verfügbar.  Ein anschließender Aufruf von B<hal_add_funct_to_thread> kann verwendet werden, um die Ausführung der Funktion nach Bedarf des Systems zu planen.

note: type: Plain text
en: When this function is placed on a HAL thread, and HAL threads are started, I<funct> is called repeatedly with two arguments: I<void *arg> is the same value that was given to B<hal_export_funct>, and I<long period> is the interval between calls in nanoseconds.
de: Wenn diese Funktion auf einen HAL-Thread gelegt wird und HAL-Threads gestartet werden, wird I<funct> wiederholt mit zwei Argumenten aufgerufen: I<void *arg> ist der gleiche Wert, der B<hal_export_funct> übergeben wurde, und I<long period> ist das Intervall zwischen den Aufrufen in Nanosekunden.

note: type: Plain text
en: Each call to the function should do a small amount of work and return.
de: Jeder Aufruf der Funktion sollte einen kleinen Teil der Arbeit erledigen und zurückkehren.

note: type: Plain text
en: hal_init - Sets up HAL and RTAPI
de: hal_init – Richtet HAL und RTAPI ein

note: type: Plain text
en: B<hal_init> sets up HAL and RTAPI.  It must be called by any module that intends to use the API, before any other RTAPI calls.
de: B<hal_init> richtet HAL und RTAPI ein.  Es muß von jedem Modul aufgerufen werden, das die API verwenden will, und zwar vor allen anderen RTAPI-Aufrufen.

note: type: Plain text
en: I<modname> must point to a string that identifies the module.  The string may be no longer than B<HAL_NAME_LEN> characters.
de: I<modname> muss auf eine Zeichenkette verweisen, die das Modul identifiziert.  Die Zeichenkette darf nicht länger als B<HAL_NAME_LEN> Zeichen sein.

note: type: Plain text
en: Call only from within user or init/cleanup code, not from relatime tasks.
de: Aufruf nur aus dem user- oder Init/Cleanup-Code, nicht aus relatime-Tasks.

note: type: Plain text
en: hal_malloc - Allocate space in the HAL shared memory area
de: hal_malloc - Zuweisung von Speicherplatz im gemeinsamen HAL-Speicherbereich

note: type: Plain text
en: B<hal_malloc> allocates a block of memory from the main HAL shared memory area.  It should be used by all components to allocate memory for HAL pins and parameters.  It allocates `size' bytes, and returns a pointer to the allocated space, or NULL (0) on error.  The returned pointer will be properly aligned for any type HAL supports.  A component should allocate during initialization all the memory it needs.
de: B<hal_malloc> weist einen Speicherblock aus dem gemeinsamen Hauptspeicherbereich des HAL zu.  Es sollte von allen Komponenten verwendet werden, um Speicher für HAL-Pins und Parameter zuzuweisen.  Sie weist `size'-viele Bytes zu und gibt einen Zeiger auf den zugewiesenen Speicherplatz oder im Fehlerfall NULL (0) zurück.  Der zurückgegebene Zeiger ist für jeden von HAL unterstützten Typ korrekt ausgerichtet.  Eine Komponente sollte während der Initialisierung den gesamten Speicher zuweisen, den sie benötigt.

note: type: Plain text
en: The allocator is very simple, and there is no `free'.  The entire HAL shared memory area is freed when the last component calls B<hal_exit>.  This means that if you continuously install and remove one component while other components are present, you eventually will fill up the shared memory and an install will fail.  Removing all components completely clears memory and you start fresh.
de: Der Allokator ist sehr einfach, und es gibt kein `free'.  Der gesamte gemeinsame HAL-Speicherbereich wird freigegeben, wenn die letzte Komponente B<hal_exit> aufruft.  Das bedeutet, wenn Sie ständig eine Komponente installieren und entfernen, während andere Komponenten vorhanden sind, wird der gemeinsam genutzte Speicher irgendwann voll sein, und eine Installation wird fehlschlagen.  Wenn Sie alle Komponenten vollständig entfernen, wird der Speicher freigegeben und Sie können neu beginnen.

note: type: Plain text
en: A pointer to the allocated space, which is properly aligned for any variable HAL supports.  Returns NULL on error.
de: Ein Zeiger auf den zugewiesenen Speicherplatz, der für jede von HAL unterstützte Variable korrekt ausgerichtet ist.  Gibt im Fehlerfall NULL zurück.

note: type: TH
en: hal_param_alias
de: hal_param_aliashttps://hosted.weblate.org/js/ignore-check/14788285/

note: type: Plain text
en: hal_param_alias - create an alternate name for a param
de: hal_param_alias - erstellt einen alternativen Namen für einen Parameter

note: type: Plain text
en: The original name of the param
de: Der ursprüngliche Name des Parameters

note: type: Plain text
en: The alternate name that may be used to refer to the param, or NULL to remove any alternate name.
de: Der alternative Name, der verwendet werden kann, um auf den Parameter zu verweisen, oder NULL, um jeden alternativen Namen zu entfernen.

note: type: Plain text
en: A param may have two names: the original name (the one that was passed to a B<hal_param_new> function) and an alias.
de: Ein Parameter kann zwei Namen haben: den Originalnamen (der Name, der an eine B<hal_param_new> Funktion übergeben wurde) und einen Alias.

note: type: Plain text
en: Usually, aliases are for the convenience of users and should be created and destroyed via halcmd.  However, in some cases it is sensible to create aliases directly in a component.  These cases include the case where a param is renamed, to preserve compatibility with old versions.
de: Normalerweise dienen Aliase der Bequemlichkeit der Benutzer und sollten über halcmd erstellt und gelöscht werden.  In einigen Fällen ist es jedoch sinnvoll, Aliase direkt in einer Komponente zu erstellen.  Zu diesen Fällen gehört der Fall, dass ein Parameter umbenannt wird, um die Kompatibilität mit alten Versionen zu wahren.

note: type: Plain text
en: The name to give to the created parameter
de: Der Name, der dem erstellten Parameter gegeben werden soll

note: type: Plain text
en: The direction of the parameter, from the viewpoint of the component.  It may be one of B<HAL_RO>, or B<HAL_RW> A component may assign a value to any parameter, but other programs (such as halcmd) may only assign a value to a parameter that is B<HAL_RW>.
de: Die Richtung des Parameters, aus Sicht der Komponente.  Sie kann eine von B<HAL_RO> oder B<HAL_RW> sein. Eine Komponente kann jedem Parameter einen Wert zuweisen, aber andere Programme (wie halcmd) können nur einem Parameter einen Wert zuweisen, der B<HAL_RW> ist.

note: type: Plain text
en: The address of the data, which must lie within memory allocated by B<hal_malloc>.
de: Die Adresse der Daten, die innerhalb des von B<hal_malloc> zugewiesenen Speichers liegen muss.

note: type: Plain text
en: A printf-style format string and arguments
de: Eine Formatzeichenkette im Stil von printf und Argumente

note: type: Plain text
en: The type of the parameter, as specified in B<hal_type_t(3hal)>.
de: Der Typ des Parameters, wie in B<hal_type_t(3hal)> angegeben.

note: type: Plain text
en: The B<hal_param_new> family of functions create a new I<param> object.
de: Die B<hal_param_new> Familie von Funktionen erzeugt ein neues I<param> Objekt.

note: type: Plain text
en: There are functions for each of the data types that the HAL supports.  Pins may only be linked to signals of the same type.
de: Für jeden Datentyp, den der HAL unterstützt, gibt es Funktionen.  Pins dürfen nur mit Signalen desselben Typs verknüpft werden.

note: type: Plain text
en: hal_parport - portable access to PC-style parallel ports
de: hal_parport - portabler Zugriff auf PC-ähnliche parallele Schnittstellen

note: type: Plain text
en: A pointer to a hal_parport_t structure
de: Ein Zeiger auf eine hal_parport_t-Struktur

note: type: Plain text
en: The base address of the port (if port E<gt>= 16) or the linux port number of the port (if port E<lt> 16)
de: Die Basisadresse des Ports (wenn port E<gt>= 16) oder die Linux-Portnummer des Ports (wenn port E<lt> 16)

note: type: Plain text
en: The "high" address of the port (location of the ECP registers), 0 to use a probed high address, or -1 to disable the high address
de: Die "hohe" Adresse des Anschlusses (Standort der ECP-Register), 0, um eine ermittelte hohe Adresse zu verwenden, oder -1, um die hohe Adresse zu deaktivieren

note: type: Plain text
en: Advise the driver of the desired port modes, from E<lt>linux/parport.hE<gt>.  If a linux-detected port does not provide the requested modes, a warning is printed with rtapi_print_msg.  This does not make the port request fail, because unfortunately, many systems that have working EPP parports are not detected as such by Linux.
de: Informieren Sie den Treiber über die gewünschten Port-Modi, aus E<lt>linux/parport.hE<gt>.  Wenn ein von Linux erkannter Port nicht die gewünschten Modi bereitstellt, wird mit rtapi_print_msg eine Warnung ausgegeben.  Dies führt nicht dazu, dass die Portanforderung fehlschlägt, da leider viele Systeme, die funktionierende EPP-Ports haben, von Linux nicht als solche erkannt werden.

note: type: SH
en: HIGH ADDRESS PROBING
de: HIGH-ADDRESS-SONDIERUNG (engl. PROBING)

note: type: Plain text
en: If the port is a parallel port known to Linux, and Linux detected a high I/O address, this value is used.  Otherwise, if base+0x400 is not registered to any device, it is used.  Otherwise, no address is used.  If no high address is detected, port-E<gt>base_hi is 0.
de: Wenn es sich bei der Schnittstelle um eine parallele Schnittstelle handelt, die Linux bekannt ist, und Linux eine hohe E/A-Adresse erkannt hat, wird dieser Wert verwendet.  Andernfalls, wenn base+0x400 für kein Gerät registriert ist, wird dieser Wert verwendet.  Andernfalls wird keine Adresse verwendet.  Wenn keine hohe Adresse erkannt wird, ist port-E<gt>base_hi gleich 0.

note: type: Plain text
en: B<hal_parport_get> returns a HAL status code.  On success, I<port> is filled out with information about the allocated port.  On failure, the contents of I<port> are undefined except that it is safe (but not required) to pass this port to B<hal_parport_release>.
de: B<hal_parport_get> gibt einen HAL-Statuscode zurück.  Bei Erfolg wird I<port> mit Informationen über den zugewiesenen Port ausgefüllt.  Im Fehlerfall ist der Inhalt von I<port> undefiniert, außer dass es sicher (aber nicht erforderlich) ist, diesen Port an B<hal_parport_release> zu übergeben.

note: type: Plain text
en: B<hal_parport_release> does not return a value.  It always succeeds.
de: B<hal_parport_release> gibt keinen Wert zurück.  Es ist immer erfolgreich.

note: type: Plain text
en: In new code, prefer use of rtapi_parport to hal_parport.
de: Im neuen Code ist die Verwendung von rtapi_parport gegenüber hal_parport vorzuziehen.

note: type: Plain text
en: The original name of the pin
de: Der ursprüngliche Name des Pins

note: type: Plain text
en: The alternate name that may be used to refer to the pin, or NULL to remove any alternate name.
de: Der alternative Name, der verwendet werden kann, um auf den Pin zu verweisen, oder NULL, um jeden alternativen Namen zu entfernen.

note: type: Plain text
en: A pin may have two names: the original name (the one that was passed to a B<hal_pin_new> function) and an alias.
de: Ein Pin kann zwei Namen haben: den Originalnamen (der Name, der an eine B<hal_pin_new>-Funktion übergeben wurde) und einen Alias.

note: type: Plain text
en: Usually, aliases are for the convenience of users and should be created and destroyed via halcmd.  However, in some cases it is sensible to create aliases directly in a component.  These cases include the case where a pin is renamed, to preserve compatibility with old versions.
de: Normalerweise dienen Aliase der Bequemlichkeit der Benutzer und sollten über halcmd erstellt und gelöscht werden.  In einigen Fällen ist es jedoch sinnvoll, Aliase direkt in einer Komponente zu erstellen.  Zu diesen Fällen gehört der Fall, dass ein Pin umbenannt wird, um die Kompatibilität mit alten Versionen zu wahren.

note: type: Plain text
en: The direction of the pin, from the viewpoint of the component.  It may be one of B<HAL_IN>, B<HAL_OUT>, or B<HAL_IO>.  Any number of B<HAL_IN> or B<HAL_IO> pins may be connected to the same signal, but at most one B<HAL_OUT> pin is permitted.  A component may assign a value to a pin that is B<HAL_OUT> or B<HAL_IO>, but may not assign a value to a pin that is B<HAL_IN>.
de: Die Richtung des Pins aus der Sicht der Komponente.  Es kann einer von B<HAL_IN>, B<HAL_OUT> oder B<HAL_IO> sein.  Eine beliebige Anzahl von B<HAL_IN>- oder B<HAL_IO>-Pins kann mit demselben Signal verbunden werden, es ist jedoch höchstens ein B<HAL_OUT>-Pin zulässig.  Eine Komponente kann einem Pin, der B<HAL_OUT> oder B<HAL_IO> ist, einen Wert zuweisen, aber nicht einem Pin, der B<HAL_IN> ist.

note: type: Plain text
en: The address of the pointer-to-data, which must lie within memory allocated by B<hal_malloc>.
de: Die Adresse des Zeigers auf Daten, die im von B<hal_malloc> zugewiesenen Speicher liegen muss.

note: type: Plain text
en: The type of the param, as specified in B<hal_type_t(3hal)>.
de: Der Typ des Parameters, wie in B<hal_type_t(3hal)> angegeben.

note: type: Plain text
en: The B<hal_pin_new> family of functions create a new I<pin> object.  Once a pin has been created, it can be linked to a signal object using B<hal_link>.  A pin contains a pointer, and the component that owns the pin can dereference the pointer to access whatever signal is linked to the pin.  (If no signal is linked, it points to a dummy signal.)
de: Die Funktionen der Familie B<hal_pin_new> erzeugen ein neues I<pin> Objekt.  Sobald ein Pin erstellt wurde, kann er mit Hilfe von B<hal_link> mit einem Signalobjekt verknüpft werden.  Ein Pin enthält einen Zeiger, und die Komponente, die den Pin besitzt, kann den Zeiger derefenzieren, um auf das Signal zuzugreifen, das mit dem Pin verknüpft ist.  (Wenn kein Signal verknüpft ist, zeigt er auf ein Dummy-Signal.)

note: type: Plain text
en: Returns 0 on success, or a negative errno value on failure.
de: Gibt bei Erfolg 0 oder bei einem Fehler einen negativen errno-Wert zurück.

note: type: Plain text
en: hal_port - a HAL pin type that acts as an asynchronous one way byte stream
de: hal_port - ein HAL-Pin-Typ, der als asynchroner Einweg-Byte-Stream fungiert

note: type: Plain text
en: A HAL port pin is a HAL pin that acts as a one way byte oriented data stream in real-time.  An output port on any component may be connected to an input port on any other component via a signal.  Data written on the output pin becomes accessible to the input pin.  A HAL port signal may link only a single writer and a single reader.
de: Ein HAL-Port-Pin ist ein HAL-Pin, der als einseitiger byteorientierter Datenstrom in Echtzeit fungiert.  Ein Ausgangsanschluss an einer beliebigen Komponente kann über ein Signal mit einem Eingangsanschluss an einer beliebigen anderen Komponente verbunden werden. Die an den Ausgangsanschluss geschrieben Daten werden für den Eingangsanschluss zugänglich.  Ein HAL-Portsignal kann nur einen einzigen Schreiber und einen einzigen Leser verbinden.

note: type: Plain text
en: A port also buffers data. Users should determine the proper buffer size based upon their intended application.
de: Ein Anschluss puffert auch Daten. Die Benutzer sollten die richtige Puffergröße je nach der beabsichtigten Anwendung bestimmen.

note: type: Plain text
en: Reads count bytes from the port into destination buffer dest.  hal_port_read will read I<count> bytes if and only if I<count> bytes are available for reading and otherwise it will leave the port unaffected.  Returns true if count bytes were read and false otherwise.  This function should only be called by the component that owns the IN PORT pin.
de: Liest count bytes vom Port in den Zielpuffer dest. hal_port_read liest I<count> Bytes, wenn und nur wenn I<count> Bytes zum Lesen verfügbar sind, andernfalls lässt es den Port unbeeinflusst.  Gibt true zurück, wenn count bytes gelesen wurden und false andernfalls.  Diese Funktion sollte nur von der Komponente aufgerufen werden, die den IN PORT-Pin besitzt.

note: type: Plain text
en: Behaves the same as hal_port_read, however it does not consume bytes from the HAL port.  Repeated calls to hal_port_peek will return the same data.  Returns true if count bytes were read and false otherwise.  This function should only be called by the component that owns the IN PORT pin.
de: Verhält sich wie hal_port_read, verbraucht jedoch keine Bytes vom HAL-Port.  Wiederholte Aufrufe von hal_port_peek geben die gleichen Daten zurück.  Gibt true zurück, wenn Count Bytes gelesen wurden, andernfalls false.  Diese Funktion sollte nur von der Komponente aufgerufen werden, die den IN PORT-Pin besitzt.

note: type: Plain text
en: Advances the read position in the port buffer by count bytes.  A hal_port_peek followed by a hal_port_peek_commit would function equivalently to hal_port_read given the same count value.  Returns true if count readable bytes were skipped and are no longer accessible and false if no bytes wer skipped.  This function should only be called by the component that owns the IN PORT pin.
de: Verschiebt die Leseposition im Portpuffer um Count Bytes.  Ein hal_port_peek gefolgt von einem hal_port_peek_commit würde bei gleichem Zählwert äquivalent zu hal_port_read funktionieren.  Gibt true zurück, wenn count lesbare Bytes übersprungen wurden und nicht mehr zugänglich sind, und false, wenn keine Bytes übersprungen wurden.  Diese Funktion sollte nur von der Komponente aufgerufen werden, die den IN PORT-Pin besitzt.

note: type: Plain text
en: Returns the number of bytes available for reading from port. It is safe to call this function from any component.
de: Gibt die Anzahl der Bytes zurück, die zum Lesen von port zur Verfügung stehen. Es ist sicher, diese Funktion von jeder Komponente aus aufzurufen.

note: type: Plain text
en: Emptys a given port of all data.  hal_port_clear should only be called by the component that owns the IN PORT pin.
de: Leert einen gegebenen Port von allen Daten. hal_port_clear sollte nur von der Komponente aufgerufen werden, die den IN PORT Pin besitzt.

note: type: Plain text
en: Writes count bytes from src into the port.  Returns true if count bytes were written and false otherwise.  This function should only be called by the component that owns the OUT PORT pin.
de: Schreibt count bytes von src in den Port.  Gibt true zurück, wenn count bytes geschrieben wurden, andernfalls false.  Diese Funktion sollte nur von der Komponente aufgerufen werden, die den OUT PORT-Pin besitzt.

note: type: Plain text
en: Returns the number of bytes that can be written into the port.  It is safe to call this function from any component.
de: Gibt die Anzahl der Bytes zurück, die in den Port geschrieben werden können. Es ist sicher, diese Funktion von jeder Komponente aus aufzurufen.

note: type: Plain text
en: Returns the maximum number of bytes that a port can buffer.  It is safe to call this function from any component.
de: Gibt die maximale Anzahl von Bytes zurück, die ein Port puffern kann. Es ist sicher, diese Funktion von jeder Komponente aus aufzurufen.

note: type: Plain text
en: Waits until the port has count bytes or more available for reading or the stop flag is set.
de: Wartet, bis an der Schnittstelle mindestens Count Bytes zum Lesen verfügbar sind oder das Stop-Flag gesetzt wird.

note: type: Plain text
en: Waits until the port has count bytes or more available for writing or the stop flag is set.
de: Wartet, bis an der Schnittstelle mindestens eine Anzahl von Bytes zum Schreiben verfügbar ist oder das Stop-Flag gesetzt wird.

note: type: Plain text
en: A handle to a port object. Created by hal_pin_new
de: Ein Handle auf ein Port-Objekt. Erstellt von hal_pin_new

note: type: Plain text
en: An array of bytes that hal_port_read and hal_port_peek will copy data into. This must be allocated by the caller and be at least count bytes long.
de: Ein Array von Bytes, in das hal_port_read und hal_port_peek Daten kopieren. Dieses Array muß vom Aufrufer zugewiesen werden und mindestens so viele Bytes lang sein.

note: type: Plain text
en: The number of bytes that hal_port_read, hal_port_peek, and hal_port_write will copy in to dest or out from src
de: Die Anzahl der Bytes, die hal_port_read, hal_port_peek und hal_port_write nach dest oder von src kopieren

note: type: Plain text
en: An array of bytes that hal_port_write will copy data from into the port buffer. This must be of size count bytes or larger.
de: Ein Array von Bytes, aus dem hal_port_write Daten in den Portpuffer kopiert. Dieses muss mindestens die Größe count bytes haben.

note: type: Plain text
en: A pointer to a value which is monitored while waiting.  If it is nonzero, the wait operation returns early.  This allows a wait call to be safely terminated in the case of a signal.
de: Ein Zeiger auf einen Wert, der während des Wartens überwacht wird.  Ist er ungleich Null, kehrt der Wartevorgang vorzeitig zurück.  Dadurch kann ein Warteaufruf im Falle eines Signals sicher beendet werden.

note: type: Plain text
en: In the source tree under
     src/hal/components/raster.comp is a realtime component intended for laser control.
     src/tests/raster is a test program that also programs the raster component from python.
de: Im Quellbaum unter
     src/hal/components/raster.comp ist eine Echtzeitkomponente für die Lasersteuerung.
     src/tests/raster ist ein Testprogramm, das auch die Rasterkomponente mit Python programmiert.

note: type: Plain text
en: B<hal_port_wait_writable>, B<hal_port_wait_readable> may be called from ULAPI code.
de: B<hal_port_wait_writable>, B<hal_port_wait_readable> können von ULAPI-Code aufgerufen werden.

note: type: Plain text
en: hal_ready - indicates that this component is ready
de: hal_ready - zeigt an, dass diese Komponente bereit ist

note: type: Plain text
en: B<hal_ready> indicates that this component is ready (has created all its pins, parameters, and functions).  This must be called in any realtime HAL component before its B<rtapi_app_init> exits, and in any userspace component before it enters its main loop.
de: B<hal_ready> zeigt an, dass diese Komponente bereit ist (alle ihre Pins, Parameter und Funktionen erstellt hat).  Dies muss in jeder Echtzeit-HAL-Komponente aufgerufen werden, bevor ihr B<rtapi_app_init> beendet wird, und in jeder Userspace-Komponente, bevor sie in ihre Hauptschleife eintritt.

note: type: Plain text
en: hal_set_constructor - sets the constructor function for this component
de: hal_set_constructor - setzt die Konstruktorfunktion für diese Komponente

note: type: Plain text
en: I<comp_id> A HAL component identifier returned by an earlier call to B<hal_init>.
de: I<comp_id> Eine HAL-Komponenten-Kennung, die durch einen früheren Aufruf von B<hal_init> zurückgegeben wurde.

note: type: Plain text
en: I<prefix> The prefix to be given to the pins, parameters, and functions in the new instance
de: I<Präfix> Das Präfix, das den Pins, Parametern und Funktionen in der neuen Instanz gegeben wird

note: type: Plain text
en: arg An argument that may be used by the component to customize this instance.
de: arg Ein Argument, das von der Komponente verwendet werden kann, um diese Instanz anzupassen.

note: type: Plain text
en: As an experimental feature in HAL 2.1, components may be I<constructable>.  Such a component may create pins and parameters not only at the time the module is loaded, but it may create additional pins and parameters, and functions on demand.
de: Als experimentelles Merkmal in HAL 2.1 können Komponenten I<constructable> sein.  Eine solche Komponente kann Pins und Parameter nicht nur zum Zeitpunkt des Ladens des Moduls erzeugen, sondern auch zusätzliche Pins und Parameter sowie Funktionen bei Bedarf.

note: type: Plain text
en: hal_set_lock, hal_get_lock - Set or get the HAL lock level
de: hal_set_lock, hal_get_lock - Setzen oder Abrufen der HAL-Sperrstufe (engl. lock level)

note: type: Plain text
en: The desired lock type, which may be a bitwise combination of: B<HAL_LOCK_LOAD>, B<HAL_LOCK_CONFIG>, B<HAL_LOCK_PARAMS>, or B<HAL_LOCK_PARAMS>.  B<HAL_LOCK_NONE> or 0 locks nothing, and B<HAL_LOCK_ALL locks everything.>
de: Der gewünschte Sperrtyp (engl. lock type), der eine bitweise Kombination sein kann aus: B<HAL_LOCK_LOAD>, B<HAL_LOCK_CONFIG>, B<HAL_LOCK_PARAMS>, oder B<HAL_LOCK_PARAMS>.  B<HAL_LOCK_NONE> oder 0 sperrt nichts, und B<HAL_LOCK_ALL sperrt alles.>

note: type: Plain text
en: B<hal_set_lock> Returns a HAL status code.  B<hal_get_lock> returns the current HAL lock level or a HAL status code.
de: B<hal_set_lock> Gibt einen HAL-Statuscode zurück.  B<hal_get_lock> gibt die aktuelle HAL-Sperrstufe oder einen HAL-Statuscode zurück.

note: type: Plain text
en: hal_signal_new, hal_signal_delete, hal_link, hal_unlink - Manipulate HAL signals
de: hal_signal_new, hal_signal_delete, hal_link, hal_unlink - HAL-Signale manipulieren

note: type: Plain text
en: The name of the signal
de: Der Name des Signals

note: type: Plain text
en: The name of the pin
de: Der Name des Pins

note: type: Plain text
en: The type of the signal, as specified in B<hal_type_t(3hal)>.
de: Der Typ des Signals, wie in B<hal_type_t(3hal)> angegeben.

note: type: Plain text
en: B<hal_signal_new> creates a new signal object.  Once a signal has been created, pins can be linked to it with B<hal_link>.  The signal object contains the actual storage for the signal data.  Pin objects linked to the signal have pointers that point to the data.  'name' is the name of the new signal.  It may be no longer than HAL_NAME_LEN characters.  If there is already a signal with the same name the call will fail.
de: B<hal_signal_new> erzeugt ein neues Signalobjekt.  Sobald ein Signal erstellt wurde, können Pins mit B<hal_link> mit ihm verknüpft werden.  Das Signalobjekt enthält den eigentlichen Speicher für die Signaldaten.  Mit dem Signal verknüpfte Pin-Objekte haben Zeiger, die auf die Daten zeigen. 'name' ist der Name des neuen Signals.  Er darf nicht länger als HAL_NAME_LEN Zeichen sein.  Wenn es bereits ein Signal mit demselben Namen gibt, schlägt der Aufruf fehl.

note: type: Plain text
en: B<hal_link> links a pin to a signal.  If the pin is already linked to the desired signal, the command succeeds.  If the pin is already linked to some other signal, it is an error.  In either case, the existing connection is not modified.  (Use 'hal_unlink' to break an existing connection.)  If the signal already has other pins linked to it, they are unaffected - one signal can be linked to many pins, but a pin can be linked to only one signal.
de: B<hal_link> verknüpft einen Pin mit einem Signal.  Falls der Pin bereits mit dem gewünschten Signal verknüpft ist, dann ist der Befehl dennoch erfolgreich.  Wenn der Pin bereits mit einem anderen Signal verknüpft ist, so ist dies ein Fehler.  In beiden Fällen wird die bestehende Verbindung nicht verändert.  (Verwenden Sie 'hal_unlink', um eine bestehende Verbindung zu unterbrechen.) Wenn das Signal bereits mit anderen Pins verknüpft ist, bleiben diese unberührt - ein Signal kann mit vielen Pins verknüpft werden, aber ein Pin kann nur mit einem Signal verknüpft werden.

note: type: Plain text
en: B<hal_unlink> unlinks any signal from the specified pin.
de: B<hal_unlink> entkoppelt ein beliebiges Signal von dem angegebenen Pin.

note: type: Plain text
en: B<hal_signal_delete> deletes a signal object.  Any pins linked to the object are unlinked.
de: B<hal_signal_delete> löscht ein Signalobjekt.  Alle mit dem Objekt verknüpften Pins werden entkoppelt.

note: type: Plain text
en: hal_start_threads - Allow HAL threads to begin executing
de: hal_start_threads - Erlaubt den Beginn der Ausführung von HAL-Threads

note: type: Plain text
en: B<hal_start_threads> starts all threads that have been created.  This is the point at which realtime functions start being called.
de: B<hal_start_threads> startet alle angelegten Threads.  Dies ist der Punkt, an dem die Echtzeitfunktionen aufgerufen werden.

note: type: Plain text
en: B<hal_stop_threads> stops all threads that were previously started by B<hal_start_threads>.  It should be called before any component that is part of a system exits.
de: B<hal_stop_threads> stoppt alle Threads, die zuvor von B<hal_start_threads> gestartet wurden.  Es sollte aufgerufen werden, bevor eine Komponente, die Teil eines Systems ist, beendet wird.

note: type: Plain text
en: hal_stream - non-blocking realtime streams
de: hal_stream - nicht-blockierende Echtzeit-Streams

note: type: Plain text
en: A HAL stream provides a limited ability for two components to communicate data which does not fit within the model of HAL pins.  A reader and a writer must agree on a I<key> (32-bit integer identifier) and a data structure specified by I<typestring.> They must also agree which component (the first one loaded) will B<hal_stream_create> the stream, and which component (the second one loaded) will B<hal_stream_attach> to the already-created stream.
de: Ein HAL-Stream bietet eine begrenzte Möglichkeit für zwei Komponenten, Daten zu übermitteln, die nicht in das Modell der HAL-Pins passen.  Ein Leser und ein Schreiber müssen sich auf einen I<key> (32-Bit-Integer-Identifikator) und eine durch I<typestring.> spezifizierte Datenstruktur einigen. Sie müssen auch vereinbaren, welche Komponente (die zuerst geladene) den Stream B<hal_stream_create> und welche Komponente (die zweite geladene) den bereits erzeugten Stream B<hal_stream_attach>.

note: type: Plain text
en: The userspace part can be B<halstreamer> or B<halsampler>.  In the case of B<halstreamer> the key is 0x48535430 plus the channel number.  In the case of B<halsampler> the key is 0x48534130 plus the channel number.
de: Der Userspace-Teil kann B<halstreamer> oder B<halsampler> sein.  Im Fall von B<halstreamer> ist der Schlüssel 0x48535430 plus die Kanalnummer.  Im Falle von B<halsampler> ist der Schlüssel 0x48534130 plus die Kanalnummer.

note: type: Plain text
en: Create the given stream, initializing the I<stream> which is passed by reference.  It is an undiagnosed error if a stream has already been created with the same I<key>.
de: Erzeugt den angegebenen Stream, wobei der I<stream>, der als Referenz übergeben wird, initialisiert wird.  Es ist ein nicht diagnostizierter Fehler, wenn bereits ein Stream mit demselben I<key> erstellt wurde.

note: type: Plain text
en: Destroy the given stream.  It is an undiagnosed error if the stream is still attached by another component.  It is an undiagnosed error if the stream was attached with B<hal_stream_attach> rather than created with B<hal_stream_create>.  It is an undiagnosed error if the call to B<hal_stream_destroy> is omitted.
de: Zerstört den angegebenen Stream.  Es ist ein nicht diagnostizierter Fehler, wenn der Stream noch von einer anderen Komponente angehängt ist.  Es ist ein nicht diagnostizierter Fehler, wenn der Stream mit B<hal_stream_attach> angehängt wurde und nicht mit B<hal_stream_create> erzeugt wurde.  Es ist ein nicht diagnostizierter Fehler, wenn der Aufruf von B<hal_stream_destroy> ausgelassen wird.

note: type: Plain text
en: Attach the given stream, which was already created by B<hal_stream_create>.  If the typestring is specified, this call fails if it does not match the typestring the stream was created with.  If the typestring argument is NULL, then any typestring is accepted.
de: Hängt den angegebenen Stream an, der bereits mit B<hal_stream_create> erstellt wurde.  Wenn der Typestring angegeben ist, schlägt dieser Aufruf fehl, wenn er nicht mit dem Typestring übereinstimmt, mit dem der Stream erstellt wurde.  Wenn das Argument typestring NULL ist, wird ein beliebiger typestring akzeptiert.

note: type: Plain text
en: Detach the given stream.  It is an undiagnosed error if the stream was created with B<hal_stream_create> rather than attached with B<hal_stream_attach>.  It is an undiagnosed error if the call to B<hal_stream_detach> is omitted.
de: Löscht den angegebenen Stream.  Es ist ein nicht diagnostizierter Fehler, wenn der Stream mit B<hal_stream_create> erzeugt und nicht mit B<hal_stream_attach> angehängt wurde.  Es ist ein nicht diagnostizierter Fehler, wenn der Aufruf von B<hal_stream_detach> ausgelassen wird.

note: type: Plain text
en: Returns the number of pins.
de: Gibt die Anzahl der Pins zurück.

note: type: Plain text
en: Returns the type of the given pin number.
de: Gibt den Typ der angegebenen Pin-Nummer zurück.

note: type: Plain text
en: Returns true if the stream has at least one sample to read
de: Gibt true zurück, wenn der Stream mindestens einen Sample zum Lesen hat

note: type: Plain text
en: If the stream has one sample to read, stores it in buf.
de: Wenn der Stream ein Sample zum Lesen hat, speichert der diesen in buf.

note: type: Plain text
en: Returns true if the stream has room for at least one sample to be written.
de: Gibt „true“ zurück, wenn der Stream Platz für mindestens einen zu schreibenden Sample hat.

note: type: Plain text
en: Returns the number of samples waiting to be read.
de: Gibt die Anzahl der Messwerten (engl. samples) zurück, die darauf warten, gelesen zu werden.

note: type: Plain text
en: Returns the B<depth> argument that the stream was created with.
de: Gibt das Argument B<depth> (engl. für Tiefe) zurück, mit dem der Stream erstellt wurde.

note: type: Plain text
en: Returns a number which is incremented each time B<hal_stream_write> is called without space available.
de: Gibt eine Zahl zurück, die jedes Mal erhöht wird, wenn B<hal_stream_write> aufgerufen wird und kein Speicherplatz verfügbar ist.

note: type: Plain text
en: Returns a number which is incremented each time B<hal_stream_read> is called without a sample available.
de: Gibt eine Zahl zurück, die jedes Mal erhöht wird, wenn B<hal_stream_read> aufgerufen wird, ohne dass ein Sample verfügbar ist.

note: type: Plain text
en: Waits until the stream is readable or the stop flag is set.
de: Wartet, bis der Stream lesbar ist oder das Stop-Flag gesetzt wird.

note: type: Plain text
en: Waits until the stream is writable or the stop flag is set.
de: Wartet, bis der Stream beschreibbar ist oder das Stop-Flag gesetzt wird.

note: type: Plain text
en: Reads a record from stream.  If successful, it is stored in the given buffer.  Optionally, the sample number can be retrieved.  If no sample is available, I<num_underruns> is incremented.  It is an undetected error if more than one component or real-time function calls B<hal_stream_read> concurrently.
de: Liest einen Datensatz aus dem Stream. Bei Erfolg wird es im angegebenen Puffer gespeichert. Optional kann die Probennummer abgefragt werden. Wenn kein Sample verfügbar ist, wird I<num_underruns> inkrementiert. Es ist ein unerkannter Fehler, wenn mehr als eine Komponente oder Echtzeitfunktion B<hal_stream_read> gleichzeitig aufruft.

note: type: Plain text
en: Writes a record to the stream.  If successful, it copied from the given
    buffer.  If no room is available,
    I<num_overruns>
    is incremented.  In either case, the internal
    I<sampleno>
    value is incremented.
      It is an undetected error if more than one component or
    real-time function calls
    B<hal_stream_write>
    concurrently.
de: Schreibt einen Datensatz in den Stream. Wenn erfolgreich, kopiert es von den gegebenen
    Puffer. Wenn kein Platz verfügbar ist,
    I<num_overruns>
    wird erhöht. In jedem Fall die interne
    I<Beispielnummer>
    Wert wird erhöht.
      Es handelt sich um einen unerkannten Fehler, wenn mehr als eine Komponente bzw.
    Echtzeit-Funktion
    B<hal_stream_write>
    gleichzeitig aufruft.

note: type: Plain text
en: A pointer to a stream object.  In the case of B<hal_stream_create> and B<hal_stream_attach> this is an uninitialized stream; in other cases, it must be a stream created or attached by an earlier call and not yet detached or destroyed.
de: Ein Zeiger auf ein Stream-Objekt.  Im Fall von B<hal_stream_create> und B<hal_stream_attach> ist dies ein nicht initialisierter Stream; in anderen Fällen muss es sich um einen Stream handeln, der durch einen früheren Aufruf erzeugt oder angehängt und noch nicht abgetrennt oder zerstört wurde.

note: type: Plain text
en: An HAL component identifier returned by an earlier call to B<hal_init>.
de: Eine HAL-Komponenten-Kennung, die durch einen früheren Aufruf von B<hal_init> zurückgegeben wurde.

note: type: Plain text
en: The key for the shared memory segment.
de: Der Schlüssel (engl. key) für das gemeinsame Speichersegment.

note: type: Plain text
en: The number of samples that can be unread before any samples are lost (overrun)
de: Die Anzahl der Samples, die ungelesen werden können, bevor Samples verloren gehen (Überlauf, engl. Overrun)

note: type: Plain text
en: A typestring is a case-insensitive string which consists of one or more of the following type characters:
de: Ein Typstring ist eine von der Groß- und Kleinschreibung unabhängige Zeichenkette, die aus einem oder mehreren der folgenden Typzeichen besteht:

note: type: Plain text
en: for bool / hal_bit_t
de: für bool / hal_bit_t

note: type: Plain text
en: for int32_t / hal_s32_t
de: für int32_t / hal_s32_t

note: type: Plain text
en: for uint32_t / hal_u32_t
de: für uint32_t / hal_u32_t

note: type: Plain text
en: for real_t / hal_float_t
de: für real_t / hal_float_t

note: type: Plain text
en: A typestring is limited to 16 characters.
de: Ein Typestring ist auf 16 Zeichen begrenzt.

note: type: Plain text
en: A buffer big enough to hold all the data in one sample.
de: Ein Puffer, der groß genug ist, um alle Daten einer Probe aufzunehmen.

note: type: Plain text
en: If non-NULL, the last sample number is stored here.  Gaps in this sequence indicate that an overrun occurred between the previous read and this one.  May be NULL, in which case the sample number is not retrieved.
de: Falls nicht NULL, wird hier die letzte Probennummer gespeichert.  Lücken in dieser Sequenz zeigen an, dass ein Überlauf zwischen dem vorherigen und diesem Lesevorgang stattgefunden hat.  Kann NULL sein, in diesem Fall wird die Stichprobennummer nicht abgerufen.

note: type: Plain text
en: In the source tree under I<src/hal/components>, B<sampler.c> and B<streamer.c> are realtime components that read and write HAL streams.
de: Im Quellbaum unter I<src/hal/components> sind B<sampler.c> und B<streamer.c> Echtzeitkomponenten, die HAL-Streams lesen und schreiben.

note: type: Plain text
en: B<hal_stream_read>, B<hal_stream_readable>, B<hal_stream_write>, B<hal_stream_writable>, B<hal_stream_element_count>, B<hal_tream_pin_type>, B<hal_stream_depth>, B<hal_stream_maxdepth>, B<hal_stream_num_underruns>, B<hal_stream_number_overruns> may be called from realtime code.
de: B<hal_stream_read>, B<hal_stream_readable>, B<hal_stream_write>, B<hal_stream_writable>, B<hal_stream_element_count>, B<hal_tream_pin_type>B<hal_stream_depth>, B<hal_stream_maxdepth>, B<hal_stream_num_underruns>, B<hal_stream_number_overruns> können vom Echtzeitcode aus aufgerufen werden.

note: type: Plain text
en: B<hal_stream_wait_writable>, B<hal_stream_wait_writable> may be called from ULAPI code.
de: B<hal_stream_wait_writable>, B<hal_stream_wait_writable> kann von ULAPI-Code aufgerufen werden.

note: type: Plain text
en: Other functions may be called in any context, including realtime contexts.
de: Andere Funktionen können in jedem Kontext, auch in Echtzeit, aufgerufen werden.

note: type: Plain text
en: B<hal_stream_create> , B<hal_stream_attach> , B<hal_stream_read> , B<hal_stream_write> , B<hal_stream_detach> and B<hal_stream_destroy> return an RTAPI status code.  Other functions' return values are explained above.
de: B<hal_stream_create> , B<hal_stream_attach> , B<hal_stream_read> , B<hal_stream_write> , B<hal_stream_detach> und B<hal_stream_destroy> geben einen RTAPI-Statuscode zurück.  Die Rückgabewerte der anderen Funktionen werden oben erläutert.

note: type: Plain text
en: The memory overhead of a stream can be large.  Each element in a record uses 8 bytes, and the implicit sample number also uses 8 bytes.  As a result, a stream which is used to transport 8-bit values uses 94% of its memory as overhead.  However, for modest stream sizes this overhead is not important.  (this memory is part of its own shared memory region and does not count against the HAL shared memory region used for pins, parameters and signals)
de: Der Speicher-Overhead eines Streams kann sehr groß sein.  Jedes Element in einem Datensatz belegt 8 Byte, und die implizite Stichprobennummer belegt ebenfalls 8 Byte.  Ein Datenstrom, der für den Transport von 8-Bit-Werten verwendet wird, verbraucht daher 94 % seines Speichers als Overhead.  Bei bescheidenen Streamgrößen ist dieser Overhead jedoch nicht von Bedeutung.  (Dieser Speicher ist Teil eines eigenen gemeinsamen Speicherbereichs und wird nicht auf den gemeinsamen HAL-Speicherbereich angerechnet, der für Pins, Parameter und Signale verwendet wird)

note: type: Plain text
en: hal_type_t - typedefs for HAL datatypes
de: hal_type_t - Typendefinitionen für HAL-Datentypen

note: type: Plain text
en: A type which may have a value of 0 or nonzero.
de: Ein Typ, der einen Wert von 0 oder ungleich Null haben kann.

note: type: Plain text
en: A volatile type which may have a value of 0 or nonzero.
de: Ein flüchtiger (volatile, d.h. eine Speicherstelle, die nicht nur durch laufende Programm verändert wird) Typ, der einen Wert von 0 oder ungleich Null haben kann.

note: type: Plain text
en: A volatile type which may have a value from -2147483648 to 2147483647.
de: Ein flüchtiger (engl. volatile) Typ, der einen Wert von -2147483648 bis 2147483647 haben kann.

note: type: Plain text
en: A volatile type which may have a value from 0 to 4294967295.
de: Ein flüchtiger Typ, der einen Wert zwischen 0 und 4294967295 haben kann.

note: type: Plain text
en: A volatile handle to a port object. Used with hal_port* functions.
de: Ein flüchtiger Handle zu einem Port-Objekt. Wird mit hal_port* Funktionen verwendet.

note: type: Plain text
en: A volatile floating-point type, which typically has the same precision and range as the C type B<double>.
de: Ein flüchtiger Gleitkommatyp, der in der Regel die gleiche Genauigkeit und den gleichen Bereich wie der C-Typ B<double> hat.

note: type: Plain text
en: A nonvolatile floating-point type with at least as much precision as B<hal_float_t>.
de: Ein nichtflüchtiger Gleitkommatyp mit mindestens der gleichen Genauigkeit wie B<hal_float_t>.

note: type: Plain text
en: A nonvolatile unsigned integral type the same size as B<hal_float_t>.
de: Ein nichtflüchtiger, vorzeichenloser Integraltyp mit der gleichen Größe wie B<hal_float_t>.

note: type: Plain text
en: Corresponds to the type B<hal_bit_t>.
de: Entspricht dem Typ B<hal_bit_t>.

note: type: Plain text
en: Corresponds to the type B<hal_float_t>.
de: Entspricht dem Typ B<hal_float_t>.

note: type: Plain text
en: Corresponds to the type B<hal_s32_t>.
de: Entspricht dem Typ B<hal_s32_t>.

note: type: Plain text
en: Corresponds to the type B<hal_u32_t>.
de: Entspricht dem Typ B<hal_u32_t>.

note: type: Plain text
en: B<hal_bit_t> is typically a typedef to an integer type whose range is larger than just 0 and 1.  When testing the value of a B<hal_bit_t>, never compare it to 1.  Prefer one of the following:
de: B<hal_bit_t> ist typischerweise ein Typedef für einen Integer-Typ, dessen Bereich größer ist als nur 0 und 1. Wenn Sie den Wert eines B<hal_bit_t> testen, vergleichen Sie ihn nie mit 1.  Bevorzugen Sie eine der folgenden Möglichkeiten:

note: type: Plain text
en: It is often useful to refer to a type that can represent all the values as a HAL type, but without the volatile qualifier.  The following types correspond with the HAL types:
de: Oft ist es sinnvoll, auf einen Typ zu verweisen, der alle Werte wie ein HAL-Typ darstellen kann, jedoch ohne den Qualifier volatile.  Die folgenden Typen entsprechen den HAL-Typen:

note: type: Plain text
en: Take care not to use the types B<s32> and B<u32>.  These will compile in kernel modules but not in userspace, and not for "realtime components" when using simulated (userspace) realtime.
de: Achten Sie darauf, die Typen B<s32> und B<u32> nicht zu verwenden.  Diese werden in Kernel-Modulen kompiliert, aber nicht im Userspace und auch nicht für "Echtzeitkomponenten", wenn simulierte (Userspace-)Echtzeit verwendet wird.

note: type: Plain text
en: hm2_allocate_bspi_tram - Allocate the TRAM regions for a BSPI channel
de: hm2_allocate_bspi_tram - Zuweisung der TRAM-Regionen für einen BSPI-Kanal

note: type: Plain text
en: B<hm2_allocate_bspi_tram> Allocate the TRAM memory for bspi instance "name".  "name" is a unique string given to each bspi channel during hostmot2 setup.  The names of the available channels are printed to standard output during the driver loading process and take the form: hm2_E<lt>board nameE<gt>.E<lt>board indexE<gt>.bspi.E<lt>indexE<gt> For example hm2_5i23.0.bspi.0
de: B<hm2_allocate_bspi_tram> Weisen Sie den TRAM-Speicher für die bspi-Instanz "name" zu. "name" ist eine eindeutige Zeichenkette, die jedem bspi-Kanal während der Einrichtung von hostmot2 zugewiesen wird.  Die Namen der verfügbaren Kanäle werden während des Ladevorgangs des Treibers auf die Standardausgabe ausgegeben und haben die Form: hm2_E<lt>KartennameE<gt>.E<lt>KartenindexE<gt>.bspi.E<lt>indexE<gt>, zum Beispiel hm2_5i23.0.bspi.0

note: type: Plain text
en: This function allocates the TRAM memory and sets up the regular data transfers.  It should be called only when all the frames have been defined by calls to hm2_tram_add_bspi_frame().
de: Diese Funktion weist den TRAM-Speicher zu und richtet die regelmäßigen Datenübertragungen ein.  Sie sollte erst aufgerufen werden, wenn alle Frames durch Aufrufe von hm2_tram_add_bspi_frame() definiert worden sind.

note: type: Plain text
en: Returns 0 on success and -1 on failure.
de: Gibt bei Erfolg 0 und bei Misserfolg -1 zurück.

note: type: Plain text
en: B<hm2_bspi_set_read_function(3hm2)>, B<hm2_bspi_setup_chan(3hm2)>, B<hm2_bspi_set_write_function(3hm2)>, B<hm2_bspi_write_chan(3hm2)>, B<hm2_tram_add_bspi_frame(3hm2)>, See src/hal/drivers mesa_7i65.comp for an example usage.
de: B<hm2_bspi_set_read_function(3hm2)>, B<hm2_bspi_setup_chan(3hm2)>, B<hm2_bspi_set_write_function(3hm2)>, B<hm2_bspi_write_chan(3hm2)>, B<hm2_tram_add_bspi_frame(3hm2)>, Siehe src/hal/drivers mesa_7i65.comp für ein Anwendungsbeispiel.

note: type: TP
en: B<Bit 21	 FrameBuffer Has Data>
de: B<Bit 21 FrameBuffer hat Daten>

note: type: TP
en: B<Bits 20..16 Frames to send>
de: B<Bits 20..16 Zu sendende Frames>

note: type: TP
en: B<Bits 15..8 InterFrame delay in bit times>
de: B<Bits 15..8 InterFrame Verzögerung in Bitzeiten>

note: type: TP
en: B<Bit 7	 Send busy, Transmit Logic active>
de: B<Bit 7 Senden beschäftigt, Sendelogik aktiv>

note: type: TP
en: B<Bit 6	 Drive Enable bit (enables external RS-422/485 Driver when set)>
de: B<Bit 6 Drive Enable Bit (aktiviert externen RS-422/485 Treiber, wenn gesetzt)>

note: type: TP
en: B<Bit 5	 Drive enable Auto (Automatic external drive enable)>
de: B<Bit 5 Laufwerksfreigabe Auto (Automatische Freigabe des externen Laufwerks)>

note: type: TP
en: B<Bit 4	 SCFIFO Error>
de: B<Bit 4 SCFIFO-Fehler>

note: type: TP
en: B<Bits 3..0 Drive enable delay (delay from asserting drive enable>
de: B<Bits 3..0 Verzögerung der Antriebsfreigabe (Verzögerung ab Aktivierung der Antriebsfreigabe>)

note: type: Plain text
en:      	           to start of data transmit. In CLock Low periods
de:      	           bis zum Beginn der Datenübertragung. In CLock-Low-Perioden

note: type: TP
en: rx_mode is bit mask defined in the Hostmot2 regmap:
de: rx_mode ist eine Bitmaske, die in der Hostmot2-Regmap definiert ist:

note: type: TP
en: B<Bit 21	 FrameBuffer has data \&	\&>
de: B<Bit 21 FrameBuffer hat Daten \& \&>

note: type: TP
en: B<Bits 20..16 Frames received>
de: B<Bits 20..16 Empfangene Frames>

note: type: TP
en: B<Bit 7	 Rx Logic active>
de: B<Bit 7 Rx Logik aktiv>

note: type: TP
en: B<Bit 6	 RXMask>
de: B<Bit 6 RXMaske>

note: type: TP
en: B<Bit 5 Unused>
de: B<Bit 5 unbenutzt>

note: type: TP
en: B<Bit 4	 RCFIFO Error>
de: B<Bit 4 RCFIFO-Fehler>

note: type: TP
en: B<Bit 3	 RXEnable (must be set to receive packets)>
de: B<Bit 3 RXEnable (muss gesetzt sein, um Pakete zu empfangen)>

note: type: TP
en: B<Bit 2	 RXMask Enable (enables input data masking when transmitting)>
de: B<Bit 2 RXMask Enable (aktiviert die Maskierung der Eingangsdaten beim Senden)>

note: type: TP
en: B<Bit 1	 Overrun error (no stop bit when expected) (sticky)>
de: B<Bit 1 Überlauffehler (kein Stoppbit, wenn erwartet) (sticky)>

note: type: TP
en: B<Bit 0	 False Start bit error (sticky)>
de: B<Bit 0 Falscher Startbitfehler (sticky)>

note: type: Plain text
en: rx_mode and tx_mode registers are currently write-only.  One can get the instance number of a PktUART instance with the help of hm2_get_pktuart function in order to read and write to Rx and Tx registers.
de: Die Register rx_mode und tx_mode sind derzeit schreibgeschützt.  Man kann die Instanznummer einer PktUART-Instanz mit Hilfe der Funktion hm2_get_pktuart ermitteln, um die Rx- und Tx-Register zu lesen und zu schreiben.

note: type: Plain text
en: To write only to the tx_mode DriveEnable bit call this function with the bitrate unchanged and -1 as the rx_mode To change bitrate without altering mode settings send -1 to both modes.
de: Um nur das tx_mode DriveEnable-Bit zu schreiben, rufen Sie diese Funktion mit unveränderter Bitrate und -1 als rx_mode auf. Um die Bitrate ohne Änderung der Moduseinstellungen zu ändern, senden Sie -1 an beide Modi.

note: type: Plain text
en: txclear==1 aborts any sends in process, clears the data FIFO and clears the send count FIFO.
de: txclear==1 bricht alle laufenden Sendevorgänge ab, löscht den Daten-FIFO und den Sendezähl-FIFO.

note: type: Plain text
en: rxclear==1 aborts any receives in process, clears the data FIFO and clears the receive count FIFO.
de: rxclear==1 bricht alle laufenden Empfangsvorgänge ab, löscht den Daten-FIFO und den Empfangszähl-FIFO.

note: type: Plain text
en: txclear!=1 or rxclear!=1 lets the corresponding registers unchanged.
de: txclear!=1 oder rxclear!=1 lässt die entsprechenden Register unverändert.

note: type: Plain text
en: Returns 0 on success and -1 or -EINVAL on failure.
de: Gibt bei Erfolg 0 und bei Misserfolg -1 oder -EINVAL zurück.

note: type: TP
en: See src/hal/drivers/mesa_pktgyro_test.comp for an example usage.
de: Siehe src/hal/drivers/mesa_pktgyro_test.comp für ein Anwendungsbeispiel.

note: type: SH
en: FUTURE DEVELOPMENT
de: ZUKÜNFTIGE ENTWICKLUNG

note: type: Plain text
en: This function is subject to change as digital filters will be added on the Rx UART, and bit rate register will gain a 12 bit field for the input filter constant.
de: Diese Funktion kann sich ändern, da digitale Filter auf dem Rx-UART hinzugefügt werden und das Bitratenregister ein 12-Bit-Feld für die Eingangsfilterkonstante erhält.

note: type: Plain text
en: hm2_tram_add_bspi_frame - add a register-write to the Hostmot2 TRAM
de: hm2_tram_add_bspi_frame - Hinzufügen eines Schreibregisters zum Hostmot2 TRAM

note: type: Plain text
en: B<hm2_tram_add_bspi_frame> Add a regular (every thread) write event to the Hostmot2 tram for bspi instance "name". "name" is a unique string given to each bspi channel during hostmot2 setup. The names of the available channels are printed to standard output during the driver loading process and take the form: hm2_E<lt>board nameE<gt>.E<lt>board indexE<gt>.bspi.E<lt>indexE<gt> For example hm2_5i23.0.bspi.0
de: B<hm2_tram_add_bspi_frame> Ein regelmäßiges (jeder Thread) Schreibereignis zur Hostmot2-Straßenbahn für die bspi-Instanz "name" hinzufügen. "name" ist eine eindeutige Zeichenkette, die jedem bspi-Kanal während des Hostmot2-Setups gegeben wird. Die Namen der verfügbaren Kanäle werden während des Ladevorgangs des Treibers auf die Standardausgabe ausgegeben und haben die Form: hm2_E<lt>KartennameE<gt>.E<lt>KartenindexE<gt>.bspi.E<lt>indexE<gt> Zum Beispiel hm2_5i23.0.bspi.0

note: type: Plain text
en: This function is used to add a regular, every thread, write or write-read transaction to the Translation RAM system. A write need not have a read (use 0 for **rbuff) but it is an error to have a read without a write. Note that the TRAM list is not actioned until the hm2_allocate_bspi_tram function is called.  The read and write parameters must be pointers to pointers, as TRAM re-maps the buffers into contiguous memory.
de: Diese Funktion wird verwendet, um dem Translation-RAM-System eine reguläre Schreib- oder Schreib-Lese-Transaktion für jeden Thread hinzuzufügen. Einem Schreibvorgang muss kein Lesevorgang vorausgehen (verwenden Sie 0 für **rbuff), aber ein Lesevorgang ohne Schreibvorgang ist ein Fehler. Beachten Sie, dass die TRAM-Liste erst nach dem Aufruf der Funktion hm2_allocate_bspi_tram abgearbeitet wird.  Bei den Lese- und Schreibparametern muss es sich um Zeiger auf Zeiger handeln, da TRAM die Puffer in zusammenhängenden Speicher neu abbildet.

note: type: Plain text
en: B<hm2_allocate_bspi_tram(3hm2)>, B<hm2_bspi_set_read_function(3hm2)>, B<hm2_bspi_setup_chan(3hm2)>, B<hm2_bspi_set_write_function(3hm2)>, B<hm2_bspi_write_chan(3hm2)>, See src/hal/drivers mesa_7i65.comp for an example usage.
de: B<hm2_allocate_bspi_tram(3hm2)>, B<hm2_bspi_set_read_function(3hm2)>, B<hm2_bspi_setup_chan(3hm2)>, B<hm2_bspi_set_write_function(3hm2)>, B<hm2_bspi_write_chan(3hm2)>, Siehe src/hal/drivers mesa_7i65.comp für ein Anwendungsbeispiel.

note: type: Plain text
en: hm2_uart_read - read data from a Hostmot2 UART buffer
de: hm2_uart_read - liest Daten aus einem Hostmot2 UART-Puffer

note: type: Plain text
en: B<hm2_uart_read> read data from the UART "name".  "name" is a unique string given to each UART during hostmot2 setup. The names of the available channels are printed to standard output during the driver loading process and take the form: hm2_E<lt>board nameE<gt>.E<lt>board indexE<gt>.uart.E<lt>indexE<gt> For example hm2_5i23.0.uart.0
de: B<hm2_uart_read> liest Daten vom UART "name". "name" ist eine eindeutige Zeichenkette, die jedem UART während des hostmot2-Setups zugewiesen wird. Die Namen der verfügbaren Kanäle werden während des Ladevorgangs des Treibers auf die Standardausgabe ausgegeben und haben die Form: hm2_E<lt>KartennameE<gt>.E<lt>KartenindexE<gt>.uart.E<lt>indexE<gt> Zum Beispiel hm2_5i23.0.uart.0

note: type: Plain text
en: This function reads a variable number of bytes from the the specified channel. It should be used inside a realtime HAL component registered with the main hostmot2 driver using the function hm2_uart_set_read_function in the setup code.
de: Diese Funktion liest eine variable Anzahl von Bytes aus dem angegebenen Kanal. Sie sollte innerhalb einer Echtzeit-HAL-Komponente verwendet werden, die mit dem Haupt-hostmot2-Treiber unter Verwendung der Funktion hm2_uart_set_read_function im Setup-Code registriert ist.

note: type: Plain text
en: Note that the UART Receive FIFO is only 16 bytes deep,(the transmit FIFO is 64 bytes) and "data" needs to be at least that large or undefined mayhem will ensue.
de: Beachten Sie, dass der UART-Empfangs-FIFO nur 16 Byte tief ist (der Sende-FIFO ist 64 Byte tief) und dass die "Daten" mindestens so groß sein müssen, da sonst ein undefiniertes Chaos entsteht.

note: type: Plain text
en: Returns the number of bytes read on success and -1 on failure.
de: Gibt im Erfolgsfall die Anzahl der gelesenen Bytes zurück, im Fehlerfall -1.

note: type: Plain text
en: hm2_uart_send - write data to a Hostmot2 UART
de: hm2_uart_send - schreibt Daten an einen Hostmot2 UART

note: type: Plain text
en: B<hm2_uart_send> write 'count' bytes of data to the UART "name" from the buffer 'data'.
de: B<hm2_uart_send> schreibe 'count' Bytes von Daten an den UART "name" aus dem Puffer 'data'.

note: type: Plain text
en: The UART FIFO is 64 bytes deep, attempts to transmit more than 64 bytes may have unexpected effects.
de: Der UART-FIFO ist 64 Bytes tief, Versuche, mehr als 64 Bytes zu übertragen, können unerwartete Auswirkungen haben.

note: type: Plain text
en: "name" is a unique string given to each UART during hostmot2 setup. The names of the available channels are printed to standard output during the driver loading process and take the form: hm2_E<lt>board nameE<gt>.E<lt>board indexE<gt>.uart.E<lt>indexE<gt> For example hm2_5i23.0.uart.0
de: "name" ist eine eindeutige Zeichenkette, die jedem UART während des hostmot2-Setups zugewiesen wird. Die Namen der verfügbaren Kanäle werden während des Ladevorgangs des Treibers auf die Standardausgabe ausgegeben und haben die Form: hm2_E<lt>KartennameE<gt>.E<lt>KartenindexE<gt>.uart.E<lt>indexE<gt> Zum Beispiel hm2_5i23.0.uart.0

note: type: Plain text
en: This function performs writes of data to the specified UART.  It should be used inside a function in a realtime or userspace HAL component.
de: Diese Funktion schreibt Daten an den angegebenen UART. Sie sollte innerhalb einer Funktion in einer Echtzeit- oder Userspace-HAL-Komponente verwendet werden.

note: type: Plain text
en: Returns the number of bytes sent on success and -1 on failure.
de: Gibt im Erfolgsfall die Anzahl der gesendeten Bytes zurück, im Fehlerfall -1.

note: type: Plain text
en: hm2_uart_setup - setup a Hostmot2 UART
de: hm2_uart_setup - Einrichtung eines Hostmot2 UART

note: type: Plain text
en: B<hm2_uart_setup> Setup the bitrate for the UART named "name".  "name" is a unique string given to each UART during hostmot2 setup. The names of the available UARTs are printed to standard output during the driver loading process and take the form: hm2_E<lt>board nameE<gt>.E<lt>board indexE<gt>.uart.E<lt>indexE<gt> For example hm2_5i23.0.uart.0 The minimum bitrate is approximately 50bps, and the maximum around the FPGA frequency, 48 MHz for a 5i23.  The UART function allows different RX and TX bitrates, but that is not currently supported by this driver
de: B<hm2_uart_setup> Einstellen der Bitrate für den UART mit dem Namen "name". "name" ist eine eindeutige Zeichenkette, die jedem UART während des hostmot2-Setups zugewiesen wird. Die Namen der verfügbaren UARTs werden während des Ladevorgangs des Treibers auf die Standardausgabe ausgegeben und haben die Form: hm2_E<lt>BoardnameE<gt>.E<lt>BoardindexE<gt>.uart.E<lt>indexE<gt> Zum Beispiel hm2_5i23.0.uart.0 Die minimale Bitrate ist ungefähr 50bps und die maximale um die FPGA-Frequenz, 48 MHz für einen 5i23.  Die UART-Funktion erlaubt unterschiedliche RX- und TX-Bitraten, aber das wird derzeit von diesem Treiber nicht unterstützt

note: type: Plain text
en: tx_mode is bit mask defined in the Hostmot2 regmap:
    Bit 0..3 = TXEnable delay. TXEnable delay specifies the transmit data 
            holdoff time from the TXenable signal valid state. This is used for 
            RS-485 (half duplex) operation, to delay transmit data until the driver 
            is enabled, allowing for driver enable delays, isolation barrier delays 
            etc. Delay is in units of ClockLow period.
    Bit 4 = FIFOError, it indicates that a host push has overflowed the FIFO
            (Mainly for driver debugging)
    Bit 5 = DriveEnableAuto, When set, enables Drive when any data is in FIFO or 
            Xmit Shift register,removes drive when FIFO and Xmit shift register 
            are empty.
    Bit 6 = DriveEnableBit, If DriveEnableAuto is 0, controls Drive (
            for software control of Xmit drive)
de: tx_mode ist eine Bitmaske, die in der Hostmot2-Regmap definiert ist:
    Bit 0..3 = TXEnable delay. TXEnable delay gibt die Haltezeit der Sendedaten 
            Haltezeit für die Sendedaten ab dem gültigen Zustand des TXenable-Signals. Dies wird für 
            RS-485 (Halbduplex)-Betrieb verwendet, um Sendedaten zu verzögern, bis der Treiber 
            aktiviert ist, was Verzögerungen bei der Treiberfreigabe, Verzögerungen bei der Isolationsbarriere 
            usw. Die Verzögerung ist in Einheiten der ClockLow-Periode angegeben.
    Bit 4 = FIFOError, zeigt an, dass ein Host-Push den FIFO überlaufen hat
            (Hauptsächlich für die Fehlersuche im Treiber)
    Bit 5 = DriveEnableAuto, wenn gesetzt, aktiviert Drive, wenn Daten im FIFO oder 
            Xmit Schieberegister sind, wird der Antrieb entfernt, wenn FIFO und Xmit Schieberegister 
            leer sind.
    Bit 6 = DriveEnableBit, Wenn DriveEnableAuto 0 ist, steuert Drive (
            für Software-Steuerung von Xmit Drive)

note: type: SH
en: OPERATORS
de: OPERATOREN

note: type: Plain text
en: The body of B<rtapi_app_exit>, which is provided by the component author, generally consists of a call to rtapi_exit or hal_exit, preceded by other component-specific shutdown code.
de: Der Körper von B<rtapi_app_exit>, der vom Autor der Komponente bereitgestellt wird, besteht in der Regel aus einem Aufruf von rtapi_exit oder hal_exit, dem weiterer komponentenspezifischer Shutdown-Code vorangestellt ist.

note: type: Plain text
en: The value to be stored in the object.  "*obj = desired" must be well-formed.
de: Der Wert, der in dem Objekt gespeichert werden soll: "*obj = desired" muss wohlgeformt sein.

note: type: Plain text
en: The required memory ordering semantic.
de: Die erforderliche Speicherordnungssemantik.

note: type: Plain text
en: This header provides at least the subset of C11's E<lt>stdatomic.hE<gt> given above.  When there is an ordering requirement for multiple values read or written in RTAPI shared memory areas by other threads of execution, including the values of HAL pins and parameters, these functions (or function-like macros) are the only way to ensure the ordering requirement is obeyed.  Otherwise, according to architecture-specific rules, loads and stores may be reordered from their normal source code order.
de: Dieser Header bietet zumindest die oben genannte Teilmenge von C11's E<lt>stdatomic.hE<gt>.  Wenn es eine Ordnungsanforderung für mehrere Werte gibt, die von anderen Ausführungssträngen in gemeinsam genutzte RTAPI-Speicherbereiche gelesen oder geschrieben werden, einschließlich der Werte von HAL-Pins und -Parametern, sind diese Funktionen (oder funktionsähnliche Makros) die einzige Möglichkeit, um sicherzustellen, dass die Ordnungsanforderung befolgt wird.  Andernfalls können Lade- und Speicheroperationen nach architekturspezifischen Regeln von ihrer normalen Quellcode-Reihenfolge abweichen.

note: type: Plain text
en: For example, to leave a message in a shared memory area from one thread and retrieve it from another, the writer must use an atomic store for the "message is complete" variable, and the reader must use an atomic load when checking that variable:
de: Um beispielsweise eine Nachricht von einem Thread in einem gemeinsamen Speicherbereich zu belassen und sie von einem anderen Thread abzurufen, muss der Schreiber die Variable "Nachricht ist vollständig" atomar speichern und der Leser muss diese Variable atomar laden:

note: type: Plain text
en: May be called from any code.
de: Kann aus jedem Code aufgerufen werden.

note: type: Plain text
en: B<atomic_load> and B<atomic_load_explicit> return the value pointed to by the I<obj> argument.
de: B<atomic_load> und B<atomic_load_explicit> geben den Wert zurück, auf den das Argument I<obj> zeigt.

note: type: Plain text
en: rtapi_bool.h - RTAPI wrappers for linux kernel functionality
de: rtapi_bool.h - RTAPI-Wrapper für Linux-Kernelfunktionen

note: type: Plain text
en: Includes either E<lt>stdbool.hE<gt> or E<lt>linux/types.hE<gt> as appropriate, to obtain suitable declarations of "bool", "true" and "false".
de: Enthält entweder E<lt>stdbool.hE<gt> oder E<lt>linux/types.hE<gt>, um geeignete Deklarationen von "bool", "true" und "false" zu erhalten.

note: type: Plain text
en: Also permitted in C++ programs, where including it has no effect.
de: Auch in C++-Programmen zulässig, wo es keine Auswirkungen hat.

note: type: Plain text
en: rtapi_byteorder.h - RTAPI wrappers for linux kernel functionality
de: rtapi_byteorder.h - RTAPI-Wrapper für Linux-Kernelfunktionen

note: type: Plain text
en: Defined to 1 if the platform is big-endian, 0 otherwise
de: Definiert als 1, wenn die Plattform Big-Endian ist, sonst 0

note: type: Plain text
en: Defined to 1 if the platform is little-endian, 0 otherwise
de: Definiert als 1, wenn die Plattform Little-Endian ist, sonst 0

note: type: Plain text
en: Defined to 1 if the platform double-precision value is big-endian, 0 otherwise.
de: Definiert als 1, wenn der Plattform-Doppelpräzisionswert Big-Endian ist, ansonsten 0.

note: type: Plain text
en: In kernel space, each rtapi_xxx or RTAPI_XXX identifier is mapped to the underlying kernel functionality, if available.
de: Im Kernelbereich wird jeder rtapi_xxx oder RTAPI_XXX Bezeichner der zugrunde liegenden Kernelfunktionalität zugeordnet, sofern verfügbar.

note: type: Plain text
en: In userspace, or in kernels where the underlying functionality is not provided by a kernel, generally another implementation--possibly with reduced functionality--is provided.  (For example, the userspace implementation for rtapi_byteorder_register always succeeds)
de: Im Userspace oder in Kerneln, welche die zugrunde liegende Funktionalität nicht von einem Kernel bereitgestellten, wird in der Regel eine andere Implementierung - möglicherweise mit reduzierter Funktionalität - bereitgestellt.  (Zum Beispiel ist die Userspace-Implementierung für rtapi_byteorder_register immer erfolgreich)

note: type: Plain text
en: May be used at any time.
de: Kann jederzeit verwendet werden.

note: type: Plain text
en: As in Linux.
de: Wie in Linux.

note: type: Plain text
en: rtapi_clock_set_period - set the basic time interval for realtime tasks
de: rtapi_clock_set_period - setzt das grundlegende Zeitintervall für Echtzeitaufgaben

note: type: Plain text
en: The desired basic time interval for realtime tasks.
de: Das gewünschte Grundzeitintervall für Echtzeitaufgaben.

note: type: Plain text
en: B<rtapi_clock_set_period> sets the basic time interval for realtime tasks.  All periodic tasks will run at an integer multiple of this period.  The first call to B<rtapi_clock_set_period> with I<nsec> greater than zero will start the clock, using I<nsec> as the clock period in nano-seconds.  Due to hardware and RTOS limitations, the actual period may not be exactly what was requested.  On success, the function will return the actual clock period if it is available, otherwise it returns the requested period.  If the requested period is outside the limits imposed by the hardware or RTOS, it returns B<-EINVAL> and does not start the clock.  Once the clock is started, subsequent calls with non-zero I<nsec> return B<-EINVAL> and have no effect.  Calling B<rtapi_clock_set_period> with I<nsec> set to zero queries the clock, returning the current clock period, or zero if the clock has not yet been started.
de: B<rtapi_clock_set_period> legt das grundlegende Zeitintervall für Echtzeitaufgaben fest.  Alle periodischen Tasks laufen mit einem ganzzahligen Vielfachen dieser Periode.  Der erste Aufruf von B<rtapi_clock_set_period> mit I<nsec> größer als Null startet die Uhr, wobei I<nsec> als die Taktperiode in Nanosekunden verwendet wird.  Aufgrund von Hardware- und RTOS-Beschränkungen kann es sein, dass die tatsächliche Periode nicht genau dem entspricht, was angefordert wurde.  Bei Erfolg gibt die Funktion die tatsächliche Taktperiode zurück, wenn sie verfügbar ist, andernfalls die angeforderte Periode.  Liegt die angeforderte Periode außerhalb der von der Hardware oder dem RTOS vorgegebenen Grenzen, gibt sie B<-EINVAL> zurück und startet die Uhr nicht.  Sobald die Uhr gestartet ist, geben nachfolgende Aufrufe mit I<nsec> ungleich Null B<-EINVAL> zurück und haben keine Auswirkungen.  Ein Aufruf von B<rtapi_clock_set_period> mit I<nsec> auf Null fragt die Uhr ab und gibt die aktuelle Taktperiode zurück, oder Null, wenn die Uhr noch nicht gestartet wurde.

note: type: Plain text
en: Call only from within init/cleanup code, not from realtime tasks.  This function is not available from user (non-realtime) code.
de: Aufruf nur aus dem Init/Cleanup-Code, nicht aus Echtzeit-Tasks.  Diese Funktion ist im Benutzercode (nicht in Echtzeit) nicht verfügbar.

note: type: Plain text
en: The actual period provided by the RTOS, which may be different than the requested period, or a RTAPI status code.
de: Der vom RTOS bereitgestellte tatsächliche Zeitraum, der sich von dem angeforderten Zeitraum unterscheiden kann, oder ein RTAPI-Statuscode.

note: type: Plain text
en: rtapi_delay - Busy-loop for short delays
de: rtapi_delay - Busy-loop für kurze Verzögerungen

note: type: Plain text
en: The desired delay length in nanoseconds
de: Die gewünschte Verzögerungslänge in Nanosekunden

note: type: Plain text
en: B<rtapi_delay> is a simple delay.  It is intended only for short delays, since it simply loops, wasting CPU cycles.
de: B<rtapi_delay> ist eine einfache Verzögerung.  Sie ist nur für kurze Verzögerungen gedacht, da sie nur eine Schleife bildet und CPU-Zyklen verschwendet.

note: type: Plain text
en: B<rtapi_delay_max> returns the max delay permitted (usually approximately 1/4 of the clock period).  Any call to B<rtapi_delay> requesting a delay longer than the max will delay for the max time only.
de: B<rtapi_delay_max> gibt die maximal zulässige Verzögerung zurück (normalerweise etwa 1/4 der Taktperiode).  Jeder Aufruf von B<rtapi_delay>, der eine längere Verzögerung als die Maximalzeit anfordert, verzögert nur um die Maximalzeit.

note: type: Plain text
en: B<rtapi_delay_max> should be called before using B<rtapi_delay> to make sure the required delays can be achieved.  The actual resolution of the delay may be as good as one nano-second, or as bad as a several microseconds.
de: B<rtapi_delay_max> sollte vor der Verwendung von B<rtapi_delay> aufgerufen werden, um sicherzustellen, dass die erforderlichen Verzögerungen erreicht werden können.  Die tatsächliche Auflösung der Verzögerung kann so gut wie eine Nanosekunde oder so schlecht wie einige Mikrosekunden sein.

note: type: Plain text
en: May be called from init/cleanup code, and from within realtime tasks.
de: Kann von Init/Cleanup-Code und von Echtzeit-Tasks aus aufgerufen werden.

note: type: Plain text
en: B<rtapi_delay_max returns the maximum delay permitted.>
de: B<rtapi_delay_max gibt die maximal zulässige Verzögerung zurück.>

note: type: Plain text
en: rtapi_device.h - RTAPI wrappers for linux kernel functionality
de: rtapi_device.h - RTAPI-Wrapper für Linux-Kernelfunktionen

note: type: Plain text
en: In userspace, or in kernels where the underlying functionality is not provided by a kernel, generally another implementation--possibly with reduced functionality--is provided.  (For example, the userspace implementation for rtapi_device_register always succeeds)
de: Im Userspace oder in Kerneln, welche die zugrundeliegende Funktionalität nicht von einem Kernel bereitgestellten, wird in der Regel eine andere Implementierung - möglicherweise mit reduzierter Funktionalität - bereitgestellt.  (Zum Beispiel ist die Userspace-Implementierung für rtapi_device_register immer erfolgreich)

note: type: Plain text
en: Typically, these functions may be called from realtime init/cleanup code.
de: Typischerweise können diese Funktionen von Echtzeit-Init/Cleanup-Code aufgerufen werden.

note: type: Plain text
en: rtapi_div_u64 - unsigned division of a 64-bit number by a 32-bit number
de: rtapi_div_u64 - vorzeichenlose Division einer 64-Bit-Zahl durch eine 32-Bit-Zahl

note: type: IP
en: I<dividend>
de: I<Dividend>

note: type: Plain text
en: The value to be divided
de: Der zu teilende Wert

note: type: IP
en: I<divisor>
de: I<Divisor>

note: type: Plain text
en: The value to divide by
de: Der Wert, durch den geteilt werden soll

note: type: IP
en: I<remainder>
de: I<Rest>

note: type: Plain text
en: Pointer to the location to store the remainder.  This may not be a NULL pointer.  If the remainder is not desired, call B<rtapi_div_u64> or B<rtapi_div_s64>.
de: Zeiger auf den Ort, an dem der Rest gespeichert werden soll.  Dies darf kein NULL-Zeiger sein.  Ist der Rest nicht erwünscht, rufen Sie B<rtapi_div_u64> oder B<rtapi_div_s64> auf.

note: type: Plain text
en: Perform integer division (and optionally compute the remainder) with a 64-bit dividend and 32-bit divisor.
de: Durchführung einer Ganzzahldivision (und optionale Berechnung des Rests) mit einer 64-Bit-Dividende und einem 32-Bit-Divisor.

note: type: Plain text
en: The result of integer division of I<dividend / divisor>.  In versions with the I<remainder> argument, the remainder is stored in the pointed-to location.
de: Das Ergebnis der ganzzahligen Division von I<Dividende/Divisor>.  In Versionen mit dem Argument I<Rest> wird der Rest an der angegebenen Stelle gespeichert.

note: type: Plain text
en: If the result of the division does not fit in the return type, the result is undefined.
de: Wenn das Ergebnis der Division nicht in den Rückgabetyp passt, ist das Ergebnis undefiniert.

note: type: Plain text
en: This function exists because in kernel space the use of the division operator on a 64-bit type can lead to an undefined symbol such as __umoddi3 when the module is loaded.
de: Diese Funktion existiert, weil die Verwendung des Divisionsoperators auf einen 64-Bit-Typ im Kernelbereich zu einem undefinierten Symbol wie __umoddi3 führen kann, wenn das Modul geladen wird.

note: type: Plain text
en: May be called from init/cleanup code and from within realtime tasks.  Available in userspace components.
de: Kann von Init/Cleanup-Code und von Echtzeit-Tasks aus aufgerufen werden.  Verfügbar in Userspace-Komponenten.

note: type: Plain text
en: rtapi_exit - Shut down RTAPI
de: rtapi_exit - RTAPI abschalten

note: type: Plain text
en: An rtapi module identifier returned by an earlier call to B<rtapi_init>.
de: Eine rtapi-Modulkennung, die durch einen früheren Aufruf von B<rtapi_init> zurückgegeben wurde.

note: type: Plain text
en: B<rtapi_exit> shuts down and cleans up the RTAPI.  It must be called prior to exit by any module that called B<rtapi_init>.
de: B<rtapi_exit> beendet und bereinigt das RTAPI.  Es muß vor dem Beenden von jedem Modul aufgerufen werden, das B<rtapi_init> aufgerufen hat.

note: type: Plain text
en: Returns a RTAPI status code.
de: Gibt einen RTAPI-Statuscode zurück.

note: type: Plain text
en: rtapi_firmware.h - RTAPI wrappers for linux kernel functionality
de: rtapi_firmware.h - RTAPI-Wrapper für Linux-Kernelfunktionen

note: type: Plain text
en: rtapi_get_time - get the current time
de: rtapi_get_time - liefert die aktuelle Zeit

note: type: Plain text
en: B<rtapi_get_time> returns the current time in nanoseconds.  Depending on the RTOS, this may be time since boot, or time since the clock period was set, or some other time.  Its absolute value means nothing, but it is monotonically increasing and can be used to schedule future events, or to time the duration of some activity.  Returns a 64 bit value.  The resolution of the returned value may be as good as one nano-second, or as poor as several microseconds.  May be called from init/cleanup code, and from within realtime tasks.
de: B<rtapi_get_time> gibt die aktuelle Zeit in Nanosekunden zurück.  Je nach RTOS kann dies die Zeit seit dem Booten sein, oder die Zeit seit dem Setzen der Taktperiode oder eine andere Zeit.  Der absolute Wert hat keine Bedeutung, aber er steigt monoton an und kann zur Planung zukünftiger Ereignisse oder zur Bestimmung der Dauer einer Aktivität verwendet werden.  Gibt einen 64-Bit-Wert zurück.  Die Auflösung des zurückgegebenen Wertes kann so gut wie eine Nanosekunde oder so schlecht wie einige Mikrosekunden sein.  Kann von Init/Cleanup-Code und aus Echtzeit-Tasks heraus aufgerufen werden.

note: type: Plain text
en: B<rtapi_get_clocks> returns the current time in CPU clocks.  It is fast, since it just reads the TSC in the CPU instead of calling a kernel or RTOS function.  Of course, times measured in CPU clocks are not as convenient, but for relative measurements this works fine.  Its absolute value means nothing, but it is monotonically increasing and can be used to schedule future events, or to time the duration of some activity.  (On SMP machines, the two TSC's may get out of sync, so if a task reads the TSC, gets swapped to the other CPU, and reads again, the value may decrease.  RTAPI tries to force all RT tasks to run on one CPU.)  Returns a 64 bit value.  The resolution of the returned value is one CPU clock, which is usually a few nanoseconds to a fraction of a nanosecond.
de: B<rtapi_get_clocks> gibt die aktuelle Zeit in CPU-Takten zurück.  Es ist schnell, da es einfach die TSC in der CPU liest, anstatt eine Kernel- oder RTOS-Funktion aufzurufen.  Natürlich sind Zeiten, die in CPU-Takten gemessen werden, nicht so bequem, aber für relative Messungen funktioniert dies gut.  Ihr absoluter Wert bedeutet nichts, aber er steigt monoton an und kann verwendet werden, um zukünftige Ereignisse zu planen oder um die Dauer einer Aktivität zu bestimmen.  (Auf SMP-Maschinen können die beiden TSCs aus dem Takt geraten, wenn also eine Aufgabe den TSC liest, zur anderen CPU gewechselt wird und erneut liest, kann der Wert sinken.  RTAPI versucht, alle RT-Aufgaben auf einer CPU laufen zu lassen).  Gibt einen 64-Bit-Wert zurück.  Die Auflösung des zurückgegebenen Wertes ist ein CPU-Takt, was normalerweise ein paar Nanosekunden bis zu einem Bruchteil einer Nanosekunde beträgt.

note: type: Plain text
en: Note that I<long long> math may be poorly supported on some platforms, especially in kernel space. Also note that rtapi_print() will NOT print I<long long>s.  Most time measurements are relative, and should be done like this:
de: Beachten Sie, dass die I<long long>-Mathematik auf einigen Plattformen schlecht unterstützt wird, insbesondere im Kernelspace. Beachten Sie auch, dass rtapi_print() I<long long>s NICHT ausgibt.  Die meisten Zeitmessungen sind relativ und sollten wie folgt durchgeführt werden:

note: type: Plain text
en: where end_time and start_time are longlong values returned from rtapi_get_time, and deltat is an ordinary long int (32 bits).  This will work for times up to a second or so, depending on the CPU clock frequency.  It is best used for millisecond and microsecond scale measurements though.
de: wobei end_time und start_time longlong-Werte sind, die von rtapi_get_time zurückgegeben werden, und deltat ein gewöhnlicher long int (32 Bit) ist.  Dies funktioniert für Zeiten bis zu einer Sekunde oder so, abhängig von der CPU-Taktfrequenz.  Es ist jedoch am besten für Messungen im Millisekunden- und Mikrosekundenbereich geeignet.

note: type: Plain text
en: Returns the current time in nanoseconds or CPU clocks.
de: Gibt die aktuelle Zeit in Nanosekunden oder CPU-Takten zurück.

note: type: Plain text
en: Certain versions of the Linux kernel provide a global variable B<cpu_khz>.  Computing
de: Bestimmte Versionen des Linux-Kernels bieten eine globale Variable B<cpu_khz>.  Rechnen

note: type: Plain text
en: gives the duration measured in milliseconds.  Computing
de: gibt die Dauer gemessen in Millisekunden an. Rechnen

note: type: Plain text
en: gives the duration measured in nanoseconds for deltas less than about 9 trillion clocks (e.g., 3000 seconds at 3 GHz).
de: gibt die Dauer in Nanosekunden für Deltas von weniger als 9 Billionen ( = 10^12) Takten an (z. B. 3000 Sekunden bei 3 GHz).

note: type: Plain text
en: The name of this rtapi module
de: Der Name dieses RTAPI-Moduls

note: type: Plain text
en: B<rtapi_init> sets up the RTAPI.  It must be called by any module that intends to use the API, before any other RTAPI calls.
de: B<rtapi_init> richtet die RTAPI ein.  Es muß von jedem Modul aufgerufen werden, das die API verwenden will, und zwar vor allen anderen RTAPI-Aufrufen.

note: type: Plain text
en: I<modname> can optionally point to a string that identifies the module.  The string will be truncated at B<RTAPI_NAME_LEN> characters.  If I<modname> is B<NULL>, the system will assign a name.
de: I<modname> kann optional auf eine Zeichenkette verweisen, die das Modul identifiziert.  Die Zeichenkette wird bei B<RTAPI_NAME_LEN> Zeichen abgeschnitten.  Wenn I<modname> B<NULL> ist, wird das System einen Namen zuweisen.

note: type: Plain text
en: On success, returns a positive integer module ID, which is used for subsequent calls to rtapi_xxx_new, rtapi_xxx_delete, and rtapi_exit.  On failure, returns an RTAPI error code.
de: Gibt bei Erfolg eine positive ganzzahlige Modul-ID zurück, die für nachfolgende Aufrufe von rtapi_xxx_new, rtapi_xxx_delete und rtapi_exit verwendet wird.  Im Fehlerfall wird ein RTAPI-Fehlercode zurückgegeben.

note: type: Plain text
en: rtapi_io.h - RTAPI wrappers for linux kernel functionality
de: rtapi_io.h - RTAPI-Wrapper für Linux-Kernelfunktionen

note: type: Plain text
en: unsigned void rtapi_inl(unsigned int value, unsigned short int port);
de: unsigned void rtapi_inl (unsigned int value, unsigned short int port);

note: type: Plain text
en: Call from init/cleanup code and from realtime tasks.  These functions will cause illegal instruction exceptions in userspace components, as well as in uspace rtapi_app when it is not setuid root.
de: Aufruf von Init/Cleanup-Code und von Echtzeit-Tasks.  Diese Funktionen verursachen illegale Befehlsausnahmen in Userspace-Komponenten sowie im Uspace rtapi_app, wenn dieser nicht setuid root ist.

note: type: Plain text
en: rtapi_is - details of rtapi configuration
de: rtapi_is - Einzelheiten der rtapi-Konfiguration

note: type: Plain text
en: B<rtapi_is_kernelspace()> returns nonzero when rtapi modules run in kernel space (e.g., under rtai) and zero when they run in userspace (e.g., under uspace).
de: B<rtapi_is_kernelspace()> gibt einen Wert ungleich Null zurück, wenn rtapi-Module im Kernel-Space laufen (z.B. unter rtai) und Null, wenn sie im Userspace laufen (z.B. unter uspace).

note: type: Plain text
en: B<rtapi_is_realtime()> returns nonzero when capable of running with realtime guarantees.  For rtai, this always returns nonzero (but actually loading realtime modules will fail if not running under the appropriate kernel).  For uspace, this returns nonzero when the running kernel indicates it is capable of realtime performance.  If B<rtapi_app> is not setuid root, this returns nonzero even though B<rtapi_app> will not be able to obtain realtime scheduling or hardware access, so e.g., attempting to B<loadrt> a hardware driver will fail.
de: B<rtapi_is_realtime()> gibt einen Wert ungleich Null zurück, wenn es mit Echtzeitgarantien laufen kann.  Bei rtai ist der Rückgabewert immer ungleich Null (das Laden von Echtzeitmodulen schlägt jedoch fehl, wenn es nicht unter dem entsprechenden Kernel läuft).  Für uspace ist der Wert ungleich Null, wenn der laufende Kernel angibt, dass er echtzeitfähig ist.  Wenn B<rtapi_app> nicht setuid root ist, gibt dies einen Wert ungleich Null zurück, obwohl B<rtapi_app> nicht in der Lage sein wird, Echtzeit-Scheduling oder Hardware-Zugriff zu erhalten, so dass z.B. der Versuch, B<loadrt> einen Hardware-Treiber zu laden, fehlschlagen wird.

note: type: Plain text
en: May be called from userspace or from realtime setup code.  B<rtapi_is_realtime()> may perform filesystem I/O.
de: Kann vom Userspace oder vom Echtzeit-Setup-Code aufgerufen werden.  B<rtapi_is_realtime()> kann Dateisystem-E/A durchführen.

note: type: Plain text
en: Zero for false, nonzero for true.
de: Null für falsch, ungleich Null für wahr.

note: type: Plain text
en: rtapi_list.h - RTAPI wrappers for linux kernel functionality
de: rtapi_list.h - RTAPI-Wrapper für Linux-Kernelfunktionen

note: type: TH
en: rtapi_module_param
de: rtapi_modul_param

note: type: Plain text
en: rtapi_module_param - Specifying module parameters
de: rtapi_module_param - Angabe der Modulparameter

note: type: Plain text
en: RTAPI_MP_INT(I<var>, I<description>)
de: RTAPI_MP_INT(I<var>, I<Beschreibung>)

note: type: Plain text
en: RTAPI_MP_LONG(I<var>, I<description>)
de: RTAPI_MP_LONG(I<var>, I<Beschreibung>)

note: type: Plain text
en: RTAPI_MP_STRING(I<var>, I<description>)
de: RTAPI_MP_STRING(I<var>, I<Beschreibung>)

note: type: Plain text
en: RTAPI_MP_ARRAY_INT(I<var>, I<num>, I<description>)
de: RTAPI_MP_ARRAY_INT(I<var>, I<num>, I<Beschreibung>)

note: type: Plain text
en: RTAPI_MP_ARRAY_STRING(I<var>, I<num>, I<description>)
de: RTAPI_MP_ARRAY_STRING(I<var>, I<num>, I<beschreibung>)

note: type: Plain text
en: MODULE_LICENSE(I<license>)
de: MODULE_LICENSE(I<Lizenz>)

note: type: Plain text
en: MODULE_AUTHOR(I<author>)
de: MODULE_AUTHOR(I<Autor>)

note: type: Plain text
en: MODULE_DESCRIPTION(I<description>)
de: MODULE_DESCRIPTION(I<Beschreibung>)

note: type: Plain text
en: EXPORT_FUNCTION(I<function>)
de: EXPORT_FUNCTION(I<Funktion>)

note: type: Plain text
en: The variable where the parameter should be stored
de: Die Variable, die den Parameter speichern soll

note: type: IP
en: I<description>
de: I<Beschreibung>

note: type: Plain text
en: A short description of the parameter or module
de: Eine kurze Beschreibung des Parameters oder Moduls

note: type: Plain text
en: The maximum number of values for an array parameter
de: Die maximale Anzahl von Werten für einen Array-Parameter

note: type: IP
en: I<license>
de: I<Lizenz>

note: type: Plain text
en: The license of the module, for instance "GPL"
de: Die Lizenz des Moduls, zum Beispiel "GPL".

note: type: IP
en: I<author>
de: I<Autor>

note: type: Plain text
en: The author of the module
de: Der Autor des Moduls

note: type: IP
en: I<function>
de: I<Funktion>

note: type: Plain text
en: The pointer to the function to be exported
de: Der Zeiger auf die zu exportierende Funktion

note: type: Plain text
en: These macros are portable ways to declare kernel module parameters.  They must be used in the global scope, and are not followed by a terminating semicolon.  They must be used after the associated variable or function has been defined.
de: Diese Makros sind portable Methoden zur Deklaration von Kernelmodulparametern.  Sie müssen im globalen Bereich verwendet werden und werden nicht von einem abschließenden Semikolon gefolgt.  Sie müssen verwendet werden, nachdem die zugehörige Variable oder Funktion definiert wurde.

note: type: Plain text
en: EXPORT_FUNCTION makes a symbol available for use by a subsequently loaded component.  It is unrelated to HAL functions, which are described in hal_export_funct(3hal)
de: EXPORT_FUNCTION macht ein Symbol für die Verwendung durch eine später geladene Komponente verfügbar.  Sie hat nichts mit den HAL-Funktionen zu tun, die in hal_export_funct(3hal) beschrieben sind

note: type: SH
en: Interpretation of license strings
de: Interpretation von Lizenzstrings

note: type: Plain text
en: B<MODULE_LICENSE> follows the kernel's definition of license strings.  Notably, "GPL" indicates "GNU General Public License v2 I<or later>".  (emphasis ours).
de: B<MODULE_LICENSE> folgt der Definition des Kernels für Lizenzstrings.  Insbesondere steht "GPL" für "GNU General Public License v2 I<oder später>" (Hervorhebung von uns).

note: type: Plain text
en: GNU General Public License v2 or later
de: GNU General Public License v2 oder höher

note: type: IP
en: B<"GPL\ v2">
de: B<"GPL\v2">

note: type: Plain text
en: GNU General Public License v2 rights and more
de: Rechte der GNU General Public License v2 und weitere.

note: type: Plain text
en: GNU General Public License v2 or BSD license choice
de: Wahlweise GNU General Public License v2 oder BSD-Lizenz

note: type: Plain text
en: GNU General Public License v2 or MIT license choice
de: Wahlweise GNU General Public License v2 oder MIT-Lizenz

note: type: Plain text
en: GNU General Public License v2 or Mozilla license choice
de: GNU General Public License v2 oder Mozilla-Lizenz nach Wahl

note: type: Plain text
en: Non-free products
de: Unfreie Produkte

note: type: Plain text
en: It is still good practice to include a license block which indicates the author, copyright date, and disclaimer of warranty as recommended by the GNU GPL.
de: Es ist immer noch gute Praxis, einen Lizenzblock einzufügen, der den Autor, das Copyright-Datum und den Haftungsausschluss angibt, wie von der GNU GPL empfohlen.

note: type: Plain text
en: Not available in userspace code.
de: Im Userspace-Code nicht verfügbar.

note: type: Plain text
en: rtapi_mutex - Mutex-related functions
de: rtapi_mutex - Mutex-bezogene Funktionen

note: type: Plain text
en: A pointer to the mutex.
de: Ein Zeiger auf den Mutex.

note: type: Plain text
en: B<rtapi_mutex_try> makes a non-blocking attempt to get the mutex.  If the mutex is available, it returns 0, and the mutex is no longer available.  Otherwise, it returns a nonzero value.
de: B<rtapi_mutex_try> unternimmt einen nicht-blockierenden Versuch, die Mutex zu erhalten.  Wenn die Mutex verfügbar ist, gibt es 0 zurück, und die Mutex ist nicht mehr verfügbar.  Andernfalls gibt es einen Wert ungleich Null zurück.

note: type: Plain text
en: B<rtapi_mutex_get> blocks until the mutex is available.
de: B<rtapi_mutex_get> blockiert, bis die Mutex verfügbar ist.

note: type: Plain text
en: B<rtapi_mutex_give> releases a mutex acquired by B<rtapi_mutex_try> or B<rtapi_mutex_get>.
de: B<rtapi_mutex_give> gibt einen Mutex frei, der durch B<rtapi_mutex_try> oder B<rtapi_mutex_get> erworben wurde.

note: type: Plain text
en: B<rtapi_mutex_give> and B<rtapi_mutex_try> may be used from user, init/cleanup, and realtime code.
de: B<rtapi_mutex_give> und B<rtapi_mutex_try> können von Benutzer-, Init-/Cleanup- und Echtzeitcode aus verwendet werden.

note: type: Plain text
en: B<rtapi_mutex_get> may not be used from realtime code.
de: B<rtapi_mutex_get> darf nicht in Echtzeit-Code verwendet werden.

note: type: Plain text
en: B<rtapi_mutex_try> returns 0 for if the mutex was claimed, and nonzero otherwise.
de: B<rtapi_mutex_try> gibt 0 zurück, wenn die Mutex beansprucht wurde, und andernfalls einen Wert ungleich Null.

note: type: Plain text
en: B<rtapi_mutex_get> and B<rtapi_mutex_gif> have no return value.
de: B<rtapi_mutex_get> und B<rtapi_mutex_gif> haben keinen Rückgabewert.

note: type: Plain text
en: rtapi_open_as_root - Open a file with "root" privilege
de: rtapi_open_as_root - Öffnen einer Datei mit "root"-Rechten

note: type: Plain text
en: The filename to open, as in B<open(2)>.  Note that rtapi has no well-defined "current directory", so this should be an absolute path, but this is not enforced.
de: Der zu öffnende Dateiname, wie in B<open(2)>.  Beachten Sie, dass rtapi kein wohldefiniertes "aktuelles Verzeichnis" hat, so dass dies ein absoluter Pfad sein sollte, aber dies wird nicht erzwungen.

note: type: Plain text
en: The open flags, as in B<open(2)>.  Should never include bits that open or create files (e.g., O_CREAT, O_APPEND, etc) as this API is not intended for creating or writing files, but this is not enforced.
de: Die Open-Flags, wie in B<open(2)>.  Sollte niemals Bits enthalten, die Dateien öffnen oder erstellen (z. B. O_CREAT, O_APPEND usw.), da diese API nicht für das Erstellen oder Schreiben von Dateien gedacht ist, aber dies wird nicht erzwungen.

note: type: Plain text
en: In "uspace" realtime, root privileges are dropped whenever possible.  This API temporarily switches on root privileges to open a file, and switches them off before returning.  This can be useful for example when accessing device nodes or memory-mapped I/O.
de: In "uspace"-Echtzeit werden die Root-Rechte wann immer möglich aufgehoben.  Diese API schaltet vorübergehend Root-Rechte ein, um eine Datei zu öffnen, und schaltet sie vor der Rückkehr wieder aus.  Dies kann z. B. beim Zugriff auf Geräteknoten oder speicherprogrammierte E/A nützlich sein.

note: type: Plain text
en: In the case of PCI devices on x86 and x86-64 systems, prefer the linux-style PCI interfaces provided in B<E<lt>rtapi_pci.hE<gt>>.
de: Im Falle von PCI-Geräten auf x86- und x86-64-Systemen sollten Sie die linuxähnlichen PCI-Schnittstellen in B<E<lt>rtapi_pci.hE<gt>> bevorzugen.

note: type: Plain text
en: In case of success, the nonnegative file descriptor opened.  If the caller does not close it, it remains open until rtapi_app exits.
de: Im Erfolgsfall wird der nicht-negative Dateideskriptor geöffnet.  Wenn der Aufrufer ihn nicht schließt, bleibt er offen, bis rtapi_app beendet wird.

note: type: Plain text
en: In case of failure, a negative errno value.
de: Im Falle eines Fehlers wird ein negativer errno-Wert ausgegeben.

note: type: Plain text
en: Call only from realtime initcode in "uspace" realtime.
de: Aufruf nur von Echtzeit-Initcode in "uspace"-Echtzeit.

note: type: Plain text
en: rtapi_outb, rtapi_inb - Perform hardware I/O
de: rtapi_outb, rtapi_inb - Hardware-E/A durchführen

note: type: Plain text
en: The address of the I/O port
de: Die Adresse des E/A-Anschlusses

note: type: Plain text
en: The byte to be written to the port
de: Das Byte, das an den Port geschrieben werden soll

note: type: Plain text
en: B<rtapi_outb> writes a byte to a hardware I/O port.  B<rtapi_inb> reads a byte from a hardware I/O port.
de: B<rtapi_outb> schreibt ein Byte an einen Hardware-I/O-Port.  B<rtapi_inb> liest ein Byte von einem Hardware-I/O-Port.

note: type: Plain text
en: B<rtapi_inb> returns the byte read from the given I/O port
de: B<rtapi_inb> gibt das vom angegebenen I/O-Port gelesene Byte zurück

note: type: Plain text
en: The I/O address should be within a region previously allocated by B<rtapi_request_region>.  Otherwise, another real-time module or the Linux kernel might attempt to access the I/O region at the same time.
de: Die E/A-Adresse sollte innerhalb eines Bereichs liegen, der zuvor von B<rtapi_request_region> zugewiesen wurde.  Andernfalls könnte ein anderes Echtzeitmodul oder der Linux-Kernel versuchen, gleichzeitig auf die E/A-Region zuzugreifen.

note: type: Plain text
en: rtapi_parport - portable access to PC-style parallel ports
de: rtapi_parport - portabler Zugriff auf parallele Schnittstellen im PC-Stil

note: type: IP
en: I<module_name>
de: I<modul_name>

note: type: Plain text
en: By convention, the name of the RTAPI module or HAL component using the parport.
de: Konventionell ist der Name des RTAPI-Moduls oder der HAL-Komponente, die den Parport verwendet.

note: type: Plain text
en: A pointer to a rtapi_parport_t structure
de: Ein Zeiger auf eine rtapi_parport_t Struktur

note: type: Plain text
en: B<rtapi_parport_get> allocates a parallel port for exclusive use of the named hal component.  If successful, access the port with I/O calls such as rtapi_inb at address based at the B<base> or B<base_hi> addresses.  The port must be released with B<rtapi_parport_release> before the component exits with B<rtapi_exit>.
de: B<rtapi_parport_get> weist eine parallele Schnittstelle zur ausschließlichen Verwendung durch die genannte hal-Komponente zu.  Bei Erfolg greifen Sie auf den Port mit E/A-Aufrufen wie rtapi_inb an den Adressen B<base> oder B<base_hi> zu.  Der Port muss mit B<rtapi_parport_release> freigegeben werden, bevor die Komponente mit B<rtapi_exit> beendet wird.

note: type: Plain text
en: typedef struct
    {
        unsigned short base;
        unsigned short base_hi;
        .... // and further unspecified fields
    } rtapi_parport_t;
de: typedef struct
    {
        unsigned short base;
        unsigned short base_hi;
        .... // und weitere nicht spezifizierte Felder
    } rtapi_parport_t;

note: type: Plain text
en: B<rtapi_parport_get> returns a HAL status code.  On success, I<port> is filled out with information about the allocated port.  On failure, the contents of I<port> are undefined except that it is safe (but not required) to pass this port to B<rtapi_parport_release>.
de: B<rtapi_parport_get> gibt einen HAL-Statuscode zurück.  Bei Erfolg wird I<port> mit Informationen über den zugewiesenen Port ausgefüllt.  Im Fehlerfall ist der Inhalt von I<port> undefiniert, außer dass es sicher (aber nicht erforderlich) ist, diesen Port an B<rtapi_parport_release> zu übergeben.

note: type: Plain text
en: B<rtapi_parport_release> does not return a value.  It always succeeds.
de: B<rtapi_parport_release> gibt keinen Wert zurück.  Es ist immer erfolgreich.

note: type: Plain text
en: rtapi_pci.h - RTAPI wrappers for linux kernel functionality
de: rtapi_pci.h - RTAPI-Wrapper für Linux-Kernelfunktionen

note: type: Plain text
en: In userspace, or in kernels where the underlying functionality is not provided by a kernel, generally another implementation--possibly with reduced functionality--is provided.  (For example, the userspace implementation for rtapi_pci_register always succeeds)
de: Im Userspace oder in Kerneln, welche die zugrundeliegende Funktionalität nicht bereitstellen, wird in der Regel eine andere Implementierung - möglicherweise mit reduzierter Funktionalität - bereitgestellt.  (Zum Beispiel ist die Userspace-Implementierung für rtapi_pci_register immer erfolgreich)

note: type: Plain text
en: rtapi_print, rtapi_print_msg - print diagnostic messages
de: rtapi_print, rtapi_print_msg - Druck von Diagnosemeldungen

note: type: Plain text
en: A message level: One of B<RTAPI_MSG_ERR>, B<RTAPI_MSG_WARN>, B<RTAPI_MSG_INFO>, or B<RTAPI_MSG_DBG>.
de: Eine Nachrichtenebene: Eine von B<RTAPI_MSG_ERR>, B<RTAPI_MSG_WARN>, B<RTAPI_MSG_INFO>, oder B<RTAPI_MSG_DBG>.

note: type: Plain text
en: A function to call from B<rtapi_print> or B<rtapi_print_msg> to actually output the message.
de: Eine Funktion, die von B<rtapi_print> oder B<rtapi_print_msg> aufgerufen wird, um die Nachricht tatsächlich auszugeben.

note: type: Plain text
en: Other arguments are as for I<rtapi_vsnprintf(3rtapi)>.
de: Die übrigen Argumente entsprechen denen von I<rtapi_vsnprintf(3rtapi)>.

note: type: Plain text
en: B<rtapi_print> and B<rtapi_print_msg> work like the standard C printf functions, except that a reduced set of formatting operations are supported.  Notably, formatting long-long values is not supported, and formatting floating-point values has different behavior than standard printf.
de: B<rtapi_print> und B<rtapi_print_msg> funktionieren wie die standardmäßigen C printf-Funktionen, mit der Ausnahme, dass eine reduzierte Anzahl von Formatierungsoperationen unterstützt wird.  Insbesondere wird die Formatierung von Long-Long-Werten nicht unterstützt, und die Formatierung von Fließkommawerten verhält sich anders als bei Standard printf.

note: type: Plain text
en: Depending on the RTOS, the default may be to print the message to stdout, stderr, a kernel log, etc.  In RTAPI code, the action may be changed by a call to B<rtapi_set_msg_handler>.  A B<NULL> argument to B<rtapi_set_msg_handler> restores the default handler.  B<rtapi_msg_get_handler> returns the current handler.  When the message came from B<rtapi_print>, I<level> is RTAPI_MSG_ALL.
de: Je nach RTOS wird die Meldung standardmäßig auf stdout, stderr, in einem Kernel-Protokoll usw. ausgegeben.  Im RTAPI-Code kann die Aktion durch einen Aufruf von B<rtapi_set_msg_handler> geändert werden.  Ein B<NULL>-Argument an B<rtapi_set_msg_handler> stellt den Standard-Handler wieder her.  B<rtapi_msg_get_handler> gibt den aktuellen Handler zurück.  Wenn die Nachricht von B<rtapi_print> kam, ist I<level> RTAPI_MSG_ALL.

note: type: Plain text
en: B<rtapi_print_msg> works like rtapi_print but only prints if I<level> is less than or equal to the current message level.
de: B<rtapi_print_msg> funktioniert wie rtapi_print, druckt aber nur, wenn I<level> kleiner oder gleich dem aktuellen Nachrichtenlevel ist.

note: type: Plain text
en: B<rtapi_print> and B<rtapi_print_msg> May be called from user, init/cleanup, and realtime code.  B<rtapi_get_msg_handler> and B<rtapi_set_msg_handler> may be called from realtime init/cleanup code.  A message handler passed to B<rtapi_set_msg_handler> may only call functions that can be called from realtime code.
de: B<rtapi_print> und B<rtapi_print_msg> können von Benutzer-, Init/Cleanup- und Echtzeitcode aufgerufen werden.  B<rtapi_get_msg_handler> und B<rtapi_set_msg_handler> können vom Echtzeit-Init/Cleanup-Code aus aufgerufen werden.  Ein an B<rtapi_set_msg_handler> übergebener Message-Handler darf nur Funktionen aufrufen, die von Echtzeitcode aus aufgerufen werden können.

note: type: Plain text
en: rtapi_prio - thread priority functions
de: rtapi_prio - Thread-Prioritätsfunktionen

note: type: Plain text
en: A value returned by a prior B<rtapi_prio_xxx> call
de: Ein von einem früheren B<rtapi_prio_xxx>-Aufruf zurückgegebener Wert

note: type: Plain text
en: The B<rtapi_prio_xxxx> functions provide a portable way to set task priority.  The mapping of actual priority to priority number depends on the RTOS.  Priorities range from B<rtapi_prio_lowest> to B<rtapi_prio_highest>, inclusive. To use this API, use one of two methods:
de: Die B<rtapi_prio_xxxx>-Funktionen bieten eine portable Möglichkeit, die Task-Priorität zu setzen.  Die Zuordnung der tatsächlichen Priorität zur Prioritätsnummer hängt vom RTOS ab.  Die Prioritäten reichen von B<rtapi_prio_lowest> bis B<rtapi_prio_highest>, einschließlich. Um diese API zu benutzen, verwenden Sie eine von zwei Methoden:

note: type: Plain text
en: Set your lowest priority task to B<rtapi_prio_lowest>, and for each task of the next lowest priority, set their priorities to B<rtapi_prio_next_higher(previous)>.
de: Setzen Sie Ihren Task mit der niedrigsten Priorität auf B<rtapi_prio_lowest> und für jeden Task mit der nächstniedrigeren Priorität setzen Sie deren Prioritäten auf B<rtapi_prio_next_higher(previous)>.

note: type: Plain text
en: Set your highest priority task to B<rtapi_prio_highest>, and for each task of the next highest priority, set their priorities to B<rtapi_prio_next_lower(previous)>.
de: Setzen Sie Ihre Aufgabe mit der höchsten Priorität auf B<rtapi_prio_highest> und für jede Aufgabe mit der nächsthöheren Priorität setzen Sie deren Priorität auf B<rtapi_prio_next_lower(previous)>.

note: type: Plain text
en: N.B. A high priority task will preempt or interrupt a lower priority task. Linux is always the lowest priority!
de: N.B. Ein Task mit hoher Priorität wird einem Task mit niedrigerer Priorität zuvorkommen oder ihn unterbrechen. Linux hat immer die niedrigste Priorität!

note: type: Plain text
en: Call these functions only from within init/cleanup code, not from realtime tasks.
de: Rufen Sie diese Funktionen nur aus dem Init/Cleanup-Code heraus auf, nicht aus Echtzeit-Tasks.

note: type: Plain text
en: Returns an opaque real-time priority number.
de: Gibt eine undurchsichtige Echtzeit-Prioritätszahl zurück.

note: type: Plain text
en: rtapi_region - functions to manage I/O memory regions
de: rtapi_region - Funktionen zur Verwaltung von E/A-Speicherbereichen

note: type: Plain text
en: The base address of the I/O region
de: Die Basisadresse des E/A-Bereichs

note: type: Plain text
en: The size of the I/O region
de: Die Größe der E/A-Region

note: type: Plain text
en: The name to be shown in /proc/ioports
de: Der Name, der in /proc/ioports angezeigt werden soll

note: type: Plain text
en: B<rtapi_request_region> reserves I/O memory starting at I<base> and going for I<size> bytes.
de: B<rtapi_request_region> reserviert E/A-Speicher, der bei I<base> beginnt und für I<size> Bytes reicht.

note: type: Plain text
en: May be called from realtime init/cleanup code only.
de: Darf nur von Echtzeit-Init/Cleanup-Code aufgerufen werden.

note: type: Plain text
en: B<rtapi_request_region> returns NULL if the allocation fails, and a non-NULL value otherwise.
de: B<rtapi_request_region> gibt NULL zurück, wenn die Zuordnung fehlschlägt, und andernfalls einen Nicht-NULL-Wert.

note: type: Plain text
en: B<rtapi_release_region> has no return value.
de: B<rtapi_release_region> hat keinen Rückgabewert.

note: type: Plain text
en: rtapi_get_msg_level, rtapi_set_msg_level - Get or set the logging level
de: rtapi_get_msg_level, rtapi_set_msg_level - Abrufen oder Setzen der Protokollierungsstufe

note: type: Plain text
en: The desired logging level
de: Die gewünschte Protokollierungsebene

note: type: Plain text
en: Get or set the RTAPI message level used by B<rtapi_print_msg>.  Depending on the RTOS, this level may apply to a single RTAPI module, or it may apply to a group of modules.
de: Holt oder setzt die von B<rtapi_print_msg> verwendete RTAPI-Nachrichtenebene.  Je nach RTOS kann dieser Level für ein einzelnes RTAPI-Modul oder für eine Gruppe von Modulen gelten.

note: type: Plain text
en: May be called from user, init/cleanup, and realtime code.
de: Kann von Benutzer-, Init/Cleanup- und Echtzeit-Code aufgerufen werden.

note: type: Plain text
en: B<rtapi_set_msg_level> returns a status code, and B<rtapi_get_msg_level> returns the current level.  RTAPI_MSG_NONE = 0, RTAPI_MSG_ERR = 1, RTAPI_MSG_WARN = 2, RTAPI_MSG_INFO = 3, RTAPI_MSG_DBG = 4 RTAPI_MSG_ALL = 5
de: B<rtapi_set_msg_level> gibt einen Statuscode zurück, und B<rtapi_get_msg_level> gibt den aktuellen Level zurück.  RTAPI_MSG_NONE = 0, RTAPI_MSG_ERR = 1, RTAPI_MSG_WARN = 2, RTAPI_MSG_INFO = 3, RTAPI_MSG_DBG = 4 RTAPI_MSG_ALL = 5

note: type: Plain text
en: rtapi_shmem - Functions for managing shared memory blocks
de: rtapi_shmem - Funktionen zur Verwaltung gemeinsamer Speicherblöcke

note: type: Plain text
en: Identifies the memory block.  Key must be nonzero.  All modules wishing to use the same memory must use the same key.
de: Identifiziert den Speicherblock.  Der Schlüssel muss ungleich Null sein.  Alle Module, die denselben Speicher verwenden wollen, müssen denselben Schlüssel verwenden.

note: type: Plain text
en: Module identifier returned by a prior call to B<rtapi_init>.
de: Modulkennung, die durch einen vorherigen Aufruf von B<rtapi_init> zurückgegeben wurde.

note: type: Plain text
en: The desired size of the shared memory block, in bytes
de: Die gewünschte Größe des gemeinsamen Speicherblocks in Bytes

note: type: Plain text
en: The pointer to the shared memory block.  Note that the block may be mapped at a different address for different modules.
de: Der Zeiger auf den gemeinsamen Speicherblock.  Beachten Sie, dass der Block für verschiedene Module an einer anderen Adresse abgebildet werden kann.

note: type: Plain text
en: B<rtapi_shmem_new> allocates a block of shared memory.  I<key> identifies the memory block, and must be non-zero.  All modules wishing to access the same memory must use the same key.  I<module_id> is the ID of the module that is making the call (see rtapi_init).  The block will be at least I<size> bytes, and may be rounded up.  Allocating many small blocks may be very wasteful.  When a particular block is allocated for the first time, the contents are zeroed.  Subsequent allocations of the same block by other modules or processes will not touch the contents of the block.  Applications can use those bytes to see if they need to initialize the block, or if another module already did so.  On success, it returns a positive integer ID, which is used for all subsequent calls dealing with the block.  On failure it returns a negative error code.
de: B<rtapi_shmem_new> weist einen Block des gemeinsamen Speichers zu.  I<key> identifiziert den Speicherblock und muss ungleich Null sein.  Alle Module, die auf denselben Speicher zugreifen wollen, müssen denselben Schlüssel verwenden.  I<module_id> ist die ID des Moduls, das den Aufruf tätigt (siehe rtapi_init).  Der Block wird mindestens I<size> Bytes groß sein und kann aufgerundet werden.  Das Zuweisen vieler kleiner Blöcke kann sehr verschwenderisch sein.  Wenn ein bestimmter Block zum ersten Mal zugewiesen wird, dann wird der Inhalt auf Null gesetzt.  Spätere Zuweisungen desselben Blocks durch andere Module oder Prozesse berühren den Inhalt des Blocks nicht.  Anwendungen können diese Bytes verwenden, um festzustellen, ob sie den Block initialisieren müssen oder ob ein anderes Modul dies bereits getan hat.  Bei Erfolg wird eine positive Integer-ID zurückgegeben, die für alle nachfolgenden Aufrufe, die den Block betreffen, verwendet wird.  Im Fehlerfall gibt es einen negativen Fehlercode zurück.

note: type: Plain text
en: B<rtapi_shmem_delete> frees the shared memory block associated with I<shmem_id>.  I<module_id> is the ID of the calling module.  Returns a status code.
de: B<rtapi_shmem_delete> gibt den mit I<shmem_id> verbundenen gemeinsamen Speicherblock frei.  I<module_id> ist die ID des aufrufenden Moduls.  Gibt einen Statuscode zurück.

note: type: Plain text
en: B<rtapi_shmem_getptr> sets I<*ptr> to point to shared memory block associated with I<shmem_id>.
de: B<rtapi_shmem_getptr> setzt I<*ptr> auf den gemeinsamen Speicherblock, der mit I<shmem_id> verbunden ist.

note: type: Plain text
en: B<rtapi_shmem_getptr> may be called from user code, init/cleanup code, or realtime tasks.
de: B<rtapi_shmem_getptr> kann von Benutzercode, Init/Cleanup-Code oder Echtzeit-Tasks aufgerufen werden.

note: type: Plain text
en: B<rtapi_shmem_new> and B<rtapi_shmem_dete> may not be called from realtime tasks.
de: B<rtapi_shmem_new> und B<rtapi_shmem_dete> dürfen nicht von Echtzeit-Tasks aufgerufen werden.

note: type: Plain text
en: rtapi_slab.h - RTAPI wrappers for linux kernel functionality
de: rtapi_slab.h - RTAPI-Wrapper für Linux-Kernelfunktionen

note: type: Plain text
en: rtapi_snprintf, rtapi_vsnprintf - Perform snprintf-like string formatting
de: rtapi_snprintf, rtapi_vsnprintf - Durchführen einer snprintf-ähnlichen String-Formatierung

note: type: Plain text
en: As for I<snprintf(3)> or I<vsnprintf(3)>.
de: Wie bei I<snprintf(3)> oder I<vsnprintf(3)>.

note: type: Plain text
en: These functions work like the standard C printf functions, except that a reduced set of formatting operations are supported.
de: Diese Funktionen arbeiten wie die standardmäßigen C printf-Funktionen, mit dem Unterschied, dass eine reduzierte Anzahl von Formatierungsoperationen unterstützt wird.

note: type: Plain text
en: In particular: formatting of long long values is not supported.  Formatting of floating-point values is done as though with %A even when other formats like %f are specified.
de: Insbesondere: Die Formatierung von langen Werten wird nicht unterstützt.  Die Formatierung von Fließkommazahlen erfolgt wie mit %A, auch wenn andere Formate wie %f angegeben sind.

note: type: Plain text
en: The number of characters written to I<buf>.
de: Die Anzahl der in I<buf> geschriebenen Zeichen.

note: type: Plain text
en: rtapi_stdint.h - RTAPI wrappers for linux kernel functionality
de: rtapi_stdint.h - RTAPI-Wrapper für Linux-Kernelfunktionen

note: type: Plain text
en: rtapi_task_pause, rtapi_task_resume - pause and resume real-time tasks
de: rtapi_task_pause, rtapi_task_resume - Anhalten und Fortsetzen von Echtzeitaufgaben

note: type: Plain text
en: An RTAPI task identifier returned by an earlier call to B<rtapi_task_new>.
de: Eine RTAPI-Task-Kennung, die durch einen früheren Aufruf von B<rtapi_task_new> zurückgegeben wurde.

note: type: Plain text
en: B<rtapi_task_resume> starts a task in free-running mode.  The task must be in the "paused" state.
de: B<rtapi_task_resume> startet eine Aufgabe im freilaufenden Modus.  Die Aufgabe muss sich im Zustand "pausiert" befinden.

note: type: Plain text
en: A free running task runs continuously until either:
de: Ein frei ausgeführter Task wird kontinuierlich ausgeführt, bis entweder:

note: type: Plain text
en: It is prempted by a higher priority task.  It will resume as soon as the higher priority task releases the CPU.
de: dieser durch eine Aufgabe mit höherer Priorität ausgelagert wird.  Er wird fortgesetzt, sobald die Aufgabe mit höherer Priorität die CPU freigibt.

note: type: Plain text
en: It calls a blocking function, like B<rtapi_sem_take>.  It will resume when the function unblocks.
de: Er eine blockierende Funktion aufruft, wie B<rtapi_sem_take>.  Er wird fortgesetzt, wenn die Funktion die Blockierung aufhebt.

note: type: Plain text
en: It is returned to the "paused" state by B<rtapi_task_pause>.  May be called from init/cleanup code, and from within realtime tasks.
de: Er durch B<rtapi_task_pause> in den "paused"-Zustand zurückversetzt wird.  Kann von init/cleanup-Code und von Echtzeit-Tasks aus aufgerufen werden.

note: type: Plain text
en: B<rtapi_task_pause> causes a task to stop execution and change to the "paused" state.  The task can be free-running or periodic.  Note that B<rtapi_task_pause> may called from any task, or from init or cleanup code, not just from the task that is to be paused.  The task will resume execution when either B<rtapi_task_resume> or B<rtapi_task_start> (depending on whether this is a free-running or periodic task) is called.
de: B<rtapi_task_pause> veranlasst eine Task, ihre Ausführung zu beenden und in den Zustand "pausiert" zu wechseln.  Der Task kann freilaufend oder periodisch sein.  Beachten Sie, dass B<rtapi_task_pause> von jeder beliebigen Task oder von init- oder cleanup-Code aufgerufen werden kann, nicht nur von der Task, die pausiert werden soll.  Die Task wird wieder aufgenommen, wenn entweder B<rtapi_task_resume> oder B<rtapi_task_start> (je nachdem, ob es sich um eine freilaufende oder periodische Task handelt) aufgerufen wird.

note: type: Plain text
en: An RTAPI status code.
de: Ein RTAPI-Statuscode.

note: type: Plain text
en: rtapi_task_self - Retrieve ID of current task
de: rtapi_task_self - Abrufen der ID der aktuellen Aufgabe

note: type: Plain text
en: B<rtapi_task_self> retrieves the current task, or -EINVAL if not in a realtime task (e.g., in startup or shutdown code).
de: B<rtapi_task_self> ruft den aktuellen Task ab, oder -EINVAL, wenn er sich nicht in einem Echtzeit-Task befindet (z.B. im Startup- oder Shutdown-Code).

note: type: Plain text
en: The task number previously returned by B<rtapi_task_new> or -EINVAL.
de: Die zuvor von B<rtapi_task_new> oder -EINVAL zurückgegebene Tasknummer.

note: type: Plain text
en: rtapi_task_start - start a realtime task in periodic mode
de: rtapi_task_start - Start eines Echtzeit-Tasks im periodischen Modus

note: type: Plain text
en: The clock period in nanoseconds between iterations of a periodic task
de: Die Taktperiode in Nanosekunden zwischen den Iterationen einer periodischen Aufgabe

note: type: Plain text
en: B<rtapi_task_start> starts a task in periodic mode.  The task must be in the I<paused> state.
de: B<rtapi_task_start> startet eine Task im periodischen Modus.  Die Task muss sich im Zustand I<paused> befinden.

note: type: Plain text
en: Returns an RTAPI status code.
de: Gibt einen RTAPI-Statuscode zurück.

note: type: Plain text
en: rtapi_task_wait - suspend execution of this periodic task
de: rtapi_task_wait - Aussetzen der Ausführung dieser periodischen Aufgabe

note: type: Plain text
en: B<rtapi_task_wait> suspends execution of the current task until the next period.  The task must be periodic.  If not, the result is undefined.
de: B<rtapi_task_wait> unterbricht die Ausführung der aktuellen Aufgabe bis zur nächsten Periode.  Die Aufgabe muss periodisch sein.  Wenn nicht, ist das Ergebnis undefiniert.

note: type: Plain text
en: Call only from within a periodic realtime task.
de: Aufruf nur aus einer periodischen Echtzeit-Task heraus.

note: type: TH
en: undocumented
de: undokumentiert

note: type: Plain text
en: undocumented - undocumented functions in HAL
de: undocumented - undokumentierte Funktionen in HAL

note: type: Plain text
en: The header file I<hal.h>.  Most hal functions have documentation in that file.
de: Die Header-Datei I<hal.h>.  Die meisten HAL-Funktionen sind in dieser Datei dokumentiert.

note: type: Plain text
en: undocumented - undocumented functions in RTAPI
de: undocumented - undokumentierte Funktionen im RTAPI

note: type: Plain text
en: The header file I<rtapi.h>.  Most rtapi functions have documentation in that file.
de: Die Header-Datei I<rtapi.h>.  Die meisten rtapi-Funktionen sind in dieser Datei dokumentiert.

note: type: Plain text
en: abs - Compute the absolute value and sign of the input signal
de: abs - Berechnet den Absolutwert und das Vorzeichen des Eingangssignals

note: type: TP
en: B<abs.>I<N> (requires a floating-point thread)
de: B<abs.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Analog input value
de: Analoger Eingangswert

note: type: Plain text
en: Analog output value, always positive
de: Analoger Ausgangswert, immer positiv

note: type: Plain text
en: Sign of input, false for positive, true for negative
de: Vorzeichen der Eingabe, falsch für positiv, wahr für negativ

note: type: Plain text
en: TRUE if input is positive, FALSE if input is 0 or negative
de: TRUE wenn der Eingang positiv ist, FALSE wenn der Eingang 0 oder negativ ist

note: type: Plain text
en: TRUE if input is negative, FALSE if input is 0 or positive
de: TRUE wenn der Eingang negativ ist, FALSE wenn der Eingang 0 oder positiv ist

note: type: Plain text
en: abs_s32 - Compute the absolute value and sign of the input signal
de: abs_s32 - Berechnet den Absolutwert und das Vorzeichen des Eingangssignals

note: type: Plain text
en: input value
de: Eingabewert

note: type: Plain text
en: output value, always non-negative
de: Ausgangswert, immer nicht-negativ

note: type: Plain text
en: and2 - Two-input AND gate
de: and2 - UND-Gatter mit zwei Eingängen

note: type: Plain text
en: The B<out> pin is computed from the value of the B<in0> and B<in1> pins according to the following rule:
de: Der B<out>-Pin wird aus dem Wert der B<in0>- und B<in1>-Pins nach der folgenden Regel berechnet:

note: type: TP
en: Otherwise,
de: Ansonsten,

note: type: Plain text
en: at_pid - obsolete pid HAL component
de: at_pid - veraltete pid-HAL-Komponente

note: type: Plain text
en: The functionality of the at_pid component has been merged into the pid component.
de: Die Funktionalität der at_pid-Komponente wurde mit der pid-Komponente zusammengeführt.

note: type: Plain text
en: axistest - Used to allow testing of an axis. Used IN PNCconf
de: axistest - Wird verwendet zum Testen einer Achse. Verwendet in PnCconf.

note: type: TP
en: B<axistest.>I<N>B<.update> (requires a floating-point thread)
de: B<axistest.>I<N>B<.update> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Drive TRUE to jog the axis in its minus direction
de: Setzen Sie TRUE, um die Achse in ihre Minusrichtung zu tippen

note: type: Plain text
en: Drive TRUE to jog the axis in its positive direction
de: Setzen Sie TRUE, um die Achse in ihre positive Richtung zu joggen

note: type: Plain text
en: Drive TRUE to run the axis near its current position_fb with a trapezoidal velocity profile
de: Fahren Sie TRUE, um die Achse in der Nähe ihrer aktuellen position_fb mit einem trapezförmigen Geschwindigkeitsprofil zu betreiben

note: type: Plain text
en: Maximum velocity
de: Maximale Geschwindigkeit

note: type: Plain text
en: Approximate amplitude of positions to command during 'run'
de: Ungefähre Amplitude der zu befehlenden Positionen während des "Laufs"

note: type: Plain text
en: Direction from central point to test: 0 = both, 1 = positive, 2 = negative
de: Richtung vom zentralen Punkt zum Test: 0 = beides, 1 = positiv, 2 = negativ

note: type: TP
en: B<axistest.>I<N>B<.pause> s32 in (default: I<0>)
de: B<axistest.>I<N>B<.pause> s32 in (Voreinstellung: I<0>)

note: type: Plain text
en: pause time for each end of run in seconds
de: Dauer einer Pause nach dem Ende eines Laufs in Sekunden

note: type: TP
en: B<axistest.>I<N>B<.epsilon> float rw (default: I<.001>)
de: B<axistest.>I<N>B<.epsilon> float rw (Voreinstellung: I<.001>)

note: type: Plain text
en: Current value of the internal timer
de: Aktueller Wert des internen Timers

note: type: Plain text
en: bin2gray - convert a number to the gray-code representation
de: bin2gray - Konvertierung einer Zahl in die Gray-Code Repräsentation

note: type: Plain text
en: Converts a number into gray-code
de: Konvertiert eine Zahl in Gray-Code

note: type: Plain text
en: binary code in
de: Binärcode in

note: type: Plain text
en: gray code out
de: Gray-Code out

note: type: Plain text
en: biquad - Biquad IIR filter
de: biquad - Biquad IIR-Filter

note: type: Plain text
en: Biquad IIR filter. Implements the following transfer function: H(z) = (n0 + n1z-1 + n2z-2) / (1+ d1z-1 + d2z-2)
de: Biquad IIR-Filter. Implementiert die folgende Übertragungsfunktion: H(z) = (n0 + n1z-1 + n2z-2) / (1+ d1z-1 + d2z-2)

note: type: TP
en: B<biquad.>I<N> (requires a floating-point thread)
de: B<biquad.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Filter input.
de: Filter-Eingang.

note: type: Plain text
en: Filter output.
de: Filterausgang.

note: type: TP
en: B<biquad.>I<N>B<.enable> bit in (default: I<0>)
de: B<biquad.>I<N>B<.enable> bit in (Standard: I<0>)

note: type: Plain text
en: Filter enable. When false, the B<in> pin is passed to the B<out> pin without any filtering.  A B<transition from false to true> causes filter coefficients to be calculated according to the current B<type> and the describing pin and parameter settings
de: Filter aktivieren. Bei false wird der B<in>-Pin ohne jegliche Filterung an den B<out>-Pin weitergegeben.  Ein B<Übergang von false zu true> bewirkt, dass die Filterkoeffizienten entsprechend dem aktuellen B<Typ> und den beschreibenden Pin- und Parametereinstellungen berechnet werden

note: type: TP
en: B<biquad.>I<N>B<.valid> bit out (default: I<0>)
de: B<biquad.>I<N>B<.valid> bit out (Standard: I<0>)

note: type: Plain text
en: When false, indicates an error occurred when calculating filter coefficients (require 2E<gt>B<Q>E<gt>0.5 and B<f0>E<gt>sampleRate/2)
de: Wenn false, bedeutet dies, dass bei der Berechnung der Filterkoeffizienten ein Fehler aufgetreten ist (erfordert 2E<gt>B<Q>E<gt>0,5 und B<f0>E<gt>sampleRate/2)

note: type: TP
en: B<biquad.>I<N>B<.type> u32 in (default: I<0>)
de: B<biquad.>I<N>B<.type> u32 in (Standard: I<0>)

note: type: Plain text
en: Filter type determines the type of filter coefficients calculated.  When 0, coefficients must be loaded directly from the B<n0,n1,n2,d1> params.  When 1, a low pass filter is created specified by the B<f0,Q> pins.  When 2, a notch filter is created specified by the B<f0,Q> pins.
de: Filtertyp bestimmt die Art der berechneten Filterkoeffizienten.  Bei 0 müssen die Koeffizienten direkt von den B<n0,n1,n2,d1>-Parametern geladen werden.  Bei 1 wird ein Tiefpassfilter erstellt, der durch die Pins B<f0,Q> festgelegt wird.  Bei 2 wird ein Notch-Filter erzeugt, der durch die B<f0,Q>-Pins spezifiziert wird.

note: type: TP
en: B<biquad.>I<N>B<.f0> float in (default: I<250.0>)
de: B<biquad.>I<N>B<.f0> float in (Standard: I<250.0>)

note: type: Plain text
en: The corner frequency of the filter.
de: Die Eckfrequenz des Filters.

note: type: TP
en: B<biquad.>I<N>B<.Q> float in (default: I<0.7071>)
de: B<biquad.>I<N>B<.Q> float in (Standard: I<0.7071>)

note: type: Plain text
en: The Q of the filter.
de: Die Güte (Q) des Filters.

note: type: TP
en: B<biquad.>I<N>B<.s1> float out (default: I<0.0>)
de: B<biquad.>I<N>B<.s1> float out (Voreinstellung: I<0.0>)

note: type: Plain text
en: 1st-delayed internal state (for debug only)
de: 1. verzögerter interner Zustand (nur zur Fehlersuche)

note: type: TP
en: B<biquad.>I<N>B<.s2> float out (default: I<0.0>)
de: B<biquad.>I<N>B<.s2> float out (Standard: I<0.0>)

note: type: Plain text
en: 2nd-delayed internal state (for debug only)
de: 2. verzögerter interner Zustand (nur zur Fehlersuche)

note: type: TP
en: B<biquad.>I<N>B<.d1> float rw (default: I<0.0>)
de: B<biquad.>I<N>B<.d1> float rw (Standard: I<0.0>)

note: type: TP
en: B<biquad.>I<N>B<.d2> float rw (default: I<0.0>)
de: B<biquad.>I<N>B<.d2> float rw (Standard: I<0.0>)

note: type: Plain text
en: 2nd-delayed denominator coef
de:  2. verzögerter Nenner Koeffizient

note: type: TP
en: B<biquad.>I<N>B<.n0> float rw (default: I<1.0>)
de: B<biquad.>I<N>B<.n0> float rw (Standard: I<1.0>)

note: type: Plain text
en: non-delayed numerator coef
de: unverzögerter Zähler-Koeffizient

note: type: TP
en: B<biquad.>I<N>B<.n1> float rw (default: I<0.0>)
de: B<biquad.>I<N>B<.n1> float rw (Standard: I<0.0>)

note: type: Plain text
en: 1st-delayed numerator coef
de: 1. verzögerter Zähler-Koeffizient

note: type: TP
en: B<biquad.>I<N>B<.n2> float rw (default: I<0.0>)
de: B<biquad.>I<N>B<.n2> float rw (Standard: I<0.0>)

note: type: Plain text
en: 2nd-delayed numerator coef
de: 2. verzögerter Zähler-Koeffizient

note: type: Plain text
en: bitslice - Converts an unsigned-32 input into individual bits
de: bitslice - Konvertiert eine vorzeichenlose 32-Eingabe in einzelne Bits

note: type: Plain text
en: This component creates individual bit-outputs for each bit of an unsigned-32 input. The number of bits can be limited by the "personality" modparam.  The inverse process can be performed by the weighted_sum HAL component.
de: Diese Komponente erzeugt individuelle Bit-Ausgänge für jedes Bit einer vorzeichenlosen 32-Eingabe. Die Anzahl der Bits kann durch den Modparam "personality" begrenzt werden.  Der umgekehrte Prozess kann von der HAL-Komponente weighted_sum durchgeführt werden.

note: type: TP
en: B<bitslice.>I<N>B<.in> u32 in
de: B<Bitslice.>I<N>B<.in> u32 Zoll

note: type: Plain text
en: The input value
de: Der Eingabewert

note: type: Plain text
en: bitwise - Computes various bitwise operations on the two input values
de: bitwise - Berechnet verschiedene bitweise Operationen an den beiden Eingabewerten

note: type: Plain text
en: B<loadrt bitwise [count=>I<N>B<|names=>I<name1>B<[,>I<name2...>B<]]>
de: B<loadrt bitweise [count=>I<N>B<|names=>I<name1>B<[,>I<name2...>B<]]>

note: type: Plain text
en: First input value
de: Erster Eingabewert

note: type: Plain text
en: Second input value
de: Zweiter Eingabewert

note: type: Plain text
en: The bitwise AND of the two inputs
de: Die bitweise Verundung der beiden Eingänge

note: type: Plain text
en: The bitwise OR of the two inputs
de: Die bitweise Veroderung der beiden Eingänge

note: type: Plain text
en: The bitwise XOR of the two inputs
de: Das bitweise Entweder-Oder der beiden Eingänge

note: type: Plain text
en: The inverse of the bitwise AND
de: Die Umkehrung des bitweisen AND

note: type: Plain text
en: The inverse of the bitwise OR
de: Die Umkehrung des bitweisen OR

note: type: Plain text
en: The inverse of the bitwise XOR
de: Die Umkehrung des bitweisen XOR (Entweder-Oder)

note: type: Plain text
en: bldc - BLDC and AC-servo control component
de: bldc - BLDC- und AC-Servo-Steuerungskomponente

note: type: Plain text
en: This component is designed as an interface between the most common forms of three-phase motor feedback devices and the corresponding types of drive. However there is no requirement that the motor and drive should necessarily be of inherently compatible types.
de: Diese Komponente ist als Schnittstelle zwischen den gängigsten Formen von dreiphasigen Motor-Feedback-Geräten und den entsprechenden Antriebsarten konzipiert. Es besteht jedoch keine Anforderung, dass der Motor und der Antrieb notwendigerweise von inhärent kompatiblen Typen sein müssen.

note: type: Plain text
en: Each instance of the component is defined by a group of letters describing the input and output types. A comma separates individual instances of the component.  For example B<loadrt bldc cfg=qi6,aH>
de: Jede Instanz der Komponente wird durch eine Gruppe von Buchstaben definiert, welche die Eingangs- und Ausgangstypen beschreiben. Ein Komma trennt die einzelnen Instanzen der Komponente.  Zum Beispiel B<loadrt bldc cfg=qi6,aH>

note: type: Plain text
en: Input type definitions are all lower-case.
de: Eingabetyp-Definitionen werden alle klein geschrieben.

note: type: Plain text
en: B<n> No motor feedback. This mode could be used to drive AC induction motors, but is also potentially useful for creating free-running motor simulators for drive testing.
de: B<n> Keine Motorrückführung. Dieser Modus kann für den Antrieb von AC-Induktionsmotoren verwendet werden, ist aber auch für die Erstellung von freilaufenden Motorsimulatoren für Antriebstests nützlich.

note: type: Plain text
en: B<h> Hall sensor input. Brushless DC motors (electronically commutated permanent magnet 3-phase motors) typically use a set of three Hall sensors to measure the angular position of the rotor. A lower-case B<h> in the cfg string indicates that these should be used.
de: B<h> Hallsensor-Eingang. Bürstenlose Gleichstrommotoren (elektronisch kommutierte 3-Phasen-Permanentmagnetmotoren) verwenden in der Regel einen Satz von drei Hallsensoren, um die Winkelposition des Rotors zu messen. Ein kleingeschriebenes B<h> im cfg-String zeigt an, dass diese verwendet werden sollen.

note: type: Plain text
en: B<a> Absolute encoder input. (Also possibly used by some forms of Resolver conversion hardware). The presence of this tag over-rides all other inputs. Note that the component still requires to be be connected to the B<rawcounts> encoder pin to prevent loss of commutation on index-reset.
de: B<a> Absoluter Encoder-Eingang. (Wird möglicherweise auch von einigen Formen der Resolver-Konvertierungshardware verwendet). Das Vorhandensein dieser Markierung setzt alle anderen Eingänge außer Kraft. Beachten Sie, dass das Bauteil immer noch an den Encoder-Pin B<rawcounts> angeschlossen werden muss, um den Verlust der Kommutierung beim Index-Reset zu verhindern.

note: type: Plain text
en: B<q> Incremental (quadrature) encoder input. If this input is used then the rotor will need to be homed before the motor can be run.
de: B<q> Inkrementalgeber-Eingang (Quadratur). Wenn dieser Eingang verwendet wird, muss der Rotor referenziert werden, bevor der Motor betrieben werden kann.

note: type: Plain text
en: B<i> Use the index of an incremental encoder as a home reference.
de: B<i> Verwenden Sie den Index eines Inkrementalgebers als Referenzpunkt.

note: type: Plain text
en: Output type descriptions are all upper-case.
de: Die Bezeichnungen der Ausgabearten werden alle in Großbuchstaben geschrieben.

note: type: Plain text
en: B<Defaults> The component will always calculate rotor angle, phase angle and the absolute value of the input B<value> for interfacing with drives such as the Mesa 8i20. It will also default to three individual, bipolar phase output values if no other output type modifiers are used.
de: B<Standardwerte> Die Komponente berechnet immer den Rotorwinkel, den Phasenwinkel und den absoluten Wert des Eingangs B<value> für die Kopplung mit Antrieben wie dem Mesa 8I20. Außerdem werden standardmäßig drei individuelle, bipolare Phasenausgangswerte ausgegeben, wenn keine anderen Modifikatoren für den Ausgangstyp verwendet werden.

note: type: Plain text
en: B<B> Bit level outputs. Either 3 or 6 logic-level outputs indicating which high or low gate drivers on an external drive should be used.
de: B<B> Bit-Level-Ausgänge. Entweder 3 oder 6 Logikpegelausgänge, die angeben, welche High oder Low Gate-Treiber auf einem externen Laufwerk verwendet werden sollen.

note: type: Plain text
en: B<6> Create 6 rather than the default 3 outputs. In the case of numeric value outputs these are separate positive and negative drive amplitudes. Both have positive magnitude.
de: B<6> Erzeugt 6 statt der standardmäßigen 3 Ausgänge. Bei numerischen Wertausgängen handelt es sich um separate positive und negative Antriebsamplituden. Beide haben eine positive Amplitude.

note: type: Plain text
en: B<H> Emulated Hall sensor output. This mode can be used to control a drive which expects 3x Hall signals, or to convert between a motor with one hall pattern and a drive which expects a different one.
de: B<H> Emulierter Hallsensorausgang. Dieser Modus kann verwendet werden, um einen Antrieb zu steuern, der 3x Hall-Signale erwartet, oder um zwischen einem Motor mit einem Hall-Muster und einem Antrieb, der ein anderes erwartet, umzuschalten.

note: type: Plain text
en: B<F> Emulated Fanuc Red Cap Gray-code encoder output. This mode might be used to drive a non-Fanuc motor using a Fanuc drive intended for the "Red-Cap" motors.
de: B<F> Emulierter Fanuc Red Cap Gray-Code-Encoder-Ausgang. Dieser Modus kann verwendet werden, um einen Nicht-Fanuc-Motor mit einem Fanuc-Antrieb anzutreiben, der für die "Red-Cap"-Motoren vorgesehen ist.

note: type: Plain text
en: B<T> Force Trapezoidal mode.
de: B<T> Trapezmodus erzwingen.

note: type: SH
en: OPERATING MODES
de: OPERATIONS MODI

note: type: Plain text
en: The component can control a drive in either Trapezoidal or Sinusoidal mode, but will always default to sinusoidal if the input and output modes allow it. This can be over-ridden by the B<T> tag. Sinusoidal commutation is significantly smoother (trapezoidal commutation induces 13% torque ripple).
de: Die Komponente kann einen Antrieb entweder im Trapez- oder im Sinusmodus steuern, wird aber immer auf Sinus eingestellt, wenn die Eingangs- und Ausgangsmodi dies zulassen. Dies kann mit dem B<T>-Tag außer Kraft gesetzt werden. Die sinusförmige Kommutierung ist wesentlich gleichmäßiger (die trapezförmige Kommutierung führt zu einer Drehmomentwelligkeit von 13 %).

note: type: Plain text
en: To use an encoder for commutation a reference 0-degrees point must be found.  The component uses the convention that motor zero is the point that an unloaded motor aligns to with a positive voltage on the A (or U) terminal and the B & C (or V and W) terminals connected together and to -ve voltage. There will be two such positions on a 4-pole motor, 3 on a 6-pole and so on. They are all functionally equivalent as far as driving the motor is concerned.  If the motor has Hall sensors then the motor can be started in trapezoidal commutation mode, and will switch to sinusoidal commutation when an alignment is found. If the mode is B<qh> then the first Hall state-transition will be used. If the mode is B<qhi> then the encoder index will be used. This gives a more accurate homing position if the distance in encoder counts between motor zero and encoder index is known. To force homing to the Hall edges instead simply omit the B<i>.
de: Um einen Geber für die Kommutierung zu verwenden, muss ein 0-Grad-Referenzpunkt gefunden werden.  Das Bauteil verwendet die Konvention, dass der Nullpunkt des Motors der Punkt ist, auf den sich ein unbelasteter Motor ausrichtet, wenn an der Klemme A (oder U) eine positive Spannung anliegt und die Klemmen B und C (oder V und W) miteinander verbunden sind und die Spannung auf -ve liegt. Bei einem 4-poligen Motor gibt es zwei solche Positionen, bei einem 6-poligen Motor 3 usw. Sie sind alle funktionell gleichwertig, was den Antrieb des Motors betrifft.  Wenn der Motor mit Hallsensoren ausgestattet ist, kann der Motor im Trapezkommutierungsmodus gestartet werden und schaltet auf Sinuskommutierung um, wenn eine Ausrichtung gefunden wird. Wenn der Modus B<qh> ist, wird der erste Hall-Zustandsübergang verwendet. Ist der Modus B<qhi>, wird der Encoder-Index verwendet. Dies führt zu einer genaueren Referenzfahrtposition, wenn der Abstand in Geberzählungen zwischen Motor-Nullpunkt und Geberindex bekannt ist. Um stattdessen eine Referenzfahrt zu den Hallkanten zu erzwingen, lassen Sie einfach das B<i> weg.

note: type: Plain text
en: Motors without Hall sensors may be homed in synchronous/direct mode.  The better of these options is to home to the encoder zero using the B<iq> config parameter. When the B<init> pin goes high the motor will rotate (in a direction determined by the B<rev> pin) until the encoder indicates an index-latch (the servo thread runs too slowly to rely on detecting an encoder index directly).  If there is no encoder index or its location relative to motor zero can not be found, then an alternative is to use I<magnetic> homing using the B<q> config. In this mode the motor will go through an alignment sequence ending at motor zero when the init pin goes high It will then set the final position as motor zero. Unfortunately the motor is rather I<springy> in this mode and so alignment is likely to be fairly sensitive to load.
de: Motoren ohne Hallsensoren können im synchronen/direkten Modus referenziert werden.  Die bessere dieser Optionen ist die Referenzfahrt auf den Encoder-Nullpunkt unter Verwendung des Konfigurationsparameters B<iq>. Wenn der B<init>-Pin auf High geht, dreht sich der Motor (in einer Richtung, die durch den B<rev>-Pin bestimmt wird), bis der Encoder einen Index-Latch anzeigt (der Servo-Faden läuft zu langsam, um sich auf die direkte Erkennung eines Encoder-Index zu verlassen).  Wenn es keinen Encoder-Index gibt oder seine Position relativ zum Motor-Nullpunkt nicht gefunden werden kann, dann ist eine Alternative die Verwendung der I<magnetic> Referenzfahrt unter Verwendung der B<q> Konfiguration. In diesem Modus durchläuft der Motor eine Ausrichtungssequenz, die am Motor-Nullpunkt endet, wenn der Init-Pin auf "high" geht und die Endposition als Motor-Nullpunkt festgelegt wird. Leider ist der Motor in diesem Modus eher I<springy> und daher ist die Ausrichtung wahrscheinlich ziemlich lastabhängig.

note: type: TP
en: B<bldc.>I<N> (requires a floating-point thread)
de: B<bldc.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Hall sensor signal 1
de: Hall-Sensor-Signal 1

note: type: Plain text
en: Hall sensor signal 2
de: Hall-Sensor-Signal 2

note: type: Plain text
en: Hall sensor signal 3
de: Hall-Sensor-Signal 3

note: type: Plain text
en: Indicates that the selected hall pattern gives inconsistent rotor position data. This can be due to the pattern being wrong for the motor, or one or more sensors being unconnected or broken.  A consistent pattern is not neceesarily valid, but an inconsistent one can never be valid.
de: Zeigt an, dass das ausgewählte Hall-Muster inkonsistente Rotorpositionsdaten liefert. Dies kann darauf zurückzuführen sein, dass das Muster für den Motor falsch ist oder dass ein oder mehrere Sensoren nicht angeschlossen oder defekt sind.  Ein konsistentes Muster muss nicht unbedingt gültig sein, aber ein inkonsistentes Muster kann niemals gültig sein.

note: type: Plain text
en: Fanuc Gray-code bit 0 input
de: Fanuc Gray-Code Bit 0 Eingang

note: type: Plain text
en: Fanuc Gray-code bit 1 input
de: Fanuc Gray-Code Bit 1 Eingang

note: type: Plain text
en: Fanuc Gray-code bit 2 input
de: Fanuc Gray-Code Bit 2 Eingang

note: type: Plain text
en: Fanuc Gray-code bit 3 input
de: Fanuc Gray-Code Bit 3 Eingang

note: type: Plain text
en: PWM master amplitude input
de: PWM-Master-Amplituden-Eingang

note: type: TP
en: B<bldc.>I<N>B<.lead-angle> float in [if personality & 0x06] (default: I<90>)
de: B<bldc.>I<N>B<.lead-angle> float in [if personality & 0x06] (Standard: I<90>)

note: type: Plain text
en: The phase lead between the electrical vector and the rotor position in degrees
de: Die Phasenverschiebung zwischen dem elektrischen Vektor und der Rotorposition in Grad

note: type: TP
en: B<bldc.>I<N>B<.rev> bit in
de: B<bldc.>I<N>B<.rev> Bit in

note: type: Plain text
en: Set this pin true to reverse the motor. Negative PWM amplitudes will also reverse the motor and there will generally be a Hall pattern that runs the motor in each direction too.
de: Setzen Sie diesen Pin auf true, um den Motor umzukehren. Negative PWM-Amplituden kehren den Motor ebenfalls um und es gibt im Allgemeinen ein Hall-Muster, das den Motor auch in jede Richtung laufen lässt.

note: type: Plain text
en: Frequency input for motors with no feedback at all, or those with only an index (which is ignored)
de: Frequenzeingang für Motoren ohne Rückführung oder nur mit einem Index (der ignoriert wird)

note: type: TP
en: B<bldc.>I<N>B<.initvalue> float in [if personality & 0x04] (default: I<0.2>)
de: B<bldc.>I<N>B<.initvalue> float in [if personality & 0x04] (Standard: I<0.2>)

note: type: Plain text
en: The current to be used for the homing sequence in applications where an incremental encoder is used with no hall-sensor feedback
de: Der für die Referenzfahrt zu verwendende Strom in Anwendungen, in denen ein Inkrementalgeber ohne Hall-Sensor-Rückmeldung verwendet wird

note: type: TP
en: B<bldc.>I<N>B<.rawcounts> s32 in [if personality & 0x06] (default: I<0>)
de: B<bldc.>I<N>B<.rawcounts> s32 in [wenn Personality & 0x06] (Standard: I<0>)

note: type: Plain text
en: Encoder counts input. This must be linked to the encoder rawcounts pin or encoder index resets will cause the motor commutation to fail
de: Encoder-Zählungseingang. Dieser muss mit dem Encoder-Rawcounts-Pin verbunden sein, da sonst ein Encoder-Index-Reset die Motorkommutierung fehlschlagen lässt.

note: type: Plain text
en: This pin should be connected to the associated encoder index-enable pin to zero the encoder when it passes index This is only used indicate to the bldc control component that an index has been seen
de: Dieser Pin sollte mit dem zugehörigen Index-Freigabe-Pin des Encoders verbunden werden, um den Encoder auf Null zu setzen, wenn er den Index passiert Dieser Pin wird nur verwendet, um der bldc-Steuerkomponente anzuzeigen, dass ein Index gesehen wurde

note: type: Plain text
en: A rising edge on this pin starts the motor alignment sequence. This pin should be connected in such a way that the motors re-align any time that encoder monitoring has been interrupted. Typically this will only be at machine power-off.  The alignment process involves powering the motor phases in such a way as to put the motor in a known position. The encoder counts are then stored in the B<offset> parameter. The alignment process will tend to cause a following error if it is triggered while the axis is enabled, so should be set before the matching axis.N.enable pin. The complementary B<init-done> pin can be used to handle the required sequencing.
de: Eine steigende Flanke an diesem Pin startet die Motorausrichtungssequenz. Dieser Pin sollte so angeschlossen werden, dass sich die Motoren immer dann neu ausrichten, wenn die Geberüberwachung unterbrochen wurde. Normalerweise ist dies nur beim Ausschalten der Maschine der Fall.  Beim Ausrichtungsverfahren werden die Motorphasen so eingeschaltet, dass der Motor in eine bekannte Position gebracht wird. Die Geberzählungen werden dann im Parameter B<Offset> gespeichert. Der Ausrichtungsvorgang führt zu einem Schleppfehler, wenn er bei aktivierter Achse ausgelöst wird, und sollte daher vor dem entsprechenden axis.N.enable-Pin gesetzt werden. Der komplementäre Pin B<init-done> kann verwendet werden, um die erforderliche Sequenzierung durchzuführen.

note: type: Plain text
en: Both pins can be ignored if the encoder offset is known explicitly, such as is the case with an absolute encoder. In that case the B<offset> parameter can be set directly in the HAL file
de: Beide Pins können ignoriert werden, wenn der Encoder-Offset explizit bekannt ist, wie z.B. bei einem Absolut-Encoder. In diesem Fall kann der Parameter B<offset> direkt in der HAL-Datei gesetzt werden

note: type: TP
en: B<bldc.>I<N>B<.init-done> bit out [if ( personality & 0x05 ) == 4] (default: I<0>)
de: B<bldc.>I<N>B<.init-done> bit out [if ( personality & 0x05 ) == 4] (Standard: I<0>)

note: type: Plain text
en: Indicates homing sequence complete
de: Zeigt an, dass die Referenzierfahrten abgeschlossen sind.

note: type: Plain text
en: Output amplitude for phase A
de: Ausgangsamplitude für Phase A

note: type: Plain text
en: Output amplitude for phase B
de: Ausgangsamplitude für Phase B

note: type: Plain text
en: Output amplitude for phase C
de: Ausgangsamplitude für Phase C

note: type: TP
en: B<bldc.>I<N>B<.A-on> bit out [if ( personality & 0xF00 ) == 0x100]
de: B<bldc.>I<N>B<.A-on> ausgebissen [if (personality & 0xF00) == 0x100]

note: type: Plain text
en: Output bit for phase A
de: Output Bit für Phase A

note: type: Plain text
en: Output bit for phase B
de: Output Bit für Phase B

note: type: Plain text
en: Output bit for phase C
de: Ausgangsbit für Phase C

note: type: Plain text
en: High-side driver for phase A
de: High-Side-Treiber für Phase A

note: type: Plain text
en: High-side driver for phase B
de: High-Side-Treiber für Phase B

note: type: Plain text
en: High-side driver for phase C
de: High-Side-Treiber für Phase C

note: type: Plain text
en: Low-side driver for phase A
de: Low-Side-Treiber für Phase A

note: type: Plain text
en: Low-side driver for phase B
de: Niedriger Fahrer für Phase B

note: type: Plain text
en: Low-side driver for phase C
de: Low-Side-Treiber für Phase C

note: type: Plain text
en: Fanuc Gray-code bit 0 output
de: Fanuc Gray-Code Bit 0 Ausgang

note: type: Plain text
en: Fanuc Gray-code bit 1 output
de: Fanuc Gray-Code Bit 1 Ausgang

note: type: Plain text
en: Fanuc Gray-code bit 2 output
de: Fanuc Gray-Code Bit 2 Ausgang

note: type: Plain text
en: Fanuc Gray-code bit 3 output
de: Fanuc Gray-Code Bit 3 Ausgang

note: type: TP
en: B<bldc.>I<N>B<.phase-angle> float out (default: I<0>)
de: B<bldc.>I<N>B<.Phasenwinkel> float out (default: I<0>)

note: type: Plain text
en: Phase angle including lead/lag angle after encoder zeroing etc. Useful for angle/current drives. This value has a range of 0 to 1 and measures electrical revolutions. It will have two zeros for a 4 pole motor, three for a 6-pole etc
de: Phasenwinkel einschließlich Vorlauf-/Nachlaufwinkel nach Gebernullstellung usw. Nützlich für Winkel-/Stromantriebe. Dieser Wert hat einen Bereich von 0 bis 1 und misst elektrische Umdrehungen. Er hat zwei Nullen für einen 4-poligen Motor, drei für einen 6-poligen usw.

note: type: Plain text
en: Rotor angle after encoder zeroing etc. Useful for angle/current drives which add their own phase offset such as the 8i20. This value has a range of 0 to 1 and measures electrical revolutions. It will have two zeros for a 4 pole motor, three for a 6-pole etc
de: Rotorwinkel nach Nullstellung des Encoders usw. Nützlich für Winkel-/Stromantriebe, die ihren eigenen Phasenversatz hinzufügen, wie z. B. der 8I20. Dieser Wert hat einen Bereich von 0 bis 1 und misst elektrische Umdrehungen. Er hat zwei Nullen für einen 4-poligen Motor, drei für einen 6-poligen usw.

note: type: Plain text
en: Current output, including the effect of the dir pin and the alignment sequence
de: Stromausgang, einschließlich der Wirkung des dir-Pins und der Ausrichtungssequenz

note: type: Plain text
en: Direction output, high if /fBvalue/fR is negative XOR /fBrev/fR is true.
de: Richtungsausgang, High, wenn /fBvalue/fR negativ ist XOR /fBrev/fR wahr ist.

note: type: Plain text
en: Absolute value of the input value
de: Absoluter Wert des Eingangswertes

note: type: TP
en: B<bldc.>I<N>B<.in-type> s32 r (default: I<-1>)
de: B<bldc.>I<N>B<.in-type> s32 r (Voreinstellung: I<-1>)

note: type: Plain text
en: state machine output, will probably hide after debug
de: Ausgabe der Zustandsmaschine, wird wahrscheinlich nach dem Debuggen ausgeblendet

note: type: TP
en: B<bldc.>I<N>B<.out-type> s32 r (default: I<-1>)
de: B<bldc.>I<N>B<.out-type> s32 r (Voreinstellung: I<-1>)

note: type: TP
en: B<bldc.>I<N>B<.scale> s32 rw [if personality & 0x06] (default: I<512>)
de: B<bldc.>I<N>B<.scale> s32 rw [wenn Persönlichkeit & 0x06] (Voreinstellung: I<512>)

note: type: Plain text
en: The number of encoder counts per rotor revolution.
de: Die Anzahl der Encoder-Zählungen pro Rotorumdrehung.

note: type: TP
en: B<bldc.>I<N>B<.poles> s32 rw [if personality & 0x06] (default: I<4>)
de: B<bldc.>I<N>B<.poles> s32 rw [wenn Persönlichkeit & 0x06] (Voreinstellung: I<4>)

note: type: Plain text
en: The number of motor poles. The encoder scale will be divided by this value to determine the number of encoder counts per electrical revolution
de: Die Anzahl der Motorpole. Die Encoder-Skala wird durch diesen Wert geteilt, um die Anzahl der Encoder-Zählungen pro elektrischer Umdrehung zu bestimmen

note: type: TP
en: B<bldc.>I<N>B<.encoder-offset> s32 rw [if personality & 0x0A] (default: I<0>)
de: B<bldc.>I<N>B<.encoder-offset> s32 rw [if personality & 0x0A] (Standard: I<0>)

note: type: Plain text
en: The offset, in encoder counts, between the motor electrical zero and the encoder zero modulo the number of counts per electrical revolution
de: Die Verschiebung in Geberzählungen zwischen dem elektrischen Nullpunkt des Motors und dem Gebernullpunkt modulo der Anzahl der Zählungen pro elektrischer Umdrehung

note: type: TP
en: B<bldc.>I<N>B<.offset-measured> s32 r [if personality & 0x04] (default: I<0>)
de: B<bldc.>I<N>B<.offset-measured> s32 r [if personality & 0x04] (Standard: I<0>)

note: type: Plain text
en: The encoder offset measured by the homing sequence (in certain modes)
de: Der durch die Referenzfahrt gemessene Encoder-Offset (in bestimmten Modi)

note: type: TP
en: B<bldc.>I<N>B<.drive-offset> float rw (default: I<0>)
de: B<bldc.>I<N>B<.drive-offset> float rw (Voreinstellung: I<0>)

note: type: Plain text
en: The angle, in degrees, applied to the commanded angle by the drive in degrees. This value is only used during the homing sequence of drives with incremental encoder feedback. It is used to back-calculate from commanded angle to actual phase angle. It is only relevant to drives which expect rotor-angle input rather than phase-angle demand. Should be 0 for most drives.
de: Der Winkel in Grad, den der Antrieb auf den befohlenen Winkel anwendet. Dieser Wert wird nur während der Referenzfahrt-Sequenz von Antrieben mit Inkrementalgeber-Rückführung verwendet. Er wird für die Rückrechnung vom Sollwinkel zum tatsächlichen Phasenwinkel verwendet. Er ist nur für Antriebe relevant, die eher eine Rotorwinkeleingabe als eine Phasenwinkelnachfrage erwarten. Sollte für die meisten Antriebe 0 sein.

note: type: TP
en: B<bldc.>I<N>B<.output-pattern> u32 rw [if personality & 0x400] (default: I<25>)
de: B<bldc.>I<N>B<.output-pattern> u32 rw [if personality & 0x400] (Voreinstellung: I<25>)

note: type: TP
en: B<bldc.>I<N>B<.pattern> u32 rw [if personality & 0x01] (default: I<25>)
de: B<bldc.>I<N>B<.pattern> u32 rw [if personality & 0x01] (Voreinstellung: I<25>)

note: type: Plain text
en: Commutation pattern to use, from 0 to 47. Default is type 25.  Every plausible combination is included. The table shows the excitation pattern along the top, and the pattern code on the left hand side. The table entries are the hall patterns in H1, H2, H3 order.  Common patterns are: 0 (30 degree commutation) and 26, its reverse.  17 (120 degree).  18 (alternate 60 degree).  21 (300 degree, Bodine).  22 (240 degree).  25 (60 degree commutation).
de: Zu verwendendes Kommutierungsmuster, von 0 bis 47. Standard ist Typ 25.  Jede plausible Kombination ist enthalten. Die Tabelle zeigt das Erregungsmuster oben und den Mustercode auf der linken Seite. Die Tabelleneinträge sind die Hallmuster in der Reihenfolge H1, H2, H3.  Übliche Muster sind: 0 (30 Grad Kommutierung) und 26, die Umkehrung davon.  17 (120 Grad).  18 (abwechselnd 60 Grad).  21 (300 Grad, Bodine).  22 (240 Grad).  25 (60 Grad Kommutierung).

note: type: Plain text
en: Note that a number of incorrect commutations will have non-zero net torque which might look as if they work, but don't really.
de: Beachten Sie, dass eine Reihe falscher Kommutierungen ein Nettodrehmoment ungleich Null aufweisen, die zwar so aussehen, als würden sie funktionieren, es aber in Wirklichkeit nicht tun.

note: type: Plain text
en: If your motor lacks documentation it might be worth trying every pattern.
de: Wenn Ihr Motor nicht dokumentiert ist, kann es sich lohnen, alle Muster auszuprobieren.

note: type: Plain text
en: blend - Perform linear interpolation between two values
de: blend - Lineare Interpolation zwischen zwei Werten durchführen

note: type: Plain text
en: First input.  If select is equal to 1.0, the output is equal to in1
de: Erste Eingabe.  Wenn select gleich 1.0 ist, dann ist der Ausgang gleich in1

note: type: Plain text
en: Second input.  If select is equal to 0.0, the output is equal to in2
de: Zweite Eingabe.  Wenn select gleich 0,0 ist, dann ist der Ausgang gleich in2

note: type: Plain text
en: Select input.  For values between 0.0 and 1.0, the output changes linearly from in2 to in1
de: Eingang wählen.  Bei Werten zwischen 0,0 und 1,0 wechselt der Ausgang linear von in2 zu in1

note: type: Plain text
en: Output value.
de: Ausgangswert.

note: type: Plain text
en: If true, select values outside the range 0.0 to 1.0 give values outside the range in2 to in1.  If false, outputs are clamped to the the range in2 to in1
de: Wenn true, werden Werte außerhalb des Bereichs 0,0 bis 1,0 ausgewählt und Werte außerhalb des Bereichs in2 bis in1 ausgegeben.  Wenn false, werden die Ausgaben auf den Bereich in2 bis in1 begrenzt.

note: type: Plain text
en: carousel - Orient a toolchanger carousel using various encoding schemes
de: carousel - Orientieren Sie sich an einem Werkzeugwechsler-Karussell mit verschiedenen Kodierungsschemata

note: type: TP
en: B<pockets> The number of pockets in each toolchanger.
de: B<pockets> Die Anzahl der Plätze in jedem Werkzeugwechsler.

note: type: Plain text
en: Use up to 8 numbers separated by commas to create multiple carousel components.
de: Verwenden Sie bis zu 8 durch Kommata getrennte Zahlen, um mehrere Karussellkomponenten zu erstellen.

note: type: TP
en: B<encoding> The position encoding.
de: B<Encoding> Die Positionskodierung.

note: type: Plain text
en: gray, binary, bcd, index, edge, counts or single. Default = 'gray'
de: gray, binary, bcd, index, edge, counts oder single. Voreinstellung = 'gray'

note: type: TP
en: B<num_sense> The number of position sense pins.
de: B<num_sense> Die Anzahl der Positionssensor-Pins.

note: type: Plain text
en: Default = 4.
de: Voreinstellung = 4.

note: type: TP
en: B<dir> Set to 1 for unidirectional or  2 for bidirectional operation.
de: B<dir> Einstellung auf 1 für unidirektionalen oder 2 für bidirektionalen Betrieb.

note: type: Plain text
en: Default = bidirectional
de: Standard = bidirektional

note: type: TP
en: B<parity> Set to 1 for odd parity, 0 for even parity checking.
de: B<parity> Setzen Sie den Wert 1 für ungerade Parität, 0 für gerade Parität.

note: type: Plain text
en: Default = 0 (even)
de: Standardwert = 0 (gerade)

note: type: Plain text
en: This component is intended to help operate various types of carousel-type toolchangers.
de: Diese Komponente ist für den Betrieb verschiedener Arten von Karussell-Werkzeugwechslern bestimmt.

note: type: Plain text
en: The component can be configured to operate with binary, binary-coded decimal (BCD)  or gray-coded position feedback ('binary;, 'bcd' and 'gray' modes)  It can alternatively work with an individual sensor for each tool position ('single' mode) or with a sensor at each tool position and a separate index ('index' mode). Systems using a stepper motor or quadrature encoder are also supported ('counts' mode).  B<edge> is a special case of index mode for tool changers with pockets on both the rising and falling edges of the position sensor.  (Seen on at least one Denford Orac.)
de: Die Komponente kann so konfiguriert werden, dass sie mit binärer, binär-codierter dezimaler (BCD) oder gray-kodierter Positionsrückmeldung arbeitet (Modi "binary", "bcd" und "gray"). Sie kann alternativ mit einem einzelnen Sensor für jede Werkzeugposition (Modus "single") oder mit einem Sensor an jeder Werkzeugposition und einem separaten Index (Modus "index") arbeiten. Systeme, die einen Schrittmotor oder einen Quadratur-Encoder verwenden, werden ebenfalls unterstützt (Modus "counts").  B<edge> ist ein Sonderfall des Indexmodus für Werkzeugwechsler mit Taschen sowohl an der steigenden als auch an der fallenden Flanke des Positionssensors.  (Zumindest bei einem Denford Orac.)

note: type: Plain text
en: Both unidirectional and bidirectional systems are supported and those that reverse against a stop when in position.
de: Unterstützt werden sowohl unidirektionale als auch bidirektionale Systeme und solche, die in ihrer Position gegen einen Anschlag fahren.

note: type: Plain text
en: The number of carousel component instances created depends on the number of entries in the 'pockets' modparam. For example
de: Die Anzahl der erstellten Karussellkomponenten hängt von der Anzahl der Einträge im Modparam "pockets" ab. Zum Beispiel

note: type: Plain text
en: Would create 3 carousel instances with 10, 10 and 8 pockets. The other parameters are optional. If absent then defaults will be used. Any missing entry will assume the previous value.
de: Würde 3 Karussell-Instanzen mit 10, 10 und 8 Taschen erstellen. Die anderen Parameter sind optional. Fehlen sie, werden die Standardwerte verwendet. Jede fehlende Angabe nimmt den vorherigen Wert an.

note: type: Plain text
en: When the enable pin is set to true the component will immediately set the "active" pin to true and then (for a bidirectional instance) calculate the shortest path to the requested pocket number. The appropriate motor direction output pins will then be set. Bit outputs for forward and reverse are provided as well as a three-state velocity output for driving a DC motor PWM or a velocity-mode stepgen.
de: Wenn der Freigabe-Pin auf "true" gesetzt wird, setzt die Komponente sofort den "aktiven" Pin auf "true" und berechnet dann (bei einer bidirektionalen Instanz) den kürzesten Weg zur gewünschten Taschen-Nummer. Die entsprechenden Motorrichtungs-Ausgangsstifte werden dann gesetzt. Es gibt Bitausgänge für Vorwärts- und Rückwärtsfahrt sowie einen dreistufigen Geschwindigkeitsausgang zur Ansteuerung eines Gleichstrommotors mit PWM oder eines Stepgen mit Geschwindigkeitsmodus.

note: type: Plain text
en: The component will monitor the carousel position and, when the correct position is reached, set the motor-control pins to 0, set "active" to 0 and set "ready" to 1.
de: Der Baustein überwacht die Karussellposition und setzt bei Erreichen der richtigen Position die Motorsteuerungspins auf 0, setzt "aktiv" auf 0 und "bereit" auf 1.

note: type: Plain text
en: In 'index', 'edge' or 'counts'mode there is a need to find the initial home position of the carousel.  The first time that the "enable" pin is set; the carousel will rotate forwards searching for a home signal. In 'index' and 'edge' mode this is when both the index and pulse inputs are true. In 'counts' mode only the index input needs to be set to set home. Additionally in 'counts' mode the usual index-enable logic of the encoder counters is supported.
de: Im "Index"-, "Edge"- oder "Counts"-Modus muss die Ausgangsposition des Karussells ermittelt werden.  Das erste Mal, wenn der "Freigabe"-Pin gesetzt wird, dreht sich das Karussell vorwärts und sucht nach einem Referenzsignal. Im "Index"- und "Flanken"-Modus ist dies der Fall, wenn sowohl der Index- als auch der Impulseingang wahr sind. Im "Count"-Modus muss nur der Index-Eingang gesetzt werden, um die Referenzfahrt zu starten. Zusätzlich wird im "counts"-Modus die übliche Index-Freigabelogik der Encoder-Zähler unterstützt.

note: type: Plain text
en: With some carousel designs the carousel will not stop immediately. To allow for this set the B<lign-dc> pin to a low velocity to be used for a final latching move, and set theB<decel-time> to a suitable value.  Once the decel-time has expired the carousel will, if it was moving forwards, reverse back on to the position marker, off of the arker and then bak on to the FWD edge. If moving in reverse it will continue off the marker and then reverse slowly on to the FWD edge.  This algnment is only possible with a motor-vel controlled bidirectional carousel, Other combinations will be acepted but probably won't have the desired behaviour.  Some tuning will be needed of align-dc and decel-time to achieve reliable operation.
de: Bei einigen Karusselldesigns wird das Karussell nicht sofort anhalten. Um dies zu berücksichtigen, stellen Sie den Pin B<lign-dc> auf eine niedrige Geschwindigkeit ein, die für eine abschließende Rastbewegung verwendet werden soll, und setzen Sie dieB<decel-time> auf einen geeigneten Wert.  Nach Ablauf der Verzögerungszeit fährt das Karussell, wenn es sich vorwärts bewegte, rückwärts auf den Positionsmarker zu, verlässt den Anker und fährt dann zurück auf die FWD-Kante. Wenn es sich rückwärts bewegt, fährt es von der Markierung weg und dann langsam rückwärts auf die FWD-Kante.  Dieses Algnment ist nur mit einem motorisch gesteuerten bidirektionalen Karussell möglich. Andere Kombinationen sind zwar möglich, werden aber wahrscheinlich nicht das gewünschte Verhalten zeigen.  Um einen zuverlässigen Betrieb zu erreichen, ist eine gewisse Abstimmung von align-dc und decel-time erforderlich.

note: type: Plain text
en: In the unusual case that the index and pulse signals do not align it is possible to use HAL logic to achieve the desired pin switching during homing.
de: Für den ungewöhnlichen Fall, dass die Index- und Impulssignale nicht übereinstimmen, ist es möglich, die HAL-Logik zu verwenden, um die gewünschte Pin-Umschaltung während der Referenzfahrt zu erreichen.

note: type: Plain text
en: Setting "enable" low does not halt the homing move, so if homing on first tool change is not needed then the enable pin can be toggled by an axis homing pin or a script and the homing process will continue even if that driving signal resets during the carousel homing move.
de: Das Setzen von „enable“ auf „low“ stoppt die Referenzfahrt nicht. Wenn also die Referenzfahrt beim ersten Werkzeugwechsel nicht erforderlich ist, kann der Aktivierungsstift durch einen Achsen-Referenzstift oder ein Skript umgeschaltet werden, und der Referenziervorgang wird fortgesetzt, selbst wenn dieses Antriebssignal währenddessen zurückgesetzt wird die Karussell-Homing-Bewegung.

note: type: Plain text
en: To operate the component with an encoder or stepgen use mode "C". The B<scale> pin should be the number of steps or encoder counts between pocket centres. The B<width> pin can be used to stop the motor some distance before the centre of the pocket to allow the motor time to decelerate.
de: Um die Komponente mit einem Encoder oder Stepgen zu betreiben, verwenden Sie den Modus "C". Der Pin B<Scale> sollte die Anzahl der Schritte oder Encoderzählungen zwischen den Taschenmitten sein. Der Pin B<Breite> kann verwendet werden, um den Motor einige Schritte vor der Taschenmitte anzuhalten, damit der Motor Zeit hat, abzubremsen.

note: type: Plain text
en: For tool changers which lock the carousel against a stop the B<rev-pulse> pin can be set to a non-zero value. The motor-rev pin will then be set for this many seconds at the completion of the tool search and at the same time the reverse duty/cycle velocity value will be sent to the motor-vel pin.
de: Bei Werkzeugwechslern, die das Karussell gegen einen Anschlag verriegeln, kann der B<rev-pulse>-Pin auf einen Wert ungleich Null gesetzt werden. Der Motor-Drehzahl-Pin wird dann nach Abschluss der Werkzeugsuche für so viele Sekunden gesetzt und gleichzeitig wird der Wert der Rückwärtsdrehzahl an den Motor-Drehzahl-Pin gesendet.

note: type: TP
en: B<carousel.>I<N> (requires a floating-point thread)
de: B<Karussell.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: The pocket to move to when the .enable pin goes high. If the value passed is higher than the number of pockets specified in the "pockets" modparam then modulo arithmetic is used. This is intended to allow the use of multiple tools in the same holder, as is sometimes useful with lathes.
de: Die Tasche, zu der gewechselt wird, wenn der .enable-Pin auf High geht. Wenn der übergebene Wert höher ist als die im Modparameter "pockets" angegebene Anzahl von Taschen, wird Modulo-Arithmetik verwendet. Dies soll die Verwendung mehrerer Werkzeuge im selben Halter ermöglichen, wie es manchmal bei Drehmaschinen nützlich ist.

note: type: Plain text
en: Set this pin high to start movement. Setting it low will stop movement
de: Setzen Sie diesen Pin auf high, um die Bewegung zu starten. Ein niedriger Wert stoppt die Bewegung.

note: type: Plain text
en: indicates that the component is active
de: zeigt an, dass die Komponente aktiv ist

note: type: Plain text
en: This pin goes high when the carousel is in-position
de: Dieser Pin ist High, wenn das Karussell in Position ist.

note: type: Plain text
en: Use this pin to indicate that the position feedback is valid. Often provided by binary encoders
de: Verwenden Sie diesen Pin, um anzuzeigen, dass die Positionsrückmeldung gültig ist. Wird oft von binären Encodern bereitgestellt

note: type: Plain text
en: Some encoders supply a parity bit, if this is connected then the parity-error output bit will indicate parity errors
de: Einige Encoder liefern ein Paritätsbit, wenn dieses verbunden ist, zeigt das Paritätsfehler-Ausgabebit Paritätsfehler an

note: type: Plain text
en: Carousel position feedback pins. In 'index' mode there will be only 2 pins. sense-0 is the index and sense-1 is the pocket sensor.
de: Stifte zur Rückmeldung der Karussellposition. Im "Index"-Modus gibt es nur 2 Stifte. sense-0 ist der Index und sense-1 ist der Taschensensor.

note: type: Plain text
en: The duration in seconds for which a ratchet changer (Boxford, Emco)  should pulse the reverse pin to lock the holder
de: Die Dauer in Sekunden, für die ein Ratschenwechsler (Boxford, Emco) den Umkehrstift zum Verriegeln des Halters betätigen sollte

note: type: Plain text
en: Velocity or duty cycle when forwards rotation is desired
de: Geschwindigkeit oder Einschaltdauer, wenn Vorwärtsdrehung gewünscht ist

note: type: TP
en: B<carousel.>I<N>B<.rev-dc> float in
de: B<Karussell.>I<N>B<.rev-dc> float in

note: type: Plain text
en: Velocity or duty cycle when reverse rotation is desired
de: Geschwindigkeit oder Arbeitszyklus bei gewünschter Rückwärtsdrehung

note: type: Plain text
en: Duty cycle when carousel is in-position (to hold against stop)
de: Einschaltdauer, wenn das Karussell in Position ist (zum Halten am Anschlag)

note: type: Plain text
en: Use this pin to set the speed of a slower alignment move once the changer is in position. Such a system almost certainly needs decel-time setting too
de: Verwenden Sie diesen Pin, um die Geschwindigkeit einer langsameren Ausrichtungsbewegung einzustellen, sobald sich der Wechsler in Position befindet. Ein solches System benötigt mit ziemlicher Sicherheit auch eine Verzögerungszeiteinstellung

note: type: Plain text
en: Time to wait for carousel to stop before final alignment
de: Zeit bis zum Anhalten des Karussells vor der endgültigen Ausrichtung

note: type: Plain text
en: Connect to the rawcounts of an encoder or a stepgen in 'counts' mode
de: Verbindung zu den Rohdaten eines Encoders oder eines Stepgen im Modus 'counts'

note: type: TP
en: B<carousel.>I<N>B<.scale> s32 in (default: I<100>)
de: B<carousel.>I<N>B<.scale> s32 in (Voreinstellung: I<100>)

note: type: Plain text
en: The number of stepgen or encoder counts between successive pockets
de: Die Anzahl der Stepgen- oder Encoderzählungen zwischen aufeinanderfolgenden Taschen

note: type: TP
en: B<carousel.>I<N>B<.width> s32 in (default: I<0>)
de: B<carousel.>I<N>B<.width> s32 in (Voreinstellung: I<0>)

note: type: Plain text
en: How far each side of the exact scale to signal a new pocket
de: Wie weit jede Seite der genauen Skala, um eine neue Tasche zu signalisieren

note: type: TP
en: B<carousel.>I<N>B<.home-offset> s32 in (default: I<0>)
de: B<carousel.>I<N>B<.home-offset> s32 in (Voreinstellung: I<0>)

note: type: Plain text
en: The offset (in counts) between the index and pocket 1
de: Die Verschiebung (in Zählungen) zwischen dem Index und Tasche 1

note: type: Plain text
en: Used to home to an encoder index
de: Wird verwendet, um einen Encoder-Index zu referenzieren

note: type: Plain text
en: Jog the carousel forwards one tool position
de: Bewegen Sie das Karussell um eine Werkzeugposition vorwärts

note: type: Plain text
en: Jog the carousel in reverse (only if dir = 2).  It is very important that these pins should be debounced and should probably also be interlocked to only operate when the machine is idle.
de: Joggen Sie das Karussell rückwärts (nur wenn dir = 2).  Es ist sehr wichtig, dass diese Pins depriert werden und wahrscheinlich auch verriegelt werden, um nur zu arbeiten, wenn die Maschine im Leerlauf ist.

note: type: Plain text
en: Indicates the motor should run forwards (bigger numbers)
de: Zeigt an, dass der Motor vorwärts laufen soll (größere Zahlen)

note: type: Plain text
en: Indicates the motor should run reverse.
de: Zeigt an, dass der Motor rückwärts laufen soll.

note: type: Plain text
en: Indicates a parity error
de: Zeigt einen Paritätsfehler an

note: type: Plain text
en: This pin indicates the current position feedback
de: Dieser Pin zeigt die aktuelle Positionsrückmeldung an

note: type: Plain text
en: The duty-cycle or velocity to drive a DC motor or stepgen
de: Der Arbeitszyklus oder die Geschwindigkeit zum Antrieb eines Gleichstrommotors oder Schrittmotors

note: type: Plain text
en: Shows that homing is complete. Only used in index and edge modes
de: Zeigt an, dass die Referenzfahrt abgeschlossen ist. Wird nur im Index- und Kantenmodus verwendet.https://hosted.weblate.org/js/ignore-check/14790899/

note: type: Plain text
en: Should only really be necessary for testing
de: Sollte eigentlich nur zum Testen nötig sein

note: type: Plain text
en: Current component state
de: Aktueller Zustand der Komponente

note: type: Plain text
en: Shows that homing is in progress. Only used for index mode
de: Zeigt an, dass eine Referenzfahrt durchgeführt wird. Nur für den Indexmodus verwendet

note: type: Plain text
en: Shows the value of the internal timer
de: Zeigt den Wert des internen Timers an

note: type: Plain text
en: Internal tag for search direction
de: Interne Markierung für die Suchrichtung

note: type: Plain text
en: charge_pump - Create a square-wave for the 'charge pump' input of some controller boards
de: charge_pump - Erzeugt eine Rechteckwelle für den 'charge pump'-Eingang einiger Controller-Karten

note: type: Plain text
en: The 'Charge Pump' should be added to the base thread function.  When enabled the output is on for one period and off for one period. To calculate the frequency of the output 1/(period time in seconds x 2) = hz. For example if you have a base period of 100,000ns that is 0.0001 seconds and the formula would be 1/(0.0001 x 2) = 5,000 hz or 5 Khz. Two additional outputs are provided that run a factor of 2 and 4 slower for hardware that requires a lower frequency.
de: Die 'Charge Pump' sollte der Basis-Thread-Funktion hinzugefügt werden. Wenn aktiviert, ist der Ausgang für eine Periode ein und für eine Periode aus. Zur Berechnung der Frequenz des Ausgangs 1/(Periodenzeit in Sekunden x 2) = Hz. Wenn Sie beispielsweise eine Basisperiode von 100.000 ns haben, sind das 0,0001 Sekunden und die Formel wäre 1/(0,0001 x 2) = 5.000 Hz oder 5 kHz. Es stehen zwei zusätzliche Ausgänge zur Verfügung, die für Hardware, die eine niedrigere Frequenz erfordert, um den Faktor 2 und 4 langsamer laufen.

note: type: Plain text
en: Toggle the output bit (if enabled)
de: Umschalten des Ausgabebits (falls aktiviert)

note: type: Plain text
en: Square wave if 'enable' is TRUE or unconnected, low if 'enable' is FALSE
de: Rechteckwelle, wenn 'enable' TRUE oder nicht verbunden ist, niedrig, wenn 'enable' FALSE ist

note: type: Plain text
en: Square wave at half the frequency of 'out'
de: Rechteckwelle mit der halben Frequenz von 'out'

note: type: Plain text
en: Square wave at a quarter of the frequency of 'out'
de: Rechteckwelle bei einem Viertel der Frequenz von 'out'

note: type: TP
en: B<charge-pump.enable> bit in (default: I<TRUE>)
de: B<charge-pump.enable> bit in (Standard: I<TRUE>)

note: type: Plain text
en: If FALSE, forces all 'out' pins to be low
de: Wenn FALSE, werden alle 'out'-Pins auf low gesetzt

note: type: Plain text
en: clarke2 - Two input version of Clarke transform
de: clarke2 - Zwei-Eingabe-Version der Clarke-Transformation

note: type: Plain text
en: The Clarke transform can be used to translate a vector quantity from a three phase system (three components 120 degrees apart) to a two phase Cartesian system.
de: Die Clarke-Transformation kann verwendet werden, um eine Vektorgröße von einem dreiphasigen System (drei Komponenten, die 120 Grad auseinander liegen) in ein zweiphasiges kartesisches System zu übertragen.

note: type: Plain text
en: B<clarke2> implements a special case of the Clarke transform, which only needs two of the three input phases.  In a three wire three phase system, the sum of the three phase currents or voltages must always be zero.  As a result only two of the three are needed to completely define the current or voltage.  B<clarke2> assumes that the sum is zero, so it only uses phases A and B of the input.  Since the H (homopolar) output will always be zero in this case, it is not generated.
de: B<clarke2> implementiert einen Spezialfall der Clarke-Transformation, der nur zwei der drei Eingangsphasen benötigt.  In einem Dreileiter-Dreiphasensystem muss die Summe der drei Phasenströme oder -spannungen immer gleich Null sein.  Daher werden nur zwei der drei Phasen benötigt, um den Strom oder die Spannung vollständig zu bestimmen.  B<clarke2> geht davon aus, dass die Summe Null ist, und verwendet daher nur die Phasen A und B des Eingangs.  Da der Ausgang H (homopolar) in diesem Fall immer Null ist, wird er nicht erzeugt.

note: type: TP
en: B<clarke2.>I<N> (requires a floating-point thread)
de: B<clarke2.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: first two phases of three phase input
de: die ersten beiden Phasen des dreiphasigen Eingangs

note: type: Plain text
en: cartesian components of output
de: kartesische Komponenten der Ausgabe

note: type: Plain text
en: B<clarke3>(9) for the general case, B<clarkeinv>(9) for the inverse transform.
de: B<clarke3>(9) für den allgemeinen Fall, B<clarkeinv>(9) für die inverse Transformation.

note: type: Plain text
en: clarke3 - Clarke (3 phase to cartesian) transform
de: clarke3 - Clarke-Transformation (3-Phasen zu kartesisch)

note: type: Plain text
en: The Clarke transform can be used to translate a vector quantity from a three phase system (three components 120 degrees apart) to a two phase Cartesian system (plus a homopolar component if the three phases don't sum to zero).
de: Die Clarke-Transformation kann verwendet werden, um eine Vektorgröße von einem Dreiphasensystem (drei Komponenten im Abstand von 120 Grad) in ein kartesisches Zweiphasensystem (plus eine homopolare Komponente, wenn die Summe der drei Phasen nicht gleich Null ist) zu übertragen.

note: type: Plain text
en: B<clarke3> implements the general case of the transform, using all three phases.  If the three phases are known to sum to zero, see B<clarke2> for a simpler version.
de: B<clarke3> implementiert den allgemeinen Fall der Transformation unter Verwendung aller drei Phasen.  Wenn bekannt ist, dass die Summe der drei Phasen gleich Null ist, siehe B<clarke2> für eine einfachere Version.

note: type: Plain text
en: three phase input vector
de: dreiphasiger Eingangsvektor

note: type: Plain text
en: homopolar component of output
de: Homopolare Komponente des Ausgangs

note: type: Plain text
en: B<clarke2>(9) for the 'a+b+c=0' case, B<clarkeinv>(9) for the inverse transform.
de: B<clarke2>(9) für den Fall "a+b+c=0", B<clarkeinv>(9) für die inverse Transformation.

note: type: Plain text
en: clarkeinv - Inverse Clarke transform
de: clarkeinv - Inverse Clarke-Transformation

note: type: Plain text
en: The inverse Clarke transform can be used rotate a vector quantity and then translate it from Cartesian coordinate system to a three phase system (three components 120 degrees apart).
de: Mit der inversen Clarke-Transformation kann eine Vektorgröße gedreht und anschließend aus dem kartesischen Koordinatensystem in ein Dreiphasensystem (drei um 120 Grad auseinander liegende Komponenten) übersetzt werden.

note: type: TP
en: B<clarkeinv.>I<N> (requires a floating-point thread)
de: B<clarkeinv.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: cartesian components of input
de: Kartesische Komponenten der Eingabe

note: type: Plain text
en: homopolar component of input (usually zero)
de: homopolare Komponente des Eingangs (normalerweise Null)

note: type: Plain text
en: rotation angle: 0.00 to 1.00 = 0 to 360 degrees
de: Drehwinkel: 0,00 bis 1,00 = 0 bis 360 Grad

note: type: Plain text
en: three phase output vector
de: dreiphasiger Ausgangsvektor

note: type: Plain text
en: B<clarke2>(9) and B<clarke3>(9) for the forward transform.
de: B<clarke2>(9) und B<clarke3>(9) für die Vorwärtstransformation.

note: type: Plain text
en: This component consist of a realtime part and a non-realtime part (often called 'userspace' in the LinuxCNC documentation).  The non-realtime part loads the programmable ladder description, while the realtime part provides the pins.  The file name of the configuration can be changed using an argument to the non-realtime part.  By default the non-realtime part provides a graphical visualisation of the loaded ladder, which can be disabled using the '--nogui' option to the non-realtime part.
de: Diese Komponente besteht aus einem Echtzeitteil und einem Nicht-Echtzeitteil (in der LinuxCNC-Dokumentation oft als "Userspace" bezeichnet).  Der Nicht-Echtzeit-Teil lädt die programmierbare Kontaktplanbeschreibung, während der Echtzeit-Teil die Pins bereitstellt.  Der Dateiname der Konfiguration kann mit einem Argument für den Nicht-Echtzeit-Teil geändert werden.  Standardmäßig bietet der Nicht-Echtzeit-Teil eine grafische Visualisierung des geladenen Kontaktplans, die mit der Option '--nogui' für den Nicht-Echtzeit-Teil deaktiviert werden kann.

note: type: Plain text
en: Tells you how long the last refresh took.
de: Gibt an, wie lange die letzte Aktualisierung gedauert hat.

note: type: Plain text
en: Tells you how long the longest refresh took.
de: Gibt an, wie lange die längste Aktualisierung gedauert hat.

note: type: Plain text
en: Tells you if the program is running or not
de: Zeigt an, ob das Programm läuft oder nicht

note: type: Plain text
en: The rung update rate. Add this to the servo thread.  You can added it to a faster thread but it.  Will update no faster than once every 1 millisecond (1000000 ns).
de: Die Strompfad (engl. rung)-Aktualisierungsrate. Fügen Sie dies dem Servo-Thread hinzu. Sie können es aber zu einem schnelleren Thread hinzufügen. Wird nicht schneller als einmal alle 1 Millisekunde (1000000 ns) aktualisiert.

note: type: Plain text
en: See http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ClassicLadder_Ver_7.124 for the latest.
de: Siehe http://wiki.linuxcnc.org/cgi-bin/wiki.pl?ClassicLadder_Ver_7.124 für die neuesten Informationen.

note: type: Plain text
en: comp - Two input comparator with hysteresis
de: comp - Komparator mit zwei Eingängen und Hysterese

note: type: TP
en: B<comp.>I<N> (requires a floating-point thread)
de: B<comp.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Update the comparator
de: Aktualisieren des Komparators

note: type: Plain text
en: Inverting input to the comparator
de: Invertierender Eingang zum Komparator

note: type: Plain text
en: Non-inverting input to the comparator
de: Nicht-invertierender Eingang zum Komparator

note: type: Plain text
en: Normal output. True when B<in1> E<gt> B<in0> (see parameter B<hyst> for details)
de: Normale Ausgabe. Wahr, wenn B<in1> E<gt> B<in0> (siehe Parameter B<hyst> für Einzelheiten)

note: type: Plain text
en: Match output.  True when difference between B<in1> and B<in0> is less than B<hyst>/2
de: Übereinstimmende Ausgabe.  Wahr, wenn die Differenz zwischen B<in1> und B<in0> kleiner ist als B<hyst>/2

note: type: TP
en: B<comp.>I<N>B<.hyst> float rw (default: I<0.0>)
de: B<comp.>I<N>B<.hyst> float rw (Standard: I<0.0>)

note: type: Plain text
en: Hysteresis of the comparator (default 0.0)
de: Hysterese des Komparators (Standardwert 0.0)

note: type: Plain text
en: With zero hysteresis, the output is true when B<in1> E<gt> B<in0>.  With nonzero hysteresis, the output switches on and off at two different values, separated by distance B<hyst> around the point where B<in1> = B<in0>.  Keep in mind that floating point calculations are never absolute and it is wise to always set B<hyst> if you intend to use equal
de: Bei einer Hysterese von Null ist der Ausgang wahr, wenn B<in1> E<gt> B<in0>.  Bei einer Hysterese ungleich Null schaltet der Ausgang bei zwei verschiedenen Werten ein und aus, die durch den Abstand B<hyst> um den Punkt B<in1> = B<in0> getrennt sind.  Denken Sie daran, dass Fließkommaberechnungen nie absolut sind, und es ist ratsam, immer B<hyst> zu setzen, wenn Sie beabsichtigen, gleiche Werte zu verwenden.

note: type: Plain text
en: constant - Use a parameter to set the value of a pin
de: constant - Verwendung eines Parameters, um den Wert eines Pins festzulegen

note: type: TP
en: B<constant.>I<N> (requires a floating-point thread)
de: B<constant.>I<N> (erfordert einen Fließkomma-Thread)

note: type: Plain text
en: conv_bit_float - Convert a value from bit to float
de: conv_bit_float - Konvertiert einen Wert von Bit in Float

note: type: TP
en: B<conv-bit-float.>I<N> (requires a floating-point thread)
de: B<conv-bit-float.>I<N> (erfordert einen Gleitkommathread)

note: type: Plain text
en: Update 'out' based on 'in'
de: Aktualisiere 'out' basierend auf 'in'

note: type: Plain text
en: conv_bit_s32 - Convert a value from bit to s32
de: conv_bit_s32 - Konvertiert einen Wert von bit nach s32

note: type: Plain text
en: conv_bit_u32 - Convert a value from bit to u32
de: conv_bit_u32 - Konvertiert einen Wert von bit nach u32

note: type: Plain text
en: conv_float_s32 - Convert a value from float to s32
de: conv_float_s32 - Konvertiert einen Wert von float nach s32

note: type: Plain text
en: TRUE when 'in' is not in the range of s32
de: TRUE, wenn 'in' nicht im Bereich von s32 liegt

note: type: Plain text
en: If TRUE, then clamp to the range of s32.  If FALSE, then allow the value to "wrap around".
de: Wenn TRUE, dann Klemme an den Bereich von s32. Wenn FALSE, dann lassen Sie den Wert "umlaufen".

note: type: Plain text
en: conv_float_u32 - Convert a value from float to u32
de: conv_float_u32 - Konvertiert einen Wert von Float nach u32

note: type: TP
en: B<conv-float-u32.>I<N> (requires a floating-point thread)
de: B<conv-float-u32.>I<N> (erfordert einen Fließkomma-Thread)

note: type: Plain text
en: TRUE when 'in' is not in the range of u32
de: TRUE wenn 'in' nicht im Bereich von u32 liegt

note: type: Plain text
en: If TRUE, then clamp to the range of u32.  If FALSE, then allow the value to "wrap around".
de: Wenn TRUE, dann auf den Bereich von u32 klemmen. Wenn FALSE, dann lassen Sie den Wert "umlaufen".

note: type: Plain text
en: conv_s32_bit - Convert a value from s32 to bit
de: conv_s32_bit - Konvertiert einen Wert von s32 nach bit

note: type: Plain text
en: TRUE when 'in' is not in the range of bit
de: TRUE, wenn 'in' nicht im Bereich von Bit liegt

note: type: Plain text
en: If TRUE, then clamp to the range of bit.  If FALSE, then allow the value to "wrap around".
de: Wenn TRUE, dann wird der Wert auf den Bereich der Bits begrenzt.  Wenn FALSE, dann lassen Sie den Wert zu "wrap around".

note: type: Plain text
en: conv_s32_float - Convert a value from s32 to float
de: conv_s32_float - Konvertiert einen Wert von s32 in float

note: type: TP
en: B<conv-s32-float.>I<N> (requires a floating-point thread)
de: B<conv-s32-float.>I<N> (erfordert einen Fließkomma-Thread)

note: type: Plain text
en: conv_s32_u32 - Convert a value from s32 to u32
de: conv_s32_u32 - Konvertiert einen Wert von s32 nach u32

note: type: Plain text
en: conv_u32_bit - Convert a value from u32 to bit
de: conv_u32_bit - Konvertiert einen Wert von u32 in Bit

note: type: Plain text
en: conv_u32_float - Convert a value from u32 to float
de: conv_u32_float - Konvertiert einen Wert von u32 in float

note: type: TP
en: B<conv-u32-float.>I<N> (requires a floating-point thread)
de: B<conv-u32-float.>I<N> (erfordert einen Fließkomma-Thread)

note: type: Plain text
en: conv_u32_s32 - Convert a value from u32 to s32
de: conv_u32_s32 - Konvertiert einen Wert von u32 nach s32

note: type: Plain text
en: corexy_by_hal - CoreXY kinematics
de: corexy_by_hal - CoreXY-Kinematik

note: type: Plain text
en: Implement B<CoreXY> forward and inverse transformations B<in HAL>.  This component provides an alternative method for implementing B<CoreXY> kinematics.
de: Implementierung von B<CoreXY> Vorwärts- und Rückwärtstransformationen B<in HAL>.  Diese Komponente bietet eine alternative Methode zur Implementierung von B<CoreXY>-Kinematiken.

note: type: Plain text
en: In the INI file, use:
de: Verwenden Sie in der INI-Datei:

note: type: Plain text
en: This component accepts two joint (B<j0,j1>) motor position commands for a trivkins coordinates=xyz configuration and computes equivalent B<CoreXY> motor commands for two motors identified as B<alpha,beta>.  Similarly, the component accepts feedback values for the B<alpha,beta> motor controllers and converts to equivalent joint (B<j0,j1>) motor position feedback values.
de: Diese Komponente akzeptiert zwei Gelenkpositionsbefehle (B<j0,j1>) für eine Trivkins-Koordinaten=xyz-Konfiguration und berechnet äquivalente B<CoreXY>-Motorbefehle für zwei Motoren mit der Bezeichnung B<alpha,beta>.  In ähnlicher Weise akzeptiert die Komponente Rückkopplungswerte für die B<alpha,beta>-Motorsteuerungen und wandelt sie in äquivalente Gelenk (B<j0,j1>)-Motorpositionsrückkopplungswerte um.

note: type: Plain text
en: 1) Using B<trivkins> with this module allows home switches to trigger according to the B<Cartesian x,y> positions
de: 1) Durch die Verwendung von B<trivkins> mit diesem Modul können Heimschalter entsprechend den B<kartesischen x,y>Positionen ausgelöst werden

note: type: Plain text
en: 2) Joint pin names are based on B<coordinates=xyz> and the corresponding joint number assignments used by B<trivkins> so B<j0==x, j1==y> (man trivkins for more information)
de: 2) Gemeinsame Pin-Namen basieren auf B<coordinates=xyz> und den entsprechenden gemeinsamen Nummernzuweisungen, die von B<trivkins> verwendet werden, also B<j0==x, j1==y> (man trivkins für weitere Informationen)

note: type: Plain text
en: 3) B<CoreXY> kinematics can also be implemented using the kinematics module named B<corexykins> with home switches triggered by the B< j0,j1 motor> positions.  (man kins for more information)
de: 3) Die B<CoreXY>-Kinematik kann auch mit dem Kinematikmodul B<corexykins> implementiert werden, wobei die Referenzpunkt-Schalter durch die B< j0,j1 Motor>-Positionen ausgelöst werden.  (man kins für weitere Informationen)

note: type: TP
en: B<corexy-by-hal.>I<N> (requires a floating-point thread)
de: B<corexy-by-hal.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: typ: from joint.0.motor-pos-cmd
de: Typ: von joint.0.motor-pos-cmd

note: type: Plain text
en: typ: from joint.1.motor-pos-cmd
de: Typ: von joint.1.motor-pos-cmd

note: type: Plain text
en: typ: to joint.0.motor-pos-fb
de: Typ: zu joint.0.motor-pos-fb

note: type: Plain text
en: typ: to joint.1.motor-pos-fb
de: Typ: zu joint.1.motor-pos-fb

note: type: Plain text
en: typ: command to alpha motor
de: Typ: Befehl an Alpha-Motor

note: type: Plain text
en: typ: command to beta ts motor
de: Typ: Befehl an Beta TS Motor

note: type: Plain text
en: Dewey Garrett based on forum post from nbremond
de: Dewey Garrett basierend auf einem Forumsbeitrag von nbremond

note: type: Plain text
en: counter - counts input pulses B<(DEPRECATED)>
de: counter - zählt Eingangsimpulse B<(DEPRECATED)>

note: type: Plain text
en: B<counter> is a deprecated HAL component and will be removed in a future release.  Use the B<encoder> component with encoder.X.counter-mode set to TRUE.
de: B<counter> ist eine veraltete HAL-Komponente und wird in einer zukünftigen Version entfernt werden.  Verwenden Sie die Komponente B<encoder>, wobei encoder.X.counter-mode auf TRUE gesetzt ist.

note: type: Plain text
en: B<counter> is a HAL component that provides software- based counting that is useful for spindle position sensing and maybe other things.  Instead of using a real encoder that outputs quadrature, some lathes have a sensor that generates a simple pulse stream as the spindle turns and an index pulse once per revolution.  This component simply counts up when a "count" pulse (phase-A)  is received, and if reset is enabled, resets when the "index" (phase-Z) pulse is received.
de: B<counter> ist eine HAL-Komponente, die eine softwarebasierte Zählung ermöglicht, die unter anderem für die Erfassung der Spindelposition nützlich ist.  Anstatt einen echten Encoder zu verwenden, der Quadratur ausgibt, haben einige Drehmaschinen einen Sensor, der einen einfachen Impulsstrom erzeugt, wenn sich die Spindel dreht, und einen Indeximpuls einmal pro Umdrehung.  Diese Komponente zählt einfach aufwärts, wenn ein "Zähl"-Impuls (Phase-A) empfangen wird, und setzt sich zurück, wenn der "Index"-Impuls (Phase-Z) empfangen wird, sofern die Rücksetzung aktiviert ist.

note: type: Plain text
en: This is of course only useful for a unidirectional spindle, as it is not possible to sense the direction of rotation.
de: Dies ist natürlich nur bei einer unidirektionalen Spindel sinnvoll, da es nicht möglich ist, die Drehrichtung zu erfassen.

note: type: Plain text
en: B<counter> conforms to the "canonical encoder" interface described in the HAL manual.
de: B<counter> entspricht der im HAL-Handbuch beschriebenen "kanonischen Geber"-Schnittstelle.

note: type: Plain text
en: Updates the counts, position and velocity outputs based on internal counters.
de: Aktualisiert die Zähl-, Positions- und Geschwindigkeitsausgänge basierend auf den internen Zählern.

note: type: Plain text
en: Samples the phase-A and phase-Z inputs and updates internal counters.
de: Abtastung der Phase-A- und Phase-Z-Eingänge und Aktualisierung der internen Zähler.

note: type: Plain text
en: The primary input signal.  The internal counter is incremented on each rising edge.
de: Das primäre Eingangssignal.  Der interne Zähler wird bei jeder steigenden Flanke inkrementiert.

note: type: Plain text
en: The index input signal.  When the B<index-enable> pin is TRUE and a rising edge on B<phase-Z> is seen, B<index-enable> is set to FALSE and the internal counter is reset to zero.
de: Das Index-Eingangssignal.  Wenn der B<index-enable>-Pin TRUE ist und eine steigende Flanke an B<phase-Z> zu sehen ist, wird B<index-enable> auf FALSE gesetzt und der interne Zähler wird auf Null zurückgesetzt.

note: type: Plain text
en: These pins function according to the canonical digital encoder interface.
de: Diese Pins funktionieren entsprechend der kanonischen digitalen Encoder-Schnittstelle.

note: type: Plain text
en: This parameter functions according to the canonical digital encoder interface.
de: Dieser Parameter funktioniert gemäß der kanonischen digitalen Encoder-Schnittstelle.

note: type: Plain text
en: The internal counts value, updated from B<update-counters> and reflected in the output pins at the next call to B<capture-position>.
de: Der interne Zählwert, der von B<update-counters> aktualisiert und beim nächsten Aufruf von B<capture-position> in den Ausgangspins wiedergegeben wird.

note: type: Plain text
en: B<encoder(9)>. in the LinuxCNC documentation.
de: B<encoder(9)>. in der LinuxCNC Dokumentation.

note: type: Plain text
en: dbounce - alternative debounce component
de: dbounce - alternative Entprellungskomponente

note: type: Plain text
en: This component is similar to the B<debounce> component
de: Diese Komponente ist der Komponente B<debounce> ähnlich

note: type: Plain text
en: (man B<debounce>) but uses settable delay pins for each instance
de: (man B<debounce>), verwendet aber für jede Instanz einstellbare Delay-Pins

note: type: Plain text
en: and supports B<count>= or B<names>= parameters
de: und unterstützt die Parameter B<count>= oder B<names>=

note: type: Plain text
en: (groups are not used)
de: (Gruppen werden nicht verwendet)

note: type: TP
en: B<dbounce.>I<N>B<.delay> u32 in (default: I<5>)
de: B<dbounce.>I<N>B<.delay> u32 in (Voreinstellung: I<5>)

note: type: Plain text
en: ddt - Compute the derivative of the input function
de: ddt - Berechnen der Ableitung der Eingangsfunktion

note: type: Plain text
en: For every function call from the real time thread, calculate the difference between the old and current input value divided by the timer elapsed since the last call.
de: Berechnen Sie für jeden Funktionsaufruf des Echtzeit-Threads die Differenz zwischen dem alten und dem aktuellen Eingabewert, geteilt durch die seit dem letzten Aufruf verstrichene Zeit.

note: type: TP
en: B<ddt.>I<N> (requires a floating-point thread)
de: B<ddt.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: As this only work on two consecutive input values, it will only work well if the input change every function call, and not work so well if the rate of change is very low and the input change do not happen every time the real time function is called.
de: Da dies nur bei zwei aufeinanderfolgenden Eingabewerten funktioniert,kann es nur dann gut funktionieren, wenn sich die Eingaben bei jedem Funktionsaufruf ändern, und nicht so gut, wenn die Änderungsrate sehr gering ist und die Eingaben nicht bei jedem Aufruf der Echtzeitfunktion geändert werden.

note: type: Plain text
en: deadzone - Return the center if within the threshold
de: deadzone - Gibt die Mitte zurück, wenn sie innerhalb des Schwellenwerts liegt

note: type: TP
en: B<deadzone.>I<N> (requires a floating-point thread)
de: B<deadzone.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Update B<out> based on B<in> and the parameters.
de: Aktualisierung von B<out> auf der Grundlage von B<in> und den Parametern.

note: type: TP
en: B<deadzone.>I<N>B<.center> float rw (default: I<0.0>)
de: B<deadzone.>I<N>B<.center> float rw (Voreinstellung: I<0.0>)

note: type: Plain text
en: The center of the dead zone
de: Das Zentrum der toten Zone

note: type: TP
en: B<deadzone.>I<N>B<.threshold> float rw (default: I<1.0>)
de: B<deadzone.>I<N>B<.threshold> float rw (Voreinstellung: I<1.0>)

note: type: Plain text
en: The dead zone is B<center> \(+- (B<threshold>/2)
de: Die Totzone ist B<Mitte> \(+- (B<Schwellenwert>/2)

note: type: Plain text
en: debounce - filter noisy digital inputs
de: debounce - Filterung verrauschter digitaler Eingänge

note: type: Plain text
en: Creates debounce groups with the number of filters specified by (I<size>).  Every filter in the same group has the same sample rate and delay. For example cfg=2,3 creates two filter groups with 2 filters in the first group and 3 filters in the second group.
de: Erzeugt Entprellungsgruppen mit der durch (I<size>) angegebenen Anzahl von Filtern.  Jeder Filter in der gleichen Gruppe hat die gleiche Abtastrate und Verzögerung. Zum Beispiel cfg=2,3 erzeugt zwei Filtergruppen mit 2 Filtern in der ersten Gruppe und 3 Filtern in der zweiten Gruppe.

note: type: Plain text
en: An alternate component named B<dbounce> implements similar functionality using conventional count= and names= parameters.  Delay settings are implemented by a delay pin for each instance instead of using filter groups.
de: Eine alternative Komponente namens B<dbounce> implementiert eine ähnliche Funktionalität unter Verwendung der herkömmlichen Parameter count= und names=.  Die Verzögerungseinstellungen werden durch einen Verzögerungspin für jede Instanz implementiert, anstatt Filtergruppen zu verwenden.

note: type: Plain text
en: The debounce filter works by incrementing a counter whenever the input is true, and decrementing the counter when it is false.  If the counter decrements to zero, the output is set false and the counter ignores further decrements.  If the counter increments up to a threshold, the output is set true and the counter ignores further increments.  If the counter is between zero and the threshold, the output retains its previous state.  The threshold determines the amount of filtering: a threshold of 1 does no filtering at all, and a threshold of N requires a signal to be present for N samples before the output changes state.
de: Der Entprellungsfilter erhöht einen Zähler, wenn der Eingang wahr ist, und verringert den Zähler, wenn er falsch ist.  Dekrementiert der Zähler auf Null, wird der Ausgang auf false gesetzt und der Zähler ignoriert weitere Dekremente.  Erhöht sich der Zähler bis zu einem Schwellenwert, wird der Ausgang auf wahr gesetzt und der Zähler ignoriert weitere Erhöhungen.  Liegt der Zähler zwischen Null und dem Schwellenwert, behält der Ausgang seinen vorherigen Zustand bei.  Der Schwellenwert bestimmt den Umfang der Filterung: Bei einem Schwellenwert von 1 wird überhaupt nicht gefiltert, und bei einem Schwellenwert von N muss ein Signal für N Abtastungen vorliegen, bevor der Ausgang seinen Zustand ändert.

note: type: Plain text
en: Sample all the input pins in group G and update the output pins.
de: Alle Eingangspins in Gruppe G abtasten und die Ausgangspins aktualisieren.

note: type: Plain text
en: The F'th input pin in group G.
de: Der F-te Eingangspin in Gruppe G.

note: type: Plain text
en: The F'th output pin in group G.  Reflects the last "stable" input seen on the corresponding input pin.
de: Der fünfte Ausgangspin der Gruppe G.  Spiegelt den letzten "stabilen" Eingang an dem entsprechenden Eingangsstift wider.

note: type: Plain text
en: Sets the amount of filtering for all pins in group G.
de: Legt den Grad der Filterung für alle Pins in Gruppe G fest.

note: type: Plain text
en: demux - Select one of several output pins by integer and/or or individual bits.
de: demux - Auswahl eines von mehreren Ausgangspins durch Ganzzahl und/oder einzelne Bits.

note: type: Plain text
en: Binary-number bit selectors
de: Binärzahlige Bitselektoren

note: type: Plain text
en: Integer selection input
de: Ganzzahlige Auswahleingabe

note: type: Plain text
en: The set of output bits
de: Der Satz von Ausgangsbits

note: type: TP
en: B<demux.>I<N>B<.bargraph> bit rw (default: I<0>)
de: B<demux.>I<N>B<.bargraph> bit rw (Standard: I<0>)

note: type: Plain text
en: differential - kinematics for a differential transmission
de: Differential - Kinematik für ein Differentialgetriebe

note: type: Plain text
en: position command for pitch (in degrees)
de: Positionsbefehl für Steigung (engl. pitch, in Grad)

note: type: Plain text
en: position feedback for pitch (in degrees)
de: Positionsfeedback für Pitch (in Grad)

note: type: Plain text
en: position feedback from motor0
de: Positionsrückmeldung von Motor0

note: type: Plain text
en: position feedback from motor1
de: Positionsrückmeldung von Motor1

note: type: Plain text
en: edge - Edge detector
de: edge - Kantendetektor

note: type: Plain text
en: Position in scaled units (see B<position-scale>)
de: Position in skalierten Einheiten (siehe B<Positionsskala>)

note: type: Plain text
en: Position in scaled units, interpolated between encoder counts.  Only valid when velocity is approximately constant and above B<min-speed-estimate>.  Do not use for position control.
de: Position in skalierten Einheiten, interpoliert zwischen Encoderzählungen.  Nur gültig, wenn die Geschwindigkeit annähernd konstant ist und über B<min-speed-estimate> liegt.  Nicht für die Lageregelung verwenden.

note: type: Plain text
en: Scale factor, in counts per length unit.  For example, if B<position-scale> is 500, then 1000 counts of the encoder will be reported as a position of 2.0 units.
de: Skalierungsfaktor, in Zählungen pro Längeneinheit.  Wenn z. B. B<Positionsskala> 500 ist, werden 1000 Zählungen des Encoders als eine Position von 2,0 Einheiten gemeldet.

note: type: Plain text
en: The number of teeth missing from the index gap. For example a 60 tooth gear with two teeth shortened to form an index so that there are 58 pulses per revolution would use a position-scale of 60 and a missing-teeth of 2.
de: Die Anzahl der Zähne, die in der Schaltlücke fehlen. Bei einem Zahnrad mit 60 Zähnen, bei dem zwei Zähne gekürzt wurden, um eine Schaltlücke zu bilden, so dass 58 Impulse pro Umdrehung entstehen, wird beispielsweise eine Positionsskala von 60 und eine Fehlzahnzahl von 2 verwendet.

note: type: Plain text
en: The raw count, as determined by B<update-counters>.  This value is updated more frequently than B<counts> and B<position>.  It is also unaffected by B<reset> or the index pulse.
de: Der Rohwert, wie er von B<update-counters> ermittelt wurde.  Dieser Wert wird häufiger aktualisiert als B<counts> und B<position>.  Er wird auch nicht von B<reset> oder dem Indeximpuls beeinflusst.

note: type: Plain text
en: When true, B<counts> and B<position> are reset to zero immediately.
de: Wenn wahr, werden B<counts> und B<position> sofort auf Null zurückgesetzt.

note: type: Plain text
en: Velocity in scaled units per second.  B<encoder> uses an algorithm that greatly reduces quantization noise as compared to simply differentiating the B<position> output.  When the magnitude of the true velocity is below min-speed-estimate, the velocity output is 0.
de: Geschwindigkeit in skalierten Einheiten pro Sekunde.  B<encoder> verwendet einen Algorithmus, der das Quantisierungsrauschen im Vergleich zu einer einfachen Differenzierung des B<position>-Ausgangs stark reduziert.  Wenn der Betrag der tatsächlichen Geschwindigkeit unter der geschätzten Mindestgeschwindigkeit liegt, ist die Geschwindigkeitsausgabe 0.

note: type: Plain text
en: Velocity in scaled units per minute. Simply B<encoder.>I<N>B<.velocity> scaled by a factor of 60 for convenience.
de: Geschwindigkeit in skalierten Einheiten pro Minute. Einfach B<encoder.>I<N>B<.velocity>, der Einfachheit halber skaliert mit einem Faktor von 60.

note: type: Plain text
en: Enables times-4 mode.  When true (the default), the counter counts each edge of the quadrature waveform (four counts per full cycle).  When false, it only counts once per full cycle.  In B<counter-mode>, this parameter is ignored.
de: Aktiviert den Times-4-Modus.  Bei true (Standardeinstellung) zählt der Zähler jede Flanke der Quadraturwellenform (vier Zählungen pro vollem Zyklus).  Wenn false, zählt er nur einmal pro vollem Zyklus.  Im B<Zählermodus> wird dieser Parameter ignoriert.

note: type: TP
en: B<encoder.>I<N>B<.latch-falling> bit in (default: B<TRUE>)
de: B<encoder.>I<N>B<.latch-falling> bit in (Standard: B<TRUE>)

note: type: TP
en: B<encoder.>I<N>B<.latch-rising> bit in (default: B<TRUE>)
de: B<encoder.>I<N>B<.latch-rising> bit in (Standard: B<TRUE>)

note: type: Plain text
en: Update B<counts-latched> and B<position-latched> on the rising and/or falling edges of B<latch-input> as indicated by B<latch-rising> and B<latch-falling>.
de: Aktualisieren Sie B<Zähler-verriegelt> und B<Position-verriegelt> bei der steigenden und/oder fallenden Flanke von B<Verriegelungseingang>, wie durch B<Verriegelung-steigend> und B<Verriegelung-fallend> angezeigt.

note: type: Plain text
en: Enables counter mode.  When true, the counter counts each rising edge of the phase-A input, ignoring the value on phase-B.  This is useful for counting the output of a single channel (non-quadrature) sensor.  When false (the default), it counts in quadrature mode.  B<encoder.>I<N>B<.capture-position.tmax> s32 rw Maximum number of CPU cycles it took to execute this function.
de: Aktiviert den Zählermodus.  Bei "true" zählt der Zähler jede steigende Flanke des Phase-A-Eingangs und ignoriert den Wert an Phase-B.  Dies ist nützlich für die Zählung des Ausgangs eines einkanaligen (nicht quadratischen) Sensors.  Bei false (Voreinstellung) zählt er im Quadraturmodus.  B<encoder.>I<N>B<.capture-position.tmax> s32 rw Maximale Anzahl der CPU-Zyklen, die zur Ausführung dieser Funktion benötigt wurden.

note: type: Plain text
en: The encoder component has no HAL Parameters.
de: Die Encoder-Komponente hat keine HAL-Parameter.

note: type: Plain text
en: encoder_ratio - an electronic gear to synchronize two axes
de: encoder_ratio - ein elektronisches Getriebe zur Synchronisierung zweier Achsen

note: type: Plain text
en: B<encoder_ratio> can be used to synchronize two axes (like an "electronic gear").  It counts encoder pulses from both axes in software, and produces an error value that can be used with a PID loop to make the slave encoder track the master encoder with a specific ratio.
de: B<encoder_ratio> kann verwendet werden, um zwei Achsen zu synchronisieren (wie ein "elektronisches Getriebe").  Es zählt die Encoderimpulse beider Achsen in der Software und erzeugt einen Fehlerwert, der mit einer PID-Schleife verwendet werden kann, damit der Slave-Encoder dem Master-Encoder mit einem bestimmten Verhältnis folgt.

note: type: Plain text
en: This module supports up to eight axis pairs.  The number of pairs is set by the module parameter B<num_chan>.  Alternatively, specify B<names=> and unique names separated by commas.
de: Dieses Modul unterstützt bis zu acht Achsenpaare.  Die Anzahl der Paare wird durch den Modulparameter B<num_chan> festgelegt.  Alternativ können Sie B<Namen=> und eindeutige, durch Kommata getrennte Namen angeben.

note: type: Plain text
en: The B<num_chan=> and B<names=> specifiers are mutually exclusive.  If neither B<num_chan=> nor B<names=> are specified, the default value is one.
de: Die Angaben B<num_chan=> und B<names=> schließen sich gegenseitig aus.  Wenn weder B<num_chan=> noch B<names=> angegeben sind, ist der Standardwert eins.

note: type: Plain text
en: Read all input pins.  Must be called at twice the maximum desired count rate.
de: Alle Eingangsstifte lesen.  Muss mit dem doppelten Wert der maximal gewünschten Zählrate aufgerufen werden.

note: type: TP
en: B<encoder-ratio.update (uses floating-point)>
de: B<encoder-ratio.update (verwendet Gleitkomma)>

note: type: Plain text
en: Updates all output pins.  May be called from a slower thread.
de: Aktualisiert alle Ausgangspins.  Kann von einem langsameren Thread aufgerufen werden.

note: type: Plain text
en: The names for pins and parameters are prefixed as:
      B<encoder-ratio.N.> for N=0,1,...,num-1 when using B<num_chan=num>
      B<nameN.> for nameN=name1,name2,... when using B<names=name1,name2,...>
de: Die Namen für Pins und Parameter werden mit dem Präfix:
      B<encoder-ratio.N.> für N=0,1,...,num-1 bei Verwendung von B<num_chan=num>
      B<nameN.> für nameN=name1,name2,... bei Verwendung von B<names=name1,name2,...>

note: type: Plain text
en: The B<encoder-ratio.N.> format is shown in the following descriptions.
de: Das Format B<encoder-ratio.N.> wird in den folgenden Beschreibungen gezeigt.

note: type: Plain text
en: The encoder channels of the master and slave axes
de: Die Encoderkanäle der Master- und Slave-Achse

note: type: Plain text
en: When the enable pin is FALSE, the error pin simply reports the slave axis position, in revolutions.  As such, it would normally be connected to the feedback pin of a PID block for closed loop control of the slave axis.  Normally the command input of the PID block is left unconnected (zero), so the slave axis simply sits still.  However when the enable input goes TRUE, the error pin becomes the slave position minus the scaled master position.  The scale factor is the ratio of master teeth to slave teeth.  As the master moves, error becomes non-zero, and the PID loop will drive the slave axis to track the master.
de: Wenn der Enable-Pin FALSE ist, meldet der Error-Pin einfach die Position der Slave-Achse in Umdrehungen.  Als solcher wird er normalerweise mit dem Rückführungspin eines PID-Blocks für die Regelung der Slave-Achse verbunden.  Normalerweise bleibt der Befehlseingang des PID-Blocks unbeschaltet (Null), so dass die Slave-Achse einfach stillsteht.  Wenn jedoch der Freigabeeingang auf TRUE geht, wird der Fehlerpin zur Slave-Position minus der skalierten Master-Position.  Der Skalierungsfaktor ist das Verhältnis der Master-Zähne zu den Slave-Zähnen.  Wenn sich der Master bewegt, wird der Fehler ungleich Null, und die PID-Schleife treibt die Slave-Achse an, um dem Master zu folgen.

note: type: Plain text
en: The error in the position of the slave (in revolutions)
de: Der Fehler in der Position des Slaves (in Umdrehungen)

note: type: Plain text
en: The number of pulses per revolution of the master and slave axes
de: Die Anzahl der Impulse pro Umdrehung der Master- und Slave-Achsen

note: type: Plain text
en: The number of "teeth" on the master and slave gears.
de: Die Anzahl der "Zähne" auf dem Geber- und dem Nehmerzahnrad.

note: type: Plain text
en: eoffset_per_angle - Compute External Offset Per Angle
de: eoffset_per_angle - Externen Versatz pro Winkel berechnen

note: type: Plain text
en: An offset is computed (from one of several functions) based on an input angle in degrees.  The angle could be a rotary coordinate value or a spindle angle.
de: Ein Offset wird (mit einer von mehreren Funktionen) auf der Grundlage eines Eingangswinkels in Grad berechnet.  Der Winkel kann ein Drehkoordinatenwert oder ein Spindelwinkel sein.

note: type: Plain text
en: The computed offset is represented as an s32 B<kcounts> output pin that is a compatible input to external offset pins like B<axis.L.eoffset-counts> where B<L> is the coordinate letter.  Scaling of the s32 B<kcounts> is controlled by the input (B<k>) -- its reciprocal value is presented on an output pin (B<kreciprocal>) for connection to B<axis.L.eoffset-scale>.  The default value for B<k> should be suitable for most uses.
de: Der berechnete Offset wird als s32-Ausgangspin B<kcounts> dargestellt, der ein kompatibler Eingang für externe Offset-Pins wie B<axis.L.eoffset-counts> ist, wobei B<L> der Koordinatenbuchstabe ist.  Die Skalierung des s32 B<kcounts> wird durch den Eingang (B<k>) gesteuert - sein reziproker Wert wird auf einem Ausgangspin (B<kreciprocal>) für den Anschluss an B<axis.L.eoffset-scale> dargestellt.  Der Standardwert für B<k> sollte für die meisten Anwendungen geeignet sein.

note: type: Plain text
en: The built-in functions use pins B<fmult> and B<rfraction> to control the output frequency (or number of polygon sides)  and amplitude respectively.  The B<rfraction> pin controls the offset amplitude as a fraction of the B<radius-ref> pin.
de: Die eingebauten Funktionen verwenden die Pins B<fmult> und B<rfraction> zur Steuerung der Ausgangsfrequenz (oder Anzahl der Polygonseiten) bzw. der Amplitude.  Der Pin B<rfraction> steuert die Offset-Amplitude als einen Bruchteil des Pins B<radius-ref>.

note: type: Plain text
en: One of the four built-in functions is specified by the B<fnum> pin:
      B<0>: f0 inside  polygon  (requires B<fmult> == nsides E<gt>= 3)
      B<1>: f1 outside polygon  (requires B<fmult> == nsides E<gt>= 3)
      B<2>: f2 sinusoid
      B<3>: f3 square wave
de: Eine der vier eingebauten Funktionen wird durch den Stift B<fnum> angegeben:
      B<0>: f0 innerhalb des Polygons (erfordert B<fmult> == nsides E<gt>= 3)
      B<1>: f1 außerhalb des Polygons (erfordert B<fmult> == nsides E<gt>= 3)
      B<2>: f2 Sinuskurve
      B<3>: f3 Rechteckwelle

note: type: Plain text
en: Unsupported B<fnum> values default to use function f0.
de: Nicht unterstützte B<fnum>-Werte verwenden standardmäßig die Funktion f0.

note: type: TP
en: B<eoffset-per-angle.>I<N> (requires a floating-point thread)
de: B<eoffset-per-angle.>I<N> (erfordert einen Fließkomma-Thread)

note: type: Plain text
en: From: motion.eoffset-active
de: Von: motion.eoffset-active

note: type: TP
en: B<eoffset-per-angle.>I<N>B<.is-on> bit in (default: I<0>)
de: B<eoffset-per-angle.>I<N>B<.is-on> bit in (Voreinstellung: I<0>)

note: type: Plain text
en: From: halui.machine.is-on
de: Von: halui.machine.is-on

note: type: TP
en: B<eoffset-per-angle.>I<N>B<.enable-in> bit in (default: I<0>)
de: B<eoffset-per-angle.>I<N>B<.enable-in> bit in (Voreinstellung: I<0>)

note: type: Plain text
en: Enable Input
de: Eingang aktivieren

note: type: TP
en: B<eoffset-per-angle.>I<N>B<.radius-ref> float in (default: I<1>)
de: B<eoffset-per-angle.>I<N>B<.radius-ref> float in (Voreinstellung: I<1>)

note: type: Plain text
en: B<In more complex systems, it may be more appropriate to use classicladder to manage the software portion of the estop chain.>
de: B<In komplexeren Systemen kann es sinnvoller sein, die ClassicLadder zur Verwaltung des Softwareanteils der Notaus-Kette zu verwenden.>

note: type: Plain text
en: gentrivkins - B<Superseded> by the general purpose B<trivkins> kinematics module.
de: gentrivkins - B<Ersetzt> durch das Allzweck-Kinematikmodul B<trivkins>.

note: type: Plain text
en: gladevcp - displays Virtual control Panels built with GTK / GLADE
de: gladevcp - zeigt mit GTK / GLADE erstellte virtuelle Kontrollpanels an

note: type: Plain text
en: gladevcp parses a glade file and displays the widgets in a window.  Then calls gladevcp_makepins which again parses the gladefile looking for specific HAL widgets then makes HAL pins and sets up updating for them.  The HAL component name defaults to the basename of the glade file.  The -x option directs gladevcp to reparent itself under this X window id instead of creating its own toplevel window.  The -H option passes an input file for halcmd to be run after the gladevcp component is initialized. This is used in Axis when running gladevcp under a tab with the EMBED_TAB_NAME/EMBED_TAB_COMMAND ini file feature.
de: GladeVCP analysiert eine Glade-Datei und zeigt die Widgets in einem Fenster an.  Dann ruft gladevcp_makepins auf, die wiederum die Gladefile auf der Suche nach bestimmten HAL-Widgets analysiert, dann HAL-Pins erstellt und eine Aktualisierung für sie einrichtet.  Der Name der HAL-Komponente wird standardmäßig auf den Basisnamen der Lichtungsdatei festgelegt.  Die Option -x weist GladeVCP an, sich selbst unter dieser X-Fenster-ID neu zu übergeordnet, anstatt ein eigenes Top-Level-Fenster zu erstellen.  Die Option -H übergibt eine Eingabedatei für halcmd, die ausgeführt wird, nachdem die GladeVCP-Komponente initialisiert wurde. Dies wird in Axis verwendet, wenn GladeVCP unter einer Registerkarte mit der Funktion EMBED_TAB_NAME/EMBED_TAB_COMMAND INI-Datei ausgeführt wird.

note: type: Plain text
en: GladeVCP supports GtkBuilder or libglade files though some widgets are not fully supported in GtkBuilder yet.
de: GladeVCP unterstützt GtkBuilder oder libglade-Dateien, obwohl einige Widgets in GtkBuilder noch nicht vollständig unterstützt werden.

note: type: Plain text
en: For now system links need to be added in the glade library folders to point to our new widgets and catalog files. look in lib/python/gladevcp/READ_ME for details
de: Für den Moment müssen Systemlinks in den Glade-Bibliotheksordnern hinzugefügt werden, um auf unsere neuen Widgets und Katalogdateien zu verweisen. Schauen Sie in lib/python/gladevcp/READ_ME für Details.

note: type: Plain text
en: gray2bin - convert a gray-code input to binary
de: gray2bin - Konvertierung einer Gray-Code-Eingabe in das Binärformat

note: type: Plain text
en: Converts a gray-coded number into the corresponding binary value
de: Wandelt eine Gray-codierte Zahl in den entsprechenden Binärwert um

note: type: Plain text
en: gray code in
de: Gray code in

note: type: Plain text
en: hal_bb_gpio - Driver for beaglebone GPIO pins
de: hal_bb_gpio – Treiber für Beaglebone-GPIO-Pins

note: type: SH
en: USER LEDS
de: BENUTZER-LEDS

note: type: Plain text
en: The associated LED is lit if B<userled>I<N> xor B<userled>I<N>-invertB< is TRUE.>
de: Die zugehörige LED leuchtet, wenn B<userled>I<N> xoder B<userled>I<N>-invertB< TRUE ist.>

note: type: SH
en: INPUT PINS
de: EINGANGS-PINS

note: type: Plain text
en: The I<input_pins> loadrt parameter controls which physical I/O pins are available to HAL as input pins.  The numbering is "800+N" for pin N on connector P8, and "900+N" for pin N on connector P9.  For example, "803" means connector P8 pin 3, which is also described in BeagleBone documentation as "gpmc_ad6".
de: Der Parameter I<input_pins> für loadrt steuert, welche physikalischen E/A-Pins für HAL als Eingangspins verfügbar sind.  Die Nummerierung ist "800+N" für Pin N am Anschluss P8, und "900+N" für Pin N am Anschluss P9.  Zum Beispiel bedeutet "803" Pin 3 des Anschlusses P8, der in der BeagleBone-Dokumentation auch als "gpmc_ad6" bezeichnet wird.

note: type: Plain text
en: Specifying pins that are otherwise in use by the system may have undesirable side effects, such as crashing rtapi_app or the whole system.
de: Die Angabe von Pins, die sonst vom System verwendet werden, kann unerwünschte Nebeneffekte haben, wie z.B. den Absturz von rtapi_app oder des gesamten Systems.

note: type: Plain text
en: B<in->I<NN> is a snapshot of the value of the corresponding physical pin XOR the value of the corresponding B<in->I<NN>B<-invert> pin.
de: B<in->I<NN> ist eine Momentaufnahme des Wertes des entsprechenden physikalischen Pins XOR des Wertes des entsprechenden B<in->I<NN>B<-invert>-Pins.

note: type: SH
en: OUTPUT PINS
de: AUSGANGS-PINS

note: type: Plain text
en: The I<input_pins> loadrt parameter controls which physical I/O pins are available to HAL as input pins.  The numbering is "800+N" for pin N on connector P8, and "900+N" for pin N on connector P9.
de: Der Parameter I<input_pins> für loadrt steuert, welche physikalischen E/A-Pins für HAL als Eingangspins verfügbar sind.  Die Nummerierung ist "800+N" für Pin N am Anschluss P8 und "900+N" für Pin N am Anschluss P9.

note: type: Plain text
en: The corresponding physical pin is driven with the result of B<in->I<NN> xor B<in->I<NN>B<-invert>.
de: Der entsprechende physikalische Pin wird mit dem Ergebnis von B<in->I<NN> xor B<in->I<NN>B<-invert> angesteuert.

note: type: Plain text
en: Update HAL pins from physical pins.
de: HAL-Pins aus physischen Pins aktualisieren.

note: type: Plain text
en: Update physical pins from HAL pins.
de: Aktualisieren Sie physische Pins von HAL-Pins.

note: type: Plain text
en: histobins - histogram bins utility for scripts/hal-histogram
de: histobins - Dienstprogramm für Histogramm-Bins für Skripte/hal-histogram

note: type: Plain text
en: Usage:
      Read availablebins pin for the number of bins available.
      Set the minvalue, binsize, and nbins pins.
        Ensure nbins E<lt>= availablebins
        For nbins = N, the bins are numbered: 0 ... N-1 
      Iterate:
        Set index pin to a bin number: 0 E<lt>= index E<lt> nbins.
        Read check pin and verify that check pin == index pin.
        Read outputs: binvalue, pextra, nextra pins.
             (binvalue is count for the indexed bin)
             (pextra   is count for all inputs E<gt> maxvalue)
             (nextra   is count for all bins   E<lt> minvalue)
de: Verwendung:
      Lesen des availablebins-Pins für die Anzahl der verfügbaren Bins.
      Setzen Sie die Pins minvalue, binsize und nbins.
        Sicherstellen, dass nbins E<lt>= availablebins
        Für nbins = N sind die Bins nummeriert: 0 ... N-1 
      Iterieren:
        Index-Pin auf eine Bin-Nummer setzen: 0 E<lt>= index E<lt> nbins.
        Check-Pin lesen und überprüfen, ob Check-Pin == Index-Pin.
        Ausgänge lesen: binvalue, pextra, nextra Pins.
             (binvalue ist die Anzahl für den indizierten Bin)
             (pextra ist der Zähler für alle Eingänge E<gt> maxvalue)
             (nextra ist der Zähler für alle Behälter E<lt> minvalue)

note: type: Plain text
en:  If index is out of range (index E<lt> 0 or index E<gt> maxbinnumber)
     then binvalue == -1.
     The input-error pin is set when input rules are violated
     and updates cease.
     The reset pin may be used to restart.
     The input used is selected based on pintype:
       pintype  inputpin
       -------  -----------
             0  input
             1  input-s32
             2  input-u32
             3  input-bit
     Additional output statistics pins:
       input-min
       input-max
       nsamples
       variance
       mean
     The method input pin selects an alternate variance calculation.
de:  Liegt index außerhalb des Bereichs (index E<lt> 0 oder index E<gt> maxbinnumber)
     dann ist binvalue == -1.
     Der Eingabefehler-Pin wird gesetzt, wenn die Eingaberegeln verletzt werden
     und die Aktualisierung wird abgebrochen.
     Der Reset-Pin kann zum Neustart verwendet werden.
     Der verwendete Eingang wird anhand des Pintyps ausgewählt:
       pintype inputpin
       ------- -----------
             0 Eingang
             1 Eingang-s32
             2 eingang-u32
             3 Eingangs-Bit
     Zusätzliche Ausgangsstatistikstifte:
       input-min
       eingabe-max
       nSamples
       Varianz
       Mittelwert
     Mit dem Methoden-Eingangspin wird eine alternative Varianzberechnung ausgewählt.

note: type: Plain text
en: Maintainers note: hardcoded for MAXBINNUMBER==200
de: Anmerkung des Maintainers: Hardcodiert für MAXBINNUMBER==200

note: type: TP
en: B<histobins.>I<N> (requires a floating-point thread)
de: B<histobins.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: TP
en: B<histobins.>I<N>B<.nbins> u32 in (default: I<20>)
de: B<histobins.>I<N>B<.nbins> u32 in (Standard: I<20>)

note: type: TP
en: B<histobins.>I<N>B<.binsize> float in (default: I<1>)
de: B<histobins.>I<N>B<.binsize> float in (Standard: I<1>)

note: type: TP
en: B<histobins.>I<N>B<.minvalue> float in (default: I<0>)
de: B<histobins.>I<N>B<.minvalue> float in (Standard: I<0>)

note: type: TP
en: B<histobins.>I<N>B<.reset> bit in
de: B<histobins.>I<N>B<.reset> Bit in

note: type: TP
en: B<histobins.>I<N>B<.nextra> float out
de: B<histobins.>I<N>B<.nexttra> float out

note: type: TP
en: B<histobins.>I<N>B<.availablebins> s32 out (default: I<200>)
de: B<histobins.>I<N>B<.availablebins> s32 out (Standard: I<200>)

note: type: Plain text
en: hm2_7i43 - LinuxCNC HAL driver for the Mesa Electronics 7i43 EPP Anything IO board with HostMot2 firmware.
de: hm2_7i43 - LinuxCNC HAL-Treiber für die Mesa Electronics 7i43 EPP Anything IO-Karte mit HostMot2-Firmware.

note: type: TP
en: B<ioaddr> [default: 0 (parport0)]
de: B<ioaddr> [Voreinstellung: 0 (parport0)]

note: type: Plain text
en: The base address of the parallel port.
de: Die Basisadresse der parallelen Schnittstelle.

note: type: Plain text
en: The number of ioaddr indexes/addresses given is used by the driver to determine how many boards to search for.
de: Die Anzahl der angegebenen ioaddr-Indizes/Adressen wird vom Treiber verwendet, um die Anzahl der zu suchenden Karten zu bestimmen.

note: type: TP
en: B<ioaddr_hi> [default: 0]
de: B<ioaddr_hi> [Voreinstellung: 0]

note: type: Plain text
en: The secondary address of the parallel port, used to set EPP mode.  0 means to use ioaddr + 0x400.
de: Die sekundäre Adresse der parallelen Schnittstelle, die zur Einstellung des EPP-Modus verwendet wird.  0 bedeutet die Verwendung von ioaddr + 0x400.

note: type: TP
en: B<epp_wide> [default: 1]
de: B<epp_wide> [Standard: 1]

note: type: Plain text
en: Set to zero to disable the "wide EPP mode".  "Wide" mode allows a 16- and 32-bit EPP transfers, which can reduce the time spent in the read and write functions.  However, this may not work on all EPP parallel ports.
de: Setzen Sie diesen Wert auf Null, um den "Wide EPP Mode" zu deaktivieren. Der "Wide"-Modus ermöglicht 16- und 32-Bit-EPP-Übertragungen, was die Zeit für die Lese- und Schreibfunktionen verkürzen kann.  Dies funktioniert jedoch möglicherweise nicht bei allen parallelen EPP-Anschlüssen.

note: type: TP
en: B<config> [default: ""]
de: B<config> [Standard: ""]

note: type: Plain text
en: HostMot2 config strings, described in the hostmot2(9) manpage.
de: HostMot2-Konfigurationsstrings, beschrieben in der hostmot2(9) Manpage.

note: type: TP
en: B<debug_epp> [default: 0]
de: B<debug_epp> [Voreinstellung: 0]

note: type: Plain text
en: Developer/debug use only! Enable debug logging of most EPP transfers.
de: Nur für Entwickler/Debugger! Aktivieren Sie die Debug-Protokollierung der meisten EPP-Übertragungen.

note: type: Plain text
en: hm2_7i43 is a device driver that interfaces the Mesa 7i43 board with the HostMot2 firmware to the LinuxCNC HAL.  Both the 200K and the 400K FPGAs are supported.
de: hm2_7i43 ist ein Gerätetreiber, der das Mesa 7i43-Board mit der HostMot2-Firmware mit der LinuxCNC-HAL verbindet.  Es werden sowohl die 200K als auch die 400K FPGAs unterstützt.

note: type: Plain text
en: The driver talks with the 7i43 over the parallel port, not over USB.  USB can be used to power the 7i43, but not to talk to it.  USB communication with the 7i43 will not be supported any time soon, since USB has poor real-time qualities.
de: Der Treiber kommuniziert mit dem 7i43 über den Parallelport, nicht über USB.  USB kann zur Stromversorgung des 7i43 verwendet werden, aber nicht zur Kommunikation mit ihm.  Die USB-Kommunikation mit dem 7i43 wird in absehbarer Zeit nicht unterstützt werden, da USB schlechte Echtzeiteigenschaften hat.

note: type: Plain text
en: The driver programs the board's FPGA with firmware when it registers the board with the hostmot2 driver.  The firmware to load is specified in the B<config> modparam, as described in the hostmot2(9) manpage, in the I<config modparam> section.
de: Der Treiber programmiert das FPGA der Karte mit Firmware, wenn er die Karte beim hostmot2-Treiber registriert.  Die zu ladende Firmware wird im B<config> modparam angegeben, wie in der hostmot2(9) manpage im Abschnitt I<config modparam> beschrieben.

note: type: SH
en: Jumper settings
de: Jumper-Einstellungen

note: type: Plain text
en: To send the FPGA configuration from the PC, the board must be configured to get its firmware from the EPP port.  To do this, jumpers W4 and W5 must both be down, ie toward the USB connector.
de: Um die FPGA-Konfiguration vom PC zu senden, muss die Karte so konfiguriert werden, dass sie ihre Firmware vom EPP-Port bezieht.  Dazu müssen die Jumper W4 und W5 beide unten sein, d.h. in Richtung USB-Anschluss.

note: type: Plain text
en: The board must be configured to power on whether or not the USB interface is active.  This is done by setting jumper W7 up, ie away from the edge of the board.
de: Die Karte muss so konfiguriert werden, dass sie sich einschaltet, unabhängig davon, ob die USB-Schnittstelle aktiv ist oder nicht.  Dazu wird der Jumper W7 nach oben, d.h. von der Kante der Platine weg, gesetzt.

note: type: Plain text
en: The 7i43 communicates with the LinuxCNC computer over EPP, the Enhanced Parallel Port.  This provides about 1 MBps of throughput, and the communication latency is very predictable and reasonably low.
de: Die 7i43 kommuniziert mit dem LinuxCNC Computer über EPP, die Enhanced Parallel Port.  Dies bietet etwa 1 MBps Durchsatz, und die Kommunikationslatenz ist sehr vorhersehbar und relativ niedrig.

note: type: Plain text
en: The parallel port must support EPP 1.7 or EPP 1.9.  EPP 1.9 is preferred, but EPP 1.7 will work too.  The EPP mode of the parallel port is sometimes a setting in the BIOS.
de: Die parallele Schnittstelle muss EPP 1.7 oder EPP 1.9 unterstützen.  EPP 1.9 wird bevorzugt, aber EPP 1.7 funktioniert auch.  Der EPP-Modus des parallelen Anschlusses ist manchmal eine Einstellung im BIOS.

note: type: Plain text
en: Note that the popular "NetMOS" aka "MosChip 9805" PCI parport cards B<do not work>.  They do not meet the EPP spec, and cannot be reliably used with the 7i43.  You have to find another card, sorry.
de: Beachten Sie, dass die beliebten "NetMOS" alias "MosChip 9805" PCI-Parportkarten B<nicht funktionieren>.  Sie entsprechen nicht der EPP-Spezifikation und können nicht zuverlässig mit dem 7i43 verwendet werden.  Sie müssen sich eine andere Karte suchen, leider.

note: type: Plain text
en: EPP is very reliable under normal circumstances, but bad cabling or excessively long cabling runs may cause communication timeouts.  The driver exports a parameter named hm2_7i43.E<lt>BoardNumE<gt>.io_error to inform HAL of this condition.  When the driver detects an EPP timeout, it sets io_error to True and stops communicating with the 7i43 board.  Setting io_error back to False makes the driver start trying to communicate with the 7i43 again.
de: EPP ist unter normalen Umständen sehr zuverlässig, aber schlechte Verkabelung oder übermäßig lange Kabelwege können zu Timeouts bei der Kommunikation führen.  Der Treiber exportiert einen Parameter namens hm2_7i43.E<lt>BoardNumE<gt>.io_error, um HAL über diesen Zustand zu informieren.  Wenn der Treiber eine EPP-Zeitüberschreitung feststellt, setzt er io_error auf True und beendet die Kommunikation mit der 7i43-Karte.  Wird io_error wieder auf False gesetzt, versucht der Treiber erneut, mit der 7i43 zu kommunizieren.

note: type: Plain text
en: Access to the EPP bus is not threadsafe: only one realtime thread may access the EPP bus.
de: Der Zugriff auf den EPP-Bus ist nicht thread-sicher: nur ein Echtzeit-Thread darf auf den EPP-Bus zugreifen.

note: type: Plain text
en: hm2_7i90 - LinuxCNC HAL driver for the Mesa Electronics 7i90 EPP Anything IO board with HostMot2 firmware.
de: hm2_7i90 - LinuxCNC HAL Treiber für das Mesa Electronics 7i90 EPP Anything IO Board mit HostMot2 Firmware.

note: type: Plain text
en: The number of ioaddr indexes/addresses given is used by the driver to determine how many boards to search for. Previously the number of config strings was used, but a blank config string is perfectly acceptable for 7i90.
de: Die Anzahl der angegebenen ioaddr-Indizes/Adressen wird vom Treiber verwendet, um die Anzahl der zu suchenden Karten zu bestimmen. Früher wurde die Anzahl der Konfigurationsstrings verwendet, aber ein leerer Konfigurationsstring ist für 7i90 vollkommen akzeptabel.

note: type: Plain text
en: hm2_7i90 is a device driver that interfaces the Mesa 7i90 board with the HostMot2 firmware to the LinuxCNC HAL.
de: hm2_7i90 ist ein Gerätetreiber, der die Mesa 7i90-Karte mit der HostMot2-Firmware mit der LinuxCNC-HAL verbindet.

note: type: Plain text
en: The 7i90 firmware is stored on the 7i90 itself, it is not programmed by the driver at load time.  The 7i90 firmware can be changed using the mesaflash program.
de: Die 7i90-Firmware ist auf dem 7i90 selbst gespeichert, sie wird nicht vom Treiber zum Zeitpunkt des Ladens programmiert.  Die 7i90-Firmware kann mit dem Mesaflash-Programm geändert werden.

note: type: Plain text
en: The driver talks with the 7i90 over the parallel port, via EPP.
de: Der Treiber kommuniziert mit dem 7i90 über die parallele Schnittstelle, via EPP.

note: type: Plain text
en: The 7i90 communicates with the LinuxCNC computer over EPP, the Enhanced Parallel Port.  This provides about 1 MBps of throughput, and the communication latency is very predictable and reasonably low.
de: Die 7i90 kommuniziert mit dem LinuxCNC Computer über EPP, die Enhanced Parallel Port.  Dies bietet etwa 1 MBps Durchsatz, und die Kommunikationslatenz ist sehr vorhersehbar und relativ niedrig.

note: type: Plain text
en: Note that the popular "NetMOS" aka "MosChip 9805" PCI parport cards B<do not work>.  They do not meet the EPP spec, and cannot be reliably used with the 7i90.  You have to find another card, sorry.
de: Beachten Sie, dass die beliebten "NetMOS" alias "MosChip 9805" PCI-Parportkarten B<nicht funktionieren>.  Sie entsprechen nicht der EPP-Spezifikation und können nicht zuverlässig mit dem 7i90 verwendet werden.  Sie müssen sich leider eine andere Karte suchen.

note: type: Plain text
en: EPP is very reliable under normal circumstances, but bad cabling or excessively long cabling runs may cause communication timeouts.  The driver exports a parameter named hm2_7i90.E<lt>BoardNumE<gt>.io_error to inform HAL of this condition.  When the driver detects an EPP timeout, it sets io_error to True and stops communicating with the 7i90 board.  Setting io_error back to False makes the driver start trying to communicate with the 7i90 again.
de: EPP ist unter normalen Umständen sehr zuverlässig, aber schlechte Verkabelung oder übermäßig lange Kabelwege können zu Timeouts bei der Kommunikation führen.  Der Treiber exportiert einen Parameter namens hm2_7i90.E<lt>BoardNumE<gt>.io_error, um HAL über diesen Zustand zu informieren.  Wenn der Treiber eine EPP-Zeitüberschreitung feststellt, setzt er io_error auf True und beendet die Kommunikation mit der 7i90-Karte.  Wird io_error wieder auf False gesetzt, versucht der Treiber erneut, mit der 7i90 zu kommunizieren.

note: type: Plain text
en: hm2_eth - LinuxCNC HAL driver for the Mesa Electronics Ethernet Anything IO boards, with HostMot2 firmware.
de: hm2_eth - LinuxCNC HAL-Treiber für die Mesa Electronics Ethernet Anything IO Boards, mit HostMot2-Firmware.

note: type: TP
en: B<board_ip> [default: ""]
de: B<board_ip> [Standard: ""]

note: type: Plain text
en: The IP address of the board(s), separated by commas.  As shipped, the board address is 192.168.1.121.
de: Die IP-Adresse der Karte(n), getrennt durch Kommata.  Im Auslieferungszustand lautet die Adresse der Karte 192.168.1.121.

note: type: Plain text
en: hm2_eth is a device driver that interfaces Mesa's ethernet based Anything I/O boards (with the HostMot2 firmware) to the LinuxCNC HAL.
de: hm2_eth ist ein Gerätetreiber, der die Ethernet-basierten Anything I/O-Karten von Mesa (mit der HostMot2-Firmware) mit der LinuxCNC-HAL verbindet.

note: type: Plain text
en: The supported boards are: 7I76E, 7I80DB, 7I80HD, 7I92, 7I93, 7I94, 7I95, 7I96, 7I96S, 7I97, 7I98.
de: Die unterstützten Karten sind: 7I76E, 7I80DB, 7I80HD, 7I92, 7I93, 7I94, 7I95, 7I96, 7I96S, 7I97, 7I98.

note: type: Plain text
en: hm2_eth is only available when LinuxCNC is configured with "uspace" realtime.
de: hm2_eth ist nur verfügbar, wenn LinuxCNC mit "uspace" Echtzeit konfiguriert ist.

note: type: SH
en: INTERFACE CONFIGURATION
de: SCHNITTSTELLENKONFIGURATION

note: type: Plain text
en: hm2_eth should be used on a dedicated network interface, with only a cable between the PC and the board.  Wireless and USB network interfaces are not suitable.
de: hm2_eth sollte an einer dedizierten Netzwerkschnittstelle verwendet werden, mit nur einem Kabel zwischen dem PC und der Karte.  Drahtlose und USB-Netzwerkschnittstellen sind nicht geeignet.

note: type: Plain text
en: These instructions assume your dedicated network interface is "eth1", 192.168.1/24 is an unused private network, that the hostmot2 board is using the default address of 192.168.1.121, that you are using Debian 7 or similar, and that you do not otherwise use iptables.  If any of these are false, you will need to modify the instructions accordingly.  After following all the instructions, reboot so that the changes take effect.
de: Diese Anleitung geht davon aus, dass Ihre dedizierte Netzwerkschnittstelle "eth1" ist, dass 192.168.1/24 ein unbenutztes privates Netzwerk ist, dass das hostmot2-Board die Standardadresse 192.168.1.121 verwendet, dass Sie Debian 7 oder ein ähnliches Betriebssystem benutzen und dass Sie ansonsten keine iptables verwenden.  Wenn einer dieser Punkte nicht zutrifft, müssen Sie die Anweisungen entsprechend ändern.  Nachdem Sie alle Anweisungen befolgt haben, starten Sie neu, damit die Änderungen wirksam werden.

note: type: Plain text
en: It is particularly important to check that the network 192.168.1/24 is not already the private network used by your internet router, because this is a commonly-used value.  If you use another network, you will also need to reconfigure the hostmot2 card to use an IP address on that network by using the mesaflash(1) utility and change jumper settings.  Typically, you will choose one of the networks in the E<.UR http://en.wikipedia.org/wiki/IPv4#Private_networks> Private IPv4 address space.  E<.UE> One common alternative is PC address 10.10.10.1, hostmot2 address 10.10.10.10.
de: Es ist besonders wichtig zu überprüfen, dass das Netzwerk 192.168.1/24 nicht bereits das von Ihrem Internet-Router verwendete private Netzwerk ist, da dies ein häufig verwendeter Wert ist.  Wenn Sie ein anderes Netzwerk verwenden, müssen Sie auch die hostmot2-Karte neu konfigurieren, um eine IP-Adresse in diesem Netzwerk zu verwenden, indem Sie das Dienstprogramm mesaflash(1) verwenden und die Jumpereinstellungen ändern.  In der Regel wird man eines der Netze aus dem E<.UR http://en.wikipedia.org/wiki/IPv4#Private_networks> Private IPv4-Adressraum wählen.  E<.UE> Eine gängige Alternative ist die PC-Adresse 10.10.10.1, die Hostmot2-Adresse 10.10.10.10.

note: type: Plain text
en: Use of the dedicated ethernet interface while LinuxCNC is running can cause violation of realtime guarantees.  hm2_eth will automatically mitigate most accidental causes of interference.
de: Die Verwendung der dedizierten Ethernet-Schnittstelle, während LinuxCNC läuft, kann zu einer Verletzung der Echtzeit-Garantien führen. hm2_eth wird die meisten zufälligen Ursachen für Störungen automatisch entschärfen.

note: type: SS
en: Configure network with static address
de: Netzwerk mit statischer Adresse konfigurieren

note: type: Plain text
en: Add these lines to the file /etc/network/interfaces to configure eth1 with a static address:
de: Fügen Sie diese Zeilen in die Datei /etc/network/interfaces ein, um eth1 mit einer statischen Adresse zu konfigurieren:

note: type: SH
en: PACKET LOSS
de: PAKETVERLUST

note: type: Plain text
en: While ethernet is fairly resistant to electrical noise, many systems will not have 100% perfect packet reception.  The hm2_eth driver has a limited ability to deal with lost packets.  Packet loss is detected by transmitting an expected read or write packet count with each request, and checking the value with each read response.  When a lost packet is detected, the B<packet-error> pin is asserted in that cycle, the B<packet-error-level> pin is increased, and if it reaches a threshold then a permanent low-level I/O error is signaled.
de: Obwohl Ethernet ziemlich resistent gegen elektrisches Rauschen ist, werden viele Systeme keinen 100% perfekten Paketempfang haben.  Der hm2_eth-Treiber hat eine begrenzte Fähigkeit, mit verlorenen Paketen umzugehen.  Paketverluste werden erkannt, indem bei jeder Anfrage eine erwartete Anzahl von Lese- oder Schreibpaketen übertragen wird und der Wert bei jeder Leseantwort überprüft wird.  Wenn ein verlorenes Paket erkannt wird, dann wird der B<packet-error>-Pin in diesem Zyklus aktiviert, der B<packet-error-level>-Pin wird erhöht, und wenn er einen Schwellenwert erreicht, wird ein permanenter Low-Level-I/O-Fehler signalisiert.

note: type: Plain text
en: However, not all hm2 special functions know how to properly recover from lost packets.  For instance, the encoder special function does not properly manage the index feature when packets are lost.  The author believes that this can lead to rare failures in home-to-index, which can have severe consequences.
de: Allerdings wissen nicht alle hm2-Sonderfunktionen, wie sie sich von verlorenen Paketen erholen können.  Zum Beispiel verwaltet die Encoder-Spezialfunktion die Indexfunktion nicht richtig, wenn Pakete verloren gehen.  Der Autor ist der Meinung, dass dies zu seltenen Fehlern beim Home-to-Index führen kann, die schwerwiegende Folgen haben können.

note: type: Plain text
en: On the other hand, pid-stepper systems will run properly for extended periods of time with packet loss on the order of .01%, as long as following error is increased enough that having stale position feedback does not trigger a following error.  Altering the HAL configuration so that during transient packet loss the pid and motion feedback value is equal to the command value, instead of the stale feedback value, appears to improve tuning.  This can be accomplished with a B<mux2(9)> component for each feedback signal, using B<packet-error> as the mux2 B<sel> input.
de: Andererseits laufen Pid-Stepper-Systeme über längere Zeiträume mit Paketverlusten in der Größenordnung von 0,01 % ordnungsgemäß, solange der Schleppfehler so hoch ist, dass ein veraltetes Positionsfeedback keinen Schleppfehler auslöst.  Eine Änderung der HAL-Konfiguration, so dass während eines vorübergehenden Paketverlusts der Pid- und Bewegungsrückführungswert gleich dem Befehlswert ist und nicht der veraltete Rückführungswert, scheint die Abstimmung zu verbessern.  Dies kann mit einer B<mux2(9)>-Komponente für jedes Rückmeldesignal erreicht werden, wobei B<packet-error> als mux2 B<sel>-Eingang verwendet wird.

note: type: Plain text
en: In addition to the pins documented in B<hostmot2(9)>, B<hm2_eth(9)> creates additional pins:
de: Zusätzlich zu den in B<hostmot2(9)> dokumentierten Pins werden mit B<hm2_eth(9)> weitere Pins erzeugt:

note: type: Plain text
en: This pin is TRUE when the most recent cycle detected a read or write error, and FALSE at other times.
de: Dieser Pin ist TRUE, wenn im letzten Zyklus ein Lese- oder Schreibfehler festgestellt wurde, und FALSE zu anderen Zeiten.

note: type: Plain text
en: This pin shows the current error level, with higher numbers indicating a greater number of recent detected errors.  The error level is always in the range from 0 to packet-error-limit, inclusive.
de: Dieser Pin zeigt den aktuellen Fehlerpegel an, wobei höhere Zahlen eine größere Anzahl von kürzlich erkannten Fehlern anzeigen.  Der Fehlerpegel liegt immer im Bereich von 0 bis einschließlich packet-error-limit.

note: type: Plain text
en: This pin is TRUE when the current error level is equal to the maximum, and FALSE at other times.
de: Dieser Pin ist TRUE, wenn der aktuelle Fehlerpegel gleich dem Maximum ist, und FALSE zu anderen Zeiten.

note: type: Plain text
en: In addition to the parameters documented in B<hostmot2(9)>, B<hm2_eth(9)> creates additional parameters:
de: Zusätzlich zu den in B<hostmot2(9)> dokumentierten Parametern erzeugt B<hm2_eth(9)> weitere Parameter:

note: type: Plain text
en: The amount deducted from I<packet-error-level> in a cycle without detected read or write errors, without going below zero.
de: Der Betrag, der von I<packet-error-level> in einem Zyklus ohne erkannte Lese- oder Schreibfehler abgezogen wird, ohne unter Null zu gehen.

note: type: Plain text
en: The amount added to I<packet-error-level> in a cycle without detected read or write errors, without going above packet-error-limit.
de: Der Betrag, der zu I<Paketfehler-Level> in einem Zyklus ohne erkannte Lese- oder Schreibfehler hinzugefügt wird, ohne dass die Paketfehlergrenze überschritten wird.

note: type: Plain text
en: The level at which a detected read or write error is treated as a permanent error.  When this error level is reached, the board's I<io-error> pin becomes TRUE and the condition must be manually reset.
de: Der Pegel, bei dem ein erkannter Lese- oder Schreibfehler als permanenter Fehler behandelt wird.  Wenn diese Fehlerstufe erreicht wird, dann wird der I<io-error>-Pin der Karte TRUE und der Zustand muss manuell zurückgesetzt werden.

note: type: Plain text
en: The length of time that must pass before a read request times out.  If the value is less than or equal to 0, it is interpreted as 80% of the thread period.  If the value is less than 100, it is interpreted as a percentage of the thread period.  Otherwise, it is interpreted as a time in nanoseconds.  In any case, the timeout is never less than 100 microseconds.
de: Die Zeitspanne, die vergehen muss, bevor eine Leseanforderung abbricht.  Ist der Wert kleiner oder gleich 0, wird er als 80% der Thread-Periode interpretiert.  Ist der Wert kleiner als 100, wird er als Prozentsatz der Thread-Periode interpretiert.  Andernfalls wird er als eine Zeit in Nanosekunden interpretiert.  In jedem Fall ist der Timeout nie kleiner als 100 Mikrosekunden.

note: type: Plain text
en: Setting this value too low can cause spurious read errors.  Setting it too high can cause realtime delay errors.
de: Wird dieser Wert zu niedrig eingestellt, kann es zu Lesefehlern kommen.  Ein zu hoher Wert kann zu Echtzeitverzögerungsfehlern führen.

note: type: Plain text
en: At (normal) exit, hm2_eth will remove the rules.  After a crash, you can manually clear the rules with B<sudo iptables -F hm2-eth-rules-output>; the rules are also removed by a reboot.
de: Beim (normalen) Beenden entfernt hm2_eth die Regeln.  Nach einem Absturz können Sie die Regeln manuell mit B<sudo iptables -F hm2-eth-rules-output> löschen; die Regeln werden auch durch einen Neustart entfernt.

note: type: Plain text
en: "hardware-irq-coalesce-rx-usecs" decreases time waiting to receive a packet on most systems, but on at least some Marvel-chipset NICs it is harmful.  If the line does not improve system performance, then remove it.  A reboot is required for the value to be set back to its power-on default.  This requires the ethtool package to be installed.
de: "hardware-irq-coalesce-rx-usecs" verringert auf den meisten Systemen die Wartezeit auf den Empfang eines Pakets, aber zumindest auf einigen Marvel-Chipsatz-NICs ist es schädlich.  Wenn die Zeile die Systemleistung nicht verbessert, sollten Sie sie entfernen.  Es ist ein Neustart erforderlich, damit der Wert wieder auf den Standardwert beim Einschalten zurückgesetzt wird.  Dazu muss das Paket ethtool installiert sein.

note: type: Plain text
en: Some hostmot2 functions such uart are coded in a way that causes additional latency when used with hm2_eth.
de: Einige hostmot2-Funktionen wie z.B. uart sind so kodiert, dass sie bei Verwendung von hm2_eth zusätzliche Latenzzeiten verursachen.

note: type: Plain text
en: On the 7i92, the HAL pins for the LEDs are called CR01..CR04, but the silkscreens are CR3..CR6.  Depending on the FPGA firmware, the LEDs may initially be under control of the ethernet engine.  This can be changed until power cycle with
de: Auf dem 7i92 heißen die HAL-Pins für die LEDs CR01..CR04, aber die Silkscreens sind CR3..CR6.  Je nach FPGA-Firmware können die LEDs anfänglich unter der Kontrolle der Ethernet-Engine stehen.  Dies kann bis zum Einschalten des Geräts geändert werden mit

note: type: Plain text
en: Depending on firmware version, this driver may cause the hardware error LED to light even though the driver and hardware are functioning normally.  This will reportedly be fixed in future bitfile updates from Mesa.
de: Je nach Firmware-Version kann dieser Treiber dazu führen, dass die Hardware-Fehler-LED aufleuchtet, obwohl der Treiber und die Hardware normal funktionieren.  Berichten zufolge wird dies in zukünftigen Bitfile-Updates von Mesa behoben werden.

note: type: Plain text
en: hm2_pci - LinuxCNC HAL driver for the Mesa Electronics PCI-based Anything IO boards, with HostMot2 firmware.
de: hm2_pci - LinuxCNC HAL-Treiber für die PCI-basierten Anything IO-Karten von Mesa Electronics, mit HostMot2-Firmware.

note: type: Plain text
en: hm2_pci is a device driver that interfaces Mesa's PCI and PC-104/Plus based Anything I/O boards (with the HostMot2 firmware) to the LinuxCNC HAL.
de: hm2_pci ist ein Gerätetreiber, der Mesas PCI- und PC-104/Plus-basierte Anything I/O-Karten (mit der HostMot2-Firmware) mit der LinuxCNC-HAL verbindet.

note: type: Plain text
en: The supported boards are: the 5i20, 5i21, 5i22, 5i23, 5i24, and 5i25 (all on PCI); the 4i65, 4i68, and 4i69 (on PC-104/Plus), and the 3x20 (using a 6i68 or 7i68 carrier card) and 6i25 (on PCI Express).
de: Die unterstützten Karten sind: 5i20, 5i21, 5i22, 5i23, 5i24 und 5i25 (alle auf PCI); 4i65, 4i68 und 4i69 (auf PC-104/Plus) sowie 3x20 (mit einer 6i68- oder 7i68-Trägerkarte) und 6i25 (auf PCI Express).

note: type: Plain text
en: The driver optionally programs the board's FPGA with firmware when it registers the board with the hostmot2 driver.  The firmware to load is specified in the B<config> modparam, as described in the hostmot2(9) manpage, in the I<config modparam> section.
de: Der Treiber programmiert optional das FPGA der Karte mit Firmware, wenn er die Karte beim hostmot2-Treiber registriert.  Die zu ladende Firmware wird im B<config> modparam angegeben, wie in der hostmot2(9) manpage im Abschnitt I<config modparam> beschrieben.

note: type: Plain text
en: hm2_rpspi - LinuxCNC HAL driver for the Mesa Electronics SPI Anything IO boards, with HostMot2 firmware.
de: hm2_rpspi - LinuxCNC HAL Treiber für die Mesa Electronics SPI Anything IO Boards, mit HostMot2 Firmware.

note: type: Plain text
en: HostMot2 config strings, described in the B<hostmot2>(9)  manpage.
de: HostMot2-Konfigurationsstrings, beschrieben in der Manpage B<hostmot2>(9).

note: type: TP
en: B<spiclk_rate> [default: 31250]
de: B<spiclk_rate> [Voreinstellung: 31250]

note: type: Plain text
en: Specify the SPI clock rate in kHz. See B<SPI\ CLOCK\ RATES> below.
de: Geben Sie die SPI-Taktrate in kHz an. Siehe B<SPI-TAKTRATE> unten.

note: type: TP
en: B<spiclk_rate_rd> [default: -1 (same as B<spiclk_rate>)]
de: B<spiclk_rate_rd> [Voreinstellung: -1 (wie B<spiclk_rate>)]

note: type: Plain text
en: Specify the SPI read clock rate in kHz. Usually you read and write at the same speed. However, you may want to reduce the reading speed if the round-trip is too long (see B<SPI\ CLOCK\ RATES> below).
de: Geben Sie die SPI-Lesetaktrate in kHz an. Normalerweise lesen und schreiben Sie mit der gleichen Geschwindigkeit. Es kann jedoch sinnvoll sein, die Lesegeschwindigkeit zu verringern, wenn der Hin- und Rückweg zu lang ist (siehe B<SPI-TAKTRATEN> unten).

note: type: Plain text
en: This is the SPI clock divider calculation fallback value. Usually, the base rate is read from I</sys/kernel/debug/clk/vpu/clk_rate> and used in the divider calculation (for the Rpi3 it should be 250\ MHz). The B<spiclk_base> is I<only> used as a fallback if the system's cannot be read. It is normally safe (and recommended) that you leave this parameter as is.
de: Dies ist der Fallback-Wert für die Berechnung des SPI-Taktteilers. Normalerweise wird die Basisrate aus I</sys/kernel/debug/clk/vpu/clk_rate> gelesen und in der Teilerberechnung verwendet (für den Rpi3 sollte sie 250\ MHz betragen). Die B<spiclk_base> wird I<nur> als Fallback verwendet, wenn die des Systems nicht gelesen werden kann. Normalerweise ist es sicher (und empfehlenswert), diesen Parameter so zu lassen, wie er ist.

note: type: Plain text
en: You should set this manually to 250000000 if your system does not provide access to the kernel clock settings. Otherwise, your SPI clock frequency will be only 62.5% of the requested value.
de: Sie sollten diesen Wert manuell auf 250000000 setzen, wenn Ihr System keinen Zugriff auf die Kernel-Takteinstellungen bietet. Andernfalls beträgt die SPI-Taktfrequenz nur 62,5 % des angeforderten Wertes.

note: type: TP
en: B<spi_pull_miso> [default: 1 (pull-down)]
de: B<spi_pull_miso> [Voreinstellung: 1 (pull-down)]

note: type: TP
en: B<spi_pull_mosi> [default: 1 (pull-down)]
de: B<spi_pull_mosi> [Voreinstellung: 1 (pull-down)]

note: type: TP
en: B<spi_pull_sclk> [default: 1 (pull-down)]
de: B<spi_pull_sclk> [Voreinstellung: 1 (pull-down)]

note: type: TP
en: B<biss_chan_N> [optional, default: ""]
de: B<biss_chan_N> [optional, Voreinstellung: ""]

note: type: Plain text
en: As for ssi_chan_N, but for BiSS devices
de: Wie bei ssi_chan_N, aber für BiSS-Geräte

note: type: TP
en: B<num_resolvers> [optional, default: -1]
de: B<num_resolvers> [optional, Standardwert: -1]

note: type: TP
en: B<num_pwmgens> [optional, default: -1]
de: B<num_pwmgens> [optional, Standardwert: -1]

note: type: Plain text
en: Only enable the first N pwmgens.  If N is -1, all pwmgens are enabled.  If N is 0, no pwmgens are enabled.  If N is greater than the number of pwmgens available in the firmware, the board will fail to register.
de: Aktiviert nur die ersten N pwmgens.  Wenn N gleich -1 ist, werden alle pwmgens aktiviert.  Wenn N gleich 0 ist, werden keine pwmgens aktiviert.  Wenn N größer ist als die Anzahl der in der Firmware verfügbaren pwmgens, kann sich die Karte nicht registrieren.

note: type: TP
en: B<num_3pwmgens> [optional, default: -1]
de: B<num_3pwmgens> [optional, Standardwert: -1]

note: type: Plain text
en: Only enable the first N Three-phase pwmgens.  If N is -1, all 3pwmgens are enabled. If N is 0, no pwmgens are enabled.  If N is greater than the number of pwmgens available in the firmware, the board will fail to register.
de: Aktiviert nur die ersten N Dreiphasen-Pwmgen.  Wenn N gleich -1 ist, sind alle 3pwmgens aktiviert. Wenn N gleich 0 ist, werden keine Pwmgens aktiviert.  Wenn N größer ist als die Anzahl der in der Firmware verfügbaren Pwmgens, kann sich die Karte nicht registrieren.

note: type: TP
en: B<num_rcpwmgens> [optional, default: -1]
de: B<num_rcpwmgens> [optional, Standardwert: -1]

note: type: Plain text
en: Only enable the first N RC pwmgens.  If N is -1, all rcpwmgens are enabled. If N is 0, no rcpwmgens are enabled.  If N is greater than the number of rcpwmgens available in the firmware, the board will fail to register.
de: Aktiviert nur die ersten N RC pwmgens.  Ist N gleich -1, werden alle rcpwmgens aktiviert. Wenn N gleich 0 ist, werden keine rcpwmgens aktiviert.  Wenn N größer ist als die Anzahl der in der Firmware verfügbaren rcpwmgens, kann sich die Karte nicht registrieren.

note: type: TP
en: B<num_stepgens> [optional, default: -1]
de: B<num_stepgens> [optional, Standardwert: -1]

note: type: Plain text
en: Only enable the first N stepgens.  If N is -1, all stepgens are enabled.  If N is 0, no stepgens are enabled.  If N is greater than the number of stepgens available in the firmware, the board will fail to register.
de: Aktivieren Sie nur die ersten N Stepgen.  Wenn N gleich -1 ist, werden alle Schrittweiten aktiviert.  Wenn N gleich 0 ist, werden keine Schrittmotoren aktiviert.  Wenn N größer ist als die Anzahl der in der Firmware verfügbaren Stepgens, kann sich die Karte nicht registrieren.

note: type: TP
en: B<num_xy2mods> [optional, default: -1]
de: B<num_xy2mods> [optional, Standardwert: -1]

note: type: Plain text
en: Only enable the first N xy2mods.  If N is -1, all xy2mods are enabled.  If N is 0, no xy2mods are enabled.  If N is greater than the number of xy2mods available in the firmware, the board will fail to register.
de: Aktiviert nur die ersten N xy2mods.  Wenn N gleich -1 ist, sind alle xy2mods aktiviert.  Ist N gleich 0, sind keine xy2mods aktiviert.  Wenn N größer ist als die Anzahl der in der Firmware verfügbaren xy2mods, kann sich die Karte nicht registrieren.

note: type: TP
en: B<stepgen_width> [optional, default: 2]
de: B<stepgen_width> [optional, Standard: 2]

note: type: Plain text
en: Used to mask extra, unwanted, stepgen pins. Stepper drives typically require only two pins (step and dir) but the Hostmot2 stepgen can drive up to 8 output pins for specialised applications (depending on firmware). This parameter applies to all stepgen instances. Unused, masked pins will be available as GPIO.
de: Wird verwendet, um zusätzliche, unerwünschte Stepgen-Pins zu maskieren. Schrittantriebe benötigen in der Regel nur zwei Pins (step und dir), aber der Hostmot2 stepgen kann bis zu 8 Ausgangspins für spezielle Anwendungen ansteuern (abhängig von der Firmware). Dieser Parameter gilt für alle Stepgen-Instanzen. Unbenutzte, maskierte Pins sind als GPIO verfügbar.

note: type: Plain text
en: Up to 32 Smart Serial devices can be connected to a Mesa Anything IO board
    depending on the firmware used and the number of physical connections on the
    board. These are arranged in 1-4 ports (N) of 1 to 8 channels.
     Some Smart Serial (SSLBP) cards offer more than one load-time configuration,
    for example all inputs, or all outputs, or offering additional analogue input on
    some digital pins.
     To set the modes for port 0 use for example B<sserial_port_0=0120xxxx>.
     A "0" in the string sets the corresponding channel to mode 0, a "1" to mode 1, and so
    on up to mode 9. An "x" in any position disables that channel and makes the
    corresponding FPGA pins available as GPIO.
     The string can be up to 8 characters long, and if it defines more
    modes than there are channels on the port then the extras are ignored. Channel
    numbering is left to right so the example above would set sserial device 0.0
    to mode 0, 0.1 to mode 1, 0.2 to mode 2, 0.3 to mode 0 and disables channels 0.4 onwards.
     The sserial driver will auto-detect connected devices, no further configuration
    should be needed. Unconnected channels will default to GPIO, but the pin values
    will vary semi-randomly during boot when card-detection runs, to it is best to
    actively disable any channel that is to be used for GPIO.
    See SSERIAL(9) for more information.
de: Bis zu 32 Smart Serial Geräte können an ein Mesa Anything IO Board angeschlossen werden
    abhängig von der verwendeten Firmware und der Anzahl der physikalischen Anschlüsse auf der
    Karte. Diese sind in 1-4 Ports (N) mit 1 bis 8 Kanälen angeordnet.
     Einige Smart Serial (SSLBP) Karten bieten mehr als eine Lastzeitkonfiguration,
    z. B. alle Eingänge oder alle Ausgänge, oder sie bieten einen zusätzlichen Analogeingang an
    einigen digitalen Pins.
     Um die Modi für Port 0 einzustellen, verwenden Sie zum Beispiel B<sserial_port_0=0120xxxx>.
     Eine "0" in der Zeichenkette setzt den entsprechenden Kanal in den Modus 0, eine "1" in den Modus 1, und so
    und so weiter bis zu Modus 9. Ein "x" an einer beliebigen Stelle deaktiviert diesen Kanal und macht die
    entsprechenden FPGA-Pins als GPIO verfügbar.
     Der String kann bis zu 8 Zeichen lang sein, und wenn er mehr Modi definiert
    Modi definiert, als Kanäle an der Schnittstelle vorhanden sind, werden die zusätzlichen Zeichen ignoriert. Kanal
    Nummerierung erfolgt von links nach rechts, so dass das obige Beispiel das serielle Gerät 0.0
    auf Modus 0, 0.1 auf Modus 1, 0.2 auf Modus 2, 0.3 auf Modus 0 und deaktiviert die Kanäle ab 0.4.
     Der sserial-Treiber erkennt angeschlossene Geräte automatisch, eine weitere Konfiguration
    sollte nicht erforderlich sein. Unverbundene Kanäle werden standardmäßig auf GPIO eingestellt, aber die Pinwerte
    werden während des Bootens halb zufällig variieren, wenn die Kartenerkennung läuft, daher ist es am besten
    jeden Kanal, der für GPIO verwendet werden soll, aktiv zu deaktivieren.
    Siehe SSERIAL(9) für weitere Informationen.

note: type: TP
en: B<num_bspis> [optional, default: -1]
de: B<num_bspis> [optional, Standardwert: -1]

note: type: Plain text
en: Only enable the first N Buffered SPI drivers. If N is -1 then all the drivers are enabled. Each BSPI driver can address 16 devices.
de: Aktivieren Sie nur die ersten N gepufferten SPI-Treiber. Wenn N -1 ist, sind alle Treiber aktiviert. Jeder BSPI-Treiber kann 16 Geräte adressieren.

note: type: TP
en: B<num_leds> [optional, default: -1]
de: B<num_leds> [optional, Standardwert: -1]

note: type: Plain text
en: Only enable the first N of the LEDs on the FPGA board. If N is -1, then HAL pins for all the LEDs will be created. If N=0 then no pins will be added.
de: Aktivieren Sie nur die ersten N der LEDs auf der FPGA-Platine. Wenn N -1 ist, dann werden HAL-Pins für alle LEDs erstellt. Wenn N=0, werden keine Pins hinzugefügt.

note: type: TP
en: B<num_ssrs> [optional, default: -1]
de: B<num_ssrs> [optional, Standardwert: -1]

note: type: Plain text
en: Only enable the first N of the SSR modules on the FPGA board. If N is -1, then HAL pins for all the SSR outputs will be created. If N=0 then no pins will be added.
de: Aktivieren Sie nur die ersten N der SSR-Module auf der FPGA-Platine. Wenn N -1 ist, dann werden HAL-Pins für alle SSR-Ausgänge erstellt. Wenn N=0, werden keine Pins hinzugefügt.

note: type: Plain text
en: If specified, this turns on a raw access mode, whereby a user can peek and poke the firmware from HAL.  See Raw Mode below.
de: Wenn dies angegeben wird, so wird ein Rohzugriffsmodus aktiviert, bei dem ein Benutzer die Firmware von der HAL aus einsehen und anfassen kann.  Siehe Raw-Modus unten.

note: type: Plain text
en: The hm2dpll module has pins like "hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.dpll" It is likely that the pin-count will decrease in the future and that some pins will become parameters.  This module is a phase-locked loop that will synchronise itself with the thread in which the hostmot2 "read" function is installed and will trigger other functions that are allocated to it at a specified time before or after the "read" function runs. This can be applied to the three absolute encoder types, quadrature encoder, stepgen, and xy2mod. In the case of the absolute encoders this allows the system to trigger a data transmission just prior to the time when the HAL driver reads the data. In the case of stepgens, quadrature encoders, and the xy2mod, the timers can be used to reduce position sampling jitter. This is especially valuable with the ethernet-interfaced cards.
de: Das hm2dpll-Modul hat Pins wie "hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.dpll" Es ist wahrscheinlich, dass sich die Pin-Anzahl in Zukunft verringern wird und dass einige Pins zu Parametern werden.  Bei diesem Modul handelt es sich um eine phasenstarre Schleife, die sich mit dem Thread synchronisiert, in dem die "read"-Funktion von hostmot2 installiert ist, und die andere Funktionen auslöst, die ihr zu einem bestimmten Zeitpunkt vor oder nach der "read"-Funktion zugewiesen sind. Dies kann auf die drei absoluten Encoder-Typen, Quadratur-Encoder, Stepgen und xy2mod angewendet werden. Bei den Absolutwertgebern kann das System damit eine Datenübertragung kurz vor dem Zeitpunkt auslösen, zu dem der HAL-Treiber die Daten liest. Im Falle von Stepgen, Quadratur-Encodern und xy2mod können die Timer verwendet werden, um den Jitter bei der Positionsabtastung zu reduzieren. Dies ist besonders bei den Karten mit Ethernet-Schnittstelle von Vorteil.

note: type: Plain text
en: This pin sets the triggering offset of the associated timer. There are 4 timers numbered 01 to 04, represented by the NN digits in the pin name.  The units are micro-seconds.  Generally the value for reads will be negative, and positive for writes so that input data is sampled prior to the main hostmot read and output data is written some time after the main hostmot2 read.
de: Dieser Pin stellt den Auslöseoffset des zugehörigen Timers ein. Es gibt 4 Timer mit den Nummern 01 bis 04, die durch die NN-Ziffern im Namen des Pins dargestellt werden.  Die Einheiten sind Mikrosekunden.  Im Allgemeinen wird der Wert für Lesevorgänge negativ und für Schreibvorgänge positiv sein, so dass die Eingangsdaten vor dem Haupt-Hostmot-Lesevorgang abgetastet und die Ausgangsdaten einige Zeit nach dem Haupt-Hostmot2-Lesevorgang geschrieben werden.

note: type: Plain text
en: For stepgen and quadrature encoders, the value needs to be more than the maximum variation between read times.  -100 will suffice for most systems, and -50 will work on systems with good performance and latency.
de: Bei Stepgen- und Quadratur-Encodern muss der Wert größer sein als die maximale Abweichung zwischen den Lesezeiten.  Ein Wert von -100 reicht für die meisten Systeme aus, und ein Wert von -50 ist für Systeme mit guter Leistung und Latenzzeit geeignet.

note: type: Plain text
en: For serial encoders, the value also needs to include the time it takes to transfer the absolute encoder position.  For instance, if 50 bits must be read at 500 kHz then subtract an additional 50/500 kHz = 100 µs to get a starting value of -200.
de: Bei seriellen Encodern muss der Wert auch die Zeit enthalten, die für die Übertragung der absoluten Encoderposition benötigt wird.  Müssen z. B. 50 Bits mit 500 kHz gelesen werden, so müssen zusätzlich 50/500 kHz = 100 µs abgezogen werden, um einen Anfangswert von -200 zu erhalten.

note: type: Plain text
en: This pin sets the base frequency of the phase-locked loop. by default it will be set to the nominal frequency of the thread in which the PLL is running and will not normally need to be changed.
de: Mit diesem Pin wird die Basisfrequenz des Phasenregelkreises eingestellt. Standardmäßig ist sie auf die Nennfrequenz des Threads eingestellt, in dem die PLL läuft, und muss normalerweise nicht geändert werden.

note: type: Plain text
en: Indicates the phase error of the DPLL. If the number cycles by a large amount it is likely that the PLL has failed to achieve lock and adjustments will need to be made.
de: Zeigt den Phasenfehler der DPLL an. Wenn die Anzahl der Zyklen sehr hoch ist, dann ist es wahrscheinlich, dass die PLL keine Synchronisation erreicht hat und Anpassungen vorgenommen werden müssen.

note: type: Plain text
en: The filter time-constant for the PLL.  The default value is a compromise between insensitivity to single-cycle variations and being resilient to changes to the Linux CLOCK_MONOTONIC timescale, which can instantly change by up to ±500ppm from its nominal value, usually by timekeeping software like ntpd and ntpdate. Default 2000 (0x7d0)
de: Die Filterzeitkonstante für die PLL.  Der Standardwert ist ein Kompromiss zwischen der Unempfindlichkeit gegenüber Einzelzyklus-Schwankungen und der Unempfindlichkeit gegenüber Änderungen der Linux CLOCK_MONOTONIC-Zeitskala, die sich sofort um bis zu ±500ppm von ihrem Nennwert ändern kann, normalerweise durch Zeitmesssoftware wie ntpd und ntpdate. Voreinstellung 2000 (0x7d0)

note: type: Plain text
en: Sets the phase adjustment limit of the PLL. If the value is zero then the PLL will free-run at the base frequency independent of the servo thread rate. This is probably not what you want. Default 4194304 (0x400000) Units not known...
de: Stellt die Phasenanpassungsgrenze der PLL ein. Wenn der Wert Null ist, läuft die PLL unabhängig von der Servofadenrate auf der Basisfrequenz frei. Dies ist wahrscheinlich nicht das, was Sie wollen. Standardwert 4194304 (0x400000) Einheiten nicht bekannt...

note: type: Plain text
en: Used internally by the driver, likely to disappear.
de: Wird intern vom Fahrer verwendet und wird wahrscheinlich verschwinden.

note: type: Plain text
en: Prescale factor for the rate generator. Default 1.
de: Vorskalierungsfaktor für den Ratengenerator. Voreinstellung 1.

note: type: Plain text
en: Encoders have names like ""hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.encoder.I<E<lt>InstanceE<gt>>".".  "Instance" is a two-digit number that corresponds to the HostMot2 encoder instance number.  There are "num_encoders" instances, starting with 00.
de: Encoder haben Namen wie ""hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.encoder.I<E<lt>InstanceE<gt>>". "Instance" ist eine zweistellige Nummer, die der HostMot2-Encoder-Instanznummer entspricht.  Es gibt "num_encoders" Instanzen, beginnend mit 00.

note: type: Plain text
en: So, for example, the HAL pin that has the current position of the second encoder of the first 5i25 board is: hm2_5i25.0.encoder.01.position (this assumes that the firmware in that board is configured so that this HAL object is available)
de: Der HAL-Pin mit der aktuellen Position des zweiten Encoders der ersten 5i25-Karte lautet beispielsweise: hm2_5i25.0.encoder.01.position (dies setzt voraus, dass die Firmware auf dieser Karte so konfiguriert ist, dass dieses HAL-Objekt verfügbar ist)

note: type: Plain text
en: Each encoder uses three or four input IO pins, depending on how the firmware was compiled.  Three-pin encoders use A, B, and Index (sometimes also known as Z).  Four-pin encoders use A, B, Index, and Index-mask.
de: Jeder Encoder verwendet drei oder vier Eingangs-IO-Pins, je nachdem, wie die Firmware kompiliert wurde.  Dreipolige Encoder verwenden A, B und Index (manchmal auch als Z bekannt).  Vierpolige Encoder verwenden A, B, Index und Index-Maske.

note: type: Plain text
en: Number of encoder counts since the previous reset.
de: Anzahl der Encoderzählungen seit dem letzten Reset.

note: type: Plain text
en: Encoder position in position units (count / scale).
de: Encoderposition in Positionseinheiten (Count / Scale).

note: type: Plain text
en: Encoder latched position in position units (count / scale).
de: Encoder-Latch-Position in Positionseinheiten (Zählung/Skalierung).

note: type: Plain text
en: Estimated encoder velocity in position units per second.
de: Geschätzte Encoder-Geschwindigkeit in Positionseinheiten pro Sekunde.

note: type: Plain text
en: Estimated encoder velocity in position units per minute.
de: Geschätzte Encoder-Geschwindigkeit in Positionseinheiten pro Minute.

note: type: Plain text
en: When this pin is True, the count and position pins are set to 0.  (The value of the velocity pin is not affected by this.)  The driver does not reset this pin to FALSE after resetting the count to 0, that is the user's job.
de: Wenn dieser Pin True ist, werden die Zähl- und Positionspins auf 0 festgelegt.  (Der Wert des Geschwindigkeits-Pins wird dadurch nicht beeinflusst.)  Der Treiber setzt diesen Pin nicht auf FALSE zurück, nachdem er die Anzahl auf 0 zurückgesetzt hat, dh die Aufgabe des Benutzers.

note: type: Plain text
en: When this pin is set to True, the count (and therefore also position) are reset to zero on the next Index (Phase-Z) pulse.  At the same time, index-enable is reset to zero to indicate that the pulse has occurred.
de: Wenn dieser Pin auf True gesetzt ist, wird der Zählerstand (und damit auch die Position) beim nächsten Indeximpuls (Phase-Z) auf Null zurückgesetzt.  Gleichzeitig wird Index-Enable auf Null zurückgesetzt, um anzuzeigen, dass der Impuls stattgefunden hat.

note: type: Plain text
en: When this pin is set to True, the encoder count (and therefore also position) are latched on the the next probe active edge.  At the same time, probe-enable is reset to zero to indicate that latch event has occurred.
de: Wenn dieser Pin auf True gesetzt ist, wird der Encoder-Zählerstand (und damit auch die Position) bei der nächsten aktiven Flanke des Tasters zwischengespeichert.  Gleichzeitig wird probe-enable auf Null zurückgesetzt, um anzuzeigen, dass das Latch-Ereignis eingetreten ist.

note: type: Plain text
en: If set to True, the rising edge of the probe input pin triggers the latch event (if probe-enable is True).  If set to False, the falling edge triggers.
de: Bei True löst die steigende Flanke des Sondeneingangspins das Latch-Ereignis aus (wenn Probe-Enable True ist).  Bei False löst die fallende Flanke das Ereignis aus.

note: type: Plain text
en: Total number of encoder counts since the start, not adjusted for index or reset.
de: Gesamtzahl der Encoder-Zählungen seit dem Start, nicht angepasst für Index oder Reset.

note: type: Plain text
en: Real time filtered values of A,B,Index encoder signals
de: Echtzeit-gefilterte Werte von A-, B-, Index-Encoder-Signalen

note: type: Plain text
en: Parameters:
de: Parameter:

note: type: Plain text
en:  (s32, out) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>.count. The lower 32 bits of the
    total encoder counts. This value is reset both by the ...reset and the ...index-enable
    pins.
     (s32, out) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>.rawcounts. The lower 32 bits of
    the total encoder counts. The pin is not affected by reset and index.
     (float, out) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>.position. The encoder position
    in machine units. This is calculated from the full 64-bit buffers so will show
    a True value even after the counts pins have wrapped. It is zeroed by reset and
    index enable.
     (bit, IO) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>.index-enable. When this pin is set
    "True" the module will wait until the raw encoder counts next passes through an
    integer multiple of the number of counts specified by counts-per-rev parameter
    and then it will zero the counts and position pins, and set the index-enable
    pin back to "False" as a signal to the system that "index" has been passed.
    this pin is used for spindle-synchronised motion and index-homing.
     (bit, in) (bit, out) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>.reset. When this pin is set high
    the counts and position pins are zeroed.
de:  (s32, out) hm2_XXXX.N.ssi.MM.E<lt>NameE<gt>.count. Die unteren 32 Bits der
    Gesamtzähler des Encoders. Dieser Wert wird sowohl durch die ...reset- als auch durch die ...index-enable
    Pins.
     (s32, out) hm2_XXXX.N.ssi.MM.E<lt>NameE<gt>.rawcounts. Die unteren 32 Bits
    der Gesamtzählungen des Encoders. Der Pin wird von Reset und Index nicht beeinflusst.
     (float, out) hm2_XXXX.N.ssi.MM.E<lt>NameE<gt>.position. Die Geberposition
    in Maschineneinheiten. Sie wird aus den vollen 64-Bit-Puffern berechnet und zeigt daher
    einen True-Wert an, auch nachdem die Zählpins umgeschlagen sind. Der Wert wird durch Reset und
    Index-Freigabe.
     (Bit, IO) hm2_XXXX.N.ssi.MM.E<lt>NameE<gt>.index-enable. Wenn dieser Pin gesetzt ist
    "True" gesetzt wird, wartet das Modul, bis der Roh-Encoder den nächsten Durchlauf um ein
    ganzzahliges Vielfaches der im Parameter counts-per-rev angegebenen Anzahl von Zählungen
    angegebene Anzahl von Zählungen durchläuft. Dann werden die Zählungs- und Positionspins auf Null gesetzt und der Index-enable
    Pin wieder auf "False" als Signal an das System, dass "index" überschritten wurde.
    Dieser Pin wird für spindelsynchrone Bewegung und Index-Homing verwendet.
     (bit, in) (bit, out) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>.reset. Wenn dieser Pin auf High gesetzt wird
    werden die Zähl- und Positionsstifte auf Null gesetzt.

note: type: Plain text
en: Other parameters depend on the data types specified in the config string.
de: Andere Parameter hängen von den in der Konfigurationszeichenfolge angegebenen Datentypen ab.

note: type: TP
en: p: (Pad) No Parameters.
de: p: (Pad) Keine Parameter.

note: type: TP
en: b: (Boolean) No Parameters.
de: b: (Boolean) Keine Parameter.

note: type: Plain text
en: (float, r/w) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>-scalemax. The scaling factor for the
     channel.
de: (float, r/w) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>-scalemax. Der Skalierungsfaktor für den
     Kanal.

note: type: Plain text
en: (float, r/w) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>-scalemax. The scaling factor for the channel.
de: (float, r/w) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>-scalemax. Der Skalierungsfaktor für den Kanal.

note: type: TP
en: f: (bitField): No parameters.
de: f: (bitField): Keine Parameter.

note: type: Plain text
en:  (float, r/w) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>.scale: (float, r.w) The encoder scale in
    counts per machine unit.
     (u32, r/w) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>.counts-per-rev (u32, r/w) Used to emulate
    the index behaviour of an incremental+index encoder. This would normally be set
    to the actual counts per rev of the encoder, but can be any whole number of
    revs. Integer divisors or multipliers of the true PPR might be useful for
    index-homing. Non-integer factors might be appropriate where there is a
    synchronous drive ratio between the encoder and the spindle or ballscrew.
de:  (float, r/w) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>.scale: (float, r.w) Der Gebermaßstab in
    Zählungen pro Maschineneinheit.
     (u32, r/w) hm2_XXXX.N.ssi.MM.E<lt>nameE<gt>.counts-per-rev (u32, r/w) Dient zur Emulation des
    das Indexverhalten eines Inkremental+Index-Encoders zu emulieren. Normalerweise wird dieser Wert
    auf die tatsächlichen Zählungen pro Umdrehung des Encoders gesetzt, kann aber eine beliebige ganze Zahl von
    Umdrehungen sein. Ganzzahlige Divisoren oder Multiplikatoren des wahren PPR können für
    Index-Homing. Nicht-ganzzahlige Faktoren können sinnvoll sein, wenn es ein
    synchrones Antriebsverhältnis zwischen dem Drehgeber und der Spindel oder dem Kugelgewindetrieb besteht.

note: type: Plain text
en: BiSS is a bidirectional variant of SSI. Currently only a single direction is supported by LinuxCNC (encoder to PC).
de: BiSS ist eine bidirektionale Variante von SSI. Derzeit wird nur eine Richtung von LinuxCNC unterstützt (Messgerät zum PC).

note: type: Plain text
en: One pin is created for each BiSS instance regardless of data format:
de: Für jede BiSS-Instanz wird ein Pin erstellt, unabhängig vom Datenformat:

note: type: Plain text
en: (bit, in) hm2_XXXX.NN.biss.MM.data-incomplete This pin will be set "True" if the module was still transferring data when the value was read. When this problem exists there will also be a limited number of error messages printed to the UI. This pin should be used to monitor whether the problem has been addressed by config changes.  Solutions to the problem dpend on whether the encoder read is being triggered by the hm2dpll phase-locked-loop timer (described above) or by the trigger-encoders function (described below).
de: (bit, in) hm2_XXXX.NN.biss.MM.data-incomplete Dieser Pin wird auf "True" gesetzt, wenn das Modul beim Lesen des Wertes noch Daten übertragen hat. Wenn dieses Problem besteht, wird auch eine begrenzte Anzahl von Fehlermeldungen auf der Benutzeroberfläche ausgegeben. Dieser Pin sollte verwendet werden, um zu überwachen, ob das Problem durch Konfigurationsänderungen behoben wurde.  Die Lösung des Problems hängt davon ab, ob das Lesen des Encoders durch den hm2dpll-Phase-Locked-Loop-Timer (oben beschrieben) oder durch die Trigger-Encoders-Funktion (unten beschrieben) ausgelöst wird.

note: type: Plain text
en: The names of the pins created by the BiSS module will depend entirely on the format string for each channel specified in the loadrt command line and follow closely the format defined above for SSI.  Currently data packets of up to 96 bits are supported by the LinuxCNC driver, although the Mesa Hostmot2 module can handle 512 bit packets. It should be possible to extend the number of packets supported by the driver if there is a requirement to do so.
de: Die Namen der Pins, die vom BiSS-Modul erzeugt werden, hängen vollständig von dem Formatstring für jeden Kanal ab, der in der loadrt-Befehlszeile angegeben ist, und folgen genau dem oben für SSI definierten Format.  Derzeit Datenpakete von bis zu 96 Bit werden von der LinuxCNC-Treiber unterstützt, obwohl die Mesa Hostmot2 Modul kann 512 Bit-Pakete zu behandeln. Es sollte möglich sein, die Anzahl der vom Treiber unterstützten Pakete zu erweitern, wenn ein Bedarf dafür besteht.

note: type: SS
en: Fanuc encoder
de: Fanuc-Encoder

note: type: Plain text
en: The pins and format specifier for this module are identical to the SSI module
    described above, except that at least one pre-configured format is provided.
    A modparam of fanuc_chan_N=AA64 (case sensitive) will configure the channel for
    a Fanuc Aa64 encoder. The pins created are:
     hm2_XXXX.N.fanuc.MM.batt                indicates battery state
     hm2_XXXX.N.fanuc.MM.batt-not            inverted version of above
     hm2_XXXX.N.fanuc.MM.comm                The 0-1023 absolute output for motor commutation
     hm2_XXXX.N.fanuc.MM.crc                 The CRC checksum. Currently HAL has no way to use this
     hm2_XXXX.N.fanuc.MM.encoder.count       Encoder counts
     hm2_XXXX.N.fanuc.MM.encoder.index-enable Simulated index. Set by counts-per-rev parameter
     hm2_XXXX.N.fanuc.MM.encoder.position    Counts scaled by the ...scale parameter
     hm2_XXXX.N.fanuc.MM.encoder.rawcounts   Raw counts, unaffected by reset or index
     hm2_XXXX.N.fanuc.MM.encoder.reset       If high/True then counts and position = 0
     hm2_XXXX.N.fanuc.MM.valid               Indicates that the absolute position is valid
     hm2_XXXX.N.fanuc.MM.valid-not           Inverted version
de: Die Pins und der Format-Specifier für dieses Modul sind identisch mit dem oben beschriebenen SSI-Modul
    mit dem Unterschied, dass mindestens ein vorkonfiguriertes Format vorhanden ist.
    Ein modparam von fanuc_chan_N=AA64 (Groß- und Kleinschreibung beachten) konfiguriert den Kanal für
    einen Fanuc Aa64-Geber. Die erzeugten Pins sind:
     hm2_XXXX.N.fanuc.MM.batt zeigt den Batteriestatus an
     hm2_XXXX.N.fanuc.MM.batt-not - invertierte Version von oben
     hm2_XXXX.N.fanuc.MM.comm Der absolute Ausgang 0-1023 für die Motorkommutierung
     hm2_XXXX.N.fanuc.MM.crc Die CRC-Prüfsumme. Derzeit hat HAL keine Möglichkeit, diese zu verwenden
     hm2_XXXX.N.fanuc.MM.encoder.count Geberzählungen
     hm2_XXXX.N.fanuc.MM.encoder.index-enable Simulierter Index. Eingestellt durch den Parameter counts-per-rev
     hm2_XXXX.N.fanuc.MM.encoder.position Zählungen skaliert durch den Parameter ...scale
     hm2_XXXX.N.fanuc.MM.encoder.rawcounts Rohe Zählungen, unbeeinflusst von Reset oder Index
     hm2_XXXX.N.fanuc.MM.encoder.reset Wenn high/True dann Zählungen und Position = 0
     hm2_XXXX.N.fanuc.MM.valid Zeigt an, dass die absolute Position gültig ist
     hm2_XXXX.N.fanuc.MM.valid-not     Invertierte Version

note: type: Plain text
en: Resolvers have names like hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.resolver.I<E<lt>InstanceE<gt>>.  E<lt>InstanceE<gt> is a 2-digit number, which for the 7i49 board will be between 00 and 05. This function only works with the Mesa Resolver interface boards (of which the 7i49 is the only example at the time of writing). This board uses an SPI interface to the FPGA card, and will only work with the correct firmware.  The pins allocated will be listed in the dmesg output, but are unlikely to be usefully probed with HAL tools.
de: Resolver haben Namen wie hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.resolver.I<E<lt>InstanceE<gt>>.  E<lt>InstanceE<gt> ist eine zweistellige Zahl, die bei der 7i49-Karte zwischen 00 und 05 liegt. Diese Funktion funktioniert nur mit den Mesa Resolver-Schnittstellenkarten (von denen die 7i49 zum Zeitpunkt der Erstellung dieses Artikels das einzige Beispiel ist). Diese Karte verwendet eine SPI-Schnittstelle zur FPGA-Karte und funktioniert nur mit der richtigen Firmware.  Die zugewiesenen Pins werden in der dmesg-Ausgabe aufgelistet, können aber wahrscheinlich nicht sinnvoll mit HAL-Tools getestet werden.

note: type: Plain text
en: This pin indicates the angular position of the resolver. It is a number between 0 and 1 for each electrical rotation.
de: Dieser Pin zeigt die Winkelposition des Resolvers an. Es ist eine Zahl zwischen 0 und 1 für jede elektrische Umdrehung.

note: type: Plain text
en: Calculated from the number of complete and partial revolutions since startup, reset, or index-reset multiplied by the scale parameter.
de: Berechnet sich aus der Anzahl der vollständigen und teilweisen Umdrehungen seit dem Start, dem Zurücksetzen oder dem Index-Reset, multipliziert mit dem Skalenparameter.

note: type: Plain text
en: Calculated from the rotational velocity and the velocity-scale parameter. The default scale is electrical rotations per second.
de: Wird aus der Rotationsgeschwindigkeit und dem Parameter Geschwindigkeitsmaßstab berechnet. Die Standardskala ist elektrische Umdrehungen pro Sekunde.

note: type: Plain text
en: Simply velocity scaled by a factor of 60 for convenience.
de: Der Einfachheit halber wird die Geschwindigkeit mit dem Faktor 60 skaliert.

note: type: Plain text
en: This pins outputs a simulated encoder count at 2^24 counts per rev (16777216 counts).
de: Diese Pins geben eine simulierte Encoderzählung mit 2^24 Zählungen pro Umdrehung (16777216 Zählungen) aus.

note: type: Plain text
en: This is identical to the counts pin, except it is not reset by the "index" or "reset" pins. This is the pin which would be linked to the bldc HAL component if the resolver was being used to commutate a motor.
de: Dieser Pin ist identisch mit dem Zähl-Pin, wird aber nicht durch die "Index"- oder "Reset"-Pins zurückgesetzt. Dies ist der Pin, der mit der bldc HAL-Komponente verbunden wäre, wenn der Resolver zum Kommutieren eines Motors verwendet würde.

note: type: Plain text
en: Resets the position and counts pins to zero immediately.
de: Setzt die Position zurück und zählt die Pins sofort auf Null.

note: type: Plain text
en: The Mesa resolver driver has the capability of emulating an absolute encoder using a position file (see the INI-config section of the manual)  and the single-turn absolute operation of resolvers.  At startup, and only if the B<use-position-file> parameter is set to "True" the resolver driver will wait for a value to be written by the system to the axis.N.joint-pos-fb pin (which must be netted to this resolver pin)  and will calculate the number of full turns that best matches the current reolver position. It will then pre-load the driver output with this offset. This should only be used on systems where axis movement in the unpowered state is unlikely. This feature will only work properly if the machine is initially homed to "index" and if the axis home positions are exactly zero.
de: Der Mesa-Resolvertreiber ist in der Lage, einen Absolutwertgeber mit Hilfe einer Positionsdatei zu emulieren (siehe Abschnitt INI-config des Handbuchs) und den absoluten Single-Turn-Betrieb von Resolvern.  Beim Start, und nur wenn der Parameter B<use-position-file> auf "True" gesetzt ist, wartet der Resolvertreiber darauf, dass das System einen Wert an den axis.N.joint-pos-fb-Pin schreibt (der mit diesem Resolver-Pin verbunden sein muss) und berechnet die Anzahl der vollen Umdrehungen, die am besten zur aktuellen Resolverposition passt. Dann wird der Treiberausgang mit diesem Offset vorbelastet. Dies sollte nur bei Systemen verwendet werden, bei denen eine Achsenbewegung im stromlosen Zustand unwahrscheinlich ist. Diese Funktion funktioniert nur dann ordnungsgemäß, wenn die Maschine anfänglich auf "Index" referenziert wird und wenn die Referenzpositionen der Achsen genau Null sind.

note: type: Plain text
en: When this pin is set high the position and counts pins will be reset the next time the resolver passes through the zero position.  At the same time the pin is driven low to indicate to connected modules that the index has been seen, and that the counters have been reset.
de: Wenn dieser Pin auf High gesetzt wird, werden die Positions- und Zählpins zurückgesetzt, wenn der Resolver das nächste Mal die Nullposition durchläuft.  Gleichzeitig wird der Pin auf Low gesetzt, um den angeschlossenen Modulen anzuzeigen, dass der Index gesehen wurde und die Zähler zurückgesetzt wurden.

note: type: Plain text
en: Indicates an error in the particular channel. If this value is "True" then the reported position and velocity are invalid.
de: Zeigt einen Fehler in dem betreffenden Kanal an. Wenn dieser Wert "True" ist, sind die gemeldete Position und Geschwindigkeit ungültig.

note: type: Plain text
en: The position scale, in machine units per resolver electrical revolution.
de: Die Positionsskala in Maschineneinheiten pro elektrischer Umdrehung des Resolvers.

note: type: Plain text
en: The conversion factor between resolver rotation speed and machine velocity. A value of 1 will typically give motor speed in rps, a value of 0.01666667 will give (approximate) RPM.
de: Der Umrechnungsfaktor zwischen Resolverdrehzahl und Maschinengeschwindigkeit. Ein Wert von 1 ergibt typischerweise die Motordrehzahl in U/min, ein Wert von 0,01666667 ergibt die (ungefähre) U/min.

note: type: TP
en: (u32, read/write) index-divisor (default 1)
de: (U32, Lesen/Schreiben) Indexteiler (Standard 1)

note: type: Plain text
en: The resolver component emulates an index at a fixed point in the sin/cos cycle.  Some resolvers have multiple cycles per rev (often related to the number of pole-pairs on the attached motor). LinuxCNC requires an index once per revolution for proper threading etc.  This parameter should be set to the number of cycles per rev of the resolver.  CAUTION: Which pseudo-index is used will not necessarily be consistent between LinuxCNC runs. Do not expect to re-start a thread after restarting LinuxCNC.  It is not appropriate to use this parameter for index-homing of axis drives.
de: Die Resolverkomponente emuliert einen Index an einem festen Punkt im Sin/Cos-Zyklus.  Einige Resolver haben mehrere Zyklen pro Umdrehung (oft im Zusammenhang mit der Anzahl der Polpaare auf den angeschlossenen Motor). LinuxCNC erfordert einen Index einmal pro Umdrehung für die richtige Threading etc.  Dieser Parameter sollte auf die Anzahl der Zyklen pro Umdrehung des Resolvers eingestellt werden.  ACHTUNG: Welcher Pseudo-Index verwendet wird ist nicht zwingend konsistent bei einem Neustart von LinuxCNC. Erwarten Sie nicht, einen Thread nach dem Neustart von LinuxCNC neu zu starten.  Es ist nicht sinnvoll, diesen Parameter für Index-Homing von Achsantrieben zu verwenden.

note: type: Plain text
en: This pin sets the excitation frequency for
    the resolver. This pin is module-level rather than instance-level as all
    resolvers share the same excitation frequency.
     Valid values are 10 (~10 kHz), 5 (~5 kHz) and 2.5 (~2.5 kHz). The
    actual frequency depends on the FPGA frequency, and they correspond to
    CLOCK_LOW/5000, CLOCK_LOW/10000 and CLOCK_LOW/20000 respectively.
    The parameter will be set to the closest available of the three frequencies.
     A value of -1 (the default) indicates that the current setting should be
    retained.
de: Mit diesem Stift wird die Erregerfrequenz für
    den Resolver ein. Dieser Pin ist auf Modulebene und nicht auf Instanzebene, da alle
    Resolver die gleiche Erregerfrequenz haben.
     Gültige Werte sind 10 (~10 kHz), 5 (~5 kHz) und 2,5 (~2,5 kHz). Die
    tatsächliche Frequenz hängt von der FPGA-Frequenz ab, und sie entsprechen
    CLOCK_LOW/5000, CLOCK_LOW/10000 bzw. CLOCK_LOW/20000.
    Der Parameter wird auf die nächstgelegene der drei verfügbaren Frequenzen eingestellt.
     Ein Wert von -1 (Standard) bedeutet, dass die aktuelle Einstellung
    beibehalten werden soll.

note: type: Plain text
en: In conjunction with B<joint-pos-fb> (qv) emulate absolute encoders.
de: In Verbindung mit B<joint-pos-fb> (qv) emulieren sie absolute Geber.

note: type: Plain text
en: So, for example, the HAL pin that enables output from the fourth pwmgen of the first 7i43 board is: hm2_7i43.0.pwmgen.03.enable (this assumes that the firmware in that board is configured so that this HAL object is available)
de: Der HAL-Pin, der die Ausgabe des vierten pwmgen auf der ersten 7i43-Karte aktiviert, lautet beispielsweise: hm2_7i43.0.pwmgen.03.enable (dies setzt voraus, dass die Firmware auf dieser Karte so konfiguriert ist, dass dieses HAL-Objekt verfügbar ist)

note: type: Plain text
en: In HM2, each pwmgen uses three output IO pins: Not-Enable, Out0, and Out1.
de: In HM2 verwendet jedes pwmgen drei Ausgangs-IO-Pins: Not-Enable, Out0 und Out1.

note: type: Plain text
en: The function of the Out0 and Out1 IO pins varies with output-type parameter (see below).
de: Die Funktion der IO-Pins Out0 und Out1 variiert je nach Ausgangstyp-Parameter (siehe unten).

note: type: Plain text
en: The hm2 pwmgen representation is similar to the software pwmgen component.  Each pwmgen instance has the following pins and parameters:
de: Die hm2 pwmgen-Darstellung ist der Softwarekomponente pwmgen ähnlich.  Jede pwmgen-Instanz hat die folgenden Pins und Parameter:

note: type: Plain text
en: The current pwmgen command value, in arbitrary units.
de: Der aktuelle Wert des pwmgen-Befehls, in willkürlichen Einheiten.

note: type: Plain text
en: This emulates the output_type load-time argument to the software pwmgen component.  This parameter may be changed at runtime, but most of the time you probably want to set it at startup and then leave it alone.  Accepted values are 1 (PWM on Out0 and Direction on Out1), 2 (Up on Out0 and Down on Out1), 3 (PDM mode, PDM on Out0 and Dir on Out1), and 4 (Direction on Out0 and PWM on Out1, "for locked antiphase").
de: 'output-type' - (s32, RW) Dies emuliert das output_type-Ladezeit-Argument für die Softwarekomponente pwmgen.  Dieser Parameter kann zur Laufzeit geändert werden, aber in den meisten Fällen wollen Sie ihn beim Start setzen und dann in Ruhe lassen. Akzeptierte Werte sind 1 (PWM auf Out0 und Direction auf Out1), 2 (Up auf Out0 und Down auf Out1), 3 (PDM-Modus, PDM auf Out0 und Dir auf Out1) und 4 (Direction auf Out0 und PWM auf Out1, 'for locked antiphase').

note: type: Plain text
en: When True, offset-mode modifies the PWM behavior so that a PWM value of 0 results in a 50% duty cycle PWM output, a -1 value results in a 0% duty cycle and +1 results in a 100% duty cycle (with default scaling)  This mode is used by some PWM motor drives and PWM to analog converters.  Typically the direction signal is not used in this mode.
de: Bei True ändert der Offset-Modus das PWM-Verhalten so, dass ein PWM-Wert von 0 zu einem PWM-Ausgang mit 50 % Tastverhältnis führt, ein Wert von -1 zu einem Tastverhältnis von 0 % und +1 zu einem Tastverhältnis von 100 % (mit Standardskalierung) Dieser Modus wird von einigen PWM-Motorantrieben und PWM-Analogwandlern verwendet.  Normalerweise wird das Richtungssignal in diesem Modus nicht verwendet.

note: type: Plain text
en: In addition to the per-instance HAL Parameters listed above, there are a couple of HAL Parameters that affect all the pwmgen instances:
de: Zusätzlich zu den oben aufgeführten HAL-Parametern pro Instanz gibt es eine Reihe von HAL-Parametern, die alle pwmgen-Instanzen betreffen:

note: type: Plain text
en: This specifies the PWM frequency, in Hz, of all the pwmgen instances running in the PWM modes (modes 1 and 2).  This is the frequency of the variable-duty-cycle wave.  Its effective range is from 1 Hz up to 386 kHz.  Note that the max frequency is determined by the ClockHigh frequency of the Anything IO board; the 5i25 and 7I92 both have a 200 MHz clock, resulting in a 386 kHz max PWM frequency.  Other boards may have different clocks, resulting in different max PWM frequencies.  If the user attempts to set the frequency too high, it will be clipped to the max supported frequency of the board.  Frequencies below about 5 Hz are not terribly accurate, but above 5 Hz they're pretty close.  The default pwm_frequency is 20,000 Hz (20 kHz).
de: Hier wird die PWM-Frequenz in Hz für alle pwmgen-Instanzen angegeben, die in den PWM-Modi (Modus 1 und 2) laufen.  Dies ist die Frequenz der Welle mit variablem Tastverhältnis.  Ihr effektiver Bereich reicht von 1 Hz bis 386 kHz.  Beachten Sie, dass die maximale Frequenz durch die ClockHigh-Frequenz der Anything IO-Karte bestimmt wird; das 5i25 und das 7I92 haben beide einen 200-MHz-Takt, was zu einer maximalen PWM-Frequenz von 386 kHz führt.  Andere Karten können andere Taktfrequenzen haben, was zu anderen maximalen PWM-Frequenzen führt.  Wenn der Benutzer versucht, die Frequenz zu hoch einzustellen, wird sie auf die maximal unterstützte Frequenz der Karte begrenzt.  Frequenzen unter etwa 5 Hz sind nicht sehr genau, aber über 5 Hz sind sie ziemlich genau.  Die Standardeinstellung für pwm_frequency ist 20.000 Hz (20 kHz).

note: type: Plain text
en: This specifies the PDM frequency, in Hz, of all the pwmgen instances running in PDM mode (mode 3).  This is the "pulse slot frequency"; the frequency at which the pdm generator in the AnyIO board chooses whether to emit a pulse or a space.  Each pulse (and space) in the PDM pulse train has a duration of 1/pdm_frequency seconds.  For example, setting the pdm_frequency to 2e6 (2 MHz) and the duty cycle to 50% results in a 1 MHz square wave, identical to a 1 MHz PWM signal with 50% duty cycle.  The effective range of this parameter is from about 1525 Hz up to just under 200 MHz.  Note that the max frequency is determined by the ClockHigh frequency of the Anything IO board; the 5i25 and 7i92 both have a 100 MHz clock, resulting in a 100 MHz max PDM frequency.  Other boards may have different clocks, resulting in different max PDM frequencies.  If the user attempts to set the frequency too high, it will be clipped to the max supported frequency of the board.  The default pdm_frequency is 20,000 Hz (20 kHz).
de: Hier wird die PDM-Frequenz in Hz für alle pwmgen-Instanzen angegeben, die im PDM-Modus (Modus 3) laufen.  Dies ist die "Puls-Slot-Frequenz"; die Frequenz, bei der der PDM-Generator in der AnyIO-Karte entscheidet, ob er einen Puls oder ein Leerzeichen aussendet.  Jeder Impuls (und jedes Leerzeichen) in der PDM-Impulsfolge hat eine Dauer von 1/pdm_frequency Sekunden.  Wenn Sie zum Beispiel die pdm_frequency auf 2e6 (2 MHz) und das Tastverhältnis auf 50 % einstellen, erhalten Sie eine 1-MHz-Rechteckwelle, die einem 1-MHz-PWM-Signal mit 50 % Tastverhältnis entspricht.  Der effektive Bereich dieses Parameters reicht von etwa 1525 Hz bis zu knapp 200 MHz.  Beachten Sie, dass die maximale Frequenz durch die ClockHigh-Frequenz der Anything IO-Karte bestimmt wird; das 5i25 und das 7i92 haben beide einen 100-MHz-Takt, was zu einer maximalen PDM-Frequenz von 100 MHz führt.  Andere Karten können andere Taktfrequenzen haben, was zu anderen maximalen PDM-Frequenzen führt.  Wenn der Benutzer versucht, die Frequenz zu hoch einzustellen, wird sie auf die maximal unterstützte Frequenz der Karte begrenzt.  Die Standardeinstellung für pdm_frequency ist 20.000 Hz (20 kHz).

note: type: Plain text
en: Three-Phase PWM generators (3pwmgens) are intended for controlling the high-side and low-side gates in a 3-phase motor driver. The function is included to support the Mesa motor controller daughter-cards but can be used to control an IGBT or similar driver directly.  3pwmgens have names like "hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.3pwmgen.I<E<lt>InstanceE<gt>>" where E<lt>InstanceE<gt> is a 2-digit number. There will be num_3pwmgens instances, starting at 00.  Each instance allocates 7 output and one input pins on the Mesa card connectors.  Outputs are: PWM A, PWM B, PWM C, /PWM A, /PWM B, /PWM C, Enable. The first three pins are the high side drivers, the second three are their complementary low-side drivers. The enable bit is intended to control the servo amplifier.  The input bit is a fault bit, typically wired to over-current detection. When set the PWM generator is disabled.  The three phase duty-cycles are individually controllable from -Scale to +Scale.  Note that 0 corresponds to a 50% duty cycle and this is the inialization value.
de: Dreiphasen-PWM-Generatoren (3pwmgens) sind für die Steuerung der High-Side- und Low-Side-Gates in einem 3-Phasen-Motortreiber vorgesehen. Die Funktion ist zur Unterstützung der Mesa-Motor-Controller-Tochterkarten enthalten, kann aber auch zur direkten Steuerung eines IGBT- oder ähnlichen Treibers verwendet werden.  3pwmgen haben Namen wie "hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.3pwmgen.I<E<lt>InstanzE<gt>>", wobei E<lt>InstanzE<gt> eine zweistellige Zahl ist. Es wird num_3pwmgens Instanzen geben, beginnend bei 00.  Jede Instanz weist 7 Ausgangs- und einen Eingangspin auf den Anschlüssen der Mesa-Karte zu.  Die Ausgänge sind: PWM A, PWM B, PWM C, /PWM A, /PWM B, /PWM C, Enable. Die ersten drei Pins sind die High-Side-Treiber, die zweiten drei sind ihre komplementären Low-Side-Treiber. Das Freigabe-Bit dient zur Steuerung des Servoverstärkers.  Das Input-Bit ist ein Fehler-Bit, das typischerweise mit der Überstromerkennung verdrahtet ist. Wenn es gesetzt ist, dann ist der PWM-Generator deaktiviert.  Die drei Phasen-Tastverhältnisse sind einzeln von -Scale bis +Scale steuerbar.  Beachten Sie, dass 0 einem Tastverhältnis von 50% entspricht und dies der Initialisierungswert ist.

note: type: Plain text
en: (float input) A-value, B-value, C-value: The PWM command value for each phase, limited to +/- "scale". Defaults to zero which is 50% duty cycle on high-side and low-sidepins (but see the "deadtime" parameter).
de: (Float-Eingang) A-Wert, B-Wert, C-Wert: Der PWM-Befehlswert für jede Phase, begrenzt auf +/- "scale". Standardwert ist Null, was einem Tastverhältnis von 50 % auf den High-Side- und Low-Side-Pins entspricht (siehe jedoch den Parameter "deadtime").

note: type: Plain text
en: When high the PWM is enabled as long as the fault bit is not set by the external fault input pin. When low the PWM is disabled, with both high- side and low-side drivers low. This is not the same as 0 output (50% duty cycle on both sets of pins) or negative full scale (where the low side drivers are "on" 100% of the time).
de: Ist der Wert hoch, ist die PWM aktiviert, solange das Fehlerbit nicht durch den externen Fehlereingangspin gesetzt wird. Wenn der Wert niedrig ist, dann ist die PWM deaktiviert, wobei sowohl die High-Side- als auch die Low-Side-Treiber niedrig sind. Dies ist nicht dasselbe wie Ausgang 0 (50 % Tastverhältnis an beiden Pins) oder negativer Vollausschlag (wobei die Low-Side-Treiber 100 % der Zeit "an" sind).

note: type: Plain text
en: Sets the dead-time between the high-side driver turning off and the low-side driver turning on and vice-versa. Deadtime is subtracted from on time and added to off time symmetrically. For example with 20 kHz PWM (50 uSec period), 50% duty cycle and zero dead time, the PWM and NPWM outputs would be square waves (NPWM being inverted from PWM) with high times of 25 uS. With the same settings but 1 uS of deadtime, the PWM and NPWM outputs would both have high times of 23 uS (25 - (2X 1 uS), 1 uS per edge).  The value is specified in nS and defaults to a rather conservative 5000nS. Setting this parameter to too low a value could be both expensive and dangerous as if both gates are open at the same time there is effectively a short circuit across the supply.
de: Legt die Totzeit zwischen dem Ausschalten des High-Side-Treibers und dem Einschalten des Low-Side-Treibers und umgekehrt fest. Die Totzeit wird symmetrisch von der Einschaltzeit subtrahiert und zur Ausschaltzeit addiert. Bei einer 20-kHz-PWM (50 uSek Periode), einem Tastverhältnis von 50 % und einer Totzeit von Null wären die PWM- und NPWM-Ausgänge Rechteckwellen (NPWM wird von PWM invertiert) mit High-Zeiten von 25 uS. Mit den gleichen Einstellungen, aber 1 uS Totzeit, hätten die PWM- und NPWM-Ausgänge jeweils High-Zeiten von 23 uS (25 - (2X 1 uS), 1 uS pro Flanke).  Der Wert wird in nS angegeben und ist standardmäßig auf einen eher konservativen Wert von 5000 nS eingestellt. Die Einstellung dieses Parameters auf einen zu niedrigen Wert könnte sowohl kostspielig als auch gefährlich sein, denn wenn beide Gates gleichzeitig offen sind, liegt praktisch ein Kurzschluss in der Versorgung vor.

note: type: Plain text
en: Sets the half-scale of the specified 3-phase PWM generator.  PWM values from -scale to +scale are valid. Default is +/- 1.0
de: Legt die halbe Skala des angegebenen 3-Phasen-PWM-Generators fest.  Es sind PWM-Werte von -skaliert bis +skaliert gültig. Voreinstellung ist +/- 1,0

note: type: Plain text
en: Sets the polarity of the fault input pin. A value of 1 means that a fault is triggered with the pin high, and 0 means that a fault it triggered when the pin is pulled low. Default 0, fault = low so that the PWM works with the fault pin unconnected.
de: Legt die Polarität des Fehlereingangs-Pins fest. Ein Wert von 1 bedeutet, dass ein Fehler mit dem Pin hoch ausgelöst wird, und 0 bedeutet, dass ein Fehler ausgelöst wird, wenn der Pin niedrig gezogen wird. Standard 0, Fehler niedrig, so dass das PWM mit dem Fehlerpin nicht verbunden arbeitet.

note: type: Plain text
en: Sets the time during the cycle when an ADC pulse is generated.  0 = start of PWM cycle and 1 = end. Not currently useful to LinuxCNC. Default 0.5.
de: Legt den Zeitpunkt während des Zyklus fest, zu dem ein ADC-Impuls erzeugt wird.  0 = Beginn des PWM-Zyklus und 1 = Ende. Derzeit nicht nützlich für LinuxCNC. Voreinstellung 0.5.

note: type: Plain text
en: In addition the per-instance parameters above there is the following parameter that affects all instances:
de: Zusätzlich zu den oben genannten Parametern pro Instanz gibt es den folgenden Parameter, der alle Instanzen betrifft:

note: type: Plain text
en: Sets the master PWM frequency. Maximum is approx 48 kHz, minimum is 1 kHz. Defaults to 20 kHz.
de: Stellt die Master-PWM-Frequenz ein. Das Maximum liegt bei ca. 48 kHz, das Minimum bei 1 kHz. Die Standardeinstellung ist 20 kHz.

note: type: Plain text
en: stepgens have names like
    "hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.stepgen.I<E<lt>InstanceE<gt>>".
    "Instance" is a two-digit number that corresponds to the HostMot2 stepgen
    instance number.  There are "num_stepgens" instances, starting with 00.
de: stepgens haben Namen wie
    "hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.stepgen.I<E<lt>InstanceE<gt>>".
    "Instanz" ist eine zweistellige Zahl, die der HostMot2-Stepgen
    Instanznummer entspricht.  Es gibt "num_stepgens" Instanzen, beginnend mit 00.

note: type: Plain text
en: So, for example, the HAL pin that has the current position
    feedback from the first stepgen of the second 5i22 board is:
    hm2_5i22.1.stepgen.00.position-fb (this assumes that the firmware in
    that board is configured so that this HAL object is available)
de: So ist zum Beispiel der HAL-Pin, der die aktuelle Position
    Rückmeldung vom ersten Stepgen der zweiten 5I22-Karte hat, ist:
    hm2_5i22.1.stepgen.00.position-fb (dies setzt voraus, dass die Firmware in
    dieser Karte so konfiguriert ist, dass dieses HAL-Objekt verfügbar ist)

note: type: Plain text
en: The stepgen representation is modeled on the stepgen software component.
    Each stepgen instance has the following pins and parameters:
de: Die stepgen-Darstellung wird durch die stepgen-Softwarekomponente modelliert.
    Jede stepgen-Instanz hat die folgenden Pins und Parameter:

note: type: Plain text
en: Target position of stepper motion, in
    arbitrary position units.  This pin is only used when the stepgen is in
    position control mode (control-type=0).
de: Zielposition der Schrittbewegung, in
    beliebige Positionseinheiten.  Dieser Pin wird nur verwendet, wenn sich der Stepgen in
    Positionssteuerungsmodus (Control-Type=0).

note: type: Plain text
en: Target velocity of stepper motion, in
    arbitrary position units per second.  This pin is only used when the
    stepgen is in velocity control mode (control-type=1).
de: Zielgeschwindigkeit der Stepperbewegung, in
    beliebige Positionseinheiten pro Sekunde.  Dieser Pin wird nur verwendet, wenn der
    stepgen im Geschwindigkeitsregelungsmodus ist (control-type=1).

note: type: Plain text
en: Feedback position in counts (number of steps).
de: Rückmeldeposition in Zählungen (Anzahl der Schritte).

note: type: Plain text
en: Feedback velocity in arbitrary position
    units per second.
de: Feedback-Geschwindigkeit in beliebigen Positions
    Einheiten pro Sekunde.

note: type: Plain text
en: Switches between position control mode (0)
    and velocity control mode (1).  Defaults to position control (0).
de: Schaltet um zwischen Positionsstuerungsmodus (0)
    und Geschwindigkeitssteuerungsmodus (1). Standardmäßig Positionssteuerung (0).

note: type: Plain text
en: If set to True, the rising edge of the index
    input pin triggers the position clear event (if index-enable is True).
    If set to False, the falling edge triggers.
de: Wenn auf True gesetzt, löst die steigende Flanke des Index
    Eingangspins das Ereignis "Position clear" aus (wenn "index-enable" True ist).
    Bei False löst die fallende Flanke das Ereignis aus.

note: type: Plain text
en: When this pin is set to True, the step count
    (and therefore also position) are latched on the the next stepgen
    probe active edge.  At the same time, probe-enable is reset to zero to
    indicate that a latch event has occurred.
de: Wenn dieser Pin auf True gesetzt ist, wird die Schrittanzahl
    (und damit auch die Position) bei der nächsten aktiven Flanke des Stepgen
    aktiven Flanke der Sonde gespeichert.  Gleichzeitig wird probe-enable auf Null zurückgesetzt, um
    um anzuzeigen, dass ein Latch-Ereignis stattgefunden hat.

note: type: Plain text
en: If set to True, the rising edge of the probe
    input pin triggers the latch event (if probe-enable is True).  If set
    to False, the falling edge triggers.
de: Wenn auf True gesetzt, löst die steigende Flanke des Probe
    Eingangspins das Latch-Ereignis aus (wenn probe-enable True ist).  Ist der Wert
    auf False gesetzt, löst die fallende Flanke das Ereignis aus.

note: type: Plain text
en: Parameters:
de: Parameter:

note: type: Plain text
en: Converts from counts to position units.
    position = counts / position_scale
de: Konvertiert von Zählungen in Positionseinheiten.
    Position = Zählungen / Position_scale

note: type: Plain text
en: Maximum speed, in position units per second.  If set
    to 0, the driver will always use the maximum possible velocity based
    on the current step timings and position-scale.  The max velocity will
    change if the step timings or position-scale changes.  Defaults to 0.
de: Maximale Geschwindigkeit, in Positionseinheiten pro Sekunde.  Wenn der Wert
    auf 0 gesetzt, verwendet der Treiber immer die maximal mögliche Geschwindigkeit auf
    der aktuellen Schrittzeit und Positionsskala.  Die maximale Geschwindigkeit
    ändert sich, wenn sich die Schrittzeiten oder die Positionsskala ändern.  Die Voreinstellung ist 0.

note: type: Plain text
en: Duration of the step signal, in nanoseconds.
de: Dauer des Schrittsignals in Nanosekunden.

note: type: Plain text
en: Minimum interval between step signals, in
    nanoseconds.
de: Mindestintervall zwischen Schrittsignalen, in
    Nanosekunden.

note: type: Plain text
en: Minimum duration of stable Direction signal before
    a step begins, in nanoseconds.
de: Mindestdauer des stabilen Richtungssignals bevor
    ein Schritt beginnt, in Nanosekunden.

note: type: Plain text
en: Minimum duration of stable Direction signal after a
    step ends, in nanoseconds.
de: Mindestdauer des stabilen Richtungssignals nach Ende eines
    Schritts, in Nanosekunden.

note: type: Plain text
en: The names of the available channels are printed to standard output during the
    driver loading process and take the form
    hm2_E<lt>board nameE<gt>.E<lt>board indexE<gt>.bspi.E<lt>indexE<gt>, e.g., hm2_5i23.0.bspi.0.
de: Die Namen der verfügbaren Kanäle werden beim Laden des Treibers auf die Standardausgabe ausgegeben.
    Treiberladevorgangs ausgegeben und haben die Form
    hm2_E<lt>KartennameE<gt>.E<lt>KartenindexE<gt>.bspi.E<lt>indexE<gt>, z.B. hm2_5i23.0.bspi.0.

note: type: Plain text
en: The names of the available uart channels are printed to standard output during the
    driver loading process and take the form
    hm2_E<lt>board nameE<gt>.E<lt>board indexE<gt>uart.E<lt>indexE<gt>, e.g., hm2_5i23.0.uart.0.
de: Die Namen der verfügbaren uart-Kanäle werden beim Laden des Treibers auf die Standardausgabe
    Treiber-Ladevorgangs auf die Standardausgabe ausgegeben und haben die Form
    hm2_E<lt>KartennameE<gt>.E<lt>KartenindexE<gt>uart.E<lt>indexE<gt>, z.B., hm2_5i23.0.uart.0.

note: type: Plain text
en: GPIOs have names like "hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.gpio.I<E<lt>IONumE<gt>>".
    IONum is a three-digit number.  The mapping from IONum to connector and
    pin-on-that-connector is written to the syslog when the driver loads,
    and it is documented in Mesa's manual for the Anything I/O boards.
de: GPIOs haben Namen wie "hm2_I<E<lt>BoardTypeE<gt>>.I<E<lt>BoardNumE<gt>>.gpio.I<E<lt>IONumE<gt>>".
    IONum ist eine dreistellige Zahl.  Die Zuordnung von IONum zu Anschluss und
    pin-on-that-connector wird beim Laden des Treibers in das Syslog geschrieben,
    und ist im Mesa-Handbuch für die Anything I/O-Karten dokumentiert.

note: type: Plain text
en: So, for example, the HAL pin that has the current inverted input value
    read from GPIO 012 of the second 7i43 board is: hm2_7i43.1.gpio.012.in-not
    (this assumes that the firmware in that board is configured so that this
    HAL object is available)
de: So lautet zum Beispiel der HAL-Pin, der den aktuellen invertierten Eingangswert
    von GPIO 012 der zweiten 7I43-Karte gelesen hat: hm2_7i43.1.gpio.012.in-not
    (dies setzt voraus, daß die Firmware auf dieser Karte so konfiguriert ist, daß dieses
    HAL-Objekt verfügbar ist)

note: type: Plain text
en: The HAL parameter that controls whether the last GPIO of the first 5i22
    is an input or an output is: hm2_5i22.0.gpio.095.is_output (this assumes
    that the firmware in that board is configured so that this HAL object
    is available)
de: Der HAL-Parameter, der steuert, ob der letzte GPIO des ersten 5i22
    ein Eingang oder ein Ausgang ist: hm2_5i22.0.gpio.095.is_output (dies setzt voraus
    dass die Firmware auf dieser Karte so konfiguriert ist, dass dieses HAL-Objekt
    verfügbar ist)

note: type: Plain text
en: State (normal and inverted) of the hardware
    input pin.  Both full GPIO pins and IO pins used as inputs by active
    module instances have these pins.
de: Zustand (normal und invertiert) des Hardware
    Eingangs-Pin.  Sowohl vollständige GPIO-Pins als auch IO-Pins, die als Eingänge von aktiven
    Modulinstanzen verwendet werden, haben diese Pins.

note: type: Plain text
en: Value to be written (possibly inverted) to the hardware
    output pin.  Only full GPIO pins have this pin.
de: Wert, der (möglicherweise invertiert) an den Hardware-Ausgangspin
    geschrieben wird.  Nur volle GPIO-Pins haben diesen Pin.

note: type: Plain text
en: Each GPIO can have the following Parameters:
de: Jeder GPIO kann die folgenden Parameter haben:

note: type: Plain text
en: This parameter only has an effect if the
    "is_output" parameter is True.  If this parameter is False, the GPIO
    behaves as a normal output pin: the IO pin on the connector is driven
    to the value specified by the "out" HAL pin (possibly inverted), and the
    value of the "in" and "in_not" HAL pins is undefined.  If this parameter
    is True, the GPIO behaves as an open-drain pin.  Writing 0 to the "out"
    HAL pin drives the IO pin low, writing 1 to the "out" HAL pin puts the
    IO pin in a high-impedance state.  In this high-impedance state the IO
    pin floats (weakly pulled high), and other devices can drive the value;
    the resulting value on the IO pin is available on the "in" and "in_not"
    pins.  Only full GPIO pins and IO pins used as outputs by active module
    instances have this parameter.
de: Dieser Parameter hat nur dann eine Wirkung, wenn der
    Parameter "is_output" True ist.  Wenn dieser Parameter False ist, verhält sich der GPIO
    wie ein normaler Ausgangspin: Der IO-Pin am Anschluss wird auf den
    auf den durch den "out"-HAL-Pin angegebenen Wert (möglicherweise invertiert), und der
    Wert der HAL-Pins "in" und "in_not" ist undefiniert.  Wenn dieser Parameter
    True ist, verhält sich der GPIO wie ein Open-Drain-Pin.  Das Schreiben von 0 an den "out"
    HAL-Pin treibt den IO-Pin auf low, das Schreiben von 1 an den "out"-HAL-Pin setzt den
    IO-Pin in einen hochohmigen Zustand.  In diesem hochohmigen Zustand ist der IO
    Pin schwebt (schwach hochgezogen), und andere Geräte können den Wert steuern;
    der resultierende Wert am IO-Pin ist an den "in"- und "in_not"-Pins verfügbar.
    Nur vollständige GPIO-Pins und IO-Pins, die als Ausgänge von aktiven Modulen
    Instanzen verwendet werden, haben diesen Parameter.

note: type: Plain text
en: This parameter only has an effect if the
    "is_output" parameter is True.  If this parameter is True, the output
    value of the GPIO will be the inverse of the value on the "out" HAL pin.
    Only full GPIO pins and IO pins used as outputs by active module instances
    have this parameter.
de: Dieser Parameter hat nur dann eine Wirkung, wenn der
    Parameter "is_output" True ist.  Wenn dieser Parameter True ist, dann ist der Ausgangs
    der GPIO-Ausgangswert die Umkehrung des Wertes am HAL-Pin "out".
    Nur vollständige GPIO-Pins und IO-Pins, die als Ausgänge von aktiven Modulinstanzen
    haben diesen Parameter.

note: type: Plain text
en: These set the MPG encoder operating modes to 4X when True and 1X
    when False.
de: Diese setzen die Betriebsarten des MPG-Gebers auf 4X wenn True und 1X
    wenn Falsch.

note: type: Plain text
en: This read only parameter specifies the number of inputs scanned by the module.
de: Dieser schreibgeschützte Parameter gibt die Anzahl der Eingänge an, die vom Modul abgefragt werden.

note: type: Plain text
en: Creates HAL pins for the LEDs on the FPGA board.
de: Erzeugt HAL-Pins für die LEDs auf dem FPGA-Board.

note: type: TP
en: (bit in) CRE<lt>NNE<gt>
de: (Bit in) CRE<lt>NNE<gt>

note: type: Plain text
en: The pins are numbered from CR01 upwards with the name
    corresponding to the PCB silkscreen. Setting the bit to "True" or 1 lights
    the LED.
de: Die Stifte sind von CR01 aufwärts nummeriert, wobei der Name
    entsprechend dem PCB-Siebdruck. Wird das Bit auf "True" oder 1 gesetzt, leuchtet
    die LED.

note: type: Plain text
en: Each instance has a rate control pin and between 1 and 32 output pins.
de: Jede Instanz verfügt über einen Ratensteuerungspin und zwischen 1 und 32 Ausgangspins.

note: type: Plain text
en: Set the internal frequency of the SSR instance, in Hz (approximate).
    The valid range is 25 kHz to 25 MHz.  Values below the minimum will
    use the minimum, and values above the max will use the max.  1 MHz is a
    typical value, and appropriate for all Mesa cards, and is the default.
    Set to 0 to disable this SSR instance.
de: Stellen Sie die interne Frequenz der SSR-Instanz in Hz (annähernd) ein.
    Der gültige Bereich ist 25 kHz bis 25 MHz.  Bei Werten unterhalb des Minimums wird
    das Minimum und Werte über dem Maximum das Maximum verwendet.  1 MHz ist ein
    typischer Wert, der für alle Mesa-Karten geeignet ist, und ist der Standardwert.
    Setzen Sie den Wert auf 0, um diese SSR-Instanz zu deaktivieren.

note: type: Plain text
en: The state of this SSR instance's NNth output.  Set to 0 to make
    the output pins act like an open switch (no connection), set to 1 to
    make them act like a closed switch.
de: Der Zustand des NN-ten Ausgangs dieser SSR-Instanz.  Auf 0 gesetzt, damit
    Ausgangspins wie ein offener Schalter zu verhalten (keine Verbindung), auf 1 gesetzt, um
    sie sich wie ein geschlossener Schalter verhalten.

note: type: Plain text
en: Inverts the state of this SSR instance's NNth output, defaults to 0.
    When invert-NN is set to 1, SSR output NN is closed when the out-NN
    pin is 0 and open when the out-NN pin is 1.
de: Kehrt den Zustand des NN-ten Ausgangs dieser SSR-Instanz um, standardmäßig 0.
    Wenn invert-NN auf 1 gesetzt ist, wird der SSR-Ausgang NN geschlossen, wenn out-NN
    Pin ist 0 und offen, wenn der Out-NN-Pin 1 ist.

note: type: Plain text
en: When true, these indicate an attempted position move beyond the full scale value.
de: Wenn sie wahr sind, zeigen sie eine versuchte Positionsverschiebung über den Skalenendwert hinaus an.

note: type: Plain text
en: When True, these indicate an attempted velocity update move beyond the full scale value
de: Bei "True" zeigt dies an, dass versucht wurde, die Geschwindigkeit über den vollen Skalenwert hinaus zu aktualisieren.

note: type: Plain text
en: Raw 16 bit return status from galvanometer.
de: Roher 16-Bit-Rückgabestatus vom Galvanometer.

note: type: Plain text
en: Selects the DPLL timer number for pre-read sampling of the position and velocity registers.  If set to -1, pre-read sampling is disabled.
de: Wählt die DPLL-Timernummer für das Pre-Read-Sampling der Positions- und Geschwindigkeitsregister.  Ist der Wert -1, ist das Pre-Read-Sampling deaktiviert.

note: type: Plain text
en: Selects the DPLL timer number for post write update of the position and velocity registers.  If set to -1, post write update is disabled.
de: Wählt die DPLL-Timernummer für die Aktualisierung der Positions- und Geschwindigkeitsregister nach dem Schreiben aus.  Ist der Wert -1, ist die Aktualisierung nach dem Schreiben deaktiviert.

note: type: Plain text
en: The HostMot2 firmware may include a watchdog Module; if it does, the hostmot2 driver will use it.  The HAL representation of the watchdog is named "hm2_B<E<lt>BoardTypeE<gt>>.B<E<lt>BoardNumE<gt>>.watchdog".
de: Die HostMot2-Firmware kann ein Watchdog-Modul enthalten; wenn dies der Fall ist, wird der Hostmot2-Treiber es verwenden.  Die HAL-Darstellung des Watchdogs heißt "hm2_B<E<lt>BoardTypeE<gt>>.B<E<lt>BoardNumE<gt>>.watchdog".

note: type: Plain text
en: The watchdog starts out asleep and inactive.  Once you access the board the first time by running the hm2 write() HAL function (see below), the watchdog wakes up.  From them on it must be petted periodically or it will bite.  Pet the watchdog by running the hm2 write() HAL function.
de: Der Watchdog ist zunächst schlafend und inaktiv.  Sobald Sie das erste Mal auf die Karte zugreifen, indem Sie die HAL-Funktion hm2 write() ausführen (siehe unten), wacht der Watchdog auf.  Von da an muss er regelmäßig gestreichelt werden, sonst beißt er.  Streicheln Sie den Watchdog, indem Sie die HAL-Funktion hm2 write() ausführen.

note: type: Plain text
en: When the watchdog bites, all the board's I/O pins are disconnected from their Module instances and become high-impedance inputs (pulled high), and all communication with the board stops.  The state of the HostMot2 firmware modules is not disturbed (except for the configuration of the IO Pins).  Encoder instances keep counting quadrature pulses, and pwm- and step-generators keep generating signals (which are *not* relayed to the motors, because the IO Pins have become inputs).
de: Wenn der Watchdog anspricht, werden alle E/A-Pins des Boards von ihren Modulinstanzen getrennt und zu hochohmigen Eingängen (hochgezogen), und die gesamte Kommunikation mit dem Board wird unterbrochen.  Der Zustand der HostMot2-Firmwaremodule wird nicht verändert (mit Ausnahme der Konfiguration der IO-Pins).  Die Encoder-Instanzen zählen weiterhin die Quadraturimpulse, und die Pwm- und Step-Generatoren erzeugen weiterhin Signale (die *nicht* an die Motoren weitergeleitet werden, da die IO-Pins zu Eingängen geworden sind).

note: type: Plain text
en: Resetting the watchdog (by clearing the has_bit pin, see below) resumes communication and resets the I/O pins to the configuration chosen at load-time.
de: Das Zurücksetzen des Watchdogs (durch Löschen des has_bit-Pins, siehe unten) nimmt die Kommunikation wieder auf und setzt die E/A-Pins auf die zum Zeitpunkt des Ladens gewählte Konfiguration zurück.

note: type: Plain text
en: True if the watchdog has bit, False if the watchdog has not bit.  If the watchdog has bit and the has_bit bit is True, the user can reset it to False to resume operation.
de: True, wenn der Watchdog ein Bit hat, False, wenn der Watchdog kein Bit hat.  Wenn der Watchdog ein Bit hat und das has_bit-Bit True ist, kann der Benutzer es auf False zurücksetzen, um den Betrieb wieder aufzunehmen.

note: type: Plain text
en: This function will only appear if the firmware contains a BiSS, Fanuc or SSI encoder module and if the firmware does not contain a hm2dpll module (qv) or if the modparam contains num_dplls=0.  This function should be inserted first in the thread so that the encoder data is ready when the main B<hm2_XXXX.NN.read> function runs. An error message will be printed if the encoder read is not finished in time. It may be possible to avoid this by increasing the data rate. If the problem persists and if "stale" data is acceptable then the function may be placed later in the thread, allowing a full servo cycle for the data to be transferred from the devices. If available it is better to use the synchronous hm2dpll triggering function.
de: Diese Funktion erscheint nur, wenn die Firmware ein BiSS-, Fanuc- oder SSI-Drehgebermodul enthält und wenn die Firmware kein hm2dpll-Modul (qv) enthält oder wenn die modparam num_dplls=0 enthält. Diese Funktion sollte zuerst in den Thread eingefügt werden, damit die Drehgeberdaten bereit sind, wenn die Hauptfunktion B<hm2_XXXX.NN.read> läuft. Eine Fehlermeldung wird ausgegeben, wenn das Lesen des Encoders nicht rechtzeitig abgeschlossen ist. Möglicherweise kann dies durch eine Erhöhung der Datenrate vermieden werden. Wenn das Problem weiterhin besteht und "veraltete" Daten akzeptabel sind, kann die Funktion später im Thread platziert werden, um einen vollen Servozyklus für die Übertragung der Daten von den Geräten zu ermöglichen. Falls verfügbar, ist es besser, die synchrone hm2dpll-Triggerfunktion zu verwenden.

note: type: Plain text
en: B<out> tracks B<in>*B<scale> through a low-pass filter of B<gain> per period.
de: B<out> folgt B<in>*B<scale> durch einen Tiefpassfilter von B<gain> pro Periode.

note: type: TP
en: B<ilowpass.>I<N>B<.scale> float rw (default: I<1024>)
de: B<ilowpass.>I<N>B<.scale> float rw (Voreinstellung: I<1024>)

note: type: Plain text
en: A scale factor applied to the output value of the low-pass filter.
de: Ein Skalierungsfaktor, der auf den Ausgangswert des Tiefpassfilters angewendet wird.

note: type: TP
en: [KINS]JOINTS= must specify 3 or more joints (maximum 9)
de: [KINS]JOINTS= muss 3 oder mehr Verbindungen angeben (maximal 9)

note: type: TP
en: If enabled by the number of [KINS]JOINTS= specified, JOINT_3,4,5,6,7,8 correspond to coordinates A,B,C,U,V,W respectively.
de: Wenn durch die Anzahl der angegebenen [KINS]JOINTS= aktiviert, entsprechen JOINT_3,4,5,6,7,8 jeweils den Koordinaten A,B,C,U,V,W.

note: type: SS
en: genhexkins - Hexapod Kinematics
de: genhexkins - Hexapod-Kinematik

note: type: Plain text
en: Gives six degrees of freedom in position and orientation (XYZABC).  The location of base and platform joints is defined by HAL parameters.  The forward kinematics iteration is controlled by HAL pins.  (See switchkins documentation for more info)
de: Ermöglicht sechs Freiheitsgrade in Position und Orientierung (XYZABC).  Die Position der Basis- und Plattformgelenke wird durch HAL-Parameter definiert.  Die Iteration der Vorwärtskinematik wird durch HAL-Pins gesteuert.  (Siehe switchkins-Dokumentation für weitere Informationen)

note: type: Plain text
en: Parameters describing the I<N>th joint's coordinates.
de: Parameter, welche die Koordinaten des I<N>-ten Gelenks beschreiben.

note: type: Plain text
en: Maximum number of iterations spent for a converged solution during current session.
de: Maximale Anzahl der Iterationen für eine konvergente Lösung während der aktuellen Sitzung.

note: type: SS
en: genserkins - generalized serial kinematics
de: genserkins - verallgemeinerte serielle Kinematik

note: type: Plain text
en: Kinematics that can model a general serial-link manipulator with up to 6 angular joints.  (See switchkins documentation for more info)
de: Kinematik, die einen allgemeinen Manipulator mit seriellen Gliedern und bis zu 6 Winkelgelenken modellieren kann.  (Siehe switchkins-Dokumentation für weitere Informationen)

note: type: Plain text
en: The kinematics use Denavit-Hartenberg definition for the joint and links. The DH definitions are the ones used by John J Craig in "Introduction to Robotics: Mechanics and Control" The parameters for the manipulator are defined by HAL pins.  Note that this uses a convention sometimes known as "Modified DH Parameters" and this must be borne in mind when setting up the system.  https://w.wiki/NcY
de: Die Kinematik verwendet die Denavit-Hartenberg-Definition für das Gelenk und die Verbindungen. Die DH-Definitionen sind diejenigen, die von John J. Craig in "Einführung in die Robotik: Mechanik und Steuerung" verwendet werden. Die Parameter für den Manipulator werden durch HAL-Pins definiert.  Beachten Sie, dass dies eine Konvention verwendet, die manchmal als "Modifizierte DH-Parameter" bezeichnet wird und dies bei der Einrichtung des Systems berücksichtigt werden muss.  https://w.wiki/NcY

note: type: Plain text
en: Parameters describing the I<N>th joint's geometry.
de: Parameter zur Beschreibung der Geometrie des I<N>-ten Gelenks.

note: type: SS
en: maxkins - 5-axis kinematics example
de: maxkins - Beispiel einer 5-Achs-Kinematik

note: type: Plain text
en: Kinematics for Chris Radek's tabletop 5 axis mill named 'max' with tilting head (B axis) and horizintal rotary mounted to the table (C axis).  Provides UVW motion in the rotated coordinate system.  The source file, maxkins.c, may be a useful starting point for other 5-axis systems.
de: Kinematik für Chris Radeks 5-Achsen-Tischfräse namens 'max' mit schwenkbarem Kopf (B-Achse) und horizontaler Drehung auf dem Tisch (C-Achse).  Bietet UVW-Bewegung im gedrehten Koordinatensystem.  Die Quelldatei, maxkins.c, kann ein nützlicher Ausgangspunkt für andere 5-Achsen-Systeme sein.

note: type: SS
en: pentakins - Pentapod Kinematics
de: pentakins - Pentapod-Kinematik

note: type: Plain text
en: Parameters describing the I<N>th effector joint's radius and axial position.
de: Parameter, die den Radius und die axiale Position des I<N>-ten Effektorgelenks beschreiben.

note: type: Plain text
en: Minimum error value that ends iterations with converged solution.
de: Minimaler Fehlerwert, der die Iterationen mit einer konvergenten Lösung beendet.

note: type: Plain text
en: TCP offset from effector origin along Z to implement RTCP function. To avoid joints jump change tool offset only when the platform is not tilted.
de: TCP-Offset vom Effektor-Ursprung entlang Z zur Implementierung der RTCP-Funktion. Um einen Sprung der Gelenke zu vermeiden, ändern Sie den Werkzeugversatz nur, wenn die Plattform nicht gekippt ist.

note: type: SS
en: pumakins - kinematics for puma typed robots
de: pumakins - Kinematik für pumaähnliche Roboter

note: type: Plain text
en: Kinematics for a puma-style robot with 6 joints
de: Kinematik für einen pumaähnlichen Roboter mit 6 Gelenken

note: type: Plain text
en: Describe the geometry of the robot
de: Beschreiben Sie die Geometrie des Roboters

note: type: Plain text
en: a transverse, longitudinal, and rotary joint (3 joints)
de: ein Quer-, Längs- und Drehgelenk (3 Gelenke)

note: type: Plain text
en: Rotary delta robot (3 Joints)
de: Rotations-Delta-Roboter (3 Gelenke)

note: type: SS
en: rotatekins - Rotated Kinematics
de: Rotatekins - Gedrehte Kinematik

note: type: SS
en: scarakins - kinematics for SCARA-type robots
de: scarakins - Kinematik für SCARA-Roboter

note: type: Plain text
en: (See switchkins documentation for more info)
de: (Weitere Informationen finden Sie in der switchkins-Dokumentation)

note: type: Plain text
en: Vertical distance from the ground plane to the center of the inner arm.
de: Vertikaler Abstand von der Grundplatte zur Mitte des inneren Arms.

note: type: Plain text
en: Horizontal distance between joint[0] axis and joint[1] axis, ie.  the length of the inner arm.
de: Horizontaler Abstand zwischen Gelenk[0]-Achse und Gelenk[1]-Achse, d. h. die Länge des inneren Arms.

note: type: Plain text
en: Vertical distance from the center of the inner arm to the center of the outer arm.  May be positive or negative depending on the structure of the robot.
de: Vertikaler Abstand von der Mitte des inneren Arms zur Mitte des äußeren Arms. Kann je nach Aufbau des Roboters positiv oder negativ sein.

note: type: Plain text
en: Horizontal distance between joint[1] axis and joint[2] axis, ie.  the length of the outer arm.
de: Horizontaler Abstand zwischen der Achse des Gelenks[1] und der Achse des Gelenks[2], d. h. die Länge des äußeren Arms.

note: type: Plain text
en: Vertical distance from the end effector to the tooltip.  Positive means the tooltip is lower than the end effector, and is the normal case.
de: Vertikaler Abstand vom Endeffektor zum Tooltip.  Positiv bedeutet, dass der Tooltip niedriger ist als der Endeffektor, was der Normalfall ist.

note: type: Plain text
en: Horizontal distance from the centerline of the end effector (and the joints 2 and 3 axis) and the tooltip.  Zero means the tooltip is on the centerline.  Non-zero values should be positive, if negative they introduce a 180 degree offset on the value of joint[3].
de: Horizontaler Abstand zwischen der Mittellinie des Endeffektors (und der Achse der Gelenke 2 und 3) und dem Tooltip.  Null bedeutet, dass die Werkzeugspitze auf der Mittellinie liegt.  Nicht-Null-Werte sollten positiv sein, wenn sie negativ sind, führen sie zu einem 180-Grad-Versatz zum Wert des Gelenks [3].

note: type: SS
en: tripodkins - Tripod Kinematics
de: tripodkins - Dreibein (lat./engl. tripod)-Kinematik

note: type: Plain text
en: The joints represent the distance of the controlled point from three predefined locations (the motors), giving three degrees of freedom in position (XYZ)
de: Die Gelenke stellen den Abstand des kontrollierten Punktes von drei vordefinierten Orten (den Motoren) dar, was drei Freiheitsgrade in der Position (XYZ) ergibt

note: type: Plain text
en: The location of the three motors is (0,0), (Bx,0), and (Cx,Cy)
de: Die Position der drei Motoren ist (0,0), (Bx,0) und (Cx,Cy)

note: type: SS
en: xyzac-trt-kins - 5 Axis mill (Table Rotary/Tilting)
de: xyzac-trt-kins - 5-Achsen-Fräsmaschine (Tisch Dreh-/Schwenkbewegung)

note: type: Plain text
en: Tilting table (A) and horizontal rotary mounted to table (C axis)  (5 Joints 0:x,1:y,2:z,3:a,4:c) with provisions to switch between xyzac and trivkins kinematic types.  The joint mapping can be altered with the coordinates parameter in the same way as supported by trivkins.  (See switchkins documentation for more info)
de: Kipptisch (A) und horizontaler Drehtisch (C-Achse) (5 Gelenke 0:x,1:y,2:z,3:a,4:c) mit der Möglichkeit, zwischen xyzac- und trivkins-Kinematiktypen zu wechseln.  Die Gelenkzuordnung kann mit dem Koordinaten-Parameter in der gleichen Weise geändert werden, wie sie von trivkins unterstützt wird.  (Siehe switchkins-Dokumentation für weitere Informationen)

note: type: SS
en: xyzbc-trt-kins - 5 Axis mill (Table Rotary/Tilting)
de: xyzbc-trt-kins - 5-Achsen-Fräsmaschine (Tisch Dreh-/Schwenkbewegung)

note: type: Plain text
en: (5 Joints 0:x,1:y,2:z,3:b,4:c) with provisions to switch between xyzbc and trivkins kinematic types.  The joint mapping can be altered with the coordinates parameter in the same way as supported by trivkins.  (See switchkins documentation for more info)
de: (5 Gelenke 0:x,1:y,2:z,3:b,4:c) mit der Möglichkeit, zwischen den kinematischen Typen xyzbc und trivkins zu wechseln.  Die Gelenkzuordnung kann mit dem Koordinaten-Parameter in der gleichen Weise geändert werden, wie sie von trivkins unterstützt wird.  (Siehe switchkins-Dokumentation für weitere Informationen)

note: type: SS
en: 5axiskins - 5 Axis bridge mill
de: 5axiskins - 5-Achsen-Brückenfräse

note: type: Plain text
en: XYZBCW -- the W coordinate values (typically used for tool motion) are incorporated into XYZ positioning.  (Only 5 joints are needed by the kinematics module but an additional joint is needed to display W values).  (See switchkins documentation for more info)
de: XYZBCW - die W-Koordinatenwerte (typischerweise für Werkzeugbewegungen verwendet) werden in die XYZ-Positionierung einbezogen.  (Das Kinematikmodul benötigt nur 5 Gelenke, aber ein zusätzliches Gelenk wird benötigt, um die W-Werte anzuzeigen).  (Siehe switchkins-Dokumentation für weitere Informationen)

note: type: Plain text
en: By default, 5axiskins uses coordinates XYZBCW assigned consecutively to joints 0..5.  The module coordinates parameter may be used to assign multiple joints to an axis letter and/or to assign joints to additional coordinates A,U,V with a one-to-one correspondence to the assigned joints.  Example: XYZBCWYV (8 joints total numbered 0..7) uses two joints for Y (joints 1,6) and adds an additional coordinate V that has a one-to-one relation to joint 7.
de: Standardmäßig verwendet 5axiskins die Koordinaten XYZBCW, die nacheinander den Gelenken 0..5 zugeordnet sind.  Der Parameter Modulkoordinaten kann verwendet werden, um mehrere Gelenke einem Achsbuchstaben zuzuordnen und/oder um Gelenke zusätzlichen Koordinaten A,U,V mit einer Eins-zu-eins-Entsprechung zu den zugeordneten Gelenken zuzuordnen.  Beispiel: XYZBCWYV (insgesamt 8 Gelenke mit den Nummern 0..7) verwendet zwei Gelenke für Y (Gelenke 1,6) und fügt eine zusätzliche Koordinate V hinzu, die eine Eins-zu-Eins-Beziehung zu Gelenk 7 hat.

note: type: TP
en: B<latencybins.>I<N>B<.maxbinnumber> s32 in (default: I<1000>)
de: B<latencybins.>I<N>B<.maxbinnumber> s32 in (Voreinstellung: I<1000>)

note: type: TP
en: B<latencybins.>I<N>B<.availablebins> s32 out (default: I<1000>)
de: B<latencybins.>I<N>B<.availablebins> s32 out (Voreinstellung: I<1000>)

note: type: Plain text
en: lcd - Stream HAL data to an LCD screen
de: lcd - Streamen von HAL-Daten auf einen LCD-Bildschirm

note: type: TP
en: B<lcd> (requires a floating-point thread). All LCD instances are updated by the
de: B<lcd> (erfordert einen Fließkomma-Thread). Alle LCD-Instanzen werden von aktualisiert

note: type: Plain text
en: same function.
de: gleiche Funktion.

note: type: Plain text
en: The output byte stream is sent via this pin. One character is sent every thread invocation. There in no handshaking provided.
de: Über diesen Pin wird der Ausgangsbytestrom gesendet. Bei jedem Thread-Aufruf wird ein Zeichen gesendet. Es ist kein Handshaking vorgesehen.

note: type: Plain text
en: The input pins have types matched to the format string specifiers.
de: Die Eingangspins haben Typen, die mit den Format-String-Bezeichnern übereinstimmen.

note: type: Plain text
en: Selects the page number. Multiple layouts may be defined, and this pin switches between them.
de: Wählt die Seitenzahl aus. Es können mehrere Layouts definiert werden, und dieser Pin wechselt zwischen ihnen.

note: type: Plain text
en: Sets the decimal separator used for floating point numbers. The default value is 46 (0x2E) which corresponds to ".". If a comma is required then set this parameter to 44 (0x2C).
de: Legt das Dezimaltrennzeichen fest, das für Fließkommazahlen verwendet wird. Der Standardwert ist 46 (0x2E), was einem "." entspricht. Wenn ein Komma erforderlich ist, setzen Sie diesen Parameter auf 44 (0x2C).

note: type: Plain text
en: B<lcd> takes format strings much like those used in C and many other languages in the printf and scanf functions and their variants.
de: B<lcd> nimmt Formatzeichenfolgen entgegen, wie sie in C und vielen anderen Sprachen in den Funktionen printf und scanf und deren Varianten verwendet werden.

note: type: Plain text
en: The component can be configured to display an unlimited number of differently-formatted pages, which may be selected with a HAL pin.
de: Die Komponente kann so konfiguriert werden, dass sie eine unbegrenzte Anzahl von unterschiedlich formatierten Seiten anzeigt, die mit einem HAL-Pin ausgewählt werden können.

note: type: Plain text
en:  \en Inserts a clear-to-end, carriage return and line feed character. This will 
    still linefeed and clear even if an automatic wrap has occurred (lcd has no 
    knowledge of the width of the lcd display.) To print in the rightmost column it
    is necessary to allow the format to wrap and omit the \en code.
de:  \en Fügt ein Zeilenumbruch-, Wagenrücklauf- und Zeilenvorschubzeichen ein. Dies wird 
    Zeilenvorschub und Löschen auch dann, wenn ein automatischer Umbruch stattgefunden hat (lcd hat keine 
    (lcd hat keine Kenntnis von der Breite der lcd-Anzeige). Um in der Spalte ganz rechts zu drucken, ist es
    ist es notwendig, den Umbruch des Formats zuzulassen und den \en-Code wegzulassen.

note: type: Plain text
en:  \et Inserts a tab (actually 4 spaces in the current version rather than a true
    tab.)
de:  \et Fügt einen Tabulator ein (in der aktuellen Version sind es 4 Leerzeichen und nicht ein echter
    Tabulator).

note: type: Plain text
en:  \eNN inserts the character defined by the hexadecimal code NN. 
     As the ',' character is used in the format string to separate LCD instances
     it must be represented by \e2C in the format string. (the decimal
     separator is handled differently)
de:  \eNN fügt das durch den Hexadezimalcode NN definierte Zeichen ein. 
     Da das Zeichen ',' in der Formatzeichenfolge zur Trennung von LCD-Instanzen verwendet wird
     verwendet wird, muss es in der Formatzeichenfolge durch \e2C dargestellt werden. (das Dezimaltrennzeichen
     Trennzeichen wird anders gehandhabt)

note: type: Plain text
en:  \e\e Inserts a literal \e.
de:  \e\e Fügt ein buchstäbliches \e ein.

note: type: TP
en:  B<Numerical formats>
de:  B<Numerische Formate>

note: type: Plain text
en: B<lcd> differs slightly from the standard printf conventions. One significant difference is that width limits are strictly enforced to prevent the LCD display wrapping and spoiling the layout. The field width includes the sign character so that negative numbers will often have a smaller valid range than positive.  Numbers that do not fit in the specified width are displayed as a line of asterisks (B<********>).
de: B<lcd> unterscheidet sich geringfügig von den standardmäßigen printf-Konventionen. Ein wesentlicher Unterschied besteht darin, dass die Breitenbegrenzungen strikt eingehalten werden, um zu verhindern, dass die LCD-Anzeige umbricht und das Layout beeinträchtigt. Die Feldbreite schließt das Vorzeichen ein, so dass negative Zahlen oft einen kleineren gültigen Bereich haben als positive.  Zahlen, die nicht in die angegebene Breite passen, werden als eine Zeile mit Sternchen angezeigt (B<********>).

note: type: Plain text
en: Each format begins with a "%" symbol. (For a literal % use "%%").  Immediately after the % the following modifiers may be used:
de: Jedes Format beginnt mit einem "%"-Symbol. (Für ein buchstäbliches % verwenden Sie "%%").  Unmittelbar nach dem %-Zeichen können die folgenden Modifikatoren verwendet werden:

note: type: Plain text
en: " " (space) Pad the number to the specified width with spaces. This is the default and is not strictly necessary.
de: " " (Leerzeichen) Füllt die Zahl in der angegebenen Breite mit Leerzeichen auf. Dies ist die Standardeinstellung und nicht unbedingt erforderlich.

note: type: Plain text
en: "0" Pad the number to the specified width with the numeral 0.
de: "0" Die Zahl wird mit der Zahl 0 auf die angegebene Breite aufgefüllt.

note: type: Plain text
en: "+" Force display of a + symbol before positive numbers. This (like the - sign)  will appear immediately to the left of the digits for a space-padded number and in the extreme left position for a 0-padded number.
de: "+" Erzwingt die Anzeige eines +-Zeichens vor positiven Zahlen. Dieses (wie auch das --Zeichen) erscheint bei einer Zahl mit Leerzeichen unmittelbar links von den Ziffern und bei einer Zahl mit 0 an der äußersten linken Position.

note: type: Plain text
en: "1234567890" A numerical entry (other than the leading 0 above)  defines the total number of characters to display including the decimal separator and the sign. Whilst this number can be as many digits as required the maximum field width is 20 characters. The inherent precision of the "double" data type means that more than 14 digits will tend to show errors in the least significant digits. The integer data types will never fill more than 10 decimal digits.
de: "1234567890" Eine numerische Eingabe (außer der führenden 0 oben) definiert die Gesamtzahl der anzuzeigenden Zeichen einschließlich des Dezimaltrennzeichens und des Vorzeichens. Diese Zahl kann so viele Ziffern wie nötig enthalten, die maximale Feldbreite beträgt jedoch 20 Zeichen. Die inhärente Präzision des Datentyps "double" bedeutet, dass bei mehr als 14 Ziffern Fehler in den niedrigstwertigen Ziffern auftreten können. Die ganzzahligen Datentypen füllen nie mehr als 10 Dezimalstellen.

note: type: Plain text
en: Following the width specifier should be the decimal specifier. This can only be a full-stop character (.) as the comma (,) is used as the instance separator.  Currently lcd does not access the locale information to determine the correct separator but the B<decimal-separator> HAL parameter can be used to choose any desired separator.
de: Nach dem width specifier sollte der decimal specifier stehen. Dies kann nur ein Punkt (.) sein, da das Komma (,) als Instanzentrennzeichen verwendet wird.  Derzeit greift lcd nicht auf die Lokalisierungs-Informationen zu, um das richtige Trennzeichen zu bestimmen, aber der HAL-Parameter B<decimal-separator> kann verwendet werden, um ein beliebiges Trennzeichen zu wählen.

note: type: Plain text
en: Following the decimal separator should be a number that determines how many places of decimals to display. This entry is ignored in the case of integer formats.
de: Nach dem Dezimaltrennzeichen sollte eine Zahl stehen, die angibt, wie viele Dezimalstellen angezeigt werden sollen. Bei ganzzahligen Formaten wird dieser Eintrag ignoriert.

note: type: Plain text
en: All the above modifiers are optional, but to specify a decimal precision the decimal point must precede the precision, e.g., as in "%.3f".  The default decimal precision is 4.
de: Alle oben genannten Modifikatoren sind optional, aber um eine Dezimalgenauigkeit anzugeben, muss der Dezimalpunkt vor der Genauigkeit stehen, z. B. wie in "%.3f".  Die Standard-Dezimalpräzision ist 4.

note: type: Plain text
en: The numerical formats supported are:
de: Die unterstützten Zahlenformate sind:

note: type: Plain text
en: Smooth out acceleration this many periods before reaching input or max/min limit.  Higher values avoid oscillation, but will accelerate slightly more slowly.
de: Glätten Sie die Beschleunigung so viele Perioden vor Erreichen der Eingangs- oder Max/Min-Grenze.  Höhere Werte vermeiden Schwingungen, beschleunigen aber etwas langsamer.

note: type: Plain text
en: Read the inputs and toggle the output bit.
de: Lesen der Inputs und Umschalten des Output-Bits.

note: type: Plain text
en: This is a named AND circuit with two inputs and one output.
de: Es handelt sich um eine so genannte UND (engl. AND)-Schaltung mit zwei Eingängen und einem Ausgang.

note: type: Plain text
en: B<gain> pin setting
de: B<Gain>-Pin-Einstellung

note: type: Plain text
en: The digital filter implemented is equivalent to a unity-gain continuous-time single-pole low-pass filter that is preceded by a zero-order-hold and sampled at a fixed period.  For a pole at B<-a> (radians/seconds) the corresponding continuous-time lowpass filter LaPlace transfer function is:
de: Der implementierte digitale Filter entspricht einem zeitkontinuierlichen Einpol-Tiefpassfilter mit Einheitsverstärkung, dem eine Haltezeit nullter Ordnung vorangestellt ist und der mit einer festen Periode abgetastet wird.  Für einen Pol bei B<-a> (Radiant/Sekunde) ist die entsprechende zeitkontinuierliche LaPlace-Übertragungsfunktion des Tiefpassfilters:

note: type: Plain text
en: For a sampling period B<T> (seconds), the gain for this Hal lowpass component is:
de: Für eine Abtastperiode B<T> (Sekunden) beträgt die Verstärkung für diese Hal-Tiefpasskomponente:

note: type: Plain text
en: B<gain = 1 - e^(-a * T)>
de: B<Verstärkung = 1 - e^(-a * T)>

note: type: Plain text
en: B<Examples:>
         T = 0.001 seconds (typical servo thread period)
         a = (2*pi*100)    (B<100Hz> bandwidth single pole)
      gain = B<0.466>
de: B<Beispiele:>
         T = 0,001 Sekunden (typische Servogewindeperiode)
         a = (2*pi*100) (B<100Hz> Bandbreite Einzelpol)
      Verstärkung = B<0,466>

note: type: Plain text
en:      T = 0.001 seconds (typical servo thread period)
         a = (2*pi*10)     ( B<10Hz> bandwidth single pole)
      gain = B<0.0609>
de:      T = 0,001 Sekunden (typische Servogewindeperiode)
         a = (2*pi*10) ( B<10Hz> Bandbreite Einzelpol)
      Verstärkung = B<0,0609>

note: type: Plain text
en: B<lut5> constructs a logic function with up to 5 inputs using a B<l>ook-B<u>p B<t>able. The value for B<function> can be determined by writing the truth table, and computing the sum of B<all> the B<weights> for which the output value would be TRUE.  The weights are hexadecimal not decimal so hexadecimal math must be used to sum the weights. A wiki page has a calculator to assist in computing the proper value for function.
de: B<lut5> konstruiert eine logische Funktion mit bis zu 5 Eingängen unter Verwendung einer B<l>ook-B<u>p B<t>Tabelle. Der Wert für B<Funktion> kann bestimmt werden, indem man die Wahrheitstabelle schreibt und die Summe von B<alle> der B<Gewichte> berechnet, für die der Ausgangswert WAHR wäre.  Die Gewichte sind hexadezimal und nicht dezimal, also muss hexadezimale Mathematik verwendet werden, um die Gewichte zu summieren. Eine Wiki-Seite enthält einen Rechner, der bei der Berechnung des richtigen Werts für die Funktion hilft.

note: type: Plain text
en: Note that LUT5 will generate any of the 4,294,967,296 logical functions of 5 inputs so B<AND>, B<OR>, B<NAND>, B<NOR>, B<XOR> and every other combinatorial function is possible.
de: Man beachte, dass LUT5 jede der 4.294.967.296 logischen Funktionen von 5 Eingängen erzeugen kann, so dass B<AND>, B<OR>, B<NAND>, B<NOR>, B<XOR> und jede andere kombinatorische Funktion möglich ist.

note: type: Plain text
en: A 5-input I<and> function is TRUE only when all the inputs are true, so the correct value for B<function> is B<0x80000000>.
de: Eine Funktion mit 5 Eingängen I<und> ist nur dann WAHR, wenn alle Eingänge wahr sind. Der richtige Wert für B<Funktion> ist also B<0x80000000>.

note: type: Plain text
en: A 2-input I<or> function would be the sum of B<0x2> + B<0x4> + B<0x8>, so the correct value for B<function> is B<0xe>.
de: Eine I<or>-Funktion mit 2 Eingängen wäre die Summe von B<0x2> + B<0x4> + B<0x8>, der richtige Wert für B<Funktion> ist also B<0xe>.

note: type: Plain text
en: A 5-input I<or> function is TRUE whenever any of the inputs are true, so the correct value for B<function> is B<0xfffffffe>. Because every weight except B<0x1> is true the function is the sum of every line except the first one.
de: Eine I<or>-Funktion mit 5 Eingängen ist immer dann WAHR, wenn einer der Eingänge wahr ist. Der richtige Wert für B<Funktion> ist also B<0xfffffffe>. Da jedes Gewicht außer B<0x1> wahr ist, ergibt sich die Funktion als Summe aller Zeilen außer der ersten.

note: type: Plain text
en: A 2-input I<xor> function is TRUE whenever exactly one of the inputs is true, so the correct value for B<function> is B<0x6>.  Only B<in-0> and B<in-1> should be connected to signals, because if any other bit is B<TRUE> then the output will be B<FALSE>.
de: Eine I<xor>-Funktion mit zwei Eingängen ist immer dann WAHR, wenn genau einer der Eingänge wahr ist. Der richtige Wert für B<Funktion> ist also B<0x6>.  Nur B<in-0> und B<in-1> sollten mit Signalen verbunden werden, denn wenn ein anderes Bit B<TRUE> ist, dann ist der Ausgang B<FALSE>.

note: type: groff code
en: .ie  '\*[.T]'html' \{\
    .HTML \
    <STYLE> \
    #weight TD { text-align: center; padding-left: .5ex; padding-right: .5ex } \
    #weight TH { text-align: center; padding-left: .5ex; padding-right: .5ex } \
    #weight TD.W { text-align: right; } \
    </STYLE> \
    <TABLE ID="weight" STYLE="border: 1px solid black; border-collapse: collapse"> \
        <COL SPAN=5 STYLE="margin: .2ex"><COL SPAN=1 STYLE="border-left: 1px solid black"> \
    <TR STYLE="border-bottom: 1px solid black"> \
        <TH COLSPAN=6>Weights for each line of truth table \
    <TR STYLE="border-bottom: 1px solid black"> \
        <TH>Bit 4<TH>Bit 3<TH>Bit 2<TH>Bit 1<TH>Bit 0<TH> Weight \
    <TR><TD>0<TD>0<TD>0<TD>0<TD>0<TD CLASS="w">0x1 \
    <TR><TD>0<TD>0<TD>0<TD>0<TD>1<TD CLASS="w">0x2 \
    <TR><TD>0<TD>0<TD>0<TD>1<TD>0<TD CLASS="w">0x4 \
    <TR><TD>0<TD>0<TD>0<TD>1<TD>1<TD CLASS="w">0x8 \
    <TR><TD>0<TD>0<TD>1<TD>0<TD>0<TD CLASS="w">0x10 \
    <TR><TD>0<TD>0<TD>1<TD>0<TD>1<TD CLASS="w">0x20 \
    <TR><TD>0<TD>0<TD>1<TD>1<TD>0<TD CLASS="w">0x40 \
    <TR><TD>0<TD>0<TD>1<TD>1<TD>1<TD CLASS="w">0x80 \
    <TR><TD>0<TD>1<TD>0<TD>0<TD>0<TD CLASS="w">0x100 \
    <TR><TD>0<TD>1<TD>0<TD>0<TD>1<TD CLASS="w">0x200 \
    <TR><TD>0<TD>1<TD>0<TD>1<TD>0<TD CLASS="w">0x400 \
    <TR><TD>0<TD>1<TD>0<TD>1<TD>1<TD CLASS="w">0x800 \
    <TR><TD>0<TD>1<TD>1<TD>0<TD>0<TD CLASS="w">0x1000 \
    <TR><TD>0<TD>1<TD>1<TD>0<TD>1<TD CLASS="w">0x2000 \
    <TR><TD>0<TD>1<TD>1<TD>1<TD>0<TD CLASS="w">0x4000 \
    <TR><TD>0<TD>1<TD>1<TD>1<TD>1<TD CLASS="w">0x8000 \
    <TR><TD>1<TD>0<TD>0<TD>0<TD>0<TD CLASS="w">0x10000 \
    <TR><TD>1<TD>0<TD>0<TD>0<TD>1<TD CLASS="w">0x20000 \
    <TR><TD>1<TD>0<TD>0<TD>1<TD>0<TD CLASS="w">0x40000 \
    <TR><TD>1<TD>0<TD>0<TD>1<TD>1<TD CLASS="w">0x80000 \
    <TR><TD>1<TD>0<TD>1<TD>0<TD>0<TD CLASS="w">0x100000 \
    <TR><TD>1<TD>0<TD>1<TD>0<TD>1<TD CLASS="w">0x200000 \
    <TR><TD>1<TD>0<TD>1<TD>1<TD>0<TD CLASS="w">0x400000 \
    <TR><TD>1<TD>0<TD>1<TD>1<TD>1<TD CLASS="w">0x800000 \
    <TR><TD>1<TD>1<TD>0<TD>0<TD>0<TD CLASS="w">0x1000000 \
    <TR><TD>1<TD>1<TD>0<TD>0<TD>1<TD CLASS="w">0x2000000 \
    <TR><TD>1<TD>1<TD>0<TD>1<TD>0<TD CLASS="w">0x4000000 \
    <TR><TD>1<TD>1<TD>0<TD>1<TD>1<TD CLASS="w">0x8000000 \
    <TR><TD>1<TD>1<TD>1<TD>0<TD>0<TD CLASS="w">0x10000000 \
    <TR><TD>1<TD>1<TD>1<TD>0<TD>1<TD CLASS="w">0x20000000 \
    <TR><TD>1<TD>1<TD>1<TD>1<TD>0<TD CLASS="w">0x40000000 \
    <TR><TD>1<TD>1<TD>1<TD>1<TD>1<TD CLASS="w">0x80000000 \
    </TABLE>
    \}
    .el \{\
    .TS
    box tab(;);
    cb s s s s s
    cb cb cb cb cb | cb
    c  c  c  c  c  | r.
    Weights for each line of truth table
    _
    Bit 4;Bit 3;Bit 2;Bit 1;Bit 0; Weight
    _
    0;0;0;0;0;0x1
    0;0;0;0;1;0x2
    0;0;0;1;0;0x4
    0;0;0;1;1;0x8
    0;0;1;0;0;0x10
    0;0;1;0;1;0x20
    0;0;1;1;0;0x40
    0;0;1;1;1;0x80
    0;1;0;0;0;0x100
    0;1;0;0;1;0x200
    0;1;0;1;0;0x400
    0;1;0;1;1;0x800
    0;1;1;0;0;0x1000
    0;1;1;0;1;0x2000
    0;1;1;1;0;0x4000
    0;1;1;1;1;0x8000
    1;0;0;0;0;0x10000
    1;0;0;0;1;0x20000
    1;0;0;1;0;0x40000
    1;0;0;1;1;0x80000
    1;0;1;0;0;0x100000
    1;0;1;0;1;0x200000
    1;0;1;1;0;0x400000
    1;0;1;1;1;0x800000
    1;1;0;0;0;0x1000000
    1;1;0;0;1;0x2000000
    1;1;0;1;0;0x4000000
    1;1;0;1;1;0x8000000
    1;1;1;0;0;0x10000000
    1;1;1;0;1;0x20000000
    1;1;1;1;0;0x40000000
    1;1;1;1;1;0x80000000
    .TE
    \}
de: .ie  '\*[.T]'html' \{\
    .HTML \
    <STYLE> \
    #weight TD { text-align: center; padding-left: .5ex; padding-right: .5ex } \
    #weight TH { text-align: center; padding-left: .5ex; padding-right: .5ex } \
    #weight TD.W { text-align: right; } \
    </STYLE> \
    <TABLE ID="weight" STYLE="border: 1px solid black; border-collapse: collapse"> \
        <COL SPAN=5 STYLE="margin: .2ex"><COL SPAN=1 STYLE="border-left: 1px solid black"> \
    <TR STYLE="border-bottom: 1px solid black"> \
        <TH COLSPAN=6>Gewichtung jeder Zeile der Wahrheitstabelle \
    <TR STYLE="border-bottom: 1px solid black"> \
        <TH>Bit 4<TH>Bit 3<TH>Bit 2<TH>Bit 1<TH>Bit 0<TH> Weight \
    <TR><TD>0<TD>0<TD>0<TD>0<TD>0<TD CLASS="w">0x1 \
    <TR><TD>0<TD>0<TD>0<TD>0<TD>1<TD CLASS="w">0x2 \
    <TR><TD>0<TD>0<TD>0<TD>1<TD>0<TD CLASS="w">0x4 \
    <TR><TD>0<TD>0<TD>0<TD>1<TD>1<TD CLASS="w">0x8 \
    <TR><TD>0<TD>0<TD>1<TD>0<TD>0<TD CLASS="w">0x10 \
    <TR><TD>0<TD>0<TD>1<TD>0<TD>1<TD CLASS="w">0x20 \
    <TR><TD>0<TD>0<TD>1<TD>1<TD>0<TD CLASS="w">0x40 \
    <TR><TD>0<TD>0<TD>1<TD>1<TD>1<TD CLASS="w">0x80 \
    <TR><TD>0<TD>1<TD>0<TD>0<TD>0<TD CLASS="w">0x100 \
    <TR><TD>0<TD>1<TD>0<TD>0<TD>1<TD CLASS="w">0x200 \
    <TR><TD>0<TD>1<TD>0<TD>1<TD>0<TD CLASS="w">0x400 \
    <TR><TD>0<TD>1<TD>0<TD>1<TD>1<TD CLASS="w">0x800 \
    <TR><TD>0<TD>1<TD>1<TD>0<TD>0<TD CLASS="w">0x1000 \
    <TR><TD>0<TD>1<TD>1<TD>0<TD>1<TD CLASS="w">0x2000 \
    <TR><TD>0<TD>1<TD>1<TD>1<TD>0<TD CLASS="w">0x4000 \
    <TR><TD>0<TD>1<TD>1<TD>1<TD>1<TD CLASS="w">0x8000 \
    <TR><TD>1<TD>0<TD>0<TD>0<TD>0<TD CLASS="w">0x10000 \
    <TR><TD>1<TD>0<TD>0<TD>0<TD>1<TD CLASS="w">0x20000 \
    <TR><TD>1<TD>0<TD>0<TD>1<TD>0<TD CLASS="w">0x40000 \
    <TR><TD>1<TD>0<TD>0<TD>1<TD>1<TD CLASS="w">0x80000 \
    <TR><TD>1<TD>0<TD>1<TD>0<TD>0<TD CLASS="w">0x100000 \
    <TR><TD>1<TD>0<TD>1<TD>0<TD>1<TD CLASS="w">0x200000 \
    <TR><TD>1<TD>0<TD>1<TD>1<TD>0<TD CLASS="w">0x400000 \
    <TR><TD>1<TD>0<TD>1<TD>1<TD>1<TD CLASS="w">0x800000 \
    <TR><TD>1<TD>1<TD>0<TD>0<TD>0<TD CLASS="w">0x1000000 \
    <TR><TD>1<TD>1<TD>0<TD>0<TD>1<TD CLASS="w">0x2000000 \
    <TR><TD>1<TD>1<TD>0<TD>1<TD>0<TD CLASS="w">0x4000000 \
    <TR><TD>1<TD>1<TD>0<TD>1<TD>1<TD CLASS="w">0x8000000 \
    <TR><TD>1<TD>1<TD>1<TD>0<TD>0<TD CLASS="w">0x10000000 \
    <TR><TD>1<TD>1<TD>1<TD>0<TD>1<TD CLASS="w">0x20000000 \
    <TR><TD>1<TD>1<TD>1<TD>1<TD>0<TD CLASS="w">0x40000000 \
    <TR><TD>1<TD>1<TD>1<TD>1<TD>1<TD CLASS="w">0x80000000 \
    </TABLE>
    \}
    .el \{\
    .TS
    box tab(;);
    cb s s s s s
    cb cb cb cb cb | cb
    c  c  c  c  c  | r.
    Gewichtung jeder Zeile der Wahrheitstabelle
    _
    Bit 4;Bit 3;Bit 2;Bit 1;Bit 0; Gewichtung
    _
    0;0;0;0;0;0x1
    0;0;0;0;1;0x2
    0;0;0;1;0;0x4
    0;0;0;1;1;0x8
    0;0;1;0;0;0x10
    0;0;1;0;1;0x20
    0;0;1;1;0;0x40
    0;0;1;1;1;0x80
    0;1;0;0;0;0x100
    0;1;0;0;1;0x200
    0;1;0;1;0;0x400
    0;1;0;1;1;0x800
    0;1;1;0;0;0x1000
    0;1;1;0;1;0x2000
    0;1;1;1;0;0x4000
    0;1;1;1;1;0x8000
    1;0;0;0;0;0x10000
    1;0;0;0;1;0x20000
    1;0;0;1;0;0x40000
    1;0;0;1;1;0x80000
    1;0;1;0;0;0x100000
    1;0;1;0;1;0x200000
    1;0;1;1;0;0x400000
    1;0;1;1;1;0x800000
    1;1;0;0;0;0x1000000
    1;1;0;0;1;0x2000000
    1;1;0;1;0;0x4000000
    1;1;0;1;1;0x8000000
    1;1;1;0;0;0x10000000
    1;1;1;0;1;0x20000000
    1;1;1;1;0;0x40000000
    1;1;1;1;1;0x80000000
    .TE
    \}

note: type: Plain text
en: maj3 - Compute the majority of 3 inputs
de: maj3 - Berechne die Mehrheit von 3 Eingaben

note: type: Plain text
en: match8 - 8-bit binary match detector
de: match8 - 8-Bit-Binärdetektor für Übereinstimmungen

note: type: TP
en: B<match8.>I<N>B<.in> bit in (default: I<TRUE>)
de: B<match8.>I<N>B<.in> bit in (Standard: I<TRUE>)

note: type: Plain text
en: cascade input - if false, output is false regardless of other inputs
de: Kaskadeneingang - wenn falsch, ist der Ausgang unabhängig von anderen Eingängen falsch

note: type: Plain text
en: true only if in is true and a[m] matches b[m] for m = 0 thru 7
de: nur wahr, wenn in wahr ist und a[m] mit b[m] für m = 0 bis 7 übereinstimmt

note: type: Plain text
en: matrix_kb - Convert integers to HAL pins. Optionally scan a matrix of IO ports to create those integers.
de: matrix_kb - Konvertiert Ganzzahlen in HAL-Pins. Optionales Scannen einer Matrix von IO-Ports, um diese Ganzzahlen zu erzeugen.

note: type: Plain text
en: If the B<s> option is specified then a set of output rows will be cyclically toggled, and a set of input columns will be scanned.
de: Wenn die Option B<s> angegeben ist, wird ein Satz von Ausgabezeilen zyklisch umgeschaltet und ein Satz von Eingabespalten gescannt.

note: type: Plain text
en: The B<names> parameter is optional, but if used then the HAL pins and functions will use the specified names rather than the default ones. This can be useful for readbility and 2-pass HAL parsing.
de: Der Parameter B<names> ist optional, aber wenn er verwendet wird, verwenden die HAL-Pins und -Funktionen die angegebenen Namen und nicht die Standardnamen. Dies kann für die Lesbarkeit und das 2-Pass-HAL-Parsing nützlich sein.

note: type: Plain text
en: There must be no spaces in the parameter lists.
de: In den Parameterlisten dürfen keine Leerzeichen vorkommen.

note: type: Plain text
en: This component was written to convert matrix keyboard scancodes into HAL pins.  However, it might also find uses in converting integers from 0 to N into N HAL pins.
de: Diese Komponente wurde geschrieben, um Matrix-Tastatur-Scancodes in HAL-Pins zu konvertieren.  Sie kann jedoch auch für die Umwandlung von ganzen Zahlen von 0 bis N in N HAL-Pins verwendet werden.

note: type: Plain text
en: The component can work in two ways, and the HAL pins created vary according to mode.
de: Die Komponente kann auf zwei Arten funktionieren, und die erzeugten HAL-Pins variieren je nach Modus.

note: type: Plain text
en: The pin corresponding to the key at row R column C of the matrix.
de: Der Pin, der dem Schlüssel (engl. key) in Zeile R Spalte C der Matrix entspricht.

note: type: TP
en: B<matrix_kb.>I<N>B<.keycode> unsigned in or out depending on mode.
de: B<matrix_kb.>I<N>B<.keycode> unsigned in oder out je nach Modus.

note: type: Plain text
en: This pin should be connected to the scancode generator if hardware such as a 7i73 is being used. In this mode it is an input pin. In the internally-generated scanning mode this pin is an output, but will not normally be connected.
de: Dieser Pin sollte mit dem Scancode-Generator verbunden werden, wenn eine Hardware wie z.B. ein 7I73 verwendet wird. In diesem Modus ist er ein Eingangspin. Im intern generierten Scanning-Modus ist dieser Pin ein Ausgang, wird aber normalerweise nicht angeschlossen.

note: type: Plain text
en: The row scan drive pins.Should be connected to external hardware pins connected to the keypad.
de: Die Pins für die Zeilenabtastung sollten an externe Hardwarepins angeschlossen werden, die mit dem Tastenfeld verbunden sind.

note: type: TP
en: B<matrix_kb.>I<N>B<.key_rollover> unsigned r/w (default 2)
de: B<matrix_kb.>I<N>B<.key_rollover> unsigned r/w (Voreinstellung 2)

note: type: Plain text
en: With most matrix keyboards the scancodes are only unambiguous with 1 or 2 keys pressed. With more keys pressed phantom keystrokes can appear. Some keyboards are optimised to reduce this problem, and some have internal diodes so that any number of keys may be pressed simultaneously. Increase the value of this parameter if such a keyboard is connected, or if phantom keystrokes are more acceptable than only two keys being active at one time.
de: Bei den meisten Matrixtastaturen sind die Scancodes nur bei 1 oder 2 gedrückten Tasten eindeutig. Bei mehr gedrückten Tasten können Phantomtastenanschläge auftreten. Einige Tastaturen sind optimiert, um dieses Problem zu verringern, und einige haben interne Dioden, so dass eine beliebige Anzahl von Tasten gleichzeitig gedrückt werden kann. Erhöhen Sie den Wert dieses Parameters, wenn eine solche Tastatur angeschlossen ist, oder wenn Phantomtastenanschläge akzeptabler sind als nur zwei gleichzeitig aktive Tasten.

note: type: TP
en: B<matrix_kb.>I<N>B<.negative-logic> bit r/w (default 1) only in scan mode
de: B<matrix_kb.>I<N>B<.negative-logic> bit r/w (Standard 1) nur im Scan-Modus

note: type: Plain text
en: When no keys are pressed a typical digital input will float high. The input will then be pulled low by the keypad when the corresponding poll line is low.  Set this parameter to 0 if the IO in use requires one row at a time to be high, and a high input corresponds to a button press.
de: Wenn keine Tasten gedrückt werden, wird ein typischer digitaler Eingang auf High gesetzt. Der Eingang wird dann von der Tastatur auf low gezogen, wenn die entsprechende Poll-Leitung low ist.  Setzen Sie diesen Parameter auf 0, wenn das verwendete IO jeweils nur eine Zeile auf High setzen muss und ein High-Eingang einem Tastendruck entspricht.

note: type: Plain text
en: max31855 - Support for the MAX31855 Thermocouple-to-Digital converter using bitbanged spi
de: max31855 - Unterstützung für den MAX31855 Thermoelement-zu-Digital-Wandler mit bitbanged spi

note: type: Plain text
en: The component requires at least 3 pins to bitbang spi protocol, for example:
de: Das Bauteil benötigt mindestens 3 Pins, um z.B. das Bitbang-Spi-Protokoll zu verwenden:

note: type: Plain text
en: The MAX31855 supports a range of -270C to 1800C, however linearization data is only available for the -200C to 1350C range, beyond which raw temperature is returned.
de: Der MAX31855 unterstützt einen Bereich von -270C bis 1800C, Linearisierungsdaten sind jedoch nur für den Bereich von -200C bis 1350C verfügbar, darüber hinaus wird die Rohtemperatur zurückgegeben.

note: type: Plain text
en: Temperature pins are provided for readings in Celsius, Fahrenheit and Kelvin, temperature values are not updated while a fault condition is present.
de: Temperaturstifte sind für Messwerte in Celsius, Fahrenheit und Kelvin vorgesehen. Die Temperaturwerte werden nicht aktualisiert, solange ein Fehlerzustand vorliegt.

note: type: Plain text
en: The personality parameter is used to indicate the number of sensors.  Multiple sensors share the clk and cs pins, but connect to discrete data input pins.  A maximum of 15 sensors are supported.
de: Der Parameter "personality" wird zur Angabe der Anzahl der Sensoren verwendet.  Mehrere Sensoren teilen sich die clk- und cs-Pins, werden aber an diskrete Dateneingangs-Pins angeschlossen.  Es werden maximal 15 Sensoren unterstützt.

note: type: TP
en: B<max31855.>I<N>B<.bitbang-spi> (requires a floating-point thread)
de: B<max31855.>I<N>B<.bitbang-spi> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Pin(s) connected to data out.
de: Pin(s) mit Datenausgang verbunden.

note: type: Plain text
en: Pin connected to cs, pulled low to shift data, pulled high for data refresh.
de: Pin mit cs verbunden, zum Verschieben von Daten auf low gezogen, zur Datenaktualisierung auf high gezogen.

note: type: Plain text
en: Pin connected to clk.
de: Pin verbunden mit clk.

note: type: Plain text
en: Temperature output values in Celsius.
de: Temperatur-Ausgangswerte in Celsius.

note: type: Plain text
en: Temperature in Fahrenheit.
de: Temperatur in Fahrenheit.

note: type: Plain text
en: Temperature in Kelvin.
de: Temperatur in Kelvin.

note: type: Plain text
en: Fault condition detected.
de: Fehlerzustand erkannt.

note: type: Plain text
en: Fault flags: 0x1 = open sensor, 0x2 short to gnd, 0x3 short to vcc.
de: Fehler-Flags: 0x1 = offener Sensor, 0x2 Kurzschluss mit GND, 0x3 Kurzschluss mit Vcc.

note: type: Plain text
en: mesa_7i65 - Support for the Mesa 7i65 Octuple Servo Card
de: mesa_7i65 - Unterstützung für die Mesa 7i65 Achtfach-Servokarte

note: type: Plain text
en: The component takes parameters in the form of a comma-separated list of bspi (buffered SPI) instance names, for example:
de: Die Komponente nimmt Parameter in Form einer kommagetrennten Liste von bspi (buffered SPI) Instanznamen entgegen:

note: type: Plain text
en: The BSPI instances are printed to the dmesg buffer during the Hostmot2 setup sequence, one for each bspi instance included in the bitfile loaded to each installed card during the Hostmot2 setup sequence. Type "dmesg" at the terminal prompt to view the output.
de: Die BSPI-Instanzen werden während der Hostmot2-Setup-Sequenz in den dmesg-Puffer gedruckt, eine für jede BSPI-Instanz, die in der Bitdatei enthalten ist, die während der Hostmot2-Setup-Sequenz auf jede installierte Karte geladen wird. Geben Sie "dmesg" an der Terminal-Eingabeaufforderung ein, um die Ausgabe zu sehen.

note: type: Plain text
en: Analogue output values. The value will be limited to a -1.0 to +1.0 range
de: Analoge Ausgangswerte. Der Wert wird auf einen Bereich von -1,0 bis +1,0 begrenzt.

note: type: Plain text
en: Analogue outputs read by the 7i65 (in Volts)
de: Vom 7i65 gelesene analoge Ausgänge (in Volt)

note: type: Plain text
en: Miscellaneous Digital Inputs
de: Verschiedene digitale Eingänge

note: type: Plain text
en: Amplifier-enable control pins
de: Verstärker-aktivierbare Steuerpins

note: type: Plain text
en: Indicates the status of the 7i65 Watchdog (which is separate from the FPGA card watchdog
de: Zeigt den Status des 7i65-Watchdogs an (der vom Watchdog der FPGA-Karte getrennt ist)

note: type: Plain text
en: Analogue output scale factor. For example if the scale is 7 then an input of 1.0 will give 7V on the output terminals
de: Skalierungsfaktor des Analogausgangs. Wenn die Skala z.B. 7 ist, dann ergibt ein Eingang von 1,0 7V an den Ausgangsklemmen

note: type: TP
en: B<mesa-7i65.>I<N>B<.is-bipolar->I<M> bit rw (M=0..7) (default: I<1>)
de: B<mesa-7i65.>I<N>B<.is-bipolar->I<M> bit rw (M=0..7) (Voreinstellung: I<1>)

note: type: Plain text
en: Set this value to TRUE for a plus/minus "scale" output. Set to 0 for a 0-"scale" output
de: Setzen Sie diesen Wert auf TRUE für einen Plus/Minus-"Skalen"-Ausgang. Setzen Sie diesen Wert auf 0 für eine 0-"Skala"-Ausgabe

note: type: Plain text
en: mesa_pktgyro_test - PktUART simple test with Microstrain 3DM-GX3-15 gyro
de: mesa_pktgyro_test - Einfacher PktUART-Test mit Microstrain 3DM-GX3-15 Kreisel

note: type: Plain text
en: This component is written in order to test the PktUART driver for Mesa. It resembles partly Andy Pugh's mesa_uart.comp .
de: Diese Komponente ist geschrieben worden, um den PktUART-Treiber für Mesa zu testen. Sie ähnelt teilweise Andy Pughs mesa_uart.comp.

note: type: Plain text
en: This module uses the names= mode of loadrt declaration to specify which PktUART instances to enable. A check is included to ensure that the count= option is not used instead.  For simplicity we test only one PktUART instance, therefore load the component like this:
de: Dieses Modul verwendet den Modus names= der loadrt-Deklaration, um anzugeben, welche PktUART-Instanzen aktiviert werden sollen. Es wird geprüft, ob nicht stattdessen die Option count= verwendet wird.  Der Einfachheit halber testen wir nur eine PktUART-Instanz, daher laden wir die Komponente wie folgt:

note: type: Plain text
en: The PktUART instance names are printed to the dmesg buffer during the Hostmot2 setup sequence, one for each PktUART instance included in the bitfile loaded to each installed card during the Hostmot2 setup sequence. Type "dmesg" at the terminal prompt to view the output.  If you want to work with more than one PktUART instance, consult Andy Pugh's mesa_uart.comp
de: Die Namen der PktUART-Instanzen werden während der Hostmot2-Setup-Sequenz in den dmesg-Puffer gedruckt, eine für jede PktUART-Instanz, die in der Bitdatei enthalten ist, die während der Hostmot2-Setup-Sequenz auf jede installierte Karte geladen wird. Geben Sie "dmesg" an der Terminal-Eingabeaufforderung ein, um die Ausgabe zu sehen.  Wenn Sie mit mehr als einer PktUART-Instanz arbeiten wollen, lesen Sie Andy Pughs mesa_uart.comp

note: type: Plain text
en: In order to compile and install do:
     B<halcompile --install src/hal/drivers/mesa_pktgyro_test.comp>
de: Zum Kompilieren und Installieren führen Sie aus:
     B<halcompile --install src/hal/drivers/mesa_pktgyro_test.comp>

note: type: Plain text
en: The component exports only one function, namely receive, which needs to be added
    to a realtime thread.
    To test this component  set DEBUG=5 before and execute this HAL script:
     B<loadrt hostmot2>
     B<loadrt hm2_pci>
     B<loadrt mesa_pktgyro_test names=hm2_5i25.0.pktuart.0>
     B<loadrt threads name1=test1 period1=10000000>
     B<addf hm2_5i25.0.pktuart.0.receive test1>
     B<start>
de: Die Komponente exportiert nur eine Funktion, nämlich receive, die
    zu einem Echtzeit-Thread hinzugefügt werden muss.
    Um diese Komponente zu testen, setzen Sie DEBUG=5 und führen Sie dieses HAL-Skript aus:
     B<loadrt hostmot2>
     B<loadrt hm2_pci>
     B<loadrt mesa_pktgyro_test names=hm2_5i25.0.pktuart.0>
     B<loadrt threads name1=test1 period1=10000000>
     B<addf hm2_5i25.0.pktuart.0.receive test1>
     B<start>

note: type: Plain text
en: Check linuxcnc.log for debug output.
de: Prüfen Sie linuxcnc.log auf Debug-Ausgaben.

note: type: TP
en: B<mesa-pktgyro-test.>I<N>B<.receive> (requires a floating-point thread)
de: B<mesa-pktgyro-test.>I<N>B<.receive> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Number of Bytes received or negative Error code
de: Anzahl der empfangenen Bytes oder negativer Fehlercode

note: type: TH
en: MESSAGE
de: NACHRICHT (engl. message)

note: type: Plain text
en: message - Display a message
de: message - Anzeige einer Nachricht

note: type: Plain text
en: The messages to display. These should be listed, comma-delimited, inside a single set of quotes. See the "Description" section for an example.  If there are more messages than "count" or "names" then the excess will be ignored. If there are fewer messages than "count" or "names" then an error will be raised and the component will not load.
de: Die anzuzeigenden Meldungen. Diese sollten durch Kommata getrennt in einem Satz von Anführungszeichen aufgelistet werden. Im Abschnitt "Beschreibung" finden Sie ein Beispiel.  Wenn mehr Meldungen als "count" oder "names" vorhanden sind, wird der Überschuss ignoriert. Wenn weniger Meldungen als "count" oder "names" vorhanden sind, wird ein Fehler ausgelöst und die Komponente wird nicht geladen.

note: type: Plain text
en: Allows HAL pins to trigger a message. Example hal commands:
     loadrt message names=oillow,oilpressure,inverterfail messages="Slideway oil low,No oil
    pressure,Spindle inverter fault"
     addf oillow servo-thread
     addf oilpressure servo-thread
     addf inverterfail servo-thread
de: Ermöglicht das Auslösen einer Meldung durch HAL-Pins. Beispiel:
     loadrt message names=oillow,oilpressure,inverterfail messages="Slideway oil low,No oil
    pressure,Spindle inverter fault"
     addf oillow servo-thread
     addf oilpressure servo-thread
     addf inverterfail servo-thread

note: type: Plain text
en:  setp oillow.edge 0 #this pin should be active low
     net no-oil classicladder.0.out-21 oillow.trigger
     net no-pressure classicladder.0.out-22 oilpressure.trigger
     net no-inverter classicladder.0.out-23 inverterfail.trigger
de:  setp oillow.edge 0 #dieser Pin sollte aktiv niedrig sein
     net no-oil classicladder.0.out-21 oillow.trigger
     net no-pressure classicladder.0.out-22 oilpressure.trigger
     net no-inverter classicladder.0.out-23 inverterfail.trigger

note: type: Plain text
en: When any pin goes active, the corresponding message will be displayed.
de: Wird ein solcher Pin aktiv, dann wird die entsprechende Meldung angezeigt.

note: type: Plain text
en: Display a message
de: Anzeigen einer Meldung

note: type: Plain text
en: signal that triggers the message
de: Signal, das die Nachricht auslöst

note: type: Plain text
en: A FALSE-E<gt>TRUE transition forces the message to be displayed again if the trigger is active
de: Ein FALSE-E<gt>TRUE-Übergang führt dazu, dass die Meldung erneut angezeigt wird, wenn der Auslöser aktiv ist

note: type: Plain text
en: Selects the desired edge: TRUE means falling, FALSE means rising
de: Wählt die gewünschte Flanke aus: TRUE bedeutet fallend, FALSE bedeutet steigend

note: type: Plain text
en: millturn - Switchable kinematics for a mill-turn machine
de: millturn - Umschaltbare Kinematik für eine Fräs-Dreh-Maschine

note: type: Plain text
en: This is a switchable kinematics module using 3 cartesian linear joints (XYZ)  and 1 angular joint (A). The module contains two kinematic models:
de: Dies ist ein umschaltbares Kinematikmodul mit 3 kartesischen Lineargelenken (XYZ) und 1 Winkelgelenk (A). Das Modul enthält zwei kinematische Modelle:

note: type: Plain text
en: type0 (default) is a mill (XYZA) configuration with A being a rotary axis.
de: Typ0 (Standard) ist eine Fräserkonfiguration (XYZA), wobei A eine Drehachse ist.

note: type: Plain text
en: type1 is a turn (Z-YX) configuration with A configured to be a spindle.
de: Typ1 ist eine Drehkonfiguration (Z-YX), bei der A als Spindel konfiguriert ist.

note: type: Plain text
en: For an example configuration, run the sim config: 'configs/sim/axis/vismach/millturn/millturn.ini'.
de: Für eine Beispielkonfiguration führen Sie die Sim-Konfiguration aus: 'configs/sim/axis/vismach/millturn/millturn.ini'.

note: type: Plain text
en: Further explanations can be found in the README in 'configs/sim/axis/vismach/millturn'.
de: Weitere Erläuterungen finden Sie in der README in 'configs/sim/axis/vismach/millturn'.

note: type: Plain text
en: millturn.comp was constructed by modifying the template file: userkins.comp.
de: millturn.comp wurde durch Änderung der Vorlagedatei: userkins.comp erstellt.

note: type: Plain text
en: For more information on how to modify userkins.comp run: $ man userkins.  Also, see additional information inside: 'userkins.comp'.
de: Für weitere Informationen zur Änderung von userkins.comp führen Sie aus: $ man userkins.  Siehe auch zusätzliche Informationen in: 'userkins.comp'.

note: type: Plain text
en: For information on kinematics in general see the kinematics document chapter (docs/src/motion/kinematics.txt) and for switchable kinematics in particular see the switchkins document chapter (docs/src/motion/switchkins.txt)
de: Informationen zur Kinematik im Allgemeinen finden Sie im Dokumentenkapitel Kinematik (docs/src/motion/kinematics.txt) und zur umschaltbaren Kinematik im Besonderen im Dokumentenkapitel switchkins (docs/src/motion/switchkins.txt)

note: type: Plain text
en: minmax - Track the minimum and maximum values of the input to the outputs
de: minmax - Verfolgt die minimalen und maximalen Werte der Eingabe für die Ausgänge

note: type: TP
en: B<minmax.>I<N> (requires a floating-point thread)
de: B<minmax.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: When reset is asserted, 'in' is copied to the outputs
de: Wenn der Reset aktiviert ist, wird 'in' an die Ausgänge kopiert

note: type: Plain text
en: motion - accepts NML motion commands, interacts with HAL in realtime
de: Bewegung - akzeptiert NML-Bewegungsbefehle, interagiert mit HAL in Echtzeit

note: type: Plain text
en: The limits for the following items are compile-time settings:
de: Die Grenzwerte für die folgenden Elemente sind Einstellungen zur Kompilierzeit:

note: type: TP
en: B<num_joints>: Maximum number of joints is set by EMCMOT_MAX_JOINTS.
de: B<num_joints>: Die maximale Anzahl von Gelenken wird durch EMCMOT_MAX_JOINTS festgelegt.

note: type: TP
en: B<num_dio>: Maximum number of digital inputs is set by EMCMOT_MAX_DIO.
de: B<num_dio>: Maximale Anzahl digitaler Eingänge wird durch EMCMOT_MAX_DIO festgelegt.

note: type: TP
en: B<num_aio>: Maximum number of analog inputs is set by EMCMOT_MAX_AIO.
de: B<num_aio>: Die maximale Anzahl der Analogeingänge wird durch EMCMOT_MAX_AIO festgelegt.

note: type: TP
en: B<num_misc_error>: Maximum number of extra error inputs is set by EMCMOT_MAX_MISC_ERRORS.
de: B<num_misc_error>: Die maximale Anzahl der zusätzlichen Fehlereingänge wird durch EMCMOT_MAX_MISC_ERRORS festgelegt.

note: type: TP
en: B<num_spindles>: Maximum number of spindles is set by EMCMOT_MAX_SPINDLES
de: B<Anzahl_Spindeln>: Die maximale Anzahl der Spindeln wird durch EMCMOT_MAX_SPINDLES festgelegt

note: type: Plain text
en: Optionally the number of Digital I/O is set with num_dio. The number of Analog I/O is set with num_aio. The default is 4 each.
de: Optional wird die Anzahl der digitalen E/A mit num_dio festgelegt. Die Anzahl der analogen E/A wird mit num_aio festgelegt. Die Voreinstellung ist jeweils 4.

note: type: Plain text
en: Pin names starting with "B<joint>" or "B<axis>" are are read and updated by the motion-controller function.
de: Pin-Namen, die mit "B<joint>" (engl. für Gelenk) oder "B<axis>" (engl. für Achse) beginnen, werden von der Motion-Controller-Funktion gelesen und aktualisiert.

note: type: Plain text
en: By default, the base thread does not support floating point.  Software stepping, software encoder counting, and software pwm do not use floating point.  B<base_thread_fp> can be used to enable floating point in the base thread (for example for brushless DC motor control).
de: Standardmäßig unterstützt der Basis-Thread kein Fließkomma.  Software-Stepping, Software-Encoder-Zählung und Software-PWM verwenden kein Fließkomma.  B<base_thread_fp> kann verwendet werden, um Fließkomma im Basis-Thread zu aktivieren (z. B. für die Steuerung bürstenloser Gleichstrommotoren).

note: type: Plain text
en: These pins and parameters are created by the realtime B<motmod> module. This module provides a HAL interface for LinuxCNC's motion planner. Basically B<motmod> takes in a list of waypoints and generates a nice blended and constraint-limited stream of joint positions to be fed to the motor drives.
de: Diese Pins und Parameter werden durch das Echtzeitmodul B<motmod> erzeugt. Dieses Modul bietet eine HAL-Schnittstelle für LinuxCNCs Bewegungsplaner. Grundsätzlich B<motmod> nimmt in einer Liste von Wegpunkten und erzeugt eine schöne gemischt und Constraint-begrenzten Strom von Gelenkpositionen an die Motorantriebe zugeführt werden.

note: type: Plain text
en: The optional B<num_extrajoints> parameter specifies a quantity of joints that participate in homing but are not used by kinematics transformations.  After homing, control of an 'extra' joint is transferred to a posthome command HAL pin (joint.N.posthome-cmd) and the motor feedback value is ignored.  'Extra' joints must be managed by independent motion planners/controllers (typically using limit3 HAL components).  Extra joints maybe unhomed only when motion is disabled.
de: Der optionale Parameter B<num_extrajoints> gibt eine Anzahl von Gelenken an, die an der Referenzfahrt teilnehmen, aber nicht von Kinematik-Transformationen verwendet werden.  Nach der Referenzfahrt wird die Steuerung eines "zusätzlichen" Gelenks an einen HAL-Pin für den Post-Home-Befehl (joint.N.posthome-cmd) übertragen, und der Motor-Feedback-Wert wird ignoriert. "Zusätzliche" Gelenke müssen von unabhängigen Bewegungsplanern/-controllern verwaltet werden (typischerweise unter Verwendung von limit3-HAL-Komponenten).  Extra-Gelenke können nur dann freigegeben werden, wenn die Bewegung deaktiviert ist.

note: type: Plain text
en: The maximum B<num_extrajoints> value is equal to the B<num_joints> value.  (Note that using the maximum value would allow no operation in world coordinates).  The B<num_joints> value must be equal to the sum of the number of joints used for kinematics calculations plus the number of 'extra' joints.
de: Der Höchstwert für B<num_extrajoints> ist gleich dem Wert für B<num_joints>.  (Beachten Sie, dass die Verwendung des Maximalwerts keine Operation in Weltkoordinaten erlauben würde).  Der Wert B<num_joints> muss gleich der Summe aus der Anzahl der für die Kinematikberechnungen verwendeten Gelenke und der Anzahl der "zusätzlichen" Gelenke sein.

note: type: Plain text
en: The B<num_joints> parameter is conventionally set using the INI file setting B<[KINS]JOINTS=>value.  The B<num_extrajoints> is set by the additional motmod parameter B<[EMCMOT]motmod num_extrajoints=>value.  Hal pin numbering for all joints is zero based [B<0 ... num_joints-1>].  When specified, 'extra' joints are assigned the last B<num_extrajoints> in the numbering sequence.  For example, specifying [KINS]JOINTS=5 and [EMCMOT]motmod num_extrajoints=2 for a 3 joint trivkins configuration B<[KINS] KINEMATICS=trivkins coordinates=xyz> uses joints 0,1,2 for the kinematic joints and joints 3,4 for the 'extra' joints.
de: Der Parameter B<num_joints> wird üblicherweise durch die INI-Datei-Einstellung B<[KINS]JOINTS=>Wert gesetzt.  Der Parameter B<num_extrajoints> wird durch den zusätzlichen motmod-Parameter B<[EMCMOT]motmod num_extrajoints=>Wert eingestellt.  Die Hal-Pin-Nummerierung für alle Gelenke ist nullbasiert [B<0 ... num_joints-1>].  Wenn angegeben, werden "zusätzliche" Gelenke dem letzten B<num_extrajoints> in der Nummerierungsfolge zugeordnet.  Wird beispielsweise [KINS]JOINTS=5 und [EMCMOT]motmod num_extrajoints=2 für eine Trivkins-Konfiguration mit 3 Gelenken angegeben, so werden B<[KINS] KINEMATICS=trivkins coordinates=xyz> die Gelenke 0,1,2 für die kinematischen Gelenke und die Gelenke 3,4 für die "zusätzlichen" Gelenke verwendet.

note: type: SH
en: MOTION PINS
de: MOTION (engl. für Bewegung) PINS

note: type: Plain text
en: Time (in CPU clocks) for the motion module motion-command-handler
de: Zeit (in CPU-Takten) für das Bewegungsmodul motion-command-handler

note: type: Plain text
en: Time (in CPU clocks) for the motion module motion-controller
de: Zeit (in CPU-Takten) für das Bewegungsmodul motion-controller

note: type: Plain text
en: When adaptive feed is enabled with M52 P1, the commanded velocity is multiplied by this value. This effect is multiplicative with the NML-level feed override value and motion.feed-hold.  Negative values are valid and will run the G-code path in reverse.
de: Wenn der adaptive Vorschub mit M52 P1 aktiviert ist, wird die befohlene Geschwindigkeit mit diesem Wert multipliziert. Dieser Effekt ist multiplikativ mit dem Vorschub-Override-Wert auf NML-Ebene und motion.feed-hold.  Negative Werte sind gültig und führen den G-Code-Pfad in umgekehrter Richtung aus.

note: type: Plain text
en: These pins are used by M66 Enn wait-for-input mode.
de: Diese Pins werden vom M66 Enn wait-for-input mode verwendet.

note: type: Plain text
en: These pins are used by M67-68.
de: Diese Pins werden von M67-68 verwendet.

note: type: Plain text
en: The current requested velocity in user units per second.  This value is the F-word setting from the G-code file, possibly reduced to accommodate machine velocity and acceleration limits. The value on this pin does not reflect the feed override or any other adjustments.
de: Die aktuell geforderte Geschwindigkeit in Benutzereinheiten pro Sekunde.  Dieser Wert ist die F-Wort-Einstellung aus der G-Code-Datei, möglicherweise reduziert, um die Geschwindigkeits- und Beschleunigungsgrenzen der Maschine zu berücksichtigen. Der Wert an diesem Pin spiegelt nicht den Vorschub-Override oder andere Einstellungen wider.

note: type: Plain text
en: The number of CPU clocks between invocations of the servo thread. Typically, this number divided by the CPU speed gives the time in seconds, and can be used to determine whether the realtime motion controller is meeting its timing constraints
de: Die Anzahl der CPU-Takte zwischen den Aufrufen des Servo-Threads. In der Regel ergibt diese Zahl, geteilt durch die CPU-Geschwindigkeit, die Zeit in Sekunden und kann verwendet werden, um festzustellen, ob der Echtzeit-Bewegungsregler seine Zeitvorgaben einhält

note: type: Plain text
en: TRUE when this joint is active
de: TRUE, wenn dieses Gelenk aktiv ist

note: type: Plain text
en: TRUE if the amplifier for this joint should be enabled
de: TRUE, wenn der Verstärker für dieses Gelenk aktiviert werden soll

note: type: Plain text
en: Should be driven TRUE if an external fault is detected with the amplifier for this joint
de: Sollte auf TRUE gesetzt werden, wenn ein externer Fehler mit dem Verstärker für diese Verbindung erkannt wird

note: type: Plain text
en: Backlash or screw compensation raw value
de: Rohwert der Spiel- oder Spindelkompensation

note: type: Plain text
en: TRUE when this joint has encountered an error, such as a limit switch closing
de: TRUE, wenn bei dieser Verbindung ein Fehler aufgetreten ist, z. B. beim Schließen eines Endschalters

note: type: Plain text
en: The actual following error
de: Der eigentliche Schleppfehler

note: type: Plain text
en: The following error limit
de: Folgendes Fehlerlimit

note: type: Plain text
en: TRUE when this joint has exceeded the following error limit
de: TRUE, wenn dieses Gelenk die Schleppfehlergrenze überschritten hat

note: type: Plain text
en: The "free planner" commanded position for this joint.
de: Der "freie Planer" befahl die Position für dieses Gelenk.

note: type: Plain text
en: TRUE when the "free planner" is enabled for this joint
de: TRUE, wenn der "freie Planer" für diese Verbindung aktiviert ist

note: type: Plain text
en: The velocity limit for the free planner
de: Die Geschwindigkeitsbegrenzung für den freien Planer

note: type: Plain text
en: Should be driven TRUE if the home switch for this joint is closed
de: Sollte TRUE gefahren werden, wenn der Home-Schalter für dieses Gelenk geschlossen ist

note: type: Plain text
en: TRUE if the joint is currently homing
de: TRUE, wenn sich das Gelenk gerade auf den Referenzierpunkt (engl. home) gefahren wird

note: type: Plain text
en: TRUE if the joint is using the "free planner" and has come to a stop
de: TRUE, wenn das Gelenk den "freien Planer" benutzt und zum Stillstand gekommen ist

note: type: Plain text
en: Should be attached to the index-enable pin of the joint's encoder to enable homing to index pulse
de: Sollte an den Indexaktivierungsstift des Encoders des Gelenks angeschlossen werden, um die Referenzfahrt auf den Indeximpuls zu ermöglichen

note: type: Plain text
en: Indicates joint is unlocked (see JOINT UNLOCK PINS).
de: Zeigt an, dass das Gelenk entsperrt ist (siehe GELENKE ENTSPERREN PINS).

note: type: Plain text
en: Sets acceleration for wheel jogging to a fraction of the INI max_acceleration for the joint.  Values greater than 1 or less than zero are ignored.
de: Legt die Beschleunigung für das Joggen des Rads auf einen Bruchteil der INI max_acceleration (engl. für maximale Beschleunigung) für das Gelenk fest. Werte größer als 1 oder kleiner als Null werden ignoriert.

note: type: Plain text
en: When FALSE (the default), the jogwheel operates in position mode. The joint will move exactly jog-scale units for each count, regardless of how long that might take. When TRUE, the wheel operates in velocity mode - motion stops when the wheel stops, even if that means the commanded motion is not completed.
de: Bei FALSE (Standardeinstellung) arbeitet das Jogwheel im Positionsmodus. Das Gelenk bewegt genau Jog-Scale-Einheiten für jede Zählung, unabhängig davon, wie lange das dauern mag. Wenn TRUE, arbeitet das Rad im Geschwindigkeitsmodus - die Bewegung stoppt, wenn das Rad stoppt, auch wenn dies bedeutet, dass die befohlene Bewegung nicht abgeschlossen ist.

note: type: Plain text
en: (free planner joint jogging active (keyboard or halui))
de: (Free Planner Joint Jogging aktiv (Tastatur oder Halui))

note: type: Plain text
en: joint motor offset established when joint is homed.
de: Der Offset des Gelenkmotors wird bei der Referenzfahrt ermittelt.

note: type: Plain text
en: This manual page is incomplete.
de: Diese Handbuchseite ist unvollständig.

note: type: TP
en: Identification of pins categorized with B<(DEBUG)> is dubious.
de: Die Identifizierung von Pins, die mit B<(DEBUG)> kategorisiert sind, ist unzuverlässig.

note: type: Plain text
en: moveoff - Component for Hal-only offsets
de: moveoff - Komponente für HAL-only Offsets

note: type: Plain text
en: The moveoff component is used to offset joint positions using custom Hal connections.  Implementing an offset-while-program-is-paused functionality is supported with appropriate connections for the input pins.  Nine joints are supported.
de: Die moveoff-Komponente wird zum Versetzen von Gelenkpositionen unter Verwendung benutzerdefinierter HAL-Verbindungen verwendet.  Die Implementierung einer Offset-while-program-is-paused-Funktionalität wird mit entsprechenden Verbindungen für die Eingangspins unterstützt.  Neun Gelenke werden unterstützt.

note: type: Plain text
en: The axis offset pin values (offset-in-M) are continuously applied (respecting limits on value, velocity, and acceleration) to the output pins (offset-current-M, pos-plusoffset-M, fb-minusoffset-M) when both enabling input pins (apply-offsets and move-enable) are TRUE.  The two enabling inputs are anded internally.  A B<warning> pin is set and a message issued if the apply-offsets pin is deasserted while offsets are applied.  The warning pin remains TRUE until the offsets are removed or the apply-offsets pin is set.
de: Die Werte der Achsen-Offset-Pins (offset-in-M) werden kontinuierlich (unter Beachtung der Grenzwerte für Wert, Geschwindigkeit und Beschleunigung) an die Ausgangs-Pins (offset-current-M, pos-plusoffset-M, fb-minusoffset-M) angelegt, wenn beide Freigabe-Eingangs-Pins (apply-offsets und move-enable) TRUE sind.  Die beiden Freigabeeingänge sind intern gebrückt.  Ein B<Warning>-Pin wird gesetzt und eine Meldung ausgegeben, wenn der apply-offsets-Pin während der Anwendung von Offsets deaktiviert wird.  Der Warn-Pin bleibt TRUE, bis die Offsets entfernt werden oder der apply-offsets-Pin gesetzt wird.

note: type: Plain text
en: Applied offsets are B<automatically returned> to zero (respecting limits)  when either of the enabling inputs is deactivated.  The zero value tolerance is specified by the epsilon input pin value.
de: Angewandte Offsets werden B<automatisch> auf Null zurückgesetzt (unter Beachtung der Grenzwerte), wenn einer der Freigabeeingänge deaktiviert wird.  Die Nullwerttoleranz wird durch den Wert des Epsilon-Eingangspins festgelegt.

note: type: Plain text
en: Backtracking through waypoints results in B<slower> movement rates as the moves are point-to-point respecting velocity and acceleration settings.  The velocity and acceleration limit pins can be managed dynamically to control offsets at all times.
de: Backtracking durch Wegpunkte führt zu B<langsameren> Bewegungsraten, da die Bewegungen Punkt-zu-Punkt unter Berücksichtigung der Geschwindigkeits- und Beschleunigungseinstellungen erfolgen.  Die Geschwindigkeits- und Beschleunigungsgrenzwerte können dynamisch verwaltet werden, um die Versätze jederzeit zu kontrollieren.

note: type: Plain text
en: When backtrack-enable is FALSE, the auto-return move is B<NOT> coordinated, each axis returns to zero at its own rate.  If a controlled path is wanted in this condition, each axis should be manually returned to zero before deasserting an enabling pin.
de: Wenn Backtrack-Enable auf FALSE steht, ist die automatische Rücklaufbewegung B<NOT> koordiniert, jede Achse kehrt mit ihrer eigenen Geschwindigkeit auf Null zurück.  Wenn in diesem Zustand ein kontrollierter Weg gewünscht wird, sollte jede Achse manuell auf Null zurückgeführt werden, bevor ein Freigabe-Pin deaktiviert wird.

note: type: Plain text
en: The offsets-applied output pin is provided to indicate the current state to a GUI so that program resumption can be managed.  If the offset(s) are non-zero when the apply-offsets pin is deasserted (for example when resuming a program when offsetting during a pause), offsets are returned to zero (respecting limits) and an B<Error> message is issued.
de: Der Offset-Applied-Ausgangs-Pin dient zur Anzeige des aktuellen Zustands auf einer grafischen Benutzeroberfläche, so dass die Wiederaufnahme des Programms verwaltet werden kann.  Wenn die Offsets nicht Null sind, wenn der apply-offsets-Pin deassertiert wird (z.B. bei der Wiederaufnahme eines Programms, wenn die Offsets während einer Pause verschoben wurden), werden die Offsets auf Null zurückgesetzt (unter Beachtung der Grenzwerte) und eine B<Error>-Meldung ausgegeben.

note: type: Plain text
en: B<Caution:> If offsets are enabled and applied and the machine is turned off for any reason, any B<external> Hal logic that manages the enabling pins and the offset-in-M inputs is responsible for their state when the machine is subsequently turned on again.
de: B<Achtung:> Wenn Offsets aktiviert und angewendet werden und die Maschine aus irgendeinem Grund ausgeschaltet wird, ist jede B<externe> HAL-Logik zur Verwaltung der Freigabe (engl. enabling)-Pins und der Offset-in-M-Eingänge für deren Zustand verantwortlich, wenn die Maschine anschließend wieder eingeschaltet wird.

note: type: Plain text
en: This Hal-only means of offsetting is typically not known to LinuxCNC nor available in GUI preview displays.  B<No protection is provided> for offset moves that exceed soft limits managed by LinuxCNC.  Since soft limits are not honored, an offset move may encounter hard limits (or B<CRASH> if there are no limit switches).  Use of the offset-min-M and offset-max-M inputs to limit travel is recommended.  Triggering a hard limit will turn off the machine -- see B<Caution> above.
de: Diese HAL-only Mittel für einen Offset ist in der Regel weder LinuxCNC bekannt noch wird dieser in der GUI-Vorschau zeigt.  B<Kein Schutz ist vorgesehen> für Offset-Bewegungen, wenn sie die von LinuxCNC verwalteten weichen Grenzen überschreiten.  Da weiche Grenzen nicht beachtet werden, kann eine Offsetbewegung auf harte Grenzen stoßen (oder B<CRASHEN>, wenn es keine Endschalter gibt).  Es wird empfohlen, die Eingänge offset-min-M und offset-max-M zur Begrenzung des Verfahrwegs zu verwenden.  Das Auslösen einer harten Begrenzung schaltet die Maschine ab - siehe B<Caution> oben.

note: type: Plain text
en: The offset-in-M values may be set with inifile settings, controlled by a GUI, or managed by other Hal components and connections.  Fixed values may be appropriate in simple cases where the direction and amount of offset is well-defined but a control method is required to deactivate an enabling pin in order to return offsets to zero.  GUIs may provide means for users to set, increment, decrement, and accumulate offset values for each axis and may set offset-in-M values to zero before deasserting an enabling pin.
de: Die Offset-in-M-Werte können mit INI-Datei-Einstellungen festgelegt, über eine grafische Benutzeroberfläche gesteuert oder durch andere Hal-Komponenten und Verbindungen verwaltet werden.  Feste Werte können in einfachen Fällen geeignet sein, in denen die Richtung und der Betrag des Offsets genau definiert sind, aber eine Kontrollmethode erforderlich ist, um einen Aktivierungs-Pin zu deaktivieren, und so die Offsets auf Null zurückzusetzen.  Die grafischen Benutzeroberflächen können dem Benutzer die Möglichkeit bieten, Offset-Werte für jede Achse einzustellen, zu erhöhen, zu verringern und zu akkumulieren, und sie können Offset-in-M-Werte auf Null setzen, bevor ein Freigabe-Pin deaktiviert wird.

note: type: Plain text
en: The default values for accel, vel, min, max, epsilon, waypoint-sample-secs, and waypoint-threshold may not be suitable for any particular application.  This Hal component is unaware of limits enforced elsewhere by LinuxCNC.  Users should test usage in a simulator application and understand all hazards B<before> use on hardware.
de: Die Standardwerte für accel, vel, min, max, epsilon, waypoint-sample-secs und waypoint-threshold sind möglicherweise nicht für jede Anwendung geeignet.  Diese HAL-Komponente kennt keine Grenzen, die an anderer Stelle von LinuxCNC erzwungen werden.  Benutzer sollten die Verwendung in einem Simulator-Anwendung zu testen und zu verstehen, alle Gefahren B<before> Verwendung auf Hardware.

note: type: Plain text
en: Use of the names= option for naming is B<required> for compatibility
    with the gui provided as scripts/moveoff_gui:
      loadrt moveoff names=B<mv> personality=number_of_joints
de: Die Verwendung der Option names= für die Benennung ist B<erforderlich> für die Kompatibilität
    mit der als scripts/moveoff_gui bereitgestellten Benutzeroberfläche:
      loadrt moveoff names=B<mv> personality=number_of_joints

note: type: TP
en: B<moveoff.>I<N>B<.read-inputs> (requires a floating-point thread)
de: B<moveoff.>I<N>B<.read-inputs> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Read all inputs
de: Alle Eingaben lesen

note: type: TP
en: B<moveoff.>I<N>B<.write-outputs> (requires a floating-point thread)
de: B<moveoff.>I<N>B<.write-outputs> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Write computed offset outputs (offset-current-M, pos-plusoffset-M, fb-minusoffset-M).  All other outputs are updated by read-inputs()
de: Schreiben der berechneten Offset-Ausgänge (offset-current-M, pos-plusoffset-M, fb-minusoffset-M).  Alle anderen Ausgaben werden durch read-inputs() aktualisiert.

note: type: Plain text
en: Waypoint count (for debugging)
de: Wegpunktanzahl (zum Debuggen)

note: type: Plain text
en: Percent of available waypoints used
de: Prozentualer Anteil der verwendeten verfügbaren Wegpunkte

note: type: Plain text
en: Joint offset input value
de: Gemeinsamer Offset-Eingangswert

note: type: Plain text
en: Joint position (typ: axis.0.motor-pos-cmd)
de: Gelenkposition (typ: axis.0.motor-pos-cmd)

note: type: Plain text
en: Joint feedback (typ from encoder and input to pid controller (pid.feedback))
de: Gelenk Rückmeldung (Typ vom Encoder und Eingang zum PID-Regler (pid.feedback))

note: type: Plain text
en: Joint offset current value
de: Gelenk Offset aktueller Wert

note: type: Plain text
en: Computed joint position plus offset (typically connect to pid command input)
de: Berechnete Gelenkposition plus Offset (normalerweise mit dem PID-Befehlseingang verbunden)

note: type: TP
en: B<moveoff.>I<N>B<.offset-vel->I<M> float in (M=0..personality) (default: I<10>)
de: B<moveoff.>I<N>B<.offset-vel->I<M> float in (M=0..personality) (Voreinstellung: I<10>)

note: type: Plain text
en: Joint offset velocity limit
de: Gelenk-Offset-Geschwindigkeitsbegrenzung

note: type: TP
en: B<moveoff.>I<N>B<.offset-accel->I<M> float in (M=0..personality) (default: I<100>)
de: B<moveoff.>I<N>B<.offset-accel->I<M> float in (M=0..personality) (Voreinstellung: I<100>)

note: type: Plain text
en: Joint offset acceleration limit
de: Grenzwert für die Beschleunigung des Gelenkoffsets

note: type: TP
en: B<moveoff.>I<N>B<.offset-min->I<M> float in (M=0..personality) (default: I<-1e20>)
de: B<moveoff.>I<N>B<.offset-min->I<M> float in (M=0..personality) (Voreinstellung: I<-1e20>)

note: type: TP
en: B<moveoff.>I<N>B<.offset-max->I<M> float in (M=0..personality) (default: I<1e20>)
de: B<moveoff.>I<N>B<.offset-max->I<M> float in (M=0..personality) (Voreinstellung: I<1e20>)

note: type: Plain text
en: Debug input to test with limited number of waypoints
de: Debug-Input zum Testen mit begrenzter Anzahl von Wegpunkten

note: type: Plain text
en: Debug output for current state of state machine
de: Debugausgabe für den aktuellen Status des Zustandsautomaten

note: type: Plain text
en: Dewey Garrett and Andy Pugh
de: Dewey Garrett und Andy Pugh

note: type: Plain text
en: mult2 - Product of two inputs
de: multi2 - Produkt zweier Eingaben

note: type: Plain text
en: multiclick - Single-, double-, triple-, and quadruple-click detector
de: MultiClick - Einzel-, Doppel-, Dreifach- und Vierfachklick-Detektor

note: type: Plain text
en: A click is defined as a rising edge on the 'in' pin, followed by the 'in' pin being True for at most 'max-hold-ns' nanoseconds, followed by a falling edge.
de: Ein Klick ist definiert als eine steigende Flanke auf dem "in"-Pin, gefolgt von dem "in"-Pin, der für die meisten "max-hold-ns"-Nanosekunden True ist, gefolgt von einer fallenden Flanke.

note: type: Plain text
en: A double-click is defined as two clicks, separated by at most 'max-space-ns' nanoseconds with the 'in' pin in the False state.
de: Ein Doppelklick ist definiert als zwei Klicks, getrennt durch höchstens 'max-space-ns' Nanosekunden mit dem 'in'-Pin im Zustand False.

note: type: Plain text
en: I bet you can guess the definition of triple- and quadruple-click.
de: Ich wette, Sie können die Definition von Triple- und Quadruple-Click erraten.

note: type: Plain text
en: You probably want to run the input signal through a debounce component before feeding it to the multiclick detector, if the input is at all noisy.
de: Wahrscheinlich möchten Sie das Eingangssignal durch eine Entprellkomponente leiten, bevor Sie es dem Multiclick-Detektor zuführen, wenn der Eingang überhaupt verrauscht ist.

note: type: Plain text
en: The '*-click' pins go high as soon as the input detects the correct number of clicks.
de: Die "*-Klick"-Pins gehen hoch, sobald die Eingabe die richtige Anzahl von Klicks erkennt.

note: type: Plain text
en: The '*-click-only' pins go high a short while after the click, after the click separator space timeout has expired to show that no further click is coming.  This is useful for triggering halui MDI commands.
de: Die "*-click-only"-Pins gehen kurz nach dem Klick hoch, nachdem das Timeout des Klicktrennzeichens abgelaufen ist, um anzuzeigen, dass kein weiterer Klick kommt.  Dies ist nützlich, um halui MDI-Befehle auszulösen.

note: type: Plain text
en: Detect single-, double-, triple-, and quadruple-clicks
de: Erkennung von Einzel-, Doppel-, Dreifach- und Vierfachklicks

note: type: Plain text
en: Goes high briefly when a single-click is detected on the 'in' pin.
de: Geht kurz hoch, wenn ein einzelner Klick auf dem "In"-Pin erkannt wird.

note: type: Plain text
en: Goes high briefly when a single-click is detected on the 'in' pin and no second click followed it.
de: Geht kurz hoch, wenn ein einzelner Klick auf dem "In"-Pin erkannt wird und kein zweiter Klick folgt.

note: type: Plain text
en: Goes high briefly when a double-click is detected on the 'in' pin.
de: Geht kurz hoch, wenn ein Doppelklick auf den "In"-Pin erkannt wird.

note: type: Plain text
en: Goes high briefly when a double-click is detected on the 'in' pin and no third click followed it.
de: Erreicht kurzzeitig den High-Pegel, wenn ein Doppelklick auf den 'in'-Pin erkannt wird und kein dritter Klick folgt.

note: type: Plain text
en: Goes high briefly when a triple-click is detected on the 'in' pin.
de: Geht kurzzeitig auf High, wenn ein Dreifach-Klick am 'in'-Pin erkannt wird.

note: type: Plain text
en: Goes high briefly when a triple-click is detected on the 'in' pin and no fourth click followed it.
de: Erreicht kurzzeitig den High-Pegel, wenn ein Dreifach-Klick auf dem 'in'-Pin erkannt wird und kein vierter Klick folgt.

note: type: Plain text
en: Goes high briefly when a quadruple-click is detected on the 'in' pin.
de: Geht kurzzeitig auf High, wenn ein Vierfach-Klick am 'in'-Pin erkannt wird.

note: type: Plain text
en: Goes high briefly when a quadruple-click is detected on the 'in' pin and no fifth click followed it.
de: Erreicht kurzzeitig den High-Pegel, wenn ein Vierfach-Klick auf dem 'in'-Pin erkannt wird und kein fünfter Klick folgt.

note: type: TP
en: B<multiclick.>I<N>B<.invert-input> bit rw (default: I<FALSE>)
de: B<multiclick.>I<N>B<.invert-input> bit rw (Voreinstellung: I<FALSE>)

note: type: Plain text
en: If FALSE (the default), clicks start with rising edges.  If TRUE, clicks start with falling edges.
de: Wenn FALSE (Standardeinstellung), beginnen die Klicks mit steigenden Flanken.  Wenn TRUE, beginnen die Klicks mit fallenden Flanken.

note: type: TP
en: B<multiclick.>I<N>B<.max-hold-ns> u32 rw (default: I<250000000>)
de: B<multiclick.>I<N>B<.max-hold-ns> u32 rw (Voreinstellung: I<250000000>)

note: type: Plain text
en: If the input is held down longer than this, it's not part of a multi-click.  (Default 250,000,000 ns, 250 ms.)
de: Wird der Eingang länger gedrückt gehalten, ist er nicht Teil eines Mehrfachklicks.  (Voreinstellung 250.000.000 ns, 250 ms.)

note: type: TP
en: B<multiclick.>I<N>B<.max-space-ns> u32 rw (default: I<250000000>)
de: B<multiclick.>I<N>B<.max-space-ns> u32 rw (Voreinstellung: I<250000000>)

note: type: Plain text
en: If the input is released longer than this, it's not part of a multi-click.  (Default 250,000,000 ns, 250 ms.)
de: Wenn die Eingabe länger als diese Zeitspanne freigegeben wird, ist sie nicht Teil eines Mehrfachklicks.  (Voreinstellung 250.000.000 ns, 250 ms.)

note: type: TP
en: B<multiclick.>I<N>B<.output-hold-ns> u32 rw (default: I<100000000>)
de: B<multiclick.>I<N>B<.output-hold-ns> u32 rw (Voreinstellung: I<100000000>)

note: type: Plain text
en: Positive pulses on the output pins last this long.  (Default 100,000,000 ns, 100 ms.)
de: Positive Impulse an den Ausgangspins dauern so lange.  (Voreinstellung 100.000.000 ns, 100 ms.)

note: type: Plain text
en: multiswitch - This component toggles between a specified number of output bits
de: multiswitch - Diese Komponente schaltet zwischen einer bestimmten Anzahl von Ausgangsbits um

note: type: Plain text
en: cfg should be a comma-separated list of sizes
    for example cfg=2,4,6 would create 3 instances of 2, 4 and 6 bits respectively.
     Ignore the "personality" parameter, that is auto-generated
de: cfg sollte eine durch Komma getrennte Liste von Größen sein
    cfg=2,4,6 würde z.B. 3 Instanzen mit 2, 4 bzw. 6 Bit erzeugen.
     Ignorieren Sie den Parameter "personality", der automatisch generiert wird.

note: type: TP
en: B<multiswitch.>I<N> (requires a floating-point thread)
de: B<multiswitch.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: TP
en: B<multiswitch.>I<N>B<.up> bit in (default: I<false>)
de: B<multiswitch.>I<N>B<.up> bit in (Voreinstellung: I<false>)

note: type: TP
en: B<multiswitch.>I<N>B<.down> bit in (default: I<false>)
de: B<multiswitch.>I<N>B<.down> bit in (Voreinstellung: I<false>)

note: type: Plain text
en: Receives signal to toggle down
de: Empfängt Signal zum Herunterschalten

note: type: TP
en: B<multiswitch.>I<N>B<.bit->I<MM> bit out (MM=00..personality) (default: I<false>)
de: B<multiswitch.>I<N>B<.bit->I<MM> bit out (MM=00..personality) (Voreinstellung: I<false>)

note: type: Plain text
en: Output bits
de: Ausgangsbits

note: type: Plain text
en: Number of positions
de: Anzahl Positionen

note: type: Plain text
en: Current state (may be set in the HAL)
de: Aktueller Zustand (kann im HAL eingestellt werden)

note: type: Plain text
en: mux16 - Select from one of sixteen input values
de: mux16 - Auswahl aus einem von sechzehn Eingangswerten

note: type: TP
en: B<mux16.>I<N> (requires a floating-point thread)
de: B<mux16.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: This signifies the input will use Gray code instead of binary.  Gray code is a good choice when using physical switches because for each increment only one select input changes at a time.
de: Dies bedeutet, dass die Eingabe im Gray-Code und nicht im Binärcode erfolgt.  Gray-Code ist eine gute Wahl bei der Verwendung von physischen Schaltern, da sich bei jedem Inkrement jeweils nur ein Auswahleingang ändert.

note: type: Plain text
en: Together, these determine which B<in>I<N> value is copied to B<out>.
de: Zusammen bestimmen sie, welcher B<in>I<N>-Wert nach B<out> kopiert wird.

note: type: Plain text
en: Follows the value of one of the B<in>I<N> values according to the four B<sel> values and whether use-graycode is active.  The s32 value will be trunuated and limited to the max and min values of signed values.
de: Folgt dem Wert eines der B<in>I<N>-Werte entsprechend den vier B<sel>-Werten und ob use-graycode aktiv ist.  Der s32-Wert wird auf die Maximal- und Minimalwerte der vorzeichenbehafteten Werte begrenzt.

note: type: TP
en: etc.
de: usw.

note: type: Plain text
en: array of selectable outputs
de: Array wählbarer Ausgänge

note: type: Plain text
en: Current value of the internal debounce timer
     for debugging.
de: Aktueller Wert des internen Debounce-Timers
     zum Debuggen.

note: type: Plain text
en: Current value of the internal selection variable after conversion
     for debugging
de: Aktueller Wert der internen Selektionsvariablen nach der Konvertierung
     zum Debuggen

note: type: Plain text
en: mux2 - Select from one of two input values
de: mux2 - Auswahl eines von zwei Eingangswerten

note: type: TP
en: B<mux2.>I<N> (requires a floating-point thread)
de: B<mux2.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Follows the value of in0 if sel is FALSE, or in1 if sel is TRUE
de: Folgt dem Wert von in0, wenn sel FALSE ist, oder in1, wenn sel TRUE ist

note: type: Plain text
en: mux4 - Select from one of four input values
de: mux4 - Auswahl eines von vier Eingangswerten

note: type: TP
en: B<mux4.>I<N> (requires a floating-point thread)
de: B<mux4.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Follows the value of one of the B<in>I<N> values according to the two B<sel> values
de: Folgt dem Wert eines der B<in>I<N>-Werte entsprechend den beiden B<sel>-Werten

note: type: Plain text
en: B<out> follows B<in3>
de: B<out> folgt B<in3>

note: type: Plain text
en: mux8 - Select from one of eight input values
de: mux8 - Auswahl aus einem von acht Eingangswerten

note: type: TP
en: B<mux8.>I<N> (requires a floating-point thread)
de: B<mux8.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Follows the value of one of the B<in>I<N> values according to the three B<sel> values
de: Folgt dem Wert eines der B<in>I<N>-Werte entsprechend den drei B<sel>-Werten

note: type: Plain text
en: B<out> follows B<in6>
de: B<out> folgt B<in6>

note: type: Plain text
en: B<out> follows B<in7>
de: B<out> folgt B<in7>

note: type: Plain text
en: mux_generic - choose one from several input values
de: mux_generic - einen von mehreren Eingangswerten wählen

note: type: Plain text
en: The possible output values that are selected by the selection pins.
de: Die möglichen Ausgangswerte, die über die Auswahlstifte ausgewählt werden.

note: type: Plain text
en: Current value of the internal selection variable after conversion for debugging.  Possibly useful for setting up gray-code switches.
de: Aktueller Wert der internen Selektionsvariablen nach der Konvertierung zur Fehlersuche.  Möglicherweise nützlich für die Einrichtung von Gray-Code-Schaltern.

note: type: Plain text
en: It is optional that power to the Ohmic sensing circuit be disconnected unless probing is in progress ut this adds additional complexity.
de: Es ist optional, dass die Stromversorgung des ohmschen Messkreises unterbrochen wird, wenn keine Messung durchgeführt wird, was jedoch zusätzliche Komplexität bedeutet.

note: type: Plain text
en: Portnumber can be 0 or 1. Port 0 is closest to the card bracket.
de: Portnummer kann 0 oder 1 sein. Port 0 ist der Kartenhalterung am nächsten.

note: type: Plain text
en: Connect a HAL bit signal to this pin to read an i/o point from the card.  The PINNUMBER represents the position in the relay rack.  E.g., PINNUMBER 0 is position 0 in a opto22 relay rack and would be pin 47 on the 50 pin header connector.  The B<-not> pin is inverted so that LOW gives TRUE and HIGH gives FALSE.
de: Schließen Sie ein HAL-Bit-Signal an diesen Pin an, um einen E/A-Punkt von der Karte zu lesen.  Die PINNUMMER steht für die Position im Relais-Rack.  Z.B. ist PINNUMBER 0 die Position 0 in einem opto22-Relaisrack und wäre Pin 47 auf dem 50-poligen Pfostenverbinder.  Der Stift B<-nicht> ist invertiert, so dass LOW TRUE und HIGH FALSE ergibt.

note: type: Plain text
en: Connect a HAL bit signal to this pin to write to an i/o point of the card.  The PINNUMBER represents the position in the relay rack.  E.g., PINNUMBER 23 is position 23 in a opto22 relay rack and would be pin 1 on the 50 pin header connector.
de: Schließen Sie ein HAL-Bit-Signal an diesen Pin an, um auf einen E/A-Punkt der Karte zu schreiben.  Die PINNUMMER steht für die Position im Relais-Rack.  Z.B. ist PINNUMMER 23 die Position 23 in einem opto22-Relaisrack und wäre Pin 1 auf dem 50-poligen Pfostenverbinder.

note: type: Plain text
en: 0: rotate - shortest move; 1: always rotate clockwise; 2: always rotate counterclockwise
de: 0: rotieren - kürzeste Bewegung; 1: immer im Uhrzeigersinn rotieren; 2: immer gegen den Uhrzeigersinn rotieren

note: type: Plain text
en: spindle position input, unit 1 rev
de: Eingabe der Spindelposition, Einheit 1 Umdrehung

note: type: Plain text
en: orient target position in degrees, 0 E<lt>= angle E<lt> 360
de: Ausrichtung der Zielposition in Grad, 0 E<lt>= Winkel E<lt> 360

note: type: Plain text
en: target spindle position, input to PID command
de: Zielspindelposition, Eingang zum PID-Befehl

note: type: Plain text
en: in degrees - aid for PID tuning
de: in Grad - Hilfsmittel für PID-Tuning

note: type: Plain text
en: This pin goes high when poserr E<lt> tolerance. Use to drive spindle.N.is-oriented
de: Dieser Pin geht auf High, wenn poserr E<lt> Toleranz. Zum Antrieb der Spindel verwenden.N.is-orientiert

note: type: TP
en: B<orient.>I<N>B<.tolerance> float in (default: I<0.5>)
de: B<orient.>I<N>B<.tolerance> float in (Voreinstellung: I<0.5>)

note: type: Plain text
en: The tolerance in degrees for considering the align completed
de: Die Toleranz in Grad, um die Ausrichtung als abgeschlossen zu betrachten

note: type: Plain text
en: pid - proportional/integral/derivative controller with automatic tuning support
de: pid - Proportional-/Integral-/Ableitungsregler mit Unterstützung für automatische Abstimmung

note: type: Plain text
en: B<pid> is a classic Proportional/Integral/Derivative controller, used to control position or speed feedback loops for servo motors and other closed-loop applications.
de: B<pid> ist ein klassischer Proportional-/Integral-/Differenzialregler, der zur Steuerung von Positions- oder Geschwindigkeitsregelkreisen für Servomotoren und andere Anwendungen mit geschlossenem Regelkreis verwendet wird.

note: type: Plain text
en: B<pid> supports a maximum of sixteen controllers.  The number that are actually loaded is set by the B<num_chan> argument when the module is loaded.  Alternatively, specify names= and unique names separated by commas.
de: B<pid> unterstützt maximal sechzehn Steuerungen.  Die Anzahl der tatsächlich geladenen Controller wird durch das Argument B<num_chan> festgelegt, wenn das Modul geladen wird.  Alternativ können Sie auch names= und eindeutige, durch Kommata getrennte Namen angeben.

note: type: Plain text
en: The B<num_chan=> and B<names=> specifiers are mutually exclusive.  If neither B<num_chan=> nor B<names=> are specified, the default value is three.  If B<debug> is set to 1 (the default is 0), some additional HAL parameters will be exported, which might be useful for tuning, but are otherwise unnecessary.
de: Die Angaben B<num_chan=> und B<names=> schließen sich gegenseitig aus.  Wenn weder B<num_chan=> noch B<names=> angegeben werden, ist der Standardwert drei.  Wenn B<debug> auf 1 gesetzt ist (der Standardwert ist 0), werden einige zusätzliche HAL-Parameter exportiert, die für das Tuning nützlich sein können, aber ansonsten unnötig sind.

note: type: Plain text
en: In the following description, it is assumed that we are discussing position loops.  However this component can be used to implement other loops such as speed loops, torch height control, and others.
de: In der folgenden Beschreibung wird davon ausgegangen, dass es sich um Positionsschleifen handelt.  Mit dieser Komponente können jedoch auch andere Regelkreise, wie z. B. Geschwindigkeitsregelkreise, Brennerhöhenregelung und andere, realisiert werden.

note: type: Plain text
en: Each loop has a number of pins and parameters, whose names begin with 'pid.N.', where 'N' is the channel number.  Channel numbers start at zero.
de: Jede Schleife hat eine Anzahl von Pins und Parametern, deren Namen mit "pid.N." beginnen, wobei "N" die Kanalnummer ist.  Die Kanalnummern beginnen bei Null.

note: type: Plain text
en: The three most important pins are 'command', 'feedback', and 'output'.  For a position loop, 'command' and 'feedback' are in position units.  For a linear axis, this could be inches, mm, metres, or whatever is relevant.  Likewise, for a angular axis, it could be degrees, radians, etc.  The units of the 'output' pin represent the change needed to make the feedback match the command.  As such, for a position loop 'Output' is a velocity, in inches/sec, mm/sec, degrees/sec, etc.
de: Die drei wichtigsten Pins sind 'command', 'feedback' und 'output'.  Für eine Positionsschleife befinden sich "Befehl" und "Rückmeldung" in Positionseinheiten.  Für eine lineare Achse könnte dies Zoll, mm, Meter oder was auch immer relevant ist, sein.  Ebenso könnte es sich bei einer Winkelachse um Grad, Bogenmaß usw. handeln.  Die Einheiten des 'Ausgabe'-Pins stellen die Änderung dar, die erforderlich ist, damit die Rückmeldung mit dem Befehl übereinstimmt.  Daher ist für eine Positionsschleife "Output" eine Geschwindigkeit in Zoll / s, mm / sec, Grad / s usw.

note: type: Plain text
en: Each loop has several other pins as well.  'error' is equal to 'command' minus 'feedback'.  'enable' is a bit that enables the loop.  If 'enable' is false, all integrators are reset, and the output is forced to zero.  If 'enable' is true, the loop operates normally.
de: Jede Schleife hat auch mehrere andere Pins. 'error' ist gleich 'command' minus 'feedback'. 'enable' ist ein Bit, das die Schleife aktiviert.  Wenn 'enable' falsch ist, werden alle Integratoren zurückgesetzt, und der Ausgang wird auf Null gesetzt.  Wenn 'enable' wahr ist, arbeitet die Schleife normal.

note: type: Plain text
en: The PID gains, limits, and other 'tunable' features of the loop are implemented as parameters.  These are as follows:
de: Die PID-Verstärkungen, Grenzwerte und andere "abstimmbare" Merkmale der Schleife sind als Parameter implementiert.  Diese sind wie folgt:

note: type: Plain text
en: B<Pgain> Proportional gain
de: B<Pgain> Proportionale Verstärkung

note: type: Plain text
en: B<Dgain> Derivative gain
de: B<Dgain> Abgeleitete Verstärkung

note: type: Plain text
en: B<bias> Constant offset on output
de: B<bias> Konstanter Offset am Ausgang

note: type: Plain text
en: B<deadband> Amount of error that will be ignored
de: B<deadband> Betrag des Fehlers, der ignoriert wird

note: type: Plain text
en: B<maxerror> Limit on error
de: B<maxerror> Grenzwert für Fehler

note: type: Plain text
en: B<maxerrorI> Limit on error integrator
de: B<maxerrorI> Begrenzung des Fehlerintegrators

note: type: Plain text
en: B<maxerrorD> Limit on error differentiator
de: B<maxerrorD> Begrenzung des Fehlerdifferenzierers

note: type: Plain text
en: All of the limits (max____) are implemented such that if the parameter value is zero, there is no limit.
de: Alle Grenzwerte (max____) sind so implementiert, dass es keinen Grenzwert gibt, wenn der Parameterwert Null ist.

note: type: Plain text
en: B<errorI> Integral of error
de: B<errorI> Integral des Fehlers

note: type: Plain text
en: B<errorD> Derivative of error
de: B<errorD> Ableitung des Fehlers

note: type: SS
en: Additional auto tuning pins
de: Zusätzliche Auto-Tuning-Pins

note: type: Plain text
en: lowpass cutoff frequency for arc voltage output
de: Tiefpass-Grenzfrequenz für den Lichtbogenspannungsausgang

note: type: Plain text
en: maximum height offset
de: maximaler Höhenversatz

note: type: TP
en: B<plasmac.mesh-arc-ok> bit in (default: I<FALSE>)
de: B<plasmac.mesh-arc-ok> bit in (Standard: I<FALSE>)

note: type: Plain text
en: don't require arc ok for mesh mode
de: für den Maschenmodus kein "arc ok" benötigen

note: type: Plain text
en: enable mesh cutting mode
de: Aktivieren des Netzschneidemodus

note: type: Plain text
en: operating mode
de: Betriebsmodus

note: type: Plain text
en: motion type, connect to motion.motion-type
de: Bewegungsart, Verbindung mit motion.motion-type

note: type: Plain text
en: external thc up switch [mode 2]
de: Externer Thc-Aufwärtsschalter [Modus 2]

note: type: TP
en: B<plasmac.multi-tool> bit in (default: I<1>)
de: B<plasmac.multi-tool> bit in (Standard: I<1>)

note: type: Plain text
en: allows the use of multiple tools
de: ermöglicht die Verwendung mehrerer Werkzeuge

note: type: Plain text
en: wait for probe to deploy (seconds)
de: Warten auf den Einsatz der Sonde (Sekunden)

note: type: Plain text
en: X axis offset for offset probe (machine units)
de: X-Achsen-Offset für Offset-Taster (Maschineneinheiten)

note: type: Plain text
en: Y axis offset for offset probe (machine units)
de: Y-Achsen-Offset für Offset-Taster (Maschineneinheiten)

note: type: TP
en: B<plasmac.ok-sample-counts> s32 in (default: I<10>)
de: B<plasmac.ok-sample-counts> s32 in (Voreinstellung: I<10>)

note: type: TP
en: B<plasmac.ok-sample-threshold> float in (default: I<10>)
de: B<plasmac.ok-sample-threshold> float in (Voreinstellung: I<10>)

note: type: Plain text
en: time required to pierce stock (seconds)
de: erforderliche Zeit zum Durchdringen des Materials (Sekunden)

note: type: Plain text
en: probe down velocity (machine units per minute)
de: Abwärtsgeschwindigkeit der Sonde (Maschineneinheiten pro Minute)

note: type: TP
en: B<plasmac.probe-final-speed> s32 in (default: I<1>)
de: B<plasmac.probe-final-speed> s32 in (Standard: I<1>)

note: type: Plain text
en: final probe speed (steps per servo period)
de: Endgeschwindigkeit des Tasters (Schritte pro Servoperiode)

note: type: Plain text
en: pierce height (machine units)
de: Einstechhöhe (engl. pierce height) (Maschineneinheiten)

note: type: Plain text
en: probe starting height
de: Starthöhe der Sonde

note: type: Plain text
en: probe test only
de: nur Sondentest

note: type: Plain text
en: program is idle, connect to halui.program.is-idle
de: Programm ist im Leerlauf, Verbindung zu halui.program.is-idle

note: type: Plain text
en: program is paused, connect to halui.program.is-paused
de: Programm ist angehalten, Verbindung zu halui.program.is-paused

note: type: Plain text
en: program is running, connect to halui.program.is-running
de: Programm läuft, verbunden mit halui.Programm.is-running

note: type: Plain text
en: delay move from pierce height to cut height (seconds), leave disconnected if not required
de: Verzögerung der Bewegung von der Lochstechhöhe zur Schnitthöhe (Sekunden), nicht angeschlossen lassen, wenn nicht erforderlich

note: type: Plain text
en: puddle jump height (percentage of pierce height), leave disconnected if not required
de: Pfützensprunghöhe (Prozentsatz der Durchstichhöhe), nicht angeschlossen lassen, wenn nicht erforderlich

note: type: Plain text
en: deprecated
de: veraltet

note: type: Plain text
en: requested feed_rate, connect to motion.feed-upm to use as the default (gcode units per minute)
de: angeforderter Vorschub, Verbindung zu motion.feed-upm als Standardwert (G-Code-Einheiten pro Minute)

note: type: TP
en: B<plasmac.resolution> s32 in (default: I<100>)
de: B<plasmac.resolution> s32 in (Voreinstellung: I<100>)

note: type: Plain text
en: multiplier for resolution of the offset counts
de: Multiplikator zur Auflösung der Offset-Zählungen

note: type: Plain text
en: time from arc failure till next restart attempt
de: Zeit vom Ausfall des Lichtbogens bis zum nächsten Wiederanlaufversuch

note: type: Plain text
en: requested safe traverse height (machine units)
de: geforderte sichere Verfahrhöhe (Maschineneinheiten)

note: type: Plain text
en: delay from scribe arm to scribe on
de: Verzögerung von Schreiberarm (scribe arm) zu Schreiber (scribe) an

note: type: Plain text
en: delay from scribe on to motion beginning
de: Verzögerung vom Schreiber (engl. scribe) bis zum Beginn der Bewegung (engl. motion)

note: type: Plain text
en: feed rate for moves to pierce and cut heights (machine units per minute)
de: Vorschubgeschwindigkeit für das Anfahren von Lochstech- und Schnitthöhen (Maschineneinheiten pro Minute)

note: type: Plain text
en: skip IHS if less than this distance from last cut
de: Überspringen von IHS, wenn der Abstand zum letzten Schnitt geringer ist als dieser Wert.

note: type: TP
en: B<plasmac.thc-sample-counts> s32 in (default: I<50>)
de: B<plasmac.thc-sample-counts> s32 in (Voreinstellung: I<50>)

note: type: TP
en: B<plasmac.thc-sample-threshold> float in (default: I<1>)
de: B<plasmac.thc-sample-threshold> float in (Voreinstellung: I<1>)

note: type: Plain text
en: current feed rate per minute
de: aktuelle Vorschubgeschwindigkeit pro Minute

note: type: Plain text
en: requested feed rate
de: gewünschte Vorschubgeschwindigkeit

note: type: Plain text
en: select8 - 8-bit binary match detector
de: select8 - 8-Bit-Binär-Match-Detektor

note: type: Plain text
en: Set enable to FALSE to cause all outputs to be set FALSE
de: Setzen Sie enable auf FALSE, damit alle Ausgänge auf FALSE gesetzt werden.

note: type: Plain text
en: The number of the output to set TRUE.  All other outputs well be set FALSE
de: Die Nummer des Ausgangs, der auf TRUE gesetzt werden soll.  Alle anderen Ausgänge sollten auf FALSE gesetzt werden.

note: type: Plain text
en: Output bits.  If enable is set and the sel input is between 0 and 7, then the corresponding output bit will be set true
de: Ausgangsbits.  Wenn enable gesetzt ist und der sel-Eingang zwischen 0 und 7 liegt, wird das entsprechende Ausgangsbit auf true gesetzt

note: type: Plain text
en: serport - Hardware driver for the digital I/O bits of the 8250 and 16550 serial port.
de: serport - Hardwaretreiber für die digitalen E/A-Bits der seriellen Schnittstelle des 8250 und 16550.

note: type: Plain text
en: The pin numbers refer to the 9-pin serial pinout.  Keep in mind that these ports generally use rs232 voltages, not 0/5V signals.
de: Die Pin-Nummern beziehen sich auf die 9-polige serielle Pinbelegung.  Beachten Sie, dass diese Anschlüsse in der Regel rs232-Spannungen verwenden, nicht 0/5V-Signale.

note: type: Plain text
en: Specify the I/O address of the serial ports using the module parameter B<io=>I<addr[,addr...]>.  These ports must not be in use by the kernel.  To free up the I/O ports after bootup, install setserial and execute a command like:
de: Geben Sie die E/A-Adresse der seriellen Schnittstellen mit dem Modulparameter B<io=>I<addr[,addr...]> an.  Diese Ports dürfen nicht vom Kernel verwendet werden.  Um die E/A-Ports nach dem Booten freizugeben, installieren Sie setserial und führen Sie einen Befehl wie diesen aus:

note: type: Plain text
en: but it is best to ensure that the serial port is never used or configured by the Linux kernel by setting a kernel commandline parameter or not loading the serial kernel module if it is a modularized driver.
de: aber es ist am besten, sicherzustellen, dass die serielle Schnittstelle niemals vom Linux-Kernel verwendet oder konfiguriert wird, indem man einen Kernel-Befehlszeilenparameter setzt oder das serielle Kernelmodul nicht lädt, wenn es sich um einen modularisierten Treiber handelt.

note: type: Plain text
en: Also called DCD (data carrier detect); pin 8 on the 25-pin serial pinout
de: Auch DCD (Data Carrier Detect) genannt; Pin 8 der 25-poligen seriellen Pinbelegung

note: type: Plain text
en: Also called DSR (data set ready); pin 6 on the 25-pin serial pinout
de: Auch DSR (Data Set Ready) genannt; Pin 6 der 25-poligen seriellen Pinbelegung

note: type: Plain text
en: Also called CTS (clear to send); pin 5 on the 25-pin serial pinout
de: Auch CTS (clear to send) genannt; Pin 5 auf der 25-poligen seriellen Pinbelegung

note: type: Plain text
en: Also called RI (ring indicator); pin 22 on the 25-pin serial pinout
de: Auch RI (Ring Indicator) genannt; Pin 22 der 25-poligen seriellen Pinbelegung

note: type: Plain text
en: Inverted version of pin-1-in
de: Invertierte Version von pin-1-in

note: type: Plain text
en: Inverted version of pin-6-in
de: Invertierte Version von pin-6-in

note: type: Plain text
en: Inverted version of pin-8-in
de: Invertierte Version von pin-8-in

note: type: Plain text
en: Inverted version of pin-9-in
de: Invertierte Version von Pin-9-in

note: type: Plain text
en: Also called TX (transmit data); pin 2 on the 25-pin serial pinout
de: Auch TX (Transmit Data) genannt; Pin 2 auf der 25-poligen seriellen Pinbelegung

note: type: Plain text
en: Also called DTR (data terminal ready); pin 20 on the 25-pin serial pinout
de: Auch DTR (Data Terminal Ready) genannt; Pin 20 auf der 25-poligen seriellen Pinbelegung

note: type: Plain text
en: Also called RTS (request to send); pin 4 on the 25-pin serial pinout
de: Auch RTS (request to send) genannt; Pin 4 der 25-poligen seriellen Belegung

note: type: Plain text
en: setsserial - a utility for setting Smart Serial NVRAM parameters.
de: setsserial - ein Dienstprogramm zur Einstellung der Smart Serial NVRAM-Parameter.

note: type: Plain text
en: B<NOTE: This rather clunky utility is no longer needed except for> flashing new smart-serial remote firmware. Smart-serial remote parameters can now be set in the HAL file in the normal way.
de: B<HINWEIS: Dieses recht klobige Dienstprogramm wird nicht mehr benötigt, außer zum> Flashen neuer Smart-Serial-Remote-Firmware. Smart-serial Remote-Parameter können jetzt in der HAL-Datei auf normale Weise eingestellt werden.

note: type: Plain text
en: Commands available are B<set> and B<flash>.
de: Die verfügbaren Befehle sind B<set> und B<flash>.

note: type: Plain text
en: This utility should be used under halcmd, without LinuxCNC running or any realtime threads running.
de: Dieses Dienstprogramm sollte unter halcmd verwendet werden, ohne dass LinuxCNC läuft oder irgendwelche Echtzeit-Threads laufen.

note: type: Plain text
en: A typical command sequence would be:
de: Eine typische Befehlssequenz wäre die folgende:

note: type: Plain text
en: This example uses the option to have the HAL pins and parameters labelled by the serial number of the remote. This is not necessary but can reduce the scope for confusion. (The serial number is normally on a sticker on the device.)
de: In diesem Beispiel wird die Option verwendet, die HAL-Pins und Parameter mit der Seriennummer der Fernbedienung zu kennzeichnen. Dies ist nicht notwendig, kann aber die Verwechslungsgefahr verringern. (Die Seriennummer befindet sich normalerweise auf einem Aufkleber auf dem Gerät.)

note: type: Plain text
en: The next line loads the hm2_pci driver in the normal way. The hm2_7i43 driver should work equally well, as should any future 7i80 driver.  If the card has already been strted up and a firmware has been loaded, then the config string may be omitted.
de: Die nächste Zeile lädt den hm2_pci-Treiber auf die übliche Weise. Der hm2_7i43-Treiber sollte genauso gut funktionieren, wie jeder zukünftige 7i80-Treiber.  Wenn die Karte bereits konfiguriert und eine Firmware geladen wurde, kann der Konfigurationsstring weggelassen werden.

note: type: Plain text
en: "show param" is optional, but provides a handy list of all the devices and parameters. It also shows the current values of the parameters which can be useful for determining scaling. u32 pin values are always shown in hex, but new values can be entered in decimal or hex. Use the Ox123ABC format to enter a hex value.
de: "show param" ist optional, liefert aber eine praktische Liste aller Geräte und Parameter. Es zeigt auch die aktuellen Werte der Parameter an, was für die Bestimmung der Skalierung nützlich sein kann. u32-Pin-Werte werden immer in Hex angezeigt, aber neue Werte können in Dezimal- oder Hexadezimalwerten eingegeben werden. Verwenden Sie das Format Ox123ABC, um einen Hex-Wert einzugeben.

note: type: Plain text
en: On exiting there will typically be a further error message related to the driver failing to unload setsserial. This can be ignored.
de: Beim Beenden des Programms wird normalerweise eine weitere Fehlermeldung angezeigt, die sich darauf bezieht, dass der Treiber setsserial nicht entladen konnte. Dies kann ignoriert werden.

note: type: Plain text
en: The parameter changes will not show up until the drivers are reloaded.  //TODO// Add a "get" command to avoid this problem.
de: Die Parameteränderungen werden erst nach einem erneuten Laden der Treiber angezeigt.  //TODO// Fügen Sie einen "get"-Befehl hinzu, um dieses Problem zu vermeiden.

note: type: Plain text
en: B<Flashing Firmware> To flash new firmware to an FPGA card such as the 5i25 or 5i20 the "mesaflash" utility should be used. Setsserial is only useful for changing/updating the firmware on smart-serial remote such as the 8i20.  The firmware should be placed somewhere in the /lib/firmware/hm2 tree, where the Linux firmware loading macros can find it.
de: B<Flashing Firmware> Um neue Firmware auf eine FPGA-Karte wie die 5i25 oder 5i20 zu flashen, sollte das Dienstprogramm "mesaflash" verwendet werden. Setsserial ist nur zum Ändern/Aktualisieren der Firmware auf Smart-Serial-Fernbedienungen wie dem 8i20 nützlich.  Die Firmware sollte irgendwo im /lib/firmware/hm2-Baum abgelegt werden, wo die Linux-Firmware-Lademakros sie finden können.

note: type: Plain text
en: The flashing routine operates in a realtime thread, and can only send prompts to the user through the kernel log (dmesg). It is most convenient to open two terminal windows, one for command entry and one to monitor progress.
de: Die Flashing-Routine arbeitet in einem Echtzeit-Thread und kann nur über das Kernel-Protokoll (dmesg) Aufforderungen an den Benutzer senden. Am bequemsten ist es, zwei Terminalfenster zu öffnen, eines für die Befehlseingabe und eines zur Überwachung des Fortschritts.

note: type: Plain text
en: In the first terminal enter
de: Geben Sie im ersten Terminal ein

note: type: Plain text
en: This terminal will now display status information.
de: Dieses Terminal zeigt nun Statusinformationen an.

note: type: Plain text
en: The second window will be used to enter the commands. It is important that LinuxCNC and/or HAL are not already loaded when the process is started.  To flash new firmware it is necessary to move a jumper on the smart-serial remote drive and to switch smart-serial communication to a slower baudrate.
de: Das zweite Fenster wird zur Eingabe der Befehle verwendet. Es ist wichtig, dass LinuxCNC und/oder HAL nicht bereits geladen sind, wenn der Prozess gestartet wird.  Um neue Firmware zu flashen, ist es notwendig, einen Jumper auf dem smart-seriellen Fernantrieb zu bewegen und die smart-serielle Kommunikation auf eine langsamere Baudrate umzuschalten.

note: type: Plain text
en: A typical command sequence is then
     halrun
     loadrt hostmot2 sserial_baudrate=115200
     loadrt hm2_pci config="firmware=hm2/5i23/svss8_8.bit"
     loadrt setsserial cmd="flash hm2_5i23.0.8i20.0.1 hm2/8i20/8i20T.BIN"
     exit
de: Eine typische Befehlsfolge ist dann
     halrun
     loadrt hostmot2 sserial_baudrate=115200
     loadrt hm2_pci config="firmware=hm2/5i23/svss8_8.bit"
     loadrt setsserial cmd="flash hm2_5i23.0.8i20.0.1 hm2/8i20/8i20T.BIN"
     exit

note: type: Plain text
en: It is not necessary (or useful) to specify a config string in a system using the 5i25 or 6i25 cards.
de: In einem System, das die Karten 5i25 oder 6i25 verwendet, ist es nicht notwendig (und auch nicht sinnvoll), einen Konfigurationsstring anzugeben.

note: type: Plain text
en: Note that it is necessary to exit halrun and unload the realtime environment before flashing the next card (exit)
de: Beachten Sie, dass es notwendig ist, halrun zu beenden und die Echtzeitumgebung zu entladen, bevor Sie die nächste Karte flashen (exit)

note: type: Plain text
en: The correct sserial channel name to use can be seen in the dmesg output in the feedback terminal after the loadrt hm2_pci step of the sequence.
de: Der korrekte Name des zu verwendenden seriellen Kanals ist in der dmesg-Ausgabe im Feedback-Terminal nach dem Schritt loadrt hm2_pci der Sequenz zu sehen.

note: type: Plain text
en: siggen - signal generator
de: siggen - Signalgeber

note: type: Plain text
en: B<siggen> is a signal generator that can be used for testing and other applications that need simple waveforms.  It produces sine, cosine, triangle, sawtooth, and square waves of variable frequency, amplitude, and offset, which can be used as inputs to other HAL components.
de: B<siggen> ist ein Signalgenerator, der für Tests und andere Anwendungen, die einfache Wellenformen benötigen, verwendet werden kann.  Er erzeugt Sinus-, Kosinus-, Dreieck-, Sägezahn- und Rechteckwellen mit variabler Frequenz, Amplitude und Offset, die als Eingänge für andere HAL-Komponenten verwendet werden können.

note: type: Plain text
en: B<siggen> supports a maximum of sixteen channels.  The number of channels actually loaded is set by the B<num_chan> argument when the module is loaded.  Alternatively, specify B<names=> and unique names separated by commas.
de: B<siggen> unterstützt maximal sechzehn Kanäle.  Die Anzahl der tatsächlich geladenen Kanäle wird durch das Argument B<num_chan> festgelegt, wenn das Modul geladen wird.  Alternativ können Sie B<names=> und eindeutige, durch Kommata getrennte Namen angeben.

note: type: Plain text
en: The names for pins, parameters, and functions are prefixed as:
      B<siggen.N.> for N=0,1,...,num-1 when using B<num_chan=num>
      B<nameN.> for nameN=name1,name2,... when using B<names=name1,name2,...>
de: Die Namen für Pins, Parameter und Funktionen werden als Präfix verwendet:
      B<siggen.N.> für N=0,1,...,num-1 bei Verwendung von B<num_chan=num>
      B<nameN.> für nameN=name1,name2,... bei Verwendung von B<names=name1,name2,...>

note: type: Plain text
en: The B<siggen.N.> format is shown in the following descriptions.
de: Das Format B<siggen.N.> wird in den folgenden Beschreibungen dargestellt.

note: type: Plain text
en: Updates output pins for signal generator I<N>.  Each time it is called it calculates a new sample.  It should be called many times faster than the desired signal frequency, to avoid distortion and aliasing.
de: Aktualisiert die Ausgangspins für den Signalgenerator I<N>.  Jedes Mal, wenn er aufgerufen wird, berechnet er ein neues Sample.  Er sollte um ein Vielfaches schneller aufgerufen werden als die gewünschte Signalfrequenz, um Verzerrungen und Aliasing zu vermeiden.

note: type: Plain text
en: The output frequency for signal generator I<N>, in Hertz.  The default value is 1.0 Hertz.
de: Die Ausgangsfrequenz für den Signalgenerator I<N>, in Hertz.  Der Standardwert ist 1,0 Hertz.

note: type: Plain text
en: The output amplitude for signal generator I<N>.  If B<offset> is zero, the outputs will swing from -B<amplitude> to +B<amplitude>.  The default value is 1.00.
de: Die Ausgangsamplitude für den Signalgenerator I<N>.  Wenn B<Offset> Null ist, schwingen die Ausgänge von -B<Amplitude> bis +B<Amplitude>.  Der Standardwert ist 1,00.

note: type: Plain text
en: The output offset for signal generator I<N>.  This value is added directly to the output signal.  The default value is zero.
de: Der Ausgangsoffset für den Signalgenerator I<N>.  Dieser Wert wird direkt zum Ausgangssignal addiert.  Der Standardwert ist Null.

note: type: Plain text
en: Resets output pins to pretermined states:
      sine      0
      sawtooth  0
      square   -1 * amplitude
      cosine   -1 * amplitude
      triangle -1 * amplitude
de: Setzt die Ausgangspins auf den vordefinierten Zustand zurück:
      Sinus 0
      Sägezahn 0
      Quadrat -1 * Amplitude
      Kosinus -1 * Amplitude
      Dreieck -1 * Amplitude

note: type: Plain text
en: The clock output.  Bit type clock signal output at the commanded frequency.
de: Der Taktausgang.  Bittyp-Taktsignalausgabe mit der befohlenen Frequenz.

note: type: Plain text
en: The square wave output.  Positive while B<triangle> and B<cosine> are ramping upwards, and while B<sine> is negative.
de: Die Rechteckwellenausgabe.  Positiv, während B<Dreieck> und B<Kosinus> aufwärts laufen, und während B<Sinus> negativ ist.

note: type: Plain text
en: The cosine output.  Leads B<sine> by 90 degrees.
de: Der Kosinus-Ausgang.  Ist dem B<Sinus> um 90 Grad voraus.

note: type: Plain text
en: The triangle wave output.  Ramps up while B<square> is positive, and down while B<square> is negative.  Reaches its positive and negative peaks at the same time as B<cosine>.
de: Der Ausgang der Dreieckswelle.  Steigt an, wenn B<Quadrat> positiv ist, und fällt ab, wenn B<Quadrat> negativ ist.  Erreicht seine positiven und negativen Spitzenwerte zur gleichen Zeit wie B<Kosinus>.

note: type: Plain text
en: The sawtooth output.  Ramps upwards to its positive peak, then instantly drops to its negative peak and starts ramping again.  The drop occurs when B<triangle> and B<cosine> are at their positive peaks, and coincides with the falling edge of B<square>.
de: Der Sägezahnausgang.  Er steigt bis zu seiner positiven Spitze an, fällt dann sofort auf seine negative Spitze ab und beginnt erneut zu steigen.  Der Abfall tritt auf, wenn B<Dreieck> und B<Kosinus> ihre positiven Spitzenwerte erreichen, und fällt mit der abfallenden Flanke von B<Quadrat> zusammen.

note: type: Plain text
en: sim_axis_hardware - A component to simulate home and limit switches
de: sim_axis_hardware - Eine Komponente zur Simulation von Referenz- und Endschaltern

note: type: Plain text
en: This component creates simulated home and limit switches based on the current position.
de: Diese Komponente erzeugt simulierte Referenz- und Endschalter basierend auf der aktuellen Position.

note: type: Plain text
en: It currently can supply simulation for X, tandem X, Y, tandem Y, Z, U, V, and A axes.
de: Es kann derzeit Simulationen für X-, Tandem-X-, Y-, Tandem-Y-, Z-, U-, V- und A-Achsen liefern.

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.update> (requires a floating-point thread)
de: B<sim-axis-hardware.>I<N>B<.update> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: The current position on the axis - eg connect to joint.0.motor-pos-fb
de: Die aktuelle Position auf der Achse - z. B. Verbindung mit joint.0.motor-pos-fb

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Xhomesw-pos> float in (default: I<1>)
de: B<sim-axis-hardware.>I<N>B<.Xhomesw-pos> float in (Voreinstellung: I<1>)

note: type: Plain text
en: The position of the home switch
de: Die Position des Referenzpunkt-Schalters

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.X2homesw-pos> float in (default: I<1>)
de: B<sim-axis-hardware.>I<N>B<.X2homesw-pos> float in (Voreinstellung: I<1>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Yhomesw-pos> float in (default: I<1>)
de: B<sim-axis-hardware.>I<N>B<.Yhomesw-pos> float in (Voreinstellung: I<1>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Y2homesw-pos> float in (default: I<1>)
de: B<sim-axis-hardware.>I<N>B<.Y2homesw-pos> float in (Voreinstellung: I<1>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Zhomesw-pos> float in (default: I<1>)
de: B<sim-axis-hardware.>I<N>B<.Zhomesw-pos> float in (Voreinstellung: I<1>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Ahomesw-pos> float in (default: I<1>)
de: B<sim-axis-hardware.>I<N>B<.Ahomesw-pos> float in (Voreinstellung: I<1>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Uhomesw-pos> float in (default: I<1>)
de: B<sim-axis-hardware.>I<N>B<.Uhomesw-pos> float in (Voreinstellung: I<1>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Vhomesw-pos> float in (default: I<1>)
de: B<sim-axis-hardware.>I<N>B<.Vhomesw-pos> float in (Voreinstellung: I<1>)

note: type: Plain text
en: The upper range of the maximum limit switch, above this is false.
de: Der obere Bereich des maximalen Endschalters, oberhalb davon ist falsch.

note: type: Plain text
en: The lower range of the maximum limit switch, below this is false.
de: Der untere Bereich des maximalen Endschalters, darunter ist er falsch.

note: type: Plain text
en: The upper range of the minimum limit switch, above this is false.
de: Der obere Bereich des minimalen Endschalters, oberhalb davon ist falsch.

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Xhomesw-hyst> float in (default: I<.025>)
de: B<sim-axis-hardware.>I<N>B<.Xhomesw-hyst> float in (Voreinstellung: I<.025>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.X2homesw-hyst> float in (default: I<.025>)
de: B<sim-axis-hardware.>I<N>B<.X2homesw-hyst> float in (Voreinstellung: I<.025>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Yhomesw-hyst> float in (default: I<.025>)
de: B<sim-axis-hardware.>I<N>B<.Yhomesw-hyst> float in (Voreinstellung: I<.025>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Y2homesw-hyst> float in (default: I<.025>)
de: B<sim-axis-hardware.>I<N>B<.Y2homesw-hyst> float in (Voreinstellung: I<.025>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Zhomesw-hyst> float in (default: I<.025>)
de: B<sim-axis-hardware.>I<N>B<.Zhomesw-hyst> float in (Voreinstellung: I<.025>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Ahomesw-hyst> float in (default: I<.025>)
de: B<sim-axis-hardware.>I<N>B<.Ahomesw-hyst> float in (Voreinstellung: I<.025>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Uhomesw-hyst> float in (default: I<.025>)
de: B<sim-axis-hardware.>I<N>B<.Uhomesw-hyst> float in (Voreinstellung: I<.025>)

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.Vhomesw-hyst> float in (default: I<.025>)
de: B<sim-axis-hardware.>I<N>B<.Vhomesw-hyst> float in (Voreinstellung: I<.025>)

note: type: Plain text
en: True is homing in progress
de: True während Referenzfahrt

note: type: Plain text
en: Home switch for the X axis
de: Referenzschalter für die X-Achse

note: type: Plain text
en: Max limit switch
de: Maximaler Endschalter

note: type: Plain text
en: min limit switch
de: Min. Endschalter

note: type: Plain text
en: True for both max and min limit switch
de: True für max- und min-Endschalter

note: type: Plain text
en: True for all limits and all home.
de: Das gilt für alle Grenzen und für alle Referenzpunkte.

note: type: TP
en: B<sim-axis-hardware.>I<N>B<.limit-offset> float in (default: I<.01>)
de: B<sim-axis-hardware.>I<N>B<.limit-offset> float in (Voreinstellung: I<.01>)

note: type: Plain text
en: how much the limit switches are offset from inputted position. added to max, subtracted from min
de: wie weit die Endschalter von der eingegebenen Position abweichen. addiert zu max, subtrahiert von min

note: type: Plain text
en: sim_encoder - simulated quadrature encoder
de: sim_encoder - simulierter Quadratur-Encoder

note: type: Plain text
en: B<sim_encoder> can generate quadrature signals as if from an encoder.  It also generates an index pulse once per revolution.  It is mostly used for testing and simulation, to replace hardware that may not be available.  It has a limited maximum frequency, as do all software based pulse generators.
de: B<sim_encoder> kann Quadratursignale wie von einem Encoder erzeugen.  Außerdem erzeugt er einmal pro Umdrehung einen Indeximpuls.  Er wird hauptsächlich zu Test- und Simulationszwecken verwendet, um möglicherweise nicht vorhandene Hardware zu ersetzen.  Wie alle softwarebasierten Impulsgeneratoren hat er eine begrenzte Höchstfrequenz.

note: type: Plain text
en: B<sim_encoder> supports a maximum of eight channels.  The number of channels actually loaded is set by the B<num_chan=> argument when the module is loaded.  Alternatively, specify B<names=> and unique names separated by commas.
de: B<sim_encoder> unterstützt maximal acht Kanäle.  Die Anzahl der tatsächlich geladenen Kanäle wird durch das Argument B<num_chan=> festgelegt, wenn das Modul geladen wird.  Alternativ können Sie B<names=> und eindeutige, durch Kommata getrennte Namen angeben.

note: type: TP
en: B<sim-encoder.make-pulses> (no floating-point)
de: B<sim-encoder.make-pulses> (kein Gleitkomma)

note: type: Plain text
en: Generates the actual quadrature and index pulses.  Must be called as frequently as possible, to maximize the count rate and minimize jitter.  Operates on all channels at once.
de: Erzeugt die eigentlichen Quadratur- und Indeximpulse.  Muss so häufig wie möglich aufgerufen werden, um die Zählrate zu maximieren und den Jitter zu minimieren.  Arbeitet auf allen Kanälen gleichzeitig.

note: type: TP
en: B<sim-encoder.update-speed> (uses floating-point)
de: B<sim-encoder.update-speed> (verwendet Gleitkomma)

note: type: Plain text
en: Reads the B<speed> command and other parameters and converts the data into a form that can be used by B<make-pulses>.  Changes take effect only when B<update-speed> runs.  Can (and should) be called less frequently than B<make-pulses>.  Operates on all channels at once.
de: Liest den Befehl B<speed> und andere Parameter und wandelt die Daten in eine Form um, die von B<make-pulses> verwendet werden kann.  Die Änderungen werden erst wirksam, wenn B<update-speed> ausgeführt wird.  Kann (und sollte) weniger häufig aufgerufen werden als B<make-pulses>.  Wirkt auf alle Kanäle gleichzeitig.

note: type: Plain text
en: The names for pins and parameters are prefixed as:
      B<sim-encoder.N.> for N=0,1,...,num-1 when using B<num_chan=num>
      B<nameN.> for nameN=name1,name2,... when using B<names=name1,name2,...>
de: Die Namen für Pins und Parameter werden versehen mit dem Präfix:
      B<sim-encoder.N.> für N=0,1,...,num-1 bei Verwendung von B<num_chan=num>
      B<nameN.> für nameN=name1,name2,... bei Verwendung von B<names=name1,name2,...>

note: type: Plain text
en: The B<sim-encoder.N.> format is shown in the following descriptions.
de: Das Format B<sim-encoder.N.> wird in den folgenden Beschreibungen gezeigt.

note: type: Plain text
en: One of the quadrature outputs.
de: Einer der Quadraturausgänge.

note: type: Plain text
en: The other quadrature output.
de: Der andere Quadraturausgang.

note: type: Plain text
en: The index pulse.
de: Der Indexpuls.

note: type: Plain text
en: The desired speed of the encoder, in user units per per second.  This is divided by B<scale>, and the result is used as the encoder speed in revolutions per second.
de: Die gewünschte Geschwindigkeit des Encoders, in Benutzereinheiten pro Sekunde.  Dieser Wert wird durch B<Skala> geteilt, und das Ergebnis wird als Gebergeschwindigkeit in Umdrehungen pro Sekunde verwendet.

note: type: Plain text
en: The pulses per revolution of the simulated encoder.  Note that this is pulses, not counts, per revolution (ppr).  Each pulse or cycle from the encoder results in four counts, because every edge is counted.  Default value is 100 ppr, or 400 counts per revolution.
de: Die Impulse pro Umdrehung des simulierten Encoders.  Beachten Sie, dass es sich um Impulse (ppr) und nicht um Zählungen pro Umdrehung handelt.  Jeder Impuls oder Zyklus des Encoders ergibt vier Zählungen, da jede Flanke gezählt wird.  Der Standardwert ist 100 ppr, d. h. 400 Zählungen pro Umdrehung.

note: type: Plain text
en: Scale factor for the B<speed> input.  The B<speed> value is divided by B<scale> to get the actual encoder speed in revolutions per second.  For example, if B<scale> is set to 60, then B<speed> is in revolutions per minute (RPM) instead of revolutions per second.  The default value is 1.00.
de: Skalierungsfaktor für den B<speed>-Eingang.  Der Wert B<speed> wird durch B<scale> geteilt, um die tatsächliche Gebergeschwindigkeit in Umdrehungen pro Sekunde zu erhalten.  Wenn B<scale> zum Beispiel auf 60 eingestellt ist, wird B<speed> in Umdrehungen pro Minute (RPM) statt in Umdrehungen pro Sekunde angegeben.  Der Standardwert ist 1,00.

note: type: Plain text
en: sim_home_switch - Home switch simulator
de: sim_home_switch - Referenzschalter-Simulator

note: type: Plain text
en: After tripping home switch, travel in opposite direction is required (amount set by the hysteresis pin).  A pin (index-enable) is provided for use when B<[JOINT_n]HOME_USE_INDEX> is specified to reset the I/O pin B<joint.N.index-enable>.
de: Nach dem Auslösen des Home-Schalters ist eine Fahrt in die entgegengesetzte Richtung erforderlich (der Betrag wird durch den Hysterese-Pin festgelegt).  Ein Pin (Index-Freigabe) ist für die Verwendung vorgesehen, wenn B<[JOINT_n]HOME_USE_INDEX> angegeben ist, um den E/A-Pin B<joint.N.index-enable> zurückzusetzen.

note: type: TP
en: B<sim-home-switch.>I<N> (requires a floating-point thread)
de: B<sim-home-switch.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Current position (typically: joint.n.motor-pos-fb)
de: Aktuelle Position (typischerweise: joint.n.motor-pos-fb)

note: type: Plain text
en: Home switch position
de: Referenzschalter-Position

note: type: TP
en: B<sim-home-switch.>I<N>B<.hysteresis> float in (default: I<0.1>)
de: B<sim-home-switch.>I<N>B<.hysteresis> float in (Voreinstellung: I<0.1>)

note: type: Plain text
en: Travel required to backoff (hysteresis)
de: Erforderlicher Weg bis zur Rückstellung (Hysterese)

note: type: Plain text
en: Home switch activated
de: Referenzschalter aktiviert

note: type: Plain text
en: typ: connect to joint.N.index-enable
de: typ: Verbindung mit joint.N.index-enable

note: type: TP
en: B<sim-home-switch.>I<N>B<.index-delay-ms> float in (default: I<10>)
de: B<sim-home-switch.>I<N>B<.index-delay-ms> float in (Voreinstellung: I<10>)

note: type: Plain text
en: delay in msec to reset index-enable
de: Verzögerung in Millisekunden bis zum Zurücksetzen von index-enable

note: type: Plain text
en: sim_matrix_kb - convert HAL pin inputs to keycodes
de: sim_matrix_kb - Konvertierung der HAL-Pin-Eingänge in Tastencodes

note: type: TP
en: B<sim-matrix-kb.>I<N> (requires a floating-point thread)
de: B<sim-matrix-kb.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: pin that outputs the Keycode
de: Pin, der den Keycode ausgibt

note: type: Plain text
en: array of inputs
de: Array von Eingängen

note: type: Plain text
en: sim_parport - A component to simulate the pins of the hal_parport component
de: sim_parport - Eine Komponente zur Simulation der Pins der hal_parport Komponente

note: type: Plain text
en: Sim_parport is used to replace the pins of a real parport without changing any of the pins names in the rest of the config.
de: Sim_parport wird verwendet, um die Pins eines realen Parports zu ersetzen, ohne die Namen der Pins im Rest der Konfiguration zu ändern.

note: type: Plain text
en: It has pass-through pins (ending in -fake) that allows connecting to other components.
de: Es hat Durchgangsstifte (mit der Endung -fake), die den Anschluss an andere Komponenten ermöglichen.

note: type: Plain text
en: eg pin-02-in will follow pin-02-in-fake 's logic.
de: z.B. wird pin-02-in der Logik von pin-02-in-fake folgen.

note: type: Plain text
en: pin_01_out-fake will follow pin_01_out (possibly modified by pin_01_out-invert)
de: pin_01_out-fake folgt pin_01_out (möglicherweise modifiziert durch pin_01_out-invert)

note: type: Plain text
en: It creates all possible pins of both 'in' and 'out' options of the hal_parport component.
de: Es erzeugt alle möglichen Pins der beiden Optionen 'in' und 'out' der Komponente hal_parport.

note: type: Plain text
en: This allows using other hardware I/O in place of the parport (without having to change the rest of the config)
de: Dies ermöglicht die Verwendung anderer Hardware-E/A anstelle des Parports (ohne den Rest der Konfiguration ändern zu müssen)

note: type: Plain text
en: or simulating hardware such as limit switches.
de: oder die Simulation von Hardware wie z. B. Endschaltern.

note: type: Plain text
en: it's primary use is in Stepconf for building simulated configs.
de: Sie wird in erster Linie in Stepconf zur Erstellung simulierter Konfigurationen verwendet.

note: type: Plain text
en: You must use the names= option to have the right pin names.
de: Sie müssen die Option names= verwenden, um die richtigen Pin-Namen zu erhalten.

note: type: Plain text
en: eg. names=parport.0,parport.1
de: z. B. names=parport.0,parport.1

note: type: Plain text
en: The read and write functions pass the logic from pins to fake pins or vice vera
de: Die Lese- und Schreibfunktionen leiten die Logik von Pins zu Fake-Pins oder umgekehrt weiter.

note: type: Plain text
en: The reset function is a no operation.
de: Die Rücksetzfunktion ist eine Nulloperation.

note: type: Plain text
en: Used by PNCconf to allow testing of acceleration and velocity values for an axis.
de: Wird von PnCconf verwendet, um das Testen von Beschleunigungs- und Geschwindigkeitswerten für eine Achse zu ermöglichen.

note: type: TP
en: B<simple-tp.>I<N>B<.update> (requires a floating-point thread)
de: B<simple-tp.>I<N>B<.update> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: target position to plan for.
de: vorzubereitende Ziel-Position.

note: type: Plain text
en: Acceleration rate
de: Beschleunigungsrate

note: type: Plain text
en: If disabled, planner sets velocity to zero immediately.
de: Wenn deaktiviert, setzt der Planer die Geschwindigkeit sofort auf Null.

note: type: Plain text
en: position commanded at this point in time.
de: zu diesem Zeitpunkt befohlene Position.

note: type: Plain text
en: velocity commanded at this moment in time.
de: zu diesem Zeitpunkt befohlene Geschwindigkeit.

note: type: Plain text
en: B<Parameters:>
de: B<Parameter:>

note: type: Plain text
en: (float rw) .7i77.0.0.spinout-maxlim: The maximum speed request allowable
de: (float rw) .7i77.0.0.spinout-maxlim: Die maximal zulässige Drehzahlanforderung

note: type: Plain text
en: (float rw) .7i77.0.0.spinout-minlim: The minimum speed request.
de: (float rw) .7i77.0.0.spinout-minlim: Die geforderte Mindestgeschwindigkeit.

note: type: Plain text
en: (float rw) .7i77.0.0.spinout-scalemax: The spindle speed scaling. This is the speed request which would correspond to full-scale output from the spindle control pin. For example with a 10V drive voltage and a 10000rpm scalemax a value of 10,000 rpm on the spinout pin would produce 10V output. However, if spinout-maxlim were set to 5,000 rpm then no voltage above 5V would be output.
de: (float rw) .7i77.0.0.spinout-scalemax: Die Skalierung der Spindeldrehzahl. Dies ist die Drehzahlanforderung, die der Vollaussteuerung des Spindelsteuerpins entsprechen würde. Bei einer Steuerspannung von 10 V und einer Skalierung von 10000 U/min würde beispielsweise ein Wert von 10.000 U/min am Spinout-Pin einen Ausgang von 10 V erzeugen. Wäre der Spinout-Maximalwert jedoch auf 5.000 U/min eingestellt, würde keine Spannung über 5 V ausgegeben werden.

note: type: Plain text
en: (float rw) .7i77.0.0.analogoutN-maxlim: (N = 0 to 5) The maximum speed request allowable
de: (float rw) .7i77.0.0.analogoutN-maxlim: (N = 0 bis 5) Die maximal zulässige Drehzahlanforderung

note: type: Plain text
en: (float rw) .7i77.0.0.analogoutN-minlim: (N = 0 to 5) The minimum speed request.
de: (Float rw) .7i77.0.0.analogoutN-minlim: (N = 0 bis 5) Die Anforderung der Mindestgeschwindigkeit.

note: type: Plain text
en: (float rw) .7i77.0.0.analogoutN-scalemax: (N = 0 to 5) The analog speed scaling.  This is the speed request which would correspond to full-scale output from the spindle control pin. For example with a 10V drive voltage and a 10000rpm scalemax a value of 10,000 rpm on the spinout pin would produce 10V output. However, if spinout-maxlim were set to 5,000 rpm then no voltage above 5V would be output.
de: (float rw) .7i77.0.0.analogoutN-scalemax: (N = 0 bis 5) Die analoge Drehzahlskalierung.  Dies ist die Drehzahlanforderung, die dem Vollausschlag am Spindelsteuerpin entsprechen würde. Bei einer Steuerspannung von 10 V und einer Skalierung von 10000 U/min würde beispielsweise ein Wert von 10.000 U/min am Spinout-Pin einen Ausgang von 10 V erzeugen. Wäre der Spinout-Maximalwert jedoch auf 5.000 U/min eingestellt, würde keine Spannung über 5 V ausgegeben werden.

note: type: Plain text
en:  MODE 0: Bidirectional mode (48 bits in 48 bits out)
     MODE 1: Input only mode (48 bits in)
     MODE 2: Output only mode (48 bits out)
     MODE 3: 24/24mode (24 bits in = bits 0..23 and 24 bits out = bits 24..47)
     MODE 4: Bidirectional mode (48 bits in 48 bits out) plus 4 MPG encoder channels oninputs 0 through 7
de:  MODE 0: Bidirektionaler Modus (48 Bits ein, 48 Bits aus)
     MODE 1: Nur Eingangsmodus (48 Bits ein)
     MODE 2: Nur Ausgangsmodus (48 Bits out)
     MODE 3: 24/24Modus (24 Bits in = Bits 0..23 und 24 Bits out = Bits 24..47)
     MODUS 4: Bidirektionaler Modus (48 Bits in 48 Bits out) plus 4 MPG-Encoderkanäle auf den Eingängen 0 bis 7

note: type: Plain text
en: (bit out) .7i69.0.0.input-NN-not: Digital input, inverted.
de: (bit out) .7i69.0.0.input-NN-not: Digitaler Eingang, invertiert.

note: type: Plain text
en: (u32 ro) .7i69.0.0.nvbaudrate: Indicates the vbaud rate. This probably should not be altered.
de: (u32 ro) .7i69.0.0.nvbaudrate: Gibt die vbaud-Rate an. Diese sollte wahrscheinlich nicht verändert werden.

note: type: Plain text
en: (u32 ro) .7i69.0.0.nvunitnumber: Indicates the serial number of the device and should match a sticker on the card. This can be useful for working out which card is which.
de: (u32 ro) .7i69.0.0.nvunitnumber: Gibt die Seriennummer des Geräts an und sollte mit einem Aufkleber auf der Karte übereinstimmen. Dies kann nützlich sein, um herauszufinden, welche Karte welche ist.

note: type: Plain text
en: (u32 ro) .7i69.0.0.nvwatchdogtimeout: The sserial remote watchdog timeout. This is separate from the Anything-IO card timeout. This is unlikely to need to be changed.
de: (u32 ro) .7i69.0.0.nvwatchdogtimeout: Die Zeitüberschreitung der seriellen Fernüberwachung. Dies ist unabhängig von der Zeitüberschreitung der Anything-IO-Karte. Es ist unwahrscheinlich, dass dieser Wert geändert werden muss.

note: type: Plain text
en: (bit rw) .7i69.0.0.output-NN-invert: Invert the sense of the corresponding output pin.
de: (bit rw) .7i69.0.0.output-NN-invert: Invertiert den Sinn des entsprechenden Ausgangspins.

note: type: Plain text
en: (u32 ro) .7i69.0.0.swrevision: The onboard firmware revision number.  Utilities exist to update and change this firmware.
de: (u32 ro) .7i69.0.0.swrevision: Die Revisionsnummer der Onboard-Firmware.  Es gibt Dienstprogramme zur Aktualisierung und Änderung dieser Firmware.

note: type: Plain text
en: The 7I70 is a remote isolated 48 input card. The 7I70 inputs sense positive inputs relative to a common field ground. Input impedance is 10K Ohms and input voltage can range from 5VDC to 32VDC. All inputs have LED status indicators.  The input common field ground is galvanically isolated from the communications link.
de: Die 7I70 ist eine abgesetzt isolierte Karte mit 48 Eingängen. Die 7I70-Eingänge erfassen positive Eingänge relativ zu einer gemeinsamen Felderde. Die Eingangsimpedanz beträgt 10 kOhm und die Eingangsspannung kann von 5 VDC bis 32 VDC reichen. Alle Eingänge verfügen über LED-Statusanzeigen. Die gemeinsame Felderdung des Eingangs ist galvanisch von der Kommunikationsverbindung getrennt.

note: type: Plain text
en: The 7I70 has three software selectable modes. These different modes select different sets of 7I70 data to be transferred between the host and the 7I70 during real time process data exchanges. For high speed applications, choosing the correct mode can reduced the data transfer sizes, resulting in higher maximum update rates.
de: Das 7I70 verfügt über drei per Software wählbare Modi. Diese verschiedenen Modi wählen verschiedene Sätze von 7I70-Daten aus, die zwischen dem Host und dem 7I70 während des Echtzeit-Prozessdatenaustauschs übertragen werden. Bei Hochgeschwindigkeitsanwendungen können durch die Wahl des richtigen Modus die Datenübertragungsgrößen reduziert werden, was zu höheren maximalen Aktualisierungsraten führt.

note: type: Plain text
en: (float out) .7i70.0.0.analogN (modes 1 and 2 only) Analogue input values.
de: (Float-Ausgang) .7i70.0.0.analogN (nur Modi 1 und 2) Analoge Eingangswerte.

note: type: Plain text
en: (float out) .7i70.0.0.fieldvoltage (mode 2 only) Field voltage monitoring pin.
de: (float out) .7i70.0.0.fieldvoltage (nur Modus 2) Feldspannungsüberwachungspin.

note: type: Plain text
en: (bit out) .7i70.0.0.input-NN: (NN = 0 to 47) 48 digital inputs.
de: (Bit aus) .7i70.0.0.input-NN: (NN = 0 bis 47) 48 digitale Eingänge.

note: type: Plain text
en: (bit in) .7i70.0.0.input-NN-not: (NN = 0 to 47) An inverted copy of the inputs provided for convenience. The two complementary pins may be connected to different signal nets.
de: (Bit in) .7i70.0.0.input-NN-not: (NN = 0 bis 47) Eine umgekehrte Kopie der Eingänge, die der Einfachheit halber zur Verfügung gestellt wird. Die beiden komplementären Pins können mit unterschiedlichen Signalnetzen verbunden sein.

note: type: Plain text
en: (u32 ro) .7i70.0.0.nvbaudrate: Indicates the vbaud rate. This probably should not be altered.
de: (u32 ro) .7i70.0.0.nvbaudrate: Gibt die vbaud-Rate an. Diese sollte wahrscheinlich nicht verändert werden.

note: type: Plain text
en: (u32 ro) .7i70.0.0.nvunitnumber: Indicates the serial number of the device and should match a sticker on the card. This can be useful for working out which card is which.
de: (u32 ro) .7i70.0.0.nvunitnummer: Gibt die Seriennummer des Geräts an und sollte mit einem Aufkleber auf der Karte übereinstimmen. Dies kann nützlich sein, um herauszufinden, welche Karte welche ist.

note: type: Plain text
en: (u32 ro) .7i70.0.0.nvwatchdogtimeout: The sserial remote watchdog timeout. This is separate from the Anything-IO card timeout. This is unlikely to need to be changed.
de: (u32 ro) .7i70.0.0.nvwatchdogtimeout: Die Zeitüberschreitung der seriellen Fernüberwachung. Dies ist unabhängig von der Zeitüberschreitung der Anything-IO-Karte. Es ist unwahrscheinlich, dass dieser Wert geändert werden muss.

note: type: Plain text
en: The 7I71 is a remote isolated 48 output card. The 48 outputs are 8VDC to 28VDC sourcing drivers (common + field power) with 300 mA maximum current capability.  All outputs have LED status indicators.
de: Die 7I71 ist eine abgesetzte isolierte 48-Ausgangskarte. Die 48 Ausgänge sind 8 VDC bis 28 VDC Sourcing-Treiber (gemeinsam + Feldstrom) mit einer maximalen Strombelastbarkeit von 300 mA. Alle Ausgänge verfügen über LED-Statusanzeigen.

note: type: Plain text
en: The 7I71 has two software selectable modes. For high speed applications, choosing the correct mode can reduced the data transfer sizes, resulting in higher maximum update rates
de: Der 7I71 verfügt über zwei per Software wählbare Modi. Bei Hochgeschwindigkeitsanwendungen können durch die Wahl des richtigen Modus die Datenübertragungsgrößen reduziert werden, was zu höheren maximalen Aktualisierungsraten führt

note: type: Plain text
en: (float out) .7i71.0.0.fieldvoltage (mode 2 only) Field voltage monitoring pin.
de: (float out) .7i71.0.0.fieldvoltage (nur Mode 2) Feldspannungsüberwachungspin.

note: type: Plain text
en: (bit out) .7i71.0.0.output-NN: (NN = 0 to 47) 48 digital outputs. The sense may be inverted by the invert parameter.
de: (Bit aus) .7i71.0.0.output-NN: (NN = 0 bis 47) 48 digitale Ausgänge. Der Sinn kann durch den invert-Parameter invertiert werden.

note: type: Plain text
en: (bit rw) .7i71.0.0.output-NN-invert: Invert the sense of the corresponding output pin.
de: (bit rw) .7i71.0.0.output-NN-invert: Invertiert den Sinn des entsprechenden Ausgangspins.

note: type: Plain text
en: (u32 ro) .7i71.0.0.nvbaudrate: Indicates the vbaud rate. This probably should not be altered.
de: (u32 ro) .7i71.0.0.nvbaudrate: Gibt die vbaud-Rate an. Diese sollte wahrscheinlich nicht verändert werden.

note: type: Plain text
en: (u32 ro) .7i71.0.0.nvunitnumber: Indicates the serial number of the device and should match a sticker on the card. This can be useful for determining which card is which.
de: (u32 ro) .7i71.0.0.nvunitnumber: Gibt die Seriennummer des Geräts an und sollte mit einem Aufkleber auf der Karte übereinstimmen. Dies kann nützlich sein, um festzustellen, welche Karte welche ist.

note: type: Plain text
en: (u32 ro) .7i71.0.0.nvwatchdogtimeout: The sserial remote watchdog timeout. This is separate from the Anything-IO card timeout. This is unlikely to need to be changed.
de: (u32 ro) .7i71.0.0.nvwatchdogtimeout: Die Zeitüberschreitung der seriellen Fernüberwachung. Dies ist unabhängig von der Zeitüberschreitung der Anything-IO-Karte. Es ist unwahrscheinlich, dass dieser Wert geändert werden muss.

note: type: Plain text
en: The 7I73 is a remote real time pendant or control panel interface.
de: Der 7I73 ist eine Remote-Echtzeit-Pendant- oder Control-Panel-Schnittstelle.

note: type: Plain text
en: The 7I73 supports up to four 50 kHz encoder inputs for MPGs, 8 digital inputs and 6 digital outputs and up to a 64 Key keypad. If a smaller keypad is used, more digital inputs and outputs become available. Up to eight 0.0V to 3.3V analog inputs are also provided.  The 7I73 can drive a 4 line 20 character LCD for local DRO applications.
de: Der 7I73 unterstützt bis zu vier 50-kHz-Encoder-Eingänge für MPGs, 8 digitale Eingänge und 6 digitale Ausgänge sowie bis zu einer 64-Tasten-Tastatur. Wenn eine kleinere Tastatur verwendet wird, werden mehr digitale Ein- und Ausgänge verfügbar. Bis zu acht 0,0 V bis 3,3 V Analogeingänge sind ebenfalls vorhanden.  Der 7I73 kann ein 4-zeiliges 20-stelliges LCD für lokale DRO-Anwendungen ansteuern.

note: type: Plain text
en: (u32 in) .7i73.0.1.display (modes 1 and 2). Data for LCD display. This pin may be conveniently driven by the HAL "lcd" component which allows the formatted display of the values any number of HAL pins and textual content.
de: (u32 in) .7i73.0.1.display (Modi 1 und 2). Daten für die LCD-Anzeige. Dieser Pin kann bequem von der HAL-Komponente "lcd" angesteuert werden, die eine formatierte Anzeige von Werten einer beliebigen Anzahl von HAL-Pins und Textinhalten ermöglicht.

note: type: Plain text
en: (u32 in) .7i73.0.1.display32 (mode 2 only). 4 bytes of data for LCD display.  This mode is not supported by the HAL "lcd" component.
de: (u32 in) .7i73.0.1.display32 (nur Modus 2). 4 Bytes Daten für die LCD-Anzeige.  Dieser Modus wird von der HAL-Komponente "lcd" nicht unterstützt.

note: type: Plain text
en: (s32 out) .7i73.0.1.encN: The position of the MPG encoder counters.
de: (s32 out) .7i73.0.1.encN: Die Position der MPG-Encoder-Zähler.

note: type: Plain text
en: (bit out) .7i73.0.1.input-NN: Up to 24 digital inputs (dependent on config)
de: (Bit-Ausgang) .7i73.0.1.input-NN: Bis zu 24 digitale Eingänge (abhängig von der Konfiguration)

note: type: Plain text
en: (bit out) .7i73.0.1.input-NN-not: Inverted copy of the digital inputs
de: (Bit-Ausgang) .7i73.0.1.input-NN-not: Invertierte Kopie der digitalen Eingänge

note: type: Plain text
en: (bit in) .7i73.0.1.output-NN: Up to 22 digital outputs (dependent on config)
de: (Bit in) .7i73.0.1.output-NN: Bis zu 22 digitale Ausgänge (abhängig von der Konfiguration)

note: type: Plain text
en:  For further details of the use of the above see the Mesa manual.
de:  Weitere Einzelheiten zur Verwendung der oben genannten Mittel finden Sie im Mesa-Handbuch.

note: type: Plain text
en: (bit rw) .7i73.0.1.output-01-invert: Invert the corresponding output bit.
de: (bit rw) .7i73.0.1.output-01-invert: Invertiert das entsprechende Ausgangsbit.

note: type: Plain text
en: (s32 ro) .7i73.0.1.swrevision: The version of firmware installed.
de: (s32 ro) .7i73.0.1.swrevision: Die Version der installierten Firmware.

note: type: Plain text
en: stepgen - software step pulse generation
de: stepgen - Software zur Erzeugung von Schrittimpulsen

note: type: Plain text
en: B<stepgen> is used to control stepper motors.  The maximum step rate depends on the CPU and other factors, and is usually in the range of 5 kHz to 25 kHz.  If higher rates are needed, a hardware step generator is a better choice.
de: B<stepgen> wird zur Steuerung von Schrittmotoren verwendet.  Die maximale Schrittfrequenz hängt von der CPU und anderen Faktoren ab und liegt in der Regel im Bereich von 5 kHz bis 25 kHz.  Wenn höhere Raten erforderlich sind, ist ein Hardware-Schrittgenerator die bessere Wahl.

note: type: Plain text
en: B<stepgen> can control a maximum of 16 motors.  The number of motors/channels actually loaded depends on the number of I<type> values given.  The value of each I<type> determines the outputs for that channel.  Position or velocity mode can be individually selected for each channel.  Both control modes support the same 16 possible step types.
de: B<stepgen> kann bis zu 16 Motoren steuern.  Die Anzahl der tatsächlich geladenen Motoren/Kanäle hängt von der Anzahl der angegebenen I<Type>-Werte ab.  Der Wert jedes I<Typs> bestimmt die Ausgänge für diesen Kanal.  Der Positions- oder Geschwindigkeitsmodus kann für jeden Kanal einzeln ausgewählt werden.  Beide Steuerungsmodi unterstützen die gleichen 16 möglichen Schritttypen.

note: type: Plain text
en: By far the most common step type is '0', standard step and direction.  Others include up/down, quadrature, and a wide variety of three, four, and five phase patterns that can be used to directly control some types of motor windings.  (When used with appropriate buffers of course.)
de: Der bei weitem häufigste Schritttyp ist '0', Standardschritt und Richtung.  Zu den anderen gehören Auf/Ab, Quadratur und eine Vielzahl von drei-, vier- und fünfphasigen Mustern, die zur direkten Steuerung einiger Motorwicklungen verwendet werden können.  (Natürlich nur in Verbindung mit geeigneten Puffern.)

note: type: Plain text
en: Some of the stepping types are described below, but for more details (including timing diagrams) see the B<stepgen> section of the HAL reference manual.
de: Einige der Stepping-Typen werden im Folgenden beschrieben. Weitere Einzelheiten (einschließlich Timing-Diagrammen) finden Sie im Abschnitt B<stepgen> des HAL-Referenzhandbuchs.

note: type: TP
en: type 0: step/dir
de: Typ 0: Schritt/Richtung (engl. step/direction)

note: type: Plain text
en: Two pins, one for step and one for direction.  B<make-pulses> must run at least twice for each step (once to set the step pin true, once to clear it).  This limits the maximum step rate to half (or less) of the rate that can be reached by types 2-14.  The parameters B<steplen> and B<stepspace> can further lower the maximum step rate.  Parameters B<dirsetup> and B<dirhold> also apply to this step type.
de: Zwei Pins, einer für den Schritt und einer für die Richtung.  B<make-pulses> muss für jeden Schritt mindestens zweimal ausgeführt werden (einmal, um den Schritt-Pin auf true zu setzen, einmal, um ihn zu löschen).  Dies begrenzt die maximale Schrittgeschwindigkeit auf die Hälfte (oder weniger) der Geschwindigkeit, die mit den Typen 2-14 erreicht werden kann.  Mit den Parametern B<steplen> und B<stepspace> kann die maximale Schrittgeschwindigkeit weiter verringert werden.  Die Parameter B<dirsetup> und B<dirhold> gelten auch für diesen Schritttyp.

note: type: TP
en: type 1: up/down
de: Typ 1: auf/ab

note: type: Plain text
en: Two pins, one for 'step up' and one for 'step down'.  Like type 0, B<make-pulses> must run twice per step, which limits the maximum speed.
de: Zwei Stifte, einer für 'step up' und einer für 'step down'.  Wie Typ 0 muss B<make-pulses> zweimal pro Schritt laufen, was die Höchstgeschwindigkeit begrenzt.

note: type: TP
en: type 2: quadrature
de: Typ 2: Quadratur

note: type: Plain text
en: Two pins, phase-A and phase-B.  For forward motion, A leads B.  Can advance by one step every time B<make-pulses> runs.
de: Zwei Stifte, Phase-A und Phase-B.  Bei der Vorwärtsbewegung führt A vor B. Kann jedes Mal, wenn B<make-pulses> läuft, um einen Schritt weitergehen.

note: type: TP
en: type 3: three phase, full step
de: Typ 3: dreiphasig, Vollschritt

note: type: Plain text
en: Three pins, phase-A, phase-B, and phase-C.  Three steps per full cycle, then repeats.  Only one phase is high at a time - for forward motion the pattern is A, then B, then C, then A again.
de: Drei Stifte, Phase-A, Phase-B und Phase-C.  Drei Schritte pro vollem Zyklus, dann Wiederholungen.  Es ist immer nur eine Phase hoch - bei der Vorwärtsbewegung ist das Muster A, dann B, dann C, dann wieder A.

note: type: TP
en: type 4: three phase, half step
de: Typ 4: dreiphasig, halbe Stufe

note: type: Plain text
en: Three pins, phases A through C.  Six steps per full cycle.  First A is high alone, then A and B together, then B alone, then B and C together, etc.
de: Drei Stifte, Phasen A bis C. Sechs Schritte pro vollem Zyklus.  Zuerst ist A allein hoch, dann A und B zusammen, dann B allein, dann B und C zusammen usw.

note: type: TP
en: types 5 through 8: four phase, full step
de: Typen 5 bis 8: vier Phasen, Vollschritt

note: type: Plain text
en: Four pins, phases A through D.  Four steps per full cycle.  Types 5 and 6 are suitable for use with unipolar steppers, where power is applied to the center tap of each winding, and four open-collector transistors drive the ends.  Types 7 and 8 are suitable for bipolar steppers, driven by two H-bridges.
de: Vier Stifte, Phasen A bis D. Vier Schritte pro vollem Zyklus.  Die Typen 5 und 6 eignen sich für unipolare Stepper, bei denen der mittlere Abgriff jeder Wicklung mit Strom versorgt wird und vier Open-Collector-Transistoren die Enden ansteuern.  Die Typen 7 und 8 eignen sich für bipolare Schrittschaltungen, die von zwei H-Brücken angesteuert werden.

note: type: TP
en: types 9 and 10: four phase, half step
de: Typen 9 und 10: vierphasig, halbstufig

note: type: Plain text
en: Four pins, phases A through D.  Eight steps per full cycle.  Type 9 is suitable for unipolar drive, and type 10 for bipolar drive.
de: Vier Stifte, Phasen A bis D. Acht Schritte pro Vollzyklus.  Typ 9 ist für unipolaren Antrieb und Typ 10 für bipolaren Antrieb geeignet.

note: type: TP
en: types 11 and 12: five phase, full step
de: Typen 11 und 12: fünf Phasen, Vollschritt

note: type: Plain text
en: Five pins, phases A through E.  Five steps per full cycle.  See HAL reference manual for the patterns.
de: Fünf Stifte, Phasen A bis E. Fünf Schritte pro vollständigem Zyklus.  Siehe HAL-Referenzhandbuch für die Muster.

note: type: TP
en: types 13 and 14: five phase, half step
de: Typen 13 und 14: fünf Phasen, halbe Stufe

note: type: Plain text
en: Five pins, phases A through E.  Ten steps per full cycle.  See HAL reference manual for the patterns.
de: Fünf Stifte, Phasen A bis E. Zehn Schritte pro vollem Zyklus.  Siehe HAL-Referenzhandbuch für die Muster.

note: type: TP
en: type 15: user-specified
de: Typ 15: benutzerdefiniert

note: type: Plain text
en: This uses the waveform specified by the B<user_step_type> module parameter, which may have up to 10 steps and 5 phases.
de: Dabei wird die durch den Modulparameter B<user_step_type> festgelegte Wellenform verwendet, die bis zu 10 Schritte und 5 Phasen haben kann.

note: type: TP
en: B<stepgen.make-pulses >(no floating-point)
de: B<stepgen.make-pulses >(kein Gleitkomma)

note: type: Plain text
en: Generates the step pulses, using information computed by B<update-freq>.  Must be called as frequently as possible, to maximize the attainable step rate and minimize jitter.  Operates on all channels at once.
de: Erzeugt die Schrittimpulse unter Verwendung der von B<update-freq> berechneten Informationen.  Muss so oft wie möglich aufgerufen werden, um die erreichbare Schrittrate zu maximieren und den Jitter zu minimieren.  Wirkt auf alle Kanäle gleichzeitig.

note: type: TP
en: B<stepgen.capture-position >(uses floating point)
de: B<stepgen.capture-position >(verwendet Fließkomma)

note: type: Plain text
en: Captures position feedback value from the high speed code and makes it available on a pin for use elsewhere in the system.  Operates on all channels at once.
de: Erfasst den Positionsrückmeldewert aus dem Hochgeschwindigkeitscode und stellt ihn auf einem Pin zur Verwendung an anderer Stelle im System zur Verfügung.  Funktioniert auf allen Kanälen gleichzeitig.

note: type: TP
en: B<stepgen.update-freq >(uses floating point)
de: B<stepgen.update-freq >(verwendet Fließkomma)

note: type: Plain text
en: Accepts a velocity or position command and converts it into a form usable by B<make-pulses> for step generation.  Operates on all channels at once.
de: Nimmt einen Geschwindigkeits- oder Positionsbefehl entgegen und wandelt ihn in eine Form um, die von B<make-pulses> zur Schrittgenerierung verwendet werden kann.  Wirkt auf alle Kanäle gleichzeitig.

note: type: Plain text
en: The current position, in counts, for channel I<N>.  Updated by B<capture-position>.
de: Die aktuelle Position, in Zählungen, für Kanal I<N>.  Aktualisiert durch B<Capture-Position>.

note: type: Plain text
en: The current position, in length units (see parameter B<position-scale>).  Updated by B<capture-position>. The resolution of B<position-fb> is much finer than a single step.  If you need to see individual steps, use B<counts>.
de: Die aktuelle Position, in Längeneinheiten (siehe Parameter B<Positionsmaßstab>).  Aktualisiert durch B<capture-position>. Die Auflösung von B<position-fb> ist viel feiner als ein einzelner Schritt.  Wenn Sie einzelne Schritte sehen wollen, verwenden Sie B<counts>.

note: type: Plain text
en: Enables output steps - when false, no steps are generated.
de: Aktiviert Ausgabeschritte - wenn false, werden keine Schritte erzeugt.

note: type: TP
en: B<stepgen.>I<N>B<.velocity-cmd> float in (velocity mode only)
de: B<stepgen.>I<N>B<.velocity-cmd> float in (nur velocity mode)

note: type: TP
en: B<stepgen.>I<N>B<.position-cmd> float in (position mode only)
de: B<stepgen.>I<N>B<.position-cmd> float in (nur Positionsmodus)

note: type: Plain text
en: Commanded position, in length units (see parameter B<position-scale).>
de: Geforderte Position, in Längeneinheiten (siehe Parameter B<Positionsskala>).

note: type: TP
en: B<stepgen.>I<N>B<.step> bit out (step type 0 only)
de: B<stepgen.>I<N>B<.step> bit out (nur Schritttyp 0)

note: type: Plain text
en: Count up output, pulses for forward steps.
de: Vorwärtszählender Ausgang, Impulse für Vorwärtsschritte.

note: type: Plain text
en: Count down output, pulses for reverse steps.
de: Rückwärtszählender Ausgang, Impulse für Rückwärtsschritte.

note: type: Plain text
en: Output bits.  B<phase-A> and B<phase-B> are present for step types 2-14, B<phase-C> for types 3-14, B<phase-D> for types 5-14, and B<phase-E> for types 11-14.  Behavior depends on selected stepping type.
de: Ausgangsbits.  B<Phase-A> und B<Phase-B> sind für die Schritttypen 2-14 vorhanden, B<Phase-C> für die Typen 3-14, B<Phase-D> für die Typen 5-14 und B<Phase-E> für die Typen 11-14.  Das Verhalten hängt vom gewählten Stufentyp ab.

note: type: Plain text
en: The acceleration/deceleration limit, in length units per second squared.
de: Der Grenzwert für die Beschleunigung/Verzögerung, in Längeneinheiten pro Sekunde zum Quadrat.

note: type: Plain text
en: The maximum allowable velocity, in length units per second.  If the requested maximum velocity cannot be reached with the current combination of scaling and B<make-pulses> thread period, it will be reset to the highest attainable value.
de: Die maximal zulässige Geschwindigkeit, in Längeneinheiten pro Sekunde.  Wenn die angeforderte Höchstgeschwindigkeit mit der aktuellen Kombination aus Skalierung und B<make-pulses>-Fadendauer nicht erreicht werden kann, wird sie auf den höchsten erreichbaren Wert zurückgesetzt.

note: type: Plain text
en: The scaling for position feedback, position command, and velocity command, in steps per length unit.
de: Die Skalierung für Positionsrückmeldung, Positionssollwert und Geschwindigkeitssollwert, in Schritten pro Längeneinheit.

note: type: Plain text
en: The position in counts, as updated by B<make-pulses>.  (Note: this is updated more frequently than the B<counts> pin.)
de: Die Position in Zählungen, wie von B<make-pulses> aktualisiert.  (Hinweis: Dieser Wert wird häufiger aktualisiert als der B<counts>-Pin).

note: type: Plain text
en: The length of the step pulses, in nanoseconds.  Measured from rising edge to falling edge.
de: Die Länge der Stufenimpulse in Nanosekunden.  Gemessen von steigender bis fallender Flanke.

note: type: Plain text
en: The minimum setup time from direction to step, in nanoseconds periods.  Measured from change of direction to rising edge of step.
de: Die minimale Einrichtungszeit von der Richtung bis zum Schritt, in Nanosekundenperioden.  Gemessen von der Richtungsänderung bis zur steigenden Flanke des Schritts.

note: type: Plain text
en: The minimum hold time of direction after step, in nanoseconds.  Measured from falling edge of step to change of direction.
de: Die minimale Haltezeit der Richtung nach dem Schritt, in Nanosekunden.  Gemessen von der fallenden Flanke des Schritts bis zum Richtungswechsel.

note: type: TP
en: B<stepgen.>I<N>B<.dirdelay> u32 rw (step types 1 and higher only)
de: B<stepgen.>I<N>B<.dirdelay> u32 rw (nur Schritttypen 1 und höher)

note: type: Plain text
en: There are five timing parameters which control the output waveform.  No step type uses all five, and only those which will be used are exported to HAL.  The values of these parameters are in nano-seconds, so no recalculation is needed when changing thread periods.  In the timing diagrams that follow, they are identified by the following numbers:
de: Es gibt fünf Timing-Parameter zur Steuerung der Ausgangswellenform.  Kein Stufentyp verwendet alle fünf, und nur die tatsächlich verwendeten werden nach HAL exportiert.  Die Werte dieser Parameter sind in Nanosekunden angegeben, so dass keine Neuberechnung erforderlich ist, wenn sich die Thread-Perioden ändern.  In den folgenden Zeitdiagrammen sind sie durch die folgenden Nummern gekennzeichnet:

note: type: Plain text
en: For step type 0, timing parameters 1 thru 4 are used.  The following timing diagram shows the output waveforms, and what each parameter adjusts.
de: Für den Stufentyp 0 werden die Timing-Parameter 1 bis 4 verwendet.  Das folgende Zeitdiagramm zeigt die Ausgangswellenformen und was jeder Parameter einstellt.

note: type: Plain text
en: For step type 1, timing parameters 1, 2, and 5 are used.  The following timing diagram shows the output waveforms, and what each parameter adjusts.
de: Für Schritttyp 1 werden die Timing-Parameter 1, 2 und 5 verwendet.  Das folgende Zeitdiagramm zeigt die Ausgangswellenformen und was jeder Parameter einstellt.

note: type: Plain text
en: For step types 2 and higher, the exact pattern of the outputs depends on the step type (see the HAL manual for a full listing).  The outputs change from one state to another at a minimum interval of B<steplen>.  When a direction change occurs, the minimum time between the last step in one direction and the first in the other direction is the sum of B<steplen> and B<dirdelay>.
de: Bei den Schritttypen 2 und höher hängt das genaue Muster der Ausgänge vom Schritttyp ab (eine vollständige Auflistung findet sich im HAL-Handbuch).  Die Ausgänge wechseln in einem Mindestabstand von B<Steplen> von einem Zustand in einen anderen.  Bei einem Richtungswechsel ist die Mindestzeit zwischen dem letzten Schritt in einer Richtung und dem ersten in der anderen Richtung die Summe aus B<steplen> und B<dirdelay>.

note: type: Plain text
en: The HAL User Manual.
de: Das HAL-Benutzerhandbuch.

note: type: Plain text
en: steptest - Used by Stepconf to allow testing of acceleration and velocity values for an axis.
de: steptest - Wird von Stepconf verwendet, um das Testen von Beschleunigungs- und Geschwindigkeitswerten für eine Achse zu ermöglichen.

note: type: TP
en: B<steptest.>I<N> (requires a floating-point thread)
de: B<steptest.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Permitted Acceleration
de: Zulässige Beschleunigung

note: type: TP
en: B<steptest.>I<N>B<.pause> s32 in (default: I<0>)
de: B<steptest.>I<N>B<.pause> s32 in (Voreinstellung: I<0>)

note: type: TP
en: B<steptest.>I<N>B<.epsilon> float rw (default: I<.001>)
de: B<steptest.>I<N>B<.epsilon> float rw (Voreinstellung: I<.001>)

note: type: Plain text
en: B<streamer> and B<halstreamer(1)> are used together to stream data from a file into the HAL in real time\&. B<streamer> is a realtime HAL component that exports HAL pins and creates a FIFO in shared memory\&. B<hal_streamer> is a user space program that copies data from stdin into the FIFO, so that B<streamer> can write it to the HAL pins\&.
de: B<streamer> und B<halstreamer(1)> werden zusammen verwendet, um Daten aus einer Datei in Echtzeit in die HAL zu streamen\&. B<streamer> ist eine Echtzeit-HAL-Komponente, die HAL-Pins exportiert und ein FIFO im gemeinsamen Speicher erstellt\&. B<hal_streamer> ist ein User-Space-Programm, das Daten von stdin in das FIFO kopiert, so dass B<streamer> sie in die HAL-Pins schreiben kann\&.

note: type: Plain text
en: Sets the depth of the user→realtime FIFO that B<streamer> creates to receive data from B<hal-streamer>\&. Multiple values of I<depth> (separated by commas) can be specified if you need more than one FIFO (for example if you want to stream data from two different realtime threads)\&.
de: Legt die Tiefe des Benutzer→Echtzeit-FIFOs fest, das B<Streamer> erstellt, um Daten von B<hal-streamer>\& zu empfangen. Es können mehrere Werte für I<depth> (durch Kommata getrennt) angegeben werden, wenn mehr als ein FIFO benötigt wird (z. B. wenn Daten von zwei verschiedenen Echtzeit-Threads gestreamt werden sollen)\&.

note: type: Plain text
en: Defines the set of HAL pins that B<streamer> exports and later writes data to\&. One I<string> must be supplied for each FIFO, separated by commas\&.  B<streamer> exports one pin for each character in I<string>\&. Legal characters are:
de: Definiert den Satz von HAL-Pins, die B<Streamer> exportiert und später Daten auf\& schreibt. Für jedes FIFO muss ein I<string> angegeben werden, getrennt durch Kommas\&.  B<streamer> exportiert einen Pin für jedes Zeichen in I<string>\&. Zulässige Zeichen sind:

note: type: Plain text
en: One function is created per FIFO, numbered from zero\&.
de: Pro FIFO wird eine Funktion erstellt, die von Null an durchnummeriert ist.

note: type: Plain text
en: Data from column I<M> of the data in FIFO I<N> appears on this pin\&. The pin type depends on the config string\&.
de: Die Daten aus Spalte I<M> der Daten im FIFO I<N> erscheinen auf diesem Pin\&. Der Pintyp hängt vom Konfigurationsstring\& ab.

note: type: Plain text
en: Current number of samples in the FIFO\&. When this reaches zero, new data will no longer be written to the pins\&.
de: Aktuelle Anzahl der Samples im FIFO\&. Wenn dieser Wert Null erreicht, werden keine neuen Daten mehr in die Pins& geschrieben.

note: type: Plain text
en: Original version by John Kasunich, as part of the LinuxCNC project\&. Improvements by several other members of the LinuxCNC development team\&.
de: Originalversion von John Kasunich, als Teil des LinuxCNC-Projekts\&. Verbesserungen durch mehrere andere Mitglieder des LinuxCNC-Entwicklungsteams\&.

note: type: Plain text
en: sum2 - Sum of two inputs (each with a gain) and an offset
de: sum2 - Summe aus zwei Eingängen (jeweils mit einem Verstärkungsfaktor) und einem Offset

note: type: TP
en: B<sum2.>I<N> (requires a floating-point thread)
de: B<sum2.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: TP
en: B<sum2.>I<N>B<.gain0> float rw (default: I<1.0>)
de: B<sum2.>I<N>B<.gain0> float rw (Standard: I<1.0>)

note: type: TP
en: B<sum2.>I<N>B<.gain1> float rw (default: I<1.0>)
de: B<sum2.>I<N>B<.gain1> float rw (Standard: I<1.0>)

note: type: Plain text
en: supply - set output pins with values from parameters (obsolete)
de: supply - Ausgangspins mit Werten aus Parametern belegen (veraltet)

note: type: Plain text
en: B<supply> was used to allow the inputs of other HAL components to be manipulated for testing purposes.  When it was written, the only way to set the value of an input pin was to connect it to a signal and connect that signal to an output pin of some other component, and then let that component write the pin value.  B<supply> was written to be that "other component".  It reads values from parameters (set with the HAL command B<setp>) and writes them to output pins.
de: B<supply> wurde verwendet, um die Eingänge anderer HAL-Komponenten zu Testzwecken zu manipulieren.  Als es geschrieben wurde, bestand die einzige Möglichkeit, den Wert eines Eingangspins einzustellen, darin, ihn mit einem Signal zu verbinden und dieses Signal mit einem Ausgangspin einer anderen Komponente zu verbinden, und dann diese Komponente den Pinwert schreiben zu lassen.  B<supply> wurde geschrieben, um diese "andere Komponente" zu sein.  Sie liest Werte aus Parametern (die mit dem HAL-Befehl B<setp> gesetzt wurden) und schreibt sie an Ausgangspins.

note: type: Plain text
en: Since B<supply> was written, the B<setp> command has been modified to allow it to set unconnected pins as well as parameters.  In addition, the B<sets> command was added, which can directly set HAL signals, as long as there are no output pins connected to them.  Therefore, B<supply> is obsolete.
de: Seit der Erstellung von B<supply> wurde der Befehl B<setp> so modifiziert, dass er sowohl unverbundene Pins als auch Parameter setzen kann.  Außerdem wurde der Befehl B<sets> hinzugefügt, mit dem HAL-Signale direkt gesetzt werden können, solange keine Ausgangspins an sie angeschlossen sind.  B<supply> ist daher überflüssig.

note: type: Plain text
en: B<supply> supports a maximum of eight channels.  The number of channels actually loaded is set by the B<num_chan> argument when the module is loaded.  If B<numchan> is not specified, the default value is one.
de: B<supply> unterstützt maximal acht Kanäle.  Die Anzahl der tatsächlich geladenen Kanäle wird durch das Argument B<num_chan> festgelegt, wenn das Modul geladen wird.  Wenn B<numchan> nicht angegeben wird, ist der Standardwert eins.

note: type: TP
en: B<supply.>I<N>B<.update> (uses floating-point)
de: B<supply.>I<N>B<.update> (mit Gleitkomma)

note: type: Plain text
en: Updates output pins for channel I<N>.
de: Aktualisiert Ausgangspins für Kanal I<N>.

note: type: Plain text
en: Output bit, copied from parameter B<supply.>I<N>B<.d>.
de: Ausgabebit, kopiert aus Parameter B<supply.>I<N>B<.d>.

note: type: Plain text
en: Output bit, inverted copy of parameter B<supply.>I<N>B<.d>.
de: Ausgangsbit, invertierte Kopie des Parameters B<supply.>I<N>B<.d>.

note: type: Plain text
en: Analog output, copied from parameter B<supply.>I<N>B<.value>.
de: Analogausgang, kopiert aus Parameter B<supply.>I<N>B<.value>.

note: type: Plain text
en: Analog output, equal to -1.0 times parameter B<supply.>I<N>B<.value>.
de: Analogausgang, entspricht dem -1,0-fachen Parameter B<supply.>I<N>B<.value>.

note: type: Plain text
en: Data source for B<q> and B<_q> output pins.
de: Datenquelle für B<q>- und B<_q> Ausgangspins.

note: type: Plain text
en: Data source for B<variable> and B<_variable> output pins.
de: Datenquelle für die Ausgangspins B<variable> und B<_variable>.

note: type: Plain text
en: thc - Torch Height Control
de: thc - Brennerhöhensteuerung (engl. torch height control)

note: type: Plain text
en: Torch Height Control Mesa THC E<gt> Encoder E<gt> LinuxCNC THC component
de: Brennerhöhensteuerung Mesa THC E<gt> Encoder E<gt> LinuxCNC THC Komponente

note: type: Plain text
en: The Mesa THC sends a frequency based on the voltage detected to the encoder.  The velocity from the encoder is converted to volts with the velocity scale parameter inside the THC component.
de: Die Mesa THC sendet eine auf der erkannten Spannung basierende Frequenz an den Encoder.  Die Geschwindigkeit des Encoders wird mit dem Parameter für die Geschwindigkeitsskala in der THC-Komponente in Volt umgewandelt.

note: type: Plain text
en: The THCAD card sends a frequency at 0 volts so the scale offset parameter is used to zero the calculated voltage.
de: Die THCAD-Karte sendet eine Frequenz bei 0 Volt, so dass der Parameter Skalenoffset verwendet wird, um die berechnete Spannung auf Null zu setzen.

note: type: Plain text
en: Component Functions If enabled and torch is on and X + Y velocity is within tolerance of set speed allow the THC to offset the Z axis as needed to maintain voltage.
de: Komponentenfunktionen Wenn aktiviert und der Brenner eingeschaltet ist und die X- und Y-Geschwindigkeit innerhalb der Toleranz der eingestellten Geschwindigkeit liegt, kann die THC die Z-Achse nach Bedarf versetzen, um die Spannung aufrechtzuerhalten.

note: type: Plain text
en: If enabled and torch is off and the Z axis is moving up remove any correction at a rate not to exceed the rate of movement of the Z axis.
de: Wenn diese Funktion aktiviert ist, der Brenner ausgeschaltet ist und die Z-Achse sich nach oben bewegt, wird die Korrektur mit einer Geschwindigkeit entfernt, welche die Bewegungsgeschwindigkeit der Z-Achse nicht überschreitet.

note: type: Plain text
en: If enabled and torch is off and there is no correction pass the Z position and feed back untouched.
de: Wenn aktiviert und der Brenner ausgeschaltet ist und keine Korrektur erfolgt, werden die Z-Position und der Rücklauf nicht berührt.

note: type: Plain text
en: If not enabled pass the Z position and feed back untouched.
de: Wenn diese Funktion nicht aktiviert ist, werden die Z-Position und der Feedback nicht berührt.

note: type: Plain text
en: Physical Connections
de: Physische Verbindungen

note: type: Plain text
en: Plasma Torch Arc Voltage Signal =E<gt> 6 x 487k 1% resistors =E<gt> THC Arc Voltage In
de: Plasmabrenner Lichtbogenspannungssignal =E<gt> 6 x 487k 1% Widerstände =E<gt> THC Lichtbogenspannung In

note: type: Plain text
en: THC Frequency Signal =E<gt> Encoder #0, pin A (Input)
de: THC Frequenzsignal =E<gt> Encoder #0, Pin A (Eingang)

note: type: Plain text
en: Plasma Torch Arc OK Signal =E<gt> input pin
de: Plasmabrenner Lichtbogen OK Signal =E<gt> Eingangspin

note: type: Plain text
en: output pin =E<gt> Plasma Torch Start Arc Contacts
de: Ausgangspin =E<gt> Plasmabrenner Start Lichtbogen Kontakte

note: type: Plain text
en: HAL Plasma Connections
de: HAL Plasma-Verbindungen

note: type: Plain text
en: encoder.nn.velocity =E<gt> thc.encoder-vel (tip voltage)
de: encoder.nn.velocity =E<gt> thc.encoder-vel (Spitzenspannung)

note: type: Plain text
en: spindle.0.on =E<gt> output pin (start the arc)
de: spindle.0.on =E<gt> Ausgangspin (Start des Lichtbogens)

note: type: Plain text
en: thc.arc-ok E<lt>= motion.digital-in-00 E<lt>= input pin (arc ok signal)
de: thc.arc-ok E<lt>= motion.digital-in-00 E<lt>= Eingangspin (arc-ok-Signal)

note: type: Plain text
en: HAL Motion Connections
de: HAL Motion-Verbindungen

note: type: TP
en: B<thc> (requires a floating-point thread)
de: B<thc> (erfordert einen Fließkomma-Thread)

note: type: Plain text
en: Connect to hm2_5i20.0.encoder.00.velocity
de: Verbinden mit hm2_5i20.0.encoder.00.velocity

note: type: Plain text
en: Connect to motion.current-vel
de: Verbinden mit motion.current-vel

note: type: Plain text
en: Connect to motion.requested-vel
de: Verbindung mit motion.requested-vel

note: type: Plain text
en: Velocity Tolerance (Corner Lock)
de: Geschwindigkeitstoleranz (Corner Lock)

note: type: Plain text
en: Connect to spindle.N.on
de: Verbinden mit Spindel.N.on

note: type: TP
en: B<thc.arc-ok> bit in
de: B<thc.arc-ok> Bit in

note: type: Plain text
en: Arc OK from Plasma Torch
de: Lichtbogen OK vom Plasmabrenner

note: type: Plain text
en: Enable the THC, if not enabled Z position is passed through
de: Aktivieren Sie die THC, wenn nicht aktiviert, wird die Z-Position durchgereicht.

note: type: Plain text
en: Z Motor Position Command in from axis.n.motor-pos-cmd
de: Z Motorpositionsbefehl in von axis.n.motor-pos-cmd

note: type: Plain text
en: Z Motor Position Command Out
de: Z Motorposition Befehlsausgabe

note: type: Plain text
en: Z Position Feedback to Axis
de: Rückmeldung der Z-Position an die Achse

note: type: Plain text
en: The Calculated Volts
de: Die berechneten Spannungen

note: type: Plain text
en: When the THC thinks we are at requested speed
de: Wenn das THC denkt, dass wir die gewünschte Geschwindigkeit erreicht haben

note: type: Plain text
en: The Current Offset
de: Der aktuelle Offset

note: type: Plain text
en: The scale to convert the Velocity signal to Volts
de: Die Skala zum Umwandeln des Geschwindigkeitssignals in Volt

note: type: Plain text
en: The offset of the velocity input at 0 volts
de: Der Offset des Geschwindigkeitseingangs bei 0 Volt

note: type: Plain text
en: The deviation percent from planned velocity
de: Die prozentuale Abweichung von der Soll-Geschwindigkeit

note: type: Plain text
en: The deviation of Tip Voltage before correction takes place
de: Die Abweichung der Spitzenspannung, bevor die Korrektur erfolgt

note: type: Plain text
en: The amount of change in user units per period to move Z to correct
de: Der Betrag der Änderung in Benutzereinheiten pro Periode, um Z zu korrigieren

note: type: Plain text
en: thcud - Torch Height Control Up/Down Input
de: thcud - Brennerhöhensteuerung Auf/Ab-Eingang

note: type: Plain text
en: Torch Height Control This THC takes either an up or a down input from a THC
de: Brennerhöhensteuerung Diese THC nimmt entweder einen Aufwärts- oder einen Abwärts-Eingang von einer THC

note: type: Plain text
en: If enabled and torch is on and X + Y velocity is within tolerance of set speed allow the THC to offset the Z axis as needed to maintain voltage.
de: Wenn aktiviert und der Brenner eingeschaltet ist und die X- und Y-Geschwindigkeit innerhalb der Toleranz der eingestellten Geschwindigkeit liegt, kann die THC die Z-Achse nach Bedarf versetzen, um die Spannung aufrechtzuerhalten.

note: type: Plain text
en: Typical Physical Connections using a Parallel Port
de: Typische physikalische Verbindungen über eine parallele Schnittstelle

note: type: Plain text
en: Parallel Pin 12 E<lt>= THC controller Plasma Up
de: Parallelpin 12 E<lt>= THC-Steuerung Plasma hoch (engl. up)

note: type: Plain text
en: Parallel Pin 13 E<lt>= THC controller Plasma Down
de: Parallel Pin 13 E<lt>= THC-Steuerung Plasma runter (engl. down)

note: type: Plain text
en: Parallel Pin 15 E<lt>= Plasma Torch Arc Ok Signal
de: Parallel Pin 15 E<lt>= Plasmabrenner Lichtbogen Ok Signal

note: type: Plain text
en: Parallel Pin 16 =E<gt> Plasma Torch Start Arc Contacts
de: Parallel Pin 16 =E<gt> Plasmabrenner Start Lichtbogen Kontakte

note: type: Plain text
en: net torch-on spindle.0.on =E<gt> parport.0.pin-16-out (start the arc)
de: net torch-on spindle.0.on =E<gt> parport.0.pin-16-out (Start des Lichtbogens)

note: type: Plain text
en: net arc-ok thcud.arc-ok E<lt>= motion.digital-in-00 E<lt>= parport.0.pin-15-in (arc ok signal)
de: net arc-ok thcud.arc-ok E<lt>= motion.digital-in-00 E<lt>= parport.0.pin-15-in (Lichtbogen ok Signal)

note: type: Plain text
en: Pyvcp Connections In the xml file you need something like:
de: für PyVCP-Verbindungen In der XML-Datei benötigen Sie etwas wie:

note: type: Plain text
en: Connect the Pyvcp pins in the postgui.hal file like this:
de: Verbinden Sie die PyVCP-Pins in der Datei postgui.hal wie folgt:

note: type: TP
en: B<thcud> (requires a floating-point thread)
de: B<thcud> (erfordert einen Fließkomma-Thread)

note: type: Plain text
en: Connect to an input pin
de: An einen Eingangspin anschließen

note: type: Plain text
en: Connect to input pin
de: Anschluss an Eingangspin

note: type: Plain text
en: Arc Ok from Plasma Torch
de: Arc OK von Plasmabrenner

note: type: Plain text
en: Pin for testing
de: Pin zum Testen

note: type: Plain text
en: The Velocity to move Z to correct
de: Die Geschwindigkeit, um Z zu korrigieren

note: type: Plain text
en: threads - creates hard realtime HAL threads
de: threads - erzeugt harte Echtzeit-HAL-Threads

note: type: Plain text
en: B<threads> is used to create hard realtime threads which can execute HAL functions at specific intervals.  It is not a true HAL component, in that it does not export any functions, pins, or parameters of its own.  Once it has created one or more threads, the threads stand alone, and the B<threads> component can be unloaded without affecting them.  In fact, it can be unloaded and then reloaded to create additional threads, as many times as needed.
de: B<threads> wird verwendet, um harte Echtzeit-Threads zu erstellen, die HAL-Funktionen in bestimmten Intervallen ausführen können.  Es handelt sich nicht um eine echte HAL-Komponente, da sie keine eigenen Funktionen, Pins oder Parameter exportiert.  Sobald sie einen oder mehrere Threads erstellt hat, stehen die Threads für sich allein, und die Komponente B<threads> kann entladen werden, ohne sie zu beeinflussen.  Sie kann sogar entladen und dann erneut geladen werden, um weitere Threads zu erstellen, so oft wie nötig.

note: type: Plain text
en: B<threads> can create up to three realtime threads.  Threads must be created in order, from fastest to slowest.  Each thread is specified by three arguments.  B<name1> is used to specify the name of the first thread (thread 1).  B<period1> is used to specify the period of thread 1 in nanoseconds.  Both I<name> and I<period> are required.  The third argument, B<fp1> is optional, and is used to specify if thread 1 will be used to execute floating point code.  If not specified, it defaults to B<1>, which means that the thread will support floating point.  Specify B<0> to disable floating point support, which saves a small amount of execution time by not saving the FPU context.  For additional threads, B<name2>, B<period2>, B<fp2>, B<name3>, B<period3>, and B<fp3> work exactly the same.  If more than three threads are needed, unload threads, then reload it to create more threads.
de: B<threads> kann bis zu drei Echtzeit-Threads erzeugen.  Die Threads müssen in der Reihenfolge vom schnellsten zum langsamsten erstellt werden.  Jeder Thread wird durch drei Argumente spezifiziert.  B<name1> wird verwendet, um den Namen des ersten Threads (Thread 1) anzugeben.  B<period1> wird verwendet, um die Periode von Thread 1 in Nanosekunden anzugeben.  Sowohl I<name> als auch I<period> sind erforderlich.  Das dritte Argument, B<fp1>, ist optional und wird verwendet, um anzugeben, ob Thread 1 zur Ausführung von Fließkommacode verwendet werden soll.  Wenn es nicht angegeben wird, ist es standardmäßig B<1>, was bedeutet, dass der Thread Fließkomma unterstützt.  Geben Sie B<0> an, um die Fließkomma-Unterstützung zu deaktivieren, was eine kleine Menge an Ausführungszeit spart, da der FPU-Kontext nicht gespeichert wird.  Für zusätzliche Threads funktionieren B<name2>, B<period2>, B<fp2>, B<name3>, B<period3> und B<fp3> genau gleich.  Wenn mehr als drei Threads benötigt werden, entladen Sie die Threads und laden Sie sie dann erneut, um weitere Threads zu erstellen.

note: type: Plain text
en: The existence of B<threads> might be considered a bug.  Ideally, creation and deletion of threads would be done directly with B<halcmd> commands, such as "B<newthread >I<name period>", "B<delthread >I<name>", or similar.  However, limitations in the current HAL implementation require thread creation to take place in kernel space, and loading a component is the most straightforward way to do that.
de: Die Existenz von B<threads> könnte als Fehler angesehen werden.  Idealerweise würde das Erzeugen und Löschen von Threads direkt mit B<halcmd>-Befehlen erfolgen, wie "B<newthread >I<name period>", "B<delthread >I<name>" oder ähnlich.  Aufgrund der Beschränkungen in der aktuellen HAL-Implementierung muss die Erstellung von Threads jedoch im Kernelspace erfolgen, und das Laden einer Komponente ist der einfachste Weg, dies zu tun.

note: type: Plain text
en: threadtest - LinuxCNC HAL component for testing thread behavior
de: threadtest - LinuxCNC HAL Komponente zum Testen des Threadverhaltens

note: type: Plain text
en: time - Time on in Hours, Minutes, Seconds
de: time - Einschaltzeit in Stunden, Minuten, Sekunden

note: type: Plain text
en: When either the time.N.start or time.N.pause bits goes true the cycle timer resets and starts to time until time.N.start AND time.N.pause go false. When the time.N.pause bit goes true timing is paused until time.N.pause goes false. If you connect time.N.start to halui.program.is-running and leave time.N.pause unconnected the timer will reset during a pause. See the example connections below for more information.
de: Wenn entweder das time.N.start- oder das time.N.pause-Bit auf true gesetzt wird, dann wird der Zyklus-Timer zurückgesetzt und die Zeitmessung beginnt, bis time.N.start UND time.N.pause auf false gesetzt werden. Wenn das time.N.pause-Bit true ist, wird die Zeitmessung angehalten, bis time.N.pause false ist. Wenn Sie time.N.start mit halui.program.is-running verbinden und time.N.pause unverbunden lassen, wird der Timer während einer Pause zurückgesetzt. Weitere Informationen finden Sie in den Beispielverbindungen unten.

note: type: Plain text
en: Time returns the hours, minutes, and seconds that time.N.start is true.
de: Time gibt die Stunden, Minuten und Sekunden zurück, in denen time.N.start wahr ist.

note: type: Plain text
en: Sample pyVCP code to display the hours:minutes:seconds.
de: Beispiel für PyVCP-Code zur Anzeige der Stunden:Minuten:Sekunden.

note: type: Plain text
en: In your post-gui.hal file you might use one of the following to connect this timer:
de: In Ihrer post-gui.hal Datei können Sie eine der folgenden Möglichkeiten verwenden, um diesen Timer zu verbinden:

note: type: Plain text
en:  For a new config:
de:  Für eine neue Konfiguration:

note: type: Plain text
en:  For those who have this setup already, you can simply add a net connecting
     time.N.pause to halui.program.is-paused:
de:  Für diejenigen, die dies bereits eingerichtet haben, können Sie einfach eine Netzverbindung hinzufügen
     time.N.pause mit halui.program.is-paused verbinden:

note: type: TP
en: B<time.>I<N> (requires a floating-point thread)
de: B<time.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Timer On
de: Timer Ein

note: type: TP
en: B<time.>I<N>B<.pause> bit in (default: I<0>)
de: B<time.>I<N>B<.pause> bit in (Standard: I<0>)

note: type: Plain text
en: Seconds
de: Sekunden

note: type: Plain text
en: Minutes
de: Minuten

note: type: Plain text
en: Hours
de: Stunden

note: type: Plain text
en: timedelay - The equivalent of a time-delay relay
de: timedelay - Das Äquivalent eines zeitverzögerten Relais

note: type: TP
en: B<timedelay.>I<N> (requires a floating-point thread)
de: B<timedelay.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Follows the value of B<in> after applying the delays B<on-delay> and B<off-delay>.
de: Folgt dem Wert von B<in> nach Anwendung der Verzögerungen B<on-delay> und B<off-delay>.

note: type: TP
en: B<timedelay.>I<N>B<.on-delay> float in (default: I<0.5>)
de: B<timedelay.>I<N>B<.on-delay> float in (Voreinstellung: I<0.5>)

note: type: Plain text
en: The time, in seconds, for which B<in> must be B<true> before B<out> becomes B<true>
de: Die Zeit in Sekunden, für die B<in> B<true> sein muss, bevor B<out> zu B<true> wird

note: type: TP
en: B<timedelay.>I<N>B<.off-delay> float in (default: I<0.5>)
de: B<timedelay.>I<N>B<.off-delay> float in (Voreinstellung: I<0.5>)

note: type: Plain text
en: The time, in seconds, for which B<in> must be B<false> before B<out> becomes B<false>
de: Die Zeit in Sekunden, für die B<in> B<false> sein muss, bevor B<out> zu B<false> wird

note: type: Plain text
en: Jeff Epler, based on works by Stephen Wille Padnos and John Kasunich
de: Jeff Epler, basierend auf Werken von Stephen Wille Padnos und John Kasunich

note: type: Plain text
en: timedelta - LinuxCNC HAL component that measures thread scheduling timing behavior
de: timedelta - LinuxCNC HAL-Komponente, die das Zeitverhalten bei der Threadplanung misst

note: type: TP
en: B<timedelta.>I<N>B<.jitter> s32 out (default: I<0>)
de: B<timedelta.>I<N>B<.jitter> s32 out (Voreinstellung: I<0>)

note: type: Plain text
en: Worst-case scheduling error (in ns).  This is the largest discrepancy between ideal thread period, and actual time between sequential runs of this component.  This uses the absolute value of the error, so 'got run too early' and 'got run too late' both show up as positive jitter.
de: Worst-Case-Planungsfehler (in ns).  Dies ist die größte Diskrepanz zwischen der idealen Thread-Periode und der tatsächlichen Zeit zwischen aufeinanderfolgenden Läufen dieser Komponente.  Dabei wird der absolute Wert des Fehlers verwendet, so dass sowohl "zu früh gelaufen" als auch "zu spät gelaufen" als positiver Jitter angezeigt werden.

note: type: Plain text
en: Scheduling error (in ns) of the current invocation.  This is the discrepancy between ideal thread period, and actual time since the previous run of this component.  This uses the absolute value of the error, so 'got run too early' and 'got run too late' both show up as positive jitter.
de: Zeitplanungsfehler (in ns) des aktuellen Aufrufs.  Dies ist die Diskrepanz zwischen der idealen Thread-Zeit und der tatsächlichen Zeit seit dem letzten Lauf dieser Komponente.  Dabei wird der absolute Wert des Fehlers verwendet, so dass sowohl "zu früh ausgeführt" als auch "zu spät ausgeführt" als positiver Jitter angezeigt werden.

note: type: Plain text
en: Scheduling error (in ns) of the current invocation.  This is the discrepancy between ideal thread period, and actual time since the previous run of this component.  This does not use the absolute value of the error, so 'got run too early' shows up as negative error and 'got run too late' shows up as positive error.
de: Zeitplanungsfehler (in ns) des aktuellen Aufrufs.  Dies ist die Diskrepanz zwischen der idealen Thread-Periode und der tatsächlichen Zeit seit dem letzten Lauf dieser Komponente.  Dabei wird nicht der absolute Wert des Fehlers verwendet, so dass "zu früh ausgeführt" als negativer Fehler und "zu spät ausgeführt" als positiver Fehler angezeigt wird.

note: type: TP
en: B<timedelta.>I<N>B<.min> s32 out (default: I<0>)
de: B<timedelta.>I<N>B<.min> s32 out (Voreinstellung: I<0>)

note: type: Plain text
en: Minimum time (in ns) between sequential runs of this component.
de: Mindestzeit (in ns) zwischen aufeinanderfolgenden Läufen dieser Komponente.

note: type: Plain text
en: Maximum time (in ns) between sequential runs of this component.
de: Maximale Zeit (in ns) zwischen aufeinanderfolgenden Läufen dieser Komponente.

note: type: Plain text
en: Set this pin to True, then back to False, to reset some of the statistics.
de: Setzen Sie diesen Pin auf True und dann wieder auf False, um einige der Statistiken zurückzusetzen.

note: type: Plain text
en: Time (in ns) since the previous run of this component.  This should ideally be equal to the thread period.
de: Zeit (in ns) seit dem letzten Lauf dieser Komponente.  Diese sollte idealerweise gleich der Thread-Periode sein.

note: type: TP
en: B<timedelta.>I<N>B<.err> s32 out (default: I<0>)
de: B<timedelta.>I<N>B<.err> s32 out (Voreinstellung: I<0>)

note: type: Plain text
en: Cumulative time error (in ns).  Probably not useful.
de: Kumulativer Zeitfehler (in ns). Wahrscheinlich nicht sinnvoll.

note: type: TP
en: B<timedelta.>I<N>B<.avg-err> float out (default: I<0>)
de: B<timedelta.>I<N>B<.avg-err> float out (Voreinstellung: I<0>)

note: type: Plain text
en: The average scheduling error (in ns).
de: Der durchschnittliche Zeitplanungsfehler (in ns).

note: type: Plain text
en: Toggle2nist can be used with a momentary push button to control a device that has separate on and off inputs and an is-on output.
de: Toggle2nist kann mit einem Taster verwendet werden, um ein Gerät zu steuern, das über getrennte Ein- und Aus-Eingänge und einen Is-On-Ausgang verfügt.

note: type: Plain text
en: \[bu] On a rising edge on pin I<in> when I<is-on> is low: It sets I<on> until I<is-on> becomes high.
de: \[bu] Bei einer steigenden Flanke am Pin I<in>, wenn I<is-on> low ist: Es setzt I<on>, bis I<is-on> high wird.

note: type: Plain text
en: \[bu] On a rising edge on pin I<in> when I<is-on> is high: It sets I<off> until I<is-on> becomes low.
de: \[bu] Bei einer steigenden Flanke am Pin I<in>, wenn I<is-on> high ist: Es setzt I<off> bis I<is-on> low wird.

note: type: Plain text
en: debounce delay in periods
de: Entprellverzögerung in Perioden

note: type: Plain text
en: tristate_bit - Place a signal on an I/O pin only when enabled, similar to a tristate buffer in electronics
de: tristate_bit - Legt ein Signal nur dann auf einen E/A-Pin, wenn es aktiviert ist, ähnlich wie ein Tristate-Puffer in der Elektronik

note: type: Plain text
en: If B<enable> is TRUE, copy B<in> to B<out>.
de: Wenn B<enable> TRUE ist, wird B<in> nach B<out> kopiert.

note: type: Plain text
en: Input value
de: Eingabewert

note: type: Plain text
en: When TRUE, copy in to out
de: Wenn TRUE, wird in nach out kopiert

note: type: Plain text
en: tristate_float - Place a signal on an I/O pin only when enabled, similar to a tristate buffer in electronics
de: tristate_float - Legt ein Signal nur dann auf einen E/A-Pin, wenn er aktiviert ist, ähnlich wie ein Tristate-Puffer in der Elektronik

note: type: TP
en: B<tristate-float.>I<N> (requires a floating-point thread)
de: B<tristate-float.>I<N> (erfordert einen Fließkomma-Thread)

note: type: Plain text
en: updown - Counts up or down, with optional limits and wraparound behavior
de: updown - Zählt aufwärts oder abwärts, mit optionalen Grenzen und Wraparound-Verhalten

note: type: Plain text
en: Process inputs and update count if necessary
de: Eingaben verarbeiten und ggf. Zählung aktualisieren

note: type: Plain text
en: Increment count when this pin goes from 0 to 1
de: Zählung erhöhen, wenn dieser Pin von 0 auf 1 geht

note: type: Plain text
en: Decrement count when this pin goes from 0 to 1
de: Abwärtszählung, wenn dieser Pin von 0 auf 1 geht

note: type: Plain text
en: Reset count when this pin goes from 0 to 1
de: Zählung zurücksetzen, wenn dieser Pin von 0 auf 1 geht

note: type: Plain text
en: The current count
de: Die aktuelle Zählung

note: type: Plain text
en: If TRUE, then clamp the output to the min and max parameters.
de: Wenn TRUE, dann wird die Ausgabe auf die Parameter min und max geklemmt.

note: type: Plain text
en: If TRUE, then wrap around when the count goes above or below the min and max parameters.  Note that wrap implies (and overrides) clamp.
de: Wenn TRUE, dann wird umbrochen, wenn der Zählerstand über oder unter den Parametern min und max liegt.  Beachten Sie, dass wrap clamp impliziert (und aufhebt).

note: type: TP
en: B<updown.>I<N>B<.max> s32 rw (default: I<0x7FFFFFFF>)
de: B<updown.>I<N>B<.max> s32 rw (Voreinstellung: I<0x7FFFFFFF>)

note: type: Plain text
en: If clamp or wrap is set, count will never exceed this number
de: Wenn "clamp" oder "wrap" eingestellt ist, wird die Anzahl niemals diese Zahl überschreiten.

note: type: Plain text
en: If clamp or wrap is set, count will never be less than this number
de: Wenn "clamp" oder "wrap" eingestellt ist, wird "count" nie kleiner als diese Zahl sein

note: type: Plain text
en: userkins - Template for user-built kinematics
de: userkins - Vorlage für benutzerdefinierte Kinematiken

note: type: Plain text
en: The userkins.comp file is a template for creating kinematics that can be user-built using halcompile.
de: Die Datei userkins.comp ist eine Vorlage für die Erstellung von Kinematiken, die mit halcompile selbst erstellt werden können.

note: type: Plain text
en: The unmodified userkins component can be used as a kinematics file for a machine with identity kinematics for an xyz machine employing 3 joints (motors).
de: Die unmodifizierte userkins-Komponente kann als Kinematikdatei für eine Maschine mit Identitätskinematik für eine xyz-Maschine mit 3 Gelenken (Motoren) verwendet werden.

note: type: Plain text
en:   1) Copy the userkins.comp file to a user-owned
         directory (B<mydir>).
de:   1) Kopieren Sie die Datei userkins.comp in ein benutzereigenes
         Verzeichnis (B<mydir>).

note: type: Plain text
en:      Note: The userkins.comp file can be downloaded from:
    E<.URL https://github.com/LinuxCNC/linuxcnc/raw/2.8/src/hal/components/userkins.comp>
         where '2.8' is the branch name (use 'master' for
         the master branch)
de:      Hinweis: Die Datei userkins.comp kann heruntergeladen werden von:
    E<.URL https://github.com/LinuxCNC/linuxcnc/raw/2.8/src/hal/components/userkins.comp>
         wobei '2.8' der Name des Zweigs ist (verwenden Sie 'master' für
         den Master-Zweig)

note: type: Plain text
en:      For a RIP (run-in-place) build, the file is located in
         the git tree as:
           src/hal/components/userkins.comp
de:      Bei einem RIP (run-in-place) Build befindet sich die Datei in
         dem Git-Baum als:
           src/hal/components/userkins.comp

note: type: Plain text
en: watchdog - monitor multiple inputs for a "heartbeat"
de: watchdog - überwacht mehrere Eingänge auf einen "Heartbeat"

note: type: Plain text
en: You must specify the number of inputs, from 1 to 32.  Each input has a separate timeout value.
de: Sie müssen die Anzahl der Eingänge angeben, von 1 bis 32.  Jeder Eingang hat einen eigenen Timeout-Wert.

note: type: Plain text
en: Check all input pins for transitions, clear the B<ok-out> pin if any input has no transition within its timeout period.  This function does not use floating point, and should be added to a fast thread.
de: Überprüft alle Eingangspins auf Übergänge, löscht den B<ok-out>-Pin, wenn ein Eingang innerhalb seiner Timeout-Periode keinen Übergang aufweist.  Diese Funktion verwendet keine Gleitkommazahlen und sollte einem schnellen Thread hinzugefügt werden.

note: type: Plain text
en: Check for timeout changes, and convert the float timeout inputs to int values that can be used in B<process>.  This function also monitors B<enable-in> for false to true transitions, and re-enables monitoring when such a transition is detected.  This function does use floating point, and it is appropriate to add it to the servo thread.
de: Überprüft auf Timeout-Änderungen und konvertiert die Float-Timeout-Eingänge in int-Werte, die in B<process> verwendet werden können.  Diese Funktion überwacht auch B<enable-in> auf Übergänge von false zu true und aktiviert die Überwachung wieder, wenn ein solcher Übergang festgestellt wird.  Diese Funktion verwendet Fließkommazahlen und sollte daher dem Servo-Thread hinzugefügt werden.

note: type: Plain text
en: Input number n.  The inputs are numbered from 0 to B<num_inputs>-1.
de: Eingangsnummer n. Die Eingänge sind von 0 bis B<num_inputs>-1 nummeriert.

note: type: TP
en: B<watchdog.enable-in> bit in (default: I<FALSE>)
de: B<watchdog.enable-in> bit in (Standard: I<FALSE>)

note: type: Plain text
en: If TRUE, forces out-ok to be false.  Additionally, if a timeout occurs on any input, this pin must be set FALSE and TRUE again to re-start the monitoring of input pins.
de: Wenn TRUE, wird out-ok auf false gesetzt.  Außerdem muss dieser Pin bei einer Zeitüberschreitung an einem Eingang auf FALSE und dann wieder auf TRUE gesetzt werden, um die Überwachung der Eingangspins neu zu starten.

note: type: TP
en: B<watchdog.ok-out> bit out (default: I<FALSE>)
de: B<watchdog.ok-out> bit out (Voreinstellung: I<FALSE>)

note: type: Plain text
en: OK output.  This pin is true only if enable-in is TRUE and no timeout has been detected.  This output can be connected to the enable input of a B<charge_pump> or B<stepgen> (in v mode), to provide a heartbeat signal to external monitoring hardware.
de: OK-Ausgang.  Dieser Pin ist nur wahr, wenn enable-in TRUE ist und kein Timeout erkannt wurde.  Dieser Ausgang kann mit dem Enable-Eingang einer B<charge_pump> oder B<stepgen> (im v-Modus) verbunden werden, um ein Heartbeat-Signal für externe Überwachungshardware bereitzustellen.

note: type: Plain text
en: Timeout value for input number n.  The inputs are numbered from 0 to B<num_inputs>-1.  The timeout is in seconds, and may not be below zero.  Note that a timeout of 0.0 will likely prevent B<ok-out> from ever becoming true.  Also note that excessively long timeouts are relatively useless for monitoring purposes.
de: Timeout-Wert für Eingang Nummer n. Die Eingänge sind von 0 bis B<num_inputs>-1 nummeriert.  Die Zeitüberschreitung wird in Sekunden angegeben und darf nicht unter Null liegen.  Beachten Sie, dass eine Zeitüberschreitung von 0,0 wahrscheinlich verhindert, dass B<ok-out> jemals wahr wird.  Beachten Sie auch, dass übermäßig lange Timeouts für Überwachungszwecke relativ nutzlos sind.

note: type: TP
en: B<wcomp.>I<N> (requires a floating-point thread)
de: B<wcomp.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: Plain text
en: Value being compared
de: Zu vergleichender Wert

note: type: Plain text
en: Low boundary for comparison
de: Untere Grenze zum Vergleich

note: type: Plain text
en: High boundary for comparison
de: Hoher Grenzwert zum Vergleich

note: type: Plain text
en: True if B<in> is strictly between B<min> and B<max>
de: Wahr, wenn B<in> genau zwischen B<min> und B<max> liegt

note: type: Plain text
en: True if B<in> is less than or equal to B<min>
de: Wahr, wenn B<in> kleiner als oder gleich B<min> ist

note: type: Plain text
en: True if B<in> is greater than or equal to B<max>
de: Wahr, wenn B<in> größer als oder gleich B<max> ist

note: type: Plain text
en: If B<max> E<lt>= B<min> then the behavior is undefined.
de: Wenn B<max> E<lt>= B<min> dann ist das Verhalten undefiniert.

note: type: TH
en: WEIGHTED_SUM
de: WEIGHTED_SUM (gerichtete Summe)

note: type: Plain text
en: weighted_sum - convert a group of bits to an integer
de: weighted_sum - Konvertieren einer Gruppe von Bits in eine ganze Zahl

note: type: Plain text
en: Creates weighted sum groups each with the given number of input bits (I<size>).
de: Erzeugt gewichtete Summengruppen mit der angegebenen Anzahl von Eingabebits (I<Größe>).

note: type: Plain text
en: The weighted_sum converts a group of bits to an integer. The conversion is the sum of the weights of the bits that are on plus any offset. The weight of the m-th bit is 2^m. This is similar to a binary coded decimal but with more options. The hold bit stops processing the input changes so the sum will not change.
de: Die gewichtete Summe konvertiert eine Gruppe von Bits in eine ganze Zahl. Die Umwandlung ist die Summe der Gewichte der Bits, die eingeschaltet sind, zuzüglich eines eventuellen Offsets. Das Gewicht des m-ten Bits ist 2^m. Dies ist ähnlich wie eine binär kodierte Dezimalzahl, aber mit mehr Optionen. Das Haltebit stoppt die Verarbeitung der Eingangsänderungen, so dass sich die Summe nicht ändert.

note: type: Plain text
en: The default value for each weight is 2^m where m is the bit number. This results in a binary to unsigned conversion.
de: Der Standardwert für jedes Gewicht ist 2^m, wobei m die Bitanzahl ist. Dies führt zu einer Umwandlung von binär zu vorzeichenlos.

note: type: Plain text
en: There is a limit of 8 weighted summers and each may have up to 16 input bits.
de: Die Anzahl der gewichteten Summierer ist auf 8 begrenzt und jeder kann bis zu 16 Eingangsbits haben.

note: type: TP
en: B<process_wsums (requires a floating point thread)>
de: B<process_wsums (erfordert einen Gleitkomma-Thread)>

note: type: Plain text
en: Read all input values and update all output values.
de: Lesen Sie alle Eingabewerte und aktualisieren Sie alle Ausgabewerte.

note: type: Plain text
en: The I<m>'th input of weighted summer I<n>.
de: Der I<m>'te Eingang der gewichteten Summe I<n>.

note: type: Plain text
en: When TRUE, the I<sum> output does not change.  When FALSE, the I<sum> output tracks the I<bit> inputs according to the weights and offset.
de: Wenn TRUE, ändert sich der I<sum>-Ausgang nicht.  Bei FALSE folgt der I<sum>-Ausgang den I<bit>-Eingängen entsprechend den Gewichten und dem Offset.

note: type: Plain text
en: The output of the weighted summer
de: Die Ausgabe des gewichteten Summierers

note: type: Plain text
en: The weight of the I<m>'th input of weighted summer I<n>.  The default value is 2^I<m>.
de: Das Gewicht des I<m>-ten Eingangs des gewichteten Summierers I<n>.  Der Standardwert ist 2^I<m>.

note: type: Plain text
en: The offset is added to the weights corresponding to all TRUE inputs to give the final sum.
de: Der Offset wird zu den Gewichten aller TRUE-Eingaben addiert, um die Endsumme zu erhalten.

note: type: Plain text
en: xhc_hb04_util - xhc-hb04 convenience utility
de: xhc_hb04_util - XHC-HB04 Komfort-Dienstprogramm

note: type: Plain text
en: Provides logic for a start/pause button and an interface to B<halui.program.is_paused>, B<is_idle>, B<is_running> to generate outputs for B<halui.program.pause>, B<resume>, B<run>.
de: Stellt Logik für eine Start/Pause-Taste und eine Schnittstelle zu B<halui.program.is_paused>, B<is_idle>, B<is_running> bereit, um Ausgaben für B<halui.program.pause>, B<resume>, B<run> zu erzeugen.

note: type: Plain text
en: Includes 4 simple lowpass filters with B<coef> and B<scale> pins.  The coef value should be 0 E<lt>= coef E<lt>=1, smaller coef values slow response.  See the lowpass manpage for calculating the filter time constant ($ man lowpass).
de: Enthält 4 einfache Tiefpassfilter mit B<coef> und B<scale> Pins.  Der coef-Wert sollte 0 sein E<lt>= coef E<lt>=1, kleinere coef-Werte verlangsamen die Reaktion.  Zur Berechnung der Filterzeitkonstante siehe die Lowpass-Manpage ($ man lowpass).

note: type: TP
en: B<xhc-hb04-util.>I<N> (requires a floating-point thread)
de: B<xhc-hb04-util.>I<N> (erfordert einen Gleitkomma-Thread)

note: type: TP
en: B<xhc-hb04-util.>I<N>B<.scale0> float in (default: I<1.0>)
de: B<xhc-hb04-util.>I<N>B<.scale0> float in (Standard: I<1.0>)

note: type: TP
en: B<xhc-hb04-util.>I<N>B<.scale1> float in (default: I<1.0>)
de: B<xhc-hb04-util.>I<N>B<.scale1> float in (Standard: I<1.0>)

note: type: TP
en: B<xhc-hb04-util.>I<N>B<.scale2> float in (default: I<1.0>)
de: B<xhc-hb04-util.>I<N>B<.scale2> float in (Standard: I<1.0>)

note: type: TP
en: B<xhc-hb04-util.>I<N>B<.scale3> float in (default: I<1.0>)
de: B<xhc-hb04-util.>I<N>B<.scale3> float in (Standard: I<1.0>)

note: type: TP
en: B<xhc-hb04-util.>I<N>B<.coef0> float in (default: I<1.0>)
de: B<xhc-hb04-util.>I<N>B<.coef0> float in (Standard: I<1.0>)

note: type: TP
en: B<xhc-hb04-util.>I<N>B<.coef1> float in (default: I<1.0>)
de: B<xhc-hb04-util.>I<N>B<.coef1> float in (Standard: I<1.0>)

note: type: TP
en: B<xhc-hb04-util.>I<N>B<.coef2> float in (default: I<1.0>)
de: B<xhc-hb04-util.>I<N>B<.coef2> float in (Standard: I<1.0>)

note: type: TP
en: B<xhc-hb04-util.>I<N>B<.coef3> float in (default: I<1.0>)
de: B<xhc-hb04-util.>I<N>B<.coef3> float in (Standard: I<1.0>)

note: type: TP
en: B<xhc-hb04-util.>I<N>B<.k> float in (default: I<1.0>)
de: B<xhc-hb04-util.>I<N>B<.k> float in (Standard: I<1.0>)

note: type: Plain text
en: xor2 - Two-input XOR (exclusive OR) gate
de: xor2 - XOR-Gatter mit zwei Eingängen (Exklusiv-ODER)

note: type: TP
en: B<xor2.>I<N>
de: B<xoder2.>I<N>

note: type: Content of: <html><body><table><caption>
en: LinuxCNC "G-code" Quick Reference
de: LinuxCNC "G-code" Kurzreferenz

note: type: Content of: <html><body><table><tbody><tr><td>
en: (X Y Z A B C U V W apply to all motions)
de: (X Y Z A B C U V W gelten für alle Bewegungen)

note: type: Content of: <html><body><table><tbody><tr><td>
en: I J K or R P
de: I J K oder R P

note: type: Content of: <html><body><table><tbody><tr><td>
en: Arc Move
de: Bogenbewegung

note: type: Content of: <html><body><table><tbody><tr><td>
en: Quadratic Spline
de: Quadratischer Spline

note: type: Content of: <html><body><table><tbody><tr><td>
en: Cancel Canned Cycle
de: Festzyklus abbrechen

note: type: Content of: <html><body><table><tbody><tr><th>
en: Canned cycles
de: Festzyklen (engl. canned cycles)

note: type: Content of: <html><body><table><tbody><tr><td>
en: (X Y Z or U V W apply to canned cycles, depending on active plane)
de: (X, Y, Z oder U, V, W gelten für Festzyklen, je nach aktiver Ebene)

note: type: Content of: <html><body><table><tbody><tr><td>
en: Lathe Diameter Mode
de: Drehmaschinen-Durchmesser-Modus

note: type: Content of: <html><body><table><tbody><tr><td>
en: Lathe Radius Mode
de: Drehmaschinen Radius-Modus

note: type: Content of: <html><body><table><tbody><tr><th>
en: Coolant
de: Kühlmittel

note: type: Content of: <html><body><table><tbody><tr><th>
en: Stopping
de: Anhalten

note: type: Content of: <html><body><table><tbody><tr><td>
en: Path Blending
de: Pfadübergang

note: type: Content of: <html><body><table><tbody><tr><th>
en: Return Mode in Canned Cycles
de: Rückkehrmodus in vorgefertigten Zyklen

note: type: Content of: <html><body><table><tbody><tr><td>
en: P0 (off) or P1 (on)
de: P0 (aus) oder P1 (ein)

note: type: Content of: <html><body><table><tbody><tr><td>
en: P0 (off) or P1 (on) ($)
de: P0 (aus) oder P1 (ein) ($)

note: type: Content of: <html><body><table><tbody><tr><td>
en: Subroutines, sub/endsub call
de: Unterprogramme, sub/endsub-Aufruf

note: type: Content of: <html><body><table><tbody><tr><td>
en: Looping, while/endwhile do/while
de: Schleifen (engl. loops), while/endwhile do/while

note: type: Content of: <html><body><table><tbody><tr><td>
en: Conditional, if/else/endif
de: Bedingte Anweisungen, if/else/endif

note: type: Content of: <html><body><table><tbody><tr><td>
en: Repeat a loop of code
de: Wiederholung einer Codeschleife

note: type: Content of: <html><body><table><tbody><tr><td>
en: Save modal state
de: Modalen Zustand speichern

note: type: Content of: <html><body><table><tbody><tr><td>
en: Invalidate stored state
de: Gespeicherten Zustand für ungültig erklären

note: type: Content of: <html><body><table><tbody><tr><td>
en: Restore modal state
de: Modalen Zustand wiederherstellen

note: type: Content of: <html><body><table><tbody><tr><td>
en: Save and Auto-restore modal state
de: Speichern und automatisches Wiederherstellen des modalen Zustands

note: type: Content of: <html><body><table><tbody><tr><td>
en: Wait on Input
de: Warten auf Eingabe

note: type: Content of: <html><body><table><tbody><tr><td>
en: Analog Output, Immediate
de: Analoger Ausgang, sofort

note: type: Content of: <html><body><table><tbody><tr><th>
en: Non-modal Codes
de: Nicht-modale Codes

note: type: Content of: <html><body><table><tbody><tr><td>
en: Set Current Tool
de: Aktuelles Werkzeug einstellen

note: type: Content of: <html><body><table><tbody><tr><td>
en: Go/Set Predefined Position
de: Gehe zu/Setze vordefinierte Position

note: type: Content of: <html><body><table><tbody><tr><th>
en: Comments &amp; Messages
de: Kommentare &amp; Mitteilungen

note: type: Content of: <html><body><h2>
en: LinuxCNC version <strong>@VERSION@</strong> Documentation
de: LinuxCNC Version <strong>@VERSION@</strong> Dokumentation

note: type: Content of: <html><body><div><p>
en: <a href="http://linuxcnc.org">LinuxCNC Home Page</a> &bull; <a href="http://wiki.linuxcnc.org/cgi-bin/wiki.pl">Wiki</a> &bull; <a href="https://forum.linuxcnc.org">Forum</a> &bull; <a href="https://github.com/LinuxCNC/linuxcnc">Source</a> &bull; <a href="gcode.html">G-Code Quick Reference</a>
de: <a href="http://linuxcnc.org">LinuxCNC Home Page</a> &bull; <a href="http://wiki.linuxcnc.org/cgi-bin/wiki.pl"> Wiki</a> &bull; <a href="https://forum.linuxcnc.org"> Forum</a> &bull; <a href="https://github.com/LinuxCNC/linuxcnc"> Quellen</a> &bull; <a href="gcode.html"> G-Code Schnellreferenz</a>

note: type: Content of: <html><body><p>
en: Getting Started with LinuxCNC</a>
de: Erste Schritte mit LinuxCNC</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="getting-started/about-linuxcnc.html">About LinuxCNC</a>
de: <a href="getting-started/about-linuxcnc.html">Über LinuxCNC</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="getting-started/system-requirements.html">System Requirements</a>
de: <a href="getting-started/system-requirements.html">Systemanforderungen</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="getting-started/getting-linuxcnc.html">Getting LinuxCNC</a>
de: <a href="getting-started/getting-linuxcnc.html"> LinuxCNC </a> erhalten

note: type: Content of: <html><body><div><ul><li>
en: <a href="getting-started/running-linuxcnc.html">Running LinuxCNC</a>
de: <a href="getting-started/running-linuxcnc.html">Ausführen von LinuxCNC</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="getting-started/updating-linuxcnc.html">Updating LinuxCNC</a>
de: <a href="getting-started/updating-linuxcnc.html">LinuxCNC aktualisieren</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="common/linux-faq.html">Linux FAQ</a>
de: <a href="common/linux-faq.html">Linux-FAQ</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="user/user-foreword.html">User Foreword</a>
de: <a href="user/user-foreword.html">Benutzer Vorwort</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="user/user-intro.html">LinuxCNC User Introduction</a>
de: <a href="user/user-intro.html">LinuxCNC Benutzer Einführung</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="user/user-concepts.html">Important User Concepts</a>
de: <a href="user/user-concepts.html">Wichtige Benutzerkonzepte</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="user/starting-linuxcnc.html">Starting LinuxCNC</a>
de: <a href="user/starting-linuxcnc.html">LinuxCNC starten</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gcode/machining-center.html">CNC Machine Overview</a>
de: <a href="gcode/machining-center.html">CNC-Maschine Übersicht</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="lathe/lathe-user.html">Lathe User Information</a>
de: <a href="lathe/lathe-user.html">Drehbank Benutzerinformationen</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="plasma/plasma-cnc-primer.html">Plasma CNC Primer</a>
de: <a href="plasma/plasma-cnc-primer.html">Plasma-CNC-Grundlagen</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/stepconf.html" class="tooltips">Stepconf, Parallel Port Stepper Configurator</a>
de: <a href="config/stepconf.html" class="tooltips">Stepconf, Parallelport-Stepper-Konfigurator</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/pncconf.html" class="tooltips">Pncconf, Mesa Hardware Configurator</a>
de: <a href="config/pncconf.html" class="tooltips">Pncconf, Mesa Hardware-Konfigurator</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/integrator-concepts.html">Integrator Concepts</a>
de: <a href="config/integrator-concepts.html">Integrator-Konzepte</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="install/latency-test.html">Latency Test</a>
de: <a href="install/latency-test.html">Latenztest</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="motion/tweaking-steppers.html">Stepper Tuning</a>
de: <a href="motion/tweaking-steppers.html"> Stepper-Tuning</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/ini-config.html">INI Configuration</a>
de: <a href="config/ini-config.html">INI-Konfiguration</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/ini-homing.html">Homing Configuration</a>
de: <a href="config/ini-homing.html">Konfiguration der Referenzfahrt</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/lathe-config.html">Lathe Configuration</a>
de: <a href="config/lathe-config.html"> Drehmaschinen-Konfiguration</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/stepper-quickstart.html">Stepper Quick Start</a>
de: <a href="config/stepper-quickstart.html">Stepper Schnellstart</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/stepper.html">Stepper Configuration</a>
de: <a href="config/stepper.html">Stepper Konfiguration</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/stepper-diagnostics.html">Stepper Diagnostics</a>
de: <a href="config/stepper-diagnostics.html">Stepper-Diagnose</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/intro.html">HAL Introduction</a>
de: <a href="hal/intro.html">HAL Einführung</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/basic-hal.html">HAL Basics</a>
de: <a href="hal/basic-hal.html">HAL Grundlagen</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/hal-examples.html">HAL Examples</a>
de: <a href="hal/hal-examples.html">HAL Beispiele</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/core-components.html">HAL Core Components</a>
de: <a href="config/core-components.html">HAL-Kernkomponenten</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/components.html">HAL Component List</a>
de: <a href="hal/components.html">HAL-Komponentenliste</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/rtcomps.html">HAL Component Descriptions</a>
de: <a href="hal/rtcomps.html"> HAL-Komponentenbeschreibungen</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/comp.html">HAL Component Generator</a>
de: <a href="hal/comp.html">HAL-Komponenten-Generator</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/haltcl.html">HAL TCL Files</a>
de: <a href="hal/haltcl.html">HAL TCL Dateien</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/halmodule.html">Creating Userspace Python Components</a>
de: <a href="hal/halmodule.html">Erstellen von Userspace-Python-Komponenten</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/canonical-devices.html">Canonical Device Interfaces</a>
de: <a href="hal/canonical-devices.html">Kanonische Geräteschnittstellen</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/parallel-port.html">Parallel Port Driver</a>
de: <a href="hal/parallel-port.html">Parallelport-Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/ax5214h.html">AX5214H Driver</a>
de: <a href="drivers/ax5214h.html">AX5214H Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/gm.html">General Mechatronics GM6-PCI Driver</a>
de: <a href="drivers/gm.html">General Mechatronics GM6-PCI-Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/gs2.html">GS2 Driver</a>
de: <a href="drivers/gs2.html">GS2-Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/hostmot2.html">Mesa HostMot2 Driver</a>
de: <a href="drivers/hostmot2.html">Mesa HostMot2 Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/mitsub-vfd.html">Mitsubishi VFD Driver</a>
de: <a href="drivers/mitsub-vfd.html">Mitsubishi VFD Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/motenc.html">Motenc Driver</a>
de: <a href="drivers/motenc.html">Motenc Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/opto22.html">Opto22 Driver</a>
de: <a href="drivers/opto22.html">Opto22 Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/pico-ppmc.html">Pico Drivers</a>
de: <a href="drivers/pico-ppmc.html">Pico Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/pluto-p.html">Pluto P Driver</a>
de: <a href="drivers/pluto-p.html">Pluto P Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/pmx485.html">Powermax Modbus Driver</a>
de: <a href="drivers/pmx485.html">Powermax Modbus Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/servo-to-go.html">Servo To Go Driver</a>
de: <a href="drivers/servo-to-go.html">Servo To Go Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/shuttle.html">ShuttleXpress and ShuttlePRO Driver</a>
de: <a href="drivers/shuttle.html">ShuttleXpress and ShuttlePRO Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="drivers/vfs11.html">VFS11 Driver</a>
de: <a href="drivers/vfs11.html">VFS11 Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="examples/pci-parallel-port.html">PCI Parallel Port Example</a>
de: <a href="examples/pci-parallel-port.html">PCI Parallel Port Treiber</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="examples/spindle.html">Spindle Control Example</a>
de: <a href="examples/spindle.html">Spindel Control Beispiel</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="examples/mpg.html">MPG Example</a>
de: <a href="examples/mpg.html">MPG Beispiel</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="examples/gs2-example.html">GS2 Example</a>
de: <a href="examples/gs2-example.html">GS2 Beispiel</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="ladder/classic-ladder.html">ClassicLadder Programming</a>
de: <a href="ladder/classic-ladder.html">ClassicLadder Programmierung</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="ladder/ladder-examples.html">ClassicLadder Examples</a>
de: <a href="ladder/ladder-examples.html">ClassicLadder Beispiele</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="motion/kinematics.html">Kinematics</a>
de: <a href="motion/kinematics.html">Kinematiken</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="motion/dh-parameters.html">DH Parameters</a>
de: <a href="motion/dh-parameters.html">DH Parameter</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="motion/5-axis-kinematics.html">5-Axis-Kinematics</a>
de: <a href="motion/5-axis-kinematics.html">5-Achs-Kinematik</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="motion/switchkins.html">Switchable Kinematics</a>
de: <a href="motion/switchkins.html">Umschaltbare Kinematik</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="motion/pid-theory.html">PID theory</a>
de: <a href="motion/pid-theory.html">PID-Theorie</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="remap/remap.html">Remap: Extending LinuxCNC</a>
de: <a href="remap/remap.html"> Remap: Erweitern von LinuxCNC</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/moveoff.html">Moveoff Component</a>
de: <a href="config/moveoff.html"> Moveoff-Komponente</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="code/rs274.html">Stand Alone Interpreter</a>
de: <a href="code/rs274.html"> Eigenständiger (engl. stand alone) Interpreter </a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="motion/external-offsets.html">External Offsets</a>
de: <a href="motion/external-offsets.html"> Externe Offsets</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="tooldatabase/tooldatabase.html">Tool Database Interface</a>
de: <a href="tooldatabase/tooldatabase.html">Werkzeug-Datenbank-Schnittstelle</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="integrator/steppers.html">Stepper Information</a>
de: <a href="integrator/steppers.html"> Stepper-Informationen</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="integrator/stepper-timing.html">Stepper Drive Timing</a>
de: <a href="integrator/stepper-timing.html"> Schrittantriebs-Timing </a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="integrator/wiring.html">Best Wiring Practices</a>
de: <a href="integrator/wiring.html">Beste Verdrahtungspraktiken</a>

note: type: Content of: <html><body><p>
en: User Interfaces</a>
de: Benutzerschnittstellen</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/gscreen.html">Gscreen, Customizable Touchscreen GUI</a>
de: <a href="gui/gscreen.html">Gscreen, anpassbare Touchscreen-GUI</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/ngcgui.html">NGCGUI, Subroutine GUI</a>
de: <a href="gui/ngcgui.html">NGCGUI, Unterprogramm-GUI</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/tklinuxcnc.html">TkLinuxCNC, (no opengl) GUI</a>
de: <a href="gui/tklinuxcnc.html">TkLinuxCNC, (kein opengl) GUI</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="plasma/qtplasmac.html">QtPlasmaC, A Complete Plasma Cutting Configuration</a>
de: <a href="plasma/qtplasmac.html"> QtPlasmaC, eine komplette Plasmaschneid-Konfiguration </a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/mdro.html">MDRO, A Display for Digital Read Out scales</a>
de: <a href="gui/mdro.html">MDRO, ein Display für Digitalanzeigen</a>

note: type: Content of: <html><body><p>
en: G-code Programming</a>
de: G-Code Programmierung</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gcode/coordinates.html">Coordinate System</a>
de: <a href="gcode/coordinates.html">Koordinatensystem</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gcode/tool-compensation.html">Tool Compensation</a>
de: <a href="gcode/tool-compensation.html"> Werkzeugkompensation </a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/tooledit.html">Tool Table Editor</a>
de: <a href="gui/tooledit.html">Werkzeug-Tabellen-Editor</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gcode/other-code.html">Other Codes</a>
de: <a href="gcode/other-code.html">Andere Codes</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gcode/rs274ngc.html">RS274/NGC Differences</a>
de: <a href="gcode/rs274ngc.html">RS274/NGC Unterschiede</a>

note: type: Content of: <html><body><h3>
en: Customization &amp; Development
de: Anpassung &amp; Entwicklung

note: type: Content of: <html><body><p>
en: Virtual Control Panels</a>
de: Virtuelle Bedienfelder (engl. virtual control panels)</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/pyvcp-examples.html">PyVCP Examples</a>
de: <a href="gui/pyvcp-examples.html">PyVCP-Beispiele</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/gladevcp-libraries.html">GladeVCP Libraries</a>
de: <a href="gui/gladevcp-libraries.html">GladeVCP-Bibliotheken</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/qtvcp-custom-widgets.html">QtVCP -Custom Widgets</a>
de: <a href="gui/qtvcp-custom-widgets.html">QtVCP - Benutzerdefinierte Widgets</a>

note: type: Content of: <html><body><p>
en: User Interface Programming</a>
de: Benutzerschnittstellen-Programmierung</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/filter-programs.html">Filter Programs</a>
de: <a href="gui/filter-programs.html">Filter-Programme</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/halui-examples.html">HALUI Examples</a>
de: <a href="hal/halui-examples.html">HALUI Beispiele</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="config/python-interface.html">Python Interface</a>
de: <a href="config/python-interface.html">Python-Schnittstelle</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/gstat.html">GStat Module</a>
de: <a href="gui/gstat.html">GStat-Modul</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="gui/vismach.html">Vismach Virtual Machines</a>
de: <a href="gui/vismach.html">Vismach Virtuelle Maschinen</a>

note: type: Content of: <html><body><p>
en: Developer Information</a>
de: Entwicklerinformationen</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="hal/general-ref.html">General Reference</a>
de: <a href="hal/general-ref.html">Allgemeine Hinweise</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="code/code-notes.html">Code Notes</a>
de: <a href="code/code-notes.html">Code Anmerkungen</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="code/nml-messages.html">NML Messages</a>
de: <a href="code/nml-messages.html">NML-Nachrichten</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="code/style-guide.html">Style Guide</a>
de: <a href="code/style-guide.html"> Styleguide</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="code/adding-configs.html">Adding Configs for Selection</a>
de: <a href="code/adding-configs.html">Hinzufügen von Konfigurationen zur Auswahl</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="code/contributing-to-linuxcnc.html">Contributing to LinuxCNC</a>
de: <a href="code/contributing-to-linuxcnc.html">Mitwirkung an LinuxCNC</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="code/building-linuxcnc.html">Building LinuxCNC</a>
de: <a href="code/building-linuxcnc.html">Bauen von LinuxCNC</a>

note: type: Content of: <html><body><h3>
en: General Information
de: Allgemeine Informationen

note: type: Content of: <html><body><p>
en: Glossary, Copyright, History &amp; Overview</a>
de: Glossar, Copyright, Geschichte &amp; Überblick</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="common/overleaf.html">LinuxCNC Document Overview</a>
de: <a href="common/overleaf.html">LinuxCNC Dokument Übersicht</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="common/emc-history.html">LinuxCNC History</a>
de: <a href="common/emc-history.html">LinuxCNC Geschichte</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="common/glossary.html">Glossary</a>
de: <a href="common/glossary.html">Glossar</a>

note: type: Content of: <html><body><div><ul><li>
en: <a href="common/gpld-copyright.html">Copyright &amp; Documentation License</a>
de: <a href="common/gpld-copyright.html">Copyright &amp; Dokumentation Lizenz</a>

note: type: Content of: <html><body><div><p>
en: For more information about man pages see the <a href="common/linux-faq.html#faq:man-pages">Linux FAQ</a>
de: Weitere Informationen über Manpages finden Sie in der <a href="common/linux-faq.html#faq:man-pages">Linux FAQ</a>
